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

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

2016-08-09
上一次介紹了如何簡易地產出一個邏輯交換器,並且說明了邏輯交換器底層的VXLAN封裝機制,這次將深入講解網路虛擬化怎樣在底層運作,並說明其控制的原理。
ARP Table

即使沒有安裝VMTools,vSphere Host仍然可能有方法知道各個VM的IP Address,包括:

·如果這個VM發出DHCP Request,由Reply Packet就可知道IP為多少。
·只要這個VM發出ARP Request,由Request的來源IP就會知道此VM的地址。

接下來,Host也會對NSX Controller告知,自己身上VM的MAC Address與IP Address的對應。

因此,NSX Controller同樣地也會學習到每個邏輯交換器內有哪些IP Address,以及對應的MAC,如表3所示。

表3 每個邏輯交換器的IP Address及其對應MAC

Host A如何得知VM2在哪一台Host

由上面的討論,可以會發現NSX Controller事實上集中了各個邏輯交換器內的拓撲資訊,包括每個邏輯交換器建立在哪些Hosts上、這個邏輯交換器內有哪些VM(MAC Address),以及它們對應的IP Address。所以,再回到最前面的問題:「當VM1要與VM2進行交通傳輸,Host A怎麼知道VM2在哪一台Host上?」

首先,依據標準TCP/IP封包傳送流程,VM1不知道VM2的MAC Address,所以發出一個ARP Request

此時,vSphere Host接收到這個ARP Request,在Host上的Cache內也不知道VM2的MAC Address,此時Host A會對NSX Controller發出一個ARP詢問。

Controller上查詢ARP Table後,回應Host A說VM2(192.168.10.102)的MAC是MAC 2。Host A再發ARP Reply給VM1。


接著,VM1發出了往VM2傳送的Ethernet封包

接著VM1發出了往VM2傳送的Ethernet封包,而這個封包應該是長這樣的,如表4所示。

表4 往VM2傳送的Ethernet封包內容

Host A收到這個封包時,會去詢問Controller,查詢VXLAN 5001的MAC Table,並且得到MAC 2對應的VTEP是10.20.20.11。這樣一來,目的地的Host查到了。這時Host A就會在原有的Ethernet Frame前加上VXLAN的表頭,如表5所示。

表5 在原有Ethernet Frame前加上VXLAN的表頭

經過底層硬體網路正常的Hop-By-Hop將封包轉送到Host B後,解開VXLAN封裝並看到VXLAN是5001,於5001邏輯交換器內透過正常傳送機制將原始的Ethernet Frame 送給VM2(via Destination MAC Address)

後續,VM1到VM2的Ethernet封包呢?

因為在ARP Request與第一個封包傳送時,Host A就已經具備了相關的知識並放進Cache,後續同樣網路流的封包傳送就不需要詢問NSX Controller,直接進行VXLAN封裝並傳送。

希望上面的步驟能讓大家理解在NSX內,同一個邏輯交換器內的封包是如何透過底層硬體網路送到目的地。各位會發現到的是,NSX Controller在這邊擔任的是一個集中收集網路拓撲的角色,當各台Host接收到VM的封包,不知道往哪送時,就去問NSX Controller。這也解釋了為什麼在NSX環境內,通常在ping時,第一個封包的Latency都會比較大,如圖2所示。


▲圖2 通常在NSX環境內VM第一次互相溝通時,Latency可能會較大。

理由是Host要去處理第一個封包時有較多的步驟,包括回應ARP Request、與Controller詢問相關的資訊等。但第二個封包之後,Host的Cache就已經儲存相關的資訊,此時後續的網路傳輸就很快速了。

如何處理多目的地網路傳輸

最後要討論一個問題:「上面的傳輸流程是針對Unicast的封包,但網路內也會有所謂的BUM Traffic(Broadcast/Unknown/Multicast)傳輸需求。在邏輯交換器內,如何處理這種有多目的地的網路傳輸方式呢?」先很快地複習一下在實體網路VLAN內,BUM Traffic是如何處理的:

·廣播Broadcast:Destination MAC會設定成全部為FF,Switch看到廣播目的地址,會送給位於這個VLAN內的所有實體Port。

·群播Multicast:Destination MAC的後面23位元會由Multicast IP Address MAP到MAC位置。Switch藉由IGMP協定內各個Host的註冊,去對應哪些實體Port會對應哪個群播位置。收到Destination MAC是在群播位置內的時候,由MAC對應要往哪些實體Port送。

·未知封包Unknown Unicast:如果不是廣播也不是群播,但在Switch內的mac-address-table內沒有註冊這個Unicast MAC Address的位址,此時Switch會利用廣播的方法把這個封包往所有VLAN內的實體埠送出。

但在邏輯交換機的底層要如何處理BUM Traffic呢?此時的核心問題是,當上層的邏輯交換機裡面有廣播或群播的封包傳送,在底層的VXLAN封裝是需要跨越實體網路的L2或甚至L3路徑來把這些封包送到各個目的主機。此時,在底層的處理方法包括:

1. 於底層網路透過Multicast的方式傳送。這是早期vDS內要求的方法。
2. 在底層網路透過Unicast的方式傳送。這是NSX方案內可採用的方法。
3. 在底層網路透過Hybrid的方式,也就是結合L2 Multicast與Unicast的方式傳送。這是NSX方案內可採用的方法。

接下來,針對透過Multicast、Unicast以及Hybrid方式傳送這三種方法進行說明。


追蹤我們Featrue us

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

我知道了!