前文我們主要聊了下交換機的工作原理和以太網接口的速率和雙工相關話題,回顧請參考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的過程一樣;