RFC 3883

Detecting Inactive Neighbors over OSPF Demand Circuits (DC)

๐Ÿ“… published October 2004, from ietf

RFC 3883: Detecting Inactive Neighbors over OSPF Demand Circuits (DC) โœจ

okay bestie, this one is a Standards Track doc ๐ŸŽ€ from October 2004, so it's an actual protocol spec and not just a vibe. it's by Sira Panduranga Rao (from UTA ๐Ÿฆ‹), Alex Zinin (Alcatel ๐Ÿ’…), and Abhay Roy (Cisco Systems ๐ŸŒˆ). it's labeled Network Working Group, and it updates RFC 1793. there's no Obsoletes line, so it doesn't replace anything ๐Ÿซถ


Status of This Memo ๐Ÿ“‹

ok so this doc specifies an Internet standards track protocol for the Internet community, and it's basically asking everyone to talk about it and suggest improvements ๐Ÿ’ฌ for the official standardization state and status of this protocol, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐Ÿ“– and distribution of this memo is unlimited, so share it with everyone ๐ŸŒธ

Copyright (C) The Internet Society (2004).

Abstract ๐Ÿฆ‹

so OSPF is a link-state intra-domain routing protocol used in IP networks ๐ŸŒ and the way it behaves over demand circuits (DC) got optimized in RFC 1793 so there's less overhead traffic ๐Ÿ˜Œ a big piece of those demand circuit extensions is the Hello suppression mechanism ๐Ÿคซ which lets a demand circuit go down when no interesting traffic is crossing the link. the catch is that it becomes basically impossible to detect an OSPF-inactive neighbor over that kind of link ๐Ÿ˜ญ this memo introduces a new mechanism called "neighbor probing" to fix that ๐Ÿ’–

1. Motivation ๐Ÿงš

okay so when you're running over demand circuits, the remote neighbor might be unable to run OSPF [RFC2328] ๐Ÿ˜ฌ and as a result it might not be able to route application traffic either. here are the possible scenarios:

  • The OSPF process might have died on the remote neighbor. ๐Ÿ’€
  • Oversubscription (Section 7 of [RFC1793]) may cause a continuous drop of application data at the link level. ๐Ÿ“‰

the tea is that the local router can't spot problems like this, because the Hello exchange is suppressed on demand circuits ๐Ÿ™ˆ and if the network topology is such that other routers can't share what they know about the remote neighbor through flooding, then the local router and everything behind it will never find out ๐Ÿ˜ฑ which means application traffic can keep getting forwarded to the OSPF-incapable router. not it ๐Ÿ’”

this memo describes a backward-compatible neighbor probing mechanism that's based on the details of the standard flooding procedure OSPF routers already follow โœจ

2. Proposed Solution ๐ŸŽ€

the solution this doc proposes uses link-state update packets to detect whether the OSPF process is still operational on the remote neighbor ๐Ÿ” we call this process "Neighbor probing" ๐Ÿฆ‹ the whole idea is to let either of the two neighbors connected over a demand circuit test the remote neighbor at any time (see Section 2.1) ๐Ÿ’…

the routers across the demand circuit can be connected by a point-to-point link, a virtual link, or a point-to-multipoint interface ๐ŸŒˆ broadcast networks and Non-Broadcast Multi-Access (NBMA) links aren't considered here, since Hello suppression isn't used in those cases (Section 3.2 [RFC1793]) ๐Ÿ™…โ€โ™€๏ธ

