RFC 5512

The BGP Encapsulation Subsequent Address Family Identifier (SAFI) and the BGP Tunnel Encapsulation Attribute

๐Ÿ“… published April 2009, from ietf

RFC 5512 ๐Ÿ’– The BGP Encapsulation Subsequent Address Family Identifier (SAFI) and the BGP Tunnel Encapsulation Attribute

Okay bestie, this one is by P. Mohapatra and E. Rosen from Cisco Systems, Inc. ๐ŸŽ€ It's a Standards Track doc, dated April 2009. Its whole job is explaining how BGP routers can tell each other how to wrap packets up in tunnels (that's "encapsulation") so the packets arrive where they're supposed to go. ๐Ÿฆ‹

Status of This Memo

So this is a standards track protocol spec for the whole Internet community ๐ŸŒ and it's basically begging for discussion and suggestions to make it better ๐Ÿ™. If you want to know where this protocol officially stands, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐Ÿ“œ. And distribution of this memo is unlimited, so share away ๐Ÿ’….

Copyright (c) 2009 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, as they stand on the date this document was published (http://trustee.ietf.org/license-info). Please read these carefully, bestie, because they spell out your rights and restrictions for this document ๐Ÿ“š.

Abstract

Okay, so sometimes a packet has to travel from one Border Gateway Protocol (BGP) speaker to another, which is called the BGP next hop ๐Ÿงš. When that happens, the first BGP speaker has to encapsulate the packet and the second one has to decapsulate it ๐ŸŽ. For that to work, the two speakers need to agree on the "encapsulation information," meaning the format of the encapsulation header and what goes in each field of it ๐Ÿ’œ.

Not every encapsulation type needs this info sent over. For the ones that DO need signaling, like Layer Two Tunneling Protocol - Version 3 (L2TPv3) or Generic Routing Encapsulation (GRE) with key, this doc gives BGP speakers a way to signal the info to each other ๐Ÿ“ก. They do it by sending BGP updates using the Encapsulation Subsequent Address Family Identifier (SAFI) and the IPv4 or IPv6 Address Family Identifier (AFI) ๐Ÿ”ฅ. And for the ones where nothing needs signaling, like GRE without key, the doc defines a BGP extended community. You attach it to BGP UPDATE messages that carry payload prefixes, and it tells everyone which encapsulation protocol type to use ๐ŸŒธ.

Table of Contents

1. Introduction ....................................................2
2. Specification of Requirements ...................................4
3. Encapsulation NLRI Format .......................................4
4. Tunnel Encapsulation Attribute ..................................5
   4.1. Encapsulation sub-TLV ......................................6
   4.2. Protocol Type Sub-TLV ......................................7
   4.3. Color Sub-TLV ..............................................8
        4.3.1. Color Extended Community ............................8
   4.4. Tunnel Type Selection ......................................8
   4.5. BGP Encapsulation Extended Community .......................9
5. Capability Advertisement .......................................10
6. Error Handling .................................................10
7. Security Considerations ........................................10
8. IANA Considerations ............................................10
9. Acknowledgements ...............................................11
10. References ....................................................12
   10.1. Normative References .....................................12
   10.2. Informative References ...................................12

1. Introduction ๐ŸŒˆ

Let's picture a router R1 forwarding an IP packet P, and let D be P's IP destination address ๐Ÿ‘€. R1 must look up D in its forwarding table. Now suppose the "best match" route for D is route Q, which is a BGP-distributed route whose "BGP next hop" is router R2. Suppose also that the routers along the path from R1 to R2 have entries for R2 in their forwarding tables, but do NOT have entries for D ๐Ÿ˜ณ. That could happen if the path is part of a "BGP-free core," where there are no BGP-distributed routes at all in the core. Or, as in [MESH], D may be an IPv4 address while the intermediate routers along the path from R1 to R2 may support only IPv6 ๐Ÿ™ƒ.

In a situation like this, R1 has to encapsulate P and send P "through a tunnel" to R2 so it forwards properly ๐Ÿš‡. For example, R1 may encapsulate P using GRE, L2TPv3, IP in IP, and so on. The destination IP address of the encapsulation header is R2's address ๐Ÿ’….

For R1 to encapsulate P for transport to R2, R1 must know which encapsulation protocol to use for each different sort of packet going to R2 ๐ŸŽ€. R1 must also know how to fill in the various fields of the encapsulation header ๐Ÿ“. Some encapsulation types can get this knowledge by default or through manual configuration. Other protocols have fields like session id, key, or cookie that have to be filled in. Honestly, it would be a nightmare to make every BGP speaker manually configured with the encapsulation info for every one of its BGP next hops ๐Ÿ˜ญ.

So this doc says BGP itself can do the job. A BGP speaker can use BGP to tell the other speakers, "if you need to encapsulate packets to be sent to me, here's the info you need to form the encapsulation header properly" ๐Ÿง . It signals this using a special SAFI value, the Encapsulation SAFI โœจ. The Encapsulation SAFI can be used with the AFI for IPv4 or the AFI for IPv6. The IPv4 AFI is used when the encapsulated packets are going to be sent using IPv4, and the IPv6 AFI is used when they're going to be sent using IPv6 ๐Ÿฆ‹.

In a given BGP update, the Network Layer Reachability Information (NLRI) of the Encapsulation SAFI is the IP address (in the family set by the AFI) of the originator of that update ๐Ÿ’œ. The actual encapsulation info goes in the BGP "tunnel encapsulation attribute," which this doc specifies. That attribute lists the encapsulation protocols that may be used, plus whatever extra info (if any) is needed to use them properly ๐Ÿ“. Other attributes, like communities or extended communities, may be included too ๐Ÿซถ.

Now, since the encapsulation info is coded as an attribute, you might ask whether a new SAFI is really needed ๐Ÿค”. After all, a BGP speaker could just attach the tunnel encapsulation attribute to each prefix it advertises, like Q in our example. But then any change in the encapsulation info would cause a huge number of updates ๐Ÿ’€. Unless you really want different encapsulation info for every single prefix, it's way better to have a mechanism where a change in the encapsulation info makes the speaker advertise just one update. And the reverse is true too: when prefixes change, the tunnel encapsulation info doesn't need to be exchanged again ๐Ÿ™Œ.

In this spec, a single SAFI carries the info for ALL encapsulation protocols ๐ŸŒŸ. You could have gone the other way and defined a new SAFI for each encapsulation protocol. But with this approach, the encapsulation info can pass transparently and automatically through intermediate BGP speakers (like route reflectors) that don't necessarily understand it ๐Ÿช„. That works because the encapsulation attribute is defined as an optional transitive attribute. So new encapsulations can be added without reconfiguring any intermediate BGP system ๐ŸŽ‰. If adding a new encapsulation required a new SAFI, its info wouldn't get through the intermediate BGP systems unless those systems were reconfigured to support the new SAFI ๐Ÿ˜ค.

For encapsulation protocols where no encapsulation info needs to be signaled (like GRE without key), the egress router MAY still want to specify which protocol to use for transporting packets from the ingress router ๐Ÿญ. For that purpose, this doc specifies a new BGP extended community that can be attached to UPDATE messages carrying payload prefixes ๐ŸŽ€.

2. Specification of Requirements ๐Ÿ“‹

So the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be read as described in [RFC2119] ๐Ÿค“.

3. Encapsulation NLRI Format ๐ŸŽ

Okay, here's the NLRI. It's carried in BGP UPDATE messages [RFC4271] using BGP multiprotocol extensions [RFC4760]. It uses an AFI of 1 or 2 (IPv4 or IPv6) [IANA-AF] and a SAFI value of 7, which is called the Encapsulation SAFI ๐Ÿ’–.

The NLRI is encoded in the format defined in Section 5 of [RFC4760]. That's a 2-tuple of the form <length, value> ๐Ÿงฉ. The value field is structured like this:

         +-----------------------------------------------+
         |       Endpoint Address (Variable)             |
         +-----------------------------------------------+
  • Endpoint Address: This field identifies the BGP speaker that originated the update ๐Ÿ“. It's typically one of the interface addresses configured at the router. Its length depends on the AFI being advertised. If the AFI is set to IPv4 (1), the endpoint address is a 4-octet IPv4 address. If the AFI is set to IPv6 (2), the endpoint address is a 16-octet IPv6 address ๐Ÿฆ‹.

An update message that carries the MP_REACH_NLRI or MP_UNREACH_NLRI attribute with the Encapsulation SAFI MUST also carry the BGP mandatory attributes: ORIGIN, AS_PATH, and LOCAL_PREF (for IBGP neighbors), as defined in [RFC4271] ๐Ÿ”’. On top of that, such an update message can also contain any of the BGP optional attributes, like the Community or Extended Community attribute, to influence an action on the receiving speaker ๐Ÿ’….

When a BGP speaker advertises the Encapsulation NLRI via BGP, it uses its own address as the BGP nexthop in the MP_REACH_NLRI or MP_UNREACH_NLRI attribute ๐Ÿ . The nexthop address is set based on the AFI in the attribute. For example, if the AFI is set to IPv4 (1), the nexthop is encoded as a 4-byte IPv4 address. If the AFI is set to IPv6 (2), the nexthop is encoded as a 16-byte IPv6 address of the router ๐ŸŒ. On the receiving router, the BGP nexthop of such an update message is validated by doing a recursive route lookup in the routing table ๐Ÿ”.

Bestpath selection of Encapsulation NLRIs is governed by the decision process outlined in Section 9.1 of [RFC4271] ๐Ÿ‘‘. The encapsulation data carried through other attributes in the message is only used by the receiving router if the NLRI has a bestpath โœจ.

4. Tunnel Encapsulation Attribute โœจ

okay so the Tunnel Encapsulation attribute is an optional transitive attribute ๐Ÿ’– and it's basically a stack of TLV (Type-Length-Value) encodings. each TLV holds info about one specific tunnel technology, and the layout is giving clean structure ๐ŸŽ€:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Tunnel Type (2 Octets)     |        Length (2 Octets)      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                             Value                             |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the fields, bestie ๐Ÿ’…:

  • Tunnel Type (2 octets): tells you which tunneling tech is being signaled ๐Ÿฆ‹. this doc defines:

Unknown types are to be ignored and skipped upon receipt. no drama, just scroll past ๐Ÿ™ˆ

  • Length (2 octets): the total number of octets in the value field ๐Ÿงฎ.
  • Value (variable): this is where the sub-TLVs live ๐Ÿงš. each sub-TLV has three fields: a 1-octet type, a 1-octet length, and zero or more octets of value. it looks like this:
                 +-----------------------------------+
                 |      Sub-TLV Type (1 Octet)       |
                 +-----------------------------------+
                 |     Sub-TLV Length (1 Octet)      |
                 +-----------------------------------+
                 |     Sub-TLV Value (Variable)      |
                 |                                   |
                 +-----------------------------------+
  • Sub-TLV Type (1 octet): each sub-TLV type defines a property about the tunnel TLV that contains it ๐Ÿ‘‘. the ones defined here are:
    • Encapsulation: sub-TLV type = 1
    • Protocol type: sub-TLV type = 2
    • Color: sub-TLV type = 4

When the TLV is being processed by a BGP speaker that will be performing encapsulation, any unknown sub-TLVs MUST be ignored and skipped. However, if the TLV is understood, the entire TLV MUST NOT be ignored just because it contains an unknown sub-TLV. the vibe is "skip the weird stuff, but don't throw out the whole good TLV because of one oddball" ๐Ÿ’€โœจ

  • Sub-TLV Length (1 octet): the total number of octets in the sub-TLV value field ๐Ÿ“.
  • Sub-TLV Value (variable): the encoding depends on the sub-TLV type, and the next sub-sections spell it all out ๐ŸŒธ.

4.1. Encapsulation Sub-TLV

the syntax and semantics of the encapsulation sub-TLV are decided by the tunnel type of the TLV that holds it ๐ŸŽ€.

when the tunnel type is L2TPv3 over IP, the value field of the encapsulation sub-TLV looks like this:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Session ID (4 octets)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                        Cookie (Variable)                      |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Session ID: a non-zero 4-octet value that the advertising router picks locally ๐Ÿ”‘. it works as a lookup key in the incoming packet's context.
  • Cookie: an optional, variable-length value (0 to 8 octets ๐Ÿ“) that L2TPv3 uses to check that a received data message really belongs to the session named by the Session ID. how the cookie is generated and used is spelled out in [RFC3931].

the cookie length isn't encoded explicitly, but you can work it out as (sub-TLV length - 4) ๐Ÿง .

when the tunnel type is GRE, the value field of the encapsulation sub-TLV looks like this:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      GRE Key (4 octets)                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • GRE Key: a 4-octet field [RFC2890] generated by the advertising router ๐Ÿ—๏ธ. how the key actually gets obtained is out of scope for this doc ๐Ÿ™ˆ. it gets slotted into the GRE encapsulation header of the payload packets that ingress routers send to the advertising router, and it's meant for carrying extra context about the received payload.

quick flag: the key is optional. unless a key value is being advertised, the GRE encapsulation sub-TLV MUST NOT be present. no key, no sub-TLV, periodt ๐Ÿ’….

4.2. Protocol Type Sub-TLV

the protocol type sub-TLV MAY be encoded to say what kind of payload packets will be encapsulated with the tunnel parameters signaled in the TLV ๐Ÿฆ‹. its value field holds a 2-octet protocol type, one of the types registered in [IANA-AF] as ETHER TYPEs.

let's do an example, because it's so good ๐Ÿคฉ. say we want three L2TPv3 sessions: one carrying IPv4 packets, one carrying IPv6, and one carrying MPLS. the egress router includes three L2TPv3 encapsulation TLVs, each with a different Session ID and a different payload type. their protocol type sub-TLVs are IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847), respectively ๐ŸŒˆ. that tells the ingress routers which encapsulation info to use for each protocol type. and inserting the right Session ID at the ingress routers lets the egress process incoming packets correctly, based on their protocol type. iconic teamwork ๐Ÿ‘‘.

