図1に、実施例の情報処理装置及び情報処理回路の例が示される。実施例の情報処理装置の一例である通信装置100は、コントローラ110、バス120、NIC(Network Interface Card)130、NIC140、スイッチユニット150、及び信号線160を含む。コントローラ110は、CPU(Central Processing Unit)111、及びメモリ112を有し、バス120に接続されている。NIC130、NIC140、及びスイッチユニット150は、バス120に接続されている。そして、この通信装置100は、ネットワークにおけるルータやブリッジ等のパケット等を処理する装置として適用可能な装置である。
通信装置100における各種処理を実行するためのプログラムがメモリ112に格納され、CPU111がメモリ112からこのプログラムを読み出し、各種処理を実行する。CPU111によって実行される各種処理に従って、NIC130、NIC140、及びスイッチユニット150の動作がバス120を介して制御される。なお、メモリ112に格納されるプログラムは、ROM(Read Only Memory)やフラッシュメモリなどの不揮発性メモリ、又はHDD(Hard Disk Drive)等の磁気ディスク装置に格納されたプログラムがメモリ112に読み込まれたプログラムである。
なお、CPU111は、各種処理を実行するための1以上のCPUコアを含んでいてもよい。また、各CPUコアは1以上のプロセッサを含んでいてもよい。メモリ112は、例えばDRAM(Dynamic Random Access Memory)などのRAMである。
NIC130は、NIC130にパケット等のデータを入力するための入力回路131、NIC130からパケット等のデータを出力するための出力回路132、プロセッサ133、及びバッファ134を含む。NIC130は、通信装置100の外部に接続される外部装置と物理ポート及び信号線135を介して接続される。なお、物理ポート及び信号線135の数や構成に従って、NIC130に含まれる入力回路131及び出力回路132の各々を1以上の数としてもよい。なお、入力回路131及び出力回路132の各々は、ハードウェア構成として、終端回路やレベルシフト回路等を含んでもよい。他方で、NIC140は、NIC130にパケット等のデータを入力するための入力回路141、NIC130からパケット等のデータを出力するための出力回路142、プロセッサ143、及びバッファ144を含む。NIC140は、通信装置100の外部に接続される外部装置と物理ポート及び信号線145を介して接続される。なお、物理ポート及び信号線145の数や構成に従って、NIC140に含まれる入力回路141及び出力回路142の各々を1以上の数としてもよい。なお、入力回路141及び出力回路142の各々は、ハードウェア構成として、終端回路やレベルシフト回路等を含んでもよい。
上述されたNIC130及びNIC140に含まれる通信回路である入力回路131や入力回路141が情報処理回路の一例である。なお、実施例の通信装置100はNIC130やNIC140の数や構成等に限定されない。
NIC130及びNIC140は、信号線160を介してスイッチユニット150と接続される。例えば、通信装置100の外部から物理ポート及び信号線135を介してNIC130に入力されるパケット等のデータは、入力回路131により信号線160に送信され、信号線160を介してスイッチユニット150に含まれるスイッチ回路151又はスイッチ回路152に送信される。スイッチ回路151及びスイッチ回路152は、送信されたパケット等のヘッダに含まれる送信先の情報に基づいて、例えばNIC140が送信先であると判定すると、信号線160を介してNIC140の出力回路142にパケット等を送信する。出力回路142は、パケットの送り先に関する情報に従って、物理ポート及び信号線145を介してこのパケット等を送信する。なお、通信装置100おいてスイッチユニット150に含まれるスイッチ回路はスイッチ回路151及びスイッチ回路152に限定されず、1以上の数であればよい。後述されるように、スイッチ回路151及びスイッチ回路152は、通信装置100におけるパケット送信の負荷を分散するためのスイッチングを実行する。
図1に示されるハードウェア構成によって、実施例の情報処理装置及び情報処理回路が、後述される機能ブロックとして機能し、後述される処理が実行される。
図2に、実施例の情報処理回路及びスイッチ回路の例が示される。図2には、図1に例示された入力回路131、出力回路132、入力回路141、出力回路142、スイッチ回路151、及びスイッチ回路152が信号線160を介して接続される関係が示される。入力回路131はデマルチプレクサ231を含み、出力回路132はマルチプレクサ232を含み、入力回路141はデマルチプレクサ241を含み、出力回路142はマルチプレクサ242を含む。ここで、後述の説明のために、n番目の入力回路をIG[n]、n番目の出力回路をEG[n]、及びn番目のスイッチ回路をSW[n]と表記するものとし、入力回路131をIG[0]、出力回路132をEG[0]、入力回路141をIG[1]、出力回路142をEG[1]、スイッチ回路151をSW[0]、及びスイッチ回路152をSW[1]などと表記することとする。なお、各々の回路が2つずつであるのは例示であり、実施例はこれに限定されない。また、入力回路の数と出力回路の数が異なっていてもよい。
例えば、IG[0]に入力されたパケット等のデータは、デマルチプレクサ231によりSW[0]又はSW[1]の何れかが送信先として選択されることで、選択されたスイッチ回路に信号線160を介して送信される。例えば、SW[0]にパケット等のデータが送信されると、SW[0]は、パケット等のヘッダに含まれる宛先の情報に従って、宛先となるEG[0]又はEG[1]に信号線160を介してパケット等のデータを送信する。
このように、複数のスイッチ回路SW[0]及びSW[1]を用いることによって、通信装置100内の通信の負荷分散を実行し、高速なスイッチングを行うことが可能となる。例えば、IG[0]にパケットを入力するための信号線が10Gbps、40Gbps、100Gbpsやそれ以上といった帯域を許容するような信号線であったとしても、複数のスイッチ回路はパケットの中身を見て、転送先を確認しながら複数の出力回路の1つを選択しなければならず、スイッチ回路の負荷は大きい。ここでパケットを分散させることで並列的にスイッチを動作させ、これにより高速な通信が可能となる。また、IG[0]に入力されるパケットの信号線の一つが1Gbpsであっても入力ポートが48個あるような仕様の場合、IG[0]に入力される通信量は最大48Gbpsとなるが、この通信を複数のスイッチ回路に分散させる並列的な通信を実行することで、これにより高速な通信が可能となる。例えば、IG[0]にパケットを入力するための信号線が10Gbpsの帯域を許容するような信号線であった場合に、IG[0]と複数のスイッチ回路SW[0]及びSW[1]の間の信号線160の各々の許容帯域が5Gbpsであったとしても、複数のスイッチ回路SW[0]及びSW[1]にパケットを振り分けることによって、通信装置100内では10Gbpsの通信が可能となる。このように振り分けられたパケットは、パケットの宛先に従って、複数のスイッチ回路SW[0]及びSW[1]からEG[0]又はEG[1]に並列的に送信され、それらがEG[0]又はEG[1]においてマルチプレクシングされて通信装置100から出力される。
上述したように、通信装置100内のスイッチ回路の数によって、通信装置100内で許容できる帯域を変えることができる。例えば、スイッチ回路の数を増やした場合には、スイッチ回路の数と信号線160が許容する帯域との関係により、通信装置100内で許容できる帯域を増やすことができる。反対に、スイッチ回路の数を減らした場合には、通信装置100内で許容できる帯域は減ることになるが、スイッチ回路の数を減らした分、通信装置100の回路規模を小さくできる。このように、スイッチ回路の数によって、用途に応じた効率性の高いスイッチングが可能となる。
なお、SW[0]又はSW[1]の何れかの選択は、図1に示されるプロセッサ133又は143によって実行されてもよく、SW[0]又はSW[1]に送信されるパケット等のスケジューリングのために、送信されるパケットが一時的にバッファ134又はバッファ144に格納されてもよい。また、通信装置100内の処理単位に合わせてデータが分割される場合には、SW[0]又はSW[1]に送信されるパケット等のデータが、通信装置100が受信するパケットとは異なるデータサイズであってもよい。
図3に、スイッチングされる送信データの例が示される。図3に示されるIG[0]、EG[0]、IG[1]、EG[1]、SW[0]、及びSW[1]の接続関係は、図2に示される接続関係と同じように信号線によって接続されているものとする。ここで、IG[0]及びIG[1]に入力されるデータをパケットとして説明するが、上述した通り、通信装置内の処理単位に分割された単位であってもよい。なお、以下、パケットの表記として、宛先となる出力回路がEG[0]である場合には[0]と表記し、宛先となる出力回路がEG[1]である場合には[1]と表記する。また、以下、IG[0]又はIG[1]に入力されるパケット[0]のうち、入力される順序を上付き文字で表記する。例えば、IG[0]に1番目に入力されるパケットを[0]1、2番目に入力されるパケットを[0]2などと表記する。さらに、図3に図示されるように、IG[0]に入力されるパケットを実線の四角で表記し、IG[1]に入力されるパケットを点線の四角で表記することとする。
IG[0]には、EG[0]及びEG[1]を宛先とするパケットの各々が5Gbpsの通信量で交互に、全体として10Gbpsの通信量で入力されているとし、これが、図3の区間300において実線の四角と共に[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・と示される。また、IG[1]には、EG[0]及びEG[1]を宛先とするパケットの各々が5Gbpsの通信量で交互に、全体として10Gbpsの通信量で入力されているとし、これが、図3の区間310において点線の四角と共に[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・と示される。なお、IG[0]とSW[0]及びSW[1]との間を接続するための信号線は、最大5Gbpsの帯域を許容する信号線であるとする。また、IG[1]とSW[0]及びSW[1]との間の信号線、EG[0]とSW[0]及びSW[1]との間の信号線、EG[1]とSW[0]及びSW[1]との間の信号線も同様に最大5Gbpsの帯域を許容する信号線であるとする。
IG[0]に入力されたパケットは、負荷分散のためにSW[0]及びSW[1]が送信先として交互に選択されることで、SW[0]及びSW[1]に交互に送信されることとする。この場合、IG[0]に入力されたパケット[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・が、SW[0]及びSW[1]に交互に振り分けられる。結果として、区間320に示されるように、実線で示されるパケット[0]1、[0]2、[0]3・・・がIG[0]からSW[0]に送信され、実線で示されるパケット[1]1、[1]2、[1]3・・・がIG[0]からSW[1]に送信される。他方で、IG[1]に入力されたパケットも、負荷分散のためにSW[0]及びSW[1]が送信先として交互に選択されることで、SW[0]及びSW[1]に交互に送信されることとする。この場合、IG[1]に入力されたパケット[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・が、SW[0]及びSW[1]に交互に振り分けられる。結果として、区間320に示されるように、点線で示されるパケット[0]1、[0]2、[0]3・・・がIG[0]からSW[0]に送信され、点線で示されるパケット[1]1、[1]2、[1]3・・・がIG[1]からSW[1]に送信される。
このようにしてSW[0]に送信された実線で示されるパケット[0]1、[0]2、[0]3・・・、及び点線で示されるパケット[0]1、[0]2、[0]3・・・がSW[0]から宛先であるEG[0]に順次送信されることとなるが、SW[0]とEG[0]との間の信号線では輻輳が生じてしまう。その理由は、上述したようにSW[0]とEG[0]との間の信号線の帯域は5Gbpsであるものの、実線で示されるパケット[0]1、[0]2、[0]3・・・の通信量が5Gbpsであり、かつ、点線で示されるパケット[0]1、[0]2、[0]3・・・の通信量が5Gbpsであるため、それらの合計である10Gbpsの通信がSW[0]とEG[0]との間に発生してしまうからである。実際には、SW[0]からEG[0]へのパケット送信の通信量は、信号線の帯域である5Gbpsに制約されてしまい、所望のスループットが得られない。この場合、図3に示されるように、EG[0]への通信経路としてはSW[1]とEG[0]との間の通信経路があるにもかかわらず、この通信経路にはパケットが流れずに効率的に負荷分散されていないことがわかる。このような非効率な通信状況は、宛先をEG[1]とするパケットの通信にも生じてしまっている。
図3に沿って説明したように、複数の入力回路に入力されるパケットの順序と複数のスイッチ回路の選択順序の関係によっては、複数の入力回路と複数のスイッチ回路との間のパケット振り分けが一見分散されているようになっていても、特定の宛先のパケットが特定のスイッチ回路に偏って送信されてしまうことがある。このため、複数のスイッチ回路と複数の出力回路との間の特定の信号線に通信が偏ってしまい、複数のスイッチ回路と複数の出力回路の間に通信に使用されていない信号線があるにもかかわらず、通信のスループットが特定の信号線の許容帯域に制約されてしまう。この場合、複数のスイッチ回路を使用した通信の負荷分散が効率的に実行されていないこととなってしまう。
図4に、スイッチングされる送信データの他の例が示される。図4Aに示されるIG[0]、EG[0]、IG[1]、EG[1]、SW[0]、及びSW[1]の接続関係は、図2に示される接続関係と同じように信号線によって接続されているものとする。図4Bには、IG[0]及びIG[1]においてパケットを送信する際にスイッチ回路を選択するために参照される情報が示される。
図4Aに示されるように、IG[0]には、EG[0]及びEG[1]を宛先とするパケットの各々が5Gbpsの通信量で交互に、全体として10Gbpsの通信量で入力されているとし、これが、図4の区間400において実線の四角と共に[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・と示される。また、IG[1]には、EG[0]及びEG[1]を宛先とするパケットの各々が5Gbpsの通信量で交互に、全体として10Gbpsの通信量で入力されているとし、これが、図4の区間410において点線の四角と共に[0]1、[1]1、[0]2、[1]2、[0]3、[1]3・・・と示される。なお、IG[0]とSW[0]及びSW[1]との間を接続するための信号線が最大5Gbpsの帯域を許容する信号線であるとする。
図4Bに示される情報では、EG[n]に対応する宛先No.と選択されるスイッチ回路SW[n]とが関連付けられており、IG[0]に入力されたパケットは、負荷分散のために、図4Bに示される情報に従ってSW[0]又はSW[1]に送信される。例えば、EG[0]にSW[0]が関連付けられている場合には、EG[0]を宛先とするパケットがIG[0]からSW[0]に送信される。そして、EG[0]を宛先とするパケットがIG[0]からSW[0]に送信されると、図4Bに示される情報において、EG[0]に関連付けられるスイッチ回路がSW[1]に更新される。図4Bに示される情報に従うと、宛先毎を同じにするパケットである場合には異なるスイッチ回路がパケットの送信先として順次選ばれることとなる。このようなパケットの振り分け規則としては、宛先を同じにするパケットが異なるスイッチ回路に連続して送信されないようにすればよいため、宛先毎にラウンドロビン方式を適用することで選択されるスイッチ回路を変更していったり、選択されるスイッチ回路を宛先毎にランダムに変更することで複数のスイッチ回路が宛先毎に等しい確率で選択されるようにしてもよい。なお、IG[1]におけるパケットを振り分けも上述されたIG[0]における振り分けと実質的に同じように実行されるため説明を省略する。
図4Bに示される情報に従ってSW[0]又はSW[1]が選択されたため、例えば、区間420に示されるように宛先をEG[0]とするパケット[0]1がIG[0]からSW[0]に送信され、図3の区間320とは異なりIG[0]からSW[1]に宛先をEG[0]とするパケット[0]2が送信されることとなる。従って、図3の区間330とは異なり、パケット[0]1及びパケット[0]2が共にSW[0]からEG[0]に送信されるのではなく、区間430において、パケット[0]1がSW[0]からEG[0]に送信され、かつパケット[0]2がSW[1]からEG[0]に送信されることとなる。このようにして、図3の場合とは異なり、IG[0]及びIG[1]とSW[0]及びSW[1]との間だけでなく、SW[0]及びSW[1]とEG[0]及びEG[1]との間でも通信経路の選択割合に偏りなくなり、パケット送信が分散され、通信の負荷分散が効率的に実行されることとなる。
図5に、スイッチングされる送信データの他の例が示される。図5Aには示される構成は、実質的には図2に示される接続関係と同じであるが、スイッチ回路SW[0]及びSW[1]に対して、n(nは2以上)の数の入力回路IG[n]及び出力回路EG[n]が接続される例であり、IG[n]及びEG[n]の一部は省略して示されている。図5Bには、図4Bに示される情報と同じであり、IG[0]及びIG[1]においてパケットを送信する際にスイッチ回路を選択するために参照される情報が示される。
図5Aの区間500に示されるように、例えば、IG[0]にパケット[0]1、[1]1、・・・、[n]1が入力され、次いで、パケット[0]2、[1]2、・・・、[n]2が入力されるとする。ここで、IG[0]が、図5Bに示される情報に従ってnの数のスイッチ回路の何れかを選択して、パケットを振り分けようとした場合、例えば宛先毎にラウンドロビン方式が適用されているもとで、図5Bにおいて宛先毎に関連付けられているスイッチ回路が同じだとすると、区間520に示されるように、nの数のパケットが特定のスイッチに連続して送信されることになってしまう。例えば、パケット[0]1、[1]1、・・・、[n]1は宛先が全て異なるものの、宛先毎に適用されたラウンドロビン方式に従って選択されるスイッチ回路が同じスイッチ回路SW[0]に重なってしまった場合に、nの数のパケットが連続してSW[0]に送信されてしまう。そして、IG[0]とSW[0]との間の信号線が許容できる通信量以上でパケット[0]1、[1]1、・・・、[n]1がSW[0]に連続して送信された場合には、通信量の大きな通信が局所的に発生し、輻輳が発生してしまう。このような局所的な通信の偏りが発生してしまうことを考慮して、連続送信されるパケットを一時的に格納する冗長バッファをスイッチ回路に実装したり、冗長なバッファに格納しきれない送信状態になった場合にはスイッチ回路から入力回路に対してバックプレッシャをかけてパケットを送信させないようにしたり、又はパケットを廃棄したりする。しかし、冗長なバッファは回路規模を大きくさせ、バックプレッシャやパケットの廃棄は通信効率を低下させてしまうといったジレンマがある。
ところで、このような局所的な通信の偏りは、入力されるパケットの宛先の順序に対して、宛先毎に選択されるスイッチ回路が同じスイッチ回路になってしまうことによって発生するため、選択されるスイッチ回路の選択肢が相対的に少ない場合によりいっそう発生しやすい。例えば、宛先となる出力回路EG[n]の数に対してスイッチ回路SW[n]の数が相対的に少ないと、異なる宛先に対して選択されるスイッチ回路の選択肢が少なくなるので、異なる宛先のパケットが特定のスイッチ回路に連続送信されるような局所的な通信が発生しやすい。これは、上述したようなスイッチ回路の数を減らして通信装置100の回路規模を小さくするような用途の場合には、よりいっそう顕著になってしまう。例えば、回路規模を小さくするためにスイッチ回路SW[n]の数を減らした場合に、宛先毎に選択されるスイッチ回路が連続する可能性が高まり、その結果、局所的な通信を吸収するためのバッファサイズを上回るようなパケットの連続送信が発生してしまう。そして、局所的な通信を吸収するために冗長なバッファのサイズを大きくしてしまっては、回路規模が小さくしたい目的と相反してしまうことになる。
以下に説明する実施例によれば、宛先が同じ場合に異なる中継回路を経由させる所定の規則のもとで異なる宛先に送られる複数のデータが特定の中継回路に偏って送信されないよう送信予定のデータを他の中継回路に送ることで、特定の中継回路へ偏ってデータが送信されることが抑制される。例えば、特定の中継回路に連続的にデータが送信されることが抑制される。なお、中継回路とは、パケットや処理単位のデータを中継させる中継回路等であり、宛先への経路変更を実行するスイッチ回路や、パケットや処理単位のデータに対して所定の処理を実行したうえでそれらを中継させる処理回路等も含まれる。
図6に、実施例の情報処理装置及び情報処理回路の機能ブロックの例が示される。実施例の情報処理装置や情報処理回路では、図1に示されるNIC130やNIC140に含まれるプロセッサ133や143によってプログラムが実行されることにより、識別部600、情報管理部610、第1判定部(全体判定用)631及び第2判定部(宛先単位判定用)632を含む判定部630、及び選択部640として機能する。また、図1に示されるNIC130やNIC140に含まれるメモリやレジスタにより記憶部620が実現される。パケット等の送信データが識別部600に入力され、図6に示される機能ブロックによって選択された中継回路へパケット等の送信データが送信される。各機能ブロックにより実行される処理を、図8に示される処理と対応させて後述する。
図7に、実施例の情報処理装置及び情報処理回路で使用される情報の例が示される。図7に示される情報は、図6に示される記憶部620に格納される情報であり、図1に示されるNIC130やNIC140に含まれるプロセッサ133やプロセッサ143によって参照される情報である。ここでは、中継装置としてのスイッチ回路が2つの場合に沿って例示する。ただし、実施例はこれに限定されず、中継装置としてのスイッチ回路が複数であってもよい。
図7Aに、宛先毎のカウント情報の例が示される。宛先毎のカウント情報では、宛先No.と宛先毎のカウント値とが関連付けられており、例えば、宛先No.は出力回路EG[n]の番号である。このカウント値として登録される値は入力回路IG[n]毎に管理される。例示すると、中継装置としてのスイッチ回路がSW[0]及びSW[1]の2つの場合、宛先をEG[0]とするパケットがIG[0]からSW[0]に送信されるとカウンタにより“−1”とカウントされ、かつ宛先をEG[0]とするパケットがIG[0]からパケットがSW[1]に送信されるとカウンタにより“+1”とカウントされ、それらの累積値がIG[0]に対応するカウント値として図7Aに示される情報に登録される。例えば、図7Aに示される宛先毎のカウント情報では、宛先をEG[0]とするパケットらがIG[0]からSW[0]及びSW[1]に送信された累積結果として、カウント値“+1”が登録されている。なお、この宛先毎のカウント情報は、後述される処理802等において参照される情報である。
図7Bに、送信データ全体に対するカウント情報の例が示される。送信データ全体に対するカウント情報では、パケット等の宛先にかかわらず、パケット等を送信先として選択されたスイッチ回路の累積結果が入力回路IG[n]毎に管理される。例えば、中継装置としてのスイッチ回路がSW[0]及びSW[1]の2つの場合、パケット等の宛先にかかわらず、パケット[0]、[1]、・・・、[n]がIG[0]からSW[0]に送信されるとカウンタにより“−1”とカウントされ、かつパケット[0]、[1]、・・・、[n]がIG[0]からSW[1]に送信されるとカウンタにより“+1”とカウントされ、それらの累積値がIG[0]に対応するカウント値として図7Bに示される情報に登録される。なお、この宛先毎のカウント情報は、後述される処理807等において参照される情報である。
図7Cに、所定の規則に従った振り分け情報の例が示される。所定の規則に従った振り分け情報では、宛先No.と選択される中継装置No.とが関連付けられており、例えば、宛先No.は出力回路EG[n]の番号であって、選択される中継装置はスイッチ回路SW[n]の番号である。また、所定の規則に従った振り分け情報は、入力回路IG[n]毎に管理される情報である。例えば、所定の規則がラウンドロビン方式であって、中継装置としてのスイッチ回路がSW[0]及びSW[1]の2つの場合、入力回路IG[0]において、出力回路EG[n]の番号に対して何れのスイッチ回路SW[n]を選択するのかが関連付けられている。そして、図7Cに示される情報に従ってスイッチ回路が選択されると、ラウンドロビン方式に従って、同じスイッチ回路が連続して選択されないように、出力回路EG[n]の番号に関連付けられるスイッチ回路SW[n]の番号が更新されることとなる。なお、この宛先毎のカウント情報は、後述される処理804及び809等において参照される情報である。
図8に、実施例の情報処理装置又は情報処理回路において実行される処理の例が示される。実施例の情報処理装置又は情報処理回路がパケット等の送信データを受信すると、図8に示される処理を開始するための処理800が実行される。
送信データの宛先を識別する処理801が、識別部600によって実行される。処理801では、パケット等の送信データのヘッダに含まれる宛先情報に基づいて、例えば出力回路EG[n]の番号が識別される。なお、通信回路において処理されるデータの処理単位が、通信装置100が受信するパケットとは異なるデータサイズに分割されている場合には、処理801において、この分割されたデータ毎に付与された宛先情報に基づいて宛先を識別すればよい。
識別された宛先に基づき、宛先毎のカウント情報を参照する処理802が、情報管理部610によって実行される。図7Aに例示された宛先毎のカウント情報が図6に示される記憶部620に格納されており、処理802では情報管理部610によって、この宛先毎のカウント情報が参照される。
識別された宛先のカウント情報が所定の条件を満たすか否かを判定する処理803が、判定部630に含まれる第2判定部(宛先単位判定用)632によって実行される。所定の条件を満たすと判定された場合には処理807に移り、所定の条件を満たさないと判定された場合には処理804に移る。処理803では、図7Aに例示された宛先毎のカウント情報に基づいて、識別された宛先に関連付けられたカウント値が所定の条件を満たすか否かが判定される。例えば、所定の条件を、SW[0]又はSW[1]に連続して2回以上送信先として選択された場合とすると、カウント値が“±2”未満であるか否かが処理803において判定される。さらに例示すれば、図7AにおいてEG[0]に関連付けられたカウント値は“+1”でありこれが“±2”未満なので、EG[0]が識別された宛先である場合には所定の条件を満たすと処理803において判定される。他方で、図7AにおいてEG[1]に関連付けられたカウント値は“−2”でありこれが“±2”未満ではないため、EG[1]が識別された宛先である場合には所定の条件を満たさないと処理803において判定される。なお、所定の条件は任意であり、実施例は上述の数値に限定されず適宜変更してよい。
識別された宛先に対応する振り分け情報を参照する処理804が、情報管理部610によって実行される。図7Cに例示された所定の規則に従った振り分け情報が図6に示される記憶部620に格納されており、処理804では情報管理部610によって、この所定の規則に従った振り分け情報が参照される。
振り分け情報に従って予定される送信先の中継回路を選択した場合に、識別された宛先のカウント情報に従った送信先の選択割合の偏りが減少するか否かを判定する処理805が、判定部630に含まれる第2判定部(宛先単位判定用)632によって実行される。偏りが減少すると判定された場合には処理812に移り、偏りが減少しないと判定された場合には処理806に移る。処理805では、例えば、識別された宛先がEG[1]である場合、図7C例示された振り分け情報において、判定時にEG[1]に関連付けられている中継回路の番号が参照される。そして、参照された中継回路を選択した場合に、EG[1]に関連付けられたカウント値が減少するか否かが判定される。すなわち、参照された中継回路を選択することで、EG[1]を宛先とするパケットが連続して同じ中継装置に送信されるか否かが判定される。これによって、EG[1]を宛先とするパケットの送信先となる中継装置の選択割合の偏りが減少するか否かが判定されることとなる。仮に、振り分け情報に従った中継装置を送信先としても、EG[1]を宛先とするパケットが連続して同じ中継装置に送信されないのであれば、振り分け情報に従った中継装置にパケットを送ることで中継装置の選択割合の偏りが解消され、通信装置及び通信回路のスイッチングの負荷が分散されるので、振り分け情報に従った中継装置を送信先として選択すればよい。逆に、振り分け情報に従った中継装置を送信先とすることで、EG[1]を宛先とするパケットが連続して同じ中継装置に送信される場合には、中継装置の選択割合がさらに偏ることで通信装置及び通信回路のスイッチングの負荷が分散されなくなるため、後述される処理806により宛先毎のカウント情報に従って送信先となる中継回路を選択して、この連続送信されてしまう偏りを解消することとなる。なお、実施例でいう連続送信とは、同じ宛先のパケットが特定の中継装置に連続して送信される場合や、例えば同じ宛先の2つのパケットが他の宛先のパケットを挟んで同じ中継装置に連続で送信されるような時間的に離れた連続送信の場合も含む。また、処理803の所定の条件の設定を調整して、予定される送信先にパケットが送信された後に処理805などの処理が実行されるようにしてもよい。
宛先毎のカウント情報に従って送信先となる中継回路を選択する処理806が、選択部640によって実行される。処理806では、ある宛先のパケットの送信先として特定の中継装置が連続して選択されてしまうことで通信経路の選択割合に偏りが生じてしまうことを抑制するために、所定の規則に従った振り分け情報に従って中継装置を選択するのではなく、宛先毎のカウント情報に従って中継装置を選択する。例えば、識別された宛先がEG[1]である場合、所定の規則に従った振り分け情報において、処理の実行時にEG[1]に関連付けられている中継装置の番号がSW[0]であると、EG[1]に関連付けられていたカウント値が“−2”であったため、SW[0]を選択することでこのカウント値が“−3”となってしまう。すなわち、EG[1]を宛先とするパケットがSW[0]に連続して送信されることになってしまい、通信経路の選択割合に偏りが生じてしまう。その偏りを抑制するために、処理806では、所定の規則に従った振り分け情報ではなく、カウント値の符号に従い、仮にカウント値がマイナスであればSW[1]を送信先として選択し、カウント値がプラスであればSW[0]を送信先として選択する。例えば、処理の実行時にEG[1]に関連付けられたカウント値が“−2”であるため、この符号に従い、SW[1]を送信先として選択することになる。そして、SW[1]が選択されたことで、後述される処理813により、EG[1]に関連付けられたカウント値が“+1”されることで“−1”に更新される。
送信データ全体に対応するカウント情報を参照する処理807が、情報管理部610によって実行される。図7Bに例示された送信データ全体に対応するカウント情報が図6に示される記憶部620に格納されており、処理807では情報管理部610によって、この送信データ全体に対応するカウント情報が参照される。
送信データ全体のカウント情報が所定の条件を満たすか否かを判定する処理808が、判定部630に含まれる第1判定部(全体判定用)631によって実行される。所定の条件を満たすと判定された場合には処理812に移り、所定の条件を満たさないと判定された場合には処理809に移る。処理808では、図7Bに例示された送信データ全体のカウント情報に基づいて、カウント値が所定の条件を満たすか否かが判定される。例えば、所定の条件を、SW[0]又はSW[1]が連続して4回以上送信先として選択された場合とすると、カウント値が“±4”未満であるか否かが処理808において判定される。さらに例示すれば、図7Bではカウント値は“−4”でありこれが“±4”未満ではないので、カウント値が所定の条件を満たさないと処理808において判定される。なお、カウント値が所定の条件を満たさないとは、出力回路EG[n]の宛先にかかわらず、パケットの送信先として特定の中継装置が連続して選択されており、図5に沿って説明したように、通信経路の選択割合に偏りが生じている場合である。図7Bの例では、SW[1]にパケットが連続して4回送信されてしまっており、通信経路の選択割合に偏りが生じている。なお、所定の条件は任意であり、実施例は上述の数値に限定されず適宜変更してよい。
識別された宛先に対応する振り分け情報を参照する処理809が、情報管理部610によって実行される。図7Cに例示された所定の規則に従った振り分け情報が図6に示される記憶部620に格納されており、処理809では情報管理部610によって、この所定の規則に従った振り分け情報が参照される。
振り分け情報に従って予定される送信先の中継回路を選択した場合に、送信データ全体のカウント情報に従う送信先の選択割合の偏りが減少するか否かを判定する処理810が、判定部630によって実行される。偏りが減少すると判定された場合には処理812に移り、偏りが減少しないと判定された場合には処理811に移る。処理805では、例えば、識別された宛先がEG[1]である場合、図7C例示された振り分け情報においてEG[1]に関連付けられた中継回路の番号が参照される。そして、参照された中継回路を選択した場合に、送信データ全体のカウント値が減少するか否かが判定される。すなわち、参照された中継回路を選択することで、宛先によらずパケットが同じ中継装置に送信されるか否かが判定される。これによって、パケットの送信先となる中継装置の選択割合の偏りが減少するか否かが判定されることとなる。仮に、振り分け情報に従った中継装置を送信先としても、宛先によらずパケットが連続して同じ中継装置に送信されないのであれば、振り分け情報に従った中継装置にパケットを送ることで中継装置の選択割合の偏りが解消され、通信装置及び通信回路のスイッチングの負荷が分散されるので、振り分け情報に従った中継装置を送信先として選択すればよい。逆に、振り分け情報に従った中継装置を送信先とすることで、パケットが連続して同じ中継装置に送信される場合には、中継装置の選択割合がさらに偏ることで通信装置及び通信回路のスイッチングの負荷が分散されなくなるため、後述される処理811により送信データ全体のカウント情報に従って送信先となる中継回路を選択して、この連続送信されてしまう偏りを解消することとなる。なお、実施例でいう連続送信とは、処理805の説明と併せて上述した連続送信の場合に加え、このように宛先によらずパケットが特定の中継装置に連続して送信される場合も含む。また、処理808の所定の条件の設定を調整して、予定される送信先にパケットが送信された後に処理810などの処理が実行されるようにしてもよい。
送信データ全体に対応するカウント情報に従って送信先となる中継回路を選択する処理811が、選択部640によって実行される。処理811では、パケットの宛先によらず、パケットの送信先として特定の中継装置が連続して選択されてしまうことで通信経路の選択割合に偏りが生じてしまうことを抑制するために、所定の規則に従った振り分け情報に従って中継装置を選択するのではなく、送信データ全体に対応するカウント情報に従って中継装置を選択する。例えば、全体の送信データに関連付けられたカウント値が“−4”であるにもかかわらず、所定の規則に従った振り分け情報に従ってSW[0]が送信先として選択されてしまうと、SW[0]へパケットが5回連続で送信されることとなり、通信経路の選択割合に偏りが生じてしまう。その偏りを抑制するために、処理806では、所定の規則に従った振り分け情報ではなく、カウント値の符号に従い、仮にカウント値がマイナスであればSW[1]を送信先として選択し、カウント値がプラスであればSW[0]を送信先として選択する。例えば、全体の送信データに関連付けられたカウント値が“−4”であるため、この符号に従い、SW[1]を送信先として選択することになる。そして、SW[1]が選択されたことで、後述される処理813により、全体の送信データに関連付けられたカウント値が“+1”されることで“−3”に更新される。これにより、図5に示されるような特定の中継装置にパケットが連続転送されてしまうことが抑制される。
所定の規則に従った振り分け情報に基づいて中継回路を選択する処理812が、選択部640によって実行される。処理812は、振り分け情報に従ってもパケットの連続送信が特定の範囲内に収まると判定された上で実行される処理のため、図7Cに示される振り分け情報に従って、パケットの送信先である中継装置が選択される。例えば、識別された宛先がEG[1]の場合、図7Cに示される振り分け情報において、処理812の実行時にEG[1]に関連付けられているSW[0]又はSW[1]の何れか一方が送信先として選択される。
選択された中継回路に従って宛先毎のカウント情報、送信データ全体に対応するカウント情報及び振り分け情報を更新する処理813が、情報管理部610によって実行される。処理813では、処理806、処理811、又は処理812により選択された中継回路に合わせて、図7Aに示される宛先毎のカウント情報、図7Bに示される送信データ全体に対応するカウント情報、及び図7Cに示される振り分け情報が更新される。例えば、処理806、処理811、又は処理812により選択された中継回路がSW[0]の場合には、図7Aに示される宛先毎のカウント情報において該当する出力回路EG[n]のカウント値が“−1”され、図7Bに示される送信データ全体に対応するカウント情報においてカウント値が“−1”され、かつ図7Cに示される振り分け情報において該当する出力回路EG[n]に関連付けられる中継回路が連続しないようにSW[1]に更新される。また、処理806、処理811、又は処理812により選択された中継回路がSW[1]の場合には、図7Aに示される宛先毎のカウント情報において該当する出力回路EG[n]のカウント値が“+1”され、図7Bに示される送信データ全体に対応するカウント情報においてカウント値が“+1”され、かつ図7Cに示される振り分け情報において該当する出力回路EG[n]に関連付けられる中継回路が連続しないようにSW[0]に更新される。さらに例示すれば、処理806により、識別された宛先がEG[1]のパケットの送信先としてSW[1]が選択されると、図7Aに示される宛先毎のカウント情報においてEG[1]に関連付けられるカウント値“−2”が“+1”されて“−1”となり、図7Bに示される送信データ全体に対応するカウント値“−4”が“+1”されて“−3”となり、図7Cに示される振り分け情報においてEG[1]に関連付けられる中継装置がSW[0]になるように更新される。
処理813が終了すると、図8に示される処理を終えるための処理814が実行される。
図9に、実施例の情報処理装置又は情報処理回路による処理に従った通信の例が示される。図9Aの表では、第1行目には入力回路に入力されるパケット等の順序が示され、第2行目には宛先No.が第1行目の順序に対応するように示され、第3行目には第2行目に示された宛先のパケットの送信先を判定する際に宛先毎のカウント情報において宛先No.に関連付けられていたカウント値が第1行目の順序に対応するように示され、第4行目には第2行目に示された宛先のパケットの送信先を判定する際に送信データ全体に対するカウント値が第1行目の順序に対応するように示され、第5行目には第2行目に示された宛先のパケットの送信先を判定する際に振り分け情報において宛先No.に関連付けられていた中継回路の番号が第1行目の順序に対応するように示され、第6行目には図8に示された処理の結果として第2行目に示された宛先のパケットの送信先として選択された中継回路の番号が第1行目の順序に対応するように示される。図9Bには、図9Aに示される情報をパケット列として表現したものである。
例えば、図9Aに示されるように、4番目に入力されるパケットの宛先がEG[3]であり、このパケットの送信先として選択される中継回路がSW[0]である。これは、図9Aの3行目においてEG[3]を宛先とするパケット[3]の送信先を判定する際にEG[3]に関連付けられていたカウント値が“0”であって“±2”未満であるため、図8に示される処理803において所定の条件を満たすと判定され、図9Aの4行目においてEG[3]を宛先とするパケット[3]の送信先を判定する際に送信データ全体のカウント値が“−3”であって“±4”未満であるため図8に示される処理808により所定の条件を満たす判定され、かつ図9Aの5行目においてEG[3]を宛先とするパケット[3]の送信先を判定する際にEG[3]に関連付けられていた中継回路の番号が“0”であるためこれに従って図8に示される処理812によりSW[0]が選択された結果である。図9Bに示されるように、区間920において、宛先をEG[3]とするパケット[3]がSW[0]に送信されることが示される。
さらに例示すると、図9Aに示されるように、5番目に入力されるパケットの宛先がEG[4]であり、図9Aの5行目においてEG[4]を宛先とするパケット[4]の送信先を判定する際にEG[4]に関連付けられていた中継回路の番号が“0”であるにもかかわらず、このパケットの送信先として選択される中継回路がSW[1]になっている。これは、図9Aの3行目においてEG[4]を宛先とするパケット[4]の送信先を判定する際にEG[4]に関連付けられていたカウント値が“0”であって“±2”未満であるため図8に示される処理803により所定の条件を満たすと判定されたが、図9Aの4行目においてEG[4]を宛先とするパケット[4]の送信先を判定する際に送信データ全体のカウント値が“−4”であって“±4”未満でないため図8に示される処理808において所定の条件を満たさないと判定された結果、処理810が実行されたことによる。この場合、図9Aの5行目においてEG[4]を宛先とするパケット[4]の送信先を判定する際にEG[4]に関連付けられていた中継回路の番号が“0”であるため、これに従って送信先を選択すると送信データ全体のカウント値“−4”が“−1”されて“−5”となり、通信経路の選択割合がさらに偏ってしまうため、図8に示される処理811において送信データ全体のカウント値“−4”の符号がマイナスであることに基づいてSW[1]が選択された結果である。図9Bに示されるように、区間920において、宛先をEG[4]とするパケット[4]がSW[1]に送信されることが示されている。すなわち、振り分け情報においては、宛先をEG[4]とするパケット[4]をSW[0]に振り分けることが関連付けられていたとしてもこれに従わずに、処理811により送信先がSW[1]に変更されることによって、通信経路の選択割合の偏りが抑制され、SW[0]に連続送信されるパケットが抑制されている。従って、通信経路が偏りなく選択されることでパケット送信が分散され、通信の負荷分散が効率的に実行されることとなる。また、冗長なバッファサイズを小さくすることができるので回路規模を小さくでき、バックプレッシャやパケットの廃棄の頻度が減るため、通信効率を向上させることができる。
図10に、実施例の情報処理装置又は情報処理回路による処理により更新される情報の例が示される。図10に示される情報は、図8の処理に従った結果、更新される宛先毎のカウント情報、送信データ全体に対するカウント情報、及び振り分け情報の例である。
図10Aに示される情報は、図9Aに示される5番目のパケット[4]の送信先としてSW[1]を選択すると決定した後に、情報管理部610により更新された宛先毎のカウント情報である。図10Aに示されるように、パケット[4]がSW[1]に振り分けられたことにより、EG[4]に関連付けられるカウント値が“+1”されて“0”から“+1”に更新される。
図10Bに示される情報は、図9Aに示される5番目のパケット[4]の送信先としてSW[1]を選択すると決定した後に、情報管理部610により更新された送信データ全体に対するカウント情報である。図10Bに示されるように、パケット[4]がSW[1]に振り分けられたことにより、送信データ全体のカウント値が“+1”されて“−4”から“−3”に更新される。
図10Cに示される情報は、図9Aに示される5番目のパケット[4]の送信先としてSW[1]を選択すると決定した後に、情報管理部610により更新された振り分け情報である。図10Cに示されるように、パケット[4]がSW[1]に振り分けられたことにより、振り分け情報においてEG[4]にSW[0]が関連付けられることとなる。これは、EG[4]にはSW[0]がもともと関連付けられていたところ、図8に示される処理によってSW[0]ではなくSW[1]が選択されたため、振り分け情報においてEG[4]に関連付けられるスイッチ回路の番号が変更されないことによる。
図11に、他の通信の例が示される。図11Aの表では、第1行目には入力回路に入力されるパケット等の順序が示され、第2行目には宛先No.が第1行目の順序に対応するように示され、第3行目には第2行目に示された宛先のパケットの送信先を判定する際に送信データ全体に対するカウント値が第1行目の順序に対応するように示され、第4行目には第2行目に示された宛先のパケットの送信先を判定する際に振り分け情報において宛先No.に関連付けられていた中継回路の番号が第1行目の順序に対応するように示され、第5行目には図8に示された処理の結果として第2行目に示された宛先のパケットの送信先として選択された中継回路の番号が第1行目の順序に対応するように示される。図11Bには、図11Aに示される情報をパケット列として表現したものである。
図11に沿って、入力されるパケットの順序によっては、図8に示された処理811により同じ宛先のパケットが特定のスイッチ回路に連続して送信されてしまうことが例示される。例えば、5番目に入力されるパケット[0]5、7番目に入力されるパケット[0]7、9番目に入力されるパケット[0]9、11番目に入力されるパケット0]11、13番目に入力されるパケット[0]13などがSW[1]に連続して送信されてしまい、通信経路の選択割合が偏ってしまうことが例示される。
例えば、図11Aに示されるように、5番目に入力されるパケットの宛先がEG[0]であり、図11Aの3行目においてEG[0]を宛先とするパケット[0]5の送信先を判定する際に送信データ全体のカウント値が“−4”であって“±4”未満でない。この下で、図11Aの4行目においてEG[0]を宛先とするパケット[0]5の送信先を判定する際にEG[0]に関連付けられていた中継回路の番号が“1”であるため、これに従って送信先を選択しても、送信データ全体のカウント値“−4”が“+1”されて“−3”となり、通信経路の選択割合の偏りが抑制される。従って、EG[0]を宛先とするパケット[0]5の送信先としてSW[1]が選択される。
さらに例示すると、図11Aに示されるように、7番目に入力されるパケットの宛先がEG[0]であり、図11Aの3行目においてEG[0]を宛先とするパケット[0]7の送信先を判定する際に送信データ全体のカウント値が“−4”であって“±4”未満でない。ここで、図11Aの4行目においてEG[0]を宛先とするパケット[0]7の送信先を判定する際にEG[0]に関連付けられていた中継回路の番号が“0”であるが、EG[0]を宛先とするパケット[0]7の送信先として選択される中継回路がSW[1]になっている。これは、振り分け情報に従って中継回路を選択するとSW[0]が選択されてしまい、これによって、送信データ全体のカウント値“−4”が“−1”されて“−5”となり、通信経路の選択割合がさらに偏ってしまうからである。そこで、送信データ全体のカウント値“−4”の符号がマイナスであることに基づいてSW[1]が選択される。
しかし、図11Bにも示されるように、区間1120において、EG[0]を宛先とするパケット[0]7がEG[0]5に次いでSW[1]に送信されることとなる。同様にして、パケット[0]9、パケット[0]11、パケット[0]13などがSW[1]に送信される。このように、入力されるパケットの順序によっては、特定の宛先のパケットが特定の中継回路に偏って送信されてしまうことになる。ここでは説明のために、宛先をEG[0]とするパケットらがIG[0]からSW[1]に連続して送信される例を示したが、同時に他のIG[n]からも宛先をEG[0]とするパケットがSW[1]に連続して送信される場合もある。この場合には、SW[1]に入力されるパケット数が許容できる数を超えてしまい輻輳が発生してしまうことがある。
図12に、他の通信の例に対応して更新される情報の例が示される。図12に示される情報は、図11の通信の他の例に対応して更新される送信データ全体に対するカウント情報、及び振り分け情報の他の例である。
図12Aに示される情報は、図11Aに示される7番目のパケット[0]7の送信先としてSW[1]を選択すると決定した後に、更新された送信データ全体に対するカウント情報である。図12Aに示されるように、パケット[0]7がSW[1]に振り分けられたことにより、送信データ全体のカウント値が“+1”されて“−4”から“−3”に更新される。
図12Bに示される情報は、図11Aに示される7番目のパケット[0]7の送信先としてSW[1]を選択すると決定した後に、更新された振り分け情報である。図12Bに示されるように、パケット[0]7がSW[1]に振り分けられたことにより、振り分け情報においてEG[0]にSW[0]が関連付けられることとなる。これは、EG[0]にはSW[0]がもともと関連付けられていたところ、図8に示される処理によってSW[0]ではなくSW[1]が選択されたため、振り分け情報においてEG[0]に関連付けられるスイッチ回路の番号が変更されないことによる。
図13に、実施例の情報処理装置又は情報処理回路による処理に従った通信の他の例が示される。図13Aの表では、第1行目には入力回路に入力されるパケット等の順序が示され、第2行目には宛先No.が第1行目の順序に対応するように示され、第3行目には第2行目に示された宛先のパケットの送信先を判定する際に宛先毎のカウント情報において宛先No.に関連付けられていたカウント値が第1行目の順序に対応するように示され、第4行目には第2行目に示された宛先のパケットの送信先を判定する際に送信データ全体に対するカウント値が第1行目の順序に対応するように示され、第5行目には第2行目に示された宛先のパケットの送信先を判定する際に振り分け情報において宛先No.に関連付けられていた中継回路の番号が第1行目の順序に対応するように示され、第6行目には図8に示された処理の結果として第2行目に示された宛先のパケットの送信先として選択された中継回路の番号が第1行目の順序に対応するように示される。図13Bには、図13Aに示される情報をパケット列として表現したものである。なお、図13BにおいてIG[0]に入力されるパケット列の順序は、図11Bに示される順序と同じであるとして例示される。
例えば、図13Aに示されるように、9番目に入力されるパケットの宛先がEG[0]9であり、図13Aの3行目においてEG[0]を宛先とするパケット[0]9の送信先を判定する際にEG[0]に関連付けられていたカウント値が“+1”であって“±2”未満であるため、図8に示される処理803において所定の条件を満たすと判定され、図13Aの4行目においてEG[0]を宛先とするパケット[0]9の送信先を判定する際に送信データ全体のカウント値が“−4”であって“±4”未満でないため、図8に示される処理808において所定の条件を満たさないと判定され、処理810が実行される。この場合、図13Aの4行目においてEG[0]を宛先とするパケット[0]9の送信先を判定する際にEG[0]に関連付けられていた中継回路の番号が“0”であるが、EG[0]を宛先とするパケット[0]9のパケットの送信先として選択される中継回路がSW[1]になっている。これは、図8に示される処理810において、振り分け情報に従って中継回路を選択するとSW[0]が選択されてしまい、これによって、送信データ全体のカウント値“−4”が“−1”されて“−5”となり、通信経路の選択割合がさらに偏ってしまうと判定されるからである。そこで、図8に示される処理811が実行され、送信データ全体のカウント値“−4”の符号がマイナスであることに基づいてSW[1]が選択される。この結果、図13Bの区間1320に示されるように、パケット[0]5、パケットEG[0]7、及びパケットEG[0]9が連続してSW[1]に送信されている。
さらに例示すると、図13Aに示されるように、11番目に入力されるパケットの宛先がEG[0]11であり、このパケットの送信先として選択される中継回路がSW[0]となっている。これは、図11Aの3行目においてEG[0]11を宛先とするパケット[0]11の送信先を判定する際にEG[0]に関連付けられていたカウント値が“+2”であって“±2”未満でないため、図8に示される処理803により所定の条件を満たさないと判定され、処理805が実行されることによる。処理805では、図13Aの5行目においてEG[0]11を宛先とするパケット[0]11の送信先を判定する際にEG[0]に関連付けられていた中継回路の番号が“0”であるため、これに従って送信先を選択しても、EG[0]に関連付けられていたカウント値“+2”が“−1”されて“+1”となり、通信経路の選択割合の偏りが抑制されるため、図8に示される処理810において偏りが減少すると判定される。そして、図8に示される処理812により、EG[0]11を宛先とするパケット[0]11の送信先としてSW[1]が選択される。これは、送信データ全体のカウント値が“−4”ではあるがそれに従わずに中継回路が選択される例であり、図13Bに示されるように、図11Bとは異なってEG[0]11を宛先とするパケット[0]11がSW[0]に送信されることとなる。これによって、宛先をEG[0]とするパケットが連続してSW[1]に送信されてしまうことが抑制される。つまり、パケットの入力順序によっては、特定の宛先のパケットが特定の中継回路に偏って送信されてしまう場合に送信先を変更することで、通信経路の選択割合の偏りが抑制される。
以上に述べたように、実施例によれば、通信経路が偏りなく選択されることでパケット送信が分散され、通信の負荷分散が効率的に実行されることとなる。また、冗長なバッファサイズを小さくすることができるので回路規模を小さくでき、バックプレッシャやパケットの廃棄の頻度が減るため、通信効率を向上させることができる。なお、冗長化のためのバッファサイズは、パケットの順序の入れ替えスケジューリングをしたとしても連続送信されてしまうパケットを収容しきれないようなサイズである。実施例によれば、このようなサイズであっても、パケットの送信先を変更して連続送信を抑制するので、バッファに格納されるパケットをあふれさせずに、通信を継続させることができる。
図14に、実施例の通信装置又は通信回路による処理に従った通信に対応する情報の他の例が示される。図14に示される情報は、図8の処理に従った結果、更新される宛先毎のカウント情報、送信データ全体に対するカウント情報、及び振り分け情報の他の例である。
図14Aに示される情報は、図13Aに示される11番目のパケット[0]11の送信先としてSW[0]を選択すると決定した後に、情報管理部610により更新された宛先毎のカウント情報である。図13Aに示されるように、パケット[0]11がSW[0]に振り分けられたことにより、EG[0]に関連付けられるカウント値が“−1”されて“+2”から“+1”に更新される。
図14Bに示される情報は、図13Aに示される11番目のパケット[0]11の送信先としてSW[0]を選択すると決定した後に、情報管理部610により更新された送信データ全体に対するカウント情報である。図13Bに示されるように、パケット[0]11がSW[0]に振り分けられたことにより、送信データ全体のカウント値が“−1”されて“−4”から“−5”に更新される。
図14Cに示される情報は、図13Aに示される11番目のパケット[0]11の送信先としてSW[0]を選択すると決定した後に、情報管理部610により更新された振り分け情報である。図13Cに示されるように、パケット[0]11がSW[0]に振り分けられたことにより、振り分け情報においてEG[0]にSW[1]が関連付けられることとなる。これは、EG[0]にはSW[0]がもともと関連付けられていたところ、図8に示される処理によってSW[0]が選択されたため、振り分け情報においてEG[0]に関連付けられるスイッチ回路の番号が変更されたことによる。
図15に、実施例の情報処理装置及び情報処理回路の他の例が示される。図15に示される情報処理装置の例では、情報処理回路の一例である入力回路2000に入力されるパケット等のデータが処理回路2100によって処理され、処理回路2100が出力されるデータが情報処理回路の例であるデマルチプレクサ2200により(時)分割されて、部分処理回路2300及び2400に入力される。例えば、入力回路2000に入力されるパケット等のデータの通信速度が高速な場合、通信品質を保つためのパケットの識別など内部処理が間に合わないため、これを並列的に処理させるために部分処理回路2300及び2400が用いられる。そして、部分処理回路2300及び2400の各々で処理されたデータがデマルチプレクサ2500やデマルチプレクサ2600を介してスイッチユニット150に送信される。スイッチユニット150では、上述したように宛先に基づいたスイッチングを行い、宛先に従って出力回路3000に含まれる部分処理回路3300又は3400にマルチプレクサ3500やマルチプレクサ3600を介してデータを送信する。部分処理回路3300及び部分処理回路3400から出力されるデータは、マルチプレクサ3200によりマルチプレクスされて処理回路3100に入力される。そして、処理回路3100から所定の宛先にパケット等のデータが送信される。
処理回路2100が出力されるデータをデマルチプレクサ2200により部分処理回路2300及び2400に振り分ける際に振り分け方が偏ってしまうと、図3、図5、又は図11に沿って説明したようなデータの送信経路の選択割合に偏りが発生してしまう。そこで、図15に示されたような並列処理させるためデータを振り分ける際に、図6の機能ブロックや図8の処理を適用して、送信経路の選択割合に偏りが発生しないようにしてもよい。この場合、部分処理回路2300及び2400に備えておく冗長なバッファサイズを小さくすることができるので回路規模を小さくでき、バックプレッシャやパケットの廃棄の頻度が減るため、入力装置2000に入力される通信速度のスループットに合わせた送信効率を実現できる。
なお、上述した実施例は、情報処理装置及び情報処理回路の一例であり発明はこれに限定されず、発明に実施にあたって装置や回路の周辺構成を適宜変更してもよい。
図16に、実施例の情報処理装置及び情報処理回路に関連するシミュレーション結果の例が示される。このシミュレーションでは、実施例の情報処理装置及び情報処理回路に対して、入力されるパケットの宛先をランダムに変更した場合に、連続送信されるパケット数の時間変化が見積もられている。ここでは、宛先がランダムに変更されたパケットをラウンドロビン方式に従ってスイッチ回路に振り分けた場合に連続送信されるパケット数が四角のプロットで示される。他方で、実施例に基づきパケットが振り分けられた場合に連続送信されるパケット数が菱形のプロットで示される。図16に示されるように、実施例によれば、連続送信されるパケット数を抑制することができる。そのため、実施例の情報処理装置又は情報処理回路を使用することで、連続送信されるパケットを一時的に記憶しておく冗長バッファのサイズを小さくできる。
上述の実施例によれば、宛先が同じ場合に異なる中継回路を経由させる所定の規則のもとで異なる宛先に送られる複数のデータが特定の中継回路に偏って送信されないよう送信予定のデータを他の中継回路に送ることで、特定の中継回路へ偏ってデータが送信されることが抑制される。例えば、特定の中継回路に連続的にデータが送信されることが抑制される。