here's how neighbor probing goes: after a router has synchronized the Link State Database (LSDB) with its neighbor over the demand circuit, the demand circuit may be torn down if there's no more application traffic ๐ŸŒ™ when application traffic starts going over the link again, the link comes back up โ˜€๏ธ if ospfIfDemandNbrProbe is enabled, the routers SHOULD probe each other ๐Ÿซถ and while the link is up, the routers may also periodically probe each other every ospfIfDemandNbrProbeInterval โฐ neighbor probing should not be treated as interesting traffic and should not keep the demand circuit up ๐Ÿ›‘ (the implementation details are outside the scope of this document, so that's on the implementers ๐Ÿง‘โ€๐Ÿ’ป)

one more thing, bestie ๐Ÿšจ if one or more of the router's links are oversubscribed (see Section 7 of [RFC1793]), implementations should take that into account ๐Ÿ‘€ even when the link status is up and application data is flowing, only a limited number of neighbors are really reachable ๐Ÿ˜ฎโ€๐Ÿ’จ so to make sure temporarily unreachable neighbors don't get mistakenly declared down, neighbor probing should only target neighbors that are actually reachable (meaning a circuit is established with that neighbor at the moment the probing procedure needs to start) โœ… this check is also treated as an implementation detail ๐Ÿง

2.1. Neighbor Probing ๐ŸŒธ

this method is completely compatible with standard OSPF implementations, and that's the best part ๐Ÿฅน it's built on standard behavior that OSPF implementations must already follow to keep their LSDBs synchronized ๐Ÿ”„

when a router needs to verify the OSPF capability of a neighbor reachable through a demand circuit, it should flood to that neighbor any LSA in its LSDB that would normally be sent during the initial LSDB synchronization process ๐Ÿ“จ (most of the time, that LSA has already been flooded to the neighbor by the time probing starts ๐Ÿ˜Œ) for example, the router may flood its own router-LSA without originating a new version, or it may flood the neighbor's own router-LSA ๐Ÿง  if the neighbor is still alive and OSPF-capable, it replies with a link state acknowledgement or a link state update (an implied acknowledgement) ๐Ÿ™Œ and the LSA gets removed from the neighbor's retransmission list ๐Ÿ—‘๏ธ

the implementations should limit the number of times an LSA can be retransmitted to ospfIfDemandNbrProbeRetxLimit when it's being used for neighbor probing ๐Ÿšฆ if no acknowledgement (explicit or implicit) comes back within a predefined period of time, the probing router should treat that as evidence the neighbor is unreachable ๐Ÿ˜ณ (this proves wrong the assumption of reachability used in [RFC1793]) and should bring the adjacency down ๐Ÿ“ด

the vibe check here: when the neighbor being probed gets one of these link state update packets, the received LSA has the same contents as the LSA in its LSDB ๐Ÿซ  so it normally shouldn't cause any extra flooding. BUT since LSA refreshes aren't flooded over demand circuits, the received LSA might have a higher Sequence Number ๐Ÿ‘€ which means the first probe LSA gets flooded further by the neighbor. if the current version of the probe LSA has already been flooded to the neighbor, it won't be propagated any further by the neighbor ๐Ÿ™…โ€โ™€๏ธ and in any case, subsequent (non-first) probe LSAs won't cause further flooding until the LSA's sequence number is incremented ๐Ÿ”ข

last but not least, the implementation should make sure (through internal mechanisms) that OSPF link state update packets sent over the demand circuit for neighbor probing don't stop that circuit from being torn down ๐ŸŒ™๐Ÿ’–

virtual links can be treated like point-to-point links, so the techniques in this memo apply to virtual links too ๐Ÿ”— and a point-to-multipoint interface running as a demand circuit (section 3.5 [RFC1793]) can be treated as individual point-to-point links, which means the solution from section 2 covers it ๐ŸŒˆโœจ

Intellectual Property โœจ

okay so the IETF is NOT taking a side on whether any IP rights (patents, copyrights, that whole vibe) are valid or how far they reach ๐Ÿ’… It also doesn't say it went digging to find any. no cap, it's just not making that call. ๐Ÿซถ

if you want the rules for how the IETF handles rights in its documents, check out BCP 78 and BCP 79 ๐Ÿ”ฅ

Copies of IPR disclosures sent to the IETF Secretariat live in the IETF online IPR repository at http://www.ietf.org/ipr ๐ŸŒธ You'll also find any promises of licenses there, plus the results of anyone trying to get a general license or permission to use those proprietary rights for implementing or using this spec. โœจ

And if you spot a copyright, patent, patent application, or other proprietary right that might cover tech needed to implement this standard, the IETF wants to hear about it! ๐Ÿฆ‹ Send the info to ietf-ipr@ietf.org ๐Ÿ’œ

Acknowledgement

bestie, the RFC Editor function is funded by the Internet Society ๐ŸŒˆ So thank you to them for keeping the lights on! ๐ŸŽ€๐Ÿซถ

๐Ÿ“ฆ where this page comes from