.. _version_history_1.6.0:

1.6.0 (March 20, 2018)
=======================



Changes
-------


* **access log**: added ``DOWNSTREAM_REMOTE_ADDRESS``, ``DOWNSTREAM_REMOTE_ADDRESS_WITHOUT_PORT``, and ``DOWNSTREAM_LOCAL_ADDRESS``
  :ref:`access log formatters <v1.6:config_access_log_format>`. ``DOWNSTREAM_ADDRESS`` access log formatter has been
  deprecated.
* **access log**: added configuration to :ref:`runtime filter <v1.6:envoy_api_msg_config.filter.accesslog.v2.RuntimeFilter>` to set default
  sampling rate, divisor, and whether to use independent randomness or not.
* **access log**: added less than or equal (LE) :ref:`comparison filter <v1.6:envoy_api_msg_config.filter.accesslog.v2.ComparisonFilter>`.
* **admin**: added :ref:`/runtime <v1.6:operations_admin_interface_runtime>` admin endpoint to read the current runtime values.
* **build**: added support for :repo:`building Envoy with exported symbols <bazel#enabling-optional-features>`. This change allows
  scripts loaded with the Lua filter to load shared object libraries such as those installed via `LuaRocks
  <https://luarocks.org/>`_.
* **config**: added restrictions for the backing :ref:`config sources <v1.6:envoy_api_msg_core.ConfigSource>` of xDS resources. For
  filesystem based xDS the file must exist at configuration time. For cluster based xDS the backing cluster must be
  statically defined and be of non-EDS type.
* **config**: added support for :ref:`inline delivery <v1.6:envoy_api_msg_core.DataSource>` of TLS certificates and private keys.
* **config**: added support for sending error details as `grpc.rpc.Status
  <https://github.com/googleapis/googleapis/blob/master/google/rpc/status.proto>`_ in :ref:`DiscoveryRequest
  <v1.6:envoy_api_msg_DiscoveryRequest>`.
* **envoy**: Many small bug fixes and performance improvements not listed.
* **grpc**: the Google gRPC C++ library client is now supported as specified in the :ref:`gRPC services overview
  <v1.6:arch_overview_grpc_services>` and :ref:`GrpcService <v1.6:envoy_api_msg_core.GrpcService>`.
* **grpc-json**: added support for :ref:`inline descriptors
  <v1.6:envoy_api_field_config.filter.http.transcoder.v2.GrpcJsonTranscoder.proto_descriptor_bin>`.
* **health check**: added :ref:`gRPC health check <v1.6:envoy_api_field_core.HealthCheck.grpc_health_check>` based on `grpc.health.v1.Health
  <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>`_ service.
* **health check**: added ability to set :ref:`host header value <v1.6:envoy_api_field_core.HealthCheck.HttpHealthCheck.host>` for http health
  check.
* **health check**: added setting for :ref:`no-traffic interval <v1.6:envoy_api_field_core.HealthCheck.no_traffic_interval>`.
* **health check**: extended the health check filter to support computation of the health check response based on the :ref:`percentage of
  healthy servers in upstream clusters
  <v1.6:envoy_api_field_config.filter.http.health_check.v2.HealthCheck.cluster_min_healthy_percentages>`.
* **hot restart**: added SIGTERM propagation to children to :ref:`hot-restarter.py <v1.6:operations_hot_restarter>`, which enables using it as a
  parent of containers.
* **http**: added idle timeout for :ref:`upstream http connections <v1.6:envoy_api_field_core.HttpProtocolOptions.idle_timeout>`.
* **http**: added support for :ref:`incoming HTTP/1.0 <v1.6:envoy_api_field_core.Http1ProtocolOptions.accept_http_10>`.
* **http**: added support for :ref:`proxying 100-Continue responses
  <v1.6:envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.proxy_100_continue>`.
* **http**: added support for trusting additional hops in the :ref:`config_http_conn_man_headers_x-forwarded-for` request header.
* **http**: added the ability to pass a URL encoded PEM encoded peer certificate in the
  :ref:`config_http_conn_man_headers_x-forwarded-client-cert` header.
* **ip tagging**: added :ref:`HTTP IP Tagging filter <v1.6:config_http_filters_ip_tagging>`.
* **listeners**: added support for :ref:`abstract unix domain sockets <v1.6:envoy_api_msg_core.Pipe>` on Linux. The abstract namespace can be
  used by prepending '@' to a socket path.
* **listeners**: added support for :ref:`listening for both IPv4 and IPv6 <v1.6:envoy_api_field_core.SocketAddress.ipv4_compat>` when binding
  to ::.
* **listeners**: added support for listening on :ref:`UNIX domain sockets <v1.6:envoy_api_field_core.Address.pipe>`.
* **load balancer**: added :ref:`Maglev <v1.6:arch_overview_load_balancing_types_maglev>` consistent hash load balancer.
* **load balancer**: added cluster configuration for :ref:`healthy panic threshold
  <v1.6:envoy_api_field_Cluster.CommonLbConfig.healthy_panic_threshold>` percentage.
* **load balancer**: added support for :ref:`LocalityLbEndpoints <v1.6:envoy_api_msg_endpoint.LocalityLbEndpoints>` priorities.
* **lua**: added headers :ref:`replace() <v1.6:config_http_filters_lua_header_wrapper>` API.
* **lua**: extended to support :ref:`metadata object <v1.6:config_http_filters_lua_metadata_wrapper>` API.
* **redis**: added ``GEORADIUS_RO`` and ``GEORADIUSBYMEMBER_RO`` to the :ref:`Redis command splitter <v1.6:arch_overview_redis>`
  allowlist.
* **redis**: added local ``PING`` support to the :ref:`Redis filter <v1.6:arch_overview_redis>`.
* **router**: added ``DOWNSTREAM_REMOTE_ADDRESS_WITHOUT_PORT``, ``DOWNSTREAM_LOCAL_ADDRESS``,
  ``DOWNSTREAM_LOCAL_ADDRESS_WITHOUT_PORT``, ``PROTOCOL``, and ``UPSTREAM_METADATA`` :ref:`header formatters
  <v1.6:config_http_conn_man_headers_custom_request_headers>`. The ``CLIENT_IP`` header formatter has been deprecated.
* **router**: added gateway-error :ref:`retry-on <v1.6:config_http_filters_router_x-envoy-retry-on>` policy.
* **router**: added support for :ref:`HTTPS redirects <v1.6:envoy_api_field_route.RedirectAction.https_redirect>` on specific routes.
* **router**: added support for :ref:`custom request/response headers <v1.6:config_http_conn_man_headers_custom_request_headers>` with
  mixed static and dynamic values.
* **router**: added support for :ref:`direct responses <v1.6:envoy_api_field_route.Route.direct_response>`. I.e., sending a preconfigured
  HTTP response without proxying anywhere.
* **router**: added support for :ref:`prefix_rewrite <v1.6:envoy_api_field_route.RedirectAction.prefix_rewrite>` for redirects.
* **router**: added support for :ref:`range based header matching <v1.6:envoy_api_field_route.HeaderMatcher.range_match>` for request
  routing.
* **router**: added support for :ref:`stripping the query string <v1.6:envoy_api_field_route.RedirectAction.strip_query>` for redirects.
* **router**: added support for downstream request/upstream response :ref:`header manipulation
  <v1.6:config_http_conn_man_headers_custom_request_headers>` in :ref:`weighted cluster <v1.6:envoy_api_msg_route.WeightedCluster>`.
* **router**: added support for more granular weighted cluster routing by allowing the :ref:`total_weight
  <v1.6:envoy_api_field_route.WeightedCluster.total_weight>` to be specified in configuration.
* **router**: added support for route matching based on :ref:`URL query string parameters
  <v1.6:envoy_api_msg_route.QueryParameterMatcher>`.
* **squash**: added support for the :ref:`Squash microservices debugger <v1.6:config_http_filters_squash>`. Allows debugging an incoming
  request to a microservice in the mesh.
* **stats**: added metrics service API implementation.
* **stats**: added native :ref:`DogStatsd <v1.6:envoy_api_msg_config.metrics.v2.DogStatsdSink>` support.
* **stats**: added support for :ref:`fixed stats tag values <v1.6:envoy_api_field_config.metrics.v2.TagSpecifier.fixed_value>` which will
  be added to all metrics.
* **tcp proxy**: access logs now bring an IP address without a port when using DOWNSTREAM_ADDRESS. Use :ref:`DOWNSTREAM_REMOTE_ADDRESS
  <v1.6:config_access_log_format>` instead.
* **tcp proxy**: added :ref:`idle timeout <v1.6:envoy_api_field_config.filter.network.tcp_proxy.v2.TcpProxy.idle_timeout>`.
* **tcp proxy**: added support for specifying a :ref:`metadata matcher
  <v1.6:envoy_api_field_config.filter.network.tcp_proxy.v2.TcpProxy.metadata_match>` for upstream clusters in the tcp filter.
* **tcp proxy**: improved TCP proxy to correctly proxy TCP half-close.
* **tracing**: added support for dynamically loading an :ref:`OpenTracing tracer <v1.6:envoy_api_msg_config.trace.v2.DynamicOtConfig>`.
* **tracing**: when using the Zipkin tracer, it is no longer necessary to propagate the :ref:`x-ot-span-context
  <v1.6:config_http_conn_man_headers_x-ot-span-context>` header. See more on trace context propagation :ref:`here
  <v1.6:arch_overview_tracing>`.
* **tracing**: when using the Zipkin tracer, it is now possible for clients to specify the sampling decision (using the
  :ref:`x-b3-sampled <v1.6:config_http_conn_man_headers_x-b3-sampled>` header) and have the decision propagated through to
  subsequently invoked services.
* **transport sockets**: added transport socket interface to allow custom implementations of transport sockets. A transport socket provides read
  and write logic with buffer encryption and decryption (if applicable). The existing TLS implementation has been
  refactored with the interface.
* **upstream**: added support for specifying an :ref:`alternate stats name <v1.6:envoy_api_field_Cluster.alt_stat_name>` while emitting stats
  for clusters.








Deprecated
----------


* **headers**: ``CLIENT_IP`` header formatter is deprecated. Use ``DOWNSTREAM_REMOTE_ADDRESS_WITHOUT_PORT`` instead.
* **lds**: 'use_original_dst' field in the v2 LDS API is deprecated. Use listener filters and filter chain matching instead.
* **logging**: ``DOWNSTREAM_ADDRESS`` log formatter is deprecated. Use ``DOWNSTREAM_REMOTE_ADDRESS_WITHOUT_PORT`` instead.
* **matching**: ``value`` and ``regex`` fields in the ``HeaderMatcher`` message is deprecated. Use the ``exact_match`` or
  ``regex_match`` oneof instead.