IEEE_802.1Q

**IEEE 802.1Q** 以及 **VLAN Tagging** 屬於網際網路下 IEEE 802.1 的標準規範，允許多個網橋在資訊不被外洩的情況下公開的共享同一個實體網路。IEEE 802.1Q - 英文縮寫寫為 dot1q，經常在實現乙太網路封裝協定的架構下被提及。

IEEE 802.1Q 定義一個關於 VLAN 連接介質存取控制層和 IEEE 802.1D 生成樹協定的具體概念模型。這個模型允許各個獨立的 VLAN 以交換機的資料鏈路層或路由器互相連接。

## 用途

以 VLAN 的架構而言，可以想像一個公司的 IT 部門希望能夠只使用一個實體企業網路端以提供個別獨立的邏輯網路端，其他每個部門能夠分配到一個獨特的 VLAN 網路。企業網路中的邊緣交換機用來替所有從裝置儀器中送抵各個部門的資料框（Data frames）插入適合的 VLAN 標記。當影格（frames）在網路中被交換時，VLAN 標籤會在被送回部門底下的裝置時被移除。用這種方法資訊在被傳到其它部門時就不會外洩或被嗅探。

## 封包格式

802.1Q 並非實際封入原始影格中。相反，在乙太網路影格格式裡，在 MAC 位址源與乙太網路類型 / 長度的原始影格裡添加一個 32 位元的域（field）。VLAN 標籤領域必須遵守下列格式:

* **標簽協定識別符**（Tag Protocol Identifier，TPID）：一組 16 位元的域其數值被設定在 0x8100，以用來辨別某個 IEEE 802.1Q 的影格成為「已被標註的」，而這個域所被標定位置與乙太形式 / 長度與未標籤影格的域相同，這是為了用來區別未標籤的影格。
* **優先權代碼點**（Priority Code Point，PCP）：以一組 3 位元的域當作 IEEE 802.1p 優先權的參考，從 0 (最低) 到 7 (最高)，用來對資料流 (音訊、影像、檔案等等) 作傳輸的優先順序。
* **標準格式指示（**Canonical Format Indicator，CFI）：1 位元的域。若是這個域的值為 1，則 MAC 位址則為非標準格式；若為 0，則為標準格式；在乙太交換器中他通常預設為 0。在乙太和權杖環中，CFI 用來做為兩者的相容。若影格在乙太端中接收資料則 CFI 的值須設為 1，且這個埠不能與未標籤的其他埠橋接。
* **虛擬局域網識別符**（VLAN Identifier，VID）：12 位元的域，用來具體指出影格是屬於哪個特定 VLAN。值為 0 時，表示影格不屬於任何一個 VLAN；此時，802.1Q 標籤代表優先權。12 位元的值 0x000 和 0xFFF 為保留值，其他的值都可用來做為共 4094 個 VLAN 的識別符。在橋接器上，VLAN1 在管理上做為保留值。這個 12 位元的域可分為兩個 6 位元的域以延伸目的 (Destination) 與源 (Source) 之 48 位元位址，18 位元的三重標記 (Triple-Tagging) 可和原本的 48 位元相加成為 66 位元的位址。

使用 IEEE 802.2/SNAP 涵蓋了一組值為 00-00-00 的 OUI 域 (所以 SNAP 信頭的協定 ID 域屬於乙太形式)。在乙太網以外的情況下，SNAP 信頭的乙太形式數值被設為 0x8100 且前述的額外 4 個位元會被附加在 SNAP 開頭之後。

因為插入 VLAN 標籤會改變影格，在乙太外掛裡 802.1Q 概括 (encapsulation) 會強迫檢驗原始的影格檢查序列 (Frame Check Sequence, FCS) 域。這同時也會增加影格 4 位元組的上限容量。

