RFC 4760
Multiprotocol Extensions for BGP-4
RFC 4760: Multiprotocol Extensions for BGP-4 β¨
okay bestie, this is RFC 4760 π It's a Standards Track doc from the Network Working Group, dated January 2007. T. Bates (Cisco Systems), R. Chandra (Sonoa Systems), D. Katz, and Y. Rekhter (Juniper Networks) wrote it, and it obsoletes RFC 2858 π It's all about giving BGP-4 a multiprotocol glow-up π¦
Status of This Memo π
So this is an Internet standards track protocol for the whole Internet community π They're asking for discussion and suggestions for improvements. For the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) π Distribution of this memo is unlimited π
Copyright Notice Β©οΈ
Copyright (C) The IETF Trust (2007). π
Abstract πΈ
This doc extends BGP-4 so it can carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.) π§ The extensions are backward compatible. A router that supports the extensions can interoperate with a router that doesn't support the extensions, so nobody gets left on read π«Ά
1. Introduction β¨
okay so the only three pieces of information carried by BGP-4 [BGP-4] that are IPv4 specific are (a) the NEXT_HOP attribute (expressed as an IPv4 address), (b) AGGREGATOR (contains an IPv4 address), and (c) NLRI (expressed as IPv4 address prefixes) π This doc assumes that any BGP speaker (including the one that supports the multiprotocol capabilities defined here) has to have an IPv4 address, which gets used for stuff like the AGGREGATOR attribute, among other things π
So to get BGP-4 routing for multiple Network Layer protocols, the only two things that have to be added are (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 the individual Network Layer protocols tied to the next hop information and the semantics of NLRI, this doc uses a combo of Address Family (as defined in [IANA-AF]) and Subsequent Address Family (as described in this document) π¦ It's giving teamwork.
Here's a lowkey big realization. The next hop information (the stuff the NEXT_HOP attribute provides) is only meaningful, and only necessary, when it comes with advertisements of reachable destinations. When you're withdrawing routes from service (unreachable destinations), the next hop information is meaningless π So it makes sense to group reachable destinations with the next hop to use for them, and to keep reachable destinations separate from unreachable ones π
To keep backward compatibility and make it easier to bring 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 together with the next hop information to use for forwarding to them. MP_UNREACH_NLRI carries the set of unreachable destinations. Both attributes are optional and non-transitive, so a BGP speaker that doesn't support the multiprotocol capabilities just ignores the info in these attributes and doesn't pass it along to other BGP speakers. It's iconic, honestly π
2. Specification of Requirements π
okay so the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] π«Ά
3. Multiprotocol Reachable NLRI - MP_REACH_NLRI (Type Code 14): π₯
This is an optional non-transitive attribute that 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.
Here's how the attribute is encoded π§©
+---------------------------------------------------------+
| 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) |
+---------------------------------------------------------+
| Reserved (1 octet) |
+---------------------------------------------------------+
| Network Layer Reachability Information (variable) |
+---------------------------------------------------------+
Now the fun part, what each field actually does π
Address Family Identifier (AFI): This field, combined with the Subsequent Address Family Identifier field, identifies the set of Network Layer protocols that the address in the Next Hop field must belong to, how the next hop address is encoded, and the semantics of the Network Layer Reachability Information that follows. If the Next Hop is allowed to come from more than one Network Layer protocol, the encoding of the Next Hop MUST provide a way to determine its Network Layer protocol π
The presently defined values for the Address Family Identifier field are specified in the IANA's Address Family Numbers registry [IANA-AF] π
Subsequent Address Family Identifier (SAFI): This field, combined with the Address Family Identifier field, identifies the set of Network Layer protocols that the address in the Next Hop must belong to, how the next hop address is encoded, and the semantics of the Network Layer Reachability Information that follows. If the Next Hop is allowed to come from more than one Network Layer protocol, the encoding of the Next Hop MUST provide a way to determine its Network Layer protocol π
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 that contains the Network Address of the next router on the path to the destination system. The Network Layer protocol associated with the Network Address of the Next Hop is identified by a combination of <AFI, SAFI> carried in the attribute β¨
Reserved: A 1-octet field that MUST be set to 0, and SHOULD be ignored upon receipt π
Network Layer Reachability Information (NLRI): A variable-length field that lists NLRI for the feasible routes being advertised in this attribute. The semantics of the NLRI is identified by a combination of <AFI, SAFI> carried in the attribute π¦
When the Subsequent Address Family Identifier field is set to one of the values defined in this document, each NLRI is encoded as specified in the "NLRI encoding" section of this document π
The next hop information carried in the MP_REACH_NLRI path attribute defines the Network Layer address of the router that SHOULD be used as the next hop to the destinations listed in the MP_NLRI attribute in the UPDATE message π§
The rules for the next hop information are the same as the rules for the information carried in the NEXT_HOP BGP attribute (see Section 5.1.3 of [BGP-4]) π
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 π₯
An UPDATE message that carries no NLRI other than the one encoded in the MP_REACH_NLRI attribute SHOULD NOT carry the NEXT_HOP attribute. If such a message does contain the NEXT_HOP attribute, the BGP speaker that receives the message SHOULD ignore this attribute π
An UPDATE message SHOULD NOT include the same address prefix (of the same <AFI, SAFI>) in more than one of the following fields: WITHDRAWN ROUTES field, Network Reachability Information fields, MP_REACH_NLRI field, and MP_UNREACH_NLRI field. The processing of an UPDATE message in this form is undefined. β οΈ
4. Multiprotocol Unreachable NLRI - MP_UNREACH_NLRI (Type Code 15): β¨
okay so this one is an optional non-transitive attribute π and its whole job is withdrawing a bunch of unfeasible routes from service. bye bye routes ππ₯
+---------------------------------------------------------+
| Address Family Identifier (2 octets) |
+---------------------------------------------------------+
| Subsequent Address Family Identifier (1 octet) |
+---------------------------------------------------------+
| Withdrawn Routes (variable) |
+---------------------------------------------------------+
here's what each field does, bestie π«Ά
Address Family Identifier (AFI):
this one, together with the Subsequent Address Family Identifier field, tells you which Network Layer protocols the address in the Next Hop field has to belong to, how that next hop address is encoded, and what the Network Layer Reachability Information after it means π§ . if the Next Hop can come from more than one Network Layer protocol, the encoding of the Next Hop MUST provide a way to figure out which protocol it is π
the currently defined values for this field are specified in the IANA's Address Family Numbers registry [IANA-AF] π
Subsequent Address Family Identifier (SAFI):
this one, paired with the Address Family Identifier, does the same job: it names the Network Layer protocols the Next Hop address must belong to, how that address is encoded, and the semantics of the Network Layer Reachability Information that follows πΈ same rule applies too, so if the Next Hop is allowed to come from more than one Network Layer protocol, the encoding of the Next Hop MUST provide a way to determine its Network Layer protocol β¨
Withdrawn Routes Network Layer Reachability Information:
this is a variable-length field listing the NLRI for the routes being withdrawn from service π¦ the meaning of the NLRI is identified by the <AFI, SAFI> combo carried in the attribute π
when the Subsequent Address Family Identifier field is set to one of the values defined in this document, each NLRI is encoded as specified in the "NLRI encoding" section of this document π
an UPDATE message that contains the MP_UNREACH_NLRI is not required to carry any other path attributes π it can just vibe on its own π
5. NLRI Encoding π§
the Network Layer Reachability information gets encoded as one or more 2-tuples shaped like <length, prefix> π here's the layout:
+---------------------------+
| Length (1 octet) |
+---------------------------+
| Prefix (variable) |
+---------------------------+
here's what each piece means:
a) Length:
the Length field tells you how many bits long the address prefix is π a length of zero means a prefix that matches all addresses (as specified by the address family), with the prefix itself being zero octets π
b) Prefix:
the Prefix field holds an address prefix, followed by enough trailing bits to make the end of the field land on an octet boundary π§© and lowkey the value of those trailing bits is irrelevant π
6. Subsequent Address Family Identifier β¨
this document defines the following values for the Subsequent Address Family Identifier field that shows up in the MP_REACH_NLRI and MP_UNREACH_NLRI attributes π
1- Network Layer Reachability Information used for unicast forwarding2- Network Layer Reachability Information used for multicast forwarding
an implementation MAY support all, some, or none of the Subsequent Address Family Identifier values defined in this document π no pressure, it's your choice π«Ά
7. Error Handling π¬
okay this part is serious, so listen up π if a BGP speaker gets an UPDATE message from a neighbor that contains the MP_REACH_NLRI or MP_UNREACH_NLRI attribute, and the speaker figures out that the attribute is incorrect, the speaker MUST delete all the BGP routes it received from that neighbor whose AFI/SAFI matches the one carried in the incorrect MP_REACH_NLRI or MP_UNREACH_NLRI attribute π then, for the whole BGP session that UPDATE came in on, the speaker SHOULD ignore all the later routes with that AFI/SAFI received over that session π ββοΈ
and wait, there's more π the speaker MAY also terminate the BGP session that UPDATE message was received over π₯ if it does, the session SHOULD be terminated with the Notification message code/subcode indicating "UPDATE Message Error"/"Optional Attribute Error" π£
this part is a whole vibe check. handle the errors properly, babe, or things go sideways fast ππ¨
8. Use of BGP Capability Advertisement π
a BGP speaker that uses Multiprotocol Extensions SHOULD use the Capability Advertisement procedures [BGP-CAP] to figure out whether it could use Multiprotocol Extensions with a particular peer π€
the fields in the Capabilities Optional Parameter get set like this π§ the Capability Code field is set to 1 (which means Multiprotocol Extensions capabilities) π the Capability Length field is set to 4 π’ and the Capability Value field looks like this:
0 7 15 23 31
+-------+-------+-------+-------+
| AFI | Res. | SAFI |
+-------+-------+-------+-------+
here's the breakdown:
- AFI - Address Family Identifier (16 bit), encoded the same way as in the Multiprotocol Extensions
- Res. - Reserved (8 bit) field. SHOULD be set to 0 by the sender and ignored by the receiver.
- Note that not setting the field value to 0 may create issues for a receiver not ignoring the field. In addition, this definition is problematic if it is ever attempted to redefine the field. π¬
- SAFI - Subsequent Address Family Identifier (8 bit), encoded the same way as in the Multiprotocol Extensions
if a speaker supports multiple <AFI, SAFI> tuples, it includes them as multiple Capabilities in the Capabilities Optional Parameter π
for a bi-directional exchange of routing information for a particular <AFI, SAFI> between a pair of BGP speakers, each speaker MUST advertise to the other (through the Capability Advertisement mechanism) the capability to support that particular <AFI, SAFI> route π«Ά no one-sided talking allowed π£οΈ
9. IANA Considerations πΈ
as specified in this document, the MP_REACH_NLRI and MP_UNREACH_NLRI attributes contain the Subsequence Address Family Identifier (SAFI) field π the SAFI name space is defined in this document, and IANA registers and maintains the values for the SAFI namespace like this:
- SAFI values 1 and 2 are assigned in this document. π
- SAFI value 3 is reserved. It was assigned by RFC 2858 for a use that was never fully implemented, so it is deprecated by this document. π₯
- SAFI values 5 through 63 are to be assigned by IANA using either the Standards Action process, defined in [RFC2434], or the Early IANA Allocation process, defined in [RFC4020]. π
- SAFI values 67 through 127 are to be assigned by IANA, using the "First Come First Served" policy, defined in RFC 2434. π
- SAFI values 0 and 255 are reserved. π
- SAFI values 128 through 240 are part of the previous "private use" range. At the time of approval of this document, the unused values were provided to IANA by the Routing Area Director. These unused values, namely, 130, 131, 135 through 139, and 141 through 240, are considered reserved in order to avoid conflicts. π§
- SAFI values 241 through 254 are for "private use", and values in this range are not to be assigned by IANA. π¦
10. Comparison with RFC 2858 π
this document makes the use of the next hop information consistent with the information carried in the NEXT_HOP BGP path attribute β¨
this document removes the definition of SAFI 3 and deprecates SAFI 3 ποΈ
this document changes the partitioning of the SAFI space π° in RFC 2858, SAFI values 128 through 240 were part of the "private use" range. this document says that, of that range, allocations that are currently in use are to be recognized by IANA, and that the unused values, namely 130, 131, 135 through 139, and 141 through 240, should be considered reserved π
this document renames the Number of SNPAs field to Reserved and removes the rest of the SNPA-related information from the MP_REACH_NLRI attribute π§Ή
11. Comparison with RFC 2283 π«
this document restricts the MP_REACH_NLRI attribute to carry only a single instance of <AFI, SAFI, Next Hop Information, ...> π―
this document restricts the MP_UNREACH_NLRI attribute to carry only a single instance of <AFI, SAFI, ...> π―
this document clarifies the handling of an UPDATE message that carries no NLRI, other than the one encoded in the MP_REACH_NLRI attribute π§
this document clarifies error handling in the presence of MP_REACH_NLRI or MP_UNREACH_NLRI attributes π οΈ
this document specifies the use of BGP Capabilities Advertisements in conjunction with multi-protocol extensions π€
finally, this document includes the "IANA Consideration" section π
12. Security Considerations π¨
okay, this one's dramatic but it's important π«£ this extension to BGP does not change the underlying security issues inherent in the existing BGP. so the same security concerns from regular BGP still apply here, no escape ππ
13. Acknowledgements π«Ά
the authors would like to thank members of the IDR Working Group for their review and comments π we love a community that shows up π
14. Normative References π
[BGP-CAP] Chandra, R. and J. Scudder, "Capabilities Advertisement
with BGP-4", RFC 3392, November 2002.
[BGP-4] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway
Protocol 4 (BGP-4)", RFC 4271, January 2006.
[IANA-AF] "Address Family Numbers", Reachable from
http://www.iana.org/numbers.html
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998.
[RFC4020] Kompella, K. and A. Zinin, "Early IANA Allocation of
Standards Track Code Points", BCP 100, RFC 4020, February
2005.
Authors' Addresses π©βπ»
Tony Bates
Cisco Systems, Inc.
EMail: tbates@cisco.com
Ravi Chandra
Sonoa Systems
EMail: rchandra@sonoasystems.com
Dave Katz
Juniper Networks, Inc.
EMail: dkatz@juniper.net
Yakov Rekhter
Juniper Networks, Inc.
EMail: yakov@juniper.net
Full Copyright Statement β
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property β¨
okay so the IETF is not picking a side π on whether any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology in this document are valid, or how far they reach. It also isn't saying whether any license under those rights might be available, and it hasn't gone hunting for those rights on its own either. ngl this is a very "we're staying neutral" moment π . If you want the procedures for rights in RFC documents, check out BCP 78 and BCP 79 π.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission for implementers or users to use those proprietary rights can all be found in the IETF's online IPR repository at http://www.ietf.org/ipr ποΈβ¨
The IETF also invites any interested party to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org π bestie, if you spot something, speak up!
Acknowledgement
Funding for the RFC Editor function is currently provided by the Internet Society π«Ά so big thanks to them for keeping the RFC Editor running ππ
π¦ where this page comes from
- ietf: rfc4760 2007-01
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms