2. Okinawa Open Laboratory 2
本⽇お話したいこと
n Project Calico Introduction
n Project Calicoとは?
n Calicoの仕組み
n Calicoデータセンターファブリックをどう組むか
n Calicoコミュニティについて
3. Okinawa Open Laboratory 3
⾃⼰紹介
n 本名
n 安座間 勇⼆ (あざま ゆうじ)
n 出⾝地
n 沖縄県
n 所属
n 2014⼊社〜2017/03
n NECソリューションイノベータ 東京本社
n 2017/04〜現在
n 同社 沖縄⽀社
n これまでの沖縄ラボでの活動
n Service Chaining PJ メンバー (2014〜2015)
n ThinkIT「OpenDaylightを始めよう!」
6. Okinawa Open Laboratory 6
Project Calico
n どんなPJか?
n OpenStack VMやコンテナに対してL3ルーティングベースのネットワーキング機能を提
供するOSSプロジェクト
n Apache 2.0 license
n 最新バージョンはv2.3で、リリースは不定期
n 歴史
n 2014 MetaswitchがProject Calicoを発表
n 2016 MetaswitchとCoreOSがTigera社を設⽴
CalicoとFlannelを統合したCanalを公開
n 特徴
n ピュアなL3ルーティングベースの技術でVM/コンテナ/ベアメタル(および混在環境)に
対してネットワーキングを提供する
n 経路情報の伝播⼿段としてBGPを利⽤する
n LinuxのForwarding Information Base(FIB)でルーティングを提供する
n ネットワークポリシーを提供する
7. Okinawa Open Laboratory 7
他プロジェクトとの関係 (Integration)
n OpenStack
n Neutron ML2 PluginとしてCalicoを使⽤でき、OpenStackのネットワーキングとして動作
(networking-calico)
n Kubernetes
n KubernetesのAddonとしてFlannelがVxLANを使⽤するのに対して、CalicoはL3ルーティングネ
ットワークとネットワークポリシーを提供 (CNI Network plugin)
n Docker
n Docker network pluginとして動作し、ルーティングとネットワークポリシーを提供
(libnetwork plugin)
n Mesos
n CalicoがMesosに対してIPネットワーキングとセキュリティポリシーを提供
(CNI Network plugin)
n rkt
n Calicoがrktコンテナにネットワーキングとネットワークポリシーをサポート
(CNI Network plugin)
8. Okinawa Open Laboratory 8
Mirantis Cloud Platform
n Mirantis Cloud Platform 1.0では、KubernetesのSDNとしてCalico
を統合
参考: https://www.mirantis.com/blog/bring-in-the-new-infrastructure-stack/
9. Okinawa Open Laboratory 9
Calicoに期待されること
n High Performance
n オーバーレイのカプセル化が発⽣しないためパフォーマンスが優れている
n Simple
n OpenFlowやオーバーレイがないためtracerouteやpingが期待通りに動作する
n Scalable
n データセンターNWが、BGPを使⽤したインターネットと同じ原理で構築できるため
スケーラビリティに優れている
n L2通信で発⽣していたARPブロードキャストを抑制できる
n Secure
n VMやコンテナに対して、トラフィックの⽅向やIPアドレス、ポート番号などの
ネットワークポリシー制限が⾏える
11. Okinawa Open Laboratory 11
Compute Host
Felix
BIRD
WorkloadWorkloadWorkload
FIB
Compute Host
Felix
BIRD
WorkloadWorkloadWorkload
FIB
Compute Server(calico node)
Felix
BIRD
WorkloadWorkloadWorkload
FIB
Calicoアーキテクチャ
n Felix (プロセス名: calico-felix)
n Workload(※)が動作する全ホストに常駐するエージェント
n etcdからWorkload情報を受取り経路情報とACLを設定する
n BIRD (プロセス名: bird, bird6)
n Calico Node間で経路情報を交換するルーティングデーモン
n FIBを監視しWorkloadの経路を検出/広告する
n Etcd またはEtcd Proxy(プロセス名: etcd)
n Calicoのデータストア
n OpenStack環境ではOpenStackデータベースのミラー
n Orchestrator Plugin
n OpenStackやKubernetesなどのプラグイン
n E.g. networking-calico, calico CNI Plugin
Etcd
Orchestrator Plugin
※ Calicoで⾔うWorkloadとはCalicoネットワークによって接続されるVMやコンテナなどのこと
BGP Peer
IPTables
IPTables
IPTables
12. Okinawa Open Laboratory 12
CalicoにおけるARP解決
n Proxy ARP
n Proxy ARPとは、他のデバイス宛のARP要求に対して、本来の問合せ先に代わ
ってARP応答する機能
n CalicoにおけるProxy ARPの動作
n Calicoにおいては、宛先IPのVMに代わってCalico NodeがARP代理応答を⾏う
n VM⾃⾝のtapのMACアドレスを学習する
Calico Node
VM
FIB
VM
eth0 eth0
tap tap
$ arp
? (192.0.2.1) at fe:16:3e:ec:bd:62 [ether] on eth0
? (192.0.2.5) at fe:16:3e:ec:bd:62 [ether] on eth0
? (192.0.2.10) at fe:16:3e:ec:bd:62 [ether] on eth0
VM内のARP Table
VMのtapのMACアドレス
ARP要求
ARP代理応答
13. Okinawa Open Laboratory 13
Calicoにおけるルーティング情報の伝達
n FelixがCalico Node内のVM/コンテナの経路情報をFIBに登録する
n BIRDがFIBを読込み、他Calico NodeとBGPで経路交換する
受け取った経路を⾃NodeのFIBに書込む
Calico Node
BIRD
VMbVMa
FIB
Felix
Calico Node
BIRD
VMdVMc
FIB
Felix
BGP Peer
VMc, VMdの経路広告VMa, VMbの経路広告
経路情報
読込み/書込み
経路情報
読込み/書込み
経路情報
書込み
経路情報
書込み
16. Okinawa Open Laboratory 16
Calicoデータセンターのデザインで考慮すること
n BGPのASデザイン
n BGPのPrivate AS番号には限りがある
n 2Byte Private AS → 64512〜65534の1,023個
n AS枯渇の懸念がある場合には4Byte ASを使うことも可能(RFC6793)
n 4Byte Private AS → 4200000000〜4294967294の94,967,295個
n BGPピア数
n BGPピア数が増えるとルーターの負荷が⾼くなるので⼤規模化が難しく
なってくる
n 各NW機器のルーティングテーブルサイズ
n スパインスイッチ/ToRスイッチのルーティングテーブルサイズの上限を
超えないようにする
17. Okinawa Open Laboratory 17
Calico L3 Fabricの例
n L3スパインスイッチ
n ToR間のフルメッシュピアを回避
しスケーラビリティを確保
n ラック単位のASデザイン
n ラック単位にASを構成すること
で、Calico Node単位にASを構成
するよりAS数を削減できる
ToR L3SW
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
ToR L3SW
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
ToR L3SW
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
ToR L3SW
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
ToR L3SW
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
Calico Node
…
AS X
Router
AS Y
Router
AS Z
Router
eBGP Peer
Spine
AS A AS B AS C AS D AS N
19. Okinawa Open Laboratory 19
Project Calico Community
n Project Calico Documentation
n http://docs.projectcalico.org/
n Source Code
n Project Calico Organization @GitHub
n Project OwnerはMetaswitch
n https://github.com/projectcalico/
n Calico Users @Slack
n 参加⼈数: 約1,300⼈
n https://calicousers.slack.com/
20. Okinawa Open Laboratory 20
沖縄オープンラボラトリ 概要
n 名称
n 一般社団法人 沖縄オープンラボラトリ (略称:沖縄オープンラボ、OOL 等)
n 設立
n 2013年5月8日 NTTコミュニケーションズ、NEC 、イイガの3社にて設立
n 所在地
n 〒904-2241 沖縄県うるま市字兼箇段61番地1
沖縄情報通信センター ビジネス棟201号
n 電話:098-989-1940
n Web:http://www.okinawaopenlabs.org/
n Facebook:http://www.facebook.com/okinawaopenlabs/
n 代表
n 理事長 伊藤 幸夫
n 目的
n 情報通信における先進技術(次世代ICT基盤技術)の実用化、普及のための研究開発
活動 ⇒クラウドとSDNの検証活動を会員企業と実施
OOLおよびCalico検証PJ メンバー募集中!
22. Okinawa Open Laboratory 22
(参考) Calicoで問題になりそうなこと
n BIRDルーティングテーブルの肥⼤化
n ワークロードのパフォーマンスに影響を与えないか
n BIRDのルーティングテーブル検索のパフォーマンスに影響が出ないか
n スケーラビリティ
n BGPだからスケーラブルと⾔ってもルーターのルート数に上限があるのではないか
n L2レスによる問題
n L2でDiscovery機能を使うアプリケーションが動かなくなるが回避策はあるか
n BUMトラフィックの扱いはどうなっているのか
n SNMPは動作するか
n FWやLBがある環境で動作するか
n セキュリティ
n テナント分離はできるか
n Calicoのネットワークポリシーだけでは不⼗分ではないか
23. Okinawa Open Laboratory 23
Hypervisor #2 (Compute2)Hypervisor #1 (Controller + Compute1)
VM2 (cirros) VM1 (cirros)
eth0eth0
$ arp
Address HWtype HWaddress Flags Mask Iface
192.0.2.10 ether fa:16:3e:03:a3:35 CM tap3be12409-03
Compute2(192.168.122.11) ether 52:54:00:61:49:20 C enp0s3
192.168.122.1 ether 52:54:00:28:dd:eb C enp0s3
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.122.1 0.0.0.0 UG 0 0 0 enp0s3
192.0.2.4 compute2 255.255.255.255 UGH 0 0 0 enp0s3
192.0.2.10 * 255.255.255.255 UH 0 0 0 tap3be12409-03
192.168.122.0 * 255.255.255.0 U 0 0 0 enp0s3
tap3be12409-03 tapd9b9894d-8b
$ ip addr show tapd9b9894d-8b
22: tapd9b9894d-8b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fe:16:3e:ec:bd:62 brd ff:ff:ff:ff:ff:ff
inet6 fe80::261:feff:feed:cafe/64 scope link
valid_lft forever preferred_lft forever
$ ip addr show tap3be12409-03
23: tap3be12409-03: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fe:16:3e:03:a3:35 brd ff:ff:ff:ff:ff:ff
inet6 fe80::261:feff:feed:cafe/64 scope link
valid_lft forever preferred_lft forever
$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether fa:16:3e:03:a3:35 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.10/24 brd 192.0.2.255 scope global eth0
inet6 fe80::f816:3eff:fe03:a335/64 scope link
valid_lft forever preferred_lft forever
$ arp
? (192.0.2.4) at fe:16:3e:03:a3:35 [ether] on eth0
? (192.0.2.1) at fe:16:3e:03:a3:35 [ether] on eth0
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.0.2.1 0.0.0.0 UG 0 0 0 eth0
192.0.2.0 * 255.255.255.0 U 0 0 0 eth0
$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether fa:16:3e:ec:bd:62 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.4/24 brd 192.0.2.255 scope global eth0
inet6 fe80::f816:3eff:feec:bd62/64 scope link
valid_lft forever preferred_lft forever
$ arp
? (192.0.2.1) at fe:16:3e:ec:bd:62 [ether] on eth0
? (192.0.2.10) at fe:16:3e:ec:bd:62 [ether] on eth0
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.0.2.1 0.0.0.0 UG 0 0 0 eth0
192.0.2.0 * 255.255.255.0 U 0 0 0 eth0
$ arp
Address HWtype HWaddress Flags Mask Iface
192.0.2.4 ether fa:16:3e:ec:bd:62 CM tapd9b9894d-8b
Compute1(192.168.122.10) ether 52:54:00:22:2f:5a C enp0s3
192.168.122.1 ether 52:54:00:28:dd:eb C enp0s3
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.122.1 0.0.0.0 UG 0 0 0 enp0s3
192.0.2.4 * 255.255.255.255 UH 0 0 0 tapd9b9894d-8b
192.0.2.10 compute1 255.255.255.255 UH 0 0 0 enp0s3
192.168.122.0 * 255.255.255.0 U 0 0 0 enp0s3
enp0s3
192.168.122.0/24
enp0s3
(参考) Multi Node OpenStack with Calico
n Routing Table, ARP Table実例