RFC 4811

OSPF Out-of-Band Link State Database (LSDB) Resynchronization

πŸ“… published March 2007, from ietf

Network Working Group πŸ—‚οΈ vibes, and the title block is giving informational. This is RFC 4811, dated March 2007. It was written by L. Nguyen (Cisco Systems), A. Roy (Cisco Systems), and A. Zinin (Alcatel-Lucent). The title block doesn't list anything it obsoletes or updates, so there's no such line. πŸŽ€

Status of This Memo πŸ“œ

Okay so this memo is here to give info to the Internet community πŸ’–. It is not an Internet standard of any kind, and anyone can share it freely with zero restrictions πŸ¦‹.

Copyright (C) The IETF Trust (2007).

Abstract 🌸

OSPF is a link-state intra-domain routing protocol used in IP networks ✨. It keeps its Link State Database (LSDB) in sync in two ways. First there's the initial sync, which happens when an OSPF router has just joined the network. Then there's asynchronous flooding, which keeps everything synced after topology changes once that first step is done πŸ’…. Sometimes routers do need to resync their LSDBs, but the OSPF standard doesn't let them do that without actually changing their view of the network's topology 😭.

This memo describes a vendor-specific mechanism for doing that kind of out-of-band LSDB sync 🫢. It was proposed before Graceful OSPF Restart, which is in RFC 3623, existed 🧚. At least one major vendor implements and supports it, and it's already deployed in the field πŸ”₯. This document is here to capture the details so the public can use them. It is not an IETF standard 🌈.

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................2
   2. Proposed Solution ...............................................2
      2.1. The LR-Bit .................................................3
      2.2. OSPF Neighbor Data Structure ...............................3
      2.3. Hello Packets ..............................................4
      2.4. DBD Packets ................................................4
      2.5. Neighbor State Treatment ...................................7
      2.6. Initiating OOB LSDB Resynchronization ......................7
   3. Backward Compatibility ..........................................7
   4. Security Considerations .........................................7
   5. IANA Considerations .............................................7
   6. References ......................................................8
      6.1. Normative References .......................................8
      6.2. Informative References .....................................8
   Appendix A.  Acknowledgements ......................................9

1. Introduction πŸ¦‹

Okay so according to the OSPF standard [RFC2328], once two OSPF routers have made an adjacency (their neighbor Finite State Machines (FSMs) have hit Full state), the routers advertise those adjacency states in their router-Link State Advertisements (LSAs) πŸ’–. The asynchronous flooding algorithm is what keeps the routers' LSDBs in sync when the topology changes πŸ”₯.

But here's the problem 😭. If routers need to resync their LSDBs for some reason, they can't do it without actually shoving the neighbor FSMs into the ExStart state. That effectively removes the adjacencies from the router-LSAs. That's a big no if you're trying to avoid routing table flaps during a database resync πŸ™ˆ. So in this document, we're providing a way to do so-called out-of-band (OOB) LSDB resynchronization πŸŽ€.

The mechanism can be used in a bunch of situations, including when routers are picking up adjacencies after a reload 🌸. Adjacency preemption is out of scope for this document πŸ’…. The only details covered here are the ones related to LSDB resynchronization ✨.

2. Proposed Solution πŸ‘‘

With this Out-of-Band Resynchronization Solution, the OSPF Database Description (DBD) packet format changes to include a new R-bit that signals OOB LSDB resynchronization 🌈. Every DBD packet sent during the OOB resync procedure goes out with the R-bit set πŸ’œ.

Two new fields also get added to the neighbor data structure 🧚. The first one shows whether a neighbor can do OOB resync. The second one shows that OOB LSDB resync is currently happening. That second field is clever because it lets OSPF implementations reuse the existing neighbor FSM code 🫢.

A bit is taken in the Extended Options (EO) TLV (see [RFC4813]) πŸ“. Routers set this bit to say they can support this technique ✨.

2.1. The LR-Bit πŸ¦‹

A new bit called LR (LR stands for LSDB Resynchronization) is added to the LLS Extended Options TLV (see [RFC4813]) πŸ’–. Its value is 0x00000001, as you can see in Figure 1 πŸ‘€. For more on the Extended Options bit definitions, check the "IANA Considerations" section of [RFC4813] πŸ“œ. Routers set the LR-bit to announce that they can do OOB LSDB resynchronization πŸ”₯.

   +---+---+---+---+---+---+---+- -+---+---+---+---+---+---+---+---+
   | * | * | * | * | * | * | * |...| * | * | * | * | * | * | * | LR|
   +---+---+---+---+---+---+---+- -+---+---+---+---+---+---+---+---+

Figure 1. The Options Field

Routers that support the OOB LSDB resync technique set the LR-bit in the EO-TLV inside the LLS block attached to both Hello and DBD packets 🌸. Heads up, though: no bit gets set in the standard OSPF Options field πŸ™ˆ. That's true for OSPF packets and for LSAs too πŸ’….

2.2. OSPF Neighbor Data Structure 🌈

A new field gets added to the OSPF neighbor data structure, as described below ✨. It's called OOBResync, and it's a flag that means the router is currently doing OOB LSDB resynchronization with that neighbor πŸ’œ.

The OOBResync flag gets set when the router starts an OOB LSDB resynchronization (see Section 2.6 for more details) 🧚.

Routers clear the OOBResync flag under these conditions 🫢:

  • The neighbor data structure is first created.
  • The neighbor FSM transitions to any state lower than ExStart.
  • The neighbor FSM transitions to the ExStart state because a DBD packet with the R-bit clear has been received.
  • The neighbor FSM reaches the state Full.

Note that the OOBResync flag can only be TRUE while the neighbor FSM is in ExStart, Exchange, or Loading πŸ™ˆ. As mentioned above, if the FSM moves to any other state, the OOBResync flag should be cleared πŸ’….

It's important to know that this document doesn't change how the OSPF neighbor FSM operates πŸ”₯. What does change is what the router sends: depending on the state of the OOBResync flag, it sends either normal DBD packets or DBD packets with the R-bit set πŸ‘‘.

2.3. Hello Packets πŸ’–

Routers that can do OOB LSDB resynchronization should always set the LR-bit in their Hello packets 🌸. Basically, this is how everyone knows you're ready for the OOB resync energy ✨.

2.4. DBD Packets ✨

Okay bestie, routers that do this trick SHOULD always set the LR-bit in their DBD packets πŸ’–. The Options field from the very first DBD packet gets stored in the neighbor data structure, so the LR-bit MAY be used later to check if a neighbor can do OOB LSDB resynchronization πŸ‘€.

The DBD packet (type 2 OSPF) gets a glow-up πŸŽ€ with a new flag for the OOB LSDB resynchronization procedure. Figure 2 shows the new look.

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Version #   |       2       |         Packet length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          Router ID                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           Area ID                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |             AuType            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Authentication                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Authentication                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Interface MTU         |    Options    |0|0|0|0|R|I|M|MS
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     DD sequence number                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +-                                                             -+
   |                                                               |
   +-                      An LSA Header                          -+
   |                                                               |
   +-                                                             -+
   |                                                               |
   +-                                                             -+
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              ...                              |

                      Figure 2.  Modified DBD Packet

The R-bit in OSPF type 2 packets gets set when the OOBResync flag for that specific neighbor is TRUE. If a DBD packet arrives with the R-bit clear for a neighbor with an active OOBResync flag, the OOB LSDB resynchronization process gets canceled and the normal LSDB synchronization procedure kicks in πŸ”„.

When a DBD packet comes in with the R-bit set and the sender is known to be OOB-incapable, the packet SHOULD be dropped and a SeqNumber-Mismatch event SHOULD be generated for the neighbor 🚫.

Processing of DBD packets is glowing up like this ✨:

  1. If the OOBResync flag for the neighbor is set (the LSDB resynchronization process has been started) and the received DBD packet does not have the R-bit set, ignore the packet and generate a SeqNumberMismatch event for the neighbor FSM.
  2. Otherwise, if the OOBResync flag for the neighbor is clear and the received DBD packet has the R-bit set, perform the following steps:
    • If the neighbor FSM is in state Full and bits I, M, and MS are set in the DBD packet, set the OOBResync flag for the neighbor, put the FSM in ExStart state, and continue processing the DBD packet as described in [RFC2328].
    • Otherwise, ignore received DBD packet (no OOB DBD packets are allowed with OOBResync flag clear and FSM in state other than Full). Also, if the state of the FSM is Exchange or higher, generate a SeqNumberMismatch event for the neighbor FSM.
  3. Otherwise, process the DBD packet as described in [RFC2328].

