Citrix ADC

VXLAN

Citrix ADC设备支持虚拟可扩展局域网(VXLAN)。VXLAN通过在 UDP 数据包中封装 2 层帧,将第 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标头封装了一个Layer2帧,并通过隧道发送它。另一个vtep接收并解除数据包以获得第2层帧。Citrix ADC是VTEP的一个示例。其他示例包括第三方虚拟机管理程序,vxlan感知虚拟机和支持vxlan的交换机。

下图显示了通过vxlan隧道连接的虚拟机和物理服务器。

Vxlan概述

下图显示了vxlan数据包的格式。

Vxlan数据包

Citrix ADC上的VXLAN使用第2层机制发送广播,多播和未知单播帧。Vxlan支持以下模式来发送这些l2帧。

  • 单播模式:在此模式下,您可以在Citrix ADC上配置VXLAN时指定VTEP的IP地址。Citrix ADC通过第3层向此VXLAN的所有VTEP发送广播、多播和未知单播帧。
  • 多播模式:在此模式下,您可以在Citrix ADC上配置VXLAN时指定多播组IP地址。Citrix ADC不支持Internet组管理协议(IGMP)协议。Citrix ADC依靠上游路由器加入共享公用多播组IP地址的多播组。Citrix ADC通过第 3 层向此 VXLAN 的多播组 IP 地址发送广播、多播和未知单播帧。

与第2层桥接表类似,Citrix ADC基于接收到的VXLAN数据包的内部和外部标头来维护VXLAN映射表。此表将远程主机MAC地址映射到特定vxlan的vtep IP地址。Citrix ADC使用 VXLAN 映射表查找第 2 层帧的目标 MAC 地址。如果 VXLAN 表中存在此 MAC 地址的条目,Citrix ADC 会使用 VXLAN 协议将第 3 层上的第 2 帧发送到 VXLAN 映射条目中指定的映射 VTEP IP 地址。

由于VXLAN的功能与VLAN类似,因此支持VLAN作为分类参数的大多数Citrix ADC功能都支持VXLAN。这些功能包括一个可选的vxlan参数设置,该设置指定vxlan vni。

在高可用性(ha)配置中,vxlan配置将传播或同步到辅助节点。

Vxlan用例:跨数据中心的负载平衡

要了解Citrix ADC的VXLAN功能,请考虑示例公司在www.example.com上托管站点的示例。为确保应用程序的可用性,站点托管在三台服务器上:s0, s1和s2。Citrix ADCNS-ADC 上的负载平衡虚拟服务器 LBVS 用于对这些服务器进行负载平衡。S0、S1 和 S2 分别位于数据中心 DC0、DC1 和 DC2 中。在 DC0 中,服务器 S0 连接到 NS-ADC。

S0是物理服务器,s1和s2是虚拟机(vm)。S1在数据中心DC1中的虚拟化主机设备开发-VTEP-1上运行,S2在DC2中的主机设备开发-VTEP-2上运行。Ns-adc,开发-vtep-1和开发-vtep-2支持vxlan协议。

S0, s1和s2是同一私有子网192.0.1.0/24的一部分。S0、S1和S2是一个公共广播域的一部分,VXLAN 9000配置在NSS ADC,开发-VTEP-1和开发-VTEP-2。服务器S1和S2是由VXLAN9000的一部分在开发-VTEP-1和开发-VTEP-2,分别。

Vxlan如何工作

下表列出了本示例中使用的设置:VXLAN设置

NSS adc上的服务svc-s0, svc-s1和svc-s2代表s0, s1和s2。一旦配置了这些服务,NS-ADC就会广播S0, S1和S2的ARP请求,以解决IP到Mac映射问题。这些ARP请求也通过VXLAN 9000发送到开发人员VTEP-1和开发人员VTEP-2。

以下是用于解决s2 arp请求的流量:

  1. NS-ADC广播S2的ARP请求,以解决IP到Mac映射问题。此数据包包含:
    • 源IP地址=针对服务器的子网IP地址片段(192.0.1.50)
    • 源MAC地址=从中发出数据包的ns-adc接口的MAC地址= ns-mac-1
  2. NS-ADC通过使用以下标头封装数据包来准备要通过VXLAN 9000发送的ARP数据包:
    • Id (vni)为9000的vxlan标头
    • 标准udp标头,udp校验和设置为0×0000,目标端口设置为4789。
  3. NS-ADC将生成的封装数据包发送到vxlan - 9000上的开发-VTEP-1和开发-VTEP-2。封装的数据包具有:
    • 源IP地址= snip-vtep-0(203.0.100.100) .使用实例
  4. 开发-VTEP-2接收UDP数据包并解压UDP标头,从中开发-VTEP-2得知该数据包是与VXLAN相关的数据包。然后,Dev-VTEP-2解压缩VXLAN标头并学习数据包的VXLAN ID。生成的数据包是s2的arp请求数据包,与步骤1相同。
  5. 从VXLAN数据包的内部和外部标头中,Dev-VTEP-2在其VXLAN映射表中创建一个条目,显示了VXLAN9000的MAC地址(NS-MAC-1)和SNIP-VTEP-0(203.0.100.100)的映射。
  6. 开发-vtep-2将arp数据包发送到s2 .输出说明S2的响应数据包达到开发-vtep-2。Dev-VTEP-2在其VXLAN映射表中执行查找,并获取目标MAC地址NS-MAC-1的匹配项。开发计划署-VTEP-2现在知道,使用XLAN 9000可以通过SNIP-VTEP-0(203.0.100.100)访问NS-MAC-1。
  7. S2响应其MAC地址(MAC-S2)。Arp响应数据包具有:
    • 目标IP地址=针对服务器的子网IP地址片段(192.0.1.50)
    • 目的地MAC地址= ns-mac-1
  8. S2的响应数据包达到开发-vtep-2。Dev-VTEP-2在其VXLAN映射表中执行查找,并获取目标MAC地址NS-MAC-1的匹配项。开发计划署-VTEP-2现在知道,使用XLAN 9000可以通过SNIP-VTEP-0(203.0.100.100)访问NS-MAC-1。开发-VTEP-2将ARP响应与VXLAN和UDP标头封装,并将生成的数据包发送到NS-VTEP-0(203.0.100.100)的NSS ADC。
  9. Ns-adc在接收数据包时,通过删除vxlan和udp标头来解压数据包。生成的数据包是s2的arp响应。NS-ADC更新它的VXLAN映射表为S2的MAC地址(MAC-S2)与开发-VTEP-2的IP地址(203.0.102.102)为VXLAN 9000。NS-ADC还将其ARP表更新为S2的IP地址(192.0.1.102)与S2的MAC地址(MAP-S2)。

以下是本示例中负载平衡虚拟服务器LBVS的流量:

  1. 客户端cl向ns-adc的LBVS发送请求数据包。请求数据包具有:
    • 源IP地址=客户端cl的IP地址(198.51.100.90)
    • 目的地IP地址=地址的LBVS的IP地址(VIP) = 198.51.110.100
  2. Ns-adc的LBVS接收请求数据包,其负载均衡算法选择数据中心dc2的服务器s2。
  3. NS-ADC处理请求数据包,将其目标IP地址更改为S2的IP地址,并将其源IP地址更改为在NS-ADC上配置的子网IP(剪)地址之一。请求数据包具有:
    • 源IP地址= NS-ADC上的子网IP地址=服务器的代码段(192.0.1.50)
    • 目标IP地址=的IP地址为s2 (192.192.168.1.102)
  4. Ns-adc在其桥接表中找到s2的vxlan映射条目。此条目表明s2可以通过vxlan 9000通过开发-vtep-2访问。
  5. Ns-adc通过使用以下标头封装数据包来准备要通过vxlan 9000发送的数据包:
    • Id (vni)为9000的vxlan标头
    • 标准udp标头,udp校验和设置为0×0000,目标端口设置为4789。
  6. Ns-adc将生成的封装数据包发送到开发-vtep-2。请求数据包具有:
    • 源IP地址=剪断地址= snip-vtep-0 (203.0.100.100)
    • 目标IP地址=开发人员vtep-2的IP地址(203.0.102.102)
  7. 开发-VTEP-2接收UDP数据包并解压UDP标头,从中开发-VTEP-2得知该数据包是与VXLAN相关的数据包。然后,Dev-VTEP-2解压缩VXLAN标头并学习数据包的VXLAN ID。生成的数据包与步骤 3 中的数据包相同。
  8. 开发-vtep-2然后将数据包转发到s2 .输出说明
  9. S2处理请求数据包并将响应发送到ns-adc的snip地址。响应数据包具有:
    • 源IP地址=的IP地址为s2 (192.192.168.1.102)
    • 目标IP地址= NS-ADC上的子网IP地址=服务器的代码段(192.0.1.50)
  10. Dev-VTEP-2封装响应数据包的方式与NS-ADC在步骤4和5中封装请求数据包的方式相同。然后,开发-VTEP-2将封装的UDP数据包发送到NS-ADC的服务器剪断地址片段(192.0.1.50)。
  11. NS-ADC收到封装的UDP数据包后,通过删除UDP和VXLAN标头来解除数据包的方式与Dev-VTEP-2在步骤7中解除数据包的方式相同。生成的数据包与步骤 9 相同的响应数据包。
  12. 然后,ns-adc使用会话表进行负载平衡虚拟服务器lbvs,并将响应数据包转发到客户端cl。响应数据包具有:
    • 源IP地址=客户端cl的IP地址(198.51.100.90)
    • 目的地IP地址= LBVS的IP地址(vip) (198.51.110.100)

配置vxlan时要注意的事项

在Citrix ADC上配置VXLAN之前,请考虑以下几点:

  • 在Citrix ADC上最多可配置2048 VXLAN。

  • 群集中不支持vxlan。

  • 无法为每个VXLAN配置链接本地IPv6地址。

  • Citrix ADC不支持形成多播组的Internet组管理协议(IGMP)协议。Citrix ADC依靠其上游路由器的 IGMP 协议来加入共享公用多播组 IP 地址的多播组广播组。您可以在创建 VXLAN 网桥表条目时指定多播组 IP 地址,但必须在上游路由器上配置多播组。Citrix ADC 通过第 3 层向此 VXLAN 的多播组 IP 地址发送广播、多播和未知单播帧。然后,上游路由器将数据包转发到多播组中的所有 VTEP。

  • Vxlan封装为每个数据包增加了50字节的开销:

    外部以太网头(14)+ UDP头(8)+ IP头(20)+ VXLAN头(8)= 50字节

    为避免碎片和性能降低,必须调整VXLAN通路中所有网络设备的MTU设置,包括VXLAN VTEP设备,以处理VXLAN数据包中50字的节开销。

    重要提示:Citrix ADC VPX虚拟设备,Citrix ADC SDX设备和Citrix ADC MPX 15000/17000设备不支持巨型帧。这些设备支持仅1500字节的MTU大小,无法进行调整以处理VXLAN数据包的50字节开销。如果其中一个设备位于VXLAN通路中或充当VXLAN VTEP设备,则VXLAN通信可能会分散或性能下降。

  • 在Citrix ADC SDX设备上,VLAN筛选不适用于VXLAN数据包。

  • 无法在vxlan上设置mtu值。

  • 您不能将接口绑定到vxlan。

配置步骤

在Citrix ADC设备上配置VXLAN包含以下任务。

  • 添加vxlan实体。创建由正整数(也称为vxlan网络标识符(vni)唯一标识的vxlan实体.输出说明在此步骤中,您还可以指定运行vxlan协议的远程vtep的目标udp端口。默认情况下,vxlan实体的目标udp端口参数设置为4789。此udp端口设置必须与此vxlan的所有远程vtep上的设置相匹配。您还可以将vlan绑定到此vxlan。所有绑定vlan的流量(包括广播,多播,未知的单个动态)都允许通过此vxlan进行。如果没有VLAN绑定到VXLAN, Citrix ADC将允许此VXLAN上不属于任何其他VLAN的所有VLAN的流量。
  • 将本地vtep IP地址绑定到vxlan实体。将配置的snip地址之一绑定到vxlan以获取传出vxlan数据包。
  • 添加可桥接条目。添加一个桥接条目,指定要创建的vxlan的vxlan id和远程vtep IP地址。
  • (可选)将不同的要素实体绑定到配置的vxlan。VXLAN的功能与VLAN类似,支持VLAN作为分类参数的大多数Citrix ADC功能也支持VXLAN。这些功能包括一个可选的vxlan参数设置,该设置指定vxlan vni。
  • (可选)显示vxlan映射表。显示VXLAN映射表,其中包括远程主机MAC地址到特定VXLAN的VTEP IP地址的映射条目。换句话说,vxlan映射指出可以通过特定vxlan上的vtep访问主机。Citrix ADC从接收到的 VXLAN 数据包中学习 VXLAN 映射并更新其映射表。Citrix ADC 使用 VXLAN 映射表查找第 2 层帧的目标 MAC 地址。如果 VXLAN 表中存在此 MAC 地址的条目,Citrix ADC 会使用 VXLAN 协议将第 3 层上的第 2 帧发送到 VXLAN 映射条目中指定的映射 VTEP IP 地址。

CLI过程

要使用cli添加vxlan实体,请执行以下操作:

在命令提示符下键入

  • 添加vxlan<标识>
  • 显示vxlan<标识>

要使用cli将本地vtep IP地址绑定到vxlan,请执行以下操作:

在命令提示符下键入

  • 绑定vxlan<标识> - - -SrcIP< IPaddress >
  • 显示vxlan<标识>

使用cli添加可桥接的方法是:

在命令提示符下键入

  • 添加bridgetable-mac< macaddress > - - -vxlan<标识> - - -vtep< IPaddress >
  • 显示bridgetable

要使用命令行显示vxlan转发表,请执行以下操作:

在命令提示符下,键入:

  • 显示bridgetable

GUI程序

要使用GUI添加vxlan实体并绑定本地vtep IP地址,请执行以下操作:

导航到”系统“>”网络“>”VXLAN,然后添加新的vxlan实体或修改现有的vxlan实体。

要使用GUI添加可桥接:

导航到”系统“>”网络" > "网桥表,在添加或修改vxlan网桥表条目时设置以下参数:

  • MAC
  • VTEP
  • VXLAN编号

要使用GUI显示vxlan转发表,请执行以下操作:

导航到”系统“>”网络" > "网桥表”。

使用实例> add vxlan 9000 Done > bind vxlan 9000 -srcIP 203.0.100.100 Done > add bridgetable -mac 00:00:00:00:00 00:00 -vxlan 9000 -vtep 203.0.101.101 Done > add bridgetable -mac 00:00:00:00:00 00:00 -vxlan 9000 -vtep 203.0.102.102 Done

VXLAN上IPv6动态路由协议的支持

Citrix ADC设备支持VXLAN的IPv6动态路由协议。您可以通过VTYSH命令行在VXLAN上配置各种IPv6动态路由协议(例如OSPFv3, RIPng,边界网关协议)。VXLAN命令集中添加了一个选项IPv6动态路由协议,用于启用或禁用VXLAN上的IPv6动态路由协议。在VXLAN上启用IPv6动态路由协议后,需要使用VTYSH命令行在VXLAN上启动与IPv6动态路由协议相关的进程。

要使用CLI在VXLAN上启用IPv6动态路由协议,请执行以下操作:

  • 添加vxlan< ID > [-ipv6DynamicRouting启用|禁用)]
  • 显示vxlan
在以下配置示例中,以创建VXLAN-9000并使能IPv6动态路由协议为例。然后在VXLAN上使用VTYSH命令行启动IPv6 OSPF协议进程。> add vxlan 9000 -ipv6DynamicRouting ENABLED Done > bind vxlan 9000 -srcIP 203.0.100.100 Done > add bridgetable -mac 00:00: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来隔离它们。在Citrix ADC设备(即云中的CloudBridge连接器端点)上,您可以配置VXLAN-VLAN映射,将企业的VLAN链接到云中的唯一VXLAN。VXLAN支持VLAN标记,用于将企业的多个VLAN从CloudBridge连接器扩展到同一VXLAN。

执行以下任务将多个企业的vlan扩展到云:

  1. 创建vxlan-vlan映射。
  2. 将VXLAN-VLAN映射绑定到云上Citrix ADC设备上基于网桥或基于PBR的CloudBridge连接器隧道配置。
  3. (可选)在vxlan配置中启用vlan标记。

CLI过程

要使用cli添加vxlan-vlan映射,请执行以下操作:

  • 添加vxlanVlanMap<名称>
  • 显示vxlanVlanMap<名称>

要使用cli将vxlan和vlan绑定到vxlan - vlan映射,请执行以下操作:

  • 绑定vxlanVlanMap<名称> [-vxlan< positive_integer > - - -vlan< int (int) >…]
  • 显示vxlanVlanMap<名称>

使用CLI将VXLAN-VLAN映射绑定到基于网桥的CloudBridge连接器隧道:

在命令提示符下,键入以下命令集之一。

如果添加新的网桥:

  • 添加netbridge<名称> [-vxlanVlanMap<字符串>)
  • 显示netbridge<名称>

如果重新配置现有网桥:

  • 设置netbridge<名称> [-vxlanVlanMap<字符串>)
  • 显示netbridge<名称>

使用CLI将VXLAN-VLAN映射绑定到基于策略路由的CloudBridge连接器隧道:

在命令提示符下,键入以下命令集之一。

如果添加一个新的pbr:

  • 添加pbr<名称>允许(-IP隧道< ipTunnelName > [-vxlanvLanMap<名称>)
  • 显示pbr<名称>

如果重新配置现有pbr:

  • 设置pbr<名称>允许(-ipTunnel< ipTunnelName > [-vxlanvLanMap])
  • 显示pbr<名称>

使用cli将vlan标记包含在与vxlan相关的数据包中:

在命令提示符下,键入以下命令集之一。

如果添加新的vxlan:

  • 添加vxlan< vnid > - - -vlanTag启用|禁用
  • 显示vxlan< vnid >

如果重新配置现有vxlan:

  • 设置vxlan< vnid > - - -vlanTag启用|禁用
  • 显示vxlan< vnid >

GUI程序

要使用GUI添加vxlan-vlan映射,请执行以下操作:

导航到”系统“>”网络“>”Vxlan vlan映射,添加vxlan vlan映射。

使用GUI将VXLAN-VLAN映射绑定到基于网桥的CloudBridge连接器隧道:

导航到”系统“>”CloudBridge连接器”>”网桥桥,在添加新网桥或重新配置现有网桥时,从VXLAN VLAN下拉列表中选择vxlan-vlan映射。

使用GUI界面将VXLAN-VLAN映射绑定到基于策略路由的CloudBridge连接器隧道:

导航到”系统“>”网络“>”为PBRs,在“基于策略的路由(PBR)”选项卡上,在添加新策略路由或重新配置现有策略路由时,从VXLAN VLAN VLAN下拉列表中选择VXLAN-VLAN映射。

要使用GUI将vlan标记包含在与vxlan相关的数据包中:

导航到系统>网络>VXLAN,在添加新vxlan时启用内部vlan标记,或重新配置现有vxlan。

>add 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-DC2 - cloud 8000 -vlan 3 4 Done > set pbr pbr -CBC-DC-1-CLOUD -vxlanVlanMap VXLANVLAN-DC1 Done > set pbr pbr - cbr - dc -2- cloud ALLOW -ipTunnel CBC-DC-2-CLOUD -vxlanVlanMap VXLANVLAN-DC2 Done