(57)【特許請求の範囲】
【請求項１】
コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有し、更に、ネットワークは、外部ネットワークに結合され、外部ネットワークは、スイッチを有すると共に、その外部ネットワークのスイッチに結合されたエンドホストを有するものであり、ネットワークは、そのネットワークと前記外部ネットワークとの間をインターフェイスする複数のゲートウェイに結合される方法において、
前記コントローラで、ネットワークパケットを受け取り；及び
前記コントローラで、ネットワークパケットが前記外部ネットワークのエンドホストを行先とするか又は前記ネットワークのエンドホストを行先とするか決定し；
前記コントローラで、ネットワークパケットが外部ネットワークのエンドホストを行先とすることを決定するのに応答して前記複数のゲートウェイからあるゲートウェイを選択し；
前記コントローラで、前記選択されたゲートウェイを通して外部ネットワークのエンドホストへネットワークパケットを転送するように前記ネットワークのスイッチをコントロールし；及び
前記コントローラで、前記ネットワークパケットが外部ネットワークのエンドホストを行先とすることを決定するのに応答して、前記ネットワークパケットのソースイーサネットアドレスフィールドに、前記選択されたゲートウェイに結合された前記スイッチの所与の１つのハードウェアアドレスをリライトするように前記スイッチに指令する；
ことを含む方法。
【請求項２】
前記ネットワークは、前記エンドホストの各部分で形成された少なくとも第１及び第２のサブネットワークを含み、前記方法は、更に、
前記コントローラで、第１のバーチャルゲートウェイイーサネットアドレスを前記第１のサブネットワークに与え、そして第２のバーチャルゲートウェイイーサネットアドレスを前記第２のサブネットワークに与えることによりバーチャルゲートウェイを生成する、ことを含み、前記バーチャルゲートウェイは、前記第１のサブネットワークと、前記第２のサブネットワークと、前記外部ネットワークとの間をインターフェイスする、請求項１に記載の方法。
【請求項３】
前記ネットワークパケットを受け取ることは、
前記第１及び第２のサブネットワークの所与のサブネットワークからネットワークパケットを受け取る、
ことを含み、前記ネットワークパケットは、前記所与のサブネットワークのバーチャルゲートウェイイーサネットアドレスを含む、請求項２に記載の方法。
【請求項４】
前記コントローラで、ネットワークパケットがネットワークのエンドホストを行先とすることを決定するのに応答してネットワークのエンドホストにネットワークパケットをリダイレクトするように前記スイッチをコントロールすることをさらに含む、請求項３に記載の方法。
【請求項５】
前記ネットワークのエンドホストにネットワークパケットをリダイレクトするように前記スイッチをコントロールすることは、
ネットワークパケットの行先イーサネットアドレスフィールドに前記ネットワークのエンドホストのイーサネットアドレスをリライトするように前記スイッチの所与の１つに指令するフローテーブルエントリを前記スイッチの所与の１つに与える、
ことを含む請求項４に記載の方法。
【請求項６】
前記コントローラで、前記ネットワークパケットが前記ネットワークのエンドホストを行先とすることを決定するのに応答して、前記ネットワークパケットのソースイーサネットアドレスフィールドに、前記所与のサブネットワークに関連したバーチャルゲートウェイイーサネットアドレスをリライトするように前記スイッチに指令することを含む、請求項３に記載の方法。
【請求項７】
コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有し、更に、ネットワークは、外部ネットワークに結合され、外部ネットワークは、スイッチを有すると共に、その外部ネットワークのスイッチに結合されたエンドホストを有するものであり、ネットワークは、そのネットワークと前記外部ネットワークとの間をインターフェイスする複数のゲートウェイに結合される方法において、
前記コントローラで、ネットワークパケットを受け取り；
前記コントローラで、ネットワークパケットが前記外部ネットワークのエンドホストを行先とするか又は前記ネットワークのエンドホストを行先とするか決定し；
前記コントローラで、ネットワークパケットが外部ネットワークのエンドホストを行先とすることを決定するのに応答して前記複数のゲートウェイからあるゲートウェイを選択し；
前記コントローラで、前記選択されたゲートウェイを通して外部ネットワークのエンドホストへネットワークパケットを転送するように前記ネットワークのスイッチをコントロールし；及び
前記コントローラで、前記ネットワークパケットの生存時間ヘッダフィールドをデクリメントするように前記スイッチに指令する；
ことを含む方法。
【請求項８】
前記ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようにスイッチをコントロールすることは、前記ネットワークパケットの生存時間ヘッダフィールドをデクリメントするように前記スイッチの所与の１つに指令するフローテーブルエントリを前記スイッチの所与の１つに与えることを含む、請求項７に記載の方法。
【請求項９】
コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有するものであり、ネットワークはさらに、そのネットワークと外部ネットワークとの間をインターフェイスする複数のゲートウェイに結合される方法において、
前記コントローラで、エンドホストから送られるネットワークパケットが、予約されたネットワークアドレスに対応するハードウェアアドレスを要求するかどうか識別し；及び  前記コントローラで、前記ネットワークパケットが、予約されたネットワークアドレスに関連したハードウェアアドレスを要求すると決定するのに応答して、その予約されたハードウェアアドレスをエンドホストに与え；
前記コントローラで、前記複数のゲートウェイからあるゲートウェイを選択し；及び
前記コントローラで、前記選択されたゲートウェイを通して外部ネットワークのエンドホストへネットワークパケットを転送するように前記ネットワークのスイッチをコントロールし、前記ネットワークは、エンドホストの各部分で形成された少なくとも第１及び第２のサブネットワークを含み、前記エンドホストは、前記第１のサブネットワークに関連し；
前記コントローラで、前記予約されたハードウェアアドレス及び予約されたネットワークアドレスに関連したバーチャルゲートウェイを生成し、そのバーチャルゲートウェイは、前記第１のサブネットワークと第２のサブネットワークとの間をインターフェイスする；
ことを含む方法。
【請求項１０】
前記バーチャルゲートウェイを生成することは、
前記予約されたネットワークアドレスを含むネットワークパケットの生存時間ヘッダフィールドをデクリメントするように前記スイッチをコントロールする；
ことを含む請求項９に記載の方法。
【請求項１１】
前記ネットワークは、そのネットワークと外部ネットワークとの間をインターフェイスする複数のゲートウェイに結合され、前記方法は、更に、
前記コントローラで、前記第１のサブネットワークの所与のエンドホストから前記予約されたハードウェアアドレスを有するネットワークパケットを受け取り；
前記コントローラで、前記複数のゲートウェイからあるゲートウェイを選択し、その選択されたゲートウェイは、ネットワークからその選択されたゲートウェイへのネットワークトラフィックのための第１のインターフェイスと、その選択されたゲートウェイからネットワークへのネットワークトラフィックのための第２のインターフェイスと、を含むものであり；及び
前記コントローラで、前記選択されたゲートウェイの第１のインターフェイスを通して前記ネットワークパケットを転送するように前記スイッチに指令する；
ことを含む請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークに関するもので、より詳細には、コントローラによりコントロールされるネットワークスイッチを有する通信ネットワークに関する。
【背景技術】
【０００２】
インターネットや、インターネットに接続されたローカルデータネットワークのようなパケットベースのネットワークは、ネットワークスイッチを備えている。ネットワークスイッチは、パケットソースからパケット行先へパケットを転送するのに使用される。パケットは、時々、フレームとも称される。
【０００３】
ある売主のスイッチを、別の売主の装置を使用してコントロールすることは、困難又は不可能である。これは、ある売主のスイッチ装置が、別の売主のスイッチ装置とは異なるオペレーティングシステム及びコントロール手順セットを使用しているからである。異なる形式のスイッチプラットホームのコントロールに関連した課題に対処するため、クロスプラットホームプロトコルが開発された。それらのプロトコルは、それがなければ適合しないスイッチの集中コントロールを許す。
【０００４】
ネットワークのスイッチにクロスプラットホームコントローラクライアントを含ませることができる。コントローラクライアントは、ネットワーク経路を経て、それに対応するコントローラサーバーと通信することができる。種々のスイッチハードウェアにおいてコントローラクライアントを実施できるので、単一のコントローラで、それがなければ適合しないスイッチ装置をコントロールすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コントローラによりコントロールされるネットワークは、ネットワークと外部ネットワークとの間をインターフェイスするゲートウェイ装置を経て外部ネットワークに接続することができる。ネットワークのエンドホストから外部ネットワークのエンドホストへ伝送されるネットワークパケットは、１つ以上のゲートウェイ装置を通してルーティングされる。ネットワークパケットをネットワークから外部ネットワークへ効率的にルーティングすることは困難である。例えば、ネットワークのエンドホストは、外部ネットワークとインターフェイスするのに利用できるゲートウェイに関する情報が限定される。
【課題を解決するための手段】
【０００６】
ネットワークのスイッチをコントロールするために、集中型コントローラサーバー又は分散型コントローラのようなコントローラが使用される。ネットワークは、スイッチに結合されたエンドホストを含む。ネットワークは、ネットワークと外部ネットワークとの間をインターフェイスするゲートウェイに結合される。ネットワークは、ネットワークのエンドホストの各部分から形成されたサブネットワークを含む。このサブネットワークには、それに対応するバーチャルゲートウェイハードウェアアドレス（例えば、イーサネット（登録商標）アドレス）及びバーチャルゲートウェイネットワークアドレス（例えば、インターネットプロトコルアドレス）が指定される。
【０００７】
コントローラは、エンドホストにより伝送されるアドレス解決プロトコル要求のような要求に応答して各サブネットワークのエンドホストにバーチャルゲートウェイイーサネット（登録商標）アドレスを与えることによりバーチャルゲートウェイを生成する。バーチャルゲートウェイは、他のサブネットワーク又は外部ネットワークのエンドホストと通信するためにエンドホストにより使用される。例えば、エンドホストは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに適当なバーチャルゲートウェイイーサネット（登録商標）アドレスを記憶してネットワークパケットを形成することにより、外部ネットワークのためのネットワークパケットを伝送する。
【０００８】
コントローラは、外部ネットワーク又はサブネットワーク（例えば、所与のサブネットワークとは異なるサブネットワーク）を行先とするネットワークパケットを、所与のサブネットワークのエンドホストから受け取る。コントローラは、ゲートウェイの１つを選択し、そしてその選択されたゲートウェイを通してネットワークパケットを転送するようにスイッチに指令する。コントローラは、ソース及び行先アドレス情報のような情報をネットワークパケットから検索し、そしてその検索された情報をネットワークトポロジー情報と共に使用して、ゲートウェイを選択する。
【０００９】
選択されたゲートウェイは、ネットワークトラフィックが流れるインターフェイスを備えている。あるシナリオにおいて、選択されたゲートウェイは、ネットワークからのネットワークパケットをインターフェイスで受け取るのに応答してメッセージを発生するインターネットコントロールメッセージプロトコル（ＩＣＭＰ）リダイレクト機能を遂行し、そのインターフェイスは、ゲートウェイからネットワークへネットワークトラフィックを転送するのにも使用される。これらのシナリオでは、ゲートウェイの第１のインターフェイスは、ゲートウェイからネットワークへのネットワークトラフィックのために予約され、一方、ゲートウェイの第２のインターフェイスは、ネットワークからゲートウェイへのネットワークトラフィックのために予約される。コントローラは、選択されたゲートウェイの第２のインターフェイスを通してネットワークパケットを転送するようにスイッチに指令し、ゲートウェイへのネットワークトラフィックがゲートウェイからのネットワークトラフィックとは異なるインターフェイスにルーティングされるようにする。
【００１０】
要望があれば、コントローラは、ゲートウェイ機能を遂行するようにスイッチをコントロールする。例えば、コントローラは、外部ネットワーク又はサブネットワークを行先とするネットワークパケットの生存時間(time-to-live)ヘッダフィールドをデクリメントするようにスイッチをコントロールする。ネットワークパケットが外部ネットワークのエンドホストを行先とするとの決定に応答して、コントローラは、選択されたゲートウェイへネットワークパケットをリダイレクトするようにスイッチをコントロールする。又、ネットワークパケットが外部サブネットワークを行先とするとの決定に応答して、コントローラは、ネットワークパケットを行先エンドホストへリダイレクトするようにスイッチをコントロールする。
【００１１】
本発明の更に別の特徴、その性質及び種々の効果は、添付図面及び以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態によりコントローラ及びパケット転送システムを備えたネットワークを例示する図である。
【図２】本発明の一実施形態によりパケット処理エンジンを実行するマイクロプロセッサベースの装置を使用してパケット転送システムをどのように実施するか示す図である。
【図３】本発明の一実施形態によるパケット転送システム及びその関連コントローラを示す図で、パケット転送システムは、コントロールユニット及びそれに関連したスイッチング集積回路を備えている。
【図４】本発明の一実施形態により、パケット転送システムがマスター及びスレーブコントローラを有し、そしてコントローラサーバーがリモートコンピューティング装置又はパケット転送システムのラインカードにおいて実施されるようなネットワークを示す図である。
【図５】本発明の一実施形態によりネットワーク接続を経て通信するコントローラサーバー及びコントローラクライアントを示す図である。
【図６Ａ】本発明の一実施形態によりパケット処理システムによって使用される形式のフローテーブルを例示する図である。
【図６Ｂ】本発明の一実施形態によりパケット処理システムによって使用される形式のフローテーブルを例示する図で、フローテーブルのフローテーブルエントリに基づいて遂行される３つの形式のパケット転送を例示する図である。
【図６Ｃ】本発明の一実施形態により特定のアドレスをもつパケットがスイッチの第３の物理的ポートへ転送されるフローテーブルを例示する図である。
【図６Ｄ】本発明の一実施形態により特定のアドレスをもつパケットがスイッチの第５の物理的ポートへ転送されるフローテーブルを例示する図である。
【図７】本発明の一実施形態によりパケット処理システムにおけるパケットの処理に関するステップを例示するフローチャートである。
【図８】本発明の一実施形態によりゲートウェイを経て外部ネットワークとインターフェイスするネットワークを例示する図である。
【図９】本発明の一実施形態によりコントローラによってサブネットワークへと区画化されたネットワークを例示する図である。
【図１０】本発明の一実施形態によりバーチャルゲートウェイに関連したハードウェアアドレス予約を得るためにエンドホストによって伝送されるアドレス解決プロトコル（ＡＲＰ）要求を例示する図である。
【図１１】本発明の一実施形態によりアドレス解決プロトコル要求に応答して伝送されるアドレス解決プロトコル応答を例示する図である。
【図１２】本発明の一実施形態により一致するネットワークパケットをコントローラへ転送するようにスイッチに指令するためにコントローラにより与えられるフローテーブルエントリを例示する図である。
【図１３】本発明の一実施形態により外部ネットワークの行先エンドホストへソースエンドホストにより伝送されるネットワークパケットを例示する図である。
【図１４】本発明の一実施形態によりネットワークパケットを選択されたゲートウェイへリダイレクトするためにコントローラにより与えられるフローテーブルエントリを例示する図である。
【図１５】本発明の一実施形態によりコントローラによって伝送されるパケットアウトメッセージを例示する図である。
【図１６】本発明の一実施形態によりＡＲＰ要求に応答するようにスイッチを構成するためにコントローラにより遂行されるステップを例示するフローチャートである。
【図１７】本発明の一実施形態により選択されたゲートウェイを通してネットワークパケットが外部ネットワークへ転送されるように遂行されるステップを例示する図である。
【図１８】本発明の一実施形態により選択されたゲートウェイを通してネットワークパケットが第１のサブネットワークから第２のサブネットワークへ転送されるように遂行されるステップを例示する図である。
【図１９】本発明の一実施形態によりゲートウェイ機能を遂行するようにスイッチに指令するためにコントローラによって与えられるフローテーブルエントリを例示する図である。
【図２０】本発明の一実施形態によりコントローラでコントロールされるスイッチがゲートウェイ機能を遂行するように行われるステップを例示する図である。
【図２１】本発明の一実施形態により選択されたゲートウェイへネットワークパケットを転送するようにスイッチを構成するためにコントローラによって遂行されるステップを例示するフローチャートである。
【図２２】本発明の一実施形態によりゲートウェイ機能を遂行するようにスイッチを構成するためにコントローラにより遂行されるステップを例示するフローチャートである。
【図２３】本発明の一実施形態によりネットワークのスイッチ全体にわたりコントローラが分散されるネットワークを例示する図である。
【発明を実施するための形態】
【００１３】
インターネットや、インターネットに結合されたローカル及び地域的ネットワークのようなネットワークは、パケットベースのスイッチに依存する。ここでは、時々、ネットワークスイッチ、パケット処理システム、又はパケット転送システムとも称されるスイッチは、アドレス情報に基づいてパケットを転送することができる。例えば、スイッチは、ルーター、ファイアウオール、負荷バランサー、又は他のパケット転送システムを含む。このように、パケットソースにより送信されるデータパケットは、パケット行先に配送される。ネットワークの用語では、パケットソース及び行き先は、時々、エンドホストとも称される。エンドホストは、例えば、パーソナルコンピュータ、サーバー、及び他のコンピューティング装置、例えば、ワイヤード又はワイヤレス技術を使用してネットワークにアクセスするポータブル電子装置である。
【００１４】
ネットワークスイッチは、その容量が、比較的小さなイーサネット（登録商標）スイッチ及びワイヤレスアクセスポイントから、複数のラインカード、冗長電源、及びスーパーバイザー能力を含む大型のラックベースシステムまでの範囲である。ネットワークが複数の売主からの装置を含むことは、珍しいことではない。異なる売主からのネットワークスイッチは、パケット転送ネットワークを形成するように相互接続できるが、それらのオペレーティングシステムとコントロールプロトコルとの間の不適合性のために集中形態で管理することが困難である。
【００１５】
これらの潜在的な不適合性は、共通のクロスプラットホームコントロールモジュール（時々、コントローラクライアントとも称される）を各ネットワークスイッチに合体することにより克服することができる。集中型クロスプラットホームコントローラサーバーは、各ネットワークリンクを経てコントローラクライアントの各々と相互作用する。クロスプラットホームコントローラサーバー及びそれに対応するコントローラクライアントを使用することで、潜在的に異種のネットワークスイッチ装置を集中管理することができる。
【００１６】
一例としてここに述べる１つの例示的構成では、集中型コントロールは、図１のコントローラサーバー１８のような１つ以上のコントローラサーバーにより与えられる。コントローラサーバー１８は、スタンドアローンコンピュータ、コンピュータのクラスター、複数の位置に分散されたコンピュータのセット、ネットワークスイッチ内に埋設されるハードウェア、又は他の適当なコンピューティング装置１２において実施される。コントローラサーバー１８は、単一のコンピュータにおいて単一のプロセスとして実行することもできるし、又は冗長性のために多数のホストにわたって分散させることもできる。分散型の構成の使用は、予期せぬネットワーク区画（例えば、２つのキャンパス間のネットワークリンクが中断する事態）に対してネットワーク１０に融通性を与える上で役立つ。
【００１７】
分散型のコントローラ構成では、コントローラノードは、コントローラ内プロトコルを使用して情報を交換することができる。例えば、新たなエンドホストが、第１コントローラノードにしか接続されていないネットワークハードウェア（例えば、スイッチ）に接続される場合に、その第１コントローラノードは、コントローラ内プロトコルを使用して、新たなエンドホストの存在を他のコントローラノードに通知する。要望があれば、スイッチ又は他のネットワークコンポーネントが、複数のコントローラノードに接続されてもよい。単一のコントローラサーバーを使用して関連スイッチのネットワークをコントロールする構成を、時々、一例としてここに述べる。
【００１８】
図１のコントローラサーバー１８は、ネットワーク１０のトポロジーに関する情報を収集する。例えば、コントローラサーバー１８は、ネットワークを通してリンクレイヤ発見プロトコル（ＬＬＤＰ）プローブパケットを伝送し、ネットワーク１０のトポロジーを発見する。コントローラサーバー１８は、ネットワークトポロジーの情報及びネットワーク装置の能力の情報を使用して、ネットワークを通して流れるパケットの適当な経路を決定する。適当な経路が識別されると、コントローラサーバー１８は、パケットが必要に応じてネットワークに流れるよう保証するために、それに対応する設定データをネットワーク１０のハードウェアに伝送する。そのようなネットワーク構成動作は、システム設定動作中に、バックグランドで連続的に、又は新たに送信されるデータパケット（即ち、既存の経路が確立されていないところのパケット）の出現に応答して、遂行される。
【００１９】
コントローラサーバー１８は、ネットワーク構成ルール２０を実施するのに使用される。このルールは、種々のネットワークエンティティにどのサービスが利用できるか指定する。例えば、ルール２０は、ネットワーク１０のどのユーザ（又はどのタイプのユーザ）が特定のサーバーにアクセスするか指定する。ルール２０は、例えば、コンピューティング装置１２のデータベースに維持される。
【００２０】
コントローラサーバー１８、及び各ネットワークスイッチ１４のコントローラクライアント３０は、ネットワークプロトコルスタックを使用して、ネットワークリンク１６を経て通信する。
【００２１】
各スイッチ（パケット転送システム）１４は、入力／出力ポート３４（時々、ネットワークスイッチインターフェイスとも称される）を有する。装置の断片をポート３４に接続するのにケーブルが使用されてもよい。例えば、パーソナルコンピュータ、ウェブサーバー及び他のコンピューティング装置のようなエンドホストがポート３４に差し込まれる。又、ポート３４は、スイッチ１４の１つを他のスイッチ１４に接続するのに使用されてもよい。
【００２２】
パケット処理回路３２は、ポート３４の１つから別のポート３４へパケットを転送するのに使用されると共に、到来するパケットに対して他の適当なアクションを遂行するのに使用される。パケット処理回路３２は、専用の高速スイッチ回路のような１つ以上の集積回路を使用して実施され、ハードウェアデータ経路として働く。要望があれば、コントロールユニット２４で実行されるパケット処理ソフトウェア２６を使用して、ソフトウェアデータ経路を実施してもよい。
【００２３】
コントロールユニット２４は、コントロールソフトウェアを記憶しそして実行するための処理及びメモリ回路（例えば、１つ以上のマイクロプロセッサ、メモリチップ、及び他のコントロール回路）を含む。例えば、コントロールユニット２４は、パケット処理ソフトウェア２６のようなソフトウェアを記憶し実行し、フローテーブル２８を記憶し、そしてコントローラクライアント３０の動作をサポートするのに使用される。
【００２４】
コントローラクライアント３０及びコントローラサーバー１８は、ＯｐｅｎＦｌｏｗプロトコル（例えば、ＯｐｅｎＦｌｏｗスイッチ仕様書、バージョン１．０．０を参照）のようなネットワークスイッチプロトコルに準拠する。コントローラクライアント３０の中の１つ以上のクライアントも、他のプロトコル（例えば、シンプルネットワークマネージメントプロトコル）に準拠する。ＯｐｅｎＦｌｏｗプロトコル又は他の適当なプロトコルを使用して、コントローラサーバー１８は、入力／出力ポート３４から到来するパケットをスイッチ１４がどのように処理すべきか決定するデータをコントローラクライアント３０に与える。
【００２５】
１つの適当な構成では、コントローラサーバー１８からのフローテーブルデータは、フローテーブル２８のようなフローテーブルに記憶される。フローテーブル２８のエントリは、スイッチ１４を構成するのに使用される（例えば、パケット処理回路３２及び／又はパケット処理ソフトウェア２６の機能）。典型的なシナリオでは、フローテーブル２８は、フローテーブルエントリのためのキャッシュ記憶装置として働き、そしてそれらのフローテーブルエントリの対応するバージョンが、パケット処理回路３２の回路により維持される設定内で埋め込まれる。しかしながら、これは、単なる例示に過ぎない。フローテーブル２８は、スイッチ１４のフローテーブルエントリのための排他的記憶装置として働くか、又はパケット処理回路３２内のフローテーブル記憶リソースのために省略される。一般的に、フローテーブルエントリは、適当なデータ構造（例えば、１つ以上のテーブル、リスト、等）を使用して記憶される。明瞭化のために、フローテーブル２８のデータ（コントロールユニット２４のデータベースに維持されるか又はパケット処理回路３２の構成内に埋め込まれる）は、ここでは、フローテーブル形成エントリー（例えば、フローテーブル２８の行）と称される。
【００２６】
スイッチ１４が到来パケットをどのように処理するか決定するデータを記憶するフローテーブル２８の例は、単なる例示に過ぎない。要望があれば、ネットワークパケットをどのように転送するか判断する上でパケット転送システム１４の助けとなるように、フローテーブル２８に代わって又はそれに加えて、パケット転送判断エンジンが使用される。例えば、パケット転送判断エンジンは、ネットワークパケットの属性に基づいて（例えば、ネットワークプロトコルヘッダに基づいて）ネットワークパケットを所定のポートへ転送するようにパケット転送システム１４に指令する。
【００２７】
要望があれば、スイッチ１４は、コントロールソフトウェアを実行すると共に図２のパケット処理回路３２を省略する汎用処理プラットホームを使用して実施されてもよい。この形式の構成が図２に示されている。図２の例示的構成に示すように、コンピューティング装置１２のコントローラサーバー１８は、ネットワークリンク１６を経てスイッチ（パケット転送システム）１４のコントローラクライアント３０と通信する。コントローラサーバー１８は、例えば、フローテーブル２８に維持されたコントローラクライアント３０へフローテーブルエントリを搬送する。パケット処理ソフトウェア４０は、ネットワークインターフェイス３８を使用して、パケット（例えば、ポート３４を使用して送信及び受信されるパケット）を転送し、さもなければ、処理する。ネットワークインターフェイス３８は、（一例として）スイッチ１４のシステムボードへ差し込まれる１つ以上のネットワークインターフェイスカードを使用して実施される。
【００２８】
図１のネットワークスイッチ１４のようなネットワークスイッチは、１つ以上の高速スイッチング集積回路（スイッチＩＣ）に結合されたコントロール回路を使用して実施される。この形式の構成が図３に示されている。図３に示すように、コンピューティング装置１２のコントローラサーバー１８は、経路１６を経てネットワークスイッチ１４と通信する。スイッチ１４は、処理回路２４、及びスイッチＩＣ３２−１・・・スイッチＩＣ３２−Ｎのような１つ以上の関連スイッチＩＣ３２を備えている。コントロール回路２４は、例えば、マイクロプロセッサ及びメモリをベースとする。スイッチＩＣ３２−１・・・３２−Ｎは、高速度でパケット処理タスクを取り扱うことのできる専用スイッチング回路である。例えば、コントロール回路２４は、５００ＭＨｚマイクロプロセッサをベースとし、そしてスイッチＩＣ３２−１・・・３２−Ｎは、（一例として）１−１０Ｇｂｐｓの関連データレートを各々有する４８の入力／出力ポート３４からのデータを取り扱うことができる。
【００２９】
図１のネットワークスイッチ１４を実施するのに使用できる別の例示的スイッチアーキテクチャーが図４に示されている。図４の例では、スイッチ１４（又は他のパケット転送システム）は、プロセッサ２４−１のようなマスタープロセッサと、スレーブプロセッサ２４−２のような１つ以上の関連スレーブプロセッサとを備えている。スイッチＩＣ３２と、プロセッサ２４−２のようなスレーブプロセッサとは、ラインカード４８のようなラインカードにおいて実施される。ラインカード５０のような１つ以上のラインカードは、処理回路（例えば、マイクロプロセッサ及びメモリ）を含む。ラインカード４８及び５０は、バックプレーン５２を使用して相互接続される。
【００３０】
図４に示す形式の構成では、コントローラサーバーは、ラインカードの処理リソースを使用して実施される。例えば、コントローラサーバーは、図４のコントローラサーバー１８−Ｂで示されたようにラインカード５０において実施される。必要に応じて、コントローラサーバーは、コンピューティング装置１２において（例えば、図４のコントローラサーバー１８−Ａとして）実施されてもよい。コントローラサーバー１８−Ａ又はコントローラサーバー１８−Ｂは、プロセッサ２４−１及び／又は２４−２のようなプロセッサを使用して実施されるコントローラクライアント３０と通信する。コントローラサーバー１８−Ａとコントローラクライアントとの間の通信は、ネットワーク接続１６を経て行われる。コントローラサーバー１８−Ｂとコントローラクライアントとの間の通信は、バックプレーン５２を経て（例えば、ＴＣＰ／ＩＰのようなプロトコルを使用してネットワーク接続を経て）行われる。
【００３１】
図５に示すように、コントローラサーバー１８及びコントローラクライアント３０は、ネットワークプロトコルスタック５８及びネットワークプロトコルスタック６０のようなネットワークプロトコルスタックを使用してネットワーク経路６６を経て通信する。スタック５８及び６０は、例えば、Ｌｉｎｕｘ（登録商標）  ＴＣＰ／ＩＰスタック又はＶｘＷｏｒｋｓオペレーティングシステムにおけるＴＣＰ／ＩＰスタックである（一例として）。経路６６は、例えば、スイッチ１４と外部装置との間のネットワーク接続をサポートする経路（例えば、図１のネットワーク経路１６）であるか、或いは図４に示すように、スイッチ１４のバックプレーン５２においてネットワーク接続をサポートする経路である。ここでは、経路６６が経路１６のようなネットワーク経路である構成を一例として説明する。
【００３２】
コントロールプロトコルスタック５６は、ネットワークプロトコルスタック５８とコントロールソフトウェア５４との間のインターフェイスとして働く。コントロールプロトコルスタック６２は、ネットワークプロトコルスタック６０とコントロールソフトウェア６４との間のインターフェイスとして働く。オペレーション中に、コントローラサーバー１８がコントローラクライアント３０と通信するときに、コントロールプロトコルスタック５６は、コントロールプロトコルメッセージ（例えば、ポートをアクチベートするか又は特定のフローテーブルエントリをフローテーブル２８へインストールするためのコントロールメッセージ）を発生しそしてパースする。図５に示す形式の構成を使用することにより、コントローラサーバー１８とコントローラクライアント３０との間のリンクにわたってネットワーク接続が形成される。コントローラサーバー１８及びコントローラクライアント３０は、送信コントロールプロトコル（ＴＣＰ）又はユーザデータグラムプロトコル（ＵＤＰ）を使用してインターネットプロトコル（ＩＰ）ネットワーク接続を経て通信することができる。ネットワーク接続を経てコントローラサーバー１８とコントローラクライアント３０との間で通信するときに使用されるコントロールプロトコルは、例えば、ＳＮＭＰ及びＯｐｅｎＦｌｏｗプロトコルスタックバージョン１.０.０を含む（一例として）。
【００３３】
フローテーブル２８は、複数のフィールド（時々、ヘッダフィールドとも称される）を有するフローテーブルエントリ（例えば、テーブルの行）を含む。スイッチ１４により受け取られたパケットのフィールドは、フローテーブルのフィールドと比較される。各フローテーブルエントリは、それに関連したアクションを有する。パケットのフィールドとフローテーブルエントリのフィールドとの間に一致があるときには、そのフローテーブルエントリに対応するアクションが取られる。
【００３４】
例示的フローテーブルが図６に示されている。図６Ａに示すように、テーブル２８は、フローテーブルエントリ（行）６８を有する。各フローテーブルエントリには、ヘッダ７０、アクション７２及び統計値７４が関連される。ヘッダ７０は、複数のヘッダフィールド７６を各々含む。各フローテーブルエントリのアクションは、パケットのフィールドと、そのフローテーブルエントリのヘッダにおける対応フィールドとの間に一致が検出されたときにパケットに対してスイッチ１４がどんなアクションを遂行すべきか指示する。スイッチ１４は、スイッチ１４の遂行に関する情報を得ることが望まれるときにコントローラサーバー１８により質問される統計データ（カウンタ値）をフローテーブル２８の統計値部分に維持する。
【００３５】
ヘッダ７０のヘッダフィールド（及び各到来パケットの対応フィールド）は、次のフィールドを含む。進入ポート（即ち、パケットが受け取られるところのスイッチ１４の物理的ポートのアイデンティティ）、イーサネット（登録商標）ソースアドレス、イーサネット（登録商標）行先アドレス、イーサネット（登録商標）形式、バーチャルローカルエリアネットワーク（ＶＬＡＮ）識別（時々、ＶＬＡＮタグとも称される）、ＶＬＡＮプライオリティ、ＩＰソースアドレス、ＩＰ行先アドレス、ＩＰプロトコル、ＩＰ  ＴｏＳ（サービスの形式）ビット、トランスポートソースポート／インターネットコントロールメッセージプロトコル（ＩＣＭＰ）形式（時々、ソースＴＣＰポートとも称される）、及びトランスポート行先ポート／ＩＣＭＰコード（時々、行先ＴＣＰポートとも称される）。要望があれば、他のフィールドも使用される。例えば、ネットワークプロトコルフィールド及びプロトコルポートフィールドが使用される。
【００３６】
各フローテーブルエントリー（フローエントリー）には、一致するパケットをスイッチがどのように取り扱うか指令するゼロ以上のアクションが関連される。転送アクションが存在しない場合には、パケットがドロップされるのが好ましい。パケットフィールドとフローテーブルエントリのヘッダフィールドとの間に一致があるときにスイッチ１４により行われるアクションは、次のアクションを含む。転送（例えば、到来するインターフェイスを含まない全てのインターフェイスを経てパケットを送出するＡＬＬ；パケットをカプセル化してコントローラサーバーへ送るＣＯＮＴＲＯＬＬＥＲ；スイッチのローカルネットワーキングスタックへパケットを送るＬＯＣＡＬ；フローテーブル２８におけるアクションを遂行するＴＡＢＬＥ；入力ポートからパケットを送出するＩＮ＿ＰＯＲＴ；例えば、慣習的なレベル２、ＶＬＡＮ、及びレベル３処理を使用してスイッチによりサポートされるデフォールト転送経路でパケットを処理するＮＯＲＭＡＬ；及び到来するインターフェイスを含まない最小スパンツリーに沿ってパケットを溢れさせるＦＬＯＯＤ）。スイッチ１４により行われる付加的なアクションは、ポートにアタッチされたキューを通してパケットを転送するエンキューアクション、及びドロップアクション（例えば、特定のアクションを伴わずにフローテーブルエントリに一致するパケットをドロップする）を含む。フィールド変更アクションもスイッチ１４によってサポートされる。行われるフィールド変更アクションは、例えば、セットＶＬＡＮ  ＩＤ、セットＶＬＡＮプライオリティ、ストリップＶＬＡＮヘッダ、変更ＶＬＡＮタグ、変更イーサネット（登録商標）ソースＭＡＣ（メディアアクセスコントロール）アドレス、変更イーサネット（登録商標）行先ＭＡＣアドレス、変更ＩＰｖ４ソースアドレス、変更ＩＰｖ４  ＴｏＳビット、変更トランスポート行先ポートを含む。
【００３７】
図６Ｂは、３つのフローテーブルエントリを有するフローテーブルを例示するものである。それらエントリは、ワイルドカード（例えば、“＊”記号）を伴うフィールドを含む。ワイルドカードが特定のフィールドに存在するときには、全ての到来するパケットは、到来するパケットのフィールドの特定値に関わりなく、フィールドに対して「一致」を形成するとみなされる。
【００３８】
図６Ｂのテーブルの第１行のエントリは、フローテーブルエントリが動作しているスイッチに、イーサネット（登録商標）スイッチングを遂行するように指令する。特に、一致するイーサネット（登録商標）行先アドレスを伴う到来するパケットは、ポート３へ転送される。
【００３９】
図６Ｂのテーブルの第２行のエントリは、インターネットルーティングを遂行するためにスイッチをどのように構成するか示す（即ち、パケットは、それらの行先ＩＰアドレスに基づいて転送される）。
【００４０】
図６Ｂのテーブルの第３行は、ファイアウオール処理を行うためにスイッチをどのように構成するか示すエントリを含む。行先ＩＰポート値が８０のパケットを受け取ると、そのパケットはドロップされる（即ち、スイッチは、ポート８０のトラフィックを遮るファイアウオールとして働くように構成される）。
【００４１】
図６Ｂに示す形式のフローテーブルエントリは、システム設定オペレーション中にコントローラサーバー１８によりスイッチ１４へロードされるか、又はスイッチ１４からコントローラサーバー１８においてパケットを受け取って処理するのに応答してリアルタイムでコントローラサーバー１８からスイッチ１４へ送られる。多数のスイッチ１４を伴うネットワークでは、ネットワークを通る経路を形成するために各スイッチに適当なフローテーブルエントリが設けられる。
【００４２】
一例として、各エンドホスト間に直列に接続された第１及び第２スイッチを含むネットワークについて考える。第１のエンドホストから第２のエンドホストへトラフィックを送るときには、第１及び第２のスイッチを通してトラフィックをルーティングすることが望ましい。第２のスイッチが第１のスイッチのポート３に接続される場合、第２のエンドホストが第２のスイッチのポート５に接続される場合、及び第２のエンドホストの行先ＩＰアドレスが１７２．１２．３．４である場合には、コントローラサーバー１８は、第１のスイッチに図６Ｃのフローテーブルエントリを与えると共に、第２のスイッチに図６Ｄのフローテーブルエントリを与える。行先ＩＰアドレス１７２．１２．３．４をもつパケットが第１のスイッチに受け取られると、それらは、図６Ｃのテーブルの「ポート３へ転送」アクションに基づいて第２のスイッチへ転送される。それらパケットが第２のスイッチに受け取られると、それらは、図６Ｄの「ポート５へ転送」アクションに基づき第２のスイッチのポート５に接続された第２のエンドホストへ転送される。
【００４３】
入力／出力ポート３４を経て受け取られるパケットの処理中にスイッチ１４により遂行される例示的ステップが図７に示されている。ステップ７８において、スイッチ１４は、そのポートの１つ（例えば、図１の入力／出力ポート３４の１つ）でパケットを受け取る。
【００４４】
ステップ８０において、スイッチ１４は、受け取ったパケットのフィールドを、そのスイッチのフローテーブル２８におけるフローテーブルエントリのフィールドと比較して、一致があるかどうか決定する。フローテーブルエントリにおけるあるフィールドは、完全な値（即ち、完全なアドレス）を含む。他のフィールドは、ワイルドカードを含む（即ち、“＊”の“don’t care”ワイルドカードキャラクタでマークされたフィールド）。更に別のフィールドは、部分的に完全なエントリ（即ち、部分的にワイルドカード化された部分的アドレス）を有する。あるフィールドは、範囲を使用し（例えば、ＴＣＰポート番号を１と４０９６との間の値に制限することにより）、そして実際にその範囲を使用して、ある形式の部分的ワイルドカード化を実施する。受け取ったパケットとフローテーブルエントリとの間のフィールドごとの比較を行う際に、スイッチ１４は、フローテーブルエントリの各フィールドが、ワイルドカード化なしの完全な値を含むか、ワイルドカード化を伴う部分的値を含むか、又はワイルドカードキャラクタ（即ち、完全にワイルドカード化されたフィールド）を含むか、考慮することができる。
【００４５】
ステップ８０の動作中に、パケットのフィールドと、フローテーブルエントリの対応フィールドとの間に一致がないことが決定された場合には、スイッチ１４は、リンク１６を経てコントローラサーバー１８へパケットを送出する（ステップ８４）。
【００４６】
ステップ８０の動作中に、パケットとフローテーブルエントリとの間に一致があると決定された場合には、スイッチ１４は、そのフローテーブルエントリに関連したアクションを遂行し、そしてそのフローテーブルエントリの統計値フィールドにおけるカウンタ値を更新する（ステップ８２）。次いで、処理は、線８６で示すようにステップ７８へループバックし、スイッチ１４により別のパケットが処理されるようにする。
【００４７】
スイッチのネットワークをコントロールするためにコントローラ（例えば、コンピューティング装置において実施されるコントローラサーバー又は他のコントローラ）が使用される。このコントローラは、１つ以上のコントローラサーバーを含むか、又は１つ以上のスイッチ全体を通して分散される（例えば、コントローラの一部分が複数のスイッチのストレージ及び処理回路において実施される）。図８は、ネットワーク１００のスイッチ（例えば、パケット転送スイッチ）をコントロールするコントローラ１８を伴うネットワーク１００を例示する。コントローラ１８は、ストレージ１０１を備えている。ストレージ１０１は、ネットワークトポロジー情報、ネットワークトラフィック情報、エンドホスト情報、又はコントローラ１８により収集され及び／又は維持される他のネットワーク情報のようなネットワーク情報を記憶するためにコントローラ１８により使用される。ネットワーク情報は、リスト、データベース、又は他の形態のストレージ、例えば、グラフ又はツリーとして記憶される。
【００４８】
図８に示すように、ネットワーク１００は、ネットワーク１００内のネットワークスイッチ（例えば、スイッチＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４）に結合されたエンドホスト（例えば、エンドホストＨＹ１、ＨＹ２、ＨＧ１及びＨＧ２）を備えている。スイッチのポートには、エンドホスト又は他のスイッチが結合される。
【００４９】
スイッチＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４のようなスイッチは、コントローラ１８によりネットワーク経路６６（時々ここではネットワークコントロール経路とも称される）を経てコントロールされるコントローラクライアントを含む。一例として、コントローラサーバー１８は、ネットワーク経路６６を経てスイッチＳＷ１へフローテーブルエントリを与えることによりスイッチＳＷ１をコントロールする。コントローラクライアントを有するスイッチは、コントローラ１８によりコントロールされるので、ここでは時々クライアントスイッチとも称される。要望があれば、ネットワーク１００は、コントローラ１８によりコントロールされないスイッチ（ここでは時々非クライアントスイッチと称される）を含む。例えば、ネットワーク１００は、クライアントスイッチ間、又はクライアントスイッチとエンドホストとの間に介在されるゼロ以上の非クライアントスイッチを含む。
【００５０】
ネットワーク１００内の装置は、指定範囲のネットワークプロトコルアドレスから選択されたネットワークプロトコルアドレスに関連付けられる。図８の例では、ネットワーク１００には、１９２．０．２．０から１９２．０．２．２５５までの範囲のインターネットプロトコル（ＩＰ）アドレスが指定される。ネットワーク１００のエンドホストには、ネットワーク１００のＩＰアドレス範囲内のＩＰアドレスが指定される。例えば、エンドホストＨＹ１には、ＩＰアドレス１９２．０．２．１８が指定され、一方、エンドホストＨＧ１には、ＩＰアドレス１９２．０．２．１２９が指定される。ＩＰアドレスは、ネットワークアドミニストレータのようなユーザにより、又はダイナミックホストコンフィギュレーションプロトコル（ＤＨＣＰ）のようなネットワークプロトコルを使用して、エンドホストに指定される。
【００５１】
ＩＰアドレス範囲は、時々、どれほど多くのアドレスビットがＩＰアドレス範囲に対して固定値を有するかマスクにより指示するようなアドレス及びマスク表記を使用するものと称される。例えば、１９２．０．２．０から１９２．０．２．２５５までの範囲のＩＰアドレス範囲を有するネットワーク１００は、１９２．０．２．０／２４のＩＰアドレス範囲を有すると称される。というのは、ＩＰアドレス範囲の最初の２４ビットが固定されているからである（例えば、ＩＰアドレス範囲のＩＰアドレスは、１９２．０．２の所定のプレフィックスを有する）。
【００５２】
ネットワーク１００は、ネットワーク１０２のような外部ネットワークに結合される。この外部ネットワーク１０２は、ネットワーク１００のＩＰアドレスの範囲外であるＩＰアドレスに関連付けられる。例えば、外部ネットワーク１０２のエンドホストＨ３は、そのＩＰアドレスが１９２．０．２．０より小さいか又は１９２．０．２．２５５より大きい。
【００５３】
ネットワーク１００及び外部ネットワーク１０２のようなネットワークは、ネットワーク間をインターフェイスする装置ＧＷ１及びＧＷ２のようなゲートウェイ装置を経て結合される。ゲートウェイ装置は、例えば、ルーター、負荷バランサー、ファイアウオール、又はネットワーク間をインターフェイスする他のネットワーク装置を含む。要望があれば、ゲートウェイ装置は、ネットワーク間のネットワークトラフィックをコントロールするネットワークポリシーを実施するように構成される。ネットワークポリシーは、ネットワーク間に送られるネットワークパケットを変更し、ネットワークパケットをリダイレクトし、ネットワークパケットを転送し、又はネットワークパケットに対して他のアクションを遂行することにより、実施される。ゲートウェイ装置は、時々、ここではゲートウェイとも称される。
【００５４】
ゲートウェイ装置により受け取られるネットワークパケットは、生存時間値を記憶する生存時間ヘッダフィールドを含む。例えば、インターネットプロトコルを使用して伝送されるネットワークパケットは、生存時間ヘッダフィールドを含む。ゲートウェイ装置は、受け取ったネットワークパケットの生存時間ヘッダフィールドをデクリメントする、等のゲートウェイ機能を遂行する。生存時間ヘッダフィールドに記憶される値は、ゲートウェイ装置（又はネットワークパケットの生存時間ヘッダフィールドをデクリメントする他のネットワーク装置）によりネットワークパケットを処理できる回数を決定する。例えば、ゲートウェイ装置は、生存時間値がゼロのネットワークパケットをドロップするように構成される。このシナリオでは、生存時間値が３２のネットワークパケットは、ゲートウェイにより３２回まで処理される（例えば、ネットワークパケットは、生存時間値がゼロに到達するまで３２までのゲートウェイを横断し、そしてネットワークパケットがドロップされる）。
【００５５】
ゲートウェイＧＷ１及びＧＷ２は、ネットワーク経路１０４を経てネットワーク１００に結合されるゲートウェイインターフェイスＰＯ１及びＰＯ２を備えている。要望があれば、ゲートウェイＧＷ１及びＧＷ２は、任意のゲートウェイインターフェイスＰＩ１及びＰＩ２を経てネットワーク１００に結合される。ネットワーク１００のクライアントスイッチは、ネットワーク経路１０８を経て他のクライアントスイッチに結合される。ネットワーク１００のクライアントスイッチは、ネットワーク経路１１０を経てエンドホストに結合される。ネットワーク経路１０４、１０８及び１１０は、非クライアントスイッチを含む。例えば、ゲートウェイＧＷ１とクライアントスイッチＳＷ３との間のネットワーク経路１０４は、コントローラ１８によりコントロールされない非クライアントスイッチを含む。別の例として、クライアントスイッチＳＷ１とエンドホストＨＹ１との間のネットワーク経路１１０は、非クライアントスイッチを含む。
【００５６】
ゲートウェイＧＷ１及びＧＷ２は、ＩＰアドレスのようなネットワークプロトコルアドレスに基づいてネットワークパケットを転送することによりネットワーク１００と外部ネットワークとの間をインターフェイスする（例えば、ネットワーク１００及び外部ネットワーク１０２が各ＩＰアドレス範囲に関連しているために）。例えば、ネットワーク１００のスイッチは、ネットワーク１００以外のエンドホストを行先とするネットワークパケットをゲートウェイＧＷ１へ転送するように構成される。このシナリオでは、ゲートウェイＧＷ１は、ネットワークパケットを受け取り、そしてそのネットワークパケットから検索された行先ＩＰアドレス情報に基づいてそのネットワークパケットを行先エンドホストに転送する。
【００５７】
コントローラ１８を使用してネットワーク１００内にサブネットワークを形成することが望まれる。サブネットワークは、ネットワーク１００に対応するネットワークアドレス範囲の各部分から形成される。図９は、サブネットワーク１１２及び１１４へと区画化されるネットワーク１００を例示する図である。図９の例において、サブネットワーク１１２及び１１４は、各ＩＰアドレス範囲１９２．０．２．１６／２８及び１９２．０．２．１２８／２７から形成される（例えば、サブネットワーク１１２は、１９２．０．２．１６と１９２．０．２．３１との間のＩＰアドレスに関連され、一方、サブネットワーク１１４は、１９２．０．２．１２８と１９２．０．２．１５９との間のＩＰアドレスに関連される）。サブネットワーク１１２及び１１４のようなサブネットワークのエンドホストには、それに対応するＩＰアドレス範囲内のＩＰアドレスが指定される。サブネットワークは、時々、エンドホストのグループに関連したバーチャルスイッチとも称される。各エンドホストには、それに対応するグループ（サブネットワーク）のＩＰアドレス範囲内のＩＰアドレスが指定される。
【００５８】
各サブネットワークには、そのサブネットワークの各エンドホストに与えられるゲートウェイＩＰアドレスが指定される。各サブネットワークに指定されるゲートウェイＩＰアドレスは、時々、デフォールトゲートウェイＩＰアドレスとも称される。例えば、ネットワークアドミニストレータのようなユーザは、サブネットワークの各エンドホストにゲートウェイＩＰアドレスを与える。別の例として、ゲートウェイＩＰアドレスは、ダイナミックホストコンフィギュレーションプロトコル（ＤＨＣＰ）のようなネットワークプロトコルを経てサブネットワークの各エンドホストに与えられる。各エンドホストに与えられるゲートウェイＩＰアドレスは、ネットワーク１０２のような外部ネットワークとインターフェイスするのにどのゲートウェイ（例えば、ゲートウェイＧＷ１又はＧＷ２）を使用すべきか決定するのに使用される。例えば、エンドホストＨＹ１にゲートウェイＧＷ１のＩＰアドレスが与えられる場合には、エンドホストＨＹ１は、外部ネットワーク１０２を行先とするネットワークパケットをゲートウェイＧＷ１へ伝送する。
【００５９】
クライアントスイッチＳＷ１、ＳＷ２、ＳＷ３及びＳＷ４のようなネットワーク１００のスイッチは、サブネットワークとゲートウェイとの間にネットワーク転送経路を与えるネットワークファブリック１１６を形成する。例えば、ネットワークパケットは、サブネットワーク１１２のエンドホストＨＹ１から、クライアントスイッチＳＷ１及びＳＷ３で形成されたネットワーク転送経路を通してゲートウェイＧＷ１へ転送され、一方、エンドホストＨＹ１からゲートウェイＧＷ２へのネットワークパケットは、クライアントスイッチＳＷ１、ＳＷ３及びＳＷ４で形成されたネットワーク転送経路を通して転送される。サブネットワークは、複数のゲートウェイに結合される（例えば、サブネットワーク１１４は、ネットワークファブリック１１６を通してゲートウェイＧＷ１及びＧＷ２に結合される）。これは単なる例示に過ぎない。一般的に、各サブネットワークは、そのサブネットワークに結合される各外部ネットワークのための１つ以上のゲートウェイに結合される。
【００６０】
ネットワークパケットをサブネットワークの異なるエンドホストから異なるゲートウェイへルーティングすることが望まれる。例えば、所与のサブネットワークの各エンドホストは、ネットワーク１００内の異なる位置に配置される。エンドホストＨＹ１からネットワークファブリック１１６を通してゲートウェイＧＷ２へ至るネットワーク転送経路は、３つのスイッチ（例えば、スイッチＳＷ１、ＳＷ３及びＳＷ４）を含み、一方、エンドホストＨＹ１からＧＷ１へのネットワーク転送経路は、２つのスイッチ（例えば、スイッチＳＷ１及びＳＷ３）を含む。このシナリオでは、ゲートウェイＧＷ１を通して外部ネットワーク１０２を行先とするネットワークパケットをエンドホストＨＹ１から転送するのが望ましい。というのは、エンドホストＨＹ１からゲートウェイＧＷ１へのネットワーク転送経路が、エンドホストＨＹ１からゲートウェイＧＷ２へのネットワーク転送経路より短い（例えば、ゲートウェイＧＷ１へのネットワーク転送経路が、ゲートウェイＧＷ２へのネットワーク転送経路より少数のスイッチしか横断しない）からである。エンドホストのゲートウェイは、ゲートウェイへの距離、ネットワーク転送経路を通るパケット転送遅延、ネットワークトラフィック条件、ネットワークポリシー（例えば、各エンドホストによりどのゲートウェイにアクセスできるかコントロールするネットワークポリシー）、又はコントローラ１８により維持される他のネットワーク情報に基づいて選択されるのが望ましい。
【００６１】
コントローラ１８は、エンドホストから外部ネットワーク１０２へ伝送されるネットワークパケットが望ましいゲートウェイを通して転送されるように、ネットワーク１００のクライアントスイッチをコントロールするのに使用される。各サブネットワークには、各バーチャルゲートウェイＩＰアドレス（例えば、ゲートウェイＧＷ１及びＧＷ２又はエンドホストのような他のネットワーク装置に関連しない予約されたＩＰアドレス）が指定される。各バーチャルゲートウェイＩＰアドレスは、それに対応するサブネットワークの範囲内の予約されたアドレスである。図９の例において、サブネットワーク１１２には、１９２．０．２．１７のバーチャルゲートウェイＩＰアドレス（例えば、ＩＰアドレス範囲１９２．０．２．１６／２８内の予約されたＩＰアドレス）が指定され、そしてサブネットワーク１１４には、１９２．０．２．１２９のバーチャルゲートウェイＩＰアドレス（例えば、ＩＰアドレス範囲１９２．０．２．１２８／２７内の予約されたＩＰアドレス）が指定される。これは単なる例示に過ぎない。サブネットワーク１１２及び１１４には、それに対応するＩＰアドレス範囲内に予約される望ましいＩＰアドレスが指定される。
【００６２】
所与のサブネットワークの各エンドホストは、そのサブネットワークのバーチャルゲートウェイＩＰアドレスで構成される。各バーチャルゲートウェイＩＰアドレスには、それに対応するバーチャルゲートウェイハードウェアアドレスが指定される（例えば、バーチャルゲートウェイＩＰアドレス及びバーチャルゲートウェイハードウェアアドレスは、バーチャルゲートウェイを表わす）。エンドホストは、バーチャルゲートウェイＩＰアドレスを使用して、バーチャルゲートウェイハードウェアアドレスのような付加的な情報を要求する。エンドホストは、アドレス解決プロトコル（ＡＲＰ）のようなネットワークプロトコルを使用して、バーチャルゲートウェイハードウェアアドレスを要求する。図１０は、サブネットワーク１１４のバーチャルゲートウェイＩＰアドレス（例えば、１９２．０．２．１２９）を使用してバーチャルゲートウェイハードウェアアドレスを要求するためにエンドホストＨＧ２により伝送されるＡＲＰ要求パケット１２２を例示する図である。
【００６３】
図１０に示すように、ＡＲＰ要求パケット１２２は、ソースネットワークアドレスフィールドに記憶されたエンドホストＨＧ２のＩＰアドレスと、ソースハードウェアアドレスフィールドに記憶されたエンドホストＨＧ２のイーサネット（登録商標）アドレスと、行先ネットワークアドレスフィールドに記憶されたエンドホストＨＧ２のバーチャルゲートウェイＩＰアドレスと、行先ハードウェアアドレスフィールドに記憶されたブロードキャストアドレスとを含む。ソースアドレスフィールド（例えば、ソースハードウェアアドレスフィールド及びソースネットワークアドレスフィールド）は、エンドホストＨＧ２がＡＲＰ要求パケットを送信したことを識別する。行先ネットワークアドレスは、ハードウェアアドレス情報が要求されるところのＩＰアドレスを識別する。ブロードキャストアドレスは、０ｘＦＦＦＦＦＦのような予約されたイーサネット（登録商標）アドレスである。
【００６４】
コントローラ１８は、バーチャルゲートウェイＩＰアドレスのためのＡＲＰ要求がコントローラ１８又はスイッチにより識別され処理されるように、ネットワーク１００のクライアントスイッチをコントロールする。例えば、コントローラ１８は、行先ネットワークアドレスフィールドにバーチャルゲートウェイＩＰアドレスを有するＡＲＰ要求パケットに一致するフローテーブルエントリをクライアントスイッチに与える。このシナリオでは、フローテーブルエントリは、一致するＡＲＰ要求を処理のためにコントローラへ転送するようにスイッチに指令する（例えば、適当なＡＲＰ応答パケットを発生するために）。或いは又、フローテーブルエントリは、一致するＡＲＰ要求に適当なＡＲＰ応答パケットで応答するようにスイッチに指令する。図１１は、ＡＲＰ要求パケット１２２のようなＡＲＰ要求パケットに応答してエンドホストへ送信されるＡＲＰ応答パケット１２４を例示する図である。
【００６５】
図１１に示すように、ＡＲＰ応答パケット１２４は、ソースネットワークアドレスフィールドと、ソースハードウェアアドレスフィールドと、行先ネットワークアドレスフィールドと、行先ハードウェアアドレスフィールドとを含む。ＡＲＰ要求パケットを送信したエンドホストのネットワーク及びハードウェアアドレスは、ＡＲＰ応答パケットの行先ネットワークアドレスフィールド及び行先ハードウェアアドレスフィールドに記憶される（例えば、ＡＲＰ要求パケットのソースエンドホストがＡＲＰ応答パケット１２４の行先エンドホストであるために）。元のＡＲＰ要求パケットからのバーチャルゲートウェイＩＰアドレスは、ＡＲＰ応答パケット１２４のソースネットワークアドレスフィールドに記憶される。
【００６６】
コントローラ１８は、バーチャルゲートウェイＩＰアドレスに関連した予約されたハードウェイアドレス（例えば、予約されたイーサネット（登録商標）アドレス）をＡＲＰ応答パケット１２４のソースハードウェアアドレスフィールドに記憶し、そしてＡＲＰ応答パケット１２４を、ＡＲＰ要求パケットを送信したエンドホスト（例えば、ＡＲＰ応答パケット１２４の行先ネットワークアドレス及び行先ハードウェアアドレスフィールドにより識別されたエンドホスト）へ送信する。一例として、コントローラ１８は、バーチャルゲートウェイＩＰアドレス及びそれに対応するバーチャルゲートウェイイーサネット（登録商標）アドレスのリスト又はデータベースをストレージ１０１に維持する。このシナリオでは、コントローラ１８は、ＡＲＰ要求パケットのバーチャルゲートウェイＩＰアドレスを使用して、それに対応するバーチャルゲートウェイイーサネット（登録商標）アドレスをストレージ１０１から検索する。
【００６７】
コントローラ１８は、エンドホストに結合されたクライアントスイッチにＡＲＰ応答パケット１２４を送信し、そしてクライアントスイッチに、ＡＲＰ応答パケット１２４をエンドホストに転送するように指令することにより、エンドホストへＡＲＰ応答パケット１２４を送信する。バーチャルゲートウェイのハードウェアアドレスは、外部ネットワークへネットワークパケットを送信するときにエンドホストにより使用される。
【００６８】
図１２は、コントローラ１８によりクライアントスイッチ（例えば、クライアントスイッチＳＷ１、ＳＷ２、等）に与えられるフローテーブルエントリ１２６を例示する図である。このフローテーブルエントリ１２６は、バーチャルゲートウェイＩＰアドレスを含むＡＲＰ要求パケット１２２のようなネットワークパケットをコントローラ１８へ転送するようにクライアントスイッチに指令する。図１２に示すように、フローテーブルエントリ１２６は、行先ネットワークアドレスフィールドに記憶されたバーチャルゲートウェイＩＰアドレスを有するネットワークパケットに一致する。フローテーブルエントリ１２６は、フローテーブルエントリ１２６が与えられるスイッチに、一致するネットワークパケットをコントローラ１８へ転送するように指令する。
【００６９】
例えば、コントローラ１８は、行先ネットワークアドレスフィールドに記憶されたバーチャルゲートウェイＩＰアドレス１９２．０．２．１２９を有するフローテーブルエントリ１２６をクライアントスイッチＳＷ２に与える。このシナリオでは、フローテーブルエントリは、行先ネットワークアドレスフィールドに記憶されたバーチャルゲートウェイＩＰアドレス１９２．０．２．１２９を有するＡＲＰ要求パケット１２２のようなネットワークパケットを識別するためにクライアントスイッチＳＷ２により使用される。フローテーブルエントリは、識別されたネットワークパケットを処理のためにコントローラ１８へ転送するようにクライアントスイッチＳＷ２に指令する。識別されたネットワークパケットを受け取るのに応答して、コントローラ１８は、ＡＲＰ応答パケット１２４のようなＡＲＰ応答パケットに応答するようにクライアントスイッチをコントロールする。ＡＲＰ応答パケットは、バーチャルゲートウェイＩＰアドレス１９２．０．２．１２９に対応するバーチャルゲートウェイイーサネット（登録商標）アドレスを含む。
【００７０】
エンドホストは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに記憶されたバーチャルゲートウェイイーサネット（登録商標）アドレス（例えば、ＡＲＰ応答パケットのソースハードウェアアドレスフィールドから検索された）をもつネットワークパケットを形成することにより外部ネットワーク（又は外部サブネットワーク）を行先とするネットワークパケットを送信する。図１３は、エンドホストＨＧ２により外部ネットワークの行先エンドホストへ送られるネットワークパケット１３２を例示する図である。
【００７１】
図１３に示すように、ネットワークパケット１３２は、ソース及び行先ＩＰアドレスフィールドと、ソース及び行先イーサネット（登録商標）アドレスフィールドと、生存時間ヘッダフィールドと、行先エンドホストへ送信されるべきデータと、を含む。ネットワークパケット１３２は、ソースイーサネット（登録商標）アドレス及びソースＩＰアドレスフィールドに記憶されたエンドホストＨＧ２のイーサネット（登録商標）及びＩＰアドレスを含むと共に、行先ＩＰアドレスフィールドに記憶された行先エンドホストのＩＰアドレスを含む。ネットワークパケット１３２は、ネットワークパケット１３２の行先イーサネット（登録商標）アドレスフィールドに記憶されたバーチャルゲートウェイイーサネット（登録商標）アドレスを含む。バーチャルゲートウェイイーサネット（登録商標）アドレスは、例えば、エンドホストＨＧ２からのＡＲＰ要求パケットに応答してコントローラ１８により送られるＡＲＰ応答パケットに与えられている。
【００７２】
コントローラ１８は、バーチャルゲートウェイイーサネット（登録商標）アドレスを選択されたゲートウェイのイーサネット（登録商標）アドレスに置き換え、それにより、ネットワークパケット１３２をその選択されたゲートウェイへリダイレクトすることにより、ネットワークパケット１３２をその選択されたゲートウェイへ転送するようにネットワーク１００のクライアントスイッチをコントロールする（例えば、ネットワーク１００のスイッチは、イーサネット（登録商標）アドレスフィールドに基づいてネットワークパケット転送するので）。選択されたゲートウェイは、ネットワークパケット１３２を受け取り、そしてそのネットワークパケットを、ネットワークパケット１３２の行先ＩＰアドレスフィールドに基づいて行先エンドホストへルーティングする。選択されたゲートウェイは、行先ホストへネットワークパケットをルーティングするときにゲートウェイ機能を遂行する。例えば、選択されたゲートウェイは、生存時間ヘッダフィールドをデクリメントし、及び／又はネットワークポリシーを実施する。
【００７３】
図１４は、ネットワークパケットが選択されたゲートウェイへリダイレクトされるようにコントローラ１８によってクライアントスイッチに与えられるフローテーブルエントリ１３４を例示する図である。図１４に示したように、フローテーブルエントリ１３４は、行先イーサネット（登録商標）アドレスフィールドに記憶されたバーチャルゲートウェイイーサネット（登録商標）アドレスを含む。クライアントスイッチは、フローテーブルエントリ１３４を使用して、一致する行先イーサネット（登録商標）アドレスフィールドを有するネットワークパケットを識別する。フローテーブルエントリ１３４のアクションフィールドは、識別されたネットワークパケットの行先イーサネット（登録商標）アドレスフィールドを、選択されたゲートウェイ（例えば、コントローラ１８により選択されたゲートウェイ）のイーサネット（登録商標）アドレスで変更するように、クライアントスイッチに指令する。
【００７４】
コントローラ１８は、クライアントスイッチから受け取られたネットワークパケットに応答してクライアントスイッチにフローテーブルエントリ１３４を与える。一例として、バーチャルゲートウェイイーサネット（登録商標）アドレスを行先とするネットワークパケットを受け取るクライアントスイッチは、ネットワークパケットを、クライアントスイッチに与えられたフローテーブルエントリと一致させる。クライアントスイッチが、一致するフローテーブルエントリを識別することができない場合には、クライアントスイッチは、ネットワークパケットをコントローラ１８へ転送する。ネットワークパケットを受け取るのに応答して、コントローラ１８は、クライアントスイッチにフローテーブルエントリ１３４を与え、そしてクライアントスイッチに、フローテーブルエントリ１３４に基づきネットワークパケットを転送するよう指令する。
【００７５】
コントローラ１８は、コントロール経路６６を経てクライアントスイッチにコントロールメッセージを送信することにより、ネットワークパケットを転送するようクライアントスイッチに指令する。図１５は、エンドホスト及び／又は別のスイッチへネットワークパケットを転送するようにクライアントスイッチに指令するためにコントローラ１８により送られるコントロールメッセージ１３５を例示する。コントロールメッセージ１３５は、時々、パケットアウトメッセージとも称される。
【００７６】
図１５に示すように、パケットアウトメッセージ１３５は、コマンド（例えば、パケットアウトコマンド）、１つ以上のポート（例えば、ポートのリスト）、及びペイロードを含む。コマンドは、パケットアウトメッセージ１３５により識別されたポート（１つ又は複数）からペイロードに記憶されたネットワークパケットを転送するようにクライアントスイッチに指令する。一例として、クライアントスイッチＳＷ４へネットワークパケットを転送するようにクライアントスイッチＳＷ２に指令するために、コントローラ１８は、（例えば、コントロール経路６６を経て）スイッチＳＷ２へパケットアウトメッセージ１３５を送信し、このメッセージは、パケットアウトコマンド及びネットワークパケットを含むと共に、ネットワーク経路１０８に対応するクライアントスイッチＳＷ２のポートを識別する。このシナリオでは、スイッチＳＷ２は、パケットアウトメッセージを受け取り、パケットアウトメッセージのペイロードからネットワークパケットを検索し、そしてそのネットワークパケットを指定のポートからクライアントスイッチＳＷ４へ転送する。
【００７７】
図１６は、ネットワーク１００のエンドホストにバーチャルゲートウェイイーサネット（登録商標）アドレス（例えば、外部ネットワーク１０２のような外部ネットワークへネットワークパケットを送るためにエンドホストによって使用される予約されたイーサネット（登録商標）アドレス）を与えるためにコントローラ１８により遂行されるステップを例示するフローチャートである。
【００７８】
ステップ１３６において、コントローラ１８は、バーチャルゲートウェイＩＰアドレスのためのＡＲＰ要求パケット（例えば、行先ネットワークアドレスフィールドに記憶されたバーチャルゲートウェイＩＰアドレスを有するＡＲＰ要求パケット）を識別し、そしてその識別されたＡＲＰ要求パケットをコントローラ１８へ転送するように、ネットワーク１００のクライアントスイッチを構成する。例えば、コントローラ１８は、一致するＡＲＰ要求パケットをコントローラ１８へ転送するようにクライアントスイッチに指令するフローテーブルエントリ１２６をクライアントスイッチに与える。
【００７９】
ステップ１３７において、コントローラ１８は、クライアントスイッチからバーチャルゲートウェイＩＰアドレスのためのＡＲＰ要求パケット受け取る。ＡＲＰ要求パケットは、例えば、バーチャルゲートウェイＩＰアドレスに対応するイーサネット（登録商標）アドレスを要求するためにエンドホストにより送られたものである。コントローラ１８は、受け取ったＡＲＰ要求パケットから検索される情報を使用して、そのＡＲＰ要求パケットが受け取られたところのエンドホストにどのゲートウェイを指定すべきか決定する。例えば、コントローラ１８は、ＡＲＰ要求パケットのソースネットワークアドレス及びソースハードウェアアドレスフィールドから検索されたソースアドレス情報のようなソース情報を使用して、エンドホストＨＧ２がＡＲＰ要求パケットを伝送したことを識別する。このシナリオでは、コントローラ１８は、ゲートウェイＧＷ２をエンドホストＨＧ２に指定しなければならないことを決定する（例えば、ゲートウェイＧＷ２とエンドホストＨＧ２との間のネットワーク転送路が、ゲートウェイＧＷ１とエンドホストＨＧ２との間のネットワーク転送路に比して少数のスイッチしか含まないために）。
【００８０】
エンドホストＨＧ２とゲートウェイ（例えば、ゲートウェイＧＷ１及びＧＷ２）との間のネットワーク転送路距離に基づいてコントローラ１８が適当なゲートウェイを選択する前記の例は単なる例示に過ぎない。コントローラ１８は、ネットワークトポロジー情報、ネットワークトラフィック条件、ネットワークポリシー、等の望ましいファクタに基づいてゲートウェイを選択する。一例として、コントローラ１８は、エンドホストとゲートウェイとの間のネットワーク転送路を通る転送遅延に基づいてゲートウェイを選択する。別の例として、コントローラ１８は、ネットワーク転送路に関連したネットワークトラフィック条件に基づいてゲートウェイを選択する（例えば、ネットワーク１００のスイッチ間にネットワークトラフィックを均一に分散させる上で助けとなるように）。
【００８１】
ステップ１３８において、コントローラ１８は、ＡＲＰ応答パケットでＡＲＰ要求パケットに応答するようにクライアントスイッチをコントロールする。ＡＲＰ応答パケットは、ＡＲＰ要求パケットのバーチャルゲートウェイＩＰアドレスに対応するバーチャルゲートウェイイーサネット（登録商標）アドレスを含む。一例として、コントローラ１８は、ＡＲＰ応答パケットを（例えば、ペイロードとして）含むパケットアウトメッセージをクライアントスイッチへ伝送する。このシナリオでは、パケットアウトメッセージは、（例えば、クライアントスイッチの適当なポートを経て）ＡＲＰ要求パケットが受け取られたところのエンドホストにＡＲＰ応答パケットを伝送するようにクライアントスイッチに指令する。
【００８２】
図１７は、エンドホストＨＧ２からエンドホストＨ３へ（例えば、ネットワーク１０２のような外部ネットワークのエンドホストへ）ネットワークパケットを伝送するために遂行されるステップを例示する図である。
【００８３】
ステップ１４２において、エンドホストＨＧ２は、エンドホストＨ３を行先とするネットワークパケットを伝送する。ネットワークパケットは、行先ＩＰアドレスフィールドにおけるエンドホストＨ３のＩＰアドレスと、行先イーサネット（登録商標）アドレスフィールドにおける予約されたハードウェアアドレス（例えば、サブネットワーク１１４に対して予約されたバーチャルゲートウェイイーサネット（登録商標）アドレス）とを含む。予約されたハードウェイアドレスは、コントローラ１８によりＡＲＰ応答パケットを経てエンドホストＨＧ２に与えられる。一例として、エンドホストＨＧ２は、図１３のネットワークパケット１３２を、行先ＩＰアドレスフィールドに記憶されたエンドホストＨ３のＩＰアドレスと、行先イーサネット（登録商標）アドレスフィールドに記憶されたサブネットワーク１１４のバーチャルゲートウェイイーサネット（登録商標）アドレスと共に、伝送する。
【００８４】
ステップ１４４において、クライアントスイッチＳＷ２は、エンドホストＨＧ２からネットワークパケットを受け取る。コントローラ１８は、ネットワークパケットが望ましいゲートウェイにリダイレクトされるようにクライアントスイッチＳＷ２をコントロールする。例えば、クライアントスイッチＳＷ２は、ネットワークパケットを、コントローラ１８によりクライアントスイッチＳＷ２に与えられたフローテーブルエントリ（例えば、図１４のフローテーブルエントリ１３４のようなフローテーブルエントリ）に一致させるように試みる。クライアントスイッチＳＷ２が、一致するフローテーブルエントリを識別できない場合には、クライアントスイッチＳＷ２は、ネットワークパケットをコントローラ１８へ転送する。ネットワークパケットを受け取るのに応答して、コントローラ１８は、ネットワークトポロジー情報のようなネットワーク情報、及びネットワークパケットから検索される行先及び／又はソース情報のような情報に基づいて、ネットワークパケットのための適当なゲートウェイを識別する。図８の例では、コントローラ１８は、エンドホストＨＧ２からのネットワークパケットをゲートウェイＧＷ２へ転送しなければならないことを識別する（例えば、ゲートウェイＧＷ２がゲートウェイＧＷ１よりエンドホストＨＧ２に接近しているために）。
【００８５】
コントローラ１８は、クライアントスイッチＳＷ２に、図１４のフローテーブルエントリ１３４のようなフローテーブルエントリを与え、これは、ネットワークパケットをゲートウェイＧＷ２（例えば、選択されたゲートウェイ）へリダイレクトするようにクライアントスイッチＳＷ２に指令するものである。ネットワークパケットは、ネットワーク１００に結合されたゲートウェイＧＷ２のインターフェイスへリダイレクトされる。
【００８６】
一例として、コントローラ１８は、エンドホストＨＧ２から受け取られたネットワークパケットのバーチャルゲートウェイイーサネット（登録商標）アドレスを有するネットワークパケットに一致するフローテーブルエントリ１３４を与える。このシナリオでは、フローテーブルエントリは、一致するネットワークパケットの行先イーサネット（登録商標）アドレスフィールドを、ゲートウェイＧＷ２のインターフェイスＰＯ２のイーサネット（登録商標）アドレスで変更して、一致するネットワークパケットをゲートウェイＧＷ２へリダイレクトするようにクライアントスイッチＳＷ２に指令する。フローテーブルエントリは、バーチャルゲートウェイイーサネット（登録商標）アドレスを行先とする将来のネットワークパケットをゲートウェイＧＷ２（例えば、識別されたゲートウェイ）へリダイレクトするようにクライアントスイッチＳＷ２により使用される。
【００８７】
クライアントスイッチＳＷ２にフローテーブルエントリを与えた後に、コントローラ１８は、エンドホストＨＧ２から受け取られたネットワークパケットをゲートウェイＧＷ２へ転送するようにクライアントスイッチＳＷ２に指令する。例えば、コントローラ１８は、図１５のパケットアウトメッセージ１３５のようなコントロールメッセージをクライアントスイッチＳＷ２へ伝送する。このシナリオでは、コントロールメッセージは、エンドホストＨＧ２から受け取られたネットワークパケットを含み、そしてクライアントスイッチＳＷ２に、ゲートウェイＧＷ２に結合されたポート（例えば、ネットワーク経路１０８、クライアントスイッチＳＷ４及びネットワーク経路１０４を通してゲートウェイＧＷ２に結合されたポート）からネットワークパケットを転送するように指令する。
【００８８】
ステップ１４６において、エンドホストＨＧ２からのネットワークパケットは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに基づいてネットワーク１００のスイッチによりゲートウェイＧＷ２のインターフェイスＰＯ２へ転送される（例えば、インターフェイスＰＯ２のイーサネット（登録商標）アドレスがネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに記憶されるので）。ゲートウェイＧＷ２は、ネットワークパケットを受け取り、そしてそのネットワークパケットを、ネットワークパケットの行先ＩＰアドレスフィールドに基づいてエンドホストＨ３へルーティングする（例えば、エンドホストＨ３のＩＰアドレスがネットワークパケットの行先ＩＰアドレスフィールドに記憶されるので）。例えば、ゲートウェイＧＷ２は、エンドホストＨ３のＩＰアドレスを使用して、エンドホストＨ３のイーサネット（登録商標）アドレスを決定し（例えば、ＡＲＰプロトコルを使用して）、そしてエンドホストＨ３のイーサネット（登録商標）アドレスをネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに記憶する。
【００８９】
ステップ１４８において、ゲートウェイＧＷ２は、外部ネットワーク１０２を通してエンドホストＨ３へネットワークパケットを伝送する。ゲートウェイＧＷ２は、ネットワークパケットをエンドホストＨ３へ伝送するときにネットワークパケットの生存時間ヘッダフィールドをデクリメントするようなゲートウェイ機能を遂行する。ネットワークパケットは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドを使用して外部ネットワーク１０２のスイッチによりエンドホストＨ３へ転送される。というのは、エンドホストＨ３のイーサネット（登録商標）アドレスが行先イーサネット（登録商標）アドレスフィールドに記憶されているからである。
【００９０】
コントローラ１８は、選択されたゲートウェイを通して異なるサブネットワークのエンドホスト間にネットワークパケットをルーティングする。選択されたゲートウェイを通してネットワークパケットをルーティングすることにより、コントローラ１８は、ゲートウェイを使用して、ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようなゲートウェイ機能を遂行する。例えば、ネットワーク１００のクライアントスイッチがゲートウェイ機能を遂行する能力に欠けるときのシナリオでは、ゲートウェイを使用して異なるサブネット間のネットワークパケットに対してゲートウェイ機能を遂行するのが望ましい。図１８は、選択されたゲートウェイを通して異なるサブネットワークのエンドホスト間でネットワークパケットをルーティングするために遂行されるステップを例示する図である。
【００９１】
ステップ１６２において、エンドホストＨＧ２は、エンドホストＨＹ２を行先とするネットワークパケットを伝送する。例えば、エンドホストＨＧ２は、ネットワークパケット１３２を、ネットワークパケット１３２の行先ＩＰアドレスフィールドに記憶されたエンドホストＨＹ２のＩＰアドレスと、行先イーサネット（登録商標）アドレスフィールドに記憶されたバーチャルゲートウェイイーサネット（登録商標）アドレスフィールドと共に、伝送する。
【００９２】
ステップ１６４において、クライアントスイッチＳＷ２は、エンドホストＨＧ２からネットワークパケットを受け取る。コントローラ１８は、ネットワークパケットがゲートウェイＧＷ２（例えば、ネットワークトポロジー情報、ネットワークトラフィック情報又はコントローラ１８により維持される他の情報に基づいて選択されたゲートウェイ）へリダイレクトされるようにクライアントスイッチＳＷ２をコントロールする。
【００９３】
あるシナリオでは、ゲートウェイＧＷ２からネットワーク１００へ送られるネットワークトラフィックに関連したインターフェイスとは異なるゲートウェイＧＷ２のインターフェイスへネットワークパケットを転送することが望まれる。例えば、ゲートウェイＧＷ２は、所与のインターフェイスに受け取られたネットワークパケットがその同じ所与のインターフェイスからゲートウェイによりルーティングされるときにゲートウェイがＩＣＭＰリダイレクトメッセージを発生するようなインターネットコントロールメッセージプロトコル（ＩＣＭＰ）リダイレクト機能を遂行する。このシナリオでは、エンドホストＨＧ２からゲートウェイＧＷ２の任意のインターフェイスＰＩ２へネットワークパケットを転送し、それにより、ゲートウェイにおける過剰な処理負荷を回避することが望まれる（例えば、ゲートウェイＧＷ２がネットワーク１００のサブネットワーク間のネットワークパケットに応答してＩＣＭＰリダイレクトメッセージを発生しないように）。
【００９４】
ゲートウェイＧＷ２がＩＣＭＰリダイレクト機能を遂行しない（例えば、ＩＣＭＰリダイレクト機能がディスエイブルされたとき）シナリオでは、ネットワークパケットをインターフェイスＰＯ２（例えば、ネットワーク１００を行先とするネットワークパケットをゲートウェイＧＷ２が転送するところのインターフェイス）へ転送することが望まれる。
【００９５】
ステップ１６６において、ネットワークパケットは、クライアントスイッチＳＷ４のようなスイッチを通してゲートウェイＧＷ２へ（例えば、ゲートウェイＧＷ２のインターフェイスＰＯ２又はインターフェイスＰＩ２へ）転送される。ステップ１６８において、ネットワークパケットは、ゲートウェイＧＷ２により処理され、そしてインターフェイスＰＯ２から転送される。ステップ１７０において、ネットワークパケットは、クライアントスイッチＳＷ４及びＳＷ２のようなスイッチを通してエンドホストＨＹ２へ転送される。
【００９６】
あるシナリオでは、コントローラ１８を使用して、ゲートウェイ機能を遂行するようにネットワーク１００のクライアントスイッチを構成することが望まれる。例えば、ネットワーク１００のクライアントスイッチが、ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようなゲートウェイ機能を遂行する能力を有する場合には、ネットワーク１００のサブネットワーク間でネットワークパケットを転送するときに、コントローラ１８を使用して、ゲートウェイ機能を遂行するようにネットワーク１００のクライアントスイッチを構成することが望まれる。図１９は、ゲートウェイ機能を遂行するためにコントローラ１８によりクライアントスイッチに与えられるフローテーブルエントリ１８１を例示する図である。
【００９７】
図１９に示すように、フローテーブルエントリ１８１は、行先ＩＰアドレスフィールドに記憶された行先エンドホストのＩＰアドレスと、行先イーサネット（登録商標）アドレスフィールドに記憶されたバーチャルゲートウェイイーサネット（登録商標）アドレスとを含む。フローテーブルエントリ１８１は、一致する行先ＩＰアドレス及びイーサネット（登録商標）アドレスフィールドを有するネットワークパケットを行先エンドホストへリダイレクトするようにクライアントスイッチをコントロールする。
【００９８】
一例として、フローテーブルエントリ１８１は、バーチャルゲートウェイイーサネット（登録商標）アドレスを行先エンドホストのイーサネット（登録商標）アドレスと置き換えるようにクライアントスイッチに指令する（例えば、ネットワーク１００のスイッチがネットワークパケットを行先エンドホストへ転送するように）。フローテーブルエントリ１８１は、更に、フローテーブルエントリ１８１に一致するネットワークパケットをリダイレクトするときにゲートウェイ機能を遂行するようにクライアントスイッチに指令する。例えば、フローテーブルエントリ１８１は、ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようにクライアントスイッチに指令する。
【００９９】
図２０は、ゲートウェイ機能を遂行できるクライアントスイッチにより異なるサブネットワーク間にネットワークパケットが転送されるときに遂行されるステップを例示する図である。
【０１００】
ステップ１８２において、エンドホストＨＧ２（例えば、第１のサブネットワーク１１４のエンドホスト）によりエンドホストＨＹ２（例えば、第２のサブネットワーク１１２のエンドホスト）へネットワークパケットが伝送される。ステップ１８２の動作は、図１８のステップ１６２と実質的に同様である。
【０１０１】
ステップ１８４において、クライアントスイッチＳＷ２は、ネットワークパケットを受け取って処理する。クライアントスイッチＳＷ２は、ネットワークパケットをエンドホストＨＹ２へルーティングし、そしてそのネットワークパケットに対してゲートウェイ機能を遂行するようにコントローラ１８によりコントロールされる。例えば、クライアントスイッチＳＷ２は、コントローラ１８により与えられたフローテーブルエントリ１８１のようなフローテーブルエントリを使用して、ネットワークパケットをどのように処理するか決定する。
【０１０２】
クライアントスイッチＳＷ２が、ネットワークパケットに一致するフローテーブルエントリを識別できないシナリオでは、クライアントスイッチＳＷ２は、ネットワークパケットをコントローラ１８に転送する。ネットワークパケットを受け取るのに応答して、コントローラ１８は、ネットワークパケットからソース及び行先情報のような情報を検索し、そしてその検索された情報をネットワークトポロジー情報と共に使用して、クライアントスイッチＳＷ２に、適当なフローテーブルエントリ（例えば、フローテーブルエントリ１８１）を与える。
【０１０３】
一例として、コントローラ１８は、ネットワークパケットからソースアドレス情報及び行先アドレス情報を検索し、そしてその検索されたアドレス情報を使用して、ネットワークパケットのソース及び行先エンドホストを識別する。このシナリオでは、コントローラ１８は、ネットワークトポロジー情報を使用して、ソースエンドホストと行先エンドホストとの間のネットワーク転送路を決定する。ネットワークトポロジー情報は、ネットワーク１００のクライアントスイッチ間、及びクライアントスイッチとエンドホストとの間のネットワーク接続及び／又はネットワーク経路を表わす情報を含む。コントローラ１８は、ネットワーク１００のクライアントスイッチにフローテーブルエントリを与えて、ネットワークパケットがネットワーク転送路に沿ってソースエンドホスト（例えば、エンドホストＨＧ２）から行先エンドホスト（例えば、エンドホストＨＹ２）へ転送されるようにすると共に、ネットワークパケットに対してゲートウェイ機能が遂行されるようにする。
【０１０４】
ゲートウェイ機能を遂行しそしてネットワーク１００のサブネットワーク間にネットワークパケットをルーティングするようにネットワーク１００のクライアントスイッチをコントロールすることにより、コントローラ１８は、ネットワーク１００のクライアントスイッチから形成されたネットワークファブリック（例えば、図９のネットワークファブリック１１６）を、サブネットワーク１１２、１１４とネットワーク１０２のような外部ネットワークとの間をインターフェイスするバーチャルゲートウェイとして動作するように構成する。
【０１０５】
コントローラ１８は、望ましいゲートウェイを通してネットワークパケットを外部ネットワークへ転送するようにネットワーク１００のクライアントスイッチをコントロールするステップを遂行する。図２１は、クライアントスイッチをコントロールするためにコントローラ１８により遂行されるステップを例示するフローチャート２００である。このフローチャート２００のステップは、例えば、選択されたゲートウェイ（例えば、ゲートウェイＧＷ２）へネットワークパケットをリダイレクトするために図１７のステップ１４４及び図１８のステップ１６４の間に遂行される。
【０１０６】
ステップ２０２において、コントローラ１８は、スイッチ（例えば、クライアントスイッチ）からネットワークパケットを受け取る。このネットワークパケットは、エンドホストにより、予約されたイーサネット（登録商標）アドレス（例えば、バーチャルゲートウェイイーサネット（登録商標）アドレス）へ伝送される。予約されたイーサネット（登録商標）アドレスは、ネットワークパケットが、エンドホストのサブネットワークの外部のネットワーク又はサブネットワークを行先とすることを識別する。換言すれば、予約されたイーサネット（登録商標）アドレスは、ネットワークパケットをゲートウェイで処理しなければならないことを識別する。
【０１０７】
ステップ２０４において、コントローラ１８は、ネットワークパケットを処理するために使用しなければならないゲートウェイを選択する。ゲートウェイは、ルーティングテーブル情報に基づいて選択され、ＡＲＰプロトコルを使用して選択され、ネットワークトポロジーに基づいて選択され、及び／又はネットワークパケットから検索された情報に基づいて選択される。要望があれば、ゲートウェイは、コントローラにより維持される他のネットワーク情報（例えば、クライアントスイッチからコントロール経路６６を経て収集されたネットワーク情報）に基づいて選択されてもよい。
【０１０８】
一例として、コントローラは、ネットワークパケットから行先エンドホストのＩＰアドレスを検索する。このシナリオでは、コントローラは、各ゲートウェイにどのＩＰアドレス範囲が関連しているか識別するルーティング又は転送テーブルを使用してゲートウェイを選択する。コントローラは、その選択されたゲートウェイのＩＰアドレス（例えば、転送テーブルから検索されたＩＰアドレス）のためのＡＲＰ要求パケットを伝送することにより、その選択されたゲートウェイのイーサネット（登録商標）アドレスを要求する。要望があれば、コントローラは、各ゲートウェイと、ネットワークパケットを送信したエンドホストとの間にどれほど多くのスイッチが結合されるかに基づき、どのゲートウェイが選択されるか決定する（例えば、ネットワークパケットをその選択されたゲートウェイへ転送することに関連したネットワーク負荷を減少するために）。
【０１０９】
ステップ２０６において、コントローラ１８は、その選択された（識別された）ゲートウェイへネットワークパケットをリダイレクトするようにスイッチをコントロールする。ネットワークパケットは、コントローラ１８によりクライアントスイッチに以前に与えられた図１４のフローテーブルエントリ１３４のようなフローテーブルエントリによりリダイレクトされる。或いは又、コントローラは、フローテーブルエントリ１３４のようなフローテーブルエントリを、コントローラへネットワークパケットを転送したクライアントスイッチに与え、そしてその後に、パケットアウトメッセージ（ネットワークパケットを含むパケットアウトメッセージ）をクライアントスイッチに送ることにより、ネットワークパケットをリダイレクトしてもよい。
【０１１０】
要望があれば、コントローラ１８は、選択されたゲートウェイの予約されたインターフェイスへネットワークパケットをリダイレクトするようにスイッチをコントロールする。例えば、選択されたゲートウェイがＩＣＭＰリダイレクト機能を遂行する場合には、コントローラ１８は、コントローラのネットワークから選択されたゲートウェイへのネットワークトラフィックに対して予約された選択されたゲートウェイのインターフェイスへネットワークパケットをリダイレクトする（例えば、ネットワークパケットを受け取るのに応答してゲートウェイによりＩＣＭＰリダイレクトメッセージが発生されないように）。
【０１１１】
任意であるが、ステップ２０８の動作は、ステップ２０６の間に遂行されてもよい。任意のステップ２０８において、コントローラ１８は、ネットワークパケットのソースイーサネット（登録商標）アドレスフィールドを、選択されたゲートウェイに結合されたネットワークスイッチのイーサネット（登録商標）アドレスにリライトするようにクライアントスイッチに指令する。例えば、コントローラ１８は、クライアントスイッチＳＷ４のイーサネット（登録商標）アドレスをネットワークパケットのソースイーサネット（登録商標）アドレスフィールドに記憶するようにクライアントスイッチに指令するインストラクションをフローテーブルエントリ１３４のアクションフィールドに含む。ステップ２０８の動作は、例えば、ネットワーク１００がゲートウェイＧＷ２に対してクライアントスイッチＳＷ４により表わされた単一のエンティティとして見えるように、コントローラ１８により遂行される。
【０１１２】
コントローラ１８は、ゲートウェイ機能を遂行するようにネットワーク１００のクライアントスイッチをコントロールするステップを遂行する。図２２は、ゲートウェイ機能を遂行するようにクライアントスイッチをコントロールするためにコントローラ１８により遂行されるステップを例示するフローチャートである。
【０１１３】
ステップ３０２において、コントローラ１８は、スイッチ（例えば、クライアントスイッチ）からネットワークパケットを受け取る。ネットワークパケットは、予約されたイーサネット（登録商標）アドレス（例えば、バーチャルゲートウェイイーサネット（登録商標）アドレス）を行先とする。
【０１１４】
ステップ３０４において、コントローラ１８は、ネットワークパケットが外部ネットワークのエンドホストを行先とするか、又はコントローラのネットワーク（例えば、コントローラによりコントロールされるクライアントスイッチを有するネットワーク）のエンドホストを行先とするか決定する。例えば、コントローラ１８は、ネットワークパケットから行先ＩＰアドレス情報を検索し、そして行先ＩＰアドレス情報を、各ネットワークにどのＩＰアドレス範囲が関連するか識別するコントローラ１８により維持される情報と比較する。行先エンドホストがコントローラのネットワークである場合には（例えば、ネットワークパケットの行先ＩＰアドレスがコントローラのネットワークのＩＰアドレス範囲内にある場合には）、ステップ３０６の動作が遂行される。行先エンドホストが外部ネットワークである場合には（例えば、ネットワークパケットの行先ＩＰアドレスがコントローラのネットワークのＩＰアドレス範囲外である場合には）、ステップ３１０の動作が遂行される。
【０１１５】
ステップ３０６において、コントローラ１８は、ネットワークパケットを行先エンドホストにリダイレクトしそしてゲートウェイ機能を遂行するようにスイッチをコントロールする。例えば、コントローラ１８は、ネットワークパケットの生存時間ヘッダフィールドをデクリメントしそして行先エンドホストのイーサネット（登録商標）アドレスをネットワークパケットの行先イーサネット（登録商標）アドレスフィールドに記憶するようにスイッチに指令するフローテーブルエントリをスイッチに与える。
【０１１６】
任意であるが、ステップ３０６の間に、ステップ３０８の動作が遂行されて、ネットワークパケットのソースイーサネット（登録商標）アドレスフィールドを、行先エンドホストに関連したバーチャルゲートウェイのイーサネット（登録商標）アドレス（例えば、行先エンドホストのサブネットワークに関連したバーチャルゲートウェイのバーチャルゲートウェイイーサネット（登録商標）アドレス）にリライトする。ステップ３０６の動作を遂行することにより、コントローラ１８は、ゲートウェイ装置がネットワーク１００のサブネットワーク間をインターフェイスするかのようにネットワーク１００が動作するようにスイッチをコントロールする。
【０１１７】
ステップ３１０において、コントローラ１８は、ネットワークパケットを処理するためにどのゲートウェイを使用すべきか識別する（例えば、行先エンドホストが外部ネットワークにあるので）。ゲートウェイは、ルーティングテーブル情報に基づいて、ＡＲＰプロトコル、ネットワークトポロジー情報を使用して、等々で、識別される。
【０１１８】
ステップ３１２において、コントローラ１８は、ネットワークパケットを、選択された（識別された）ゲートウェイにリダイレクトし、そしてゲートウェイ機能を遂行するように、スイッチをコントロールする。任意であるが、ステップ３１２の間に、ステップ３１４の動作を遂行し、ネットワークパケットのソースイーサネット（登録商標）アドレスフィールドを、識別されたゲートウェイに結合されるスイッチのイーサネット（登録商標）アドレスにリライトしてもよい（例えば、外部ゲートウェイ装置とネットワーク１００のエンドホストとの間にゲートウェイ装置が介在されるかのように、ネットワーク１００が外部ゲートウェイ装置に対して見えるように）。
【０１１９】
コントローラ１８のようなコントローラは、集中型コントローラ又は分散型コントローラとして形成される。図２３は、コントローラ３０２０がネットワーク３０００全体を通してスイッチ１４に分散される例を示す。コントローラ３０２０は、ネットワークスイッチ１４の幾つか又は全部に分散される。コントローラクライアント３０のようなコントローラクライアントは、ネットワーク通信リンクを経てコントローラ３０２０の１つ以上と通信する（例えば、コントローラ３０２０は、通信リンクを経てコントローラクライアント３０へインストラクションを送信する）。コントローラ３０２０は、スイッチ１４を総体的にコントロールするように互いに通信するか、又はスイッチ１４を個々にコントロールする。一例として、コントローラ３０２０は、互いに通信することによりネットワーク３０００を総体的にコントロールする。コントローラ３０２０は、ネットワークトポロジー、ネットワークトラフィック、スイッチ１４に結合されたエンドホスト等に関する情報を共有する。
【０１２０】
一実施形態によれば、コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有し、更に、ネットワークは、そのネットワークと外部ネットワークとの間をインターフェイスするゲートウェイに結合されたものである方法において、前記コントローラで、少なくとも１つの外部ネットワークを行先とするネットワークパケットを受け取り；前記コントローラで、前記ゲートウェイからあるゲートウェイを選択し；及び前記コントローラで、前記選択されたゲートウェイを通して前記外部ネットワークへネットワークパケットを転送するように前記スイッチに指令する；ことを含む方法が提供される。
【０１２１】
別の実施形態によれば、前記方法は、更に、コントローラで、ネットワークパケットから情報を検索することを含み、前記ゲートウェイからあるゲートウェイを選択することは、ネットワークパケットから検索された情報に基づいて前記ゲートウェイからあるゲートウェイを選択することを含む。
【０１２２】
別の実施形態によれば、前記ネットワークパケットから情報を検索することは、ネットワークパケットのヘッダフィールドからソースアドレス情報を検索することを含む。
【０１２３】
別の実施形態によれば、前記ゲートウェイからあるゲートウェイを選択することは、コントローラにより収集されたネットワークトポロジー情報に少なくとも一部分基づいて、前記ゲートウェイからあるゲートウェイを選択することを含む。
【０１２４】
別の実施形態によれば、ネットワークパケットは、予約されたハードウェアアドレスを含み、ネットワークパケットは、所与のスイッチから受け取られ、選択されたゲートウェイを通して外部ネットワークへネットワークパケットを転送するようにスイッチに指令することは、コントローラで、前記予約されたハードウェアアドレスを識別するフローテーブルエントリを所与のスイッチに与えることを含む。
【０１２５】
別の実施形態によれば、フローテーブルエントリは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドを前記選択されたゲートウェイのイーサネット（登録商標）アドレスで変更するように前記所与のスイッチに指令する。
【０１２６】
一実施形態によれば、コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有し、更に、ネットワークは、外部ネットワークに結合され、その外部ネットワークは、スイッチを有すると共に、その外部ネットワークのスイッチに結合されたエンドホストを有するものである方法において、前記コントローラで、ネットワークパケットを受け取り；及び前記コントローラで、ネットワークパケットが外部ネットワークのエンドホストを行先とするか又はネットワークのエンドホストを行先とするか決定する；ことを含む方法が提供される。
【０１２７】
別の実施形態によれば、ネットワークは、エンドホストの各部分で形成された少なくとも第１及び第２のサブネットワークを含み、前記方法は、更に、前記コントローラで、第１のバーチャルゲートウェイイーサネット（登録商標）アドレスを第１のサブネットワークに与え、そして第２のバーチャルゲートウェイイーサネット（登録商標）アドレスを第２のサブネットワークに与えることによりバーチャルゲートウェイを生成することを含み、そのバーチャルゲートウェイは、第１のサブネットワークと、第２のサブネットワークと、外部ネットワークとの間をインターフェイスする。
【０１２８】
別の実施形態によれば、前記ネットワークパケットを受け取ることは、第１及び第２のサブネットワークの所与のサブネットワークからネットワークパケットを受け取ることを含み、ネットワークパケットは、所与のサブネットワークのバーチャルゲートウェイイーサネット（登録商標）アドレスを含む。
【０１２９】
別の実施形態によれば、前記方法は、更に、前記コントローラで、ネットワークパケットがネットワークのエンドホストを行先とすることを決定するのに応答してネットワークのエンドホストにネットワークパケットをリダイレクトするようにスイッチをコントロールすることを含む。
【０１３０】
別の実施形態によれば、前記ネットワークのエンドホストにネットワークパケットをリダイレクトするようにスイッチをコントロールすることは、ネットワークパケットの行先イーサネット（登録商標）アドレスフィールドにネットワークのエンドホストのイーサネット（登録商標）アドレスをリライトするようにスイッチの所与の１つに指令するフローテーブルエントリをスイッチの所与の１つに与えることを含む。
【０１３１】
別の実施形態によれば、前記方法は、更に、前記コントローラで、ネットワークパケットがネットワークのエンドホストを行先とすることを決定するのに応答して、ネットワークパケットのソースイーサネット（登録商標）アドレスフィールドに、所与のサブネットワークに関連したバーチャルゲートウェイイーサネット（登録商標）アドレスをリライトするようにスイッチに指令することを含む。
【０１３２】
別の実施形態によれば、前記方法は、更に、前記コントローラで、ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようスイッチに指令することを含む。
【０１３３】
別の実施形態によれば、前記ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようにスイッチをコントロールすることは、ネットワークパケットの生存時間ヘッダフィールドをデクリメントするようにスイッチの所与の１つに指令するフローテーブルエントリをスイッチの所与の１つに与えることを含む。
【０１３４】
別の実施形態によれば、ネットワークは、スイッチ及びエンドホストを有する外部ネットワークとインターフェイスするゲートウェイに結合され、前記方法は、更に、前記コントローラで、ネットワークパケットが外部ネットワークのエンドホストを行先とすることを決定するのに応答して前記ゲートウェイからあるゲートウェイを選択し；及び前記コントローラで、前記選択されたゲートウェイを通して外部ネットワークのエンドホストへネットワークパケットを転送するようにネットワークのスイッチをコントロールする；ことを含む。
【０１３５】
別の実施形態によれば、前記方法は、更に、前記コントローラで、ネットワークパケットが外部ネットワークのエンドホストを行先とすることを決定するのに応答して、ネットワークパケットのソースイーサネット（登録商標）アドレスフィールドに、前記選択されたゲートウェイに結合されたスイッチの所与の１つのハードウェアアドレスをリライトするようにスイッチに指令することを含む。
【０１３６】
一実施形態によれば、コントローラを使用してネットワークのスイッチをコントロールする方法であって、ネットワークは、スイッチに結合されたエンドホストを有するものである方法において、前記コントローラで、エンドホストから送られるネットワークパケットが、予約されたネットワークアドレスに対応するハードウェアアドレスを要求するかどうか識別し；及び前記コントローラで、前記ネットワークパケットが、予約されたネットワークアドレスに関連したハードウェアアドレスを要求すると決定するのに応答して、予約されたハードウェアアドレスをエンドホストに与える；ことを含む方法が提供される。
【０１３７】
別の実施形態によれば、ネットワークは、エンドホストの各部分で形成された少なくとも第１及び第２のサブネットワークを含み、エンドホストは、第１のサブネットワークに関連し、前記方法は、更に、前記コントローラで、予約されたハードウェアアドレス及び予約されたネットワークアドレスに関連したバーチャルゲートウェイを生成し、そのバーチャルゲートウェイは、第１のサブネットワークと第２のサブネットワークとの間をインターフェイスする。
【０１３８】
別の実施形態によれば、前記バーチャルゲートウェイを生成することは、前記予約されたネットワークアドレスを含むネットワークパケットの生存時間ヘッダフィールドをデクリメントするようにスイッチをコントロールすることを含む。
【０１３９】
別の実施形態によれば、ネットワークは、そのネットワークと外部ネットワークとの間をインターフェイスするゲートウェイに結合され、前記方法は、更に、前記コントローラで、第１のサブネットワークの所与のエンドホストから予約されたハードウェアアドレスを有するネットワークパケットを受け取り；前記コントローラで、ゲートウェイからあるゲートウェイを選択し、その選択されたゲートウェイは、ネットワークからその選択されたゲートウェイへのネットワークトラフィックのための第１のインターフェイスと、その選択されたゲートウェイからネットワークへのネットワークトラフィックのための第２のインターフェイスと、を含むものであり；及び前記コントローラで、前記選択されたゲートウェイの第１のインターフェイスを通してネットワークパケットを転送するようにスイッチに指令する；ことを含む。
【０１４０】
以上の説明は、本発明の原理を単に例示するものに過ぎず、当業者であれば、本発明の精神及び範囲から逸脱せずに種々の変更がなされ得ることが明らかであろう。
【符号の説明】
【０１４１】
１０：ネットワーク
１２：コンピューティング装置
１４：ネットワークスイッチ
１６：ネットワークリンク
１８：コントローラサーバー
２０：ルール
２４：コントロールユニット
２６：パケット処理ソフトウェア
２８：フローテーブル
３０：コントローラクライアント
３２：パケット処理回路
３４：入力／出力ポート
３８：ネットワークインターフェイス
４０：パケット処理ソフトウェア
４８、５０：ラインカード
５２：バックプレーン
５４、６４：コントロールソフトウェア
５８、６０：ネットワークプロトコルスタック
５６、６２：コントロールプロトコルスタック
６６：ネットワーク経路
６８：フローテーブルエントリ
７０：ヘッダ
７２：アクション
７４：統計値
７６：ヘッダフィールド
【図１】
0006004405.tif 000002
【図２】
0006004405.tif 000003
【図３】
0006004405.tif 000004
【図４】
0006004405.tif 000005
【図５】
0006004405.tif 000006
【図６Ａ】
0006004405.tif 000007
【図６Ｂ】
0006004405.tif 000008
【図６Ｃ】
0006004405.tif 000009
【図６Ｄ】
0006004405.tif 000010
【図７】
0006004405.tif 000011
【図８】
0006004405.tif 000012
【図９】
0006004405.tif 000013
【図１０】
0006004405.tif 000014
【図１１】
0006004405.tif 000015
【図１２】
0006004405.tif 000016
【図１３】
0006004405.tif 000017
【図１４】
0006004405.tif 000018
【図１５】
0006004405.tif 000019
【図１６】
0006004405.tif 000020
【図１７】
0006004405.tif 000021
【図１８】
0006004405.tif 000022
【図１９】
0006004405.tif 000023
【図２０】
0006004405.tif 000024
【図２１】
0006004405.tif 000025
【図２２】
0006004405.tif 000026
【図２３】
0006004405.tif 000027