GoBGP – BGP daemon in the Open Networking...

27
Copyright©2015 NTT Corp. All Rights Reserved. GoBGP – BGP daemon in the Open Networking Era 2016/10/21 NTTソフトウェアイノベーションセンタ (SIC) 石田渉

Transcript of GoBGP – BGP daemon in the Open Networking...

Page 1: GoBGP – BGP daemon in the Open Networking Eraonic.jp/archive/2016/_cms/wp-content/uploads/2016/10/f06.pdf• 様々なコンテナオーケストレータ(Kubernetes, Docker, Mesos)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

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)に対

26Copyright©2016 NTT Corp. All Rights Reserved.

まとめ

• GoBGP : Open Networking時代に適合したBGP実装として鋭意開発中• ぜひ試してみてください• コメント、PR歓迎です

• https://github.com/osrg/gobgp• https://gobgp.slack.com