Network Working Group F. Templin, Ed.
Internet-Draft Boeing Research & Technology
Obsoletes: rfc6706 (if approved) March 27, 2014
Intended status: Standards Track
Expires: September 28, 2014

Transmission of IPv6 Packets over AERO Links
draft-templin-aerolink-10.txt

Abstract

This document specifies the operation of IPv6 over tunnel virtual Non-Broadcast, Multiple Access (NBMA) links using Asymmetric Extended Route Optimization (AERO). Nodes attached to AERO links can exchange packets via trusted intermediate routers on the link that provide forwarding services to reach off-link destinations and/or redirection services to inform the node of an on-link neighbor that is closer to the final destination. Operation of the IPv6 Neighbor Discovery (ND) protocol over AERO links is based on an IPv6 link local address format known as the AERO address.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on September 28, 2014.

Copyright Notice

Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.


Table of Contents

1. Introduction

This document specifies the operation of IPv6 over tunnel virtual Non-Broadcast, Multiple Access (NBMA) links using Asymmetric Extended Route Optimization (AERO). Nodes attached to AERO links can exchange packets via trusted intermediate routers on the link that provide forwarding services to reach off-link destinations and/or redirection services to inform the node of an on-link neighbor that is closer to the final destination.

Nodes on AERO links use an IPv6 link-local address format known as the AERO Address. This address type has properties that statelessly link IPv6 Neighbor Discovery (ND) to IPv6 routing. The AERO link can be used for tunneling to neighboring nodes on either IPv6 or IPv4 networks, i.e., AERO views the IPv6 and IPv4 networks as equivalent links for tunneling. The remainder of this document presents the AERO specification.

2. Terminology

The terminology in the normative references applies; the following terms are defined within the scope of this document:

AERO link

a Non-Broadcast, Multiple Access (NBMA) tunnel virtual overlay configured over a node's attached IPv6 and/or IPv4 networks. All nodes on the AERO link appear as single-hop neighbors from the perspective of IPv6.
AERO interface

a node's attachment to an AERO link. The AERO interface MTU is less than or equal to the AERO link MTU.
AERO address

an IPv6 link-local address assigned to an AERO interface and constructed as specified in Section 3.6.
AERO node

a node that is connected to an AERO link and that participates in IPv6 Neighbor Discovery over the link.
AERO Client ("client")

a node that configures either a host interface or a router interface on an AERO link.
AERO Server ("server")

a node that configures a router interface on an AERO link over which it can provide default forwarding and redirection services for other AERO nodes.
AERO Relay ("relay")

a node that relays IPv6 packets between Servers on the same AERO link, and/or that forwards IPv6 packets between the AERO link and the IPv6 Internet. An AERO Relay may or may not also be configured as an AERO Server.
ingress tunnel endpoint (ITE)

an AERO interface endpoint that injects tunneled packets into an AERO link.
egress tunnel endpoint (ETE)

an AERO interface endpoint that receives tunneled packets from an AERO link.
underlying network

a connected IPv6 or IPv4 network routing region over which AERO nodes tunnel IPv6 packets.
underlying interface

an AERO node's interface point of attachment to an underlying network.
underlying address

an IPv6 or IPv4 address assigned to an AERO node's underlying interface. When UDP encapsulation is used, the UDP port number is also considered as part of the underlying address. Underlying addresses are used as the source and destination addresses of the AERO encapsulation header.
link-layer address

the same as defined for "underlying address" above.
network layer address

an IPv6 address used as the source or destination address of the inner IPv6 packet header.
end user network (EUN)

an IPv6 network attached to a downstream interface of an AERO Client (where the AERO interface is seen as the upstream interface).

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

3. Asymmetric Extended Route Optimization (AERO)

The following sections specify the operation of IPv6 over Asymmetric Extended Route Optimization (AERO) links:

3.1. AERO Node Types

