RFC 6395

An Interface Identifier (ID) Hello Option for PIM

πŸ“… published October 2011, from ietf

An Interface Identifier (ID) Hello Option for PIM πŸ¦‹

okay bestie, this is RFC 6395 🌸 it's a Standards Track doc from the IETF (Internet Engineering Task Force), published October 2011, and it's by Sameer Gulrajani and Stig Venaas, both at Cisco Systems πŸ’– The ISSN is 2070-1721. The header doesn't list anything it obsoletes or updates, so it's its own thing, no cap πŸ’…


Abstract ✨

so the big idea is this: it defines a brand new PIM Hello option that lets routers advertise an Interface Identifier. PIM protocols can then use that ID to uniquely pin down one interface on a neighboring router πŸŽ€

Status of This Memo πŸ“œ

this is an Internet Standards Track doc, aka it's been through the whole IETF process. It represents the consensus of the IETF community, got public review, and was approved for publication by the Internet Engineering Steering Group (IESG) 🫢 If you want the deets on Internet Standards, check Section 2 of RFC 5741. Info about the current status, any errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc6395 πŸ”—

Β© 2011 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 stand on the publication date. Read those carefully, because they spell out your rights and restrictions. Code Components pulled out of this document need to include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, same as the Simplified BSD License says πŸ’œ

Table of Contents πŸŽ€

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 2
  1.1.  Requirements Notation . . . . . . . . . . . . . . . . . . . 2
2.  Interface Identifier Option . . . . . . . . . . . . . . . . . . 2
  2.1.  Local Interface Identifier  . . . . . . . . . . . . . . . . 3
  2.2.  Router Identifier . . . . . . . . . . . . . . . . . . . . . 3
3.  Message Format  . . . . . . . . . . . . . . . . . . . . . . . . 4
4.  Security Considerations . . . . . . . . . . . . . . . . . . . . 4
5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5
6.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 5
7.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  7.1.  Normative References  . . . . . . . . . . . . . . . . . . . 5
  7.2.  Informative References  . . . . . . . . . . . . . . . . . . 5

1. Introduction 🌸

okay so this doc adds a new option that goes in PIM Hello messages [RFC4601] to carry an Interface Identifier πŸ¦‹ Each router makes IDs for its PIM-enabled interfaces, and every interface gets a different one. The IDs can optionally be generated so they're unique within, e.g., an administrative domain ✨

here's the example that makes it click: PIM over Reliable Transport (PORT) [PIM-PORT] uses a single Transport connection between two routers that have multiple interfaces connecting them πŸ‘‘ If those interfaces have unnumbered or IPv6 link-local addresses, the Interface Identifier in the PORT Join/Prune message tells you which interface that message belongs to. For PORT, the Router Identifier isn't needed, so it can be set to zero πŸ’–

one more thing: every multi-byte integer here is sent in network byte order, aka most significant byte first πŸ”₯

1.1. Requirements Notation πŸ”₯

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document get read the way [RFC2119] describes 🧚

2. Interface Identifier Option πŸ’–

the Interface Identifier option tells you which interface of a neighboring router a PIM Hello [RFC4601] came through 🫢 That lets PIM protocols point at, or identify, one specific interface on that neighbor, which is honestly iconic 😭

the option only has to show up in PIM Hello messages if the router supports protocols that need it. An implementation MAY choose to always include it πŸŽ€ How the Interface Identifier gets used, and what its uniqueness requirements are, is up to the specs of whichever PIM protocols implement it. The vibe is that different protocols have different minimum requirements for stability and uniqueness, but none of them have a maximum requirement 🌈 When a protocol does get specified, it should spell out what its minimums are πŸ’…

the ID is 64 bits total. The lower 32 bits are the Local Interface Identifier, and the high 32 bits are the Router Identifier πŸ‘‘

2.1. Local Interface Identifier 🫢

the 32-bit Local Interface Identifier is picked so it's unique among the router's PIM-enabled interfaces. So there MUST NOT be two PIM interfaces with the same Local Interface Identifier 🚫 While an interface is up, the Identifier MUST always be the same once it's been allocated. If an interface goes down and comes back up, the router SHOULD reuse the same Identifier πŸ” If the whole node goes down and comes back, the Identifier for each interface MAY change πŸ¦‹ Lots of systems use an ifIndex [RFC2863] as their Local Interface Identifier πŸ’œ

the Local Interface Identifier MUST be non-zero. The reason is that some protocols may have messages that optionally reference an Interface Identifier, and they can use the value 0 to say "no Interface Identifier is being referenced" πŸ™ˆ Also, 0 isn't a valid ifIndex as defined in [RFC2863], so yeah, it's a no-go πŸ’€

2.2. Router Identifier πŸ‘‘

the 32-bit Router Identifier can be used to uniquely identify the router 🧚 How unique it has to be depends on the protocols using it. It might need to be unique within some administrative domain, or it might need to be globally unique 🌍

a router implementation picks its Router Identifier based on a configured policy that defines the uniqueness scope. So an implementation MAY be configured to choose an IPv4 unicast address assigned to the router as its Router Identifier, but the implementation MUST allow the identifier to be configured manually πŸŽ€ Protocols like BGP [RFC4271] and OSPFv2 [RFC2328] also use 32-bit identifiers for routers. As long as the stability and uniqueness requirements of the protocols using the Router Identifier are met, an implementation MAY use the same identifier that other protocols use 🫢

the value 0 is special for the Router Identifier. It means no Router Identifier is in use. If a router only supports protocols that need the Interface Identifier to be unique for one router (so it only uses the Local Interface Identifier), then the implementation MAY set the Router Identifier to zero πŸ’…

3. Message Format 🧚

here's the option layout. Copy it exactly, the bits matter 🀌

   Option Type: Interface Identifier

     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 = 31           |         Length = 8            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                       Router Identifier                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                   Local Interface Identifier                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the Allocated Hello Type values live in [HELLO-OPT] πŸ“‹

  • Length: the number of bytes in the value part of the Type/Length/Value encoding. The Interface Identifier is 8 bytes long 🌸
  • Router Identifier: a 4-byte identifier that uniquely identifies the router within some scope. It MAY be 0 when no protocols require a Router Identifier. The field MUST contain a valid Router Identifier or the value zero πŸ’œ
  • Local Interface Identifier: a 4-byte identifier that's unique among all PIM-enabled interfaces on a router πŸ¦‹

4. Security Considerations πŸ’€

okay this part is serious, bestie 🚨 The Interface Identifier rides along in PIM Hello messages. For security considerations about PIM Hello messages in general, see [RFC4601]. The scary bit: PIM Hello messages may be forged and include an arbitrary Interface Identifier, or the Interface Identifier may be intentionally left out. What happens next depends on how other protocols use the Interface Identifier 😱

5. IANA Considerations 🌈

IANA has assigned the value 31 for the Interface ID PIM-Hello option defined in this document πŸŽ€

6. Acknowledgments πŸ’œ

big thanks to Yiqun Cai, Heidi Ou, Liming Wei, Gorry Fairhurst, Bharat Joshi, and Bill Atwood for giving valuable feedback 🫢

7. References πŸ“

7.1. Normative References

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

[RFC4601]   Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
            "Protocol Independent Multicast - Sparse Mode (PIM-SM):
            Protocol Specification (Revised)", RFC 4601, August 2006.

7.2. Informative References

[HELLO-OPT] IANA, "PIM Hello Options", <http://www.iana.org/>.

[PIM-PORT]  Farinacci, D., Wijnands, IJ., Venaas, S., and M.
            Napierala, "A Reliable Transport Mechanism for PIM", Work
            in Progress, August 2011.

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

[RFC2863]   McCloghrie, K. and F. Kastenholz, "The Interfaces Group
            MIB", RFC 2863, June 2000.

[RFC4271]   Rekhter, Y., Li, T., and S. Hares, "A Border Gateway
            Protocol 4 (BGP-4)", RFC 4271, January 2006.

Authors' Addresses πŸ¦‹

Sameer Gulrajani
Cisco Systems
Tasman Drive
San Jose, CA  95134
USA

EMail: sameerg@cisco.com


Stig Venaas
Cisco Systems
Tasman Drive
San Jose, CA  95134
USA

EMail: stig@cisco.com

that's the whole spec, bestie! πŸŒˆπŸ’– you're officially PIM-literate now πŸ‘‘

πŸ“¦ where this page comes from