先日 SDN を取り上げたとき、SDN の狭義の定義は「Flow/Path Programmability」ではないか、と書きました。何もかもが“SDN”という文脈に絡めとられ用語が膨張して行くのは、市場の活性化にはよいのかもしれませんが、技術者としては気持ち悪く、どうにも傍ら痛い。そこで、仮にでもよいから定義しておこうと思ったのです。「私が SDN という用語を使う場合、特に注釈がない限りは Flow/Path Programmability という意味です」と言えれば、少なくとも漠然とした会話にならずに済みます。しかし、そんなものが定着することもなく、“SDN 的な何か”が模索され続けています。一方で、「Beyond SDN」というフレーズ[1]も出ています。定義も無かったのに、今度は超えてしまうのか―。:) マーケティング畏るべし。
SDN – 最初の定義
「Flow/Path Programmability」という定義に根拠がない訳ではありません。Software-Defined Networking という言葉が最初に使われたのは、2009年 4月の MIT Technology Review [2] だそうですが、そこでは「SDN」という言葉が明確に「Flow Programmability」を意味していました。ただ、「Flow」と言うと、多くのネットワーク技術者にとってはセッション レイヤ以上の個別フローを表すことが多いと思われたため、「Path」という表現を追加したいと思いました。Path であれば、Aggregated Flow(複数のフローをまとめて扱う)も包含できますし、L3 Path やそれ以下の Path も包含できるからです。なお、当初は SDN==Openflow というような論調もありましたが、私はこれには与していませんでした。OpenFlow は、1つの Programmability に関する方式可能性に過ぎず、他の方式も適材適所で使った方が、シンプル性、スケール性、自律分散との両立による頑健性等の面で、よいという思いもありましたので、そのことも「Flow/Path Programmability」という言葉に託しました。Data-plane Programmabilty と言ってもよいかもしれません。
「SDN的な何か」 = 仮想化
現時点でSDNを定義できないとすると、「SDN的な何か」とは何なのでしょうか。この9月に SDN Japan 2013 が開催されましたが、そこでのテーマを大まかに分類してみました。すると、35 セッションのうち、Flow/Path Programmability をテーマにしたものは然程多くなく、DC/Cloud、Network Virtualization、NFV と言った仮想化関連が大半を占めました。(35件中 16件)。
これは日本だけの現象なのだろうか?と思い、10月にフランクフルトで開催された SDN & Openflow World Congress のプログラムを調べてみたところ、こちらでも、大半が仮想化関連でした。(58件中 33件)。ここでは、NFV Forum、SDN Cloud & DC Forum というトラックがあったため、仮想化関連が多いのは必然という見方もできます。しかし、Infrastructure & SDN Transport Forum というトラックもあり、しかも「Openflow」をタイトルに掲げているカンファレンスなので、元々の Data-plane Programmability がもっと語られてもよいはずです。そうではない、ということは、やはり仮想化への関心が際立っていると言えます。
確かに、SDN 自体は目的ではありませんから、実現したいこと、達成したいことを話題にする場合は、SDN 自体は語られないのは当然かもしれません。要は、実現したいこと、達成したいことは、仮想化だった(!) ということです。
ちなみに、学術的カンファレンスである ACM Sigcomm HotSDN では、トピックの様相は大分異なります。2013年8月に開催された HotSDN では、次のような構成となっていました。
(注:SDN Japan および SDN&Openflow World Congress に関して、テーマの分類は、タイトルとアブストラクト情報を基に解釈しましたので、多少正確でない場合があります。なお、Sigcomm HotSDN に関しては、主催者側の分類をそのまま使いました。)
アーキテクチャ変遷と仮想化
仮想化への要請があったから SDN が活況なのか、SDN が活況だから仮想化がブームになったのか。共起関係から因果関係を帰結することはできないので、今はどちらなのかはわかりません。ただ、これまでのネットワーク アーキテクチャの変動を思うと、変動の動きがあるときに、必ず仮想化を伴っている、ということに気づきます。ソフトウェアの領域でも、手続き指向からオブジェクト指向への変遷はまさにそうでしたし、IP ネットワークの領域でも、MPLS による Path の階層化・抽象化、アドレス枯渇議論が起こったときの Location/ID 分離と Overlay、IPv4/v6 共存方式としての Encapsulation/ Translation、そして今回の、データセンターネットワーク仮想化における Edge Overlay。
こう考えると、ケンブリッジ大学のコンピュータ科学者であった David Wheeler の有名な言葉 [3]を思い出さずにはいられません。
All problems in computer science can be solved by another level of indirection.
RFC1925 「The Twelve Networking Truths」(12のネットワークに関する真実)にも次のように書かれています。[4]
(6) It is easier to move a problem around (for example, by moving the problem to a different part of the overall network architecture) than it is to solve it.
(6a) (corollary). It is always possible to add another level of indirection.
アーキテクチャの進化は、多層化(Overlay)と統合(Convergence)を繰り返しているのかもしれません。すなわち、困ったら Overlay!でもあまりにも多段になると効率が悪くなってくるので Convergence、そしてまた Overlay…。(以下繰り返し)
[1] http://www.informationweek.com/infrastructure/networking/cisco-insieme-aci-goes-beyond-sdn/d/d-id/899727
[2] http://www2.technologyreview.com/article/412194/tr10-software-defined-networking/
[3] http://en.wikipedia.org/wiki/David_Wheeler_(computer_scientist)
2 コメント