RFC 5243

OSPF Database Exchange Summary List Optimization

πŸ“… published May 2008, from ietf

Status of This Memo

Okay bestie, let's get the title block out of the way first πŸ’… This RFC is RFC 5243, titled "OSPF Database Exchange Summary List Optimization." It was written by Richard G. Ogier (R. Ogier) of SRI International and published in May 2008 πŸŽ€ Its category is Informational, which means it gives information to the Internet community and doesn't specify an Internet standard of any kind πŸ¦‹ The title block doesn't list any RFCs that it obsoletes or updates 🌸

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. πŸ’œ

Abstract

okay so this doc is about making the Database Exchange in OSPFv2 and OSPFv3 way less wasteful, and it's backward compatible 🫢 The trick: a router skips listing an LSA in its Database Description packets to a neighbor if that neighbor already sent it the same or a newer instance. That cuts Database Description overhead by about 50% in big networks 😭 and it doesn't mess with synchronization, since it only leaves out stuff that wasn't needed anyway ✨

1. Introduction ✨

so OSPFv2 [RFC2328] and OSPFv3 [RFC2740] routers, when two neighbors become adjacent, sync their link-state databases through the Database Exchange process 🧚 Each router sends the other a bunch of Database Description (DD) packets that describe its link-state database, by listing every LSA (including each LSA's header) in one of those packets. That's how each router figures out whether the other one has newer LSA instances it should request with Link State Request packets πŸ‘€

The optimization basically notices that a router (master or slave) doesn't need to list an LSA in a DD packet if it already knows the neighbor has the same or a newer instance, so the neighbor won't request it anyway πŸ’… To avoid listing those LSAs, whenever an LSA shows up in a DD packet from the neighbor, and the neighbor's Database summary list has an instance of that LSA that is the same as or less recent than the one received, the LSA gets removed from the summary list πŸ”₯

This is called the Database Exchange summary list optimization. It doesn't affect synchronization, because the LSAs it skips are unnecessary πŸ’– It's fully backward compatible with OSPF 🌈 It cuts Database Description overhead by about 50% in large networks where routers are usually already nearly synchronized when they become adjacent, since it roughly halves the total number of LSA headers exchanged in those networks 😭 It's especially useful in big networks with limited bandwidth, like large mobile ad hoc networks πŸ¦‹

2. Specification of Optimization

The Database Exchange summary list optimization is defined by modifying Section 10.6 "Receiving Database Description Packets" of RFC 2328 as follows. The second-to-last paragraph of Section 10.6 is replaced with the following augmented paragraph:

When the router accepts a received Database Description Packet as the next in sequence, the packet contents are processed as follows. For each LSA listed, the LSA's LS type is checked for validity. If the LS type is unknown (e.g., not one of the LS types 1-5 defined by this specification), or if this is an AS-external-LSA (LS type = 5) and the neighbor is associated with a stub area, generate the neighbor event SeqNumberMismatch and stop processing the packet. Otherwise, the router looks up the LSA in its database to see whether it also has an instance of the LSA. If it does not, or if the database copy is less recent, the LSA is put on the Link state request list so that it can be requested (immediately or at some later time) in Link State Request Packets. In addition, if the Database summary list contains an instance of the LSA that is the same as or less recent than the listed LSA, the LSA is removed from the Database summary list.

The above additional step (which updates the Database summary list) may be performed either before or after the router looks up the listed LSA in its database and possibly adds the LSA to the Link state request list. However, to implement the optimization, the additional step must be performed for each LSA listed in the received DD packet (to fully update the Database summary list) before the next DD packet is sent in response.

Although the optimization does not require that LSAs be listed in DD packets in any particular order, faster lookup of LSAs in the Database summary list may be possible if LSAs are listed in the same order by all routers. If such an ordering is used, then to encourage different implementations to use the same ordering, this document recommends that LSAs be listed in lexicographically increasing order of (LS type, Link State ID, Advertising Router) for OSPFv2 and (LS type, Advertising Router, Link State ID) for OSPFv3. πŸŽ€

3. Example

This section walks through an example to show the Database Exchange summary list optimization in action 🧁 Say routers RT1 and RT2 already have identical databases when they start Database Exchange, and the list of LSA headers for the database fits into two DD packets. The standard Database Exchange then goes like this when RT1 is the first to change the neighbor state to ExStart. Notice that each router sends two full DD packets 😩

   RT1 (slave)                                      RT2 (master)

   ExStart      Empty DD (Seq=x,I,M,Master)
              ------------------------------>
                Empty DD (Seq=y,I,M,Master)         ExStart
              <------------------------------
   Exchange     Full  DD (Seq=y,M,Slave)
              ------------------------------>
                Full  DD (Seq=y+1,M,Master)         Exchange
              <------------------------------
                Full  DD (Seq=y+1,Slave)
              ------------------------------>
                Full  DD (Seq=y+2, Master)
              <------------------------------
    Full        Empty DD (Seq=y+2, Slave)
              ------------------------------>
                                                    Full

If the optimization is used, when RT2 gets the first full DD packet from RT1, it removes every LSA listed in that DD packet from its summary list. Then RT2 sends a DD packet listing the remaining LSAs (since all the LSA headers fit into two DD packets). When RT1 receives that DD packet, it removes those remaining LSAs from its summary list (leaving it empty) and sends an empty DD packet to RT2 🌸

With the optimization, each router sends only one full DD packet instead of two, as shown below. πŸ¦‹

   RT1 (slave)                                      RT2 (master)

   ExStart      Empty DD (Seq=x,I,M,Master)
              ------------------------------>
                Empty DD (Seq=y,I,M,Master)         ExStart
              <------------------------------
   Exchange     Full  DD (Seq=y,M,Slave)
              ------------------------------>
                Full  DD (Seq=y+1,Master)           Exchange
              <------------------------------
    Full        Empty DD (Seq=y+1, Slave)
              ------------------------------>
                                                    Full

4. Security Considerations

This document does not raise any new security concerns. πŸ”’ No new security drama here, periodt ✨

5. IANA Considerations

This document specifies a simple backward-compatible optimization for OSPFv2 and OSPFv3 that does not require any new number assignment. 🌈 Nothing new to register with IANA, so no paperwork for us πŸ’…

6. Normative References

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

[RFC2740] Coltun, R., Ferguson, D., and J. Moy, "OSPF for IPv6", RFC 2740, December 1999.

7. Acknowledgments

The recommendation to list LSAs in lexicographical order was suggested by Acee Lindem. 🫢 Shoutout Acee!! πŸ‘‘

Author's Address

Richard G. Ogier EMail: rich.ogier@earthlink.net


Copyright (C) The IETF Trust (2008). πŸŽ€

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. πŸ’œ

πŸ“¦ where this page comes from