VMware NSX vSphere 邏輯交換器 網路虛擬化

網路虛擬化如何脫鉤硬體 剖析集中運作及控制原理

2016-08-09
上一次介紹了如何簡易地產出一個邏輯交換器,並且說明了邏輯交換器底層的VXLAN封裝機制,這次將深入講解網路虛擬化怎樣在底層運作,並說明其控制的原理。
繼前期「VMware NSX的邏輯交換器運作機制(一)」文章的介紹之後,本次要進一步與大家討論一個核心的問題:「在實體交換器內,是利用Mac-Address-Table來進行Ethernet封包的轉發。但是NSX軟體定義網路的機制內,在邏輯交換器內兩個VM互相溝通時,底層的vSphere Host必須要知道目的地VM是位在哪一台Host上,然後透過VXLAN封裝把原始的Ethernet Frame送過去」。

但是,問題來了:「vSphere Host如何知道目的地VM位在哪個Host上?」

這裡用圖1進行說明。考慮環境內有三台vSphere Host A、B及C,VTEP分別為10.20.10.10/24、10.20.20.11/24以及10.20.30.12/24。我們建立了一個邏輯交換器VXLAN 5001,並且接取了兩個虛擬機器VM1、VM2在此邏輯交換器上。邏輯網段是192.168.10.0/24,兩個VM的IP分別是101與102,各自位於Host A與Host B上。


▲圖1 示範圖例。

當VM1要與VM2進行交通傳輸,Host A怎麼知道VM2在哪一台Host上?

VTEP、MAC以及ARP Table

首先要知道的是,在NSX Controller上針對每個邏輯交換器會維持三張表:VTEP Table、MAC Table以及ARP Table,以下針對這三張表進行說明。

VTEP Table

建立邏輯交換器時,一般會把VM「插入」到這個邏輯交換器上。簡而言之,每一個vSphere Host一定知道它身上有哪些VM,以及這個VM需要位在哪個邏輯交換器。當各個VM所處的邏輯交換器有異動時,vSphere Host會立即通知NSX Controller這個Host身上有接取哪個邏輯交換器。

也就是說,在圖1的環境內,Host A與Host B會分別回報Controller它們身上需要有VXLAN 5001這個邏輯交換器(因為VM1/VM2位於這個邏輯交換器上)。

但Host C因為目前沒有任何VM位於VXLAN 5001,就不會發出這個訊息。因此,於NSX Controller上對應VXLAN 5001(VNI 5001)這個邏輯交換器,就會有如表1所示的VTEP Table。

表1 VTEP Table內容

Host C上沒有任何VM在VXLAN 5001上,因此在Controller內的VTEP Table中就不會有VTEP 10.20.30.12的資訊,但須考慮以下兩種狀況:

1. 在Host C上新建了一個VM 3並加入了VXLAN 5001。此時Host C會告知Controller它身上也有VXLAN 5001,Controller上的VNI 5001 VTEP Table就會新增一筆10.20.30.12。

2. 或是如果VM 2由Host B vMotion到Host C,此時Host C會與Controller回報身上有VXLAN 5001,而Host B因為已經沒有任何VM位於此邏輯交換器,也會與Controller回報沒有VXLAN 5001了,Controller會據此進行VTEP Table的更新。

VTEP Table在建立與更新時,Controller都會立即通知各個相關的vSphere Hosts,因此不僅是Controller本身,每個vSphere Host也都有一份最新的VTEP Table,知道在身上有的邏輯交換器,除了自己之外,還有哪些Hosts也有這個邏輯交換器。以圖1來說,Host A和Host B自己都知道在VXLAN 5001上有的主機包括了Host A(10.20.10.10)以及Host B(10.20.20.11)。

MAC Table

同樣地,每一個vSphere Host也一定知道它身上VM的MAC Address是多少。因此Host也會對NSX Controller發出告知,自己身上的哪個邏輯交換器內有哪些VM(MAC Address)。

在圖1內,Host A會告知NSX Controller在自己身上的VXLAN 5001內有一個VM硬體位置為MAC 1,而Host B也會告知Controller有一個MAC 2。因此,NSX Controller匯集了這些資訊,針對邏輯交換器5001就可以建立起如表2所示的MAC Table。

當然如果VM有異動或是有vMotion等動作,影響到的Host也會通知NSX Controller進行相關的更新。這張表僅維護於NSX Controller內,不會發送給各台主機。

表2 MAC Table設定內容


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!