whether you need this sub-TLV depends on the tunnel type. it MUST be encoded for the L2TPv3 tunnel type ๐ŸŽ€. the protocol type sub-TLV is not required for IP in IP or GRE tunnels.

4.3. Color Sub-TLV

the color sub-TLV MAY be encoded as a way to color the corresponding tunnel TLV ๐ŸŽจ. its value field holds an extended community, defined like this:

4.3.1. Color Extended Community

the Color Extended Community is an opaque extended community [RFC4360] with the following encoding:

        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |       0x03    |     0x0b      |           Reserved            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                          Color Value                          |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the high-order octet of the extended type field is 0x03, which means it's transitive ๐Ÿ”. the low-order octet is 0x0b ๐ŸŒธ. the color value is user-defined and set locally on the routers ๐ŸŽ€. the same Color Extended Community can then be attached to UPDATE messages carrying payload prefixes. this lets a BGP speaker say "hey, I expect packets for these payload prefixes to arrive with a particular tunnel encapsulation header" ๐Ÿซถ.

4.4. Tunnel Type Selection

a BGP speaker can include multiple tunnel TLVs in the tunnel attribute ๐Ÿง. the receiving speaker MAY have local policies to pick different tunnel types for different sets or types of payload prefixes that came from the same BGP speaker. for example, if a BGP speaker includes both L2TPv3 and GRE in the tunnel attribute and also advertises IPv4 and IPv6 prefixes, the ingress router could have a local policy that picks L2TPv3 for IPv4 prefixes (as long as the protocol type received in the tunnel attribute matches) and GRE for IPv6 prefixes ๐Ÿฆ‹โœจ.

