vlan與交換機端口模式Access,Hybrid,Trunk


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

****************************************************************************************

 


 

  1. tag報文結構是在源mac地址和目的mac地址之后,加上了4bytes的vlan信息,普通的PC網卡是不能識別 的。

  2. Access端口只屬於1個VLAN,一般用於連接計算機端口。

  3. Trunk類型的端口可用於多VLAN通信。

  4. Hybrid類型的端口允許多VLAN通過,可以接收發送多VLAN報文,可用於交換機與交換機的連接,也可用於交換機和計算機的連接。 

  5. Hybrid類型的端口和trunk端口在處理數據包時,方法是一樣的。唯一不同之處在於發送數據包時,hybrid端口可以允許多個VLAN的數據包發送時不打標簽,而truck端口只允許缺省vlan(native vlan或者default vlan)的數據包發送時不打標簽。

  6. Access端口只屬於一個vlan, 所以它的缺省VLAN就是它所在的VLAN, 不用設置。hybrid 端口 和trunk端口屬於多個VLAN, 所以需要設置缺省VLAN, 默認情況下,它們的缺省VLAN是VLAN 1.

  7. 如果設置了端口的缺省VLAN ID, 當端口接收到不帶VLAN tag的數據包之后,則將數據包轉發到缺省VLAN 所在的交換機端口;當端口發送帶有VLAN tag的數據包時,如果該數據包的VLAN ID與端口缺省VLAN相同,則交換機將去掉數據包攜帶的VLAN tag, 然后轉發到該端口。

  8. 華為交換機的缺省VLAN 被稱為PVID, 思科交換機則稱為Native VLAN.

  9. 交換機端口處理進出數據包過程如下:

 

  • 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, 能互通嗎? 為毛?

 

wKiom1WnZWGCfEphAAC6j4a1oEw300.jpg

 

    答案:通。 因為,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它們之間要相互通信,需要通過第三方的路由來實現。

 


 

 

 

 

Pvid和Vid經常出現於二、三層交換機里,由於PVID和VID的設置不合理,造成VLAN划分變得混亂。本文就對PVID和VID進行了徹底研究。

pvid是交換機上的概念,說的是進入該端口的報文如果沒有打vlan id就按pvid的值打上,
vid是報文上的vlan tag的意思.不是同個概念哦.

首先解釋一下什么是PVID,PVID英文解釋為Port-base VLAN ID,是基於端口的VLAN ID,一個端口可以屬於多個vlan,但是只能有一個PVID,收到一個不帶tag頭的數據包時,會打上PVID所表示的vlan號,視同該vlan的數據包處理,所以也有人說PVID就是某個端口默認的vlan ID號。

默認情況下,簡單的理解為:
ACCESS端口接PC,VID=PVID
TRUNK端口級聯,VID=全部,PVID=1

簡單的說,VID(VLAN ID)是VLAN的標識,定義其中的端口可以接收發自這個VLAN的包;而PVID(Port VLAN ID)定義這個untag端口可以轉發哪個VLAN的包。比如,當端口1同時屬於VLAN1、VLAN2和VLAN3時,而它的PVID為1,那么端口1可以接收到VLAN1,2,3的數據,但發出的包只能發到VLAN1中

在網上發現一個比較好的解釋是:PVID並不是加在幀頭的標記,而是端口的屬性,用來標識端口接收到的未標記的幀。也就是說,當端口收到一個未標記的幀時,則把該幀轉發到VID和本端口PVID相等的VLAN中去。為了驗證這一說法,在S3026上做了以下實驗:
在S3026上選兩個端口,連接兩台主機A、B,按照下表給端口設置不同的PVID和VID,用A ping B,並在B上抓包,記錄實驗結果。


注:結果中“有”表示抓包有ICMP的包(但ping不同),“無”表示沒有,“通”表示可以ping通。VID為“無”表示該端口沒有加到任何VLAN里。

