【文献】
加藤 慶信,サーバー負荷分散装置 分散手法や対応プロトコルに差 ニーズに合った機能に着目せよ,日経コミュニケーション,2000年 3月20日,第314号,p.114〜123
(58)【調査した分野】(Int.Cl.,DB名)
m(mは2以上の整数)台の他のスイッチ装置との間でそれぞれm本のリンクで接続され、前記m本のリンクに対してリンクアグリゲーショングループを設定するスイッチ装置であって、
所定のポートで受信したOSI参照モデルのレイヤ4のポート番号を含んだフレームに対して、前記ポート番号を用いてハッシュ演算を行い、前記リンクアグリゲーショングループが設定されたm本のリンクの中から、前記ハッシュ演算結果に基づいて1本のリンクを定めるLAG分散制御部を備え、前記LAG分散制御部で定められた1本のリンクに前記フレームを中継し、
前記LAG分散制御部は、前記ポート番号に加えて、さらに、前記フレームに含まれる送信元IPアドレスおよび宛先IPアドレスからなる第1の組合せか、または送信元MACアドレスおよび宛先MACアドレスからなる第2の組合せを用いてハッシュ演算を行い、
前記LAG分散制御部は、前記ポート番号に加えて、さらに、前記第1の組合せか、または前記第2の組合せを用いてハッシュ演算を行う第1モードと、前記ポート番号を用いずに、前記第1および第2の組合せの中の前記第1モードと同じ組合せを用いてハッシュ演算を行う第2モードと、を備え、前記第1モードか前記第2モードを選択可能となっている、スイッチ装置。
【発明を実施するための形態】
【0014】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【0015】
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0016】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0017】
(実施の形態1)
《仮想化されたネットワークシステムの概要》
図1は、本発明の実施の形態1によるネットワーク中継システムにおいて、その適用例となる仮想化されたネットワークシステムの概略構成例を示すブロック図である。
図1に示すネットワークシステムは、特に限定はされないが、例えばデータセンター等のネットワークシステムを表している。当該ネットワークシステムは、L3ネットワーク10と、複数のL3スイッチ装置(L3SW)11a,11bと、ボックス型ファブリックシステム12と、L2スイッチ装置(L2SW)14と、情報処理部13a〜13dを含む複数の情報処理部を備える。本実施の形態1によるネットワーク中継システムは、主にボックス型ファブリックシステム12に適用される。
【0018】
情報処理部13aは、トンネル終端部EP1と、トンネル終端部EP1によって管理される複数(i台)の仮想端末VM[1,1]〜VM[1,i]を備える。トンネル終端部EP1は、例えば、前述したVXLANの場合にはVTEPに該当する。情報処理部13aは、例えば、ラック型のサーバ装置等によって構成され、トンネル終端部EP1は、ソフトウェアベースで実現することも、ToR(Top of Rack)の物理スイッチ等で実現することも可能である。同様に、情報処理部13cは、トンネル終端部EP2と、複数(i台)の仮想端末VM[2,1]〜VM[2,i]を備え、情報処理部13dは、トンネル終端部EP3と、複数(i台)の仮想端末VM[3,1]〜VM[3,i]を備える。
【0019】
以降、仮想端末VM[1,1]〜VM[1,i],VM[2,1]〜VM[2,i],VM[3,1]〜VM[3,i]のそれぞれを代表して仮想端末VMと称し、トンネル終端部EP1〜EP3のそれぞれを代表してトンネル終端部EPと称する。また、情報処理部13a〜13dのそれぞれを代表して情報処理部13と称する。
【0020】
ボックス型ファブリックシステム12は、この例では、情報処理部13a〜13cを含む複数の情報処理部13と、L3スイッチ装置(L3SW)11aとが接続され、詳細は後述するが、これらの間でのフレームの中継を担う。L2スイッチ装置(L2SW)14は、この例では、情報処理部13dを含む複数の情報処理部13と、L3スイッチ装置(L3SW)11bとが接続され、これらの間でのフレームの中継を担う。L2スイッチ装置(L2SW)14には、ボックス型ファブリックシステム12と同様の構成を適用することも可能である。L3ネットワーク10は、L3スイッチ装置(L3SW)11a,11bが接続され、これらの間のフレーム(パケット)の中継を行う。L3ネットワーク10は、図示は省略するが、内部にその他のL3スイッチ装置を適宜含むことができる。
【0021】
このようなネットワークシステムにおいて、例えば、情報処理部13aと、情報処理部13dとの間で、L3ネットワーク10を跨いで論理的(仮想的)なL2ネットワークを構築したいような場合がある。このような場合に、VXLAN等に代表されるトンネリングプロトコルを用いることが有益となる。VXLANでは、VXLAN識別子によって論理的(仮想的)なL2ネットワークが区別される。VXLANでは、予め、このVXLAN識別子毎に、IGMP(Internet Group Management Protocol)やPIM(Protocol Independent Multicast)等のマルチキャストプロトコルを利用してマルチキャストグループを構築することで、L3ネットワーク10を跨いで論理的(仮想的)なL2ネットワークが構築される。
【0022】
トンネル終端部EP(すなわちVTEP)は、自身の配下の仮想端末VMから送信されたL2フレーム(以降、フレームと略す)を受信した場合に、その宛先となる仮想端末VMが属するトンネル終端部EPを認識しているか否かに応じて処理を使い分ける。宛先のトンネル終端部EPを認識している場合、トンネル終端部EPは、当該フレームをUDPでカプセル化したのち、宛先のトンネル終端部EPに向けてユニキャストで送信する。一方、宛先のトンネル終端部EPを認識していない場合、トンネル終端部EPは、当該フレームをマルチキャストアドレスでカプセル化したのち、送信元の仮想端末VMが属するマルチキャストグループに向けてマルチキャストで送信する。
【0023】
このようなネットワークシステムでは、多数の仮想端末VM間での通信が行われるため、効率的に負荷分散を行うことが重要となる。そこで、後述する本実施の形態1のネットワーク中継システムを用いることが有益となる。
【0024】
《ネットワーク中継システムの構成および前提動作》
図2は、
図1におけるボックス型ファブリックシステムの構成例およびその前提となる動作例を示すブロック図である。
図2に示すボックス型ファブリックシステム(ネットワーク中継システム)12aは、n(nは2以上の整数)台のポートスイッチ(第1スイッチ装置)PS[1]〜PS[n]と、m(mは2以上の整数)台のファブリックスイッチ(第2スイッチ装置)FS[1]〜FS[m]と、複数のリンク21とを備える。m台のファブリックスイッチFS[1]〜FS[m]は、n台のポートスイッチPS[1]〜PS[n]の間のフレームの中継を担う。複数のリンク21は、m台のファブリックスイッチとn台のポートスイッチとの間をそれぞれ接続する。
【0025】
n台のポートスイッチPS[1]〜PS[n]、およびm台のファブリックスイッチFS[1]〜FS[m]のそれぞれは、ボックス型スイッチ装置で構成される。n台のポートスイッチPS[1]〜PS[n]のそれぞれは、m個のファブリックスイッチ用ポートPf[1]〜Pf[m]と、k(kは1以上の整数)個のユーザ用ポートPu[1]〜Pu[k]とを備える。m台のファブリックスイッチFS[1]〜FS[m]のそれぞれは、n個のポートスイッチ用ポートPp[1]〜Pp[n]を備える。n台のポートスイッチPS[1]〜PS[n]のそれぞれは、m台のファブリックスイッチFS[1]〜FS[m]との間をそれぞれ接続するm本のリンク21に対してLAGを設定する。
【0026】
以降、ポートスイッチPS[1]〜PS[n]のそれぞれを代表してポートスイッチPSと称し、ファブリックスイッチFS[1]〜FS[m]のそれぞれを代表してファブリックスイッチFSと称する。また、ファブリックスイッチ用ポートPf[1]〜Pf[m]のそれぞれを代表してファブリックスイッチ用ポートPfと称し、ユーザ用ポートPu[1]〜Pu[k]のそれぞれを代表してユーザ用ポートPuと称し、ポートスイッチ用ポートPp[1]〜Pp[n]のそれぞれを代表してポートスイッチ用ポートPpと称する。
【0027】
例えば、ポートスイッチPS[1]を例とすると、m個のファブリックスイッチ用ポートPf[1]〜Pf[m]と、m台のファブリックスイッチFS[1]〜FS[m]のポートスイッチ用ポートPp[1]との間は、それぞれ、m本のリンク21で接続される。ポートスイッチPS[1]は、当該m本のリンク21に対してLAG20aを設定する。なお、リンク21とは、通信回線と、その両端のポート(すなわちファブリックスイッチ用ポートPfおよびポートスイッチ用ポートPp)とを含めた集合体を意味する。同様に、ポートスイッチPS[2]は、m台のファブリックスイッチFS[1]〜FS[m]との間をそれぞれ接続するm本のリンク21に対してLAG20bを設定し、ポートスイッチPS[n]は、m台のファブリックスイッチFS[1]〜FS[m]との間をそれぞれ接続するm本のリンク21に対してLAG20cを設定する。
【0028】
このようなボックス型ファブリックシステム12aを用いると、LAGに伴い、LAG内での負荷分散と冗長性を実現できる。例えば通信帯域を拡大したい場合には、ファブリックスイッチFSを増設すればよく、通信帯域の拡大を容易にかつ低コストで実現可能になる。また、ポートスイッチPSの増設によって、ポート数(すなわちユーザ用ポートPu)の拡張も容易にかつ低コストで実現可能になる。その結果、当該システムを用いると、シャーシ型スイッチ装置からなるシステムを用いる場合と比較して、ユーザの要求に応じた柔軟なシステムを低コストで構築できる。なお、
図1に示したL3スイッチ装置(L3SW)11aは、
図2のポートスイッチPS[1]〜PS[n]のいずれかのユーザ用ポートPuに接続されるか、あるいは、ポートスイッチPS[1]〜PS[n]のいずれかをL3スイッチ装置とすることも可能である。
【0029】
ここで、
図2の例では、ポートスイッチPS[1]のユーザ用ポートPu[1]とポートスイッチPS[n]のユーザ用ポートPu[k]とに、それぞれ、
図1で述べた情報処理部13aと情報処理部13cとが接続されている。また、情報処理部13aにおいて、トンネル終端部EP1には、IP(Internet Protocol)アドレス「IP1」と、MAC(Media Access Control)アドレス「MA1」とが設定され、仮想端末VM[1,1]には仮想MACアドレス「MA11」が設定されている。情報処理部13cにおいて、トンネル終端部EP2には、IPアドレス「IP2」と、MACアドレス「MA2」とが設定され、仮想端末VM[2,i]には仮想MACアドレス「MA2i」が設定されている。
【0030】
このような前提のもとで、仮想端末VM[1,1]から送信された内部L2フレーム(以降、内部フレームと略す)FL1を仮想端末VM[2,i]に中継する場合の動作例について説明する。トンネル終端部EPは、VXLANのVTEPである場合を例とし、また、仮想端末VM[1,1]と仮想端末VM[2,i]は、予め同一のVXLAN識別子が割り当てられ、同一の論理的(仮想的)なL2ネットワークに属するように設定されているものとする。
【0031】
まず、トンネル終端部EP1は、仮想端末VM[1,1]から送信された内部フレームFL1に対して、その宛先の仮想MACアドレスがどのトンネル終端部EPに属しているかを判別する。ここでは、宛先となる仮想端末VM[2,i]の仮想MACアドレス「MA2i」が、IPアドレス「IP2」とMACアドレス「MA2」を持つトンネル終端部EP2に属していることを過去の通信によって予め学習しているものとする。この場合、トンネル終端部EP1は、内部フレームFL1をUDPでカプセル化し、宛先IPアドレス「IP2」および宛先MACアドレス「MA2」を含むカプセル化されたフレームFL2をポートスイッチPS[1]に向けて送信する。
【0032】
ボックス型ファブリックシステム12aは、ポートスイッチPS[1]のユーザ用ポートPu[1]で受信したカプセル化されたフレームFL2を所定のファブリックスイッチFSを介してポートスイッチPS[n]に中継する。ポートスイッチPS[n]は、カプセル化されたフレームFL2をユーザ用ポートPu[k]に中継する。トンネル終端部EP2は、ポートスイッチPS[n]から送信されたカプセル化されたフレームFL2を受信し、当該カプセルを取り外した内部フレームFL1を仮想端末VM[2,i]に向けて送信する。また、図示は省略するが、トンネル終端部EP2は、送信元となる仮想端末VM[1,1]の仮想MACアドレス「MA11」と、それが属するトンネル終端部EP1のIPアドレス「IP1」およびMACアドレス「MA1」との関係を学習する。
【0033】
図3(a)は、
図2におけるカプセル化されたフレームの構造例を示す図であり、
図3(b)は、
図3(a)の具体例を示す図である。ここでは、VXLANを用いる場合を例とする。トンネル終端部EP(ここではVTEP)は、
図3(a)に示すように、自身が管理する仮想端末VMからの内部フレーム(内部L2フレーム)FL1に対して外部ヘッダ30を付加することで、カプセル化されたフレームFL2を生成する。内部フレームFL1は、送信元MACアドレスおよび宛先MACアドレスを含む。
【0034】
外部ヘッダ30は、VXLANヘッダ31と、UDPヘッダ32と、IPヘッダ33と、イーサネット(登録商標)ヘッダ34とを含む。VXLANヘッダ31は、VNI(VXLAN Network Identifier)と呼ばれる24ビットのVXLAN識別子を含む8バイトの情報である。UDPヘッダ32は、16ビットの宛先のポート番号と16ビットの送信元のポート番号を含む8バイトの情報である。当該ポート番号は、OSI(Open Systems Interconnection)参照モデルのレイヤ4(以降、L4と略す)のポート番号である。IPヘッダ33は、32ビットの宛先IPアドレスと32ビットの送信元IPアドレスを含む20バイトの情報であり、イーサネットヘッダ34は、送信元MACアドレスおよび宛先MACアドレスを含む14〜18バイトの情報である。
【0035】
図3(b)には、
図2で述べた仮想端末VM[1,1]から仮想端末VM[2,i]に向けた通信を例として、
図3(a)の具体例が示されている。
図3(b)に示すように、内部フレーム(内部L2フレーム)FL1の送信元MACアドレスは、仮想端末VM[1,1]の仮想MACアドレス「MA11」となり、内部フレームFL1の宛先MACアドレスは、仮想端末VM[2,i]の仮想MACアドレス「MA2i」となる。VXLANヘッダ31のVXLAN識別子には、仮想端末VM[1,1]に予め割り当てられる所定の識別子「IDxx」が設定される。
【0036】
UDPヘッダ32の宛先のポート番号には所定のポート番号「DPyy」が設定され、
UDPヘッダ32の送信元のポート番号には所定のポート番号「SPzz」が設定される。ここで、トンネル終端部EP1は、特に限定はされないが、「DPyy」としてwell−knownなポート番号を設定し、「SPzz」として内部フレームFL1のハッシュ演算で算出した値を設定する。IPヘッダ33の宛先IPアドレスにはトンネル終端部EP2のIPアドレス「IP2」が設定され、IPヘッダ33の送信元IPアドレスにはトンネル終端部EP1のIPアドレス「IP1」が設定される。イーサネットヘッダ34の送信元MACアドレスにはトンネル終端部EP1のMACアドレス「MA1」が設定され、イーサネットヘッダ34の宛先MACアドレスにはトンネル終端部EP2のMACアドレス「MA2」が設定される。
【0037】
《ネットワーク中継システム(比較例)の動作》
ここで、比較例として、
図2のような仮想化環境が用いられず、
図2の情報処理部13a,13cの部分が一般的なL2スイッチ装置およびそれに接続された複数の端末等で構成されるような場合を想定する。この場合、ボックス型ファブリックシステム12a内の例えばポートスイッチPS[1]は、ユーザ用ポートPu[1]でフレームを受信した際に、当該フレーム内のIPアドレスまたはMACアドレスに基づいてハッシュ演算を行い、LAG20aの中から当該ハッシュ演算結果に基づいて定められたリンク21に中継を行えばよい。すなわち、当該フレーム内のIPアドレスまたはMACアドレスは、端末のIPアドレスまたはMACアドレスとなるため、送信元の端末と宛先の端末との組合せに応じてLAG20a内で効率的な負荷分散が実現可能になる。
【0038】
しかしながら、
図2のような仮想化環境が用いられる場合には、
図3(b)に示したように、ポートスイッチPS[1]のユーザ用ポートPu[1]で受信されたカプセル化されたフレームFL2は、送信元および宛先のIPアドレス、または送信元および宛先のMACアドレスとして、トンネル終端部EPのアドレスが設定されることになる。その結果、例えば、仮想端末VM[1,1]〜VM[1,i]のいずれかから仮想端末VM[2,1]〜VM[2,i]のいずれかに向けて通信を行う場合には、ポートスイッチPS[1]は、LAG20aの中から常に同一のリンク21を選択することになる。
【0039】
《ネットワーク中継システム(本実施の形態1)の動作》
そこで、本実施の形態1によるネットワーク中継システム(ボックス型ファブリックシステム12a)は、次ぎのような動作を行う。
図4は、
図2のボックス型ファブリックシステムにおいて、その動作例を示す説明図である。
図4は、
図2に対して、ボックス型ファブリックシステム12a内のポートスイッチPS[2]の図示を便宜上省略したものとなっている。ここでは、情報処理部13aに含まれる仮想端末VM[1,1]〜VM[1,i]のいずれかから情報処理部13cに含まれる仮想端末VM[2,1]〜VM[2,i]のいずれかに向けて通信を行う場合を例とする。
【0040】
n台のポートスイッチPSのいずれか(この例ではポートスイッチPS[1])は、所定のポート(ここではユーザ用ポートPu[1])で受信したカプセル化されたフレームに対して、前述したL4(ここではUDP)のポート番号を用いてハッシュ演算を行う。そして、n台のポートスイッチPSのいずれか(PS[1])は、LAG20aが設定されたm本のリンク21の中から、当該ハッシュ演算結果に基づいて1本のリンクを定め、当該定められた1本のリンクにカプセル化されたフレームを中継する。このような処理は、主に、後述する
図5のLAG分散制御部41で行われる。
【0041】
その結果、ポートスイッチPS[1]は、仮想端末VM[1,1]を送信元としてトンネル終端部EP1でカプセル化されたフレームFL2aを、例えば、ファブリックスイッチFS[1]を介してポートスイッチPS[n]に中継する。また、ポートスイッチPS[1]は、仮想端末VM[1,i]を送信元としてトンネル終端部EP1でカプセル化されたフレームFL2bを、仮想端末VM[1,1]の場合とは異なり、例えばファブリックスイッチFS[2]を介してポートスイッチPS[n]に中継する。
【0042】
このように、ポートスイッチPS(PS[1])が、OSI参照モデルのL4のポート番号に基づいてハッシュ演算を行うことで、トンネル終端部EP(EP1)によるカプセル化が行われた場合であっても、LAG(LAG20a)内で効率的な負荷分散を行うことができる。その結果、ネットワーク中継システムにおける通信帯域の向上が実現可能になる。特に限定はされないが、より具体的には、例えば、
図3(b)に示したUDPヘッダ32内の送信元のポート番号「SPzz」を内部フレームFL1内の送信元MACアドレスや宛先MACアドレス等のハッシュ演算で定めれば、送信元の仮想端末VMと宛先の仮想端末VMとの組合せに応じて「SPzz」の値は変化する。この場合、ポートスイッチPS(PS[1])は、当該「SPzz」を用いてハッシュ演算を行えばよい。
【0043】
なお、カプセル化されたフレーム内のL4のポート番号の決定方法は、その他にも様々な方法が考えられ、使用するトンネリングプロトコルに応じても変わり得る。少なくとも、L4の送信元ポート番号とL4の宛先ポート番号の一方または両方が、送信元の仮想端末VM、または宛先の仮想端末VM、あるいはその組合せに応じて変化するような決定方法であれば、決定方法は特に限定されない。また、LAGのハッシュ演算に用いるポート番号は、UDP(L4)のポート番号に限らず、L4のTCP(Transmission Control Protocol)のポート番号を用いることも可能である。具体的には、例えば、STT等のトンネリングプロトコルでは、TCPでカプセル化を行う方式を用いており、
図1のネットワークシステムにSTTを適用する場合には、LAGのハッシュ演算にTCPのポート番号を用いればよい。
【0044】
また、
図4では、n台のポートスイッチPSのいずれか(ポートスイッチPS[1])がL4のポート番号を用いてハッシュ演算を行う例を示したが、実際には、n台のポートスイッチPS[1]〜PS[n]の全てが同じ方法でハッシュ演算を行うように構成することが望ましい。すなわち、後述する
図5のLAG分散制御部41は、n台のポートスイッチPS[1]〜PS[n]の全てに設けられることが望ましい。これにより、
図4のn台のポートスイッチPS[1]〜PS[n]の全てにおいて、ポートスイッチPS[1]の場合と同様の負荷分散が実現できるため、より通信帯域の向上が図れる。さらに、この負荷分散に伴って、m台のファブリックスイッチFS[1]〜FS[2]の全てがトンネル終端部EPのMACアドレスを学習できるため、各ファブリックスイッチFSにおいて、アドレステーブルのエージングに伴うフラッディングの発生等が生じ難くなる。
【0045】
このアドレステーブルのエージングに関し、より望ましくは、n台のポートスイッチPS[1]〜PS[n]の全てが同じ方法でハッシュ演算を行い、かつ同じ規則でLAGの中から1本のリンク21を定めるように構成するとよい。これにより、2個の仮想端末VM間の双方向の通信が同一のファブリックスイッチFSを経由するように構成し易くなる。この場合、当該ファブリックスイッチFSは、当該2個の仮想端末にそれぞれ対応する2個のトンネル終端部EPのMACアドレスを比較的高い頻度で学習できるため、宛先のMACアドレスがエージングされることによるフラッディングの発生がより生じ難くなる。
【0046】
具体的には、例えば、
図3(b)に示したUDPヘッダ32内の送信元のポート番号「SPzz」を内部フレームFL1内の送信元MACアドレスと宛先MACアドレスのハッシュ演算で定めた場合、送信元および宛先となる2個の仮想端末VMの組合せに対して同一のポート番号「SPzz」が算出される。この場合、n台のポートスイッチPS[1]〜PS[n]が全て同じ規則でLAG内での負荷分散を行えば、当該2個の仮想端末VM間の双方向の通信が同一のファブリックスイッチFSを経由することになる。
【0047】
また、
図4では、
図1の情報処理部13aと情報処理部13cとの間の通信を例として説明を行ったが、例えば、情報処理部13aと情報処理部13bとの間の通信も同様であり、さらに、情報処理部13aと情報処理部13dとの間のL3ネットワーク10を跨いだ通信も同様である。
【0048】
情報処理部13aと情報処理部13dとの間の通信では、トンネル終端部EP1とトンネル終端部EP3との間でカプセル化されたフレームが中継される。この際に、当該カプセル化されたフレームは、
図1のL3スイッチ(L3SW)11aとL3スイッチ(L3SW)11bとの間では
図3(a)のIPヘッダ33に基づいて中継される。L3スイッチ(L3SW)11aは、
図4のポートスイッチPS[2]〜PS[n−1](図示は省略)のいずれかに接続されるか、あるいは、ポートスイッチPS[2]〜PS[n−1](図示は省略)のいずれかに実装される。ポートスイッチPS[1]と、このL3スイッチ(L3SW)11aに対応するポートスイッチPSとの間で通信を行う際に、
図4の場合と同様にLAG内での負荷分散が行われる。
【0049】
《ポートスイッチ(第1スイッチ装置)の概略》
図5は、
図2のネットワーク中継システムにおいて、そのポートスイッチの主要部の概略構成例を示すブロック図である。
図5に示すポートスイッチ(第1スイッチ装置)PSは、例えば、フレーム処理部40と、テーブルユニット42と、複数のポート(ユーザ用ポートPu[1]〜Pu[k]およびファブリックスイッチ用ポートPf[1]〜Pf[m])などを備えている。ユーザ用ポートPu[1]〜Pu[k]には、通信回線を介して
図1の情報処理部13が適宜接続される。ファブリックスイッチ用ポートPf[1]〜Pf[m]には、それぞれ、通信回線を介してファブリックスイッチFS[1]〜FS[m]が接続される。言い換えれば、ポートスイッチPSとファブリックスイッチFS[1]〜FS[m]との間がm本のリンク21で接続される。
【0050】
テーブルユニット42には、アドレステーブル43と、LAGテーブル44が含まれる。アドレステーブル43は、各ポートと当該各ポートの先に存在するMACアドレスとの関係を示すテーブルである。LAGテーブル44は、どのリンク21(実際には当該リンク21に対応するポート)にLAGが設定されているかを示すテーブルである。LAGテーブル44は、予め管理者等によって固定的に設定することも、特許文献1のような方式を用いて自動的に設定することも可能である。この例では、ファブリックスイッチ用ポートPf[1]〜Pf[m]を含むm本のリンク21に対してLAG20が設定されている。
【0051】
フレーム処理部40は、LAG分散制御部41を備え、各ポート間でのフレームの中継を、アドレステーブル43およびLAGテーブル44に基づいて制御する。この際に、LAG分散制御部41は、LAGテーブル44に基づいてLAG20が設定されたポートを認識し、
図4で述べたようなハッシュ演算を用いてLAG内でのフレームの分散を制御する。すなわち、LAG分散制御部41は、所定のポート(ユーザ用ポートPu)で受信したL4のポート番号を含んだフレームに対して、当該ポート番号を用いてハッシュ演算を行い、LAG20が設定されたm本のリンク21の中から、ハッシュ演算結果に基づいて1本のリンク21を定める。
【0052】
図6(a)は、
図5におけるアドレステーブルの構造例を示す概略図であり、
図6(b)は、
図5におけるLAGテーブルの構造例を示す概略図である。
図6(b)に示すLAGテーブル44は、LAG識別子(LAG ID)としてLAG20が設定されたリンク21に対応するポート(以降、LAGポートと呼ぶ)がファブリックスイッチ用ポートPf[1]〜Pf[m]であることを示している。また、この例では、LAGテーブル44は、各ファブリックスイッチ用ポートPf[1]〜Pf[m]に対応する各リンク21の状態(すなわち障害の有無)も示している。例えば、
図5のフレーム処理部40は、定期的な制御フレームの送受信等によってファブリックスイッチ用ポートPf[1]〜Pf[m]の障害を検出した場合には、その情報をLAGテーブル44に記録する。LAG分散制御部41は、当該LAGテーブル44に基づいて、正常なリンク21の中から1本のリンク21を定める。
【0053】
図6(a)に示すアドレステーブル43は、ポートNo/LAG IDと、当該ポートNoに対応するポートの先および当該LAG IDに対応するLAGポートの先に存在するMACアドレスとの関係を示している。例えば、前述した
図2のポートスイッチPS[1]を例として、アドレステーブル43は、ユーザ用ポートPu[1]の先にMACアドレス「MA1」が存在し、LAG20aに対応するLAGポートの先にMACアドレス「MA2」が存在することを示している。
【0054】
図7は、
図5におけるフレーム処理部の主要な動作例を示すフロー図である。
図7に示すように、フレーム処理部40は、フレーム中継処理に際して、まず、ポートでフレームを受信する(ステップS101)。次いで、フレーム処理部40は、アドレステーブル43の処理を行う(ステップS102)。具体的には、フレーム処理部40は、フレームを受信したポートと、当該フレームに含まれる送信元MACアドレスとに基づいてアドレステーブル43を更新し、また、アドレステーブル43に基づいて、当該フレームに含まれる宛先MACアドレスに対応する宛先のポートを検索する。
【0055】
ここで、フレーム処理部40は、宛先のポートがユーザ用ポートPuであった場合(ステップS103)、当該宛先のユーザ用ポートPuにフレームを中継する(ステップS104)。一方、フレーム処理部40は、宛先のポートがLAGであった場合(ステップS105)、まず、LAGテーブル44に基づいてLAGポート(ここでは複数のファブリックスイッチ用ポートPfとなる)を認識する(ステップS106)。次いで、LAG分散制御部41は、前述したようにUDP/TCPのポート番号を用いたハッシュ演算を行うことで分散識別子を算出し、当該分散識別子に対応するリンク21(ファブリックスイッチ用ポートPf)を定める(ステップS107)。フレーム処理部40は、当該分散識別子に対応するファブリックスイッチ用ポートPfにフレームを中継する(ステップS108)。
【0056】
一方、宛先のポートがユーザ用ポートPuでもLAGでも無い場合(ステップS103およびS105)、言い換えれば、宛先MACアドレスがアドレステーブル43に存在しない場合、フレーム処理部40は、フラッディングを行う(ステップS109)。
【0057】
《LAG分散制御部の概略構成》
図8は、
図5におけるLAG分散制御部の主要部の概略構成例を示す図である。
図8に示すLAG分散制御部41は、例えば、複数のレジスタ50a〜50fと、排他的論理和演算部51と、剰余演算部52とを備えている。レジスタ50aとレジスタ50bには、それぞれ、受信したフレームに含まれる送信元IPアドレスの上位16ビットと下位16ビットが格納される。レジスタ50cとレジスタ50dには、それぞれ、受信したフレームに含まれる宛先IPアドレスの上位16ビットと下位16ビットが格納される。レジスタ50eには、UDP/TCPの送信元のポート番号(16ビット)が格納され、レジスタ50fには、UDP/TCPの宛先のポート番号(16ビット)が格納される。
【0058】
排他的論理和演算部51は、この複数のレジスタ50a〜50fの値を受けて、各ビット毎の排他的論理和(EXOR)を演算する。剰余演算部52は、この排他的論理和演算部51の演算結果(16ビット)を所定の定数「M」で割り、その余りを求める。この余りの値が、
図7のステップS106で述べた分散識別子となる。LAG分散制御部41は、この分散識別子に応じて、LAG内のm本のリンク21の中から1本のリンク21を定める。
【0059】
さらに、
図8のLAG分散制御部41では、排他的論理和演算部51の入力を、レジスタ50a〜50fとするか、あるいはレジスタ50a〜50dとするかを有効・無効切り替え命令53によって選択可能な構成となっている。すなわち、UDP/TCPのポート番号に加えて、送信元IPアドレスおよび宛先IPアドレスを用いてハッシュ演算を行う第1モードか、当該ポート番号を用いずに、送信元IPアドレスおよび宛先IPアドレスを用いてハッシュ演算を行う第2モードかを選択可能な構成となっている。有効・無効切り替え命令53は、例えば、インバンド管理あるいは
図5の図示しない管理用ポートを用いて外部より発行される。
【0060】
このように、外部から選択可能な第1モードおよび第2モードを設けることで、
図1のボックス型ファブリックシステム12を様々な通信環境に容易に適用することが可能になる。例えば、
図1のボックス型ファブリックシステム12を、
図1に示したような仮想化環境に適用しない場合には、送信元IPアドレスおよび宛先IPアドレス(すなわち第2モード)を用いてハッシュ演算を行う方がLAG内での分散を効率的に行える場合がある。
【0061】
この際には、送信元IPアドレスおよび宛先IPアドレスを用いることで、
図4での説明と同様に、2個の端末間の通信で同じファブリックスイッチFSを経由させることが可能となるため、フラッディングによる通信帯域の低下を抑制できる。この観点では、送信元IPアドレスおよび宛先IPアドレスからなる組合せ(第1の組合せ)に限らず、送信元MACアドレスおよび宛先MACアドレスからなる組合せ(第2の組合せ)であってもよい。また、
図8のLAG分散制御部41は、ソフトウェアでもハードウェアでも実現可能であるが、高速化の観点からは、例えばFPGA(Field Programmable Gate Array)等のハードウェアで実現する方が望ましい。
【0062】
以上、本実施の形態1のネットワーク中継システムおよびスイッチ装置を用いることで、代表的には通信帯域の向上が実現可能になる。
【0063】
(実施の形態2)
《ネットワーク中継システムの構成および動作(変形例)》
図9は、本発明の実施の形態2によるネットワーク中継システムにおいて、その構成例を示すブロック図である。
図9に示すボックス型ファブリックシステム(ネットワーク中継システム)12bは、
図2のボックス型ファブリックシステム12aと比較して、
図2の各ポートスイッチPSと各ファブリックスイッチFSとの間の各リンク21が、それぞれ、複数(ここでは2本)のサブリンク61a,61bで構成される点が異なっている。これ以外の構成に関しては、
図2の場合と同様であるため、詳細な説明は省略する。
【0064】
図9では、
図2の各ポートスイッチPSが持つm個のファブリックスイッチ用ポートPf[1]〜Pf[m]のそれぞれは、2個のファブリックスイッチ用ポートで構成されている。例えば、ファブリックスイッチ用ポートPf[1]は、2個のファブリックスイッチ用ポートPf[1,1],Pf[1,2]で構成され、ファブリックスイッチ用ポートPf[m]は、2個のファブリックスイッチ用ポートPf[m,1],Pf[m,2]で構成される。同様に、
図2の各ファブリックスイッチFSが持つn個のポートスイッチ用ポートPp[1]〜Pp[n]のそれぞれも、2個のポートスイッチ用ポートで構成されている。例えば、ポートスイッチ用ポートPp[1]は、2個のポートスイッチ用ポートPp[1,1],Pp[1,2]で構成され、ポートスイッチ用ポートPp[n]は、2個のポートスイッチ用ポートPp[n,1],Pp[n,2]で構成される。
【0065】
これに応じて、ポートスイッチPS[1]は、m個のファブリックスイッチFS[1]〜FS[m]との間で、それぞれ、2本のサブリンク61a,61bを組として接続され、このサブリンク61a,61bの各組にLAGを設定する。例えば、ポートスイッチPS[1]は、ファブリックスイッチFS[1]に対するサブリンク61a,61bの組にLAG60aを設定し、ファブリックスイッチFS[2]に対するサブリンク61a,61bの組にLAG60bを設定し、ファブリックスイッチFS[m]に対するサブリンク61a,61bの組にLAG60cを設定する。
【0066】
ポートスイッチPS[2]〜PS[n]に関しても同様である。例えば、ポートスイッチPS[2]は、ファブリックスイッチFS[1]に対するサブリンク61a,61bの組にLAG60dを設定し、ファブリックスイッチFS[2]に対するサブリンク61a,61bの組にLAG60eを設定し、ファブリックスイッチFS[m]に対するサブリンク61a,61bの組にLAG60fを設定する。ポートスイッチPS[n]は、ファブリックスイッチFS[1]に対するサブリンク61a,61bの組にLAG60gを設定し、ファブリックスイッチFS[2]に対するサブリンク61a,61bの組にLAG60hを設定し、ファブリックスイッチFS[m]に対するサブリンク61a,61bの組にLAG60iを設定する。また、ここでは、ポートスイッチPS側に限らず、ファブリックスイッチFS[1]〜FS[m]側も、前述したLAG60a〜LAG60iにそれぞれ対応するサブリンク61a,61bの組にLAG60a〜LAG60iを設定する。
【0067】
このような構成例を用いると、例えば、ポートスイッチPS[1]は、m個のファブリックスイッチFS[1]〜FS[m]との間のm組のサブリンク61a,61bに対してLAG20aを設定し、さらに、そのm組のサブリンク61a,61bの各組に対してLAG(60a〜60c等)を設定した状態で動作する。その結果、ポートスイッチPS[1]は、受信したフレームを、各ファブリックスイッチFS[1]〜FS[m]に向けて適宜分散して中継できることに加えて、個々のファブリックスイッチFSに向けても適宜分散して中継できる。その結果、更なる通信帯域の向上や、更なる耐障害性の向上等が図れる。
【0068】
例えば、
図2のボックス型ファブリックシステム12aを用いた場合、ポートスイッチPS[1]とファブリックスイッチFS[1]との間のリンク21に障害が生じた場合、他のポートスイッチPS[2]〜PS[n]は、当該障害を検知できない場合がある。この場合、ポートスイッチPS[2]〜PS[n]からポートスイッチPS[1]に向けたフレームがファブリックスイッチFS[1]を経由するのを防止するため、ファブリックスイッチFS[1]自体の動作を無効に設定することが必要となる場合がある。このような事態は、通信帯域の低下と耐障害性の低下を招き得る。一方、
図9のボックス型ファブリックシステム12bを用いた場合、サブリンク61a,61bの一方が正常であれば、このような必要性は生じない。
【0069】
なお、
図9のボックス型ファブリックシステム12bを用いた場合、例えば、ポートスイッチPS[1]内の
図5に示したLAG分散制御部41は、
図7のステップS107およびステップS108における分散識別子に対して、
図9のLAG20a内に含まれる(m×2)本のサブリンク(61a,61b)を適宜割り当てればよい。また、ここでは、各リンクが2本のサブリンクで構成される場合を例としたが、勿論、3本以上のサブリンクで構成されてもよい。
【0070】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。