VXLAN
NetScaler 设备支持虚拟可扩展局域网 (vxLAN)。VXLAN 通过将第 2 层帧封装在 UDP 数据包中,将第 2 层网络叠加到第 3 层基础架构上。每个重叠网络都被称为 VXLAN 分段,由一个名为 VXLAN 网络标识符 (VNI) 的 24 位唯一标识符标识。只有同一 VXLAN 中的网络设备才能相互通信。
VxLAN 提供与 VLAN 相同的以太网第 2 层网络服务,但具有更大的可扩展性和灵活性。使用 vxLAN 的两个主要好处如下:
- 更高的可扩展性。服务器虚拟化和云计算架构显著增加了数据中心对隔离的第 2 层网络的需求。VLAN 规范使用 12 位 VLAN ID 来标识第 2 层网络,因此您的扩展范围无法超过 4094 个 VLAN。当需要成千上万个隔离的第 2 层网络时,这个数字可能不够。24 位 VNI 可在同一个管理域中容纳多达 1600 万个 VXLAN 分段。
- 更高的灵活性。由于 VXLAN 通过第 3 层数据包传输第 2 层数据帧,因此 vxLAN 将 L2 网络扩展到数据中心的不同部分和地理上分开的数据中心。托管在数据中心不同部分和不同数据中心但属于同一 VXLAN 的应用程序显示为一个连续的网络。
vxLAN 的工作原理
VXLAN 分段是在 VXLAN 通道端点 (vteP) 之间创建的。vteP 支持 VXLAN 协议并执行 VXLAN 封装和解封装。您可以将 VXLAN 分段视为两个 VTEP 之间的通道,其中一个 VTEP 使用 UDP 标头和 IP 报头封装第 2 层帧并通过通道发送。另一个 VTEP 接收并解封数据包以获取第 2 层帧。NetScaler 是 VTEP 的一个例子。其他示例包括第三方虚拟机管理程序、支持 VXLAN 的虚拟机和支持 VXLAN 的交换机。
下图显示了通过 VXLAN 通道连接的虚拟机和物理服务器。
下图显示了 VXLAN 数据包的格式。
NetScaler 上的 VxLAN 使用第 2 层机制发送广播、多播和未知的单播帧。VXLAN 支持以下模式来发送这些 L2 帧。
- 单播模式:在此模式下,您可以在 NetScaler 上配置 VXLAN 时指定 vteP 的 IP 地址。NetScaler 通过第 3 层向此 VXLAN 的所有 VTEP 发送广播、多播和未知的单播帧。
- 多播模式:在此模式下,您可以在 NetScaler 上配置 VXLAN 时指定多播组 IP 地址。NetScalers 不支持互联网组管理协议 (IGMP) 协议。NetScalers 依靠上游路由器加入多播组,该组共享一个通用的多播组 IP 地址。NetScaler 通过第 3 层向此 VXLAN 的多播组 IP 地址发送广播、多播和未知的单播帧。
与第 2 层桥接表类似,NetScalers 根据收到的 VXLAN 数据包的内部和外部标头维护 VXLAN 映射表。此表将远程主机 MAC 地址映射到特定 VXLAN 的 VTEP IP 地址。NetScaler 使用 VXLAN 映射表来查找第 2 层帧的目标 MAC 地址。如果 VXLAN 表中存在此 MAC 地址的条目,则 NetScaler 使用 VXLAN 协议将第 2 层帧通过第 3 层发送到 VXLAN 映射条目中指定的映射 VTEP IP 地址。
由于 vxLAN 的功能与 VLAN 类似,因此大多数支持 VLAN 作为分类参数的 NetScaler 功能都支持 VXLAN。这些功能包括可选的 VXLAN 参数设置,该设置指定 VXLAN VNI。
在高可用性 (HA) 配置中,VXLAN 配置传播或同步到辅助节点。
VXLAN 用例:跨数据中心的负载平衡
要了解 NetScaler 的 VXLAN 功能,可以举一个 Example Corp 在 www.example.com 上托管网站的示例。为确保应用程序可用性,该站点托管在三台服务器上,即 S0、S1 和 S2。NetScaler NS-ADC 上的负载平衡虚拟服务器 LBVS 用于对这些服务器进行负载平衡。S0、S1 和 S2 分别位于数据中心 DC0、DC1 和 DC2 中。在 DC0 中,服务器 S0 连接到 NS-ADC。
S0 是物理服务器,而 S1 和 S2 是虚拟机 (VM)。S1 在数据中心 DC1 的虚拟化主机设备 dev-vtep-1 上运行,S2 在 DC2 的主机设备 dev-vtep-2 上运行。NS-ADC、dev-vtep-1 和 dev-vtep-2 支持 VXLAN 协议。
S0、S1 和 S2 属于同一个私有子网 192.0.1.0/24。S0、S1 和 S2 是公共广播域的一部分,VXLAN 9000 配置在 NS-ADC、dev-vtep-1 和 dev-vtep-2 上。服务器 S1 和 S2 分别成为 dev-vtep-1 和 dev-vtep-2 上的 VXLAN9000 的一部分。
下表列出了本示例中使用的设置: VXLAN 设置。
NSS ADC 上的服务 SVC-S0、SVC-S1 和 SVC-S2 代表 S0、S1 和 S2。一旦配置了这些服务,NS-ADC 就会广播对 S0、S1 和 S2 的 ARP 请求,以解析 IP 到 Mac 的映射。这些 ARP 请求还通过 VXLAN 9000 发送到 dev-vtep-1 和 dev-vtep-2。
以下是解析 S2 的 ARP 请求的流量:
- NS-ADC 向 S2 广播 ARP 请求以解析 IP 到 Mac 的映射。这个数据包有:
- 来源 IP 地址 = 子网 IP 地址 SNIP-for-server (192.0.1.50)
- 源 MAC 地址 = 发送数据包的 NS-ADC 接口的 MAC 地址 = NS-MAC-1
- NS-ADC 通过使用以下报头封装 ARP 数据包来准备通过 VXLAN 9000 发送的数据包:
- ID (VNI) 为 9000 的 VXLAN 标头
- 标准 UDP 标头,UDP 校验和设置为 0×0000,目标端口设置为 4789。
- NS-ADC 将生成的封装数据包发送给 VXLAN-9000 上的 dev-vtep-1 和 dev-vtep-2。封装的数据包有:
- 源 IP 地址 = SNIP-VTEP-0 (203.0.100.100)。
- dev-vtep-2 接收 UDP 数据包并解封 UDP 标头,dev-vtep-2 从中得知该数据包是与 VXLAN 相关的数据包。然后 dev-vtep-2 解封装 VXLAN 标头并获知该数据包的 VXLAN ID。生成的数据包是 S2 的 ARP 请求数据包,与步骤 1 中的相同。
- 从 VXLAN 数据包的内部和外部标头中,dev-vtep-2 在其 VXLAN 映射表中输入了一个条目,显示了 VXLAN9000 的 MAC 地址 (NS-MAC-1) 和 SNIP-VTEP-0 (203.0.100.100) 的映射。
- dev-vtep-2 将 ARP 数据包发送到 S2。S2 的响应数据包到达了 dev-vtep-2。dev-vtep-2 在其 VXLAN 映射表中执行查找并获得目标 MAC 地址 NS-MAC-1 的匹配结果。dev-vtep-2 现在知道可通过 SNIP-VTEP-0 (203.0.100.100) 通过 VXLAN 9000 访问 NS-MAC-1。
- S2 使用其 MAC 地址 (MAC-S2) 进行响应。ARP 响应数据包有:
- 目标 IP 地址 = 子网 IP 地址 SNIP-for-server (192.0.1.50)
- 目标 MAC 地址 = NS-MAC-1
- S2 的响应数据包到达了 dev-vtep-2。dev-vtep-2 在其 VXLAN 映射表中执行查找并获得目标 MAC 地址 NS-MAC-1 的匹配结果。dev-vtep-2 现在知道可通过 SNIP-VTEP-0 (203.0.100.100) 通过 VXLAN 9000 访问 NS-MAC-1。dev-vtep-2 用 VXLAN 和 UDP 标头封装 ARP 响应,并将生成的数据包发送给 NS-ADC 的 SNIP-VTEP-0 (203.0.100.100)。
- NS-ADC 在收到数据包时,通过删除 VXLAN 和 UDP 报头来解封数据包。生成的数据包是 S2 的 ARP 响应。NS-ADC 将 S2 的 MAC 地址 (MAC-S2) 的 VXLAN 映射表更新为 dev-vtep-2 的 VXLAN 9000 的 IP 地址 (203.0.102.102)。NS-ADC 还使用 S2 的 MAC 地址 (MAC-S2) 更新了 S2 的 IP 地址 (192.0.1.102) 的 ARP 表。
以下是本示例中负载平衡虚拟服务器 LBVS 的流量:
- 客户端 CL 向 NS-ADC 的 LBVS 发送请求数据包。请求包有:
- 源 IP 地址 = 客户端 CL 的 IP 地址 (198.51.100.90)
- 目标 IP 地址 = LBVS 的 IP 地址 (VIP) = 198.51.110.100
- NS-ADC 的 LBVS 接收请求数据包,其负载平衡算法选择数据中心 DC2 的服务器 S2。
- NS-ADC 处理请求数据包,将其目标 IP 地址更改为 S2 的 IP 地址,将其源 IP 地址更改为 NS-ADC 上配置的子网 IP (SNIP) 地址之一。请求包有:
- 源 IP 地址 = NS-ADC= Snip-for-Servers 上的子网 IP 地址 (192.0.1.50)
- 目标 IP 地址 = S2 的 IP 地址 (192.0.1.102)
- NS-ADC 在其网桥表中找到 S2 的 VXLAN 映射条目。此条目表示可通过 dev-vtep-2 通过 VXLAN 9000 访问 S2。
- NS-ADC 通过使用以下报头封装数据包来准备要通过 VXLAN 9000 发送的数据包:
- ID (VNI) 为 9000 的 VXLAN 标头
- 标准 UDP 标头,UDP 校验和设置为 0×0000,目标端口设置为 4789。
- NS-ADC 将生成的封装数据包发送到 dev-vteP-2。请求包有:
- 源 IP 地址 = SNIP 地址 = SNIP-VTEP-0 (203.0.100.100)
- 目标 IP 地址 = dev-vtep-2 的 IP 地址 (203.0.102.102)
- dev-vtep-2 接收 UDP 数据包并解封 UDP 标头,dev-vtep-2 从中得知该数据包是与 VXLAN 相关的数据包。然后 dev-vtep-2 解封装 VXLAN 标头并获知该数据包的 VXLAN ID。生成的数据包与步骤 3 中的数据包相同。
- 然后 dev-vtep-2 将数据包转发到 S2。
- S2 处理请求数据包并将响应发送到 NS-ADC 的 SNIP 地址。响应数据包有:
- 源 IP 地址 = S2 的 IP 地址 (192.0.1.102)
- 目标 IP 地址 = NS-ADC= Snip-for-Servers 上的子网 IP 地址 (192.0.1.50)
- dev-vtep-2 封装响应数据包的方式与 NS-ADC 在步骤 4 和步骤 5 中封装请求数据包的方式相同。然后,dev-vtep-2 将封装的 UDP 数据包发送到 NS-ADC 的 SNIP 地址 SNIP-for-servers (192.0.1.50)。
- NS-ADC 在收到封装的 UDP 数据包后,通过移除 UDP 和 VXLAN 报头来解封该数据包,方法与步骤 7 中的 dev-vtep-2 解封该数据包的方法相同。生成的数据包与步骤 9 中的响应数据包相同。
- 然后,NS-ADC 使用会话表对虚拟服务器 LBVS 进行负载平衡,并将响应数据包转发到客户端 CL。响应数据包有:
- 源 IP 地址 = 客户端 CL 的 IP 地址 (198.51.100.90)
- 目标 IP 地址 = LBVS 的 IP 地址 (VIP) (198.51.110.100)
配置 vxLAN 时需要考虑的几点
在 NetScaler 上配置 vxLAN 之前,请考虑以下几点:
-
在 NetScaler 上最多可以配置 2048 个 vxLAN。
-
群集不支持 vxLAN。
-
无法为每个 VXLAN 配置链路本地 IPv6 地址。
-
NetScalers 不支持互联网组管理协议 (IGMP) 协议来组成多播组。NetScalers 依靠其上游路由器的 IGMP 协议加入多播组,该组共享一个公共多播组 IP 地址。创建 VXLAN 网桥表条目时可以指定多播组 IP 地址,但必须在上游路由器上配置多播组。NetScaler 通过第 3 层向此 VXLAN 的多播组 IP 地址发送广播、多播和未知的单播帧。然后,上游路由器将数据包转发到属于多播组的所有 VTEP。
-
VXLAN 封装会给每个数据包增加 50 字节的开销:
外部以太网标头 (14) + UDP 标头 (8) + IP 标头 (20) + VXLAN 标头 (8) = 50 字节
为避免分段和性能下降,必须调整 VXLAN 路径中所有网络设备(包括 VXLAN VTEP 设备)的 MTU 设置,以处理 VXLAN 数据包中的 50 字节开销。
重要:NetScaler VPX 虚拟设备、NetScaler SDX 设备和 NetScaler MPX 15000/17000 设备不支持巨型帧。这些设备支持的 MTU 大小仅为 1500 字节,无法进行调整以处理 VXLAN 数据包的 50 字节开销。如果其中一个设备位于 VXLAN 路径中或充当 VXLAN VTEP 设备,则 VXLAN 流量可能会出现分段或性能下降。
-
在 NetScaler SDX 设备上,VLAN 过滤不适用于 VXLAN 数据包。
-
您无法在 VXLAN 上设置 MTU 值。
-
您无法将接口绑定到 VXLAN。
配置步骤
在 NetScaler 设备上配置 VXLAN 包括以下任务。
- 添加 VXLAN 实体。创建由正整数唯一标识的 VXLAN 实体,正整数也称为 VXLAN 网络标识符 (VNI)。在此步骤中,您还可以指定运行 VXLAN 协议的远程 VTEP 的目标 UDP 端口。默认情况下,VXLAN 实体的目标 UDP 端口参数设置为 4789。此 UDP 端口设置必须与此 VXLAN 的所有远程 vTEP 上的设置相匹配。您也可以将 VLAN 绑定到此 VXLAN。允许所有绑定 VLAN 的流量(包括广播、多播、未知单播)通过此 VXLAN。如果没有 VLAN 绑定到 VXLAN,则 NetScaler 允许此 VXLAN 上所有不属于任何其他 VXLAN 的 VLAN 的流量。
- 将本地 VTEP IP 地址和绑定 到 VXLAN 实体。将其中一个已配置的 SNIP 地址绑定到 VXLAN 以获取传出的 VXLAN 数据包。
- 添加可桥接条目。添加一个可桥接条目,指定要创建的 VXLAN 的 VXLAN ID 和远程 VTEP IP 地址。
- (可选)将不同的功能实体绑定到配置的 VXLAN。VxLAN 的功能与 VLAN 类似,大多数支持 VLAN 作为分类参数的 NetScaler 功能也支持 VXLAN。这些功能包括可选的 VXLAN 参数设置,该设置指定 VXLAN VNI。
- (可选)显示 VXLAN 映射表。显示 VXLAN 映射表,其中包括特定 VXLAN 的远程主机 MAC 地址到特定 VTEP IP 地址的映射条目。换句话说,VXLAN 映射表明可以通过特定 VXLAN 上的 VTEP 访问主机。NetScaler 从收到的 VXLAN 数据包中学习 VXLAN 映射并更新其映射表。NetScaler 使用 VXLAN 映射表来查找第 2 层帧的目标 MAC 地址。如果 VXLAN 表中存在此 MAC 地址的条目,则 NetScaler 使用 VXLAN 协议将第 2 层帧通过第 3 层发送到 VXLAN 映射条目中指定的映射 VTEP IP 地址。
CLI 过程
要使用 CLI 添加 VXLAN 实体,请执行以下操作:
在命令提示符下键入
- add vxlan <id>
- 显示 vxlan<id>
要使用 CLI 将本地 VTEP IP 地址绑定到 VXLAN,请执行以下操作:
在命令提示符下键入
- bind vxlan <id> -SrcIP <IPaddress>
- show vxlan <id>
要使用 CLI 添加桥接表 ,请执行以下操作:
在命令提示符下键入
- add bridgetable -mac <macaddress> -vxlan <ID> -vtep <IPaddress>
- 显示桥接表
要使用命令行显示 VXLAN 转发表,请执行以下操作:
在命令提示符下,键入:
- 显示桥接表
GUI 程序
要使用 GUI 添加 VXLAN 实体并绑定本地 VTEP IP 地址,请执行以下操作:
导航到 系统 > 网络 > vxLAN,然后添加新的 VXLAN 实体或修改现有的 VXLAN 实体。
要使用 GUI 添加桥接表 ,请执行以下操作:
导航到 系统 > 网络 > 网桥表,在添加或修改 VXLAN 网桥表条目时设置以下参数:
- MAC
- VTEP
- VXLAN ID
要使用 GUI 显示 VXLAN 转发表,请执行以下操作:
导航到“系统”>“网络”>“网桥表”。
Example
> add vxlan 9000
Done
> bind vxlan 9000 -srcIP 203.0.100.100
Done
> add bridgetable -mac 00:00:00:00:00:00 -vxlan 9000 -vtep 203.0.101.101
Done
> add bridgetable -mac 00:00:00:00:00:00 -vxlan 9000 -vtep 203.0.102.102
Done
VXLAN 上 IPv6 动态路由协议的支持
NetScaler 设备支持 vxLAN 的 IPv6 动态路由协议。您可以通过 VTYSH 命令行在 vxLAN 上配置各种 IPv6 动态路由协议(例如 OSPFv3、RIPng、BGP)。在 VXLAN 命令集中添加了 IPv6 动态路由协议选项,用于在 VXLAN 上启用或禁用 IPv6 动态路由协议。在 VXLAN 上启用 IPv6 动态路由协议后,需要使用 VTYSH 命令行在 VXLAN 上启动与 IPv6 动态路由协议相关的进程。
要使用 CLI 在 VXLAN 上启用 IPv6 动态路由协议,请执行以下操作:
- **add vxlan** <ID> [-**ipv6DynamicRouting** ( **ENABLED** | **DISABLED** )]
- show vxlan
In the following sample configuration, VXLAN-9000 is created and has IPv6 dynamic routing protocols enabled on it. Then, using the VTYSH command line, process for the IPv6 OSPF protocol is started on the VXLAN.
> add vxlan 9000 -ipv6DynamicRouting ENABLED
Done
> bind vxlan 9000 -srcIP 203.0.100.100
Done
> add bridgetable -mac 00:00:00:00:00:00 -vxlan 9000 -vtep 203.0.101.101
Done
> VTYSH
NS# configure terminal
NS(config)# ns IPv6-routing
NS(config)# interface VXLAN-9000
NS(config-if)# ipv6 router OSPF area 3
使用 VXLAN-VLAN 映射将 VLAN 从多个企业扩展到云
CloudBridge Connector 通道用于将企业的 VLAN 扩展到云端。从多个企业扩展的 VLAN 可能具有重叠的 VLAN ID。您可以通过将每个企业的 VLAN 映射到云中唯一的 VXLAN 来隔离它们。在 NetScaler 设备(云中的 CloudBridge Connector端点)上,您可以配置 VXLAN-VLAN 映射,将企业的 VLAN 链接到云中唯一的 VXLAN。VxLAN 支持 VLAN 标记,用于将企业的多个 VLAN 从 CloudBridge Connector 扩展到同一 VXLAN。
执行以下任务,将多个企业的 VLAN 扩展到云端:
- 创建 VXLAN-VLAN 地图。
- 将 VXLAN-VLAN 映射绑定到云上 NetScaler 设备上基于网桥或基于 PBR 的 CloudBridge Connector通道配置。
- (可选)在 VXLAN 配置中启用 VLAN 标记。
CLI 过程
要使用 CLI 添加 VXLAN-VLAN 映射,请执行以下操作:
- add vxlanVlanMap <name>
- show vxlanVlanMap <name>
要使用 CLI 将 VXLAN 和 VLAN 绑定到 VXLAN-VLAN 映射,请执行以下操作:
- bind vxlanVlanMap <name> [-**vxlan** \<positive_integer> -**vlan** \<int[-int]> …]
- show vxlanVlanMap <name>
要使用 CLI 将 VXLAN-VLAN 映射绑定到基于网络桥的 CloudBridge Connector 通道,请执行以下操作:
在命令提示符处,键入以下一组命令。
如果添加新的网桥:
- add netbridge <name> [-**vxlanVlanMap** \<string>]
- show netbridge <name>
如果重新配置现有的网桥:
- set netbridge <name> [-**vxlanVlanMap** \<string>]
- show netbridge <name>
要使用 CLI 将 VXLAN-VLAN 映射绑定到基于 PBR 的 CloudBridge Connector 通道,请执行以下操作:
在命令提示符处,键入以下一组命令。
如果添加一个新的 PBR:
- add pbr <name> ALLOW (-ipTunnel <ipTunnelName> [-**vxlanVlanMap** \<name>])
- show pbr <name>
如果重新配置现有的 PBR:
- set pbr <name> ALLOW (-ipTunnel <ipTunnelName> [-**vxlanVlanMap** \<name>])
- show pbr <name>
要使用 CLI 在与 VXLAN 相关的数据包中包含 VLAN 标记,请执行以下操作:
在命令提示符处,键入以下一组命令。
如果添加新的 VXLAN:
- **add vxlan** <vnid> -**vlanTag** (**ENABLED** | **DISABLED**)
- show vxlan <vnid>
如果重新配置现有的 VXLAN:
- **set vxlan** <vnid> -**vlanTag** (**ENABLED** | **DISABLED**)
- show vxlan <vnid>
GUI 程序
要使用 GUI 添加 VXLAN-VLAN 映射,请执行以下操作:
导航到 系统 > 网络 > VXLAN VLAN 地图,添加 VXLANVLAN 地图。
要使用 GUI 将 VXLAN-VLAN 地图绑定到基于 netbridge 的 CloudBridge Connector 通道,请执行以下操作:
导航到 系统 > CloudBridge Connec tor > 网络桥,在添加新网桥或重新配置现有网桥的同时,从 VXLAN VLAN 下拉列表中 选择 VXLAN-VLAN 地图。
要使用 GUI 将 VXLAN-VLAN 映射绑定到基于 PBR 的 CloudBridge Connector 通道,请执行以下操作:
导航到 系统 > 网络 > PBR,在基于策略的路由 (PBR) 选项卡上,从 VXLAN VLAN 下拉列表 中选择 VXLAN-VLAN 映射,同时添加 新 的 PBR 或重新配置现有 PBR。
要使用 GUI 将 VLAN 标记包含在与 VXLAN 相关的数据包中,请执行以下操作:
导航到系统 > 网络 > VXLAN,在添加新 VXLAN 时启用内部 VLAN 标记,或重新配置现有 VXLAN。
> add vxlanVlanMap VXLANVLAN-DC1
Done
> bind vxlanvlanmap VXLANVLAN-DC1 -vxlan 3000 -vlan 3
Done
> bind vxlanvlanmap VXLANVLAN-DC1 -vxlan 3500 -vlan 4
Done
>add vxlanVlanMap VXLANVLAN-DC2
Done
> bind vxlanvlanmap VXLANVLAN-DC1 -vxlan 8000 -vlan 3 4
Done
> set pbr PBR-CBC-DC-1-CLOUD ALLOW -ipTunnel CBC-DC-1-CLOUD -vxlanVlanMap VXLANVLAN-DC1
Done
> set pbr PBR-CBC-DC-2-CLOUD ALLOW -ipTunnel CBC-DC-2-CLOUD -vxlanVlanMap VXLANVLAN-DC2
Done