The following subsections discuss some of the reasons for which intermediate systems may need to process Layer 3 / Layer 4 information to make a forwarding decision.
In the case of Equal Cost Multipath (ECMP) load sharing, the intermediate system needs to make a decision regarding which of its interfaces to use to forward a given packet. Since round-robin usage of the links is usually avoided to prevent packet reordering, forwarding engines need to use a mechanism that will consistently forward the same data streams down the same forwarding paths. Most forwarding engines achieve this by calculating a simple hash using an n-tuple gleaned from a combination of Layer 2 through to Layer 4 protocol header information. This n-tuple will typically use the src/dst Media Access Control (MAC) addresses, src/dst IP addresses, and, if possible, further Layer 4 src/dst port information.
In the IPv6 world, flows are expected to be identified by means of the IPv6 "Flow Label" [
RFC 6437]. Thus, ECMP and hash-based load sharing should be possible without the need to process the entire IPv6 header chain to obtain upper-layer information to identify flows. [
RFC 7098] discusses how the IPv6 Flow Label can be used to enhance Layer 3/4 load distribution and balancing for large server farms.
Historically, many IPv6 implementations failed to set the Flow Label, and hash-based ECMP/load-sharing devices also did not employ the Flow Label for performing their task. While support of [
RFC 6437] is currently widespread for current versions of all popular host implementations, there is still only marginal usage of the IPv6 Flow Label for ECMP and load balancing [
Almeida-2020]. A contributing factor could be the issues that have been found in host implementations and middleboxes [
Jaeggli-2018].
Clearly, widespread support of [
RFC 6437] would relieve intermediate systems from having to process the entire IPv6 header chain, making Flow Label-based ECMP and load sharing [
RFC 6438] feasible.
If an intermediate system cannot determine consistent n-tuples for calculating flow hashes, data streams are more likely to end up being distributed unequally across ECMP and load-shared links. This may lead to packet drops or reduced performance.
Infrastructure Access Control Lists (iACLs) drop unwanted packets destined to a network's infrastructure. Typically, iACLs are deployed because external direct access to a network's infrastructure addresses is operationally unnecessary and can be used for attacks of different sorts against router control planes. To this end, traffic usually needs to be differentiated on the basis of Layer 3 or Layer 4 criteria to achieve a useful balance of protection and functionality. For example, an infrastructure may be configured with the following policy:
-
Permit some amount of ICMP echo (ping) traffic towards a router's addresses for troubleshooting.
-
Permit BGP sessions on the shared network of an exchange point (potentially differentiating between the amount of packets/second permitted for established sessions and for connection establishment), but do not permit other traffic from the same peer IP addresses.
If a forwarding router cannot determine consistent n-tuples for calculating flow hashes, data streams are more likely to end up being distributed unequally across ECMP and load-shared links. This may lead to packet drops or reduced performance.
If a network cannot deploy infrastructure ACLs, then the security of the network may be compromised as a result of the increased attack surface.
The case of customer Distributed Denial-of-Service (DDoS) protection and edge-to-core customer protection filters is similar in nature to the iACL protection. Similar to iACL protection, Layer 4 ACLs generally need to be applied as close to the edge of the network as possible, even though the intent is usually to protect the customer edge rather than the provider core. Application of Layer 4 DDoS protection to a network edge is often automated using BGP Flowspec [
RFC 8955] [
RFC 8956].
For example, a website that normally only handles traffic on TCP ports 80 and 443 could be subject to a volumetric DDoS attack using NTP and DNS packets with a randomized source IP address, thereby rendering source-based remote triggered black hole [
RFC 5635] mechanisms useless. In this situation, ACLs that provide DDoS protection could be configured to block all UDP traffic at the network edge without impairing the web server functionality in any way. Thus, being able to block arbitrary protocols at the network edge can avoid DDoS-related problems both in the provider network and on the customer edge link.
Network Intrusion Detection Systems (NIDS) examine network traffic and try to identify traffic patterns that can be correlated to network-based attacks. These systems generally attempt to inspect application-layer traffic (if possible) but, at the bare minimum, inspect Layer 4 flows. When attack activity is inferred, the operator is notified of the potential intrusion attempt.
Network Intrusion Prevention Systems (IPS) operate similarly to NIDSs, but they can also prevent intrusions by reacting to detected attack attempts by e.g., triggering packet filtering policies at firewalls and other devices.
Use of extension headers can be problematic for NIDS/IPS, since:
-
Extension headers increase the complexity of resulting traffic and the associated work and system requirements to process it.
-
Use of unknown extension headers can prevent a NIDS or IPS from processing Layer 4 information.
-
Use of IPv6 fragmentation requires a stateful fragment-reassembly operation, even for decoy traffic employing forged source addresses (see, e.g., [nmap]).
As a result, in order to increase the efficiency or effectiveness of these systems, packets employing IPv6 extension headers are often dropped at the network ingress point(s) of networks that deploy these systems.
Firewalls enforce security policies by means of packet filtering. These systems usually inspect Layer 3 and Layer 4 traffic but can often also examine application-layer traffic flows.
As with a NIDS or IPS (
Section 7.4), use of IPv6 extension headers can represent a challenge to network firewalls, since:
-
Extension headers increase the complexity of resulting traffic and the associated work and system requirements to process it, as outlined in [Zack-FW-Benchmark].
-
Use of unknown extension headers can prevent firewalls from processing Layer 4 information.
-
Use of IPv6 fragmentation requires a stateful fragment-reassembly operation, even for decoy traffic employing forged source addresses (see, e.g., [nmap]).
Additionally, a common firewall filtering policy is the so-called "default deny", where all traffic is blocked (by default), and only expected traffic is added to an "allow/accept list".
As a result, packets employing IPv6 extension headers are often dropped by network firewalls, either because of the challenges represented by extension headers or because the use of IPv6 extension headers has not been explicitly allowed.
Note that although the data presented in [
Zack-FW-Benchmark] was several years old at the time of publication of this document, many contemporary firewalls use comparable hardware and software architectures; consequently, the conclusions of this benchmark are still relevant, despite its age.