RFC 5558
Virtual Enterprise Traversal (VET)
Title Block ๐
Okay bestie, this one is RFC 5558, titled Virtual Enterprise Traversal (VET), written by F. Templin, Ed. from Boeing Research & Technology. It's an Independent Submission in the Informational category, dated February 2010, with ISSN 2070-1721. The title block doesn't list anything it obsoletes or updates, so there's no lineage to chase. ๐
Abstract โจ
Enterprise networks connect routers over all kinds of link types, and they may also hook up to provider networks and/or the global Internet. These networks need a way to automatically provision IP addresses and prefixes, and they need to internetwork in a wide variety of use cases ๐: Small Office, Home Office (SOHO) networks, Mobile Ad hoc Networks (MANETs), multi-organizational corporate networks, and even the interdomain core of the global Internet itself. This document specifies a Virtual Enterprise Traversal (VET) abstraction for autoconfiguration and operation of nodes in enterprise networks. Iconic. ๐
Status of This Memo ๐
This document is not an Internet Standards Track specification. It's published for informational purposes. ๐ฆ
This is a contribution to the RFC Series, independent of any other RFC stream. The RFC Editor chose to publish it at their discretion and makes no statement about its value for implementation or deployment. Documents the RFC Editor approves for publication are not a candidate for any level of Internet Standard, see Section 2 of RFC 5741. โจ
If you want the current status, any errata, or a way to send feedback, check http://www.rfc-editor.org/info/rfc5558. ๐ธ
IESG Note ๐
This RFC is not a candidate for any level of Internet Standard. The IETF disclaims any knowledge of how fit this RFC is for any purpose. The decision to publish wasn't based on IETF review of things like security, congestion control, or inappropriate interaction with deployed protocols. The RFC Editor chose to publish it at their discretion, so readers should be careful about how much they trust it for implementation and deployment. See RFC 3932 for more information. ๐
The IETF AUTOCONF Working Group is working on a similar protocol solution that may become available in the future. ๐ง
Copyright Notice ๐
Copyright (c) 2010 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, which you can find at http://trustee.ietf.org/license-info, in effect on the date of publication. Please review those documents carefully, because they describe your rights and restrictions with respect to this document. ๐ซถ
Table of Contents ๐
1. Introduction ....................................................4
2. Terminology .....................................................6
3. Enterprise Characteristics .....................................10
4. Autoconfiguration ..............................................11
4.1. Enterprise Router (ER) Autoconfiguration ..................12
4.2. Enterprise Border Router (EBR) Autoconfiguration ..........13
4.2.1. VET Interface Autoconfiguration ....................13
4.2.1.1. Interface Initialization ..................14
4.2.1.2. Enterprise Border Gateway
Discovery and Enterprise Identification ...14
4.2.1.3. EID Configuration .........................15
4.2.2. Provider-Aggregated (PA) EID Prefix
Autoconfiguration ..................................15
4.2.3. Provider-Independent (PI) EID Prefix
Autoconfiguration ..................................16
4.3. Enterprise Border Gateway (EBG) Autoconfiguration .........17
4.4. VET Host Autoconfiguration ................................17
5. Internetworking Operation ......................................18
5.1. Routing Protocol Participation ............................18
5.2. RLOC-Based Communications .................................18
5.3. EID-Based Communications ..................................18
5.4. IPv6 Router Discovery and Prefix Registration .............18
5.4.1. IPv6 Router and Prefix Discovery ...................18
5.4.2. IPv6 PA Prefix Registration ........................19
5.4.3. IPv6 PI Prefix Registration ........................20
5.4.4. IPv6 Next-Hop EBR Discovery ........................21
5.5. IPv4 Router Discovery and Prefix Registration .............23
5.6. VET Encapsulation .........................................24
5.7. SEAL Encapsulation ........................................24
5.8. Generating Errors .........................................25
5.9. Processing Errors .........................................25
5.10. Mobility and Multihoming Considerations ..................26
5.11. Multicast ................................................27
5.12. Service Discovery ........................................28
5.13. Enterprise Partitioning ..................................29
5.14. EBG Prefix State Recovery ................................29
6. Security Considerations ........................................30
7. Related Work ...................................................30
8. Acknowledgements ...............................................31
9. Contributors ...................................................31
10. References ....................................................31
10.1. Normative References .....................................31
10.2. Informative References ...................................33
Appendix A. Duplicate Address Detection (DAD) Considerations .... 36
1. Introduction ๐
Okay so, enterprise networks [RFC4852] connect routers over various link types (see [RFC4861], Section 2.2). The term "enterprise network" here stretches to cover a huge range of use cases and deployment scenarios. An "enterprise" can be as small as a SOHO network, as complex as a multi-organizational corporation, or as large as the global Internet itself. ๐ญ Mobile Ad hoc Networks (MANETs) [RFC2501] are a really challenging example of an enterprise network, because their topologies may change dynamically over time, and they may employ little/no active management by a centralized network administrative authority. Those specialized MANET characteristics need careful consideration, but the same principles apply equally to other enterprise network scenarios. ๐ฅ
This document specifies a Virtual Enterprise Traversal (VET) abstraction for autoconfiguration and internetworking operation. Addresses of different scopes may be assigned on various types of interfaces with diverse properties. Both IPv4 [RFC0791] and IPv6 [RFC2460] are discussed in this context. The use of standard DHCP [RFC2131] [RFC3315] and neighbor discovery [RFC0826] [RFC1256] [RFC4861] mechanisms is assumed unless otherwise specified. ๐
Here's the architectural model for an Enterprise Router (ER). Look at how the interfaces are laid out, it's giving architecture ๐ง:
Provider-Edge Interfaces
x x x
| | |
+--------------------+---+--------+----------+ E
| | | | | n
| I | | .... | | t
| n +---+---+--------+---+ | e
| t | +--------+ /| | r
| e I x----+ | Host | I /*+------+--< p I
| r n | |Function| n|**| | r n
| n t | +--------+ t|**| | i t
| a e x----+ V e|**+------+--< s e
| l r . | E r|**| . | e r
| f . | T f|**| . | f
| V a . | +--------+ a|**| . | I a
| i c . | | Router | c|**| . | n c
| r e x----+ |Function| e \*+------+--< t e
| t s | +--------+ \| | e s
| u +---+---+--------+---+ | r
| a | | .... | | i
| l | | | | o
+--------------------+---+--------+----------+ r
| | |
x x x
Enterprise-Edge Interfaces
Figure 1: Enterprise Router (ER) Architecture
Figure 1 above depicts the architectural model for an Enterprise Router (ER). As the figure shows, an ER may have a variety of interface types: enterprise-edge, enterprise-interior, provider-edge, internal-virtual, plus VET interfaces used for IP-in-IP encapsulation. This document defines the different types of interfaces and specifies the autoconfiguration mechanisms used for each type. The architecture applies equally to MANET routers, where enterprise-interior interfaces correspond to the wireless multihop radio interfaces typically associated with MANETs. Out of scope for this document is autoconfiguration of provider interfaces, which must be coordinated in a manner specific to the service provider's network. ๐ธ
Enterprise networks must have a means of supporting both Provider-Independent (PI) and Provider-Aggregated (PA) IP prefixes. This is especially true for enterprise scenarios involving mobility and multihoming. Also in scope are ingress filtering for multihomed sites, adaptation based on authenticated ICMP feedback from on-path routers, effective tunnel path MTU mitigations, and routing scaling suppression, which many enterprise network scenarios require. โญ
Recognizing that one size does not fit all, the VET specification provides adaptable mechanisms that address these issues, and more, across a wide variety of enterprise network use cases. Main character energy ๐.
VET is a functional superset of 6over4 [RFC2529] and the Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) [RFC5214]. It also supports additional encapsulations such as IPsec [RFC4301] and the Subnetwork Encapsulation and Adaptation Layer (SEAL) [RFC5320], among others. Together, these technologies serve as functional building blocks for a new internetworking architecture known as Routing and Addressing in Networks with Global Enterprise Recursion [RFC5720][RANGERS]. ๐ฆ
The VET principles can be traced, either directly or indirectly, to the deliberations of the ROAD group in January 1992, and to even earlier work including NIMROD [RFC1753] and the Catenet model for internetworking [CATENET] [IEN48] [RFC2775]. [RFC1955] captures the high-level architectural aspects of the ROAD group deliberations in a "New Scheme for Internet Routing and Addressing (ENCAPS) for IPNG". Ngl, that's a lot of history ๐ฅน.
VET is related to the present-day activities of the IETF AUTOCONF, DHC, IPv6, MANET, and v6OPS working groups, as well as the IRTF RRG working group. ๐
Part 1 of 8 done! More parts coming, bestie ๐
2. Terminology โจ
okay so this whole mechanism is built on the basics of IP-in-IP encapsulation ๐ Two words you'll see all over the place are "inner" and "outer." Inner means the innermost IP {address, protocol, header, packet, etc.} before encapsulation, and outer means the outermost IP {address, protocol, header, packet, etc.} after encapsulation. VET also lets you put "mid-layer" encapsulations between the inner and outer layers, like IPsec [RFC4301] or the Subnetwork Encapsulation and Adaptation Layer (SEAL) [RFC5320]. it's giving layers ๐ง
The terminology in the normative references applies here too, and these terms are defined within the scope of this document ๐
subnetwork the same as defined in [RFC3819]. ๐ธ
enterprise the same as defined in [RFC4852]. An enterprise is also understood to refer to a cooperative networked collective with a commonality of business, social, political, etc. interests. ๐ซถ
Minimally, the only commonality of interest in some enterprise network scenarios may be the cooperative provisioning of connectivity itself. like, the whole thing could just be about sharing the connection ๐ง
site a logical and/or physical grouping of interfaces that connect a topological area less than or equal to an enterprise in scope. A site within an enterprise can, in some sense, be considered as an enterprise unto itself. main character energy for sites ๐
Mobile Ad hoc Network (MANET) a connected topology of mobile or fixed routers that maintain a routing structure among themselves over dynamic links. A wide variety of MANETs share common properties with enterprise networks. The characteristics of MANETs are defined in [RFC2501], Section 3. ๐ฆ
enterprise/site/MANET throughout the rest of this document, the term "enterprise" is used to collectively refer to any of enterprise/site/MANET. Basically, the VET mechanisms and operational principles can be applied to enterprises, sites, and MANETs of any size or shape ๐
Enterprise Router (ER) As depicted in Figure 1, an Enterprise Router (ER) is a fixed or mobile router. It comprises a router function, a host function, one or more enterprise-interior interfaces, and zero or more internal virtual, enterprise-edge, provider-edge, and VET interfaces. At a minimum, an ER forwards outer IP packets over one or more sets of enterprise-interior interfaces, where each set connects to a distinct enterprise. ER is the one doing the forwarding work ๐
Enterprise Border Router (EBR) an ER that connects edge networks to the enterprise and/or connects multiple enterprises together. An EBR is a tunnel endpoint router, and it configures a separate VET interface over each set of enterprise-interior interfaces that connect the EBR to each distinct enterprise. In particular, an EBR may configure multiple VET interfaces, one for each distinct enterprise. All EBRs are also ERs. ๐ฅ
Enterprise Border Gateway (EBG) an EBR that connects VET interfaces configured over child enterprises to a provider network. It can do this either directly via a provider-edge interface, or indirectly via another VET interface configured over a parent enterprise. EBRs may act as EBGs on some VET interfaces and as ordinary EBRs on other VET interfaces. All EBGs are also EBRs. the gateway girlies are EBRs too ๐
enterprise-interior interface an ER's attachment to a link within an enterprise. Packets sent over enterprise-interior interfaces may be forwarded over multiple additional enterprise-interior interfaces within the enterprise before they are forwarded via an enterprise-edge interface, a provider-edge interface, or a VET interface configured over a different enterprise. Enterprise-interior interfaces connect laterally within the IP network hierarchy. sideways energy โจ
enterprise-edge interface an EBR's attachment to a link (e.g., an Ethernet, a wireless personal area network, etc.) on an arbitrarily complex edge network that the EBR connects to an enterprise and/or provider network. Enterprise-edge interfaces connect to lower levels within the IP network hierarchy. ๐งธ
provider-edge interface an EBR's attachment to the Internet or to a provider network outside of the enterprise, via which the Internet can be reached. Provider-edge interfaces connect to higher levels within the IP network hierarchy. up, up, up ๐
internal-virtual interface an interface that is internal to an EBR and does not in itself directly attach to a tangible physical link, e.g., an Ethernet cable. Examples include a loopback interface, a virtual LAN interface, or some form of tunnel interface. no cable needed, bestie ๐
Virtual Enterprise Traversal (VET) an abstraction that uses IP-in-IP encapsulation to create an overlay that spans an enterprise in a single (inner) IP hop. this is the whole vibe ๐ฆ
VET interface an EBR's tunnel virtual interface used for Virtual Enterprise Traversal. The EBR configures a VET interface over a set of underlying interfaces belonging to the same enterprise. When there are multiple distinct enterprises (each with their own distinct set of underlying interfaces), the EBR configures a separate VET interface over each set of underlying interfaces. In other words, the EBR configures multiple VET interfaces. ๐
The VET interface encapsulates each inner IP packet in any mid-layer headers plus an outer IP header. Then it forwards it on an underlying interface, such that the Time to Live (TTL) / Hop Limit in the inner header is not decremented as the packet traverses the enterprise. The VET interface therefore presents an automatic tunneling abstraction that represents the enterprise as a single IP hop. the TTL just chillin, not dropping ๐ญ
VET interfaces in non-multicast environments are Non-Broadcast, Multiple Access (NBMA). VET interfaces in multicast environments are multicast capable. ๐ท
VET host any node (host or router) that configures a VET interface for host operation only. Note that a single node may configure some of its VET interfaces as host interfaces and others as router interfaces. ๐
VET node any node that configures and uses a VET interface. ๐ซง
Provider-Independent (PI) prefix an IPv6 or IPv4 prefix (e.g., 2001:DB8::/48, 192.0.2/24, etc.) that is either self-generated by an ER or delegated to an enterprise by a registry. ๐
Provider Aggregated (PA) prefix an IPv6 or IPv4 prefix that is delegated to an enterprise by a provider network. ๐ฐ
Routing Locator (RLOC) a non-link-local IPv4 or IPv6 address taken from a PI/PA prefix, which can appear in enterprise-interior and/or interdomain routing tables. Global-scope RLOC prefixes are delegated to specific enterprises and are routable within both the enterprise-interior and interdomain routing regions. Enterprise-local-scope RLOC prefixes (e.g., IPv6 Unique Local Addresses [RFC4193], IPv4 privacy addresses [RFC1918], etc.) are self-generated by individual enterprises and routable only within the enterprise-interior routing region. ๐
ERs use RLOCs for operating the enterprise-interior routing protocol and for next-hop determination when forwarding packets addressed to other RLOCs. End systems use RLOCs as addresses for communications between endpoints within the same enterprise. VET interfaces treat RLOCs as outer IP addresses during IP-in-IP encapsulation. ๐ง
Endpoint Interface iDentifier (EID) an IPv4 or IPv6 address taken from a PI/PA prefix that is routable within an enterprise-edge or VET overlay network scope. It may also appear in enterprise-interior and/or interdomain mapping tables. EID prefixes are typically separate and distinct from any RLOC prefix space. ๐ชฉ
Edge network routers use EIDs for operating the enterprise-edge or VET overlay network routing protocol and for next-hop determination when forwarding packets addressed to other EIDs. End systems use EIDs as addresses for communications between endpoints, either within the same enterprise or within different enterprises. VET interfaces treat EIDs as inner IP addresses during IP-in-IP encapsulation. EIDs are the inner ones, RLOCs are the outer ones, iykyk ๐
The following additional acronyms are used throughout the document:
CGA - Cryptographically Generated Address
DHCP(v4, v6) - Dynamic Host Configuration Protocol
FIB - Forwarding Information Base
ISATAP - Intra-Site Automatic Tunnel Addressing Protocol
NBMA - Non-Broadcast, Multiple Access
ND - Neighbor Discovery
PIO - Prefix Information Option
PRL - Potential Router List
PRLNAME - Identifying name for the PRL (default is "isatap")
RIO - Route Information Option
RS/RA - IPv6 ND Router Solicitation/Advertisement
SEAL - Subnetwork Encapsulation and Adaptation Layer
SLAAC - IPv6 StateLess Address AutoConfiguation
3. Enterprise Characteristics โจ
okay so an enterprise is basically a bunch of links hooked together by Enterprise Routers (ERs), see Figure 1 ๐. ERs usually run a routing protocol over their enterprise-interior interfaces to figure out routes, and those routes can cross multiple Layer 2 or Layer 3 forwarding hops ๐ฆ. Then there are Enterprise Border Routers (EBRs), which are ERs that hook edge networks up to the enterprise and/or glue multiple enterprises together ๐ . And Enterprise Border Gateways (EBGs) are EBRs that connect enterprises to provider networks, either directly or indirectly ๐.
An enterprise can be super small, just a few ERs and their attached edge networks ๐ธ, or it can contain other enterprises and/or be a subnetwork of a bigger one ๐ง. It can also cover branch offices and/or nomadic hosts that connect back to a home office over one or several service providers, like through Virtual Private Network (VPN) tunnels ๐. The range is iconic, honestly.
Enterprises whose link types have sufficiently similar properties (e.g., Layer 2 (L2) address formats, maximum transmission units (MTUs), etc.) can set up a sub-IP layer routing service so IP sees the whole enterprise as one ordinary shared link, just like a (bridged) campus LAN ๐ซถ. In that case a single IP hop is sufficient to get across the enterprise, with no IP layer encapsulation needed โจ.
Enterprises that comprise link types with diverse properties and/or configure multiple IP subnets must also provide a routing service that works as an IP layer mechanism ๐ญ. Then multiple IP hops may be necessary, so you have to be careful about multi-link subnet issues [RFC4903] ๐.
Conceptually, an ER has both a host function and a router function ๐ฅ. The host function does Endpoint Interface iDentifier (EID)-based and/or Routing LOCator (RLOC)-based communications according to the weak end-system model [RFC1122]. The router function joins the enterprise-interior routing protocol, connects any of the ER's edge networks to the enterprise, and may also connect the enterprise to provider networks (see Figure 1) ๐.
In addition to other interface types, VET nodes set up VET interfaces that see every other VET node in an enterprise as a single-hop neighbor on one virtual link ๐ฆ. They configure a separate VET interface for each distinct enterprise they connect to, and they discover the other EBRs on each VET interface that can be used for forwarding packets to off-enterprise destinations โจ.
For each distinct enterprise, an enterprise trust basis must be established and consistently applied ๐ซถ. For example, in enterprises where EBRs establish symmetric security associations, mechanisms such as IPsec [RFC4301] can be used to assure authentication and confidentiality ๐. In other enterprise network scenarios, asymmetric securing mechanisms such as SEcure Neighbor Discovery (SEND) [RFC3971] may be necessary to authenticate exchanges based on trust anchors ๐.
Finally, in enterprises with a centralized management structure (e.g., a corporate campus network), the enterprise name service and a synchronized set of EBGs can provide infrastructure support for virtual enterprise traversal. In that case, the EBGs can provide a "default mapper" [APT] service used for short-term packet forwarding until EBR neighbor relationships can be established ๐. In enterprises with a distributed management structure (e.g., MANETs), peer-to-peer coordination between the EBRs themselves may be required ๐. Since use cases will land somewhere on a continuum between fully distributed and fully centralized, the following sections present the mechanisms of Virtual Enterprise Traversal as they apply to a wide variety of scenarios ๐.
4. Autoconfiguration
ERs, EBRs, EBGs, and VET hosts configure themselves for operation as specified in the following subsections ๐ง.
4.1. Enterprise Router (ER) Autoconfiguration
ERs configure enterprise-interior interfaces and engage in any routing protocols over those interfaces ๐ .
When an ER joins an enterprise, it first configures a unique IPv6 link-local address on each enterprise-interior interface, and configures an IPv4 link-local address on each enterprise-interior interface that requires an IPv4 link-local capability ๐ธ. IPv6 link-local address generation mechanisms that provide sufficient uniqueness include Cryptographically Generated Addresses (CGAs) [RFC3972], IPv6 Privacy Addresses [RFC4941], StateLess Address AutoConfiguration (SLAAC) using EUI-64 interface identifiers [RFC4291] [RFC4862], etc. The mechanisms specified in [RFC3927] provide an IPv4 link-local address generation capability ๐ฆ.
Next, the ER configures an RLOC on each of its enterprise-interior interfaces and engages in any routing protocols on those interfaces โจ. The ER can configure an RLOC via explicit management, DHCP autoconfiguration, pseudo-random self-generation from a suitably large address pool, or through an alternate autoconfiguration mechanism ๐.
Alternatively (or in addition), the ER can request RLOC prefix delegations via an automated prefix delegation exchange over an enterprise-interior interface, and can assign the prefix(es) on enterprise-edge interfaces ๐ง. In that case, the ER can use an RLOC assigned to an enterprise-edge interface for enterprise-interior routing protocol operation and next-hop determination purposes ๐. Note that in some cases, the same enterprise-edge interfaces may assign both RLOC and EID addresses if there is a means for source address selection ๐. In other cases (e.g., for separation of security domains), RLOCs and EIDs must be assigned on separate sets of enterprise-edge interfaces ๐ฅ.
Self-generation of RLOCs for IPv6 can be from a large IPv6 local-use address range, e.g., IPv6 Unique Local Addresses [RFC4193]. Self-generation of RLOCs for IPv4 can be from a large IPv4 private address range (e.g., [RFC1918]). When self-generation is used alone, the ER must continuously monitor the RLOCs for uniqueness, e.g., by monitoring the routing protocol ๐ซถ.
DHCP generation of RLOCs may require support from relays within the enterprise. For DHCPv6, relays that do not already know the RLOC of a server within the enterprise forward requests to the 'All_DHCP_Servers' site-scoped IPv6 multicast group [RFC3315]. For DHCPv4, relays that do not already know the RLOC of a server within the enterprise forward requests to the site-scoped IPv4 multicast group address 'All_DHCPv4_Servers', which should be set to 239.255.2.1 unless an alternate multicast group for the site is known. DHCPv4 servers that delegate RLOCs should therefore join the 'All_DHCPv4_Servers' multicast group and service any DHCPv4 messages received for that group ๐ฎ.
A combined approach using both DHCP and self-generation is also possible when the ER configures both a DHCP client and relay that are connected, e.g., via a pair of back-to-back connected Ethernet interfaces, a tun/tap interface, a loopback interface, inter-process communication, etc. The ER first self-generates a temporary RLOC used only for the purpose of procuring an actual RLOC taken from a disjoint addressing range ๐. The ER then engages in the routing protocol and performs a DHCP client/relay exchange using the temporary RLOC as the address of the relay. When the DHCP server delegates an actual RLOC address/prefix, the ER abandons the temporary RLOC and re-engages in the routing protocol using an RLOC taken from the delegation ๐ฆ.
In some enterprise use cases (e.g., MANETs), assignment of RLOCs on enterprise-interior interfaces as singleton addresses (i.e., as addresses with /32 prefix lengths for IPv4, and as addresses with /128 prefix lengths for IPv6) may be necessary to avoid multi-link subnet issues ๐.
4.2. Enterprise Border Router (EBR) Autoconfiguration
EBRs are ERs that configure VET interfaces over distinct sets of underlying interfaces belonging to the same enterprise. An EBR can connect to multiple enterprises, in which case it would configure multiple VET interfaces ๐ . In addition to the ER autoconfiguration procedures specified in Section 4.1, EBRs perform the following autoconfiguration operations ๐ธ.
4.2.1. VET Interface Autoconfiguration
VET interface autoconfiguration entails:
- interface initialization,
- EBG discovery and enterprise identification, and
- EID configuration.
These functions are specified in the following sections โจ.
4.2.1.1. Interface Initialization
EBRs configure a VET interface over a set of underlying interfaces belonging to the same enterprise, where the VET interface presents a virtual-link abstraction in which all EBRs in the enterprise appear as single-hop neighbors through the use of IP-in-IP encapsulation ๐. After the EBR configures a VET interface, it initializes the interface and assigns an IPv6 link-local address and an IPv4 link-local address if necessary ๐ง.
When IPv6 and IPv4 are used as the inner/outer protocols (respectively), the EBR autoconfigures an ISATAP link-local address ([RFC5214], Section 6.2) on the VET interface to support packet forwarding and operation of the IPv6 neighbor discovery protocol ๐. The ISATAP link-local address embeds an IPv4 RLOC, and need not be checked for uniqueness since the IPv4 RLOC itself is managed for uniqueness (see Section 4.1) ๐ฅ.
Link-local address configuration for other inner/outer IP protocol combinations is through administrative configuration or through an unspecified alternate method. Link-local address configuration for other inner/outer IP protocol combinations may not be necessary if an EID can be configured through other means (see Section 4.2.1.3) ๐.
After the EBR initializes a VET interface, it can communicate with other VET nodes as single-hop neighbors on the VET interface from the viewpoint of the inner IP protocol ๐ซถ.
4.2.1.2. Enterprise Border Gateway Discovery and Enterprise Identification โจ
Okay so the EBR's next move is finding its EBGs ๐งญ, and it does this for each of its VET interfaces. The list can come from info in the routing protocol, from the Potential Router List (PRL) discovery mechanisms in Section 8.3.2 of [RFC5214], from DHCP options, etc. In multicast-capable enterprises, EBRs can also listen for advertisements on the rasadv [RASADV] multicast group address ๐ก.
Here's the iconic part ๐
. Whether or not routing info is available, the EBR can find its EBG list by resolving an identifying name for the PRL, called PRLNAME. It's formed as hostname.domainname, where hostname is an enterprise-specific name string and domainname is an enterprise-specific DNS suffix. The EBR figures out PRLNAME through manual configuration, a DHCP option, rasadv protocol advertisements, link-layer info (like an IEEE 802.11 Service Set Identifier (SSID) ๐), or some other enterprise-specific means. If it has no other info, the EBR sets the hostname part of PRLNAME to "isatap", and it only sets the domainname part if an enterprise-specific DNS suffix "example.com" is known (so it ends up as "isatap.example.com") ๐.
Fun fact ๐: the global Internet interdomain routing core is a specific example of an enterprise network scenario, just on an enormous scale. The PRLNAME assigned to it is "isatap.net" ๐.
Once it has PRLNAME, the EBR can get the EBG list by resolving PRLNAME to a list of RLOC addresses through a name service lookup. For centrally managed enterprises, the EBR resolves PRLNAME using an enterprise-local name service (e.g., the enterprise-local DNS). For enterprises with a distributed management structure, the EBR resolves PRLNAME using Link-Local Multicast Name Resolution (LLMNR) [RFC4795] over the VET interface. In that case, all EBGs in the PRL respond to the LLMNR query, and the EBR accepts the union of all responses ๐ซถ.
Each distinct enterprise has to have a unique identity so EBRs can tell their enterprise affiliations apart ๐. PRLNAME, plus the RLOCs of EBGs and the IP prefixes they aggregate, all serve as an identifier for the enterprise. Main character identity energy ๐ฆ.
4.2.1.3. EID Configuration โจ
After EBG discovery, the EBR configures EIDs on its VET interfaces ๐ง. When IPv6 and IPv4 are used as the inner/outer protocols (respectively), the EBR autoconfigures EIDs as specified in Section 5.4.1. Bestie, this part is a vibe: the EBR acts as a host on its VET interfaces for router and prefix discovery purposes, but it acts as a router on those same interfaces for routing protocol operation and packet forwarding purposes. Two hats, zero drama ๐ฉ.
EID configuration for other inner/outer IP protocol combinations happens through administrative configuration or through an unspecified alternate method. In some cases, that EID configuration can be done independently of EBG discovery ๐คทโโ๏ธ.
4.2.2. Provider-Aggregated (PA) EID Prefix Autoconfiguration โจ
EBRs can acquire Provider-Aggregated (PA) EID prefixes through autoconfiguration exchanges with EBGs over VET interfaces. Each EBG MAY be configured as either a DHCP relay or a DHCP server ๐.
For IPv4 EIDs, the EBR acquires prefixes via an automated IPv4 prefix delegation exchange, explicit management, etc. ๐ธ
For IPv6 EIDs, the EBR acquires prefixes via DHCPv6 Prefix Delegation exchanges. Specifically, the EBR (acting as a requesting router) can use DHCPv6 prefix delegation [RFC3633] over the VET interface to get IPv6 EID prefixes from the server (acting as a delegating router) ๐.
The EBR obtains prefixes using either a 2-message or a 4-message DHCPv6 exchange [RFC3315]. For example, for the 2-message exchange, the EBR's DHCPv6 client forwards a Solicit message with an IA_PD option to its DHCPv6 relay. In other words, the EBR acts as a combined client/relay (see Section 4.1) ๐ง. The relay then forwards the message over the VET interface to an EBG, which either services the request or relays it further. The forwarded Solicit message will elicit a reply from the server containing PA IPv6 prefix delegations ๐.
The EBR can propose a specific prefix to the DHCPv6 server per Section 7 of [RFC3633], for example if a prefix delegation hint is available ๐ . The server checks the proposed prefix for consistency and uniqueness, then returns it in the reply to the EBR if it was able to perform the delegation โ .
After the EBR receives PA prefix delegations, it can provision those prefixes on enterprise-edge interfaces, as well as on other VET interfaces for which it is configured as an EBG ๐. It can also provision the prefixes on enterprise-interior interfaces, as long as other nodes on those interfaces unambiguously associate the prefixes with the EBR ๐.
4.2.3. Provider-Independent (PI) EID Prefix Autoconfiguration โจ
Independent of any PA prefixes, EBRs can acquire and use Provider-Independent (PI) EID prefixes. These can be self-configured (e.g., using [RFC4193], etc.) and/or delegated by a registration authority (e.g., using [CENTRL-ULA], etc.) ๐. When an EBR acquires a PI prefix, it MUST also obtain credentials that it can use to prove prefix ownership when it registers the prefixes with EBGs within an enterprise (see Sections 5.4 and 5.5). No skipping that step, bestie ๐.
After the EBR receives PI prefix delegations, it can provision those prefixes on enterprise-edge interfaces, as well as on other VET interfaces for which it is configured as an EBG. It can also provision them on enterprise-interior interfaces, as long as other nodes on those interfaces can unambiguously associate the prefixes with the EBR ๐ฆข.
The minimum-sized IPv6 PI prefix that an EBR MAY acquire is a /56 ๐.
The minimum-sized IPv4 PI prefix that an EBR MAY acquire is a /24 ๐ซง.
4.3. Enterprise Border Gateway (EBG) Autoconfiguration โจ
EBGs are EBRs that connect child enterprises to provider networks, via provider-edge interfaces and/or via VET interfaces configured over parent enterprises ๐. EBGs autoconfigure their provider-edge interfaces in a way that's specific to the provider connections. They autoconfigure their VET interfaces that were configured over parent enterprises using the EBR autoconfiguration procedures in Section 4.2 ๐ ๏ธ.
For each of its VET interfaces configured over a child enterprise, the EBG initializes the interface and configures an EID the same way as an ordinary EBR does (see Section 4.2.1). It MUST then arrange to add one or more of its RLOCs associated with the child enterprise to the PRL, and it MUST maintain these resource records in accordance with [RFC5214], Section 9. Specifically, for each VET interface configured over a child enterprise, the EBG adds the RLOCs to name-service resource records for PRLNAME ๐.
EBGs respond to LLMNR queries for PRLNAME on VET interfaces configured over child enterprises with a distributed management structure ๐ฃ.
EBGs configure a DHCP relay/server on VET interfaces configured over child enterprises that require DHCP services ๐.
To avoid looping, EBGs MUST NOT configure a default route on a VET interface configured over a child interface. โ ๏ธ
Heads up ๐จ: No default route on those child-facing VET interfaces. That's how you avoid a loop, so don't skip it!
4.4. VET Host Autoconfiguration โจ
Nodes that can't attach via an EBR's enterprise-edge interface (e.g., nomadic laptops that connect to a home office via a Virtual Private Network (VPN) ๐ป) can instead be configured to operate as a simple host connected to the VET interface. Those VET hosts perform the same VET interface autoconfiguration procedures as specified for EBRs in Section 4.2.1, but they configure their VET interfaces as host interfaces (and not router interfaces) ๐โโ๏ธ. VET hosts can then send packets to the EID addresses of other hosts on the VET interface, or to off-enterprise EID destinations via a next-hop EBR ๐ฆ.
Note that a node may be configured as a host on some VET interfaces and as an EBR/EBG on other VET interfaces. Multitasking queen ๐ธ.
5. Internetworking Operation ๐
Following the autoconfiguration procedures in Section 4, ERs, EBRs, EBGs, and VET hosts engage in normal internetworking operations, as discussed in the following sections ๐.
5.1. Routing Protocol Participation โจ
Following autoconfiguration, ERs engage in any RLOC-based IP routing protocols and forward IP packets with RLOC addresses ๐. EBRs can additionally engage in any EID-based IP routing protocols and forward IP packets with EID addresses. Note that the EID-based IP routing domains are separate and distinct from any RLOC-based IP routing domains. Two separate group chats, no mixing ๐ โโ๏ธ.
5.2. RLOC-Based Communications โจ
When policy permits and routing supports it, end systems can skip VET interface encapsulation by communicating directly via the outer IP protocol, using RLOC addresses instead of EID addresses ๐โโ๏ธ. End systems can use source address selection rules to decide whether to use EID or RLOC addresses, based on, e.g., name-service records ๐ง .
5.3. EID-Based Communications โจ
In lots of enterprise scenarios, EID-based communications (i.e., instead of RLOC-based communications) may be necessary and/or beneficial ๐ท. They support address scaling, NAT avoidance, security domain separation, site multihoming, traffic engineering, etc. ๐ซง
The rest of this section talks about internetworking operation for EID-based communications using the VET interface abstraction ๐ฆ.
5.4. IPv6 Router Discovery and Prefix Registration โจ
The following sections cover router and prefix discovery considerations for the case of IPv6 as the inner IP protocol ๐ .
5.4.1. IPv6 Router and Prefix Discovery โจ
EBGs follow the router and prefix discovery procedures in [RFC5214], Section 8.2. They send solicited RAs over VET interfaces for which they're configured as gateways, with default router lifetimes, with PIOs that contain PA prefixes for SLAAC, and with any other required options/parameters ๐ฃ. The RAs can also include PIOs with the L bit set to 0, and with a prefix such as 2001: DB8::/48 as a hint of an aggregated prefix that the EBG is willing to delegate longer PA prefixes from ๐ธ. When PIOs that contain PA prefixes for SLAAC are included, the 'M' flag in the RA SHOULD also be set to 0 ๐.
VET nodes follow the router and prefix discovery procedures in [RFC5214], Section 8.3. They discover EBGs within the enterprise as specified in Section 4.2.1.2, then do RS/RA exchanges with the EBGs to establish and maintain default routes ๐. Specifically, the VET node sends unicast RS messages to EBGs over its VET interface(s) to receive RAs. Depending on the enterprise network trust basis, VET nodes MAY be required to use SEND to secure the RS/RA exchanges ๐.
When the VET node receives an RA, it authenticates the message, then configures a default route based on the Router Lifetime ๐งพ. If the RA contains Prefix Information Options (PIOs) with the 'A' and 'L' bits set to 1, the VET node also autoconfigures IPv6 addresses from the advertised prefixes using SLAAC and assigns them to the VET interface โจ. After that, the VET node accepts packets forwarded by EBGs for which it has current default routing information. In other words, ingress filtering is based on the default router trust relationship, not on a prefix-specific ingress filter entry ๐ก๏ธ.
In enterprises that prefer DHCPv6, DHCPv6 exchanges between EBRs and EBGs may be sufficient to convey default router and prefix information. In that case, RS/RA exchanges may not be necessary ๐.
5.4.2. IPv6 PA Prefix Registration ๐
okay so once an EBR finds its default routes, it can use DHCP prefix delegation to grab PA prefixes through an EBG (see Section 4.2.2) ๐ฆ the DHCP server makes sure every delegation is unique, and the EBG's router function forwards IP packets over the VET interface to the correct EBR. the EBG must register and track which PA prefixes are delegated to each EBR. it's giving organization ๐
the PA prefix registrations stay active in the EBGs for as long as the EBR keeps sending DHCP renewals over the VET interface before the lease lifetimes expire. ngl the lease lifetime is the real MVP here ๐ it keeps the delegation state alive even if the EBR and DHCP server lose contact for a while (say, during an enterprise network partition) until things reconnect (say, during an enterprise network merge) ๐ซถ
5.4.3. IPv6 PI Prefix Registration ๐
after an EBR discovers default routes, it must register its PI prefixes by sending RAs to a set of one or more EBGs. those RAs carry Route Information Options (RIOs) [RFC4191] that contain the EBR's PI prefixes โจ each RA must include the RLOC of an EBG as the outer IP destination address, and a link-local address assigned to the VET interface as the inner IP destination address. enterprises that use SEND also put a CGA link-local inner source address, SEND credentials, and any certificates needed to prove ownership of the PI prefixes in the RAs ๐ the EBR also keeps track of the set of EBGs it sent RAs to, so it can send later RAs to the same set ๐ง
when the EBG gets the RA, it authenticates the message first. if authentication fails, the EBG throws the RA away ๐ otherwise, the EBG installs the PI prefixes (with their lifetimes) in its Forwarding Information Base (FIB) and configures them for both ingress filtering [RFC3704] and forwarding. specifically, the EBG sets the FIB entries up as ingress filter rules that accept packets received on the VET interface with a source address from the PI prefixes. it also sets the FIB entries to forward packets received on other interfaces with a destination address from the PI prefixes over to the EBR that registered them on the VET interface ๐
next up, the EBG publishes the PI prefixes in a distributed database. that could be a private instance of a routing protocol where only EBGs participate, or an automated name-service update mechanism [RFC3007], or something else ๐ธ enterprises that are managed under a centralized administrative authority also get the PI prefixes published in the enterprise-local name service (for example, the enterprise-local DNS [RFC1035]) ๐
here's the detail: the EBG publishes each /56 prefix from the PI prefixes as its own Fully Qualified Domain Name (FQDN). that name is 14 nibbles in reverse order (the same as in [RFC3596], Section 2.5), then the string ip6, then the string PRLNAME ๐ค for example, when PRLNAME is "isatap.example.com", the EBG publishes the prefix 2001:DB8::/56 as:
0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.isatap.example.com
the EBG includes the outer RLOC source address of the RA in each prefix publication (for example, in a DNS A resource record) ๐ฆ for enterprises that use SEND, it also includes the inner IPv6 CGA source address (for example, in a DNS AAAA record). if the prefix is already in the distributed database, the EBG doesn't start over. it adds the outer RLOC source address (for example, as an extra DNS A record) to the existing publication, which is how PI prefixes that are multihomed get supported โจ for enterprises that use SEND, this last bit requires every EBR at a multihomed site that advertises the same PI prefixes in RAs to use the same CGA and the same SEND credentials. trรจs important, bestie ๐ซถ
after the EBG authenticates the RA and publishes the PI prefixes, it acts as a Neighbor Discovery proxy (NDProxy) [RFC4389] on the VET interfaces configured over any of its parent enterprises. then it relays a proxied RA to the EBGs on those interfaces. (enterprises that use SEND get an extra layer here: the EBG also acts as a SEcure Neighbor Discovery Proxy (SENDProxy) [SEND-PROXY].) the EBGs in parent enterprises that receive those proxied RAs turn around and act as NDProxys/SENDProxys too, relaying the RAs to the EBGs on their own parent enterprises, and so on. the RA proxying and PI prefix publication keep recursing like this until they reach an EBR attached to an interdomain routing core ๐ it's giving domino effect ๐ญ
after the initial PI prefix registration, the EBR that owns the prefix(es) has to keep sending extra RAs to its set of EBGs on a regular basis, so the prefix lifetimes get refreshed ๐ each of those EBGs tracks the set of EBGs in parent enterprises it relays the proxied RAs to, and it should relay subsequent RAs to that same set.
this whole procedure has a direct analogy in the Teredo method of keeping state alive in network middleboxes with periodic "bubbles" [RFC4380]. it's literally the same energy ๐ซง
5.4.4. IPv6 Next-Hop EBR Discovery ๐งโโ๏ธ
VET nodes find destination-specific next-hop EBRs inside the enterprise in a few different ways. they can query the name service for the /56 IPv6 PI prefix taken from a packet's destination address, they can forward packets over a default route to an EBG, or they can use some other inner-IP-to-outer-IP address mapping mechanism ๐บ๏ธ for example, for the IPv6 destination address 2001:DB8:1:2::1 and PRLNAME "isatap.example.com", the VET node can look up the domain name:
0.0.1.0.0.0.8.b.d.0.1.0.0.2.ip6.isatap.example.com
if the name-service lookup succeeds, it returns RLOC addresses (for example, in DNS A records) that match the next-hop EBRs the VET node can forward packets to. (in enterprises that use SEND, it also returns an IPv6 CGA address, for example in a DNS AAAA record.) enterprises with a centralized management structure do their lookups through an infrastructure-based service, like an enterprise-local DNS. enterprises with a distributed management structure, or that don't have an infrastructure-based name service, use LLMNR over the VET interface instead ๐ซถ when LLMNR is in use, the EBR doing the lookup sends an LLMNR query (with the /56 prefix from the IP destination address, written in dotted-nibble format like above), and it accepts the union of all the replies it gets from other EBRs on the VET interface. when an EBR receives an LLMNR query, it answers IFF it aggregates an IP prefix that covers the prefix in the query ๐ฏ
there's also another route, for enterprises with a stable and highly-available set of EBGs. the VET node can just forward an initial packet over a default route to an EBG. the EBG forwards the packet to a next-hop EBR on the VET interface and sends back an ICMPv6 Redirect [RFC4861] (using SEND, if necessary) ๐ฆ if the packet's source address is on-link on the VET interface, the EBG returns an ordinary "router-to-host" redirect with the packet's source address as its destination. if the source address is not on-link, the EBG returns a "router-to-router" redirect instead, with the link-local ISATAP address of the previous-hop EBR as its destination.
when IPv4 is the outer IP protocol, the EBG also puts one or more IPv6 Link-Layer Address Options (LLAOs) in the redirect. these hold the IPv4 RLOCs of potential next-hop EBRs, sorted from lowest to highest priority. so the first LLAO has the lowest priority RLOC and the final LLAO has the highest priority ๐ถ these LLAOs use a modified version of the form in Section 5 of [RFC2529], as shown in Figure 2. (the LLAO format for IPv6 as the outer IP protocol is out of scope, fyi.)
+-------+-------+-------+-------+-------+-------+-------+-------+
| Type |Length | TTL | IPv4 Address |
+-------+-------+-------+-------+-------+-------+-------+-------+
Figure 2: VET Link-Layer Address Option Format
for each IPv6/IPv4 LLAO: the Type is set to 2 (for Target Link-Layer Address Option), the Length is set to 1, and the IPv4 Address is set to the IPv4 RLOC of the next-hop EBR. the TTL is the number of seconds the recipient may cache the RLOC. the value 65535 means infinity, and the value 0 suspends forwarding through this RLOC โณ
when a VET host gets an ordinary "router-to-host" redirect, it processes it exactly as specified in [RFC4861], Section 8. when an EBR gets a "router-to-router" redirect, it finds the RLOC addresses of potential next-hop EBRs by checking the LLAOs in the redirect. the EBR then installs a FIB entry containing the /56 prefix of the destination address encoded in the redirect, along with the list of RLOCs of potential next-hop EBRs. the EBR enables that FIB entry for forwarding to the next-hop EBRs, but it DOES NOT enable it for ingress filtering acceptance of packets from next-hop EBRs. (in other words, the forwarding determination is unidirectional ๐)
in enterprises where spoofing is possible, the EBR must send authenticating credentials before it forwards packets via the next-hops. this applies after it discovers potential next-hop EBRs, whether that's through a name-service lookup or an ICMP redirect ๐จ
so to do that, the EBR must send RAs over the VET interface (using SEND, if necessary) to one or more of the potential next-hop EBRs, with an RLOC as the outer IP destination address. the RAs must include a Route Information Option (RIO) [RFC4191] containing the /56 PI prefix of the original packet's source address. after sending the RAs, the EBR can either enable the new FIB entry for forwarding right away, or wait until it gets an explicit acknowledgement that a next-hop EBR received the RA (for example, using the SEAL explicit acknowledgement mechanism, see Section 5.7) ๐ค
when a next-hop EBR receives the RA, it authenticates the message. then, if it needs further authenticating evidence, it does a name-service lookup on the prefix in the RIO. if the name service returns resource records that are consistent with the inner and outer IP addresses of the RA, the next-hop EBR installs the prefix from the RIO in its FIB and enables the FIB entry for ingress filtering, but it DOES NOT enable it for forwarding purposes ๐ก๏ธ after an EBR sends its initial RAs following a redirect, it should keep sending periodic RAs to refresh the next-hop EBR's ingress filter prefix lifetimes, as long as traffic is flowing ๐
EBRs keep the FIB entries created from an ICMP redirect until all the RLOC TTLs expire, or until no hints of forward progress through any of the associated RLOCs come in. this means RLOC liveness detection exactly parallels IPv6 Neighbor Unreachability Detection ([RFC4861], Section 3). so clean and consistent, I'm obsessed ๐
5.5. IPv4 Router Discovery and Prefix Registration ๐ธ
when IPv4 is the inner IP protocol, router discovery and prefix registration exactly parallel the mechanisms specified for IPv6 in Section 5.4 ๐ง to support that, modifications to the ICMPv4 Router Advertisement [RFC1256] function to include SEND constructs, and modifications to the ICMPv4 Redirect [RFC0792] function to support router-to-router redirects, will be specified in a future document. also, publications for IPv4 prefixes will be in dotted-nibble format in the 'ip4.isatap.example.com' domain. for example, the IPv4 prefix 192.0.2/24 would be represented as:
2.0.0.0.0.c.ip4.isatap.example.com
5.6. VET Encapsulation โจ
okay so VET nodes forward packets by checking the FIB to figure out which specific EBR/EBG is the next-hop router on a VET interface ๐บ๏ธ when there are multiple next-hop routers available, they can use default router preferences, routing protocol information, traffic engineering configurations, etc. to pick the best exit router ๐ and when the only FIB info is "default" ๐ฅบ they can find the next-hop EBR/EBG using the mechanisms in Section 5.4 and Section 5.5. bestie, that's the whole vibe ๐
VET interfaces wrap inner IP packets in any mid-layer headers, then add an outer IP header based on the specific encapsulation type (e.g., [RFC4301], [RFC5214], [RFC5320], etc.) ๐ after that, they hand the encapsulated packet to the outer IP forwarding engine so it can go out on an underlying interface ๐ฆ
for forwarding to next-hop addresses over VET interfaces that use IPv6-in-IPv4 encapsulation, VET nodes work out the outer destination address (aka the IPv4 RLOC of the next-hop EBR) by statically pulling out the IPv4 address baked into the next-hop ISATAP address ๐ง for other IP-in-IP encapsulations, that outer destination comes from administrative configuration or from an unspecified alternate method ๐คทโโ๏ธ and if there are multiple candidate destination RLOCs, the VET node should only pick an RLOC that has current forwarding information in the outer IP protocol FIB. no ghosts allowed ๐ป
5.7. SEAL Encapsulation ๐ธ
VET nodes should use SEAL encapsulation [RFC5320] over VET interfaces, and this is lowkey a multi-purpose move ๐ซถ it helps accommodate path MTU diversity, defeats source address spoofing, and lets them monitor next-hop EBR reachability. SEAL encapsulation keeps a unidirectional, monotonically incrementing per-packet identification value called the SEAL_ID ๐ข when a VET node using SEAL encapsulation sends a SEND-protected Router Advertisement (RA) or Router Solicitation (RS) message to another VET node, both nodes cache the new SEAL_ID as per-tunnel state. that state is what keeps the window of unacknowledged SEAL_IDs going ๐ช
in terms of security, when a VET node gets an ICMP message, it can confirm that the packet-in-error inside that message matches one of its recently sent packets by checking the SEAL_ID along with the source and destination addresses, etc. ๐ต๏ธโโ๏ธ also, a next-hop EBR can track the SEAL_ID in packets it receives from EBRs that have an ingress filter entry, and it can discard any packets whose SEAL_ID values fall outside the current window. iconic behavior, honestly ๐ญ
in terms of next-hop reachability, an EBR can set the SEAL "Acknowledgement Requested" bit in its messages to get confirmation that a next-hop EBR is reachable ๐ฌ setting that bit is also how the window of outstanding SEAL_IDs gets maintained. multitasking queen ๐
5.8. Generating Errors ๐จ
when an EBR gets an IPv6 packet over a VET interface and there's no matching ingress filter entry, it drops the packet and sends back an ICMPv6 [RFC4443] Destination Unreachable; Source address failed ingress/egress policy message to the previous-hop EBR, but only subject to rate limiting ๐ฆ no spam, babe ๐
โโ๏ธ
when an EBR gets an IPv6 packet over a VET interface and there's no longest-prefix-match FIB entry for the destination, it returns an ICMPv6 Destination Unreachable; No route to destination message to the previous hop EBR, also subject to rate limiting ๐ซ
when an EBR gets an IPv6 packet over a VET interface and the longest-prefix-match FIB entry for the destination points to a next-hop configured over that same VET interface the packet came in on, the EBR forwards the packet. then, if the FIB prefix is longer than ::/0, it sends a router-to-router ICMPv6 Redirect message (using SEND, if necessary) to the previous-hop EBR, as described in Section 5.4.4 ๐ very mutual, very efficient โจ
generation of other ICMP messages [RFC0792] [RFC4443] works the same way as it does for any IP interface ๐
5.9. Processing Errors ๐ ๏ธ
when an EBR gets an ICMPv6 Destination Unreachable; Source address failed ingress/egress policy message from a next-hop EBR, and there's a longest-prefix-match FIB entry for the original packet's destination that's more specific than ::/0, the EBR throws the message away and marks that FIB entry as "forwarding suspended" for the RLOC taken from the ICMPv6 message's source address ๐ the EBR should then let later packets flow through different RLOCs tied to that FIB entry, until it forwards a new RA to the suspended RLOC. and if it gets excessive ICMPv6 ingress/egress policy errors through multiple RLOCs for the same FIB entry, it should delete that FIB entry and let subsequent packets go through an EBG, if the specific enterprise scenario supports one ๐
when a VET node gets an ICMPv6 Destination Unreachable; No route to destination message from a next-hop EBR, it forwards that ICMPv6 message to the original packet's source as normal ๐จ if the EBR has a longest-prefix-match FIB entry for the original packet's destination that's more specific than ::/0, the EBR also deletes that FIB entry. big cleanup energy ๐งน
when an EBR gets an authentic ICMPv6 Redirect, it processes the packet as specified in Section 5.4.4 ๐งพ
when an EBG gets new mapping information for a specific destination prefix, it can share the update with other EBRs/EBGs by sending an ICMPv6 redirect message to the All Routers link-local multicast address. that message carries an LLAO, with the TTL for the unreachable LLAO set to zero, and it has a NULL packet in error ๐ฃ it's giving group announcement ๐
also, a VET node might get ICMP Destination Unreachable; net / host unreachable messages from an ER, which can mean the path to a VET neighbor is failing ๐ฅ before anything else, the VET node should check things like the SEAL_ID, IPsec sequence number, and the source address of the original packet (if it's available) to get reasonable assurance that the ICMP message is authentic ๐. once it's satisfied, it should mark the longest-prefix-match FIB entry for the destination as "forwarding suspended" for the RLOC destination address of the ICMP packet-in-error. and if the VET node gets excessive ICMP unreachable errors through multiple RLOCs tied to the same FIB entry, it should delete that FIB entry and let subsequent packets flow through a different route ๐ค๏ธ
5.10. Mobility and Multihoming Considerations ๐งณ
EBRs that travel between different enterprise networks have two options ๐ they either have to give up their PA prefixes that belong to the "old" enterprise and get new ones from the "new" enterprise, or they have to somehow coordinate with a "home" enterprise to keep ownership of their prefixes. in the first case, the EBR would be required to coordinate a network renumbering event using the new PA prefixes [RFC4192] ๐ in the second case, an ancillary mobility management mechanism must be used ๐ซก
EBRs can keep their PI prefixes as they travel between distinct enterprise networks, as long as they register those prefixes with new EBGs and (preferably) withdraw them from old EBGs before they leave ๐งณโจ prefix registration with new EBGs is coordinated exactly as specified in Section 5.4.3, and prefix withdrawal from old EBGs is simply done by re-announcing the PI prefixes with zero lifetimes ๐ช
since EBRs can move around independently of one another, stale FIB entry state may be left in VET nodes when a neighboring EBR departs ๐ on top of that, EBRs can lose state for various reasons, like power failure or machine reboot ๐ so EBRs are advised to set relatively short PI prefix lifetimes in RIO options, and to send additional RAs to refresh lifetimes before they expire. (EBRs should place conservative limits on the RAs they send to reduce congestion, though ๐)
EBRs may register their PI prefixes with multiple EBGs for multihoming purposes ๐ but EBRs should only forward packets via EBGs they've registered their PI prefixes with, since other EBGs may drop those packets and return ICMPv6 Destination Unreachable; Source address failed ingress/egress policy messages ๐ซ nobody wants that drama ๐ญ
EBRs can also act as delegating routers and sub-delegate portions of their PI prefixes to requesting routers on their enterprise-edge interfaces, and on VET interfaces where they're configured as EBGs ๐ฑ in this sense, the sub-delegations of an EBR's PI prefixes become the PA prefixes for downstream-dependent nodes. downstream-dependent nodes that travel with a mobile provider EBR can keep using addresses configured from PA prefixes, but downstream-dependent nodes that move away from their provider EBR must do address/prefix renumbering when they associate with a new provider ๐๐
the EBGs of a multihomed enterprise should participate in a private inner IP routing protocol instance between themselves (possibly over an alternate topology) ๐ง that helps them handle enterprise partitions/merges, as well as intra-enterprise mobility events. these peer EBGs should accept packets from one another without respect to the destination, meaning ingress filtering is based on the peering relationship rather than on a prefix-specific ingress filter entry ๐ค๐
5.11. Multicast ๐ฆ
okay so multicast is where it gets fun. in multicast-capable deployments, ERs give you an enterprise-wide multicasting service (think Simplified Multicast Forwarding (SMF) [MANET-SMF], Protocol Independent Multicast (PIM) routing, Distance Vector Multicast Routing Protocol (DVMRP) routing, etc.) over their enterprise-interior interfaces, so outer IP multicast messages of site-scope or greater scope get propagated across the whole enterprise ๐. for these deployments, VET nodes can also give you an inner IP multicast/broadcast capability over their VET interfaces by mapping the inner IP multicast address space onto the outer IP multicast address space. so then link-scoped (or greater scoped) inner IP multicasting services, like a link-scoped neighbor discovery protocol, are available over the VET interface. but ngl, link-scoped services should be used sparingly so you don't cause enterprise-wide flooding ๐
VET nodes encapsulate inner IP multicast messages sent over the VET interface in any mid-layer headers (IPsec, SEAL, etc.) plus an outer IP header with a site-scoped outer IP multicast address as the destination. for the case of IPv6 and IPv4 as the inner/outer protocols (respectively), [RFC2529] gives you mappings from the IPv6 multicast address space to a site-scoped IPv4 multicast address space โจ. for other IP-in-IP encapsulations, the mappings get set up through administrative configuration or through an unspecified alternate static mapping.
inner-to-outer multicast mapping for inner IP multicast groups over outer IP multicast groups can be handled, e.g., through VET interface snooping of inner multicast group membership and routing protocol control messages ๐. to make that work, the VET interface acts as a virtual outer IP multicast host connected to its underlying interfaces. when the VET interface detects that an inner IP multicast group joins or leaves, it forwards the matching outer IP multicast group membership reports on an underlying interface that the VET interface is configured over. if the VET node is configured as an outer IP multicast router on the underlying interfaces, the VET interface forwards locally looped-back group membership reports to the outer IP multicast routing process. if the VET node is configured as a simple outer IP multicast host instead, the VET interface forwards actual group membership reports (e.g., IGMP messages) directly over an underlying interface ๐
okay now the important bit ๐จ: since inner IP multicast groups are mapped to site-scoped outer IP multicast groups, the VET node must ensure that the site-scope outer IP multicast messages received on the underlying interfaces for one VET interface do not "leak out" to the underlying interfaces of another VET interface. this is handled by normal site-scoped outer IP multicast group filtering at enterprise boundaries. no leaking, periodt ๐
5.12. Service Discovery ๐
VET nodes can do enterprise-wide service discovery using a suitable name-to-address resolution service. flooding-based examples include LLMNR [RFC4795] over the VET interface or multicast DNS [mDNS] over an underlying interface. the more scalable and efficient service discovery mechanisms are for further study ๐ง
5.13. Enterprise Partitioning ๐ฐ
EBGs can physically partition an enterprise by configuring multiple VET interfaces over multiple distinct sets of underlying interfaces. in that case, each partition (i.e., each VET interface) must configure its own distinct 'PRLNAME' (e.g., 'isatap.zone1.example.com', 'isatap.zone2.example.com', etc.) ๐
EBGs can also partition an enterprise logically using a single VET interface, by sending RAs with PIOs containing different IPv6 PA prefixes to group nodes into different logical partitions. EBGs can identify the partitions by, e.g., examining RLOC prefixes, observing the interfaces over which RSs are received, etc. in that case, a single 'PRLNAME' can cover all the partitions. so cute, right? ๐ธ
5.14. EBG Prefix State Recovery ๐
EBGs must retain explicit state that tracks the inner IP prefixes owned by EBRs within the enterprise. this is so packets get delivered to the correct EBRs and aren't incorrectly "leaked out" of the enterprise via a default route. for PA prefixes, that state is maintained via an EBR's DHCP prefix delegation lease renewals, while for PI prefixes it's maintained via an EBR's periodic prefix registration RAs ๐
when an EBG loses some or all of its state (e.g., due to a power failure), it must recover that state so packets can be forwarded over correct routes. if the EBG aggregates PA prefixes from which the IP prefixes of all EBRs in the enterprise are sub-delegated, then the EBG can recover state through DHCP prefix delegation lease renewals, through bulk lease queries, or through on-demand name-service lookups based on IP packet forwarding. but if the EBG serves as an anchor for PI prefixes, care must be taken to avoid looping while state is recovered through prefix registration RAs from EBRs. in that case, when the recovering EBG forwards an IP packet for which it has no explicit route other than ::/0, it must first perform an on-demand name-service lookup to refresh its state ๐ฅ
6. Security Considerations ๐
security considerations for MANETs are found in [RFC2501]. this one's serious, bestie ๐ญ
security considerations with tunneling that apply to VET are found in [RFC2529] [RFC5214]. in particular, VET nodes must verify that the outer IP source address of a packet received on a VET interface is correct for the inner IP source address, using the procedures specified in Section 7.3 of [RFC5214] together with the ingress filtering mechanisms specified in this document ๐ก๏ธ
SEND [RFC3971], IPsec [RFC4301], and SEAL [RFC5320] provide additional securing mitigations for detecting source address spoofing and bogus RA messages sent by rogue routers ๐ต๏ธโโ๏ธ
rogue routers can send bogus RA messages with spoofed RLOC source addresses. those can eat up network resources and make EBGs do extra work. even so, EBGs should not "blacklist" such RLOCs, because that may result in a denial of service to the RLOCs' legitimate owners. the audacity of blacklisting innocent people ๐
7. Related Work ๐
Brian Carpenter and Cyndi Jung introduced the concept of intra-site automatic tunneling in [RFC2529]. the concept was later called "Virtual Ethernet" and investigated by Quang Nguyen under the guidance of Dr. Lixia Zhang. subsequent work by these authors and their colleagues has motivated a number of foundational concepts that this work is built on ๐
Telcordia has proposed DHCP-related solutions for MANETs through the CECOM MOSAIC program ๐ฐ๏ธ
the Naval Research Lab (NRL) Information Technology Division uses DHCP in their MANET research testbeds ๐งช
security concerns pertaining to tunneling mechanisms are discussed in [TUNNEL-SEC] ๐
default router and prefix information options for DHCPv6 are discussed in [DEF-ROUTER] ๐งญ
an automated IPv4 prefix delegation mechanism is proposed in [SUBNET] ๐
RLOC prefix delegation for enterprise-edge interfaces is discussed in [MANET-REC] ๐
MANET link types are discussed in [LINKTYPE] ๐
various proposals within the IETF have suggested similar mechanisms. the vibes are very aligned ๐ซถ
8. Acknowledgements ๐
the following individuals gave direct and/or indirect input that was essential to the work: Jari Arkko, Teco Boot, Emmanuel Bacelli, James Bound, Scott Brim, Brian Carpenter, Thomas Clausen, Claudiu Danilov, Ralph Droms, Dino Farinacci, Vince Fuller, Thomas Goff, Joel Halpern, Bob Hinden, Sapumal Jayatissa, Dan Jen, Darrel Lewis, Tony Li, Joe Macker, David Meyer, Thomas Narten, Pekka Nikander, Dave Oran, Alexandru Petrescu, John Spence, Jinmei Tatuya, Dave Thaler, Ole Troan, Michaela Vanderveen, Lixia Zhang, and others in the IETF AUTOCONF and MANET working groups. many others have provided guidance over the course of many years ๐
9. Contributors ๐งโ๐คโ๐ง
the following individuals have contributed to this document:
Eric Fleischman (eric.fleischman@boeing.com)
Thomas Henderson (thomas.r.henderson@boeing.com)
Steven Russert (steven.w.russert@boeing.com)
Seung Yi (seung.yi@boeing.com)
Ian Chakeres (ian.chakeres@gmail.com) contributed to earlier versions of the document ๐ฉท
Jim Bound's foundational work on enterprise networks provided significant guidance for this effort. we mourn his loss and honor his contributions ๐๏ธ
10. References ๐
10.1. Normative References
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791,
September 1981.
[RFC0792] Postel, J., "Internet Control Message Protocol", STD 5,
RFC 792, September 1981.
[RFC0826] Plummer, D., "Ethernet Address Resolution Protocol: Or
Converting Network Protocol Addresses to 48.bit Ethernet
Address for Transmission on Ethernet Hardware", STD 37,
RFC 826, November 1982.
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987.
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC
2131, March 1997.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
[RFC3007] Wellington, B., "Secure Domain Name System (DNS) Dynamic
Update", RFC 3007, November 2000.
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
C., and M. Carney, "Dynamic Host Configuration Protocol
for IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
"DNS Extensions to Support IP Version 6", RFC 3596,
October 2003.
[RFC3633] Troan, O. and R. Droms, "IPv6 Prefix Options for Dynamic
Host Configuration Protocol (DHCP) version 6", RFC 3633,
December 2003.
[RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander,
"SEcure Neighbor Discovery (SEND)", RFC 3971, March
2005.
[RFC3972] Aura, T., "Cryptographically Generated Addresses (CGA)",
RFC 3972, March 2005.
[RFC4191] Draves, R. and D. Thaler, "Default Router Preferences
and More-Specific Routes", RFC 4191, November 2005.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, February 2006.
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
Control Message Protocol (ICMPv6) for the Internet
Protocol Version 6 (IPv6) Specification", RFC 4443,
March 2006.
[RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
"Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
September 2007.
[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
Address Autoconfiguration", RFC 4862, September 2007.
[RFC5214] Templin, F., Gleeson, T., and D. Thaler, "Intra-Site
Automatic Tunnel Addressing Protocol (ISATAP)", RFC
5214, March 2008.
10.2. Informative References โจ
Okay, bestie, here's the reading list! ๐ These are the extra sources the spec points to for background. Nothing here is required to follow the main text, but they're the receipts ๐
- [CATENET] Pouzin, L., "A Proposal for Interconnecting Packet Switching Networks", May 1974.
- [mDNS] Cheshire, S. and M. Krochmal, "Multicast DNS", Work in Progress, September 2009.
- [MANET-REC] Clausen, T. and U. Herberg, "MANET Router Configuration Recommendations", Work in Progress, February 2009.
- [LINKTYPE] Clausen, T., "The MANET Link Type", Work in Progress, October 2008.
- [DEF-ROUTER] Droms, R. and T. Narten, "Default Router and Prefix Advertisement Options for DHCPv6", Work in Progress, October 2009.
- [SEND-PROXY] Krishnan, S., Laganier, J., and M. Bonola, "Secure Proxy ND Support for SEND", Work in progress, July 2009.
- [SUBNET] Johnson, R., Kumarasamy, J., Kinnear, K., and M. Stapp, "Subnet Allocation Option", Work in Progress, October 2009.
- [CENTRL-ULA] Hinden, R., Huston, G., and T. Narten, "Centrally Assigned Unique Local IPv6 Unicast Addresses", Work in Progress, June 2007.
- [MANET-SMF] Macker, J., Ed. and SMF Design Team, "Simplified Multicast Forwarding for MANET", Work in Progress, July 2009.
- [TUNNEL-SEC] Hoagland, J., Krishnan, S., and D. Thaler, "Security Concerns With IP Tunneling", Work in Progress, October 2008.
- [APT] Jen, D., Meisel, M., Massey, D., Wang, L., Zhang, B., and L. Zhang, "APT: A Practical Transit Mapping Service", Work in Progress, November 2007.
- [IEN48] Cerf, V., "The Catenet Model for Internetworking", IEN 48, July 1978.
- [RASADV] Microsoft, "Remote Access Server Advertisement (RASADV) Protocol Specification", October 2008.
- [RFC1122] Braden, R., Ed., "Requirements for Internet Hosts - Communication Layers", STD 3, RFC 1122, October 1989.
- [RFC1256] Deering, S., Ed., "ICMP Router Discovery Messages", RFC 1256, September 1991.
- [RFC1753] Chiappa, N., "IPng Technical Requirements Of the Nimrod Routing and Addressing Architecture", RFC 1753, December 1994.
- [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., and E. Lear, "Address Allocation for Private Internets", BCP 5, RFC 1918, February 1996.
- [RFC1955] Hinden, R., "New Scheme for Internet Routing and Addressing (ENCAPS) for IPNG", RFC 1955, June 1996.
- [RFC2501] Corson, S. and J. Macker, "Mobile Ad hoc Networking (MANET): Routing Protocol Performance Issues and Evaluation Considerations", RFC 2501, January 1999.
- [RFC2529] Carpenter, B. and C. Jung, "Transmission of IPv6 over IPv4 Domains without Explicit Tunnels", RFC 2529, March 1999.
- [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, February 2000.
- [RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed Networks", BCP 84, RFC 3704, March 2004.
- [RFC3819] Karn, P., Ed., Bormann, C., Fairhurst, G., Grossman, D., Ludwig, R., Mahdavi, J., Montenegro, G., Touch, J., and L. Wood, "Advice for Internet Subnetwork Designers", BCP 89, RFC 3819, July 2004.
- [RFC3927] Cheshire, S., Aboba, B., and E. Guttman, "Dynamic Configuration of IPv4 Link-Local Addresses", RFC 3927, May 2005.
- [RFC4192] Baker, F., Lear, E., and R. Droms, "Procedures for Renumbering an IPv6 Network without a Flag Day", RFC 4192, September 2005.
- [RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast Addresses", RFC 4193, October 2005.
- [RFC4301] Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC 4301, December 2005.
- [RFC4380] Huitema, C., "Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)", RFC 4380, February 2006.
- [RFC4389] Thaler, D., Talwar, M., and C. Patel, "Neighbor Discovery Proxies (ND Proxy)", RFC 4389, April 2006.
- [RFC4795] Aboba, B., Thaler, D., and L. Esibov, "Link-Local Multicast Name Resolution (LLMNR)", RFC 4795, January 2007.
- [RFC4852] Bound, J., Pouffary, Y., Klynsma, S., Chown, T., and D. Green, "IPv6 Enterprise Network Analysis - IP Layer 3 Focus", RFC 4852, April 2007.
- [RFC4903] Thaler, D., "Multi-Link Subnet Issues", RFC 4903, June 2007.
- [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 4941, September 2007.
- [RFC5320] Templin, F., "The Subnetwork Encapsulation and Adaptation Layer (SEAL)", RFC 5320, February 2010.
- [RFC5720] Templin, F., "Routing and Addressing in Networks with Global Enterprise Recursion (RANGER)", RFC 5720, February 2010.
- [RANGERS] Russert, S., Ed., Fleischman, E., Ed., and F. Templin, Ed., "RANGER Scenarios", Work in Progress, September 2009.
Appendix A. Duplicate Address Detection (DAD) Considerations ๐
Okay, so here's the tea on DAD ๐ซ A priori uniqueness determination (also called "pre-service DAD") for an RLOC assigned on an enterprise-interior interface would mean either flooding the entire enterprise, or somehow finding a link in the enterprise where a node that configures a duplicate address is attached and running a localized DAD exchange on that link. But the control message overhead for an enterprise-wide DAD would be seriously heavy, and it's prone to false negatives thanks to packet loss and intermittent connectivity ๐ญ So the alternative is to autoconfigure pseudo-random RLOCs on enterprise-interior interfaces and use a passive in-service DAD instead (for example, one that monitors routing protocol messages for duplicate assignments). It's giving smart, not brute force ๐
Pseudo-random IPv6 RLOCs can be generated with mechanisms like CGAs, IPv6 privacy addresses, and so on, with a very small probability of collision โจ Pseudo-random IPv4 RLOCs can be generated through random assignment from a suitably large IPv4 prefix space ๐
Consistent operational practices can make sure addresses and prefixes aggregated by an EBG are unique, while the statistical properties of pseudo-random address self-generation can make sure the RLOCs on an ER's enterprise-interior interfaces are unique ๐ซถ Still, an RLOC delegation authority should be used when one is available, and a passive in-service DAD mechanism should be used to detect RLOC duplications when there is no RLOC delegation authority. Main character energy, but make it safe ๐
Author's Address ๐
Fred L. Templin (editor)
Boeing Research & Technology
P.O. Box 3707 MC 7L-49
Seattle, WA 98124
USA
EMail: fltemplin@acm.org
That's the whole doc, bestie! ๐๐ Gorgeous work reading all the way through ๐
๐ฆ where this page comes from
- ietf: rfc5558 2010-02
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms