# IEEE 802.1ah

IEEE 802.1ah is an amendment to the IEEE 802.1Q networking standard which adds support for Provider Backbone Bridges. It includes an architecture and a set of protocols for routing over a provider's network, allowing interconnection of multiple provider bridge networks without losing each customer's individually defined VLANs. It was initially created by Nortel before being submitted to the IEEE 802.1 committee for standardization. The final version was approved by the IEEE in June 2008 and has been integrated into IEEE 802.1Q-2011.

## History

The now-ubiquitous Ethernet was initially defined as a local area network (LAN) technology to interconnect the computers within a small organization in which these host computers were very close in proximity to each other. Over the years, Ethernet has become such a popular technology that it became the default Data Link Layer (OSI Layer 2) mechanism for data transport. This created a need for extending the Ethernet from a customer LAN bridging domain to service provider MAN, also known as the Provider bridging domain. For this, a 4 byte S-Tag or Service Tag, a type of Virtual LAN tag, was added to the header of the Ethernet frame in IEEE 802.1ad standard. In the service provider domain, switching was based on S-Tag and destination MAC address, and C-tag was used to create virtual LAN within the customer domain. This technology is also known as QinQ or Q-tunneling.
QinQ does not offer true separation of customer and provider domains but is merely a way to overcome the limitations on the VLAN identifier space. It can also help in separation of the customer and provider control domains when used with other features like control protocol tunneling or Per-VLAN Spanning Tree etc. There is still the problem of having too little control on the MAC addresses, since QinQ forwarding is still based on the customer destination addresses. Thus, better mechanisms are needed.

## Description

The idea of PBB is to offer complete separation of customer and provider domains. For this purpose, a new Ethernet header has been defined. This header may take multiple different forms, but the main components of the header are:
| Offsets | Octet | 0 | 1 | 2 | 3 |
| 0 | 0 | Backbone destination address (B-DA) | Backbone destination address (B-DA) | Backbone destination address (B-DA) | Backbone destination address (B-DA) |
| 4 | 32 | Backbone destination address (B-DA) | Backbone destination address (B-DA) | Backbone source address (B-SA) | Backbone source address (B-SA) |
| 8 | 64 | Backbone source address (B-SA) | Backbone source address (B-SA) | Backbone source address (B-SA) | Backbone source address (B-SA) |
| 12 | 96 | Backbone VLAN EtherType (0x88A8) | Backbone VLAN EtherType (0x88A8) | Backbone VLAN identifier (B-VID) | Backbone VLAN identifier (B-VID) |
| 16 | 128 | MIM EtherType (0x88E7) | MIM EtherType (0x88E7) | MIM Flags | MIM Service identifier (I-SID) |
| 20 | 160 | MIM Service identifier (I-SID) | MIM Service identifier (I-SID) | Customer destination address (C-DA) | Customer destination address (C-DA) |
| 24 | 192 | Customer destination address (C-DA) | Customer destination address (C-DA) | Customer destination address (C-DA) | Customer destination address (C-DA) |
| 28 | 224 | Customer source address (C-SA) | Customer source address (C-SA) | Customer source address (C-SA) | Customer source address (C-SA) |
| 32 | 256 | Customer source address (C-SA) | Customer source address (C-SA) | Customer VLAN EtherType (0x8100) | Customer VLAN EtherType (0x8100) |
| 36 | 288 | Customer VLAN identifier (C-VID) | Customer VLAN identifier (C-VID) | Customer payload EtherType (e.g. 0x0800) | Customer payload EtherType (e.g. 0x0800) |
| 40 | 320 | Customer payload (e.g. IPv4 / TCP / HTTP) | Customer payload (e.g. IPv4 / TCP / HTTP) | Customer payload (e.g. IPv4 / TCP / HTTP) | Customer payload (e.g. IPv4 / TCP / HTTP) |
MIM Flags
    They are (in order, from most significant to least significant):
   * bits [7:5]: Priority Code Point (PCP)
   * bits [4:4]: Drop Eligible Indicator (DEI)
   * bits [3:3]: No Customer Access (NCA); e.g. OAM frames
   * bits [2:2]: Reserved1 (RES1)
   * bits [1:0]: Reserved2 (RES2)
PBB defines a 48-bit B-DA and 48-bit B-SA to indicate the backbone source and destination MAC addresses. It also defines a 12-bit B-VID (backbone VLAN ID) and 24-bit I-SID (Service Instance VLAN ID). The bridges in the PBB domain switch based on the B-VID and B-DA values, which contain 60 bits total. Bridges learn based on the B-SA and ingress port value and hence is completely unaware of the customer MAC addresses. I-SID allows distinguishing the services within a PBB domain.
PBB is the foundation for the IEEE 802.1Qay PBB-TE standard, which was standardized in 2009.
PBB is sometimes referred to as MAC-in-MAC.