(57)【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサを含むシステムであって、前記少なくとも一つのプロセッサが、
ポートで、デバイスに対しメディア・アクセス制御（ＭＡＣ）アドレスを割り当てる要求を受信するよう構成されたロジックと、
少なくとも部分的に前記ポートに基づいて前記デバイスに割り当てるＭＡＣアドレスを決めるよう構成されたロジックと、
前記ＭＡＣアドレスを添えて前記要求に対する応答を送信するよう構成されたロジックと、
を含む、システム。
【請求項２】
ＭＡＣアドレス割当てテーブルを生成するよう構成されたロジックをさらに含み、
前記ＭＡＣアドレス割当てテーブルは複数のハッシュ値を含み、各ハッシュ値は一つのポートと複数のＭＡＣアドレスとに関連付けられており、前記複数のＭＡＣアドレスのどの一つもハッシュ化アルゴリズムを適用することによって、前記関連付けられたハッシュ値が得られる、
請求項１に記載のシステム。
【請求項３】
前記デバイスに割り当てる前記ＭＡＣアドレスを決めるよう構成された前記ロジックは、前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択するよう構成されたロジックを含み、前記選択されたＭＡＣアドレスに前記ハッシュ化アルゴリズムを適用することによって、前記デバイスに連結された前記ポートに関連付けられたハッシュ値が得られる、請求項２に記載のシステム。
【請求項４】
前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択するよう構成された前記ロジックは、複数の利用可能なＭＡＣアドレスから、次の利用可能なＭＡＣアドレスを連続的にまたはランダムに選択するよう構成されたロジックを含み、利用可能なＭＡＣアドレスは現在どのデバイスにも割り当てられていない、請求項３に記載のシステム。
【請求項５】
前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択したならば、前記ＭＡＣアドレスを前記ＭＡＣアドレス割当てテーブルから除去し、前記ＭＡＣアドレスを使用中ＭＡＣアドレス・テーブルに加えることによって、または前記ＭＡＣアドレス割当てテーブル中の前記ＭＡＣアドレスに関連付けられた表示ビットを反転することによって、前記ＭＡＣアドレスを利用不可として標識するよう構成されたロジックと、
前記デバイスが自分に割り当てられた前記ＭＡＣアドレスを解放したならば、前記ＭＡＣアドレスを前記ＭＡＣアドレス割当てテーブルに加え、前記ＭＡＣアドレスを前記使用中ＭＡＣアドレス・テーブルから除去することによって、または前記ＭＡＣアドレス割当てテーブル中の前記ＭＡＣアドレスに関連付けられた前記表示ビットを反転することによって、前記ＭＡＣアドレスを利用可能として標識するよう構成されたロジックと、
をさらに含む、請求項４に記載のシステム。
【請求項６】
前記ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］
＊２  ＸＯＲ  ＤＭ［２］＊３  ＸＯＲ  ＤＭ［３］＊４  ＸＯＲ  ＤＭ［４］＊５  ＸＯＲ  ＤＭ［５］＊６）ＭＯＤ  Ｐであり、前記式中の、ＤＭは前記ＭＡＣアドレスであり、Ｈ（ＤＭ）は前記ＭＡＣアドレスＤＭの全６バイトの前記ハッシュ値であり、Ｐは前記システムのポートの合計数である、請求項３に記載のシステム。
【請求項７】
前記ＭＡＣアドレス割当てテーブルが、前記少なくとも一つのプロセッサの始動プロセスの過程で生成され、前記ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ・・・  ＸＯＲ  ＤＭ［Ｎ−１］＊Ｎ）  ＭＯＤ  Ｐを含み、前記式中の、ＤＭは前記ＭＡＣアドレスであり、Ｈ（ＤＭ）は前記ＭＡＣアドレスＤＭの前記ハッシュ値であり、ＤＭ［Ｎ−１］は、Ｎバイト数を有する前記ＭＡＣアドレスＤＭの或るバイトであり、Ｐはポートの合計数である、請求項２に記載のシステム。
【請求項８】
メディア・アクセス制御（ＭＡＣ）アドレスを割り当てる方法であって、前記方法は、
スイッチング・デバイスのポートで、デバイスからのＭＡＣアドレスに対する要求を受信するステップと、
少なくとも部分的に前記ポートに基づいて、前記デバイスに割り当てるＭＡＣアドレスを決めるステップと、
前記ＭＡＣアドレスを添えて前記要求に応答するステップと、
を含む方法。
【請求項９】
ＭＡＣアドレス割当てテーブルを生成するステップであって、前記ＭＡＣアドレス割当てテーブルは複数のハッシュ値を含み、各ハッシュ値は複数のＭＡＣアドレスに対応している各ポートに関連付けられており、前記複数のＭＡＣアドレスのどの一つもハッシュ化アルゴリズムを適用することによって前記関連付けられたハッシュ値が得られる、前記生成するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
ＭＡＣアドレス割当てサーバ（ＭＡＡＳ）は、前記ＭＡＣアドレス割当てテーブルを構築するための入力ファイルから前記ＭＡＡＳに提供された、ＭＡＣアドレスの所定のセットを用い、前記ＭＡＡＳは、ＭＡＣアドレス割当てプロトコル（ＭＡＡＰ）パケットが受信されるのに応じて、前記ＭＡＣアドレス割当てテーブルから、前記デバイスに割り当てる前記ＭＡＣアドレスを決める、請求項９に記載の方法。
【請求項１１】
前記デバイスに割り当てる前記ＭＡＣアドレスを決めるステップは、前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択するステップを含み、前記選択されたＭＡＣアドレスに前記ハッシュ化アルゴリズムを適用することによって、前記デバイスに連結された前記スイッチング・デバイスの前記ポートに関連付けられたハッシュ値が得られる、請求項９に記載の方法。
【請求項１２】
前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択するステップは、複数の利用可能なＭＡＣアドレスから、次の利用可能なＭＡＣアドレスを連続的にまたはランダムに選択するステップを含み、利用可能なＭＡＣアドレスは現在どのデバイスにも割り当てられていないＭＡＣアドレスである、請求項１０に記載の方法。
【請求項１３】
前記ＭＡＣアドレス割当てテーブルから前記ＭＡＣアドレスを選択したならば、前記ＭＡＣアドレスを利用不可として標識するステップ、または前記ＭＡＣアドレスを前記ＭＡ
Ｃアドレス割当てテーブルから除去し、前記ＭＡＣアドレスを使用中ＭＡＣアドレス・テーブルに加えるステップと、
前記デバイスが自分に割り当てられた前記ＭＡＣアドレスを解放したならば、前記ＭＡＣアドレスを前記ＭＡＣアドレス割当てテーブルに加え、前記ＭＡＣアドレスを前記使用中ＭＡＣアドレス・テーブルから除去するステップ、または前記ＭＡＣアドレスを利用可能として標識するステップと、
をさらに含む、請求項１０に記載の方法。
【請求項１４】
前記ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ＸＯＲ  ＤＭ［２］＊３  ＸＯＲ  ＤＭ［３］＊４  ＸＯＲ  ＤＭ［４］＊５  ＸＯＲ  ＤＭ［５］＊６）ＭＯＤ  Ｐであり、前記式中の、ＤＭは前記ＭＡＣアドレスであり、Ｈ（ＤＭ）は前記ＭＡＣアドレスＤＭの全６バイトの前記ハッシュ値であり、Ｐは前記スイッチング・デバイスのポートの合計数である、請求項１０に記載の方法。
【請求項１５】
前記ＭＡＣアドレス割当てテーブルが前記スイッチング・デバイスの始動プロセスの過程で生成され、前記ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ・・・  ＸＯＲ  ＤＭ［Ｎ−１］＊Ｎ）  ＭＯＤ  Ｐを含み、前記式中の、ＤＭは前記ＭＡＣアドレスであり、Ｈ（ＤＭ）は前記ＭＡＣアドレスＤＭの前記ハッシュ値であり、ＤＭ［Ｎ−１］は、Ｎバイト数を有する前記ＭＡＣアドレスＤＭの或るバイトであり、Ｐはポートの合計数である、請求項９に記載の方法。
【請求項１６】
請求項８〜１５の何れか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１７】
請求項１６に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・センタのインフラストラクチャに関し、さらに具体的には、本発明は、ルックアップ・テーブルを使わずに、レイヤ２でパケット交換ができるイーサネット（Ｒ）スイッチに関する。
【背景技術】
【０００２】
パケット交換ネットワーク・スイッチにおいて、パケットを転送するためのスイッチング・デバイスの実際の宛先ポートを見出すために、通常、宛先メディア・アクセス制御（ＭＡＣ：ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）アドレスまたは宛先インターネット・プロトコル（ＩＰ：ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）アドレスに対するルックアップが行われる。ほとんどのシステムは、この判定のために、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）など何らかのスイッチング・プロセッサを用いる。このスイッチング・プロセッサは、このルックアップ判定を行うためルックアップ・テーブルを維持しており、一般的なネットワークでは、該テーブルはかなり長くおそらく数千のエントリを有する。このルックアップ・テーブルはチップ上に格納されるかもしくはチップの外部に格納される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
いずれの場合においても、ルックアップ・テーブルの使用は、チップに対し、相当な論理的複雑さ、スペース、およびメモリ要求が加わる。この追加された複雑さは、最終的にはより多くの待ち時間をもたらし、チップを望まれているよりも高価なものにする。したがって、ルックアップ・テーブルの使用なしに実際の宛先ポートを見出すことができれば有益であろう。
【課題を解決するための手段】
【０００４】
一実施形態において、システムは少なくとも一つのプロセッサを含み、該プロセッサは、或るポートの或るデバイスに対しメディア・アクセス制御（ＭＡＣ）アドレスを割り当てる要求を受信するよう構成されたロジックと、少なくとも部分的に該ポートに基づいて該デバイスに割り当てるＭＡＣアドレスを決めるよう構成されたロジックと、該ＭＡＣアドレスを添えて要求に対する応答を送信するよう構成されたロジックとを含む。
【０００５】
別の実施形態において、ＭＡＣアドレスを割り当てるためのコンピュータ・プログラム製品は、具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を含み、該コンピュータ可読プログラム・コードは、ルックアップ・テーブルを使わずに、デバイスに割り当てるＭＡＣアドレスを決めるよう構成されたコンピュータ可読プログラム・コードと、そのＭＡＣアドレスを該デバイスに送信するよう構成されたコンピュータ可読プログラム・コードとを含む。
【０００６】
別の実施形態によれば、ＭＡＣアドレスを割り当てる方法は、スイッチング・デバイスのポートでＭＡＣアドレスに対するデバイスからの要求を受信するステップと、少なくとも部分的に該ポートに基づいて、デバイスに割り当てるＭＡＣアドレスを決めるステップと、ＭＡＣアドレスを添えて要求に応答するステップとを含む。
【０００７】
さらに別の実施形態において、ＭＡＣアドレスを取得する方法は、ＭＡＣアドレスに対する要求をＭＡＣアドレス割当てサーバ（ＭＡＡＳ：ＭＡＣ  ａｄｄｒｅｓｓ  ａｌｌｏｃａｔｉｏｎ  ｓｅｒｖｅｒ）に送信するステップと、所定の長さの時間、要求に対する応答の受信を待つステップであって、該応答はＭＡＣアドレスを含む、該待つステップと、所定の長さの時間内に要求に対する応答が受信された場合、そのＭＡＣアドレスを使用するステップとを含む。
【０００８】
本発明の他の態様および実施形態は、本発明の原理を例として示す諸図面と併せ、以下の詳細な説明を読めば明らかになろう。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による、ネットワーク・アーキテクチャを示す。
【図２】一実施形態による、図１のサーバもしくはクライアントまたはその両方に関連付けることが可能な代表的なハードウェア環境を示す。
【図３】一実施形態による、スイッチング・デバイスの簡略化された図である。
【図４】一実施形態による、メディア・アクセス制御（ＭＡＣ）アドレス割当てテーブルを示す。
【図５】一実施形態による方法のフローチャートである。
【図６】別の実施形態による方法のフローチャートである。
【発明を実施するための形態】
【００１０】
以下の説明は、本発明の一般的原理を例示する目的で行うものであり、本明細書の本請求の発明概念を限定する意図はない。さらに、本明細書で説明する特定の特徴は、様々な可能な組合せおよび順序の各々の形で、説明された他の特徴と組合せて用いることができる。
【００１１】
本明細書中に特に別途に定義されていなければ、全ての用語は、本明細書で含蓄される意味の他、当業者が理解している意味もしくは辞書、論文などで定義される意味またはその両方を含め、それら用語の可能な最広義の解釈が付与されている。
【００１２】
また、本明細書および添付の特許請求の範囲での使用において、単数形「ある（“ａ”、“ａｎ”）」および「該（“ｔｈｅ”）」は、別途に指定されていなければ、複数形の指示対象も含むことに留意する必要がある。
【００１３】
一つのアプローチにおいて、メディア・アクセス制御（ＭＡＣ）アドレスは、システムに組み込まれたスイッチング・システムに連結されたデバイスに対して決められ、ハッシュ化アルゴリズムが適用されている場合、各ＭＡＣアドレスは或る特定のハッシュ値に対応し、各ハッシュ値はスイッチング・デバイスの一つのポートに対応し、これにより、ＭＡＣアドレスをどのようにデバイスに割り当てるかが単純化され改良される。
【００１４】
一つの一般的実施形態において、システムは、或るポートの或るデバイスに対しメディア・アクセス制御（ＭＡＣ）アドレスを割り当てる要求を受信するよう構成されたロジックと、少なくとも部分的に該ポートに基づいて該デバイスに割り当てるＭＡＣアドレスを決めるよう構成されたロジックと、該ＭＡＣアドレスを添えて要求に対する応答を送信するよう構成されたロジックとを含む少なくとも一つのプロセッサ、を含む。
【００１５】
別の一般的実施形態において、ＭＡＣアドレスを割り当てるためのコンピュータ・プログラム製品は、具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を含み、該コンピュータ可読プログラム・コードは、ルックアップ・テーブルを使わずに、デバイスに割り当てるＭＡＣアドレスを決めるよう構成されたコンピュータ可読プログラム・コードと、そのＭＡＣアドレスを該デバイスに送信するよう構成されたコンピュータ可読プログラム・コードとを含む。
【００１６】
別の一般的実施形態によれば、ＭＡＣアドレスを割り当てる方法は、スイッチング・デバイスのポートでＭＡＣアドレスに対するデバイスからの要求を受信するステップと、少なくとも部分的に該ポートに基づいて、該デバイスに割り当てるＭＡＣアドレスを決めるステップと、ＭＡＣアドレスを添えて要求に応答するステップとを含む。
【００１７】
さらに別の一般的実施形態において、ＭＡＣアドレスを取得する方法は、ＭＡＣアドレスに対する要求をＭＡＣアドレス割当てサーバ（ＭＡＡＳ）に送信するステップと、所定の長さの時間、要求に対する応答の受信を待つステップであって、該応答はＭＡＣアドレスを含む、該待つステップと、所定の長さの時間内に要求に対する応答が受信された場合、そのＭＡＣアドレスを使用するステップとを含む。
【００１８】
当業者が周知のように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「ロジック」、「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードを有する一つ以上コンピュータ可読媒体（群）中に具現化されたコンピュータ・プログラム製品の形を取ることもできる。
【００１９】
一つ以上のコンピュータ可読媒体（群）の任意の組合せを用いることができる。該コンピュータ可読媒体は、コンピュータ可読信号媒体、または非一時的コンピュータ可読ストレージ媒体であってよい。非一時的コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組合せであり得る。非一時的コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ブルーレイ・ディスク読み取り専用メモリ（ＢＤ−ＲＯＭ：Ｂｌｕ−ｒａｙ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組合せが含まれる。本明細書の文脈において、非一時的コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムまたはアプリケーションを、包含または格納できる任意の有形媒体であり得る。
【００２０】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組合せを含め、さまざまな任意の形を取ることが可能である。コンピュータ可読信号媒体は、非一時的コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な、一つ以上の配線を有する電気接続、光ファイバなど任意のコンピュータ可読媒体であり得る。
【００２１】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組合せを含め、任意の適切な媒体を用いて送信することができる。
【００２２】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組合せで記述することが可能である。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ストレージ・エリア・ネットワーク（ＳＡＮ：ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）もしくは広域ネットワーク（ＷＡＮ：ｗｉｄｅ ａｒｅａ ｎｅｔｗｏｒｋ）、またはこれらの組合せを含む任意の種類のネットワークを介して、遠隔コンピュータまたはサーバをユーザのコンピュータに接続することもでき、あるいは例えばインターネット・サービス・プロバイダ（ＩＳＰ：Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）を使いインターネットを介し外部のコンピュータへの接続を行うこともできる。
【００２３】
本発明の様々な実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を本明細書で説明する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組合せは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【００２４】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定されている機能／動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【００２５】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００２６】
図１は、一実施形態による、ネットワーク・アーキテクチャ１００を示す。図１に示されるように、第一遠隔ネットワーク１０４および第二遠隔ネットワーク１０６を含む、複数の遠隔ネットワーク１０２が設けられている。ゲートウェイ１０１を、遠隔ネットワーク１０２と隣接ネットワーク１０８との間に連結することができる。本ネットワーク・アーキテクチャ１００の状況において、ネットワーク１０４、１０６の各々は、以下に限らないが、ＬＡＮ、インターネットなどのＷＡＮ、公衆交換電話ネットワーク（ＰＳＴＮ：ｐｕｂｌｉｃ  ｓｗｉｔｃｈｅｄ  ｔｅｌｅｐｈｏｎｅ  ｎｅｔｗｏｒｋ）、内部電話ネットワークなどを含め、任意の形をとることが可能である。
【００２７】
使用において、ゲートウェイ１０１は、遠隔ネットワーク１０２から隣接ネットワーク１０８への入り口点としての役割をする。しかして、ゲートウェイ１０１は、ゲートウェイ１０１に到着した所与のデータのパケットを方向付けできるルータとして、および所与のパケットに対しゲートウェイ１０１の外側および内側への実際の経路を提供するスイッチとして、機能することが可能である。
【００２８】
さらに、隣接ネットワーク１０８に連結され、遠隔ネットワーク１０２からゲートウェイ１０１を介してアクセスが可能な、少なくとも一つのデータ・サーバ１１４が含まれている。なお、データ・サーバ（群）１１４は、任意の種類のコンピューティング・デバイス／グループウェアを含むことができる。各データ・サーバ１１４には、複数のユーザ・デバイス１１６が連結されている。かかるユーザ・デバイス１１６は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、もしくは他の種類のロジック含有デバイス、またはこれらの組合せを含むことができる。なお、いくつかの実施形態では、ユーザ・デバイス１１１が、任意のネットワークに直接連結することも可能である。
【００２９】
例えば、ファクシミリ・マシン、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワーク接続もしくはローカルまたはその両方のストレージ・ユニットまたはシステムなどの、周辺機器１２０または周辺機器１２０のシリーズを、一つ以上のネットワーク１０４、１０６、１０８に連結することができる。なお、データベースもしくは追加のコンポーネントまたはその両方を、ネットワーク１０４、１０６、１０８に連結された任意の種類のネットワーク・エレメントを使い、またはその中に組み込んで用いることが可能である。本説明の文脈において、ネットワーク・エレメントは、ネットワークの任意の構成要素を言及し得る。
【００３０】
いくつかのアプローチによれば、本明細書に記載の方法およびシステムは、仮想システム、もしくは、例えば、ＩＢＭ（ＩＢＭ社の登録商標）ｚ／ＯＳ（ＩＢＭ社の登録商標）環境をエミュレートするＵＮＩＸ（Ｒ）システム、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）環境を仮想的にホストするＵＮＩＸ（Ｒ）システム、ＩＢＭ（ＩＢＭ社の登録商標）ｚ／ＯＳ（ＩＢＭ社の登録商標）環境をエミュレートするＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）システムなど、一つ以上の他のシステムをエミュレートするシステム、またはこれらの両方のシステムを使って実装する、もしくはこれらシステムの上に実装する、またはその両方を行うことが可能である。いくつかの実施形態において、この仮想化もしくはエミュレーションまたはその両方は、ＶＭＷＡＲＥソフトウェアの使用を介して改良することができる。
【００３１】
さらなるアプローチにおいて、一つ以上のネットワーク１０４、１０６、１０８は、通常「クラウド」と言われるシステムのクラスタを表し得る。クラウド・コンピューティングにおいて、処理パワー、周辺機器、ソフトウェア、データ、サーバなど、共有リソースは、オンデマンドの関係でクラウド中のどのシステムにも提供され、これによって、多くのコンピューティング・システムに亘るサービスへのアクセスおよびその分配を可能にする。クラウド・コンピューティングは、当該技術分野で周知のように、クラウド中で作動しているシステム群の間に、通常インターネット接続を必要とするが、これらのシステム群を接続する他の技法を使うことも可能である。
【００３２】
図２は、一実施形態による、図１のユーザ・デバイス１１６もしくはサーバ１１４またはその両方に関連付けられる代表的なハードウェア環境を示す。図２は、マイクロプロセッサなどの中央処理装置（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）２１０および一つ以上のバス２１２（いくつかの実施形態によれば、これらは、ローカル・バス、並列バス、直列バスなど各種のバスであり得る）を介して相互接続された、いくつかの他のユニットを有するワークステーションの典型的なハードウェア構成を示す。
【００３３】
図２に示されたワークステーションは、ランダム・アクセス・メモリ（ＲＡＭ）２１４と、読み取り専用メモリ（ＲＯＭ）２１６と、ディスク・ストレージ・ユニット２２０などの周辺機器を一つ以上のバス２１２に接続するためのＩ／Ｏアダプタ２１８と、キーボード２２４、マウス２２６、スピーカ２２８、マイクロフォン２３２、もしくはタッチ・スクリーン、デジタル・カメラ（図示せず）またはこれらの組合せなど他のユーザ・インタフェース・デバイスを一つ以上のバス２１２に接続するためのユーザ・インタフェース・アダプタ２２２と、ワークステーションを通信ネットワーク２３５（例えば、データ処理ネットワーク）に接続するための通信アダプタ２３４と、一つ以上のバス２１２をディスプレイ・デバイス２３８に接続するためのディスプレイ・アダプタ２３６と、を含む。
【００３４】
ワークステーションはその上に常駐する、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（Ｒ）オペレーティング・システム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ＭＡＣ（Ｒ）ＯＳ、ＵＮＩＸ（Ｒ）ＯＳなどのオペレーティング・システムを有し得る。当然のことながら、好適な実施形態は、前述したものと違ったプラットフォームおよびオペレーティング・システムに実装することも可能である。好適な実施形態は、オブジェクト指向プログラミング手法を併せ用い、ＪＡＶＡ（Ｒ）、ＸＭＬ、Ｃ、もしくはＣ＋＋言語またはこれらの組合せを使って、または他のプログラミング言語を使って記述することができる。複雑なアプリケーションを開発するのに益々多く使われるようになってきた、オブジェクト指向プログラミング（ＯＯＰ：ｏｂｊｅｃｔ  ｏｒｉｅｎｔｅｄ  ｐｒｏｇｒａｍｍｉｎｇ）を用いることが可能である。
【００３５】
現在、ＩＥＥＥは、企業、教育機関などの組織にＭＡＣアドレスを割り当てており、これらの組織は、適切と思われる場合、自分たちのネットワーク（群）に亘りそのＭＡＣアドレスを自由に割り当てている。しかしながら、このプロセスは、非効率で待ち時間および問題に満ちている。例えば、イーサネット（Ｒ）スイッチングにおいて、特定のスイッチング・デバイスに対し分かっている全てのＭＡＣアドレス格納しているＭＡＣアドレス・テーブルのサイズの如何によっては、拡大しているネットワークで使用するためスイッチを対応させる上で、ＭＡＣアドレス対処のための処理能力に対して、および低いルックアップ待ち時間を維持する上で、重大な問題があり得る。
【００３６】
現在使われているＭＡＣアドレス処理プロトコルに関連するこの問題および待ち時間を克服するために、固定ＭＡＣアドレスを割り当てる代わりに、ＭＡＣアドレスを必要とするデバイスに連結されたスイッチング・デバイスの起動時にＭＡＣアドレスを割り当てることが可能である。これらのＭＡＣアドレスは、アルゴリズム的割当ての着実な実行に基づいて決めることができる。
【００３７】
一実施形態によれば、受信されたパケットが転換される宛先ポートは、宛先ＭＡＣアドレスの関数とすることが可能であり、この関数は、Ｄｅｓｔ＿Ｐｏｒｔ＝Ｆ（Ｄｅｓｔ＿ＭＡＣ＿Ａｄｄｒｅｓｓ，ｉｓ＿ｍｉｒｒｏｒ，ｉｓ＿ｆｌｏｗ）（＝Ｆ（宛先＿ＭＡＣ＿アドレス，は＿ミラー、または＿フロー）と記述することができ、この式のＦは関数を表し、Ｄｅｓｔ＿Ｐｏｒｔは宛先ポートであり、Ｄｅｓｔ＿ＭＡＣ＿Ａｄｄｒｅｓｓは、パケットにより提供される宛先ＭＡＣアドレスであり、ｉｓ＿ｍｉｒｒｏｒは、パケットが複数のポートにミラーすることが可能かどうかを表し、ｉｓ＿ｆｌｏｗは、特殊なオペレーションとフロー制御を表す。ｉｓ＿ｍｉｒｒｏｒおよびｉｓ＿ｆｌｏｗは、パケット交換には不必要だが、必要な場合に使用することができる。こうすれば、ＭＡＣアドレス割当ては、在来の方法に比べて、より効率的で、より少ない必要オーバーヘッド処理を使って行うことが可能である。
【００３８】
次いで図３を参照すると、一実施形態による、スイッチング・デバイスなどのシステム３００が示されている。図示のように、システム３００は、電気的にシステム３００に連結されたデバイス群３０４に対してＭＡＣアドレスを割り当てし、管理するようになされた、ＭＡＡＳなどのサーバを含む。このサーバは、コンポーネントとするか、もしくは、ロジックを実行するためのスイッチング・プロセッサなど少なくとも一つのプロセッサ３０６に管理させるか、またはその両方を行うことが可能である。また、いくつかの実施形態において、システム３００は、ロジックを実行するためのローカル・プロセッサ３０２を含むことができ、このプロセッサは、該少なくとも一つのプロセッサ３０６に電気的に連結されている。ローカル・プロセッサ３０２もしくは少なくとも一つのプロセッサ３０６またはその両方には、中央処理装置（ＣＰＵ）、フィールド・プログラム可能ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、集積回路（ＩＣ：ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、特定用途向け集積回路（ＡＳＩＣ）など、当該技術分野で周知の任意の種類のプロセッサを使用すればよい。さらなる実施形態において、スイッチングＡＳＩＣおよびローカルＣＰＵの両方をシステム３００に含め、スイッチングＡＳＩＣには交換オペレーションを管理させ、ローカルＣＰＵにはＭＡＣアドレス割当てオペレーションを管理させることができる。
【００３９】
オンラインに参加するあらゆる新規のホスト、サーバ、またはデバイスは、他のデバイスと通信するためにＭＡＣアドレスを獲得する。これは、デバイスのネットワーク・インターフェース・カード（ＮＩＣ：ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃａｒｄ）にＭＡＣアドレスが事前プログラムされている在来の方法に比べユニークである。従来、デバイスは、起動時に通信のためにそのＭＡＣアドレスを用いる。しかしながら、本明細書で説明する諸実施形態によれば、ＭＡＣアドレス取得アルゴリズムまたはＭＡＣアドレス取得プロトコル（ＭＡＡＰ）を用いる、ＭＡＣアドレス取得の方法は、事前プログラムされたＭＡＣアドレスの必要性を排除し、いくつかのアプローチにおいて、事前プログラムされたＭＡＣアドレスに加えて用いることができる。
【００４０】
一実施形態によれば、少なくとも一つのプロセッサ３０６は、ポート３０８上で、デバイス３０４にＭＡＣアドレスを割り当てる要求を受信するよう構成されたロジックを含むか、または該ロジックへのアクセスを有する。この要求は、デバイス３０４によって送信されるか、あるいは、ネットワークまたはシステム３００中の他の場所で発生し得る。要求が受信されたポート３０８は、将来、デバイス３０４と結び付く全ての発信トラフィックを送信するのに用いることができるように、保存または別途に記憶される。少なくとも一つのプロセッサ３０６は、少なくとも部分的に当該ポートに基づいてデバイスに割り当てるＭＡＣアドレスを決めるよう構成されたロジックと、該ＭＡＣアドレスを添えて要求に対する応答を送信するよう構成されたロジックと、をさらに含むか、またはこれらロジックへのアクセスをさらに有する。
【００４１】
一実施形態において、少なくとも一つのプロセッサ３０６は、ＭＡＣアドレス割当てテーブルを生成するよう構成されたロジックをさらに含むか、または該ロジックへのアクセスをさらに有することができる。次いで図４を参照すると、ＭＡＣアドレス割当てテーブル４００は、複数のハッシュ値４０２を含むことが可能で、各ハッシュ値４０２は一つのポート４０４と複数のＭＡＣアドレス４０６とに関連付けられている。ここで図３〜４を参照すると、一つのアプローチにおいて、複数のＭＡＣアドレス４０６のどの一つもハッシュ化アルゴリズムを適用することによって関連付けられたハッシュ値４０２が得られ、これには、ＭＡＣアドレス４０６を要求するデバイス３０４に対し、該デバイス３０４をシステム３００に連結しているポート４０４に対応するＭＡＣアドレス４０６を割り当てるための系統的方法がある。
【００４２】
一つのアプローチにおいて、デバイス３０４ａに割り当てるＭＡＣアドレス４０６ａを決めるよう構成されたロジックは、ＭＡＣアドレス割当てテーブル４００からＭＡＣアドレス４０６ａを選択するよう構成されたロジックを含むことができ、選択されたＭＡＣアドレス４０６ａにハッシュ化アルゴリズムを適用することによって、デバイス３０４ａに連結されたポート４０４ａに関連付けられたハッシュ値４０２ａが得られる。
【００４３】
さらなるアプローチにおいて、ＭＡＣアドレス割当てテーブル４００からＭＡＣアドレス４０６ａを選択するよう構成されたロジックは、複数の利用可能なＭＡＣアドレス４０６から、次の利用可能なＭＡＣアドレス４０６ａを連続的にまたはランダムに選択するよう構成されたロジックを含み、利用可能なＭＡＣアドレスは現在どのデバイス３０４にも割り当てられていない。利用不可能なＭＡＣアドレスが現在デバイス３０４に割り当てられていることは言うまでもない。
【００４４】
さらに別の実施形態において、該ロジックは、ＭＡＣアドレス割当てテーブル４００からＭＡＣアドレス４０６ａが選択されたならば、該ＭＡＣアドレス４０６ａをＭＡＣアドレス割当てテーブル４００から除去し、そのＭＡＣアドレスを使用中ＭＡＣアドレス・テーブル（図示しないが、割当て済みＭＡＣアドレスだけを含むことを除き、ＭＡＣアドレス割当てテーブル４００と類似のものとなろう）に加えることによって、該ＭＡＣアドレス４０６ａを利用不可として標識するよう構成されたロジックをさらに含むことができる。さらなる諸アプローチにおいて、該ロジックは、デバイス３０４ａが自分に割り当てられたＭＡＣアドレス４０６ａを解放すると、該ＭＡＣアドレス４０６ａをＭＡＣアドレス割当てテーブル４００に加え、そのＭＡＣアドレス４０６ａを使用中ＭＡＣアドレス・テーブルから除去することによって、該ＭＡＣアドレス４０６ａを利用可能として標識するよう構成されたロジックをさらに含むことが可能である。
【００４５】
別の実施形態において該ロジックは、ＭＡＣアドレス割当てテーブル４００中のＭＡＣアドレス４０６ａに関連付けられ、該ＭＡＣアドレス４０６ａが利用可能かまたは不可能かを表示する、表示ビットを反転するように構成することが可能である。
【００４６】
様々な実施形態によれば、このハッシュ化アルゴリズムは、当該技術分野で周知の任意の完全または不完全ハッシュ化アルゴリズムを含むことができる。一つのアプローチにおいて、該ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ＸＯＲ  ＤＭ［２］＊３  ＸＯＲ  ＤＭ［３］＊４  ＸＯＲ  ＤＭ［４］＊５  ＸＯＲ  ＤＭ［５］＊６）ＭＯＤ  Ｐを含むことが可能で、この式中の、ＤＭはＭＡＣアドレスであり、Ｈ（ＤＭ）はＭＡＣアドレスＤＭの全６バイトのハッシュ値であり、Ｐはシステム３００の物理ポート３０８の合計数である。
【００４７】
別の実施形態において、該ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ・・・  ＸＯＲ  ＤＭ［Ｎ−１］＊Ｎ）  ＭＯＤ  Ｐを含むことができ、この式中の、ＤＭはＭＡＣアドレスであり、Ｈ（ＤＭ）はＭＡＣアドレスＤＭのハッシュ値であり、ＤＭ［Ｎ−１］は、Ｎバイト数を有するＭＡＣアドレスＤＭの或るバイトであり、Ｐは物理ポートの合計数である。
【００４８】
別の実施形態によれば、ＭＡＣアドレス割当てテーブル４００は、少なくとも一つのプロセッサ３０６の始動プロセスの過程で生成することができる。この始動プロセスは、システム３００の立ち上げ、またはコンポーネント群が速度に達した後に生じる任意のプロセスで行うことができる。
【００４９】
別の実施形態では、要求には、送信元アドレスを有するＭＡＣアドレス取得プロトコル（ＭＡＡＰ）パケットを含めることができる。この場合、応答には、受信されたＭＡＡＰパケットの宛先アドレスを該受信ＭＡＡＰパケットの送信元アドレスに変えるように変更された受信ＭＡＡＰパケットを含めることができる。このように、送信元アドレスと宛先アドレスとの間の簡単な切替えを使って、要求と応答とに同じＭＡＡＰパケットを用いることができる。
【００５０】
次いで図５を参照すると、一実施形態による、ＭＡＣアドレスを割り当てる方法５００のフローチャートが示されている。方法５００は、様々な実施形態において、なかんずく、図１〜４に示された環境のいずれかにおいて本発明に従って実施することができる。当然のことながら、当業者なら本説明を読めば分かるように、図５に特定的に記載されたオペレーションよりも多い、または少ないオペレーションを方法５００に含めることが可能である。
【００５１】
方法５００のステップの各々は、オペレーティング環境の任意の適切なコンポーネントによって実施することができる。例えば、一実施形態において、方法５００は、スイッチング・デバイスもしくはスイッチング・デバイスのＭＡＡＳまたはその両方で、部分的にまたは全体的に実施することが可能である。
【００５２】
図５に示されるように、方法５００は、オペレーション５０２から開始でき、該オペレーションでは、スイッチング・デバイスの或るポートで或るデバイスからのＭＡＣアドレスに対する要求が受信される。本明細書で説明したように、要求が受信されたポートは、該デバイスに対するＭＡＣアドレスを決める過程で使用するため保存される。
【００５３】
オペレーション５０４で、少なくとも部分的に該ポートに基づいてデバイスに割り当てるＭＡＣアドレスが決められる。
【００５４】
一つのアプローチにおいて、ＭＡＣアドレス割当てテーブルを生成することができる。ＭＡＣアドレス割当てテーブルには複数のハッシュ値を含め、各ハッシュ値を複数のＭＡＣアドレスに対応している各ポートに関連付けることが可能である。さらに、複数のＭＡＣアドレスのどの一つもハッシュ化アルゴリズムを適用することによって関連付けられたハッシュ値が得られ、続いてこれがそのＭＡＣアドレスのポートに関連付けられる。
【００５５】
さらに、一実施形態において、ＭＡＡＳは、ＭＡＣアドレス割当てテーブルを構築するための入力ファイルからＭＡＡＳに提供された、ＭＡＣアドレスの所定のセットを用いることができる。この場合、ＭＡＡＳは、ＭＡＣアドレス割当てプロトコル（ＭＡＡＰ）パケットが受信されるのに応じて、ＭＡＣアドレス割当てテーブルから、デバイスに割り当てるＭＡＣアドレスを決める。
【００５６】
一実施形態において、ハッシュ化アルゴリズムは完全ハッシュ化アルゴリズムまたは不完全ハッシュ化アルゴリズムとすることができる。使用可能なかかる一つの完全ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ＸＯＲ  ＤＭ［２］＊３  ＸＯＲ  ＤＭ［３］＊４  ＸＯＲ  ＤＭ［４］＊５  ＸＯＲ  ＤＭ［５］＊６）ＭＯＤ  Ｐであり、この式の、ＤＭはＭＡＣアドレスであり、Ｈ（ＤＭ）はＭＡＣアドレスＤＭの全６バイトのハッシュ値であり、Ｐはスイッチング・デバイスの物理ポートの合計数である。
【００５７】
別の実施形態によれば、該ハッシュ化アルゴリズムは、Ｈ（ＤＭ）＝（ＤＭ［０］＊１  ＸＯＲ  ＤＭ［１］＊２  ・・・  ＸＯＲ  ＤＭ［Ｎ−１］＊Ｎ）  ＭＯＤ  Ｐを含むことができ、この式中の、ＤＭはＭＡＣアドレスであり、Ｈ（ＤＭ）はＭＡＣアドレスＤＭのハッシュ値であり、ＤＭ［Ｎ−１］は、Ｎバイト数を有するＭＡＣアドレスＤＭの或るバイトであり、Ｐはポートの合計数である。
【００５８】
いくつかのアプローチにおいて、あるデバイスからパケットを受信し、ＭＡＣアドレスにハッシュ化アルゴリズムを適用してもスイッチング・デバイスの適切なポートが得られない場合、例えば、宛先ＭＡＣアドレスがＭＡＡＰによって提供されなかった場合には、宛先ポートを見出すために、通常のルックアップ・アルゴリズムを使用することが可能である。次いで、該パケットを宛先ポートに転送することができる。ＭＡＡＰを用いて、ＭＡＡＳによって提供されなかったＭＡＣアドレスを識別するために、それらのＭＡＣアドレスを、当該範囲および汎用一意識別子（ＵＵＩＤ：ｕｎｉｖｅｒｓａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）フィールドと対比することが可能である。ＭＡＡＰは、ある特定の事前プログラムされた範囲内でＭＡＣアドレスを割り当てる。
【００５９】
一つのアプローチにおいて、立ち上げ過程など、スイッチング・デバイスの始動プロセスの過程でＭＡＣアドレス割当てテーブルを生成することができる。また、ＭＡＣアドレス割当ては、リスト、関連付け表、ファイル、または一つ以上のＭＡＣアドレスを単一のポートおよび単一のハッシュ値に関連付けできる何らかの他の手段を使ってもよい。
【００６０】
さらなるアプローチにおいて、方法５００は、ＭＡＣアドレス割当てテーブルからＭＡＣアドレスを選択するステップをさらに含み、選択されたＭＡＣアドレスにハッシュ化アルゴリズムを適用することによって、デバイスに連結されたスイッチング・デバイスの当該ポートに関連付けられたハッシュ値が得られるようにできる。例えば、デバイスがスイッチング・デバイスのポート４に接続されている場合、そのデバイスに対し選択されたＭＡＣアドレスにハッシュ化アルゴリズムを適用することによって、ポート４に関連付けられたハッシュ値が得られる。このハッシュ値は４とすることもでき、または、この値は、特定のハッシュ値にハッシュ化されたＭＡＣアドレスの割当てに先立ってスイッチング・デバイスの該ポートに関連付けられた任意の他の番号とすることができる。
【００６１】
さらなる別の実施形態において、ＭＡＣアドレス割当てテーブルからＭＡＣアドレスを選択するステップは、複数の利用可能ＭＡＣアドレスから次の利用可能ＭＡＣアドレスを連続的にまたはランダムに選択するステップを含むことができる。利用可能ＭＡＣアドレスとは、現在どのデバイスにも割り当てられていないＭＡＣアドレスであり、利用不可ＭＡＣアドレスは、現在あるデバイスに割り当てられているＭＡＣアドレスである。
【００６２】
さらなる別の実施形態において、方法５００は、ＭＡＣアドレス割当てテーブルからＭＡＣアドレスを選択したならば、そのＭＡＣアドレスを利用不可として標識するステップ、またはそのＭＡＣアドレスをＭＡＣアドレス割当てテーブルから除去し、そのＭＡＣアドレスを使用中ＭＡＣアドレス・テーブルに加えるステップを含むことができる。さらに、デバイスが自分に割り当てられたＭＡＣアドレスを解放したならば、そのＭＡＣアドレスを、ＭＡＣアドレス割当てテーブルに加え、使用中ＭＡＣアドレス・テーブルから除去することができ、あるいは、該ＭＡＣアドレスを利用可能として標識することが可能である。当然のことながら、これら別個の割当てテーブルの両方、および標識はいくつかのさらなる実施形態において使用することができる。
【００６３】
別のアプローチにおいて、この標識するステップには、ＭＡＣアドレス割当てテーブル中のＭＡＣアドレスに関連付けられた表示ビットを反転させるステップ、あるいは、当該技術分野で知られた、テーブル中のエントリを標識するための任意の他の方法を含めることが可能である。
【００６４】
オペレーション５０６で、要求に対しＭＡＣアドレスを添えて応答がされる。イーサネット（Ｒ）パケットなど、ＭＡＣアドレスを含む任意の応答法が使用可能である。かかる一つの状況において、この要求は送信元アドレスを有するＭＡＡＰパケットを含み得る。この場合、応答には、受信されたＭＡＡＰパケットの宛先アドレスを該受信ＭＡＡＰパケットの送信元アドレスに変えるように変更された受信ＭＡＡＰパケットを含めることができる。このように、送信元アドレスと宛先アドレスとの間の簡単な切替えを使って、要求と応答とに同じＭＡＡＰパケットを用いることができる。
【００６５】
一実施形態によれば、立ち上げ時に、Ｄ−ＭＡＣ＝０１：００：５ｅ：００：００：ｘｘ、Ｓ−ＭＡＣ＝ＮＩＣ  ＭＡＣアドレス、およびＥｔｈｅｒＴｙｐｅ＝０ｘＦＦＦＦまたは０ｘＸＸＸＸを用いてパケットを形成することが可能で、ＸＸまたはｘｘはまだ定義されていないが、設定時に、ネットワーク管理者が決定してホスト・オペレーティング・システムに与えることが可能である。したがって、これらの値は、両方のエントリに対して周知の任意の値とすればよい。
【００６６】
次いで、イーサネット（Ｒ）パケット（好ましくはＭＡＡＰパケット）はＭＡＡＳに接続されたＮＩＣポート上から送信され、このポートはスイッチング・デバイスの一部であってよい。次に、スイッチング・デバイスが、該スイッチング・デバイスのポートの一つでパケットを受信する。これに応じ、ＭＡＡＰ要求パケットが送信元ポート情報と共にローカルＭＡＡＳに送信される。この点で、ローカルＭＡＡＳは、アドレス割当てアルゴリズムを実行して、ホスト・オペレーティング・システムに対するＭＡＣアドレスＨ−ＭＡＣを決定する。
【００６７】
一つのアプローチにおいて、アドレス割当てアルゴリズムは、制御ソフトウェアを使い、ＭＡＡＰ要求が到着してそのポートを通ってＭＡＡＳに至ったスイッチ・ポートの番号「ｐ」を抽出するステップを含むことができる。次いで、ＭＡＣアドレス割当てテーブルを貫いて構文解析が行われ、第一利用可能（未割り当ての）ＭＡＣアドレスが決められる。次いで、このアドレスがＭＡＡＰパケットに加えられ、該アドレスは利用不可（割当て済み）として標識される。
【００６８】
次に、ＭＡＡＳは、該ＭＡＡＰパケットにＨ−ＭＡＣアドレスを書き込み、宛先アドレスを、当初のＭＡＡＰ要求の当初の送信元アドレスに変えることによってＭＡＡＰパケットを変更する。このパケットは送信元ポートに送られる。要求したホスト・オペレーティング・システムは、所定の待ち時間（ｔ＿ｗａｉｔ）以内に応答ＭＡＡＰパケットを受信し、以降の全ての通信に対する自分の送信元ＭＡＣアドレスとして、Ｈ−ＭＡＣの使用を開始する。
【００６９】
ＭＡＡＰ応答が待ち時間（ｔ＿ｗａｉｔ）以内に到着しない場合、ホスト・オペレーティング・システムは、このプロセスを２回以上再試行することができる。この再試行においても応答が受信されない場合、ホスト・オペレーティング・システムは、以降の全て通信に対する自分の送信元ＭＡＣアドレスとして、事前プログラムされたＮＩＣ  ＭＡＣアドレスの使用を開始する。
【００７０】
大部分の実施形態によれば、本明細書に記載の方法およびシステムは、全てのホスト、デバイス、またはサーバに同じサブネットのＩＰアドレスが割り当てられている、フラット・レイヤ２ネットワーク上で初期化することができる。
【００７１】
次いで図６を参照すると、一実施形態による、ＭＡＣアドレスを取得するための方法６００のフローチャートが示されている。方法６００は、様々な実施形態において、なかんずく、図１〜４に示された環境のいずれかにおいて本発明に従って実施することができる。当然のことながら、当業者なら本説明を読めば分かるように、図６に特定的に記載されたオペレーションよりも多いまたは少ないオペレーションを方法６００に含めることが可能である。
【００７２】
方法６００のステップの各々は、オペレーティング環境の任意の適切なコンポーネントによって実施することができる。例えば、一実施形態において、方法６００は、スイッチング・デバイスもしくはスイッチング・デバイスのＭＡＡＳまたはその両方で、部分的にまたは全体的に実施することが可能である。
【００７３】
図６に示されるように、方法６００は、オペレーション６０２から開始でき、ＭＡＣアドレスに対する要求がＭＡＡＳに送信される。一つのアプローチにおいて、この要求はＭＡＡＰパケットとすることができる。
【００７４】
オペレーション６０４で、要求に対する応答が待ち受けられる。要求に対する応答が、所定の長さの時間の間に受信されない場合、他の処置が取られる。
【００７５】
オペレーション６０６で、要求に対する応答が所定の長さの時間の間に受信された場合、そのＭＡＣアドレスが使用される。応答はＭＡＣアドレスを含み、その受信後、そのＭＡＣアドレスは当初に要求を送信したデバイスもしくはそのデバイスに連結された何らかの他のデバイスによって用いられる。
【００７６】
一実施形態において、要求に対する応答が所定の長さの時間の間に受信されない場合、ＭＡＣアドレスに対する要求を送信したデバイスは、事前プログラムされたＭＡＣアドレスを使用することができる。一つのアプローチによれば、このＭＡＣアドレスは、製造時にデバイス中に事前プログラムされる。
【００７７】
本明細書で提示する諸実施形態およびアプローチによれば、ネットワーク中の各デバイスが、スイッチング・デバイスの宛先ポートに対応するＭＡＣアドレスを有するので、ルックアップ・テーブルを使わないでスイッチング決定を行うことが可能である。さらに、このことは、極めて高速のスイッチング・アルゴリズムを提供し、非常に短い待ち時間を提供する。これは、スイッチング・ロジックを単純化することによって、さらに大幅にカットスルー待ち時間を削減しコストを低減する。
【００７８】
上記で様々な実施形態を説明してきたが、当然のことながら、これらは例示目的のためであり限定を示すものではない。しかして、本発明の実施形態の幅および範囲は、前述した例示的な実施形態のいずれにも限定されるべきでなく、添付の特許請求の範囲およびこれらと等価なものによってだけ定義さるべきものである。
【図１】
0006270816.tif 000002
【図２】
0006270816.tif 000003
【図３】
0006270816.tif 000004
【図４】
0006270816.tif 000005
【図５】
0006270816.tif 000006
【図６】
0006270816.tif 000007