Open contrail days 2014 fall
-
Upload
daisuke-nakajima -
Category
Technology
-
view
1.294 -
download
3
description
Transcript of Open contrail days 2014 fall
OpenContrail Days 2014 Fall
Daisuke Nakajima
Systems Engineer
本日の内容
Source: https://tools.ietf.org/html/draft-ietf-l3vpn-end-system-04
• Contrailのルーティング
• サービスチェイニングの実装
• ContrailとNeutron Router
• ContrailのHA
Contrailのルーティング
基本的な通信の仕組みBGPベースのVPN
Source: https://tools.ietf.org/html/draft-ietf-l3vpn-end-system-04
• BGP
• インターネットゲートウェイ、L3VPN PEやRoute reflector
• Route-Server• XMPP経由でEnd-systemへルート情報などを送信
• End-System• ハイパーバイザ上のVPN Data
Forwarder
基本的な通信の仕組みRFC Draft を Contrailにあてはめる
SDNコントローラーConfiguration
コントローラー
Configuration Analytics
Control
仮想マシン
VM VM
仮想マシン
VM VM VA物理ネットワーク
XMPP XMPPBGP
オーケストレータ
Internet VPN網
REST
BGP
BGP
vRoutervRouter
VA
ゲートウェイルータ
ハイパーバイザー ハイパーバイザー
• BGP• ゲートウェイルータ
• Route-Server• Control Node
• End-System• VRouter
Contrailのルーティングテーブル
• Contrailは仮想ネットワーク毎にVRFを作成し、RTをアサイン
基本的な考え方
VMG1
VMG2
GreenVirtual Network
VMR1
VMR2
RedVirtual Network
vRouter
VMG1
VMG2
VMR1
VMR2
RT:64512:800001
172.16.1.0/24
172.16.1.2 NH: Comp1 L:1
172.16.1.3 NH: Comp2 L:2
RT:64512:800002
172.16.2.0/24
172.16.2.2 NH: Comp1 L:3
172.16.2.3 NH: Comp2 L:4
Contrailのルーティングテーブルルーティング確認の例
• WebUIからControlノードのRoute情報を確認• VM毎にLabelが割り当てられる(ラベルはコンピュートノードごと)
vRouter
1 2
VMG1
VMG2
VMR1
VMR2
Contrailのルーティングテーブル異なる仮想ネットワーク間の通信
VMG1
VMG2
VMG3
GreenVirtual Network
VMR1
VMR2
VMR3
RedVirtual Network
• VRF間でルーティング情報をリーク
リーク!
RT:64512:800001
172.16.1.0/24
172.16.1.2 NH: Comp1 L:1
172.16.1.3 NH: Comp2 L:2
RT:64512:800002
172.16.2.2 NH: Comp1 L:3
172.16.2.3 NH: Comp2 L:4
RT:64512:800002
172.16.2.0/24
172.16.2.2 NH: Comp1 L:3
172.16.2.3 NH: Comp2 L:4
RT:64512:800001
172.16.1.2 NH: Comp1 L:1
172.16.1.3 NH: Comp2 L:2
ContrailのルーティングテーブルPolicyの設定
• VN1-VN2を通信できるようにPolicyを設定する
Contrailのルーティングテーブルルーティング確認の例
• WebUIからControlノードのRoute情報を確認• VM毎にLabelが割り当てられ、VN1のルーティングテーブルにVN1とVN2が確認できる
Contrailのルーティングテーブル
• 内部IPアドレスをvRrouteでFloating IPに付け替え(NAT)
• Floating IPの仮想ネットワークにもRTを設定
ゲートウェイルータとの通信
VMG1
VMG2
GreenVirtual Network vRouter
VMG1
VMG2
RT:64512:800001
172.16.1.0/24
172.16.1.2
172.16.1.3
RT:64512:10000
203.0.113.0/24
FIP:203.0.113.1
FIP:203.0.113.2
Internet
Internet VPN網
Floating IP
VRF : Public
RT 64512:10000
public.inet.0
203.0.113.1/32 nexthop 10.0.0.1
203.0.113.2/32 nexthop 10.0.0.2
0.0.0.0/0 nexthop Internet
サービスチェイニングの実装
サービスチェイニングの実装方法メタデータ方式とルーティング方式
• メタデータ方式• Network Service Headerをパケットに挿入してサービスチェインを実装
• draft-quinn-sfc-nsh
• draft-zhang-sfc-schなど
• ルーティング方式• ルーティングを制御してECMP/対象ルーティングなサービスチェインを実装
• draft-Mackie-sfc-uting-virtual-networking
• その他のRFC• https://datatracker.ietf.org/wg/sfc/documents/
Contrailのサービスチェイニング仮想サービスが1つの場合
VMG1
VMG2
VMG3
GreenVirtual Network
VMR1
VMR2
VMR3
RedVirtual Network
• VRF間でルーティング情報をリーク
vRouter
1 2
VMG1
VMG2
VMR1
VMR2
RT:64512:800001
172.16.1.0/24RT:64512:800002
172.16.2.0/24
3 4
ControlノードでRouting情報を確認すると、あて先ネットワークのProtocolがServiceChainに変わる
RT:64512:800001
172.16.1.0/24
172.16.1.2 NH: Comp1 L:1
172.16.1.3 NH: Comp2 L:2
RT:64512:800003
172.16.2.2 NH: SC L:5
172.16.2.3 NH: SC L:5
RT:64512:800002
172.16.2.0/24
172.16.2.2 NH: Comp1 L:3
172.16.2.3 NH: Comp2 L:4
RT:64512:800004
172.16.1.2 NH: SC L:6
172.16.1.3 NH: SC L:6
Contrailのサービスチェイニングサービスチェイニング適用前(VN1のルーティングテーブル)
• Next HopはVMのLabel
仮想サービスのIPアドレス
Contrailのサービスチェイニングサービスチェイニング適用後(VN1のルーティングテーブル)
• NextHopが10.84.50.5ラベルがLabel 20になっている
仮想サービスのIPアドレス
Contrailのサービスチェイニング仮想サービスが複数場合
VMG1
VMG2
VMG3
GreenVirtual Network
VMR1
VMR2
VMR3
RedVirtual Network
vRouter
1
VMG1
VMG2
3
RT:64512:800001
172.16.1.1
172.16.1.2
RT:64512:800003
172.16.2.1
172.16.2.2
5 6 2
VMR1
VMR2
RT:64512:800003
172.16.2.1
172.16.2.2
RT:64512:800001
172.16.1.1
172.16.1.2
4
RT:64512:800004
172.16.1.1
172.16.1.2
RT:64512:800005
172.16.2.1
172.16.2.2
RT:64512:800005
172.16.2.1
172.16.2.2
RT:64512:800004
172.16.1.1
172.16.1.2
RT:64512:800005
172.16.1.1
172.16.1.2
RT:64512:800006
172.16.2.1
172.16.2.2
RT:64512:800006
172.16.2.1
172.16.2.2
RT:64512:800002
172.16.1.1
172.16.1.2
RT:64512:800001
172.16.1.0/24
RT:64512:800002
172.16.2.0/24
• 仮想サービスのleft/rightインターフェイス毎にVRFを作成
Contrailのサービスチェイニング複数サービスチェイニング適用後(NFV間のルーティングテーブル)
• NextHopが10.84.50.5ラベルがLabel 20になっている
Contrailのサービスチェイニング複数サービスインスタンスを使う場合
VMG1
VMG2
VMG3
GreenVirtual Network
VMR1
VMR2
VMR3
RedVirtual Network
• Next Hopが複数作成され、ECMPで通信
RT:64512:800001
172.16.1.0/24
RT:64512:800002
172.16.2.0/24
ControlノードでRouting情報を確認すると、ServiceChainの経路が2つできている
vRouter
1
VMG1
VMG2
2
VMR1
VMR2
3 4
RT:64512:800001
172.16.1.0/24
172.16.1.1 NH: Comp1 L:1
172.16.1.2 NH: Comp2 L:2
RT:64512:800003
172.16.2.1 NH: SC L:5
NH: SC L:7
172.16.2.2 NH: SC L:5
NH: SC L:7
RT:64512:800002
172.16.2.0/24
172.16.2.1 NH: Comp1 L:3
172.16.2.2 NH: Comp2 L:4
RT:64512:800004
172.16.1.1 NH: SC L:6
NH: SC L:8
172.16.1.2 NH: SC L:6
NH: SC L:8
Contrailのサービスチェイニング複数サービスインスタンス適用後(VN1のルーティングテーブル)
• NextHopが10.84.50.5ラベルがLabel 20になっている仮想サービスの
IPアドレス
Contrailのサービスチェイニング複数サービスインスタンス適用後(仮想サービスの状態)
• VN1とVN2には同じIPアドレスが割り当てられている
ContrailとNeutron Router
ContrailとNeutron Router
• Neutron Router• 仮想ネットワーク間の通信を許可
• 外部ネットワーク通信時に仮想ネットワークの送信元IPアドレスを、Neutron RouterのExternal GatewayのIPアドレスでNAT
Neutron routerの機能Internet
Neutron Router
VMR1
VMG1
VMG1
VMR1
Gateway Router
ContrailとNeutron Router
• neutron router-interface-add
• 追加された仮想ネットワーク間はルートがリークされ、通信が可能になる
• ただし、異なるテナントのNeutron Routerとは通信できない。
ContrailのRouter内通信Neutron Router1
VMG1
VMG2
VMR1
VMR2
Neutron Router2
VMG1
VMG2
VMR1
VMR2
Compute Node
ContrailとNeutron Router
• SNAT用のnetwork namespaceを作成• コンピュートノードにnamespaceを切り、パケットを転送。NamespaceのEgressでNAT
• vRouterとnamespace間はvethで接続
• 仮想ネットワークと外部ネットワーク間にLSN用のIPアドレスを使用
ContrailのSNAT実装
1 3
VMG1
VMG2
Internet VPN網
ゲートウェイルータ
2
Network namespace NAT203.0.133.1
100.64.0.0/29
RT:64512:800001
192.168.1.0/24
192.168.1.1 NH: Comp1 L:1
192.168.1.2 NH: Comp2 L:2
RT:64512:800002
0.0.0.0/32 NH: Static Name
space L:3
RT:64512:800002
0.0.0.0/32 NH: Static (SC) L:3
RT:64512:800001
192.168.1.0/24
192.168.1.1 NH: Comp1 L:1
192.168.1.2 NH: Comp2 L:2
RT:64512:10000
0.0.0.0/32 NH: Gateway L:4
203.0.133.1 NH: Comp1 L:5
3
192.168.1.0/24
203.0.113.0/24
ContrailとNeutron Router
• network namespaceの冗長化• 異なるコンピュートノードに1つずつNAT用network namespaceを作成
• Local Prefで重み付けし、Act/Stbを実現
ContrailのSNAT実装
SV2Network namespace
Standby
SV1Network namespace
Active
VMG1
VMG2
100.64.0.0/29
100.64.0.1 203.0.113.1 100.64.0.1 203.0.113.10.0.0.0/0 NH 100.64.0.1/32
SV1 Local Pref 200
0.0.0.0/0 NH 100.64.0.1/32
SV2 Local Pref 100
203.0.113.1 NH 100.64.0.1/32
SV1 Local Pref 200
203.0.113.1 NH 100.64.0.1/32
SV2 Local Pref 100
ContrailとNeutron Router
• network namespaceの冗長化• ActのNamespaceがダウンした場合、Local Prefの小さい経路がルーティングテーブルに載り、Stb経由でSNATを継続
ContrailのSNAT実装
SV2Network namespace
Standby
SV1Network namespace
Active
VMG1
VMG2
100.64.0.0/29
100.64.0.1 203.0.113.1 100.64.0.1 203.0.113.10.0.0.0/0 NH 100.64.0.1/32
SV2 Local Pref 100 203.0.113.1 NH 100.64.0.1/32
SV2 Local Pref 100
Contrail ControllerのHigh Availability
Contrail ControllerのHigh Availability
• Controllerの冗長化は• Config Node
• Control Node
• Analytics Node
• DB Node• Cassandra
• Zookeeper
• この中で、IPアドレス冗長が必要なのはConfig Node
全体図
Source: http://www.opencontrail.org/opencontrail-quick-start-guide/
Contrail ControllerのHigh Availability
• REST API Server• IPアドレス/サーバ冗長が必要
• IF-MAP Server• サーバ冗長が必要
• Schema Transformer• サーバ冗長が必要
• Service Monitor• サーバ冗長が必要
• Discovery Server• IPアドレス/サーバ冗長が必要
• RabbitMQ• IPアドレス/クラスター化が必要
Config Nodeの構成
HA proxyHA proxyKeepalived
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Discovery Server
Service Monitor
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Discovery Server
Service Monitor
Control Node Control Node
ContrailのHigh Availability
• REST APIにデータを送信• HA ProxyはREST API Serverにデータを送信
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• データの保存• Cassandraにデータを保存
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• Rabbit MQにメッセージを送信• Notification Messageを送信する
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• クラスタにMSGをコピー• RabbitMQクラスタ内にメッセージをコピー
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• MSGを取得• REST API ServerはRabbitMQからNotification Messageを取得
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• データを取得• Cassandraから先ほど保存したデータを取得
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• IF-MAP Serverへデータ送信• IF-MAP Serverはデータをメモリ上に保存
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• Schema Transformerがデータを取得• ActiveなSchema Transformerは
IF-MAP Serverから処理するデータを取得
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• 処理したデータをREST API Serverに送信• HA Proxy 経由でREST API
Serverにデータを送信
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• データの保存• Cassandraにデータを保存
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• Rabbit MQにメッセージを送信• Notification Messageを送信する
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• クラスタにMSGをコピー• RabbitMQクラスタ内にメッセージをコピー
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• MSGを取得• REST API ServerはRabbitMQからNotification Messageを取得
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• データを取得• Cassandraから先ほど保存したデータを取得
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• IF-MAP Serverへデータ送信• IF-MAP Serverはデータをメモリ上に保存
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• Control Nodeにデータを送信• Control NodeはIF-MAP Serverからデータを受信
Config Nodeの処理の流れ
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Control Node Control Node
HA proxyHA proxyKeepalived
ContrailのHigh Availability
• Service MoniterとSchemaTransformerはStandbyからActiveへ昇格
• HA Proxyはノードダウンを検地し、対象サーバを切り離し
• Control Nodeは別のIF-MAP Serverに再接続
• REST-API ServerはCassandra
のデータを確認し、処理中のデータが残っている場合、再処理を行う
Config Nodeが障害になったら?
HA proxyHA proxyKeepalived
Configuration Node 1
REST API Server
Cassandrazookeeper
IF-MAPserver
RabbitMQ
Schema Transformer
Active
Discovery Server
Service Monitor
Configuration Node 2
REST API Server
IF-MAPserver
RabbitMQ
Schema Transformer
Standby
Discovery Server
Service Monitor
Control Node Control Node
Activeに昇格
Downになったサーバを切り離し
接続変更
DB整合性確認
Open Contrail活動報告
最近のOpenContrailの状況
• apt-get install でContrialがインストールできるようになりました• Openstack Havana / Icehouseに対応
• 対応OS 12.04 / 14.04
• OVSDBでToRスイッチをコントロール• OpenStack Summit in Paris でデモしました
• OpenContrailWikiのアップデート計画• fab のインストール方法の充実
• Server Managerの使い方
• ソフトウェアvGWの使用方法と解説