Transparent Interconnection of Lots of Links (TRILL): Address Flush Message
Extracted elements (27)
Address Flush messages are normally sent as multi-destination TRILL packets (M-bit=1) over the Data Label VLAN or FGL so they reach all edge RBridges offering service in that label. A Management VLAN option is provided to allow flush messages that explicitly specify the Data Labels to flush, enabling unicast or cross-VLAN delivery.
The extensible TLV format (Section 2.2) was chosen to support multiple encoding strategies for VLANs and FGLs — blocks are most efficient for consecutive values, bit maps for scattered values in a limited range, and lists for widely scattered values — allowing senders to optimize message size depending on the distribution of identifiers to flush.
In the extensible case, TLVs with unknown types are ignored by the receiving RBridge, and multiple TLV instances of the same type are permitted in the same message with no required ordering. This allows forward-compatible extension of the Address Flush protocol.
Unknown or reserved nicknames in the nickname list are ignored, but the flush operation still executes with the remaining valid nicknames. Similarly, VLAN or FGL blocks where End is less than Start are ignored but the message is still processed for other valid blocks.
All RBridges implementing the Address Flush RBridge Channel protocol message MUST implement TLV types 1 and 2 (VLAN types) and Type 6 (All Data Labels).
Both multi-destination and unicast Address Flush messages SHOULD be sent at priority 6, since they are important control messages but lower priority than adjacency control messages.
For Type 1 (Blocks of VLANs) TLV, Length MUST be a multiple of 4. If not, the TLV is corrupt and the Address Flush message MUST be discarded.
For Type 2 (Bit Map of VLANs) TLV, Length MUST be at least 2. If Length is 0 or 1, the TLV is corrupt and the Address Flush message MUST be discarded.
For Type 3 (Blocks of FGLs) TLV, Length MUST be a multiple of 6; if not, the TLV is corrupt and the Address Flush message MUST be discarded if the receiving RBridge implements Type 3.
For Type 5 (Bit Map of FGLs) TLV, Length MUST be at least 3. If Length is 0, 1, or 2, the TLV is corrupt and the Address Flush message MUST be discarded if Type 5 is implemented.
For Type 6 (All Data Labels) TLV, Length MUST be zero. If Length is any other value, the TLV is corrupt and the Address Flush message MUST be discarded.
RBridges that implement the Address Flush message and implement FGL ingress/egress MUST implement TLV types 3, 4, and 5 (the FGL types). An RBridge that is merely FGL-safe but cannot egress FGL TRILL Data packets SHOULD ignore the FGL types.
RBridges that implement the Address Flush message SHOULD implement TLV types 7 and 8 so that specific MAC addresses can be flushed. If they do not, the effect will be to flush all MAC addresses for the indicated Data Labels, which may be inefficient.
The TLV Length field MUST NOT imply that the value extends beyond the end of the RBridge Channel-Protocol-Specific Payload area. If it does, the Address Flush message is corrupt and MUST be ignored.
The Address Flush message is an RBridge Channel protocol message used to explicitly request other TRILL switches to flush certain MAC reachability learned through decapsulation of TRILL Data packets. It supplements TRILL automatic address forgetting (RFC 6325 Section 4.8.3) and assists in achieving more rapid convergence after topology or configuration changes.
The address flush operation in the extensible case applies to the cross product of three derived sets: nicknames, Data Labels, and MAC addresses. A {Data Label, MAC address, nickname} triple is flushed if and only if each component matches an element in its respective derived set, where {ALL} is a special value matching all elements.
The Data Labels set derivation: if a Type 6 TLV is encountered, the set is {ALL}; if Data Label TLVs are present, the set is those accumulated Data Labels; otherwise the set is null and the Address Flush message does nothing.
The K-nicks field specifies the number of nicknames to which the Address Flush message applies. If zero, only the ingress nickname in the TRILL Header is used; if non-zero, the flush applies only to the listed nicknames and not to the ingress nickname unless explicitly listed.
IANA has assigned RBridge Channel Protocol number 0x009 for the Address Flush protocol, in the 'RBridge Channel Protocols' registry at the TRILL Parameters IANA registry. Registration procedure is Standards Action.
IANA has created the 'TRILL Address Flush TLV Types' registry as a subregistry of 'RBridge Channel Protocols', with registration procedure IETF Review. Initial entries are types 0 (Reserved), 1-8 (defined TLV types), 9-254 (Unassigned), and 255 (Reserved).
The Address Flush RBridge Channel Protocol provides no built-in security. It is RECOMMENDED that all RBridges implementing Address Flush be configured to ignore such messages unless secured with an RBridge Channel Header Extension (RFC 7978) meeting local security policy.
Without authentication, Address Flush messages are easy to forge and can be used as a denial-of-service attack by purging learned MAC address information, forcing relearning and reducing network efficiency. However, forged messages cannot cause incorrect frame delivery.
The Bit Map of FGLs TLV (Type 5) begins with a 3-byte 24-bit Start.FGL value, followed by a bit map where each bit corresponds to a consecutive FGL starting at N. FGLs do not wrap around; bits beyond 0xFFFFFF are ignored.
The Extensible form of the Address Flush message is indicated by a zero in the K-VLBs byte, followed by TLVs. Each TLV has an 8-bit Type, an 8-bit Length (in bytes after the Length byte), and a variable-length Value field. TLV types 1-8 are defined for Blocks of VLANs, Bit Map of VLANs, Blocks of FGLs, List of FGLs, Bit Map of FGLs, All Data Labels, MAC Address List, and MAC Address Blocks.
The MAC Address Blocks TLV (Type 8) encodes sets of Start.MAC and End.MAC 48-bit values (12 bytes per block); Length MUST be a multiple of 12. If not, the TLV is corrupt and the message MUST be discarded if Type 7 (sic, Type 8) is implemented.
The MAC Address List TLV (Type 7) encodes a list of 48-bit MAC addresses; Length MUST be a multiple of 6. If not, the TLV is corrupt and the Address Flush message MUST be discarded if the receiving RBridge implements Type 7.
The VLAN Block Only form of the Address Flush message contains: K-nicks (1 byte, count of nicknames), a list of 16-bit Nicknames, K-VLBs (1 byte, count of VLAN blocks), and VLAN blocks each encoded as two 12-bit fields (Start.VLAN and End.VLAN) with 4 reserved bits each, for 32 bits per block total. Channel Protocol field is set to 0x009.