Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Open contrail days 2014 fall

2,657 views

Published on

OpenContrail tech doc in Japanese
1.Routing architecture and implementation
2.Service chaining architecture and implementation
3.Neutron router with OpenContrail
4.HA walk

Published in: Technology
  • Be the first to comment

Open contrail days 2014 fall

  1. 1. OpenContrailDays 2014 Fall Daisuke Nakajima Systems Engineer
  2. 2. 本日の内容 Source: https://tools.ietf.org/html/draft-ietf-l3vpn-end-system-04 •Contrailのルーティング •サービスチェイニングの実装 •ContrailとNeutron Router •ContrailのHA
  3. 3. Contrailのルーティング
  4. 4. 基本的な通信の仕組み 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 DataForwarder
  5. 5. 基本的な通信の仕組み RFC Draft をContrailにあてはめる SDNコントローラー Configuration コントローラー Configuration Analytics Control 仮想マシン VM VM 仮想マシン VM VM VA 物理ネットワーク XMPP XMPP BGP オーケストレータ InternetVPN網 REST BGP BGP vRouter vRouter VA ゲートウェイルータ ハイパーバイザー ハイパーバイザー •BGP •ゲートウェイルータ •Route-Server •ControlNode •End-System •VRouter
  6. 6. 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
  7. 7. Contrailのルーティングテーブル ルーティング確認の例 •WebUIからControlノードのRoute情報を確認 •VM毎にLabelが割り当てられる(ラベルはコンピュートノードごと)
  8. 8. 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
  9. 9. Contrailのルーティングテーブル Policyの設定 •VN1-VN2を通信できるようにPolicyを設定する
  10. 10. Contrailのルーティングテーブル ルーティング確認の例 •WebUIからControlノードのRoute情報を確認 •VM毎にLabelが割り当てられ、VN1のルーティングテーブルにVN1とVN2が確認で きる
  11. 11. Contrailのルーティングテーブル •内部IPアドレスをvRrouteでFloatingIPに付け替え(NAT) •FloatingIPの仮想ネットワークにも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 InternetVPN網 FloatingIP VRF : Public RT 64512:10000 public.inet.0 203.0.113.1/32 nexthop10.0.0.1 203.0.113.2/32 nexthop10.0.0.2 0.0.0.0/0 nexthopInternet
  12. 12. サービスチェイニングの実装
  13. 13. サービスチェイニングの実装方法 メタデータ方式とルーティング方式 •メタデータ方式 •NetworkServiceHeaderをパケットに挿入してサービスチェインを実装 •draft-quinn-sfc-nsh •draft-zhang-sfc-schなど •ルーティング方式 •ルーティングを制御してECMP/対象ルーティングなサービスチェインを実装 •draft-Mackie-sfc-uting-virtual-networking •その他のRFC •https://datatracker.ietf.org/wg/sfc/documents/
  14. 14. 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/24 RT: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
  15. 15. Contrailのサービスチェイニング サービスチェイニング適用前(VN1のルーティングテーブル) •Next HopはVMのLabel 仮想サービスの IPアドレス
  16. 16. Contrailのサービスチェイニング サービスチェイニング適用後(VN1のルーティングテーブル) •NextHopが10.84.50.5ラベルがLabel 20になっている 仮想サービスの IPアドレス
  17. 17. 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を作成
  18. 18. Contrailのサービスチェイニング 複数サービスチェイニング適用後(NFV間のルーティングテーブル) •NextHopが10.84.50.5ラベルがLabel 20になっている
  19. 19. Contrailのサービスチェイニング 複数サービスインスタンスを使う場合 VMG1 VMG2 VMG3 GreenVirtual Network VMR1 VMR2 VMR3 RedVirtual Network •NextHopが複数作成され、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
  20. 20. Contrailのサービスチェイニング 複数サービスインスタンス適用後(VN1のルーティングテーブル) •NextHopが10.84.50.5ラベルがLabel 20になっている 仮想サービスの IPアドレス
  21. 21. Contrailのサービスチェイニング 複数サービスインスタンス適用後(仮想サービスの状態) •VN1とVN2には同じIPアドレスが割り当てられている
  22. 22. ContrailとNeutron Router
  23. 23. ContrailとNeutron Router •NeutronRouter •仮想ネットワーク間の通信を許可 •外部ネットワーク通信時に仮想ネットワー クの送信元IPアドレスを、NeutronRouter のExternalGatewayのIPアドレスでNAT Neutron routerの機能 Internet NeutronRouter VMR1 VMG1 VMG1 VMR1 Gateway Router
  24. 24. ContrailとNeutron Router •neutron router-interface-add •追加された仮想ネットワーク間はルートが リークされ、通信が可能になる •ただし、異なるテナントのNeutronRouter とは通信できない。 ContrailのRouter内通信 Neutron Router1 VMG1 VMG2 VMR1 VMR2 Neutron Router2 VMG1 VMG2 VMR1 VMR2
  25. 25. ComputeNode ContrailとNeutron Router •SNAT用のnetwork namespaceを作成 •コンピュートノードにnamespaceを切り、パ ケットを転送。NamespaceのEgressで NAT •vRouterとnamespace間はvethで接続 •仮想ネットワークと外部ネットワーク間に LSN用のIPアドレスを使用 ContrailのSNAT実装 1 3 VMG1 VMG2 InternetVPN網 ゲートウェイルータ 2 Network namespace NAT 203.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/32NH: Static Name space L:3 RT:64512:800002 0.0.0.0/32NH: 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/32NH: Gateway L:4 203.0.133.1 NH: Comp1 L:5 3 192.168.1.0/24 203.0.113.0/24
  26. 26. ContrailとNeutron Router •network namespaceの冗長化 •異なるコンピュートノードに1つずつNAT用network namespaceを作成 •LocalPrefで重み付けし、Act/Stbを実現 ContrailのSNAT実装 SV2 Network namespace Standby SV1 Network namespace Active VMG1 VMG2 100.64.0.0/29 100.64.0.1 203.0.113.1 100.64.0.1 203.0.113.1 0.0.0.0/0 NH 100.64.0.1/32 SV1 Local Pref200 0.0.0.0/0 NH 100.64.0.1/32 SV2 Local Pref100 203.0.113.1 NH 100.64.0.1/32 SV1 Local Pref200 203.0.113.1 NH 100.64.0.1/32 SV2 Local Pref100
  27. 27. ContrailとNeutron Router •network namespaceの冗長化 •ActのNamespaceがダウンした場合、LocalPrefの小さい経路がルーティングテーブ ルに載り、Stb経由でSNATを継続 ContrailのSNAT実装 SV2 Network namespace Standby SV1 Network namespace Active VMG1 VMG2 100.64.0.0/29 100.64.0.1 203.0.113.1 100.64.0.1 203.0.113.1 0.0.0.0/0 NH 100.64.0.1/32 SV2 Local Pref100 203.0.113.1 NH 100.64.0.1/32 SV2 Local Pref100
  28. 28. ContrailControllerのHighAvailability
  29. 29. ContrailControllerのHighAvailability •Controllerの冗長化は •ConfigNode •ControlNode •AnalyticsNode •DB Node •Cassandra •Zookeeper •この中で、IPアドレス冗長が必 要なのはConfigNode 全体図 Source: http://www.opencontrail.org/opencontrail-quick-start-guide/
  30. 30. ContrailControllerのHighAvailability •RESTAPI Server •IPアドレス/サーバ冗長が必要 •IF-MAP Server •サーバ冗長が必要 •Schema Transformer •サーバ冗長が必要 •Service Monitor •サーバ冗長が必要 •DiscoveryServer •IPアドレス/サーバ冗長が必要 •RabbitMQ •IPアドレス/クラスター化が必要 ConfigNodeの構成 HA proxy HA proxyKeepalived Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Discovery Server Service Monitor Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Discovery Server Service Monitor Control Node Control Node
  31. 31. ContrailのHighAvailability •REST APIにデータを送信 •HA ProxyはREST API Serverに データを送信 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  32. 32. ContrailのHighAvailability •データの保存 •Cassandraにデータを保存 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  33. 33. ContrailのHighAvailability •RabbitMQにメッセージを送信 •NotificationMessageを送信する ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  34. 34. ContrailのHighAvailability •クラスタにMSGをコピー •RabbitMQクラスタ内にメッセージ をコピー ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  35. 35. ContrailのHighAvailability •MSGを取得 •REST API ServerはRabbitMQか らNotificationMessageを取得 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  36. 36. ContrailのHighAvailability •データを取得 •Cassandraから先ほど保存した データを取得 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  37. 37. ContrailのHighAvailability •IF-MAP Serverへデータ送信 •IF-MAP Serverはデータをメモリ 上に保存 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  38. 38. ContrailのHighAvailability •SchemaTransformerがデータ を取得 •ActiveなSchemaTransformerは IF-MAP Serverから処理するデー タを取得 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  39. 39. ContrailのHighAvailability •処理したデータをREST API Serverに送信 •HA Proxy 経由でREST APIServerにデータを送信 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  40. 40. ContrailのHighAvailability •データの保存 •Cassandraにデータを保存 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  41. 41. ContrailのHighAvailability •RabbitMQにメッセージを送信 •NotificationMessageを送信する ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  42. 42. ContrailのHighAvailability •クラスタにMSGをコピー •RabbitMQクラスタ内にメッセージ をコピー ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  43. 43. ContrailのHighAvailability •MSGを取得 •REST API ServerはRabbitMQか らNotificationMessageを取得 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  44. 44. ContrailのHighAvailability •データを取得 •Cassandraから先ほど保存した データを取得 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  45. 45. ContrailのHighAvailability •IF-MAP Serverへデータ送信 •IF-MAP Serverはデータをメモリ 上に保存 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  46. 46. ContrailのHighAvailability •ControlNodeにデータを送信 •ControlNodeはIF-MAP Server からデータを受信 ConfigNodeの処理の流れ Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Control Node Control Node HA proxy HA proxyKeepalived
  47. 47. ContrailのHighAvailability •ServiceMoniterとSchemaTransformerはStandbyから Activeへ昇格 •HA Proxyはノードダウンを検地し、 対象サーバを切り離し •ControlNodeは別のIF-MAP Serverに再接続 •REST-API ServerはCassandra のデータを確認し、処理中のデー タが残っている場合、再処理を行 う ConfigNodeが障害になったら? HA proxy HA proxyKeepalived Configuration Node1 REST API Server Cassandrazookeeper IF-MAPserver RabbitMQ Schema Transformer Active Discovery Server Service Monitor Configuration Node2 REST API Server IF-MAPserver RabbitMQ Schema Transformer Standby Discovery Server Service Monitor Control Node Control Node Activeに昇格 Downになった サーバを切り離し 接続変更 DB整合性 確認
  48. 48. OpenContrail活動報告
  49. 49. 最近のOpenContrailの状況 •apt-get install でContrialがインストールできるようになりました •OpenstackHavana / Icehouseに対応 •対応OS 12.04 / 14.04 •OVSDBでToRスイッチをコントロール •OpenStackSummit in Paris でデモしました •OpenContrailWikiのアップデート計画 •fab のインストール方法の充実 •Server Managerの使い方 •ソフトウェアvGWの使用方法と解説

×