关于 VXLAN 接口
VXLAN 提供与 VLAN 相同的以太网第 2 层网络服务,但其可扩展性和灵活性更为出色。与 VLAN 相比,VXLAN 提供以下优势:
-
可在整个数据中心中灵活部署多租户网段。
-
更高的可扩展性可提供更多的第 2 层网段,最多可达 1600 万个 VXLAN 网段。
本节介绍 VXLAN 如何工作。有关 VXLAN 的详细信息,请参阅 RFC 7348。有关 Geneve 的详细信息,请参阅 RFC 8926。
封装
ASA 支持两种类型的 VXLAN 封装:
-
VXLAN(所有型号)- VXLAN 使用 MAC Address-in-User 数据报协议 (MAC-in-UDP) 的封装方式。原始第 2 层帧已添加 VXLAN 报头,然后放入 UDP-IP 数据包中。
-
Geneve(仅限 ASA virtual)- Geneve 具有不限于 MAC 地址的灵活内部报头。要在 Amazon Web 服务 (AWS) 网关负载均衡器和设备之间透明路由数据包,以及发送额外信息,则需要使用 Geneve 封装。
VXLAN 隧道端点
VXLAN 隧道终端 (VTEP) 设备执行 VXLAN 封装和解封。每个 VTEP 有两种接口类型:一个或多个虚拟接口称为 VXLAN 网络标识符 (VNI) 接口,您可以向其应用安全策略;以及称为 VTEP 源接口的常规接口,用于为 VTEP 之间的 VNI 接口建立隧道。VTEP 源接口连接到传输 IP 网络,进行 VTEP 至 VTEP 通信。
下图显示第 3 层网络范围内用作 VTEP 的两个 ASA 和虚拟服务器 2,扩展了站点之间的 VNI 1、2 和 3 网络。ASA 可用作 VXLAN 与非 VXLAN 网络之间的网桥或网关。
VTEP 之间的底层 IP 网络与 VXLAN 重叠无关。封装的数据包根据外部 IP 地址报头路由,该报头具有初始 VTEP(用作源 IP 地址)和终止 VTEP(作为目标 IP 地址)。对于 VXLAN 封装:当远程 VTEP 未知时,目标 IP 地址可以是组播组。在使用 Geneve 时,ASA 仅支持静态对等体。默认情况下, VXLAN 的目标端口是 UDP 端口 4789(用户可配置)。Geneve 的目的端口是 6081。
VTEP 源接口
VTEP 源接口是一个计划要与所有 VNI 接口相关联的常规 ASA 接口(物理EtherChannel 接口,甚至 VLAN 接口)。每个 ASA/安全情景可以配置一个 VTEP 源接口。 由于只能配置一个 VTEP 源接口,因此不能在同一设备上同时配置 VXLAN 和 Geneve 接口。AWS上的集群有一个例外,您可以在其中有两个 VTEP 源接口:一个 VXLAN 接口用于集群控制链路,一个 Geneve 接口可用于 AWS 网关负载均衡器。
尽管并未将 VTEP 源接口限制为全部用于传输 VXLAN 流量,但是可以实现该用途。如果需要,可以使用该接口传输常规流量,并将一个安全策略应用于传输此类流量的该接口。但是,对于 VXLAN 流量,必须对 VNI 接口应用所有安全策略。VTEP 接口仅作为物理端口。
在透明防火墙模式下,VTEP 源接口不是 BVI 的一部分,并且类似于对待管理接口的方式,不为该源接口配置 IP 地址。
VNI 接口
VNI 接口类似于 VLAN 接口:它们是虚拟接口,通过使用标记,实现网络流量在给定物理接口上的分离。将安全策略直接应用于每个 VNI 接口。
您智能添加一个 VTEP 接口,并且所有 VNI 接口都与同一 VTEP 接口相关联。 AWS上的 ASA Virtual 集群例外。对于 AWS 集群,您可以在其中有两个 VTEP 源接口:一个 VXLAN 接口用于集群控制链路,一个 Geneve 接口可用于 AWS 网关负载均衡器。
VXLAN 数据包处理
VXLAN
进出 VTEP 源接口的流量取决于 VXLAN 处理,特别是封装或解封。
封装处理包括以下任务:
-
VTEP 源接口通过 VXLAN 报头封装内部 MAC 帧。
-
UDP 校验和字段设置为零。
-
外部帧源 IP 设置为 VTEP 接口 IP。
-
外部帧目标 IP 通过远程 VTEP IP 查找确定。
解封;ASA 仅在以下条件下解封 VXLAN 数据包:
-
VXLAN 数据包是目标端口设置为 4789(用户可配置该值)的 UDP 数据包。
-
入口接口是 VTEP 源接口。
-
入口接口 IP 地址与目标 IP 地址相同。
-
VXLAN 数据包格式符合标准。
Geneve
进出 VTEP 源接口的流量取决于 Geneve 处理,特别是封装或解封。
封装处理包括以下任务:
-
VTEP 源接口通过 Geneve 报头封装内部 MAC 帧。
-
UDP 校验和字段设置为零。
-
外部帧源 IP 设置为 VTEP 接口 IP。
-
外部帧目标 IP 会被设置为您配置的对等体 IP 地址。
解封;ASA 仅在以下条件下解封 Geneve 数据包:
-
VXLAN 数据包是目标端口设置为 6081(用户可配置该值)的 UDP 数据包。
-
入口接口是 VTEP 源接口。
-
入口接口 IP 地址与目标 IP 地址相同。
-
Geneve 数据包格式符合标准。
对等体 VTEP
ASA 向对等体 VTEP 后的设备发送数据包时,ASA 需要两条重要信息:
-
远程设备的目标 MAC 地址
-
对等体 VTEP 的目标 IP 地址
ASA 维护目标 MAC 地址到 VNI 接口的远程 VTEP IP 地址的映射。
VXLAN 对等体
ASA 可以通过两种方式找到这些信息:
-
单个对等体 VTEP IP 地址可以在 ASA 上静态配置。
无法手动定义多个对等体。
然后,ASA 设备将已封装 VXLAN 的 ARP 广播发送到 VTEP,以获取终端节点 MAC 地址。
-
可以在每个 VNI 接口(或者总的来说,在 VTEP 上)配置组播组。
注
Geneve 不支持此选项。
ASA 将通过 VTEP 源接口在 IP 组播数据包内发送一个 VXLAN 封装的 ARP 广播数据包。对此 ARP 请求的响应使 ASA 可以获悉远程 VTEP IP 地址以及远程结束节点的目标 MAC 地址。
Geneve 对等体
ASA virtual 仅支持静态定义的对等设备。您可以在 AWS 网关负载均衡器上定义 ASA virtual 对等体 IP 地址。由于 ASA virtual 绝不会向网关负载均衡器发起流量,因此您也不必在 ASA virtual 上指定网关负载均衡器 IP 地址;它会在收到 Geneve 流量时获知对等体 IP 地址。Geneve 不支持组播组。
VXLAN 使用案例
本部分介绍在 ASA 上实施 VXLAN 的使用案例。
VXLAN 网桥或网关概述
每个 ASA VTEP 都可作为终端节点(例如 VM、服务器和 PC)和 VXLAN 重叠网络之间的网桥或网关。对于通过 VTEP 源接口借助 VXLAN 封装接收的传入帧,ASA 去掉 VXLAN 报头,并基于内部以太网帧的目标 MAC 地址,将传入帧转发到连接非 VXLAN 网络的物理接口。
ASA 始终会处理 VXLAN 数据包;而不仅仅是在两个其他 VTEP 之间转发未处理的 VXLAN 数据包。
VXLAN 网桥
在使用网桥组(透明防火墙模式或可选的路由模式)时,ASA 可以用作 VXLAN 网段与本地网段之间的 VXLAN 网桥(远程),其中二者均位于同一网络中。在这种情况下,网桥组的一个成员是常规接口,而另一个成员是 VNI 接口。
VXLAN 网关(路由模式)
ASA 可充当 VXLAN 和非 VXLAN 域之间的路由器,用于连接不同网络上的设备。
VXLAN 域之间的路由器
借助通过 VXLAN 扩展的第 2 层域,虚拟机可以指向一个 ASA 作为其网关,即使 ASA 位于不同机架中,甚至当 ASA 位于第 3 层网络上很远的位置也是如此。
请参阅有关此场景的以下注释:
-
对于从 VM3 到 VM1 的数据包,目标 MAC 地址为 ASA MAC 地址,因为 ASA 是默认网关。
-
虚拟服务器 2 上的 VTEP 源接口接收来自 VM3 的数据包,然后使用 VNI 3 的 VXLAN 标签封装数据包,并将数据包发送到 ASA。
-
当 ASA 接收数据包时,会解封数据包以获得内部帧。
-
ASA 使用内部帧进行路由查找,然后发现目标位于 VNI 2 上。如果尚不具有 VM1 的映射,ASA 会在 VNI 2 上的组播组 IP 上发送封装的 ARP 广播。
注
ASA 必须使用动态 VTEP 对等体发现,因为 ASA 在此场景下有多个 VTEP 对等体。
-
ASA 再次使用 VXLAN 标签为 VNI 2 封装数据包,并且将数据包发送到虚拟服务器 1。在封装之前,ASA 将内部帧目标 MAC 地址更改为 VM1 的 MAC 地址(ASA 可能需要组播封装的 ARP,以获取 VM1 MAC 地址)。
-
当虚拟服务器 1 接收 VXLAN 数据包时,该虚拟服务器会解封数据包并向 VM1 提供内部帧。
AWS 网关负载均衡器和 Geneve 单臂代理
注 |
这是 Geneve 接口当前唯一支持的使用案例。 |
AWS 网关负载均衡器结合了透明网络网关和按需分配流量和扩展虚拟设备的负载均衡器。ASA virtual 支持具有分布式数据平面的网关负载均衡器集中控制平面(网关负载均衡器终端)。下图显示了从网关负载均衡器终端转发到网关负载均衡器的流量。网关负载均衡器会在多个流量之间进行均衡 ,这些流量在丢弃流量或将其发送回网关负载均衡器之前对其进行检查(掉头流量)。ASA virtual然后,网关负载均衡器会将流量发送回网关负载均衡器终端和目的地。
Azure 网关负载均衡器和配对代理
在 Azure 服务链中, ASA virtual充当可以拦截互联网和客户服务之间的数据包的透明网关。 ASA virtual 通过已配对代理中的 VXLAN 网段在单个 NIC 上定义外部接口和内部接口。
下图显示了从外部 VXLAN 网段上的公共网关负载均衡器转发到 Azure 门户负载均衡器的流量。网关负载均衡器会在多个 ASA virtual流量之间进行均衡 ,这些流量在丢弃流量或将其发送回在内部 VXLAN 部分的网关负载均衡器之前对其进行检查。然后,Azure 网关负载均衡器会将流量发送回公共网关负载均衡器和目的地。