Ethernet 基礎
先回味一下 OSI 七層架構,其中 Frame、HUB/Switch 屬於 Layer2 層級,而 Packets、Router 則屬於 Layer3 層級 (Packets 其實到 L2 時,就會分割成 Frames 後再進行傳送)。在乙太網路當中,先從 Layer2 的 MAC Address 開始談起,了解 Ehernet 封包、MAC Address 定址、Type 表示方式。同時了解 MAC Table 功用,以及靜態及動態 MAC 記錄的差別。
接著,回味一下 HUB/Switch/Router 功能性,同時辨別 Broadcast Domain 及 Collision Domain 的差別。
事實上,網路封包從 Layer2 到 Layer4 層級時都會幫 Frame、Packet 加上Header。了解 IPv4 (Layer3、IP Packet) 的封包內容,以及 TCP (Layer4) 的封包內容。
了解 ARP 的運作原理 (ARP Request、ARP Reply、ARP Cache、ARP Broadcast),在實體網路中送出 ARP Request 遇到實體 Switch,就會產生 ARP Broadcast 來詢問 Switch 中所有的 Port。但是,此時若是在 NSX 網路虛擬化環境中,便能透過 ARP Table 直接回覆給 ARP Request,而不會讓 ARP Broadcast 封包在實體網路中亂竄。
ARP (Address Resolution Protocol) 運作原理及相關參考影片:
下列為採用 VXLAN 的原因:
了解 NSX Plane(Management、Data) 在 vDS 中所座落的位置。事實上 ESXi Host 負責 Data Plane,也就是實際「處理流量」的部份,而 Control Plane「控制」的部份由 NSX Controller 處理,而 Management Plane「管理」的部份由 NSX Manager 處理。
在 ESXi 5.5 版本中,關於 vDS 網路功能的增強部份:
打造 NSX 虛擬化網路環境時的設計考量:
LACP(IP-Hash),有個嚴重的缺點就是並非真正合併頻寬,當「來源及目的 IP 都不變時」,那麼經過演算法處理之後,即使有「多條路」可以走,但實際上還是「只有一條路可以走」(常見的例子 NFS、VSAN…等),且實體交換器還要進行額外的組態設定。
Load-Based Teaming 優點是實體交換器不用設定,並且「每 30 秒」會自動檢查網路卡流量,當網路流量不平衡時便會採取自動平衡機制。若要與 NSX 整合,此 Teaming 機制必須在「NSX 安裝前」處理完畢。
每一台 vCenter Server 可以部署 128 台 vDS。
STP (Spanning Tree Protocol) 參考影片:
LACP(Link Aggregation Control Protocol),可以把多個網路介面綁定在一起 (Port Aggregation)。重點在於,會通知 STP 說只有「1 條連結存在」,所以啟用 LACP 功能後並不會被 STP 誤以為 Loop 而進行 Blocking 的動作。
從 vSphere 5.5 版本開始,增加 20 種關於 LACP 的演算法。現在,每台 ESXi Host 及 vDS 都支援 64 組 LAG (Link Aggregation Groups),且可以同時運作不同的 LACP 演算法。
LACP(Link Aggregation Control Protocol) 參考影片:
VLAN 為 12 bit 也就是 4096,所以大架構環境(公有雲)可能會不夠,才會發展出 VXLAN,並且會把 L2 層的 Ethernet Frame 擴大成 1522 bytes。下列為 VLAN ID 4096 中,在 VMware 網路環境中的應用場景及說明:
VLAN 參考影片:
在 NSX 網路虛擬化環境中,它支援 Multicast, Unicast, Hybrid 等三種模式。其中 Multicast 必須要 Layer2 IGMP 及 Layer3 Multicast Routing,且記得 MTU 都要設為 1600。
1. VM1 與 VM3 雖然處於同一個 VXLAN 5001 中,但是處於不同的 Cluster 當中。此時,VM1 會發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到同一台 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時,Broadcast 會透過 Proxy VTEP 轉送封裝成 Unicast,從 VM1 本地端的 VTEP1 發給所有同一組的 VTEP。
4. VM3 透過本地端的 VTEP3 的封裝,發送 Unicast ARP Reply 給 VM1。最後,VTEP 學習到 VM3 的 MAC Address,後續 VM1 及 VM3 便能順利溝通。
1. VM1 及 VM3 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM3 溝通時,首先發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時,Broadcast 會採用 Multicast 的方式,通知所有本地端的 VTEP,而 Proxy VTEP 的部份則採用 Unicast。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM3 溝通。
1. VM1 及 VM2 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM2 溝通時,首先發出 ARP Request (在同一台 ESXi Host 當中)。
2. ARP Broadcast 發送到同一台 ESXi Host 當中,接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM2 的 ARP 記錄。
3. 因為 VM1 與 VM2 接在同一台Logical Switch,在 VM2 發出 ARP Reply 之前,NSX Controller 會先回應 Switch Security Module:
i. 若 VM2 沒有 DHCP 資訊或執行過 ARP Reply 動作,那麼 NSX Controller 內也沒有相關資訊。
ii. Switch Security Module 更新 Local ARP Table 內容,並且通知 NSX Controller 更新它的 ARP Table 內容(關於 VM2 的資訊)。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM2 溝通。
在同一台 ESXi Host 的運作情境中,並不會產生「VXLAN 封裝」的情況。因為此情況選擇的是 Unicast / Hybrid Mode,若是在 Transport Zone 中選擇的是 Multicast Mode,那麼 ARP Request Broadcast 會轉送 VXLAN 封裝給其它所屬 Multicast Group 當中的 VTEP。
1. VM1 及 VM3 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM3 溝通時,首先發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時, Broadcast 會採用 Multicast 的方式,通知所有本地端的 VTEP 及 Proxy VTEP。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM3 溝通。
小結! 在 NSX 網路虛擬化環境中,只要 VM 虛擬主機在不同台 ESXi Host 的話,那麼不管是在同一個 Cluster 或不同 Cluster,其實 MAC 學習的流程是一樣的。
當 QoS Tagging 機制設定完成後,在資源搶奪的情況發生時,便可以讓需要優先通過的網路流量,可以順利的到達目的地。
1. 部署 NSX Manager 並與 vCenter Server 配對。
2. 透過 vSphere Web Client 或 NSX API,配置 Logical Switch 及 Distributed Logical Router。當配置完成後,發佈給 NSX Controller 知悉,並決定哪台 NSX Controller 為 Active。
3. NSX Controller 與 ESXi Host 當中的 UWA 進行溝通,並且更新相關資訊。在 VXLAN (Logical Switch) 的部份,確認 VM 連接到哪個 VNI 之後便可以啟動電源準備上線服務。此時,UWA 會同步資訊給 VTEP 並且回報給 NSX Controller (更新 ARP Table 資訊)。
4. Distributed Firewall 的相關組態設定,則是透過 Message Bus 直接發送給 ESXi Host。
5. 事實上,在 NSX 網路虛擬化環境中的 ESXi Host,除了以往傳統負責的 Compute Resource 之外,現在還擔任 UWA, VTEP, Logical Switch, Router, Firewall 等任務。
接著,回味一下 HUB/Switch/Router 功能性,同時辨別 Broadcast Domain 及 Collision Domain 的差別。
事實上,網路封包從 Layer2 到 Layer4 層級時都會幫 Frame、Packet 加上Header。了解 IPv4 (Layer3、IP Packet) 的封包內容,以及 TCP (Layer4) 的封包內容。
圖片來源: Wikipedia - OSI model
了解 ARP 的運作原理 (ARP Request、ARP Reply、ARP Cache、ARP Broadcast),在實體網路中送出 ARP Request 遇到實體 Switch,就會產生 ARP Broadcast 來詢問 Switch 中所有的 Port。但是,此時若是在 NSX 網路虛擬化環境中,便能透過 ARP Table 直接回覆給 ARP Request,而不會讓 ARP Broadcast 封包在實體網路中亂竄。
ARP (Address Resolution Protocol) 運作原理及相關參考影片:
- How ARP (Address Resolution Protocol) Works
- Networking 101: Address Resolution Protocol (ARP)
- Address Resolution Protocol (ARP)
- 蕭志明 - 網路基礎影片教學
- Understanding the OSI Reference Model: Cisco Router Training 101
- Pluralsight Webinar: Networking Fundamentals: Master the OSI Model and TCP/IP in Under 1 Hour
vDS 基礎
NSX 網路虛擬化環境中所採用的 Logical Switch,其實是架構在原有的 vDS 分佈式交換中,加上其它增強功能所組成。vDS 從 vSphere 5.5 版本開始,對於 LACP(802.3ad) 的功能支援已經很全面,若採用 LACP 功能的話,需要注意的部份是實體交換器也必須啟用功能。此外,因為 NSX 採用的是 vDS,所以能直接採用簡單方便的 Load-Based Teaming 來簡化設定。下列為採用 VXLAN 的原因:
- 2 的 12 次方 (4096)-> VLAN (理論上可能會不夠用)
- 2 的 24 次方 (1,600 萬)-> VXLAN (理論上不會再不夠用)
了解 NSX Plane(Management、Data) 在 vDS 中所座落的位置。事實上 ESXi Host 負責 Data Plane,也就是實際「處理流量」的部份,而 Control Plane「控制」的部份由 NSX Controller 處理,而 Management Plane「管理」的部份由 NSX Manager 處理。
在 ESXi 5.5 版本中,關於 vDS 網路功能的增強部份:
- 完全支援所有 LACP 特色功能
- 支援 Mellanox 40GB 網卡
- 採用 Traffic Filtering 及 ACL 機制,達成 Enable/Drop Traffic 及 Change Tag
- 完全支援 Layer 2 的 CoS (Class of Service)
- 完全支援 Layer 3 的 DSCP (Differentiated Services Code Point)
打造 NSX 虛擬化網路環境時的設計考量:
- SDDC 中,伺服器最吃重的的硬體資源是「Memory」不是 CPU。
- 建議每台伺服器至少 10 張 1 Gbps 網卡,或 1 張 10Gbps 網卡。
- …等
LACP(IP-Hash),有個嚴重的缺點就是並非真正合併頻寬,當「來源及目的 IP 都不變時」,那麼經過演算法處理之後,即使有「多條路」可以走,但實際上還是「只有一條路可以走」(常見的例子 NFS、VSAN…等),且實體交換器還要進行額外的組態設定。
Load-Based Teaming 優點是實體交換器不用設定,並且「每 30 秒」會自動檢查網路卡流量,當網路流量不平衡時便會採取自動平衡機制。若要與 NSX 整合,此 Teaming 機制必須在「NSX 安裝前」處理完畢。
每一台 vCenter Server 可以部署 128 台 vDS。
Link Aggregation
在實體網路環境當中,最常用來防止 Loop 的機制 STP(Spanning Tree Protocol),也就是 IEEE 802.1D。但是在 NSX 網路虛擬化環境中,其實並「不會」參與實體交換器的 STP 動作,所以 Layer2 環境還是必須保持開啟。STP (Spanning Tree Protocol) 參考影片:
LACP(Link Aggregation Control Protocol),可以把多個網路介面綁定在一起 (Port Aggregation)。重點在於,會通知 STP 說只有「1 條連結存在」,所以啟用 LACP 功能後並不會被 STP 誤以為 Loop 而進行 Blocking 的動作。
從 vSphere 5.5 版本開始,增加 20 種關於 LACP 的演算法。現在,每台 ESXi Host 及 vDS 都支援 64 組 LAG (Link Aggregation Groups),且可以同時運作不同的 LACP 演算法。
LACP(Link Aggregation Control Protocol) 參考影片:
- Sample configuration of EtherChannel LACP with ESXi and Cisco or HP switches
- Link Aggregation : Truth, Lies and Fundamentals Part 1
VLAN、VXLAN、Logical Switch
VLAN
VLAN 簡單來說,可以過濾 Broadcast、提供安全性、流量管理,只有 Router 才能「橋接不同的 VLAN」使之互通。預設情況下,Switch 每一個 Port 就是 Single Broadcast Domain,透過 802.1Q 的 Trunk (Tag)機制,便可以達成 L2 Segments 的功用。當然,建立 VLAN 之後,同一個網段的主機發送的 ARP Request / Broadcast,便只會在同一個 VLAN 中傳送,而不會影響到其它網段及 VLAN。VLAN 為 12 bit 也就是 4096,所以大架構環境(公有雲)可能會不夠,才會發展出 VXLAN,並且會把 L2 層的 Ethernet Frame 擴大成 1522 bytes。下列為 VLAN ID 4096 中,在 VMware 網路環境中的應用場景及說明:
- EST, vSwitch VLAN ID 0
- VLAN ID 1 通常保留給 Physical Switch 的 Default VLAN (或稱 Native VLAN)
- VST, Trunk Port, vSwitch VLAN ID 2 ~ 4094
- VGT, Trunk Port, vSwitch VLAN ID 4095
VLAN 參考影片:
VXLAN(Virtual Extensible LAN)
用於 Ethernet 中的 IP Overlay 技術,它將 Layer 2 當中的 Frame 封裝在 UDP Packet 當中(所以封包增加 50~54 bytes),傳送至 Transport Network (Layer 4) 內。所以它其實是擴充了原本的 Layer2 功能,並且可以跨到 Layer3 的技術。在 MTU 方面建議「最小設為 1600」,以便完全支援 IPv4 / IPv6 網路環境。此外,從 2013 年 4 月開始 IANA 制定 UDP Port 4789 用於 VXLAN。VNI (VXLAN Number Identifier)
等同於 VLAN ID 一樣的道理,而 VXLAN 是 24bit 也就是 16,777,216 (理論上不太可能會不夠用),且多個 VNI 是可以在同一個 Transport Zone 當中存在。在 VMware NSX 網路虛擬化環境中,VNI 習慣從 5000 之後開始使用。事實上,VXLAN ID 只有 ESXi Host 看得到,VM 虛擬主機是看不到 VXLAN ID 的。VTEP (Virtual Tunnel End Point)
簡單來說,它是將 VXLAN Frame 進行「封裝 (encapsulated)」或「解封裝 (de-encapsulated)」的動作,同時負責轉送的行為(由 ESXi Host 當中的 VMkernel 介面負責處理)。VTEP Proxy 透過 UTEP 及 MTEP,複製它所收到的 Frame 並轉送,簡單來說就是負責把遠端的 VTEP 轉送到本地 VTEP。Transport Zone
定義 VXLAN Overlay 或 VTEP 成員。原則上,Cluster 可以共用同一個 Transport Zone 及 VNI,但是當你要建立多租戶環境時,可以建立不同的 Transport Zone 及 VNI 給不同的租戶。Multicast
其功能是來源端只要發送單一封包,便可以同時發送給多個目的端(即使跨不同網段)。簡單來說,就是避免廣播行為在網路中亂竄。Multicast 最常見的應用場景是多媒體傳輸、IPTV…等。在 VXLAN 環境中非常依賴 Multicast,最好的是雙向式的運作模式更好 Bidirectional PIM (Protocol-Independent Multicast)。在 NSX 網路虛擬化環境中,它支援 Multicast, Unicast, Hybrid 等三種模式。其中 Multicast 必須要 Layer2 IGMP 及 Layer3 Multicast Routing,且記得 MTU 都要設為 1600。
情境一、當選擇 Unicast Mode,且 VM1 及 VM3 在不同台 ESXi Host 時:
1. VM1 與 VM3 雖然處於同一個 VXLAN 5001 中,但是處於不同的 Cluster 當中。此時,VM1 會發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到同一台 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時,Broadcast 會透過 Proxy VTEP 轉送封裝成 Unicast,從 VM1 本地端的 VTEP1 發給所有同一組的 VTEP。
4. VM3 透過本地端的 VTEP3 的封裝,發送 Unicast ARP Reply 給 VM1。最後,VTEP 學習到 VM3 的 MAC Address,後續 VM1 及 VM3 便能順利溝通。
情境二、當選擇 Hybrid Mode,且 VM1 及 VM3 在「不同台」 ESXi Host時:
1. VM1 及 VM3 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM3 溝通時,首先發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時,Broadcast 會採用 Multicast 的方式,通知所有本地端的 VTEP,而 Proxy VTEP 的部份則採用 Unicast。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM3 溝通。
情境三、當選擇 Hybrid Mode,且 VM1 及 VM2 在「同一台」 ESXi Host 時:
1. VM1 及 VM2 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM2 溝通時,首先發出 ARP Request (在同一台 ESXi Host 當中)。
2. ARP Broadcast 發送到同一台 ESXi Host 當中,接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM2 的 ARP 記錄。
3. 因為 VM1 與 VM2 接在同一台Logical Switch,在 VM2 發出 ARP Reply 之前,NSX Controller 會先回應 Switch Security Module:
i. 若 VM2 沒有 DHCP 資訊或執行過 ARP Reply 動作,那麼 NSX Controller 內也沒有相關資訊。
ii. Switch Security Module 更新 Local ARP Table 內容,並且通知 NSX Controller 更新它的 ARP Table 內容(關於 VM2 的資訊)。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM2 溝通。
在同一台 ESXi Host 的運作情境中,並不會產生「VXLAN 封裝」的情況。因為此情況選擇的是 Unicast / Hybrid Mode,若是在 Transport Zone 中選擇的是 Multicast Mode,那麼 ARP Request Broadcast 會轉送 VXLAN 封裝給其它所屬 Multicast Group 當中的 VTEP。
情境四、當選擇 Multicast Mode,且 VM1 及 VM3 在「不同台」ESXi Host 時:
1. VM1 及 VM3 身處於同一個 VXLAN 5001,當 VM1 嘗試與 VM3 溝通時,首先發出 ARP Request 給 Logical Switch。
2. ARP Broadcast 發送到接於該 Logical Switch 中的所有 VM 虛擬主機。此時,Switch Security Module 透過 Management Network,去 Query NSX Controller 當中的 ARP Table 內容,查詢 VM3 的 ARP 記錄。
3. 因為 NSX Controller 當中的 ARP Table 內容,並沒有 VM3 的 ARP 記錄。此時, Broadcast 會採用 Multicast 的方式,通知所有本地端的 VTEP 及 Proxy VTEP。
4. Logical Switch 發送 Unicast ARP Reply 給 VM1,之後 VM1 便能順利與 VM3 溝通。
小結! 在 NSX 網路虛擬化環境中,只要 VM 虛擬主機在不同台 ESXi Host 的話,那麼不管是在同一個 Cluster 或不同 Cluster,其實 MAC 學習的流程是一樣的。
QoS Tagging
事實上 QoS Tagging 機制,與 VLAN 在 vSphere 網路環境的設定概念相同,可以 Guest OS 設定、vSwitch 設定、實體 Switch 設定等三種運作方式。當 QoS Tagging 機制設定完成後,在資源搶奪的情況發生時,便可以讓需要優先通過的網路流量,可以順利的到達目的地。
再次說明 NSX 相關元件的設定流程:
1. 部署 NSX Manager 並與 vCenter Server 配對。
2. 透過 vSphere Web Client 或 NSX API,配置 Logical Switch 及 Distributed Logical Router。當配置完成後,發佈給 NSX Controller 知悉,並決定哪台 NSX Controller 為 Active。
3. NSX Controller 與 ESXi Host 當中的 UWA 進行溝通,並且更新相關資訊。在 VXLAN (Logical Switch) 的部份,確認 VM 連接到哪個 VNI 之後便可以啟動電源準備上線服務。此時,UWA 會同步資訊給 VTEP 並且回報給 NSX Controller (更新 ARP Table 資訊)。
4. Distributed Firewall 的相關組態設定,則是透過 Message Bus 直接發送給 ESXi Host。
5. 事實上,在 NSX 網路虛擬化環境中的 ESXi Host,除了以往傳統負責的 Compute Resource 之外,現在還擔任 UWA, VTEP, Logical Switch, Router, Firewall 等任務。
VMware NSX 攻略 - 系列文章
- VMware NSX 筆記 (1) - 初探
- VMware NSX 筆記 (2) - NSX Networking
- (本文) VMware NSX 筆記 (3) - VXLAN 及 Logical Switch
- VMware NSX 筆記 (4) - NSX Routing
- VMware NSX 筆記 (5) - NSX Edge Gateway
- VMware NSX 筆記 (6) - NSX Security