also, the Encapsulation SAFI UPDATE message can carry a color sub-TLV for some or all of the tunnel TLVs ๐ŸŒˆ. the BGP speaker SHOULD then attach a Color Extended Community to payload prefixes so the right tunnel types get selected ๐Ÿ‘‘.

in a multi-vendor deployment where routers support different tunneling techs, including a color sub-TLV in the Encapsulation SAFI UPDATE message can act as a classification mechanism ๐Ÿงš. for example, set A of routers could use GRE and set B could use L2TPv3. the ingress router can then choose the encapsulation data appropriately when it sends packets to an egress router ๐Ÿ’….

if a BGP speaker originates an update for prefix P with color C and with itself as the next hop, then it MUST also originate an Encapsulation SAFI update that contains the color C. no skipping this step, bestie ๐Ÿ™ˆ.

now the tricky one ๐Ÿ˜ญ. suppose a BGP speaker receives an update for prefix P with color C, the BGP decision procedure has picked that route as the best route to P, and the next hop is node N. but an Encapsulation SAFI update from node N containing color C has not been received. in that case, no route to P gets installed in the forwarding table unless and until the matching Encapsulation SAFI update arrives, or the BGP decision process picks a different route ๐Ÿ’€.

last one, and it's lowkey chill ๐ŸŒธ. suppose a BGP speaker receives an "uncolored" update for prefix P, with next hop N, and it has also received an Encapsulation SAFI originated by N that specifies one or more encapsulations, which may or may not be colored. then choosing the encapsulation is a matter of local policy ๐ŸŽ€. the only "default policy" needed is to pick one of the encapsulations the speaker supports โœจ.

4.5. BGP Encapsulation Extended Community โœจ

okay so this section defines a BGP opaque extended community ๐Ÿ’– that can be attached to BGP UPDATE messages to tell the router which encapsulation protocol to use when sending packets from an ingress router to an egress router. bestie, check the example from Section 1: R2 MAY include this extended community, naming a specific tunnel type to use in the UPDATE that carries route Q to R1. this is clutch when there's no explicit encapsulation info signaled through the Encapsulation SAFI for a tunneling protocol (like GRE without key) ๐ŸŽ€

     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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       0x03    |      0x0c     |           Reserved            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Reserved           |          Tunnel Type          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

so the high-order octet of the extended type field is 0x03, which means it's transitive ๐Ÿฆ‹ and the low-order octet is 0x0c ๐Ÿ’…

the last two octets of the value field encode a tunnel type, as defined in this document ๐ŸŒธ

for interoperability, a speaker supporting Encapsulation SAFI MUST implement the Encapsulation Extended Community ๐Ÿ‘‘ no skipping this one, periodt ๐Ÿ’€


5. Capability Advertisement โœจ

a BGP speaker that wants to exchange tunnel endpoint info must use the Multiprotocol Extensions Capability Code as defined in [RFC4760] to advertise the matching (AFI, SAFI) pair ๐Ÿงš the Multiprotocol Extensions Capability Code is what makes this happen, so don't forget it ๐Ÿ’œ


6. Error Handling โœจ

so when a BGP speaker runs into an error while parsing the tunnel encapsulation attribute, it MUST treat the UPDATE as a withdrawal of existing routes to the included Encapsulation SAFI NLRIs ๐Ÿ˜ญ or, if no such routes exist, discard the UPDATE. a log entry should be raised for local analysis ๐Ÿ“ the vibe here is "clean up the mess and keep receipts" ๐Ÿ™ˆ


7. Security Considerations โœจ

okay this part is SERIOUS, bestie ๐Ÿ”ฅ security considerations for softwires can be found in the mesh framework [MESH]. in general, the security issues of the tunnel protocols signaled through the Encapsulation SAFI are inherited ๐ŸŒˆ

if a third party is able to modify any of the info used to form encapsulation headers, to choose a tunnel type, or to choose a particular tunnel for a particular payload type, user data packets may end up getting misrouted, misdelivered, and/or dropped ๐Ÿ’€๐Ÿ˜ญ that's a whole disaster, so protect that info like it's your diary ๐Ÿ”’


8. IANA Considerations โœจ

IANA assigned value 7 from the "Subsequent Address Family" Registry, in the "Standards Action" range, to "Encapsulation SAFI", with this document as the reference ๐ŸŽ€

IANA assigned value 23 from the "BGP Path Attributes" Registry to "Tunnel Encapsulation Attribute", with this document as the reference ๐Ÿ’–

