Transmission of IPv6 over Master-Slave/Token-Passing (MS/TP) Networks
Extracted elements (28)
6LoBAC is a strict subset of LoWPAN encapsulation (RFC 4944 as updated by RFC 6282): the Mesh, Broadcast, Fragmentation, and LOWPAN_HC1 headers are omitted. This is possible because all MS/TP devices on a segment can communicate directly (no hidden nodes or mesh routing) and large payloads eliminate fragmentation needs.
COBS (Consistent Overhead Byte Stuffing) encoding is applied to the Data and CRC fields to eliminate preamble sequences (0x55) from the encoded content, correcting a long-standing MS/TP issue where unescaped preamble sequences in data fields caused dropped frames due to loss of frame synchronization.
Extending MS/TP payloads to 1500 octets required upgrading the Data CRC from 16 bits to 32 bits. BACnet Clause 9 specifies the CRC-32K (Koopman) polynomial, which was identified by P. Koopman as exceeding the IEEE 802.3 polynomial in performance for network applications. The resulting Encoded CRC-32K field is always exactly five octets.
To co-exist with legacy MS/TP devices and allow incremental upgrades, no changes are permitted to the MS/TP addressing modes, frame header format, control frames, or Master Node state machine as specified in BACnet Clause 9. Legacy implementations simply ignore COBS-encoded frames (Frame Types 32–127).
Unlike 6LoWPAN, 6LoBAC does not require fragmentation and reassembly below IPv6 because the latest MS/TP specification (BACnet Clause 9) supports large frame payloads (up to 2032-octet MSDUs), which comfortably accommodates the 1500-octet IPv6 MTU.
6LoBAC nodes are MS/TP master nodes; they must implement the Master Node state machine and handle Token, Poll For Master, and Reply To Poll For Master control frames as mandated by BACnet Clause 9. They additionally implement a Receive Frame state machine capable of handling COBS-encoded frames.
The MS/TP Length field for COBS-encoded frames indicates the size of the Encoded Data field in octets plus three; this adjustment is specifically required so that legacy MS/TP devices interpret the length as invalid and correctly ignore COBS-encoded frames.
6LoBAC nodes must support a data rate of 115.2 kbit/s and may support lower data rates as specified in BACnet Clause 9. The method of selecting the data rate is outside the scope of this specification.
A node that generates a 64-bit semantically opaque IID MUST register it with its local router(s) by sending a Neighbor Solicitation (NS) message with the Address Registration Option (ARO) and process Neighbor Advertisements (NAs) according to RFC 6775.
A Source Address of 255 MUST NOT be used on MS/TP networks. Destination Address 255 (all nodes) indicates a MAC-layer broadcast and is reserved for that purpose.
All IPv6 multicast packets MUST be broadcast at the MAC layer (sent to Destination Address 255) and filtered at the IPv6 layer, because MS/TP does not support multicast.
All IPv6 multicast packets MUST be sent to MS/TP Destination Address 255 (broadcast). When a multicast address is represented as a 16-bit address in a compressed header, it MUST be formed by left-padding the 0xFF broadcast value with a zero octet.
An IPv6 address prefix used for stateless address autoconfiguration of an MS/TP interface MUST have a length of 64 bits.
Each MS/TP node on the link MUST have a unique address in order to ensure correct MAC operation. MS/TP addresses are one octet in length and are assigned dynamically; the method of assignment is outside the scope of the specification.
If LOWPAN_IPHC compression is used with context, the router(s) directly attached to the MS/TP segment MUST disseminate the 6LoWPAN Context Option (6CO) according to Section 7.2 of RFC 6775.
IPv6 header compression MUST be implemented on all 6LoBAC nodes. The REQUIRED compression mechanism is LOWPAN_IPHC as specified in RFC 6282. Implementations MAY also support Generic Header Compression (RFC 7400) for transport layer headers.
When a 16-bit address is required for LOWPAN_IPHC compression (analogous to an IEEE 802.15.4 short address), it MUST be formed by left-padding the 8-bit MS/TP address with a zero octet, yielding 0x00 followed by the MS/TP address.
Per RFC 8065, temporary (short-lived) IPv6 addresses SHOULD be changed frequently to mitigate correlation of activities over time. Nodes that act as both servers (stable addresses) and clients (temporary addresses) SHOULD support simultaneous use of multiple addresses per device.
6LoBAC defines an MTU length of at least 1280 octets and at most 1500 octets; support for 1500 octets is RECOMMENDED. The network-layer MTU becomes the MSDU, which MS/TP then COBS-encodes; BACnet Clause 9 supports MSDUs up to 2032 octets.
A MAC-address-derived IID is formed by concatenating the node's 8-bit MS/TP MAC address to the seven octets 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, and 0x00, following the Modified EUI-64 format (RFC 4291 Appendix A, updated by RFC 7136). This type is RECOMMENDED for link-local addresses because it enables the most efficient LOWPAN_IPHC compression.
ASHRAE has assigned MS/TP Frame Type value 34 (decimal) to indicate IPv6 over MS/TP (LoBAC) Encapsulation. This value falls within the range 32–127 that designates COBS-encoded data frames carrying Encoded Data and Encoded CRC-32K fields.
The IPv6 link-local address for an MS/TP interface is formed by appending the Interface Identifier (64 bits) to the prefix FE80::/64. The 10-bit prefix is 1111111010 followed by 54 zero bits.
Two configuration constants constrain the Receive Frame state machine: Nmin_COBS_length (minimum valid Length value for any LoBAC-encapsulated frame) is 5, and Nmax_COBS_length (maximum valid Length value) is 1509.
Globally scoped addresses that contain MAC-address-derived IIDs may expose a network to address-scanning attacks. It is RECOMMENDED that a 64-bit semantically opaque IID be generated for each globally scoped address, using methods such as RFC 3315, RFC 3972, RFC 4941, RFC 5535, or RFC 7217.
A LoBAC-encapsulated datagram consists of a Dispatch value followed by zero or more header fields and then the payload. The only currently defined sequence is: IPHC Dispatch (bit pattern 01 1xxxxx), IPHC Header, and Payload.
The LoBAC Dispatch value bit pattern for LOWPAN_IPHC compressed IPv6 is '01 1xxxxx' (0x60–0x7F). Other IANA-assigned 6LoWPAN Dispatch values do not apply to 6LoBAC unless otherwise specified.
The MS/TP COBS-encoded frame has the following fields in order: two-octet preamble (0x55, 0xFF), one-octet Frame Type, one-octet Destination Address, one-octet Source Address, two-octet Length (MSB first), one-octet Header CRC, 2–1506 octet Encoded Data, five-octet Encoded CRC-32K, and an optional single 0xFF trailer octet.
The Source/Target Link-Layer Address option for 8-bit MS/TP MAC addresses has the following format: Type (1 octet), Length=1 (1 octet, indicating 8 octets total), a zero pad octet (0x00), MS/TP Address (1 octet in canonical bit order), and four octets of zero padding.