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