SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Yamato Tanaka
Technical Support Engineer, Red Hat K.K
ML2/OVN アーキテクチャ概観
日本OpenStackユーザ会
第46回勉強会
1
OpenStack使ってますか?(検証環境, 本番環境)
どのネットワークプラグインを使っていますか?
(ML2/OVS、ML2/OVN)
2
今日話すこと
● ターゲット
○ ML2/OVN の導入を検討している人
● 今日話すこと
○ OVN とは
○ ML2/OVS と ML2/OVN の主な違い
○ ML2/OVN のコントロールプレーンのアーキテクチャの概観
○ ML2/OVN のデータプレーンのアーキテクチャの概観
● 今日話さないこと
○ ML2/OVN の詳細な動作、コードの実装、トラブルシューティング方法
○ OVN への移行の詳細
○ NFV・SRIOV・DPDK
3
OVN(Open Virtual Network)とは
4
SDN と Neutron + ML2/OVS にまつわるテクノロジー
● SDN
○ Software Defined Networking
○ ネットワーク構成をソフトウェアで定義する
● オーバーレイネットワーク
○ 物理的なネットワーク(アンダーレイネットワーク)の上に、
論理的なネットワーク(オーバーレイネットワーク)を構築する
● OpenFlow
○ SDN を実現するテクノロジーのひとつ
○ パケットをどのように転送するかをフローと呼ばれるルールの
集まりで定義する
○ OpenFlow コントローラが各スイッチに対し動的にフローを
設定する
● Open vSwitch
○ OpenFlow をサポートする仮想スイッチを提供するソフトウェア
Neutron + ML2/OVS はこれらの技術を活用している
5
Open vSwitch による
オーバーレイネットワークのイメージ図
OpenFlow
コントローラ
Application 5
ノード
Open
vSwitch
ノード
Open
vSwitch
ノード
Open
vSwitch
ルータ
スイッチ
インスタンス
インスタンス
ルータ
スイッチ
インスタンス
● OpenFlow コントローラを開発する必要がある
● OpenFlow のフローのひとつひとつは原始的
○ フローの一例
i. ポート N から届いたパケットのうち、宛先 MAC アドレスが
XX:XX:XX:XX:XX:XX に合致するパケットは iii. へ進む
ii. 合致しなかったパケットはドロップする
iii. TTL を減らす
iv. TTL が 0 のパケットはドロップする
v. 宛先 IP アドレスが Y.Y.Y.Y のパケットは、送信元・宛先 MAC アド
レスを書き換えた後ポート M に出力する
● OpenFlow コントローラの開発は大変
○ 複数のノードを跨ぐ論理スイッチを実装するには?
○ DHCP を提供するには?
● 複数のプロジェクトでOpenFlow コントローラの再発明が行われ
た
○ OpenStack : Neutron ML2/OVS plugin
○ Kubernetes : Open vSwitch ベースの CNI plugin
○ etc.
Open vSwitch の問題点
6
6
ルータ
スイッチ
インスタンス
インスタンス
ルータ
スイッチ
インスタンス
6
OpenFlow
コントローラ
ノード
Open
vSwitch
ノード
Open
vSwitch
ノード
Open
vSwitch
Open vSwitch による
オーバーレイネットワークのイメージ図
ここを開発する Application
Application
OVN のモチベーション
オーバーレイネットワークを実現するより高レベルな
コンポーネントを作って、複数のプロダクトで使い回せるよ
うにしよう
-> OVN 爆誕
● より高度な単位で論理ネットワークを定義できるよう
に
○ 例)論理スイッチを作成する
○ 例)論理ルータ A に外部 IP アドレス X と内部 IP アドレス Y
の組み合わせの SNAT を設定する
● OVN を使用するプロジェクト
○ OpenStack : Neutron ML2/OVN plugin
○ Kubernetes : CNI ovn-kubernetes plugin
○ etc.
https://networkheresy.com/ovn-bringing-native-virtual-networking-to-ovs/
ルータ
スイッチ
インスタンス
インスタンス
ルータ
スイッチ
インスタンス
7
7
7
ノード
Open
vSwitch
ノード
Open
vSwitch
ノード
Open
vSwitch
ここだけ開発する
OpenFlow
コントローラ
(OVN)
OVN による
オーバーレイネットワークのイメージ図
OpenStack と OVN
8
OpenStack と OVN の歴史
● Newton
○ ML2/OVN 発足。networking-ovn リポジトリが作成される [1]
● Stein
○ TripleO のデフォルトが ML2/OVN に [2]
● Ussuri
○ networking-ovn リポジトリが Neutron にマージされる [3]
○ Charmed OpenStack の推奨が ML2/OVN に [4]
● Xena
○ DevStack のデフォルトが ML2/OVN に [5]
ML2/OVN への移行が進んでいる
[1]https://github.com/openstack/networking-ovn/tree/stable/newton
[2]https://github.com/openstack/tripleo-heat-templates/commit/6053eb196488a086449f5f2e4fe807825a16bd51
[3]https://github.com/openstack/neutron/tree/stable/ussuri/neutron/plugins/ml2/drivers/ovn
[4]https://docs.openstack.org/charm-guide/latest/getting-started/index.html
[5]https://github.com/openstack/devstack/commit/e38a39ad404637ca1649cea072883aa0a4592c4f
9
ML2/OVS と ML2/OVN の違い
● 中間レイヤの追加
○ Neutron
○ Northbound ⇐ New
○ Southbound ⇐ New
○ Open vSwitch
● AMQP ではなく OVSDB プロトコルで通信
● デフォルトでは VXLAN ではなく GENEVE で
カプセル化
● ML2/OVS では以下のような既存の Linux の
機能・ソフトウェアが多く活用されていた
Network Namespace、Linux Bridge、
iptables、dnsmasq、keepalived
ML2/OVN ではこれらの機能の多くが br-int
内の OpenFlow に集約
10
https://docs.openstack.org/networking-ovn/latest/faq/index.html より引用
ML2/OVN と DVR(Distributed Virtual Router)
DVR:仮想ルータの実装を各コンピュートノードに分散する機能
11
ML2/OVS ML2/OVN
enable_distributed
_routing = Flase
enable_distributed
_routing = True
enable_distributed
_floating_ip =
False
enable_distributed
_floating_ip = True
East-West DVR 無効 DVR 有効 DVR 有効 DVR 有効
North-South
non-FIP
DVR 無効 DVR 無効 DVR 無効 DVR 無効
North-South
FIP
DVR 無効 DVR 有効 DVR 無効 DVR 有効
ML2/OVN の利点
https://www.openstack.org/videos/summits/virtual/Hassle-free-migration-from-OVS-to-OVN
12
● 多くの機能が OpenFlow に集約される
○ オーバーヘッドの減少
○ ハードウェアオフロードできる範囲の拡大
○ 構成がシンプルに(その分 OpenFlow は複雑に……)
● East-West の DVR が常に有効
● North-South のルータ HA が常に有効
● 単一コンピュートノード上のプロジェクトネットワーク数の上限(4094)がなくなる
● OVN が提供する軽量な Load Balancer 機能を Octavia のバックエンドとして使用
可能
● 複数のプロダクト(OpenStack と Kubernetes など)で共通の体験ができる
ML2/OVN でできないこと
https://docs.openstack.org/neutron/latest/ovn/gaps.html
● QoS Minimum Bandwidth support
● BGP support
● Baremetal provisioning with iPXE without Neutron DHCP agent for IPv6
● QoS minimum bandwidth allocation in Placement API
● IPv6 Prefix Delegation
● East/West Fragmentation
● DHCP service for instances
● DNS resolution for instances
● IPv6 NDP proxy
13
● パラレルマイグレーション
○ ML2/OVN 環境を新規に構築してワークロードを移行する
● インプレースマイグレーション
○ TripleO 環境
https://docs.openstack.org/neutron/latest/ovn/migration.html
○ Charmed OpenStack 環境
https://docs.openstack.org/charm-guide/latest/project/procedures/ovn-migration.html
○ その他の環境では現時点では確立された手順・ドキュメントはなさそう
OpenStack 環境
ML2/OVS から ML2/OVN への移行
14
旧環境
OVS
新環境
OVN
OVS OVN
コントロールプレーン
15
ML2/OVN のノード構成
References:
https://docs.openstack.org/networking-ovn/latest/admin/refarch/refarch.html
● Controller ノード
○ Neutron
○ データベース
● Database ノード
○ OVN のデータベース(NB/SB)
○ ovn-northd
● Compute ノード
○ インスタンス
○ メタデータエージェント
● Gateway ノード
○ ルータのゲートウェイポート
※TripleO のデフォルトでは
Controller・Database・Gateway はひとつに集約さ
れる
16
参考)ML2/OVS のノード構成
● Controller ノード
○ Neutron
○ データベース
○ RabbitMQ
● Compute ノード
○ インスタンス
○ DHCP エージェント
○ メタデータエージェント
● Network ノード
○ L3エージェント(ルータ)
※TripleO のデフォルトではController・Network は
ひとつに集約される
References:
https://docs.openstack.org/neutron/latest/admin/deploy-ovs-selfservice.html
17
ML2/OVS ML2/OVN
18
ML2/OVS ML2/OVN
19
Neutron
● プロトコル
○ HTTP(S), REST API
● データ
○ 論理ネットワークの構成
■ Network
■ Subnet
■ Port
■ Router
■ Security group
■ etc.
● 設定ファイル
○ /etc/neutron/plugins/ml2/ml2_conf.ini
■ [ml2]
■ mechanism_drivers=ovn
■ [ovn]
■ ovn_nb_connection=tcp:172.16.
2.221:6641
■ ovn_sb_connection=tcp:172.16.
2.221:6642
20
Neutron のデータの一例
(overcloud) [stack@undercloud ~]$ openstack network list
+--------------------------------------+----------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+----------------+--------------------------------------+
| 8cc44913-63e3-45b0-8834-c275c71d5dae | sample_network | 75caad86-0d98-45ef-9661-fcf1a60927c9 |
+--------------------------------------+----------------+--------------------------------------+
(overcloud) [stack@undercloud ~]$ openstack subnet list
+--------------------------------------+---------------+--------------------------------------+----------------+
| ID | Name | Network | Subnet |
+--------------------------------------+---------------+--------------------------------------+----------------+
| 75caad86-0d98-45ef-9661-fcf1a60927c9 | sample_subnet | 8cc44913-63e3-45b0-8834-c275c71d5dae | 192.168.0.0/24 |
+--------------------------------------+---------------+--------------------------------------+----------------+
(overcloud) [stack@undercloud ~]$ openstack router list
+--------------------------------------+----------------+--------+-------+----------------------------------+
| ID | Name | Status | State | Project |
+--------------------------------------+----------------+--------+-------+----------------------------------+
| 1e7225bc-e8d2-4cc8-ae0c-5b06e0299087 | example_router | ACTIVE | UP | 8348c8f988394946bbe7c2354931557d |
+--------------------------------------+----------------+--------+-------+----------------------------------+
21
Northbound Database
● ポート
○ 6641/tcp
● プロトコル
○ OVSDB Management Protocol
● データ
○ 論理ネットワークの構成
(desired state)
■ Logical_Switch
■ Logical_Router
■ Logical_Switch_Port
■ Logical_Router_Port
■ ACL
■ NAT
■ etc.
22
Northbound Database のデータの一例
[root@overcloud-controller-2 /]# ovn-nbctl show
switch fa59c807-1875-425f-b081-7c6b095f09f5 (neutron-8cc44913-63e3-45b0-8834-c275c71d5dae) (aka sample_network)
port cd787968-427c-4105-a4bc-ed7818fddcd1
type: router
router-port: lrp-cd787968-427c-4105-a4bc-ed7818fddcd1
port 4b98d1da-3481-4703-b478-91071b077912
addresses: ["fa:16:3e:3f:16:11 192.168.0.187"]
port b8cb7124-ce79-49e5-a76b-5f0ddf804611
type: localport
addresses: ["fa:16:3e:ce:b2:82 192.168.0.2"]
router 3aec0d86-110a-402e-8901-f07112c3bc30 (neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087) (aka example_router)
port lrp-cd787968-427c-4105-a4bc-ed7818fddcd1
mac: "fa:16:3e:fe:1e:a9"
networks: ["192.168.0.1/24"]
23
ovn-northd
● Northbound の論理ネットワーク
を論理フローに変換して
Southbound に格納する
24
Southbound Database
● ポート
○ 6642/tcp
● プロトコル
○ OVSDB Management Protocol
● データ
○ 物理的ネットワーク・ノードの現在
の状況
○ オーバーレイネットワークと物理
ネットワークの関係性
○ オーバーレイネットワークの論理フ
ロー
■ Chassis
■ Gateway_Chassis
■ Logical_Flow
■ Datapath_Binding
■ Port_Binding
■ etc. 25
Southbound Database のデータの一例
[root@overcloud-controller-2 /]# ovn-sbctl dump-flows|grep Datapath -A2
Datapath: "neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087" aka "example_router" (2aa663a6-5255-4f52-9fbe-15b05c707452) Pipeline: ingress
table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;)
table=0 (lr_in_admission ), priority=50 , match=(eth.dst == fa:16:3e:fe:1e:a9 && inport ==
"lrp-cd787968-427c-4105-a4bc-ed7818fddcd1"), action=(xreg0[0..47] = fa:16:3e:fe:1e:a9; next;)
Datapath: "neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087" aka "example_router" (2aa663a6-5255-4f52-9fbe-15b05c707452) Pipeline: egress
table=0 (lr_out_chk_dnat_local), priority=0 , match=(1), action=(reg9[4] = 0; next;)
table=1 (lr_out_undnat ), priority=0 , match=(1), action=(next;)
Datapath: "neutron-8cc44913-63e3-45b0-8834-c275c71d5dae" aka "sample_network" (b63b90f7-2429-40d5-bedb-6a96617fb609) Pipeline: ingress
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;)
table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;)
Datapath: "neutron-8cc44913-63e3-45b0-8834-c275c71d5dae" aka "sample_network" (b63b90f7-2429-40d5-bedb-6a96617fb609) Pipeline: egress
table=0 (ls_out_pre_lb ), priority=110 , match=(eth.mcast), action=(next;)
table=0 (ls_out_pre_lb ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;)
26
Southbound Database のデータの一例
[root@overcloud-controller-0 /]# ovn-sbctl show
Chassis "4ef242e0-9922-47f3-87fb-258c5d7ec25c"
hostname: overcloud-controller-0.example.com
Encap geneve
ip: "172.16.0.57"
options: {csum="true"}
Chassis "8af639e8-bff6-4e40-84a4-d02cc334ea95"
hostname: overcloud-novacompute-0.example.com
Encap geneve
ip: "172.16.0.42"
options: {csum="true"}
Port_Binding "4b98d1da-3481-4703-b478-91071b077912"
Chassis "6644dcf8-bff2-42df-a369-f69fe514f14e"
hostname: overcloud-novacompute-1.example.com
Encap geneve
ip: "172.16.0.127"
options: {csum="true"}
27
● データベースノードを複数台構
成にして冗長化できる
● Pacemaker による
Active-Backup クラスタ
○ Train 以前の TripleO のデフォルト
● RAFT に基づく Active-Active ク
ラスタ
○ Wallayb 以降の TripleO のデフォ
ルト
Southbound Database
の冗長化
28
https://docs.openstack.org/releasenotes/tripleo-heat-templates/wallaby.html
OVN Controller
● OpenFlow コントローラ
● Southbound のデータを元に
OpenFlow を生成し Open
vSwitch(br-int)に設定する
29
ovsdb-server
● ポート
○ 6640/tcp
○ Unic Domain Socket
● プロトコル
○ OVSDB Management Protocol
● データ
○ 各ノードごとに独自のデータを保持
○ Open vSwitch のスイッチやポート
の情報
■ Bridge
■ Port
■ Interface
■ etc.
30
ovs-vswitchd
● Open vSwitch
● OVN Controller によって設定さ
れた OpenFlow に従い実際の
通信パケットを処理する
31
ovs-vswitchd のデータの一例
[root@overcloud-novacompute-0 ~]# ovs-ofctl dump-flows br-int|grep arp|grep -e 192.168.0.187 -e fa:16:3e:3f:16:11
cookie=0x8ccc0b20, duration=97.462s, table=10, n_packets=2, n_bytes=84, idle_age=28,
priority=90,arp,reg14=0x3,metadata=0x3,dl_src=fa:16:3e:3f:16:11,arp_spa=192.168.0.187,arp_sha=fa:16:3e:3f:16:11
actions=resubmit(,11)
cookie=0xe2d242a0, duration=97.462s, table=26, n_packets=0, n_bytes=0, idle_age=97,
priority=100,arp,reg14=0x3,metadata=0x3,arp_tpa=192.168.0.187,arp_op=1 actions=resubmit(,27)
cookie=0x2817d9b, duration=97.464s, table=26, n_packets=0, n_bytes=0, idle_age=97,
priority=50,arp,metadata=0x3,arp_tpa=192.168.0.187,arp_op=1
actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:3f:16:11,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_
SHA[]->NXM_NX_ARP_THA[],load:0xfa163e3f1611->NXM_NX_ARP_SHA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xc0a800bb->
NXM_OF_ARP_SPA[],move:NXM_NX_REG14[]->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,37)
インスタンスが1台稼働しているコンピュードノードの br-int の OpenFlow ルールの数
[root@overcloud-novacompute-0 ~]# ovs-ofctl dump-flows br-int|wc -l
344
32
OVN Metadata Agent
● cloud-init 用のメタデータプロキ
シ
● ネットワークごとに
169.254.169.254:80 でリッスン
するHAProxy を立ち上げる
33
データプレーン
34
先程の図における
データプレーンの場所
35
● 仮想スイッチ
○ br-int の OpenFlow
● 仮想ルータ
○ br-int の OpenFlow
● ARP
○ br-int の OpenFlow
● DHCP
○ br-int の OpenFlow
● セキュリティグループ
○ br-int の OpenFlow
● メタデータプロキシ
○ HAProxy
ML2/OVN コンピュートノードの構成
36
参考)ML2/OVS コンピュートノードの構成
● 仮想スイッチ
○ br-int の OpenFlow
● 仮想ルータ
○ network namespace
● ARP
○ 単に相手インスタンスに届く
● DHCP
○ dnsmasq
● セキュリティグループ
○ Linux Bridge と iptables
● メタデータプロキシ
○ HAProxy
References:
https://docs.openstack.org/neutron/latest/contributor/internals/openvswitch_agent.html
37
ML2/OVS ML2/OVN
38
ML2/OVS ML2/OVN
39
データプレーン構成図例
以降は右図・以下の構成をベース
にパケットの流れをお話します
● ノード
○ コンピュートノード×2
○ ゲートウェイノード×2
● ネットワーク
○ テナントネットワーク A
○ テナントネットワーク B
○ プロバイダーネットワーク C
● インスタンス×4
40
ARP
● br-int 内に OpenFlow
ルールとして実装される
● ARP パケットは通信相手
のインスタンスには到達
しない
41
<ML2/OVS では>
ARP は通信相手に届く
DHCP
● br-int の OpenFlow ルー
ルと、OpenFlow コント
ローラ(ovn_contorller)
によって実装される
● dnsmasq といった
DHCP サーバは存在しな
い
42
<ML2/OVS では>
dnsmasq が DHCP を提供する
メタデータプロキシ
● HAProxy によって実装さ
れる
● HAProxy は各ノードごと
・Neutron のネットワーク
ごとに起動する
● インスタンスとメタデータ
プロキシ
(169.254.169.254)間の
通信がノードを跨ぐことは
ない
43
<ML2/OVS では>
HAProxy がメタデータプロキシと
なる
East-West 同じノードの場合
● DVR が常に有効
● パケットは外部へ流れな
い
44
<ML2/OVS では>
DVR が無効の場合、異なるネット
ワーク間の通信であれば、ネット
ワークノード上に実装されたルー
タを経由する
East-West 異なるノードの場合
● DVR が常に有効
● パケットは GENEVE でカ
プセル化される
● Neutron のネットワークの
segmentation_id は無視さ
れる
● SB の Datapath_Binding
テーブルの tunnel_key 列
の値が VNI になる
45
<ML2/OVS では>
DVR が無効の場合、異なるネット
ワーク間の通信であれば、ネット
ワークノード上に実装されたルー
タを経由する
East-West 異なるノード・ネットワークの場合
● DVR が常に有効
● パケットは GENEVE で
カプセル化される
● 仮想ルータは br-int の
OpenFlow ルールとして
実装される
46
<ML2/OVS では>
DVR が無効の場合、異なるネット
ワーク間の通信であれば、ネット
ワークノード上に実装されたルー
タを経由する
North-South FIP が割り当てられていない場合
● 通信はゲートウェイノード
を介する
● SNAT はゲートウェイノー
ドの br-int の OpenFlow
ルールとして実装される
47
<ML2/OVS では>
DVR が無効の場合、ネットワーク
ノード上に実装されたルータからプ
ロバイダーネットワークへ送信され
る
North-South ゲートウェイポートの分散・冗長化
● ルータのゲートウェイポー
トは各ゲートウェイノード
に分散して配置される
● Active-Backup
48
<ML2/OVS では>
ルータは各ネットワークノードに分
散される。Active-Backup。
North-South Distributed-FIP が無効な環境で
FIP が割り当てられている場合
● 通信はゲートウェイノード
を介する
● SNAT/DNAT はゲート
ウェイノードの br-int の
OpenFlow ルールとして
実装される
49
<ML2/OVS では>
DVR が無効の場合、ネットワーク
ノード上に実装されたルータからプ
ロバイダーネットワークへ送信され
る
North-South Distributed-FIP が有効な環境で
FIP が割り当てられている場合
● /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
mechanism_drivers=ovn
[ovn]
enable_distributed_floating_ip=True
● デフォルト値は False
● TripleO のデフォルト値は True
50
● ゲートウェイノードを介さ
ない
● SNAT/DNAT はコン
ピュートノードの br-int の
OpenFlow ルールとして
実装される
● コンピュートノードがプロ
バイダーネットワークに接
続するインタフェースを持
つ必要がある
North-South Distributed-FIP が有効な環境で
FIP が割り当てられている場合
51
● コンピュートノードがプロ
バイダーネットワークに接
続するインタフェースを持
つ必要がある
North-South プロバイダーネットワークに直接接続しているイ
ンスタンスの場合
52
<ML2/OVS では>
コンピュートノードからプロバイ
ダーネットワークへ直接送信され
る
BFD(ノード間のキープアライブ)
● パケットは GENEVE でカ
プセル化される
● VNI は 0
● ノード間のネットワークの疏
通状況を確認する
● 疎通しないノードが存在す
れば、仮想ルータのゲート
ウェイポートのフェールオー
バーを行う
53
<ML2/OVS では>
keepalived による VRRP でルー
タごとに冗長化される
まとめ
● OVN は Open vSwitch を使ってオーバーレイネットワークを構築するためのソフト
ウェア
● OpenStack では ML2/OVS から ML2/OVN への移行が進んでいる
● パフォーマンスの向上等の利点が期待される
● 制約事項(出来ないことなど)に注意
● 一部の環境向けには ML2/OVS から ML2/OVN へのマイグレーションドキュメント
が整備されている
54
参考
● man ovn-architecture
● man ovn-northd
● man ovn-nb
● man ovn-sb
● man ovn-nbctl
● man ovn-sbctl
55
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
Q & A
ありがとうございました
56