所有結果為“無”的可以解釋為:當端口1收到無標記的幀后,轉發到VID=PVID=1的端口去,由於端口2無VID,故主機B收不到包。
所有結果為“有”的可以解釋為:當端口1收到無標記的幀后,轉發到VID=PVID=1的端口去,由於端口2的VID=1,故主機B收到ICMP的ECHO包,並發出ECHO Reply,由於此種情況下端口1的VID不等於1,故B的Reply並不能到達A。所以只有當兩個端口的PVID和VID一樣時,才可以互通。
到此我和大家一樣有個疑問,一個VLAN干嗎要設置PVID和VID兩種標識呀?方正只有當PVID=VID時才能互通,只有一個不就夠了嗎?請往下看。

當所有VLAN都在一個交換機里時,確實只需要一個標識就夠了,但跨設備的VLAN就需要另一種標識,這就是802.1Q的VLAN ID,即VID。
我們知道802.1Q的VLAN是在二層幀里加進VLAN標識,俗稱打tag,而計算機不能解析這種二層的幀,所以交換機的一個端口在分到一個VLAN時有tag和untag屬性,tag端口用來連接設備,untag端口用來連接計算機。Tag端口出去的幀一般都打上了tag,tag中的VID有的來自PVID,有的則來自其它tag端口中本身就含有tag的幀。
設備互連時,由tag中的VID決定了一個二層幀屬於哪個VLAN,而計算機不具備打tag的功能,所以只有給連接計算機的端口添加一個屬性,用來決定計算機發出的未標記的幀屬於哪個VLAN,這個屬性就是PVID。

我們來總結一下,S3026的VLAN轉發的機制:在一個端口接收到一個無標記幀時,僅僅由該端口的PVID決定該幀轉發到哪個VLAN中,即轉發到VID=PVID的VLAN中。
到此我們理解了PVID的含義和作用,但似乎只有untag端口下的PVID才具有意義,而實際上tag端口也有PVID屬性,PVID對tag端口會造成什么影響呢?請看中篇。

PVID和VID徹底研究(中)
——PVID值對TAG端口影響

 

在上篇,我們理解了PVID的含義和作用,本篇將通過實驗,分別在S3026和S3526上研究PVID值對tag端口的影響。首先在S3026上進行實驗,如下圖所示:

我們將用到3個端口:Port 1、2、3,
各端口PVID設置如下:
Port 1:PVID = n
Port 2:PVID = 2
Port 3:PVID = 3
創建2個VLAN:
vlan2:VID = 2,包含Port 1 (tag)、Port 2 (untag)
vlan3:VID = 3,包含Port 1 (tag)、Port 3 (untag)
將3台主機A、B、C分別接在Port 1、2、3上,
分別用主機B、C去ping主機A,在主機A上抓包。

實際上tag端口接計算機是沒有意義的,因為計算機無法解析打了tag的二層包文,但通過抓包軟件可以抓到這種二層報文,通過這種方法可以進行分析。
實驗時主機B和C可以是同一台計算機,只不過接到不通端口上,為了方便說明,將它們分開表示。
實驗結果如下:
當n = 1時,可以看到來自B和C的包頭前都含有802.1Q的Packet,B、C都不能ping通A(ping不通的由於主機A無法解析打了tag的二層包);
當n = 2時,可以看到來自B的包頭前不含有802.1Q的Packet,而來自C的有,僅B可ping通A;;
當n = 3時,可以看到來自C的包頭前不含有802.1Q的Packet,而來自B的有,僅C可ping通A;;

通過分析,得出S3026轉發機制大致如下:
1、由主機B發出的包到接口2(由於此時B不知道A的MAC地址,會發出arp廣播包)
2、根據接口2的PVID的值(PVID=2),發往VID=2的VLAN中的所有接口
3、接口1屬於VLAN 2,所以接口1能收到此包
4、此時如果VLAN 2中接口1是tag端口,則將接口1的PVID值和VID進行比較:
如果PVID=VID則從接口1出去的包不打tag
如果PVID!=VID則從接口1出去的包打tag

由此可見,以前設為tag端口的PVID不起作用的說法在S3026上並不適用,正確的說法應該是:S3026上的某個VLAN中的tag端口,在轉發在此VLAN中包時出去前,先檢查該tag端口的PVID是否等於VID,若相等則發出的包不打tag,若不等則打上tag。

而在S3526上重復這個實驗時,得到了不同的結果:在S3526上,只要某個VLAN中的端口設為tag端口,在轉發來在此VLAN中包時出不管該端口的PVID值是多少,都打上tag。(不同廠家設備的實現方式不一樣,需要注意!)
到此,我們都只是在單獨一個設備上研究PVID的影響,下篇將結合一個故障實例,解釋跨設備時PVID的影響。

 

PVID和VID徹底研究(下)
——一個故障實例的分析

 


某網組網結構如下圖所示,某路由器下掛S3526,S3526下掛S3026,S3026下面接了4個用戶:


其中S3526的接口1上接路由器,打tag標記;接口2接S3026,打tag標記,PVID為1。
S3026的配置是這樣的:
S3026的接口1上接S3526,打tag標記,屬於VLAN 2、3、4、5,PVID為2;
接口2接用戶2,屬於VLAN 2,PVID為2;
接口3接用戶3,屬於VLAN 3,PVID為3;
接口4接用戶4,屬於VLAN 4,PVID為4;
接口5接用戶5,屬於VLAN 5,PVID為5;

故障現象為:用戶2的用戶無法上網,而其它的用戶可以上網;如果將S3026的上連口的PVID值配置為3,那么用戶3的用戶無法上網,其它的用戶可以上網;
最后我們將S3026的上連口的PVID值設置為1,4個用戶的用戶就都可以上網了。

根據前兩篇的結論,我們發現,接口1的PVID=2,故從VLAN 2來的包從接口1出去后不打tag,而此時S3526的接口2的PVID=1,收到未標記得包后,將其送到VLAN 1里。原本VLAN 2的包送到了錯誤的VLAN里,所以VLAN 2下的用戶上不了網。

當我們將S3026接口1的PVID設為1時,它不等於所屬任何VLAN地VID,送出去的包都打了tag,此時S3526能根據tag將接受到的包送到正確的VLAN里,故所有VLAN下用戶都能上網了。

我們可以補充一個實驗,將S3026的接口1和S3526的接口2的PVID都設為2,此時所有用戶都能正常上網,原因是這樣的:S3026將VLAN 2的包不打tag的從接口1送出去,S3526的接口2收到的包有打tag的(VLAN 3、4、5),也有不打tag的(VLAN 2)。S3526的接口2對於打tag的包,能夠發往正確的VLAN;不打tag的包,根據接口2的PVID值,送到VID=PVID的VLAN里,而此時接口2的PVID=2,也恰巧正確的送到了VLAN 2里。所有VLAN的包在跨設備后,通過不同的方式,都正確的發往所在的VLAN,於是所有用戶都能正常上網,只不過VLAN 2和其它的VLAN途徑有點不同。可見,設備兩端的PVID一致時,在解決問題的同時,也把潛在問題給隱藏起來。例如在把S3526隔接為其它設備時,可能會又造成某個VLAN的用戶上不了網,而此時故障原因不容易找到。

我們來總結一下,交換機的PVID和VID給VLAN配置帶來了靈活性,同時也帶來了一些麻煩,配置的不好可能帶來問題很隱蔽。所以我們以后在配置VLAN時要注意以下幾點:
1、 對於untag端口,PVID要和所屬VLAN的VID一致;
2、 對於tag端口,PVID要不同於所有所屬VLAN的VID;
3、 兩台設備互聯時,兩端接口的PVID保持一致時,有弊也有利;

到此,我們真正意義上理解了基於端口的VLAN,也理解了PVID的作用,希望本文能給困惑於PVID和VID的人帶來一點幫助。


 

什么是鏈路類型?
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM