はじめに
2020/05/09 に、YouTube Live で「BGP Unnumbered で遊んでみた」というお話させていただきました。
BGP Unnumbered は インターフェースや BGP ネイバーの IPアドレス設定が不要な BGP の設定方法です。 IPv6 や RFC 5549 の仕組みが活用されています。
初めて知ったのは、JANOG43 の「LINEのネットワークをゼロから再設計した話」を聞いたときでした。その後、Cloud Native Data Center Networking という書籍(ここから無料ダウンロードも可能)で Cumulus Linux での実装が掲載されるのを見て、おもしろそうだったので、ためしたうえで、紹介させていただきました。
こちらのブログにも各種リソースを掲載します。
動画
補足
UPDATE メッセージで、 IPv6 をネクストホップとした、IPv4 経路が広報されてきたときのパケットです。
資料
www.slideshare.net
デモ環境構築 Vagrantfile
質疑応答
後日、社内でも同じ発表をしたところいくつか質問をもらいました。それに対する回答です。
Q1. (ネイバー間は IPv6 のみだが) IPv6 のトンネルで IPv4 パケットを運ぶ?
トンネルは利用しません。エンドツーエンドの IPv4 パケットは、ネイバー間も普通の IPv4 パケットです。
IPv6 アドレスは、インターフェースへの自動割当、BGP ネイバーの確立、ネクストホップのMACアドレス導出あたりまでしか利用されません。 ネクストホップの MAC アドレスまで分かれば、あとは普通に(もとの IPv4 ヘッダのアドレスのまま)ネクストホップに転送するだけで、トンネリングしません。
以下は、エンドツーエンド(sv02
> sv01
)で ping を実行した際の、途中の leaf01
で取得したパケットキャプチャです。普通の IPv4 のパケットであることが分かります。
Q2. show ip bgp summary
でネイバー名(spine01
など)が見えたがどういう仕組みで取得しているのか、LLDPか何か?
以下は、leaf01
での show ip bgp summary
の結果の抜粋です。
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd spine01(swp1) 4 65000 453 455 0 0 0 00:22:22 3 spine02(swp2) 4 65000 453 455 0 0 0 00:22:21 3
ネイバーのホスト名 spine01
が、spine02
が見えてみます。
BGP の OPEN メッセージを調べたところ、Capability として FQDN Capability
というものがあり、ここでホスト名が通知されていました。おそらくこちらの値が利用されているのだと思います。
Q3. エンドツーエンドで traceroute したときに途中のホップの ループバックアドレスが見えたが、どういうこと?
こちらの記事の traceroute
の項で解説されています。
参考資料
参考資料の最後に掲載した参考資料を再掲します。
本・サイト
- Cloud Native Data Center Networking
- www.oreilly.com
- cumulusnetworks.com
- 無料ダウンロード可
- BGP in the Data Centerを読みました (4/6) : Chapter 4 - Reimagining BGP Configuration
- RFC5549の技術の導入を実現する方法とメリット
- Cumulus Linux の仮想アプライアンス「Cumulus VX」を Vagrant で構築する
RFC
- RFC 5549
- RFC 5492
- Capabilities Advertisement with BGP-4
- Capability Code など
- RFC 4760
- Multiprotocol Extensions for BGP-4
- MP_UNREACH_NLRI、MP_REACH_NLRI パスアトリビュートなど
各社実装
- Cumulus
- BGP unnumbered overview
- BGP unnumbered overview - Cumulus Networks engineering blog
- Arista
- BGP IPv6 Link Local Peers Discovery -BGP Unnumberedに対するAristaの解-
- Arista EOS Central - User Management
- Juniper
- Understanding Redistribution of IPv4 Routes with IPv6 Next Hop into BGP
- Multiprotocol BGP - TechLibrary - Juniper Networks
- Cisco
- NX-OS Release 6.2(8) 以降でRFC 5549 対応
- Cisco Nexus 7000 シリーズ NX-OS ユニキャスト ルーティング コンフィギュレーション ガイド リリース 6.x - 拡張 BGP の設定 [Cisco Nexus 7000 シリーズ スイッチ] - Cisco