1.3. BGP 公告和流量重定向


在使用 OpenShift (RHOSO)动态路由上的 Red Hat OpenStack Services 的部署中,网络流量流到虚拟机、负载均衡器和浮动 IP (FIP),使用公告的路由。在流量到达节点后,OVN BGP 代理添加了 IP 规则、路由和 OVS 流规则,以使用 Red Hat Enterprise Linux (RHEL)内核网络将流量重定向到 OVS 提供程序网桥(br-ex)。

广告网络路由的过程从 OVN BGP 代理触发自由范围路由(FRRouting 或 FRR)来公告和撤回直接连接的路由。OVN BGP 代理执行这些步骤来正确配置 FRR,以确保在 IP 地址添加到 bgp-nic 接口时都会公告 IP 地址:

  1. FRR 启动 VTY shell 以连接到 FRR 套接字:

    $ vtysh --vty_socket -c <command_file>
    Copy to Clipboard Toggle word wrap
  2. 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
    ...
    Copy to Clipboard Toggle word wrap

    VTY shell 传递的命令,执行以下操作:

    1. 默认情况下,创建名为 bgp_vrf 的 VRF。
    2. 将 dummy 接口类型与 VRF 关联。

      默认情况下,dummy 接口命名为 bgp-nic

    3. 添加 IP 地址到 OVS 提供程序网桥,以确保启用了地址解析协议(ARP)和邻居发现协议(NDP)。
  3. Zebra 守护进程监控虚拟机和负载均衡器的 IP 地址,在任何本地接口上添加和删除,Zebra 公告并撤回路由。

    由于 FRR 配置了启用 重新分发连接 的选项,因此广告和撤回路由只是从 dummy 接口(Bgp -nic )公开或删除路由。

    注意

    默认情况下,禁用与租户网络公开连接的虚拟机。如果在 RHOSO 配置中启用了,OVN BGP 代理会公开 neutron 路由器网关端口。OVN BGP 代理通过托管 chassisredirect 逻辑路由器端口的节点将流量注入租户网络上的虚拟机到 OVN 覆盖中(CR-LRP)。

  4. FRR 在托管虚拟机或负载均衡器的节点或包含 OVN 路由器网关端口的节点上公开 IP 地址。

OVN BGP 代理执行必要的配置,以使用 RHEL 内核网络和 OVS 将流量重定向到 OVN 覆盖,然后 FRR 在正确的节点上公开 IP 地址。

当 OVN BGP 代理启动时,它会执行以下操作:

  1. 添加 IP 地址到 OVS 提供程序网桥,以启用 ARP 和 NDP。
  2. /etc/iproute2/rt_tables 中每个 OVS 提供程序网桥的路由表中添加一个条目。

    注意

    在 RHEL 内核中,路由表的最大数量为 231。这会将提供商网络的数量限制为 2,147,483,648 (231)。

  3. 将 VLAN 设备连接到网桥,并启用 ARP 和 NDP (仅适用于 VLAN 提供商网络)。
  4. 清理 OVS 提供程序网桥上的任何额外的 OVS 流。

在常规重新同步事件或启动期间,OVN BGP 代理执行以下操作:

  1. 添加 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
    Copy to Clipboard Toggle word wrap
  2. 向 OVS 供应商网桥路由表中添加 IP 地址路由,将流量路由到 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
    Copy to Clipboard Toggle word wrap
  3. 根据是否使用 IPv4 还是 IPv6,使用以下方法之一通过 OVS 提供程序网桥(br-ex)将流量路由到 OVN:

    1. 对于 IPv4,为 OVN 路由器网关端口 CR-LRP 添加静态 ARP 条目,因为 OVN 不会响应其 L2 网络外的 ARP 请求:

      $ ip nei
      
      ...
      CR-LRP_IP dev br-ex lladdr CR-LRP_MAC PERMANENT
      ...
      Copy to Clipboard Toggle word wrap
    2. 对于 IPv6,添加一个 NDP 代理:

      $ ip -6 nei add proxy CR-LRP_IP dev br-ex
      Copy to Clipboard Toggle word wrap
  4. 通过在 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
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat