OpenFlowをIaaSで使う

  ~Wakameの場合~


     株式会社あくしゅ
       山崎泰宏
自己紹介
•北海道出身

•大手SIer (5年)
  •本社にて研究開発、技術営業、
  ありがたいことに色々経験

•起業 (5年)
  •株式会社あくしゅ 代表取締役
  •西新宿のはずれにて11名の小さな会社
クラウド基盤ソフトウェアを
作ってOSSとして公開しています
…の仲間
  •   Eucalyptus
  •   OpenStack
  •   CloudStack
  •   その他色々

機能は遜色無いんですけど、
なかなかブレークできずにいます。
こんなところで使われています


•   電力会社様の基幹系
•   国立研究所
•   コンシューマ向けデータセンター事業
•   米国の銀行(準備中)


    あまり詳しく書けなくてごめんなさい
お客様のご要望を
          実装してきました
• マルチハイパーバイザ対応
 – KVM, LXC
 – High Availability (物理故障からの復旧)
 – 高度なインスタンススペック(複数NIC対応など)
• マルチストレージ対応
 – ZFS, tgt
 – Snapshot用外部ストレージ転送 (IIJ GIO, S3互換)
• ネットワーク
 – Multiple Network, Security Groups, NAT,
   Metadata Server/Drive, DHCP, DNS, AWS
   Adapters, Web API
最近の課題




ネットワーク
2010/04 Wakame-vdc
   First Release

  VM                     VM
NIC    NIC             NIC   NIC
VNIC   VNIC           VNIC   VNIC




NIC    NIC             NIC   NIC

                                    Global IP Network

                                    Local IP Network


             + Tagged VLAN
2010/11 Security Groups

      VM          Allow
                               VM
   NIC                       NIC
  VNIC                     VNIC
                                      Deny
 Netfilter                Netfilter

   NIC                       NIC



             Permitted IPs            Unknown IPs

•全ホスト側の設定を動的に変更する仕組み
•この時点でTagged VLANは必要なくなった
Netfilter
                       iptables, ebtablesコマンドで

          VM
                       ルールを設定できる
                       パケットフィルタリングの仕組み
       NIC
      VNIC
                       Wakame-vdcでは、
     Netfilter   HVA
                       Hyper Visor Agent (HVA)が
       NIC             これを適宜変更する


「接続元IPアドレス以外からのSSH接続はDROPして」とか
そう言うご要望にお答えできる代物
Wakame-vdc v10.11
    One of the Virtual Network

LB                  Web             DB
  NIC                  NIC            NIC




Netfilter            Netfilter      Netfilter




            Physical Network

                  Virtual Network
現在複数NICに効くように改良中

       LB                       Web                      DB
        NIC                NIC          NIC                NIC
192.168.1.2       192.168.1.3                 10.1.1.2         10.1.1.3



      Netfilter                 Netfilter                Netfilter




                  Physical Network

                         Virtual Network
データセンターネットワークを
       完全に隠蔽する予定

       LB                   Web                DB
        NIC            NIC    NIC              NIC
192.168.1.2   192.168.1.3           10.1.1.2     10.1.1.3



      Netfilter L2/L3レベルの変換を行なって Netfilter
                        Netfilter

      データセンター内部の物理ネットワークは
       どう構成されていても良いようにする
Design Your Network
                            LB                        Web                           DB
                              NIC                NIC               NIC                NIC
                      192.168.1.2       192.168.1.3                      10.1.1.2           10.1.1.3



                            Netfilter                  Netfilter                    Netfilter




                 UIでは旧来のネットワーク図を見せるが、
                 フラットなネットワークでも全てEdgeでコントロールして
                 仮想的なネットワークとして再現できる。
     192.168.1.1/24          10.1.1.1/24




LB              Web                        DB
アーキテクチャは良さそう
• 仮想ネットワークが作れる
 – Default Gatewayなど、
   全部Edgeに持って行けるだろう
 – しかもスケーラビリティが高い

• 実装のアプローチもこのままで良いのか?
 – このままLinuxのNetfilterで継続か
 – Software Bridgeを自作するか
  • より自由なルールが適用できる!
しかし10Gbpsの世界とは…
• 1 Frame as Minimum = 84 byte = 672 bit
• 10Gbps / 672bpp ≒ 14.8Mpps
  – 10Gbps Wire Speed
• A Core 1.33GHz / 14.8Mpps ≒ 90 Clock cycle




           VM                 今後はホストKernelの上の
        NIC                   CPUリソースはVMの動作に
       VNIC
                              使われるべき
      Netfilter

        NIC       ホストKernel
,, ―- 、_
           /                 ‘’ - ,,
       /                            ‘’ - ,,
     /                                  ヽ
   i                    / /ヽ               !




                                                 ホストでやれるって言う
 ,i                ./ / ‘’―、                 !
 i         ,、 n て‘’ ノノ                ヾ      !
 i        ノノノ ノ ノ ‘’´                    ! /
訢        j     ‘´         ノ(          ヽ |
>-,, / ,,=━━・!’ ,ノ━== ! ノ




                                                   レベルじゃねーぞ!
!・ ヽ | ’ニンniii、 :::::i/ィ7iii= i )
\(てi iヽ         ^‘ ~              -’ /}
   `i_ 、 \                     i_      l_j
     `┐ i         /(,,, ,n 〉         /\\
 ̄ ̄へ             !‘        T’‘         l| \
     | ! i         ン=ェェi) i ソ )
     | i´\! ,, -ェ`、_ン ノノ 〈
     | | \\,, `―''´// |
     | つ       !、_''''''''''''' /      7
そこでOpenFlowに着目した
• Netfilterの代替になる
 – Flow Tableの考え方とほぼ同じ
• 標準化されると
  組み合わせの選択肢が増える
 – Linuxじゃなくても良くなる
 – ワークロードをCPU外に託せるかもね
   • ここ超重要!!!
OpenFlowにすると自由度が高まる

        VM                                  NIC
                                                  VM
  NIC                                      VNIC
 VNIC                                                    HVA
OpenFlow
              HVA                                      OpenFlow
 Switch     OpenFlow                                   Controller
            Controller                      NIC
  NIC
                                          OpenFlow
                                           Switch    High End Switch



             NIC
                   VM
                                              ※Latencyはひとまず置いておいて
            VNIC
                           HVA
                         OpenFlow
           OpenFlow      Controller
            Switch
                                      NIC上に別のCPUが搭載されたら、
                                       そちらにフロー制御は任せたい
             NIC
Wakame-vdc with OpenFlow
• 今はOpen vSwitchをコントロールする
• CPUワークロードを減らす
 – ここでOpenFlowの強みが出てくるはず
 – NICで動くOpenFlow Switchに期待大
   • CPUオフロード、Low Latencyでホクホクになる



            NIC
                  VM
           VNIC
                       HVA
                     OpenFlow
          OpenFlow   Controller
           Switch
            NIC
OpenFlow Controller: Trema
• コードが一番理解しやすかった
• Wakame-vdc同様にRubyでも書ける
• コミュニティも良い
 – メインループのイベントハンドリングを修正
   したかったので、コードコミットしたら取り
   込んでくれた
                   ありがとうございます!
Wakame-vdcは
          分散するTremaと連携する

 NIC
        VM            NIC
                             VM                NIC
                                                     VM
 VNIC                 VNIC                    VNIC
 Open
             HVA      Open
                                   HVA        Open
                                                          HVA
vSwitch   Trema      vSwitch     Trema       vSwitch    Trema
 NIC                  NIC                      NIC




        Wakame-vdc           •HVAを通じてControllerへ司令を出す
    Data Center Manager      •ControllerとSwitch間はLow Latency
                             •高いスケーラビリティ
1つのOpen vSwitchを管理する
      論理構成
              Trema                     Open vSwitch

 OpenFlow                               Open vSwitch
                      switch_manager
 Controller                               daemon

                              fork
                                       openvswitch_mod
                        switch.{n}                       NIC
   Ruby                                    (Bridge)
Event Loop
 Wakame
                             AMQP
 Extention



    Wakame-vdc
Data Center Manager
                              Wakame
802.1Qbg - Edge Virtual Bridging
• IEEEのワーキンググループ
• Virtual Ethernet Bridge (VEB)
• Virtual Edge Port Aggregator (VEPA)
  – VEBの拡張
  – 外部スイッチへ
    オフロードする
Wakame-vdcは、このBridge技術を使って、
特別なハードウェアに依存せず
仮想ネットワークを実現していきます。
Project:

   Big Bridge
    ※すでに商標登録されているかも…と言う情報をいただきました
いつリリースできる?
• 今年中を目標
• 実装が遅れに遅れています
 – Tremaにコミットするコードを書いていた
 – 実装が出回っているOpenFlow v1.0準拠だと
   色々制約が多い
  • v1.1が使いたい
  • 今はそこのワークアラウンドをしています
物理ネットワークはどう扱うか?
• データセンター内部の運用を考えると
  物理の管理は必須だと思っています
 – 情報は管理する
 – コントロールまでやっても良いけど今はやらない
  • ハードウェアはお金がかかる
 – 他社さんが頑張っている

• でも激安スイッチだけで
  仮想ネットワークができるのも大切
 – エッジに寄せた最大のメリット
 – プロダクション環境は
   ちゃんとしたハードウェアを買いましょう
参加者募集中
• Wiki作りました
 – http://wakame.jp/wiki/
   • インストールDVDもあります
• ぜひ開発にご参加ください
 – 参加したい人は
   • Twitter @sparklegateへDMをください
   • Skypeでチャットルーム作ります
まとめ
• Wakame-vdcでは
  OpenFlowを分散させてEdgeで使う
 – OpenFlow for Virtual Ethernet Bridge
   • Distributed Control
   • ハイスケール & Low Latency
   • ハードウェアを選ばない
 – Software-Defined Networkingを実現
   • まずはSecurity Groupsの実装に
   • 今後は仮想ネットワークに進展させる
• OpenFlow v1.1以降にも期待大!
Q&A



OpenFlow祭

OpenFlow in IaaS - Wakame

  • 1.
    OpenFlowをIaaSで使う ~Wakameの場合~ 株式会社あくしゅ 山崎泰宏
  • 2.
    自己紹介 •北海道出身 •大手SIer (5年) •本社にて研究開発、技術営業、 ありがたいことに色々経験 •起業 (5年) •株式会社あくしゅ 代表取締役 •西新宿のはずれにて11名の小さな会社
  • 3.
  • 4.
    …の仲間 • Eucalyptus • OpenStack • CloudStack • その他色々 機能は遜色無いんですけど、 なかなかブレークできずにいます。
  • 5.
    こんなところで使われています • 電力会社様の基幹系 • 国立研究所 • コンシューマ向けデータセンター事業 • 米国の銀行(準備中) あまり詳しく書けなくてごめんなさい
  • 6.
    お客様のご要望を 実装してきました • マルチハイパーバイザ対応 – KVM, LXC – High Availability (物理故障からの復旧) – 高度なインスタンススペック(複数NIC対応など) • マルチストレージ対応 – ZFS, tgt – Snapshot用外部ストレージ転送 (IIJ GIO, S3互換) • ネットワーク – Multiple Network, Security Groups, NAT, Metadata Server/Drive, DHCP, DNS, AWS Adapters, Web API
  • 7.
  • 8.
    2010/04 Wakame-vdc First Release VM VM NIC NIC NIC NIC VNIC VNIC VNIC VNIC NIC NIC NIC NIC Global IP Network Local IP Network + Tagged VLAN
  • 9.
    2010/11 Security Groups VM Allow VM NIC NIC VNIC VNIC Deny Netfilter Netfilter NIC NIC Permitted IPs Unknown IPs •全ホスト側の設定を動的に変更する仕組み •この時点でTagged VLANは必要なくなった
  • 10.
    Netfilter iptables, ebtablesコマンドで VM ルールを設定できる パケットフィルタリングの仕組み NIC VNIC Wakame-vdcでは、 Netfilter HVA Hyper Visor Agent (HVA)が NIC これを適宜変更する 「接続元IPアドレス以外からのSSH接続はDROPして」とか そう言うご要望にお答えできる代物
  • 11.
    Wakame-vdc v10.11 One of the Virtual Network LB Web DB NIC NIC NIC Netfilter Netfilter Netfilter Physical Network Virtual Network
  • 12.
    現在複数NICに効くように改良中 LB Web DB NIC NIC NIC NIC 192.168.1.2 192.168.1.3 10.1.1.2 10.1.1.3 Netfilter Netfilter Netfilter Physical Network Virtual Network
  • 13.
    データセンターネットワークを 完全に隠蔽する予定 LB Web DB NIC NIC NIC NIC 192.168.1.2 192.168.1.3 10.1.1.2 10.1.1.3 Netfilter L2/L3レベルの変換を行なって Netfilter Netfilter データセンター内部の物理ネットワークは どう構成されていても良いようにする
  • 14.
    Design Your Network LB Web DB NIC NIC NIC NIC 192.168.1.2 192.168.1.3 10.1.1.2 10.1.1.3 Netfilter Netfilter Netfilter UIでは旧来のネットワーク図を見せるが、 フラットなネットワークでも全てEdgeでコントロールして 仮想的なネットワークとして再現できる。 192.168.1.1/24 10.1.1.1/24 LB Web DB
  • 15.
    アーキテクチャは良さそう • 仮想ネットワークが作れる –Default Gatewayなど、 全部Edgeに持って行けるだろう – しかもスケーラビリティが高い • 実装のアプローチもこのままで良いのか? – このままLinuxのNetfilterで継続か – Software Bridgeを自作するか • より自由なルールが適用できる!
  • 16.
    しかし10Gbpsの世界とは… • 1 Frameas Minimum = 84 byte = 672 bit • 10Gbps / 672bpp ≒ 14.8Mpps – 10Gbps Wire Speed • A Core 1.33GHz / 14.8Mpps ≒ 90 Clock cycle VM 今後はホストKernelの上の NIC CPUリソースはVMの動作に VNIC 使われるべき Netfilter NIC ホストKernel
  • 17.
    ,, ―- 、_ / ‘’ - ,, / ‘’ - ,, / ヽ i / /ヽ ! ホストでやれるって言う ,i ./ / ‘’―、 ! i ,、 n て‘’ ノノ ヾ ! i ノノノ ノ ノ ‘’´ ! / 訢 j ‘´ ノ( ヽ | >-,, / ,,=━━・!’ ,ノ━== ! ノ レベルじゃねーぞ! !・ ヽ | ’ニンniii、 :::::i/ィ7iii= i ) \(てi iヽ ^‘ ~ -’ /} `i_ 、 \ i_ l_j `┐ i /(,,, ,n 〉 /\\  ̄ ̄へ !‘ T’‘ l| \ | ! i ン=ェェi) i ソ ) | i´\! ,, -ェ`、_ン ノノ 〈 | | \\,, `―''´// | | つ !、_''''''''''''' / 7
  • 18.
    そこでOpenFlowに着目した • Netfilterの代替になる –Flow Tableの考え方とほぼ同じ • 標準化されると 組み合わせの選択肢が増える – Linuxじゃなくても良くなる – ワークロードをCPU外に託せるかもね • ここ超重要!!!
  • 19.
    OpenFlowにすると自由度が高まる VM NIC VM NIC VNIC VNIC HVA OpenFlow HVA OpenFlow Switch OpenFlow Controller Controller NIC NIC OpenFlow Switch High End Switch NIC VM ※Latencyはひとまず置いておいて VNIC HVA OpenFlow OpenFlow Controller Switch NIC上に別のCPUが搭載されたら、 そちらにフロー制御は任せたい NIC
  • 20.
    Wakame-vdc with OpenFlow •今はOpen vSwitchをコントロールする • CPUワークロードを減らす – ここでOpenFlowの強みが出てくるはず – NICで動くOpenFlow Switchに期待大 • CPUオフロード、Low Latencyでホクホクになる NIC VM VNIC HVA OpenFlow OpenFlow Controller Switch NIC
  • 21.
    OpenFlow Controller: Trema •コードが一番理解しやすかった • Wakame-vdc同様にRubyでも書ける • コミュニティも良い – メインループのイベントハンドリングを修正 したかったので、コードコミットしたら取り 込んでくれた ありがとうございます!
  • 22.
    Wakame-vdcは 分散するTremaと連携する NIC VM NIC VM NIC VM VNIC VNIC VNIC Open HVA Open HVA Open HVA vSwitch Trema vSwitch Trema vSwitch Trema NIC NIC NIC Wakame-vdc •HVAを通じてControllerへ司令を出す Data Center Manager •ControllerとSwitch間はLow Latency •高いスケーラビリティ
  • 23.
    1つのOpen vSwitchを管理する 論理構成 Trema Open vSwitch OpenFlow Open vSwitch switch_manager Controller daemon fork openvswitch_mod switch.{n} NIC Ruby (Bridge) Event Loop Wakame AMQP Extention Wakame-vdc Data Center Manager Wakame
  • 24.
    802.1Qbg - EdgeVirtual Bridging • IEEEのワーキンググループ • Virtual Ethernet Bridge (VEB) • Virtual Edge Port Aggregator (VEPA) – VEBの拡張 – 外部スイッチへ オフロードする
  • 25.
  • 26.
    Project: Big Bridge ※すでに商標登録されているかも…と言う情報をいただきました
  • 27.
    いつリリースできる? • 今年中を目標 • 実装が遅れに遅れています – Tremaにコミットするコードを書いていた – 実装が出回っているOpenFlow v1.0準拠だと 色々制約が多い • v1.1が使いたい • 今はそこのワークアラウンドをしています
  • 28.
    物理ネットワークはどう扱うか? • データセンター内部の運用を考えると 物理の管理は必須だと思っています – 情報は管理する – コントロールまでやっても良いけど今はやらない • ハードウェアはお金がかかる – 他社さんが頑張っている • でも激安スイッチだけで 仮想ネットワークができるのも大切 – エッジに寄せた最大のメリット – プロダクション環境は ちゃんとしたハードウェアを買いましょう
  • 29.
    参加者募集中 • Wiki作りました –http://wakame.jp/wiki/ • インストールDVDもあります • ぜひ開発にご参加ください – 参加したい人は • Twitter @sparklegateへDMをください • Skypeでチャットルーム作ります
  • 30.
    まとめ • Wakame-vdcでは OpenFlowを分散させてEdgeで使う – OpenFlow for Virtual Ethernet Bridge • Distributed Control • ハイスケール & Low Latency • ハードウェアを選ばない – Software-Defined Networkingを実現 • まずはSecurity Groupsの実装に • 今後は仮想ネットワークに進展させる • OpenFlow v1.1以降にも期待大!
  • 31.