What’s New in ATS v11.x
Security
This release carries a large body of security work. Most of it tightens what Traffic Server accepts rather than adding anything, so the operator-visible effect – changed defaults, messages now refused, ACL conditions that now apply as written, and plugins that now require configuration – is described in Upgrading to ATS v11.x. Read that section before upgrading.
Several fixes in this release carry CVE identifiers. Refer to the security advisory for this release for the identifiers, severities and affected version ranges.
Configuration
Added
proxy.config.http.reject_head_with_contentto control whether aHEADrequest carryingContent-LengthorTransfer-Encodingis refused. Enabled by default.Added
proxy.config.regex.anchor_policy_rulesto require that a regex driving a security or routing decision match the whole subject. Disabled by default; when disabled, each unanchored rule is named once at config load so the effect of enabling it can be measured first. See Writing Secure Regex Rules.proxy.config.http2.default_buffer_water_marknow defaults to32768and no longer accepts values below1024.proxy.config.http.header_field_max_sizeandproxy.config.hostdb.round_robin_max_countare now range checked, at0to65535and1to1024respectively. Their defaults are unchanged, but a value outside the range is no longer accepted.ip_allow.yamlships default outbound rules denyingCONNECTtunnels to unspecified, loopback, private, link-local and IPv4-mapped IPv6 destinations.
Metrics
Added
proxy.process.ssl.user_agent_resumed_cert_rejected, counting inbound connections rejected because the session they resumed carried no client certificate where the current SNI’sverify_clientpolicy requires one. Sessions are bound to the policy that issued them, so an out-of-scope session completes a full handshake rather than reaching this counter, which is normally zero.
Plugins
tsmemcache: the listener binds to the loopback address by default, and an optional second plugin argument sets the address to bind instead.magick: a signing key is now required. The plugin refuses to load without one, and the ImageMagickconvertoperators it will run are allowlisted.
What’s New in ATS v10.1
Metrics
Added
proxy.process.http.total_parent_marked_down_timeoutAdded
proxy.process.http.total_client_connections_udsAdded
proxy.process.ssl.group.user_agent.P-256Added
proxy.process.ssl.group.user_agent.P-384Added
proxy.process.ssl.group.user_agent.P-521Added
proxy.process.ssl.group.user_agent.X25519Added
proxy.process.ssl.group.user_agent.P-224Added
proxy.process.ssl.group.user_agent.X448Added
proxy.process.ssl.group.user_agent.X25519MLKEM768
Plugins
stats_over_http: Add prometheus metrics format option
header_rewrite: Add
set-plugin-cntloperatorheader_rewrite: Add
LAST-CAPTUREcondition to access the last capture group of a regexheader_rewrite: Add support for state variables that can be used in conditions and operators.
header_rewrite: Add support for an else clause in conditions
header_rewrite: Add a
GROUPconditionheader_rewrite: Add a
HTTP-CNTLcondition to control if expensive rules are run.header_rewrite: Add the
set-body-fromoperator to set the response body from a URLheader_rewrite: The
set-body-fromoperator now defers renabling the transaction until after the fetch of the URL providing the response bodyslice: Support unix domain socket paths
slice: Add configuration to limit slicing of some objects.
access_control: Generate a session cookie when
exp=0appears in aTokenRespHdrorigin response header.compress: Add range request control options to adjust behavior based on the
Accept-EncodingorRangeheaderslua: Add support for millisecond sleep
escalate: Now handles dispatching to the failover server if the original server is down
ja3_fingerprint: Add the
--preserveoption to avoid modifing some existing ja* fields.ja4_fingerprint: Added this new plugin
rate_limit: Add a
--rateoption to limit by RPS
TS API
Add
TSVConnPPInfoGetto get Proxy Protocol information.Add
TSContScheduleOnEntirePoolandTSContScheduleEveryOnEntirePoolto schedule continuations on every thread in a pool.
Features
Add
plugin.yaml, a YAML-based replacement forplugin.config. New features include disabling plugins without deleting lines (enabled: false), explicitload_order, inlineconfigcontent, and startup logging. See plugin.yaml.traffic_ctl: Add
plugin listto show loaded plugins and their status via JSONRPC.traffic_ctl: Add
config convert plugin_configto migrateplugin.configtoplugin.yaml.Add the
cqssglog field for TLS group name loggingtraffic_ctl: Add a new server command to show some basic internal information
traffic_ctl: Now displays YAML format output when the
--recordsoption is set.traffic_ctl: Added the
server debugcommand to enable/disable diagnostics and debug tags at runtime with a single command.cripts: Add some new high level convenience APIs
cripts: Add optional reason parameter to
Error::Statussni.yaml: Add
server_cipher_suiteandserver_TLSv1_3_cipher_suitesto allow overriding the setting fromrecords.yamlAdd support for getting authority information from Proxy Protocol V2. with new
ppalog formatter.Add support for getting UDP address info from Proxy Protocol.
Added support for listening on a Unix Domain Socket. See
proxy.config.http.server_portsAdded option for
proxy.config.http.auth_server_session_privateto only mark the connection private ifProxy-AuthorizationorWww-Authenticateheaders are presentIt is now an
ERRORif a remap ACL has more than one@actionparameter. This was an error in ATS 10.0.xAdd a
fragment_sizeoption in storage.yaml to control the fragment size of the volume.Add an optional
avg_obj_sizetostorage.yamlto control the directory entry sizing.The
proxy.config.http.cache.post_methodis now an overridable config.Defer deleting the copied plugin shared object file to startup to make it easier to debug crashes in plugins.
Configuration
Added
proxy.config.http.negative_revalidating_listto configure the list of status codes that apply to the negative revalidating featureproxy.config.http.cache.targeted_cache_control_headersnow defaults toCDN-Cache-Control. Set it to an empty string to disable targeted cache control.The
ssl_multicert.configfile has been replaced withssl_multicert.yaml. Usetraffic_ctl config convert ssl_multicertto convert existing configuration files.
What’s New in ATS v10.0
This version of Apache Traffic Server™ includes over <x> commits, from <y> pull requests. A total of <z> contributors have participated in this development cycle.
New Features
JSON-RPC based interface for administrative API
Traffic Server now exposes a JSON-RPC node to interact with external tools. Check JSONRPC for more details.
traffic_ctl has a new command
monitorto show a continuously updating list of metricsip_allow.yamlandremap.confignow support named IP ranges via IP Categories. See theip_categorieskey definition inip_allow.yamlfor information about their use and definitions.sni.yamlfqdn:tunnel_route, beside the already supported match group number, configuration now also supports the destination port using a variable specification either for the incoming connection port or the port that was specified by the incoming Proxy Protocol payload. Checksni.yamlfor more information.The records.yaml entry
proxy.config.system_clockwas added to control the underlying system clock that ATS uses for internal timingOCSP requests is now be able to use GET method. See
proxy.config.ssl.ocsp.request_modefor more information.TSHttpSsnInfoIntGet has been added.
New or modified Configurations
ip_allow.yaml and remap.config ACL actions
There are two new sets of actions for HTTP request method filtering introduced in Traffic Server 10.x:
Both
ip_allow.yamlandremap.confignow support theset_allowandset_denyactions. These actions both behave likeallowanddenydid forip_allow.yamlpre Traffic Server 10.x.In addition,
remap.confignow supportsadd_allowandadd_denyactions. These behave likeallowanddenyactions did forremap.configACLs pre Traffic Server 10.x.
The details about the motivation and behavior of these actions are documented in ACL Filters.
Logging and Metrics
The numbers of HTTP/2 frames received have been added as metrics.
Plugins
authproxy -
--forward-header-prefixparameter has been addedprefetch - Cmcd-Request header support has been added
xdebug -
--enableoption to selectively enable features has been addedsystem_stats - Stats about memory have been added
slice plugin - This plugin was promoted to stable.
compress plugin - Added support for Zstandard (zstd) compression algorithm.
JSON-RPC
Remote clients, like traffic_ctl have now bi-directional access to the plugin space. For more details check Handler implementation.
Replaced autotools build system with cmake
See Installing Traffic Server for more information
Switch to C++20
Plugins are now required to be compiled as C++ code, rather than straight C.
The API is tested with C++20, so code compatible with this version is preferred.
TSDebug and related functions are removed. Debug tracing should now be done
using cpp:func:Dbg and related functions, as in Traffic Server core code.
C++ Plugin API Deprecated
It is deprecated in this release. It will be deleted in ATS 11.
Symbols With INKUDP Prefix
In the plugin API, all types and functions starting with the prefix INKUDP are removed.
New plugin hook for request sink transformation
A new hook, TS_HTTP_REQUEST_CLIENT_HOOK, has been added. This provides the analoguas functionality of
TS_HTTP_RESPONSE_CLIENT_HOOK, for request bodies.
HTTP/2
Support for HTTP/2 on origin server connections has been added. This is disabled by default. For more details check
proxy.config.ssl.client.alpn_protocolsSupport for CONNECT method has been added.
Window size control has been improved. For more details check
proxy.config.http2.flow_control.policy_in
HTTP UI Removed
The stats and cache inspector pages were unmaintained and removed in this release.