前文我們主要聊了下交換機的工作原理和乙太網介面的速率和雙工相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15088183.html;今天我們主要來聊一聊二層交換技術vlan相關話題;
在二層交換技術中vlan的概念是相當重要的,我們知道交換機天生就有隔離衝突域的特點,但它不隔離廣播域;如果在一個大型的網路環境中,接入的終端裝置過多,那麼對於二層網路來講,廣播報文可能成為影響網路效能的“罪魁禍首”;為了解決廣播域帶來的廣播風暴,vlan技術由此誕生;什麼是vlan呢?vlan就是virtual local area network的首字母縮寫;翻譯成中文就是虛擬區域網;它可以將一臺物理交換機邏輯的劃分為多個不同廣播域;從而實現隔離廣播域;
vlan技術
提示:vlan工作在二層,所以它更不看ip地址,所以不管是不是同一網段,預設情況下只要不再同一vlan都不可通訊,其原因就在於vlan隔離了廣播域,那麼對於不同vlan的兩個裝置通訊,首先A裝置傳送arp請求廣播,裝置B收不到,從而裝置A也無法拿到裝置B的mac地址,沒有mac地址在乙太網環境中就無法封裝乙太網協議包;這裡必須提醒一下,在同一vlan中的兩個裝置通訊,必須是同一網段;可能有的同學會感到奇怪,二層通訊不是不看ip地址的嗎?怎麼在同一vlan下兩者的ip地址必須是同一網段才能通訊呢?其實兩個網路裝置通訊時,首先會看ip地址是不是同一網段,如果是同一網段,那麼在乙太網環境中,二層封裝就封裝對方的mac地址,如果本端沒有對方的mac地址,則本端傳送arp請求廣播;如果有,則直接封裝對方的mac地址;如果不在同一網段,那麼二層封裝就會封裝閘道器的mac地址;如果有閘道器的mac就直接封裝,如果沒有就傳送arp請求廣播;
提示:有了vlan,其實我們可以理解為把一個物理交換機邏輯的劃分了多個交換機;只有在同一vlan下的介面可以相互收到廣播,不同vlan下的介面是收不到對方的廣播;如上f0/1傳送一條arp請求廣播,那麼就只能在f0/2介面上收到此廣播,對於f0/3和f0/4這兩個介面,它們是無法收到f0/1傳送到arp請求廣播;
提示:對於不同交換機來講,只要vlan相同的介面都可以通訊;比如A交換機上的vlan3是可以和B交換機上的vlan3通訊的;同樣的道理一個大型網路裡,只要vlan相同,都可以互相邏輯的組織成一個區域網;從上面的示例可以看到,有了vlan,我們就可以根據業務和現場網路環境的不同來劃分對應的vlan;從而提高網路效能,隔離廣播域的同時也為網路管理員帶來了管理上的方便;
總結:vlan的優點
1、有效控制廣播域的範圍;
2、增強區域網的安全性(這個安全性主要是從有vlan和沒有vlan,受攻擊的範圍來講);
3、靈活構建虛擬工作組(我們可以根據不同業務,不同部門等來劃分vlan,從而實現在二層彼此隔離);
4、簡化網路管理(這個有點主要體現在二層網路出現故障,能快速找到原因);
VLAN範圍
提示:vlan範圍是0-4095,0和4095為保留,預設是vlan 1 ;
vlan標籤
不帶標籤的資料包格式
提示:不帶標籤的資料包在二層乙太網封裝就只有目標mac和源mac地址以及type,後面就是ip頭部和資料;
帶標籤的資料包格式
提示:帶標籤的資料包在原有沒有標籤的資料包多了一個802.1q的頭部,其中裡面有vlan id,後面接type 和ip頭部和資料;
提示:IEEE 802.1q:dot1q,是VLAN的正式標準,對 Ethernet 幀格式進行了修改,在源 MAC 地址欄位和協議型別欄位之間加入 4 位元組的 802.1q Tag每臺支援 802.1q 協議的交換機傳送的資料包都會包含 VLAN ID,以指明交換機屬於哪一個 VLAN。因此,在一個 VLAN 交換網路中,乙太網幀有以下兩種形式有標記幀(tagged frame)和無標記幀(untagged frame);
vlan鏈路型別
1、接入鏈路(access link): 用於連線主機和交換機的鏈路。接入鏈路上傳輸的幀都是untagged幀。
2、幹道/中繼鏈路(trunk link):用於交換機間的互連或交換機與路由器之間的鏈路。幹道鏈路上傳輸的幀幾乎都是tagged幀用於兩端識別。只有對應資料包的標籤和trunk的pvid相等時,幹道鏈路之間就是以untagged幀;
PVID
PVID是Port Vlan ID 的縮寫,代表埠的預設VLAN;X7系列交換機每個介面PVID=1
VLAN埠型別
1、access(接入埠):用於連線主機,該埠有收到資料後會新增VLAN Tag,VLAN ID和埠的PVID相同。轉發資料前會移除VLAN Tag。
提示:正常情況下主機和主機的通訊,其資料包裡是沒有標籤的,如果有標籤主機是無法識別的;所以在主機A和主機C通訊,最後到達主機c的資料包一定是沒有標籤的,否則兩者不可能互通;上圖主機A向主機C通訊,首先主機A傳送一個無標籤的資料包給交換機;交換機的g0/0/1口收到該資料包以後,會根據其埠的屬性(如access型別),它會把主機A傳送到資料包打上標籤,以表示該埠屬於那個VLAN;打好標籤以後,交換機會查詢mac地址表,看看有沒有主機C的mac地址,如果有,就直接將資料包轉發給對應的介面,如果沒有泛洪(這裡泛洪只是在同一vlan裡泛洪,不是同一vlan的介面是收不到對應的資料包);當資料包從g0/0/3轉發時,交換機又會根據g0/0/3的埠屬性(如access埠,在轉發資料時,它會看對應資料包裡是否有標籤,如果有,然後對比是否和本埠的pvid相同,如果相同則剝離該標籤,然後將資料包傳送出去);最後主機C就收到主機A的資料包;回包也是一樣的過程;
2、Trunk(幹道埠):用於連線交換機或路由器,幹道埠有如下特點,收到幀時,如果該幀不包含Tag,將打上埠的PVID;如果該幀包含Tag,則不改變。傳送幀時,該幀的VLAN ID在Trunk的允許傳送列表中:若與埠的PVID相同時,則剝離Tag傳送;若與埠的PVID不同時,則直接傳送。
提示:主機A和主機C通訊,首先主機A傳送的資料包是不帶標籤的,在交換機收到主機A傳送的資料包是首先會將其打上對應埠的pvid的標籤(與主機相連的介面是access,收到沒有標籤的資料包會打上對應埠的pvid的標籤),在打好標籤以後,交換機會根據mac地址表進行資料包轉發,然後從swa的trunk口傳送,在傳送之前,交換機會檢視轉發的資料包是否帶標籤,如果帶標籤,它會再檢視對應標籤是否允許在trunk口通過,如果在允許的列表裡,它會和trunk口的pvid做比較,看看是否和trunk的pvid相等,如果相等就把對應標籤給剝離了,然後在傳送;如果不相等則直接傳送;如果不被允許則丟棄;所以主機A和主機C通訊,在trunk之間傳輸就是以untagged的形式傳輸;而主機B和主機D通訊就不一樣了,在trunk允許類表裡,但不和對應trunk的pvid相同,所以主機B和主機D的通訊是以有標籤的形式傳輸;
3、Hybrid(混雜埠):該型別埠既可以連線主機,又可以連線其他交換機。既可以連線接入鏈路又可以連線幹道鏈路。允許多個 VLAN 的幀通過,並可以在出介面方向將某些 VLAN 幀的Tag剝掉(由命令決定);
提示:hybrid埠可以根據實際的網路環境設定是否帶標籤,它可以實現特定的訪問需求;它可以允許多個vlan在一條鏈路上以untagged的形式通過,而對應trunk埠只能允許預設vlan以untaged的形式通過;
配置vlan
實驗:如下拓撲,配置vlan
配置sw1
sys sys sw1 vlan batch 10 20 int g0/0/2 port link-type access port default vlan 10 int g0/0/3 port link-type access port default vlan 20 int g0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 10
配置sw2
sys sys sw2 vlan batch 10 20 int g0/0/2 port link-type access port default vlan 10 int g0/0/3 port link-type access port default vlan 20 int g0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 10
驗證sw1上的vlan
提示:可以看到在sw1上有三個vlan,vlan 10和20是我們剛才新建的,vlan1是預設就有的;其中vlan 10有兩個埠,其中g0/0/1和g0/0/2口untagged不帶標籤;vlan20 中g0/0/3是untagged不帶標籤,但在g0/0/1口是以帶標籤通過;第二條命令中可以看到g0/0/2和g0/03口是access介面,並且各自屬於不同的vlan;g0/0/1口為trunk口,預設vlan10 ,允許vlan 1 10 20 通過;
驗證sw2上的vlan
驗證:配置好各主機的ip地址,看看pc1是否能ping 通pc2,pc3 或pc4 ?
pc1 ping pc2
提示:pc1 ping pc2 直接提示我們目標主機不可達;其原因是pc1 和pc2不再同一網段,所以它會找閘道器,而我們在主機上又沒有配置閘道器;
pc1 ping pc3
提示:可以看到pc1能夠正常ping通pc3,其原因是pc1 和 pc3是同一網段,並且兩者都屬於vlan10(在同一廣播域),所以pc1傳送的arp請求廣播,pc3能夠正常收到並回復;
pc2 ping pc4
提示:可以看到pc2也是可以正常ping通pc4;
配置hybrid
實驗:如下拓撲,實現主機5不能訪問主機6,主機5和主機6可以正常訪問主機7
配置sw3
sys sys sw3 vlan batch 5 to 7 int g0/0/2 port link-type hybrid port hybrid pvid vlan 5 port hybrid untagged vlan 5 7 int g0/0/3 port link-type hybrid port hybrid pvid vlan 6 port hybrid untagged vlan 6 7 int g0/0/1 port link-type hybrid port hybrid tagged vlan 5 6 7
配置sw4
sys sys sw4 vlan batch 5 to 7 int g0/0/2 port link-type hybrid port hybrid pvid vlan 7 port hybrid untagged vlan 5 6 7 int g0/0/1 port link-type hybrid port hybrid tagged vlan 5 6 7
驗證:在sw3上檢視對應介面vlan資訊
提示:可以看到在sw3上建立了3個vlan,分別為vlan 5,vlan 6,vlan 7;在vlan5裡,g0/0/2是以untagged不打標籤的形式通過資料包;在g0/0/1口是以打標籤的方式通過;在vlan6裡,g0/0/3口是不打標籤的方式通過,g0/0/1口是打標籤的方式通過;在vlan7裡g0/0/2口和g0/0/3口都是以不打標籤的方式通過;在g0/0/1口是以打標籤的方式通過;以上描述資料包通過該介面是從該介面出去時是否帶標籤;
驗證:檢視sw3的介面型別
提示:可以看到g0/0/1,2,3口的型別都為hybrid介面;其實從上面的的截圖也可以看到,g0/0/1介面有點類似trunk介面,允許帶有vlan 5,6,7標籤的資料包通過;
驗證:檢視sw4上的vlan資訊
提示:可以看到在sw4上不管是vlan5,vlan6,vlan7在g0/0/2口都是以untagged方式通過;在g0/0/1口都是以tagged的方式通過;
驗證:pc5 ping pc7和pc 6 看看是否ping通?
提示:可以看到pc5可以正常ping通pc7,ping不同pc6;其原因是pc5傳送的資料包在通過g0/0/2口時會被打上vlan 5的標籤(pc5發出的資料不帶標籤,hybrid介面收到一個未打標籤的資料包會打上自己pvid的標籤,以表示自己屬於某個vlan),而連線pc6的g0/0/3介面沒有允許帶有vlan 5標籤的資料包通過,所以對於pc6來說,它根本就收不到pc5的資料包;同樣的道理pc6傳送的包,pc5也收不到,兩者相互隔離;pc5能夠ping通pc7的原因是在sw3的g0/0/1口允許帶有vlan5標籤的資料通過,在sw4的g0/0/1口允許帶有vlan5標籤的資料包通過;在sw4的g0/0/2口允許帶有vlan5標籤的資料包,剝離其標籤通過,所以pc5的資料包最終達到pc7是剝離其標籤,所以pc5能夠將資料包送給pc7;當pc7回覆pc5的包時,在通過sw4的g0/0/2口時會被打上vlan7的標籤;在從g0/0/1介面傳送出去也是以tagged方式傳送,並且sw4和sw3的g0/0/1介面都允許vlan7通過,所以pc7的資料包達到sw3時,是有vlan7標籤的;在資料包從sw3的g0/0/2口傳送出去時,vlan7的標籤會被剝離掉(sw3的g0/0/2口允許帶有vlan5和vlan7的資料包剝離標籤傳送);所以最終pc7的資料包能夠順利到達pc5,兩者實現互通;
驗證:pc6 ping pc5 pc7 是否ping通?
提示:可以看到pc6 ping pc5 ping不同,ping pc7可以正常ping通,其通訊過程和上述pc5 ping pc6 pc7的過程一樣;