NutaNice Xperience

主にNutanix製品を検証したり触ったりした結果をつづっています。※このブログの内容は個人の見識や見解をもとに作成しています。参考にされる場合は自己責任でご活用ください。実際に製品を使用される場合は、メーカードキュメントの手順に従い実施してください。

Flow Virtual Networkingの「NoNAT」接続でBGPを使用してアドバタイズしてみる【AOS 7.0 AHV 10.0/pc.2024.3】

※この記事は「AOS 7.0 AHV10.0 Prism Central pc.2024.3」時点の情報をもとに作成しています。その後の機能アップデートについてはメーカーの公開情報をご確認ください。

NutanixのFlow Virtual Networkingの連載については以下の記事にリンクをまとめています。ほかの記事にもこちらからアクセス可能です。

tomomartin.hateblo.jp

前回の記事では、FVNのVPCでNATを使用しない接続方法を試してみました(NoNAT)。今回は、NoNAT環境でBGPによるアドバタイズを試してみます。

前回の記事のように、NoNATゲートウェイとなる「Router IP」へのスタティックルートを記述してもいいですが、規模の大きな環境などでは、BGP(Border Gateway Protocol)を使用して、経路情報を自動で交換したほうが効率的な場合があります。

Nutanixでは、NoNATにおけるVPC内のオーバーレイネットワークへの経路情報を、ネイティブのBGP機能で外部のネットワーク機器にアドバタイズすることが可能です。

目次

1.今回の環境

3ノードAHVクラスタ
AOS: 7.0.1
AHV: 10.0.1
Prism Central: pc.2024.3.1.1

環境は一般的なNutanixの3ノードクラスタです。Prism CentralはFVNで推奨となる3台構成としています。

▽今回の環境のイメージ図は以下の通りで、アンダーレイ側は2つのネットワークを準備しており、VyOSで接続しています。VPC側には、3つのオーバーレイネットワークを作成しました。

なお、BGP用のネットワークゲートウェイVMは、アンダーレイまたはVPC内のオーバーレイ上にデプロイすることができますが、今回はアンダーレイの「external subnet」上にデプロイしてみます。

なお、BGPセッションは異なるAS番号によるeBGPがサポートされています。

Border Gateway Protocol Sessions
https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Flow-Virtual-Networking-Guide-vpc_2024_2:ear-flow-nw-bgp-pc-c.html

2. 外部接続可能なオーバーレイサブネットの設定

まずは、NoNATかつBGPでアドバタイズしたいVPCのオーバーレイサブネットを設定しておきます。▽作業の該当部分は以下の通りです。

VPCに作成済みのオーバーレイサブネットのうち、以下の2つを外部アクセス可能として公開します。

VPCの設定画面で、「Externally Routable IP Addresses(ERP)」にこの2つのネットワークを記入します。これにより、該当のネットワークは外部アクセス可能となり、かつBGPを使用すると、このネットワークへのルート情報を外部のBGPへアドバタイズしてくれます。

3. VyOSのBGPの設定

VyOSにもBGPのピアリングの設定を入れておきます。

▽作業の該当部分は以下の通りです。

操作方法などの説明は割愛しますが、以下のようにBGPは最低限の設定としています。

vyos@vyos# set protocols bgp system-as 65001
vyos@vyos# set protocols bgp neighbor 172.22.7.254 remote-as 65002
vyos@vyos# set protocols bgp neighbor 172.22.7.254 address-family ipv4-unicast

VyOSのコンフィグは以下の通りです。

interfaces {
    ethernet eth0 {
        address 172.22.7.3/24
        hw-id 50:6b:8d:a0:84:34
        offload {
            gro
            gso
            sg
            tso
        }
    }
    ethernet eth1 {
        address 172.22.8.3/24
        hw-id 50:6b:8d:b2:70:12
        offload {
            gro
            gso
            sg
            tso
        }
    }
    loopback lo {
    }
}
protocols {
    bgp {
        neighbor 172.22.7.254 {
            address-family {
                ipv4-unicast {
                }
            }
            remote-as 65002
        }
        system-as 65001
    }

これで、VyOS側はBGPのピアリングセッションの準備ができました。

3. VPC側のBGPの設定

Prism Centralから、BGP用のネットワークVMの作成とBGPセッションの設定をします。

▽作業の該当部分は以下の通りです。

BGPゲートウェイの作成

▽Prism Centralの「Connectivity」画面から「Local」を指定して作成します。なお、「Remote」というのは、対向のBGP機器を登録をするために使用します。

▽BGPゲートウェイの名前を記入し、今回はアンダーレイ上に作成しますので、「VLAN」を選択して、デプロイ先となるAHVの「仮想ネットワーク」を指定します。

▽次の画面で「BGP」にチェックを入れ、ルート情報をアドバタイズしたいVPCを選択します。また、BGPゲートウェイのIPやデフォルトゲートウェイ、ピアリングに使用するASNを入力します。

▽作成したBGPは以下の通りです。

▽なお、BGPゲートウェイ仮想マシンとしてデプロイされていることがPrismから確認できます。

これで、BGPゲートウェイのデプロイは完了です。

リモートBGPゲートウェイの登録

BGPピアの対抗となるVyOSの情報をPrism Centralからリモートゲートウェイとして登録します。

▽「Create Gateway」で「Remote」を選択します。

▽リモートのBGPに名前を付けて、今回作成したVyOSのIPやASNを入力します。

▽登録したリモートBGPゲートウェイは以下の通りです。

BGPセッション(ピア)の作成

ここからは、設定したローカルとリモートのBGPゲートウェイをピアリングします。

▽「BGP Sessions」で「Create BGP Session」をクリックします。

▽ピアリングするローカルとリモートのBGPゲートウェイを選択して、セッションに名前を付けて作成します。なお、優先度やパスワードの設定にも対応していますが、今回は使用せずに進めます。

▽作成したセッションは以下の通りです。設定が問題なければ、Session Statusに「 up」と表示されます。このセッションをクリックすると、さらに詳細が確認できます。

▽「サマリー」タブでは、設定内容が表示されます。

▽「Routes」タブでは、BGPピアにアドバタイズしたルート情報や受け取った情報が確認できます。ここで、「Externally Routable IP Addresses(ERP)」として公開したVPC内の2つのオーバーレイサブネットへのルート情報が、アドバタイズ対象となっていることが確認できます。

▽VyOS側からも、以下の通りBGPピアセッションが確認できます。

vyos@vyos:~$ show ip bgp neighbors 172.22.7.254
BGP neighbor is 172.22.7.254, remote AS 65002, local AS 65001, external link
  Local Role: undefined
  Remote Role: undefined
Hostname: vyos
  BGP version 4, remote router ID 172.22.7.254, local router ID 172.22.7.3
  BGP state = Established, up for 00:29:04
  Last read 00:00:12, Last write 00:00:12
  Hold time is 180 seconds, keepalive interval is 60 seconds
  Configured hold time is 180 seconds, keepalive interval is 60 seconds
  Configured tcp-mss is 0, synced tcp-mss is 1448
  Configured conditional advertisements interval is 60 seconds
===中略===

 Message statistics:
    Inq depth is 0
    Outq depth is 0
                         Sent       Rcvd
    Opens:                  2          2
    Notifications:          1          0
    Updates:                4          5
    Keepalives:            37         37
    Route Refresh:          0          0
    Capability:             0          0
    Total:                 44         44
  Minimum time between advertisement runs is 0 seconds

 For address family: IPv4 Unicast
  Update group 4, subgroup 4
  Packet Queue length 0
  Community attribute sent to this neighbor(all)
  2 accepted prefixes

▽BGPで受け取ったルート情報も確認できます。Prism Centralで確認した内容と一致していますね。

vyos@vyos:~$ show ip bgp
BGP table version is 6, local router ID is 172.22.7.3, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, u unsorted, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.10.0/24  172.22.7.11              0             0 65002 i
 *>  192.168.20.0/24  172.22.7.11              0             0 65002 i

Displayed 2 routes and 2 total paths

▽VyOSのip routeにも追加されています。

vyos@vyos:~$ show ip route
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

S>* 0.0.0.0/0 [1/0] via 172.22.7.1, eth0, weight 1, 14:10:55
C>* 172.22.7.0/24 is directly connected, eth0, weight 1, 1d02h10m
K * 172.22.7.0/24 [0/0] is directly connected, eth0, weight 1, 1d02h10m
L>* 172.22.7.3/32 is directly connected, eth0, weight 1, 1d02h10m
C>* 172.22.8.0/24 is directly connected, eth1, weight 1, 1d02h10m
K * 172.22.8.0/24 [0/0] is directly connected, eth1, weight 1, 1d02h10m
L>* 172.22.8.3/32 is directly connected, eth1, weight 1, 1d02h10m
B>* 192.168.10.0/24 [20/0] via 172.22.7.11, eth0, weight 1, 00:35:56
B>* 192.168.20.0/24 [20/0] via 172.22.7.11, eth0, weight 1, 00:35:56

これで、ルート情報がBGPで自動的にアドバタイズされたことが確認できました。

4. 疎通確認

アドバタイズされたルート情報をもとに、アクセス確認をしてみます。

▽作業の該当部分は以下の通りです。アドバタイズされたオーバーレイサブネット上の仮想マシンにのみ通信が通るはずです。

▽それぞれのネットワークに仮想マシンを接続しました。

図の「172.22.8.5」の仮想マシンからそれぞれ疎通確認をした結果は以下の通りです。

▽「192.168.10.0/24」に接続された仮想マシン

▽「192.168.30.0/24」に接続された仮想マシン

想定通り動いてくれました。

次回は、FVNの別の機能を触ってみようかと思います。