※この記事は「AOS 7.0 AHV10.0 Prism Central pc.2024.3」時点の情報をもとに作成しています。その後の機能アップデートについてはメーカーの公開情報をご確認ください。
NutanixのFlow Virtual Networkingの連載については以下の記事にリンクをまとめています。ほかの記事にもこちらからアクセス可能です。
前回の記事では、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 neighbor 172.22.7.254 remote-as 65002
vyos@vyos# set protocols bgp neighbor 172.22.7.254 address-family ipv4-unicast
VyOSのコンフィグは以下の通りです。
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ピアセッションが確認できます。
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の別の機能を触ってみようかと思います。