The Protocol Independent Multicast (PIM) Join Attribute Format
updated by
- rfc-7887 — Hierarchical Join/Prune Attributes
Extracted elements (23)
A single Hello option signals general willingness to receive type 1 Encoded-Source Addresses rather than per-attribute-type options, because there is no immediate way to act on a neighbor's inability to process specific attribute types and per-type options would not be useful.
Join Attributes are only useful within a single administrative domain (or small set of cooperating domains) where it can be determined a priori that all deployed PIM routers understand the type 1 Encoded-Source Address and any specific attributes in use, because routers that do not understand type 1 cannot process the Join at all.
Retaining attributes from non-selected adjacencies (when conflict resolution selects one source's attributes) allows rapid convergence upon pruning or expiry of the selected adjacency, without waiting for the next periodic Join update.
There is no header field specifying the number of Join Attributes; instead, the last attribute is marked with the E-bit. This avoids a fixed-size count field and allows the receiver to parse attributes sequentially until the end marker is encountered.
Any PIM router that does not understand the type 1 Encoded-Source Address encoding cannot process a PIM Join message containing it. If Join Attributes affect tree construction, the tree may not form correctly unless all PIM routers receiving the message understand both type 1 encoding and the specific attributes used.
A PIM router that receives a type 1 Encoded-Source Address MUST examine all the attributes in the order in which they appear.
A type 1 Encoded-Source Address MUST contain at least one Join Attribute. To indicate no attributes for a particular tree, the type 0 Encoded-Source Address MUST be used.
If a per-type conflict resolution procedure is defined in the attribute type specification, that procedure MUST be used instead of the default numerically-smallest-IP-address procedure.
If a PIM router needs to change the set of attributes for a given tree without changing the upstream neighbor, it MUST send a new Join for that tree specifying the new attribute set; if the new set is null, the type 0 Encoded-Source format MUST be used.
If all Join Attributes are discarded (no transitive attributes remain), a Join with a type 0 Encoded-Source Address field MUST be forwarded upstream.
If the F-bit (transitive bit) is set in a Join Attribute, a router that does not understand the attribute type MUST forward it; if the F-bit is clear, the router MUST discard it.
If the processing of a received attribute affects the construction of the multicast distribution tree or the set of forwarded attributes, state MUST be maintained associating the received attribute with the adjacency or adjacencies from which it was received.
The 'Join Attribute' Hello option (OptionType 26) MUST be included in PIM Hellos of any router willing to receive type 1 Encoded-Source Addresses. A router MUST NOT send a type 1 Encoded-Source Address on any interface where a PIM neighbor has not included this option.
When conflicting attributes of the same type are received from different downstream routers, the attribute from the PIM adjacency with the numerically smallest IP address is used. For IPv6, the link-local address is used; when two neighbors share the same IP address, the interface index MUST be used as a tie breaker.
PIM Join Attributes are TLVs encoded into the Encoded-Source Address field (encoding type 1) of a PIM Join message, allowing a node to associate additional information with a particular multicast distribution tree identified by the combination of Encoded-Source Address and Encoded-Group Address.
When a new Join is received for a given tree, the set of attributes in the new Join entirely replaces the prior attribute set — no prior attribute information is retained. There is no incremental update mechanism; absent attributes are considered withdrawn.
When a Prune is received from a downstream neighbor that had previously sent attributes, those attributes are considered withdrawn. The upstream router may need to send a new Join with the updated attribute set derived from remaining downstream neighbors.
IANA assigned PIM Hello option value 26 to the 'Join Attribute' option, with RFC 5384 as the reference.
IANA created the 'PIM Encoded-Source Address Encoding Type' registry for the Encoding Type field of the Encoded-Source Address format. Encoding type 0 ('native encoding for the address family', reference RFC 4601) and encoding type 1 ('native encoding with zero or more PIM Join Attributes present', reference RFC 5384) are defined. Assignments follow 'IETF Review'.
IANA created the 'PIM Join Attribute Types' registry for values of the Attr_Type field in the type 1 Encoded-Source Address. Assignments follow the 'IETF Review' policy as defined in RFC 5226.
Security of Join Attributes is only guaranteed by the security of the enclosing PIM packet; the security considerations for PIM Join packets in RFC 4601 apply. Additional security considerations may apply to specific attribute types and must be documented in their respective specifications.
The PIM Join Attribute Hello Option uses OptionType 26 and OptionLength 0, carrying no value payload — its mere presence signals willingness to receive type 1 Encoded-Source Addresses.
The type 1 Encoded-Source Address extends the standard PIM source encoding by appending one or more Join Attribute TLVs, each with a 1-byte field containing F-bit (transitive), E-bit (end of attributes), and 6-bit Attr_Type, followed by a 1-octet Length field and a variable-length Value field.