1.3. BGP 広告とトラフィックのリダイレクト
Red Hat OpenStack Platform (RHOSP) 動的ルーティングを使用する場合、ネットワークトラフィックは、アドバタイズされたルートを使用して、仮想マシン、ロードバランサー、Floating IP (FIP) の間で送受信されます。トラフィックがノードに到達すると、OVN BGP エージェントは、Red Hat Enterprise Linux (RHEL) カーネルネットワークを使用して、トラフィックを OVS プロバイダーブリッジ (br-ex
) にリダイレクトする IP ルール、ルート、OVS フロールールを追加します。
ネットワークルートをアドバタイズするプロセスは、OVN BGP エージェントが、フリーレンジルーティング (FRRouting、または FRR) をトリガーして、直接接続されたルートをアドバタイズおよび撤回することから始まります。OVN BGP エージェントは、次の手順を実行して、FRR を適切に設定し、IP アドレスが、bgp-nic
インターフェイスに追加されるたびに、アドバタイズされるようにします。
FRR は、VTY シェルを起動して、FRR ソケットに接続します。
$ vtysh --vty_socket -c <command_file>
VTY シェルは、次のコマンドを含むファイルを渡します。
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 シェルが渡すコマンドは、次を実行します。
-
デフォルトで
bgp_vrf
という名前の VRF を作成します。 ダミーインターフェイスタイプを VRF に関連付けます。
デフォルトでは、ダミーインターフェイスの名前は
bgp-nic
です。- IP アドレスを OVS プロバイダーブリッジに追加して、Address Resolution Protocol (ARP) と Neighbor Discovery Protocol (NDP) が有効になっていることを確認します。
-
デフォルトで
Zebra デーモンは、VM とロードバランサーの IP アドレスがローカルインターフェイスで追加および削除されるのを監視し、Zebra はルートをアドバタイズおよび撤回します。
FRR は、
redistribute connected
オプションを有効にして、設定されているため、ルートのアドバタイズと撤回は、ダミーインターフェイスbgp-nic
からルートを公開または削除するだけで、構成されます。注記テナントネットワークに接続された仮想マシンの公開は、デフォルトで無効になっています。RHOSP 設定で有効にされている場合、OVN BGP エージェントは neutron ルーターゲートウェイポートを公開します。OVN BGP エージェントは、テナントネットワーク上の仮想マシンに流れるトラフィックを、
chassisredirect
論理ルーターポート (CR-LRP
) をホストするノードを介して OVN オーバーレイに注入します。- FRR は、VM またはロードバランサーをホスティングするノード、または OVN ルーターゲートウェイポートを含むノードの IP アドレスを公開します。
OVN BGP エージェントは、RHEL カーネルネットワークと OVS を使用して、OVN オーバーレイとの間でトラフィックをリダイレクトするために必要な設定を実行し、FRR は適切なノードで IP アドレスを公開します。
OVN BGP エージェントが起動すると、次の処理が実行されます。
- OVS プロバイダーブリッジに IP アドレスを追加して、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