During normal processing of the very first OOB DBD packet (with bits R, I, M, and MS set), if the receiving router gets picked as the Master, it MAY speed up the resynchronization process by replying to the received packet right away 🏎️.

It's also really important to put a time limit on how long an adjacency can hang out in the ExStart, Exchange, and Loading states with the OOBResync flag set πŸ•°οΈ. Pick a finite period of time, for example by capping how many times DBD and link state request packets can be retransmitted. If the adjacency doesn't reach Full state before the timeout, that's a sign the neighboring router can't resynchronize its LSDB with the local router 😬. The requesting router MAY decide to stop trying to resynchronize the LSDB over this adjacency (if, for example, it can be resynchronized via another neighbor on the same segment), or it MAY resynchronize using the legacy method by clearing the OOBResync flag and leaving the FSM in ExStart state. The neighboring router MAY decide to cancel the OOB procedure for the neighbor.

2.5. Neighbor State Treatment πŸ’…

An OSPF implementation supporting the described technique SHOULD modify the logic that checks the state of a neighbor FSM, like this:

  • FSM state transitioning from and to the Full state with the OOBResync flag set SHOULD NOT cause origination of a new version of router-LSA or network-LSA.
  • Any explicit checks for the Full state of a neighbor FSM for purposes other than LSDB synchronization and flooding SHOULD treat states ExStart, Exchange, and Loading as state Full, as long as the OOBResync flag is set for the neighbor. (Flooding and MaxAge-LSA-specific procedures SHOULD NOT check the state of the OOBResync flag, but SHOULD continue consulting only the FSM state.) 🧠

2.6. Initiating OOB LSDB Resynchronization πŸš€

To kick off out-of-band LSDB resynchronization, the router MUST first make sure the corresponding neighbor supports this tech (by checking the LR-bit in the Options field of the neighbor data structure) πŸ”. If the neighboring router is capable, the OOBResync flag for the neighbor SHOULD be set to TRUE and the FSM state SHOULD be forced to ExStart 🎯.

3. Backward Compatibility 🫢

Because OOB-capable routers explicitly announce their capability by setting the corresponding bit in the Options field, no DBD packets with the R-bit set are sent to OOB-incapable routers πŸ™Œ.

The LR-bit itself is transparent for OSPF implementations and does not affect communication between routers ✨.

4. Security Considerations πŸ”

The described technique does not introduce any new security issues into the OSPF protocol.

5. IANA Considerations πŸ“‹

Please refer to the "IANA Considerations" section of [RFC4813] for more information on the Extended Options bit definitions.

6. References πŸ“š

6.1. Normative References

[RFC2328]  Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.

[RFC3623]  Moy, J., Pillay-Esnault, P., and A. Lindem, "Graceful OSPF
           Restart", RFC 3623, November 2003.

6.2. Informative References

[RFC4813]  Friedman, B., Nguyen, L., Roy, A., Yeung, D., and A.
           Zinin, "OSPF Link-Local Signaling", RFC 4813, March 2007.

Appendix A. Acknowledgments 🌸

The authors would like to thank Acee Lindem, Russ White, Don Slice, and Alvaro Retana for their valuable comments 🫢.

Authors' Addresses πŸ’Œ

Liem Nguyen
Cisco Systems
225 West Tasman Drive
San Jose, CA  95134
USA
EMail: lhnguyen@cisco.com


Abhay Roy
Cisco Systems
225 West Tasman Drive
San Jose, CA  95134
USA
EMail: akr@cisco.com


Alex Zinin
Alcatel-Lucent
Mountain View, CA
USA
EMail: alex.zinin@alcatel-lucent.com

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 🧾

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement πŸ’–

Funding for the RFC Editor function is currently provided by the Internet Society.

πŸ“¦ where this page comes from