※このブログの記事は個人の見解であり、所属する組織の公式見解ではありません
この記事をはじめて読まれる方は、まずは以下の記事を読んでください。当記事は、以下の記事の続きです。
上記記事で、SDNとは
- 「ソフトウェアによりネットワークを制御する技術のこと」by Wikiである
- 特定の規格ではなく、あくまでもコンセプトである
- だから、「このテクノロジーがSDNだ!」みたいな明確な説明をしずらく、またベンダー毎に解釈がバラバラな事がある
事を説明しました。
なので「SDNが貴方の会社に必要です」って売り文句はナンセンスです。SDNは固有のテクノロジーでも規格でもありませんから。
とは言っても、それだとSDNの概要を説明しずらいです。
なので、「SDNを活用して実現できる事」という視点で、以下の2つに分類する事を説明しました。
- ネットワークの設定(network service configuration)
- ネットワークの定義(network service definition)
「ネットワークの設定」は前回の記事で説明しました。
この記事では「ネットワークの定義(service definition)」の概要を説明します。
ちなみに、以下の記事でも軽く紹介した通り、私はservice definitionをSDNで行う事には色々疑問を感じています。
ただ、概要を知っておく事は重要だと思うので、当記事で説明しますね。
内容をある程度理解したら、読者の方も沢山疑問が湧いてくると思います。。。
この記事では「Controllerとは」とか「OpenFlowとは」とかのSDN wordは扱いません。
専門用語は、概要が理解した後に学べばよいです。
まずは概要を勉強しましょう。
SDNを活用したネットワークの定義(Service Definition)とは?
「SDNを活用したネットワークの設定」の場合、設定サーバーで自環境のネットワーク機器の設定情報を集中管理する。
例えば、ネットワーク機器に設定を追加したい場合、人間は各ネットワーク機器を触らずに、設定サーバーに設定情報を保存する。
そして、設定サーバーが人間の代わりに各ネットワーク機器に対し設定情報を反映させる。
このステップを踏むことで、仮に設定を反映したいネットワーク機器が膨大な量であっても、人間が設定するタイミングは設定サーバーに対して1度だけでよいのです。(勿論、設定内容が共通であった場合に限りますが)
では、「SDNを活用したネットワークの定義」とはどういう事でしょうか?これは「ネットワークの設定」よりはややこしいので、例をあげてみたいと思います。
例えば、現在社内ネットワークにて以下の課題があるとします。
ネットワークの通信経路が、必ずしも最適ではない場合
ここでの「最適」とは様々な要素がありますよね
- 遅延が最小な経路最適?
- まんべんなく負荷分散される経路最適?
- Layer3よりも上のコネクションの視点での経路最適?
意見は色々だと思いますが、今回は「使用帯域(輻輳)」の視点で考えたいと思います。
図を見た方がわかりやすいですね。以下の例です。ユーザがWebサーバーにアクセスしたいとします。
まず、データはユーザからルーターAに流れます。ルーターAの次はルーターBとルーターCが繋がっています。
仮に、ルーターAに「Webサーバーへの通信はルーターBに送信する」という経路設定が事前にされているものとします。(静的経路などで)
でも、ルーターAとルーターB間の帯域が、何らかの理由で沢山利用されていたとします。そうすると、通信の遅延の原因になるかもしれません。場合によっては通信出来ないかもしれません。
一方、ルーターAとルーターC間の帯域は空いています。感覚的にはルーターCへの経路を利用した方が良さそうですよね。
でも、事前に「Webサーバーへの通信はルーターBに送信する」という設定だけだと、ルーターCへはデータを転送しない訳です。せっかくルーターCへの経路が物理的に繋がっているのに。
ここでCCNAレベルの知識がある方は「ダイナミックルーティング有効にしたらルーターCも使えるんでない?」と考えるでしょう。はい、それも確かに一つの解決策です。CCNP/CCIEレベルの方、Floating StaticとIP SLAとかでも出来るかもしれませんね。でも、その辺の議論は別記事でさせてください。
考え方は合ってます。解決するために様々なソリューションがあるだけです。その一つとして、SDN(Software Define)があるだけです。
今回はSoftware Definedによって解決する話ですから、話を戻しますね。
Software Definedによる解決策の例
この課題に対する一つの解として、「経路制御装置」を利用した動的な経路調整の方法があります。
ルーターAは自分自身だと、ルーターBかルーターCのどちらにデータを転送すれば良いのかを知りません。データの転送が必要だと判断した場合、経路制御装置に聞きます。
以下の図のようにルーターAがデータを転送したい場合、まずは経路制御装置に「自分がどこに転送すればよいか?」を問い合わせます。
経路制御装置は、事前に、自分が管理しているルータとリンクの情報(リンクの状態・輻輳の率等)を取得しておきます。なので、ネットワークの何処が輻輳しているか知っています。
経路制御装置はルーターAとルーターBの間が輻輳している事を事前に知っているので、帯域幅の使用率が低いルーターCとのリンクへ転送するよう、ルーターAに指示します。
結果的にルーターAは輻輳していないルーターCに対してデータの転送をする事ができました。
ネットワークを定義するという事
今回の例は、あくまでもコンセプトを理解して頂きたかった為に紹介したモノなので、現実味はゼロです(笑)
重要なのは、経路(ネットワーク)が経路制御装置にて定義(Define)されている事です。プログラミングされている訳です。Software Defineされているのです。
今回の例はネットワーク用語的にいえばLayer3っぽい書き方をしましたが、SDNが必ずしもLayer3のSoftware Defineを実現する訳ではありません。Layer2をSoftware Defineする事も出来ますし(例えば、ARPの挙動を変えるとか)、Layer4以上をSoftware Defineする事も出来ます。なぜなら、単に期待される挙動に合わせた開発をするだけなので。
ネットワーク定義(Network Service Definition)は単純に言えば、ネットワークの挙動をプログラミングするという事です。
別にこの「経路制御装置」を利用した動的な経路調整なんてのは、コンセプトとしては特段目新しいものではありません。ハイエンドのネットワーク機器だとOSPFのForward Address modificationとかできますし。ここで重要なのは(何度も取り上げますけど)そのコンセプトのロジックをSoftware Defineしていることです。
ネットワークの定義、夢が広がりますね
ネットワークをプログラミングする訳ですから、なんか楽しそうですよね。なんでも出来そうですよね。
上記の例はしょぼいですけど(けど、SDNベンダーがよく出してくる例だと思います)、例えば「新しい仮想サーバー群がネットワークに追加された場合、それをSDN機器が自動的に検知して、そのサーバーに対応する仮想分散装置・ファイアーウォール・経路の制御等を自動的にデプロイする」みたいな夢のような事も実現出来ます。
はい、次回は現実に戻します
今回は以上です。
どうでししたか?前回の「ネットワークの設定」よりは、いわゆるSDNっぽい話題に聞こえたんじゃないでしょうか。
でも、こんなの、本当に出来るのでしょうか?
あと、こんなの、本当に必要なのでしょうか?需要があるのでしょうか?ビジネスとして成り立つのでしょうか?
その辺りの、個人的な見解は少しずつ紹介出来ればと思っています。
次はSDNを取り巻くキーワードを紹介しつつ、もう少し抽象論から具体的なところに潜っていきたいです。(ControllerとかOpenFlowとかも)。あとはVMWare NSXか・・・
あとは、NFVについての概要を先に記事に起こしたほうが良いかもしれません・・・
コメント