Más contenido relacionado

La actualidad más candente

日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会Yushiro Furukawa
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~Masaya Aoyama
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicManabu Ori
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVRToru Makabe
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...VirtualTech Japan Inc.
 
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregateAvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregateHiroki Ishikawa
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方Toru Makabe
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方Toru Makabe
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStackAkira Yoshiyama
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 

La actualidad más candente (20)

日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会
 
TripleO Deep Dive 1.1
TripleO Deep Dive 1.1TripleO Deep Dive 1.1
TripleO Deep Dive 1.1
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
ONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN publicONIC-Japan-2019-OVN public
ONIC-Japan-2019-OVN public
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~  - ...
「Neutronになって理解するOpenStack Network」~Neutron/Open vSwitchなどNeutronと周辺技術の解説~ - ...
 
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregateAvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
自宅インフラの育て方 第2回
自宅インフラの育て方 第2回自宅インフラの育て方 第2回
自宅インフラの育て方 第2回
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 

Similar a ML2/OVN アーキテクチャ概観

20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_finalKazumasa Ikuta
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 Brocade
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会Tomoya Hibi
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch UsecasesSakiko Kawai
 
openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019Takehiro Kudou
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会samemoon
 
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron HavanaAkihiro Motoki
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...VirtualTech Japan Inc.
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1Etsuji Nakai
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsAkihiro Motoki
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜Shuji Yamada
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewallM Hagiwara
 
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!シスコシステムズ合同会社
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)Motohiro OTSUKA
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-Takashi Sogabe
 

