.. _arch_overview_dns_resolution: DNS Resolution ============== Many Envoy components resolve DNS: different cluster types ( :ref:`strict dns `, :ref:`logical dns `); the :ref:`dynamic forward proxy ` system (which is composed of a cluster and a filter); the udp :ref:`dns filter `, etc. Envoy uses `c-ares `_ as a third party DNS resolution library. On Apple OSes Envoy additionally offers resolution using Apple specific APIs via the ``envoy.restart_features.use_apple_api_for_dns_lookups`` runtime feature. Envoy provides DNS resolution through extensions, and contains 2 built-in extensions: 1) c-ares: :ref:`CaresDnsResolverConfig` 2) Apple (iOS/macOS only): :ref:`AppleDnsResolverConfig` For an example of a built-in DNS typed configuration see the :ref:`HTTP filter configuration documentation `. The Apple-based DNS Resolver emits the following stats rooted in the ``dns.apple`` stats tree: .. csv-table:: :header: Name, Type, Description :widths: 1, 1, 2 connection_failure, Counter, Number of failed attempts to connect to the DNS server get_addr_failure, Counter, Number of general failures when calling GetAddrInfo API network_failure, Counter, Number of failures due to network connectivity processing_failure, Counter, Number of failures when processing data from the DNS server socket_failure, Counter, Number of failed attempts to obtain a file descriptor to the socket to the DNS server timeout, Counter, Number of queries that resulted in a timeout