搜索

1.3. BGP 广告和流量重定向

download PDF

在使用 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 接口时公告它们:

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

    $ vtysh --vty_socket -c <command_file>
  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
    ...

    VTY shell 通过的命令,执行以下操作:

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

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

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

    因为 FRR 被配置为启用 重新分发连接 的选项,因此广告和撤回路由由从 dummy 接口 bgp-nic 公开或删除路由组成。

    注意

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

  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 内核中,路由表的最大数量为 252。这会将提供商网络数量限制为 252。

  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
  2. 添加 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
  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
      ...
    2. 对于 IPv6,添加 NDP 代理:

      $ ip -6 nei add proxy CR-LRP_IP dev br-ex
  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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.