(58)【調査した分野】(Int.Cl.,DB名)
前記デバイスに割り当てる前記MACアドレスを決めるよう構成された前記ロジックは、前記MACアドレス割当てテーブルから前記MACアドレスを選択するよう構成されたロジックを含み、前記選択されたMACアドレスに前記ハッシュ化アルゴリズムを適用することによって、前記デバイスに連結された前記ポートに関連付けられたハッシュ値が得られる、請求項2に記載のシステム。
前記MACアドレス割当てテーブルから前記MACアドレスを選択するよう構成された前記ロジックは、複数の利用可能なMACアドレスから、次の利用可能なMACアドレスを連続的にまたはランダムに選択するよう構成されたロジックを含み、利用可能なMACアドレスは現在どのデバイスにも割り当てられていない、請求項3に記載のシステム。
前記MACアドレス割当てテーブルから前記MACアドレスを選択したならば、前記MACアドレスを前記MACアドレス割当てテーブルから除去し、前記MACアドレスを使用中MACアドレス・テーブルに加えることによって、または前記MACアドレス割当てテーブル中の前記MACアドレスに関連付けられた表示ビットを反転することによって、前記MACアドレスを利用不可として標識するよう構成されたロジックと、
前記デバイスが自分に割り当てられた前記MACアドレスを解放したならば、前記MACアドレスを前記MACアドレス割当てテーブルに加え、前記MACアドレスを前記使用中MACアドレス・テーブルから除去することによって、または前記MACアドレス割当てテーブル中の前記MACアドレスに関連付けられた前記表示ビットを反転することによって、前記MACアドレスを利用可能として標識するよう構成されたロジックと、
をさらに含む、請求項4に記載のシステム。
前記MACアドレス割当てテーブルが、前記少なくとも一つのプロセッサの始動プロセスの過程で生成され、前記ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 ・・・ XOR DM[N−1]*N) MOD Pを含み、前記式中の、DMは前記MACアドレスであり、H(DM)は前記MACアドレスDMの前記ハッシュ値であり、DM[N−1]は、Nバイト数を有する前記MACアドレスDMの或るバイトであり、Pはポートの合計数である、請求項2に記載のシステム。
MACアドレス割当てテーブルを生成するステップであって、前記MACアドレス割当てテーブルは複数のハッシュ値を含み、各ハッシュ値は複数のMACアドレスに対応している各ポートに関連付けられており、前記複数のMACアドレスのどの一つもハッシュ化アルゴリズムを適用することによって前記関連付けられたハッシュ値が得られる、前記生成するステップをさらに含む、請求項8に記載の方法。
MACアドレス割当てサーバ(MAAS)は、前記MACアドレス割当てテーブルを構築するための入力ファイルから前記MAASに提供された、MACアドレスの所定のセットを用い、前記MAASは、MACアドレス割当てプロトコル(MAAP)パケットが受信されるのに応じて、前記MACアドレス割当てテーブルから、前記デバイスに割り当てる前記MACアドレスを決める、請求項9に記載の方法。
前記デバイスに割り当てる前記MACアドレスを決めるステップは、前記MACアドレス割当てテーブルから前記MACアドレスを選択するステップを含み、前記選択されたMACアドレスに前記ハッシュ化アルゴリズムを適用することによって、前記デバイスに連結された前記スイッチング・デバイスの前記ポートに関連付けられたハッシュ値が得られる、請求項9に記載の方法。
前記MACアドレス割当てテーブルから前記MACアドレスを選択するステップは、複数の利用可能なMACアドレスから、次の利用可能なMACアドレスを連続的にまたはランダムに選択するステップを含み、利用可能なMACアドレスは現在どのデバイスにも割り当てられていないMACアドレスである、請求項10に記載の方法。
前記MACアドレス割当てテーブルから前記MACアドレスを選択したならば、前記MACアドレスを利用不可として標識するステップ、または前記MACアドレスを前記MA
Cアドレス割当てテーブルから除去し、前記MACアドレスを使用中MACアドレス・テーブルに加えるステップと、
前記デバイスが自分に割り当てられた前記MACアドレスを解放したならば、前記MACアドレスを前記MACアドレス割当てテーブルに加え、前記MACアドレスを前記使用中MACアドレス・テーブルから除去するステップ、または前記MACアドレスを利用可能として標識するステップと、
をさらに含む、請求項10に記載の方法。
前記ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 XOR DM[2]*3 XOR DM[3]*4 XOR DM[4]*5 XOR DM[5]*6)MOD Pであり、前記式中の、DMは前記MACアドレスであり、H(DM)は前記MACアドレスDMの全6バイトの前記ハッシュ値であり、Pは前記スイッチング・デバイスのポートの合計数である、請求項10に記載の方法。
前記MACアドレス割当てテーブルが前記スイッチング・デバイスの始動プロセスの過程で生成され、前記ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 ・・・ XOR DM[N−1]*N) MOD Pを含み、前記式中の、DMは前記MACアドレスであり、H(DM)は前記MACアドレスDMの前記ハッシュ値であり、DM[N−1]は、Nバイト数を有する前記MACアドレスDMの或るバイトであり、Pはポートの合計数である、請求項9に記載の方法。
【発明を実施するための形態】
【0010】
以下の説明は、本発明の一般的原理を例示する目的で行うものであり、本明細書の本請求の発明概念を限定する意図はない。さらに、本明細書で説明する特定の特徴は、様々な可能な組合せおよび順序の各々の形で、説明された他の特徴と組合せて用いることができる。
【0011】
本明細書中に特に別途に定義されていなければ、全ての用語は、本明細書で含蓄される意味の他、当業者が理解している意味もしくは辞書、論文などで定義される意味またはその両方を含め、それら用語の可能な最広義の解釈が付与されている。
【0012】
また、本明細書および添付の特許請求の範囲での使用において、単数形「ある(“a”、“an”)」および「該(“the”)」は、別途に指定されていなければ、複数形の指示対象も含むことに留意する必要がある。
【0013】
一つのアプローチにおいて、メディア・アクセス制御(MAC)アドレスは、システムに組み込まれたスイッチング・システムに連結されたデバイスに対して決められ、ハッシュ化アルゴリズムが適用されている場合、各MACアドレスは或る特定のハッシュ値に対応し、各ハッシュ値はスイッチング・デバイスの一つのポートに対応し、これにより、MACアドレスをどのようにデバイスに割り当てるかが単純化され改良される。
【0014】
一つの一般的実施形態において、システムは、或るポートの或るデバイスに対しメディア・アクセス制御(MAC)アドレスを割り当てる要求を受信するよう構成されたロジックと、少なくとも部分的に該ポートに基づいて該デバイスに割り当てるMACアドレスを決めるよう構成されたロジックと、該MACアドレスを添えて要求に対する応答を送信するよう構成されたロジックとを含む少なくとも一つのプロセッサ、を含む。
【0015】
別の一般的実施形態において、MACアドレスを割り当てるためのコンピュータ・プログラム製品は、具現化されたコンピュータ可読プログラム・コードを有するコンピュータ可読ストレージ媒体を含み、該コンピュータ可読プログラム・コードは、ルックアップ・テーブルを使わずに、デバイスに割り当てるMACアドレスを決めるよう構成されたコンピュータ可読プログラム・コードと、そのMACアドレスを該デバイスに送信するよう構成されたコンピュータ可読プログラム・コードとを含む。
【0016】
別の一般的実施形態によれば、MACアドレスを割り当てる方法は、スイッチング・デバイスのポートでMACアドレスに対するデバイスからの要求を受信するステップと、少なくとも部分的に該ポートに基づいて、該デバイスに割り当てるMACアドレスを決めるステップと、MACアドレスを添えて要求に応答するステップとを含む。
【0017】
さらに別の一般的実施形態において、MACアドレスを取得する方法は、MACアドレスに対する要求をMACアドレス割当てサーバ(MAAS)に送信するステップと、所定の長さの時間、要求に対する応答の受信を待つステップであって、該応答はMACアドレスを含む、該待つステップと、所定の長さの時間内に要求に対する応答が受信された場合、そのMACアドレスを使用するステップとを含む。
【0018】
当業者が周知のように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、一般に本明細書では全て「ロジック」、「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードを有する一つ以上コンピュータ可読媒体(群)中に具現化されたコンピュータ・プログラム製品の形を取ることもできる。
【0019】
一つ以上のコンピュータ可読媒体(群)の任意の組合せを用いることができる。該コンピュータ可読媒体は、コンピュータ可読信号媒体、または非一時的コンピュータ可読ストレージ媒体であってよい。非一時的コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組合せであり得る。非一時的コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、ブルーレイ・ディスク読み取り専用メモリ(BD−ROM:Blu−ray disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組合せが含まれる。本明細書の文脈において、非一時的コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムまたはアプリケーションを、包含または格納できる任意の有形媒体であり得る。
【0020】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組合せを含め、さまざまな任意の形を取ることが可能である。コンピュータ可読信号媒体は、非一時的コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な、一つ以上の配線を有する電気接続、光ファイバなど任意のコンピュータ可読媒体であり得る。
【0021】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組合せを含め、任意の適切な媒体を用いて送信することができる。
【0022】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組合せで記述することが可能である。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)、ストレージ・エリア・ネットワーク(SAN:storage area network)もしくは広域ネットワーク(WAN:wide area network)、またはこれらの組合せを含む任意の種類のネットワークを介して、遠隔コンピュータまたはサーバをユーザのコンピュータに接続することもでき、あるいは例えばインターネット・サービス・プロバイダ(ISP:Internet Service Provider)を使いインターネットを介し外部のコンピュータへの接続を行うこともできる。
【0023】
本発明の様々な実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を本明細書で説明する。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組合せは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
【0024】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定されている機能/動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【0025】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
【0026】
図1は、一実施形態による、ネットワーク・アーキテクチャ100を示す。
図1に示されるように、第一遠隔ネットワーク104および第二遠隔ネットワーク106を含む、複数の遠隔ネットワーク102が設けられている。ゲートウェイ101を、遠隔ネットワーク102と隣接ネットワーク108との間に連結することができる。本ネットワーク・アーキテクチャ100の状況において、ネットワーク104、106の各々は、以下に限らないが、LAN、インターネットなどのWAN、公衆交換電話ネットワーク(PSTN:public switched telephone network)、内部電話ネットワークなどを含め、任意の形をとることが可能である。
【0027】
使用において、ゲートウェイ101は、遠隔ネットワーク102から隣接ネットワーク108への入り口点としての役割をする。しかして、ゲートウェイ101は、ゲートウェイ101に到着した所与のデータのパケットを方向付けできるルータとして、および所与のパケットに対しゲートウェイ101の外側および内側への実際の経路を提供するスイッチとして、機能することが可能である。
【0028】
さらに、隣接ネットワーク108に連結され、遠隔ネットワーク102からゲートウェイ101を介してアクセスが可能な、少なくとも一つのデータ・サーバ114が含まれている。なお、データ・サーバ(群)114は、任意の種類のコンピューティング・デバイス/グループウェアを含むことができる。各データ・サーバ114には、複数のユーザ・デバイス116が連結されている。かかるユーザ・デバイス116は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、プリンタ、もしくは他の種類のロジック含有デバイス、またはこれらの組合せを含むことができる。なお、いくつかの実施形態では、ユーザ・デバイス111が、任意のネットワークに直接連結することも可能である。
【0029】
例えば、ファクシミリ・マシン、プリンタ、スキャナ、ハード・ディスク・ドライブ、ネットワーク接続もしくはローカルまたはその両方のストレージ・ユニットまたはシステムなどの、周辺機器120または周辺機器120のシリーズを、一つ以上のネットワーク104、106、108に連結することができる。なお、データベースもしくは追加のコンポーネントまたはその両方を、ネットワーク104、106、108に連結された任意の種類のネットワーク・エレメントを使い、またはその中に組み込んで用いることが可能である。本説明の文脈において、ネットワーク・エレメントは、ネットワークの任意の構成要素を言及し得る。
【0030】
いくつかのアプローチによれば、本明細書に記載の方法およびシステムは、仮想システム、もしくは、例えば、IBM(IBM社の登録商標)z/OS(IBM社の登録商標)環境をエミュレートするUNIX(R)システム、MICROSOFT WINDOWS(R)環境を仮想的にホストするUNIX(R)システム、IBM(IBM社の登録商標)z/OS(IBM社の登録商標)環境をエミュレートするMICROSOFT WINDOWS(R)システムなど、一つ以上の他のシステムをエミュレートするシステム、またはこれらの両方のシステムを使って実装する、もしくはこれらシステムの上に実装する、またはその両方を行うことが可能である。いくつかの実施形態において、この仮想化もしくはエミュレーションまたはその両方は、VMWAREソフトウェアの使用を介して改良することができる。
【0031】
さらなるアプローチにおいて、一つ以上のネットワーク104、106、108は、通常「クラウド」と言われるシステムのクラスタを表し得る。クラウド・コンピューティングにおいて、処理パワー、周辺機器、ソフトウェア、データ、サーバなど、共有リソースは、オンデマンドの関係でクラウド中のどのシステムにも提供され、これによって、多くのコンピューティング・システムに亘るサービスへのアクセスおよびその分配を可能にする。クラウド・コンピューティングは、当該技術分野で周知のように、クラウド中で作動しているシステム群の間に、通常インターネット接続を必要とするが、これらのシステム群を接続する他の技法を使うことも可能である。
【0032】
図2は、一実施形態による、
図1のユーザ・デバイス116もしくはサーバ114またはその両方に関連付けられる代表的なハードウェア環境を示す。
図2は、マイクロプロセッサなどの中央処理装置(CPU:central processing unit)210および一つ以上のバス212(いくつかの実施形態によれば、これらは、ローカル・バス、並列バス、直列バスなど各種のバスであり得る)を介して相互接続された、いくつかの他のユニットを有するワークステーションの典型的なハードウェア構成を示す。
【0033】
図2に示されたワークステーションは、ランダム・アクセス・メモリ(RAM)214と、読み取り専用メモリ(ROM)216と、ディスク・ストレージ・ユニット220などの周辺機器を一つ以上のバス212に接続するためのI/Oアダプタ218と、キーボード224、マウス226、スピーカ228、マイクロフォン232、もしくはタッチ・スクリーン、デジタル・カメラ(図示せず)またはこれらの組合せなど他のユーザ・インタフェース・デバイスを一つ以上のバス212に接続するためのユーザ・インタフェース・アダプタ222と、ワークステーションを通信ネットワーク235(例えば、データ処理ネットワーク)に接続するための通信アダプタ234と、一つ以上のバス212をディスプレイ・デバイス238に接続するためのディスプレイ・アダプタ236と、を含む。
【0034】
ワークステーションはその上に常駐する、MICROSOFT WINDOWS(R)オペレーティング・システム(OS:Operating System)、MAC(R)OS、UNIX(R)OSなどのオペレーティング・システムを有し得る。当然のことながら、好適な実施形態は、前述したものと違ったプラットフォームおよびオペレーティング・システムに実装することも可能である。好適な実施形態は、オブジェクト指向プログラミング手法を併せ用い、JAVA(R)、XML、C、もしくはC++言語またはこれらの組合せを使って、または他のプログラミング言語を使って記述することができる。複雑なアプリケーションを開発するのに益々多く使われるようになってきた、オブジェクト指向プログラミング(OOP:object oriented programming)を用いることが可能である。
【0035】
現在、IEEEは、企業、教育機関などの組織にMACアドレスを割り当てており、これらの組織は、適切と思われる場合、自分たちのネットワーク(群)に亘りそのMACアドレスを自由に割り当てている。しかしながら、このプロセスは、非効率で待ち時間および問題に満ちている。例えば、イーサネット(R)スイッチングにおいて、特定のスイッチング・デバイスに対し分かっている全てのMACアドレス格納しているMACアドレス・テーブルのサイズの如何によっては、拡大しているネットワークで使用するためスイッチを対応させる上で、MACアドレス対処のための処理能力に対して、および低いルックアップ待ち時間を維持する上で、重大な問題があり得る。
【0036】
現在使われているMACアドレス処理プロトコルに関連するこの問題および待ち時間を克服するために、固定MACアドレスを割り当てる代わりに、MACアドレスを必要とするデバイスに連結されたスイッチング・デバイスの起動時にMACアドレスを割り当てることが可能である。これらのMACアドレスは、アルゴリズム的割当ての着実な実行に基づいて決めることができる。
【0037】
一実施形態によれば、受信されたパケットが転換される宛先ポートは、宛先MACアドレスの関数とすることが可能であり、この関数は、Dest_Port=F(Dest_MAC_Address,is_mirror,is_flow)(=F(宛先_MAC_アドレス,は_ミラー、または_フロー)と記述することができ、この式のFは関数を表し、Dest_Portは宛先ポートであり、Dest_MAC_Addressは、パケットにより提供される宛先MACアドレスであり、is_mirrorは、パケットが複数のポートにミラーすることが可能かどうかを表し、is_flowは、特殊なオペレーションとフロー制御を表す。is_mirrorおよびis_flowは、パケット交換には不必要だが、必要な場合に使用することができる。こうすれば、MACアドレス割当ては、在来の方法に比べて、より効率的で、より少ない必要オーバーヘッド処理を使って行うことが可能である。
【0038】
次いで
図3を参照すると、一実施形態による、スイッチング・デバイスなどのシステム300が示されている。図示のように、システム300は、電気的にシステム300に連結されたデバイス群304に対してMACアドレスを割り当てし、管理するようになされた、MAASなどのサーバを含む。このサーバは、コンポーネントとするか、もしくは、ロジックを実行するためのスイッチング・プロセッサなど少なくとも一つのプロセッサ306に管理させるか、またはその両方を行うことが可能である。また、いくつかの実施形態において、システム300は、ロジックを実行するためのローカル・プロセッサ302を含むことができ、このプロセッサは、該少なくとも一つのプロセッサ306に電気的に連結されている。ローカル・プロセッサ302もしくは少なくとも一つのプロセッサ306またはその両方には、中央処理装置(CPU)、フィールド・プログラム可能ゲート・アレイ(FPGA:field programmable gate array)、集積回路(IC:integrated circuit)、特定用途向け集積回路(ASIC)など、当該技術分野で周知の任意の種類のプロセッサを使用すればよい。さらなる実施形態において、スイッチングASICおよびローカルCPUの両方をシステム300に含め、スイッチングASICには交換オペレーションを管理させ、ローカルCPUにはMACアドレス割当てオペレーションを管理させることができる。
【0039】
オンラインに参加するあらゆる新規のホスト、サーバ、またはデバイスは、他のデバイスと通信するためにMACアドレスを獲得する。これは、デバイスのネットワーク・インターフェース・カード(NIC:network interface card)にMACアドレスが事前プログラムされている在来の方法に比べユニークである。従来、デバイスは、起動時に通信のためにそのMACアドレスを用いる。しかしながら、本明細書で説明する諸実施形態によれば、MACアドレス取得アルゴリズムまたはMACアドレス取得プロトコル(MAAP)を用いる、MACアドレス取得の方法は、事前プログラムされたMACアドレスの必要性を排除し、いくつかのアプローチにおいて、事前プログラムされたMACアドレスに加えて用いることができる。
【0040】
一実施形態によれば、少なくとも一つのプロセッサ306は、ポート308上で、デバイス304にMACアドレスを割り当てる要求を受信するよう構成されたロジックを含むか、または該ロジックへのアクセスを有する。この要求は、デバイス304によって送信されるか、あるいは、ネットワークまたはシステム300中の他の場所で発生し得る。要求が受信されたポート308は、将来、デバイス304と結び付く全ての発信トラフィックを送信するのに用いることができるように、保存または別途に記憶される。少なくとも一つのプロセッサ306は、少なくとも部分的に当該ポートに基づいてデバイスに割り当てるMACアドレスを決めるよう構成されたロジックと、該MACアドレスを添えて要求に対する応答を送信するよう構成されたロジックと、をさらに含むか、またはこれらロジックへのアクセスをさらに有する。
【0041】
一実施形態において、少なくとも一つのプロセッサ306は、MACアドレス割当てテーブルを生成するよう構成されたロジックをさらに含むか、または該ロジックへのアクセスをさらに有することができる。次いで
図4を参照すると、MACアドレス割当てテーブル400は、複数のハッシュ値402を含むことが可能で、各ハッシュ値402は一つのポート404と複数のMACアドレス406とに関連付けられている。ここで
図3〜4を参照すると、一つのアプローチにおいて、複数のMACアドレス406のどの一つもハッシュ化アルゴリズムを適用することによって関連付けられたハッシュ値402が得られ、これには、MACアドレス406を要求するデバイス304に対し、該デバイス304をシステム300に連結しているポート404に対応するMACアドレス406を割り当てるための系統的方法がある。
【0042】
一つのアプローチにおいて、デバイス304aに割り当てるMACアドレス406aを決めるよう構成されたロジックは、MACアドレス割当てテーブル400からMACアドレス406aを選択するよう構成されたロジックを含むことができ、選択されたMACアドレス406aにハッシュ化アルゴリズムを適用することによって、デバイス304aに連結されたポート404aに関連付けられたハッシュ値402aが得られる。
【0043】
さらなるアプローチにおいて、MACアドレス割当てテーブル400からMACアドレス406aを選択するよう構成されたロジックは、複数の利用可能なMACアドレス406から、次の利用可能なMACアドレス406aを連続的にまたはランダムに選択するよう構成されたロジックを含み、利用可能なMACアドレスは現在どのデバイス304にも割り当てられていない。利用不可能なMACアドレスが現在デバイス304に割り当てられていることは言うまでもない。
【0044】
さらに別の実施形態において、該ロジックは、MACアドレス割当てテーブル400からMACアドレス406aが選択されたならば、該MACアドレス406aをMACアドレス割当てテーブル400から除去し、そのMACアドレスを使用中MACアドレス・テーブル(図示しないが、割当て済みMACアドレスだけを含むことを除き、MACアドレス割当てテーブル400と類似のものとなろう)に加えることによって、該MACアドレス406aを利用不可として標識するよう構成されたロジックをさらに含むことができる。さらなる諸アプローチにおいて、該ロジックは、デバイス304aが自分に割り当てられたMACアドレス406aを解放すると、該MACアドレス406aをMACアドレス割当てテーブル400に加え、そのMACアドレス406aを使用中MACアドレス・テーブルから除去することによって、該MACアドレス406aを利用可能として標識するよう構成されたロジックをさらに含むことが可能である。
【0045】
別の実施形態において該ロジックは、MACアドレス割当てテーブル400中のMACアドレス406aに関連付けられ、該MACアドレス406aが利用可能かまたは不可能かを表示する、表示ビットを反転するように構成することが可能である。
【0046】
様々な実施形態によれば、このハッシュ化アルゴリズムは、当該技術分野で周知の任意の完全または不完全ハッシュ化アルゴリズムを含むことができる。一つのアプローチにおいて、該ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 XOR DM[2]*3 XOR DM[3]*4 XOR DM[4]*5 XOR DM[5]*6)MOD Pを含むことが可能で、この式中の、DMはMACアドレスであり、H(DM)はMACアドレスDMの全6バイトのハッシュ値であり、Pはシステム300の物理ポート308の合計数である。
【0047】
別の実施形態において、該ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 ・・・ XOR DM[N−1]*N) MOD Pを含むことができ、この式中の、DMはMACアドレスであり、H(DM)はMACアドレスDMのハッシュ値であり、DM[N−1]は、Nバイト数を有するMACアドレスDMの或るバイトであり、Pは物理ポートの合計数である。
【0048】
別の実施形態によれば、MACアドレス割当てテーブル400は、少なくとも一つのプロセッサ306の始動プロセスの過程で生成することができる。この始動プロセスは、システム300の立ち上げ、またはコンポーネント群が速度に達した後に生じる任意のプロセスで行うことができる。
【0049】
別の実施形態では、要求には、送信元アドレスを有するMACアドレス取得プロトコル(MAAP)パケットを含めることができる。この場合、応答には、受信されたMAAPパケットの宛先アドレスを該受信MAAPパケットの送信元アドレスに変えるように変更された受信MAAPパケットを含めることができる。このように、送信元アドレスと宛先アドレスとの間の簡単な切替えを使って、要求と応答とに同じMAAPパケットを用いることができる。
【0050】
次いで
図5を参照すると、一実施形態による、MACアドレスを割り当てる方法500のフローチャートが示されている。方法500は、様々な実施形態において、なかんずく、
図1〜4に示された環境のいずれかにおいて本発明に従って実施することができる。当然のことながら、当業者なら本説明を読めば分かるように、
図5に特定的に記載されたオペレーションよりも多い、または少ないオペレーションを方法500に含めることが可能である。
【0051】
方法500のステップの各々は、オペレーティング環境の任意の適切なコンポーネントによって実施することができる。例えば、一実施形態において、方法500は、スイッチング・デバイスもしくはスイッチング・デバイスのMAASまたはその両方で、部分的にまたは全体的に実施することが可能である。
【0052】
図5に示されるように、方法500は、オペレーション502から開始でき、該オペレーションでは、スイッチング・デバイスの或るポートで或るデバイスからのMACアドレスに対する要求が受信される。本明細書で説明したように、要求が受信されたポートは、該デバイスに対するMACアドレスを決める過程で使用するため保存される。
【0053】
オペレーション504で、少なくとも部分的に該ポートに基づいてデバイスに割り当てるMACアドレスが決められる。
【0054】
一つのアプローチにおいて、MACアドレス割当てテーブルを生成することができる。MACアドレス割当てテーブルには複数のハッシュ値を含め、各ハッシュ値を複数のMACアドレスに対応している各ポートに関連付けることが可能である。さらに、複数のMACアドレスのどの一つもハッシュ化アルゴリズムを適用することによって関連付けられたハッシュ値が得られ、続いてこれがそのMACアドレスのポートに関連付けられる。
【0055】
さらに、一実施形態において、MAASは、MACアドレス割当てテーブルを構築するための入力ファイルからMAASに提供された、MACアドレスの所定のセットを用いることができる。この場合、MAASは、MACアドレス割当てプロトコル(MAAP)パケットが受信されるのに応じて、MACアドレス割当てテーブルから、デバイスに割り当てるMACアドレスを決める。
【0056】
一実施形態において、ハッシュ化アルゴリズムは完全ハッシュ化アルゴリズムまたは不完全ハッシュ化アルゴリズムとすることができる。使用可能なかかる一つの完全ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 XOR DM[2]*3 XOR DM[3]*4 XOR DM[4]*5 XOR DM[5]*6)MOD Pであり、この式の、DMはMACアドレスであり、H(DM)はMACアドレスDMの全6バイトのハッシュ値であり、Pはスイッチング・デバイスの物理ポートの合計数である。
【0057】
別の実施形態によれば、該ハッシュ化アルゴリズムは、H(DM)=(DM[0]*1 XOR DM[1]*2 ・・・ XOR DM[N−1]*N) MOD Pを含むことができ、この式中の、DMはMACアドレスであり、H(DM)はMACアドレスDMのハッシュ値であり、DM[N−1]は、Nバイト数を有するMACアドレスDMの或るバイトであり、Pはポートの合計数である。
【0058】
いくつかのアプローチにおいて、あるデバイスからパケットを受信し、MACアドレスにハッシュ化アルゴリズムを適用してもスイッチング・デバイスの適切なポートが得られない場合、例えば、宛先MACアドレスがMAAPによって提供されなかった場合には、宛先ポートを見出すために、通常のルックアップ・アルゴリズムを使用することが可能である。次いで、該パケットを宛先ポートに転送することができる。MAAPを用いて、MAASによって提供されなかったMACアドレスを識別するために、それらのMACアドレスを、当該範囲および汎用一意識別子(UUID:universally unique identifier)フィールドと対比することが可能である。MAAPは、ある特定の事前プログラムされた範囲内でMACアドレスを割り当てる。
【0059】
一つのアプローチにおいて、立ち上げ過程など、スイッチング・デバイスの始動プロセスの過程でMACアドレス割当てテーブルを生成することができる。また、MACアドレス割当ては、リスト、関連付け表、ファイル、または一つ以上のMACアドレスを単一のポートおよび単一のハッシュ値に関連付けできる何らかの他の手段を使ってもよい。
【0060】
さらなるアプローチにおいて、方法500は、MACアドレス割当てテーブルからMACアドレスを選択するステップをさらに含み、選択されたMACアドレスにハッシュ化アルゴリズムを適用することによって、デバイスに連結されたスイッチング・デバイスの当該ポートに関連付けられたハッシュ値が得られるようにできる。例えば、デバイスがスイッチング・デバイスのポート4に接続されている場合、そのデバイスに対し選択されたMACアドレスにハッシュ化アルゴリズムを適用することによって、ポート4に関連付けられたハッシュ値が得られる。このハッシュ値は4とすることもでき、または、この値は、特定のハッシュ値にハッシュ化されたMACアドレスの割当てに先立ってスイッチング・デバイスの該ポートに関連付けられた任意の他の番号とすることができる。
【0061】
さらなる別の実施形態において、MACアドレス割当てテーブルからMACアドレスを選択するステップは、複数の利用可能MACアドレスから次の利用可能MACアドレスを連続的にまたはランダムに選択するステップを含むことができる。利用可能MACアドレスとは、現在どのデバイスにも割り当てられていないMACアドレスであり、利用不可MACアドレスは、現在あるデバイスに割り当てられているMACアドレスである。
【0062】
さらなる別の実施形態において、方法500は、MACアドレス割当てテーブルからMACアドレスを選択したならば、そのMACアドレスを利用不可として標識するステップ、またはそのMACアドレスをMACアドレス割当てテーブルから除去し、そのMACアドレスを使用中MACアドレス・テーブルに加えるステップを含むことができる。さらに、デバイスが自分に割り当てられたMACアドレスを解放したならば、そのMACアドレスを、MACアドレス割当てテーブルに加え、使用中MACアドレス・テーブルから除去することができ、あるいは、該MACアドレスを利用可能として標識することが可能である。当然のことながら、これら別個の割当てテーブルの両方、および標識はいくつかのさらなる実施形態において使用することができる。
【0063】
別のアプローチにおいて、この標識するステップには、MACアドレス割当てテーブル中のMACアドレスに関連付けられた表示ビットを反転させるステップ、あるいは、当該技術分野で知られた、テーブル中のエントリを標識するための任意の他の方法を含めることが可能である。
【0064】
オペレーション506で、要求に対しMACアドレスを添えて応答がされる。イーサネット(R)パケットなど、MACアドレスを含む任意の応答法が使用可能である。かかる一つの状況において、この要求は送信元アドレスを有するMAAPパケットを含み得る。この場合、応答には、受信されたMAAPパケットの宛先アドレスを該受信MAAPパケットの送信元アドレスに変えるように変更された受信MAAPパケットを含めることができる。このように、送信元アドレスと宛先アドレスとの間の簡単な切替えを使って、要求と応答とに同じMAAPパケットを用いることができる。
【0065】
一実施形態によれば、立ち上げ時に、D−MAC=01:00:5e:00:00:xx、S−MAC=NIC MACアドレス、およびEtherType=0xFFFFまたは0xXXXXを用いてパケットを形成することが可能で、XXまたはxxはまだ定義されていないが、設定時に、ネットワーク管理者が決定してホスト・オペレーティング・システムに与えることが可能である。したがって、これらの値は、両方のエントリに対して周知の任意の値とすればよい。
【0066】
次いで、イーサネット(R)パケット(好ましくはMAAPパケット)はMAASに接続されたNICポート上から送信され、このポートはスイッチング・デバイスの一部であってよい。次に、スイッチング・デバイスが、該スイッチング・デバイスのポートの一つでパケットを受信する。これに応じ、MAAP要求パケットが送信元ポート情報と共にローカルMAASに送信される。この点で、ローカルMAASは、アドレス割当てアルゴリズムを実行して、ホスト・オペレーティング・システムに対するMACアドレスH−MACを決定する。
【0067】
一つのアプローチにおいて、アドレス割当てアルゴリズムは、制御ソフトウェアを使い、MAAP要求が到着してそのポートを通ってMAASに至ったスイッチ・ポートの番号「p」を抽出するステップを含むことができる。次いで、MACアドレス割当てテーブルを貫いて構文解析が行われ、第一利用可能(未割り当ての)MACアドレスが決められる。次いで、このアドレスがMAAPパケットに加えられ、該アドレスは利用不可(割当て済み)として標識される。
【0068】
次に、MAASは、該MAAPパケットにH−MACアドレスを書き込み、宛先アドレスを、当初のMAAP要求の当初の送信元アドレスに変えることによってMAAPパケットを変更する。このパケットは送信元ポートに送られる。要求したホスト・オペレーティング・システムは、所定の待ち時間(t_wait)以内に応答MAAPパケットを受信し、以降の全ての通信に対する自分の送信元MACアドレスとして、H−MACの使用を開始する。
【0069】
MAAP応答が待ち時間(t_wait)以内に到着しない場合、ホスト・オペレーティング・システムは、このプロセスを2回以上再試行することができる。この再試行においても応答が受信されない場合、ホスト・オペレーティング・システムは、以降の全て通信に対する自分の送信元MACアドレスとして、事前プログラムされたNIC MACアドレスの使用を開始する。
【0070】
大部分の実施形態によれば、本明細書に記載の方法およびシステムは、全てのホスト、デバイス、またはサーバに同じサブネットのIPアドレスが割り当てられている、フラット・レイヤ2ネットワーク上で初期化することができる。
【0071】
次いで
図6を参照すると、一実施形態による、MACアドレスを取得するための方法600のフローチャートが示されている。方法600は、様々な実施形態において、なかんずく、
図1〜4に示された環境のいずれかにおいて本発明に従って実施することができる。当然のことながら、当業者なら本説明を読めば分かるように、
図6に特定的に記載されたオペレーションよりも多いまたは少ないオペレーションを方法600に含めることが可能である。
【0072】
方法600のステップの各々は、オペレーティング環境の任意の適切なコンポーネントによって実施することができる。例えば、一実施形態において、方法600は、スイッチング・デバイスもしくはスイッチング・デバイスのMAASまたはその両方で、部分的にまたは全体的に実施することが可能である。
【0073】
図6に示されるように、方法600は、オペレーション602から開始でき、MACアドレスに対する要求がMAASに送信される。一つのアプローチにおいて、この要求はMAAPパケットとすることができる。
【0074】
オペレーション604で、要求に対する応答が待ち受けられる。要求に対する応答が、所定の長さの時間の間に受信されない場合、他の処置が取られる。
【0075】
オペレーション606で、要求に対する応答が所定の長さの時間の間に受信された場合、そのMACアドレスが使用される。応答はMACアドレスを含み、その受信後、そのMACアドレスは当初に要求を送信したデバイスもしくはそのデバイスに連結された何らかの他のデバイスによって用いられる。
【0076】
一実施形態において、要求に対する応答が所定の長さの時間の間に受信されない場合、MACアドレスに対する要求を送信したデバイスは、事前プログラムされたMACアドレスを使用することができる。一つのアプローチによれば、このMACアドレスは、製造時にデバイス中に事前プログラムされる。
【0077】
本明細書で提示する諸実施形態およびアプローチによれば、ネットワーク中の各デバイスが、スイッチング・デバイスの宛先ポートに対応するMACアドレスを有するので、ルックアップ・テーブルを使わないでスイッチング決定を行うことが可能である。さらに、このことは、極めて高速のスイッチング・アルゴリズムを提供し、非常に短い待ち時間を提供する。これは、スイッチング・ロジックを単純化することによって、さらに大幅にカットスルー待ち時間を削減しコストを低減する。
【0078】
上記で様々な実施形態を説明してきたが、当然のことながら、これらは例示目的のためであり限定を示すものではない。しかして、本発明の実施形態の幅および範囲は、前述した例示的な実施形態のいずれにも限定されるべきでなく、添付の特許請求の範囲およびこれらと等価なものによってだけ定義さるべきものである。