RFC 3518
Point-to-Point Protocol (PPP) Bridging Control Protocol (BCP)
RFC 3518 π Point-to-Point Protocol (PPP) Bridging Control Protocol (BCP)
okay bestie, the title block is the first tea β so here's the lineup:
- Authors: M. Higashiyama (Anritsu), F. Baker, and T. Liao (Cisco Systems) π
- Category: Standards Track β¨
- Date: April 2003 πΈ
- Obsoletes: RFC 2878 π₯
Status of This Memo π
this one is an Internet standards track protocol spec for the whole Internet community, and it's literally asking for discussion and suggestions for improvements π«Ά for the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). distribution of this memo is unlimited π
Copyright Notice π
Copyright (C) The Internet Society (2003). All Rights Reserved. π
Abstract β¨
okay so PPP gives you a standard way to carry multi-protocol datagrams over point-to-point links π¦ it defines an extensible Link Control Protocol (LCP) and proposes a family of Network Control Protocols (NCP) for setting up and configuring different network-layer protocols, which is so iconic β¨
this doc defines the NCP for setting up and configuring Remote Bridging for PPP links π₯
and yes, this doc obsoletes RFC 2878, which was based on the IEEE 802.1D-1993 MAC Bridge π the vibe is that this one upgrades that spec by improving support for bridge control packets π
Table of Contents π§
1. Historical Perspective ................................ 2
1.1 Requirements Keywords ............................ 3
2. Methods of Bridging ................................... 3
2.1 Transparent Bridging ............................. 3
2.2 Remote Transparent Bridging ...................... 4
2.3 Source Routing ................................... 5
2.4 Remote Source Route Bridging ..................... 6
2.5 SR-TB Translational Bridging ..................... 7
3. Traffic Services ...................................... 7
3.1 LAN Frame Checksum Preservation .................. 7
3.2 Traffic having no LAN Frame Checksum ............. 7
3.3 Tinygram Compression ............................. 8
3.4 Virtual LANs ..................................... 8
3.5 Bridge Control Packet Indicator .................. 9
4. A PPP Network Control Protocol for Bridging ........... 10
4.1 Sending Bridge Frames ........................... 11
4.1.1 Maximum Receive Unit Considerations ....... 11
4.1.2 Loopback and Link Quality Monitoring ...... 11
4.1.3 Message Sequence .......................... 11
4.1.4 Separation of Spanning Tree Domains ....... 12
4.2 Bridged LAN Traffic in IEEE 802 Untagged Frame ... 13
4.3 Bridged LAN Traffic in IEEE 802 Tagged Frame ..... 17
4.4 Bridge management protocol data unit ............. 21
5. BCP Configuration Options ............................. 22
5.1 Bridge-Identification ............................ 22
5.2 Line-Identification .............................. 24
5.3 MAC-Support ...................................... 25
5.4 Tinygram-Compression ............................. 26
5.5 MAC-Address ...................................... 27
5.6 Spanning Tree Protocol (old formatted) ........... 28
5.7 IEEE-802-Tagged-Frame ............................ 30
5.8 Management-Inline ................................ 31
5.9 Bridge-Control-Packet-Indicator .................. 32
6. Changes From RFC 2878 ................................. 33
7. Security Considerations ............................... 33
8. Intellectual Property Notice .......................... 33
9. IANA Considerations ................................... 34
10. Acknowledgments ....................................... 34
Appendices ................................................ 35
A. Spanning Tree Bridge PDU (old formatted) ........ 35
B. Tinygram-Compression Pseudo-Code ................ 36
References ............................. .................. 38
Authors' Addresses ........................................ 39
Full Copyright Statement................................... 40
1. Historical Perspective π¦
okay so there are two basic algorithms floating around the industry for bridging Local Area Networks πΈ the more common one is called "Transparent Bridging," which IEEE 802.1 standardized for Extended LAN configurations π the other is "Source Route Bridging," and it's totally prevalent on IEEE 802.5 Token Ring LANs π§
IEEE mashed these two together into a device called a Source Routing Transparent (SRT) bridge, which does both Source Route and Transparent bridging at the same time π₯ Transparent and SRT bridges are specified in IEEE standard 802.1D-1998 [8] β¨
ngl this next part is so relatable π IEEE committee 802.1G is working on remote bridging [2], but neither standard actually defines the mechanisms for implementing remote bridging π that would be beyond the IEEE 802 committee's charter, but both 802.1D and 802.1G allow for it π«Ά the implementor gets to model the line either as a component within a single MAC Relay Entity, or as the LAN media between two remote bridges π
the original IEEE 802.1D got a glow-up from IEEE 802.1Q [9], which adds support for Virtual LAN π and Virtual LAN is an integral feature of switched LAN networks π
1.1. Requirements Keywords π
The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this document, are to be interpreted as described in [12]. π
2. Methods of Bridging β¨
2.1. Transparent Bridging π¦
as a favor to the uninitiated, let's start with Transparent Bridging π basically, the bridges in a network run as isolated entities, mostly unaware of each other's presence π§ a Transparent Bridge keeps a Forwarding Database made of these records:
{address, interface}
or
{address, interface, VLAN ID}
it saves the Source Address of each LAN transmission it receives, along with the interface identifier for the interface it came in on πΈ bridges that support Virtual LANs also keep the Virtual LAN ID in their forwarding database π then it checks whether the Destination Address is in the database. if it is, the bridge either discards the message when the destination and source are on the same interface, or forwards the message out the indicated interface π₯ a message whose Destination Address isn't in the table gets forwarded to all interfaces except the one it came in on π this also applies to Broadcast/Multicast frames as well β¨
the obvious fly in the ointment is that redundant paths in the network cause indeterminate (nay, all too determinate) forwarding behavior π to prevent this, a protocol called the Spanning Tree Protocol runs between the bridges to detect and logically remove redundant paths from the network π«Ά
one system gets elected as the "Root," and it periodically emits a message called a Bridge Protocol Data Unit (BPDU) that all of its neighboring bridges hear π each of those bridges modifies the BPDU and passes it on to its neighbors, until it reaches the leaf LAN segments in the network (where it dies, having no further neighbors to pass it along) π₯ or until a bridge with a superior path to the "Root" stops the message π in that second case, the interface the BPDU came in on gets ignored. it's placed in a Hot Standby status, no traffic is emitted onto it except the BPDU, and all traffic received from it is discarded π this continues until a topology change forces a recalculation of the network πΈ
to set up Virtual LANs across multiple bridges, GVRP (GARP VLAN Registration Protocol) runs between bridges to exchange Virtual LAN information π§ GVRP gives them a way to dynamically establish and update their knowledge of the set of Virtual LANs that currently have active members β¨
and to cut down on unnecessary multicast flooding, bridges exchange group MAC addresses using the GARP Multicast Registration Protocol π¦ GMRP lets bridges figure out which multicast frames should be forwarded on each port π
2.2. Remote Transparent Bridging π
there are two basic sorts of bridges. Local Bridges interconnect LANs directly, and Remote Bridges interconnect LANs through an intermediate medium like a leased line π₯ PPP may be used to connect Remote Bridges π
the IEEE 802.1G Remote MAC Bridging committee proposed a model of a Remote Bridge where two or more Remote Bridges interconnected via remote lines are called a Remote Bridge Group π inside a Group, a Remote Bridge Cluster gets dynamically formed by running the spanning tree, as the set of bridges that may pass frames among each other π«Ά
this model gives the remote lines the basic properties of a LAN, but it doesn't require a one-to-one mapping of lines to virtual LAN segments β¨ for example, three interconnected Remote Bridges, A, B and C, could look like a virtual LAN segment between A and B and another between B and C πΈ but if a line exists between Remote Bridges B and C, a frame could actually go directly from B to C, as long as it externally looks like it traveled through A π§
IEEE 802.1G therefore allows a lot of implementation freedom for features like route optimization and load balancing, as long as the model is maintained π
to keep things simple, this document talks about Remote Bridging in terms of two Remote Bridges connected by a single line π
2.3. Source Routing β¨
okay so the IEEE 802.1D Committee has standardized Source Routing for any MAC Type that allows it π . Right now the MAC Types that support Source Routing are FDDI and IEEE 802.5 Token Ring π.
The IEEE standard only defines Source Routing as a part of an SRT bridge π€. But tbh, loads of bridges have been built that can do Source Routing all on their own β¨. The most common ones follow either the IBM Token-Ring Network Architecture Reference [1] or the Source Routing Appendix of IEEE 802.1D-1998 [8] πΈ.
With Source Routing, the originating system is the one in charge of saying which path the message should take π. If the message is headed off the local segment, the originator adds a variable length MAC header extension called the Routing Information Field (RIF) π¦. The RIF is one 16-bit word of flags and parameters, followed by zero or more segment-and-bridge identifiers. Each bridge en route uses that source route list to figure out whether it should accept the message and how to forward it π§.
To find a path to a destination, the originating system sends out an Explorer frame π. An All-Routes Explorer (ARE) frame follows every possible path to a destination, which is lowkey chaotic π. A Spanning Tree Explorer (STE) frame only follows the paths defined by Bridge ports that the Spanning Tree Algorithm has put in Forwarding state π«Ά. Port states do not apply to ARE or Specifically-Routed Frames, so those ignore the port-state rules, iykyk π. The destination system replies to each copy of an ARE frame with a Specifically-Routed Frame, and replies to an STE frame with an ARE frame π. In either case, the originating station may get multiple replies, and it picks the route it will use for future Specifically-Routed Frames π.
The Source Routing algorithm requires the bridge to be able to identify any interface by its segment-and-bridge identifier π. When a packet arrives with the RIF present, a boolean in the RIF gets checked to see whether the segment-and-bridge identifiers should be read in the "forward" or "reverse" sense π. The bridge searches for the segment-and-bridge identifier of the interface the packet was received on, then forwards the packet toward the segment named in the identifier that follows it β¨.
GVRP and GMRP are available and effective on Source Routing networks π π.
2.4. Remote Source Route Bridging
There is no Remote Source Route Bridge proposal in IEEE 802.1 at this time, although many vendors ship remote Source Routing Bridges π.
So we let you model the line in one of two ways π¦. One is as a connection between two halves of a "split" Bridge (the split-bridge model). The other is as a LAN segment between two Bridges (the independent-bridge model). In the latter case, the line needs a LAN Segment ID π.
By default, PPP Source Route Bridges use the independent-bridge model π. This requirement keeps things interoperable when there's no option negotiation going on. In order to use the split-bridge model, a system MUST successfully negotiate the Bridge-Identification Configuration Option π₯.
Even though no option negotiation is required to use the independent-bridge model, it is strongly recommended that systems using this model negotiate the Line-Identification Configuration Option π«Ά. Doing so verifies that the LAN Segment Id assigned to the line is configured correctly β¨.
When two PPP systems use the split-bridge model, the system that transmits an Explorer frame onto the PPP link MUST update the RIF on behalf of the two systems π. The point of this constraint is to keep things interoperable and keep the bridging algorithm simple π . For example, if the receiving system didn't know whether the transmitting system had updated the RIF, it would have to scan the RIF and decide whether to update it π. Letting the transmitting system take on the job of updating the RIF means the receiving system can forward the frame from the PPP link without processing the RIF at all π§.
Once source routing is configured on a line or set of lines, the specifics of the link state with respect to STE frames are defined by whichever Spanning Tree Protocol is in use πΈ. Picking the split-bridge or independent-bridge model doesn't change how spanning tree works. Either way, the spanning tree protocol runs on the two systems independently π.
2.5. SR-TB Translational Bridging
IEEE 802 is not currently addressing bridges that translate between Transparent Bridging and Source Routing π. For the purposes of this standard, a device like that counts as either a Transparent or a Source Routing bridge, and it acts on the line in one of those two ways, just like it does on the LAN π.
3. Traffic Services β¨
Several services are provided for the benefit of different system types and user configurations π. These include LAN Frame Checksum Preservation, LAN Frame Checksum Generation, Tinygram Compression, and the identification of closed sets of LANs π .
3.1. LAN Frame Checksum Preservation
IEEE 802.1 stipulates that the Extended LAN must enjoy the same probability of undetected error that an individual LAN enjoys π₯. There's been a ton of debate about the algorithm, but nobody has proposed anything other than having the LAN Frame Checksum received by the ultimate receiver be the same value calculated by the original transmitter π€. To make that work, the line protocols have to preserve the LAN Frame Checksum from end to end π«Ά. The protocol is optimized for this approach π.
3.2. Traffic having no LAN Frame Checksum
Since the protocol is optimized for LAN Frame Checksum preservation, two questions pop up π: "What is the approach to be used by systems which, for whatever reason, cannot easily support Frame Checksum preservation?" and "What is the approach to be used when the system originates a message, which therefore has no Frame Checksum precalculated?"
One idea would be to make stations calculate the Frame Checksum in software whenever hardware support isn't available π. That would meet with profound dismay, and it would raise serious questions of interpretation in a Bridge/Router π.
But stations that implement LAN Frame Checksum preservation already have to solve this problem, since they originate traffic too π . So the solution adopted is that messages with no Frame Checksum get tagged and carried across the line π.
When a system that does not implement LAN Frame Checksum preservation receives a frame with an embedded FCS, it converts the frame for its own use by removing the trailing four octets π¦. When any system forwards a frame that contains no embedded FCS to a LAN, it forwards the frame in a way that causes the FCS to be calculated π§.
3.3. Tinygram Compression
Here's the issue with remote Ethernet bridging π₯Ί. The protocols that are most attractive to bridge are prone to problems on low speed (64 KBPS and below) lines. This can be partially fixed by noticing that the vendors defining these protocols often fill the PDU with octets of ZERO πΈ. So an Ethernet or IEEE 802.3 PDU received from a line that is (1) smaller than the minimum PDU size, and (2) has a LAN Frame Checksum present, must be padded by inserting zeroes between the last four octets and the rest of the PDU before it's transmitted on a LAN π«Ά. These protocols are frequently used for interactive sessions, so those PDUs are often this small π.
To prevent ambiguity, PDUs that need padding are explicitly tagged π. Compression is up to the transmitting station, and it's probably only done on low speed lines, maybe under configuration control β¨.
The pseudo-code in Appendix B describes the algorithms π.
3.4. Virtual LANs
IEEE 802.1Q defines Virtual LANs and their exchangeable VLAN Tagged frame format π. Virtual LANs let users run multiple community groups inside one bridge π¦. A bridging community is identified by its VLAN ID π. If a system that supports Virtual LANs receives a frame from the LAN, that frame is only emitted onto a LAN that belongs to the same community π. To handle multiple communities on a single line, IEEE 802.1Q defines a VLAN Tagged Frame π.
Picture this setup π:
E1 +--+ +--+ E3
------------| | | |------------
| | W1 | |
|B1|------------|B2|
E2 | | | | E4
------------| | | |------------
+--+ +--+
E1, E2, E3, and E4 are Ethernet LANs (or Token Ring, FDDI, etc.) π. W1 is a WAN (PPP over T1) π. B1 and B2 are MAC level bridges π§.
So you want End Stations on E1 and E3 to talk to each other, and you want End Stations on E2 and E4 to talk to each other π«Ά. But you do NOT want End Stations on E1 and E3 talking to End Stations on E2 and E4 π ββοΈ.
This applies to Unicast, Multicast, and Broadcast traffic alike π . If a broadcast datagram originates on E1, you want it propagated only to E3, not to E2 or E4 π€.
Another way to look at it: E1 and E3 form a Virtual LAN, and E2 and E4 form a Virtual LAN π§. It's as if this configuration were actually being used π:
E1 +--+ W2 +--+ E3
------------|B3|------------|B4|------------
+--+ +--+
E2 +--+ W3 +--+ E4
------------|B5|------------|B6|------------
+--+ +--+
3.5. Bridge Control Packet Indicator
The Bridge Control Packet Indicator option is used to classify bridge control packets, like Spanning Tree BPDUs, GARP PDUs, and so on π₯. Protocols like STP and GARP are to the bridging world what OSPF or BGP are to the routing world πΈ. Just like IP route update packets get marked with an IP precedence value of 6 or 7 and given preferential forwarding treatment [13], bridge control packets get marked the same way with the Bridge Control Packet Indicator bit π .
If the Bridge Control Packet Indicator option is enabled, a system MUST set a packet's Bridge Control Packet Indicator bit in the flags field to 1 if and only if it is an outgoing bridge control frame π. On top of that, a system MUST avoid dropping or significantly delaying bridge control packets π«Ά.
If the Bridge Control Packet Indicator option is disabled, a system MUST set the Bridge Control Packet Indicator bit to 0 for all frames π. This keeps backward compatibility with RFC 2878 [14] π¦. Even so, when this option is disabled, a system SHOULD still avoid dropping or significantly delaying bridge control packets β¨. This can be done by parsing the Destination MAC address field π§.
4. A PPP Network Control Protocol for Bridging β¨
okay so the Bridging Control Protocol (BCP) is the bestie who configures, enables and disables the bridge protocol modules on both ends of the point-to-point link π. It uses the same packet exchange mechanism as the Link Control Protocol, which is lowkey iconic. BCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. BCP packets received before this phase is reached SHOULD be silently discarded π
The Bridging Control Protocol is exactly the same as the Link Control Protocol [6] with the following exceptions:
Frame Modifications π
The packet may utilize any modifications to the basic frame format which have been negotiated during the Link Establishment phase.
Implementations SHOULD NOT negotiate Address-and-Control-Field-Compression or Protocol-Field-Compression on other than low speed links. not doing that on fast links, periodt π
Data Link Layer Protocol Field π¦
Exactly one BCP packet is encapsulated in the PPP Information field, where the PPP Protocol field indicates type hex 8031 (BCP).
Code field πΈ
Only Codes 1 through 7 (Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack and Code-Reject) are used. Other Codes SHOULD be treated as unrecognized and SHOULD result in Code-Rejects. so if it's not on the list, it's not the vibe π
ββοΈ
Timeouts β°
BCP packets may not be exchanged until PPP has reached the Network-Layer Protocol phase. An implementation SHOULD be prepared to wait for Authentication and Link Quality Determination to finish before timing out waiting for a Configure-Ack or other response. It is suggested that an implementation give up only after user intervention or a configurable amount of time. patience is a whole aesthetic π§
Configuration Option Types π§
BCP has a distinct set of Configuration Options, which are defined in this document. its own little menu, no notes π
4.1. Sending Bridge Frames π
Before any Bridged LAN Traffic or BPDUs may be communicated, PPP MUST reach the Network-Layer Protocol phase, and the Bridging Control Protocol MUST reach the Opened state. no skipping the setup, it's a whole process π
Exactly one Bridged LAN Traffic or BPDU is encapsulated in the PPP Information field, where the PPP Protocol field indicates type hex 0031 (Bridged PDU). β¨
4.1.1. Maximum Receive Unit Considerations π
The maximum length of a Bridged datagram transmitted over a PPP link is the same as the maximum length of the Information field of a PPP encapsulated packet. Since there is no standard method for fragmenting and reassembling Bridged PDUs, PPP links supporting Bridging MUST negotiate an MRU large enough to support the MAC Types that are later negotiated for Bridging support. the MRU has to be big enough or the whole thing falls apart π Because they include the MAC headers, even bridged Ethernet frames are larger than the default PPP MRU of 1500 octets. so the headers are literally adding weight, ngl π
4.1.2. Loopback and Link Quality Monitoring π
It is strongly recommended that PPP Bridge Protocol implementations utilize Magic Number Loopback Detection and Link-Quality-Monitoring. The 802.1 Spanning Tree protocol, which is integral to both Transparent Bridging and Source Routing (as standardized), is unidirectional during normal operation. Configuration BPDUs emanate from the Root system in the general direction of the leaves, without any reverse traffic except in response to network events. it's basically a one-way street unless something dramatic happens π£οΈβ¨
4.1.3. Message Sequence π
The multiple link case requires consideration of message sequentiality. The transmitting system may determine either that the protocol being bridged requires transmissions to arrive in the order of their original transmission, and enqueue all transmissions on a given conversation onto the same link to force order preservation, or that the protocol does NOT require transmissions to arrive in the order of their original transmission, and use that knowledge to optimize the utilization of several links, enqueuing traffic to multiple links to minimize delay. so either keep the order locked in, or spread it out for speed if the protocol doesn't care πββοΈπ¨
In the absence of such a determination, the transmitting system MUST act as though all protocols require order preservation. Many protocols designed primarily for use on a single LAN require order preservation. when in doubt, order matters, bestie π«Ά
PPP Multilink [7] and its multi-class extension [11] may be used to allow the use of multiple PPP links between a pair of systems without loss of message sequentiality. It treats the group of links as a single link with speed equal to the sum of the speeds of the links in the group. so it's like one big link that's the combined speed of all of them, iykyk π
4.1.4. Separation of Spanning Tree Domains π
It is conceivable that a network manager might wish to inhibit the exchange of BPDUs on a link in order to logically divide two regions into separate Spanning Trees with different Roots (and potentially different Spanning Tree implementations or algorithms). In order to do that, he should configure both ends to not exchange BPDUs on a link. An implementation that does not support any spanning tree protocol MUST silently discard any received IEEE 802.1D BPDU packets. ok the sneaky way to split regions is to stop the BPDUs on that link, and anything that can't do spanning tree just ignores them π€«
If a bridge is connected to an old BCP bridge [10], the other bridge cannot operate according to this specification. Options are therefore to decide that:
- (a) If the bridge wants to terminate the connection, it sends a
Terminate-Requestand terminate the connection. - (b) If the bridge wants to run the connection but not receive old BPDUs, its only option is to run without spanning tree on the link at all, which is dangerous. It should
Configure-Rejectthe option and advise the network administration that it has done so. this one is a lot, bestie, be careful π - (c) If the bridge chooses to be entirely backward compatible, it sends
Configure-Ackand operates in the manner described in Appendix A.
In the event that both the new Management-Inline Option and the Spanning-Tree-Protocol-Configuration Option are configure-rejected, indicating that the peer implements no spanning tree protocol at all and doesn't understand the options, it is an incomplete implementation. For safety reasons the system should cease attempting to configure bridging, and log the fact. If the peer was configure-rejecting the options in order to disable spanning tree entirely, it understood the option but could not within its configuration comply. It should have sent the Spanning-Tree-Protocol-Configuration Option with the value NULL. the peer being like "nope" to everything is a red flag for safety, so stop and log it π©
Implementations SHOULD implement a backward compatibility mode. the old-school compatibility mode is literally a must-have, no cap π¦
4.2. Bridged LAN Traffic (IEEE 802 Untagged Frame) β¨
okay so this is the frame format for bridging LAN traffic on the line πΈ it's the one you use when the traffic doesn't carry a VLAN ID and priority. the fields get sent left to right, obviously π
802.3 Frame format (IEEE 802 Un-tagged Frame) π
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address and Control | 0x00 | 0x31 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|0|Z|B| Pads | MAC Type | Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address | Length/Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LLC data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LAN FCS (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| potential line protocol pad |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame FCS | HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
802.4/802.5/FDDI Frame format (IEEE 802 Un-tagged Frame) π¦
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address and Control | 0x00 | 0x31 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|0|Z|B| Pads | MAC Type | Pad Byte | Frame Control |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address | Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LLC data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LAN FCS (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| optional Data Link Layer padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame FCS | HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Address and Control
As defined by the framing in use. π§
PPP Protocol
0x0031 for PPP Bridging π
Flags
okay the flags are where it gets spicy πΆοΈ
bit F:Set if the LAN FCS Field is presentbit 0:reserved, must be zerobit Z:Set if IEEE 802.3 Pad must be zero filled to minimum sizebit B:Set if the frame is a bridge control packet. See section 3.5 for details.
Pads
any PPP frame can have padding slipped into the "Optional Data Link Layer Padding" field π«Ά and this number tells the receiver how many pad octets to strip off. iconic behavior π
MAC Type
the up-to-date MAC Type values live in the most recent "Assigned Numbers" RFC [4] π right now they're set up like this:
0: reserved
1: IEEE 802.3/Ethernet with canonical addresses
2: IEEE 802.4 with canonical addresses
3: IEEE 802.5 with non-canonical addresses
4: FDDI with non-canonical addresses
5-10: reserved
11: IEEE 802.5 with canonical addresses
12: FDDI with canonical addresses
"canonical" is the address format the IEEE calls the standard address representation π€ in this one, the bit in each byte that's sent first on a LAN is the least significant bit. non-canonical is the opposite, where the bit that goes out first is the most-significant bit. lots of LAN interface implementations use non-canonical form, and in both formats the bytes are listed in the order they're transmitted. it's giving confusing but it's actually just a flip π
ok the important bit π¨ if an implementation supports the higher-numbered format of a MAC Type, then it MUST also support the lower-numbered format of that same MAC Type. so like, if you do FDDI with canonical addresses, you MUST also do FDDI with non-canonical addresses. the whole point is backward compatibility with earlier versions of this spec π₯Ή
a system MUST NOT transmit a MAC Type numbered higher than 4 unless it has received a MAC-Support Configuration Option from its peer saying the peer is willing to receive frames of that MAC Type. no sending the spicy stuff until your bestie says it's cool π ββοΈ
Frame Control
on 802.4, 802.5, and FDDI LANs there are a few octets sitting in front of the Destination MAC Address, and one of them is protected by the FCS π
the MAC Type of the frame decides what goes in the Frame Control field π and a pad octet is there to give you 32-bit packet alignment β¨
Destination MAC Address
as defined by the IEEE π the MAC Type field tells you the bit ordering.
Source MAC Address
same deal as the destination one: as defined by the IEEE, and the MAC Type field defines the bit ordering π
LLC data
this is the rest of the MAC frame, which is (or would be, if it were there) protected by the LAN FCS π‘οΈ
for example, the 802.5 Access Control field and the Status Trailer aren't meaningful to send to another ring, so they get left out π
LAN FCS
if it's present, this is the LAN FCS that was calculated by (or that looks like it was calculated by) the originating station. if the LAN FCS flag isn't set, the field isn't there at all and the PDU is four octets shorter π¦
Optional Data Link Layer Padding
any PPP frame can have padding between the Information field and the Frame FCS. the Pads field holds the length of this padding, and it may not exceed 15 octets π
the PPP LCP Extensions [5] spec a self-describing pad π§ implementations are encouraged to set the Pads field to zero and use that self-describing pad instead. slay π
Frame FCS
mentioned mostly for clarity, bestie π the FCS used on the PPP link is separate from, and unrelated to, the LAN FCS. two different checksums, zero drama πΈ
4.3. Bridged LAN Traffic in IEEE 802 Tagged Frame π
okay bestie, so when you're connecting two or more Virtual LAN segments, the frame MUST include its VLAN ID and priority π an IEEE 802 Tagged Frame can be used if the peer accepts the IEEE-802-Tagged-Frame Option π¦ here's how the bytes go on the line, read left to right β¨
802.3 Frame format (IEEE 802 Tagged Frame)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address and Control | 0x00 | 0x31 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|0|Z|B| Pads | MAC Type | Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address | 0x81 | 0x00 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Pri |C| VLAN ID | Length/Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LLC data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LAN FCS (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| potential line protocol pad |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame FCS | HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
802.4/802.5/FDDI Frame format (IEEE 802 Tagged Frame)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address and Control | 0x00 | 0x31 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|0|Z|B| Pads | MAC Type | Pad Byte | Frame Control |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination MAC Address | Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SNAP-encoded TPID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SNAP-encoded TPID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Pri |C| VLAN ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LLC data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LAN FCS (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| optional Data Link Layer padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame FCS | HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Address and Control
As defined by the framing in use.
PPP Protocol
0x0031 for PPP Bridging
Flags
F: Set if the LAN FCS Field is present0: reserved, must be zeroZ: Set if IEEE 802.3 Pad must be zero filled to minimum sizeB: Set if the frame is a bridge control packet. See section 3.5 for details.
Pads
Any PPP frame may have padding inserted in the "Optional Data Link Layer Padding" field π§ this number tells the receiving system how many pad octets to strip off.
MAC Type
Up-to-date values of the MAC Type field are specified in the most recent "Assigned Numbers" RFC [4] π current values are assigned like this:
0: reserved
1: IEEE 802.3/Ethernet with canonical addresses
2: IEEE 802.4 with canonical addresses
3: IEEE 802.5 with non-canonical addresses
4: FDDI with non-canonical addresses
5-10: reserved
11: IEEE 802.5 with canonical addresses
12: FDDI with canonical addresses
"Canonical" is the address format defined as the standard address representation by the IEEE. In this format, the bit within each byte that is to be transmitted first on a LAN is represented as the least significant bit. In contrast, in non-canonical form, the bit within each byte that is to be transmitted first is represented as the most-significant bit. Many LAN interface implementations use non-canonical form. In both formats, bytes are represented in the order of transmission. β¨
If an implementation supports a MAC Type that is the higher-numbered format of that MAC Type, then it MUST also support the lower-numbered format of that MAC Type. For example, if an implementation supports FDDI with canonical address format, then it MUST also support FDDI with non-canonical address format. The purpose of this requirement is to provide backward compatibility with earlier versions of this specification. π«Ά
A system MUST NOT transmit a MAC Type numbered higher than 4 unless it has received from its peer a MAC-Support Configuration Option indicating that the peer is willing to receive frames of that MAC Type. π
Frame Control
On 802.4, 802.5, and FDDI LANs, there are a few octets preceding the Destination MAC Address, one of which is protected by the FCS πΈ
The MAC Type of the frame determines the contents of the Frame Control field. A pad octet is present to provide 32-bit packet alignment.
Destination MAC Address
As defined by the IEEE. The MAC Type field defines the bit ordering.
Source MAC Address
As defined by the IEEE. The MAC Type field defines the bit ordering.
Pri
3 bit priority value as defined by IEEE 802.1D.
C
Canonical flag as defined by IEEE 802.1Q. It must be set if RIF data is present in the LLC data.
VLAN ID
12 bit VLAN identifier number as defined by IEEE 802.1Q.
LLC data
This is the remainder of the MAC frame which is (or would be were it present) protected by the LAN FCS.
For example, the 802.5 Access Control field, and Status Trailer are not meaningful to transmit to another ring, and are omitted. π
LAN FCS
If present, this is the LAN FCS which was calculated by (or which appears to have been calculated by) the originating station. If the LAN FCS flag is not set, then this field is not present, and the PDU is four octets shorter.
Optional Data Link Layer Padding
Any PPP frame may have padding inserted between the Information field and the Frame FCS. The Pads field contains the length of this padding, which may not exceed 15 octets.
The PPP LCP Extensions [5] specify a self-describing pad. Implementations are encouraged to set the Pads field to zero, and use the self-describing pad instead. π
Frame FCS
Mentioned primarily for clarity. The FCS used on the PPP link is separate from and unrelated to the LAN FCS. π₯
4.4. Bridge protocols and GARP protocols π¦
okay so to avoid network loops and improve redundancy, Bridges exchange a Spanning Tree Protocol data unit known as BPDU π Bridges also exchange a Generic Attributes Registration Protocol data unit to carry the GARP VLAN Registration Protocol (GVRP) data and GARP Multicast Registration Protocol (GMRP) data. GVRP lets the Bridges create VLAN groups dynamically, and GMRP lets bridges filter Multicast data if the receiver is absent from the network. These bridge protocols, including the Spanning Tree Protocol and GARP protocols data units, are carried with a special destination address assigned by the IEEE. π
These bridge protocols data units and GARP protocol data units must be carried in the frame format shown in section 4.2 or 4.3. The Bridge that receives these data units identifies these protocols based on the destination address in the frame format, just like the operation of receiving frames from a LAN segment. β¨
Bridge protocols and GARP protocols data units MUST be recognized by checking the destination addresses, which are assigned by IEEE. π
01-80-c2-00-00-00 Bridge Group Address (used by STP)
01-80-c2-00-00-01 IEEE Std. 802.3x Full Duplex PAUSE operation
01-80-c2-00-00-10 Bridge Management Group Address
01-80-c2-00-00-20 GARP Multicast Registration Protocol (GMRP)
01-80-c2-00-00-21 GARP VLAN Registration Protocol (GVRP)
But there is one exception to this rule: if the bridge is connected to an old BCP bridge [10] and can support backward compatibility, it MUST send the BPDU in the old format described in Appendix A. π
5. BCP Configuration Options π
okay so BCP Configuration Options let you negotiate modifications to the standard characteristics of the network-layer protocol π§ if a Configuration Option is not included in a Configure-Request packet, the default value for that Configuration Option is assumed.
BCP uses the same Configuration Option format defined for LCP [6], with a separate set of Options. π
Up-to-date values of the BCP Option Type field are specified in the most recent "Assigned Numbers" RFC [4]. Current values are assigned as follows:
1 Bridge-Identification
2 Line-Identification
3 MAC-Support
4 Tinygram-Compression
5 LAN-Identification (obsoleted)
6 MAC-Address
7 Spanning-Tree-Protocol (old formatted)
8 IEEE 802 Tagged Frame
9 Management Inline
10 Bridge Control Packet Indicator
5.1. Bridge-Identification
Description
Okay bestie, this one is for when the line is the link between two half bridges that connect virtual or physical LAN segments π Those remote bridges are basically pretending to be one bridge with a weird internal interface, so each side needs to know the LAN segment and bridge numbers of its neighbor π«Ά This option MUST NOT be included in the same Configure-Request as the Line-Identification option π ββοΈ
The Source Routing Route Descriptor and how it gets used are covered in the IEEE 802.1D Appendix on Source Routing π It tells you which segment the interface is plugged into (by its configured segment number) and which bridge it is on that segment (by bridge number) π
The two half bridges MUST agree on the bridge number. If they don't agree, the Bridging Control Protocol MUST NOT enter the Opened state π
Mismatched bridge numbers are a configuration error, so a correct setup means the bridge either calls out the misconfiguration or picks one of the options π To let two systems reach the Opened state even with a mismatch, a system MAY change its bridge number to the higher of the two numbers. A higher-numbered system MUST NOT change its bridge number to a lower number. It should, however, tell the network administration about the misconfiguration in any case π£
By default, a system that doesn't negotiate this option is assumed to NOT be using the two-halves-of-one-source-route-bridge model. It's assumed to be using the model where the two systems are two independent bridges π¦
Example
If System A announces LAN Segment AAA, Bridge #1, and System B announces LAN Segment BBB, Bridge #1, then the resulting Source Routing configuration (read in the appropriate direction) is AAA,1,BBB π
Format
A summary of the Bridge-Identification Option format is shown below. The fields are transmitted from left to right π
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | LAN Segment Number |Bridge#|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 1
Length: 4
LAN Segment Number: A 12-bit number identifying the LAN segment, as defined in the IEEE 802.1D Source Routing Specification πΈ
Bridge Number: A 4-bit number identifying the bridge on the LAN segment, as defined in the IEEE 802.1D Source Routing Specification πΈ
5.2. Line-Identification
Description
The Line-Identification option is for when the line gets assigned a LAN segment number as if it were a two-system LAN segment, following the Source Routing algorithm π§
The Source Routing Route Descriptor and its use are specified in the IEEE 802.1D Appendix on Source Routing. It identifies the segment the interface is attached to by its configured segment number, and itself by bridge number on the segment π
The two bridges MUST agree on the LAN segment number. If a LAN segment number isn't agreed upon, the Bridging Control Protocol MUST NOT enter the Opened state π
Mismatched LAN segment numbers are a configuration error, so a correct setup needs the bridge to either declare the misconfiguration or pick one of the options π€ To let two systems reach the Opened state despite a mismatch, a system MAY change its LAN segment number to the higher of the two numbers. A higher-numbered system MUST NOT change its LAN segment number to a lower number. It should, however, inform the network administration of the misconfiguration in any case π£
By default, a system that doesn't negotiate this option is assumed to have its LAN segment number configured correctly by the user β¨
Format
A summary of the Line-Identification Option format is shown below. The fields are transmitted from left to right π
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | LAN Segment Number |Bridge#|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 2
Length: 4
LAN Segment Number: A 12-bit number identifying the LAN segment, as defined in the IEEE 802.1D Source Routing Specification πΈ
Bridge Number: A 4-bit number identifying the bridge on the LAN segment, as defined in the IEEE 802.1D Source Routing Specification πΈ
5.3. MAC-Support
Description
MAC-Support exists so implementations can say what sort of traffic they're ready to receive ποΈ Negotiating this option is strongly recommended, bestie π
By default, when an implementation doesn't announce the MAC Types it supports, the peer sends every MAC Type that can be carried given the other configuration parameters. The receiver then throws away the MAC Types it doesn't support ποΈ
A device with a 1600 octet MRU might not be willing to support 802.5, 802.4 or FDDI, since each of those supports frames bigger than 1600 octets π
By announcing the MAC Types it will support, an implementation tells its peer that every unspecified MAC Type will be discarded. The peer MAY then save bandwidth by not sending the unsupported MAC Types π
To announce support for more than one MAC Type, you put multiple options in the Configure-Request π§ββοΈ
This option is advisory only, so it's just a suggestion π«§ It MUST NOT be included in a Configure-Nak π ββοΈ
Format
A summary of the MAC-Support Option format is shown below. The fields are transmitted from left to right π¦
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | MAC Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 3
Length: 3
MAC Type: One of the values of the PDU MAC Type field (previously described in the "Bridged LAN Traffic" section) that this system is prepared to receive and service π
5.4. Tinygram-Compression
Description
This option lets an implementation say it supports Tinygram compression ποΈ
Not every system is up for changing messages while they're in transit. On high speed lines it's probably not worth the effort ποΈπ¨
This option MUST NOT be included in a Configure-Nak if it was received in a Configure-Request. This option MAY be included in a Configure-Nak to prompt the peer to send the option in its next Configure-Request π
By default, no compression is allowed. A system that doesn't negotiate this option, or negotiates it to be disabled, should never receive a compressed packet π ββοΈβ¨
Format
A summary of the Tinygram-Compression Option format is shown below. The fields are transmitted from left to right π
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Enable/Disable|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 4
Length: 3
Enable/Disable: If the value is 1, Tinygram-Compression is enabled. If the value is 2, Tinygram-Compression is disabled, and no decompression will occur π₯
The implementations don't need to agree on this setting. One might be willing to decompress and the other not π«Ά
5.5. MAC-Address
Description
The MAC-Address option lets an implementation announce its MAC address, or have one assigned to it πͺͺ The MAC address is written in IEEE 802.1 Canonical format. That means the multicast bit is the least significant bit of the first octet of the address π§
If the system wants to announce its MAC address, it sends the option with that address filled in. When a non-zero MAC address is specified in a Configure-Request, any inclusion of this option in a Configure-Nak MUST be ignored π
If the implementation wants a MAC address assigned, it sends the option with a MAC address of 00-00-00-00-00-00 π Systems that have no mechanism for address assignment will Configure-Reject the option π ββοΈ
A Configure-Nak MUST specify a valid IEEE 802.1 format physical address, and the multicast bit MUST be zero π It is strongly recommended (although not mandatory) that the "locally assigned address" bit, which is the second least significant bit in the first octet, be set to indicate a locally assigned address π
Format
A summary of the MAC-Address Option format is shown below. The fields are transmitted from left to right π¦
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |MAC byte 1 |L|M| MAC byte 2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MAC byte 3 | MAC byte 4 | MAC byte 5 | MAC byte 6 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type: 6
Length: 8
MAC Byte: Six octets of MAC address in 802.1 Canonical order. For clarity, the position of the Local Assignment (L) and Multicast (M) bits are shown in the diagram π·
5.6. Spanning-Tree-Protocol (old format) β¨
Description
Okay bestie, so the Spanning-Tree-Protocol Configuration lets a Bridge stay compatible with older implementations of BCP [10] π¦. Heads up though, it's not compatible with the Management-Inline option, which is the one that lets a bridge handle the many protocols IEEE now expects it to be able to use π
.
If the peer rejects Management-Inline by sending configure-reject, then it must be an implementation of [10], which is described in Appendix A π§. The system may optionally terminate the negotiation or offer to negotiate in that manner.
In this case, if both bridges support a spanning tree protocol, they MUST agree on the protocol to be supported π«Ά. The old BPDU described in Appendix A MUST be used instead of the format shown in section 4.2 or 4.3. When the two disagree, the lower-numbered of the two spanning tree protocols should be used. To settle the drama, the system with the lower-numbered protocol SHOULD Configure-Nak the option and suggest its own protocol for use. If a spanning tree protocol is not agreed upon, except in the case where one system doesn't support any spanning tree protocol at all, the Bridging Control Protocol MUST NOT enter the Opened state π.
Most systems will only participate in a single spanning tree protocol πΈ. If a system wants to take part in more than one spanning tree protocol at the same time, it MAY include all of the appropriate protocol types in one Spanning-Tree-Protocol Configuration Option. The protocol types MUST be specified in increasing numerical order. For comparison during negotiation, the protocol numbers MUST be considered as a single number. For example, if System A includes protocols 01 and 03 and System B indicates protocol 03, System B should Configure-Nak and indicate a protocol type of 03, since 0103 is greater than 03 π₯.
By default, an implementation MUST either support the IEEE 802.1D spanning tree or support no spanning tree protocol π. An implementation that doesn't support any spanning tree protocol MUST silently discard any received IEEE 802.1D BPDU packets. It MUST either silently discard other received BPDU packets or respond to them with an LCP Protocol-Reject packet in this case π.
A summary of the Spanning-Tree-Protocol Option format is shown below. The fields are transmitted from left to right π.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Type | Length | Protocol 1 | Protocol 2 | ..
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Type
7
Length
2 octets, plus 1 additional octet for each protocol that will be actively supported. Most systems will only support a single spanning tree protocol, which gives a length of 3 π§Έ.
Protocol n
Each Protocol field is one octet and indicates a desired spanning tree protocol. Up-to-date values of the Spanning-Tree-Protocol field are specified as PPP DLL numbers in the most recent "Assigned Numbers" RFC [4] π. The current values are assigned as follows:
Value Protocol
0 Null (no Spanning Tree protocol supported)
1 IEEE 802.1D spanning tree
2 IEEE 802.1G extended spanning tree protocol
3 IBM Source Route Spanning tree protocol
4 DEC LANbridge 100 Spanning tree protocol
5.7. IEEE-802-Tagged-Frame π¦
Description
This configuration option lets the implementation say it supports IEEE 802 Tagged Frame. Negotiating this option is strongly recommended π.
A device that supports IEEE 802 Tagged Frame must be willing to support the IEEE 802 Tagged Frame shown in section 4.3.
By default, IEEE 802 Tagged Frame is not supported. A system that doesn't negotiate this option, or negotiates it to be disabled, should never receive an IEEE 802 Tagged Frame π ββοΈ.
A summary of the IEEE 802 Tagged Frame Option format is shown below. The fields are transmitted from left to right.
0 1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | Enable/Disable|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
8
Length
3
Enable/Disable
If the value is 1, IEEE-802-Tagged-Frame is enabled. If the value is 2, IEEE-802-Tagged-Frame is disabled, and it MUST not send any IEEE-802-Tagged-Frame packet π«.
5.8. Management-Inline π
Description
The Management-Inline Configuration Option says the system is willing to receive any IEEE-defined inter-bridge protocols, like bridge protocol data units and GARP protocol data units, in the frame format shown in section 4.2 or 4.3 β¨.
Old BCP [10] implementations will use the negotiation procedure described in section 5.6. Implementations of this procedure will use this option to show they comply with the new BCP, and may optionally negotiate the section 5.6 procedure as well, either in the same configure-request or in response to a configure-reject. It is recommended that the configure-request only shows this option when it's relevant, and that it reply with the Spanning-Tree-Protocol (old format) option if a configure-reject is received. In the normal case, you can expect that to be the quickest negotiation πββοΈ.
If a system receives a configure-request offering both alternatives, it should accept this procedure and reject the Spanning-Tree-Protocol (old format) option.
You can expect old BCP [10] implementations to not understand the option and to issue a configure-reject π.
By default, Management-Inline is not allowed. A system that doesn't negotiate this option, or negotiates it to be disabled, should never receive a Bridge Protocol data unit or GARP protocol data unit inline π.
A summary of the Management-Inline Option format is shown below. The fields are transmitted from left to right.
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
9
Length
2
5.9. Bridge-Control-Packet-Indicator π
Description
This configuration option lets the implementation say it supports the Bridge Control Packet Indicator. Negotiating this option is strongly recommended π«Ά.
By default, the Bridge Control Packet Indicator is not supported. Negotiating this option enables it, and not negotiating it disables it.
A system that doesn't negotiate MUST never send or receive a frame with the Bridge Control Packet Indicator bit set to 1 π¨.
A summary of the Bridge Control Packet Indicator option format is shown below. The fields are transmitted from left to right.
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type
10
Length
2
6. Changes From RFC 2878 π¦
This section lists the changes made to the old RFC [14] to produce this document π.
- Add the Bridge Control Packet Indicator to the configuration options.
- Modify the meaning of one of the reserved bits in the flags field.
7. Security Considerations ππ¨
This network control protocol compares the configurations of two devices and tries to negotiate an acceptable subset of their intersection. That way it can interoperate correctly even when there are minor configuration or implementation differences π€. If a major misconfiguration is detected, the negotiation won't complete successfully, and the link either goes down or never comes up. It's possible that if a bridged link comes up with a rogue peer, network information could be learned from forwarded multicast traffic. Denial of service attacks are also possible, either by closing loops that should be detected and isolated or by offering rogue load π.
Attacks like these aren't limited to this NCP. Any PPP NCP is open to attack when it connects to a foreign or compromised device. However, no situations arise here that aren't common to all NCPs. Any NCP that comes up with a rogue peer is open to snooping and other attacks π. So it's recommended that links where this may happen should be configured to use PPP authentication during the LCP start-up phase π. Please, bestie, do not skip this one!
8. Intellectual Property Notice βοΈ
The IETF takes no position on the validity or scope of any intellectual property or other rights that might be claimed to apply to the implementation or use of the technology described in this document. It also takes no position on whether any license under such rights might or might not be available, and it doesn't claim to have made any effort to identify such rights. Information on the IETF's procedures for rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication, and any assurances of licenses to be made available, or the result of an attempt to obtain a general license or permission to use such proprietary rights by implementers or users of this specification, can be obtained from the IETF Secretariat π.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology required to practise this standard. Please send that information to the IETF Executive Director π.
The IETF has been notified of intellectual property rights claimed in regard to some or all of the specification in this document. For more information, check the online list of claimed rights π.
9. IANA Considerations ποΈ
This document proposes one new BCP option number to be maintained by IANA. This option, described in Section 5.9, is Bridge-Control-Packet-Indicator. IANA has assigned the value 10 to this option π’.
10. Acknowledgments π«Ά
This document is a product of the Point-to-Point Protocol Extensions Working Group π·.
This document is based on the PPP Bridging Control Protocol, RFC 2878 [14], edited by Higashiyama and Baker and produced by the Point-to-Point Protocol Extensions Working Group. It extends that document by adding support for the Bridge Control Packet Indicator, as outlined in section 3.5 and 5.9 π.
Appendices π
A. Spanning Tree Bridge PDU (old format) π§
okay so by default, Spanning Tree BPDUs MUST be encoded with a MAC or 802.2 LLC header, like we covered in section 4.2 or 4.3 of this doc π but if the remote entity sends back a Configure-Reject for the Management-Inline option, that's basically it saying "I'm a purely RFC 1638 compliant device, bestie" π then the local entity is allowed to switch over and encode BPDUs the way section 4.3 of RFC 1638 describes, as long as a suitable non-NULL STP protocol across the link gets successfully negotiated using the (old) Spanning-Tree-Protocol option β¨
this is the Spanning Tree BPDU from RFC 1638, just without any MAC or 802.2 LLC header π¦ those are basically doing the same job as the Address, Control, and PPP Protocol Fields, so no stress. the LAN Pad and Frame Checksum fields are also superfluous, so they're absent π
the Address and Control Fields are subject to LCP Address-and-Control-Field-Compression negotiation π
okay this part is important. a PPP system that's set up to take part in a particular spanning tree protocol and gets a BPDU from a different spanning tree protocol SHOULD reject it with the LCP Protocol-Reject π ββοΈ and a system that's set up to not take part in any spanning tree protocol MUST silently discard all BPDUs. no drama, just gone π«Ά
Spanning Tree Bridge PDU
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Address and Control | Spanning Tree Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BPDU data ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Frame FCS | HDLC FLAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Address and Control
as defined by the framing in use πΈ
Spanning Tree Protocol
the up-to-date values of the Spanning-Tree-Protocol field live in the most recent "Assigned Numbers" RFC [4] π right now they're assigned like this:
Value (in hex) Protocol
0201 IEEE 802.1 (either 802.1D or 802.1G)
0203 IBM Source Route Bridge
0205 DEC LANbridge 100
the two versions of the IEEE 802.1 spanning tree protocol frames can be told apart by fields inside the BPDU data β¨
BPDU data
as defined by the specified Spanning Tree Protocol π
B. Tinygram-Compression Pseudo-Code π
okay this is the pseudo-code for tinygram compression, and it's giving very precise, very iconic π
PPP Transmitter:
if (ZeroPadCompressionEnabled &&
BridgedProtocolHeaderFormat == IEEE8023 &&
PacketLength == Minimum8023PacketLength) {
/*
* Remove any continuous run of zero octets preceding,
* but not including, the LAN FCS, but not extending
* into the MAC header.
*/
Set (ZeroCompressionFlag); /* Signal receiver */
if (is_Set (LAN_FCS_Present)) {
FCS = TrailingOctets (PDU, 4); /* Store FCS */
RemoveTrailingOctets (PDU, 4); /* Remove FCS */
while (PacketLength > 14 && /* Stop at MAC header or */
TrailingOctet (PDU) == 0) /* last non-zero octet */
RemoveTrailingOctets (PDU, 1);/* Remove zero octet */
Appendbuf (PDU, 4, FCS); /* Restore FCS */
}
else {
while (PacketLength > 14 && /* Stop at MAC header */
TrailingOctet (PDU) == 0) /* or last zero octet */
RemoveTrailingOctets (PDU, 1);/* Remove zero octet */
}
}
PPP Receiver:
if (ZeroCompressionFlag) { /* Flag set in header? */
/* Restoring packet to minimum 802.3 length */
Clear (ZeroCompressionFlag);
if (is_Set (LAN_FCS_Present)) {
FCS = TrailingOctets (PDU, 4); /* Store FCS */
RemoveTrailingOctets (PDU, 4); /* Remove FCS */
Appendbuf (PDU, 60 - PacketLength, zeroes);/* Add zeroes */
Appendbuf (PDU, 4, FCS); /* Restore FCS */
}
else {
Appendbuf (PDU, 60 - PacketLength, zeroes);/* Add zeroes */
}
}
References π
[1] IBM, "Token-Ring Network Architecture Reference", 3rd edition, September 1989.
[2] IEEE 802.1, "Draft Standard 802.1G: Remote MAC Bridging", P802.1G/D7, December 30, 1992.
[3] IEEE 802.1D-1993, "Media Access Control (MAC) Bridges", ISO/IEC 15802-3:1993 ANSI/IEEE Std 802.1D, 1993 edition., July 1993.
[4] Reynolds, J., "Assigned Numbers: RFC 1700 is Replaced by an On-line Database", RFC 3232, January 2002.
[5] Simpson, W., "PPP LCP Extensions", RFC 1570, January 1994.
[6] Simpson, W., "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994.
[7] Sklower, K., Lloyd, B., McGregor, G., Carr, D. and T. Coradetti, "The PPP Multilink Protocol (MP)", RFC 1990, August 1996.
[8] IEEE 802.1D-1998, "Information technology - Telecommunications and Information exchange between systems - Local and metropolitan area networks - Common Specifications - Part 3: Media Access Control (MAC) Bridges: Revision. This is a revision of ISO/IEC 10038: 1993, 802.1j-1992 and 802.6k-1992. It incorporates P802.11c, P802.1p and P802.12e." ISO/IEC 15802-3: 1998.
[9] IEEE 802.1Q, ANSI/IEEE Standard 802.1Q, "IEEE Standards for Local and Metropolitan Area Networks: Virtual Bridged Local Area Networks", 1998.
[10] Baker, F. and R. Bowen, "PPP Bridging Control Protocol (BCP)", RFC 1638, June 1994.
[11] Bormann, C., "The Multi-Class Extension to Multi-Link PPP", RFC 2686, September 1999.
[12] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[13] K. Nichols, S. Blake, F. Baker, D. Black, "Definition of the "Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers", RFC 2474, December 1998.
[14] Higashiyama, M. and F. Baker, "PPP Bridging Control Protocol (BCP)", RFC 2878, July 2000.
Authors' Addresses π
Mitsuru Higashiyama Anritsu Corporation 1800 Onna Atsugi-shi Kanagawa-prf. 243-8555 Japan
Phone: +81 (46) 296-6625 EMail: Mitsuru.Higashiyama@yy.anritsu.co.jp
Fred Baker 1121 Via Del Rey Santa Barbara, California 93117 USA
Phone: (408) 526-4257 EMail: fred@cisco.com
Tawei Liao cisco Systems, Inc. 170 W. Tasman Drive San Jose, CA 95134
Phone: (408) 853-8905 EMail: tawei@cisco.com
Full Copyright Statement β
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement π«Ά
Funding for the RFC Editor function is currently provided by the Internet Society. π
π¦ where this page comes from
- ietf: rfc3518 2003-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms