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 报文的过程?

  1. 接收报文
    VTEP 从物理网络接口接收报文。这个报文可能是普通的 IP 数据包,也可能是封装了 VXLAN 的报文。
  2. 检查 UDP 端口号
    VXLAN 使用 UDP 进行封装,标准的 VXLAN 端口号是 4789。VTEP 会检查接收到的报文的 UDP 端口号:
    如果 UDP 端口号是 4789,VTEP 会进一步处理该报文,认为它是一个 VXLAN 报文。
    如果 UDP 端口号不是 4789,VTEP 会将其作为普通的 IP 数据包处理。
  3. 解析 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 作为一个软件平台,通常由以下几个主要软件组件组成:

  1. 控制器集群(Controller Cluster)
    控制器集群是 NVP 的核心管理组件,通常以软件形式运行在服务器上。控制器集群负责集中管理和控制整个虚拟网络的逻辑拓扑和策略。
  2. 虚拟交换机(vSwitch)
    虚拟交换机是运行在每个物理服务器上的软件组件,它负责处理虚拟机之间的流量。常见的虚拟交换机实现包括 Open vSwitch(OVS)。虚拟交换机接收控制器集群下发的配置和策略,执行相应的转发和处理操作。
  3. 隧道端点(Tunnel Endpoint)
    隧道端点也是一个软件组件,用于在物理网络上封装和传输虚拟网络流量。NVP 支持多种隧道协议,包括 VXLAN、STT(Stateless Transport Tunneling)和 GRE。隧道端点将虚拟网络流量封装在隧道协议中,通过物理网络进行传输。

P4 允许用户定义数据包的解析、匹配和处理行为,使得网络设备可以根据具体需求进行定制。



putao
8 声望1 粉丝

推动世界向前发展,改善民生。


引用和评论

0 条评论