Bug 264014 (EtherTypes, QinQ) - QinQ not working with a lot of switches
Summary: QinQ not working with a lot of switches
Status: Open
Alias: EtherTypes, QinQ
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: Unspecified
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-net (Nobody)
URL:
Keywords: iflib
Depends on:
Blocks:
 
Reported: 2022-05-16 11:24 UTC by Layer8
Modified: 2023-10-02 17:55 UTC (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Layer8 2022-05-16 11:24:09 UTC
There are a lot of switches on the market with QinQ support, but not all support QinQ according to IEEE 802.1AD. This is because of historical reasons. Before IEEE finished 802.1AD, vendores implemented pre-802.1AD standards, often called 802.1QinQ or something like that. 

Today, you can still buy modern switches with legacy/proprietary QinQ-implementation. Those use EhterTypes like 0x9100 for example. Some but not much switches allow to modify the EtherType to  0x88A8 according to 802.1AD or set the EtherType of QinQ to custom values (for example Dell OS6 allows both).

Because FreeBSDs QinQ-implementation only listen to 0x88A8, all switches with legacy/proprietary EhterTypes are incompatible.

The good thing is, most of these proprietary implementations only differ in the EtherType, so if FreeBSD would not only listen to 0x88A8 but also to legacy QinQ-EtherTypes, it would be compatible to such switches as well. 

As far as i can see, legacy EtherTypes are already listed in head/sys/net/ethernet.h

See the following discussion: https://reviews.freebsd.org/D21846

I suggest to support those "legacy"-EtherTypes in FreeBSD.

In detail, it would be nice
- to change the EtherType per interface to one of those listed head/sys/net/ethernet.h
- to define custom EtherTypes per interface, which are not listed in head/sys/net/ethernet.h


FYI: I also started a threat about this topic in the FreeBSD community forum: https://forums.freebsd.org/threads/which-ethertypes-are-recognized-for-802-1ad-qinq.85152/
Comment 1 Zhenlei Huang freebsd_committer freebsd_triage 2023-10-02 17:01:28 UTC
The IEEE 802.1AD published at May 26,2006 [1]. That is about 17 years ago at the time writing.

> There are a lot of switches on the market with QinQ support, but not all support
> QinQ according to IEEE 802.1AD. This is because of historical reasons. Before IEEE 
> finished 802.1AD, vendores implemented pre-802.1AD standards, often called 802.1QinQ
> or something like that. 

To be honest, it does not require much effort to support them in FreeBSD net stack. But I am *personally* not willing to do so, as these devices are manufactured at ancient times. Probably they are EOL and out of support event by the vendors.

> Today, you can still buy modern switches with legacy/proprietary QinQ
> implementation. Those use EhterTypes like 0x9100 for example. Some but not much 
> switches allow to modify the EtherType to  0x88A8 according to 802.1AD or set the 
> EtherType of QinQ to custom values (for example Dell OS6 allows both).

So the default EtherType should be 0x88A8 (802.1AD). 0x9100 should be chosen only for interoperability with ancient devices.

1. https://www.ieee802.org/1/pages/802.1ad.html
Comment 2 Layer8 2023-10-02 17:49:48 UTC
Thanks for reqly, Zhenlei Huang.

The assumption that only old devices which are End of Life use non 802.1AD compliant Ethertypes is unfortunately not correct. 

Because I dont know every switch OS on the market, I cant tell how many Switch-OS use non compliant QinQ Ethertypes. But:

I personally work with Dell Power Switch switches which have Dell OS6 installed. This is a switch OS from Dell, which is old and matured, but still under development. I was invited to a Dell event in the end of 2022 where the have shown a roadmap. According to this information, they are not planning to end support or development of this OS, because its the default Switch OS on Dell Access Level switches which is included if you buy a Dell Switch (they also support some other Open Network Operating Systems). 

This is the user guide of the last last major version of Dell OS6 v6.8: 

https://dl.dell.com/content/manual20646349-dell-networking-n-series-switches-user-guide-version-6-8-0.pdf?language=en-us

On page 677 you will find the information, that they are still using 9100 for Q in Q.

The last update is 6.8.1.3 from August 24 2023. 

They still release new switch series which are supported by OS6 (the last is the N3200E switch series which was released 2022).
Comment 3 Layer8 2023-10-02 17:55:03 UTC
Oh, forgot to add the following information:

Yes, its possible to change the QinQ Ethertype in Dell OS6, but we have customers with grown environments where they dont want to change the ethertype because of legacy applications.