FlowVisor 是一種網絡虛擬化平台,專為軟件定義網絡(SDN)環境設計。它允許多個獨立的控制器同時管理同一個物理網絡,而不會相互干擾。FlowVisor 的主要功能是將網絡資源劃分成多個邏輯視圖(slices),每個視圖都可以由不同的控制器獨立管理。這種虛擬化使得網絡資源可以更靈活地進行分配和管理。
FlowVisor 的主要功能和特性
網絡切片:FlowVisor 能夠將物理網絡劃分成多個邏輯網絡切片,每個切片可以由不同的控制器管理。這些切片可以基於流量類型、端口號、VLAN 標籤等進行劃分。
隔離性:不同的網絡切片之間是相互隔離的,這意味着一個控制器在管理其切片時不會影響到其他控制器或切片。
資源控制:FlowVisor 允許管理員為每個切片分配特定的資源,比如帶寬、流表條目等。這有助於確保資源的公平分配和高效利用。
透明性:FlowVisor 對底層物理網絡設備是透明的,這意味着網絡設備不需要進行任何修改即可與 FlowVisor 一起工作。
兼容性:FlowVisor 主要用於 OpenFlow 網絡環境,可以與支持 OpenFlow 協議的交換機和控制器一起使用。
FlowVisor 的工作原理
FlowVisor 作為一箇中間層,位於物理網絡設備和多個控制器之間。其工作流程如下:
接收控制器請求:FlowVisor 接收來自多個控制器的 OpenFlow 請求。
解析和分發請求:根據預先定義的切片策略,FlowVisor 將這些請求解析並分發到相應的物理網絡設備。
監控和管理:FlowVisor 監控網絡流量和資源使用情況,確保每個切片的資源分配和隔離性。
返回結果:物理網絡設備的響應會被 FlowVisor 接收並轉發給相應的控制器。
FlowVisor 的應用場景
研究和教育:FlowVisor 可以在同一個物理網絡上運行多個實驗,幫助研究人員和學生進行網絡實驗而無需擔心相互干擾。
多租户數據中心:在多租户數據中心環境中,FlowVisor 可以為不同的租户提供獨立的網絡切片,確保租户之間的隔離性和資源公平分配。
服務提供商:服務提供商可以使用 FlowVisor 將其網絡基礎設施虛擬化,為不同的客户提供定製化的網絡服務。
FlowVisor 的侷限性
雖然 FlowVisor 提供了強大的網絡虛擬化功能,但也有一些侷限性:
性能開銷:作為一箇中間層,FlowVisor 會引入一些額外的延遲和性能開銷。
複雜性:配置和管理 FlowVisor 需要一定的技術知識和經驗。
兼容性:雖然 FlowVisor 主要用於 OpenFlow 環境,但並非所有 OpenFlow 設備和控制器都完全兼容。
Outer Ethernet Header:用於在第 2 層網絡(物理網絡)上傳輸 VXLAN 報文。
+-------------------------------+
| Outer Ethernet Header |
+-------------------------------+
| Outer IP Header |
+-------------------------------+
| Outer UDP Header |
+-------------------------------+
| VXLAN Header |
+-------------------------------+
| Inner Ethernet Frame |
+-------------------------------+
VXLAN 的工作流程
封裝:當一個虛擬機(VM1)發送一個數據幀時,源 VTEP(VTEP1)將該數據幀封裝到一個 VXLAN 報文中,添加外部以太網頭部、IP 頭部、UDP 頭部和 VXLAN 頭部。
傳輸:封裝後的 VXLAN 報文通過第 3 層網絡傳輸到目的 VTEP(VTEP2)。
解封裝:目的 VTEP(VTEP2)接收到 VXLAN 報文後,解封裝出原始的第 2 層幀,並將其發送到目的虛擬機(VM2)。
場景描述
假設我們有兩個虛擬機 A 和 B,它們分別位於不同的物理服務器上。我們希望 A 和 B 能夠像在同一個局域網(LAN)中一樣進行通信,但它們實際上通過一個更大的第 3 層網絡(比如互聯網或企業內部網絡)連接。
虛擬機 A VTEP A 第 3 層網絡 VTEP B 虛擬機 B
+--------+ +-------+ +-----------+ +-------+ +--------+
| | | | | | | | | |
| A |--->|VTEP A |--->|第 3 層網絡|--->|VTEP B |--->| B |
| | | | | | | | | |
+--------+ +-------+ +-----------+ +-------+ +--------+
結論:
通過 VXLAN,虛擬機 A 和 B 可以在不同的物理網絡上像在同一個局域網中一樣進行通信。VXLAN 通過封裝和解封裝第 2 層幀,使得虛擬網絡能夠跨越第 3 層網絡進行擴展,解決了傳統 VLAN 的可擴展性問題,並提供了多租户支持和網絡隔離。
VTEP 識別 VXLAN 報文的過程?
- 接收報文
VTEP 從物理網絡接口接收報文。這個報文可能是普通的 IP 數據包,也可能是封裝了 VXLAN 的報文。 - 檢查 UDP 端口號
VXLAN 使用 UDP 進行封裝,標準的 VXLAN 端口號是 4789。VTEP 會檢查接收到的報文的 UDP 端口號:
如果 UDP 端口號是 4789,VTEP 會進一步處理該報文,認為它是一個 VXLAN 報文。
如果 UDP 端口號不是 4789,VTEP 會將其作為普通的 IP 數據包處理。 - 解析 VXLAN 頭部
如果報文的 UDP 端口號是 4789,VTEP 會繼續解析 VXLAN 頭部。VXLAN 頭部包含重要的信息,如 VXLAN Network Identifier (VNI),用於標識虛擬網絡。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|R|R|R|I|R|R|R| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VXLAN Network Identifier (VNI) | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
GRE(Generic Routing Encapsulation,通用路由封裝)是一種隧道協議,用於在不同的網絡之間傳輸數據包。GRE 協議由 IETF(Internet Engineering Task Force)定義,主要用於將一個網絡協議的數據包封裝在另一個網絡協議的數據包中,以便通過不同類型的網絡進行傳輸。
比如:封裝 IPv4 數據包在 IPv4 數據包中, 封裝 IPv6 數據包在 IPv4 數據包中等
+-------------------------------+
| Outer Ethernet Header |
+-------------------------------+
| Outer IPv4 Header |
| (Src: 203.0.113.1, |
| Dst: 203.0.113.2) |
+-------------------------------+
| GRE Header |
+-------------------------------+
| Inner IPv4 Packet |
| (Src: 192.168.1.1, |
| Dst: 10.0.0.1) |
+-------------------------------+
NVGRE(Network Virtualization using Generic Routing Encapsulation)是另一種網絡虛擬化技術,通過 GRE(Generic Routing Encapsulation)協議在第 3 層網絡上封裝第 2 層幀。
虛擬機 A NVTE A 第 3 層網絡 NVTE B 虛擬機 B
+--------+ +-------+ +-----------+ +-------+ +--------+
| | | | | | | | | |
| A |--->|NVTE A |--->|第 3 層網絡|--->|NVTE B |--->| B |
| | | | | | | | | |
+--------+ +-------+ +-----------+ +-------+ +--------+
NVP(Network Virtualization Platform,網絡虛擬化平台)本質上是一個軟件平台,它通過軟件定義網絡(SDN)技術實現網絡虛擬化。NVP 由 Nicira 開發,後來被 VMware 收購併整合到 VMware 的 NSX 產品中。因此,NVP 可以看作是一套軟件系統,包含多個軟件組件,協同工作以實現網絡虛擬化。
NVP 的組成部分
NVP 作為一個軟件平台,通常由以下幾個主要軟件組件組成:
- 控制器集羣(Controller Cluster)
控制器集羣是 NVP 的核心管理組件,通常以軟件形式運行在服務器上。控制器集羣負責集中管理和控制整個虛擬網絡的邏輯拓撲和策略。 - 虛擬交換機(vSwitch)
虛擬交換機是運行在每個物理服務器上的軟件組件,它負責處理虛擬機之間的流量。常見的虛擬交換機實現包括 Open vSwitch(OVS)。虛擬交換機接收控制器集羣下發的配置和策略,執行相應的轉發和處理操作。 - 隧道端點(Tunnel Endpoint)
隧道端點也是一個軟件組件,用於在物理網絡上封裝和傳輸虛擬網絡流量。NVP 支持多種隧道協議,包括 VXLAN、STT(Stateless Transport Tunneling)和 GRE。隧道端點將虛擬網絡流量封裝在隧道協議中,通過物理網絡進行傳輸。
P4 允許用户定義數據包的解析、匹配和處理行為,使得網絡設備可以根據具體需求進行定製。