gobgp – bgp daemon in the open networking...
TRANSCRIPT
![Page 1: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/1.jpg)
Copyright©2015 NTT Corp. All Rights Reserved.
GoBGP – BGP daemon in the Open Networking Era
2016/10/21NTTソフトウェアイノベーションセンタ (SIC)
石田渉
![Page 2: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/2.jpg)
1Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP
• NTT発のオープンソースBGP実装• http://github.com/osrg/gobgp
![Page 3: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/3.jpg)
2Copyright©2016 NTT Corp. All Rights Reserved.
BGP?
• Border Gateway Protocol
• インターネットを支えるルーティングプロトコルとして世界中で利用されている
![Page 4: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/4.jpg)
3Copyright©2016 NTT Corp. All Rights Reserved.
BGP?
https://en.wikipedia.org/wiki/Internet
![Page 5: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/5.jpg)
4Copyright©2016 NTT Corp. All Rights Reserved.
BGP!
BGP
BGPBGP
BGP
BGP
BGP
https://en.wikipedia.org/wiki/Internet
![Page 6: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/6.jpg)
5Copyright©2016 NTT Corp. All Rights Reserved.
BGP - 様々なユースケース
• インターネット以外のユースケース• VPNキャリアバックボーン• データセンタネットワーク• DDoSプロテクション (FlowSpec)
• KVS (draft-lapukhov-bgp-opaque-signaling)
https://www.nanog.org/sites/default/files/wed.general.brainslug.lapukhov.20.pdf
![Page 7: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/7.jpg)
6Copyright©2016 NTT Corp. All Rights Reserved.
なぜ新しいBGP実装?
コンピューティング ネットワーキング
メインフレーム 垂直統合されたブラックボックス
IAサーバ + Linux Open Networking
Open Networking時代に適合したBGP実装が必要
![Page 8: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/8.jpg)
7Copyright©2016 NTT Corp. All Rights Reserved.
Open Networking時代に求められるソフトウェア
1. モダンハードウェアへの適合• マルチコア、潤沢なメモリリソース• コモディティ化するネットワークハードウェア
• ホワイトボックススイッチ2. 他ソフトウェアとの連携の容易さ
• do one thing well3. ベンダニュートラルな設定項目
• 他の同種ソフトウェアとの同時運用・切り替えの容易さ
![Page 9: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/9.jpg)
8Copyright©2016 NTT Corp. All Rights Reserved.
1. モダンハードウェアへの適合• マルチコアを利用するプログラムが記述しやすいGo言語で実装
• ホワイトボックススイッチ上でも動作2. 他ソフトウェアとの連携の容易さ
• BGP機能に集中• FIB管理, MGMTシステムは外出し
• gRPC APIを通じたBGPの設定, 情報取得が可能• FIB管理, MGMTシステム(CLI含む)もAPIを利用して実装
3. ベンダニュートラルな設定項目• コンフィギュレーションモデルはOpenConfig準拠• OpenConfig : Google, Microsoftらが策定するオープンなコンフィギュレーションモデル(YANGモデル)
GoBGPの特徴
![Page 10: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/10.jpg)
9Copyright©2016 NTT Corp. All Rights Reserved.
gobgpd (daemon)
gobgp (CLI) Your Software
gRPC
GoBGPのアーキテクチャ
• gobgpd(daemon)とgobgp(CLI)から構成• インストール方法
• go get github.com/osrg/gobgp/gobgpd
• go get github.com/osrg/gobgp/gobgp
![Page 11: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/11.jpg)
10Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : BGP neighborの表示
![Page 12: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/12.jpg)
11Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : BGP neighborの表示
![Page 13: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/13.jpg)
12Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : 経路表示
![Page 14: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/14.jpg)
13Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : 経路注入
![Page 15: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/15.jpg)
14Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : 経路のリアルタイムモニタリング
![Page 16: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/16.jpg)
15Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP CLI : -j オプション
![Page 17: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/17.jpg)
16Copyright©2016 NTT Corp. All Rights Reserved.
• BGP neighborを取得するPythonスニペット
GoBGP : gRPC API
![Page 18: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/18.jpg)
17Copyright©2016 NTT Corp. All Rights Reserved.
• expect不要
GoBGP : gRPC API
![Page 19: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/19.jpg)
18Copyright©2016 NTT Corp. All Rights Reserved.
GoBGP導入・利用事例
• JPNAP IXルートサーバ• Calico (コンテナネットワーキング)• ホワイトボックススイッチ/Kubernetes• BGPMon, FlowSpec経路インジェクタ…
![Page 20: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/20.jpg)
19Copyright©2016 NTT Corp. All Rights Reserved.
JPNAP IXルートサーバ
http://www.mfeed.co.jp/press/2016/20160930.html
![Page 21: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/21.jpg)
20Copyright©2016 NTT Corp. All Rights Reserved.
BGP
BGPBGP
BGP
BGP
BGP
https://en.wikipedia.org/wiki/Internet
JPNAP IXルートサーバ
![Page 22: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/22.jpg)
21Copyright©2016 NTT Corp. All Rights Reserved.
ルートサーバ
SP A SP B
SP C
IX
BGP Peering
BGP Peering
BGP Peering
SP A SP B
SP C
IX
BGP Peering
ルートサーバ無 ルートサーバ有
• IXの利用者のBGP運用負荷を低減• IXルートサーバのみ接続すればよい
• ルートサーバにはピア数に対するスケーラビリティが必要• 一方データプレーンは必要ない
![Page 23: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/23.jpg)
22Copyright©2016 NTT Corp. All Rights Reserved.
Calico (コンテナネットワーキング)• Project Calico
• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対応したネットワーキングフレームワーク• マルチホスト, マルチテナント環境でのファイアウォール,
isolationの提供• スケーラビリティのためBGPを利用
• BGPデーモンとしてGoBGPが組み込まれている• https://github.com/projectcalico/calico-bgp-daemon
![Page 24: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/24.jpg)
23Copyright©2016 NTT Corp. All Rights Reserved.
ホワイトボックススイッチ/Kubernetes
server
Cumulus Linux
SpineSwitches
Cumulus Linux
Cumulus Linux Cumulus Linux
server
ToRSwitches
GoBGPController
Kubernetes
: BGP/Physical Connection
server
Kubernetes Kubernetes
server
Kubernetes
KubernetesKubernetes
Kubernetes Kubernetes
![Page 25: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/25.jpg)
24Copyright©2016 NTT Corp. All Rights Reserved.
ホワイトボックススイッチ/Kubernetes• NTT SICのラボ・生活ネットワークに導入
• ホワイトボックススイッチ + Cumulus Linux + Kubernetes + GoBGP• BGPルータを含む様々なサービスをコンテナとしてデプロイ• デプロイ・アップグレード・死活監視はKubernetesの仕組みを
利用• C-D分離にとどまらず、ハードウェア, OS, オーケストレータ,
ルーティングデーモン等々各レイヤが分離され、選択可能
OS
Hardware
APP
OS
White box switch
disaggregate垂直統合
APP
APP APP
Orchestrater
![Page 26: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/26.jpg)
25Copyright©2016 NTT Corp. All Rights Reserved.
ホワイトボックススイッチ/Kubernetes
詳細はOkinawaOpenDays2016で!
![Page 27: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対](https://reader033.vdocuments.us/reader033/viewer/2022041819/5e5d0deb85784b75a4560a1b/html5/thumbnails/27.jpg)
26Copyright©2016 NTT Corp. All Rights Reserved.
まとめ
• GoBGP : Open Networking時代に適合したBGP実装として鋭意開発中• ぜひ試してみてください• コメント、PR歓迎です
• https://github.com/osrg/gobgp• https://gobgp.slack.com