(58)【調査した分野】(Int.Cl.,DB名)
m(mは2以上の整数)台のファブリックスイッチとの間でm本のサブリンクでそれぞれ接続され、前記m本のサブリンクに対してリンクアグリゲーショングループを設定して動作するスイッチ装置であって、
フレームまたはパケットを受信した際に、前記フレームまたはパケットに含まれるヘッダ内の所定のビット領域を入力として所定の演算式で論理演算を行うことでkビットの分散識別子を算出する分散識別子算出部と、
前記m本のサブリンクと前記kビットの分散識別子との対応関係を表す分散テーブルと、
前記分散テーブルに基づいて、前記分散識別子算出部で算出された前記kビットの分散識別子に対応するサブリンクに前記受信したフレームまたはパケットを中継する中継実行部と、
前記分散テーブルを生成する分散テーブル生成部と、
を備え、
前記分散テーブル生成部は、
前記m本のサブリンクとj(<k)ビットの分散識別子との第1の対応関係を所定の規則に基づいて定める第1処理と、
前記第1の対応関係における前記jビットの分散識別子を、当該jビットの分散識別子と同じjビットの値を一部に含んだ前記kビットの分散識別子に置き換えることで、前記m本のサブリンクと前記kビットの分散識別子との第2の対応関係を定める第2処理と、
を実行し、
前記分散テーブルは、前記第2の対応関係を反映して生成される、
スイッチ装置。
【発明を実施するための形態】
【0016】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【0017】
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0018】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0019】
(実施の形態1)
《ネットワーク中継システムの構成および前提動作》
図1は、本発明の実施の形態1によるネットワーク中継システムにおいて、その構成例および前提となる動作例を示すブロック図である。
図1に示すネットワーク中継システムは、ボックス型ファブリックシステム10で構成される。ボックス型ファブリックシステム10は、n(nは2以上の整数)台のポートスイッチPS[1]〜PS[n]と、m(mは2以上の整数)台のファブリックスイッチFS[1]〜FS[m]と、n台のポートスイッチとm台のファブリックスイッチとの間をそれぞれ接続する複数のサブリンク(例えばSL[1,1]等)を備える。m台のファブリックスイッチFS[1]〜FS[m]は、n台のポートスイッチPS[1]〜PS[n]の間のフレームの中継を担う。
【0020】
n台のポートスイッチPS[1]〜PS[n]、およびm台のファブリックスイッチFS[1]〜FS[m]のそれぞれは、ボックス型スイッチ装置で構成される。n台のポートスイッチPS[1]〜PS[n]のそれぞれは、m個のファブリックスイッチ用ポートPf[1]〜Pf[m]と、p(pは1以上の整数)個のユーザ用ポートPu[1]〜Pu[p]とを備える。m台のファブリックスイッチFS[1]〜FS[m]のそれぞれは、n個のポートスイッチ用ポートPp[1]〜Pp[n]を備える。
【0021】
n台のポートスイッチPS[1]〜PS[n]のそれぞれは、自身とm台のファブリックスイッチFS[1]〜FS[m]との間をそれぞれ接続するm本のサブリンクに対してLAGを設定する。例えば、ポートスイッチPS[1]は、m台のファブリックスイッチFS[1]〜FS[m]との間のm本のサブリンクSL[1,1],SL[1,2],…,SL[1,m]に対してLAGを設定する。ここでは、このm本のサブリンク間のLAGを、メインリンクML[1]と呼ぶ。同様に、ポートスイッチPS[2]は、m台のファブリックスイッチFS[1]〜FS[m]との間のm本のサブリンクSL[2,1],SL[2,2],…,SL[2,m]に対してLAG(すなわちメインリンクML[2])を設定する。同様に、ポートスイッチPS[n]は、m本のサブリンク(図示は省略するがSL[n,1],SL[n,2],…,SL[n,m])に対してLAG(すなわちメインリンクML[n])を設定する。
【0022】
以降、ポートスイッチPS[1]〜PS[n]のそれぞれを代表してポートスイッチPSと称し、ファブリックスイッチFS[1]〜FS[m]のそれぞれを代表してファブリックスイッチFSと称する。また、ファブリックスイッチ用ポートPf[1]〜Pf[m]のそれぞれを代表してファブリックスイッチ用ポートPfと称し、ユーザ用ポートPu[1]〜Pu[p]のそれぞれを代表してユーザ用ポートPuと称し、ポートスイッチ用ポートPp[1]〜Pp[n]のそれぞれを代表してポートスイッチ用ポートPpと称する。更に、サブリンクSL[1,1]〜SL[n,m]のそれぞれを代表してサブリンクSLと称し、メインリンクML[1]〜ML[n]のそれぞれを代表してメインリンクMLと称する。
【0023】
また、
図1の例では、各サブリンクSLは、2本のリンク11によって構成される。リンク11とは、通信回線と、その両端のポート(すなわちファブリックスイッチ用ポートPfおよびポートスイッチ用ポートPp)とを含めた集合体を意味する。各ポートスイッチ(例えばPS[1])は、各サブリンク(例えばSL[1,1])を構成する2本のリンク11に対してLAGを設定する。すなわち、当該LAGは、前述したサブリンク間のLAG(すなわちメインリンクML)と異なり、サブリンク内のLAGとなる。
【0024】
同様に、各ファブリックスイッチ(例えばFS[1])も、各サブリンク(例えばSL[1,1])を構成する2本のリンク11に対してLAGを設定する。なお、各サブリンクSLは、必ずしも2本のリンク11で構成される必要はなく、各サブリンクSL毎に、1本のリンク11または3本以上のリンク11で構成されてもよい。2本以上のリンク11で構成されたサブリンクSLには、サブリンク内のLAGが設定される。
【0025】
ここで、例えば、ポートスイッチPS[1]のユーザ用ポートPu[1]に接続された端末TM1からポートスイッチPS[2]のユーザ用ポートPu[p]に接続された端末TM4に向けてフレームFL1が転送される場合を想定する。この場合、ポートスイッチPS[1]は、フレームFL1を受信した際に、その中継先のファブリックスイッチ用ポートPf(言い換えればサブリンクSL)を所定の分散規則に基づいて定める。この例では、ファブリックスイッチ用ポートPf[1]が定められる。その結果、当該フレームFL1は、ファブリックスイッチFS[1]を経由する経路でポートスイッチPS[2]および端末TM4に転送される。
【0026】
また、ポートスイッチPS[1]のユーザ用ポートPu[p]に接続された端末TM2からポートスイッチPS[2]のユーザ用ポートPu[1]に接続された端末TM3に向けてフレームFL2が転送される場合を想定する。この場合、ポートスイッチPS[1]は、フレームFL2を受信した際に、その中継先のファブリックスイッチ用ポートPf(言い換えればサブリンクSL)を所定の分散規則に基づいて定める。この例では、ファブリックスイッチ用ポートPf[2]が定められる。その結果、当該フレームFL2は、ファブリックスイッチFS[2]を経由する経路でポートスイッチPS[2]および端末TM3に転送される。なお、仮に、ファブリックスイッチ用ポートPf[2]に障害が有るような場合には、それ以外のファブリックスイッチ用ポートPfが定められる。
【0027】
このように、ボックス型ファブリックシステム10を用いると、LAGに伴い、LAG内での負荷分散と冗長性を実現できる。例えば通信帯域を拡大したい場合には、ファブリックスイッチFSを増設すればよく、通信帯域の拡大を容易にかつ低コストで実現可能になる。また、ポートスイッチPSの増設によって、ポート数(すなわちユーザ用ポートPu)の拡張も容易にかつ低コストで実現可能になる。その結果、当該システムを用いると、シャーシ型スイッチ装置からなるシステムを用いる場合と比較して、ユーザの要求に応じた柔軟なシステムを低コストで構築できる。
【0028】
《ポートスイッチ(タイプB)の概略》
図2は、
図1のネットワーク中継システムにおいて、そのポートスイッチの主要部の概略的な構成例および動作例を示すブロック図である。
図2に示すタイプBのポートスイッチ(第1スイッチ装置)PSbは、例えば、3個のファブリックスイッチ用ポートPf[1]〜Pf[3]と、ユーザ用ポートPuと、分散テーブル15と、中継実行部16と、分散識別子算出部17とを備える。ここでは、
図1のシステムが3台のファブリックスイッチFS[1]〜FS[3]を備える場合を例とし、ファブリックスイッチ用ポートPf[1]〜Pf[3]は、ファブリックスイッチFS[1]〜FS[3]との間でそれぞれサブリンクSL[1]〜SL[3]によって接続される。サブリンクSL[1]〜SL[3]には、サブリンク間のLAG(すなわちメインリンクML)が設定される。
【0029】
また、この例では、サブリンクSL[1],SL[2]のそれぞれは、3本のリンク11で構成される。これに応じて、ファブリックスイッチ用ポートPf[1]は、3個のファブリックスイッチ用ポートPf[1,1],Pf[1,2],Pf[1,3]で構成され、ファブリックスイッチ用ポートPf[2]は、3個のファブリックスイッチ用ポートPf[2,1],Pf[2,2],Pf[2,3]で構成される。サブリンクSL[3]は、2本のリンク11で構成され、これに応じて、ファブリックスイッチ用ポートPf[3]は、2個のファブリックスイッチ用ポートPf[3,1],Pf[3,2]で構成される。サブリンクSL[1],SL[2],SL[3]には、それぞれ、サブリンク内のLAGが設定される。
【0030】
分散識別子算出部(第1分散識別子算出部)17は、ユーザ用ポートPuでフレームまたはパケットを受信した際に、それに含まれるヘッダ内の所定のビット領域を入力として所定の演算式で論理演算を行うことでjビット(ここでは3ビット)の分散識別子DIDを算出する。分散テーブル(第1分散テーブル)15は、サブリンクSL[1]〜SL[3]と分散識別子DIDとの対応関係を表す。当該分散テーブル15は、所定の分散規則に基づき、ポートスイッチPSbによって生成される。中継実行部(第1中継実行部)16は、分散テーブル15に基づいて、分散識別子算出部17で算出されたjビット(3ビット)の分散識別子DIDに対応するサブリンクに、ユーザ用ポートPuで受信したフレームまたはパケットを中継する。
【0031】
ポートスイッチPSbは、特に限定はされないが、次ぎのような分散規則に基づいて分散テーブル15を生成する。まず、ポートスイッチPSbは、分散識別子DIDの母数(この例では3ビットに該当する8個)を、サブリンクの本数(ここでは3本)で割り、その商と余りに基づいて、各サブリンクに割り当てる分散識別子DIDの個数を決定する。具体的には、商となる個数(ここでは2個)を各サブリンクに割り当て、余りの個数(ここでは2個)を各サブリンクに対して順番に1個ずつ分配する。
【0032】
その結果、サブリンクSL[1],SL[2],SL[3]に割り当てられる分散識別子DIDの個数は、それぞれ、3個、3個、2個となる。その後、ポートスイッチPSbは、この決定した個数に基づいて、8個の分散識別子DIDを各サブリンクに対して順に詰め込む形で割り当てることで分散テーブル15を生成する。これにより、中継実行部16に示されるように、サブリンクSL[1],SL[2],SL[3]には、それぞれ、「0〜2」,「3〜5」,「6,7」の分散識別子DIDが割り当てられる。例えば、分散識別子DID=7は、3ビットの分散識別子DID=“111”の10進数に該当する。
【0033】
ここで、例えば、「192.168.1.1」の宛先IPアドレス(DIP)および「192.168.1.15」の送信元IPアドレス(SIP)を含むフレームFL1bをユーザ用ポートPuで受信した場合を想定する。この場合、分散識別子算出部17は、この宛先IPアドレス(DIP)および送信元IPアドレス(SIP)を入力として所定の演算式で論理演算を行うことで3ビットの分散識別子DIDを算出する。この例では、分散識別子DIDとして「DID=6」が算出されたものとする。その結果、中継実行部16は、この「DID=6」に対応するサブリンクSL[3](すなわちファブリックスイッチFS[3])にフレームFL1bを中継する。
【0034】
なお、分散識別子DIDのビット数(すなわち母数(ここでは8個))は、中継実行部16の仕様に基づく固定数とすることが望ましい。具体的に説明すると、まず、中継実行部16は、LAGによる負荷分散を高速に行うため、ハードウェア(所謂スイッチLSI)によって構成されることが望ましい。この場合、LAGによって負荷分散を行う際の最大分散数は、ハードウェアの仕様に応じて定められる。
図2のポートスイッチPSbは、最大分散数が8分散となっており、これに応じて最大8台のファブリックスイッチFSを接続可能となっている。
【0035】
分散識別子DIDの母数(ここでは8個)は、この最大分散数(8分散)と同じ値の固定数を用いることが望ましい。例えば、最大分散数に対応する8本のリンク11に対してLAGを設定した場合、各リンク11に分散識別子DIDを1個ずつ割り当てればよく、最大分散数未満となる例えば4本のリンク11に対してLAGを設定した場合、各リンク11に分散識別子DIDを2個ずつ割り当てればよい。また、分散識別子算出部17は、中継実行部16と同様にLAGによる負荷分散を高速に行うため、ハードウェアによって構成されることが望ましい。この観点からも、分散識別子DIDの母数(ビット数)は固定数を用いることが望ましい。なお、前述した分散テーブル15を生成する際の処理は、通信速度には特に影響を及ぼさないため、CPU(Central Processing Unit)等を用いたソフトウェア処理であってもよい。
【0036】
《ポートスイッチ(タイプA)の概略》
図3は、
図1のネットワーク中継システムにおいて、そのポートスイッチの主要部の
図2とは異なる概略的な構成例および動作例を示すブロック図である。
図3に示すタイプAのポートスイッチ(第2スイッチ装置)PSaは、
図2の構成例と比較して、分散テーブル25aの内容と、中継実行部26aおよび分散識別子算出部27の構成とが異なっている。これ以外の構成に関しては、
図2の場合と同様であるため、詳細な説明は省略する。
【0037】
分散識別子算出部(第2分散識別子算出部)27は、
図2の場合と同様のビット領域を入力として同様の演算式を用いて論理演算を行うが、
図2の場合と異なり、jビットよりも大きいkビット(ここでは5ビット)の分散識別子DIDを算出する。分散テーブル(第2分散テーブル)25aは、分散識別子DIDのビット数の違いに伴い、
図2の場合とは異なるサブリンクSL[1]〜SL[3]と分散識別子DIDとの対応関係を表す。中継実行部(第2中継実行部)26aは、分散テーブル25aに基づいて、分散識別子算出部27で算出されたkビット(5ビット)の分散識別子DIDに対応するサブリンクに、ユーザ用ポートPuで受信したフレームまたはパケットを中継する。
【0038】
このように、
図3のポートスイッチPSaは、
図2のポートスイッチPSbと異なり、最大分散数が32分散となっており、これに応じて分散識別子DIDのビット数が5ビット(すなわち母数が32個)となっている。すなわち、ポートスイッチPSaは、最大32台のファブリックスイッチFSを接続可能となっている。
図2の場合と同様の分散規則によって分散テーブル25aを定めると、サブリンクSL[1],SL[2],SL[3]に割り当てられる分散識別子DIDの個数は、それぞれ、11個、11個、10個となる。その結果、中継実行部26aに示されるように、サブリンクSL[1],SL[2],SL[3]には、それぞれ、「0〜10」,「11〜21」,「22〜31」の分散識別子DIDが割り当てられる。
【0039】
ここで、例えば、「192.168.1.15」の宛先IPアドレス(DIP)および「192.168.1.1」の送信元IPアドレス(SIP)を含むフレームFL1aをユーザ用ポートPuで受信した場合を想定する。フレームFL1aは、
図2に示したフレームFL1bに対して宛先と送信元が入れ替わっており、例えばフレームFL1bに対する返信フレーム等である。分散識別子算出部27は、この宛先IPアドレス(DIP)および送信元IPアドレス(SIP)を入力として所定の演算式で論理演算を行うことで5ビットの分散識別子DIDを算出する。この例では、分散識別子DIDとして「DID=14」が算出される。その結果、中継実行部26aは、この「DID=14」に対応するサブリンクSL[2](すなわちファブリックスイッチFS[2])にフレームFL1aを中継する。
【0040】
このように、
図2のポートスイッチ(タイプB)PSbと
図3のポートスイッチ(タイプA)PSaとでは、分散識別子DIDのビット数(母数)が異なっているため、仮に同じ情報を入力として同じ演算式で演算を行ったとしても、異なる分散識別子DIDが生成され得る。また、分散テーブルも、分散識別子DIDの母数を反映して生成されるため、母数が異なると、各サブリンクSLと分散識別子DIDとの対応関係も異なり得る。その結果、
図2および
図3に示したように、2個の端末間での双方向の通信が、異なるファブリクスイッチFSを介して行われる場合がある。
【0041】
《異なる仕様のポートスイッチが混在した場合の問題点》
図4は、
図1のネットワーク中継システムにおいて、異なる仕様のポートスイッチが混在した場合の問題点の一例を示す説明図である。
図4には、
図1のボックス型ファブリックシステム10において、ファブリックスイッチFSの台数「m」を3台とした場合の一部の構成例が示されている。
図4の例では、ポートスイッチPS[1]に
図3に示したポートスイッチ(タイプA)PSaが適用され、ポートスイッチPS[2]に
図2に示したポートスイッチ(タイプB)PSbが適用されている。
【0042】
ポートスイッチPS[1]は、
図3に示したように、例えば、MAC(Media Access Control)アドレス「MA1」を持つ端末TM1から受信したフレームFL1aを、ファブリックスイッチFS[2]を介してポートスイッチPS[2]に接続された端末TM4に転送する。一方、ポートスイッチPS[2]は、
図2に示したように、例えば、MACアドレス「MA4」を持つ端末TM4から受信したフレームFL1bを、ファブリックスイッチFS[3]を介してポートスイッチPS[1]に接続された端末TM1に転送する。
【0043】
ここで、ファブリックスイッチFS[2]は、端末TM4からのフレームを受信しないため、このような動作が所定の期間行われると、所謂エージングによって、自身のアドレステーブル(すなわち各ポートと各ポートの先に存在するMACアドレスとの関係)からMACアドレス「MA4」を削除する。そうすると、ファブリックスイッチFS[2]は、以降、端末TM1からのフレームFL1aを受信する度に、その宛先MACアドレスが不明となるためフラッディングを発生する。
【0044】
同様に、ファブリックスイッチFS[3]は、端末TM1からのフレームを受信しないため、自身のアドレステーブルからMACアドレス「MA1」を削除する。ファブリックスイッチFS[3]は、以降、端末TM4からのフレームFL1bを受信する度に、その宛先MACアドレスが不明となるためフラッディングを発生する。このようなフラッディングが生じると、通信帯域の低下が生じる。したがって、例えば、フレームFL1aがファブリックスイッチFS[2]を経由する際には、フレームFL1bも同じファブリックスイッチFS[2]を経由するように、各ポートスイッチPS[1],PS[2]に分散を行わせることが望ましい。
【0045】
《分散識別子算出部の概略》
図5(a)は、
図2のポートスイッチ(タイプB)における分散識別子算出部の構成例を示す概念図であり、
図5(b)は、
図3のポートスイッチ(タイプA)における分散識別子算出部の構成例を示す概念図である。
図5(a)に示す分散識別子算出部(第1分散識別子算出部)17は、フレーム(またはパケット)FLを受信した際に、当該フレーム(またはパケット)FLに含まれるヘッダ内の所定のビット領域32を入力として所定の演算式Aで論理演算を行うことでjビット(ここでは3ビット)の分散識別子DIDを算出する。
【0046】
具体的には、フレーム(またはパケット)FLは、データに対して、IP(Internet Protocol)ヘッダ30とイーサネットヘッダ31が付加された構造となっている。IPヘッダ30には、宛先IPアドレス(DIP)および送信元IPアドレス(SIP)が格納され、イーサネットヘッダ31には、送信元MACアドレス(SMAC)および宛先MACアドレス(DMAC)が格納される。ここでは、前述したヘッダ内の所定のビット領域32として、宛先IPアドレス(DIP)および送信元IPアドレス(SIP)が格納された領域が用いられる。
【0047】
分散識別子算出部17は、この所定のビット領域32を入力として演算式Aによって論理演算を行う論理演算部40を備える。論理演算部40は、論理演算結果をjビット(3ビット)の分散識別子DIDとして出力する。ここでは、前述したように、双方向の通信で同じファブリックスイッチFSを経由させるため、ビット領域32として、双方向で同じアドレス値が格納される宛先IPアドレス(DIP)および送信元IPアドレス(SIP)が用いられる。すなわち、宛先アドレスと送信元アドレスとをセットとして用いればよく、この観点では、ビット領域32として、送信元MACアドレス(SMAC)および宛先MACアドレス(DMAC)を用いることも可能である。
【0048】
一方、
図5(b)に示す分散識別子算出部(第2分散識別子算出部)27は、分散識別子算出部17と同じビット領域32を入力として、分散識別子算出部17と同じ演算式Aで論理演算を行うことで、分散識別子算出部17と同じjビット(3ビット)のビット領域41を一部に含んだk(>j)ビット(ここでは5ビット)の分散識別子DIDを算出する。具体的には、分散識別子算出部27は、分散識別子算出部17と同様に、ビット領域32を入力として演算式Aによって論理演算を行う論理演算部40を備える。ただし、論理演算部40は、論理演算結果をkビット(5ビット)の分散識別子DIDとして出力する。これにより、この5ビット(b[i+4],b[i+3],…,b[i])中の下位3ビット(b[i+2],b[i+1],b[i])に位置するビット領域41の値は、分散識別子算出部27と分散識別子算出部17とで一致することになる。
【0049】
《分散テーブルの概略》
図6(a)は、
図2のポートスイッチ(タイプB)における分散テーブルの構造例を示す概念図であり、
図6(b)は、
図3のポートスイッチ(タイプA)における分散テーブルを下位互換分散モードで生成した場合の構造例を示す概念図である。
図5(a)および
図5(b)で述べたように、ポートスイッチ(タイプB)PSbにおけるjビット(3ビット)の分散識別子DIDと、ポートスイッチ(タイプA)PSaにおけるkビット(5ビット)の分散識別子DIDとでは、kビット中のjビット(b[i+2],b[i+1],b[i])の値は一致する。そこで、ポートスイッチ(タイプA)PSaは、実質的にkビット中のjビット(b[i+2],b[i+1],b[i])の値でサブリンクSLを定め、かつ、この際のkビット中のjビットの値とサブリンクSLとの対応関係をポートスイッチ(タイプB)PSbと同じ方法で定める。
【0050】
具体的には、まず、
図6(a)を例として、
図2のポートスイッチ(タイプB)PSbの分散テーブル15では、3ビットの分散識別子DIDの“000”,“001”にサブリンク識別子(サブリンクID){SL[0]}が対応している。また、3ビットの分散識別子DIDの“111”にサブリンクID{SL[3]}が対応している。ここで、例えば、サブリンクID{SL[0]}は、サブリンクSL[0]に付された識別子を意味する。以降においても同様に、例えば{AA}は、AAに付された識別子を意味する。
【0051】
図6(a)の場合、
図3のポートスイッチ(タイプA)PSaにおける分散テーブル25bは、
図6(b)に示すように、分散テーブル15におけるjビット(3ビット)の分散識別子DIDが当該jビットの分散識別子DIDと同じjビットの値を一部に含んだkビット(5ビット)の分散識別子DIDに置き換えられた内容を持つ。例えば、分散テーブル25bでは、分散テーブル15における3ビットの分散識別子DID=“000”がそれと同じ値を一部に含んだ5ビットの分散識別子DID=“00000”,“01000”,“10000”,“11000”に置き換えられた内容を持つ。同様に、分散テーブル25bでは、分散テーブル15における3ビットの分散識別子DID=“111”がそれと同じ値を一部に含んだ5ビットの分散識別子DID=“00111”,“01111”,“10111”,“11111”に置き換えられた内容を持つ。
【0052】
これにより、例えば、ポートスイッチ(タイプB)PSbは、分散識別子DID=“001”が生成されるフレームを受信した場合、
図6(a)に基づき、当該フレームをサブリンクSL[0]に中継し、ファブリックスイッチFS[0]を介してポートスイッチ(タイプA)PSaに転送する。一方、当該フレームに対する返信フレームを受信したポートスイッチ(タイプA)PSaは、当該返信フレームに対して分散識別子DID=“00001”,“01001”,“10001”,“11001”のいずれかを生成し、
図6(b)に基づき、当該返信フレームを同じくサブリンクSL[0]に中継することになる。
【0053】
ここで、
図6(b)の分散テーブル25bは、単に、
図6(a)の分散テーブル15を一旦生成し、前述したように、当該分散テーブル15内のjビットの分散識別子DIDをkビットの分散識別子DIDに置き換えることで生成可能である。このような処理は、前述したように、CPUによるプログラム処理で行うことができる。また、
図6(b)に示した分散テーブル25bは、
図4に示したように、ポートスイッチPSの中に、ポートスイッチ(タイプA)PSaとポートスイッチ(タイプB)PSbが含まれるような場合に生成される。すなわち、分散テーブル25bは、ポートスイッチ(タイプA)PSaが下位互換分散モード(第2分散モード)で動作する際に生成される。
【0054】
一方、
図1における各ポートスイッチPSが全てポートスイッチ(タイプA)PSaで構成されるような場合、ポートスイッチ(タイプA)PSaは、通常のタイプA分散モード(第1分散モード)で分散テーブルを生成すればよい。ポートスイッチ(タイプA)PSaは、このタイプA分散モードでは、
図3に示したように、kビットの分散識別子DIDを前提とした本来の所定の規則に基づいて分散テーブル25aを生成する。なお、このタイプA分散モードは、見方によっては、下位互換分散モードにおける「j=k」の分散モードとして見ることもできる。
【0055】
《ポートスイッチ(タイプA)の概略(下位互換分散モード時)》
図7は、
図3のポートスイッチを下位互換分散モードで動作させた際の構成例および動作例を示すブロック図である。
図7に示すポートスイッチPSaは、
図3の構成例と比較して、下位互換分散モード(第2分散モード)に伴う分散テーブル25bの構成と、この分散テーブル25bの構成に伴う中継実行部26bの構成とが異なっている。中継実行部26bに関しては、ハードウェアの回路構成自体は
図3と同様であるが、当該ハードウェアに対する設定内容が
図3とは異なる。これ以外の構成に関しては、
図3の場合と同様であるため、詳細な説明は省略する。
【0056】
分散テーブル25bは、
図2のポートスイッチ(タイプB)PSbの分散テーブル15をもとに、
図6で述べたような方法を用いて生成される。その結果、中継実行部26bに示されるように、サブリンクSL[1]には、「0〜2」の分散識別子DIDに加えて、これらと同じ3ビットの値を一部に含む「8〜10」,「16〜18」,「24〜26」の分散識別子DIDが割り当てられる。また、サブリンクSL[2]には、「3〜5」の分散識別子DIDに加えて、これらと同じ3ビットの値を一部に含む「11〜13」,「19〜21」,「27〜29」の分散識別子DIDが割り当てられる。同様に、サブリンクSL[3]には、「6,7」の分散識別子DIDに加えて、「14,15」,「22,23」,「30,31」の分散識別子DIDが割り当てられる。
【0057】
ここで、
図3の場合と同様に、「192.168.1.15」の宛先IPアドレス(DIP)および「192.168.1.1」の送信元IPアドレス(SIP)を含むフレームFL1aをユーザ用ポートPuで受信した場合を想定する。この場合、分散識別子算出部27は、
図3の場合と同様に、分散識別子DIDとして「DID=14」を算出する。その結果、中継実行部26bは、この「DID=14」に対応するサブリンクSL[3](すなわちファブリックスイッチFS[3])にフレームFL1aを中継する。このように、
図7のポートスイッチ(タイプA)PSaを用いることで、
図3の場合と異なり、
図2のポートスイッチ(タイプB)PSbと同じファブリックスイッチFSにフレームを中継することが可能になる。
【0058】
図8は、
図7のポートスイッチ(タイプA)において、その分散テーブル25bの詳細な構成例を示す図である。
図8に示す分散テーブル25bは、サブリンクIDと分散識別子DIDとの対応関係に加えて、さらに、各サブリンクを構成する単数または複数本のリンク11と分散識別子DIDとの対応関係も表している。例えば、サブリンクID{SL[3]}は、
図7で述べたように、「6,7」,「14,15」,「22,23」,「30,31」の分散識別子DIDに対応する。この内、「6,22,7,23」の分散識別子DIDは、ポート識別子(ポートID){Pf[3,1]}に対応するリンク11に割り当てられる。また、「14,30,15,31」の分散識別子DIDは、ポートID{Pf[3,2]}に対応するリンク11に割り当てられる。
【0059】
この場合、
図7で述べた「14」の分散識別子DIDを持つフレームFL1aは、より詳細には、サブリンクSL[3]の中のファブリックスイッチ用ポートPf[3,2]に対応するリンク11に中継される。このように、
図8に示す分散テーブル25bは、
図1で述べたように、サブリンク間のLAGに加えて、サブリンク内のLAGを反映して生成されたものとなっている。すなわち、
図8に示す分散テーブル25bは、各サブリンクに対応する分散識別子DIDを、当該各サブリンクを構成する単数または複数本のリンク(ここではファブリックスイッチ用ポートPf)に所定の分散規則に基づいて割り当てることで生成される。
【0060】
この所定の分散規則(すなわちサブリンク内のLAGの分散規則)は、特に、限定はされないが、ここではラウンドロビン方式を用いている。例えば、サブリンクID{SL[3]}の分散識別子DIDは、「6」と、3ビットが「6」と共通する「14,22,30」と、「7」と、3ビットが「7」と共通する「15,23,31」である。これを順番に並べて「6,14,22,30,7,15,23,31」としたのち、ファブリックスイッチ用ポートPf[3,1],Pf[3,2]に対してラウンドロビン方式で割り当てることで
図8の分散テーブル25bが得られる。なお、このサブリンク内のLAGの分散規則は、
図4で述べたような問題とは無関係であるため、サブリンク内で略均一に分散が行われるような規則であれば、様々な分散規則を適用することが可能である。
【0061】
《ポートスイッチ(タイプA)の詳細》
図9は、
図1のネットワーク中継システムにおいて、そのポートスイッチ(タイプA)の主要部の概略構成例を示すブロック図である。
図9に示すポートスイッチ(第2スイッチ装置)PSaは、例えば、フレーム処理部50と、テーブルユニット51と、分散テーブル生成部52と、複数のポート(ユーザ用ポートPu(1)〜Pu(p)およびファブリックスイッチ用ポートPf(1)〜Pf(q))を備えている。ユーザ用ポートPu(1)〜Pu(p)には、通信回線を介して端末等が適宜接続される。
【0062】
ファブリックスイッチ用ポートPf(1)〜Pf(q)は、それぞれ、通信回線を介してm台のファブリックスイッチFS[1]〜FS[m]のいずれかに適宜接続される。この例では、ファブリックスイッチ用ポートPf(1),Pf(2)は、サブリンクSL(1)を構成し、当該サブリンクSL(1)によってファブリックスイッチFS[1]と接続される。また、ファブリックスイッチ用ポートPf(q−1),Pf(q)は、サブリンクSL(m)を構成し、当該サブリンクSL(m)によってファブリックスイッチFS[m]と接続される。当該サブリンクSL(1)〜SL(m)には、サブリンク間のLAG(すなわちメインリンクML(1))が設定される。また、サブリンクSL(1),SL(m)のそれぞれに対しては、サブリンク内のLAGが設定される。
【0063】
テーブルユニット51には、分散テーブル25と、アドレステーブル54と、LAGテーブル53が含まれる。アドレステーブル54は、各ポートと当該各ポートの先に存在するMACアドレスとの関係を示すテーブルである。LAGテーブル53は、前述したメインリンクMLとサブリンクSLとポート(ここではファブリックスイッチ用ポートPf)との対応関係を示すテーブルである。LAGテーブル53は、予め管理者等によって固定的に生成することも、特許文献1のような方式を用いて自動的に生成することも可能である。分散テーブル(第2分散テーブル)25は、分散テーブル生成部52によって生成され、
図3の分散テーブル25aで述べたような情報か、または
図7および
図8の分散テーブル25bで述べたような情報を持つ。
【0064】
フレーム処理部50は、分散識別子算出部(第2分散識別子算出部)27および中継実行部(第2中継実行部)26を備える。フレーム処理部50は、主に、各ポートでフレームを受信した際に、アドレステーブル54を用いて宛先のポートを検索し、受信したフレームを当該ポートに中継する処理を行う。この際に、フレーム処理部50は、例えば、ユーザ用ポートPuで受信したフレームの宛先のポートがメインリンクML(1)が設定されたポート(すなわちファブリックスイッチ用ポートPf)であった場合、分散識別子算出部27および中継実行部26を用いて、当該フレームの中継先を適宜分散させる。この際の具体的な処理内容は、
図3および
図2の場合と同様である。
【0065】
図10(a)は、
図9におけるアドレステーブルの構造例を示す概略図であり、
図10(b)は、
図9におけるLAGテーブルの構造例を示す概略図である。
図10(b)に示すLAGテーブル53では、メインリンク識別子(メインリンクID){ML(1)}がサブリンクID{SL(1)〜SL(m)}で構成されることが示される。言い換えれば、メインリンクML(1)がサブリンクSL(1)〜SL(m)で構成されることが示される。更に、LAGテーブル53では、各サブリンクID{SL(1)〜SL(m)}に対応する各ポートIDが示されている。例えば、サブリンクID{SL(1)}は、ポートID{Pf(1),Pf(2)}で構成される。言い換えれば、サブリンクSL(1)は、ファブリックスイッチ用ポートPf(1),Pf(2)で構成される。
【0066】
また、この例では、LAGテーブル53は、各ファブリックスイッチ用ポートPf(1)〜Pf(q)に対応する各リンク11の状態(すなわち障害の有無)も示している。例えば、
図9のフレーム処理部50は、定期的な制御フレームの送受信等によってファブリックスイッチ用ポートPf(1)〜Pf(q)の障害を検出した場合には、その情報をLAGテーブル53に記録する。例えば、分散テーブル生成部52は、障害が検出された場合には、LAGテーブル53に基づき障害が有るリンク11を認識し、分散テーブル25において、当該障害が有るリンク11に対応する分散識別子DIDを同一サブリンク内の正常なリンク11に割り当てる。
【0067】
図10(a)に示すアドレステーブル54は、ポートID/メインリンクIDと、当該ポートID/メインリンクIDに対応するポートの先に存在するMACアドレスとの関係を示す。
図9のフレーム処理部50は、例えば、いずれかのポートで受信したフレームの宛先MACアドレスが「MAxx」の場合、
図10(a)に基づき、当該フレームをユーザ用ポートPu(1)に中継する。
【0068】
また、フレーム処理部50は、ユーザ用ポートPu(1)〜Pu(p)のいずれかで受信したフレームの宛先MACアドレスが「MAzz」の場合、
図10(a)に基づき、当該フレームをメインリンクML(1)に中継する。この際に、フレーム処理部50内の中継実行部26は、分散識別子算出部27によって算出される分散識別子DIDと、分散テーブル25によって得られる、分散識別子DIDとサブリンクSL(およびサブリンクSL内のリンク11)との対応関係に基づいて、所定のリンク11にフレームを中継する。
【0069】
《分散識別子算出部の詳細》
図11は、
図9における分散識別子算出部の構成例を示すブロック図である。
図11に示す分散識別子算出部27は、入力レジスタ60,61と、排他的論理和演算部62と、出力レジスタ63とを備える。レジスタ60には、受信したフレームに含まれる32ビットの送信元IPアドレスが格納される。レジスタ61には、受信したフレームに含まれる32ビットの宛先IPアドレスが格納される。排他的論理和演算部62は、レジスタ60およびレジスタ61に格納される計64ビットの値を8ビット毎に区切ることで得られる8個の8ビット列に対して各ビット毎の排他的論理和演算を行う。これにより、排他的論理和演算部62は、出力レジスタ63に8ビットの論理演算結果を出力し、その内の下位5ビットを分散識別子DIDとして出力する。
【0070】
このような分散識別子算出部27を用いると、送信元IPアドレスと宛先IPアドレスが入れ替わった場合でも同じ分散識別子DIDを生成可能になる。分散識別子算出部27の論理演算方法は、勿論、これに限定されるものではなく、このように、送信元アドレスと宛先アドレスが入れ替わった場合でも同じ分散識別子DIDを生成できるような演算方法であればよい。また、入力として用いる情報も、必ずしもアドレスで限定されるものではなく、送信元を特定する識別子と宛先を特定する識別子であればよい。
【0071】
なお、ここでは、ポートスイッチ(タイプA)PSaの分散識別子算出部27の構成例を示したが、
図2に示したポートスイッチ(タイプB)PSbの分散識別子算出部17も同様の構成となる。ただし、分散識別子算出部17の場合は、出力レジスタ63の例えば下位3ビットが分散識別子DIDとして出力される。
【0072】
《分散テーブル生成部の詳細》
図12は、
図9における分散テーブル生成部の処理内容の一例を示すフロー図である。
図9の分散テーブル生成部52は、例えば、CPUによるプログラム処理によって実現される。まず、分散テーブル生成部52は、
図10(b)のようなLAGテーブル53に基づいて、現有するサブリンク(サブリンクID)と各サブリンクに対応するポート(ポートID)とを認識する(ステップS101)。次いで、分散テーブル生成部52は、
図6および
図7で述べたような下位互換分散モード(第2分散モード)が設定されているか否かを判別する(ステップS102)。分散テーブル生成部52は、下位互換分散モードが設定されている場合、ステップS103へ移行し、設定されていない場合、ステップS106へ移行する。
【0073】
ステップS103において、分散テーブル生成部52は、
図6(a)および
図6(b)で述べたように、jビットの分散識別子DIDを仮定し、各サブリンクSLとjビットの分散識別子DIDとの第1の対応関係を、ポートスイッチ(タイプB)PSbと同じ規則に基づいて定める(第1処理)。次いで、分散テーブル生成部52は、第1の対応関係におけるjビットの分散識別子を、当該jビットの分散識別子と同じjビットの値を一部に含んだkビットの分散識別子に置き換えることで、各サブリンクSLとkビットの分散識別子との第2の対応関係を定める(ステップS104、第2処理)。その後、分散テーブル生成部52は、ステップS105へ移行する。
【0074】
一方、ステップS106においては、下位互換分散モードが設定されていないため、
図3に示したように、分散テーブル生成部52は、通常のタイプA分散モード(第1分散モード)で分散テーブル25aの生成を行えばよい。そこで、ステップS106において、分散テーブル生成部52は、各サブリンクとkビットの分散識別子との第3の対応関係を所定の規則(本来の通常の分散規則)に基づいて定める(第3処理)。その後、分散テーブル生成部52は、ステップS105へ移行する。
【0075】
ステップS105において、分散テーブル生成部52は、第2の対応関係(ステップS104)または第3の対応関係(ステップS106)とステップS101でのLAGテーブル53とに基づき、
図8で述べたような規則(すなわちサブリンク内のLAGの分散規則)を用いた処理を行う。具体的には、分散テーブル生成部52は、各サブリンク毎に、各サブリンクに対応するkビットの分散識別子DIDを、各サブリンクに対応するポート(言い換えれば各サブリンクを構成する単数または複数のリンク11)に、略均等となるような分散規則に基づいて割り当てる(第4処理)。これによって、分散テーブル生成部52は、各サブリンクを構成するリンク11とkビットの分散識別子との第4の対応関係を定め、当該第4の対応関係から
図8のような分散テーブルを生成する。
【0076】
以上のように、本実施の形態1を用いることで、代表的には、仕様が異なるスイッチ装置(すなわちポートスイッチ)を用いて構築されたネットワーク中継システム(すなわちボックス型ファブリックシステム)において、通信帯域の向上が実現可能になる。言い換えれば、仕様が異なるスイッチ装置を問題無く混在させることが可能になるため、ボックス型ファブリックシステムを構築(例えば拡張)する際の自由度を向上されることが可能になる。
【0077】
(実施の形態2)
《ネットワーク中継システムの構成および動作(応用例)》
図13は、本発明の実施の形態2によるネットワーク中継システムにおいて、その構成例および概略的な動作例を示すブロック図である。
図13には、便宜上、前述した
図1のボックス型ファブリックシステム10の構成が簡略化して示されている。すなわち、各サブリンクSL内のリンクの図示が省略されている。
図13のボックス型ファブリックシステム(ネットワーク中継システム)10と
図1の構成例との実質的な相違は、各ポートスイッチPS[1]〜PS[n]内にそれぞれ分散モード設定部70[1]〜70[n]が設けられる点にある。
【0078】
分散モード設定部70[1]〜70[n]は、それぞれ、m個のファブリックスイッチ用ポートPf[1]〜Pf[m]の中の所定のポート(ここではPf[1])に、制御フレームCF[1]〜CF[n]を送信する。制御フレームCF[1]〜CF[n]のそれぞれには、分散識別子DIDのビット数を表す情報が含まれている。例えば、分散モード設定部70[1]は、ポートスイッチPS[1]が持つ分散識別子DIDのビット数を表す制御フレームCF[1]を送信する。
【0079】
図14は、
図13のネットワーク中継システムにおける主要部の動作例を示すフロー図である。
図14において、まず、各ポートスイッチPS[1]〜PS[n](分散モード設定部70[1]〜70[n])は、それぞれ、自身が持つ分散識別子DIDのビット数を表す制御フレームCF[1]〜CF[n]をm台のファブリックスイッチのいずれか(ここではFS[1])に送信する(ステップS201、第5処理)。
【0080】
次いで、m台のファブリックスイッチのいずれか(ここではFS[1])は、制御フレームCF[1]〜CF[n]を受信した際に、当該制御フレームCF[1]〜CF[n]のそれぞれをフラッディングによって(n−1)台のポートスイッチPSに転送する。例えば、ファブリックスイッチFS[1]は、制御フレームCF[1]を受信した際に、当該制御フレームCF[1]をポートスイッチPS[2]〜PS[n]に転送する(ステップS202)。
【0081】
続いて、ステップS203において、ポートスイッチPS[1]〜PS[n](分散モード設定部70[1]〜70[n])のそれぞれは、m台のファブリックスイッチのいずれか(ここではFS[1])を介して当該ファブリックスイッチFS[1]に接続された他のポートスイッチPSからの制御フレームを受信する(第6処理)。例えば、ポートスイッチPS[1]は、ファブリックスイッチFS[1]に接続された他のポートスイッチPS[2]〜PS[n]からの制御フレームCF[2]〜CF[n]を受信する。そして、ポートスイッチPS[1]〜PS[n](分散モード設定部70[1]〜70[n])のそれぞれは、受信した各制御フレームを介して、各ポートスイッチPS[1]〜PS[n]のそれぞれが持つ分散識別子DIDのビット数の中の最小のビット数を認識し、これに応じて分散モードを自動的に設定する。
【0082】
具体的には、例えば、ポートスイッチPS[1]が前述したタイプAのポートスイッチ(第2スイッチ装置)PSaであった場合、ポートスイッチPS[1]は、認識した最小のビット数がkビットの場合にはタイプA分散モード(第1分散モード)を設定し、kビット未満の場合には、下位互換分散モード(第2分散モード)を設定する(第7処理)。
図9に示した分散テーブル生成部52は、この分散モード設定部によって設定されたモードに応じて、
図12で述べたようなフローにより所望の分散テーブルを生成する。
【0083】
以上のように、本実施の形態2を用いることで、ネットワーク中継システム(すなわちボックス型ファブリックシステム)において、スイッチ装置(すなわちポートスイッチ)の仕様に応じた分散規則を自動的に設定することが可能になり、ネットワーク管理者の負担やミスを軽減すること等が可能になる。
【0084】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0085】
例えば、ここでは、ポートスイッチ(タイプA)PSaに2種類の分散モード(タイプA分散モードおよび下位互換分散モード)を設けたが、場合によっては、下位互換分散モードのみを設けることも可能である。ただし、下位互換分散モードの場合、
図7に示したように、各サブリンクSLに対して均等に負荷分散を行うという観点では、不均一が生じる場合がある。すなわち、
図7の場合は、
図3の場合と異なり、サブリンクSL[1],SL[2],SL[3]に対して、それぞれ、12個、12個、8個の分散識別子DIDが割り当てられる。したがって、この観点では、2種類の分散モードを設けることが有益となる。
【0086】
また、実施の形態1および2では、主に2種類のポートスイッチ(タイプAおよびタイプB)が存在する場合を例として説明を行ったが、3種類以上のポートスイッチが存在する場合も同様に適用可能である。例えば、3種類のポートスイッチが持つ分散識別子のビット数が、それぞれ、xビット、k(<x)ビット、j(<k)ビットであった場合、xビットとkビットを持つ各ポートスイッチは、
図6(a)、
図6(b)および
図12のように、最小のビット数(jビット)を仮定して分散テーブルの元となる第1の対応関係を定めればよい。
【0087】
また、この状態で、例えば、jビットを持つポートスイッチが排除された場合、同様にして、xビットを持つポートスイッチは、最小のビット数(kビット)を仮定して分散テーブルの元となる第1の対応関係を定めればよい。すなわち、xビットを持つポートスイッチは、第1の対応関係を定める際のビット数がxビットに近いほど、各サブリンクに対して均一に負荷分散を行うことが可能になる。なお、最小のビット数は、例えば、実施の形態2の方式によって認識できる。