**雙重標記**(IEEE 802.1ad) 對於網際網路提供者 (ISP) 是非常有用的。他允許當已被 VLAN 標籤的混合資料從客戶端送出時 ISP 仍能在內部使用 VLAN。**外部**(outer, next to Source MAC and represening ISP VLAN) 標籤會先於**內部**(inner) 標籤。此時，一個可變的 TPID 在 16 進位值可能為 9100、9200 或是 9300，通常作為外部標籤；然而在值為 88a8 時會違反 802.1ad 而無法作為外部標籤。

**三重標記** 也同樣可行。12 位元的 VID 延伸出 48 位元的目的與源位址成 66 位元。中間 3 位元的 PCP 域可作為虛擬 TTL 或 Hop-Count 以確保封包不會成為無限迴圈；更複雜的形式則是使其中一位元超載成為 ingress-egress 的編碼形式。PCP 域的末三碼用來替檔案內容分層，從 000 NR 至 111 XXX。在 Payload 段落找到的 CFI3 位元被組合並編碼成 Next Header (或是協定)，僅有其中兩碼會被使用而產生 4 個協定，[NOP、ICMP、UDP、ENCAP]。
NOP, No Protocol: 用作 IP byte / 管流 (pipe streams) 中微小的 Payload 段落。
ICMP 供做控制用途。UDP 增加埠數量，是一個從 IP 送出的半冗沉 (semi-redundant) 即可選擇的校驗和。ENCAP 協定或是 Payload 形是允許前述所有的協定，不需序文就可以封中；其中內容必須包含 CRC\FCS 標籤。TTL 和長度 (length) 被置於 48 位元的位址域前讓硬體優先讀取以減少延遲。

## 中繼埠及原生 VLAN

1998 802.1Q 標準定義封裝協定的第 9 項，藉由加入 VLAN 標籤可使複數 VLAN 透過一個連結多路複用，然而他卻能夠傳送所有影格不論是否已被標記。因此，為了能夠辨識所傳送的影格是否需要標籤，有些廠商 (尤其是思科系統) 經常將**中繼埠**以及**原生 VLAN** 的想法應用在中繼器上。

中繼埠的想法基於設計一個中繼埠，他能夠接收並轉送影格。若中繼埠接收到未標籤的影格，此影格就會連結這個埠與原生 VLAN。

假設有個 802.1Q 的埠有 VLAN2、3、4，且 VLAN2 被當作原生 VLAN，則在 VLAN2 中的影格會在不帶有 802.1Q 信頭的情況下離開前述的埠 (它們屬於普通的乙太網)。；在此影格未帶 802.1Q 信頭時進入埠會被放入 VLAN2 裡。與 VLAN3 和 VLAN4 的資訊流行為是可預測的，也就是說送抵 VLAN3 和 4 的影格是帶有標記以辨識他們，而離開 VLAN3 和 4 的影格也會攜帶各自的 VLAN 標籤。

然而並不是所有的廠商都會使用這樣的概念。

## 多重 VLAN 註冊協定

另外，IEEE 802.1Q 定義了多重 VLAN 註冊協定 (Mutiple VLAN Registration Protocol, MVRP)，它可應用於橋接器在具體網路上與 VLAN 的溝通。

在 2007 年，MVRP 和 IEEE 802.1ak-2007 修正案取代了速度較慢的 GARP VALN 註冊協定 (GVRP)。

## 多重生成樹協定

2003 年時推行了多重生成樹協定 (Mutiple Spanning Tree Protocol, MSTP) 並定義了原始的 IEEE 802.1s

 

## 參見

* Shortest Path Bridging (SPB), IEEE 802.1aq
* VLAN Trunking Protocol (VTP), a Cisco proprietary VLAN management protocol
* Cisco Inter-Switch Link (ISL), an older VLAN trunking protocol that is proprietary to Cisco
* Dynamic Trunking Protocol another Cisco proprietary networking protocol.

## 參考資料

* IEEE Std. 802.1Q-2005, Virtual Bridged Local Area Networks (PDF). [2010-06-25]. ISBN0-7381-3662-X. （原始內容存檔 (PDF) 於 2010-07-06）.
* ISL & 802.1q Frame Formats（頁面存檔備份，存於網際網路檔案館）