1 vlan簡介
VLAN(Virtual Local Area Network)的中文名為"虛擬局域網"。VLAN是一種將局域網設備從邏輯上划分成一個個網段,從而實現虛擬工作組的新興數據交換技術。這一新興技術主要應用於交換機和路由器中,但主流應用還是在交換機之中。但又不是所有交換機都具有此功能,只有VLAN協議的第二層以上交換機才具有此功能。802.1Q的標准的出現打破了虛擬網依賴於單一廠商的僵局,從一個側面推動了VLAN的迅速發展。
2 交換機端口工作模式簡介
交換機端口有三種工作模式,分別是Access,Hybrid,Trunk。
Access類型的端口只能屬於1個VLAN,一般用於連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,一般用於交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機。
Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在於發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。
3 基本概念(tag,untag,802.1Q)
untag就是普通的ethernet報文,普通PC機的網卡是可以識別這樣的報文進行通訊;
tag報文結構的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網卡是不能識別的
下圖說明了802.1Q封裝tag報文幀結構
帶802.1Q的幀是在標准以太網幀上插入了4個字節的標識。其中包含:
2個字節的協議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優先級,取值0到7,7為最高優先級,0為最低優先級。該域被802.1p采用。
規范格式指示符(CFI)域,占1bit,0表示規范格式,應用於以太網;1表示非規范格式,應用於Token Ring。
VLAN ID域,占12bit,用於標示VLAN的歸屬。
4 交換機接口出入數據處理過程
4.1 端口接收報文時的處理:
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則直接丟棄(缺省)
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果允許則報文攜帶原有VLAN標記進行轉發,否則丟棄該報文。
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄。
4.2 端口發送報文時的處理
Acess端口發報文:
將報文的VLAN信息剝離,直接發送出去
trunk端口發報文:
比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,否則報文將攜帶原有的VLAN標記進行轉發。
hybrid端口發報文:
1、判斷該VLAN在本端口的屬性
2、如果是untag則剝離VLAN信息,再發送,如果是tag則比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,否則報文將攜帶原有的VLAN標記進行轉發。
****************************************************************************************
原文地址:http://blog.csdn.net/jesseyoung/article/details/40047749
博客主頁:http://blog.csdn.net/jesseyoung
****************************************************************************************
-
tag報文結構是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,普通的PC網卡是不能識別 的。
-
Access端口只屬於1個VLAN,一般用於連接計算機端口。
-
Trunk類型的端口可用於多VLAN通信。
-
Hybrid類型的端口允許多VLAN通過,可以接收發送多VLAN報文,可用於交換機與交換機的連接,也可用於交換機和計算機的連接。
-
Hybrid類型的端口和trunk端口在處理數據包時,方法是一樣的。唯一不同之處在於發送數據包時,hybrid端口可以允許多個VLAN的數據包發送時不打標簽,而truck端口只允許缺省vlan(native vlan或者default vlan)的數據包發送時不打標簽。
-
Access端口只屬於一個vlan, 所以它的缺省VLAN就是它所在的VLAN, 不用設置。hybrid 端口 和trunk端口屬於多個VLAN, 所以需要設置缺省VLAN, 默認情況下,它們的缺省VLAN是VLAN 1.
-
如果設置了端口的缺省VLAN ID, 當端口接收到不帶VLAN tag的數據包之后,則將數據包轉發到缺省VLAN 所在的交換機端口;當端口發送帶有VLAN tag的數據包時,如果該數據包的VLAN ID與端口缺省VLAN相同,則交換機將去掉數據包攜帶的VLAN tag, 然后轉發到該端口。
-
華為交換機的缺省VLAN 被稱為PVID, 思科交換機則稱為Native VLAN.
-
交換機端口處理進出數據包過程如下:
-
Access 端口接收數據包:
收到一個數據包,判斷是否有VLAN信息,如果沒有則打上端口的Native VLAN ID, 並進行交換轉發。
有人問了:如果有VLAN信息呢?一般情況下不應該將access端口與帶有vlan的另一端口相連,因為access本來就是為接入普通計算機而設計的,而普通計算機的網卡發送數據包是不帶vlan的。如果由於配置錯誤將其連到了對端trunk端口,或者現在有些計算機的網卡已經可以收發帶有VLAN tag數據包,在這兩種情況下,我的理解是,如果trunk端口發來的數據的VLAN ID與Access端口的native vlan相同,則交換機轉發該數據包。如果trunk端口發來的數據包的VLAN ID與access端口的native vlan不同,則交換機丟棄該數據包。
-
Access 端口發送數據包:
將數據包的VLAN信息剝離,直接發送出去。
-
Trunk端口接收數據包:
收到一個數據包,判斷是否有VLAN信息,如果沒有則打上端口的Native VLAN ID,並進行交換轉發。
如果有VLAN信息,則判斷該trunk端口是否允許該VLAN的數據包進入,如果允許則轉發,否則丟棄。
-
Trunk端口發送數據包:
比較端口的Native VLAN和發送數據包的VLAN信息,如果兩者相等則剝離VLAN信息,然后發送。如果不相等,則直接發送。
-
Hybrid端口接收數據包:
收到一個數據包,判斷是否有VLAN信息, 如果沒有則打上端口的Native VLAN ID, 並進行交換轉發。
如果有VLAN信息,則判斷該hybrid端口是否允許該VLAN的數據包進入,如果允許則轉發,否則丟棄。
-
Hybrid端口發送數據包:
判斷該VLAN在本端口配置的屬性,如果屬性是untag, 則剝離VLAN tag再進行轉發。如果屬性是tag, 則直接發送。
有一點必須清楚,就是交換機內部在處理數據包時,所有的數據包一定是打上VLAN tag的,知道了這一點,那么交換機處理VLAN的具體過程就很容易理解了。
舉例1:
兩台交換機,一台端口配置trunk, native vlan為100, 另一台端口配置access, native vlan 為默認的1.
問: 連接到兩台交換機的PC, 能互通嗎? 為毛?
答案:通。 因為,trunk端口發出去的native vlan數據包中的vlan tag會被剝離,則另一交換機的access口收到的數據包是untag的,它當然能處理, 它收到后只在內部使用native vlan 1, 等一出交換機,由於是access端口,vlan tag就會被剝離掉,並送到trunk端口,而trunk端口再重新打上自己的native vlan 100進行轉發。
這個例子說明,中繼端口發送native vlan數據包時是剝離tag的,即使兩個鏈路配置了不同的native vlan, 也能互通。但是這時交換機的console口一般會報錯:“Mismatched Native VLAN". 呵呵,是不是很神奇?
TRUNK是端口匯聚的意思,允許交換機與交換機、交換機與路由器、主機與交換機或路由器之間通過兩個或多個端口並行連接同時傳輸以提供更高帶寬、更大吞吐量, 大幅度提供整個網絡能力。VLAN TRUNK一般是你設置了多個VLAN后,想通過一個端口傳輸多個VLAN,這個后需要把該端口設置為TRUNK了。
在技術領域中把TRUNK翻譯為中文是“主干、干線、中繼線、長途線” ,不過一般不翻譯,直接用原文。而且這個詞在不同場合也有不同的解釋:
1、 在網絡的分層結構和寬帶的合理分配方面,TRUNK被解釋為“端口匯聚”,是帶寬擴展和鏈路備份的一個重要途徑。TRUNK把多個物理端口捆綁在一起當作一個邏輯端口使用,可以把多組端口的寬帶疊加起來使用。TRUNK技術可以實現TRUNK內部多條鏈路互為備份的功能,即當一條鏈路出現故障時,不影響其他鏈路的工作,同時多鏈路之間還能實現流量均衡,就像我們熟悉的打印機池和MODEM池一樣。
2、在電信網絡的語音級的線路中,Trunk指“主干網絡、電話干線”,即兩個交換局或交換機之間的連接電路或信道,它能夠在兩端之間進行轉接,並提供必要的信令和終端設備。
3、 但是在最普遍的路由與交換領域,VLAN的端口聚合也有的叫TRUNK,不過大多數都叫TRUNKING ,如CISCO公司。所謂的TRUNKING是用來在不同的交換機之間進行連接,以保證在跨越多個交換機上建立的同一個VLAN的成員能夠相互通訊。其中交換機之間互聯用的端口就稱為TRUNK端口。與一般的交換機的級聯不同,TRUNKING是基於OSI第二層數據鏈路層(DataLinkLayer)TRUNKING技術,如果你在2個交換機上分別划分了多個VLAN(VLAN也是基於Layer2的),那么分別在兩個交換機上的VLAN10和VLAN20的各自的成員如果要互通,就需要在A交換機上設為VLAN10的端口中取一個和交換機B上設為VLAN10的某個端口作級聯連接。VLAN20也是這樣。那么如果交換機上划了10個VLAN就需要分別連10條線作級聯,端口效率就太低了。 當交換機支持TRUNKING的時候,事情就簡單了,只需要2個交換機之間有一條級聯線,並將對應的端口設置為Trunk,這條線路就可以承載交換機上所有VLAN的信息。這樣的話,就算交換機上設了上百個個VLAN也只用1個端口就解決了。
當一個VLAN跨過不同的交換機時,在同一VLAN上但是卻是在不同的交換機上的計算機進行通訊時需要使用Trunk。Trunk技術使得一條物理線路可以傳送多個VLAN的數據。交換機從屬於某一VLAN(例如VLAN 3)的端口接收到數據,在Trunk鏈路上進行傳輸前,會加上一個標記,表明該數據是VLAN 3的;到了對方交換機,交換機會把該標記去掉,只發送到屬於VLAN 3的端口。
如果是不同台的交換機上相同id的vlan要相互通信,那么可以通過共享的trunk端口就可以實現,如果是同一台上不同id的vlan/不同台不同id的vlan它們之間要相互通信,需要通過第三方的路由來實現。
什么是鏈路類型?
vlan的鏈路類型可以分為接入鏈路和干道鏈路。
(1)接入鏈路(access link)指的交換機到用戶設備的鏈路,即是接入到戶,可以理解為由交換機向用戶的鏈路。由於大多數電腦不能發送帶vlan tag的幀,所以這段鏈路可以理解為不帶vlan tag的鏈路。
(2) 干道鏈路(trunk link)指的交換機到上層設備如路由器的鏈路,可以理解為向廣域網走的鏈路。這段鏈路由於要靠vlan來區分用戶或者服務,所以一般都帶有vlan tag。
什么是端口類型?
端口類型在以前主要分為兩種,基本上用的也是access和trunk這兩種端口。
(1)access端口:它是交換機上用來連接用戶電腦的一種端口,只用於接入鏈路。例如:當一個端口屬於vlan 10時,那么帶着vlan 10的數據幀會被發送到交換機這個端口上,當這個數據幀通過這個端口時,vlan 10 tag 將會被剝掉,到達用戶電腦時,就是一個以太網的幀。而當用戶電腦發送一個以太網的幀時,通過這個端口向上走,那么這個端口就會給這個幀加上一個vlan 10 tag。而其他vlan tag的幀則不能從這個端口上下發到電腦上。
(2)trunk端口:這個端口是交換機之間或者交換機和上層設備之間的通信端口,用於干道鏈路。一個trunk端口可以擁有一個主vlan和多個副vlan,這個概念可以舉個例子來理解:例如:當一個trunk端口有主vlan 10 和多個副vlan11、12、30時,帶有vlan 30的數據幀可以通過這個端口,通過時vlan 30不被剝掉;當帶有vlan 10的數據幀通過這個端口時也可以通過。如果一個不帶vlan 的數據幀通過,那么將會被這個端口打上vlan 10 tag。這種端口的存在就是為了多個vlan的跨越交換機進行傳遞。
也可以看出,這兩種鏈路方式恰好對應兩種端口方式,理解起來也不算困難。原理理解了,當看到交換機時,配置幾遍就完全明白了。
access和truck 主要是區分VLAN中交換機的端口類型
truck端口為與其它交換機端口相連的VLAN匯聚口,access端口為交換機與VLAN域中主機相連的端口
trunk一般是打tag標記的,一般只允許打了該tag標記的vlan 通過,所以該端口可以允許多個打tag標記的vlan 通過,而access端口一般是untag不打標記的端口,而且一個access vlan端口只允許一個access vlan通過.
access,trunk,hybid是三種端口屬性;
具有access性質的端口只能屬於一個vlan,且該端口不打tag;
具有trunk性質的端口可以屬於多個vlan,且該端口都是打tag的;
具有hybid性質的端口可以屬於多個vlan,至於該端口在vlan中是否打tag由用戶根據具體情況而定;
交換機三種端口模式Access、Hybrid和Trunk的理解
端口有三種模式:access,hybrid,trunk。access性質的端口只能屬於一個vlan,且該端口不打tag,trunk可以屬於多個vlan,可以接收和發送多個vlan的報文,一般用於交換機之間的連接;hybrid也可以屬於多個vlan,可以接收和發送多個vlan的報文,可以用於交換機之間的連接也可以用於交換機和用戶計算機之間的連接。trunk和hybrid的區別主要是,hybrid端口可以允許多個vlan的報文不打標簽,而 trunk端口只允許缺省vlan的報文不打標簽,同一個交換機上不能hybrid和trunk並存。
Tag,untag以及交換機的各種端口模式是網絡工程技術人員調試交換機時接觸最多的概念了,然而筆者發現在實際工作中技術人員往往對這些概念似懂非懂,筆者根據自己的理解再結合一個案例,試圖向大家闡明這些概念untag就是普通的ethernet報文,普通PC機的網卡是可以識別這樣的報文進行通訊;
tag報文結構的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網卡是不能識別的
帶802.1Q的幀是在標准以太網幀上插入了4個字節的標識。其中包含:
2個字節的協議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優先級,取值0到7,7為最高優先級,0為最低優先級。該域被802.1p采用。
規范格式指示符(CFI)域,占1bit,0表示規范格式,應用於以太網;1表示非規范格式,應用於Token Ring。
VLAN ID域,占12bit,用於標示VLAN的歸屬。
以太網端口有三種鏈路類型:Access、Hybrid和Trunk。
Access類型的端口只能屬於1個VLAN,一般用於連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,一般用於交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機。
Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在於發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。
在這里先要向大家闡明端口的缺省VLAN這個概念
Access端口只屬於1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設置;
Hybrid端口和Trunk端口屬於多個VLAN,所以需要設置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1
如果設置了端口的缺省VLAN ID,當端口接收到不帶VLAN Tag的報文后,則將報文轉發到屬於缺省VLAN的端口;當端口發送帶有VLAN Tag的報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統將去掉報文的VLAN Tag,然后再發送該報文。
注:對於華為交換機缺省VLAN被稱為“Pvid Vlan”, 對於思科交換機缺省VLAN被稱為“Native Vlan”
交換機接口出入數據處理過程如下:
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則直接丟棄(缺省)
Acess端口發報文:
將報文的VLAN信息剝離,直接發送出去
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄
trunk端口發報文:
比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發送報文時起作用)
hybrid端口發報文:
1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送
以下案例可以幫助大家深入理解華為交換機的hybrid端口模式:
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此時inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通時數據所走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1訪問inter e0/2下的所接的pc2為例進行說明
pc1所發出的數據,由inter0/1所在的pvid vlan10封裝vlan10的標記后送入交換機,交換機發現inter e0/2允許vlan
10的數據通過,於是數據被轉發到inter e0/2上,由於inter e0/2上vlan
10是untagged的,於是交換機此時去除數據包上vlan10的標記,以普通包的形式發給pc2,此時pc1->p2走的是vlan10
再來分析pc2給pc1回包的過程,pc2所發出的數據,由inter0/2所在的pvid
vlan20封裝vlan20的標記后送入交換機,交換機發現inter e0/1允許vlan 20的數據通過,於是數據被轉發到inter
e0/1上,由於inter e0/1上vlan
20是untagged的,於是交換機此時去除數據包上vlan20的標記,以普通包的形式發給pc1,此時pc2->pc1走的是vlan20
Cisco 交換機 設備 access、trunk、hybrid 端口的處理流程
為交換機設備上access、trunk、hybrid端口的處理流程:注:數據幀在交換機內部處理時,均帶有vlan tag。
a)access端口
發送(從交換機內部往外發送):
帶有vlan tag:刪除tag后,發送
不帶vlan tag:不可能出現
接收:
帶有vlan tag:若該tag等於該access端口的pvid,則可以接收,進入交換機內部
不帶vlan tag:添加該access端口的pvid,進入交換機內部
b)trunk端口(允許發送native VLAN數據的時候,可以不加tag)
發送(從交換機內部往外發送):
帶有vlan tag:若tag等於該trunk端口的pvid,則刪除tag后發送;否則保留tag直接發送
不帶vlan tag:不可能出現
接收:
帶有vlan tag:保留該tag,進入交換機內部
不帶vlan tag:添加該trunk端口的pvid,進入交換機內部
c)hybrid端口(允許發送多個VLAN數據的時候,可以不加tag)
發送(從交換機內部往外發送):
帶有vlan tag:是否帶tag進行發送,取決於用戶配置(用戶可以配置tagged list,untagged list)
不帶vlan tag:不可能出現
接收:
帶有vlan tag:保留該tag,進入交換機內部
不帶vlan tag:添加該hybrid端口的pvid,進入交換機內部
在設備上允許trunk和hybrid端口同時存在,但是不能將hybrid端口直接改為trunk端口(hybrid--》access---》trunk),反之亦然(早期是這樣,現在不知道改沒改)。id端口可以允許多個vlan的數據不帶tag,而802.1q的trunk只能是native vlan(即pvid)對應的vlan的數據不帶tag,應該說hybrid可以實現trunk端口的特性。實際使用時都可以用hybrid端口,而不用trunk。
原文鏈接:http://blog.chinaunix.net/uid-12427199-id-169985.htm
什么是鏈路類型?
vlan的鏈路類型可以分為接入鏈路和干道鏈路。
(1)接入鏈路(access link)指的交換機到用戶設備的鏈路,即是接入到戶,可以理解為由交換機向用戶的鏈路。由於大多數電腦不能發送帶vlan tag的幀,所以這段鏈路可以理解為不帶vlan tag的鏈路。
(2) 干道鏈路(trunk link)指的交換機到上層設備如路由器的鏈路,可以理解為向廣域網走的鏈路。這段鏈路由於要靠vlan來區分用戶或者服務,所以一般都帶有vlan tag。
什么是端口類型?
端口類型在以前主要分為兩種,基本上用的也是access和trunk這兩種端口。
(1)access端口:它是交換機上用來連接用戶電腦的一種端口,只用於接入鏈路。例如:當一個端口屬於vlan 10時,那么帶着vlan 10的數據幀會被發送到交換機這個端口上,當這個數據幀通過這個端口時,vlan 10 tag 將會被剝掉,到達用戶電腦時,就是一個以太網的幀。而當用戶電腦發送一個以太網的幀時,通過這個端口向上走,那么這個端口就會給這個幀加上一個vlan 10 tag。而其他vlan tag的幀則不能從這個端口上下發到電腦上。
(2)trunk端口:這個端口是交換機之間或者交換機和上層設備之間的通信端口,用於干道鏈路。一個trunk端口可以擁有一個主vlan和多個副vlan,這個概念可以舉個例子來理解:例如:當一個trunk端口有主vlan 10 和多個副vlan11、12、30時,帶有vlan 30的數據幀可以通過這個端口,通過時vlan 30不被剝掉;當帶有vlan 10的數據幀通過這個端口時也可以通過。如果一個不帶vlan 的數據幀通過,那么將會被這個端口打上vlan 10 tag。這種端口的存在就是為了多個vlan的跨越交換機進行傳遞。
也可以看出,這兩種鏈路方式恰好對應兩種端口方式,理解起來也不算困難。原理理解了,當看到交換機時,配置幾遍就完全明白了。
access和truck 主要是區分VLAN中交換機的端口類型
truck端口為與其它交換機端口相連的VLAN匯聚口,access端口為交換機與VLAN域中主機相連的端口
trunk一般是打tag標記的,一般只允許打了該tag標記的vlan 通過,所以該端口可以允許多個打tag標記的vlan 通過,而access端口一般是untag不打標記的端口,而且一個access vlan端口只允許一個access vlan通過.
access,trunk,hybid是三種端口屬性;
具有access性質的端口只能屬於一個vlan,且該端口不打tag;
具有trunk性質的端口可以屬於多個vlan,且該端口都是打tag的;
具有hybid性質的端口可以屬於多個vlan,至於該端口在vlan中是否打tag由用戶根據具體情況而定;
交換機三種端口模式Access、Hybrid和Trunk的理解
端口有三種模式:access,hybrid,trunk。access性質的端口只能屬於一個vlan,且該端口不打tag,trunk可以屬於多個vlan,可以接收和發送多個vlan的報文,一般用於交換機之間的連接;hybrid也可以屬於多個vlan,可以接收和發送多個vlan的報文,可以用於交換機之間的連接也可以用於交換機和用戶計算機之間的連接。trunk和hybrid的區別主要是,hybrid端口可以允許多個vlan的報文不打標簽,而 trunk端口只允許缺省vlan的報文不打標簽,同一個交換機上不能hybrid和trunk並存。
Tag,untag以及交換機的各種端口模式是網絡工程技術人員調試交換機時接觸最多的概念了,然而筆者發現在實際工作中技術人員往往對這些概念似懂非懂,筆者根據自己的理解再結合一個案例,試圖向大家闡明這些概念untag就是普通的ethernet報文,普通PC機的網卡是可以識別這樣的報文進行通訊;
tag報文結構的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網卡是不能識別的
帶802.1Q的幀是在標准以太網幀上插入了4個字節的標識。其中包含:
2個字節的協議標識符(TPID),當前置0x8100的固定值,表明該幀帶有802.1Q的標記信息。
2個字節的標記控制信息(TCI),包含了三個域。
Priority域,占3bits,表示報文的優先級,取值0到7,7為最高優先級,0為最低優先級。該域被802.1p采用。
規范格式指示符(CFI)域,占1bit,0表示規范格式,應用於以太網;1表示非規范格式,應用於Token Ring。
VLAN ID域,占12bit,用於標示VLAN的歸屬。
以太網端口有三種鏈路類型:Access、Hybrid和Trunk。
Access類型的端口只能屬於1個VLAN,一般用於連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,一般用於交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機。
Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在於發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標簽,而Trunk端口只允許缺省VLAN的報文發送時不打標簽。
在這里先要向大家闡明端口的缺省VLAN這個概念
Access端口只屬於1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設置;
Hybrid端口和Trunk端口屬於多個VLAN,所以需要設置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1
如果設置了端口的缺省VLAN ID,當端口接收到不帶VLAN Tag的報文后,則將報文轉發到屬於缺省VLAN的端口;當端口發送帶有VLAN Tag的報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統將去掉報文的VLAN Tag,然后再發送該報文。
注:對於華為交換機缺省VLAN被稱為“Pvid Vlan”, 對於思科交換機缺省VLAN被稱為“Native Vlan”
交換機接口出入數據處理過程如下:
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則直接丟棄(缺省)
Acess端口發報文:
將報文的VLAN信息剝離,直接發送出去
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有判斷該trunk端口是否允許該 VLAN的數據進入:如果可以則轉發,否則丟棄
trunk端口發報文:
比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則判斷該hybrid端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發送報文時起作用)
hybrid端口發報文:
1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag)
2、如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送
以下案例可以幫助大家深入理解華為交換機的hybrid端口模式:
[Switch-Ethernet0/1]int e0/1
[Switch-Ethernet0/1]port link-type hybrid
[Switch-Ethernet0/1]port hybrid pvid vlan 10
[Switch-Ethernet0/1]port hybrid vlan 10 20 untagged
[Switch-Ethernet0/1] int e0/2
[Switch-Ethernet0/2]port link-type hybrid
[Switch-Ethernet0/2]port hybrid pvid vlan 20
[Switch-Ethernet0/2]port hybrid vlan 10 20 untagged
此時inter e0/1和inter e0/2下的所接的PC是可以互通的,但互通時數據所走的往返vlan是不同的。
以下以inter e0/1下的所接的pc1訪問inter e0/2下的所接的pc2為例進行說明
pc1所發出的數據,由inter0/1所在的pvid vlan10封裝vlan10的標記后送入交換機,交換機發現inter e0/2允許vlan
10的數據通過,於是數據被轉發到inter e0/2上,由於inter e0/2上vlan
10是untagged的,於是交換機此時去除數據包上vlan10的標記,以普通包的形式發給pc2,此時pc1->p2走的是vlan10
再來分析pc2給pc1回包的過程,pc2所發出的數據,由inter0/2所在的pvid
vlan20封裝vlan20的標記后送入交換機,交換機發現inter e0/1允許vlan 20的數據通過,於是數據被轉發到inter
e0/1上,由於inter e0/1上vlan
20是untagged的,於是交換機此時去除數據包上vlan20的標記,以普通包的形式發給pc1,此時pc2->pc1走的是vlan20
Cisco 交換機 設備 access、trunk、hybrid 端口的處理流程
為交換機設備上access、trunk、hybrid端口的處理流程:注:數據幀在交換機內部處理時,均帶有vlan tag。
a)access端口
發送(從交換機內部往外發送):
帶有vlan tag:刪除tag后,發送
不帶vlan tag:不可能出現
接收:
帶有vlan tag:若該tag等於該access端口的pvid,則可以接收,進入交換機內部
不帶vlan tag:添加該access端口的pvid,進入交換機內部
b)trunk端口(允許發送native VLAN數據的時候,可以不加tag)
發送(從交換機內部往外發送):
帶有vlan tag:若tag等於該trunk端口的pvid,則刪除tag后發送;否則保留tag直接發送
不帶vlan tag:不可能出現
接收:
帶有vlan tag:保留該tag,進入交換機內部
不帶vlan tag:添加該trunk端口的pvid,進入交換機內部
c)hybrid端口(允許發送多個VLAN數據的時候,可以不加tag)
發送(從交換機內部往外發送):
帶有vlan tag:是否帶tag進行發送,取決於用戶配置(用戶可以配置tagged list,untagged list)
不帶vlan tag:不可能出現
接收:
帶有vlan tag:保留該tag,進入交換機內部
不帶vlan tag:添加該hybrid端口的pvid,進入交換機內部
在設備上允許trunk和hybrid端口同時存在,但是不能將hybrid端口直接改為trunk端口(hybrid--》access---》trunk),反之亦然(早期是這樣,現在不知道改沒改)。id端口可以允許多個vlan的數據不帶tag,而802.1q的trunk只能是native vlan(即pvid)對應的vlan的數據不帶tag,應該說hybrid可以實現trunk端口的特性。實際使用時都可以用hybrid端口,而不用trunk。
原文鏈接:http://blog.chinaunix.net/uid-12427199-id-169985.htm