RFC 5329

Traffic Engineering Extensions to OSPF Version 3

πŸ“… published September 2008, from ietf

RFC 5329: Traffic Engineering Extensions to OSPF Version 3 πŸ¦‹

okay bestie, this is RFC 5329, and it's a Standards Track doc from September 2008 that's all about bringing Traffic Engineering to OSPFv3 so it works with IPv6 🌈. The authors are K. Ishiguro, V. Manral, A. Davey, and A. Lindem (Ed.), from IP Infusion, Inc, Data Connection Limited, and Redback Networks. It's written by the Network Working Group, and it's a "Request for Comments" (RFC) with the number 5329. The header doesn't list anything it obsoletes or updates, so there's no drama there πŸ’….

Status of This Memo ✨

This doc is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements. To find out where this protocol stands in standardization, check the current "Internet Official Protocol Standards" (STD 1) list. Distribution of this memo is unlimited 🌸.

Copyright (C) The IETF Trust (2008).

Abstract πŸ’œ

This doc describes OSPFv3 extensions for intra-area Traffic Engineering (TE) 🚦. It extends OSPFv2 TE so it can handle IPv6 networks, and it defines one new TLV plus several new sub-TLVs for IPv6 support. We're literally upgrading TE to IPv6, it's giving main character πŸ‘‘.

Table of Contents πŸ“

   1. Introduction ....................................................2
      1.1. Requirements Notation ......................................2
   2. Intra-Area-TE-LSA ...............................................3
      2.1. Intra-Area-TE-LSA Payload ..................................4
   3. Router IPv6 Address TLV .........................................4
   4. Link TLV ........................................................5
      4.1. Link ID Sub-TLV ............................................6
      4.2. Neighbor ID Sub-TLV ........................................6
      4.3. Local Interface IPv6 Address Sub-TLV .......................6
      4.4. Remote Interface IPv6 Address Sub-TLV ......................7
   5. Security Considerations .........................................8
   6. Management Considerations .......................................8
   7. IANA Considerations .............................................9
   8. References ......................................................9
      8.1. Normative References .......................................9
      8.2. Informative References ....................................10
   Acknowledgments ...................................................10

1. Introduction πŸ’–

OSPFv3 has a super flexible way to add new LS types 🧚. Unknown LS types get flooded correctly based on the flooding scope bits in the LS type [OSPFV3]. This doc defines the Intra-Area-TE-LSA for OSPFv3.

For Traffic Engineering, this doc uses "Traffic Engineering Extensions to OSPF" [TE] as its base for TLV definitions. New TLVs and sub-TLVs get added to [TE] to extend TE to IPv6 networks, and a few existing TLVs and sub-TLVs need clarifying for OSPFv3 ✨.

GMPLS [GMPLS] and the Diff-Serv MPLS extensions [TE-DIFF] are both based on [TE]. Those functions can also be extended to OSPFv3 using the TLVs and sub-TLVs in this doc 🫢.

1.1. Requirements Notation πŸ“œ

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 [RFC-KEYWORDS].

2. Intra-Area-TE-LSA πŸ¦‹

A brand new LS type gets defined for the Intra-Area-TE-LSA. This is different from OSPFv2 Traffic Engineering [TE], where opaque LSAs are used to advertise TE information [OPAQUE]. The LSA function code is 10, the U-bit is set, and the scope is set to 01 for area-scoping. When the U-bit is set to 1, an OSPFv3 router must flood the LSA at its defined flooding scope even if it doesn't recognize the LS type [OSPFV3] πŸ’….

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |            LS age             |1|0|1|          10             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Link State ID                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    Advertising Router                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    LS sequence number                         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        LS checksum            |            Length             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-                            TLVs                             -+
      |                             ...                               |

                           OSPFv3 Intra-Area-TE-LSA

The Link State ID of an Intra-Area-TE-LSA is an arbitrary value that's used to keep multiple Traffic Engineering LSAs apart. It has no topological significance πŸ™ˆ.

The TLVs inside the body of an Intra-Area-TE-LSA use the same format as the Traffic Engineering extensions to OSPF [TE]. The LSA payload is made of one or more nested Type/Length/Value (TLV) triplets, and each TLV looks like this πŸ“:

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              Type             |             Length            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            Value...                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                                  TLV Format

The Length field tells you how long the value portion is, in octets. So a TLV with no value portion has a length of 0. Each TLV gets padded to 4-octet alignment, but the padding doesn't count toward the Length field. For example, a 3-octet value has a length of 3, but the whole TLV takes up 8 octets. Nested TLVs are also 32-bit aligned. A 1-byte value gets its Length field set to 1, and 3 octets of padding go on the end of the value portion. Unrecognized types are ignored 🌈.

2.1. Intra-Area-TE-LSA Payload 🌸

An Intra-Area-TE-LSA contains one top-level TLV. There are two applicable top-level TLVs:

  • 2 - Link TLV
  • 3 - Router IPv6 Address TLV

3. Router IPv6 Address TLV πŸŽ€

The Router IPv6 Address TLV advertises a reachable IPv6 address. It's a stable IPv6 address that SHOULD be reachable as long as there's connectivity to the OSPFv3 router πŸ’–.

The Router IPv6 Address TLV has type 3 and length 16, and its value holds a 16-octet local IPv6 address. A link-local address MUST NOT be specified for this TLV. It MUST appear in exactly one Traffic Engineering LSA originated by an OSPFv3 router that supports the TE extensions. The Router IPv6 Address TLV is a top-level TLV as defined in "Traffic Engineering Extensions to OSPF" [TE], and only one top-level TLV may be contained in an LSA πŸ”₯.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              3                |            16                 |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-+-+-+-+                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-             Router IPv6 Address                 -+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Router IPv6 Address TLV

The fields work like this:

  • Type: a 16-bit field set to 3.
  • Length: a 16-bit field that gives the length of the value portion in octets. For this TLV, it's always 16.
  • Value: a stable and routable IPv6 address.

The Link TLV describes a single link and is made up of a set of sub-TLVs [TE]. Every sub-TLV in [TE] except the Link ID sub-TLV applies to OSPFv3. The Link ID sub-TLV can't be used in OSPFv3, because it's defined to use the OSPFv2 identification for the Designated Router (DR) on multi-access networks. In OSPFv2, neighbors on point-to-point networks and virtual links are identified by their Router IDs, while neighbors on broadcast, Non-Broadcast Multi-Access (NBMA), and Point-to-Multipoint links are identified by their IPv4 interface addresses (see section 8.2 in [OSPFV2]). OSPFv3 doesn't know about IPv4 interface addresses. Unlike OSPFv2, OSPFv3 always identifies neighboring routers by their Router IDs (see section 2.11 in [OSPFV3]) πŸ™„.

Three new sub-TLVs get defined for the Link TLV:

  • 18 - Neighbor ID (8 octets)
  • 19 - Local Interface IPv6 Address (16N octets, where N is the number of IPv6 addresses)
  • 20 - Remote Interface IPv6 Address (16N octets, where N is the number of IPv6 addresses)

The Neighbor ID sub-TLV is mandatory for OSPFv3 Traffic Engineering support. It MUST appear exactly once in a Link TLV. All other sub-TLVs defined in this doc SHOULD NOT occur more than once in a Link TLV. If a sub-TLV is specified more than once, the instances after the first one are ignored ✨.

The Link ID sub-TLV is used in OSPFv2 to identify the other end of the link. In OSPFv3, the Neighbor ID sub-TLV MUST be used for link identification. In OSPFv3, the Link ID sub-TLV SHOULD NOT be sent, and it MUST be ignored when received 🫢.

4.2. Neighbor ID Sub-TLV 🧚

In OSPFv2, the Link ID identifies the other end of a link. In OSPFv3, the combination of the Neighbor Interface ID and the Neighbor Router ID is used for neighbor link identification. Both of them are advertised in the Neighbor ID sub-TLV πŸ’œ.

The Neighbor Interface ID and Neighbor Router ID values are the same as described in RFC 5340 [OSPFV3], A.4.3 Router-LSAs.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              18               |             8                 |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |             Neighbor Interface ID                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |             Neighbor Router ID                                |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                             Neighbor ID Sub-TLV

