天天看點

關于 NSX-T 下的混雜模式

最近看到一些人問 NSX-T 支不支援混雜模式,于是寫這篇文章來做一說明。

本文内容可以概況為:NSX-T 不支援混雜模式,但可以滿足混雜模式常見的兩種使用場景:即流量監控和虛拟化嵌套。

關于混雜模式

混雜模式在 vSphere 環境下是個很常用的特性,無論是标準虛拟交換機還是分布式虛拟交換機均支援。

“下圖為标準虛拟交換機的端口組配置截圖”

關于 NSX-T 下的混雜模式

“下圖為分布式虛拟交換機的端口組配置截圖”

關于 NSX-T 下的混雜模式

事實上,混雜模式并不是 vSphere 環境下獨有的特性,而是一個通用的網絡術語。

在傳統網絡中,混雜模式一般是個網卡層面的屬性,未開啟混雜模式的網卡僅會接受發給其

MAC

位址的單點傳播封包(以及廣播封包),而開啟此模式後,隻要是網卡接收到的流量,都可以傳送給作業系統驅動進行處理。通常這種模式可以用于流量監控,在容器環境下,部分網絡插件,例如

MACVLAN 也需要網卡混雜模式才能正常運作。

“臨時為 Linux 網卡開啟混雜模式截圖”

關于 NSX-T 下的混雜模式

在 vSphere 虛拟化中,混雜模式是個端口組級别的設定,當為端口組開啟混雜模式後,所有連接配接到同一端口組的虛拟機均能看到其他虛拟機的所有流量,通過這種配置,可以輕松在虛拟化中實作兩種功能:

1、流量監控:在同一個端口組下部署業務虛拟機和監控虛拟機,監控虛拟機可以直接看到業務虛拟機的流量并進行監控分析;

關于 NSX-T 下的混雜模式

2、虛拟化嵌套:學習 vSphere 的朋友經常會在實體伺服器上安裝 ESXi,然後在此 ESXi 上再安裝多台 ESXi,實作嵌套 vSphere 環境來完成各種複雜的實驗(VMware 的 Hands-on-Labs 就是基于虛拟化嵌套建構的)。在這種場景下嵌套 ESXi 的端口組就需要開啟混雜模式,這樣在其上面運作的虛拟機才能正常和外部通信。

關于 NSX-T 下的混雜模式

除了混雜模式之外,端口組級别也有另外兩個配置一般也需要開啟:

  • MAC 位址更改:指是否允許 VM 修改其 MAC 位址,如果禁用此特性,一般 VM 隻能使用其 vNIC 的 MAC 位址發送流量;
  • 僞傳輸:指是否接收 VM 上除了 vNIC 之外的 MAC 位址發出的資料。一般置備好虛拟機之後,vSphere 會為 VM 配置設定一個 vNIC,此 vNIC 會随機生成一個 MAC 位址,通常 VM 内的作業系統會使用此 MAC 來封包發包,但在某些特殊場景下,虛拟機會發出非此 MAC 的包(例如針對上圖的 dvpg-Trunk 端口組,會收到來自上遊嵌套 ESXi 的多個 MAC 位址的包),這種特殊場景下,就需要打開“僞傳輸”。
關于 NSX-T 下的混雜模式

混雜模式之外

前面講了一大堆,提到混雜模式可以滿足兩個常見的使用場景:流量監控和虛拟化嵌套。那混雜模式一定是必須的嗎?答案是“否”。

流量監控

針對流量監控,網絡中最常見的手段是端口鏡像(Port

Mirroring)。在實體網絡中,端口鏡像功能一般由交換機實作,可以實作将 A 實體口的流量鏡像發送給 B 實體口(一般稱作本地

SPAN),也可以實作将 A 實體口的流量發送給其他裝置,其他裝置再将相應流量發送器其 B 實體口(一般稱作遠端 SPAN)。

在虛拟化中,vSphere 的 vDS 很早就支援這些特性,在官方文檔中也有詳細的配置說明:

關于 NSX-T 下的混雜模式

虛拟化嵌套​

針對虛拟化嵌套的場景,要使得嵌套環境中的 VM 能和外部通信,理論上隻需要使得外部網絡(包含宿 ESXi 主機及實體網卡等)接受 VM 的流量,且能夠轉發流量即可。這時候僅需要下列功能即可:

  • MAC 位址更改/僞傳輸:允許嵌套虛拟機的 MAC 發給宿 ESXi 的端口組;
  • MAC 位址學習:熟悉網絡的人可能知道,二層網絡通信靠

    ARP 解析目标 MAC 位址,如果一個嵌套 VM 的 ARP

    包能被正常發送到其他位置,并能正确收到回應,那就可以完成二層通信。在虛拟化中,vSwitch 預設隻會轉發 VM vNIC MAC

    的封包,這就使得嵌套 VM 的封包不能被上層的 ESXi 處理。要使得上層 ESXi 能夠處理這樣的封包,在 vSphere 6.7

    之前的版本中,隻能用混雜模式來解決,而在 vSphere 6.7 及之後的版本,則可以使用 MAC 位址學習功能來解決。

目前 MAC 位址學習功能僅支援在 vDS 上配置,同時需要通過 API (及 PowerCLI 等工具)開啟:

關于 NSX-T 下的混雜模式

開啟方法可以參考下列部落格:

​​https://williamlam.com/2018/04/native-mac-learning-in-vsphere-6-7-removes-the-need-for-promiscuous-mode-for-nested-esxi.html​​

NSX 支援

了解清楚了混雜模式的場景和原理,再回頭看 NSX 支援情況。

流量監控

NSX 和 vDS 一樣,支援多種端口鏡像的方式,曾經整理過一頁思維導圖,直接粘貼過來:

關于 NSX-T 下的混雜模式

虛拟化嵌套​

NSX 具備比 vDS 更多、更細的二到七層安全政策,其中關于二層的安全配置均放在分段配置檔案中:

關于 NSX-T 下的混雜模式

NSX 共有 5 中分段配置檔案,其功能如下圖所示:

關于 NSX-T 下的混雜模式

其中前面提到的“MAC 更改/MAC發現”均可在 MAC 發現政策中配置。當開啟 MAC 學習後,直接具備類似 vDS 的僞傳輸功能,是以完全可以滿足虛拟化嵌套這一場景。

具體配置使用上非常簡單:

1、新增一個 MAC 發現配置檔案,開啟 MAC 更改和 MAC 學習;

關于 NSX-T 下的混雜模式

2、建立一個 VLAN 分段(僅有 VLAN 分段支援嵌套 VLAN 網絡,Overlay 分段上不支援多 VLAN),為分段關聯 MAC 發現配置檔案(下圖中建立了一個 Trunk 類型的分段,放行多個 VLAN);

關于 NSX-T 下的混雜模式

3、為嵌套虛拟機(例如 ESXi)關聯此分段。

關于 NSX-T 下的混雜模式

之後如果此 VM 内有多個 MAC/IP,在外部網絡就緒的情況下和外部可以互通。(例如下圖中,在 VM 内使用 Antrea 部署了多個容器,分别在不同的 VLAN 網段内,每個容器有不同的 MAC 位址,和外部通信均正常。)

關于 NSX-T 下的混雜模式

繼續閱讀