SDNとは?簡単に概要を説明します、その1(Service Configuration)

SDN

※このブログの記事は個人の見解であり、所属する組織の公式見解ではありません

まずは、SDNの本当にざっくりとした概要を説明します。

まだ「OpenFlowとは・・・」とか「white box switchとは・・・」とかは出てきません。「抽象化(Abstraction)」という言葉はSDNを理解するうえで重要なキーワードですが、こちらもあえてこの記事には記載しません。焦らず、まずは概要を理解していきましょう。

最初に、SDNとは?についての概要です。

SDN自体は「ソフトウェアによりネットワークを制御する技術のこと」by Wikiですので、特定の規格の名称ではなくあくまでもコンセプトです。まず、これを理解してください。つまり、SDNとはTCP/IPやEthernetのような定まった規格のことではありません。

「ソフトウェアによりネットワークを制御する技術」って言ったら何でもありなイメージになっちゃいますよね。なので、もう少し具体的な話をしましょう。

ネットワークをソフトウェアで制御したら、どんな便利なことができるか?ですが、大きく分けると以下の2つに分類できます。

  1. ネットワークの設定(network service configuration)
  2. ネットワークの定義(network service definition)

もちろん、細かくは上記以外にもできることはあります。ソフトウェアでネットワークを制御することは全てSDNと言えるので。

でもそうなると話が発散されるので、とりあえず大きく分類すると主に上記の2つがポイントとなると理解ください。

次は、この2つの内容についてもう少し掘り下げていきます。

今回の記事は、ネットワークの設定をソフトウェアで制御するメリットについて説明します。

※「ネットワーク」という単語が出てきた際は「コンピュータネットワーク」と置き換えてくださいね。

スポンサーリンク
レクタングル大

ネットワーク環境の現状

まず、現在のネットワーク環境を考えてみます。

最近の企業ネットワークの構成は数年前よりもどんどん複雑になって行っています。ネットワークが複雑になっている理由として以下があげられるでしょう。

  1. ネットワーク機器の多様化
  2. 耐障害性の対応
  3. 多種ベンダー機器の増加

ネットワーク機器の多様化

最近のネットワークは、以下を代表とする多数のネットワーク機器で構成されています。

  • スイッチ(L2/L3)
  • ルータ
  • 負荷分散装置
  • SSLアクセラレータ
  • ファイアーウォール
  • SSL/VPN

初めの2つがネットワークを構成する、いわゆるパケットをルーティングするための機器ですよね?残りの4つは、様々な要件でネットワークに付与される機器です。しかし、特にファイアーウォールは昨今のセキュリティ事情でエンタープライズには必須となってきています。

このように、最近は非常に多くのネットワーク機器で企業ネットワークは構成されています。昔に比べるとどんどん複雑になってきています。

SDN_1

 耐障害性の対応

ネットワーク機器の多様化により、ネットワークトポロジの中に沢山登場人物が増えることになりました。それは、可用性の観点での検討事項が増加したことを意味します。単一障害点を排除するために、各機器を冗長構成にする必要があるのですが、その手順・設定方法・テクノロジーは機器によってまちまちです。スイッチをスタック構成にしたり、負荷分散装置は独自のHA構成にしたり。また、冗長化を考慮すると単純に配置する機器が倍になります。運用・保守担当社からすると作業量が増えますね。

SDN_2

多種ベンダー機器の増加

ネットワークトポロジ上に様々な種類(機能毎)の登場人物が多数登場する、それは様々なベンダーの機器によって構成されることを意味します。これまではCiscoメイン、負荷分散装置はF5程度だったものが、もっと色んなベンダーの機械が増えるわけです。

現在のネットワーク関連の課題

こんな感じで、企業ネットワークはどんどん複雑になってきてます。その結果、これまでよりも様々な課題が浮かび上がってきています。

  • 様々な種類の機器のテクノロジーを知っている人がいないといけない
  • 大量のネットワーク機器を設定する人員がいないといけない
  • 様々なベンダーの機器の設定方法を知っている人がいないといけない

要約すると、色んな機械が増えた(そして、これからも増え続ける)訳です。
機器を増やすことはお金さえあれば比較的簡単です。でも、その機器のノウハウを持っている人員を常にアサインしておくことは非常に困難です。機器が増えるごとに現在の担当者のスキルの底上げをしたり、アウトソースするのも大変です。これは機器が増えれば増えるほど、ますます困難な課題となります。

SDNによって「ネットワークの設定」を集中的に行う

SDNでは、「ネットワーク機器を集中して設定するサーバー(以下設定サーバー)」みたいなものを配置します。
まず、ネットワーク機器が追加されると、設定サーバーに追加した機器情報を追加します(Software defineするわけですね。平たく言うと、プログラミングするわけです)。
ネットワーク機器の設定変更の必要性が出た場合、人間は設定サーバーに各ネットワーク機器に設定したい内容を登録します(正確には事前に登録した設定ロジックの一覧から、設定する命令を選択する)。
設定サーバーは選択された設定(Software defineした)ロジックで、各ネットワーク機器に設定を行います

つまり、人間は直接ネットワーク機器の操作は行わないモデルです。

この方式を利用すると、例えば以下のようなメリットがあります。

複数の機器に、共通の設定が容易に行うことができる

例えばSNMPサーバーのIPアドレスが変わった場合、これまでだと全N/W機器にログインして設定変更を行う必要がありました。

SDN_3

設定サーバーの方式を利用すると、人間は設定サーバーに設定依頼を1回するだけ済みます。あとは設定サーバーが全対象機器に設定を代理してくれます。

前述したとおり、企業のN/W機器は冗長構成となっています。設定サーバーの方式を利用すると、人間は冗長の×2を意識する必要も殆どありません(設定時には)。

SDN_4

各機器固有のコマンドを覚える必要がない

ネットワーク機器の設定なんて、通常は汎用的なものであるはずです。

例えば静的経路の追加やダイナミックルーティングの設定など、各ベンダーの機器の設定コマンドが違うだけで設定内容は同じな場合がほとんどです。

設定サーバーの方式を利用すると、人間は設定サーバーの操作やコマンドを覚えるだけでよいです。 各ネットワーク機器の設定は設定サーバーが行うので、各ネットワーク機器のベンダー依存コマンドは覚える必要がありません。

作業のスケジューリングが容易

設定サーバーに設定内容をスケジュール登録すれば、決まった時間(例えば業務時間後)に自動的に各機器に設定を行ってくれます。ネットワーク機器によってはスケジューリング機能が実装されていないものもあります。

そんな機器でも設定サーバーがスケジューリング機能を保有しいていればスケジュール作業が可能となります。

色んな疑問がでますよね

誰が「共通言語」から「製品固有言語」への変換を行うの?

機器追加時に、誰が設定管理サーバーへの登録を行うの?

そんなに単純なの!?(いや、違う)

とか沢山の疑問がわくと思いますが、それは別の話です。 コンセプトとしてはこういう話がありますす、というのをまずは理解していただきたいです。

SDNによる「ネットワークの設定」概要はここまでです

ここまでで気づいたかもしれませんが、ネットワークの仮想化については全く触れてませんよね。私は今回、あえてネットワークの仮想化(ネットワーク「機器」の仮想化含め)には触れませんでした。

SDNとネットワーク仮想化は別物です。雑誌やニュースでは、よくSDNとネットワーク仮想化の話題が同一に扱われることがあるので誤解を生むことが多いと感じます。

SDNとネットワーク仮想化は別ですし、お互い必須でもありません。ネットワーク仮想化が促進されるとSDNのメリットがより前面に出ることは事実ですけどね。この辺はもう少し概要を説明してからにさせてください。

「SDNとはなんぞや?」という話がなかなか分かりずらい理由の1つとして、具体性のある記事が世の中に少ないことがあるんじゃないかな?と思ったので、まずはこの記事を書きました。

重要なのは、「設定サーバー」の内容がSoftware Definedであることです。そこのプログラムロジックが、本来人間がやっていた作業を吸収しているのです。

次回はSDNで出来ること2つ目の「ネットワークの定義(network service definition)」の紹介をします。恐らくこちらの方が「SDNチック」という印象を受けるでしょう。でも私はこれが本当に実運用の視点でSDNでできるのか?SDNでやることのメリットがあるのか?について懐疑的です。その辺も次回で・・・

勉強を再会する方へ
スポンサーリンク
レクタングル大
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">