IANA also assigned two new values from the "BGP Opaque Extended Community" type Registry ๐Ÿฆ‹ both are from the transitive range. the first is called "Color Extended Community" (0x030b), and the second is called "Encapsulation Extended Community"(0x030c). this document is the reference for both โœจ

IANA set up a registry for "BGP Tunnel Encapsulation Attribute Tunnel Types" ๐ŸŒธ it's a registry of two-octet values (0-65535), assigned on a first-come, first-served basis. the initial assignments are:

   Tunnel Name                             Type
   ---------------                         -----
   L2TPv3 over IP                            1
   GRE                                       2
   IP in IP                                  7

IANA also set up a registry for "BGP Tunnel Encapsulation Attribute Sub-TLVs" ๐Ÿงš it's a registry of 1-octet values (0-255), assigned on a "standards action/early allocation" basis. this document is the reference, and the initial assignments are:

   Sub-TLV name                            Type
   -------------                           -----
   Encapsulation                             1
   Protocol Type                             2
   Color                                     4

9. Acknowledgements โœจ

this spec builds on prior work by Gargi Nalawade, Ruchi Kapoor, Dan Tappan, David Ward, Scott Wainner, Simon Barber, and Chris Metz ๐Ÿซถ the current authors want to thank all of them, so big hugs to everyone ๐Ÿ’œ

the authors also want to thank John Scudder, Robert Raszuk, Keyur Patel, Chris Metz, Yakov Rekhter, Carlos Pignataro, and Brian Carpenter for their valuable comments and suggestions ๐ŸŒˆโœจ


10. References โœจ

10.1. Normative References

here's the list of the normative refs, bestie ๐Ÿ“š

[RFC4271]  Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A
           Border Gateway Protocol 4 (BGP-4)", RFC 4271, January
           2006.

[RFC4760]  Bates, T., Chandra, R., Katz, D., and Y. Rekhter,
           "Multiprotocol Extensions for BGP-4", RFC 4760, January
           2007.

[RFC4360]  Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended
           Communities Attribute", RFC 4360, February 2006.

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC3931]  Lau, J., Ed., Townsley, M., Ed., and I. Goyret, Ed.,
           "Layer Two Tunneling Protocol - Version 3 (L2TPv3)", RFC
           3931, March 2005.

[RFC2784]  Farinacci, D., Li, T., Hanks, S., Meyer, D., and P.
           Traina, "Generic Routing Encapsulation (GRE)", RFC 2784,
           March 2000.

[RFC2890]  Dommety, G., "Key and Sequence Number Extensions to GRE",
           RFC 2890, September 2000.

[RFC2003]  Perkins, C., "IP Encapsulation within IP", RFC 2003,
           October 1996.

[RFC4213]  Nordmark, E. and R. Gilligan, "Basic Transition Mechanisms
           for IPv6 Hosts and Routers", RFC 4213, October 2005.

10.2. Informative References

and these are the informative ones ๐Ÿฆ‹

[IANA-AF]  "Address Family Numbers," http://www.iana.org.

[MESH]     Wu, J., Cui, Y., Metz, C., and E. Rosen, "Softwire Mesh
           Framework," Work in Progress, February 2009.

Authors' Addresses โœจ

the people who wrote this, and where to find them ๐Ÿ’–

Pradosh Mohapatra
Cisco Systems, Inc.
170 Tasman Drive
San Jose, CA, 95134
EMail: pmohapat@cisco.com


Eric Rosen
Cisco Systems, Inc.
1414 Massachusetts Avenue
Boxborough, MA, 01719
EMail: erosen@cisco.com
๐Ÿ“ฆ where this page comes from