RFC 7313

Enhanced Route Refresh Capability for BGP-4

๐Ÿ“… published July 2014, from ietf

Part 1 of 2 ๐Ÿ’–

RFC 7313: Enhanced Route Refresh Capability for BGP-4 โœจ

okay bestie, this is RFC 7313 ๐Ÿฆ‹ a Standards Track doc from the IETF, published July 2014 (ISSN 2070-1721). the authors are K. Patel, E. Chen, and B. Venkatachalapathy, all from Cisco Systems ๐Ÿ’…. it updates RFC 2918, which is the original route refresh spec, and its header doesn't list anything it obsoletes. the whole vibe is BGP-4 route refresh getting a glow-up ๐ŸŒˆ

Abstract ๐ŸŒธ

in this doc, we level up the existing BGP route refresh stuff so there's a clear start and end marker for a route refresh ๐Ÿšฉ that makes it way easier to fix BGP Routing Information Base (RIB) inconsistencies without disrupting anything. this doc also updates RFC 2918 ๐ŸŽ€

Status of This Memo ๐Ÿ“‹

this is an Internet Standards Track document ๐Ÿซถ

it's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). if you want more on Internet Standards, check Section 2 of RFC 5741 ๐Ÿ“š

for info on the current status of this doc, any errata, and how to give feedback, go to http://www.rfc-editor.org/info/rfc7313 โœจ

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

this doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stood on the publication date. read those carefully, because they spell out your rights and restrictions for this doc ๐Ÿ“œ any Code Components pulled out of this doc have to include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as the Simplified BSD License says ๐Ÿ’€

Table of Contents ๐Ÿ—‚๏ธ

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
2.  Requirements Language . . . . . . . . . . . . . . . . . . . .   2
3.  Protocol Extensions . . . . . . . . . . . . . . . . . . . . .   2
  3.1.  Enhanced Route Refresh Capability . . . . . . . . . . . .   3
  3.2.  Subtypes for ROUTE-REFRESH Message  . . . . . . . . . . .   3
4.  Operation . . . . . . . . . . . . . . . . . . . . . . . . . .   3
5.  Error Handling  . . . . . . . . . . . . . . . . . . . . . . .   5
6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
7.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   7
9.  Normative References  . . . . . . . . . . . . . . . . . . . .   7

1. Introduction โœจ

sometimes you NEED to check that BGP routing is consistent between speakers, like making sure no route withdrawals got lost along the way [RFC4271] ๐Ÿ•ต๏ธโ€โ™€๏ธ right now that's usually an offline, manual process, which is tedious and eats up so much time ๐Ÿ˜ญ

so this doc upgrades the existing BGP route refresh mechanisms [RFC2918] with a clear beginning and ending for a route refresh. a route refresh here means the full re-advertisement of the Adj-RIB-Out to a peer, subject to routing policies ๐Ÿงš the upgrade makes it possible to do online, non-disruptive consistency checks on BGP routing updates, which is so iconic ๐Ÿ‘‘

this doc updates [RFC2918] by redefining a field in the ROUTE-REFRESH message that used to be marked as Reserved ๐Ÿ’œ

2. Requirements Language ๐Ÿ“–

okay so the BCP 14 key words, "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL", mean what [RFC2119] says only when they're written in all caps ๐Ÿ™ˆ in lowercase or mixed case they're just regular English words with no normative meaning at all ๐Ÿ’…

3. Protocol Extensions ๐Ÿฆ‹

this doc adds two things to BGP: a brand new BGP capability called the "Enhanced Route Refresh Capability", and the message subtypes for the ROUTE-REFRESH message ๐ŸŽ€

3.1. Enhanced Route Refresh Capability ๐ŸŒธ

the "Enhanced Route Refresh Capability" is a new BGP capability [RFC5492] ๐Ÿ”ฅ IANA gave it Capability Code 70, and the Capability Length field for it is zero ๐Ÿ“

when a BGP speaker advertises this capability to a peer, it's basically saying "hey, I support the ROUTE-REFRESH message subtypes and the related procedures in this doc" ๐Ÿซถ

3.2. Subtypes for ROUTE-REFRESH Message ๐Ÿ’–

the "Reserved" field in the ROUTE-REFRESH message from [RFC2918] got redefined as the "Message Subtype" field, with these values:

          0 - Normal route refresh request [RFC2918]
              with/without Outbound Route Filtering (ORF) [RFC5291]
          1 - Demarcation of the beginning of a route refresh
              (BoRR) operation
          2 - Demarcation of the ending of a route refresh
              (EoRR) operation
        255 - Reserved

every other subtype value is reserved for future use, so check Section 6 ("IANA Considerations") for that ๐Ÿ”ฎ and the way the new subtypes actually get used is in Section 4 ("Operation") ๐Ÿ’…

4. Operation ๐Ÿ› ๏ธ

okay the vibe here: any BGP speaker that supports the ROUTE-REFRESH subtypes and the related procedures SHOULD advertise the "Enhanced Route Refresh Capability" โœจ

the procedures below only apply if a BGP speaker has received the "Enhanced Route Refresh Capability" from a peer ๐Ÿ™Œ

