Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron...

38
Next Data Center Networking with SRv6 Control plane Hirofumi Ichihara LINE corporation

Transcript of Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron...

Page 1: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Next Data Center Networking with SRv6Control plane

Hirofumi IchiharaLINE corporation

Page 2: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

About Me● 市原裕史 (Hirofumi Ichihara)● LINE Corporation

○ ネットワーク開発チーム● Network Software Developer

○ SDN/NFV○ OpenStack Neutron○ Docker○ Kubernetes

Page 3: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

SRv6 コントロールプレーン● ISIS● OSPF● BGP● OpenStack Neutron (SDN コントローラ)

Page 4: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

OpenStack● Cloud Operating system● マルチハイパーバイザサポート● 様々な SDN コントローラ、ストレージ製品がサポート

Page 5: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF
Page 6: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

https://docs.openstack.org/arch-design/design.html

本日の話はここ

Page 7: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

LINE Private IaaS Platform

Page 8: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF
Page 9: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

本日の話はここ

Page 10: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Nova と Neutron の動き VM作成

Controller

Neutron

Compute

nova-compute

Nova neutron-agent

① ネットワーク作成

② VM 作成

③ VM 情報

VM

④ VM 起動

tap

⑤ tap 作成

Page 11: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Nova と Neutron の動き NW設定

Controller

Neutron

Compute

nova-compute

Nova

⑥ tap 検知

VM tap

⑦ port 情報の問い合わせ

neutron-agent

⑧ tap 設定

VRF

⑨ VRF 作成と設定⑩ SRv6 encap/decapルールの設定

Page 12: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

VM からのパケットは VRF で encap/decap

Controller

Neutron

Compute

nova-compute

Nova

VM tap

neutron-agent

SRv6 Packet

IPv4 Packet

VRFIPv4 Packet

SRv6 Packet

IPv4 PacketIPv4 Packet

Page 13: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

VRF の設定をどうやって取得するか?

Controller

Neutron

Compute

nova-compute

Nova neutron-agent

Page 14: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

SRv6 の設定に必要な情報

VM tap

SRv6 Packet

IPv4 Packet

VRFIPv4 Packet

SRv6 Packet

IPv4 PacketIPv4 Packet

Encap ルール${送信先のVM の IPアドレス} encap seg6 mode encap segs ${送信先のVRF の SID} dev ${VRF Interface 名}

Decap ルールlocal ${受信先の VRF の SID} encap seg6local action End.DX4 nh4 ${受信先のVRF の IPv4} dev ${VRF Interface 名}

VRF インターフェース- VRF インターフェース名- IPv4 アドレス- VRF の SID (ノードのSID prefix + IPv4 アドレス)

Page 15: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

port 情報に VRF 情報を保持

Controller

Neutron

Compute

nova-compute

Nova neutron-agent⑦ port 情報の問い合わせ

Page 16: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Neutron port の binding:profile を利用{

"port":{

"binding:profile": {

"segment_node_id": "2400:dcc0::a7a:4d8e", # この port を持つ VM が起動しているノードの SID prefix

"vrf": "vrf644606a29039", # この port が接続する VRF のインターフェース名 "vrf" + tenant_id + network_id

"vrf_cidr": "169.254.1.0/24", # この port が接続する VRF の IP CIDR

"vrf_ip": "169.254.1.44" # この port が接続する VRF の IP アドレス

}

}

}

Page 17: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

各 VM の port 情報から encap ルールを設定

Compute3

nova-compute

VM5 tap

neutron-agent

VRF1

SRv6 encap/decapルールの設定 Compute2

neutron-agent

VRF1 VM4VM3

Compute1neutron-agent

VRF1 VM2VM1

VM5 へのパケットをCompute3 の VRF1 向けに encap するルール

VM5 へのパケットをCompute3 の VRF1 向けに encap するルール

- VM1, VM2 へのパケットを Compute1 のVRF1 向けに encap するルールを設定

- VM3, VM4 へのパケットを Compute2 の VRF1 向けに encap するルールを設定

Page 18: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

ここまでで VM 間 SRv6 通信が実現

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

VRF

Page 19: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

VM ⇔ 外部 間の通信のためのネットワークノード

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

NetworkVRF VRF

NetworkVRF VRF

VRF

Page 20: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

ネットワークノードの要件: スケール

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

Network 1 Network NVRF

Network 2・・・VRF VRF VRF VRF VRF VRF VRF VRF

Page 21: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

ネットワークノードの要件: マルチクラスタNetwork 1 Network N

cluster 1vrf 1

Network 2・・・cluster

2vrf 1

cluster 3vrf 1

OpenStack Cluster 1

OpenStack Cluster 2

OpenStack Cluster N・・・

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

Page 22: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Centralized vs Distributed

Network 1 Network Ncluster 1vrf 1

Network 2・・・cluster

2vrf 1

cluster 3vrf 1

OpenStack Cluster 1

OpenStack Cluster 2

OpenStack Cluster N・・・

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

Neutron Cluster Controller

Page 23: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Centralized vs Distributed

Network 1 Network Ncluster 1vrf 1

Network 2・・・cluster

2vrf 1

cluster 3vrf 1

OpenStack Cluster 1

OpenStack Cluster 2

OpenStack Cluster N・・・

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

agent agent agent

