(57)【要約】  コンピュータ装置上に実装されたコントローラを用いてネットワーク内のスイッチを制御することができる。ネットワーク内のスイッチには、エンドホスト及びサービス装置を結合することができる。コントローラは、仮想スイッチ及び仮想ルータの仮想ネットワークトポロジを生成することができる。コントローラは、仮想ルータ及び／又は仮想スイッチを、サービス挿入を実行するように制御することができる。コントローラは、１又は２以上の選択されたサービス装置を通じてネットワークトラフィックをリダイレクトするように仮想ルータ及び／又は仮想スイッチを制御することによってサービス挿入を実行することができる。コントローラは、ネットワークトラフィックと、このネットワークトラフィックに対して行うべきサービスとを識別するサービス挿入ポリシーに基づいて、どのネットワークトラフィックをどのサービス装置にリダイレクトすべきかを決定することができる。【選択図】図８
2017506025.tif 000002
【特許請求の範囲】
【請求項１】
スイッチに結合されたエンドホストを有するネットワークにおいて前記スイッチを制御するコントローラを使用する方法であって、
前記コントローラを用いて、それぞれのエンドホストグループから、少なくとも１つの仮想スイッチが少なくとも２つのスイッチからのポートを含む複数の仮想スイッチを形成するステップと、
前記コントローラを用いて、前記仮想スイッチのグループから、ネットワークルーティング動作を実行する仮想ルータを形成するステップと、
を含むことを特徴とする方法。
【請求項２】
前記スイッチは、少なくとも１つの物理的スイッチを含む、
請求項１に記載の方法。
【請求項３】
前記スイッチは、少なくとも１つのハイパーバイザスイッチをさらに含む、
請求項２に記載の方法。
【請求項４】
前記ネットワークは、前記スイッチに結合されたサービス装置を含み、前記方法は、
少なくとも１つの送信元エンドホストと、少なくとも１つの宛先エンドホストと、前記送信元エンドホストと前記宛先エンドホストとの間でネットワークパケットに対して実行すべき少なくとも１つのサービスとを識別するサービス挿入ポリシーを受け取るステップと、
前記サービスを実行するサービス装置を選択するステップと、
をさらに含む、
請求項１に記載の方法。
【請求項５】
前記仮想ルータを制御することにより、前記選択されたサービス装置を通じて前記送信元エンドホストと前記宛先エンドホストとの間でネットワークパケットをリダイレクトするステップをさらに含む、
請求項４に記載の方法。
【請求項６】
前記ネットワークパケットは、イーサネットアドレスフィールドを有し、前記仮想ルータを制御することによって前記送信元エンドホストから前記宛先エンドホストに前記ネットワークパケットをリダイレクトするステップは、
前記ネットワークパケットの前記イーサネットアドレスフィールドを書き換えることにより、前記選択されたサービス装置に変更済みネットワークパケットを送信するように前記スイッチを制御するステップと、
前記サービス装置から前記変更済みネットワークパケットを受け取ったことに応答して、前記変更済みネットワークパケットの前記イーサネットアドレスフィールドを復元するように前記スイッチを制御するステップと、
を含む、
請求項５に記載の方法。
【請求項７】
前記コントローラによって少なくとも２つのサービス装置が選択され、前記仮想ルータを制御することによって前記送信元エンドホストと前記宛先エンドホストとの間で前記ネットワークパケットをリダイレクトするステップは、前記少なくとも２つのサービス装置を通じて前記ネットワークパケットをリダイレクトするように前記仮想ルータを制御するステップを含む、
請求項５に記載の方法。
【請求項８】
前記サービスを実行する前記サービス装置を選択するステップは、ファイアウォール、ロードバランサ、侵入検出装置、パケットモニタリング装置及び暗号化装置から成る群からサービス装置を選択するステップを含む、
請求項５に記載の方法。
【請求項９】
前記仮想ルータを制御することにより、前記選択されたサービス装置を通じて前記送信元エンドホストと前記宛先エンドホストとの間で前記ネットワークパケットをリダイレクトするステップは、前記送信元エンドホストと前記宛先エンドホストとの間の前記ネットワークパケットに一致するフローテーブルエントリであって、前記選択されたサービス装置を通じて前記ネットワークパケットをリダイレクトするように前記スイッチに指示するフローテーブルエントリを前記スイッチに提供するステップを含む、
請求項５に記載の方法。
【請求項１０】
前記仮想スイッチを制御することにより、前記選択されたサービス装置を通じて前記送信元エンドホストと前記宛先エンドホストとの間でネットワークパケットをリダイレクトするステップをさらに含む、
請求項４に記載の方法。
【請求項１１】
前記仮想スイッチを制御することによって前記送信元エンドホストと前記宛先エンドホストとの間で前記ネットワークパケットをリダイレクトするステップは、
前記ネットワークパケットにタグ付けし、該タグ付けされたタグ付きネットワークパケットを前記選択されたサービス装置に送信するように前記スイッチを制御するステップと、
前記選択されたサービス装置から前記タグ付きネットワークパケットを受け取ったことに応答して、前記タグ付きネットワークパケットのタグを外すように前記スイッチを制御するステップと、
を含む、
請求項１０に記載の方法。
【請求項１２】
スイッチに結合されたエンドホスト及びサービス装置を有するネットワークにおいて前記スイッチを制御するコントローラを使用する方法であって、
ネットワークトラフィックと、該ネットワークトラフィックに対して実行すべき少なくとも１つのサービスとを識別するサービス挿入ポリシーを受け取るステップと、
前記サービス挿入ポリシーに基づいて少なくとも１つのサービス装置を識別するステップと、
前記識別されたサービス装置を通じてネットワークトラフィックをリダイレクトするように前記スイッチを制御するステップと、
を含むことを特徴とする方法。
【請求項１３】
複数の仮想スイッチ及び仮想ルータを含む仮想トポロジを生成するステップを含み、各仮想スイッチ及び各仮想ルータは、複数の基礎スイッチにわたって分散し、前記仮想スイッチは、前記エンドホストに結合された仮想ポートを有し、前記仮想ルータは、前記仮想スイッチに結合された仮想インターフェイスを有する、
請求項１２に記載の方法。
【請求項１４】
前記仮想ルータの各仮想インターフェイスは、それぞれのイーサネットアドレスを割り当てられてそれぞれのＩＰドメインに関連付けられ、前記識別されたサービス装置は、所与の仮想ルータの第１の仮想インターフェイスに結合されて第１のＩＰドメインに関連付けられ、前記識別されたネットワークトラフィックの送信元エンドホストは、前記所与の仮想ルータの第２の仮想インターフェイスに結合されて第２のＩＰドメインに関連付けられ、前記識別されたサービス装置は、所与のイーサネットアドレスを有し、前記識別されたサービス装置を通じて前記ネットワークトラフィックをリダイレクトするように前記スイッチを制御するステップは、前記ネットワークトラフィックの送信元イーサネットアドレスフィールドを、前記所与の仮想ルータの前記第１の仮想インターフェイスの前記イーサネットアドレスに書き換え、前記ネットワークトラフィックの宛先イーサネットアドレスフィールドを、前記識別されたサービス装置の前記所与のイーサネットアドレスに書き換えることにより、前記識別されたサービス装置に変更済みネットワークパケットを送信するように前記スイッチを制御するステップを含む、
請求項１３に記載の方法。
【請求項１５】
前記識別されたサービス装置は、所与の仮想スイッチの第１の仮想ポートに結合され、前記識別されたネットワークトラフィックの送信元エンドホストは、所与の仮想スイッチの第２の仮想ポートに結合され、前記識別されたサービス装置を通じて前記ネットワークトラフィックをリダイレクトするように前記スイッチを制御するステップは、
前記ネットワークトラフィックにタグ付けし、該タグ付けされたタグ付きネットワークトラフィックを前記識別されたサービス装置に送信するように前記スイッチを制御するステップと、
前記識別されたサービス装置から前記タグ付きネットワークトラフィックを受け取ったことに応答して、前記タグ付きネットワークトラフィックのタグを外すように前記スイッチを制御するステップと、
を含む、
請求項１３に記載の方法。
【請求項１６】
前記ネットワークトラフィックにタグ付けするように前記スイッチを制御するステップは、前記ネットワークトラフィックのヘッダフィールドに識別子を挿入するように前記スイッチを制御するステップを含む、
請求項１５に記載の方法。
【請求項１７】
前記ネットワークトラフィックにタグ付けするように前記スイッチを制御するステップは、前記識別されたネットワークトラフィックに一致するフローテーブルエントリを前記スイッチに提供するステップを含む、
請求項１６に記載の方法。
【請求項１８】
前記エンドホスト間でネットワークパケットを転送するスイッチに結合されたエンドホスト及びサービス装置を有するネットワークにおいて前記スイッチを制御するコントローラを使用する方法であって、
少なくとも１つのサービス装置を選択するステップと、
前記選択されたサービス装置がサービスすべきネットワークパケットを識別するステップと、
前記選択されたサービス装置を通じて前記識別されたネットワークパケットをリダイレクトするように前記スイッチを制御するステップと、
を含むことを特徴とする方法。
【請求項１９】
前記選択されたサービス装置を通じて前記識別されたネットワークパケットをリダイレクトするように前記スイッチを制御するステップは、
前記選択されたサービス装置に変更済みネットワークパケットを送信するように前記スイッチに指示する、前記識別されたネットワークパケットに一致するフローテーブルエントリを前記スイッチに提供するステップと、
前記選択されたサービス装置から前記変更済みネットワークパケットを受け取ったことに応答して、前記変更済みネットワークパケットから前記識別されたネットワークパケットを復元するように前記スイッチに指示する、前記変更済みネットワークパケットに一致するフローテーブルエントリを前記スイッチに提供するステップと、
を含む、
請求項１８に記載の方法。
【請求項２０】
一連のサービス要件を受け取るステップと、
前記一連のサービス要件に基づいて、該サービス要件を満たすように前記少なくとも１つのサービス装置を選択するステップと、
をさらに含む請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１３年１２月２７日に出願された米国特許出願公開第１４／１４２，２８３号に対する優先権を主張するものであり、この文献はその全体が引用により本明細書に組み入れられる。
【０００２】
本出願は、通信ネットワークに関し、具体的には、コントローラによって制御されるネットワークスイッチを有する通信ネットワークに関する。
【背景技術】
【０００３】
インターネットなどのパケットベースのネットワーク、及びインターネットに接続されたローカルデータネットワークは、ネットワークスイッチを含む。ネットワークスイッチは、パケットの送信元からパケットの宛先にパケットを転送する際に使用される。パケットは、フレームと呼ばれることもある。例えば、開放型システム間相互接続（ＯＳＩ）モデルのレイヤ２では、データがフレーム（例えば、イーサネットフレーム）として転送され、ＯＳＩモデルのレイヤ３では、データがパケット（例えば、インターネットプロトコルパケット）として転送される。
【０００４】
あるベンダの装置を用いて別のベンダのスイッチを構成することは困難又は不可能な場合がある。この理由は、あるベンダのスイッチ装置が、別のベンダのスイッチ装置とは異なるオペレーティングシステム及び一連の制御手順を使用している可能性があるからである。異なるタイプのスイッチプラットフォームの制御に関連する課題に取り組むために、クロスプラットフォームプロトコルが開発された。これらのプロトコルは、互換性がなかったはずのスイッチの集中制御を可能にする。
【０００５】
クロスプラットフォームのコントローラクライアントをネットワーク内のスイッチに含めることができる。コントローラクライアントは、ネットワーク経路を介して対応するコントローラサーバと通信することができる。コントローラクライアントは、様々なスイッチハードウェアに実装できるので、互換性がなかったはずのスイッチ装置を１つのコントローラで制御することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワークは、通過するネットワークパケットに対してファイアウォール機能及びパケットモニタ機能などのサービスを実行するサービス装置を含むことができる。通常、ネットワーク管理者は、所望のサービス装置を通じてネットワークパケットを転送するために、ネットワーク内のスイッチを手動で構成する必要がある。この処理は、多大な時間を要し、面倒であり、特にネットワークが複雑になるとともにますます困難になり得る。
【課題を解決するための手段】
【０００７】
コンピュータ装置上に実装されたコントローラを用いて、ネットワーク内のスイッチを制御することができる。これらのスイッチは、物理的スイッチと、ハイパーバイザスイッチなどの論理スイッチとを含むことができる。ネットワーク内のスイッチには、エンドホスト及びサービス装置を結合することができる。コントローラは、１又は２以上の選択されたサービス装置を通じてネットワークトラフィックをリダイレクトすることによってサービス挿入を実行することができる。コントローラは、ネットワークトラフィックと実行すべきサービスとを識別するサービス挿入ポリシーに基づいて、どのネットワークトラフィックをどのサービス装置にリダイレクトすべきかを決定することができる。
【０００８】
コントローラは、仮想スイッチ及び仮想ルータの仮想ネットワークトポロジを生成することができる。コントローラは、それぞれのエンドホストグループから仮想スイッチを形成することができる。仮想スイッチは、仮想スイッチに関連するグループのエンドホストに結合された少なくとも２つの基礎スイッチからのポートを含むことができる。仮想スイッチは、エンドホストに結合された仮想ポートを含むことができる。コントローラは、仮想スイッチのグループから１又は２以上の仮想ルータを形成することができる。仮想ルータは、仮想スイッチと他の仮想ルータとに結合された仮想インターフェイスを含むことができる。各仮想インターフェイスには、それぞれのイーサネットアドレスを割り当てて、それぞれのＩＰドメインに関連付けることができる。仮想ルータは、異なるＩＰドメインのエンドホスト間でネットワークパケットをルーティングする際に、ネットワークルーティング動作を実行することができる。仮想スイッチ及び仮想ルータの各々は、複数の基礎スイッチ（例えば、物理的スイッチ及びハイパーバイザスイッチ）にわたって分散することができ、これによって所与のスイッチを、１又は２以上の仮想スイッチ及び仮想ルータの機能を実行するように構成できるようになる。
【０００９】
コントローラは、仮想ルータ及び／又は仮想スイッチを、サービス挿入を実行するように制御することができる。コントローラは、選択されたネットワークパケットのイーサネットアドレスを書き換えて１又は２以上のサービス装置を通じてネットワークパケットをリダイレクトすることによってサービス挿入を実行するように仮想ルータを構成することができる。コントローラは、ネットワークパケットにタグ付けして１又は２以上のサービス装置を通じてネットワークパケットをリダイレクトすることによってサービス挿入を実行するように仮想スイッチを構成することができる。
【００１０】
添付図面及び以下の詳細な説明から、本発明のさらなる特徴、その性質及び様々な利点がさらに明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態による、コントローラ及びパケット転送システムを含む例示的なネットワークを示す図である。
【図２】本発明の実施形態による、ネットワーク接続を介して通信できるコントローラサーバ及びコントローラクライアントを示す図である。
【図３】本発明の実施形態による、パケット処理システムが使用できるタイプの例示的なフローテーブルを示す図である。
【図４】本発明の実施形態による、フローテーブルのフローテーブルエントリに基づいて実行できる３つの例示的なパケット転送タイプを示す、パケット処理システムが使用できるタイプの例示的なフローテーブルを示す図である。
【図５】本発明の実施形態による、パケット処理システムにおけるパケット処理に関連する例示的なステップを示すフローチャートである。
【図６】本発明の実施形態による、サービス挿入を実行するようにコントローラによって制御できるスイッチを有する例示的なネットワークを示す図である。
【図７】本発明の実施形態による、サービス挿入を実行するようにコントローラによって制御できるスイッチを有するネットワークを実装する例示的なラックベースシステムを示す図である。
【図８】本発明の実施形態による、図６のネットワークからコントローラによって生成できる例示的な仮想ネットワークを示す図である。
【図９】本発明の実施形態による、各々がパケット転送動作の一部を実行するモジュールを有する例示的なスイッチを示す図である。
【図１０】本発明の実施形態による、サービス挿入を実行するようにコントローラによって制御できる仮想ルータを仮想ネットワークトポロジがどのように含むことができるかを示す図である。
【図１１】本発明の実施形態による、サービス挿入を実行するように仮想ルータを構成する際に図１０の仮想ネットワークトポロジの基礎スイッチをどのように制御できるかを示す図である。
【図１２】本発明の実施形態による、サービス挿入のためにリダイレクトできる例示的なネットワークパケットを示す図である。
【図１３】本発明の実施形態による、仮想スイッチを用いてサービス挿入を実行する際に生成できる例示的なタグ付きネットワークパケットを示す図である。
【図１４】本発明の実施形態による、仮想スイッチを用いてサービス挿入を実行する際に生成できる別の例示的なタグ付きネットワークパケットを示す図である。
【図１５】本発明の実施形態による、サービス挿入を実行するようにコントローラによって制御できる仮想スイッチを仮想ネットワークトポロジがどのように含むことができるかを示す図である。
【図１６】本発明の実施形態による、サービス挿入を実行するように仮想スイッチを構成する際に図１５の仮想ネットワークトポロジの基礎スイッチをどのように制御できるかを示す図である。
【図１７】本発明の実施形態による、コントローラが受け取ることができる例示的なサービス挿入ポリシーを示す図である。
【図１８】本発明の実施形態による、一連のサービス要件を識別する例示的なサービス挿入ポリシーを示す図である。
【図１９】本発明の実施形態による、仮想ネットワークトポロジを生成し、サービス挿入を実装するように仮想ネットワークを制御する際に、コントローラによって実行できる例示的なステップのフローチャートである。
【発明を実施するための形態】
【００１２】
インターネットなどのネットワーク、並びにインターネットに接続されたローカルネットワーク及び地域ネットワークは、パケットベースのスイッチに依拠する。本明細書においてネットワークスイッチ、パケット処理システム又はパケット転送システムと呼ぶこともあるこれらのスイッチは、アドレス情報に基づいてパケットを転送することができる。このようにして、パケットの送信元によって送信されたデータパケットをパケットの宛先に送達することができる。ネットワーク用語では、パケットの送信元及び宛先をエンドホストと呼ぶこともある。エンドホストの例には、パーソナルコンピュータ、サーバ、及び有線又は無線技術を用いてネットワークにアクセスするポータブル電子装置などの他のコンピュータ装置がある。
【００１３】
ネットワークスイッチの能力は、比較的小型のイーサネットスイッチ及び無線アクセスポイントから、複数のラインカード、冗長電源及び監視能力を含む大型のラックベースシステムにまで及ぶ。ネットワークが複数のベンダからの装置を含むことも珍しくない。異なるベンダからのネットワークスイッチを相互接続してパケット転送システムを形成することはできるが、これらのネットワークスイッチを集中的に管理することは、そのオペレーティングシステム及び制御プロトコル間の非互換性に起因して困難な場合がある。
【００１４】
これらの潜在的非互換性は、各ネットワークスイッチに（本明細書ではコントローラクライアントと呼ぶこともある）共通のクロスプラットフォーム制御モジュールを組み込むことによって克服することができる。コントローラサーバなどの集中型クロスプラットフォームコントローラサーバ又は分散型コントローラサーバは、それぞれのネットワークリンクを介して各コントロールクライアントと相互作用することができる。クロスプラットフォームコントローラ及び対応するコントローラクライアントを使用することで、潜在的に異なるネットワークスイッチ装置を集中管理できるようになる。
【００１５】
本明細書で一例として説明することもある１つの例示的な構成では、図１のコントローラサーバ１８などの１又は２以上のコントローラサーバによって集中制御が行われる。コントローラサーバ１８は、スタンドアロン型コンピュータ、コンピュータクラスタ、複数箇所に分散された一連のコンピュータ、ネットワークスイッチに埋め込まれたハードウェア、又はその他の好適なコンピュータ装置１２に実装することができる。コントローラサーバ１８は、単一のコンピュータ上の単一のプロセスとして動作することも、或いは冗長目的で複数のホストにわたって分散することもできる。分散構成の使用は、ネットワーク１０に予期せぬネットワーク分割（例えば、２つのキャンパス間のネットワークリンクが途絶した状況）に対する弾力性を与える役に立つことができる。
【００１６】
分散コントローラ構成では、コントローラノード同士が、コントローラ内プロトコルを用いて情報を交換することができる。例えば、第１のコントローラノードのみに接続されたネットワークハードウェア（例えば、スイッチ）に新たなエンドホストが接続する場合、この第１のコントローラノードは、コントローラ内プロトコルを用いて新たなエンドホストの存在を他のコントローラノードに知らせることができる。必要であれば、スイッチ又は他のネットワークコンポーネントを複数のコントローラノードに接続することもできる。本明細書では、一例として単一のコントローラサーバを用いて関連スイッチのネットワークを制御する構成について説明することもある。
【００１７】
図１のコントローラサーバ１８は、ネットワーク１０のトポロジに関する情報を収集することができる。例えば、コントローラサーバ１８は、ネットワーク１０のトポロジを発見するために、ネットワークを介してリンク層発見プロトコル（ＬＬＤＰ）プローブパケットを送信することができる。コントローラサーバ１８は、ネットワークトポロジに関する情報及びネットワーク装置の能力に関する情報を用いて、ネットワークを流れるパケットの適切な経路を決定することができる。適切な経路が識別されると、コントローラサーバ１８は、対応する設定データをネットワーク１０内のハードウェアに送信して、パケットがネットワーク内を望む通りに流れるように保証することができる。このようなネットワーク構成動作は、システムのセットアップ動作中に、バックグラウンドで継続的に、又は新たに送信されるデータパケット（すなわち、既存の経路がまだ確立されていないパケット）の出現に応答して行うことができる。
【００１８】
コントローラサーバ１８を用いて、ネットワーク構成ルール２０を実装することもできる。ルール２０は、様々なネットワークエンティティがどのサービスを利用できるかを指定することができる。一例として、ルール２０は、ネットワーク１０内のどのユーザ（又はユーザタイプ）が特定のサーバにアクセスできるかを指定することができる。別の例として、ルール２０は、ネットワークトラフィックを識別するとともに、この識別されたネットワークトラフィックに対して実行すべきサービスを識別するサービス挿入ポリシーを含むことができる。ルール２０は、例えばコンピュータ装置１２のデータベース内に維持することができる。
【００１９】
コントローラサーバ１８、及びそれぞれのネットワークスイッチ１４におけるコントローラクライアント３０は、ネットワークプロトコルスタックを用いてネットワークリンク１６を介して通信することができる。
【００２０】
各スイッチ（例えば、各パケット転送システム）１４は、（ネットワークスイッチインターフェイスと呼ばれることもある）入出力ポート３４を有することができる。ケーブルを用いて、装置の一部をポート３４に接続することができる。例えば、ポート３４には、パーソナルコンピュータ、ウェブサーバ及びその他のコンピュータ装置などのエンドホストを接続することができる。ポート３４は、スイッチ１４のうちの１つを他のスイッチ１４に接続するために使用することもできる。
【００２１】
パケット処理回路３２は、ポート３４のうちの１つのポートから別のポートにパケットを転送する際に使用することができ、着信パケットに対して他の好適な動作を実行する際にも使用することができる。パケット処理回路３２は、専用高速スイッチ回路などの１又は２以上の集積回路を用いて実装することができ、ハードウェアデータ経路としての役割を果たすことができる。必要であれば、ソフトウェアデータ経路を実装する際に、制御ユニット２４上で実行中のパケット処理ソフトウェア２６を使用することもできる。
【００２２】
制御ユニット２４は、制御ソフトウェアの記憶及び実行を行う処理及び記憶回路（例えば、１又は２以上のマイクロプロセッサ、メモリチップ、及びその他の制御回路）を含むことができる。例えば、制御ユニット２４は、パケット処理ソフトウェア２６などのソフトウェアを記憶して実行することができ、フローテーブル２８を記憶することができ、コントローラクライアント３０の動作をサポートするために使用することもできる。
【００２３】
コントローラクライアント３０及びコントローラサーバ１８は、ＯｐｅｎＦｌｏｗプロトコル（例えば、ＯｐｅｎＦｌｏｗスイッチ仕様書バージョン１．０．０、１．３．１、又はＯｐｅｎＦｌｏｗプロトコルの他のバージョンを参照）などのネットワークスイッチプロトコルに準拠することができる。コントローラクライアント３０のうちの１又は２以上のクライアントは、他のプロトコル（例えば、簡易ネットワーク管理プロトコル）に準拠することもできる。コントローラサーバ１８は、ＯｐｅｎＦｌｏｗプロトコル又は他の好適なプロトコルを用いて、スイッチ１４が入出力ポート３４からの着信パケットをどのように処理すべきかを定めるデータをコントローラクライアント３０に提供することができる。
【００２４】
１つの好適な構成では、コントローラサーバ１８からのフローテーブルデータをフローテーブル２８などのフローテーブルに記憶することができる。フローテーブル２８のエントリは、スイッチ１４（例えば、パケット処理回路３２及び／又はパケット処理ソフトウェア２６の機能）を構成する際に使用することができる。典型的なシナリオでは、フローテーブル２８が、フローテーブルエントリのためのキャッシュストレージとしての役割を果たし、パケット処理回路３２の回路によって維持される設定に、これらのフローテーブルエントリの対応するバージョンが組み込まれる。しかしながら、これは例示にすぎない。フローテーブル２８は、スイッチ１４におけるフローテーブルエントリのための専用ストレージとしての役割を果たすこともでき、或いはパケット処理回路３２内のフローテーブルストレージリソースを選択する場合には省略することもできる。一般に、フローテーブルエントリは、あらゆる好適なデータ構造（例えば、１又は２以上のテーブル、リストなど）を用いて記憶することができる。明確化のために言えば、本明細書では、フローテーブル２８のデータを（制御ユニット２４のデータベース内に維持されるか、それともパケット処理回路３２の構成に組み込まれるかに関わらず）、フローテーブルエントリを形成しているもの（例えば、フローテーブル２８の行）として見なす。
【００２５】
スイッチ１４が着信パケットをどのように処理すべきかを定めるデータを記憶するフローテーブル２８の例は例示にすぎない。必要であれば、フローテーブル２８の代わりに、又はフローテーブル２８に加えて、いずれかのパケット転送決定エンジンを用いて、パケット転送システム１４がネットワークパケットの転送方法を決定する支援を行うこともできる。一例として、パケット転送決定エンジンは、パケット転送システム１４に、ネットワークパケットをその属性に基づいて（例えば、ネットワークプロトコルヘッダに基づいて）所定のポートに転送するように指示することができる。
【００２６】
いずれかの所望のスイッチには、コントローラサーバと通信して制御されるコントローラクライアントを設けることができる。例えば、制御ソフトウェアを実行してパケット処理回路３２を省略する汎用処理プラットフォームを用いてスイッチ１４を実装することができる。別の例として、１又は２以上の高速スイッチ集積回路（「スイッチＩＣ」）に結合された制御回路を用いてスイッチ１４を実装することもできる。さらに別の例として、各々が独自のパケット処理回路を含む複数のラインカードを有するラックベースシステム内のラインカードとしてスイッチ１４を実装することもできる。必要であれば、このラックベースシステム又は別のラックベースシステム内の１又は２以上のラインカード上、或いはネットワークに結合された他のコンピュータ装置上にコントローラサーバを実装することもできる。
【００２７】
図２に示すように、コントローラサーバ１８及びコントローラクライアント３０は、ネットワークプロトコルスタック５８及びネットワークプロトコルスタック６０などのネットワークプロトコルスタックを用いてネットワーク経路６６を介して通信することができる。スタック５８及び６０は、例えば、（一例として）Ｌｉｎｕｘ  ＴＣＰ／ＩＰスタック、又はＶｘＷｏｒｋｓオペレーティングシステム内のＴＣＰ／ＩＰスタックとすることができる。経路６６は、例えばスイッチ１４と外部装置との間のネットワーク接続をサポートする経路（例えば、図１のネットワーク経路１６）とすることも、或いはラックベースシステム内の基幹経路とすることもできる。本明細書では、一例として経路６６が経路１６などのネットワーク経路である構成について説明することもある。
【００２８】
制御プロトコルスタック５６は、ネットワークプロトコルスタック５８と制御ソフトウェア５４との間のインターフェイスとしての役割を果たす。制御プロトコルスタック６２は、ネットワークプロトコルスタック６０と制御ソフトウェア６４との間のインターフェイスとしての役割を果たす。動作中、制御プロトコルスタック５６は、コントローラサーバ１８がコントローラクライアント３０と通信している時に制御プロトコルメッセージ（例えば、ポートをアクティブにするための、又はフローテーブル２８に特定のフローテーブルエントリを導入するための制御メッセージ）を生成して解析する。図２に示すタイプの構成を使用することにより、コントローラサーバ１８とコントローラクライアント３０との間のリンクを介してネットワーク接続が形成される。コントローラサーバ１８とコントローラクライアント３０は、伝送制御プロトコル（ＴＣＰ）又はユーザデータグラムプロトコル（ＵＤＰ）・オーバ・インターネットプロトコル（ＩＰ）ネットワーク接続を用いて通信することができる。ネットワーク接続を介したコントローラサーバ１８とコントローラクライアント３０との間の通信時に使用できる制御プロトコルの例としては、（一例として）ＳＮＭＰ及びＯｐｅｎＦｌｏｗプロトコルスタック・バージョン１．０．０が挙げられる。
【００２９】
フローテーブル２８は、（ヘッダフィールドと呼ばれることもある）複数のフィールドを有するフローテーブルエントリ（例えば、テーブル内の行）を含む。スイッチ１４によって受け取られたパケット内のフィールドは、フローテーブル内のフィールドと比較することができる。各フローテーブルエントリは、関連する動作を有することができる。パケット内のフィールドとフローテーブルエントリ内のフィールドとが一致した場合、このフローテーブルエントリのための対応する動作を行うことができる。
【００３０】
図３に、例示的なフローテーブルを示す。図３に示すように、テーブル２８は、フローテーブルエントリ（行）６８を有することができる。各フローテーブルエントリは、ヘッダ７０、動作７２及び統計７４に関連することができる。各ヘッダ７０は、複数のヘッダフィールド７６を含むことができる。各フローテーブルエントリ内の動作は、パケット内のフィールドと、このフローテーブルエントリのヘッダ内の対応するフィールドとの間に一致が検出された時に、スイッチ１４がパケットに対してどのような動作を行うべきかを示す。スイッチ１４は、フローテーブル２８の統計部分内に、コントローラサーバ１８がスイッチ１４の性能に関する情報を取得したい時に問い合わせることができる統計データ（カウンタ値）を維持する。
【００３１】
ヘッダ７０内のヘッダフィールド（及び各着信パケット内の対応するフィールド）は、イングレスポート（すなわち、受け取られるパケットが通過するスイッチ１４内の物理ポートの識別子）、イーサネット送信元アドレス、イーサネット宛先アドレス、イーサネットタイプ、（ＶＬＡＮタグと呼ばれることもある）仮想ローカルエリアネットワーク（ＶＬＡＮ）識別、ＶＬＡＮプライオリティ、ＩＰ送信元アドレス、ＩＰ宛先アドレス、ＩＰプロトコル、ＩＰ  ＴｏＳ（サービスタイプ）ビット、（送信元ＴＣＰポートと呼ばれることもある）トランスポート送信元ポート／インターネット制御メッセージプロトコル（ＩＣＭＰ）タイプ、及び（宛先ＴＣＰポートと呼ばれることもある）トランスポート宛先ポート／ＩＣＭＰコードといったフィールドを含むことができる。必要であれば他のフィールドを使用することもできる。例えば、ネットワークプロトコルフィールド及びプロトコルポートフィールドを使用することができる。
【００３２】
各フローテーブルエントリ（フローエントリ）は、一致するパケットをスイッチがどのように処理するかを示す０又は１以上の動作に関連する。転送動作が存在しない場合、パケットは破棄されることが好ましい。パケットフィールドとフローテーブルエントリ内のヘッダフィールドとの間に一致が検出された時にスイッチ１４が行うことができる動作としては、転送（例えば、着信インターフェイスを除く全てのインターフェイス上でパケットを送出するＡＬＬ、パケットをカプセル化してコントローラサーバに送信するＣＯＮＴＲＯＬＬＥＲ、パケットをスイッチのローカルネットワーキングスタックに送信するＬＯＣＡＬ、フローテーブル２８内の動作を実行するＴＡＢＬＥ、入力ポートからパケットを送出するＩＮ＿ＰＯＲＴ、例えば、従来のレベル２、ＶＬＡＮ及びレベル３処理を使用するスイッチによってサポートされているデフォルトの転送経路でパケットを処理するＮＯＲＭＡＬ、着信インターフェイスを除く最小の転送ツリーに沿ってパケットをフラッディングするＦＬＯＯＤ）を挙げることができる。スイッチ１４が行うことができる追加動作としては、ポートに付随する待ち行列を通じてパケットを転送する待ち行列化動作、及び（例えば、フローテーブルエントリに一致する指定された動作を有していないパケットを破棄する）破棄動作が挙げられる。スイッチ１４は、フィールド変更動作をサポートすることもできる。行うことができるフィールド変更動作の例としては、ＶＬＡＮ  ＩＤの設定（Ｓｅｔ  ＶＬＡＮ  ＩＤ）、ＶＬＡＮプライオリティの設定、ＶＬＡＮヘッダの除去、ＶＬＡＮタグの変更、イーサネット送信元ＭＡＣ（媒体アクセス制御）アドレスの変更、イーサネット宛先ＭＡＣアドレスの変更、ＩＰｖ４送信元アドレスの変更、ＩＰｖ４  ＴｏＳビットの変更、トランスポート宛先ポートの変更が挙げられる。フィールド変更動作は、フローテーブルエントリに一致するネットワークパケットの一部を書き換える際に使用することができる。
【００３３】
図４は、３つのフローテーブルエントリを有する例示的なフローテーブルである。これらのエントリは、ワイルドカード（例えば、記号「＊」）のフィールドを含む。特定のフィールドにワイルドカードが存在する場合、着信パケット内の特定のフィールド値に関わらず、全ての着信パケットが、対応するフィールドに対して「一致」を形成すると見なされる。追加のフィールドは、追加のパケット情報（例えば、ネットワークパケットのパケットヘッダ情報）に一致することができる。
【００３４】
図４のテーブルの１行目のエントリは、フローテーブルエントリが機能しているスイッチにイーサネットスイッチングを行うように指示する。具体的には、一致するイーサネット宛先アドレスを有する着信パケットがポート３に転送される。
【００３５】
図４のテーブルの２行目のエントリは、インターネットルーティングを行うためにスイッチをどのように構成できるかを示す（すなわち、パケットがその宛先ＩＰアドレスに基づいて転送される）。
【００３６】
図４のテーブルの３行目は、ファイアウォール機能を実行するためにスイッチをどのように構成できるかを示すエントリを含む。８０という宛先ＩＰポート値を有するパケットが受け取られると、このパケットは破棄される（すなわち、スイッチは、ポート８０のトラフィックをブロックするファイアウォールとして機能するように構成される）。
【００３７】
図４に示すタイプのフローテーブルエントリは、システムのセットアップ動作中にコントローラサーバ１８によってスイッチ１４にロードすることも、或いはコントローラサーバ１８におけるスイッチ１４などのスイッチからのパケットの受信及び処理に応答してコントローラサーバ１８からスイッチ１４にリアルタイムで提供することもできる。多くのスイッチ１４を含むネットワークでは、各スイッチに、ネットワークを介した経路を形成するのに適したフローテーブルエントリを提供することができる。
【００３８】
図５に、入出力ポート３４において受け取られたパケットを処理する際にスイッチ１４が実行できる例示的なステップを示す。ステップ７８において、スイッチ１４が、そのポートのうちの１つ（例えば、図１の入出力ポート３４のうちの１つ）においてパケットを受け取る。
【００３９】
ステップ８０において、スイッチ１４は、受け取ったパケットのフィールドをこのスイッチのフローテーブル２８内のフローテーブルエントリのフィールドと比較して一致が存在するかどうかを判定する。フローテーブルエントリ内のフィールドには、完全な値（例えば、完全なアドレス）を含むものもある。他のフィールドには、ワイルドカード（すなわち、「＊」という「無関係」を示すワイルドカード文字が記されたフィールド）を含むものもある。さらに他のフィールドには、部分的に完全なエントリ（例えば、部分的にワイルドカードになっている部分的なアドレス）を有するものもある。フィールドによっては、（例えば、ＴＣＰポート番号を１〜４０９６の値に制限することによって）範囲を使用し、実質的にこの範囲を用いて一種の部分的ワイルドカードを実装できるものもある。スイッチ１４は、受け取ったパケットとフローテーブルエントリとの間でフィールド毎の比較を行う際に、フローテーブルエントリ内の各フィールドが、一切のワイルドカードを含まない完全な値を含むか否か、ワイルドカードを伴う部分的な値を含むか否か、又はワイルドカード文字（すなわち、完全にワイルドカードになっているフィールド）を含むか否かを考慮することができる。
【００４０】
ステップ８０の動作中に、パケットのフィールドとフローテーブルエントリの対応するフィールドとの間に一致が存在しないと判定された場合、スイッチ１４は、リンク１６を介してコントローラサーバ１８にパケットを送信することができる（ステップ８４）。
【００４１】
ステップ８０の動作中に、パケットとフローテーブルエントリとの間に一致が存在すると判定された場合、スイッチ１４は、このフローテーブルエントリに関連する動作を実行して、このフローテーブルエントリの統計フィールド内のカウンタ値を更新することができる（ステップ８２）。その後、線８６によって示すように、処理はステップ７８に戻ってスイッチ１４が別のパケットを処理することができる。
【００４２】
図６は、コントローラ１８がスイッチを制御できる例示的なネットワーク１００を示す図である。コントローラ１８は、コントローラサーバとすることも、又は複数のコンピュータ装置にわたって実装される分散型コントローラとすることもできる。図６に示すように、ネットワーク１００は、スイッチＣ１、Ｃ２、Ｅ１、Ｅ２，Ｅ３、Ｅ４及びＥ５を含むことができる。コントローラ１８は、制御経路６６を介してネットワーク１００のスイッチに結合することができる。コントローラ１８は、（例えば、図３のフローテーブルエントリ６８などのフローテーブルエントリを提供することによって）制御経路６６を用いてスイッチを制御することができる。
【００４３】
ネットワーク１００は、ネットワーク１００のスイッチに結合されたエンドホストＥＨ１、ＥＨ２、ＥＨ３、ＥＨ４及びＥＨ５などのエンドホストを含むことができる。エンドホストに直接結合されたスイッチは、エッジスイッチと呼ばれることもあり、他のスイッチを相互接続するだけでエンドホストに直接結合されていないスイッチは、コアスイッチと呼ばれることもある。図６の例では、スイッチＥ１、Ｅ２、Ｅ３、Ｅ４及びＥ５がエンドホストに結合されており、従ってこれらはエッジスイッチである。スイッチＣ１及びＣ２は、スイッチＥ１、Ｅ２、Ｅ３、Ｅ４及びＥ５を相互接続してエンドホストには直接結合されておらず、従ってこれらはコアスイッチである。スイッチＣ１及びＣ２などのコアスイッチは、ネットワーク１００を他のネットワーク１０２（例えば、スイッチ及びエンドホストを含む他のネットワーク）に結合することができる。エッジスイッチがコアスイッチに直接結合された図６の例は例示にすぎない。必要であれば、エッジスイッチとコアスイッチとの間にさらなるスイッチを配置することもできる。
【００４４】
ネットワーク１００のスイッチには、サービス装置１０４及び１０５などのサービス装置を結合することができる。図６の例では、エッジスイッチＥ３のポートＰ３及びエッジスイッチＥ４のポートＰ３にサービス装置１０４が結合され、スイッチＥ５のポートＰ４にサービス装置１０５が結合されている。サービス装置は、ファイアウォール、ロードバランサ、ネットワークアドレス変換装置、侵入検出装置、侵入防止装置、暗号化／暗号解読装置、モニタリング装置、又はサービス装置に提供されるネットワークパケットに対してサービスを実行するいずれかのネットワーク装置を含むことができる。例えば、所定のパケット特徴の組を指定するルールを用いてファイアウォール装置１０４を構成することができる。このシナリオでは、ファイアウォール装置１０４が、エッジスイッチＥ３のポートＰ３から受け取ったパケットをルールと照合し、一致するパケットのみをエッジスイッチＥ４のポートＰ３に提供することができる（すなわち、パケット特徴の組を満たさないパケットは無視又は破棄することができる）。別の例として、モニタリング装置又は侵入検出装置１０４は、エッジスイッチＥ４のポートＰ３において着信ネットワークトラフィックをモニタし、ネットワークトラフィックに関する統計情報などのデータを生成することができる。シナリオによっては、サービス装置が、トラフィックフローのネットワークパケットに記憶されている情報を置換し、削除し、又は別様に変更することによってネットワークトラフィックフローを操作することができる。例えば、暗号化装置１０４は、セキュアな通信のためにネットワークトラフィックフロー内のネットワークパケットを暗号化することができ、暗号解読装置１０４は、ネットワークトラフィックフロー内のネットワークパケットを暗号解読することができる。
【００４５】
サービス装置１０４が複数のエッジスイッチに結合された図６の例は例示にすぎない。必要であれば、サービス装置をエッジスイッチの所与のポートのみに結合することもできる。このシナリオでは、サービス装置が、所与のポートにおいて受け取られたパケットを処理して、この処理済みパケットを所与のポートに提供することができ、或いは所与のポートにネットワークトラフィックを提供することなくパケットの処理のみを行うこともできる。一般に、サービス装置は、あらゆる所望の数のポート及びエッジスイッチに結合することができる。
【００４６】
図７は、ラックベースシステムを用いて実装される図６のネットワーク１００の実例である。図７に示すように、スイッチ１１４（例えば、図７に示すコアスイッチ）に結合されたネットワークラック１１０及び１１２を用いてエッジスイッチ及びエンドホストを実装することができる。必要であれば、ネットワーク１００は、さらなるエンドホスト及びスイッチを収容してスイッチ１１４に結合されたさらなるネットワークラックを含むこともできる。ネットワークラック１１０は、エッジスイッチＥ１及びＥ２、並びにエンドホストＥＨ１及びＥＨ２を含むことができ、ネットワークラック１１２は、エッジスイッチＥ３及びＥ４、並びにエンドホストＥＨ３及びＥＨ４を含むことができる。エッジスイッチＥ１、Ｅ２、Ｅ３及びＥ４は、ネットワーク経路を介して対応するネットワークラック１１２の各エンドホストに結合されたトップ・オブ・ラック・スイッチの役割を果たすことができる。例えば、トップ・オブ・ラック・スイッチＥ３は、ネットワークラック１１２の各エンドホスト（例えば、エンドホストＥＨ３及びＥＨ４）に接続される。
【００４７】
各トップ・オブ・ラック・スイッチは、対応するネットワークラックのエンドホストと、ネットワーク１００の他の部分又は他のネットワーク１０２などの他のネットワーク装置との間のインターフェイスの役割を果たす。ネットワークラック１１０とエンドホストとの間のネットワークトラフィックは、ネットワークラック１１０のトップ・オブ・ラック・スイッチ（例えば、トップ・オブ・ラック・スイッチＥ１及びＥ２）の少なくとも一方をトラバースする必要がある。同様に、ネットワークラック１１２のネットワークトラフィックは、スイッチＥ３及びＥ４の少なくとも一方をトラバースする必要がある。一例として、エンドホストＥＨ１によってエンドホストＥＨ３に送信されるネットワークパケットは、トップ・オブ・ラック・スイッチＥ１、コアスイッチＣ１、及びトップ・オブ・ラック・スイッチＥ３によって転送することができる。別の例として、エンドホストＥＨ１によってエンドホストＥＨ３に送信されるネットワークパケットは、トップ・オブ・ラック・スイッチＥ２、コアスイッチＣ１、及びトップ・オブ・ラック・スイッチＥ４によって転送することもできる。
【００４８】
必要であれば、ネットワークラック１１０及び１１２のコンピュータ装置を用いてスイッチを実装することもできる。スイッチＥ５は、ネットワークラック１１０のラインカードなどのコンピュータ装置を用いて実装することができる。ソフトウェアスイッチＥ５は、ハイパーバイザスイッチと呼ばれることもある。ハイパーバイザスイッチは、専用回路、又は離散コンピュータ装置上（例えば、ラインカード上）のソフトウェアを用いて実装することができる。しかしながら、このようなソフトウェアスイッチは、ソフトウェアスイッチを実装するコンピュータ装置の専用物理ポートに差し込まれたケーブルによって残りのネットワークに結合される。
【００４９】
スイッチＥ５は、エンドホストＥＨ５などのエンドホスト、及びスイッチＥ５と同じコンピュータ装置上に実装されたサービス装置１０５などのサービス装置にインターフェイス接続することができる。換言すれば、共有コンピュータ装置を用いて、スイッチＥ５、エンドホストＥＨ５及びサービス装置１０５を実装することができる。必要であれば、この共有コンピュータ装置上に複数のエンドホストをソフトウェアの形で実装することもできる。例えば、共有コンピュータ装置上に数十、数百、数千又はそれ以上のエンドホストを実装して、ソフトウェアスイッチＥ５の論理ポートにソフトウェアの形で論理的に結合する一方で、ソフトウェアスイッチＥ５が実装されたコンピュータ装置の物理ポートによってソフトウェアスイッチＥ５をネットワーク１００に接続することもできる。
【００５０】
図７に示すように、ネットワークラック１１０内には、（例えば、ネットワークラック１１０のラインカード又は他のコンピュータ装置のリソースを用いて）コントローラ１８を実装することができる。コントローラ１８は、制御パケットを送信してトップ・オブ・ラック・スイッチ及びコアスイッチから制御プレーンパケットを受け取ることにより、これらのスイッチと通信することができる。このシナリオでは、ネットワーク１００の１又は２以上のスイッチが、図６の制御経路６６の一部を形成することができる。例えば、スイッチＥ１又はスイッチＥ２は、コアスイッチＣ１及びＣ２とコントローラ１８との間の制御経路の一部としての役割を果たすことができる。別の例として、スイッチＥ１、Ｅ２、Ｃ１及びＣ２は、コントローラ１８とスイッチＥ３及びＥ４との間の制御経路の一部を形成することができる。
【００５１】
複数のエンドホストに結合されたＥ１、Ｅ２、Ｅ３及びＥ４などのエッジスイッチは、リーフスイッチと呼ばれることもある。例えば、ラックベースシステム内のトップ・オブ・ラック・スイッチは、リーフスイッチと呼ばれることがある。各リーフスイッチに結合されたスイッチ１１４は、スパインスイッチと呼ばれることがある。スパインスイッチは、（例えば、図７に示すように）いずれのエンドホストにも接続されていないコアスイッチとすることも、或いはエンドホストに接続された１又は２以上のポートを有することもできる。
【００５２】
ネットワーク管理者などのユーザが所望の動作のためにネットワーク１００を構成することは困難な場合がある。例えば、エンドホストグループ間の通信を分離又は別様に制限することが望ましい場合がある。別の例として、ネットワーク管理者がネットワークのスイッチ及びエンドホスト毎にネットワークポリシー又はルーティングルールを手動で構成することは非効率的な場合がある。そこで、基礎となる物理ネットワークトポロジ上に仮想ルータ及び仮想スイッチの論理ネットワークトポロジを実装するようにコントローラ１８を構成することができる。論理ネットワークトポロジは、ネットワーク構成の効率、柔軟性及び能力の改善などの利点をもたらすことができる。図８は、図６及び図７の基礎ネットワーク１００から仮想ネットワーク１２０を実装するようにコントローラ１８を構成した実例である。
【００５３】
仮想ネットワーク１２０の仮想ネットワークトポロジは、基礎ネットワーク１００の物理的制約内におけるいずれかの所望のトポロジとすることができる（例えば、各仮想経路は、基礎ネットワーク内の少なくとも１つの、場合によってはそれ以上の対応する経路を有する）。基礎ネットワークは、物理的スイッチ、及び／又はハイパーバイザスイッチＥ５などのソフトウェアベースのスイッチを含むことができる。
【００５４】
図８に示すように、仮想ネットワークトポロジ１２０は、仮想スイッチＶＳＷ１、ＶＳＷ２、ＶＳＷ３、ＶＳＷ４及びＶＳＷ５などの仮想スイッチと、仮想ルータＶＲ１及びＶＲ２などの仮想ルータとを含むことができる。仮想スイッチは、ネットワークのエンドホストグループから形成され、エンドホストのいずれかの所望のネットワーク属性によって規定することができる。仮想スイッチＶＳＷ１にはエンドホストＥＨ３を割り当てることができ、仮想スイッチＶＳＷ２にはエンドホストＥＨ１を割り当てることができ、仮想スイッチＶＳＷ３にはエンドホストＥＨ２、ＥＨ４及びＥＨ５を割り当てることができる。シナリオによっては、１つのネットワーク装置を複数の仮想スイッチに割り当てることもできる。例えば、サービス装置１０４を仮想スイッチＶＳＷ４及びＶＳＷ５に割り当てることができる。コントローラ１８は、サービス装置１０４の接続ポイントを用いて、仮想スイッチＶＳＷ４及びＶＳＷ５への割り当てを区別することができる（例えば、装置１０４と物理的スイッチＥ３のポートＰ３との間の接続を、仮想スイッチＶＳＷ４に割り当てることができ、装置１０４と物理的スイッチＥ４のポートＰ３との間の接続を、仮想スイッチＶＳＷ５に割り当てることができる）。
【００５５】
各仮想スイッチは、１又は２以上の基礎スイッチ（例えば、基礎となる物理的スイッチ又はハイパーバイザスイッチ）にわたる分散型論理スイッチとして実装することができる。例えば、仮想スイッチは、異なる物理的スイッチに接続されたエンドホストを含むことができる。このシナリオでは、コントローラが、単一の仮想スイッチを制御する際に複数の物理的スイッチを制御することができる。異なる仮想スイッチの制御では、２組の潜在的に重複する基礎となる物理及び／又はハイパーバイザスイッチの組の制御を伴うことができる（例えば、異なる仮想スイッチに関連する動作を実行する際に１つの物理的スイッチを制御することができる）。
【００５６】
エンドホストを特徴付ける上で使用できるネットワーク属性の例としては、エンドホストが結合された物理的スイッチ又はハイパーバイザスイッチポート、エンドホストのハードウェアアドレス（例えば、ＭＡＣアドレス）、エンドホストのプロトコルアドレス（例えば、ＩＰアドレス）、仮想ローカルエリアネットワーク（ＶＬＡＮ）タグ、及び／又はエンドホストのその他のネットワーク属性が挙げられる。例えば、コントローラ１８は、エンドホストＥＨ１をスイッチＥ１のポートＰ１に接続されているものとして識別することができ、エンドホストＥＨ２及びＥＨ３をＭＡＣアドレスによって識別することができ、エンドホストＥＨ４をスイッチＥ３のポートＰ２に接続されているものとして識別することができる。別の例として、エンドホストＥＨ５を、ハイパーバイザスイッチＥ５の論理ポートＰ１に接続されているものとして識別することもできる。これらの例は例示にすぎない。仮想スイッチを形成する際には、ネットワークパケットヘッダフィールド内で使用されるようなあらゆる所望のネットワーク属性、又はネットワーク属性のあらゆる所望の組み合わせを使用することができる。
【００５７】
仮想スイッチは、グループ化して仮想ルータを形成することができる。図８の例では、仮想スイッチＶＳＷ１、ＶＳＷ２、ＶＳＷ４及びＶＳＷ５をグループ化して仮想ルータＶＲ１を形成する一方で、仮想スイッチＶＳＷ３を仮想ルータＶＲ２に割り当てている。換言すれば、仮想スイッチＶＳＷ１、ＶＳＷ２、ＶＳＷ４及びＶＳＷ５のエンドホストのグループは仮想ルータＶＲ１に割り当てられ、仮想スイッチＶＳＷ３のエンドホストのグループは仮想ルータＶＲ２に割り当てられている。各仮想スイッチは、仮想ルータインターフェイスを介して対応する仮想ルータに接続される。仮想スイッチＶＳＷ１、ＶＳＷ２、ＶＳＷ４及びＶＳＷ５は、仮想ルータＶＲ１のそれぞれの仮想ルータインターフェイスＩＦ１、ＩＦ２、ＩＦ３及びＩＦ４に接続され、仮想スイッチＶＳＷ３は、仮想ルータＶＲ２の仮想ルータインターフェイスＩＦ１に接続される。
【００５８】
各仮想スイッチは、仮想スイッチの全てのエンドホストにブロードキャストネットワークパケットが転送されるそれぞれのブロードキャストドメインを実装する役割を果たす。ブロードキャストネットワークパケットは、ネットワークパケットを、関連するブロードキャストドメインの全てのエンドホストを宛先とするブロードキャストネットワークパケットとして識別するヘッダフィールドを有するネットワークパケットとすることができる。例えば、エンドホストＥＨ２から仮想スイッチＶＳＷ３によって受け取られたブロードキャストネットワークパケットは、仮想スイッチＶＳＷ３によって、仮想スイッチＶＳＷ３に割り当てられている他の各エンドホストに（すなわち、エンドホストＥＨ４及びＥＨ５に）転送することができる。
【００５９】
仮想ルータは、ネットワークルーティング機能を実行し、仮想スイッチの異なるブロードキャストドメインについては分離を行う。例えば、仮想ルータＶＲ１は、ブロードキャストパケットが仮想スイッチＶＳＷ１によって仮想スイッチＶＳＷ２に（及びこの逆に）転送されるのを防ぐことができる。ブロードキャストドメインは、ＩＰアドレスレンジに関して、所与の仮想ルータの各インターフェイスに異なるそれぞれのＩＰアドレスレンジが割り当てられるように規定することができる。例えば、インターフェイスＩＦ１及び仮想スイッチＶＳＷ１に第１のＩＰアドレスレンジを割り当て、インターフェイスＩＦ２及び仮想スイッチＶＳＷ２に第２のＩＰアドレスレンジを割り当てることができる。仮想ルータとは対照的に、仮想スイッチは、ＩＰドメインに基づくネットワークルーティング機能を一切行わない。
【００６０】
仮想ルータが実行できるネットワークルーティング機能としては、仮想ルータのインターフェイスにおいて受け取られたネットワークパケットのヘッダを変更することが挙げられる。仮想ルータは、ネットワークパケットのＩＰヘッダの有効期間フィールドを減分することができる。仮想ルータは、送信元及び宛先ＭＡＣアドレスフィールドなどのイーサネットヘッダを、所望のブロードキャストドメインに対応するように変更することができる。例えば、仮想ルータの各インターフェイスに、それぞれのイーサネットアドレスを割り当てることができる。このシナリオでは、仮想ルータが、送信元ＭＡＣアドレスフィールドを仮想ルータのエグレス（送出）インターフェイスに一致するように書き換えることができる。仮想ルータは、宛先ＭＡＣアドレスフィールドをネクストホップアドレスに一致するように書き換えることができる。
【００６１】
図９は、物理的スイッチ又はハイパーバイザスイッチなどのスイッチ１３０の例示的なブロック図である。スイッチ１３０は、例えば、図６のエッジスイッチＥ１、Ｅ２，Ｅ３又はＥ４などのエッジスイッチとすることも、或いはスイッチＣ１又はＣ２などのコアスイッチとすることもできる。図９に示すように、スイッチ１３０は、ポートＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６などのポートを含むことができる。スイッチ１３０は、仮想スイッチ識別モジュール１３２、Ｌ２転送モジュール１３４、仮想ルータ識別モジュール１３６、及びＬ３転送モジュール１３８を含むことができる。これらのモジュールは、それぞれの専用回路を用いて実装することも、共有専用回路を用いて実装することも、或いは処理回路上のソフトウェアを用いて実装することもできる。例えば、これらのモジュールは、図１のパケット処理ソフトウェア２６及び／又はパケット処理回路３２を用いて実装することができ、コントローラによって提供されるフローテーブルエントリに基づいて機能を実行することができる。
【００６２】
スイッチポートのうちの１つにおいて受け取られたネットワークパケットは、ネットワークパケットの転送方法を決定する際に１又は２以上のモジュールによって処理することができる。モジュールは、ネットワークパケットをいずれかの所望の順序で又は並行して処理することができる。各モジュールによって行われる動作は、コントローラによって制御することができる。
【００６３】
仮想スイッチ識別モジュール１３２は、ネットワークパケットに関連するネットワーク属性（例えば、着信ポート、イーサネット又はＩＰ送信元アドレスなどの送信元アドレス情報など）に基づいて、どの仮想スイッチにネットワークパケットが割り当てられているかを判断することができる。モジュール１３２は、仮想スイッチを識別する情報をＬ２転送モジュール１３４に提供することができる。Ｌ２転送モジュール１３４は、モジュール１３２によって提供された仮想スイッチ情報に基づいてネットワーク転送（例えば、開放型システム間相互接続（ＯＳＩ）モデルのレイヤ２における転送決定）を実行することができる。例えば、Ｌ２転送モジュール１３４は、仮想スイッチ情報、及びネットワークパケットから取り出した宛先ＭＡＣアドレスなどのさらなるパケット情報に基づいて、どのスイッチポートにネットワークパケットを転送すべきかを判断することができる。
【００６４】
宛先エンドホストが送信元エンドホストと異なる仮想スイッチに関連している場合などのシナリオでは、仮想ルータ識別モジュール１３６及びＬ３転送モジュール１３８を使用することができる。例えば、エンドホストＥＨ３は仮想スイッチＶＳＷ１に割り当てられているのに対し、エンドホストＥＨ１は仮想スイッチＶＳＷ２に割り当てられているので、スイッチＥ３がエンドホストＥＨ３から受け取ったエンドホストＥＨ１宛てのネットワークパケットは、Ｌ３転送モジュール１３８を用いて処理することができる。換言すれば、エンドホストＥＨ３に関連するインターフェイスＩＦ１のＩＰドメインは、エンドホストＥＨ１に関連するインターフェイスＩＦ２のＩＰドメインと異なる。これらのシナリオでは、ＩＰレイヤ（例えば、ＯＳＩモデルのレベル３）におけるネットワークルーティングが必要になることもある。
【００６５】
仮想ルータ識別モジュール１３６は、ネットワークパケットを制御する際に、どの仮想ルータを使用すべきかを識別することができる。モジュール１３６は、ネットワークパケットのネットワーク属性、及びスイッチの他のモジュールから受け取った情報を使用することができる。例えば、モジュール１３６は、どの仮想ルータがネットワークパケットを制御するかを判断する際に、Ｌ２転送モジュール１３４から受け取った識別された仮想スイッチ情報、及びネットワークパケットから取り出したＩＰアドレス情報を使用することができる。
【００６６】
仮想ルータ識別モジュール１３６は、識別された仮想ルータ情報をＬ３転送モジュール１３８に提供することができる。Ｌ３転送モジュール１３８は、この識別された仮想ルータ情報及びネットワークパケットから取り出した追加情報に基づいて、ネットワークルーティング動作を実行することができる。一例として、Ｌ３転送モジュール１３８は、宛先アドレスフィールドなどのＩＰヘッダフィールドを用いて、ネットワークパケットを転送する際にスイッチのどのポートを使用すべきかを判断することができる。Ｌ３転送モジュール１３８は、ネットワークルーティング動作を実行する際にネットワークパケットを変更することができる。例えば、モジュール１３８は、ＴＴＬヘッダフィールドを減分して、送信元及び宛先ＭＡＣアドレスなどのレイヤ２ヘッダフィールドを書き換えることができる。スイッチＥ２においてエンドホストＥＨ１から受け取られたネットワークパケットがエンドホストＥ３を宛先とするシナリオについて検討する。このシナリオでは、（エンドホストＥＨ１は、エンドホストＥＨ３とは異なる仮想ルータＶＲ１のＬ３インターフェイスに結合されており、エンドホストＥＨ３のＭＡＣアドレスにアクセスできないので、）ネットワークパケットは、送信元ＭＡＣアドレスとしてのエンドホストＥＨ１のＭＡＣアドレス、宛先ＭＡＣアドレスとしての仮想ルータＶＲ１のＭＡＣアドレス、送信元ＩＰアドレスとしてのエンドホストＥＨ１のＩＰアドレス、及び宛先ＩＰアドレスとしてのエンドホストＥＨ３のＩＰアドレスを含むことができる。仮想ルータ識別モジュール１３６は、（例えば、コントローラによって提供されるフローテーブルエントリに基づいて）送信元エンドホスト（ＥＨ１）が仮想スイッチＶＳＷ２を介して仮想ルータＶＲ１のインターフェイスＩＦ２に結合されていると判断することができる。Ｌ３転送モジュール１３８は、（コントローラによって提供されるフローテーブルエントリに基づいて）宛先エンドホストＥＨ３が仮想ルータＶＲ１のインターフェイスＩＦ１に結合されていると判断し、仮想ルータＶＲ１のインターフェイスＩＦ１を介してエンドホストＥＨ３にネットワークパケットをルーティングする際にネットワークルーティング動作を実行することができる。このネットワークルーティング動作は、ネットワークパケットのＴＴＬフィールドを減分し、パケットの送信元及び宛先ＭＡＣアドレスを書き換えることを含むことができる。具体的には、送信元ＭＡＣアドレスをエンドホストＥＨ１のＭＡＣアドレスから仮想ルータＶＲ１のインターフェイスＩＦ１のＭＡＣアドレスに書き換えることができ、宛先ＭＡＣアドレスを仮想ルータＶＲ１のインターフェイスＩＦ２のＭＡＣアドレスからエンドホストＥＨ３のＭＡＣアドレスに書き換えることができる。
【００６７】
スイッチのモジュールは、スイッチのためのフローテーブル２８などのフローテーブルを集合的に実装することができる。例えば、仮想スイッチ識別モジュール１３２及びＬ２転送モジュール１３４を用いて、レイヤ２ヘッダフィールドのみに作用するフローテーブルエントリを実装することができる。別の例として、仮想ルータ識別モジュール１３６及びＬ３転送モジュール１３８を用いて、レイヤ３ヘッダフィールドのみに作用するフローテーブルエントリを実装することもできる。さらに別の例として、識別モジュール１３２、Ｌ２転送モジュール１３４、仮想ルータ識別モジュール１３６及びＬ３転送モジュール１３８を用いて、レイヤ２及びレイヤ３の両方のヘッダフィールドに作用するフローテーブルエントリを実装することができる。
【００６８】
モジュール１３２、１３４、１３６及び１３８を別個に実装した図９の例は例示にすぎない。必要であれば、いずれか２つ又は３つ以上のモジュールの機能を統合し、共有回路を用いて実装することもできる。これらのモジュールは、図７のハイパーバイザスイッチＥ５などのソフトウェアスイッチ内のソフトウェアモジュールとして実装することも、或いは専用回路を用いて実装することもできる。各スイッチ１３０は、ネットワーク転送及びネットワークルーティングの両方を実行することができ、このことは、コントローラが分散型仮想スイッチ及び仮想ルータを実装できるようにする役に立つ。
【００６９】
シナリオによっては、１又は２以上のサービス装置を通じてネットワークトラフィックを転送することが望ましい場合もある。例えば、ファイアウォール、ロードバランサ又はその他のサービス装置を通じて１つのＩＰドメインから別のＩＰドメインにネットワークトラフィックをルーティングすることが望ましい場合がある。コントローラは、ネットワークのサービス装置を通じてネットワークトラフィックを転送する際に、仮想分散型ルータ及びスイッチを使用することができる。図１０は、サービス装置を通じてネットワークトラフィックをルーティングするために、コントローラが仮想ルータ及び仮想スイッチをどのように制御できるかを示す図である。図１０の仮想ネットワークトポロジは、図８、及び図６の基礎ネットワークトポロジ１００に対応する。図１０の例では、説明を不必要に曖昧にしないように仮想ルータＶＲ２などの要素を省いている。
【００７０】
図１０の例では、（矢印で示す）ステップ１４０において、エンドホストＥＨ３が、エンドホストＥＨ１宛てのネットワークパケット１４２を送信することができる。ネットワークパケット１４２は、宛先ＩＰアドレスとしてのエンドホストＥＨ１のＩＰアドレス（ＩＰ１）、及び送信元ＩＰアドレスとしてのエンドホストＥＨ３のＩＰアドレス（ＩＰ３）を含むことができる。パケット１４２は、送信元ＭＡＣアドレスとしてのエンドホストＥＨ３のＭＡＣ（例えば、イーサネット）アドレス、及び６４という初期ＴＴＬ値（又は他の所望の初期値）を含むこともできる。エンドホストＥＨ３は、仮想ルータＶＲ１のエンドホストＥＨ１とは異なるＬ３インターフェイスに関連付けられ結合されている。従って、エンドホストＥＨ３は、エンドホストＥＨ１のＭＡＣアドレスにアクセスすることができず、仮想ルータＶＲ１のインターフェイスＩＦ１のアドレス（ＭＡＣＩＦ１）をネットワークパケット１４２の宛先ＭＡＣアドレスとして含むことができる。換言すれば、仮想ルータＶＲ１は、エンドホストＥＨ３のＩＰドメインとエンドホストＥＨ１のＩＰドメインとの間のインターフェイスとしての役割を果たす。
【００７１】
仮想スイッチＶＳＷ１は、パケット１４２の宛先ＭＡＣアドレスフィールドに基づいて、ネットワークパケット１４２を仮想ルータＶＲ１のインターフェイスＩＦ１に転送することができる。処理中、仮想スイッチは、ＩＰヘッダフィールドなどのレイヤ３ヘッダフィールドを無視することができる。仮想ルータＶＲ１は、インターフェイスＩＦ１においてパケット１４２を受け取り、このパケットに対してネットワークルーティング動作を実行することができる。仮想ルータＶＲ１は、コントローラからの制御データに基づいて、サービス装置１０４を通じてネットワークパケット１４２をルーティングすべきであると判断することができる。仮想ルータＶＲ１は、パケット１４２を変更し、変更済みのネットワークパケット１４６を生成してサービス装置１０４に送信することができる。図１０の例では、仮想ルータＶＲ１が、パケットの宛先ＭＡＣアドレスをサービス装置１０４のＭＡＣアドレス（ＭＡＣＳＤ）に書き換え、送信元ＭＡＣアドレスを仮想ルータＶＲ１のインターフェイスＩＦ３のＭＡＣアドレス（ＭＡＣＩＦ３）に書き換えて、ＴＴＬヘッダフィールドを６３に減分することができる。
【００７２】
仮想ルータＶＲ１は、変更済みのパケット１４６を、インターフェイスＩＦ３及び仮想スイッチＶＳＷ４を介してサービス装置１０４に送信することができる。サービス装置１０４は、ネットワークパケット１４６に対してファイアウォール機能、侵入検出、モニタリング又はその他の所望のサービスを実行してネットワークパケット１５０を生成し、インターフェイスＩＦ４において仮想スイッチＶＳＷ５を介して仮想ルータＶＲ１に送信することができる。サービス装置１０４は、パケット１４６に対してサービスを実行する際に、エンドホストＥＨ３からの当初のデータを維持することができる。サービス済みのパケット１５０は、送信元ＭＡＣアドレスとしてのＭＡＣＳＤ、及び宛先ＭＡＣアドレスとしてのインターフェイスＩＦ４のＭＡＣアドレス（ＭＡＣＩＦ４）を含むことができる。図１０の例では、サービス装置１０４がＴＴＬヘッダ値を減分することができる。しかしながら、この例は例示にすぎない。必要であれば、サービス装置１０４がＴＴＬヘッダ値を維持することもできる。
【００７３】
ステップ１４８において、サービス装置１０４は、サービス済みのパケット１５０を仮想ルータＶＲ１のインターフェイスＩＦ４に送信することができる。ステップ１４０、１４４及び１４８においては、ネットワークパケット内の送信元及び宛先ＩＰアドレス情報を維持することができる（例えば、ネットワークパケットを処理する際に、仮想ルータＶＲ１、サービス装置１０４、並びに仮想スイッチＶＳＷ１、ＶＳＷ４及びＶＳＷ５が送信元又は宛先ＩＰアドレス情報を変更することはない）。仮想ルータＶＲ１は、サービス済みのパケットを、インターフェイスＩＦ２を介してエンドホストＥＨ１に送信すべきであると判断する際に、サービス済みのパケット１５０内に維持されている宛先ＩＰアドレス情報を使用することができる。仮想ルータＶＲ１は、サービス済みのパケットに対してネットワークルーティング動作を実行することができる。図１０に示すように、仮想ルータＶＲ１は、サービス済みのパケット１５０内のレイヤ２情報を書き換えてパケット１５４を生成し、インターフェイスＩＦ２のＩＰドメインに合わせることができる。宛先ＭＡＣアドレスは、ＭＡＣ１（エンドホストＥＨ１のＭＡＣアドレス）に書き換え、送信元ＭＡＣアドレスは、ＭＡＣＩＦ２に書き換えることができる。ＴＴＬヘッダ値は、６１に減分することができる。
【００７４】
仮想ルータＶＲ１が、仮想スイッチＶＳＷ４を介してネットワークパケット１４２をサービス装置１０４にルーティングし、スイッチＶＳＷ５を介してサービス済みのネットワークパケットを受け取るようにコントローラ１８によって構成された図１０の例は例示にすぎない。必要であれば、ネットワークパケット１４２をサービス装置１０４に送信し、サービス装置１０４からサービス済みのネットワークパケットを受け取る際に使用する単一の仮想スイッチのみを介してサービス装置１０４を仮想ルータＶＲ１に結合することもできる。
【００７５】
コントローラ１８は、仮想スイッチ及び仮想ルータを、これらの仮想スイッチ及び仮想ルータが分散されている基礎スイッチ（例えば、物理的スイッチ及びハイパーバイザスイッチ）にフローテーブルエントリを提供することによってネットワークトラフィックフローにサービス装置を挿入するように制御することができる。図１１は、図１０の仮想ルータＶＲ１によって実行されるステップを、どのようにして仮想ネットワークの基礎スイッチによって実行されるステップに変換できるかを示す図である。図１１のネットワーク１００は、図６のネットワーク１００に対応し、明確にするためにいくつかのネットワーク要素を省いている。
【００７６】
図１１に示すように、ステップ１４０において、エンドホストＥＨ３がネットワークパケット１４２をスイッチＥ３に送信することができる。コントローラ１８は、スイッチＥ３を、パケット１４２を変更して（ステップ１４４）変更済みのネットワークパケット１４６をサービス装置１０４に送信するように構成することができる。ステップ１４８において、サービス装置１０４がパケット１４６を処理し、サービス済みのパケット１５０をスイッチＥ４に提供することができる。コントローラ１８は、スイッチＥ４を、（例えば、送信元及び宛先ＭＡＣアドレス情報を図１０の仮想ルータＶＲ１のインターフェイスＩＦ２に一致するように書き換えることによって）サービス済みのパケット１５０を変更してパケット１５４を生成するように構成することができる。コントローラ１８は、スイッチＣ１及びＥ２を、スイッチＥ４からエンドホストＥＨ１にネットワークパケット１５４を転送するように構成することができる。
【００７７】
図１１の例では、コントローラ１８が、スイッチＥ３及びＥ４の各々を、仮想ルータＶＲ１の機能の一部を実行するように構成する。エンドホストＥＨ３に結合されたスイッチＥ３のポート（すなわち、スイッチＥ３のポートＰ１）は、仮想ルータＶＲ１のインターフェイスＩＦ１としての役割を果たし、サービス装置１０４に結合されたスイッチＥ３のポート３は、仮想ルータＶＲ１のインターフェイスＩＦ３としての役割を果たす。同様に、スイッチＥ４のポートＰ３は、仮想ルータＶＲ１のインターフェイスＩＦ４としての役割を果たし、スイッチＥ４のポートＰ４は、仮想ルータＶＲ１のインターフェイスＩＦ２としての役割を果たす。一般に、各仮想ルータインターフェイスは、仮想スイッチの１又は２以上のエンドホスト（例えば、異なる基礎となる物理的スイッチ又はハイパーバイザスイッチの異なるポートに結合されたエンドホスト）の組に関連付けられる。従って、複数のスイッチの複数のポートが、仮想ルータＶＲ１のインターフェイスＩＦ１又は他のいずれかのインターフェイスとしての役割を集合的に果たすことができる。
【００７８】
コントローラ１８は、物理的スイッチ及びハイパーバイザスイッチを、仮想スイッチの機能を実行するように制御する。図１１の例では、コントローラ１８が、スイッチＥ３を、仮想スイッチＶＳＷ１の機能を実行するように構成することができる。コントローラ１８は、スイッチＥ３の仮想スイッチ識別モジュール１３２を、スイッチＥ３のポートＰ１で受け取られるパケット１４２などのパケットが仮想スイッチＶＳＷ１に割り当てられたことを確認するように構成することもできる。（例えば、Ｌ３転送モジュール１４０は、仮想ルータＶＲ１のルーティング機能を実行するように構成されているので）コントローラ１８は、スイッチＥ３のＬ２転送モジュール１３４を、仮想ルータＶＲ１のＭＡＣアドレス宛てのパケット１４２などのパケットを処理のためにＬ３転送モジュール１４０に転送するように構成することもできる。このようにして、コントローラ１８は、仮想スイッチ及び仮想ルータを基礎スイッチ（物理及び／又はハイパーバイザ）間に分散された配置で実装する。
【００７９】
コントローラ１８が図１０のサービス挿入ポリシーのために実装する基礎ネットワーク経路を表す図１１の例は例示にすぎない。一般に、コントローラ１８は、図１０の仮想経路のためにあらゆる所望の経路を実装することができる。例えば、仮想ルータＶＲ１のインターフェイスＩＦ２からエンドホストＥＨ１に送信されるパケット１５４は、図１０の仮想スイッチＶＳＷ２をトラバースし、この経路は、図１１に示すようなスイッチＥ４からスイッチＣ１及びＥ２を通ってエンドホストＥＨ１までの基礎経路に対応する。或いは、コントローラ１８は、スイッチＥ４を、スイッチＣ２及びＥ２、スイッチＣ２及びＥ１、又はスイッチＣ１及びＥ２を通じてパケット１５４を転送するように構成することもできる。必要であれば、サービス装置１０４と同様のさらなるサービス装置を通じてネットワークパケットをリダイレクトすることもできる。
【００８０】
図１２は、送信元エンドホストから宛先エンドホストに送信できるネットワークパケットの例示的な図である。図１５に示すように、ネットワークパケット１６２は、ヘッダフィールドと、ネットワークを介して送信元エンドホストから宛先エンドホストに運ばれるデータとを含むことができる。ヘッダフィールドは、送信元インターネットプロトコル（ＩＰ）アドレス、宛先ＩＰアドレス、ＴＴＬフィールドなどのＬ３ヘッダフィールドを含むことができる。ヘッダフィールドは、送信元イーサネットアドレス、宛先イーサネットアドレス及び仮想ローカルエリアネットワーク（ＶＬＡＮ）識別子などのＬ２ヘッダフィールドを含むこともできる。図１０のネットワークパケット１４２は、エンドホストＥＨ３からエンドホストＥＨ１に送信されるデータと、パケットを識別するヘッダフィールド（例えば、Ｄ＿ＩＰ、Ｓ＿ＩＰ、Ｄ＿ＭＡＣ、Ｓ＿ＭＡＣ、及びＴＴＬ）とを含むネットワークパケット１６２の例である。
【００８１】
図１０の例では、仮想ルータＶＲ１が、ネットワークパケットの送信元及び宛先イーサネット（例えば、ＭＡＣ）アドレス情報を書き換えることにより、サービス装置１０４を通じてネットワークパケットをルーティングする。宛先エンドホストＥＨ１によって受け取られるネットワークパケット１５４は、エンドホストＥＨ３によって送信された当初のネットワークパケット１４２と同じパケットデータを有するが、Ｌ２ヘッダフィールドは異なる。コントローラは、仮想ルータＶＲ１を、ネットワークパケット１４２のＬ２ヘッダフィールドを変更してネットワークパケット１４６を生成するように構成することにより、基礎となる物理的スイッチ又はハイパーバイザスイッチがネットワークパケット１４６をネットワークパケット１４２と混同しないことを確実にする支援を行うことができる。しかしながら、必要であれば、コントローラは、ネットワークパケットにタグ付けすることにより、エンドホストとの間を行き来するネットワークパケットと、サービス装置との間を行き来するネットワークパケットとを確実に区別する支援を行うこともできる。図１３及び図１４は、基礎スイッチによる識別のためにネットワークパケット１６２にどのようにタグ付けできるかを示す例示的な図である。
【００８２】
図１３に示すように、ネットワークパケット１６２のヘッダフィールドにタグ１６５を挿入してタグ付きネットワークパケット１６４を作成することができる。タグ１６５は、あらゆる所望のビット数で形成することができ、当初のネットワークパケット１６２のヘッダフィールドの未使用部分に挿入することができる。例えば、タグ１６５は、ＶＬＡＮヘッダフィールド、ＩＰヘッダフィールド、ＶＬＡＮヘッダフィールド又はいずれかの所望のパケットヘッダフィールドの未使用部分に記憶することができる。
【００８３】
図１４に示すように、ネットワークパケット１６２をカプセル化してカプセル化パケット１６６を形成することもできる。例えば、ネットワークパケット１６２は、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、仮想拡張ＬＡＮ（ＶｘＬＡＮ）、（ｍａｃ−ｉｎ−ｍａｃと呼ばれることもある）プロバイダ基幹ブリッジ、一般ルーティングのカプセル化（ＧＲＥ）、又はネットワークパケットをカプセル化するいずれかの所望のプロトコルを用いてカプセル化することができる。ネットワークパケットのカプセル化は、ネットワークパケット１６２に（例えば、新たな追加のヘッダフィールドに）タグ１６７を付加することを含むことができる。
【００８４】
仮想スイッチＶＳＷ３などの仮想スイッチは、ネットワークルーティング機能を実行しない。コントローラは、１又は２以上の仮想スイッチをネットワークパケットにタグ付けするように構成することによってサービス挿入を実装することができる。図１５は、コントローラが（例えば、Ｌ３ルーティング又は仮想ルータを使用せずにＬ２転送を用いて）いかにしてエンドホストＥＨ５とエンドホストＥＨ２との間でサービス装置１０５を通じてネットワークトラフィックをリダイレクトするように仮想スイッチＶＳＷ３を構成できるかを示す例示的な図である。
【００８５】
図１５に示すように、エンドホストＥＨ５は、エンドホストＥＨ２宛てのネットワークパケット１７２を送信することができる。ネットワークパケット１７２は、宛先ＩＰアドレスとしてのエンドホストＥＨ２のＩＰアドレス（ＩＰ２）、送信元ＩＰアドレスとしてのエンドホストＥＨ５のＩＰアドレス（ＩＰ５）、宛先ＭＡＣアドレスとしてのエンドホストＥＨ２のＭＡＣアドレス（ＭＡＣ２）、及び送信元ＭＡＣアドレスとしてのエンドホストＥＨ５のＭＡＣアドレス（ＭＡＣ５）を含むことができる。必要であれば、ＶＬＡＮ識別子フィールドなどの追加のヘッダフィールドをパケット１７２に含めることもできる。
【００８６】
コントローラ１８は、仮想スイッチＶＳＷ３を、（例えば、宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、ＶＬＡＮ識別子などに基づいて）ネットワークパケット１７２を識別し、識別されたネットワークパケットにタグ１７４を付加して、タグ付きネットワークパケット１７３をサービス装置１０５に転送するように構成することができる。ネットワークパケット１７２には、図１３又は図１４に示すようにタグ付けすることができる。サービス装置１０５は、タグ付きネットワークパケット１７３にサービスを行い、サービス済みのパケットを仮想スイッチＶＳＷ３に送信することができる。コントローラ１８は、仮想スイッチＶＳＷ３を、タグ１７４からサービス済みのネットワークパケット１７３を識別し、タグ１７４を除去することによって当初のパケット１７２を復元し、パケット１７２をエンドホストＥＨ２に送信するように構成することができる。仮想スイッチＶＳＷ３は、タグ１７４を除去することにより、サービス装置の挿入に起因する中断を最小限に抑える支援を行うことができる（例えば、エンドホストＥＨ２及びＥＨ５は、ネットワークパケット１７２がサービス装置１０５を通じてリダイレクトされたことに気付かない）。
【００８７】
図１５の仮想スイッチＶＳＷ３によるパケットへのタグ付けは、図１０のシナリオにおいてネットワークルーティング動作中に仮想ルータＶＲ１によって行われるイーサネットアドレスの書き換えと同様に、基礎となる物理的スイッチ及びハイパーバイザスイッチが、エンドホストとの間を行き来するパケットと、サービス装置との間を行き来するパケットとを確実に区別する支援を行うことができる。図１６は、コントローラ１８がいかにして基礎スイッチを制御することによってエンドホストＥＨ５とＥＨ２との間へのサービス挿入を実行するように仮想スイッチＶＳＷ３を構成できるかを示す例示的な図である。
【００８８】
図１６に示すように、エンドホストＥＨ５は、パケット１７２をハイパーバイザスイッチＥ５に送信することができる。エンドホストＥＨ５は仮想スイッチＶＳＷ３に割り当てられており、コントローラ１８は、スイッチＥ５を、（例えば、着信スイッチポート、宛先ＭＡＣアドレス又は送信元ＭＡＣアドレスなどのパケット１７２のネットワーク属性に基づいて）パケット１７２を識別し、パケット１７２にタグ付けすることによってタグ付パケット１７４を生成し、このタグ付パケット１７４をサービス装置１０５に送信するように構成しておくことができる。例えば、コントローラ１８は、ハイパーバイザスイッチＥ５の論理ポートＰ１において受け取られる全てのパケットに一致するフローテーブルエントリであって、一致するネットワークパケットにタグ付けし、スイッチＥ５の論理ポートＰ４を介してタグ付きネットワークパケットをサービス装置１０５にリダイレクトするようにスイッチＥ５に指示するフローテーブルエントリをハイパーバイザスイッチＥ５に提供することができる。その後、サービス装置１０５は、タグ付きネットワークパケット１７３を受け取り、このネットワークパケットにサービスを行い、サービス済みのネットワークパケット１７３を（例えば、ポートＰ４を介して）スイッチＥ５に送信する。コントローラ１８は、タグ１７４を用いてパケット１７３とパケット１７２とを区別するようにスイッチＥ５を構成しておくことができる。例えば、コントローラ１８は、タグ１７４を有するネットワークパケットに一致するフローテーブルエントリであって、タグ付きネットワークパケットのタグを外し（例えば、タグを除去し）、ネットワークパケットのヘッダフィールドに基づいて（例えば、タグ無しネットワークパケットの宛先ＭＡＣアドレスに一致するさらなるフローテーブルエントリに基づいて）タグ無しネットワークパケットを転送するようにスイッチＥ５に指示するフローテーブルエントリを提供することができる。換言すれば、コントローラ１８は、スイッチＥ５を、サービス挿入後にタグ付きネットワークパケットからタグを外すことによって当初のネットワークパケット１７２を復元し、このパケット１７２を（例えば、図１６に示すようにスイッチＥ１を通じて、又はスイッチＥ２を通る経路などのいずれかの所望のネットワーク経路を通じて）エンドホストＥＨ２に転送するように構成することができる。
【００８９】
コントローラは、ネットワーク管理者又は他のユーザなどから受け取られたポリシーに基づいてサービス挿入を実装することができる。図１７は、図６のコントローラ１８などのコントローラによって実装できるサービス挿入ポリシー１８２の例示的な図である。図１７に示すように、サービス挿入ポリシー１８２は、一連の送信元、一連の宛先、及び一連の送信元から一連の宛先に送信される全てのネットワークトラフィックに対して行うべき一連のサービスを含むことができる。
【００９０】
一連の送信元及び宛先の各々は、いずれかの所望の一連のネットワーク属性を用いて、また必要であれば、完全な又は部分的なワイルドカード機能を用いて識別することができる。一連のエンドホストは、接続ポイント、イーサネットアドレス、ＩＰアドレス、ＶＬＡＮ識別子、仮想スイッチ割り当て、仮想ルータ割り当て、又はいずれかの所望の一連の１又は２以上のネットワーク属性に基づいて識別することができる。例えば、エンドホストＥＨ１は、スイッチＥ１のポートＰ１、スイッチＥ２のポートＰ１に接続されたものとして、ＭＡＣアドレスによって、ＩＰアドレスによって、仮想スイッチＶＳＷ１に割り当てられたものとして、仮想ルータＶＲ１のインターフェイスＩＦ１に結合されたものとして、などによって識別することができる。別の例として、一連のエンドホストＥＨ２、ＥＨ４及びＥＨ５は、仮想スイッチＶＳＷ３に割り当てられたものとして、又は仮想ルータＶＲ２のインターフェイスＩＦ１に結合されたものとして識別することができる。
【００９１】
一連のサービスは、一連の送信元と一連の宛先との間でネットワークパケットに対して行われる所望の機能に基づいて識別することができる。サービスは、必要とされる挿入の順にリストすることができる。例えば、一連のサービスは、「ファイアウォール」及び「侵入検出」とすることができる。このシナリオでは、ネットワークパケットが宛先エンドホストに転送される前に、一連の送信元からのネットワークパケットを、まずファイアウォール機能を実行するサービス装置にリダイレクトし、次に侵入検出を実行するサービス装置にリダイレクトすべきである。必要であれば、ポリシー１８２によって特定の一連のサービス装置を識別することもできる。
【００９２】
必要であれば、図１８に示すような一連の要件から一連のサービスを識別することもできる。サービス挿入ポリシー１８４には、必要なサービスを識別する一連の要件、及び必要なサービスを挿入する際の制約又は優先順位などの他の要件を定めることができる。一例として、ポリシー１８４は、サービスを通じた送信元から宛先までの最短経路（物理的スイッチ及びハイパーバイザスイッチの基礎ネットワークを通じた最短経路）がコントローラによって実装されることを必要とすることができる。別の例として、ポリシー１８４は、いずれかの所与のサービスのための現在の処理負荷に関連する（例えば、このサービスを実行する複数のサービス装置間の処理負荷のバランスを保つのに役立つ）制約を含むこともできる。さらに別の例として、ポリシー１８４は、最小レベルの性能で又は特定の機能を有するサービス装置によって確実にサービスが行われるように支援するいずれかの所与のサービスの実行能力に関連する制約を含むこともできる。
【００９３】
図１９は、サービス挿入ポリシーに基づいてサービス挿入を実装するために図６のコントローラ１８などのコントローラが実行できる例示的なステップのフローチャート２００である。
【００９４】
ステップ２０２において、コントローラは、エンドホストグループから仮想スイッチを生成することができる。仮想スイッチは、ネットワーク管理者などのユーザが定めることができる。例えば、コントローラは、それぞれの仮想スイッチに割り当てるべきエンドホストグループを識別する情報を受け取ることができる。
【００９５】
ステップ２０４において、コントローラは、仮想スイッチグループから仮想ルータを生成することができる。換言すれば、コントローラは、一連のエンドホストグループから仮想ルータを生成することができる。コントローラは、（例えば、仮想スイッチと同様に）ユーザから受け取った情報に基づいて仮想ルータを生成することもできる。その後、コントローラは、ステップ２０８の動作、或いは任意に選択的ステップ２０６のステップを実行することができる。
【００９６】
ステップ２０６において、コントローラは、一連の予め定めたサービス挿入ポリシーテンプレートを提供することができる。例えば、コントローラは、所定のネットワークトポロジに、これらのネットワーク構成のための一般的な又は好ましいサービス挿入ポリシーを対応付けるデータベースを維持することができる。データベース内に維持されるネットワークトポロジは、仮想ネットワークトポロジ又は基礎ネットワークトポロジを含むことができる。この任意のシナリオでは、次のステップ２０８において、ユーザが、提供された一連のサービス挿入ポリシーから選択を行うことができる。
【００９７】
ステップ２０８において、コントローラは、サービス及び関連するネットワークトラフィックを識別するサービス挿入ポリシーを受け取ることができる。サービス挿入ポリシーは、ネットワーク管理者などのユーザから受け取ることができる。ネットワークトラフィックは、ネットワークの送信元及びネットワークの宛先によって識別することができる。サービスは、（例えば、図１７に示すような）順序付きリストとして識別することも、或いは（例えば、図１８に示すような）一連の１又は２以上の要件によって識別することもできる。
【００９８】
ステップ２１０において、コントローラは、ユーザが定めたポリシーを満たす経路を識別することができる。コントローラは、経路の識別に使用できるネットワークトポロジを識別する情報を維持することができる。例えば、コントローラは、仮想ネットワークトポロジの基礎となるネットワークトポロジを決定する際に、物理的スイッチ及びハイパーバイザスイッチと通信することができる。コントローラは、ネットワーク負荷及び装置能力などの、コントローラにおいて維持されている情報に基づいて、パフォーマンスを改善するように、ポリシーが定める要件を満たすように、又はいずれかの所望の基準を満たすように経路を識別することができる。コントローラは、図１０に示すような１又は２以上の仮想ルータを用いてレイヤ３サービス挿入を実行する経路を識別することも、或いは図１５に示すような仮想スイッチのみを用いてレイヤ２サービス挿入を実行する経路を識別することもできる。コントローラは、経路を識別する際に、最初にコントローラが維持している仮想ネットワークトポロジ内の仮想経路（例えば、図１０及び図１５に示すような仮想ルータ及び／又は仮想スイッチを通る経路）を識別することができる。次に、コントローラは、これらの仮想経路に基づいて、基礎ネットワークトポロジ内の経路（例えば、図１１及び図１６に示すような物理的スイッチ及びハイパーバイザスイッチを通る経路）を識別することができる。
【００９９】
ステップ２１２において、コントローラは、ステップ２１０において識別された経路を生成することができる。コントローラは、識別された経路を生成する際に、物理的スイッチ及びハイパーバイザスイッチと通信することができる。例えば、コントローラは、フローテーブルエントリに一致するネットワークパケットを所望のネットワーク経路に沿って転送して変更するように物理的スイッチ及びハイパーバイザスイッチに指示するフローテーブルエントリを提供することができる。
【０１００】
ある実施形態によれば、スイッチに結合されたエンドホストを有するネットワークにおいてスイッチを制御するコントローラを使用する方法であって、コントローラを用いて、それぞれのエンドホストグループから、少なくとも１つの仮想スイッチが少なくとも２つのスイッチからのポートを含む複数の仮想スイッチを形成するステップと、コントローラを用いて、仮想スイッチのグループから、ネットワークルーティング動作を実行する仮想ルータを形成するステップと、を含む方法が提供される。
【０１０１】
別の実施形態によれば、スイッチは、少なくとも１つの物理的スイッチを含む。
【０１０２】
別の実施形態によれば、スイッチは、少なくとも１つのハイパーバイザスイッチをさらに含む。
【０１０３】
別の実施形態によれば、ネットワークは、スイッチに結合されたサービス装置を含み、方法は、少なくとも１つの送信元エンドホストと、少なくとも１つの宛先エンドホストと、送信元エンドホストと宛先エンドホストとの間でネットワークパケットに対して実行すべき少なくとも１つのサービスとを識別するサービス挿入ポリシーを受け取るステップと、サービスを実行するサービス装置を選択するステップと、を含む。
【０１０４】
別の実施形態によれば、方法は、仮想ルータを制御することにより、選択されたサービス装置を通じて送信元エンドホストと宛先エンドホストとの間でネットワークパケットをリダイレクトするステップを含む。
【０１０５】
別の実施形態によれば、ネットワークパケットは、イーサネットアドレスフィールドを有し、仮想ルータを制御することによって送信元エンドホストから宛先エンドホストにネットワークパケットをリダイレクトするステップは、ネットワークパケットのイーサネットアドレスフィールドを書き換えることにより、選択されたサービス装置に変更済みネットワークパケットを送信するようにスイッチを制御するステップと、サービス装置から変更済みネットワークパケットを受け取ったことに応答して、変更済みネットワークパケットのイーサネットアドレスフィールドを復元するようにスイッチを制御するステップと、を含む。
【０１０６】
別の実施形態によれば、コントローラによって少なくとも２つのサービス装置が選択され、仮想ルータを制御することによって送信元エンドホストと宛先エンドホストとの間でネットワークパケットをリダイレクトするステップは、少なくとも２つのサービス装置を通じてネットワークパケットをリダイレクトするように仮想ルータを制御するステップを含む。
【０１０７】
別の実施形態によれば、サービスを実行するサービス装置を選択するステップは、ファイアウォール、ロードバランサ、侵入検出装置、パケットモニタリング装置及び暗号化装置から成る群からサービス装置を選択するステップを含む。
【０１０８】
別の実施形態によれば、仮想ルータを制御することにより、選択されたサービス装置を通じて送信元エンドホストと宛先エンドホストとの間でネットワークパケットをリダイレクトするステップは、送信元エンドホストと宛先エンドホストとの間のネットワークパケットに一致する、選択されたサービス装置を通じてネットワークパケットをリダイレクトするようにスイッチに指示するフローテーブルエントリをスイッチに提供するステップを含む。
【０１０９】
別の実施形態によれば、方法は、仮想スイッチを制御することにより、選択されたサービス装置を通じて送信元エンドホストと宛先エンドホストとの間でネットワークパケットをリダイレクトするステップを含む。
【０１１０】
別の実施形態によれば、仮想スイッチを制御することによって送信元エンドホストと宛先エンドホストとの間でネットワークパケットをリダイレクトするステップは、ネットワークパケットにタグ付けし、タグ付けされたタグ付きネットワークパケットを選択されたサービス装置に送信するようにスイッチを制御するステップと、選択されたサービス装置からタグ付きネットワークパケットを受け取ったことに応答して、タグ付きネットワークパケットのタグを外すようにスイッチを制御するステップと、を含む。
【０１１１】
ある実施形態によれば、スイッチに結合されたエンドホスト及びサービス装置を有するネットワークにおいてスイッチを制御するコントローラを使用する方法であって、ネットワークトラフィックと、ネットワークトラフィックに対して実行すべき少なくとも１つのサービスとを識別するサービス挿入ポリシーを受け取るステップと、サービス挿入ポリシーに基づいて少なくとも１つのサービス装置を識別するステップと、識別されたサービス装置を通じてネットワークトラフィックをリダイレクトするようにスイッチを制御するステップと、を含む方法が提供される。
【０１１２】
別の実施形態によれば、方法は、複数の仮想スイッチ及び仮想ルータを含む仮想トポロジを生成するステップを含み、各仮想スイッチ及び各仮想ルータは、複数の基礎スイッチにわたって分散し、仮想スイッチは、エンドホストに結合された仮想ポートを有し、仮想ルータは、仮想スイッチに結合された仮想インターフェイスを有する。
【０１１３】
別の実施形態によれば、仮想ルータの各仮想インターフェイスは、それぞれのイーサネットアドレスを割り当てられてそれぞれのＩＰドメインに関連付けられ、識別されたサービス装置は、所与の仮想ルータの第１の仮想インターフェイスに結合されて第１のＩＰドメインに関連付けられ、識別されたネットワークトラフィックの送信元エンドホストは、所与の仮想ルータの第２の仮想インターフェイスに結合されて第２のＩＰドメインに関連付けられ、識別されたサービス装置は、所与のイーサネットアドレスを有し、識別されたサービス装置を通じてネットワークトラフィックをリダイレクトするようにスイッチを制御するステップは、ネットワークトラフィックの送信元イーサネットアドレスフィールドを、所与の仮想ルータの第１の仮想インターフェイスのイーサネットアドレスに書き換え、ネットワークトラフィックの宛先イーサネットアドレスフィールドを、識別されたサービス装置の所与のイーサネットアドレスに書き換えることにより、識別されたサービス装置に変更済みネットワークパケットを送信するようにスイッチを制御するステップを含む。
【０１１４】
別の実施形態によれば、識別されたサービス装置は、所与の仮想スイッチの第１の仮想ポートに結合され、識別されたネットワークトラフィックの送信元エンドホストは、所与の仮想スイッチの第２の仮想ポートに結合され、識別されたサービス装置を通じてネットワークトラフィックをリダイレクトするようにスイッチを制御するステップは、ネットワークトラフィックにタグ付けし、このタグ付けされたタグ付きネットワークトラフィックを識別されたサービス装置に送信するようにスイッチを制御するステップと、識別されたサービス装置からタグ付きネットワークトラフィックを受け取ったことに応答して、タグ付きネットワークトラフィックのタグを外すようにスイッチを制御するステップと、を含む。
【０１１５】
別の実施形態によれば、ネットワークトラフィックにタグ付けするようにスイッチを制御するステップは、ネットワークトラフィックのヘッダフィールドに識別子を挿入するようにスイッチを制御するステップを含む。
【０１１６】
別の実施形態によれば、ネットワークトラフィックにタグ付けするようにスイッチを制御するステップは、識別されたネットワークトラフィックに一致するフローテーブルエントリをスイッチに提供するステップを含む。
【０１１７】
ある実施形態によれば、エンドホスト間でネットワークパケットを転送するスイッチに結合されたエンドホスト及びサービス装置を有するネットワークにおいてスイッチを制御するコントローラを使用する方法であって、少なくとも１つのサービス装置を選択するステップと、選択されたサービス装置がサービスすべきネットワークパケットを識別するステップと、選択されたサービス装置を通じて識別されたネットワークパケットをリダイレクトするようにスイッチを制御するステップと、を含む方法が提供される。
【０１１８】
別の実施形態によれば、選択されたサービス装置を通じて識別されたネットワークパケットをリダイレクトするようにスイッチを制御するステップは、選択されたサービス装置に変更済みネットワークパケットを送信するようにスイッチに指示する、識別されたネットワークパケットに一致するフローテーブルエントリをスイッチに提供するステップと、選択されたサービス装置から変更済みネットワークパケットを受け取ったことに応答して、変更済みネットワークパケットから識別されたネットワークパケットを復元するようにスイッチに指示する、変更済みネットワークパケットに一致するフローテーブルエントリをスイッチに提供するステップと、を含む。
【０１１９】
別の実施形態によれば、方法は、一連のサービス要件を受け取るステップと、一連のサービス要件に基づいて、サービス要件を満たすように少なくとも１つのサービス装置を選択するステップと、を含む。
【０１２０】
上記の説明は、本発明の原理を例示したものにすぎず、当業者であれば、本発明の範囲及び思想から逸脱することなく様々な変更を行うことができる。
【符号の説明】
【０１２１】
１８  コントローラ
１０２  他のネットワーク
１０４  サービス装置
１２０  仮想ネットワーク
【図１】
2017506025.tif 000003
【図２】
2017506025.tif 000004
【図３】
2017506025.tif 000005
【図４】
2017506025.tif 000006
【図５】
2017506025.tif 000007
【図６】
2017506025.tif 000008
【図７】
2017506025.tif 000009
【図８】
2017506025.tif 000010
【図９】
2017506025.tif 000011
【図１０】
2017506025.tif 000012
【図１１】
2017506025.tif 000013
【図１２】
2017506025.tif 000014
【図１３】
2017506025.tif 000015
【図１４】
2017506025.tif 000016
【図１５】
2017506025.tif 000017
【図１６】
2017506025.tif 000018
【図１７】
2017506025.tif 000019
【図１８】
2017506025.tif 000020
【図１９】
2017506025.tif 000021
【国際調査報告】
2017506025.tif 000022
2017506025.tif 000023
2017506025.tif 000024