The fields work like this:

  • Type: a 16-bit field set to 18.
  • Length: a 16-bit field that gives the length of the value portion in octets. For this sub-TLV, it's always 8.
  • Value: the neighbor's Interface ID and Router ID.

4.3. Local Interface IPv6 Address Sub-TLV ✨

okay so the Local Interface IPv6 Address sub-TLV is how you tell everyone which IPv6 address(es) belong to the interface for this link πŸ¦‹ If the link has multiple local addresses assigned, they MAY all be listed in this sub-TLV. Link-local addresses MUST NOT be included in this sub-TLV πŸ™ˆ

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              19               |              Length           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-          Local Interface IPv6 Address           -+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         o                                     |
      |                         o                                     |
      |                         o                                     |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-          Local Interface IPv6 Address           -+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: a 16-bit field set to 19 πŸŽ€
  • Length: a 16-bit field that tells you the length of the value portion in octets. For this sub-TLV, it MUST always be a multiple of 16 octets dependent on the number of IPv6 global addresses advertised πŸ’…
  • Value: a list of one or more local IPv6 interface addresses, each consuming 16 octets 🌸

Local Interface IPv6 Address Sub-TLV

4.4. Remote Interface IPv6 Address Sub-TLV

the Remote Interface IPv6 Address sub-TLV advertises the IPv6 address(es) tied to the neighbor's interface 🧚 this one and the Local Interface IPv6 Address sub-TLV work together to tell apart parallel links between OSPFv3 routers, so they're kind of a power couple πŸ‘‘ If the link type is multi-access, the Remote Interface IPv6 Address MAY be set to ::. Alternately, an implementation MAY choose not to send this sub-TLV. Link-local addresses MUST NOT be advertised in this sub-TLV. Neighbor addresses advertised in link-LSAs with a prefix length of 128 and the LA-bit set MAY be advertised ✨

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              20               |              Length           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-             Remote Interface IPv6 Address       -+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         o                                     |
      |                         o                                     |
      |                         o                                     |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-             Remote Interface IPv6 Address       -+-+-+-+
      |                                                               |
      +-+-+-+-                                                 -+-+-+-+
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Type: a 16-bit field set to 20 πŸ¦‹
  • Length: a 16-bit field that tells you the length of the value portion in octets. For this sub-TLV, it MUST be a multiple of 16 octets dependent on the number of IPv6 global addresses advertised πŸ“
  • Value: a variable-length Remote Interface IPv6 Address list πŸ’œ

Remote Interface IPv6 Address Sub-TLV

5. Security Considerations πŸ”₯

okay bestie, this part is serious 😭 The function described in this document does not create any new security issues for the OSPFv3 protocol. Security considerations for the base OSPFv3 protocol [OSPFV3] and OSPFv2 Traffic Engineering [TE] are applicable to OSPFv3 Traffic Engineering. So read those first and take them seriously, periodt πŸ’€

6. Management Considerations πŸŽ€

the typical management interface for routers running the new OSPF extensions for intra-area Traffic Engineering is SNMP-based (Simple Network Management Protocol) 🧚 The extra management objects for configuration operations and statistics are defined in [OSPFV3-MIB], and an implementation of the extensions defined in this document SHOULD provide for the appropriate hooks or instrumentation that allow for the MIB objects to be implemented 🌈

these MIB variables were added to the OSPFv3 MIB for TE support:

  • ospfv3AreaTEEnabled: this TruthValue MIB variable in the ospfv3AreaEntry table entry indicates whether or not OSPFv3 TE advertisement for OSPFv3 interfaces is enabled for the corresponding area. The default value is FALSE 🌸
  • ospfv3IfTEDisabled: this TruthValue MIB variable in the ospfv3IfEntry table entry indicates whether or not OSPFv3 TE advertisement for OSPFv3 for the corresponding interface is disabled. This MIB variable is only applicable if ospfv3AreaTEEnabled is TRUE for the interface's area. The default value is FALSE 🫢

7. IANA Considerations πŸ‘‘