Page 24: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Centralized vs Distributed● Centralized

○ 各 OpenStack Cluster の Neutron を集約する Neutron Cluster Controller がすべてを管理する

○ Cons: この Controller が SPoF になる可能性がある● Distributed

○ 各 Network ノード上の agent が各 OpenStack Cluster のNeutron の情報をポーリングして必要な設定をする

○ Cons: クラスタ追加時に agent は動的にその新しいクラスタを検知する必要がある

Page 25: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

etcd + agent モデル

Network 1 Network Ncluster 1vrf 1

Network 2・・・cluster

2vrf 1

cluster 3vrf 1

OpenStack Cluster 1

OpenStack Cluster 2

OpenStack Cluster N・・・

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

cluster 1vrf 1

cluster 2vrf 1

cluster 3vrf 1

agent agent agent

etcd

Page 26: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

etcd を経由して必要な情報を渡す

Controller

Neutron

Compute

nova-compute

Nova

⑥ tap 検知

VM tap

⑦ port 情報の問い合わせ

neutron-agent

⑧ tap 設定

VRF

⑨ VRF 作成と設定⑩ SRv6 encap/decapルールの設定

etcd⑪ データを追加

Networkagent VRF

⑫ データを取得 ⑬ VRF 作成し SRv6 ecap/decap ルール設定

Page 27: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

VM 間、VM - 外部間 SRv6 通信が実現

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

VRF

Networkagent

VRF VRF

Networkagent

VRF VRF

Page 28: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

VM - *間 SRv6 通信が必要

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

VRF

Network

VRF VRF

Network

VRF VRF

インターネット特定のサービス

Network

VRF VRF

LBaaS

Page 29: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

ユースケース● 特定のサービス

○ 社内 DNS サーバへの接続○ OpenStack API サーバへの接続

● LBaaS○ ユーザが仮想ロードバランサを作成した際に生成される VIP アドレスで仮想ロードバランサへの接続

○ 仮想ロードバランサおよび VIP は生成したユーザが所属するプロジェクト内でのみ共有(他プロジェクトのユーザの VM からは接続できない)

Page 30: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

ユースケース● 特定のサービス

○ 社内 DNS サーバへの接続○ OpenStack API サーバへの接続

● LBaaS○ ユーザが仮想ロードバランサを作成した際に生成される VIP アドレスで仮想ロードバランサへの接続

○ 仮想ロードバランサおよび VIP は生成したユーザが所属するプロジェクト内でのみ共有(他プロジェクトのユーザの VM からは接続できない)

Page 31: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

srv6_encap_network API

Page 32: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

srv6_encap_network リソース● id: リソースを識別する ID● tenant_id/project_id: リソースのプロジェクトの ID● network_id: リソースがアサインされている ID● encap_rules: SRv6 の encap ルールリスト

○ destination: 宛先の IPv4 アドレス○ nexthop: SRv6 encap に使用する SID

Page 33: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

LBaaS と OpenStack 連携

ControllerNeutron

Compute

nova-compute

VM1 tap

neutron-agent

VRF1

④ SRv6 encapルールの設定

Networkagent

VRF1LBaaS

① VIP 作成

srv6_encap_netowrkAPI で encap ルール追加

新しい encapルールを通知 ②③

tenant_id: ユーザが所属する tenantnetwork_id: VM1 が接続する NWencap_rules: destination が VIP, nexthop が Network ノードの VRF1 の SID

VIP encap seg6 mode encap segs NetworkNode_VRF1_SID

Page 34: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

Compute

VRF

VM VMCompute

VRF

VM VMCompute

VRF

VM VM

VRF

Network

VRF VRF

Network

VRF VRF

インターネット特定のサービス

Network

VRF VRF

LBaaS

SRv6 ネットワーク

Page 35: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

コントロールプレーン設計で大変だったこと● SRv6 の情報をどのように保持するか、どのタイミングで、どのように設定をするか

● みんなコントロールプレーンで何でもできると思ってる○ OpenStack と全く関係のない世界の情報を元に設定を要求○ まだ存在しないリソースを元に設定することを要求○ 複雑なロジックをかけていい感じに制御してくれると思ってる

● C-plane と D-plane の境界付近で問題が続出した○ VM 起動時の DHCP や cloud-init、vrf + NW filter 問題

Page 36: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

コントロールプレーン設計で気をつけたこと● OpenStack の設計・思想に則った設計にする● ユースケースにとらわれず抽象度を上げて対応する● ハイパースケールな作りにするが、諦める所は諦める● 複雑なロジックを入れずに出来る限りシンプルに作る● コントロールプレーンとデータプレーンは疎結合にする

Page 37: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

今後やりたいこと● OSS として公開● networking-sfc 対応● Multiple SR driver 対応

○ Kernel○ VPP○ OVS

● SRv6 CNI

Page 38: Next Data Center Networking with SRv6 C-plane · 各OpenStack Cluster のNeutron を集約するNeutron Cluster Controller がすべてを管理する Cons: このController がSPoF

議論したいポイント● データセンターの仮想化基盤上で SRv6 を利用することについてどう思いましたか?

● SIDの設計方針やSIDの設定方法について、自分はこうしたら良いと思うという意見ありますか?

● 今後 SRv6 に期待している点やこういう世界になるべき、といった意見ありますか?