Transparent Interconnection of Lots of Links (TRILL): Vendor-Specific RBridge Channel Protocol
Extracted elements (17)
SHOULD (rather than MUST) is used for VERR errors 3 and 4 because, as long as messages are distinguished by a vendor's OUI/CID, the vendor retains discretion over standard versus nonstandard error handling for their own sub-protocols and sub-versions.
The Sub-Protocol and Sub-Version fields after VERR are strongly RECOMMENDED but not mandated, because vendors may use those bits however they wish. The recommendation exists to allow multiple and evolving uses to be specified from a single OUI without requiring a new OUI allocation.
If a VERR=1 (truncation) error message is received, the apparent OUI/CID in that error message cannot be trusted, because the original packet was too short to contain a valid OUI/CID.
A Vendor Channel implementation MUST NOT send a Vendor Channel Error in response to a Vendor Channel message that itself has a nonzero VERR field, preventing error response loops.
An RBridge SHOULD set VERR to 3 and return an error packet when it receives a Vendor Channel message with VERR=0, SL=0, a known OUI/CID, and an unrecognized Sub-Protocol value (when it implements and uses the Sub-Protocol field).
An RBridge SHOULD set VERR to 4 and return an error packet when it receives a Vendor Channel message with VERR=0, SL=0, a known OUI/CID and Sub-Protocol, and an unrecognized Sub-Version value (when it implements and uses the Sub-Version field).
If an RBridge implementing the Vendor Channel facility receives a Vendor Channel message with RBridge-Channel-Specific Data less than 4 bytes, it MUST extend the data through the VERR field, set VERR to 1, and return the packet as an error response.
If an RBridge receives a Vendor Channel packet with VERR=0 and an unrecognized OUI/CID and the SL flag is zero, it MUST set VERR to 2 and return the error packet per Section 3.1.
If the bottom two bits of the first byte of the Vendor ID field are neither 0b00 (OUI) nor 0b10 (CID), the value is invalid and a VERR of 2 MUST be returned, subject to possible rate limiting.
The priority of an error response message MAY be reduced from the priority of the Vendor Channel message causing the error (unless already minimum priority), and the Drop Eligibility Indicator bit MAY be set in an error response. Vendor Channel error responses MAY be rate-limited.
Error responses are sent by setting the SL flag in the RBridge Channel Header. For RBridge-to-RBridge messages, the TRILL Header is modified: M bit cleared, egress nickname set to the received ingress nickname, ingress nickname set to a local nickname, and hop count set to the usual value. For RBridge-to-end-station messages, Outer.MacDA is set to the received Outer.MacSA and Outer.MacSA to the sending port's MAC address.
The Vendor-Specific RBridge Channel Protocol uses RBridge Channel protocol number 0x008 to carry typed messages from a specific organization, identified by OUI or CID, over the TRILL RBridge Channel facility. It enables vendor-specific diagnostic or control messages within a TRILL campus.
VERR value 0 indicates no error; VERR value 1 indicates the RBridge-Channel-Specific Data is less than 4 bytes (truncation); VERR value 2 indicates an unknown OUI/CID; VERR value 3 indicates an unknown Sub-Protocol; VERR value 4 indicates an unknown Sub-Version. Values 0x00–0x0F and 0xFF are IETF-reserved; 0x10–0xFE are available for vendor use.
IANA allocated RBridge Channel Protocol number 0x008 for the Vendor-Specific RBridge Channel Protocol (allocated by Standards Action). A new subregistry 'Vendor RBridge Channel Error Codes' was established under TRILL Parameters / RBridge Channel Error Codes, with registration procedure Standards Action, defining codes 0x00–0x04 (specified), 0x05–0x0F (unassigned), 0x10–0xFE (reserved for vendor use), and 0xFF (reserved).
Neither the Vendor-Specific RBridge Channel Protocol nor the basic RBridge Channel Protocol provides any security assurances or features. Any needed security must be provided by fields or processing within the Vendor-Protocol-Specific Data, or by nesting Vendor Channel use inside the RBridge Channel Header Extension Protocol (RFC 7978), which can provide some security services.
For RBridge-to-RBridge Vendor Channel packets, the full packet includes Link Header, TRILL Header, Inner Ethernet Addresses, Data Label (VLAN or FGL), RBridge Channel Header (Ethertype 0x8946, Channel Protocol=0x008, Flags, ERR), and the Channel-Protocol-Specific Payload. Native messages (RBridge-to-end-station) omit the TRILL Header and Inner Ethernet Addresses.
The Vendor Channel message payload begins with a 3-byte Vendor ID (OUI or CID), followed by a 1-byte VERR field, a 1-byte Sub-Protocol field, and a 1-byte Sub-Version field, followed by variable-length Vendor-Protocol-Specific Data. The Vendor ID type is determined by the bottom two bits of its first byte: 0b00 = OUI, 0b10 = CID.