the following IANA assignments were made from existing registries:

  1. The OSPFv3 LSA type function code 10 has been assigned to the OSPFv3 Intra-Area-TE-LSA ✨
  2. The Router IPv6 Address TLV type 3 has been assigned from the existing registry for OSPF TE TLVs πŸ’–
  3. The Neighbor ID (18), Local Interface IPv6 Address (19), and Remote Interface IPv6 Address (20) sub-TLVs have been assigned from the existing registry for OSPF TE sub-TLVs πŸ¦‹

8. References πŸ“š

8.1. Normative References

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

[OSPFV3]       Coltun, R., Ferguson, D., Moy, J., and A. Lindem,
               "OSPF for IPv6", RFC 5340, July 2008.

[RFC-KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
               Requirement Levels", BCP 14, RFC 2119, March 1997.

[TE]           Katz, D., Kompella, K., and D. Yeung, "Traffic
               Engineering (TE) Extensions to OSPF Version 2", RFC
               3630, September 2003.

8.2. Informative References

[GMPLS]        Kompella, K., Ed., and Y. Rekhter, Ed., "OSPF
               Extensions in Support of Generalized Multi-Protocol
               Label Switching (GMPLS)", RFC 4203, October 2005.

[OPAQUE]       Berger, L., Bryskin, I., Zinin, A., and R. Coltun,
               "The OSPF Opaque LSA Option", RFC 5250, July 2008.

[OSPFV3-MIB]   Joyal, D. and V. Manral, "Management Information Base
               for OSPFv3", Work in Progress, September 2007.

[TE-DIFF]      Le Faucheur, F., Wu, L., Davie, B., Davari, S.,
               Vaananen, P., Krishnan, R., Cheval, P., and J.
               Heinanen, "Multi-Protocol Label Switching (MPLS)
               Support of Differentiated Services", RFC 3270, May
               2002.

Acknowledgments 🫢

huge thank yous to Kireeti Kompella, Alex Zinin, Adrian Farrell, and Mach Chen for their comments πŸ’œ

thanks to Vijay K. Gurbani for providing the General Area Review Team (Gen-ART) review 🌈

thanks to Rob Austein for providing the Security Directorate (secdir) review πŸ”₯

thanks to Dan Romascanu for providing the text for the "Management Considerations" section in the context of the IESG review πŸŽ€

thanks to Dave Ward, Tim Polk, Jari Arkko, and Pasi Eronen for comments and relevant discussion in the context of the IESG review πŸ“

the RFC text was produced using Marshall Rose's xml2rfc tool 🧚

Authors' Addresses πŸ¦‹

Kunihiro Ishiguro
IP Infusion, Inc.
1188 East Arques Avenue,
Sunnyvale, CA  94085
USA

EMail: kunihiro@ipinfusion.com


Vishwas Manral
IP Infusion, Inc
#41, Ground Floor, 5th Cross Road
8th Main Road
Vasanth Nagar, Bangalore  560052
India

EMail: vishwas@ipinfusion.com


Alan Davey
Data Connection Limited
100 Church Street
Enfield
EN2 6BQ
UK

EMail: Alan.Davey@dataconnection.com


Acee Lindem
Redback Networks
102 Carric Bend Court
Cary, NC  27519
USA

EMail: acee@redback.com

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 ✨

okay so the IETF is like, "we are NOT taking a side on whether any rights that might be claimed for the tech in this doc are valid or how far they reach, and whether you can even get a license for them is not our call πŸ™…β€β™€οΈ" πŸ’… they also haven't gone digging on their own to find any of those rights, so that's on you, bestie 🫢 if you want the full tea on how rights work for RFC docs, check out BCP 78 and BCP 79 πŸ“š

the IPR disclosures people sent to the IETF Secretariat are all in the IETF's online IPR repository at http://www.ietf.org/ipr πŸ¦‹ that includes any promises to make licenses available, and what happened when someone tried to get a general license or permission for implementers or users to use proprietary rights. it's giving organized receipts 🧾✨

and last but not least, the IETF is literally inviting anyone who knows about copyrights, patents, patent applications, or other proprietary rights that could cover tech needed to implement this standard to speak up πŸ“£πŸ’œ just email the details to ietf-ipr@ietf.org and they'll take it from there. no cap, that's the whole vibe 🌈

πŸ“¦ where this page comes from