# 第05講 IEEE 802.1Q Virtual Bridged LANs 計算機網路概論 黃能富教授 Virtual LAN(VLAN)的目的與優點 --- * 運用**logical group** 的方法,**解決broadcast與multicast,所造成頻寬浪費和安全的問題** * **Virtual LAN具有類似防火牆的機制** * Example - VLAN Topology ![65](https://hackmd.io/_uploads/HkiqZD25R.jpg) * 綠色:VLAN_A * 粉紅色:VLAN_B * 橘色:VLAN_C * VAB為一個switch或router * 傳送一個VLAN_B broadcast封包,此時**只有VLAN_B的所有member才收的到** ,因此其他不屬於VLAN_B的人就收不到封包 * VLAN 中的成員,還可以動態地調整 * **在此架構中不同的VLAN間無法互相傳輸(無法跨VLAN通訊)** ,因為Virtual LAN具有類似防火牆的機制,但如果真的需要通訊,則需要經過router的轉送才能傳輸 --- * Virtual LAN(VLAN)的優點: 1. 支持**shared media** 和**point-to-point media** 2. **Plug-and-Play** 的特性,只要電源打開,隨即開始運作,不需要任何設定(大部分layer 2設備具此特性) VLAN Architecture --- ![66](https://hackmd.io/_uploads/ByQ4nvh5R.jpg) * 三層式模型: 1. **Configuration** -> 參數設定 * Port-based,根據Port設定,與station無關 * MAC-based,根據Address設定,與Port無關,較Port-based有彈性 * IP-subnet based,又較MAC-based有彈性 * Layer-3 Protocol based 2. **Distribution/Resolution** -> 配送/解析 * 經過解析完每個VLAN之後,分送給其他VLAN,與他們交換資訊 3. **Relay** -> 轉送封包 * Ingress Rules:如何處理封包,先分類屬於哪個VLAN * Forwarding Rules:決定哪個Port傳輸 * Egress Rules:當封包要離開Port前,決定是否接上VLAN Tag ## Virtual LANs Technologies ### 1. Port-based Virtual LANs ![67](https://hackmd.io/_uploads/HJpLesh5R.jpg) * 用Port作區別 ### 2. MAC-based Virtual LANs 1. 初始設定: ![68](https://hackmd.io/_uploads/ryGsei290.jpg) 2. 將Port 5一至Bridge/Switch 2: ![69](https://hackmd.io/_uploads/Sk5hgi290.jpg) * 此時因為是用MAC作區別,因此VLAN還是知道Port 5屬於VLAN 3 ### 3. IP Subnet-based Virtual LANs ![70](https://hackmd.io/_uploads/S1gvWj290.jpg) ### 4. Layer-3 Protocol based Virtual LANs ![71](https://hackmd.io/_uploads/r1aYbo3qA.jpg) --- * IEEE 802.1Q是根據**Port-based**,因為較簡單 Distribution(配送) --- 1. 透過**Declaration Protocols** 來配送VLAN的關聯資料 * EX:現在主要用**GARP (Generic Attributes Registration Protocol)** 2. 透過**Request/Response protocols** 來取得特定的VLAN的關聯資料 Relay --- * 此流程負責增加、修改、或移除位於訊框上的標籤 (tag) * VLAN frame攜帶有 VLAN ID (VID) 1. **Ingress rules** (輸入) -> 將接收到的訊框對應至不同的VLAN 2. **Forwarding rules** (轉送) -> 由哪些Port轉送 3. **Egress rules** (輸出) -> 決定是否接上VLAN Tag Frame Tagging --- 1. **Implicit tagging** (隱性) -> 根據**MAC address, Layer 3 Protocol ID或receiving Port** 來辨別此frame所屬的VLAN 2. **Explicit tagging** (顯性) -> 將TAG塞入封包,且其位置和長度是固定的 ![72](https://hackmd.io/_uploads/B1eJTKo3c0.jpg) --- * 辨識工作可經由下列方法完成: 1. **Implicit Tagging** :透過接收到此frame所連接Port的**PVID** 2. **Explicit Tagging** :透過**VID 值** Port-Based VLAN Definitions --- * **VLAN aware devices** :有支援VLAN功能 * **VLAN unaware devices** :沒有支援VLAN功能 * **Access Link** :是一個LAN segment,且**與其連接的裝置皆為VLAN *unaware* devices** 1. 均使用implicitly tagged,因為其不支援VLAN功能 2. 因為其不支援VLAN功能,所以**不會有貼上 VLAN TAG** ,不然會解讀錯誤 * **Trunk Link** :是一個LAN segment,且**與其連接的裝置皆為VLAN *aware* devices** 1. 所以在Trunk Link傳送的封包,皆須貼上VLAN TAG * **Hybrid Link** :是一個LAN segment,在此segment中允許VLAN **unaware** devices和VLAN **aware** devices存在 * 雖然可以混合,若在某條LAN上的device有貼VLAN TAG,則此條LAN上所有的device皆須貼上VLAN TAG,反之亦然 Spanning Tree and VLAN --- 1. 所有VLAN的路徑接**根據Spanning Tree的演算法建構** 2. 因此**每個VLAN皆為Spanning Tree的子集** 3. 因為VLAN 中的成員可以動態地調整,所以它的**topology為dynamic** * 在此結構中Bridge需紀錄那些封包需要貼VLAN TAG,那些不需要 * Example: ![73](https://hackmd.io/_uploads/SkUdp325C.jpg) * 紅色線為Trunk Link ## VLAN Addressing Learning 1. **Shared VLAN Learning (SVL)** (共享式) 2. **Independent VLAN Learning (IVL)** (獨立式) * Examples of SVL and IVL ![74](https://hackmd.io/_uploads/r1pyjpncA.jpg) * G、H對於Switch 1來說需要透過Port 7來與Switch 3連接,所以Port為7 ### IVL Example -- Multiple Independent VLANs ![75](https://hackmd.io/_uploads/BytChT250.jpg) * A從Port 1 進入後檢查Member Set,發現只有Port1和3,因此從Port 3 送出,接著檢查Untag Set,發現1,3皆為Untag,所以送出的封包不加TAG,之後送給Bridge Router 1. **Router(Connector) 和 stations 為 VLAN unaware(untag)** 2. VLAN **Red** (A) <--> VLAN **Blue** (B) 之間傳輸封包將會被送Router(Connector)(防火牆功能),因為不同VLAN間不能相互傳輸封包 3. 上圖中,Filtering databases應該為 **independent (IVL)** ### SVL Example -- Multiple Independent VLANs * 此時的Filtering databases為共用不分Red或是Blue 1. 首先先傳輸A ![77](https://hackmd.io/_uploads/H1EmxR2qC.jpg) * 在傳輸完之後會記錄A在Port 4 2. 接著傳輸B ![76](https://hackmd.io/_uploads/Sy0fkR39R.jpg) * 此時會發現因為紀錄A在Port 4,但實際上A在Port 1,所以會發生傳輸錯誤 ## The Filtering Databases for VLAN ### 1. Static Filtering Entry ![78](https://hackmd.io/_uploads/BJvlbC29R.jpg) * 假設MACd在黃色那個port時,就必須Forward或是Filter,這是可以事先設定好 ### 2. Static VLAN Registration Entry ![79](https://hackmd.io/_uploads/SJEU-Ah5R.jpg) * 與Static Filtering Entry相同,皆可透過網管的方式事先設定好 ### 3. Dynamic Filtering Entry ![80](https://hackmd.io/_uploads/Hk3v-AncC.jpg) * 透過Learning Process,不斷的動態改變 ### 4. Dynamic VLAN Registration Entry ![81](https://hackmd.io/_uploads/HJbFZAncC.jpg) * 透過VALN的Learning去做設定, VLAN Tag Structure --- 1. Tag Protocol Identifier (TPID) 2. Tag Control Information (TCI) * User-Priority * Canonical Format Indicator(制式格式指示) * VID * **Ethernet-encoded** ![82](https://hackmd.io/_uploads/rygZHCn90.jpg) * **SNAP-encoded** ![83](https://hackmd.io/_uploads/SyZLSR3q0.jpg) * 若**SNAP Header** 為 **AA-AA-03** 且 **SNAP PID** 為 **00-00-00** ,代表此為**SNAP-encoded** * 不管是Ethernet-encoded或是SNAP-encoded只要 **Tag Type** 為 **81-00** => **代表有加Tag**