写给非网工的CCNA教程(6)VLAN和802.1q协议
1 VLAN的引入
? ? 上文中,我們說到通過LAN的方式實現同網段通信,在級聯的交換機數量和終端設備數量很大時,會導致廣播域的擴大,浪費交換機的帶寬,也白白消耗非目標設備的性能。
? ? 因此我們 引入了VLAN機制:我們可以在這些級聯的交換機上啟用VLAN,然后把需放在同一個廣播域的端口配置成相同的VLAN ID。這樣的話,廣播就只會在具有相同的VLAN ID的端口上轉發。如下圖所示:
? ? PC-A和PC-B連接二層交換機SW-A上,PC-C和PC-D連接在二層交換機SW-B上,PC-E和PC-F連接在二層交換機SW-C上。
? ? PC-A的IP地址為192.168.10.1 /24,PC-F的IP地址為192.168.10.6 /24,兩者在同一個網段,也處于同一VLAN 10(Access VLAN);
? ? PC-B的IP地址為192.168.20.2 /24,PC-C的IP地址為192.168.20.3 /24,兩者在同一個網段,也處于同一VLAN 20(Access VLAN);
? ? PC-D的IP地址為192.168.30.4 /24,PC-E的IP地址為192.168.30.5 /24,兩者在同一個網段,也處于同一VLAN 30(Access VLAN);
? ? SW-A和SW-B級聯,級聯口屬于Trunk VLAN,放行VLAN 10和20;
? ? SW-B和SW-E級聯,級聯口也屬于Trunk VLAN,放行VLAN 10和30。
? ? 各個終端設備的IP地址和MAC地址對照表,如下所示。
| 設備 | IP地址 | MAC地址 | 所連交換機端口 | 所連交換機端口屬于的VLAN |
| PC-A | 192.168.10.1 /24 | 1111.1111.1111 | SW-A:Gi0/1 | VLAN 10 |
| PC-B | 192.168.20.2 /24 | 2222.2222.2222 | SW-A:Gi0/2 | VLAN 20 |
| PC-C | 192.168.20.3 /24 | 3333.3333.3333 | SW-B:Gi0/1 | VLAN 20 |
| PC-D | 192.168.30.4 /24 | 4444.4444.4444 | SW-B:Gi0/2 | VLAN 30 |
| PC-E | 192.168.30.5 /24 | 5555.5555.5555 | SW-C:Gi0/1 | VLAN 30 |
| PC-F | 192.168.10.6 /24 | 6666.6666.6666 | SW-C:Gi0/2 | VLAN 10 |
?
2 VLAN對報文的影響
? ? VLAN是在802.1q這個協議里面定義的,當然802.1q協議除了定義VLAN以外,還定義了二層的QoS功能。沒有啟用VLAN時,我們的報文是不帶vlan tag的,當啟用VLAN 后,有些報文會帶上vlan tag,當然也有些仍然不帶vlan tag。
? ? 不帶vlan tag和帶有vlan tag的報文,有何區別呢,如下圖所示。藍色部分即為802.1q的頭部,占4個字節,也表示該數據帶有vlan tag。如果報文不帶vlan tag,那么藍色的802.1q頭部是不存在的。
? ? ?說說802.1q的頭部,如下三點:
? ? (1)802.1q頭部是在Ethernet II幀的【源MAC地址】和【Type】之間加入的,占據4個字節長度。
? ? (2)802.1q頭部本身分為兩個部分,Tag Protocol ID為固定值0x8100,用于指明該Ethernet II幀帶了VLAN tag,如果不帶VLAN tag,那么Ethernet II幀就不會出現802.1q頭部。
? ? (3)802.1q頭部另一個部分為Tag Control Information,占2個字節,這部分分成三個小部分:前3bit用于二層QoS;第4個bit保留,一般為0;后面12個bit表示VLAN ID,因此VLAN ID的數量為2^12-2=4094個,12bit的0和12bit的1的要去掉。
?
3 在交換機上啟用VLAN
? ? 上圖中,我們提到的Access VLAN和Trunk VLAN,都是手動在交換機上配置的,而且是針對交換機的端口配置的。
? ? 交換機端口所屬的VLAN可以有一個或者多個,我們把屬于一個VLAN的端口,稱為Access口,對應的VLAN稱為Access VLAN,屬于多個VLAN的端口,稱為Trunk口,對應的VLAN稱為Trunk VLAN。
? ? Access口一般用于連接PC、服務器等終端設備,而Trunk口一把用于交換機之間的級聯,上圖就是這么去做的。關于交換機的Access VLAN和Trunk VLAN的配置,我們以思科交換機為例,如下圖所示的SW-A的配置。
SW-A#show running-config interface gigabitEthernet 0/1 Building configuration...Current configuration : 141 bytes ! interface GigabitEthernet0/1switchport access vlan 10switchport mode accessspanning-tree portfast endSW-A#show running-config interface gigabitEthernet 0/2 Building configuration...Current configuration : 141 bytes ! interface GigabitEthernet0/2switchport access vlan 20switchport mode accessspanning-tree portfast endSW-A#show running-config interface gigabitEthernet 0/21 Building configuration...Current configuration : 86 bytes ! interface GigabitEthernet1/0/21switchport trunk allowed vlan add 10switchport trunk allowed vlan add 20switchport trunk native vlan 1 switchport mode trunkswitchport nonegotiate end?
4 啟用VLAN后,交換機處理機制發生了哪些改變
4.1 交換機端口如何處理報文
? ? 我們知道交換機端口有兩種類型,Access口和Trunk口,它們的處理方式還是有點不一樣,我們分開討論。通過本節,我們可以更加深入地理解,對于帶有802.1q(vlan tag)和不帶802.1q(vlan tag)數據幀的處理機制的不同。如下表所示。?
| 交換機端口類型 | 如何處理接收到的數據幀 | 如何處理發送的數據幀(不帶tag的數據幀,不會到這一步) | |
| 數據幀不帶vlan tag | 數據幀帶有vlan tag | ||
| Access口 | 接收此數據,并且給該數據打上access vlan tag | 僅僅接收與access vlan tag相同vlan tag的數據幀,其他的丟棄 | 僅僅轉發與自己相同vlan tag的數據幀,并且轉發前會剝掉vlan tag |
| Trunk口 | 接收此數據,并且該該數據打上native vlan tag | 接收allowed vlan列表中的vlan tag的數據幀,其他的丟棄 | 僅僅轉發allowed vlan列表中的帶有vlan tag的數據幀,并且如果該vlan tag與native vlan相同則剝掉vlan tag,其他不作處理,直接轉發 |
4.2 交換機MAC表有哪些改動
? ??當我們在交換機上把一個端口劃到一個VLAN時,此端口對應的MAC表項會加上VLAN ID,如果沒有給端口指定VLAN,那么此端口對應的VLAN ID為默認的,一般是1。
? ? 不難看出啟用VLAN后,MAC表會新增一列,用于記錄各個端口對應的VLAN ID,如下圖中SW-A上的MAC表所示。
SW-A#show mac address-table Mac Address Table -------------------------------------------Vlan Mac Address Type Ports ---- ----------- -------- -----10 1111.1111.1111 DYNAMIC Gi/0/120 2222.2222.2222 DYNAMIC Gi/0/220 3333.3333.3333 DYNAMIC Gi/0/2110 6666.6666.6666 DYNAMIC Gi/0/21? ? 仔細觀察上圖,有兩個問題,我們需要注意:
? ? (1)SW-A的MAC表里面沒有PC-D和PC-E的表項,為什么呢?
? ? ? ? 這就得回到上一級我們對SW-A的配置了,我們在Gi0/1口、Gi0/2口、Gi0/21口,加起來也就啟用了VLAN 10和20,根本沒有啟用VLAN 30,而PC-D和PC-E都屬于VLAN 30,所以SW-A的MAC表里面不會有PC-D和PC-E的表項。
? ? (2)SW-A的MAC表中最后兩行,代表的PC-C和PC-F表項,端口都是Gi0/21口,為何VLAN ID不一樣呢?
? ? ? ? 聰明的你,肯定知道PC-C接在SW-B的Gi0/1口,屬于VLAN 20;而PC-F接在SW-C的Gi0/2口,屬于VLAN 10;那PC-C在SW-A上的VLAN ID為20,PC-F在SW-A上的VLAN ID為10,沒毛病啊。
? ? ? ? 真的是這樣嗎?提個問題,SW-A怎么就知道PC-C和PC-F連接在SW-B和SW-C的哪個端口呢,它兩又不是直接連在SW-A上,SW-A又怎么知道呢?
? ? ? ? 其實這個得從啟用VLAN后,交換機轉發數據的機制說起了,接著看下文。
4.3 交換機數據轉發機制有哪些改變
? ? 其實啟用VLAN后,二層交換機會對進入到端口的數據幀先處理下,處理過程前面已經說過。處理后的數據在交換機內部一定帶有VLAN ID,無論它進入交換機前是否帶有VLAN ID。
? ? 接下來根據目的MAC地址查找MAC表時,只會在與數據源VLAN ID相同的MAC表項中查找,找不到再廣播。因此啟用VLAN后,就讓廣播的范圍局限一個VLAN內部。
總結
以上是生活随笔為你收集整理的写给非网工的CCNA教程(6)VLAN和802.1q协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1316):静态资源
- 下一篇: 网管员的任务与职责漫谈