AERO Relays relay packets between nodes connected to the same AERO link and also forward packets between the AERO link and the native IPv6 network. The relaying process entails re-encapsulation of IPv6 packets that were received from a first AERO node and are to be forwarded without modification to a second AERO node.

AERO Servers configure their AERO interfaces as router interfaces, and provide default routing services to AERO Clients. AERO Servers configure a DHCPv6 Relay or Server function and facilitate DHCPv6 Prefix Delegation (PD) exchanges. An AERO Server may also act as an AERO Relay.

AERO Clients act as requesting routers to receive IPv6 prefixes through a DHCPv6 PD exchange via an AERO Server over the AERO link. Each AERO Client receives at least a /64 prefix delegation, and may receive even shorter prefixes.

AERO Clients that act as routers configure their AERO interfaces as router interfaces, i.e., even if the AERO Client otherwise displays the outward characteristics of an ordinary host (for example, the Client may internally configure both an AERO interface and (internal virtual) End User Network (EUN) interfaces). AERO Clients that act as routers sub-delegate portions of their received prefix delegations to links on EUNs.

AERO Clients that act as ordinary hosts configure their AERO interfaces as host interfaces and assign one or more IPv6 addresses taken from their received prefix delegations to the AERO interface but DO NOT assign the delegated prefix itself to the AERO interface. Instead, the host assigns the delegated prefix to a "black hole" route so that unused portions of the prefix are nullified.

End system applications on AERO hosts bind directly to the AERO interface, while applications on AERO routers (or IPv6 hosts served by an AERO router) bind to EUN interfaces.

3.2. AERO Interface Characteristics

AERO interfaces use IPv6-in-IPv6 encapsulation [RFC2473] to exchange tunneled packets with AERO neighbors attached to an underlying IPv6 network, and use IPv6-in-IPv4 encapsulation [RFC4213] to exchange tunneled packets with AERO neighbors attached to an underlying IPv4 network. AERO interfaces can also use IPsec encapsulation [RFC4301] (either IPv6-in-IPsec-in-IPv6 or IPv6-in-IPsec-in-IPv4) in environments where strong authentication and confidentiality are required. When NAT traversal and/or filtering middlebox traversal is necessary, a UDP header is further inserted between the outer IP encapsulation header and the inner packet.

AERO interfaces assign a topology-relative link-local address of the form 'fe80::[ID]' that is derived from their current link-layer topology. For IPv6-in-IPv4 encapsulation, 'ID' is the IPv4 address of the node's underlying IPv4 interface preceded by zeros per Section 3.7 of [RFC4213]. For IPv6-in-IPv6 encapsulation, 'ID' is the CRC64 calculation of the node's underlying interface IPv6 address, beginning with the most significant bit.

AERO interfaces maintain a neighbor cache and use a variation of standard unicast IPv6 ND messaging. AERO interfaces use Neighbor Solicitation (NS), Neighbor Advertisement (NA) and Redirect messages the same as for any IPv6 link. They do not use Router Solicitation (RS) and Router Advertisement (RA) messages for several reasons. First, default router discovery is supported through other means more appropriate for AERO links as described below. Second, discovery of more-specific routes is through the receipt of Redirect messages. Finally, AERO nodes register their delegated IPv6 prefixes using DHCPv6 PD; hence, there is no need for RA-based prefix discovery.

AERO Neighbor Solicitation (NS) and Neighbor Advertisement (NA) messages do not include Source/Target Link Layer Address Options (S/TLLAO). Instead, AERO nodes determine the link-layer addresses of neighbors by examining the encapsulation IP source address and UDP port number (when UDP encapsulation is used) of any NS/NA messages they receive and ignore any S/TLLAOs included in these messages. This is vital to the operation of AERO links for which neighbors are separated by Network Address Translators (NATs) - either IPv4 or IPv6.

AERO Redirect messages include a TLLAO the same as for any IPv6 link. The TLLAO includes the link-layer address of the target node, including both the IP address and the UDP source port number used by the target when it sends UDP-encapsulated packets over the AERO interface (the TLLAO instead encodes the value 0 when the target does not use UDP encapsulation). TLLAOs for target nodes that use an IPv6 underlying address include the full 16 bytes of the IPv6 address as shown in Figure 1, while TLLAOs for target nodes that use an IPv4 underlying address include only the 4 bytes of the IPv4 address as shown in Figure 2.

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = 2   |   Length = 3  |     UDP Source Port (or 0)    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           Reserved                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +--                                                           --+
     |                                                               |
     +--                       IPv6 Address                        --+
     |                                                               |
     +--                                                           --+
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 1: AERO TLLAO Format for IPv6

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |    Type = 2   |   Length = 1  |     UDP Source Port (or 0)    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                         IPv4 Address                          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2: AERO TLLAO Format for IPv4

Finally, AERO interface NS/NA messages only update existing neighbor cache entires and do not create new neighbor cache entries, whereas Redirect messages both update and create neighbor cache entries. This represents a departure from the normal operation of IPv6 ND over common link types, but is consistent with the spirit of IPv6 over NBMA links as discussed in [RFC4861]. Note however that this restriction may be relaxed and/or redefined on AERO links that participate in a fully distributed mobility management model coordinated in a manner outside the scope of this document.

3.3. AERO Addresses

An AERO address is an IPv6 link-local address assigned to an AERO interface and with an IPv6 prefix embedded within the interface identifier. The AERO address is formatted as:

  • fe80::[IPv6 prefix]

Each AERO Client configures an AERO address based on the delegated prefix it has received from the AERO link prefix delegation authority. The address begins with the prefix fe80::/64 and includes in its interface identifier the base /64 prefix taken from the Client's delegated IPv6 prefix. The base prefix is determined by masking the delegated prefix with the prefix length. For example, if an AERO Client has received the prefix delegation:

  • 2001:db8:1000:2000::/56

it would construct its AERO address as:

  • fe80::2001:db8:1000:2000

Unlike the node's topology-relative link local address (i.e., fe80::[ID]), the AERO address remains stable as the Client moves between topological locations.

3.4. AERO Interface Data Origin Authentication

Nodes on AERO interfaces use a simple data origin authentication for encapsulated packets they receive from other nodes. In particular, AERO Clients accept encapsulated packets with a link-layer source address belonging to their current AERO Server. AERO nodes also accept encapsulated packets with a link-layer source address that is correct for the network-layer source address.

The AERO node considers the link-layer source address correct for the network-layer source address if there is an IPv6 route that matches the network-layer source address as well as a neighbor cache entry corresponding to the next hop that includes the link-layer address. An exception is that NS, NA and Redirect messages may include a different link-layer address than the one currently in the neighbor cache, and the new link-layer address updates the neighbor cache entry.

3.5. AERO Interface Conceptual Data Structures and Protocol Constants

Each AERO node maintains a per-AERO interface conceptual neighbor cache that includes an entry for each neighbor it communicates with on the AERO link, the same as for any IPv6 interface (see [RFC4861]). Neighbor cache entries are either static or dynamic. Static neighbor cache entries (including a Client's neighbor cache entry for a Server or a Server's neighbor cache entry for a Client) do not have timeout values and are retained until explicitly deleted. Dynamic neighbor cache entries are created and maintained by the AERO redirection procedures describe in the following sections.

When an AERO node receives a valid Predirect message (See Section 3.11.5) it creates or updates a dynamic neighbor cache entry for the Predirect target L3 and L2 addresses, and also creates an IPv6 route for the Predirected (source) prefix. The node then sets an ACCEPT timer and uses this timer to validate any messages received from the Predirected neighbor.

