I was reading over some JNCIS-SP documentation on provider bridging and it had this to say regarding the TPID field for QinQ:

IEEE 802.1ad has reserved a TPID of 0x88a8 for the S-TAG however the JUNOS operating system default behavior is to set the TPID equal to 0x8100.

Wikipedia has the following listed for the notable protocols for these TPID values:

0x8100  VLAN-tagged frame (IEEE 802.1Q) & Shortest Path Bridging IEEE 802.1aq
0x88A8  Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq

What is the functional difference between these two TPID values? Why would Juniper use a different default TPID than the IEEE reserved TPID for the S-TAG?

1 Answer 1


What is the functional difference between these two TPID values?


This TPID is used in 802.1Q - its your average, everyday VLAN tagging. A common use for VLANs is for enterprises to organize their network into functional groups (like research, finance, or management).


This TPID is used in 802.1ad - its used for provider bridging (also known as QinQ, stacked VLANs, or double tagging). QinQ allows multiple VLAN tags in an Ethernet frame.

QinQ is used when a customer has to transport VLAN tagged traffic across a service provider network. The service provider will have its own set of VLAN tags, perhaps a tag per customer. So we have customer VLAN tags, and service provider VLAN tags, appropriately called C-TAGs and S-TAGs.

S-TAGs are correlated with the 0x88a8 TPID to signify the existence of the inner C-TAG which uses TPID 0x8100 (S-TAGs are inserted before C-TAGs).

Why would Juniper use a different default TPID than the IEEE reserved TPID for the S-TAG?

They're not, here is a list of the common IEEE TPIDs.

To be more specific, the default is 0x8100 because 802.1Q is used WAY more commonly than 802.1ad/Provider Bridging.

To be even more specific to what I assume is a quote from the JNCIS documentation, is just really poor wording. I believe it's saying that the default TPID is 0x8100 (to imply that 802.1q is default).

  • 4
    Yes, in short 0x8100 is understood by almost everything in the universe, which makes it a safe default. If your hardware supports 0x88a8, then you can set it to be used. Technically, the dtag tpid can be set to anything -- at least with broadcom tech. I've set it to 0x9100 intentionally to stop 802.1q aware hardware from screwing with the traffic. (under lab conditions, of course)
    – Ricky
    Jun 17, 2015 at 19:33
  • 3
    Also to note, you can use 0x8100 for multiple tags. You don't have to use 0x88a8 for multiple tagging. The provider that I work for has layer 1/2 providers that connect to us that double/triple tag using both methods. I honestly don't see a benefit of one of the other.
    – Firebirdnz
    Jun 18, 2015 at 2:42
  • @Firebirdnz the benefit of using 88a8 is in the case where some traffic might be S-tagged and other traffic might not be S-tagged but might be C-tagged. With clever tagging it's possible to dig yourself into a nice deep hole. Nov 3, 2020 at 16:23
  • The presence of an S-TAG in a frame doesn't necessarily imply that an inner C-TAG is used. Carrier Ethernet supports three types of frames at the external network-network interface (ENNI). The three ENNI frame types are: (a) untagged, (b) single S-TAG (TPID=0x88a8) and (c) single S-TAG (TPID=0x88a8) followed by single C-TAG (TPID=0x8100). Aug 10, 2021 at 8:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.