SDNと最前線 — ネットワークを「プログラム」する

これまでの機器は「箱ごとに自分で考えて転送」していました。最前線の発想はその逆 — 頭脳(制御)と手足(転送)を切り離すこと。ソフトウェアで経路を計算し、スイッチには「こう転送せよ」という表を配るだけ。このSDNと、無数の並列経路を束ねるデータセンターネットワーク、そして仮想化という現在地を、動く図で見ていきます。

1. 頭脳と手足を分ける — 制御プレーンとデータプレーン

従来のルータは、経路を自分で計算し(制御プレーン)、実際にパケットを転送も行う(データプレーン)一体型でした。SDN はこれを分離します。コントローラが全体を見て経路を計算し、各スイッチのフローテーブルに「この宛先はこのポートへ」という規則を書き込む。スイッチは考えず、表のとおり転送するだけになります。

下で「フローを消去」すると、規則を失ったスイッチでパケットが止まります(テーブルミス)。「ルールを配信」を押すと、コントローラから規則が降りてきて、パケットが一気に流れ出します。

コントローラがフローテーブルを配る — 分離の実演
上=コントローラ(制御プレーン)、下の一列=スイッチ(データプレーン)。点線が制御リンク、実線がデータリンク。規則が入ったスイッチは緑の表を持ち、パケット(緑)を通します。未設定のスイッチではパケットが赤く詰まります。
POINT — 「集中して見る、分散して運ぶ」 経路計算を1か所(コントローラ)に集めると、ネットワーク全体を1つのプログラムとして最適化できます。OpenFlow はこの「コントローラ↔スイッチ」の会話を標準化したプロトコルの草分け。スイッチはマッチ(ヘッダの条件)→アクション(転送・書換・破棄)という単純な表引きに徹します。

2. 障害を自動で迂回する — 集中制御の強み

分離の真価は障害時に出ます。リンクが切れると、各機器がバラバラに再計算していた従来と違い、SDN では全体を知るコントローラが最適な迂回路を即座に計算し、影響するスイッチだけに新しい規則を配り直します。

下のボタンでリンクを切ってみてください。コントローラが光って経路を再計算し、パケットの通り道が別ルートに切り替わります。切れる場所によって、選ばれる迂回路が変わります。

リンク障害と再プログラミング — 経路が張り替わる
左のA から右のB へパケットが流れます。太い青線が現在コントローラが選んでいる最短経路。リンクを切ると赤い×が付き、コントローラ(上部)が光って別の等価経路に張り替えます。全経路を断つと「到達不能」に。
注意 — 頭脳が単一障害点になりうる 制御を集中させると、コントローラ自身が落ちたら全体が困るという新しい弱点が生まれます。実運用ではコントローラを冗長化(クラスタ化)し、スイッチは既存の規則で当面転送を続けられるよう設計します。「集中の利点」と「集中のリスク」は表裏一体です。

3. 無数の並列路を束ねる — データセンターとECMP

巨大データセンターの内部は、サーバ同士が超高速で通信し続けます。そこで使われるのがClos(リーフ・スパイン)型の網。どの2台の間にも等価な(同じホップ数の)経路が何本もあるよう作られています。

この並列路を活かすのがECMP(等価コストマルチパス)。各通信(フロー)をハッシュで別々の経路に散らし、全リンクを均等に使い切ります。下で ECMP を切ると全フローが1本に集中して真っ赤に、入れると綺麗に分散します。

リーフ・スパインとECMP — 経路を散らして詰まらせない
上=スパイン、下=リーフ(各リーフにサーバ群)。フローはリーフ→スパイン→リーフの順に流れます。リンクの色=混雑(緑→橙→赤)。ECMP を切ると全部が1台のスパインに集中し、入れると各スパインへ散らばります。
経路 = リーフsrc → スパインhash(flow) mod M → リーフdst M=スパイン数。フローの5タプル(IP・ポート等)のハッシュで経路を決めるので、同じ通信のパケットは順序が乱れず1本の道を通る

4. 網そのものを仮想化する — 最前線

最後の潮流がネットワーク仮想化。1つの物理網の上に、独立した仮想ネットワーク(オーバーレイ)を何枚も重ねます。各テナント(利用者)は自分専用の網があるように見えますが、実体は共有された物理リンク。鍵はカプセル化 — テナントのパケットを外側のヘッダ(VXLAN の VNI など)で包み、物理網はその外側だけを見て運びます。

下では2つのテナント(青・桃)のパケットが、同じ物理パイプを通りながら混ざりません。入口で外側ヘッダに包まれ、出口で外されます。ボタンで片方だけ表示すると、論理的に分離されている様子が見えます。

オーバーレイ仮想化 — 1本の物理網に複数の論理網
左右の箱=各テナントの仮想マシン、中央のグレー帯=共有の物理網。入口スイッチで外側ヘッダ(VNI)に包まれ、共有区間を通り、出口で外されます。色(青=A / 桃=B)は最後まで混ざりません。

5. まとめ — ネットワークはソフトウェアになった

一歩先へ — プログラマブルネットワークの現在地 スイッチのデータプレーン自体を P4 のような言語で記述し、「どんなヘッダをどう処理するか」までプログラム可能にする流れが来ています。NFV(ネットワーク機能仮想化)はファイアウォールやロードバランサを専用機器から汎用サーバ上のソフトへ移し、SD-WAN は拠点間網をクラウドから集中制御します。ネットワークは「配線して設定する物」から「コードで宣言し、自動で実現される物」へ — インフラがソフトウェアの一部になったのが最前線です。