1.3. BGP 广告和流量重定向
在使用 Red Hat OpenStack Platform (RHOSP)动态路由的部署中,使用公告的路由到虚拟机、负载均衡器和浮动 IP (FIP)的网络流量流。在流量到达节点后,OVN BGP 代理添加 IP 规则、路由和 OVS 流规则,以使用 Red Hat Enterprise Linux (RHEL)内核网络将流量重定向到 OVS 提供程序网桥(br-ex
)。
广告网络路由的过程从 OVN BGP 代理触发自由范围路由(FRRouting 或 FRR)来公告和撤回直接连接的路由。OVN BGP 代理执行这些步骤来正确配置 FRR,以确保每当 IP 地址添加到 bgp-nic
接口时公告它们:
FRR 启动 VTY shell 以连接到 FRR 套接字:
$ vtysh --vty_socket -c <command_file>
VTY shell 通过包含以下内容的文件:
LEAK_VRF_TEMPLATE = ''' router bgp {{ bgp_as }} address-family ipv4 unicast import vrf {{ vrf_name }} exit-address-family address-family ipv6 unicast import vrf {{ vrf_name }} exit-address-family router bgp {{ bgp_as }} vrf {{ vrf_name }} bgp router-id {{ bgp_router_id }} address-family ipv4 unicast redistribute connected exit-address-family address-family ipv6 unicast redistribute connected exit-address-family ...
VTY shell 通过的命令,执行以下操作:
-
默认情况下,创建一个名为
bgp_vrf
的 VRF。 将 dummy 接口类型与 VRF 关联。
默认情况下,dummy 接口命名为
bgp-nic
。- 向 OVS 提供程序网桥添加 IP 地址,以确保启用了地址解析协议(ARP)和邻居发现协议(NDP)。
-
默认情况下,创建一个名为
Zebra 守护进程监控虚拟机和负载均衡器的 IP 地址,因为它们在任何本地接口上添加和删除,Zebra 公告和撤回路由。
因为 FRR 被配置为启用
重新分发连接
的选项,因此广告和撤回路由由从 dummy 接口bgp-nic
公开或删除路由组成。注意默认情况下,禁用连接到租户网络的虚拟机。如果在 RHOSP 配置中启用了它,OVN BGP 代理会公开 neutron 路由器网关端口。OVN BGP 代理通过托管
机箱重定向
逻辑路由器端口(CR-LRP
)的节点将流到租户网络上虚拟机的流量注入到 OVN 覆盖中。- FRR 在托管虚拟机或负载均衡器或包含 OVN 路由器网关端口的节点上公开 IP 地址。
OVN BGP 代理执行必要的配置,以使用 RHEL 内核网络和 OVS 将流量重定向到 OVN 覆盖,然后 FRR 在正确的节点上公开 IP 地址。
当 OVN BGP 代理启动时,它会执行以下操作:
- 添加 IP 地址到 OVS 提供程序网桥,以启用 ARP 和 NDP。
向
/etc/iproute2/rt_tables
中每个 OVS 提供程序网桥的路由表中添加一个条目。注意在 RHEL 内核中,路由表的最大数量为 252。这会将提供商网络数量限制为 252。
- 将 VLAN 设备连接到网桥,并启用 ARP 和 NDP (仅限 VLAN 提供商网络)。
- 清理 OVS 提供程序网桥上的任何额外的 OVS 流。
在常规重新同步事件或启动过程中,OVN BGP 代理执行以下操作:
添加 IP 地址规则,以将特定路由应用到路由表。
在以下示例中,此规则与 OVS 提供程序网桥关联:
$ ip rule 0: from all lookup local 1000: from all lookup [l3mdev-table] *32000: from all to IP lookup br-ex* # br-ex is the OVS provider bridge *32000: from all to CIDR lookup br-ex* # for VMs in tenant networks 32766: from all lookup main 32767: from all lookup default
添加 IP 地址路由到 OVS 提供程序网桥路由表,将流量路由到 OVS 提供程序网桥设备:
$ ip route show table br-ex default dev br-ex scope link *CIDR via CR-LRP_IP dev br-ex* # for VMs in tenant networks *CR-LRP_IP dev br-ex scope link* # for the VM in tenant network redirection *IP dev br-ex scope link* # IPs on provider or FIPs
根据是否使用 IPv4 或 IPv6,通过 OVS 提供程序网桥(
br-ex
)将流量路由到 OVN:对于 IPv4,为 OVN 路由器网关端口
CR-LRP
添加静态 ARP 条目,因为 OVN 不会响应 L2 网络外部的 ARP 请求:$ ip nei ... CR-LRP_IP dev br-ex lladdr CR-LRP_MAC PERMANENT ...
对于 IPv6,添加 NDP 代理:
$ ip -6 nei add proxy CR-LRP_IP dev br-ex
通过在 OVS 提供程序网桥上添加新流,将来自 OVN 覆盖的流量发送到内核网络,使目标 MAC 地址更改为 OVS 提供程序网桥的 MAC 地址(
actions=mod_dl_dst:OVN_PROVIDER_BRIDGE_MAC,NORMAL
):$ sudo ovs-ofctl dump-flows br-ex cookie=0x3e7, duration=77.949s, table=0, n_packets=0, n_bytes=0, priority= 900,ip,in_port="patch-provnet-1" actions=mod_dl_dst:3a:f7:e9:54:e8:4d,NORMAL cookie=0x3e7, duration=77.937s, table=0, n_packets=0, n_bytes=0, priority= 900,ipv6,in_port="patch-provnet-1" actions=mod_dl_dst:3a:f7:e9:54:e8:4d,NORMAL