網(wǎng)絡(luò)交換機端口的深入理解
1、in=進交換器 out=出交換機
2、permitted是允許的
vlan passing是允許的vlan當(dāng)中有哪些vlan數(shù)據(jù)通過
VLAN passing:1(default vlan), 10 //指的是從此trunk口中通過的VLAN
VLAN permitted: 1(default vlan), 2-4094 //指的是trunk口中所放行的VLan,是port trunk permit vlan xx命令所顯示的。打tag標(biāo)簽的。
PVID的作用只是在交換機從外部接受到可以接受Untagged數(shù)據(jù)幀的時候,給數(shù)據(jù)幀添加TAGTAGTAGTAG標(biāo)記用的。

在交換機內(nèi)部轉(zhuǎn)發(fā)數(shù)據(jù)的時候PVID不起任何作用。
pvid英文解析為port-base vlan 是基于端口的vlan id. 1.pvid 不是加在幀頭的標(biāo)記,而是端口的屬性。加在幀頭的標(biāo)記叫VLAN identifier(802.1q術(shù)語),只是常常加在幀頭的標(biāo)識值和pvid 值一樣而已。所以pvid只是端口的屬性,就象端口的speed一樣。
pvid 是用來標(biāo)識端口接收到的未標(biāo)記的幀。也就是說,當(dāng)端口收到一個未標(biāo)記的幀時,就把該幀打上vlan id,這個id值等于pvid的值,然后轉(zhuǎn)發(fā)到VID和PVID相等的VLAN中。
幀從端口出去時,如果幀頭中的VID和端口的PVID值相同,就把這個標(biāo)識去掉,再送出去。
3、untag就是普通的ethernet報文,普通PC機的網(wǎng)卡是可以識別這樣的報文進行通訊;
tag報文結(jié)構(gòu)的變化是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,也就是vlan tag頭;一般來說這樣的報文普通PC機的網(wǎng)卡是不能識別的。
802.1Q封裝tag報文幀結(jié)構(gòu)帶802.1Q的幀是在標(biāo)準(zhǔn)以太網(wǎng)幀上插入了4個字節(jié)的標(biāo)識。其中包含:2個字節(jié)的協(xié)議標(biāo)識符(TPID),當(dāng)前置0x8100的固定值,表明該幀帶有802.1Q的標(biāo)記信息。2個字節(jié)的標(biāo)記控制信息(TCI),包含了三個域。Priority域,占3bits,表示報文的優(yōu)先級,取值0到7,7為較高優(yōu)先級,0為較低優(yōu)先級。該域被802.1p采用。規(guī)范格式指示符(CFI)域,占1bit,0表示規(guī)范格式,應(yīng)用于以太網(wǎng);1表示非規(guī)范格式,應(yīng)用于Token Ring。VLAN ID域,占12bit,用于標(biāo)示VLAN的歸屬。

以太網(wǎng)端口有三種鏈路類型:Access、Hybrid和Trunk。
Access類型的端口只能屬于1個VLAN,一般用于連接計算機的端口;
Trunk類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,一般用于交換機之間連接的端口;
Hybrid類型的端口可以允許多個VLAN通過,可以接收和發(fā)送多個VLAN的報文,可以用于交換機之間連接,也可以用于連接用戶的計算機。
!Hybrid端口和Trunk端口在接收數(shù)據(jù)時,處理方法是一樣的,唯一不同之處在于發(fā)送數(shù)據(jù)時:Hybrid端口可以允許多個VLAN的報文發(fā)送時不打標(biāo)簽,而Trunk端口只允許缺省VLAN的報文發(fā)送時不打標(biāo)簽。

端口的缺省VLAN這個概念A(yù)ccess端口只屬于1個VLAN,所以它的缺省VLAN就是它所在的VLAN,不用設(shè)置;
Hybrid端口和Trunk端口屬于多個VLAN,所以需要設(shè)置缺省VLAN ID。缺省情況下,Hybrid端口和Trunk端口的缺省VLAN為VLAN 1當(dāng)端口接收到不帶VLAN Tag的報文后,則將報文轉(zhuǎn)發(fā)到屬于缺省VLAN的端口(如果設(shè)置了端口的缺省VLAN ID)。當(dāng)端口發(fā)送帶有VLAN Tag的報文時,如果該報文的VLAN ID與端口缺省的VLAN ID相同,則系統(tǒng)將去掉報文的VLAN Tag,然后再發(fā)送該報文。注:對于華為交換機缺省VLAN被稱為“Pvid Vlan”,對于思科交換機缺省VLAN被稱為“Native Vlan”
交換機接口出入數(shù)據(jù)處理過程如下:
Acess端口收報文:
收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,并進行交換轉(zhuǎn)發(fā),如果有則直接丟棄(缺省)
Acess端口發(fā)報文:
將報文的VLAN信息剝離,直接發(fā)送出去 (所以,Access端口可以實現(xiàn)同一交換機上相同VLAN下的主機通信;也可以實現(xiàn)交換機級連時的缺省VLAN1報文交換,但不能實現(xiàn)VLAN透傳。)
trunk端口收報文:
收到一個報文,判斷是否有VLAN信息:如果有,判斷該trunk端口是否允許該 VLAN的數(shù)據(jù)進入:如果可以則轉(zhuǎn)發(fā),否則丟棄;如果沒有VLAN信息則打上端口的PVID,并進行交換轉(zhuǎn)發(fā)。
trunk端口發(fā)報文:
比較將要發(fā)送報文的VLAN信息和端口的PVID,如果不相等則直接發(fā)送。如果兩者相等則剝離VLAN信息,再發(fā)送。(所以,將交換機級連口統(tǒng)統(tǒng)設(shè)置為Trunk并允許所有VLAN通過后,VLAN2-VLAN4000直接透傳,而VLAN1則因為和Trunk缺省PVID相同,需要通過剝離VLAN信息又添加VLAN信息實現(xiàn)了透傳。而如果更改Trunk的缺省PVID,則可以實現(xiàn)某一交換機下的VLAN-X和另一交換機下的VLAN-Y通信。)
hybrid端口收報文:
收到一個報文,判斷是否有VLAN信息:如果有,則判斷該hybrid端口是否允許該VLAN的數(shù)據(jù)進入:如果可以則轉(zhuǎn)發(fā),否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發(fā)送報文時起作用);如果沒有則打上端口的PVID,并進行交換轉(zhuǎn)發(fā)。
hybrid端口發(fā)報文:
1、判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag,哪些VLAN是tag)
2、如果是untag則剝離VLAN信息,再發(fā)送,如果是tag則直接發(fā)送(所以,Hybrid實現(xiàn)了不同VLAN下的主機的通信。)
下面是交換機接各種口收到和發(fā)送數(shù)據(jù)幀采取的動作:
Access (接收) Tagged = PVID 不接收 注:部分高端產(chǎn)品可能接收。
Access (接收) Tagged =/ PVID 不接收 注:部分高端產(chǎn)品可能接收。
Access (接收) Untagged 接收 增加tag=PVID
從PC
Access (發(fā)送) Tagged = PVID 轉(zhuǎn)發(fā) 刪除tag
Access (發(fā)送) Tagged =/ PVID 不轉(zhuǎn)發(fā) 不處理
Access (發(fā)送) Untagged 無此情況 無此情況 無此情況
Trunk (接收) Tagged = PVID 接收 不修改tag
Trunk (接收) Tagged =/ PVID 接收 不修改tag
Trunk (接收) Untagged 接收 增加tag=PVID
Trunk (發(fā)送) Tagged = PVID If Passing then 轉(zhuǎn)發(fā) 刪除tag
Trunk (發(fā)送) Tagged =/ PVID If Passing then 轉(zhuǎn)發(fā) 不修改tag
Trunk (發(fā)送) Untagged 無此情況 無此情況 無此情況(注)
Hybrid (接收) Tagged = PVID 接收 不修改tag 對端是trunk
Hybrid (接收) Tagged =/ PVID 接收 不修改tag 對端是trunk
Hybrid (接收) Untagged 接收 增加tag=PVID 類Trunk
Hybrid (發(fā)送) Tagged = PVID Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項
Hybrid (發(fā)送) Tagged =/ PVID Tag 和 untag 中列出的vlan可以passing 看Tag項和untag項
Hybrid (發(fā)送) Untagged 無此情況 無此情況 無此情況(注)
注:數(shù)據(jù)幀在交換機內(nèi)部轉(zhuǎn)發(fā)過程中不會改變數(shù)據(jù)中的tag也不會刪除數(shù)據(jù)幀中的tag; 改變數(shù)據(jù)幀中的tag只發(fā)生在數(shù)據(jù)幀進入或離開端口時。
下面來解釋上面的幾種狀態(tài):
1,Access (接收) Tagged = PVID 不接收 注:部分高端產(chǎn)品可能接收。
2,Access (接收) Tagged =/ PVID 不接收 注:部分高端產(chǎn)品可能接收。
3,Access (接收) Untagged 接收 增加tag=PVID 從PC(1)這種狀態(tài)一般不會發(fā)生,在如下的情況會發(fā)生accsess端口收到帶tag=pvid的情況。
pc1-----access(switch)trunk----------access(switch2)access------pc2 所有taccess端口都處于同一個vlan中。
pc發(fā)送給switch1的數(shù)據(jù)幀將增加tag=pid然后轉(zhuǎn)發(fā)到switch的trunk口參照“Trunk (發(fā)送) Tagged =/ PVID If Passing then 轉(zhuǎn)發(fā) 不修改tag”數(shù)據(jù)幀將會原樣轉(zhuǎn)發(fā)到swi tch2的access端口。在這里就出現(xiàn)了我們的第一種情況,Access (接收) Tagged = PVID 不接收。
(2)很容易明白access當(dāng)然不會接收tagg 不等于pvid的數(shù)據(jù)幀,不然我們劃分vlan就沒有任何意義。(無法隔離廣播域)
(3)種情況是我們較常用的access端口收到pc發(fā)送的untag數(shù)據(jù)幀會增加tag=pvid 下面來看看access發(fā)送數(shù)據(jù)幀的三種情況。
1,Access (發(fā)送) Tagged = PVID 轉(zhuǎn)發(fā) 刪除tag
2,Access (發(fā)送) Tagged =/ PVID 不轉(zhuǎn)發(fā) 不處理
2,Access (發(fā)送) Untagged 無此情況 無此情況 無此情況
(1)情況比較常見在如下拓?fù)渲?pc1------access1(switch)access2-----pc2 過程大致如下, pc1的untag包到達(dá)access1打上Pvid轉(zhuǎn)發(fā)到access2發(fā)現(xiàn)發(fā)送過來的數(shù)據(jù)幀tag=pvid 會刪除tag轉(zhuǎn)發(fā)。
(2)情況一般不會發(fā)生(還真想不出來哪種情況下會發(fā)生)
(3)情況 無此情況無此情況
trunk口的情況:
Trunk (接收) Tagged = PVID 接收 不修改tag
Trunk (接收) Tagged =/ PVID 接收 不修改tag
Trunk (接收) Untagged 接收 增加tag=PVID
Trunk (發(fā)送) Tagged = PVID If Passing then 轉(zhuǎn)發(fā)刪除tag
Trunk (發(fā)送) Tagged =/ PVID If Passing then 轉(zhuǎn)發(fā)不修改
Trunk (發(fā)送) Untagged 無此情況 無此情況 無此情況(注) Trunk口的情況比較容易比較容易理解就不一一解釋了。
用幾個例子來說明上面遇到的幾種情況。
pc1-----fa0/1(switch1)fa0/2------fa0/3(switch2)fa0/4-------pc2 switch上每個端口都是access端口,switch1的端口都加入vlan 10 switch2的端口都加入vlan 20;pc1和pc二的IP地址在同一網(wǎng)段。經(jīng)測試pc1可以正常訪問 pc2下面我們來看看數(shù)據(jù)轉(zhuǎn)發(fā)的過程。
fa0/1:Access (接收) Untagged 接收 增加tag=10 然后轉(zhuǎn)發(fā)到fa0/2 fa0/2 :Access (發(fā)送) Tagged = 10轉(zhuǎn)發(fā) 刪除tag fa0/3 :Access (接收) Untagged 接收 增加tag=20 然后轉(zhuǎn)發(fā)到fa0/4 fa0/4 : Access (發(fā)送) Tagged = 20 轉(zhuǎn)發(fā) 刪除tag PC: 收到untagged包可以正常接收。
pc1-----fa0/1(switch1)fa0/2------fa0/3(switch2)fa0/4-------pc2
pfa0/1 fa0/2 加入vlan 10 fa0/3(trunk) fa0/4(vlan1)pc1和pc二的IP地址在同一網(wǎng)段。經(jīng)測試pc1可以正常訪問pc2
過程如下:fa0/1:Access (接收) Untagged 接收 增加tag=10 然后轉(zhuǎn)發(fā)到fa0/2 fa0/2:Access (發(fā)送) Tagged = 10轉(zhuǎn)發(fā) 刪除tag fa0/3:Trunk (接收) Untagged 接收 增加tag=PVID(默認(rèn)PVID=1) fa0/4:Access (發(fā)送) Tagged = 10轉(zhuǎn)發(fā) 刪除tag pc: 正常接收到pc1的數(shù)據(jù)。