When an AERO node receives a valid Redirect message (see Section 3.11.7) it creates or updates a dynamic neighbor cache entry for the Redirect target L3 and L2 addresses, and also creates an IPv6 route for the Redirected (destination) prefix. The node then sets a FORWARD timer and uses this timer to determine whether packets can be sent directly to the Redirected neighbor. The node also maintains a constant value MAX_RETRY to limit the number of keepalives sent when a neighbor has gone unreachable.

It is RECOMMENDED that FORWARD_TIME be set to the default constant value 30 seconds to match the default REACHABLE_TIME value specified for IPv6 neighbor discovery [RFC4861].

It is RECOMMENDED that ACCEPT_TIME be set to the default constant value 40 seconds to allow a 10 second window so that the AERO redirection procedure can converge before the ACCEPT_TIME timer decrements below FORWARD_TIME.

It is RECOMMENDED that MAX_RETRY be set to 3 the same as described for IPv6 neighbor discovery address resolution in Section 7.3.3 of [RFC4861].

Different values for FORWARD_TIME, ACCEPT_TIME, and MAX_RETRY MAY be administratively set, if necessary, to better match the AERO link's performance characteristics; however, if different values are chosen, all nodes on the link MUST consistently configure the same values. ACCEPT_TIME SHOULD further be set to a value that is sufficiently longer than FORWARD_TIME to allow the AERO redirection procedure to converge.

3.6. AERO Interface MTU Considerations

The AERO link Maximum Transmission Unit (MTU) is 64KB minus the encapsulation overhead for IPv4 [RFC0791] and 4GB minus the encapsulation overhead for IPv6 [RFC2675]. This is the most that IPv4 and IPv6 (respectively) can convey within the constraints of protocol constants, but actual sizes available for tunneling will frequently be much smaller.

The base tunneling specifications for IPv4 and IPv6 typically set a static MTU on the tunnel interface to 1500 bytes minus the encapsulation overhead or smaller still if the tunnel is likely to incur additional encapsulations such as IPsec on the path. This can result in path MTU related black holes when packets that are too large to be accommodated over the AERO link are dropped, but the resulting ICMP Packet Too Big (PTB) messages are lost on the return path. As a result, AERO nodes use the following MTU mitigations to accommodate larger packets.

AERO nodes set their AERO interface MTU to the larger of 1500 bytes and the underlying interface MTU minus the encapsulation overhead. AERO nodes optionally cache other per-neighbor MTU values in the underlying IP path MTU discovery cache initialized to the underlying interface MTU.

AERO nodes admit packets that are no larger than 1280 bytes minus the encapsulation overhead (*) as well as packets that are larger than 1500 bytes into the tunnel without fragmentation, i.e., as long as they are no larger than the AERO interface MTU before encapsulation and also no larger than the cached per-neighbor MTU following encapsulation. For IPv4, the node sets the "Don't Fragment" (DF) bit to 0 for packets no larger than 1280 bytes minus the encapsulation overhead (*) and sets the DF bit to 1 for packets larger than 1500 bytes. If a large packet is lost in the path, the node may optionally cache the MTU reported in the resulting PTB message or may ignore the message, e.g., if there is a possibility that the message is spurious.

For packets destined to an AERO node that are larger than 1280 bytes minus the encapsulation overhead (*) but no larger than 1500 bytes, the node uses outer IP fragmentation to fragment the packet into two pieces (where the first fragment contains 1024 bytes of the fragmented inner packet) then admits the fragments into the tunnel. If the outer protocol is IPv4, the node admits the packet into the tunnel with DF set to 0 and subject to rate limiting to avoid reassembly errors [RFC4963][RFC6864]. For both IPv4 and IPv6, the node also sends a 1500 byte probe message (**) to the neighbor, subject to rate limiting. To construct a probe, the node prepares an ICMPv6 Neighbor Solicitation (NS) message with trailing padding octets added to a length of 1500 bytes but does not include the length of the padding in the IPv6 Payload Length field. The node then encapsulates the NS in the outer encapsulation headers (while including the length of the padding in the outer length fields), sets DF to 1 (for IPv4) and sends the padded NS message to the neighbor. If the neighbor returns an NA message, the node may then send whole packets within this size range and (for IPv4) relax the rate limiting requirement.

AERO nodes MUST be capable of reassembling packets up to 1500 bytes plus the encapsulation overhead length. It is therefore RECOMMENDED that AERO nodes be capable of reassembling at least 2KB.

(*) Note that if it is known that the minimum Path MTU to an AERO node is MINMTU bytes (where 1280 < MINMTU < 1500) then MINMTU can be used instead of 1280 in the fragmentation threshold considerations listed above.

(**) It is RECOMMENDED that no probes smaller than 1500 bytes be used for MTU probing purposes, since smaller probes may be fragmented if there is a nested tunnel somewhere on the path to the neighbor.

3.7. AERO Interface Encapsulation, Re-encapsulation and Decapsulation

AERO interfaces encapsulate IPv6 packets according to whether they are entering the AERO interface for the first time or if they are being forwarded out the same AERO interface that they arrived on. This latter form of encapsulation is known as "re-encapsulation".

AERO interfaces encapsulate packets per the specifications in , [RFC2473], [RFC4213] except that the interface copies the "TTL/Hop Limit", "Type of Service/Traffic Class" and "Congestion Experienced" values in the inner network layer header into the corresponding fields in the outer IP header. For packets undergoing re-encapsulation, the AERO interface instead copies the "TTL/Hop Limit", "Type of Service/Traffic Class" and "Congestion Experienced" values in the original outer IP header into the corresponding fields in the new outer IP header (i.e., the values are transferred between outer headers and *not* copied from the inner network layer header).

When UDP encapsulation is used, the AERO interface inserts a UDP header between the inner packet and outer IP header. If the outer header is IPv6 and is followed by an IPv6 Fragment header, the AERO interface inserts the UDP header between the outer IPv6 header and IPv6 Fragment header. The AERO interface sets the UDP source port to a constant value that it will use in each successive packet it sends, sets the UDP checksum field to zero (see: [RFC6935][RFC6936]) and sets the UDP length field to the length of the inner packet plus 8 bytes for the UDP header itself. For packets sent via a Server, the AERO interface sets the UDP destination port to 8060 (i.e., the IANA-registerd port number for AERO). For packets sent to a neighboring Client, the AERO interface sets the UDP destination port to the port value stored in the neighbor cache entry for this neighbor.

The AERO interface next sets the outer IP protocol number to the appropriate value for the first protocol layer within the encapsulation (e.g., IPv6, IPv6 Fragment Header, UDP, etc.). When IPv6 is used as the outer IP protocol, the ITE then sets the flow label value in the outer IPv6 header the same as described in [RFC6438]. When IPv4 is used as the outer IP protocol, the AERO interface sets the DF bit as discussed in Section 3.2.

AERO interfaces decapsulate packets destined either to the node itself or to a destination reached via an interface other than the receiving AERO interface per the specifications in , [RFC2473], [RFC4213]. When the encapsulated packet includes a UDP header, the AERO interface examines the first octet of data following the UDP header to determine the inner header type. If the most significant four bits of the first octet encode the value '0110', the inner header is an IPv6 header. Otherwise, the interface considers the first octet as an IP protocol type that encodes the value '44' for IPv6 fragment header, the value '50' for Encapsulating Security Payload, the value '51' for Authentication Header etc. (If the first octet encodes the value '0', the interface instead discards the packet, since this is the value reserved for experimentation under , [RFC6706]). During the decapsulation, the AERO interface records the UDP source port in the neighbor cache entry for this neighbor then discards the UDP header.

3.8. AERO Reference Operational Scenario

Figure 3 depicts the AERO reference operational scenario. The figure shows an AERO Server('A'), two AERO Clients ('B', 'D') and three ordinary IPv6 hosts ('C', 'E', 'F'):