近年、HPC(High Performance Computer)の分野において、多数のノード、例えばサーバなどを高速なネットワークで接続するクラスタシステムが広く用いられている。このようなクラスタシステムでは、並列計算処理が行われることが多い。そして、そのような並列計算処理における通信では、信号伝送における広い帯域の確保と低い遅延が求められる。これを実現するため、特に大規模なクラスタシステムにおいては、InfiniBandによるFat Tree(ファットツリー)接続が広く用いられている。
Fat Treeは、例えば図13に示す構成のような、多重化されたツリー型の網構成を有するトポロジーである。図13は、3段のFat Treeを有するネットワーク装置の構成図である。Fat Treeでは、最上段を除く各スイッチにおける接続リンク本数は、上側と下側で等しいため、上下いずれの方向に転送する場合にも十分に広い帯域を確保することができる。
ここで、図13に示すスイッチB1〜B9を1段目のスイッチと言う。また、スイッチM1〜M9を2段目のスイッチと言う。また、スイッチT1〜T9を3段目のスイッチと言う。図13に表すFat Treeでは、各1段目のスイッチは3つの2段目のスイッチに接続されている。さらに、スイッチB1〜B3は、それぞれ同じ2段目のスイッチに接続されている。また、スイッチB4〜B6は、それぞれ同じ2段目のスイッチに接続されている。さらに、スイッチB7〜B9は、それぞれ同じ2段目のスイッチに接続されている。例えば、スイッチB1〜B3は、それぞれスイッチM1、M4及びM7に接続されている。
さらに、スイッチB1〜B9は、それぞれ3つのノードに接続されている。図13では、スイッチB1〜B9に接続している丸がノードを表している。さらに、各ノードの下に記載した数字は、各ノードのノード番号を表している。このノード番号は、ノード間で信号を送受信する場合のアドレスとなる。例えば、スイッチB1には、ノード番号1〜3を有するノードが接続されている。また、スイッチB2には、ノード番号4〜6を有するノードが接続されている。以下では、ノード番号Pを有するノードをノードPと言う。
ノード1〜27は、他のノードへ向けた信号を、自己が接続する1段目のスイッチに対して送信する。ここで、ノード1〜27は、他のノードへ送信する信号の宛先としてノード番号を指定する。
スイッチB1〜B9は、それぞれ自己に接続されたノードから他のノードへ宛てた信号を受信する。そして、スイッチB1〜B9は、スイッチM1〜M3に対しては1mod3となるノード番号に向けた信号を送信する。また、スイッチB1〜B9は、スイッチM4〜M6に対しては2mod3となるノード番号に向けた信号を送信する。また、スイッチB1〜B9は、スイッチM7〜M9に対しては3(0)mod3となるノード番号に向けた信号を送信する。例えば、スイッチB1は、ノード1〜3から受信した信号のうち1mod3となる信号を、矢印901で表すようにスイッチM1へ送信する。また、スイッチB1は、ノード1〜3から受信した信号のうち2mod3となる信号を、矢印902で表すようにスイッチM4へ送信する。スイッチB1は、ノード1〜3から受信した信号のうち3(0)mod3となる信号を、矢印903で表すようにスイッチM7へ送信する。
スイッチM1〜M9は、それぞれ接続されている1段目のスイッチから信号の送信先のノード番号を3で割った余りが等しくなる信号を受信する。例えば、スイッチM1は、スイッチB1〜B3のそれぞれから送信先のノード番号が1mod3である信号を受信する。また、スイッチM2は、スイッチB4〜B6のそれぞれから送信先のノード番号が1mod3である信号を受信する。また、スイッチM3は、スイッチB7〜B9のそれぞれから送信先のノード番号が2mod3である信号を受信する。さらに、スイッチM4は、スイッチB1〜B3のそれぞれから送信先のノード番号が2mod3である信号を受信する。また、スイッチM7は、スイッチB1〜B3のそれぞれから送信先のノード番号が3(0)mod3となる信号を受信する。
さらに、スイッチM1〜M3とスイッチT1〜T3とが組みになっており、スイッチM4〜M6とスイッチT4〜T6とが組になっており、スイッチM7〜M9とスイッチT7〜T9と組になっている。そして、スイッチM1〜M3は、スイッチT1に対して、例えば矢印904のように、送信先のノード番号が1mod9である信号を送信する。また、スイッチM1〜M3は、スイッチT2に対して、例えば矢印905のように、送信先のノード番号が4mod9である信号を送信する。また、スイッチM1〜M3は、スイッチT3に対して、例えば矢印906のように、送信先のノード番号が7mod9である信号を送信する。また、スイッチM4〜M6は、スイッチT4に送信先のノード番号が2mod9である信号を送信し、スイッチT5に送信先のノード番号が5mod9である信号を送信し、スイッチT6に送信先のノード番号が8mod9である信号を送信する。また、スイッチM7〜M9は、スイッチT7に送信先のノード番号が3mod9である信号を送信し、スイッチT8に送信先のノード番号が6mod9である信号を送信し、スイッチT9に送信先のノード番号が0mod9(=9mod9)である信号を送信する。
そして、スイッチT1〜T9は、スイッチM1〜M9から受信した信号の送信先のノード番号を有するノードが接続されている1段目のスイッチに接続している2段目のスイッチに向けて信号を送信する。さらに、スイッチM1〜M9は、スイッチT1〜T9から受信した信号の送信先のノード番号を有するノードに接続している1段目のスイッチに向けて信号を送信する。その後、スイッチB1〜B9は、スイッチM1〜M9から受信した信号の送信先のノード番号を有するノードに向けて信号を送信する。
このようにしてFat Treeでは、あるノードから他のノードに向けて信号が送信される。
さらに、Fat Tree接続において全てのノードから全てのノードに対してメッセージの送受信を行う全対全通信において、シフト通信パターンと呼ばれる通信方式が広く用いられている。シフト通信パターンは、ノード数をNとすると、N回の通信フェーズから構成される。そして、i番目の通信フェーズでは、自己のノード番号からi番先のノード番号に対してメッセージを送信する。したがって、各ノード番号をp(p=1,2,・・・,N)とすると、i番目の通信フェーズでは、((i+p)modN)が各ノードのメッセージの送信先となる。すなわち、シフト通信パターンでは、各通信フェーズにおいて、各ノードにおいて送信した信号の送信先が重複しない。
図14は、シフト通信パターンを説明するための図である。図14は、図13と同じ構成でシフト通信パターンを行なった場合の9番目の通信フェーズの状態を表している。枠910で囲われた数字は、各ノードにおける送信先のノード番号を表している。9番目の通信フェーズでの各ノードにおける送信先のノード番号は、各ノードのノード番号に9を加えた番号である。そして、シフト通信パターンでは、B1〜B9で表される1段目のスイッチが配下のノードから受信する信号のノード番号は連番である。したがって、1段目のスイッチは、送信先のノード番号が1mod3、2mod3及び3(0)mod3である3つの信号を受信する。このため、1段目のスイッチは受信した各信号をそれぞれ異なる2段目のスイッチに送信することになる。2段目のスイッチは、それぞれ9個の連番の送信先のノード番号の中の3で割った余りが等しい信号を受信することになる。そして、9個の連番の送信先のノード番号の中の3で割った余りが等しい番号は、9で割った余りが異なる番号である。例えば、スイッチM1は、送信先のノード番号が1mod9、4mod9及び7mod9である3つの信号を受信する。このため、スイッチM1は、受信した各信号をそれぞれ異なる3段目のスイッチに送信することになる。同様にして、スイッチM2〜M9においても、受信された各信号はそれぞれ異なる3段目のスイッチに送信されることになる。
このように、いずれの経路においても2以上の信号が流れることが無い。以下では、同じ経路に2つ以上の信号が流れることを経路競合と言う。さらに、ここでは、一例として9番目のフェーズについて説明したが、他のフェーズにおいても各スイッチが受け取る信号の送信先の関係は同様である。すなわち、シフト通信パターンを用いた場合、いずれのフェーズにおいても、経路競合が起こらない。そのため、Fat Treeにおいてシフト通信パターンを用いた場合、全対全通信において高いスループットを実現でき、信号伝送において広い帯域が確保できる。
ここで、図13及び図14の説明では、説明を分かり易くするために、全ての信号を3段目までのスイッチを経由して送信先のノードに送信するように説明した。けれども、実際には、各スイッチにおいてネットワークの接続状態が記憶されており、上段に信号を送信しなくても、送信先のノードに信号を送ることができる場合には、1段目及び2段目のスイッチは、下段のスイッチ又は配下のノードに直接信号を送信する。例えば、ノード番号が1のノードからノード番号が2のノードに信号を送信する場合、1段目のスイッチは、ノード番号が1のノードから受信した信号を直接ノード番号が2のノードに送信する。
このようなFat Treeにおいて、2段のFat Treeでは、他の全てのノードに対して1ホップで信号を送信できるように接続されたFat Treeの従来技術が提案されている。
以下に、本願の開示するネットワーク装置及びネットワーク管理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するネットワーク装置及びネットワーク管理装置が限定されるものではない。特に、以下では6ポートスイッチ又は8ポートスイッチを用いた場合を例に説明するが、これに限らず以下のようなスイッチであればよい。すなわち、1段目のスイッチは、ノードと接続するポート数と2段目のスイッチに接続するポート数が一致している。また、2段目のスイッチは、1段目のスイッチに接続するポート数と3段目のスイッチとに接続するポートの数が一致している。さらに、3段目のスイッチは、2段目のスイッチと接続するポート数として、2段目のスイッチが3段目のスイッチと接続するポート数と同数のポート数を有していればよい。
図1は、実施例1に係るネットワーク装置の構成図である。図1に示すように、本実施例に係るネットワーク装置は、スイッチB1〜B9、スイッチM1〜M9及びスイッチT1〜T9を有している。ここで、スイッチB1〜B9をまとめて、1段目のスイッチと言う場合がある。また、スイッチM1〜M9をまとめて、2段目のスイッチと言う場合がある。さらに、スイッチT1〜T9をまとめて、3段目のスイッチと言う場合がある。また、以下では、1段目、2段目及び3段目の各スイッチに振られている数字をそのスイッチの番号と言う。例えば、スイッチB1は、1番目の1段目のスイッチであり、スイッチM3は、3番目の2段目のスイッチとなる。
さらに、1段目のスイッチには、それぞれ3つのノードが接続されている。すなわち、図1に示すように、全部で27個のノードがネットワーク装置に接続されている。各ノードは、1段目のスイッチに接続された丸印で表されている。そして、各ノードの下の番号が、各ノードに振られたノード番号である。以下では、ノード番号PのノードをノードPと言う。本実施形態では、スイッチB1にノード1〜3が接続されており、スイッチB2にノード4〜6が接続されており、スイッチB3にノード7〜9が接続されている。また、スイッチB4にノード10〜12が接続されており、スイッチB5にノード13〜15が接続されており、スイッチB6にノード16〜18が接続されている。また、スイッチB7にノード19〜21が接続されており、スイッチB8にノード22〜24が接続されており、スイッチB9にノード25〜27が接続されている。
次に、1段目のスイッチB1〜B9と2段目のスイッチM1〜M9との結線方法について説明する。図2は、1段目のスイッチと2段目のスイッチの結線における準備を説明するための図である。
まず、図2に示すように、本実施例にかかる1段目のスイッチであるスイッチB1〜B9を3つのグループに分ける。グループ分けは、接続されているノードの最小のノード番号を9で割った余りが等しいものをグループとしていくことで行う。すなわち、スイッチB1〜B9を、スイッチB1、B4、及びB7、スイッチB2、B5及びB8、並びにスイッチB3、B6及びB9の3グループに分ける。図2では、スイッチB1、B4、及びB7の枠を実線にすることで同グループであることを示しており、このグループをグループ1−1とする。また、図2では、スイッチB2、B5及びB8の枠を点線にすることで同グループであることを示しており、このグループをグループ1−2とする。また、図2では、スイッチB3、B6及びB9の枠を一点鎖線にすることで同グループであることを示しており、このグループをグループ1−3とする。このグループ分けは、1段目スイッチのスイッチ番号を3で割った余りによってグループ分けを行なってもよい。
さらに、このグループ分けとは別に、スイッチB1〜B9を、枠204で囲われたスイッチB1〜B3、枠205で囲われたスイッチB4〜B6、及び枠206で囲われたスイッチB7〜B9に分ける。
また、2段目のスイッチであるスイッチM1〜M9を、同じ3段目のスイッチに接続されているグループに分ける。すなわち、スイッチM1〜M9を、枠201に囲われたスイッチM1〜M3、枠202で囲われたスイッチM4〜M6及び枠203で囲われたスイッチM7〜M9の3グループに分ける。ここでは、スイッチM1〜M3、スイッチM4〜M6及びスイッチM7〜M9の順に、グループ2−1、グループ2−2及びグループ2−3とする。
接続の条件として以下の条件を満たす必要がある。条件1は以下の条件である。グループ2−1に含まれるスイッチM1〜M3は、1段目のスイッチから送信先のノード番号が1mod9、4mod9及び7mod9である信号を受ける。グループ2−2に含まれるスイッチM4〜M6は、1段目のスイッチから送信先のノード番号が2mod9、5mod及び8mod9である信号を受ける。グループ2−3に含まれるスイッチM7〜M9は、1段目のスイッチから送信先のノード番号が3mod9、6mod及び0mod9である信号を受ける。
また、条件2は、スイッチM1〜M9はいずれも、9で割った余りが異なる3つの信号を受けるという条件である。
また、条件3は、スイッチM1〜M9とスイッチB1〜B9との接続が、図13に示す従来のFat Treeにおける接続と異なる接続である。すなわち、グループ2−1、グループ2−2及びグループ2−3のうちいずれか一つは、1段目のスイッチとの接続が図13の接続と異なる接続である。
まず、グループ2−1のスイッチM1〜M3について考える。スイッチM1〜M3は、条件1から1mod3の信号しか受信できない。1mod3は、スイッチB1〜B9の各スイッチに一つずつしかないので、最終的にはスイッチB1〜B9の全てがスイッチM1〜M3のいずれかと繋がることになる。さらに、条件2からスイッチM1〜M3は、グループ1−1、グループ1−2及びグループ1−3のそれぞれから一つずつ接続する1段目のスイッチを選択することになる。言い換えれば、スイッチM1〜M3は、グループ1−1、グループ1−2及びグループ1−3の中で、同じグループから接続先を選ぶことはできない。
そこでまず、スイッチM1はグループ1−1のスイッチB1、B4又はB8のいずれか一つを選択する。そして、スイッチM2は、グループ1−1のスイッチB1、B4又はB7のうちスイッチM1が選択したスイッチ以外のスイッチのいずれかを選択する。さらに、スイッチM3は、グループ1−1のスイッチB1、B4又はB7のうちスイッチM1及びM2が選択したスイッチ以外のスイッチのいずれかを選択する。そして、スイッチM1〜M3は、選択したスイッチから1mod3となる信号を受信する。ここで、本実施例では、1段目のスイッチからの出力のうち、図における紙面に向かって一番左側の経路に1mod3となる信号が出力される。したがって、図を用いて結線を表す場合には、1段目のスイッチからの一番左側の経路をスイッチM1〜M3と結ぶことで、1mod3となる信号を受信するという条件が満たされる。
同様にして、スイッチM1〜M3は、グループ1−2のスイッチB2、B5及びB7に対する接続の組合せを選択する。また、スイッチM1〜M3は、グループ1−3のスイッチB3、B6及びB9に対する接続の組合せを選択する。そして、スイッチM1〜M3は、選択したスイッチから1mod3となる信号を受信する。
また、スイッチM4〜M6についても、グループ1−1〜グループ1−3に対して同様の選択を行う。そして、スイッチM4〜M6の場合には、選択したスイッチから2mod3となる信号を受信する。ここで、本実施例では、1段目のスイッチからの出力のうち、図における紙面に向かって中央の経路に1mod3となる信号が出力される。したがって、図を用いて結線を表す場合には、1段目のスイッチからの一番左側の経路をスイッチM1〜M3と結ぶことで、2mod3となる信号を受信するという条件が満たされる。
さらに、スイッチM7〜M9についても、グループ1−1〜グループ1−3に対して同様の選択を行う。そして、スイッチM7〜M9の場合には、選択したスイッチから0mod3となる信号を受信する。ここで、本実施例では、1段目のスイッチからの出力のうち、図における紙面に向かって中央の経路に0mod3となる信号が出力される。したがって、図を用いて結線を表す場合には、1段目のスイッチからの一番左側の経路をスイッチM1〜M3と結ぶことで、2mod3となる信号を受信するという条件が満たされる。
ただし、図13に示すFat Treeの構成よりも平均ホップ数を抑えるために、グループ2−1、グループ2−2及びグループ2−3のうちいずれか一つは、1段目のスイッチとの接続が図13の接続と異なる接続とする。すなわち、グループ2−1、グループ2−2及びグループ2−3のうちいずれか一つは、含まれる2段目のスイッチのいずれかにおいて接続している1段目のスイッチに接続されているノードのノード番号が不連続となる。スイッチB1〜B9が、「第1転送部」の一例にあたる。また、スイッチM1〜M9が、「第2転送部」の一例にあたる。
次に、本実施例におけるスイッチB1〜B9とスイッチM1〜M9との結線及び信号の転送について図1を参照してより具体的に説明する。
スイッチM1は、スイッチB1〜B3と接続されている。また、スイッチM2は、スイッチB4〜B6と接続されている。また、スイッチM3は、スイッチB7〜B9と接続されている。すなわち、本実施例におけるスイッチM1〜M3と1段目のスイッチとの接続関係は図13の場合と同様である。
スイッチM4は、スイッチB2〜B4と接続されている。また、スイッチM5は、スイッチB5〜B7と接続されている。また、スイッチM6は、スイッチB8、B9及びB1と接続されている。すなわち、本実施例におけるスイッチM4〜M6と1段目のスイッチとの接続関係は図13の場合でスイッチM4〜M6に接続されている1段目のスイッチの番号を1つずつ増やしたものである。ただし、スイッチの番号がB9を超えた場合、B1に戻るものとする。
スイッチM7は、スイッチB3〜B5と接続されている。また、スイッチM8は、スイッチB6〜B8と接続されている。また、スイッチM9は、スイッチB9、B1及びB2と接続されている。すなわち、本実施例におけるスイッチM7〜M9と1段目のスイッチとの接続関係は図13の場合でスイッチM7〜M9に接続されている1段目のスイッチの番号を2つずつ増やしたものである。ただし、スイッチの番号がB9を超えた場合、B1に戻るものとする。
ここで、本実施例では、スイッチ番号の小さい順に3つの1段目のスイッチを含む3つのグループに1段目のスイッチを分け、さらに、スイッチ番号の小さい順に3つの2段目のスイッチを含む3つのグループに2段目のスイッチを分ける。そして、図13のようにグループ分けした1段目のスイッチが同じ2段目のスイッチに接続されている状態から、グループ分けした2段目のスイッチ毎にずらす数を1つずつ増やしながら接続する1段目のスイッチをずらしていくことで結線を行なっている。ここで、他のポート数のスイッチを用いた場合も同様の方法で結線を確定することができる。すなわち、スイッチのポート数の半分の数を含むグループに1段目のスイッチ及び2段目のスイッチを分ける。そして、グループ分けした1段目のスイッチが同じ2段目のスイッチに接続されている状態から、グループ分けした2段目のスイッチ毎に1つずつ数を増やして接続する1段目のスイッチをずらしていくことで結線を行なえばよい。
そして、本実施例に係るネットワーク装置では、シフト通信パターンを用いて全対全の通信が行われる。ここで、本実施例に係るネットワーク装置における信号の送信経路を、シフト通信パターンのフェーズ9の場合を例に、信号の送信について説明する。
フェーズ9の場合、枠101で囲われた領域の中に示されるノード番号で各ノードのノード番号の下に記載されたノード番号を有するノードに対して各ノードから信号が送信される。例えば、ノード1は、ノード10に向けて信号が送信する。また、ノード2は、ノード11に向けて信号を送信する。
スイッチB1〜B9は、接続された各ノードから他のノードに向けて送信された信号を受信する。そして、スイッチB1〜B9は、自己に接続された2段目のスイッチのうち番号が最小の2段目のスイッチに送信先のノード番号が1mod3である信号を送信する。また、スイッチB1〜B9は、自己に接続された2段目のスイッチのうち番号が2番目に小さい2段目のスイッチに送信先のノード番号が2mod3である信号を送信する。さらに、スイッチB1〜B9は、接続された2段目のスイッチのうち番号が最大の2段目のスイッチに送信先のノード番号が0mod3である信号を送信する。ただし、スイッチB1〜B9は、自己に接続されているノードのノード番号を記憶しており、送信先のノード番号が自己に接続されているノードを示している場合には、2段目のスイッチに信号を送信せずに、対応するノードへ信号を送信する。例えば、スイッチB1は、ノード2宛てに送信された信号をノード1から受信した場合、スイッチM6に信号を送信することなくノード2に対して受信した信号を送信する。
ここで、スイッチB1〜B9からスイッチM1〜M9への信号の送信について詳細に説明する。スイッチB1は、送信先のノード番号が1mod3を満たす場合スイッチM1に信号を送信し、2mod3を満たす場合スイッチM6に信号を送信し、0mod3を満たす場合スイッチM9に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB1は、ノード1からノード10宛ての信号を受信し、ノード2からノード11宛ての信号を受信し、ノード3からノード12宛ての信号を受信する。そして、スイッチB1は、受信した信号のうち送信先のノード番号が1mod3であるノード10宛ての信号をスイッチM1に送信する。また、スイッチB1は、受信した信号のうち送信先のノード番号が2mod3であるノード11宛ての信号をM6に送信する。さらに、スイッチB1は、受信した信号のうち送信先のノード番号が0mod3であるノード12宛ての信号をスイッチM9に送信する。
また、スイッチB2は、送信先のノード番号が1mod3を満たす場合スイッチM1に信号を送信し、2mod3を満たす場合スイッチM4に信号を送信し、0mod3を満たす場合スイッチM9に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB2は、ノード4からノード13宛ての信号を受信し、ノード5からノード14宛ての信号を受信し、ノード6からノード15宛ての信号を受信する。そして、スイッチB2は、受信した信号のうち送信先のノード番号が1mod3であるノード13宛ての信号をスイッチM1に送信する。また、スイッチB2は、受信した信号のうち送信先のノード番号が2mod3であるノード14宛ての信号をスイッチM4に送信する。さらに、スイッチB2は、受信した信号のうち送信先のノード番号が0mod3であるノード15宛ての信号をスイッチM9に送信する。
また、スイッチB3は、送信先のノード番号が1mod3を満たす場合スイッチM1に信号を送信し、2mod3を満たす場合スイッチM4に信号を送信し、0mod3を満たす場合スイッチM7に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB3は、ノード7からノード16宛ての信号を受信し、ノード8からノード17宛ての信号を受信し、ノード9からノード18宛ての信号を受信する。そして、スイッチB3は、受信した信号のうち送信先のノード番号が1mod3であるノード16宛ての信号をスイッチM1に送信する。また、スイッチB3は、受信した信号のうち送信先のノード番号が2mod3であるノード17宛ての信号をスイッチM4に送信する。さらに、スイッチB3は、受信した信号のうち送信先のノード番号が0mod3であるノード18宛ての信号をスイッチM7に送信する。
また、スイッチB4は、送信先のノード番号が1mod3を満たす場合スイッチM2に信号を送信し、2mod3を満たす場合スイッチM4に信号を送信し、0mod3を満たす場合スイッチM7に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB4は、ノード10からノード19宛ての信号を受信し、ノード11からノード20宛ての信号を受信し、ノード12からノード21宛ての信号を受信する。そして、スイッチB4は、受信した信号のうち送信先のノード番号が1mod3であるノード19宛ての信号をスイッチM2に送信する。また、スイッチB4は、受信した信号のうち送信先のノード番号が2mod3であるノード20宛ての信号をスイッチM4に送信する。さらに、スイッチB4は、受信した信号のうち送信先のノード番号が0mod3であるノード21宛ての信号をスイッチM7に送信する。
また、スイッチB5は、送信先のノード番号が1mod3を満たす場合スイッチM2に信号を送信し、1mod2を満たす場合スイッチM5に信号を送信し、0mod3を満たす場合スイッチM7に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB5は、ノード13からノード22宛ての信号を受信し、ノード14からノード23宛ての信号を受信し、ノード15からノード24宛ての信号を受信する。そして、スイッチB5は、受信した信号のうち送信先のノード番号が1mod3であるノード21宛ての信号をスイッチM2に送信する。また、スイッチB5は、受信した信号のうち送信先のノード番号が2mod3であるノード23宛ての信号をスイッチM5に送信する。さらに、スイッチB5は、受信した信号のうち送信先のノード番号が0mod3であるノード24宛ての信号をスイッチM7に送信する。
また、スイッチB6は、送信先のノード番号が1mod3を満たす場合スイッチM2に信号を送信し、1mod2を満たす場合スイッチM5に信号を送信し、0mod3を満たす場合スイッチM8に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB6は、ノード16からノード25宛ての信号を受信し、ノード17からノード26宛ての信号を受信し、ノード18からノード27宛ての信号を受信する。そして、スイッチB6は、受信した信号のうち送信先のノード番号が1mod3であるノード24宛ての信号をスイッチM2に送信する。また、スイッチB6は、受信した信号のうち送信先のノード番号が2mod3であるノード26宛ての信号をスイッチM5に送信する。さらに、スイッチB6は、受信した信号のうち送信先のノード番号が0mod3であるノード27宛ての信号をスイッチM8に送信する。
また、スイッチB7は、送信先のノード番号が1mod3を満たす場合スイッチM3に信号を送信し、2mod3を満たす場合スイッチM5に信号を送信し、0mod3を満たす場合スイッチM8に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB7は、ノード19からノード1宛ての信号を受信し、ノード20からノード2宛ての信号を受信し、ノード21からノード3宛ての信号を受信する。そして、スイッチB7は、受信した信号のうち送信先のノード番号が1mod3であるノード1宛ての信号をスイッチM3に送信する。また、スイッチB7は、受信した信号のうち送信先のノード番号が2mod3であるノード2宛ての信号をスイッチM5に送信する。さらに、スイッチB7は、受信した信号のうち送信先のノード番号が0mod3であるノード3宛ての信号をスイッチM8に送信する。
また、スイッチB8は、送信先のノード番号が1mod3を満たす場合スイッチM3に信号を送信し、1mod2を満たす場合スイッチM6に信号を送信し、0mod3を満たす場合スイッチM8に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB8は、ノード22からノード4宛ての信号を受信し、ノード23からノード5宛ての信号を受信し、ノード24からノード6宛ての信号を受信する。そして、スイッチB8は、受信した信号のうち送信先のノード番号が1mod3であるノード4宛ての信号をスイッチM3に送信する。また、スイッチB8は、受信した信号のうち送信先のノード番号が2mod3であるノード5宛ての信号をスイッチM6に送信する。さらに、スイッチB8は、受信した信号のうち送信先のノード番号が0mod3であるノード6宛ての信号をスイッチM8に送信する。
また、スイッチB9は、送信先のノード番号が1mod3を満たす場合スイッチM3に信号を送信し、1mod2を満たす場合スイッチM6に信号を送信し、0mod3を満たす場合スイッチM9に信号を送信する。例えば、フェーズ9の場合であれば、スイッチB9は、ノード25からノード7宛ての信号を受信し、ノード26からノード8宛ての信号を受信し、ノード27からノード9宛ての信号を受信する。そして、スイッチB9は、受信した信号のうち送信先のノード番号が1mod3であるノード7宛ての信号をスイッチM3に送信する。また、スイッチB9は、受信した信号のうち送信先のノード番号が2mod3であるノード8宛ての信号をスイッチM6に送信する。さらに、スイッチB9は、受信した信号のうち送信先のノード番号が0mod3であるノード9宛ての信号をスイッチM9に送信する。
ここで、図1におけるスイッチM1〜M9の下に記載された番号は、フェーズ9において、スイッチM1〜M9のそれぞれが1段目のスイッチから受信する信号の送信先のノード番号を示している。このように、各2段目のスイッチは、異なる1段目のスイッチから送信された信号を3つずつ受信する。すなわち、シフト通信パターンを用いた場合に、1段目のスイッチから2段目のスイッチへと信号が送信されるときにおいては、同じ経路に2つ以上の信号が流れることが無いため、信号伝送において広い帯域を確保することができる。
また、スイッチB1〜B9は、スイッチM1〜M9から自己に接続されているノード宛の信号を受信した場合、その送信先のノード番号を有するノードに信号を転送する。ただし、スイッチM1〜M9は、自己に接続している1段目のスイッチに接続されているノードのノード番号を記憶している。そして、スイッチM1〜M9は、受信した信号の送信先のノード番号が自己に接続している1段目のスイッチに接続しているノードのノード番号であれば、そのノード番号を有するノードが接続された1段目のスイッチに信号を送信する。
スイッチB1〜B9から1ホップで届く他の1段目のスイッチは、図13の場合に比べて増えている。以下では、あるスイッチから1ホップで届くスイッチのことを、そのスイッチに対する「近接接続スイッチ」という場合がある。例えば、図13では、スイッチB1に対する近接接続スイッチは、スイッチB2及びスイッチB3だけであった。これに対して、図1では、スイッチB1は、スイッチB2、B3、B8及びB9という4つのスイッチが近接接続スイッチとなっている。このように、本実施例に係るネットワーク装置は、従来の図13に示すような構成に比べて、平均ホップ数が削減される。そのため、図13に示すような構成に比べて、信号伝送の遅延を軽減することができる。
スイッチM1〜M3のそれぞれは、スイッチT1〜T3の全てに接続されている。また、スイッチM4〜M7のそれぞれは、スイッチT4〜T6の全てに接続されている。さらに、スイッチM8〜M9のそれぞれは、スイッチT7〜T9の全てに接続されている。すなわち、2段目のスイッチと3段目のスイッチとは、図13に示した従来のFat Treeにおける結線と同じように結線されている。
スイッチM1〜M9は、スイッチB1〜B9から信号を受信する。
スイッチM1〜M3は、送信先のノード番号が1mod9の信号をスイッチT1へ送信する。また、スイッチM1〜M3は、送信先のノード番号が4mod9の信号をスイッチT2へ送信する。また、スイッチM1〜M3は、送信先のノード番号が7mod9の信号をスイッチT3へ送信する。
スイッチM4〜M6は、送信先のノード番号が2mod9の信号をスイッチT4へ送信する。また、スイッチM4〜M6は、送信先のノード番号が5mod9の信号をスイッチT5へ送信する。また、スイッチM4〜M6は、送信先のノード番号が8mod9の信号をスイッチT6へ送信する。
スイッチM7〜M9は、送信先のノード番号が3mod9の信号をスイッチT7へ送信する。また、スイッチM7〜M9は、送信先のノード番号が6mod9の信号をスイッチT8へ送信する。また、スイッチM7〜M9は、送信先のノード番号が0mod9の信号をスイッチT9へ送信する。
スイッチT1〜T9は、自己から各ノードまでの経路を記憶している。スイッチT1〜T9は、フェーズ9では送信先のノード番号が1mod9である信号を受信する。そして、スイッチT1〜T9は、受信した信号の送信先のノード番号を有するノードが接続されている1段目のスイッチが接続している2段目のスイッチを特定し、特定した2段目のスイッチに向けて受信した信号を送信する。スイッチT1〜T9が、「第3転送部」の一例にあたる。
このように1段目〜3段目のスイッチを接続することで、シフト通信パターンを用いて通信した場合に、各経路において送信信号の経路競合が起こらない。そのため、信号伝送において広い帯域を確保することができる。
また、このように、1段目〜3段目のスイッチを接続することで、スイッチB1〜B9に対する近接接続スイッチを図13の場合に比べて増やすことができる。すなわち、本実施例に係るネットワーク装置は、従来の図13に示すような構成に比べて、平均ホップ数が削減される。そのため、図13に示すような構成に比べて、信号伝送の遅延を軽減することができる。
次に、本実施例におけるスイッチM1〜M9からスイッチT1〜T9に対する信号の送信について図1を参照してより具体的に説明する。
フェーズ9の場合、スイッチM1は、ノード10、13及び16に宛てた信号を受信する。そこで、スイッチM1は、ノード10宛ての信号をスイッチT1に送信し、ノード13宛ての信号をスイッチT2に送信し、ノード16宛ての信号をスイッチT3に送信する。また、スイッチM2は、ノード19、22及び25に宛てた信号を受信する。そこで、スイッチM2は、ノード19宛ての信号をスイッチT1に送信し、ノード22宛ての信号をスイッチT2に送信し、ノード25宛ての信号をスイッチT3に送信する。また、スイッチM3は、ノード1、4及び7に宛てた信号を受信する。そこで、スイッチM3は、ノード1宛ての信号をスイッチT1に送信し、ノード4宛ての信号をスイッチT2に送信し、ノード7宛ての信号をスイッチT3に送信する。
また、フェーズ9の場合、スイッチM4は、ノード20、14及び17に宛てた信号を受信する。そこで、スイッチM4は、ノード20宛ての信号をスイッチT4に送信し、ノード14宛ての信号をスイッチT5に送信し、ノード17宛ての信号をスイッチT6に送信する。また、スイッチM5は、ノード2、23及び26に宛てた信号を受信する。そこで、スイッチM5は、ノード2宛ての信号をスイッチT4に送信し、ノード23宛ての信号をスイッチT5に送信し、ノード26宛ての信号をスイッチT6に送信する。また、スイッチM6は、ノード11、5及び8に宛てた信号を受信する。そこで、スイッチM6は、ノード11宛ての信号をスイッチT4に送信し、ノード5宛ての信号をスイッチT5に送信し、ノード8宛ての信号をスイッチT6に送信する。
フェーズ9の場合、スイッチM7は、ノード21、24及び18に宛てた信号を受信する。そこで、スイッチM7は、ノード21宛ての信号をスイッチT7に送信し、ノード24宛ての信号をスイッチT8に送信し、ノード18宛ての信号をスイッチT9に送信する。また、スイッチM8は、ノード3、6及び27に宛てた信号を受信する。そこで、スイッチM8は、ノード3宛ての信号をスイッチT7に送信し、ノード6宛ての信号をスイッチT8に送信し、ノード27宛ての信号をスイッチT9に送信する。また、スイッチM9は、ノード12、15及び9に宛てた信号を受信する。そこで、スイッチM9は、ノード12宛ての信号をスイッチT7に送信し、ノード15宛ての信号をスイッチT8に送信し、ノード9宛ての信号をスイッチT9に送信する。
ここで、図1におけるスイッチT1〜T9の下に記載された番号は、フェーズ9において、スイッチT1〜T9のそれぞれが2段目のスイッチから受信する信号の送信先のノード番号を示している。また、スイッチT1〜T9の上に記載されたMOD関数は、フェーズ9において、スイッチT1〜T9のそれぞれが2段目のスイッチから受信する信号の送信先が満たす条件を表している。このように、各3段目のスイッチは、異なる2段目のスイッチから送信された信号を3つずつ受信する。すなわち、シフト通信パターンを用いた場合に、2段目のスイッチから3段目のスイッチへと信号が送信されるときにおいても、同じ経路に2つ以上の信号が流れることが無いため、信号伝送において広い帯域を確保することができる。
ここで、以上ではシフト通信パターンにおけるフェーズ9の場合について説明したが、他のフェーズの場合でも、同様に、同じ経路に2つ以上の信号が送信されることは無い。そのため、本実施例に係るネットワーク装置においては、シフト通信パターンを用いた通信を行った場合に信号伝送において広い帯域を確保することができる。
図3は、実施例2に係るネットワーク装置の構成図である。本実施例に係るネットワーク装置は、1段目のスイッチと2段目のスイッチとの結線が実施例1と異なるものである。そこで、以下では、1段目のスイッチと2段目のスイッチとの結線について主に説明する。特に、2段目のスイッチ以降の接続及び信号の流れは実施例1と同様であるので省略する。
そこで、本実施例に係るネットワーク装置における1段目のスイッチと2段目のスイッチとの結線方法について説明する。
先ほどのグループ分けに加えて、図2に示すように1段目のスイッチを番号の小さい順に3つずつ選びグループ分けする。すなわち、スイッチB1〜B9を、実線204で囲われたスイッチB1〜B3、点線205で囲われたスイッチB4〜B6、及び一点鎖線206で囲われたスイッチB7〜B9に分ける。そして、実線204で囲われたグループをグループA、点線205で囲われたグループをグループB、及び一点鎖線206で囲われたグループをグループCとする。さらに、グループ1−1〜グループ1−3をまとめて「等余グループ」という。また、グループA〜グループCをまとめて「1段目グループ」という。さらに、グループAの隣のグループはグループBであり、グループBの隣のグループはグループCであり、グループCの隣のグループはグループAであるとする。
まず、スイッチM1〜M3は、図13で示すFat Treeの構成と同じ接続とする。すなわち、スイッチM1は、スイッチB1、B2及びB3と接続される。スイッチM2は、スイッチB4、B5及びB6と接続される。さらに、スイッチM3は、スイッチB7、B8及びB9と接続される。
次に、スイッチM4はグループAの中のグループ1−1にあたるスイッチB1を選択する。また、スイッチM4は、グループAの隣のグループBからグループ1−2にあたるスイッチB5を選択する。さらに、スイッチM4は、グループBの隣のグループCからグループ1−3にあたるスイッチB9を選択する。
そして、スイッチM5は、スイッチM4が各等余グループに含まれるスイッチを選択した1段目グループの隣の1段目グループからスイッチM4が選択したのと同じ等余グループに含まれるスイッチを選択する。また、スイッチM6は、スイッチM5が各等余グループに含まれるスイッチを選択した1段目グループの隣のグループからスイッチM5が選択したのと同じ等余グループに含まれるスイッチを選択する。
次に、スイッチM7はグループAの中のグループ1−1にあたるスイッチB1を選択する。また、スイッチM7は、グループAの2つ隣のグループCからグループ1−2にあたるスイッチB8を選択する。さらに、スイッチM7は、グループCの2つ隣のグループBからグループ1−3にあたるスイッチB6を選択する。
そして、スイッチM8は、スイッチM7が各等余グループに含まれるスイッチを選択した1段目グループの隣の1段目グループからスイッチM4が選択したのと同じ等余グループに含まれるスイッチを選択する。また、スイッチM9は、スイッチM8が各等余グループに含まれるスイッチを選択した1段目グループの隣のグループからスイッチM5が選択したのと同じ等余グループに含まれるスイッチを選択する。
このように、接続先を選択すると、図3のような結線状態となる。そこで、図3の接続状態でシフト通信パターンを用いて全対全通信を行った場合のフェーズ9における通信を例に説明する。
スイッチB1は、ノード1から受信したノード10宛ての信号を、送信先のノード番号が1mod3なので、スイッチM1へ送信する。また、スイッチB1は、ノード2から受信したノード11宛ての信号を、送信先のノード番号が2mod3なので、スイッチM4へ送信する。さらに、スイッチB1は、ノード3から受信したノード12宛ての信号を、送信先のノード番号が0mod3なので、スイッチM7へ送信する。
スイッチB2は、ノード4から受信したノード13宛ての信号を、送信先のノード番号が1mod3なので、スイッチM1へ送信する。また、スイッチB2は、ノード5から受信したノード14宛ての信号を、送信先のノード番号が2mod3なので、スイッチM4へ送信する。さらに、スイッチB2は、ノード6から受信したノード15宛ての信号を、送信先のノード番号が0mod3なので、スイッチM8へ送信する。
スイッチB3は、ノード7から受信したノード16宛ての信号を、送信先のノード番号が1mod3なので、スイッチM1へ送信する。また、スイッチB3は、ノード8から受信したノード17宛ての信号を、送信先のノード番号が2mod3なので、スイッチM5へ送信する。さらに、スイッチB3は、ノード9から受信したノード18宛ての信号を、送信先のノード番号が0mod3なので、スイッチM9へ送信する。
スイッチB4は、ノード10から受信したノード19宛ての信号を、送信先のノード番号が1mod3なので、スイッチM2へ送信する。また、スイッチB4は、ノード11から受信したノード20宛ての信号を、送信先のノード番号が2mod3なので、スイッチM5へ送信する。さらに、スイッチB4は、ノード12から受信したノード21宛ての信号を、送信先のノード番号が0mod3なので、スイッチM8へ送信する。
スイッチB5は、ノード13から受信したノード22宛ての信号を、送信先のノード番号が1mod3なので、スイッチM2へ送信する。また、スイッチB5は、ノード14から受信したノード23宛ての信号を、送信先のノード番号が2mod3なので、スイッチM4へ送信する。さらに、スイッチB5は、ノード15から受信したノード24宛ての信号を、送信先のノード番号が0mod3なので、スイッチM9へ送信する。
スイッチB6は、ノード16から受信したノード25宛ての信号を、送信先のノード番号が1mod3なので、スイッチM2へ送信する。また、スイッチB6は、ノード17から受信したノード26宛ての信号を、送信先のノード番号が2mod3なので、スイッチM6へ送信する。さらに、スイッチB6は、ノード18から受信したノード27宛ての信号を、送信先のノード番号が0mod3なので、スイッチM7へ送信する。
スイッチB7は、ノード19から受信したノード1宛ての信号を、送信先のノード番号が1mod3なので、スイッチM3へ送信する。また、スイッチB7は、ノード20から受信したノード2宛ての信号を、送信先のノード番号が2mod3なので、スイッチM6へ送信する。さらに、スイッチB7は、ノード21から受信したノード3宛ての信号を、送信先のノード番号が0mod3なので、スイッチM8へ送信する。
スイッチB8は、ノード22から受信したノード4宛ての信号を、送信先のノード番号が1mod3なので、スイッチM3へ送信する。また、スイッチB8は、ノード23から受信したノード5宛ての信号を、送信先のノード番号が2mod3なので、スイッチM5へ送信する。さらに、スイッチB8は、ノード24から受信したノード6宛ての信号を、送信先のノード番号が0mod3なので、スイッチM7へ送信する。
スイッチB9は、ノード25から受信したノード7宛ての信号を、送信先のノード番号が1mod3なので、スイッチM3へ送信する。また、スイッチB9は、ノード26から受信したノード8宛ての信号を、送信先のノード番号が2mod3なので、スイッチM4へ送信する。さらに、スイッチB9は、ノード27から受信したノード9宛ての信号を、送信先のノード番号が0mod3なので、スイッチM8へ送信する。
また、スイッチB1〜B9は、自己に接続されているノードのノード番号を記憶している。そして、スイッチM1〜M9から自己に接続されているノード宛の信号を受信した場合、その送信先のノード番号を有するノードに信号を転送する。さらに、スイッチM1〜M9は、自己に接続している1段目のスイッチに接続されているノードのノード番号を記憶している。そして、スイッチM1〜M9は、受信した信号の送信先のノード番号が自己に接続している1段目のスイッチに接続しているノードのノード番号であれば、そのノード番号を有するノードが接続された1段目のスイッチに信号を送信する。
ここで、図3におけるスイッチM1〜M9の下に記載された番号は、フェーズ9において、スイッチM1〜M9のそれぞれが1段目のスイッチから受信する信号の送信先のノード番号を示している。図3に示すように、各2段目のスイッチは、異なる1段目のスイッチから送信された信号を3つずつ受信する。すなわち、シフト通信パターンを用いた場合に、1段目のスイッチから2段目のスイッチへと信号が送信されるときにおいては、同じ経路に2つ以上の信号が流れることが無いため、信号伝送において広い帯域を確保することができる。
また、スイッチM1〜M9のそれぞれが受信した信号の送信先は、それぞれ異なる3段目のスイッチに送信するノード番号となっている。そのため、シフト通信パターンを用いた場合に、2段目のスイッチから3段目のスイッチへと信号が送信されるときにおいても、同じ経路に2つ以上の信号が流れることが無いため、信号伝送において広い帯域を確保することができる。
さらに、スイッチB1〜B9に対する近接接続スイッチは、図13の場合に比べて増えている。例えば、図13では、スイッチB1に対する近接接続スイッチは、スイッチB2及びスイッチB3だけであった。これに対して、図3では、例えば、スイッチB1に対する近接接続スイッチは、スイッチB2、B3、B5、B6、B8及びB9の6つである。このように、本実施例に係るネットワーク装置は、従来の図13に示すような構成に比べて、平均ホップ数が削減される。
なお、この構成例では、n3個全てのノードが揃った構成であるが、従来のFat Tree構成においてよく用いられる一部のノード及び1段目のスイッチを取り除いた構成でもよい。例えば、従来のFat Treeでは、図13のような構成において、B8やB9およびその配下のノードを取り除いた構成でも経路競合を避けることができる。
また、さらに、B7の配下のノード20と21とを削除するような構成の場合は、全対全通信時に一部経路競合が生じるものの、競合の程度は従来のFat Tree構成における同様の構成と同程度であり、実用上問題ない。
(変形例)
図4は、実施例2の変形例に係るネットワーク装置の構成図である。次に、実施例2の変形例として、8ポートスイッチを用いた場合について説明する。本変形例に係るネットワーク装置は、1段目のスイッチとして、16個のスイッチB1〜B16を有し、2段目のスイッチとして、16個のスイッチM1〜M16を有し、3段目のスイッチとして、16個のスイッチT1〜T16を有する。
そして、1〜64までのノード番号が振られた64個のノードが配置されている。実線300で囲まれた領域に記載された数字が、対応する1段目のスイッチに接続されているノードのノード番号を表している。具体的には、スイッチBi(i=1、2、・・・、16)には、ノード4(i−1)+1〜4iが接続されている。
ここで、スイッチB1〜B16を番号が小さい順に4つずつ選んでグループとしていき、4つのグループを作る。そして、スイッチB1〜B4のグループをグループ301、スイッチB5〜B8のグループをグループ302、スイッチB9〜B12のグループをグループ303、スイッチB13〜B16のグループをグループ304とする。そして、グループ301〜304をまとめて「1段目グループ」と呼ぶ。
スイッチM1は、グループ301から4つのスイッチを選択する。そして、スイッチM2は、スイッチM1が各等余グループに含まれるスイッチを選択した1段目グループの隣の1段目グループからスイッチM1が選択したのと同じ等余グループに含まれるスイッチを選択する。また、スイッチM3は、スイッチM2が各等余グループに含まれるスイッチを選択した1段目グループの隣のグループからスイッチM2が選択したのと同じ等余グループに含まれるスイッチを選択する。また、スイッチM4は、スイッチM3が各等余グループに含まれるスイッチを選択した1段目グループの隣の1段目グループからスイッチM3が選択したのと同じ等余グループに含まれるスイッチを選択する。
次に、スイッチM5は、グループ301を最初として、順次隣のグループを選択しながら、スイッチ番号が1mod4、2mod4、3mod4、0mod4となる1段目のスイッチを順次選択したグループの順番に対応させて選択していく。この場合、スイッチM5は、グループ301、302、303、304の順にグループを選択することになる。そして、スイッチM6〜M8は、スイッチM1に対するスイッチM2〜M4と同様に1段目のスイッチを選択する。
次に、スイッチM9は、グループ301を最初として、順次2つ隣のグループを選択しながら、スイッチ番号が1mod4、2mod4、3mod4、0mod4となる1段目のスイッチを順次選択したグループの順番に対応させて選択していく。この場合、スイッチM9は、グループ301、303、301、303の順にグループ選択することになる。そして、スイッチM10〜M12は、スイッチM1に対するスイッチM2〜M4と同様に1段目のスイッチを選択する。
次に、スイッチM13は、グループ301を最初として、順次3つ隣のグループを選択しながら、スイッチ番号が1mod4、2mod4、3mod4、0mod4となる1段目のスイッチを順次選択したグループの順番に対応させて選択していく。この場合、スイッチM13は、グループ301、304、303、302の順にグループ選択することになる。そして、スイッチM14〜M16は、スイッチM1に対するスイッチM2〜M4と同様に1段目のスイッチを選択する。
このように、スイッチM1〜M16に接続されるスイッチB1〜M16を選択すると、スイッチM1〜M16とスイッチB1〜B16の結線は、図4に示す結線となる。
ここで、図4のように接続した場合の、シフト通信パターンを用いて全対全通信を行った場合のフェーズ9における信号の流れについて説明する。フェーズ9の場合、各ノードが送信する信号の送信先のノード番号は、実線305で囲われた領域に記載されている、各ノードに対応している番号となる。
そして、実線305で囲われたノード番号に対して各ノードから信号が送信されると、スイッチM1〜M16は、それぞれの下に記載された番号を送信先のノード番号とする信号を受信する。これらの番号は全て異なる番号であり、スイッチM1〜M16とスイッチB1〜B16とを結ぶ経路では、信号の経路競合が発生しない。したがって、1段目のスイッチと2段目のスイッチとの間では、信号伝送において広い帯域が確保できている。
また、スイッチM1〜M16の下に記載された番号を送信先のノード番号とする信号は、スイッチM1〜M16のそれぞれ接続された異なる3段目のスイッチに送られる。したがって、スイッチM1〜M16とスイッチT1〜T16とを結ぶ経路では、信号の経路競合が発生しない。そのため、2段目のスイッチと3段目のスイッチとの間でも、信号伝送において広い帯域が確保できている。
さらに、スイッチB1〜B9に対する近接接続スイッチは、従来のFat Treeの構成を用いた場合に比べて増えている。従来のFat Treeの構成の場合、スイッチB1に対する近接接続スイッチは、スイッチB2〜B6だけであった。これに対して、図4では、例えば、スイッチB1に対する近接接続スイッチは、スイッチB2〜B6だけでなく、B6、B8、B10〜B12、B14及びB16も含まれる。このように、本実施例に係るネットワーク装置は、従来の図13に示すような構成に比べて、平均ホップ数が削減される。
以上に説明したように、本実施例では、各2段目グループの先頭の2段目のスイッチに接続する1段目のスイッチを選択する1段目グループを1つ隣、2つ隣というように数を順次増やしていく方法で結線を行なっている。そして、2nポートのスイッチを用いた3段のネットワーク装置において、nが素数であれば、本実施例で説明した同様の結線方法を用いることで、各1段目のスイッチに対する近接接続スイッチの数を最大のn(n−1)とすることができる。なぜなら、nが素数でない場合、本実施例で説明した結線方法では、1段目のスイッチを選択した場合、それに接続される2段目のスイッチにおいて、一部共通の1段目のスイッチを選択してしまうからである。
次に、実施例3に係るネットワーク装置について説明する。図5は、実施例3に係るネットワーク装置の構成図である。本実施例に係るネットワーク装置は、実施例2とは異なる方法を用いることで、nが素数以外の場合に1段目のスイッチに対する近接接続スイッチを最大にした構成である。そこで、以下では、nが素数以外の場合に1段目のスイッチに対する近接接続スイッチを最大にする結線方法について説明する。
そこで、実施例1の変形例における8ポートスイッチを用いた3段のネットワーク装置の場合を例に、1段目のスイッチに対する近接接続スイッチを最大にする方法を説明する。
図6−1は、図4の結線における2段目のスイッチと1段目のスイッチとの接続関係を表す図である。図6−1の方格501〜504は、方格の紙面に向かって左側に記載した番号を有する2段目のスイッチとその行に並ぶ番号を有する1段目のスイッチとが接続関係にあることを表している。例えば、方格501におけるM1の行に並ぶB1〜B4は、スイッチB1〜B4がスイッチM1と接続関係にあることを表している。また、各方格の列は紙面に向かって左から順にそれぞれ1mod4、2mod4、3mod4、0mod5となるノード番号を有するスイッチであることを表している。
さらに、図6−2は、図4の結線における2段目のスイッチと1段目グループとの接続関係を表す図である。図6−2は、図4における1段目のスイッチをそのスイッチが属する1段目グループの番号の末尾の数字に変更したものである。
図6−1における、格子511及び512からスイッチB1及びB3がスイッチM1に接続していることが分かる。また、格子531及び532からスイッチB1及びB3がスイッチM9に接続していることが分かる。すなわち、スイッチB1及びB3は、共通の2段目のスイッチと接続されている経路を2つ有する。この重なりが解消されれば、近接接続スイッチの数がさらに増える。そこで、格子511及び512と格子531及び532との重なりを解消するために、M9の行にB3が出現しないようにすればよい。すなわち、方格503が、縦方向及び横方向ともに同じ数が存在しない並びとなるラテン方格を構成すればよい。
次に、方格502及び504における、格子521及び522と格子541及び542との重なりの解消について説明する。図6−2において、方格506及び方格508は共にラテン方格である。しかし、格子561及び562と格子581及び582とにおいて重なりが生じている。そこで、方格505〜508のそれぞれを、相互に直交するラテン方格(以下では、「相互直交ラテン方格」という。)にすることで重なりが解消される。
相互直交ラテン方格は、例えば、一辺の長さをnとすると、nが素数のべき乗であるとき、n−1個の相互直交ラテン方格が存在し、それぞれ求めることができる。この算出には、既知の相互直交ラテン方格導出方法を用いればよい。
そこで、図6−2の各方格は、一辺の長さが4であり、素数2の2乗である。そこで、既知の相互直交ラテン方格導出方法を用いて、図6−2の各方格に対応する相互直交ラテン方格を求めることができる。図7−1は、相互直交ラテン方格による2段目のスイッチと1段目グループとの接続関係を表す図である。方格601〜604は、図6−2の方格505〜508を相互直交ラテン方格に変換したものである。方格601〜604は、相互に直交するラテン方格となっている。
次に、方格601〜604に対応する末尾の数の1段目グループに含まれ、且つ各方格の紙面に向かって左から順にそれぞれ1mod4、2mod4、3mod4、0mod5となるノード番号を有するスイッチを割り当てて、図7−2に示す方格605〜608を生成する。図7−2は、直交ラテン方格による2段目のスイッチと1段目のスイッチとの接続関係を表す図である。すなわち、図7−2に示す接続関係となるように、2段目のスイッチと1段目のスイッチとを結線することで、近接接続スイッチを最大にしたネットワーク装置が生成できる。図7−2に示す接続関係になるように2段目のスイッチと1段目のスイッチとを結線すると、図5に示す接続関係を有するネットワーク装置が生成できる。
図5に示すネットワーク装置では、いずれの1段目のスイッチに対しても近接接続スイッチの数が12となり、最大となる。
以上に説明したように、本実施例に係るネットワーク装置は、縦に2段目グループ毎に各2段目のスイッチに接続される1段目のスイッチを行に並べ、列が4で割った余りが1、2、3、0となる方格を生成した場合、各方格が相互直交ラテン方格となっている。これにより、1段目のスイッチに対する近接接続スイッチの数を最大にすることができ、平均ホップ数を最小にすることができる。
次に、用いるスイッチのポート数を変化させた場合の、実施例2及び実施例3の結線方法を用いて結線を行った場合の近接接続スイッチの数について説明する。図8は、スイッチのポート数に対応する近接接続スイッチ数を表す図である。また、図9は、スイッチのポート数に対応する近接接続スイッチの割合を表す図である。
図8は、縦軸を近接接続スイッチの数とし、横軸をスイッチのポート数としている。そして、図8のグラフ701が実施例2の結線方法を用いた場合の近接接続スイッチの変化を表している。また、三角の点で表される点が実施例3の結線方法を用いて実施例2の接続方法を修正した場合の近接接続スイッチの数を表している。さらに、グラフ702は、従来のFat Treeの結線方法を用いた場合の近接接続スイッチの数の変化を表している。
図9は、縦軸を任意のスイッチにおける他のスイッチ全てに対する近接接続スイッチの理論上の上限に対する割合とし、横軸をスイッチのポート数としている。そして、図9のグラフ703が実施例2の結線方法を用いた場合の近接接続スイッチの割合の変化を表している。また、三角の点で表される点が実施例3の結線方法を用いて実施例2の接続方法を修正した場合の近接接続スイッチの割合を表している。
図8のグラフ702ように、従来の結線方法では、スイッチのポート数が増えても、近接接続スイッチの数の増加は小さく抑えられてしまっている。これに対して、グラフ701のように、実施例2の結線方法を用いることで、スイッチのポート数が増えるに従い、近接接続スイッチが大きく増えていることがわかる。また、従来の結線方法では、スイッチのポート数の増加に対する近接接続スイッチの数の増加の割合が低いため、近接接続スイッチの割合は減少していてしまう。これに対して、グラフ703のように、実施例2の結線方法を用いることで、いくつかのポート数においては、近接接続スイッチの割合を上げることができる。すなわち、実施例2の結線方法を用いることで、平均ホップ数を従来に比べて大きく低減することができる。
さらに、図8の三角の点で表されるように、ポート数が素数のべき乗の場合、実施例3の結線方法を用いることで、近接接続スイッチの数を実施例2の場合よりも増やして最大にすることができる。また、図9の三角の点で表されるように、ポート数が素数のべき乗の場合、実施例3の結線方法を用いることで、近接接続スイッチの割合を理論上の上限値まで増やすことができる。
次に、実施例4に係るネットワーク管理装置について説明する。図10は、実施例4に係るネットワーク管理装置のブロック図である。本実施例に係るネットワーク管理装置は、実施例1〜3のいずれかの方法を用いて1段目〜3段目のスイッチの結線を求め、求めた結線状態を操作者に提示する装置である。ここでは、実施例1の方法を用いて結線を求める場合について説明する。
入力制御部801は、操作者からキーボードなどを用いて入力されたスイッチのポート数を受信する。例えば、6ポートスイッチを用いる場合、入力制御部801は、ポートするとして6を受信する。そして、入力制御部801は、受信したポート数をスイッチ配置部802へ出力する。
スイッチ配置部802は、受信したポート数の半分の数を2乗することで、1段目〜3段目のスイッチそれぞれの数を求める。例えば、6ポートスイッチの場合、スイッチ配置部802は、1段目〜3段目のスイッチがそれぞれ9個ずつあるとする。そして、スイッチ配置部802は、1段目のスイッチを画面の一番下に横に並べて配置するよう表示制御部805へ通知する。次に、スイッチ配置部802は、2段目のスイッチを画面上の1段目のスイッチの上に横に並べて配置するよう表示制御部805へ通知する。さらに、スイッチ配置部802は、3段目のスイッチを画面上の2段目のスイッチの上に横に並べて配置するよう表示制御部805へ通知する。
さらに、スイッチ配置部802は、画面に並べた1段目のスイッチに対して、画面に向かって左から順にB1、B2、・・・として番号をふっていく。また、スイッチ配置部802は、画面に並べた2段目のスイッチに対して、画面に向かって左から順にM1、M2、・・・として番号をふっていく。さらに、スイッチ配置部802は、画面に並べた3段目のスイッチに対して、画面に向かって左から順にT1、T2、・・・として番号をふっていく。
そして、スイッチ配置部802は、スイッチのポート数及び各スイッチの番号を第1配線部803及び第2配線部804へ出力する。
第1配線部803は、スイッチのポート数及びスイッチのポート数及び各スイッチの番号をスイッチ配置部802から受信する。
そして、第1配線部803は、2段目のスイッチをポート数の半分の数で番号の小さい順にグループ化する。また、第1配線部803は、3段目のスイッチをポート数の半分の数で番号の小さい順にグループ化する。
そして、第1配線部803は、2段目のスイッチの各グループに含まれるスイッチを、画面上で対応する上の位置にある3段目のスイッチのグループに含まれる全てのスイッチと接続する結線を求める。そして、第1配線部803は、求めた結線を表示制御部805へ出力する。
第2配線部804は、スイッチのポート数及びスイッチのポート数及び各スイッチの番号をスイッチ配置部802から受信する。
そして、第2配線部804は、実施例1の結線方法を用いて1段目のスイッチと2段目のスイッチとを接続する結線を求める。そして、第2配線部804は、求めた結線を表示制御部805へ出力する。
表示制御部805は、スイッチ配置部802からの指示に従い、1段目〜3段目のスイッチを画面に表示させる。次に、表示制御部805は、第1配線部803から受信した結線に従い、2段目のスイッチと3段目のスイッチとの結線を画面に表示させる。次に、表示制御部805は、第2配線部804から受信した結線に従い、1段目のスイッチと2段目のスイッチとの結線を画面に表示させる。
次に、図11を参照して、1段目のスイッチと2段目のスイッチとの結線の決定の流れについて説明する。図11は、1段目のスイッチと2段目のスイッチとの結線の決定のフローチャートである。ここでは、図1に示した6ポートスイッチを用いた3段の構成を例に説明する。加えて、以下の説明では各スイッチを示す場合、図1に示すスイッチの番号を付加した名前で説明する。すなわち、各スイッチをスイッチB1〜B9、M1〜M9、T1〜T9として表す。また、各ノードを、図1に示すノード番号を付加した名前で説明する。すなわち、各ノードをノード1〜27として表す。
スイッチ配置部802は、1段目のスイッチとしてスイッチB1〜B9を配置し、2段目のスイッチとしてスイッチM1〜M9を配置し、3段目のスイッチとしてスイッチT1〜T9を配置する(ステップS1)。
次に、第1配線部803は、2段目のスイッチのポート数の半分の数で2段目及び3段目のスイッチを番号順にグループ化していく。そして、第1配線部803は、上下に対応する2段目のスイッチのグループのスイッチと3段目のスイッチのグループのスイッチとを全てが相互に接続するように配線する(ステップS2)。
第2配線部804は、2段目のスイッチをスイッチ番号順に分け、3つの2段目グループi(i=1、2、3)とする(ステップS3)。ここで、2段目グループは、グループ1からグループ番号を増やしていき順にグループ番号3になると、次にグループ1に戻るものとする。すなわち、2段目グループ4は、2段目グループ1である。
第2配線部804は、1段目のスイッチをスイッチ番号順に分け、3つの1段目グループj(j=1、2、3)とする(ステップS4)。ここで、1段目グループは、グループ1からグループ番号を増やしていき順にグループ番号3になると、次にグループ1に戻るものとする。すなわち、2段目グループ4は、2段目グループ1である。
さらに、第2配線部804は、接続されているノードの最小のノード番号を9で割った余りが等しいものを同じグループとしていき1段目のスイッチをグループ分けする。すなわち、スイッチB1〜B9を、スイッチB1、B4、及びB7、スイッチB2、B5及びB8、並びにスイッチB3、B6及びB9の3グループに分ける。ここで、スイッチB1、B4、及びB7のグループをグループ1−1とする。また、スイッチB2、B5及びB8のグループをグループ1−2とする。また、スイッチB3、B6及びB9のグループをグループ1−3とする(ステップS5)。
第2配線部804は、i=1とする(ステップS6)。
第2配線部804は、2段目グループiのスイッチ番号が最小である先頭のスイッチに対して、1段目グループ1からグループ1−1のスイッチを選択する(ステップS7)。
次に、第2配線部804は、第2グループiの先頭のスイッチに対して、1段目グループ1+(i−1)からグループ1−2のスイッチを選択する(ステップS8)。
さらに、第2配線部804は、第2グループiの先頭のスイッチに対して、1段目グループ1+2(i−1)からグループ1−3のスイッチを選択する(ステップS9)。
第2配線部804は、i=3であるか否かを判定する(ステップS10)。i=3でなければ(ステップS10:否定)、第2配線部804は、i=i+1として(ステップS11)、ステップS7に戻る。
これに対して、i=3の場合(ステップS10:肯定)、第2配線部804は、各2段目グループの先頭の隣のスイッチに対して、グループ1−1〜1−3のそれぞれの選択において先頭のスイッチに対して選択した1段目グループの隣のグループを抽出する。そして、第2配線部804は、先頭の隣のスイッチ対して、グループ1−1〜1−3の中の先頭のスイッチが選択した同じグループのスイッチを、その抽出した1段目グループから選択する(ステップS12)。
さらに、第2配線部804は、各2段目グループの先頭の2つ隣のスイッチに対して、グループ1−1〜1−3のそれぞれの選択において先頭のスイッチに対して選択した1段目グループの2つ隣のグループを抽出する。そして、第2配線部804は、先頭の2つ隣のスイッチ対して、グループ1−1〜1−3の中の先頭のスイッチが選択した同じグループのスイッチを、その抽出した1段目グループから選択する(ステップS13)。
ここで、本実施例では、実施例1の結線方法の場合について説明したが、実施例2及び実施例3の場合も同様である。
以上に説明したように、本実施例に係るネットワーク管理装置は、平均ホップ数を抑え且つ信号伝送において広い帯域幅を確保できる結線状態を提示する。これにより、利用者は、平均ホップ数を抑え且つ信号伝送において広い帯域幅を確保できる結線状態を容易に知ることができ、適切なネットワーク構成を迅速に構築することができる。
さらに、図12を参照して、1段目のスイッチと2段目のスイッチとの結線の決定の他の例の流れについて説明する。図12は、1段目のスイッチと2段目のスイッチとの結線の決定の他の例のフローチャートである。ここでも、図1に示した6ポートスイッチを用いた3段の構成を例に説明する。加えて、以下の説明では各スイッチを示す場合、図1に示すスイッチの番号を付加した名前で説明する。すなわち、各スイッチをスイッチB1〜B9、M1〜M9、T1〜T9として表す。また、各ノードを、図1に示すノード番号を付加した名前で説明する。すなわち、各ノードをノード1〜27として表す。
スイッチ配置部802は、1段目のスイッチとしてスイッチB1〜B9を配置し、2段目のスイッチとしてスイッチM1〜M9を配置し、3段目のスイッチとしてスイッチT1〜T9を配置する(ステップS21)。
次に、第1配線部803は、2段目のスイッチのポート数の半分の数で2段目及び3段目のスイッチを番号順にグループ化していく。そして、第1配線部803は、上下に対応する2段目のスイッチのグループのスイッチと3段目のスイッチのグループのスイッチとを全てが相互に接続するように配線する(ステップS22)。
次に、第2配線部804は、接続されているノードの最小のノード番号を9で割った余りが等しいものを同じグループとしていき1段目のスイッチをグループ分けする。すなわち、スイッチB1〜B9を、スイッチB1、B4、及びB7、スイッチB2、B5及びB8、並びにスイッチB3、B6及びB9の3グループに分ける。ここで、スイッチB1、B4、及びB7のグループをグループ1−1とする。また、スイッチB2、B5及びB8のグループをグループ1−2とする。また、スイッチB3、B6及びB9のグループをグループ1−3とする(ステップS23)。
さらに、第2配線部804は、j=0とする(ステップS24)。
また、第2配線部804は、i=1とする(ステップS25)。
第2配線部804は、スイッチM(3j+1)に接続する1段目スイッチをグループ(1−i)から選ぶ(ステップS26)。
次に、第2配線部804は、スイッチM(3j+2)に接続する1段目スイッチをグループ(1−i)の残りのスイッチから選ぶ(ステップS27)。
次に、第2配線部804は、スイッチM(3j+3)に接続する1段目スイッチをグループ(1−i)の残りのスイッチから選ぶ(ステップS28)。
第2配線部804は、i=3か否かを判定する(ステップS29)。i=3で無い場合(ステップS29:否定)、第2配線部804は、i=i+1として(ステップS30)、ステップS26に戻る。
これに対して、i=3の場合(ステップS29:肯定)、第2配線部804は、3j+3=27か否かを判定する(ステップS31)。3j+3=27でない場合(ステップS31:否定)、第2配線部804は、j=j+1として(ステップS32)、ステップS25に戻る。
これに対して、3j+3=27の場合(ステップS31:肯定)、第2配線部804は、1段目スイッチに対する近接接続スイッチの平均が3より大きいか否かを判定する(ステップS33)。近接接続スイッチの平均が3つ以下の場合(ステップS33:否定)、第2配線部804は、ステップS24に戻る。
これに対して、近接接続スイッチの平均が3より大きい場合(ステップS33:肯定)、第2配線部804は、1段目のスイッチと2段目のスイッチの配線をその接続状態で決定する。そして、表示制御部805は、スイッチ配置部802により配置された各スイッチを第1配線部803及び第2配線部804によって決定された配線により結線した状態を表示部に表示させる(ステップS34)。
ここで、以上では、近接接続スイッチの数が、少なくとも従来のFat Tree構成よりも多くなる結線を求める場合で説明したが、これは他の方法でも良い。例えば、第2配線部802は、ステップS4〜ステップ9までの流れを全ての1段目のスイッチの組み合わせに対して行い、それぞれの場合の近接接続スイッチの平均を記憶しておき、平均値が最大となるものを配線として決定してもよい。