ブログトップ 記事一覧 ログイン 無料ブログ開設

仮想化でプリセールスしてるSEの一日 このページをアンテナに追加 RSSフィード Twitter

2014年12月29日

Software-Defind xx と対応ハードウェア - ネットワーク編 (1)

f:id:ogawad:20121001003301p:image:right

  • ネットワーク編 (1)

最近、「software-defined something.. (SDx)」というお題で、講演の機会をよくいただくのですが、SDx の正確な定義をよく分かっていません。

もう 9 年くらい経つ「サーバー仮想化」も software-defined Compute のような気がしますし、ストレージについてはユニファイド系の多くが Xeon プロセッサを積んだ x86 サーバーで動いているわけで、言ってしまえばそれも software-defined Storage なのではないかな、と思ったり。。。


さすがに最近は「software-defined になるとハードウェアは何でも良い」と言う人は減っていますが、ネタに困っていることもあり、SDx を意識したハードウェアや設計ネタについて数回紹介していきたいと思います(なるべくニュートラルに)。



物理スイッチと仮想スイッチ

最近のネットワークスイッチは、Broadcom Trident などのスイッチプロセッサと Linux/BSD ベースの OS(ファームウェア)で作られています。

しかも、x86 プロセッサにおける Intel Xeon のように、スイッチ用プロセッサは Broadcom Trident が寡占的です。このため、下図のようなスイッチのハードウェア部分は基本的に共通であり、各社は OS で独自性を出しています*1


f:id:ogawad:20141230003602p:image


つまり、Hyper-V や VMware といったハイパーバイザーに含まれる「仮想スイッチ」はもちろん、「物理スイッチ」も一種の "software-defined" なわけですが、同じ SDx である物理スイッチと仮想スイッチだと、効率が良いのは前者です。

理由は単純。先ほどの Broadcom Trident はスイッチ専用プロセッサなだけあって、専用の命令セットで多くのスイッチングをハードウェア処理できます。

ソフトウェアプログラムの場合であれば数十〜数百コードになるスイッチ処理が、特殊な命令セットを持つ専用プロセッサによって一瞬で処理できてしまうのです
(できるだけソフトウェア処理させないよう、ASIC を更に搭載するケースもあります)



仮想スイッチの処理によって CPU が振り切る

これに対し、仮想スイッチはスイッチ処理のほぼすべてを CPU で処理します。
CPU には仮想スイッチの処理を高速化する命令セットはありませんし、特別な ASIC も搭載されていません。

ここで、昨今流行りの 10Gbps NIC*2 を考えてみましょう。10G や 20G のトラフィックを仮想スイッチに流した場合、CPU がどれくらい奪われてしまうか想像できますでしょうか?


次のスライドは若干古いですが、ネットから入手できる資料の抜粋です。


f:id:ogawad:20141230012127p:image

f:id:ogawad:20141230012125p:image

注意)仮想スイッチのコードは各社独自ですので負荷に差異はあります。また、後者のグラフは元々は VMQ の効果測定の結果です。VMQ を有効にして処理コアを増やした途端、そのコアの使用率が 0 → 80% に跳ね上がったところに目を向けていただければと思います。
こちらのベンチマークもおすすめです。http://it.anandtech.com/show/2956/10gbit-ethernet-killing-another-bottleneck-


帯域やスピードばかり気にしがちになりますが、同じ 1 秒間において、
10Gbps は 1Gbps の 10 倍の量をこなしている ことを思い出してください。



どうやって設計する?

この問題を回避して設計するための基本は
「仮想スイッチにはできる限りスイッチング処理させない」ことです。
CPU が振り切っているので、基本的にはハードウェアによる対応になります。


  • 仮想スイッチへ流れるトラフィックを減らす技術を用いる
    • NIC Partitioning
    • SR-IOV
    • VEPA
  • 仮想スイッチの処理を肩代わりする技術を用いる
    • Virtual RSS、VMQ(これは個人的にお勧めしません)
  • 設計でカバー
    • 仮想スイッチに tagged VLAN は流さない
  • 力技
    • 18コア Xeon などのハイパワープロセッサで押し切る

この辺りはまだ「software-defined に対する現実問題」なのかなと思います。

もちろん、仮想スイッチの方が柔軟でプログラマブルです。
各社の仮想スイッチの仕様がある程度統一化されて、x86 プロセッサに仮想スイッチ関連の命令セットが搭載される日を心待ちにしています。。。


次回は、最近話題の VXLAN の CPU 負荷 について触れてみようと思います。

*1:Trident チップを複数載せたり、処理を高速化するために ASIC を追加するものもあります

*2:LAG を用いる場合は 20Gbps

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ogawad/20141229/1419872794