before a speaker starts a route refresh, whether it's started locally or as a reply to a "normal route refresh request" from the peer, the speaker MUST send a BoRR message ๐Ÿšฉ once it's finished re-advertising the entire Adj-RIB-Out to the peer, it MUST send an EoRR message ๐Ÿ

conceptually, the "entire Adj-RIB-Out" for a peer means every route entry in that peer's Adj-RIB-Out at the moment the route refresh starts ๐Ÿง  those entries cover both the reachability info and the unreachability info ๐ŸŒˆ

when a route entry in the Adj-RIB-Out changes, only the modified entry needs to get advertised ๐Ÿฆ‹ no need to resend the whole thing, bestie ๐Ÿ’…

when a BGP speaker processes a ROUTE-REFRESH message from a peer, it MUST look at the "message subtype" field and take the right actions ๐Ÿ‘€ the processing rules for subtype 0 are in [RFC2918] and [RFC5291] ๐Ÿ“š a BGP speaker can get a BoRR message from a peer at any time, either because the peer is answering a ROUTE-REFRESH message or because the peer decided to start a route refresh on its own ๐Ÿ˜ค

when a BGP speaker gets a BoRR message from a peer, it MUST mark every route with that Address Family Identifier and Subsequent Address Family Identifier, <AFI, SAFI> [RFC2918], from that peer as stale ๐Ÿซฅ as the peer's re-advertisement of its Adj-RIB-Out comes in, those new routes replace any matching stale routes โ™ป๏ธ when the speaker gets an EoRR message from a peer, it MUST immediately remove any routes from that peer still marked as stale for that <AFI, SAFI> ๐Ÿ—‘๏ธ those purged routes MAY be logged for future analysis ๐Ÿ“ a BGP speaker MAY ignore any EoRR message it gets without first receiving an associated BoRR message ๐Ÿ™ˆ those messages MAY be logged for future analysis too ๐Ÿ”

an implementation MAY set a locally configurable upper bound on how long it keeps stale routes โณ once that bound is hit, the implementation MAY remove any routes from the peer that are still stale for that <AFI, SAFI>, without waiting for an EoRR message ๐Ÿ’จ

the next bit is about making this play nice with BGP Graceful Restart [RFC4724]. the point is to keep the End-of-RIB (EoR) from Graceful Restart and the EoRR from this spec separate, so stale routes don't get cleaned up too early ๐Ÿฅบ

for a BGP speaker that supports BGP Graceful Restart, it MUST NOT send a BoRR for an <AFI, SAFI> to a neighbor before it sends that neighbor the EoR for the same <AFI, SAFI> ๐Ÿšซ and a BGP speaker that got the Graceful Restart Capability from its neighbor MUST ignore any BoRRs for an <AFI, SAFI> from that neighbor until it has received the EoR for that <AFI, SAFI> from the neighbor ๐Ÿ›‘ the BGP speaker SHOULD log an error for that condition so it can be analyzed later ๐Ÿ”Ž

Part 2 is coming next, bestie ๐Ÿงš

7. Security Considerations ๐Ÿ”

okay so bestie, security considerations are given in [RFC4272] ๐Ÿซถ, but ngl that doc doesn't cover Route-Refresh or a bunch of other BGP extensions ๐Ÿ˜ญ. this document doesn't really change the underlying security issues for Route-Refresh ๐Ÿ’…, although better error handling may help with operational security โœจ. not me being dramatic but the security story is a whole vibe, go read the older stuff ๐Ÿ™ˆ

8. Acknowledgements ๐ŸŽ€

the authors wanna give a big shoutout to Pedro Marques, Pradosh Mohapatra, Robert Raszuk, Pranav Mehta, Shyam Sethuram, Bruno Decraene, Martin Djernaes, Jeff Haas, Ilya Varlashkin, Rob Shakir, Paul Jakma, Jie Dong, Qing Zeng, Albert Tian, Jakob Heitz, and Chris Hall for reviewing and leaving comments ๐ŸŒธ. they also thank John Scudder for his review and contribution to this document ๐Ÿ‘‘ literally iconic behavior ๐Ÿ’–

9. Normative References ๐Ÿ“š

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC2918] Chen, E., "Route Refresh Capability for BGP-4", RFC 2918, September 2000.
  • [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.
  • [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, January 2006.
  • [RFC4724] Sangli, S., Chen, E., Fernando, R., Scudder, J., and Y. Rekhter, "Graceful Restart Mechanism for BGP", RFC 4724, January 2007.
  • [RFC5291] Chen, E. and Y. Rekhter, "Outbound Route Filtering Capability for BGP-4", RFC 5291, August 2008.
  • [RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement with BGP-4", RFC 5492, February 2009.

Authors' Addresses ๐Ÿ’Œ

Keyur Patel
Cisco Systems
170 W. Tasman Drive
San Jose, CA  95134
USA

EMail: keyupate@cisco.com
Enke Chen
Cisco Systems
170 W. Tasman Drive
San Jose, CA  95134
USA

EMail: enkechen@cisco.com
Balaji Venkatachalapathy

EMail: balaji_pv@hotmail.com

that's the whole RFC, bestie ๐ŸŒˆ๐Ÿฆ‹ you did amazing, go touch some grass and then read it again ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from