Similar a ML2/OVN アーキテクチャ概観 (20)

20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続 【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
【Brocade OpenStack ソリューション】MPLS VPNデータセンター間接続
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019openstack_neutron-ovs_osc2014tf_20141019
openstack_neutron-ovs_osc2014tf_20141019
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
 
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
OpenStackネットワーク入門 – OpenStack最新情報セミナー 2015年4月
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron Havana
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No1
 
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessionsOpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
OpenStack Atlanta Summit Report: Neutron, Nova and design summit sessions
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
 
Tremaで試すFirewall
Tremaで試すFirewallTremaで試すFirewall
Tremaで試すFirewall
 
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!
【Interop tokyo 2014】 ネットワークの高度な可視化〜企業向けSDNポリシー制御まで!
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)
 
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
 

ML2/OVN アーキテクチャ概観

  • 1. Yamato Tanaka Technical Support Engineer, Red Hat K.K ML2/OVN アーキテクチャ概観 日本OpenStackユーザ会 第46回勉強会 1
  • 3. 今日話すこと ● ターゲット ○ ML2/OVN の導入を検討している人 ● 今日話すこと ○ OVN とは ○ ML2/OVS と ML2/OVN の主な違い ○ ML2/OVN のコントロールプレーンのアーキテクチャの概観 ○ ML2/OVN のデータプレーンのアーキテクチャの概観 ● 今日話さないこと ○ ML2/OVN の詳細な動作、コードの実装、トラブルシューティング方法 ○ OVN への移行の詳細 ○ NFV・SRIOV・DPDK 3
  • 5. SDN と Neutron + ML2/OVS にまつわるテクノロジー ● SDN ○ Software Defined Networking ○ ネットワーク構成をソフトウェアで定義する ● オーバーレイネットワーク ○ 物理的なネットワーク(アンダーレイネットワーク)の上に、 論理的なネットワーク(オーバーレイネットワーク)を構築する ● OpenFlow ○ SDN を実現するテクノロジーのひとつ ○ パケットをどのように転送するかをフローと呼ばれるルールの 集まりで定義する ○ OpenFlow コントローラが各スイッチに対し動的にフローを 設定する ● Open vSwitch ○ OpenFlow をサポートする仮想スイッチを提供するソフトウェア Neutron + ML2/OVS はこれらの技術を活用している 5 Open vSwitch による オーバーレイネットワークのイメージ図 OpenFlow コントローラ Application 5 ノード Open vSwitch ノード Open vSwitch ノード Open vSwitch ルータ スイッチ インスタンス インスタンス ルータ スイッチ インスタンス
  • 6. ● OpenFlow コントローラを開発する必要がある ● OpenFlow のフローのひとつひとつは原始的 ○ フローの一例 i. ポート N から届いたパケットのうち、宛先 MAC アドレスが XX:XX:XX:XX:XX:XX に合致するパケットは iii. へ進む ii. 合致しなかったパケットはドロップする iii. TTL を減らす iv. TTL が 0 のパケットはドロップする v. 宛先 IP アドレスが Y.Y.Y.Y のパケットは、送信元・宛先 MAC アド レスを書き換えた後ポート M に出力する ● OpenFlow コントローラの開発は大変 ○ 複数のノードを跨ぐ論理スイッチを実装するには? ○ DHCP を提供するには? ● 複数のプロジェクトでOpenFlow コントローラの再発明が行われ た ○ OpenStack : Neutron ML2/OVS plugin ○ Kubernetes : Open vSwitch ベースの CNI plugin ○ etc. Open vSwitch の問題点 6 6 ルータ スイッチ インスタンス インスタンス ルータ スイッチ インスタンス 6 OpenFlow コントローラ ノード Open vSwitch ノード Open vSwitch ノード Open vSwitch Open vSwitch による オーバーレイネットワークのイメージ図 ここを開発する Application
  • 7. Application OVN のモチベーション オーバーレイネットワークを実現するより高レベルな コンポーネントを作って、複数のプロダクトで使い回せるよ うにしよう -> OVN 爆誕 ● より高度な単位で論理ネットワークを定義できるよう に ○ 例)論理スイッチを作成する ○ 例)論理ルータ A に外部 IP アドレス X と内部 IP アドレス Y の組み合わせの SNAT を設定する ● OVN を使用するプロジェクト ○ OpenStack : Neutron ML2/OVN plugin ○ Kubernetes : CNI ovn-kubernetes plugin ○ etc. https://networkheresy.com/ovn-bringing-native-virtual-networking-to-ovs/ ルータ スイッチ インスタンス インスタンス ルータ スイッチ インスタンス 7 7 7 ノード Open vSwitch ノード Open vSwitch ノード Open vSwitch ここだけ開発する OpenFlow コントローラ (OVN) OVN による オーバーレイネットワークのイメージ図
  • 9. OpenStack と OVN の歴史 ● Newton ○ ML2/OVN 発足。networking-ovn リポジトリが作成される [1] ● Stein ○ TripleO のデフォルトが ML2/OVN に [2] ● Ussuri ○ networking-ovn リポジトリが Neutron にマージされる [3] ○ Charmed OpenStack の推奨が ML2/OVN に [4] ● Xena ○ DevStack のデフォルトが ML2/OVN に [5] ML2/OVN への移行が進んでいる [1]https://github.com/openstack/networking-ovn/tree/stable/newton [2]https://github.com/openstack/tripleo-heat-templates/commit/6053eb196488a086449f5f2e4fe807825a16bd51 [3]https://github.com/openstack/neutron/tree/stable/ussuri/neutron/plugins/ml2/drivers/ovn [4]https://docs.openstack.org/charm-guide/latest/getting-started/index.html [5]https://github.com/openstack/devstack/commit/e38a39ad404637ca1649cea072883aa0a4592c4f 9
  • 10. ML2/OVS と ML2/OVN の違い ● 中間レイヤの追加 ○ Neutron ○ Northbound ⇐ New ○ Southbound ⇐ New ○ Open vSwitch ● AMQP ではなく OVSDB プロトコルで通信 ● デフォルトでは VXLAN ではなく GENEVE で カプセル化 ● ML2/OVS では以下のような既存の Linux の 機能・ソフトウェアが多く活用されていた Network Namespace、Linux Bridge、 iptables、dnsmasq、keepalived ML2/OVN ではこれらの機能の多くが br-int 内の OpenFlow に集約 10 https://docs.openstack.org/networking-ovn/latest/faq/index.html より引用
  • 11. ML2/OVN と DVR(Distributed Virtual Router) DVR:仮想ルータの実装を各コンピュートノードに分散する機能 11 ML2/OVS ML2/OVN enable_distributed _routing = Flase enable_distributed _routing = True enable_distributed _floating_ip = False enable_distributed _floating_ip = True East-West DVR 無効 DVR 有効 DVR 有効 DVR 有効 North-South non-FIP DVR 無効 DVR 無効 DVR 無効 DVR 無効 North-South FIP DVR 無効 DVR 有効 DVR 無効 DVR 有効
  • 12. ML2/OVN の利点 https://www.openstack.org/videos/summits/virtual/Hassle-free-migration-from-OVS-to-OVN 12 ● 多くの機能が OpenFlow に集約される ○ オーバーヘッドの減少 ○ ハードウェアオフロードできる範囲の拡大 ○ 構成がシンプルに(その分 OpenFlow は複雑に……) ● East-West の DVR が常に有効 ● North-South のルータ HA が常に有効 ● 単一コンピュートノード上のプロジェクトネットワーク数の上限(4094)がなくなる ● OVN が提供する軽量な Load Balancer 機能を Octavia のバックエンドとして使用 可能 ● 複数のプロダクト(OpenStack と Kubernetes など)で共通の体験ができる
  • 13. ML2/OVN でできないこと https://docs.openstack.org/neutron/latest/ovn/gaps.html ● QoS Minimum Bandwidth support ● BGP support ● Baremetal provisioning with iPXE without Neutron DHCP agent for IPv6 ● QoS minimum bandwidth allocation in Placement API ● IPv6 Prefix Delegation ● East/West Fragmentation ● DHCP service for instances ● DNS resolution for instances ● IPv6 NDP proxy 13
  • 14. ● パラレルマイグレーション ○ ML2/OVN 環境を新規に構築してワークロードを移行する ● インプレースマイグレーション ○ TripleO 環境 https://docs.openstack.org/neutron/latest/ovn/migration.html ○ Charmed OpenStack 環境 https://docs.openstack.org/charm-guide/latest/project/procedures/ovn-migration.html ○ その他の環境では現時点では確立された手順・ドキュメントはなさそう OpenStack 環境 ML2/OVS から ML2/OVN への移行 14 旧環境 OVS 新環境 OVN OVS OVN
  • 16. ML2/OVN のノード構成 References: https://docs.openstack.org/networking-ovn/latest/admin/refarch/refarch.html ● Controller ノード ○ Neutron ○ データベース ● Database ノード ○ OVN のデータベース(NB/SB) ○ ovn-northd ● Compute ノード ○ インスタンス ○ メタデータエージェント ● Gateway ノード ○ ルータのゲートウェイポート ※TripleO のデフォルトでは Controller・Database・Gateway はひとつに集約さ れる 16
  • 17. 参考)ML2/OVS のノード構成 ● Controller ノード ○ Neutron ○ データベース ○ RabbitMQ ● Compute ノード ○ インスタンス ○ DHCP エージェント ○ メタデータエージェント ● Network ノード ○ L3エージェント(ルータ) ※TripleO のデフォルトではController・Network は ひとつに集約される References: https://docs.openstack.org/neutron/latest/admin/deploy-ovs-selfservice.html 17
  • 20. Neutron ● プロトコル ○ HTTP(S), REST API ● データ ○ 論理ネットワークの構成 ■ Network ■ Subnet ■ Port ■ Router ■ Security group ■ etc. ● 設定ファイル ○ /etc/neutron/plugins/ml2/ml2_conf.ini ■ [ml2] ■ mechanism_drivers=ovn ■ [ovn] ■ ovn_nb_connection=tcp:172.16. 2.221:6641 ■ ovn_sb_connection=tcp:172.16. 2.221:6642 20
  • 21. Neutron のデータの一例 (overcloud) [stack@undercloud ~]$ openstack network list +--------------------------------------+----------------+--------------------------------------+ | ID | Name | Subnets | +--------------------------------------+----------------+--------------------------------------+ | 8cc44913-63e3-45b0-8834-c275c71d5dae | sample_network | 75caad86-0d98-45ef-9661-fcf1a60927c9 | +--------------------------------------+----------------+--------------------------------------+ (overcloud) [stack@undercloud ~]$ openstack subnet list +--------------------------------------+---------------+--------------------------------------+----------------+ | ID | Name | Network | Subnet | +--------------------------------------+---------------+--------------------------------------+----------------+ | 75caad86-0d98-45ef-9661-fcf1a60927c9 | sample_subnet | 8cc44913-63e3-45b0-8834-c275c71d5dae | 192.168.0.0/24 | +--------------------------------------+---------------+--------------------------------------+----------------+ (overcloud) [stack@undercloud ~]$ openstack router list +--------------------------------------+----------------+--------+-------+----------------------------------+ | ID | Name | Status | State | Project | +--------------------------------------+----------------+--------+-------+----------------------------------+ | 1e7225bc-e8d2-4cc8-ae0c-5b06e0299087 | example_router | ACTIVE | UP | 8348c8f988394946bbe7c2354931557d | +--------------------------------------+----------------+--------+-------+----------------------------------+ 21
  • 22. Northbound Database ● ポート ○ 6641/tcp ● プロトコル ○ OVSDB Management Protocol ● データ ○ 論理ネットワークの構成 (desired state) ■ Logical_Switch ■ Logical_Router ■ Logical_Switch_Port ■ Logical_Router_Port ■ ACL ■ NAT ■ etc. 22
  • 23. Northbound Database のデータの一例 [root@overcloud-controller-2 /]# ovn-nbctl show switch fa59c807-1875-425f-b081-7c6b095f09f5 (neutron-8cc44913-63e3-45b0-8834-c275c71d5dae) (aka sample_network) port cd787968-427c-4105-a4bc-ed7818fddcd1 type: router router-port: lrp-cd787968-427c-4105-a4bc-ed7818fddcd1 port 4b98d1da-3481-4703-b478-91071b077912 addresses: ["fa:16:3e:3f:16:11 192.168.0.187"] port b8cb7124-ce79-49e5-a76b-5f0ddf804611 type: localport addresses: ["fa:16:3e:ce:b2:82 192.168.0.2"] router 3aec0d86-110a-402e-8901-f07112c3bc30 (neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087) (aka example_router) port lrp-cd787968-427c-4105-a4bc-ed7818fddcd1 mac: "fa:16:3e:fe:1e:a9" networks: ["192.168.0.1/24"] 23
  • 25. Southbound Database ● ポート ○ 6642/tcp ● プロトコル ○ OVSDB Management Protocol ● データ ○ 物理的ネットワーク・ノードの現在 の状況 ○ オーバーレイネットワークと物理 ネットワークの関係性 ○ オーバーレイネットワークの論理フ ロー ■ Chassis ■ Gateway_Chassis ■ Logical_Flow ■ Datapath_Binding ■ Port_Binding ■ etc. 25
  • 26. Southbound Database のデータの一例 [root@overcloud-controller-2 /]# ovn-sbctl dump-flows|grep Datapath -A2 Datapath: "neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087" aka "example_router" (2aa663a6-5255-4f52-9fbe-15b05c707452) Pipeline: ingress table=0 (lr_in_admission ), priority=100 , match=(vlan.present || eth.src[40]), action=(drop;) table=0 (lr_in_admission ), priority=50 , match=(eth.dst == fa:16:3e:fe:1e:a9 && inport == "lrp-cd787968-427c-4105-a4bc-ed7818fddcd1"), action=(xreg0[0..47] = fa:16:3e:fe:1e:a9; next;) Datapath: "neutron-1e7225bc-e8d2-4cc8-ae0c-5b06e0299087" aka "example_router" (2aa663a6-5255-4f52-9fbe-15b05c707452) Pipeline: egress table=0 (lr_out_chk_dnat_local), priority=0 , match=(1), action=(reg9[4] = 0; next;) table=1 (lr_out_undnat ), priority=0 , match=(1), action=(next;) Datapath: "neutron-8cc44913-63e3-45b0-8834-c275c71d5dae" aka "sample_network" (b63b90f7-2429-40d5-bedb-6a96617fb609) Pipeline: ingress table=0 (ls_in_port_sec_l2 ), priority=100 , match=(eth.src[40]), action=(drop;) table=0 (ls_in_port_sec_l2 ), priority=100 , match=(vlan.present), action=(drop;) Datapath: "neutron-8cc44913-63e3-45b0-8834-c275c71d5dae" aka "sample_network" (b63b90f7-2429-40d5-bedb-6a96617fb609) Pipeline: egress table=0 (ls_out_pre_lb ), priority=110 , match=(eth.mcast), action=(next;) table=0 (ls_out_pre_lb ), priority=110 , match=(eth.src == $svc_monitor_mac), action=(next;) 26
  • 27. Southbound Database のデータの一例 [root@overcloud-controller-0 /]# ovn-sbctl show Chassis "4ef242e0-9922-47f3-87fb-258c5d7ec25c" hostname: overcloud-controller-0.example.com Encap geneve ip: "172.16.0.57" options: {csum="true"} Chassis "8af639e8-bff6-4e40-84a4-d02cc334ea95" hostname: overcloud-novacompute-0.example.com Encap geneve ip: "172.16.0.42" options: {csum="true"} Port_Binding "4b98d1da-3481-4703-b478-91071b077912" Chassis "6644dcf8-bff2-42df-a369-f69fe514f14e" hostname: overcloud-novacompute-1.example.com Encap geneve ip: "172.16.0.127" options: {csum="true"} 27
  • 28. ● データベースノードを複数台構 成にして冗長化できる ● Pacemaker による Active-Backup クラスタ ○ Train 以前の TripleO のデフォルト ● RAFT に基づく Active-Active ク ラスタ ○ Wallayb 以降の TripleO のデフォ ルト Southbound Database の冗長化 28 https://docs.openstack.org/releasenotes/tripleo-heat-templates/wallaby.html
  • 29. OVN Controller ● OpenFlow コントローラ ● Southbound のデータを元に OpenFlow を生成し Open vSwitch(br-int)に設定する 29
  • 30. ovsdb-server ● ポート ○ 6640/tcp ○ Unic Domain Socket ● プロトコル ○ OVSDB Management Protocol ● データ ○ 各ノードごとに独自のデータを保持 ○ Open vSwitch のスイッチやポート の情報 ■ Bridge ■ Port ■ Interface ■ etc. 30
  • 31. ovs-vswitchd ● Open vSwitch ● OVN Controller によって設定さ れた OpenFlow に従い実際の 通信パケットを処理する 31
  • 32. ovs-vswitchd のデータの一例 [root@overcloud-novacompute-0 ~]# ovs-ofctl dump-flows br-int|grep arp|grep -e 192.168.0.187 -e fa:16:3e:3f:16:11 cookie=0x8ccc0b20, duration=97.462s, table=10, n_packets=2, n_bytes=84, idle_age=28, priority=90,arp,reg14=0x3,metadata=0x3,dl_src=fa:16:3e:3f:16:11,arp_spa=192.168.0.187,arp_sha=fa:16:3e:3f:16:11 actions=resubmit(,11) cookie=0xe2d242a0, duration=97.462s, table=26, n_packets=0, n_bytes=0, idle_age=97, priority=100,arp,reg14=0x3,metadata=0x3,arp_tpa=192.168.0.187,arp_op=1 actions=resubmit(,27) cookie=0x2817d9b, duration=97.464s, table=26, n_packets=0, n_bytes=0, idle_age=97, priority=50,arp,metadata=0x3,arp_tpa=192.168.0.187,arp_op=1 actions=move:NXM_OF_ETH_SRC[]->NXM_OF_ETH_DST[],mod_dl_src:fa:16:3e:3f:16:11,load:0x2->NXM_OF_ARP_OP[],move:NXM_NX_ARP_ SHA[]->NXM_NX_ARP_THA[],load:0xfa163e3f1611->NXM_NX_ARP_SHA[],move:NXM_OF_ARP_SPA[]->NXM_OF_ARP_TPA[],load:0xc0a800bb-> NXM_OF_ARP_SPA[],move:NXM_NX_REG14[]->NXM_NX_REG15[],load:0x1->NXM_NX_REG10[0],resubmit(,37) インスタンスが1台稼働しているコンピュードノードの br-int の OpenFlow ルールの数 [root@overcloud-novacompute-0 ~]# ovs-ofctl dump-flows br-int|wc -l 344 32
  • 33. OVN Metadata Agent ● cloud-init 用のメタデータプロキ シ ● ネットワークごとに 169.254.169.254:80 でリッスン するHAProxy を立ち上げる 33
  • 36. ● 仮想スイッチ ○ br-int の OpenFlow ● 仮想ルータ ○ br-int の OpenFlow ● ARP ○ br-int の OpenFlow ● DHCP ○ br-int の OpenFlow ● セキュリティグループ ○ br-int の OpenFlow ● メタデータプロキシ ○ HAProxy ML2/OVN コンピュートノードの構成 36
  • 37. 参考)ML2/OVS コンピュートノードの構成 ● 仮想スイッチ ○ br-int の OpenFlow ● 仮想ルータ ○ network namespace ● ARP ○ 単に相手インスタンスに届く ● DHCP ○ dnsmasq ● セキュリティグループ ○ Linux Bridge と iptables ● メタデータプロキシ ○ HAProxy References: https://docs.openstack.org/neutron/latest/contributor/internals/openvswitch_agent.html 37
  • 40. データプレーン構成図例 以降は右図・以下の構成をベース にパケットの流れをお話します ● ノード ○ コンピュートノード×2 ○ ゲートウェイノード×2 ● ネットワーク ○ テナントネットワーク A ○ テナントネットワーク B ○ プロバイダーネットワーク C ● インスタンス×4 40
  • 41. ARP ● br-int 内に OpenFlow ルールとして実装される ● ARP パケットは通信相手 のインスタンスには到達 しない 41 <ML2/OVS では> ARP は通信相手に届く
  • 42. DHCP ● br-int の OpenFlow ルー ルと、OpenFlow コント ローラ(ovn_contorller) によって実装される ● dnsmasq といった DHCP サーバは存在しな い 42 <ML2/OVS では> dnsmasq が DHCP を提供する
  • 43. メタデータプロキシ ● HAProxy によって実装さ れる ● HAProxy は各ノードごと ・Neutron のネットワーク ごとに起動する ● インスタンスとメタデータ プロキシ (169.254.169.254)間の 通信がノードを跨ぐことは ない 43 <ML2/OVS では> HAProxy がメタデータプロキシと なる
  • 44. East-West 同じノードの場合 ● DVR が常に有効 ● パケットは外部へ流れな い 44 <ML2/OVS では> DVR が無効の場合、異なるネット ワーク間の通信であれば、ネット ワークノード上に実装されたルー タを経由する
  • 45. East-West 異なるノードの場合 ● DVR が常に有効 ● パケットは GENEVE でカ プセル化される ● Neutron のネットワークの segmentation_id は無視さ れる ● SB の Datapath_Binding テーブルの tunnel_key 列 の値が VNI になる 45 <ML2/OVS では> DVR が無効の場合、異なるネット ワーク間の通信であれば、ネット ワークノード上に実装されたルー タを経由する
  • 46. East-West 異なるノード・ネットワークの場合 ● DVR が常に有効 ● パケットは GENEVE で カプセル化される ● 仮想ルータは br-int の OpenFlow ルールとして 実装される 46 <ML2/OVS では> DVR が無効の場合、異なるネット ワーク間の通信であれば、ネット ワークノード上に実装されたルー タを経由する
  • 47. North-South FIP が割り当てられていない場合 ● 通信はゲートウェイノード を介する ● SNAT はゲートウェイノー ドの br-int の OpenFlow ルールとして実装される 47 <ML2/OVS では> DVR が無効の場合、ネットワーク ノード上に実装されたルータからプ ロバイダーネットワークへ送信され る
  • 48. North-South ゲートウェイポートの分散・冗長化 ● ルータのゲートウェイポー トは各ゲートウェイノード に分散して配置される ● Active-Backup 48 <ML2/OVS では> ルータは各ネットワークノードに分 散される。Active-Backup。
  • 49. North-South Distributed-FIP が無効な環境で FIP が割り当てられている場合 ● 通信はゲートウェイノード を介する ● SNAT/DNAT はゲート ウェイノードの br-int の OpenFlow ルールとして 実装される 49 <ML2/OVS では> DVR が無効の場合、ネットワーク ノード上に実装されたルータからプ ロバイダーネットワークへ送信され る
  • 50. North-South Distributed-FIP が有効な環境で FIP が割り当てられている場合 ● /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] mechanism_drivers=ovn [ovn] enable_distributed_floating_ip=True ● デフォルト値は False ● TripleO のデフォルト値は True 50
  • 51. ● ゲートウェイノードを介さ ない ● SNAT/DNAT はコン ピュートノードの br-int の OpenFlow ルールとして 実装される ● コンピュートノードがプロ バイダーネットワークに接 続するインタフェースを持 つ必要がある North-South Distributed-FIP が有効な環境で FIP が割り当てられている場合 51
  • 53. BFD(ノード間のキープアライブ) ● パケットは GENEVE でカ プセル化される ● VNI は 0 ● ノード間のネットワークの疏 通状況を確認する ● 疎通しないノードが存在す れば、仮想ルータのゲート ウェイポートのフェールオー バーを行う 53 <ML2/OVS では> keepalived による VRRP でルー タごとに冗長化される
  • 54. まとめ ● OVN は Open vSwitch を使ってオーバーレイネットワークを構築するためのソフト ウェア ● OpenStack では ML2/OVS から ML2/OVN への移行が進んでいる ● パフォーマンスの向上等の利点が期待される ● 制約事項(出来ないことなど)に注意 ● 一部の環境向けには ML2/OVS から ML2/OVN へのマイグレーションドキュメント が整備されている 54
  • 55. 参考 ● man ovn-architecture ● man ovn-northd ● man ovn-nb ● man ovn-sb ● man ovn-nbctl ● man ovn-sbctl 55