IPv6 Traffic Engineering in IS-IS
Extracted elements (20)
A new IPv6 SRLG TLV (type 139) was defined rather than extending SRLG TLV (type 138) because there is no backward-compatible way to modify type 138 to identify a link by IPv6 addresses when IPv4 addresses and link-local identifiers are unavailable.
The flags field in the IPv6 SRLG TLV is designed so that unknown bits cause the TLV to be ignored rather than misinterpreted, explicitly enabling future extensibility by allowing alternative link-identification means to be added.
The IPv6 Global Interface Address TLV (type 233) in IIH PDUs was introduced because the existing IPv6 Interface Address TLV only carries link-local addresses in IIH PDUs, and globally unique IPv6 addresses are needed for constructing the IPv6 Neighbor Address sub-TLV.
Adding IPv6 TE routing information to an existing IPv4 GMPLS IS-IS network introduces no migration issues; migration of Label Switched Paths from IPv4 to IPv6 is a GMPLS signaling concern outside this document's scope.
When both an SRLG TLV (type 138) and an IPv6 SRLG TLV (type 139) are received describing SRLGs for the same link, the receiver MUST apply type 138 and ignore type 139, ensuring consistent behavior across mixed IPv4/IPv6 deployments.
A router implementing IPv6 traffic engineering MUST include the IPv6 Neighbor Address sub-TLV (type 13) for point-to-point links. This sub-TLV MUST NOT contain an IPv6 link-local address.
Implementations MUST NOT inject a /128 prefix for the IPv6 Neighbor Address sub-TLV (type 13) into their routing or forwarding table to avoid forwarding loops.
IPv6 TE TLVs present in LSPs MUST NOT use link-local addresses because they are propagated across networks where link-local scope is invalid.
Reserved bits in the IPv6 SRLG TLV flags field MUST be set to zero by the sender. A router receiving an IPv6 SRLG TLV with non-zero values for bits it does not understand MUST ignore the TLV (but flood it unchanged).
The IPv6 TE Router ID TLV MUST NOT be included more than once in an LSP, and an implementation receiving it MUST NOT treat the router ID as a /128 reachable prefix in SPF calculation to avoid forwarding loops.
There MUST NOT be more than one IPv6 SRLG TLV for a given link. The IPv6 SRLG TLV (type 139) MUST NOT be used when the SRLG TLV (type 138) can be used instead. If both are received for the same link, the receiver MUST apply the SRLG TLV and ignore the IPv6 SRLG TLV.
IPv6 Global Interface Address TLV (type 233) is structurally identical to the IPv6 Interface Address TLV but carries global or unique-local IPv6 addresses; it is included in IIH PDUs only (not LSPs) to allow neighbors to construct the IPv6 Neighbor Address sub-TLV.
IPv6 Interface Address sub-TLV (sub-TLV type 12 of Extended IS Reachability TLV) contains a 16-octet IPv6 address for the local end of a link and may occur multiple times.
IPv6 Neighbor Address sub-TLV (sub-TLV type 13 of Extended IS Reachability TLV) contains a 16-octet globally unique IPv6 address for the neighbor's end of a link, used for point-to-point links and may occur multiple times.
IPv6 SRLG TLV (type 139) carries Shared Risk Link Group information for an IPv6-addressed link, identified by System ID (6 octets), pseudonode number (1 octet), flags (1 octet), IPv6 interface address (16 octets), optional IPv6 neighbor address (16 octets), and a variable list of 4-octet SRLG values.
IPv6 TE Router ID TLV (type 140) carries a single 16-octet stable global IPv6 address to identify a TE node, appearing only in LSPs and not in IIH or SNP PDUs.
Three new IS-IS TLV code-points registered: type 139 (IPv6 SRLG TLV, LSP only), type 140 (IPv6 TE Router ID, LSP only), and type 233 (IPv6 Global Interface Address TLV, IIH only).
Two new sub-TLV types registered under TLV 22, 141, and 222: type 12 (IPv6 Interface Address, 16 octets) and type 13 (IPv6 Neighbor Address, 16 octets).
This document raises no new security issues for IS-IS; implementors should refer to RFC 5304 (IS-IS Cryptographic Authentication) for general IS-IS security considerations.
IPv6 SRLG TLV value field encodes: 6-octet System ID, 1-octet pseudonode number, 1-octet flags (NA bit at bit 7), 16-octet IPv6 interface address, optional 16-octet IPv6 neighbor address, then variable-length list of 4-octet SRLG values. Total length is 24 + 4*(number of SRLG values) + 16 (if neighbor address included).