RFC 2878
PPP Bridging Control Protocol (BCP)
RFC 2878: PPP Bridging Control Protocol (BCP) ๐
okay bestie, this one is RFC 2878 and it's giving networking nerd couture ๐ It came out in July 2000 as a Standards Track doc from the Network Working Group. The authors are M. Higashiyama (Anritsu) and F. Baker (Cisco) ๐ซถ. It obsoletes RFC 1638, which is the old version that got replaced ๐ญ It doesn't update anything else.
Here's the standard fine print, because the Internet Society needs it ๐ This document is an Internet standards track protocol for the Internet community, and it asks for discussion and suggestions for improvements. For the standardization state and status, check the current edition of "Internet Official Protocol Standards" (STD 1). Distribution is unlimited. The copyright belongs to The Internet Society (2000), all rights reserved ๐ธ
Table of Contents ๐ฆ
1. Historical Perspective ................................ 3
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
4. A PPP Network Control Protocol for Bridging ........... 9
4.1 Sending Bridge Frames ........................... 10
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 .. 12
4.3 Bridged LAN Traffic in IEEE 802 Tagged Frame .... 16
4.4 Bridge management protocol data unit ............ 21
5. BCP Configuration Options ............................. 21
5.1 Bridge-Identification ........................... 22
5.2 Line-Identification ............................. 23
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 ............................... 30
6. Changes From RFC 1638 ................................. 31
7. Security Considerations ............................... 32
8. Intellectual Property Notice .......................... 32
9. IANA Considerations ................................... 33
10. Acknowledgments ....................................... 33
APPENDICES ................................................... 34
A. Spanning Tree Bridge PDU (old formatted) ........... 34
B. Tinygram-Compression Pseudo-Code ................... 35
References ................................................... 36
Authors' Addresses ........................................... 37
Full Copyright Statement...................................... 38
1. Historical Perspective โจ
okay so there are two basic algorithms floating around the industry for bridging LANs ๐ The more common one is called "Transparent Bridging", and IEEE 802.1 standardized it for Extended LAN configurations. The other is "Source Route Bridging", which is super prevalent on IEEE 802.5 Token Ring LANs.
The IEEE mashed these two together into one device called a Source Routing Transparent (SRT) bridge, which does Source Route and Transparent bridging at the same time ๐ฅ Transparent and SRT bridges are specified in IEEE standard 802.1D-1998 [8].
Here's the tea ๐ IEEE committee 802.1G is working on remote bridging [2], but neither standard directly defines the mechanisms for actually implementing remote bridging. Technically that's outside the IEEE 802 committee's charter ๐ Still, both 802.1D and 802.1G leave room for it. The implementor can model the line either as a component inside a single MAC Relay Entity, or as the LAN media between two remote bridges.
IEEE 802.1Q [9] came along and augmented the original IEEE 802.1D to support Virtual LAN. Virtual LAN is an integral feature of switched LAN networks, so it's a whole main character moment ๐
1.1 Requirements Keywords
okay the keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, whenever they show up in this document, get interpreted as described in [12] ๐ง Read them exactly like that, bestie!
2. Methods of Bridging ๐ธ
2.1. Transparent Bridging
for anyone new to this, let's start with Transparent Bridging ๐ฆ Basically, the bridges in a network work as isolated entities and are mostly unaware of each other's presence.
A Transparent Bridge keeps a Forwarding Database made of records that look like this:
{address, interface}
or
{address, interface, VLAN ID}
It makes these records by saving 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 to the indicated interface. If the Destination Address isn't in the table, the message gets forwarded to every interface except the one it came in on. And yes, this applies to Broadcast/Multicast frames too ๐ก
The obvious fly in the ointment is that redundant paths in the network cause indeterminate (nay, all too determinate) forwarding behavior ๐ญ To stop that, a protocol called the Spanning Tree Protocol runs between the bridges to detect redundant paths and logically remove them 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 neighbor modifies the BPDU and passes it on to its own neighbors. This keeps happening until it reaches the leaf LAN segments (where it dies, since there are no more neighbors to pass it along to), or until a bridge with a superior path to the "Root" stops it. In that second case, the interface the BPDU came in on gets ignored. It goes into a Hot Standby status, no traffic gets emitted onto it except the BPDU, and all traffic received from it gets discarded. This stays that way until a topology change forces the network to recalculate โจ
To set up Virtual LANs across multiple bridges, GVRP (GARP VLAN Registration Protocol) runs between the bridges to swap Virtual LAN information ๐ GVRP gives bridges a way to dynamically establish and update their knowledge of which Virtual LANs currently have active members.
To cut down on unnecessary multicast flooding, bridges swap group MAC addresses using the GARP Multicast Registration Protocol. GMRP gives bridges a way to know 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 linked by remote lines are called a Remote Bridge Group. Inside a Group, a Remote Bridge Cluster gets formed dynamically through execution of the spanning tree, as the set of bridges that can 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, picture three interconnected Remote Bridges, A, B and C. The model might look like a virtual LAN segment between A and B and another between B and C. However, if a line exists between Remote Bridges B and C, a frame could actually be sent directly from B to C, as long as it had the external appearance of having travelled through A ๐
IEEE 802.1G therefore allows a great deal of implementation freedom for features like route optimization and load balancing, as long as the model is maintained ๐
For simplicity, this document discusses Remote Bridging in terms of two Remote Bridges connected by a single line ๐
to be continued in part 2 ๐ซถโจ
2.3. Source Routing โจ
Okay so the IEEE 802.1D Committee has standardized Source Routing for any MAC Type that allows its use ๐ Right now, the MAC Types that support it are FDDI and IEEE 802.5 Token Ring ๐ง
The IEEE standard only defines Source Routing as a component of an SRT bridge, which is kinda limiting ๐ But lots of bridges out there can do Source Routing all by themselves ๐ฅ They're most commonly built to follow either the IBM Token-Ring Network Architecture Reference [1] or the Source Routing Appendix of IEEE 802.1D-1998 [8] ๐
In the Source Routing approach, 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, it does this by adding 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 along the way checks this source route list to figure out whether it should accept the message and how to forward it ๐ฆ
Now, to find the 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. 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 don't apply to ARE or Specifically-Routed Frames, which is a whole vibe ๐ญ The destination system replies to each copy of an ARE frame with a Specifically-Routed Frame, and it replies to an STE frame with an ARE frame. Either way, the originating station might get multiple replies, and it picks the route it'll 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 comes in with the RIF present, a boolean in the RIF gets checked to decide whether the segment-and-bridge identifiers are read in the "forward" or "reverse" sense ๐ซถ The bridge then searches for the segment-and-bridge identifier of the interface the packet was received on, and forwards the packet toward the segment identified by the segment-and-bridge identifier that follows it โจ
GVRP and GMRP are available and effective on Source Routing networks ๐
2.4. Remote Source Route Bridging ๐ฆ
Honest tea: there is no Remote Source Route Bridge proposal in IEEE 802.1 at this time ๐ซ Even so, many vendors ship remote Source Routing Bridges anyway ๐
We let you model the line in one of two ways. Either it's a connection between two halves of a "split" Bridge (the split-bridge model), or it's a LAN segment between two Bridges (the independent-bridge model). With the independent-bridge model, 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 ๐ค If you want to use the split-bridge model, a system MUST successfully negotiate the Bridge-Identification Configuration Option. No cap, this one is non-negotiable ๐จ
Even though a system doesn't need any option negotiation 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 both systems ๐ง The point of this constraint is to keep interoperability solid and keep the bridging algorithm simple ๐ For example, if the receiving system didn't know whether the transmitting system had already updated the RIF, it would have to scan the RIF and decide for itself whether to update it. Letting the transmitting system take on the job means the system receiving the frame from the PPP link can forward it without processing the RIF at all ๐
Given that source routing is configured on a line or a set of lines, the specifics of the link state with respect to STE frames are defined by whichever Spanning Tree Protocol is in use ๐ณ Choosing the split-bridge or independent-bridge model doesn't affect spanning tree operation. In both cases, the spanning tree protocol runs on the two systems independently ๐
2.5. SR-TB Translational Bridging ๐
IEEE 802 isn't 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'll act on the line in one of those two ways, just like it does on the LAN ๐ฆ
3. Traffic Services ๐
Several services are provided for different system types and user configurations ๐ They 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 lot of debate about the algorithm, but nobody has proposed anything other than having the LAN Frame Checksum that the ultimate receiver gets be the same value the original transmitter calculated ๐ฏ Of course, achieving this means 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 ๐ซฅ
Because the protocol is optimized for LAN Frame Checksum preservation, two questions come 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 approach would be to make stations calculate the Frame Checksum in software if hardware support isn't available ๐ฉ That would meet with profound dismay, and it would raise serious questions of interpretation in a Bridge/Router ๐
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 doesn't 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 it in a way that causes the FCS to be calculated ๐งฎ
3.3. Tinygram Compression ๐งธ
Here's the issue in 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 partly fixed by noticing that the vendors defining these protocols often fill the PDU with octets of ZERO 0๏ธโฃ 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 they're frequently this small ๐ฌ
To prevent ambiguity, PDUs requiring padding are explicitly tagged ๐ท๏ธ Compression is at the option of the transmitting station, and it's probably only performed on low speed lines, perhaps 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 user multiple community groups co-exist within 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 will only be 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 ๐๏ธ
For example, say you have this configuration:
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 ๐
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 is true for Unicast, Multicast, and Broadcast traffic ๐ฃ If a broadcast datagram originates on E1, you want it propagated only to E3, and not to E2 or E4 ๐ฏ
Another way of looking at it is that E1 and E3 form a Virtual LAN, and E2 and E4 form a Virtual LAN, as if the following configuration were actually being used ๐งฉ
E1 +--+ W2 +--+ E3
------------|B3|------------|B4|------------
+--+ +--+
E2 +--+ W3 +--+ E4
------------|B5|------------|B6|------------
+--+ +--+
4. A PPP Network Control Protocol for Bridging ๐
The Bridging Control Protocol (BCP) is responsible for configuring, enabling and disabling the bridge protocol modules on both ends of the point-to-point link ๐ BCP uses the same packet exchange mechanism as the Link Control Protocol ๐ค 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 use any modifications to the basic frame format that were negotiated during the Link Establishment phase โจ
Implementations SHOULD NOT negotiate Address-and-Control-Field-Compression or Protocol-Field-Compression on anything other than low speed links ๐
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 are used: Configure-Request, Configure-Ack, Configure-Nak, Configure-Reject, Terminate-Request, Terminate-Ack and Code-Reject ๐ Other Codes SHOULD be treated as unrecognized and SHOULD result in Code-Rejects ๐ซ
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 while 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 ๐งโโ๏ธ
Configuration Option Types ๐งฉ
BCP has a distinct set of Configuration Options, which are defined in this document ๐
4.1. Sending Bridge Frames ๐
okay so before ANY Bridged LAN Traffic or BPDUs can be sent, PPP MUST reach the Network-Layer Protocol phase, and the Bridging Control Protocol MUST reach the Opened state. no skipping ahead, bestie ๐ โโ๏ธ
once that's sorted, exactly one Bridged LAN Traffic or BPDU gets wrapped up in the PPP Information field, and the PPP Protocol field says 0031 (Bridged PDU). so cute and tidy ๐ฆ
4.1.1. Maximum Receive Unit Considerations
the biggest a Bridged datagram can be over a PPP link is the same as the biggest the Information field of a PPP encapsulated packet can be. ๐ฆ there's no standard way to fragment and reassemble Bridged PDUs, so PPP links that support Bridging MUST negotiate an MRU big enough for the MAC Types that get negotiated for Bridging support later.
and here's the tea ๐ต: bridged Ethernet frames are bigger than the default PPP MRU of 1500 octets, because they include the MAC headers. so the default just won't cut it ๐ญ
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 is the thing that's built into both Transparent Bridging and Source Routing (as standardized), and during normal operation it's unidirectional ๐ Configuration BPDUs come out of the Root system and head in the general direction of the leaves, with no reverse traffic unless something happens on the network. it's giving one-way street ๐ฃ๏ธ
4.1.3. Message Sequence
multiple links means you have to think about message sequentiality ๐ง the transmitting system can figure out one of two things:
the protocol being bridged needs transmissions to arrive in the order they were originally sent. in that case, it puts every transmission on a given conversation onto the same link so the order stays intact โจ
or the protocol does NOT require transmissions to arrive in the order they were originally sent. then it can use that info to spread traffic across several links and cut down on delay ๐
if there's no such determination, the transmitting system MUST act as though all protocols require order preservation. honestly that makes sense, since lots of protocols built for a single LAN need order preservation anyway ๐ซถ
PPP Multilink [7] and its multi-class extension [11] can be used to keep message sequentiality across multiple PPP links between two systems. it treats the whole group of links as one single link, with a speed equal to the sum of the speeds of the links in the group. main character energy for sure ๐
4.1.4. Separation of Spanning Tree Domains
it's totally possible a network manager wants to stop BPDUs from being exchanged on a link, so two regions can be split into separate Spanning Trees with different Roots (and maybe different Spanning Tree implementations or algorithms) ๐ง to do that, they should configure both ends to not exchange BPDUs on that link.
an implementation that doesn't support any spanning tree protocol MUST silently discard any received IEEE 802.1D BPDU packets. ๐
now if a bridge is connected to an old BCP bridge [10], the other bridge can't operate under this specification. so you've got three options:
- (a) If the bridge wants to terminate the connection, it sends a Terminate-Request and terminates 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-Reject the option and advise the network administration that it has done so.
- (c) If the bridge chooses to be entirely backward compatible, it sends Configure-Ack and operates in the manner described in Appendix A.
โ ๏ธ option (b) is giving "playing with fire" energy. running with no spanning tree at all is dangerous, so please don't skip that warning ๐
if BOTH the new Management-Inline Option and the Spanning-Tree-Protocol-Configuration Option get configure-rejected, that means the peer has no spanning tree protocol at all and doesn't understand the options. that counts as an incomplete implementation ๐คจ for safety reasons, the system should stop trying to configure bridging and log the fact.
and if the peer was configure-rejecting those options to turn spanning tree off entirely, then it understood the option but couldn't comply within its configuration. it should've sent the Spanning-Tree-Protocol-Configuration Option with the value NULL. ๐
implementations SHOULD implement a backward compatibility mode. โจ
4.2. Bridged LAN Traffic (IEEE 802 Untagged Frame) ๐ฆ
for Bridging LAN traffic, the frame on the line looks like the diagrams below. you use this format when the traffic doesn't include a VLAN ID and priority.
the fields go out from 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|0| 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|0| 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
bit F:Set if the LAN FCS Field is presentbit Z:Set if IEEE 802.3 Pad must be zero filled to minimum sizebit 0:reserved, must be zero
Pads
any PPP frame can have padding stuck into the "Optional Data Link Layer Padding" field. this number tells the receiving system how many pad octets to strip off โ๏ธ
MAC Type
the up-to-date values of the MAC Type field live in the most recent "Assigned Numbers" RFC [4]. right now, they're 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 the IEEE defines as the standard address representation. in this format, the bit in each byte that gets transmitted first on a LAN is the least significant bit. in non-canonical form, that first-transmitted bit is the most significant bit instead. lots of LAN interface implementations use non-canonical form ๐ค in both formats, bytes are shown in the order they're transmitted.
if an implementation supports the higher-numbered format of a MAC Type, then it MUST also support the lower-numbered format of that MAC Type. for example, if an implementation supports FDDI with canonical addresses, it MUST also support FDDI with non-canonical addresses. the point of this is backward compatibility with earlier versions of this specification ๐ซถ
๐ซ a system MUST NOT transmit a MAC Type numbered higher than 4 unless it has received a MAC-Support Configuration Option from its peer, indicating the peer is willing to receive frames of that MAC Type. no surprise frames, please ๐ โโ๏ธ
Frame Control
on 802.4, 802.5, and FDDI LANs, there are a few octets before the Destination MAC Address, and one of them is protected by the FCS ๐
the MAC Type of the frame decides what the Frame Control field contains. a pad octet is there to give you 32-bit packet alignment โจ
Destination MAC Address
as defined by the IEEE. the MAC Type field sets the bit ordering ๐งญ
Source MAC Address
as defined by the IEEE. the MAC Type field sets the bit ordering ๐งญ
LLC data
this is the rest of the MAC frame that is (or would be, if it were there) protected by the LAN FCS ๐ฌ
for example, the 802.5 Access Control field and 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 appears to have been 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 inserted between the Information field and the Frame FCS. the Pads field holds the length of this padding, which can't go over 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 mainly for clarity ๐ the FCS used on the PPP link is separate from and unrelated to the LAN FCS.
4.3. Bridged LAN Traffic in IEEE 802 Tagged Frame โจ
okay so to connect two or more Virtual LAN segments, the frame MUST include its VLAN ID and priority ๐ An IEEE 802 Tagged Frame may be used if the IEEE-802-Tagged-Frame Option is accepted by the peer. Here's how the frame looks on the line ๐
The fields are transmitted from left to right, so read left to right too ๐ซถ
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|0| 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|0| 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
bit F: Set if the LAN FCS Field is present
bit Z: Set if IEEE 802.3 Pad must be zero filled to minimum size
bit 0: reserved, must be zero
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 as follows ๐ธ
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 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
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 allow the Bridges to create VLAN groups dynamically โจ GMRP allows bridges to filter Multicast data if the receiver is absent from the network ๐ These Bridge protocols include 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 ๐
BCP Configuration Options allow modifications to the standard characteristics of the network-layer protocol to be negotiated. 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
5.1. Bridge-Identification โจ
Description ๐
okay so the Bridge-Identification Configuration Option is for when the line is an interface between two half bridges that connect virtual or physical LAN segments ๐ these remote bridges get modeled as one single bridge with a kinda weird internal interface, so each remote bridge needs to know the LAN segment and bridge numbers of its adjacent remote bridge ๐ this option MUST NOT be included in the same Configure-Request as the Line-Identification option, no exceptions bestie ๐ โโ๏ธ
the Source Routing Route Descriptor and how it gets used 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 its bridge number on that segment ๐
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 sign of a configuration error, so a correct setup means the bridge either declares 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 be configured NOT to use the model of the two systems as two halves of a single source-route bridge ๐ it's instead assumed to be configured to use the model of 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
here's a summary of the Bridge-Identification Option format ๐ฆ 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 Configuration Option is for when the line gets assigned a LAN segment number as though it were a two system LAN segment, following the Source Routing algorithm ๐ธ
the Source Routing Route Descriptor and its use are specified by 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 its 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 ๐ญ
since mismatched LAN segment numbers mean a configuration error, a correct setup requires that either the bridge declares the misconfiguration or picks 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, tell the network administration about the misconfiguration in any case ๐ฅ
by default, a system that doesn't negotiate this option is assumed to have its LAN segment number correctly configured by the user ๐
here's a summary of the Line-Identification Option format ๐ฆ 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 ๐
the MAC-Support Configuration Option lets implementations 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 all MAC Types that can be transported given the other configuration parameters ๐ the receiver then discards any MAC Types it doesn't support ๐๏ธ
a device supporting a 1600 octet MRU might not be willing to support 802.5, 802.4 or FDDI, since each of those supports frames larger than 1600 octets ๐
by announcing the MAC Types it will support, an implementation is basically telling its peer that all unspecified MAC Types will get discarded ๐ซง the peer MAY then reduce bandwidth usage by not sending the unsupported MAC Types ๐ฆ
to announce support for multiple MAC Types, you place multiple options in the Configure-Request ๐ง
the nature of this option is advisory only. this option MUST NOT be included in a Configure-Nak. ๐ โโ๏ธ
here's a summary of the MAC-Support Option format ๐ฆ 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 Configuration Option lets the implementation indicate support for Tinygram compression ๐ฌ
not every system is ready to make changes to messages 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 has been 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 ๐ซ
here's a summary of the Tinygram-Compression Option format ๐ฆ 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 the setting of this parameter. one may be willing to decompress and the other not ๐คทโโ๏ธ
5.5. MAC-Address ๐ฆ
Description ๐
the MAC-Address Configuration Option lets the implementation announce its MAC address or have one assigned ๐ชช the MAC address is represented in IEEE 802.1 Canonical format, which 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 its MAC address specified. 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 (the second least significant bit in the first octet) be set, indicating a locally assigned address ๐ท๏ธ
here's a summary of the MAC-Address Option format ๐ฆ 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 is shown in the diagram ๐ซถ
5.6. Spanning-Tree-Protocol (old format) ๐ธ
Description
okay so this config option lets a Bridge stay compatible with the older implementations of BCP [10] ๐ง BUT it's incompatible with the Management-Inline option, which is the one that lets a bridge run all the many protocols IEEE now expects it to use. so it's a choice, bestie ๐
if the peer rejects the Management-Inline configuration option by sending configure-reject, 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 rather than 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 sort out the conflict, 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 for 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 only participate in a single spanning tree protocol. but if a system wants to be in more than one at the same time, it MAY include all of the appropriate protocol types in one single Spanning-Tree-Protocol Configuration Option ๐ the protocol types MUST be listed in increasing numerical order, and for comparison during negotiation, the protocol numbers MUST be treated as one single number. for example, if System A includes protocols 01 and 03 and System B only indicates 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 at all. an implementation that doesn't support any spanning tree protocol MUST silently discard any received IEEE 802.1D BPDU packets, and in this case it MUST either silently discard or respond to other received BPDU packets with an LCP Protocol-Reject packet ๐
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 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. the 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 config option lets the implementation say it supports IEEE 802 Tagged Frame. negotiating it is strongly recommended, bestie ๐ซถ
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 packet ๐
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 the sender MUST not send any IEEE-802-Tagged-Frame packet ๐ฅ
5.8. Management-Inline ๐
Description
this 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 use this option to show they comply with the new BCP, and they may optionally negotiate the section 5.6 procedure as well, either on the same configure-request or in response to a configure-reject. it's recommended that the configure-request only show this option when it's relevant, and that it reply with the Spanning-Tree-Protocol (old formatted) option if a configure-reject is received, since in the normal case that's expected 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
6. Changes From RFC 1638 ๐
this section lists all the changes made to the old BCP [10] to get to this document โจ
- goodbye to all the LAN Identification descriptions, and in their place we get IEEE 802.1Q VLAN descriptions ๐
- the LAN Identification field is removed from the frame format, and the I flags are removed from the flag field ๐๏ธ
- the Spanning Tree BPDU frame format gets merged with the Bridged traffic format ๐ซถ
7. Security Considerations ๐จ
okay, this one is serious, bestie ๐ญ this network control protocol compares the configurations of two devices and tries to negotiate an acceptable subset of their intersection, so that interoperation still works even when there are minor configuration or implementation differences. if a major misconfiguration gets detected, the negotiation won't complete, and the link goes down or never comes up at all ๐ซ it's possible that if a bridged link comes up with a rogue peer, network information could be learned from forwarded multicast traffic, or denial of service attacks could happen by closing loops that should be detected and isolated, or by offering rogue load ๐
and these attacks aren't limited to this NCP. any PPP NCP is open to attack when it connects to a foreign or compromised device ๐ฑ but no situations come up here that are not 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 might happen should be configured to use PPP authentication during the LCP start-up phase ๐ protect your links, periodt ๐
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 pertain to the implementation or use of the technology in this document, or on whether any license under those rights might or might not be available. it also doesn't claim to have made any effort to identify such rights. info 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 get 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 that may be required to practice this standard. please send that info 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 a total of two new BCP option numbers to be maintained by the IANA ๐ these options (described in Section 5.1 and 5.2) are IEEE-802-Tagged-Frame and Management-Inline. the IANA has assigned the values 8 and 9 respectively for these option numbers ๐
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 1638 [10], edited by Rich Bowen of IBM and produced by the Point-to-Point Protocol Extensions Working Group. it extends that document by adding support for Virtual LANs as outlined in [9] ๐ the lore continues
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 section 4.2 or 4.3 of this document says ๐ BUT if the remote entity Configure-Rejects the Management-Inline option, which basically means "I'm a purely RFC 1638 compliant device, bestie," then the local entity may subsequently encode BPDUs the way section 4.3 of RFC 1638 describes ๐ฆ The catch is that a suitable non-NULL STP protocol has to be successfully negotiated across the link using the (old) Spanning-Tree-Protocol option. no shortcuts!! ๐
this is the Spanning Tree BPDU from RFC 1638, minus any MAC or 802.2 LLC header. those headers are functionally equivalent to the Address, Control, and PPP Protocol Fields, so they're not needed here ๐ง The LAN Pad and Frame Checksum fields are also superfluous, so they're just not there. literally gone ๐
the Address and Control Fields are subject to LCP Address-and-Control-Field-Compression negotiation โจ
ok this part is lowkey important ๐ A PPP system that's configured to participate in a particular spanning tree protocol and receives a BPDU from a different spanning tree protocol SHOULD reject it with the LCP Protocol-Reject. And a system that's configured not to participate in any spanning tree protocol MUST silently discard all BPDUs. no notes, 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
the values here are whatever the framing in use defines ๐ธ
Spanning Tree Protocol
the up-to-date values of the Spanning-Tree-Protocol field live in the most recent "Assigned Numbers" RFC [4]. the current ones are:
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
it's whatever the specified Spanning Tree Protocol defines ๐ง
B. Tinygram-Compression Pseudo-Code ๐
this is the pseudo-code for tinygram compression, and it's giving precision ๐ญ
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. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994. See also: http://www.iana.org/numbers.html
- [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.
Authors' Addresses ๐
questions about this memo can also be directed to:
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 519 Lado Drive Santa Barbara, California 93111
EMail: fred.baker@cisco.com
Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (2000). All Rights Reserved.
okay the legal bit, and it matters ๐ซถ You can copy this document and hand it to others, and you can make derivative works that comment on or explain it, or help people implement it. You can publish and distribute those, in whole or in part, with no restrictions of any kind, as long as the copyright notice and this paragraph are included on every copy and derivative work. However, this document itself may not be modified in any way, such as by removing the copyright notice or the references to the Internet Society or other Internet organizations. The only exceptions are when it's needed for developing Internet standards, in which case the copyright procedures defined in the Internet Standards process must be followed, or when it's translated into languages other than English. The limited permissions above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
this document and the information in it are 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: rfc2878 2000-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms