2014年12月7日日曜日

SDN Advent Calendar 2014


折角なので参戦。お題はSDN。つまり現在自分達がしている仕事のことを書けば、そのままSDN話になるのだけれど、それが大人の事情であんまり突っ込んだことを書くと怒られるだろうなあというのが容易に想像できてしまい、特にネットワーク界隈というかインフラの世界はどうも秘密主義の空気が蔓延していて、それだけカネになるってことなのかしら?などとゲスパー中。

何言ってんだお前と言われる前に自己紹介。Bonetと呼ばれるPCIeベースのインタコネクトを開発する会社でCTOをやってます。ハード屋とか思われてますが、大昔OSSをメインでやってたSI屋の中でJavaとか書いてました。それからずっとOSSとLinux kernelとデバドラでメシを食ってきて、ガチのハードやFPGAはここ10年くらいの話。Distributedなシステムアーキ全般に興味。

SDNは1年前にのんびりと次世代インタコネクトの設計をしていたところ、突然現れたにっちもさっちもいかない某プロジェクトに気が付いたら巻き込まれていたという極めて不幸な出会い。今でもOFの仕様書の解釈をめぐりオレの貴重な休日が費えたりしているので好感度はかなり低い。これは何か似ているなあと思ったら受験勉強のソレに酷似している。あ~思い出したら腹が立ってきたああ!細かく書きたいけど書けないいい!(この辺り実に大人である


それでは話の枕を安田さんに頂いて、「SDN」という言葉が本当に世に浸透したなと思うと同時にもうNが取れていて「SDN」ではなく「SD*」のSoftware Definedが氾濫している。よく聞くのがInfrastructureとDataCenterで、インフラはまあ分からないでもないけどデータセンタはセンス無いナ~と思いつつも、これからは「SDI/O」だぜと言い続けていた自分も同じ穴のムジナであろう。なんでもかんでもSoftware Definedにすれば良いというものでもないが、「SDN」はとにかく仮想化したがりなエンタープライズ需要との相性が極めて良い。

止まらない。管理も容易。必要に応じて性能がスケールする。大体はこんなところなのだが、そんなのアプリレベルで実現すればベンダーも儲かっていいじゃんと常々思っていたところ、「SDN」のようなネットワークレベルで更にコンピューティングのコモディティ化を促すような概念(技術じゃない)が出て来て、西海岸の人達はどうしてこう自分達の首を絞めるのが好きなのだろうか、ちょっとはそれに巻き込まれる我々の身になれと感謝と恨みの念でいっぱいである。

そして案の定、OVSに代表されるソフトウェアスイッチが百花繚乱。さらにコストを押し下げ、辛うじてまだミドルエンドのエンタープライズなハードスイッチ需要が残っているが(ハイエンドはそもそも仮想化に向いていない)、Control PlaneとDatapathのインターフェースがはっきりと仕様化されれば、いずれはそれも駆逐されていくだろう(OFとその他の市場争いもあるけどここでは無視)

ここまでインフラが整うとIoTという言葉が現実味を帯びてくる。低速・低価格のベストエフォートな回線ではPacketIN上等、高速・高価格の固定回線ではPackeINを可能な限りさける(というより多くの場合overlayだろう)というような運用がデフォルトになっていく。分かりやすい。従って「SDN」は、一番下のカオスなどんなパケットが飛んでいるか分からないネットワークを収拾するのに非常に向いていて、上位のある程度秩序だったネットワークでは信頼性等の別の問題が発生し、だからこそそこの仕様を切り取り、ハード化するには向いているとも言える。

と、ここまでが一般的なイメージで語られる「SDN」(入ってきたパケットを加工し特定のポートから出すという意味で)。最近OFの仕様書をにらめっこしながら、頭を痛めているのがキュー・QoSに代表される回線分割技術だ。

数年前XsigoがOracleに買収されたときに、どこかのメディアがXsigoをSDNを主体とする企業として紹介していて思わず苦笑したものだが、今ならはっきり分かる。XsigoはSDN企業だった。10GbEのNICを仮想化し、インターコネクトをIBにして、各CPUからは仮想NICからIBのインターコネクトを仲介し10GbEにアクセスというのが主旨だったように記憶している。当時はI/O仮想化が目立つ時期だったので、Xsigo自身もそのように売り出していた。だが今思えば、GUIから動的にリモートのNICを作り出し、回線速度を絞れるのはSDN+仮想化そのものだった。ただそれがラック内で完結していた為、気が付かなかっただけなのだ。

逆に言えば、それくらい隣のラックは遠い。インタコネクトを専門とする我々からすると此岸と彼岸くらい離れている。フロア内を這い回るのは今や徹底的にコモディティ化されたEthernetの独壇場で、FCすらEthernet上に統合されて随分経つ(まだ過去の資産では存在するのだろうけど)。もはやカテゴ5eのケーブルを適当に繋いでもFabricという言葉で誤魔化され(まあこれもSDNの一種と言えよう)、何とかなってしまうのが現実。そんな中にえーとすいませんこれ専用のケーブル(しかも太い)なんですけど、ちょっと使ってくれませんか?とお願いしたところで、口も聞いてくれないのがオチだ。

その上Intelが世の外付けインタコネクト屋をガチで殺しに来ていて、SC14で


「Intel omi-path architecture」なるものが発表されている。以前からプロセッサに統合された100Gbpsベースのインタコネクトを開発している話は聞いていたが、ここまで具体的な数字が出てきたのは驚きだ。数年前にIntelがQlogicのIB部門を買収し、自分達で3GIOとして仕様を作った後に見捨てたIBに対し悔悟の念でもあるのかと思いきやこの仕打ち。さすがIntel!トランスメタへの露骨な嫌がらせを思い出して涙が止まらない。

ただ冷静に考えるに、恐らく外付けのインタコネクトはもう変化せざるを得ない。既存のアーキテクチャでは、プロセッサが抱え込んだインタコネクトには太刀打ちできない。京で採用されている富士通製SPARCのTOFUもそうだし、AMDもSeaMicroを買収し同じような方向に舵を切っている。この辺りは安田さんのこの記事が詳しい。



インタコネクトは純粋にインタコネクトとして使用される場合、帯域よりもLatencyが圧倒的に重要で、とにかくデータに近いことが要求される。これから先のコンピューティングにおいてインタコネクタデバイスがPCIeの向こう側にいるのは、残念ながら致命的に遠い上に、仮想化と外部デバイスからのDMA転送の相性が悪すぎて、苦肉の策のIOMMU使用時の性能劣化は顕著に過ぎる。割り込みの遅延も深刻で、それを回避する為に1コア丸ごとポーリングでデータの到着待ちをMPIでカバーしているのがHPCアプリの実態。当然本来そんなものはハード側で処理すべきだ。

ただこれらの問題はプロセッサ直付けのインタコネクトも抱えているので、外付けインタコネクトな人達はその辺りに注力していくことになるのかなと感じている。特に割り込み処理は現在出回り始めている半ASIC・半FPGAなデバイスの格好の課題で、かつSoftware Definedで上位レイヤーから統合的に管理できると面白くなるなあと、末端のインタコネクト屋としては思う。

更にRDMA(iWarpぅ…)も含めてもっと書きたかったのだが、長くなったので今日はここまで。以上、SDNを含む四方山話。

0 件のコメント:

コメントを投稿