SDN(Software Defined Network)とは、「パケットのルーティングやフィルタリング、帯域制御、ネットワーク分離など、必要な構成や機能、性能などを持ったネットワークを、必要な時にソフトウエア的に確保して利用する技術やアーキテクチャ」を意味します。仮想ネットワークを敷設してSDNを実現する場合が多いのですが、ネットワークの仮想化が必須というわけではありません。さまざまなベンダーのネットワーク機器が混在する環境下で、統一されたAPIを通じて望みのネットワークをソフトウエア的にオンデマンドで取得できることが、SDNのキモとなります。
なお、SDNと同じようなコンテキストで語られる言葉として、NFV(Network Functions Virtualization)があります。NFVとは、ルーターやファイアウオール、ロードバランサーといった、これまで専用のネットワーク装置が担ってきたネットワークの機能をアプリケーションとして実装し、Linuxなどの汎用OS上で動作させてネットワーク機能を担わせる技術を指します。
SDNとNFVは従属関係にある概念ではないため、従来型の静的なネットワークで専用装置の代わりにNFVを使うこともありますし、NFVを使わずネットワーク装置を駆使してSDNを実現することも不可能ではありません。ただし、ネットワーク機能をソフトウエア的にオンデマンドに構成するためには、ネットワーク機能が仮想化されていた方が扱いやすいため、SDNを実現する際にNFVが使われることが多いのは確かです。
このSDNですが、従来の自律分散型のネットワーク機器類だけでは、利用者が望むネットワークをソフトウエア的に、オンデマンドで提供するのは非常に手間が掛かるため、ネットワーク全体の機能を集中制御する何らかの仕掛けが必要になります。そのためのアプライアンス製品やソフトウエアが多数発表されています。これを大きく分けると「Hop by Hop方式」と「オーバーレイ方式」に分類できます。
・Hop by Hop方式
Hop by Hop方式では、「自律的に収集した情報を元にパケットを転送する」従来のネットワークの概念とは異なり、パケットのルーティングやフィルタリングのルールを制御する層(コントロールプレーン)と、実際にパケットを転送する層(データプレーン)に役割を分割し、物理的であれ仮想的であれ、全てのネットワーク機器類をコントロールプレーンから集中制御する仕組みです。
コントロールプレーンにはかなり複雑なルールも定義できるため、ルールを書きさえすれば、ペイロードの内容から判断したルーティングやロードバランス、複雑なフェイルオーバーなどのきめ細かいパケット制御ができます。その半面、全ネットワーク機器類がコントロールプレーンの制御を受け付けられることが前提となるため、導入のハードルが高いのが難点です。
なお、さまざまなベンダーのネットワーク機器を、このコントロールプレーンから統一して操作するためのプロトコルが「OpenFlow」です(OpenFlowプロトコルを用いたHop by Hop方式のSDN実装技術も、「OpenFlow」と呼ばれる場合があります)。
OpenFlowに対応した物理スイッチはさまざまなベンダーから発売されていますし、「Open vSwitch」や「Lagopus」といったソフトウエア的な仮想スイッチもOpenFlowを解釈することができます。OpenFlowスイッチを制御するコントローラーとしては、「RYU」や「Trema」「OpenDaylight」などがあります。
・オーバーレイ方式
こちらは従来のネットワーク技術によって、物理的なネットワークのEnd-to-End接続を確立した上で、GRE (Generic Routing Encapsulation) やVXLAN(Virtual eXtensible Local Area Network)、STT (Stateless Transport Tunneling)などのトンネル技術によってパケットをカプセル化。与えられたルールを元にフィルタリングやフェイルオーバーなどの制御を行うエージェントをサーバーの近傍に配置し、接続やパケットを集中制御する仕組みです。これにより、物理的なネットワーク構成に依存しない仮想的なネットワークを構築します。物理的なネットワークは従来通りの機器や技術を流用できるため、導入のハードルが低い反面、ネットワーク経路上でQoS(Quality of Service)
などのきめ細かな制御を行うことができません。
オーバーレイ方式で仮想ネットワークを敷設するソフトウエアとしては、「OpenVNet」や「MidoNet」「OpenContrail」「VMWare NSX」などがあります。
最後にSDS(Software Defined Storage)ですが、実はさまざまなストレージベンダーがそれぞれの立場で「SDS」と称しているため、SDCやSDNに比べると定義があいまいな言葉です。SDCやSDNに倣えば、さまざまなベンダーの、さまざまな実装方式のストレージ装置が混在する中で、ビジネス目的に必要なストレージ機能をソフトウエア的に確保して柔軟に利用する技術やアーキテクチャ、と位置付けられます。
SDSに求められる機能としては、利用者が望む容量を切り出してブロックデバイスとして、あるいはファイルシステムやオブジェクトストレージとして提供する機能は必須といえます。ただし利用者がストレージに求めるニーズは、千差万別です。高いIOPS(Input Output Per Second)が最重要な場合もあれば、ハードウエアやデータセンターの障害時でもデータを喪失しないことが最重要な場合もあります。加えてデータの漏えい対策が必須の場合もあれば、超大容量のデータをいかに安価に保持するかが望まれる場合もあるでしょう。
このような利用者のニーズを実現するために、データの分散配置やシンプロビジョニング、記憶媒体の階層管理、暗号化や秘密分散などさまざまな技術が開発されています。
結局、ストレージ側の都合を考慮することなく、利用者が必要とするデータ管理サービスをソフトウエア的にオンデマンドで、望みのインタフェースのデータパスで手に入れられることがSDSのキモとなります。利用者のニーズをオンデマンドに満たせるのであれば、物理的なストレージ装置であろうが、ソフトウエア的に実現された仮想ストレージであろうが構わないわけです。
例えば、ベンダーが異なるさまざまなストレージアレイを束ねて仮想ストレージプールを作成し、データセンターを跨ってレプリケーションする機能などを提供するアプライアンス製品もあれば、「Ceph」や「GlusterFS」「SheepDog」といった、複数のコモディティサーバーにデータの断片を分散冗長配置することで大容量化やIOPS、耐障害性の向上を図る、分散並列フォールトトレラントな仮想ストレージソフトウエアもあります。ストレージに求めるニーズを実現でき、なおかつコスト面、運用負荷の面で折り合いがつく製品やソフトウエアを選択する必要があるといえるでしょう。
今回はアジャイルなシステムインテグレーションを実現するために変革すべき5つのポイントと、その変革を実現するために必要なSDI(Software Defined Infrastructure)について概説しました。
従来型の重厚長大なシステムインテグレーションが斜陽を迎えると取り沙汰される昨今、クラウドとクラウドを支える要素技術を最大限に活用してシステムインテグレーションのアジリティを高められるエンジニアでなければ、生き残ることが難しくなってくるでしょう。本稿が皆さんのクラウド関連技術の整理と確認の一助になれば幸いです。
次回は、SDIを活用した自“働”化のためのツール(Chefなどのコンフィグレーション管理ツールや、serverspecなどのインフラテストツールなど)について、より深く掘り下げ解説します。
松井 暢之(まつい のぶゆき)
コーポレート本部 戦略技術センター所属
アーキテクチャ設計やデータモデル策定、フレームワーク構築などバックエンド側のアーキテクトとしてプロジェクトに従事。その後、現部門に異動し、戦略技術の検証、新規サービスの事業企画に携わる。また、インフラ・運用のパターン化、自動化を実現するクラウドオーケストレーションツール「CloudConductor」開発とOSS化をリードしている。
Copyright © ITmedia, Inc. All Rights Reserved.