【浅羽としやのICT徒然】第8回 SDNの目指すプログラマビリティ | RBB TODAY

【浅羽としやのICT徒然】第8回 SDNの目指すプログラマビリティ

エンタープライズ ソフトウェア・サービス
 これまでCloud/DC、WAN、そしてオフィスのそれぞれの領域でのネットワーク仮想化に関する課題について簡単に解説してきました。NaaSを実現するためには、これらの課題の一つ一つを乗り越えながら、領域をまたいで、いつでもどこにでも仮想ネットワークを設定できるような仕組みが必要となります。SDNでは、これらの課題の解決と領域をまたいだネットワークサービスの設定と制御を、コントローラと呼ばれるソフトウェアで集中して行ないます。

 さらにSDNでは、このソフトウェアによる設定や制御をさまざまなレベルのユーザに解放し、ネットワークを「プログラマブル」にすることを目指しています。「プログラマブル」にする、とは、データをネットワーク上で転送していくための方法を、ユーザが独自に指定することができるようにする、ということを意味しています。従来のやり方では、例えばイーサネットで送るデータは、宛先ホストのイーサネットアドレスをキーとして、一定のアルゴリズムに従ってネットワーク上の配送経路が決められていました。これらのアルゴリズムは、ネットワーク機器にあらかじめ組み込まれたソフトウェアに実装されており、ユーザはいくつかの決まったアルゴリズムの中からどれを用いるかを選択して、あとはパラメータを調整するくらいしかできませんでした。しかし、SDNの環境では、配送制御のアルゴリズムはネットワーク機器には組み込まれておらず、各機器での配送方法を上記のコントローラから遠隔指示することで、自由に設定することができるようになります。そのためにOpenFlowのような、コントローラとネットワーク機器の間の配送指示をやりとりするためのプロトコルが用いられます。OpenFlowを用いれば、従来のような宛先のイーサネットアドレスやIPアドレスに頼った配送ではなく、他の様々な情報を用いたデータ配送アルゴリズムそのものを自由に設定することが可能になります。また、配送アルゴリズムの計算を実施するソフトウェアをデータの配送を行う機器から分離し、コントローラで実行させることで、一台のコントローラから多数の機器を集中制御することが可能となるのです。このように、SDNが実現すれば、今までは外部から変更することができなかったネットワークの挙動を、コントローラのプログラム自体を変更したり、コントローラにきめ細かな指示を受け付けるAPIを用意することで、ネットワーク制御の自由度を広げられるようになります。

 しかし「自由」というのはある意味曲者です。逆に全てを指定しなければならない、ということにもなりかねません。再び、軽井沢から松江に行こうと思ったときの例を使って考えてみます。自分を軽井沢から松江のデータセンターまで配送する方法はどのように指示すれば良いでしょうか?最もシンプルな指示で済ませようと思うのなら、タクシーを呼んで「松江データセンタまで行け」と言うのが簡単です。しかし「どうやっていけば良いのかわかりません」と運転手に言われてしまったらどうしましょう。まずは長野県南部の道路地図を見て、例えば、一般道で軽井沢から佐久方面に向かい、立科を過ぎて新和田トンネル有料道路を使って長野自動車道の岡谷ICまでの道を調べて指示します(軽井沢でいきなり高速に乗ると遠回りなので、高くて、かつ、時間がかかるのです)。次に全国高速道路マップを調べて、長野自動車道から中央自動車道、東名高速道路、名神高速道路、中国自動車道を経由し、米子自動車道に乗り換え‥と松江データセンタの最寄りの出口までの高速道路の道順を指示します。最後に松江市周辺の地図を広げ、高速出口を出てからデータセンタまでの道順を調べて指示するでしょう。つまりカーナビがやってくれるような仕事をお客さんがすることになってしまうのです。道を細かく指定したいお客さんも居るでしょうけれども、大部分のお客さんは目的地を指示する以上のことはあまり望んでおらず、例えば「速く行きたいから混んでる道は避けてくれ」とか、「できるだけ安く行け」とか、道順を選ぶ際の方針を指示するくらいではないでしょうか。

 そう考えると、SDNの目指すプログラマビリティというものも、OpenFlowを使ってネットワーク機器のデータ転送方法を細かく指示できるレベルのものと、経路選択の際の方針を指示してあとはよろしくやって、というレベルのものと2つのレベルがあることがわかります。そして、カーナビのようなソフトウェアがその間を自動化して、お客さんにも運転手にも便利な仕組みを作っているわけです。SDNでは、コントローラがこのカーナビの役割を果たしています。

 SDNでは、コントローラを中央に置いて、下に機器を、上にユーザやアプリケーションを描いて図示することが多く、その図を地図に見立てると、上が北で下が南になるので、コントローラと機器の間をSouthbound API、コントローラとアプリの間をNorthbound APIと区別して呼んでいます。Southbound APIはOpenFlowのような標準化が進んでおり、Northbound APIはコントローラを作るソフトウェアベンダーがそれぞれ独自に設計しています。コントローラベンダーは、いかにきめ細かに機器を制御可能で、かつ、エンドユーザに使い勝手の良いAPIを提供できるかを競い合っています。

■筆者:浅羽としや/IIJで、1エンジニアとしてバックボーンNWの構築や経路制御などを担当し、CWCで、技術担当役員として広域LANサービスの企画・開発に従事。現在、ストラトスフィアで、社長としてSDNの基盤ソフトウェアのビジネスを推進中。
《浅羽としや》

関連ニュース

特集

page top