歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux實現的IEEE 802.1Q VLAN

Linux實現的IEEE 802.1Q VLAN

日期:2017/2/28 15:54:12   编辑:Linux教程

第一部分:VLAN的核心概念

說起IEEE 802.1q,都知道是VLAN,說起VLAN,基本上也沒有盲區,網絡基礎。然而說到配置,基本所有人都能順口溜一樣說出Cisco或者H3C設備的配置命令,對於Linux的VLAN配置卻存在大量的疑問。這些疑問之所以存在我覺得有兩點原因:
1.對VLAN的本質還是沒有理解。
不管你的Cisco/H3C命令敲得再熟練,如果看不懂Linux的vconfig,那麼也將無法掩飾你對概念理解的淺顯;
2.對Linux實現虛擬網絡設備風格不熟悉

可能你已經十分理解802.1q了,也許還看過了IEEE的文檔,然而卻對Linux的Bridge,tap,bond等虛擬設備不是很理解,那麼也將無法順利配置VLAN。

對於VLAN概念的理解,有幾點要強調:
1.VLAN分離了廣播域;
2.單獨的一個VLAN模擬了一個常規的交換以太網,因此VLAN將一個物理交換機分割成了一個或多個邏輯交換機;
3.不同VLAN之間通信需要三層參與;
4.當多台交換機級聯時,VLAN通過VID來識別,該ID插入到標准的以太幀中,被稱作tag;
5.大多數的tag都不是端到端的,一般在上行路上第一個VLAN交換機打tag,下行鏈路的最後一個VLAN交換機去除tag;
6.只有在一個數據幀不打tag就不能區分屬於哪個VLAN時才會打上tag,能去掉時盡早要去掉tag;
7.最終,IEEE 802.1q解決了VLAN的tag問題。除了IEEE 802.1q,其余的都是和實現相關的,雖然Cisco和H3C的實現很類似,Linux可以和它們有大不同。

關鍵看最後3點,也就是3,4,5。這是VLAN最難理解的部分,不過一旦理解了,VLAN也就不剩下什麼了。為了使得敘述上以及配置上更加的方便,Cisco以及其他的廠商定義了很多的細節,而這些細節在IEEE 802.1q標准中並沒有被定義,這些細節包括但不局限於以下幾點:

1.每一個VLAN交換機端口需要綁定一個VLAN id;

2.每一個VLAN交換機端口處於下面三類中的一類:access,trunk,hybrid。

2.1.access端口:從此類端口收到的數據幀是不打tag的,從此類端口發出的數據幀是不打tag的;

2.2.trunck端口:從此類端口收到的數據幀打著tag,從此類端口發出的數據幀需要打tag(不考慮缺省VLAN的情況);

2.3.hybrid端口:略

我們實則沒有必要去深究Cisco/H3C的命令以及到底那三類端口類型有何區別,之所以有三類端口類型完全是為了將VLAN的概念(最終的IEEE 802.1q標准)很方便的用起來。說白了,trunk端口的存在是因為不得已,因為有屬於多個VLAN的數據幀要通過單一的物理鏈路,不打tag是無法區分各自屬於哪個VLAN的,於是就有了IEEE 802.1q這個標准,定義了一個tag插入到以太幀中,為了使這個理論性的東西被使用起來,廠商便定義了一系列的概念性的東西,比如和tag相關的鏈路就是trunk鏈路之類。
於是乎,我們可以完全拋開任何的配置命令,拋開任何廠商定義的東西,完全按照IEEE 802.1q標准以及我們的需求來理解VLAN,這樣下來之後,你絕對可以在Linux上完美實現任何VLAN配置了。首先我們定義一下我們的需求以及滿足該需求的網絡拓撲,關鍵看如何接線。

1.情況一.同一VLAN內部通信

1.1.同一交換機同一VLAN的不同端口進行通信


1.2.不同交換機的不同端口進行通信


2.情況二.不同VLAN之間通信

2.1.同一交換機不同VLAN之間進行通信


Copyright © Linux教程網 All Rights Reserved