Releases: googleforgames/quilkin
v0.9.0
This is the 0.9.0 release of Quilkin.
Exciting news - the 0.9.0 release brings Quilkin to beta status! 🎉
You may note that configuration files are still listed as alpha -- we'll be updating them on a case by case basis as we move towards a 1.0 release.
The release also brings several improvements, including the removal of the agent's idle request interval (a breaking change), improved proxy testing, Agones GameServer
Node address selection, and performance optimisations. Several bugs have been fixed, including a timestamp/duration unit confusion, a Rust safety issue, a memory leak, and an infinite loop in the code.
Check the documentation for details on features, installation and usage.
Breaking changes
- Remove idle request interval for agent by @XAMPPRocky in #946
Implemented enhancements
- Implement remaining proxy tests by @Jake-Shadle in #916
- Add node address selection via type and ip kind by @Jake-Shadle in #934
- Add PortPolicy::None by @XAMPPRocky in #940
- Add some performance optimizations by @Jake-Shadle in #944
- Upgrade Agones to 1.40.0 + CRD changes by @markmandel in #945
- Add an optimized token router filter by @Jake-Shadle in #948
- Build single token -> address map by @Jake-Shadle in #978
- Replace
tokio-uring
withio-uring
by @Jake-Shadle in #993 - Update project to beta status by @XAMPPRocky in #997
- Add basic heap stats by @Jake-Shadle in #998
Security fixes
- cargo update + flake fixes by @markmandel in #930
See CHANGELOG for more details on changes.
Images available with this release:
v0.8.0
This is the 0.8.0 release of Quilkin.
To highlight some of the major features for this release:
- A huge number of performance and reliability updates and improvements.
- An updated and more flexible Unreal Engine plugin that gives you more options on your packet structure, as well as
integrated client side load balancing against multiple Quilkin proxies. - Quilkin now also includes the ability to get a proxy's latency to each of its connected datacenters when being run as a multi-cluster relay setup.
Check the documentation for details on features, installation and
usage.
Implemented enhancements:
- Move admin server to separate OS thread by @XAMPPRocky in #841
- Use ClusterMap for Filter::read by @XAMPPRocky in #855
- Move game traffic sockets to io-uring by @XAMPPRocky in #850
- Add lz4 support by @Jake-Shadle in #868
- Add Configurable gRPC message size environment variable by @XAMPPRocky in #870
- Move xDS proxy task to its own thread+runtime by @XAMPPRocky in #871
- Change debug symbols profile release -> bench by @Jake-Shadle in #879
- Add initial support for delta xDS by @Jake-Shadle in #882
- Add pprof endpoint by @XAMPPRocky in #875
- ClusterMap benchmarks by @Jake-Shadle in #856
- Update Unreal Engine Plugin by @XAMPPRocky in #778
- Implement Phoenix Network Coordinates by @XAMPPRocky in #854
- Improve compile times by @Jake-Shadle in #896
- Move non-linux builds to github by @Jake-Shadle in #899
See CHANGELOG for more details on changes.
Images available with this release:
v0.7.0
This is the 0.7.0 release of Quilkin.
This release brings several large improvements to the Quilkin project.
- The introduction of
quilkin relay
andquilkin agent
options that allows for multi-cluster proxy and management plane setup and orchestration. - A new dual stack Socket implementation that listens on both IPv6 and IPv4 connections, and includes enhanced testing across both IPv4 and IPv6 handling.
- Quilkin now reuses Endpoint Socket connections, meaning that session count is no longer limited by the number of ports that can be provided on a given machine.
- A large variety of reliability and performance fixes across the board.
Check the documentation for details on features, installation and usage.
Breaking changes
- Move QCMP to a seperate port by @XAMPPRocky in #741
- Rename: ConcatenateBytes ➡️ Concatenate by @markmandel in #813
Implemented enhancements
- Add ASN cardinality to packet metrics by @XAMPPRocky in #746
- Unit and integration test debugging enhancements by @markmandel in #762
- Add logging for what endpoints are added and removed by @XAMPPRocky in #774
- Add
qcmp ping
command by @XAMPPRocky in #770 - add cli option for log formatting (Closes #531) by @Baschtie in #784
- Locally listen on IPv4 and IPv6 addresses by @markmandel in #788
- Add --idle-request-interval-secs by @XAMPPRocky in #790
- Examples for relay configuration by @markmandel in #807
- Add quickstart for the relay setup by @XAMPPRocky in #772
- Integration tests for Agones Relay and Agent by @markmandel in #811
- Add health checks for each service by @XAMPPRocky in #802
- Refactor sessions to use socket pool by @XAMPPRocky in #815
- Release aarch64-apple-darwin binary by @markmandel in #829
Security fixes
- Update Agones to 1.33.0 by @markmandel in #760
- Agones: Update simple-game-server image to latest by @markmandel in #763
- Update to Rust 1.71.1 (cargo CVE-2023-38497) by @markmandel in #767
- Security: Update trust-dns-resolver by @markmandel in #779
- Update to Distroless based on Debian 12 by @markmandel in #805
See CHANGELOG for more details on changes.
Images available with this release:
v0.6.0
We are proud to announce version 0.6.0 of Quilkin, with several critical bug fixes and improvements.
Quilkin is a non-transparent UDP proxy specifically designed for use with large scale multiplayer dedicated game server deployments, to ensure security, access control, telemetry data, metrics and more.
When upgrading from version 0.5.0, please be aware there are several breaking changes, so check with the documentation.
This includes:
- Default ports for different Quilkin modes have changed to make it easier to separate mode workflows on a single machine.
- Most Filter metrics have been consolidated under a metric value, separated by label.
This release also fixes performance issue with DNS resolution, as well as several reliability issues with the Agones integration.
Check the documentation for details on features, installation and usage.
Breaking changes
- Refactor documentation layout and define default ports by @XAMPPRocky in #688
- Refactor filter metrics into a single vector of metrics with labels by @XAMPPRocky in #736
Implemented enhancements
- Add region parameters for control planes by @XAMPPRocky in #696
- Add initial implementation of relay service by @XAMPPRocky in #698
- Add environment variables to config providers by @XAMPPRocky in #707
- Add test for relay proxy routing (and support for file providers) by @XAMPPRocky in #710
- Resolve DNS asynchronously by @XAMPPRocky in #721
- Update termination code to allow proxies to wait until all sessions expire by @XAMPPRocky in #740
- Implement Agent service by @XAMPPRocky in #744
- Remove shutdown_rx from downstream loop by @XAMPPRocky in #742
See CHANGELOG for more details on changes.
Images available with this release:
v0.5.0
This is the 0.5.0 release of Quilkin.
We are aiming to keep up a regular cadence of releases since the long break between 0.3.0 and 0.4.0!
This release includes:
- A breaking change:
quilkin run
is nowquilkin proxy
, which better explains what it is doing. - Critical bug fixes for xDS integration
- A xDS + Agones provider quickstart in the documentation.
Check the documentation for details on features, installation and usage.
Breaking changes:
- Rename run command to proxy #661 (XAMPPRocky)
Implemented enhancements:
- [Docs] Agones xDS Provider Quickstart #644
- --version flag for binary #668 (markmandel)
- Agones xDS Provider Quickstart #667 (markmandel)
See CHANGELOG for more details on changes.
Images available with this release:
v0.4.0
Introduction
Hello everyone, we're proud to announce version 0.4.0 of Quilkin! Quilkin is a non-transparent UDP proxy specifically designed for use with large scale multiplayer dedicated game servers deployments, to ensure security, access control, telemetry data, metrics and more. It is designed to be used behind game clients as well as in front of dedicated game servers.
This is a huge release of Quilkin, with many breaking changes across the entire system, so please check the updated
documentation for new runtime arguments, configuration formats, new filters and changes to metrics. We'd like to highlight of the biggest changes for Quilkin.
Improved CLI
Quilkin now exposes some configuration through its CLI, allowing you to much more easily use and try out Quilkin without requiring you to write a configuration file. For example, you can now a run simple static proxy like so;
quilkin run --port 7000 --to 127.0.0.1:8000
Builtin xDS Integration
When you move beyond running a single proxy instance, you typically need some kind of controller service to manage all the instances of Quilkin. We've now added a builtin xDS (an industry standard API initially created for envoy) management service into Quilkin, so instead of needing to write your own custom integration, it's provided out of the box, and is as simple as running quilkin manage
.
xDS Providers
Quilkin currently comes with two "providers" aimed at two different configuration management use-cases. Both of these behave exactly the same in terms of xDS management, with the only differences being the sources of the configuration.
- File The file provider watches a specified configuration file in the file system, and updates any active proxies with its configuration. This is perfect for simple setups and development work.
- Agones When you need to move to managing gameservers through Kubernetes, Quilkin directly integrates with Agones, updating available proxy instances with ready gameservers, allowing you to dynamically and automatically add and remove gameservers from proxies with no effort.
GeoIP Maxmind Integration
Quilkin proxies can now be provided a Maxmind database, and will provide extra information in your metrics and logs related to the ASN/ISP that your client is connecting from. This will allow us provide more in-depth quality of service metrics out of the box that would normally require changes to your game server to be able support.
Check out the documentation for more details on features, installation and usage.
Detailed Changelog
Breaking changes:
- Refactor configuration and builder pattern #525 (XAMPPRocky)
- Add
StaticFilter
trait #515 (XAMPPRocky)
Implemented enhancements:
- Variable substitution with mdbook: point release docs at a release branch #609
- Include image built in PR on CI Bot Result #593
- Readiness probe based on number of endpoints #590
- Docker image entrypoint should just be "/quilkin" #583
- Configure basic configuration values with command flags #572
- Be able to configure tracing/log levels #541
- Use reflectors for Agones provider API #532
- Add Metrics and logging to the xDS server #522
- Make
config::Config
compatible with xDS manager #520 - Add admin server for xDS management server #519
- e2e tests for Agones integration #510
- Switch to using
serde_json::Value
internally overserde_yaml::Value
#507 - impl
prost::Message
for filter configuration directly. #505 - xDS: Support any filter #486
- More in-depth network metrics about clients (IPv4 and IPv6) #450
- Replace listen distributor task with multithreaded
SO_REUSEPORT
task. #410 - xDS Example #233
- Total review of guide #645 (markmandel)
- Build macos binaries on ARM #636 (markmandel)
- mdbook-variables for Documentation #629 (markmandel)
- Add timestamp filter #627 (XAMPPRocky)
- Added ASN and Prefix labels to active sessions #621 (XAMPPRocky)
- Agones xDS Provider example #618 (markmandel)
- (Mostly) Build tools working on arm64 #612 (markmandel)
- Docker image entrypoint is now
/quilkin
#607 (markmandel) - Add ASN maxmind database integration #604 (XAMPPRocky)
- Add Build Images to CI results #599 (markmandel)
- Add ready probe endpoint #591 (XAMPPRocky)
- Agones + Quilkin xDS integration test. #587 (markmandel)
- Agones GameServer + Quilkin sidecar test #582 (markmandel)
- Basic Agones GameServer integration test #580 (markmandel)
- Add arguments to
quilkin run
#574 (XAMPPRocky) - Add BUILD_LOCAL to build tools #565 (markmandel)
- Clarify packet direction in traces, use base64 for bytes_to_string #563 (XAMPPRocky)
- Improve build-image incremental workflow #561 (markmandel)
- Implement xDS in Quilkin #552 (XAMPPRocky)
- Run Agones tests in CI #551 (markmandel)
- Dev: Build, Push and Test Agones Integrations #549 (markmandel)
- Tools for Agones e2e testing #545 (markmandel)
- Adding Erin to Cargo Authors. #544 (markmandel)
- Implemented Port reuse for downstream connection. #543 (markmandel)
- Test Utility to enable tracing logging. #537 (markmandel)
- Update xDS doc #528 (rezvaneh)
- Metrics for Match Filter #511 (markmandel)
- Add basic alpha version of the UE4 plugin #485 (XAMPPRocky)
Security fixes:
- Fix security advisory in chrono #557 (markmandel)
See CHANGELOG for more details on changes.
Images available with this release:
v0.3.0
This is the 0.3.0 release of Quilkin.
This release contains several breaking changes, including Rust API changes, individual Filter updates, and the filter
naming convention has been updated. This release also includes additional requirements for creating Filters to
support auto-generation of filter documentation.
There are also several new Filters:
Match
,Drop
andPass
to provide a mechanism to change behaviour based on dynamic metadata,Firewall
to allow or block traffic depending on if the incoming traffic's IP and port matches the rules set on
the Firewall filter.
As well as enhancements to many of the existing Filters and accompanying documentation.
Check the documentation for details on features, installation and usage.
Security fixes:
- Upgrade Tokio for RUSTSEC-2021-0124 #439 (markmandel)
Breaking changes:
- Remove
extensions
from filter identifiers #484 (XAMPPRocky) - Add auto-generation of JSON schema. #478 (XAMPPRocky)
- Add regex capture and rename capture_bytes to capture #458 (XAMPPRocky)
- Add matches filter #447 (XAMPPRocky)
- Add
metadata::Value
#436 (XAMPPRocky) - Add a ttl map and support ratelimiting per IP address #406 (iffyio)
Implemented enhancements:
- Upgrade to Tokio 1.16.0 #475
- Changing dynamic metadata from
Any
. #433 - Provide stack traces for runtime errors. #418
- Accept Docker service hostnames in addition to IP addresses in configuration. #415
- Limit LocalRateLimit per IP #405
- Add support for version based packet processing #401
- Add abstraction for filter state lookup #375
- CI: link checking on documentation #367
- Allowlist filter #343
- Metric: Total Packet Processing time #292
- Add an ID field to filters #174
- Blocklist Filter #158
- Implement a control plane #131
- Filter Idea: Rate limiting #5
- Benchmark comparing read and write throughput #479 (markmandel)
- Update Rust to 1.58.1 #473 (XAMPPRocky)
- Add Pass & Drop filters, Refactor
Match
config #472 (XAMPPRocky) - CI: Documentation test gen, links, images, etc. #449 (markmandel)
- Metric: Total Packet processing time #441 (markmandel)
- xds-server updates #437 (iffyio)
- Add "Rust Doc" link to each Filter #434 (markmandel)
- Documentation for Firewall filter #432 (markmandel)
- Code: Firewall filter #416 (markmandel)
- Support clear bot history on new build #390 (devharis)
- replace slog with tracing in Filter #385 (rezvaneh)
- XDS Management Server #360 (iffyio)
See CHANGELOG for more details on changes.
Images available with this release:
v0.2.0
This is the 0.2.0 release of Quilkin.
We're pleased to announce the second release of Quilkin!
This release sees us improve on the API surface for writing Filters
, adds a slew of new documentation and examples,
and provide several new features.
Check the documentation for details on features, installation and
usage.
Security fixes:
- Security: Updated tokio + prost-types dependencies #341 (markmandel)
Breaking changes:
- Add a /config endpoint #396 (iffyio)
- Use hostname as default proxy id #391 (iffyio)
- Move to run and test subcommand setup #369 (XAMPPRocky)
- Add a type for session keys #364 (iffyio)
- Refactor Endpoint and Metadata from cluster and config into one type. #358 (XAMPPRocky)
- Move I/O and configuration out of runner::run #350 (XAMPPRocky)
- Filter Extension Re-organisation #293 (XAMPPRocky)
Implemented enhancements:
- Make a quilkin crate #232
- Always backoff and retry management server #392 (iffyio)
- Hash load balancer #381 (gilesheron)
- CI: Add cross compile and basic image test #370 (markmandel)
make docs
to preview documentation locally #366 (markmandel)- Add "examples" page to the documentation. #362 (markmandel)
- GH Action: Sizing labels on PRs #353 (markmandel)
- Add
cargo-deny
to CI by adding tomake test
#340 (markmandel) - Add a companies using Quilkin section #335 (luna-duclos)
- Add naive benchmark #321 (XAMPPRocky)
See CHANGELOG for more details on changes.
Images available with this release:
v0.1.0
v0.1.0
This is the 0.1.0 release of Quilkin.
We are very excited to have this first release of Quilkin! We hope you enjoy it! 🎉
Check the documentation for details on features, installation and usage.
Implemented enhancements:
In future releases this section will have a summary of new features, security fixes and breaking changes - but
everything is new for this release 🙂, so for this release - Quilkin is the enhancement!
See CHANGELOG for more details on changes.
Images available with this release: