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