SDNの目的はどちらですか?「自動化されたネットワーク」と「ネットワークの自動化」
Please find the English language post, by Lori MacVittie, from which this was adapted here.
この2つには違いがあります。そして、その違いはユーザがどのような技術を選択するかに大きな影響を与えることになるので重要です。SDNが、初めてメジャーな技術として登場した2012年のInteropで は大きな期待をもって迎えられました。しかし、この期待は次第に弱まっていくことになります。その理由は、コントローラの可用性や拡張性の確保、ベンダー 間の相互接続性、フローテーブルの拡張性など技術的な制限が認識されためです。また、ネットワークの接続性を提供するレイヤー 2-3よりもアプリケーションの可用性・安全性・高速性を実現する上位のレイヤー 4-7の統合管理に欠けている事も課題として認識されました。
しかし、OpenFlowやネットワークのコモディティ化についていろいろと騒がれていた当時も、SDNが もたらすメリットの一つとして「自動化」が挙げられていました。一般的に、ネットワークはコントロールプレーンとデータプレーン間の密接な結びつきによって制約を受けており、効率的な管理やスケールができないと考えられていました。これについては確かに正しいと言えます。
OpenFlow方式のSDNは、「自動化されたネットワーク」向けのインフラ構築にフォーカスしようとしています。つまり、管理者が十分に把握済みの所定のルールに基づいて、パケットをフォワーディングしてアプリケーションの要求に応えようとしています。一方で、より運用を重視する方式のSDNがあります。これは「ネットワークの自動化」にフォーカスしようとしています。前者(OpenFlow方式)は、パケットのフォワーディングルールを迅速にネットワーク機器にフィードする事に注力しており、後者(運用を重視する方式)は、コンフィギュレーションや運用プロセスの迅速性に注力しています。
ネットワークデバイスごとに設定方法が異なるモデルでは、複雑性を増すので運用面に影響が及んでしまいます。つまり、次世代のテクノロジによって開発されるアプリケーションからの要求に、ネットワークサービスの提供スピードが期待される基準に達していないということです。基本的に、従来のネットワークモデルはサービスをプロビジョニングするスピードに時間がかかる上、エラーも発生しやすく、アプリケーションの要件にまったくフォーカスしていません。
それに対し、オープン且つ標準化されたAPIやプログラミング可能なインターフェイスを経由した「ネットワークの自動化」は、ネットワークサービスの自動プロビジョニングを実現します。「ネットワークの自動化
自動化」の目標は、ダウンタイムの発生、コストの増大、スキルの高いエンジニアによる長時間の稼働などの原因となる運用上の問題を解決することにあります。
また、OpenFlow方式のSDNがアプリケーションにとってステートフルなネットワークサービスを処理する上でスケールできないことも状況を複雑にしています。ステートフルなネットワークサービスには、ステートフルファイアウォール、アプリケーション負荷分散、Webアプリケーションファイアウォール、リモートアクセス、IDの識別、Webパフォーマンス最適化などが含まれます。これらのサービスは、その機能を実現するためにパケットデータを完全に解析する必要があるため、必然的にデータが流れるパス上に常駐する必要があります。サービスチェイニングを利用してステートレスサービスとステートフルサービスの両方に対応するアーキテクチャモデルを実現することは可能ですが、複雑になってしまいます。
そこで問題となるのは、SDNにより何を達成したいのか、ということです。どのような目的を持ち、どのようにして成果を測定するのかを明確にする必要があります。これらの質問に答えることができれば、どちらのSDNの手法を検討すべきであるかが、より明確に理解できます