RFC 2283
Multiprotocol Extensions for BGP-4
RFC 2283: Multiprotocol Extensions for BGP-4 π¦
okay bestie, this one is the spec that teaches BGP-4 to carry routing info for more than just IPv4 β¨ It's from the Network Working Group, dated February 1998, and it's a Standards Track protocol doc, so it's the real deal, not just a vibe π The authors are T. Bates, R. Chandra, and Y. Rekhter from Cisco Systems, plus D. Katz from Juniper Networks π The header doesn't list anything it obsoletes or updates, so it's standing on its own πΈ
Status of this Memo β¨
This doc specifies an Internet standards track protocol for the Internet community, and it's literally asking for discussion and suggestions π«Ά If you want the current standardization state and status, check the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited π
Copyright Notice π
Copyright (C) The Internet Society (1998). All Rights Reserved.
2. Abstract π
BGP-4 [BGP-4] is currently only able to carry routing information for IPv4 [IPv4], which is kinda limiting π This doc adds extensions so BGP-4 can carry routing info for multiple Network Layer protocols (e.g., IPv6, IPX, etc...). The extensions are backward compatible, so a router that supports them can interoperate with a router that doesn't. Iconic behavior, honestly π
3. Overview π¦
Okay so, the only three pieces of BGP-4 info that are IPv4 specific are (a) the NEXT_HOP attribute (expressed as an IPv4 address), (b) AGGREGATOR (which contains an IPv4 address), and (c) NLRI (expressed as IPv4 address prefixes). This doc assumes every BGP speaker, including the ones that support the multiprotocol capabilities defined here, has to have an IPv4 address. That address gets used for stuff like the AGGREGATOR attribute π§ So to get BGP-4 routing for multiple Network Layer protocols, you only need to add two things: (a) the ability to associate a particular Network Layer protocol with the next hop information, and (b) the ability to associate a particular Network Layer protocol with NLRI. To identify individual Network Layer protocols, this doc uses Address Family, as defined in [RFC1700] β¨
Here's the tea β The next hop info (what the NEXT_HOP attribute provides) only matters alongside advertisements of reachable destinations. When you're withdrawing routes from service, the next hop info is meaningless π So it makes sense to group the advertisement of reachable destinations with the advertisement of the next hop to use for them, and to keep reachable destinations separate from unreachable ones. Very organized, very slay π
To keep backward compatibility and make it easier to slot multiprotocol capabilities into BGP-4, this doc uses two new attributes: Multiprotocol Reachable NLRI (MP_REACH_NLRI) and Multiprotocol Unreachable NLRI (MP_UNREACH_NLRI). MP_REACH_NLRI carries the set of reachable destinations along with the next hop info used to forward to them. MP_UNREACH_NLRI carries the set of unreachable destinations. Both attributes are optional and non-transitive, which means a BGP speaker that doesn't support the multiprotocol capabilities just ignores the info in them and doesn't pass it along to other BGP speakers πΈ Lowkey genius.
4. Multiprotocol Reachable NLRI - MP_REACH_NLRI (Type Code 14): π§
This is an optional non-transitive attribute, and it can be used for these purposes:
- (a) to advertise a feasible route to a peer
- (b) to permit a router to advertise the Network Layer address of the router that should be used as the next hop to the destinations listed in the Network Layer Reachability Information field of the MP_NLRI attribute.
- (c) to allow a given router to report some or all of the Subnetwork Points of Attachment (SNPAs) that exist within the local system
The attribute holds one or more triples <Address Family Information, Next Hop Information, Network Layer Reachability Information>, and each triple is encoded like this π
+---------------------------------------------------------+
| Address Family Identifier (2 octets) |
+---------------------------------------------------------+
| Subsequent Address Family Identifier (1 octet) |
+---------------------------------------------------------+
| Length of Next Hop Network Address (1 octet) |
+---------------------------------------------------------+
| Network Address of Next Hop (variable) |
+---------------------------------------------------------+
| Number of SNPAs (1 octet) |
+---------------------------------------------------------+
| Length of first SNPA(1 octet) |
+---------------------------------------------------------+
| First SNPA (variable) |
+---------------------------------------------------------+
| Length of second SNPA (1 octet) |
+---------------------------------------------------------+
| Second SNPA (variable) |
+---------------------------------------------------------+
| ... |
+---------------------------------------------------------+
| Length of Last SNPA (1 octet) |
+---------------------------------------------------------+
| Last SNPA (variable) |
+---------------------------------------------------------+
| Network Layer Reachability Information (variable) |
+---------------------------------------------------------+
Here's what each field does π
Address Family Identifier: This field carries the identity of the Network Layer protocol associated with the Network Address that follows. The values defined right now are in RFC1700 (see the Address Family Numbers section) π
Subsequent Address Family Identifier: This field gives extra info about the type of the Network Layer Reachability Information carried in the attribute β¨
Length of Next Hop Network Address: A 1 octet field whose value is the length of the "Network Address of Next Hop" field, measured in octets.
Network Address of Next Hop: A variable length field containing the Network Address of the next router on the path to the destination system π§
Number of SNPAs: A 1 octet field containing the number of distinct SNPAs listed in the following fields. The value 0 MAY be used to indicate that no SNPAs are listed in this attribute.
Length of Nth SNPA: A 1 octet field whose value is the length of the "Nth SNPA of Next Hop" field, measured in semi-octets.
Nth SNPA of Next Hop: A variable length field containing an SNPA of the router whose Network Address is in the "Network Address of Next Hop" field. The field length is an integral number of octets, namely the rounded-up integer value of one half the SNPA length in semi-octets. If the SNPA has an odd number of semi-octets, the field gets padded with a trailing all-zero semi-octet π
Network Layer Reachability Information: A variable length field that lists the NLRI for the feasible routes being advertised in this attribute. When the Subsequent Address Family Identifier field is set to one of the values defined in this doc, each NLRI is encoded as specified in the "NLRI encoding" section of this doc π
Now the next hop stuff, which is where it gets spicy πΆοΈ The next hop info in the MP_REACH_NLRI path attribute defines the Network Layer address of the border router that should be used as the next hop to the destinations listed in the MP_NLRI attribute in the UPDATE message. When advertising an MP_REACH_NLRI attribute to an external peer, a router MAY use one of its own interface addresses in the next hop component, as long as the external peer the route is being advertised to shares a common subnet with that next hop address. This is called a "first party" next hop. A BGP speaker can advertise to an external peer an interface of any internal peer router in the next hop component, as long as the external peer shares a common subnet with the next hop address. This is known as a "third party" next hop info. A BGP speaker can advertise any external peer router in the next hop component, provided that the Network Layer address of this border router was learned from an external peer, and the external peer the route is being advertised to shares a common subnet with the next hop address. This is a second form of "third party" next hop info π¦
Normally the next hop info is chosen so the shortest available path gets taken. A BGP speaker MUST be able to support disabling advertisement of third party next hop info, to handle imperfectly bridged media or for reasons of policy π
A BGP speaker MUST NEVER advertise an address of a peer to that peer as a next hop, for a route that the speaker is originating. A BGP speaker MUST NEVER install a route with itself as the next hop. Non-negotiable, bestie π«π
When a BGP speaker advertises the route to an internal peer, the advertising speaker SHOULD NOT modify the next hop info associated with the route. When a BGP speaker receives the route via an internal link, it MAY forward packets to the next hop address if the address in the attribute is on a common subnet with the local and remote BGP speakers π«Ά
An UPDATE message that carries the MP_REACH_NLRI MUST also carry the ORIGIN and the AS_PATH attributes (both in EBGP and in IBGP exchanges). Moreover, in IBGP exchanges such a message MUST also carry the LOCAL_PREF attribute. If such a message is received from an external peer, the local system SHALL check whether the leftmost AS in the AS_PATH attribute is equal to the autonomous system number of the peer that sent the message. If that is not the case, the local system SHALL send the NOTIFICATION message with Error Code UPDATE Message Error, and the Error Subcode set to Malformed AS_PATH. Kinda strict, but that's how we keep things clean πβ¨
5. Multiprotocol Unreachable NLRI - MP_UNREACH_NLRI (Type Code 15): ποΈβ¨
Okay so this one is the cleanup crew π§Ή It's an optional non-transitive attribute, and its whole job is withdrawing multiple unfeasible routes from service. Bestie, it's giving "bye bye, route" energy π
The attribute holds one or more triples <Address Family Information, Unfeasible Routes Length, Withdrawn Routes>, and each triple is laid out like this:
+---------------------------------------------------------+
| Address Family Identifier (2 octets) |
+---------------------------------------------------------+
| Subsequent Address Family Identifier (1 octet) |
+---------------------------------------------------------+
| Withdrawn Routes (variable) |
+---------------------------------------------------------+
Here's what each field does π¦
- Address Family Identifier: This carries the identity of the Network Layer protocol tied to the NLRI that follows. The values currently defined are listed in RFC1700 (see the Address Family Numbers section).
- Subsequent Address Family Identifier: This gives extra info about the type of Network Layer Reachability Information in the attribute.
- Withdrawn Routes: A variable-length field listing the NLRI for the routes being withdrawn from service. When the Subsequent Address Family Identifier is set to one of the values defined in this document, each NLRI is encoded as described in the "NLRI encoding" section of this document πΈ
Also, an UPDATE message carrying the MP_UNREACH_NLRI is not required to carry any other path attributes. Lowkey iconic, right? π«Ά
6. NLRI encoding π§©
So the Network Layer Reachability information is encoded as one or more 2-tuples of the form <length, prefix>. Here's the shape:
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
The fields work like this:
- a) Length: This indicates the length in bits of the address prefix. A length of zero means a prefix that matches all addresses (as specified by the address family), with the prefix itself being zero octets. Main character energy π
- b) Prefix: This carries address prefixes, followed by enough trailing bits to make the end of the field land on an octet boundary. Note that the value of trailing bits is irrelevant π€·ββοΈ
7. Subsequent Address Family Identifier π
This document defines these values for the Subsequent Address Family Identifier field in the MP_REACH_NLRI and MP_UNREACH_NLRI attributes:
1 - Network Layer Reachability Information used for unicast
forwarding
2 - Network Layer Reachability Information used for multicast
forwarding
3 - Network Layer Reachability Information used for both unicast
and multicast forwarding
Values 128-255 are reserved for vendor-specific applications. Value 0 is also reserved by this document π
Any Subsequent Address Family Identifiers other than the vendor-specific ones are assigned only through the IETF consensus process and IESG approval. So no going rogue with the numbers, periodt π ββοΈ
8. Security Considerations π¨
Okay, serious moment, bestie π This extension to BGP does not change the underlying security issues. So the security stuff from base BGP still applies in full. Don't sleep on it! π
9. Acknowledgements π«Ά
The authors want to thank the members of the IDR Working Group for their review and comments. Love a supportive squad π
10. References π
These are the references, copied exactly as they appear in the original:
[BGP-4] Rekhter, Y., and T. Li, "A Border Gateway Protocol 4
(BGP-4)", RFC 1771, March 1995.
[IPv4] Postel, J., "Internet Protocol", STD 5, RFC 791,
September 1981.
[RFC1700] Reynolds, J., and J. Postel, "Assigned Numbers," STD 2,
RFC 1700, October 1994. (see also
http://www.iana.org/iana/assignments.html)
11. Author Information π
The authors are listed below, with their addresses and emails exactly as written:
Tony Bates
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134
EMail: tbates@cisco.com
Ravi Chandra
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134
EMail: rchandra@cisco.com
Dave Katz
Juniper Networks, Inc.
3260 Jay St.
Santa Clara, CA 95054
EMail: dkatz@jnx.com
Yakov Rekhter
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134
EMail: yakov@cisco.com
12. Full Copyright Statement β
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
π And that's a wrap on RFC 2283, bestie! π¦π
π¦ where this page comes from
- ietf: rfc2283 1998-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms