了解 VXLAN
虚拟可扩展 LAN 协议 (VXLAN) 技术允许网络支持更多 VLAN。根据 IEEE 802.1Q 标准,传统 VLAN 标识符的长为 12 位—此命名将网络限制为 4094 个 VLAN。VXLAN 协议通过使用更长的逻辑网络标识符来克服这一限制,该标识符允许更多 VLAN,从而为通常包含许多虚拟机的云等大型网络提供更大的逻辑网络隔离。
VXLAN 的优势
VXLAN 技术允许您对网络进行分段(就像 VLAN 一样),但它提供 VLAN 无法提供的优势。以下是使用 VXLAN 的最重要优势:
理论上,您可以在管理域中创建多达 1600 万个 VXLAN(而非瞻博网络设备上的 4094 个 VLAN)。
MX 系列路由器和 EX9200 交换机可支持多达 32,000 个 VXLAN、32,000 个组播组和 8000 个虚拟隧道端点 (VTEP)。这意味着基于 MX 系列路由器的 VXLAN 能够以云构建商为支持大量租户所需的规模提供网络分段。
QFX10000 系列交换机支持 4000 个 VXLAN 和 2000 个远程 VTEP。
QFX5100、QFX5110、QFX5200、QFX5210 和 EX4600 交换机支持 4000 个 VXLAN、4000 个组播组和 2000 个远程 VTEP。
EX4300-48MP 交换机支持 4000 个 VXLAN。
您可以通过第 3 层网络上的隧道传输流量,从而在单独的第 2 层域中的服务器之间迁移虚拟机。借助此功能,您可以在数据中心内部或数据中心之间动态分配资源,而不会受到第 2 层边界的约束,也不会被迫创建大型或地理位置分散的第 2 层域。
使用 VXLAN 创建通过第 3 层网络连接的小型第 2 层域意味着您不需要使用生成树协议 (STP) 来融合拓扑结构,而是可以在第 3 层网络中使用更强大的路由协议。在没有 STP 的情况下,您的链路均不会受阻,这意味着您可以从购买的所有端口中获得全部价值。使用路由协议连接您的第 2 层域,您还可以均衡流量负载,以确保充分利用可用带宽。鉴于东西向流量经常在数据中心内部或数据中心之间流动,最大限度提高该流量的网络性能非常重要。
为什么 在数据中心使用叠加网络? 视频简要概述了使用 VXLAN 的优势。
VXLAN 的工作原理是什么?
VXLAN 通常被描述为一种叠加技术,因为它允许您通过在包含 IP 地址的 VXLAN 数据包中封装(通过隧道传输)以太网帧,在中间的第 3 层网络上扩展第 2 层连接。支持 VXLAN 的设备称为 虚拟隧道端点 (VTEP),可以是终端主机、网络交换机或路由器。VTEP 可封装 VXLAN 流量,并在流量离开 VXLAN 隧道时对该流量进行解封装。要封装以太网帧,VTEP 会添加多个字段,包括以下字段:
外部介质访问控制 (MAC) 目标地址(隧道端点 VTEP 的 MAC 地址)
外部 MAC 源地址(隧道源 VTEP 的 MAC 地址)
外部 IP 目标地址(隧道端点 VTEP 的 IP 地址)
外部 IP 源地址(隧道源 VTEP 的 IP 地址)
外部 UDP 报头
一个 VXLAN 报头,其中包含一个 24 位字段(称为 VXLAN 网络标识符 (VNI),用于唯一标识 VXLAN。VNI 类似于 VLAN ID,但拥有 24 个位,允许您创建比 VLAN 更多的 VXLAN。
由于 VXLAN 会将 50 到 54 字节的额外报头信息添加到原始以太网帧,因此您可能需要增加底层网络的 MTU。在这种情况下,请配置参与 VXLAN 网络的物理接口的 MTU,而不是逻辑 VTEP 源接口的 MTU,该 MTU 将被忽略。
图 1 显示了 VXLAN 数据包格式。

VXLAN 实施方法
Junos OS 支持在以下环境中实施 VXLAN:
手动 VXLAN — 在此环境中,瞻博网络设备充当充当 VTEP 的下游设备的传输设备,或为托管虚拟机 (VM) 的下游服务器提供连接的网关,这些服务器通过第 3 层网络进行通信。在此环境中,未部署软件定义网络 (SDN) 控制器。
注意:QFX10000 交换机不支持手动 VXLAN。
OVSDB-VXLAN — 在此环境中,SDN 控制器使用 Open vSwitch 数据库 (OVSDB) 管理协议提供一种方法,使支持 OVSDB 的控制器(如 VMware NSX 或瞻博网络 Contrail 控制器)与瞻博网络设备可以通信。
EVPN-VXLAN — 在此环境中,以太网 VPN (EVPN) 是一种控制平面技术,可将主机(物理服务器和虚拟机)放置在网络中的任何位置,并保持与同一逻辑第 2 层叠加网络的连接,而 VXLAN 则为第 2 层叠加网络创建数据平面。
使用 QFX5100、QFX5110、QFX5120、QFX5200、QFX5210、EX4300-48MP 和带 VXLAN 的 EX4600 交换机
您可以将交换机配置为执行以下所有角色:
(除 EX4300-48MP 以外的所有交换机)在没有 SDN 控制器的环境中,充当作为 VTEP 的下游主机的中转第 3 层交换机。在此配置中,无需在交换机上配置任何 VXLAN 功能。您需要配置 IGMP 和 PIM,以便交换机可以为 VXLAN 组播组形成组播树。(有关更多信息 ,请参阅手动 VXLAN 需要 PIM 。)
(除 EX4300-48MP 以外的所有交换机)在有或没有 SDN 控制器的环境中,可充当同一数据中心内或数据中心之间的虚拟化网络和非虚拟化网络之间的第 2 层网关。例如,您可以使用交换机将使用 VXLAN 的网络连接到一个使用 VLAN 的网络。
(EX4300-48MP 交换机)可作为园区网络中虚拟化网络和非虚拟化网络之间的第 2 层网关。例如,您可以使用交换机将使用 VXLAN 的网络连接到一个使用 VLAN 的网络。
(除 EX4300-48MP 以外的所有交换机)充当相同或不同数据中心的虚拟化网络之间的第 2 层网关,并允许虚拟机在这些网络和数据中心之间移动 (VMotion)。例如,如果您希望在两个不同网络的设备之间实现 VMotion,则可以在这两个网络中创建同一 VLAN,并将两个设备都放在该 VLAN 上。连接到这些设备的交换机(作为 VTEP)可将该 VLAN 映射到相同的 VXLAN,然后可以在两个网络之间路由 VXLAN 流量。
(带 EVPN-VXLAN 的 QFX5110 和 QFX5120 交换机)可作为第 3 层网关,在同一数据中心的不同 VXLAN 之间路由流量。
(带 EVPN-VXLAN 的 QFX5110 和 QFX5120 交换机)可作为第 3 层网关,使用标准路由协议或虚拟专用 LAN 服务 (VPLS) 隧道通过 WAN 或互联网在不同数据中心的不同 VXLAN 之间路由流量。
如果您希望 QFX5110 或 QFX5120 交换机成为 EVPN-VXLAN 环境中的第 3 层 VXLAN 网关,则必须配置集成路由和桥接 (IRB) 接口来连接 VXLAN,就像您希望在 VLAN 之间路由流量一样。
由于附加报头会增加 50 到 54 个字节,因此您可能需要增加 VTEP 上的 MTU 以容纳更大的数据包。例如,如果交换机使用 1514 字节的默认 MTU 值,而您希望通过 VXLAN 转发 1500 字节的数据包,则需要增加 MTU,以便应对由附加报头导致的数据包大小增加。
更改 QFX5100、QFX5110、QFX5200、QFX5210 和 EX4600 交换机上的 UDP 端口
从 QFX5100 交换机上的 Junos OS 14.1X53-D25 版开始 QFX5110 和 QFX5200 交换机上的 Junos OS 15.1X53-D210、QFX5210 交换机上的 Junos OS 18.1R1 和 EX4600 交换机上的 Junos OS 18.2R1 版,您可以将 UDP 端口配置为 VXLAN 流量的目标端口。要将 VXLAN 目标端口配置为默认的 4789 UDP 端口以外的端口,请输入以下语句:
set protocols l2-learning destination-udp-port port-number
您配置的端口将用于交换机上配置的所有 VXLAN。
如果在 VXLAN 中的一台交换机上进行更改,则必须在终止交换机上配置的 VXLAN 的所有设备上进行相同的更改。如果不这样做,交换机上配置的所有 VXLAN 的流量都将中断。更改 UDP 端口时,之前学习的远程 VTEP 和远程 MAC 将丢失,VXLAN 流量将中断,直到交换机重新学习远程 VTEP 和远程 MAC。
控制 QFX5100、QFX5110、QFX5200、QFX5210 和 EX4600 交换机上的中转组播流量
充当 VTEP 的交换机收到广播、未知单播或组播数据包时,对数据包请执行以下操作:
它会对数据包进行解封装,并将其交付到本地连接的主机。
然后,它会再次添加 VXLAN 封装,并将数据包发送至 VXLAN 中的其他 VTEP。
这些操作由用作 VXLAN 隧道地址的环路接口执行,因此可能会对 VTEP 可用的带宽产生负面影响。从适用于 QFX5100 交换机的 Junos OS 14.1X53-D30 版开始,QFX5110 和 QFX5200 交换机的 Junos OS 15.1X53-D210 版 QFX5210 交换机的 Junos OS 18.1R1 版和 EX4600 交换机的 Junos OS 18.2R1 版(如果您知道 VXLAN 中的其他 VTEP 中没有需要特定组播组的流量的组播接收器), 输入以下语句,即可减少环路接口上的处理负载:
set protocols l2-learning disable-vxlan-multicast-transit vxlan-multicast-group multicast-group
在这种情况下,不会转发指定组的流量,但将转发所有其他组播流量。如果不想将任何组播流量转发到 VXLAN 中的其他 VTEP,请输入以下语句:
set protocols l2-learning disable-vxlan-multicast-transit vxlan-multicast-group all
使用 MX 系列路由器、EX9200 交换机或 QFX10000 交换机作为 VTEP
您可以将 MX 系列路由器、EX9200 交换机或 QFX10000 交换机配置为 VTEP 并执行以下所有角色:
可作为同一数据中心内的虚拟化网络和非虚拟化网络之间或数据中心之间的第 2 层网关。例如,您可以使用 MX 系列路由器将使用 VXLAN 的网络连接到一个使用 VLAN 的网络。
充当相同或不同数据中心的虚拟化网络之间的第 2 层网关,并允许虚拟机在这些网络和数据中心之间移动 (VMotion)。
可作为第 3 层网关,在同一数据中心的不同 VXLAN 之间路由流量。
可作为第 3 层网关,使用标准路由协议或虚拟专用 LAN 服务 (VPLS) 隧道通过 WAN 或互联网在不同数据中心的不同 VXLAN 之间路由流量。
如果您希望本部分介绍的一台设备成为 VXLAN 第 3 层网关,则必须配置集成路由和桥接 (IRB) 接口来连接 VXLAN,就像您希望在 VLAN 之间路由流量一样。
手动 VXLAN 需要 PIM
在使用控制器(如 VMware NSX 或瞻博网络 Contrail 控制器)的环境中,您可以在瞻博网络设备上配置 VXLAN。控制器还提供控制平面,VTEP 使用该平面通告其可访问性并了解其他 VTEP 的可访问性。您还可以在瞻博网络设备上手动创建 VXLAN,而非使用控制器。如果使用此方法,还必须在 VTEP 上配置协议无关组播 (PIM),以便在 VTEP 之间创建 VXLAN 隧道。
您还必须将给定 VXLAN 中的每个 VTEP 配置为同一组播组的成员。(如果可能,您应该为每个 VXLAN 分配一个不同的组播组地址,尽管这不是必需。多个 VXLAN 可以共享同一组播组。)然后,VTEP 可以将从所连接主机收到的 ARP 请求转发到组播组。组中的其他 VTEP 对 VXLAN 信息进行解封装,(假设它们是同一 VXLAN 的成员),它们会将 ARP 请求转发到其连接的主机。当目标主机收到 ARP 请求时,会使用其 MAC 地址进行响应,并且其 VTEP 会将此 ARP 回复转发回源 VTEP。通过此过程,VTEP 可以学习 VXLAN 中其他 VTEP 的 IP 地址,以及连接到其他 VTEP 的主机的 MAC 地址。
组播组和树还用于在 VTEP 之间转发广播、未知单播和组播 (BUM) 流量。这可以防止 BUM 流量在 VXLAN 之外被不必要的泛洪。
通过 VXLAN 隧道转发的组播流量仅发送至 VXLAN 中的远程 VTEP。也就是说,封装 VTEP 不会根据组播树复制和发送数据包的副本,只会将收到的组播数据包转发到远程 VTEP。远程 VTEP 对封装组播数据包进行解封装,并将其转发到相应的第 2 层接口。
均衡 VXLAN 流量负载
形成 VXLAN 隧道的第 3 层路由在默认情况下会按数据包进行负载均衡,这意味着,如果有到远程 VTEP 的 ECMP 路径,将实施负载平衡。这与常规路由行为不同,常规路由不会在默认情况下按数据包进行负载均衡。(默认情况下,常规路由会根据前缀进行负载均衡。)
UDP 报头中的源端口字段用于在第 3 层网络中实现 VXLAN 流量的 ECMP 负载平衡。此字段设置为内部数据包字段的散列值,从而产生一个变量,ECMP 可用于区分隧道(流)。
基于流的 ECMP 通常使用的其他字段均不适合与 VXLAN 配合使用。相同的两个 VTEP 之间的所有隧道都有相同的外部源和目标 IP 地址,并且 UDP 目标端口按定义设置为端口 4789。因此,这些字段均不足以为 ECMP 区分流。
使 QFX5120 交换机能够在面向核心的第 3 层标记接口和 IRB 接口上隧道流量
本节仅适用于运行 Junos OS 18.4R1、18.4R2、18.4R2-S1 至 18.4R2-S3、19.1R1、19.1R2、19.1R2、19.2Rx 和 19.3Rx 的 QFX5120 交换机。
当 QFX5120 交换机尝试在面向核心的第 3 层标记接口或 IRB 接口上建立流量隧道时,交换机会丢弃数据包。为避免此问题,您可以在第 3 层标记接口或 IRB 接口上配置基于过滤器的简单两年期防火墙。
QFX5120 交换机最多支持 256 个基于两年期过滤器的防火墙。
例如:
set interfaces et-0/0/3 unit 0 family inet filter input vxlan100 set firewall family inet filter vxlan100 term 1 from destination-address 192.168.0.1/24 then accept set firewall family inet filter vxlan100 term 2 then routing-instance route1
条款 1 匹配并接受目的地为 QFX5210 交换机的流量,该流量由分配给交换机环路接口的源 VTEP IP 地址 (192.168.0.1/24) 标识。对于术语 1,请注意,在指定操作时,您也可以选择对流量进行计数,而不是接受流量。
术语 2 匹配所有其他数据流量,并将其转发到配置了接口 et-0/0/3 的路由实例(路由 1)。
在此示例中,请注意路由实例 route1 引用接口 et-0/0/3。因此,您必须包含命令 set firewall family inet filter vxlan100 term 2 then routing-instance route1
。如果没有此命令,防火墙过滤器将无法正常工作。
通过 VXLAN 使用 ping 和 traceroute
在 QFX5100 和 QFX5110 交换机上,可以通过添加参数和各种选项,使用 ping
和 traceroute
命令对通过 VXLAN 隧道的 overlay
流量进行故障排除。您可以使用这些选项强制 ping
或 traceroute
数据包遵循与通过 VXLAN 隧道的数据包相同的路径。换句话说,可以使底层数据包(ping
) traceroute
采用与叠加数据包(数据流量)相同的路由。有关更多信息 ,请参阅 ping 叠加 和 traceroute 叠加 。
支持的 VXLAN 标准
定义 VXLAN 标准的 RFC 和互联网草案:
RFC 7348, 虚拟可扩展局域网 (VXLAN):在 3 层网络上叠加虚拟化第 2 层网络的框架
互联网草案 draft-ietf-nvo3-vxlan-gpe, VXLAN 通用协议扩展