(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-26
(45)【発行日】2024-09-03
(54)【発明の名称】通信装置および通信方法
(51)【国際特許分類】
H04L 47/26 20220101AFI20240827BHJP
H04L 12/46 20060101ALI20240827BHJP
【FI】
H04L47/26
H04L12/46 B
(21)【出願番号】P 2020152679
(22)【出願日】2020-09-11
【審査請求日】2023-06-30
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(73)【特許権者】
【識別番号】503359821
【氏名又は名称】国立研究開発法人理化学研究所
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】杉山 純一
(72)【発明者】
【氏名】津下 克也
(72)【発明者】
【氏名】佐野 健太郎
(72)【発明者】
【氏名】上野 知洋
【審査官】速水 雄太
(56)【参考文献】
【文献】特開平07-303117(JP,A)
【文献】特開2007-174152(JP,A)
【文献】特開2004-159203(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 47/26
H04L 12/46
(57)【特許請求の範囲】
【請求項1】
スイッチから送信されるパケットを受信する通信ポートと、
前記通信ポートで受信した前記パケットの受信頻度を監視し、前記受信頻度にもとづいて前記スイッチ内のバッファの輻輳の予兆
があるかを検出し、
前記バッファの輻輳の予兆があることを検出した場合であって前記バッファが輻輳する前に前記パケットの送信元装置に対して前記パケットの送信停止要求を送出する制御部と、
を有する通信装置。
【請求項2】
前記制御部は、前記受信頻度として前記パケットの受信間隔が所定値以下になる状態を監視し、前記所定値以下になる状態が所定時間連続する場合に前記バッファに輻輳の予兆があることを検出する請求項1記載の通信装置。
【請求項3】
前記制御部は、前記受信頻度として前記パケットのデータ有効部分の受信レートを監視し、前記受信レートが閾値以上になる場合に前記バッファに輻輳の予兆があることを検出する請求項1記載の通信装置。
【請求項4】
前記制御部は、前記バッファに輻輳の予兆があることを検出した場合、前記送信停止要求を前記送信元装置に送出して、前記送信元装置からの前記パケットの送信を停止させる請求項1記載の通信装置。
【請求項5】
前記制御部は、前記バッファに輻輳の予兆があることを検出した場合、優先度を付加した前記送信停止要求を前記送信元装置に送出し、前記優先度にもとづいて前記送信元装置に対して高優先パケットは出力させ、低優先パケットの送信は停止させる請求項1記載の通信装置。
【請求項6】
前記制御部は、前記バッファに輻輳の予兆があることを検出した場合、前記送信停止要求を前記送信元装置に送出して、前記送信元装置からの前記パケットの送信レートを低下させる請求項1記載の通信装置。
【請求項7】
前記制御部は、前記受信頻度にもとづいて前記スイッチ内の前記バッファの輻輳の予兆の解消を検出した場合、前記パケットの送信元装置に対して前記パケットの送信停止解除要求を送出して、送信停止要求前のパケット送信状態に復旧させる請求項1記載の通信装置。
【請求項8】
前記制御部は、前記受信頻度として前記パケットの受信間隔が所定値を超える状態を監視し、前記所定値を超える状態が所定時間連続する場合に前記バッファの輻輳の予兆が解消したことを検出する請求項7記載の通信装置。
【請求項9】
前記制御部は、前記受信頻度として前記パケットのデータ有効部分の受信レートを監視し、前記受信レートが閾値未満になる場合に前記バッファの輻輳の予兆が解消したことを検出する請求項7記載の通信装置。
【請求項10】
前記制御部は、送信停止時間を設定したタイマ値を含む前記送信停止要求を送出し、前記パケットの送信元装置に対して前記送信停止時間は前記パケットの送信を停止させ、前記送信停止時間の経過後は前記パケットの送信を再開させる請求項1記載の通信装置。
【請求項11】
前記制御部は、前記パケットの区切り符号の長さを監視し、閾値以下となる前記長さが一定時間継続する場合、輻輳の予兆があることを検出する請求項1記載の通信装置。
【請求項12】
コンピュータが、
スイッチから送信されるパケットを受信する通信ポートで受信した前記パケットの受信頻度を監視し、
前記受信頻度にもとづいて前記スイッチ内のバッファの輻輳の予兆
があるかを検出し、
前記バッファの輻輳の予兆があることを検出した場合であって前記バッファが輻輳する前に前記パケットの送信元装置に対して前記パケットの送信停止要求を送出する、
通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置および通信方法に関する。
【背景技術】
【0002】
近年、複数のコンピュータをネットワークで相互に接続し、全体を1つのシステムとして機能させて高速演算を実現するHPC(High Performance Computing)の技術が進展している。
【0003】
HPCでは、多数の演算を分散並列処理して高速演算を行うため、コンピュータを備えるノードが相互に接続されたネットワークが構築される。また、このようなネットワークでは、ノードの物理的なポート数を削減してノード間の柔軟な接続と拡張性を実現するためにスイッチが活用される。スイッチを介したノード間ネットワークの通信プロトコルとしては、Ethernet(登録商標)が広く使用されている。
【0004】
関連技術として、例えば、スイッチを介して供給されたパケットの輻輳を監視し、輻輳が検出された際には当該パケットの送信元入出力ポートに輻輳を通知する技術が提案されている。また、パケットスイッチのクロスポイントスイッチの前段で入力ポートとプライオリティクラスの組み合わせの単位で上り方向バックプレッシャ制御を行う技術が提案されている。さらに、全二重通信におけるフロー制御を行うためのポーズ手段を有して受信バッファの蓄積度と処理負荷とにもとづいて決定されるポーズレベルに応じてフロー制御を行う技術が提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平06-177913号公報
【文献】特開2001-217867号公報
【文献】特開2009-194488号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従前のパケット中継では、Ethernetのスイッチでバッファリングしているパケットがオーバーフローして輻輳が発生しそうになると、スイッチはPauseパケットを送出して送信側ノードのパケット送信を停止させて、輻輳の発生を回避している。
【0007】
しかし、スイッチが生成するPauseパケットはマルチキャストパケットとして送出され、ネットワーク内の全ノードでPauseパケットが受信されるために、全ノードが一律にパケット送信を停止してしまう。このように、輻輳の発生原因になっているパケットを送信していないノードもパケット送信を停止してしまうので、伝送効率や通信サービスが低下するという問題がある。
【0008】
1つの側面では、本発明は、全ノードでパケット送信が停止になることを抑止しながら輻輳の発生の回避を図った通信装置および通信方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、通信装置が提供される。通信装置は、スイッチから送信されるパケットを受信する通信ポートと、通信ポートで受信したパケットの受信頻度を監視し、受信頻度にもとづいてスイッチ内のバッファの輻輳の予兆があるかを検出し、バッファの輻輳の予兆があることを検出した場合であってバッファが輻輳する前にパケットの送信元装置に対してパケットの送信停止要求を送出する制御部とを有する。
【0010】
また、上記課題を解決するために、コンピュータが上記通信装置と同様の制御を実行する通信方法が提供される。
【発明の効果】
【0011】
1側面によれば、全ノードでパケット送信が停止になることを抑止しながら輻輳の発生を回避することが可能になる。
【図面の簡単な説明】
【0012】
【
図2】2次元メッシュネットワークの構成の一例を示す図である。
【
図3】2次元トーラスネットワークの構成の一例を示す図である。
【
図4】疑似的に2次元トーラスネットワークを実現するためにスイッチを使用したネットワーク構成の一例を示す図である。
【
図5】スイッチに輻輳が発生していない状態の一例を示す図である。
【
図6】Pauseパケットによりパケット送信停止が行われる状態の一例を示す図である。
【
図7】Pauseパケットのマルチキャスト送信の一例を示す図である。
【
図8】ノードの機能ブロックの一例を示す図である。
【
図11】ノードのハードウェア構成の一例を示す図である。
【
図12】制御パケットのフォーマットの一例を示す図である。
【
図13】送信停止要求の制御パケットで優先度無しによる送信停止の一例を示す図である。
【
図14】送信停止要求の制御パケットで優先度有りによる送信停止の一例を示す図である。
【
図15】送信停止要求の制御パケットによる送信レートの低下の一例を示す図である。
【
図16】送信停止解除要求の制御パケットによる送信停止解除の一例を示す図である。
【
図17】輻輳の予兆状態の検出の一例を示す図である。
【
図18】輻輳の予兆状態の解消検出の一例を示す図である。
【
図19】受信ノードの動作の一例を示すフローチャートである。
【
図20】送信ノードの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は通信装置の一例を説明するための図である。通信装置1は、制御部1aおよび通信ポートp0を備える。通信ポートp0は、スイッチから送信されるパケットを受信する。
【0014】
制御部1aは、通信ポートp0で受信したパケットの受信頻度を監視し、受信頻度にもとづいてスイッチ内のバッファの輻輳の予兆を検出する。そして、制御部1aは、検出結果にもとづいて、バッファが輻輳する前にパケットの送信元装置に対してパケットの送信停止要求を送出する。
【0015】
なお、制御部1aの機能は、通信装置1が備える図示しないプロセッサが、所定のプログラムを実行することによって実現される。
図1の例を用いて動作について説明する。スイッチsw1に通信装置1および通信装置1-1、1-2が接続されている。スイッチsw1は、パケットをバッファリングするバッファbf0を含む。
【0016】
〔ステップS1〕通信装置1-1、1-2は、スイッチsw1を介して通信装置1にパケットを送信する。
〔ステップS2〕スイッチsw1内のバッファbf0は、パケットをバッファリングする。
【0017】
〔ステップS3〕通信装置1内の通信ポートp0は、スイッチsw1を介して送信されたパケットを受信する。
〔ステップS4〕通信装置1内の制御部1aは、通信ポートp0で受信されたパケットの受信頻度を監視し、受信頻度にもとづいてバッファbf0の輻輳の予兆を検出する。
【0018】
〔ステップS5〕制御部1aは、バッファbf0に輻輳の予兆があることを検出した場合、送信停止要求を通信装置1-1、1-2に向けて送信する。
〔ステップS6〕通信装置1-1、1-2は、送信停止要求を受信すると、通信装置1宛てのパケットのみの送信を停止する。
【0019】
このように、複数の通信装置がスイッチを介して相互接続されるネットワーク環境において、通信装置1は、パケットの受信頻度からスイッチの輻輳の予兆を検出し、輻輳が発生する前にパケット送信元装置にパケットの送信停止要求を送出する。
【0020】
従前では、スイッチのバッファがオーバーフローしそうになると、スイッチからマルチキャストのPauseパケットが出力されていたために、全装置からのパケット送信が停止していた。
【0021】
これに対し、通信装置1では、スイッチの輻輳予兆の検出時、輻輳予兆発生の原因になっているパケットを送信している装置のみに向けてパケットの送信停止要求を送出する。これにより、全装置でパケット送信が停止になることを抑止しながら輻輳の発生を効率よく回避することができ、伝送効率や通信サービスの向上を図ることが可能になる。
【0022】
(スイッチを用いたHPCネットワークの構成およびその課題)
次に本発明の詳細を説明する前に、スイッチを用いた一般的なHPCネットワークの構成および従前の輻輳回避の課題について
図2から
図7を用いて説明する。
【0023】
HPCでは、多数の演算を分散並列処理して高速演算を実現するため、CPU(Central Processing Unit)等のコンピュータを含む多くのノードを相互に接続するネットワークが重要となる。
【0024】
リング構成のネットワークでは、ノード数に比例して遅延時間が増大する。このため、HPCネットワークのトポロジにおいてはメッシュ構成や、さらにメッシュの端を接続したトーラスネットワークが一般的に使用される。
【0025】
図2は2次元メッシュネットワークの構成の一例を示す図である。2次元メッシュネットワークN1は、ノード#00、・・・、#03、#10、・・・、#13、#20、・・・、#23、#30、・・・、#33を備え、これらのノードがメッシュ状に接続される。
【0026】
図3は2次元トーラスネットワークの構成の一例を示す図である。2次元トーラスネットワークN2は、
図2に示した2次元メッシュネットワークN1のX方向の端と、Y方向の端とをそれぞれ接続したドーナツ状のネットワーク(トーラスネットワーク)である。ノードに接続されるネットワークの軸の本数により3次元、4次元、・・・と次数が増加していく。
【0027】
トーラスネットワークの場合、隣接するノード同士が1:1で直接接続されるため、多次元のトーラスネットワークではノードに要するポートの数はネットワークの次数にしたがい増加する。
【0028】
したがって、ノードの物理的なポート数を削減すると共に、ノード間の柔軟な接続と拡張性を実現するためスイッチが活用される。また、ノードの1つの物理ポートを用いて仮想的なトポロジにおける複数のリンクを実現するために、それぞれの仮想リンクの通信は時分割で実現される。
【0029】
図4は疑似的に2次元トーラスネットワークを実現するためにスイッチを使用したネットワーク構成の一例を示す図である。ネットワークN3は、スイッチを使用して疑似的(仮想的)に2次元トーラスネットワークを構成したネットワークであって、ノード#00、・・・、#03、#10、・・・、#13、#20、・・・、#23、#30、・・・、#33を備え、さらにスイッチSW#0、・・・、SW#4を備える。
【0030】
図3に示した2次元トーラスネットワークではノードを直接接続する際にはノード毎に4ポート要するところを、ネットワークN3では、スイッチを介しかつ4ポート分の接続を時分割仮想的に実現することにより、接続ポートが1ポートで済んでいる。なお、ネットワーク帯域に応じてノードあたりに複数ポートを割り当てることが可能である。
【0031】
ここでノード間を接続する方法としては、EthernetあるいはInfiniband(商標)が知られているが、スイッチを介する場合は機器が安価なEthernetが一般的である。また、近年では高速での並列演算が可能なFPGA(Field Programmable Gate Array)の強みを生かしたアクセラレータに演算処理の一部を実行させる研究が始まっており、CPUを含むノード同様にFPGAを含むノード同士もネットワークで接続される場合がある。
【0032】
ここで、Ethernetのスイッチを介したノード間ネットワークにおいて、中継するスイッチでパケットの輻輳が発生し、効率的な伝送が行えない場合がある。
図5はスイッチに輻輳が発生していない状態の一例を示す図である。スイッチSW#0にノード#01、#03、#00、#02が接続される。ノード#01、#03、#00、#02それぞれは、Rxポート(パケットを受信するためのポート)およびTxポート(パケットを送信するためのポート)を含む。また、スイッチSW#0は、送信パケットをバッファリングするTxバッファbf1、bf2を含む。
【0033】
スイッチSW#0内のTxバッファbf1は、ノード#01、#03から送信されたパケットをバッファリングしている。バッファリングされた後のパケットはノード#00に送信され、ノード#00内のRxポートで受信される。
【0034】
また、スイッチSW#0内のTxバッファbf2は、ノード#03から送信されたパケットをバッファリングしている。バッファリングされた後のパケットはノード#02に送信され、ノード#02内のRxポートで受信される。
図5の例では、Txバッファbf1、bf2はオーバーフローしておらず、輻輳が発生していない状態にある。
【0035】
図6はPauseパケットによりパケット送信停止が行われる状態の一例を示す図である。
〔ステップS11〕Txバッファbf1は、ノード#01、#03から送信されたパケットをバッファリングするが、Txバッファbf1がオーバーフローしそうになる。
【0036】
〔ステップS12〕スイッチSW#0は、Pauseパケットをノード#01、#03に送信する。
〔ステップS13〕ノード#01は、RxポートでPauseパケットを受信する。
【0037】
〔ステップS14〕ノード#01は、Pauseパケットを受信したことにより、すべてのパケットの送信を停止する。
〔ステップS15〕ノード#03は、RxポートでPauseパケットを受信する。
【0038】
〔ステップS16〕ノード#03は、Pauseパケットを受信したことにより、すべてのパケットの送信を停止する。
図7はPauseパケットのマルチキャスト送信の一例を示す図である。
【0039】
〔ステップS21〕スイッチSW#0のTxバッファがオーバーフローしそうになる。
〔ステップS22〕スイッチSW#0は、ノード#00、#01、#02、#03およびスイッチSW#4にPauseパケットを送信する。
【0040】
〔ステップS23〕スイッチSW#4は、スイッチSW#1、SW#2、SW#3にPauseパケットを送信する。
〔ステップS24〕スイッチSW#1は、ノード#10、#11、#12、#13にPauseパケットを送信する。
【0041】
〔ステップS25〕スイッチSW#2は、ノード#20、#21、#22、#23にPauseパケットを送信する。
〔ステップS26〕スイッチSW#3は、ノード#30、#31、#32、#33にPauseパケットを送信する。
【0042】
このように、スイッチは、スイッチ内でパケットがオーバーフローしそうになるとPauseパケットを送信側のノードに送り、送信側のパケット出力を停止させることでフロー制御を行う。また、スイッチはPauseパケットを送信すると共に、IP(Internet Protocol)等の上位レイヤのプロトコルによる再送処理を期待してオーバーフローしたパケットを廃棄する。
【0043】
スイッチが生成するPauseパケットは、マルチキャストパケットとして送出されるため、接続されるすべてのノードに一律でパケット送信の停止/再開を要求することとなり、全体的なパケット停止が発生する。
図7の例では、ノード#00と通信するのはノード#01、#03、#10、#30だけなのに、ネットワーク全体にPauseパケットが送信されて全体的なパケットの送信停止が発生している。
【0044】
また、仮想的に多くのノードを多次元のトーラスネットワークで接続する場合、スイッチの接続が多段になることも考えられ、マルチキャストによるPauseパケット数は爆発的に増加する可能性がある。このように、結果として、帯域超過したノード間以外のデータ通信も停止してしまい、システム全体のパフォーマンスに大きな影響を与えてしまう。
【0045】
Pauseパケットを生成させない方法として、スイッチで帯域制限を実施し、細かいフロー制御を実施することも考えられるが、個々の受信ポートに対する帯域制限ではノードの受信帯域に余裕がある場合においても、帯域制限される送信ポートが発生し、効率的な伝送が行えない可能性が高い。また、高機能なスイッチは高価であるとともに、スイッチに対する制御も新たに要するためシステムの複雑化、高価格化が懸念される。
【0046】
一方、ノード間ネットワークにおいては、様々なサービスの質が存在するため、フレーム出力の停止・再開のみでは不十分であり、単なる停止以外の細やかな制御を必要とする場合がある。例えば、FPGA上に実装した並列計算回路間の通信において、たとえレートが下がったとしても少ない遅延で継続してデータを流し続けたい通信と、一定期間停止してもよい通信が混在する場合がある。
【0047】
本発明はこのような点に鑑みてなされたものであり、スイッチを用いたネットワークにおいて、データ輻輳の予兆発生時に、Pauseパケットを使用せずに全ノードがパケット送信不可になることを抑止して輻輳の発生を回避する高効率な輻輳制御を行うものである。
【0048】
[第2の実施の形態]
次にHPCネットワークを構成するノードに本発明の機能を適用した場合の第2の実施の形態について以降詳しく説明する。なお、以降では、サービスデータを含むパケットを受信する側のノード(
図5から
図7に示したノード#00に相当)を受信ノードと呼ぶ場合がある。さらに、受信ノードに向けてスイッチを介して該パケットを送信する側のノード(
図5から
図7に示したノード#01、#03に相当)を送信ノードと呼ぶ場合がある。
【0049】
<機能ブロック>
図8はノードの機能ブロックの一例を示す図である。ノード10は、
図1の通信装置1に対応し、制御部11、記憶部12、CPU部13および通信ポート(Rx/Txポート)を備える。制御部11は例えば、FPGAであり、ノード10の動作の主体となる。CPU部13はCPUおよび周辺回路を含む(CPU部13の機能は制御部11に含まれてもよい)。ノード10は、受信ノードの機能および送信ノードの機能の両方を備える。
【0050】
制御部11は、CPU部13に接続される。記憶部12は、メモリ12a、12bを含み、制御部11はメモリ12aに接続され、CPU部13はメモリ12bに接続される。
制御部11は、輻輳監視部11a、受信側制御部11b、制御パケット終端部11c、送信側制御部11d、タイマ部11e、演算回路11f、制御パケット生成部11g、MUX部11hを含む。
【0051】
なお、タイマ部11e、送信側制御部11dおよび受信側制御部11bの詳細動作については後述する。また、演算回路11fおよびCPU部13で通信される各種の設定値についても後述する。
【0052】
輻輳監視部11aは、受信パケットの受信頻度をモニタしてスイッチSW内のTxバッファの輻輳の状態を監視する(輻輳監視のための内部タイマを有している)。制御パケット終端部11cは、送信停止/解除要求の制御パケットを受信して終端処理を行う。
【0053】
演算回路11fは、パケット送信の停止、パケット送信レートの低下、優先度に応じたパケット生成処理等に関する演算処理を行う。制御パケット生成部11gは、送信停止要求の制御パケットおよび送信停止解除要求の制御パケットを生成する。MUX部11hは、制御パケットと演算データの多重化処理を行う。
【0054】
<タイマ部の動作>
タイマ部11eは、リンク先(互いにデータをやり取りするノード)分の送信停止タイマを持つ。送信停止要求の制御パケットを受信した際、設定にしたがい以下の値をタイマにセットする。
【0055】
・送信停止要求の制御パケットに記録されているタイマ値
・予めCPU部13から設定されるリンク先毎のタイマ値
なお、どちらの値を使用するかは、CPU部13からの設定項目、または制御パケット内のタイマ値が0だった場合は予めCPU部13から設定されたタイマ値を使用する。
【0056】
さらに、タイマを逐次ダウンカウントし、0になったら停止し、送信側制御部11dにタイマの満了を通知する。タイマのダウンカウント中に新たな送信停止要求の制御パケットを受信した場合は、タイマ値を設定し直し(タイマ値の延長)ダウンカウントを継続する。
【0057】
<送信側制御部の動作>
送信側制御部11dは、制御パケット終端部11cより、受信した制御パケットの送信元およびパケット種別、優先度、タイマ値、送信レート値等の情報を受け取る。また、受信したパケット種別により、タイマ部11eにスタート、停止、延長(タイマ値更新)の指示を与える。
【0058】
さらに、送信側制御部11dは、受信した制御パケットの種別に応じて、リンク先毎に送信制御ステータスを以下のように管理する。
パケット停止(レート低下)状態の場合、送信停止解除要求の制御パケットを受信するか、タイマが満了したら送信停止解除状態となる。また、パケット停止はレート低下の一状態とみることができるのでステータスとしては同一とする。
【0059】
パケットの送信停止解除状態の場合、送信停止要求の制御パケットを受信したらパケット停止(レート低下)状態となる。
一方、送信側制御部11dは、制御ステータスがパケット停止となったら演算回路11fに対し、リンク先へのパケット停止(レート低下)を指示する。優先度の指定が有れば併せて通知する。
【0060】
また、制御ステータスがパケット停止解除となったら演算回路11fに対し、リンク先へのパケット送信再開(レート復旧)を指示する。そして、タイマ部11eより、タイマ満了の通知を受けたら演算回路11fに対し、リンク先へのパケット送信再開(レート復旧)を指示する。
【0061】
<受信側制御部の動作>
受信側制御部11bは、輻輳監視部11aよりリンク先毎の輻輳状態の検出情報を受信し、リンク先毎に受信制御ステータスを以下のように管理する。
【0062】
パケット停止(レート低下)状態の場合、輻輳の予兆の解消が検出されたらパケット停止解除状態となる。また、パケット停止はレート低下の一状態とみることができるのでステータスとしては同一とする。パケット停止解除状態の場合、輻輳の予兆が検出されたらパケット停止(レート低下)状態となる。
【0063】
一方、受信側制御部11bは、制御ステータスがパケット停止となったら制御パケット生成部11gに対し、リンク先への送信停止要求の制御パケットの生成を指示する。さらに、制御ステータスがパケット停止解除となったら制御パケット生成部11gに対し、リンク先への送信停止解除要求の制御パケットの生成を指示する。
【0064】
<設定値の具体例>
図9、
図10は設定値の具体例を示す図である。テーブルT1、T2には、設定項目および設定値例が示されている。テーブルT1の各設定項目の内容について以下説明する。
【0065】
項目a1のリンク先MAC(Media Access Control)アドレスについて、設定値は48Byteである。自ノードにパケットを送信してくるノードのMACアドレスであり、ネットワークの大きさに合わせて、例えば32ノード分等の設定値を持つ。
【0066】
項目a2の送信停止要求の制御パケットの優先度について、設定値は0から16である。リンク先MACアドレス設定毎に送信停止要求の制御パケットに含める優先度が設定される。
【0067】
項目a3の送信停止要求の制御パケットのタイマ値について、設定値は0から255である。リンク先MACアドレス設定毎に送信停止要求の制御パケットに含めるタイマ値が設定される。
【0068】
項目a4の送信停止要求の制御パケットの送信レート低下情報について、設定値は0から10である。リンク先MACアドレス設定毎に送信停止要求の制御パケットに含める送信レート低下情報が設定される。例えば、設定値×10%にレートを低下させる。
【0069】
項目a5の送信停止要求の制御パケットの受信時の優先度(全体)について、設定値は0から16である。デフォルトの優先度が設定される。例えば、受信した送信停止要求の制御パケットの優先度設定が0だった場合には、この設定値にしたがって停止するパケットの優先度が判定される。
【0070】
項目a6の送信停止要求の制御パケットの受信時の優先度(リンク先別)について、設定値は0から16である。リンク先MACアドレス設定毎にデフォルトの優先度が設定される。例えば、受信した送信停止要求の制御パケットの優先度設定が0だった場合には、この設定値にしたがって停止するパケットの優先度が判定される(全体で1つの優先度設定を持つこともできるし、リンク先別に優先度設定を持つこともできる)。
【0071】
次にテーブルT2の各設定項目の内容について以下説明する。
項目b1のデータ有効領域は、項目b1-1、b1-2に分けられる。項目b1-1において、監視周期(輻輳予兆状態検出時)は1μs、輻輳予兆状態検出閾値は10000Byte、保護段数(輻輳予兆状態検出時)は3回である。よって、項目b1-1の例では、1μsに10000Byte以上のデータ有効領域がある状態が3回連続したら輻輳の予兆ありと判定される。
【0072】
項目b1-2において、監視周期(輻輳予兆状態解消時)は1μs、輻輳予兆状態解消閾値は5000Byte、保護段数(輻輳予兆状態解消時)は5回である。よって、項目b1-2の例では、1μsに5000Byte未満しかデータ有効領域が無い状態が5回連続したら輻輳の予兆状態の解消と判定される。
【0073】
項目b2のパケット間隔は、項目b2-1、b2-2に分けられる。項目b2-1において、監視周期(輻輳予兆状態検出時)は1μs、輻輳予兆状態検出閾値は5Byteである。よって、項目b2-1の例では、パケット間隔5Byte以下が1μs以上継続したら輻輳の予兆ありと判定される。
【0074】
項目b2-2において、監視周期(輻輳予兆状態解消時)は3μs、輻輳予兆状態解消閾値は13Byteである。よって、項目b2-2の例では、パケット間隔13Byte以上が3μs以上継続したら輻輳の予兆状態の解消と判定される。
【0075】
項目b3の区切り符号は、項目b3-1、b3-2に分けられる。項目b3-1において、監視周期(輻輳予兆状態検出時)は1μs、輻輳予兆状態検出閾値は4octetである。よって、項目b3-1の例では、プリアンブル4octet以下が1μs以上継続したら輻輳の予兆ありと判定される。
【0076】
項目b3-2において、監視周期(輻輳予兆状態解消時)は2μs、輻輳予兆状態解消閾値は8octetである。よって、項目b3-2の例では、プリアンブル8octet以下が2μs以上継続したら輻輳の予兆状態の解消と判定される。
【0077】
<ハードウェア>
図11はノードのハードウェア構成の一例を示す図である。ノード10は、プロセッサ(コンピュータ)100によって全体制御されている。プロセッサ100は、制御部11の機能を実現する。
【0078】
プロセッサ100には、バス103を介して、メモリ101、入出力インタフェース102およびネットワークインタフェース104が接続されている。
プロセッサ100は、マルチプロセッサであってもよい。プロセッサ100は、例えば、CPU、FPGA、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ100は、CPU、FPGA、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0079】
メモリ101は、記憶部12の機能を実現し、ノード10の主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種データが格納される。
【0080】
メモリ101は、ノード10の補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種データが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD(Solid State Drive)等の半導体記憶装置やHDD(Hard Disk Drive)等の磁気記録媒体を含んでもよい。
【0081】
バス103に接続されている周辺機器としては、入出力インタフェース102およびネットワークインタフェース104がある。入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。
【0082】
さらにまた、入出力インタフェース102は、周辺機器を接続するための通信インタフェースとしても機能する。例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたデータの読み取りを行う光学ドライブ装置を接続することができる。光ディスクには、Blu-rayDisc(登録商標)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(Rewritable)等がある。
【0083】
また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
【0084】
ネットワークインタフェース104は、ネットワークに接続してネットワークインタフェース制御を行う。ネットワークインタフェース104には、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等を使用することもできる。ネットワークインタフェース104で受信されたデータは、メモリ101やプロセッサ100に出力される。
【0085】
以上のようなハードウェア構成によって、ノード10の処理機能を実現することができる。例えば、ノード10は、プロセッサ100がそれぞれ所定のプログラムを実行することで本発明の処理を行うことができる。
【0086】
ノード10は、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。ノード10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
【0087】
例えば、ノード10に実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。
【0088】
また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ100からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0089】
<制御パケットのフォーマット>
図12は制御パケットのフォーマットの一例を示す図である。送信停止要求/送信停止解除要求の制御パケットPcは、プリアンブル、SFD(Start Frame Delimiter)、DA(Destination Address)、SA(Source Address)、Ether Type、データ部およびEther FCS(Frame Check Sequence)の各フィールドを含む。
【0090】
プリアンブルは7Byte、SFDは1Byteである。DAは6Byte、SAは6Byte、Ether Typeは2Byte、データ部は46Byte、Ether FCSは4Byteである。なお、Ether Typeには、Reservedでない値(例えば、0xFF10から0xFFFE等)が定義される。
【0091】
また、データ部には、先頭から順に、停止/解除指示、優先度、タイマ値、Don’t Care、送信レート値(送信レート低下情報)の各フィールドが含まれ、残りのフィールドはパディング(all“0”)となる。
【0092】
停止/解除指示は4Bitであり、0x0で送信停止、0xFで送信停止解除である。優先度は4Bitであり、0x0から0xFのうちの値が送信停止対象の優先度として指定される。タイマ値は8Bitであり0x00から0xFFのうちの値が送信停止時間として指定される。
【0093】
Don’t Careは4Bitである。送信レート値は4Bitであり、例えば、0x0は送信停止、0x1は送信レートが1/16、0x2は送信レートが2/16、0x3は送信レートが3/16、・・・、0xFは送信レートが15/16と指定される。
【0094】
<送信停止要求の制御パケット(優先度無し)による送信停止>
図13は送信停止要求の制御パケットで優先度無しによる送信停止の一例を示す図である。
【0095】
〔ステップS31〕ノード#00は、スイッチSW#0内のTxバッファbf1の輻輳の予兆を検出する。
〔ステップS32〕ノード#00は、スイッチSW#0の輻輳の予兆を検出すると、送信停止要求の制御パケットを出力する。なお、制御パケットの送信先は、受信ノードにパケットを送信しているノードである。この例では、ノード#00にパケットを送信しているノードはノード#01、#03であるから、ノード#01、#03に向けて制御パケットが送信される。
【0096】
また、ノード#00にパケットを送信しているノードがノード#01、#03であることは、ノード#00において受信パケットに含まれる送信元アドレス、または予め設定された送信元アドレスにもとづいて決定される。
【0097】
〔ステップS33〕ノード#01は、送信停止要求の制御パケットを受信する。
〔ステップS34〕ノード#01は、ノード#00宛てのパケットのみの送信を完全停止する。
【0098】
〔ステップS35〕ノード#03は、送信停止要求の制御パケットを受信する。
〔ステップS36〕ノード#02は、ノード#00宛てのパケットのみの送信を完全停止する。
【0099】
<送信停止要求の制御パケット(優先度有り)による送信停止>
図14は送信停止要求の制御パケットで優先度有りによる送信停止の一例を示す図である。
【0100】
〔ステップS41〕ノード#00は、スイッチSW#0内のTxバッファbf1の輻輳の予兆を検出する。
〔ステップS42〕ノード#00は、スイッチSW#0の輻輳の予兆を検出すると、ノード#01、#03に向けて送信停止要求の制御パケットを出力する。
【0101】
〔ステップS43〕ノード#01は、送信停止要求の制御パケットを受信する。
〔ステップS44〕ノード#01は、優先度判定を行う。
〔ステップS45〕ノード#01は、優先度判定にもとづき、ノード#00に対して、高優先のパケットは送信し、低優先のパケットの送信を停止する。
【0102】
〔ステップS46〕ノード#03は、送信停止要求の制御パケットを受信する。
〔ステップS47〕ノード#03は、優先度判定を行う。
〔ステップS48〕ノード#03は、優先度判定にもとづき、ノード#00に対して、高優先のパケットは送信し、低優先のパケットの送信を停止する。
【0103】
ここで、優先度有りの場合の送信停止制御では、ノード#01、#03において、以下の(1a)から(3a)のような制御を行うことができる。
(1a)ノード#01、#03は、送信停止要求の制御パケットを受信すると、各ノードに予め設定された優先度にしたがって、高優先のパケットは送信し、低優先のパケットの送信を停止する。
【0104】
(2a)ノード#01、#03は、送信停止要求の制御パケットを受信すると、その制御パケットに設定された優先度にしたがって、高優先のパケットは送信し、低優先のパケットの送信を停止する。
【0105】
(3a)ノード#01、#03は、送信停止要求の制御パケットを受信すると、ノード毎に予め設定された優先順位に応じてパケット送信を停止する。
<優先度の具体例>。
【0106】
図12に示した制御パケットのフォーマット例では、優先度として4bit(16段階)が設定可能となっている。優先度は、制御部11内のアプリケーション(ハードウェアでは演算回路11f)によって設定される。
【0107】
制御部11は、レートが下がったとしても少ない遅延で継続してデータを流し続けたい通信に対しては最高優先を設定し、一定期間停止してもよい通信には最低優先を設定する。また、制御部11は、Rxポートで送信停止要求の制御パケットを受信したら、その制御パケットに含まれる優先度よりも低い(小さい)パケットの送信を停止する。さらに、制御部11は、受信した送信停止要求の制御パケットの優先度が0だった場合は、予め設定された優先度よりも低い(小さい)パケットの送信を停止する。
【0108】
なお、優先度設定は、全体で1つの優先度を使用する場合もあり、リンク先毎に設定値を持つ場合もある。
また優先度の上位2bitをどの設定値を使用するかの選択情報として使用して、4段階の優先度で運用するといった制御を行うこともできる。例えば、00は全体の優先度設定に従う、01はノード毎の優先度に従う、10はパケットに含まれる優先度に従う、11は優先度に従わずに全停止にする等である。
【0109】
<送信停止要求の制御パケットによる送信レートの低下>
図15は送信停止要求の制御パケットによる送信レートの低下の一例を示す図である。
〔ステップS51〕ノード#00は、スイッチSW#0内のTxバッファbf1の輻輳の予兆を検出する。
【0110】
〔ステップS52〕ノード#00は、スイッチSW#0の輻輳の予兆を検出すると、ノード#01、#03に向けて送信停止要求の制御パケットを出力する。
〔ステップS53〕ノード#01は、送信停止要求の制御パケットを受信する。
【0111】
〔ステップS54〕ノード#01は、ノード#00から送信された制御パケットを受信したことにより、ノード#00宛てのパケットのみ送信レートを低下させる。
〔ステップS55〕ノード#03は、送信停止要求の制御パケットを受信する。
【0112】
〔ステップS56〕ノード#03は、ノード#00から送信された制御パケットを受信したことにより、ノード#00宛てのパケットのみ送信レートを低下させる。
このように、送信停止要求の制御パケットを受信したノード#01、#03では、パケットの出力を停止する代わりに、少ない遅延で継続してデータを流し続けたい通信を保護するため、設定に応じてパケット送信レートを低下させる。
【0113】
ここで、パケット送信レートを低下させる場合、ノード#01、#03において、以下の(1b)から(3b)のような制御を行うことができる。
(1b)ノード#01、#03は、パケット送信レートの低下の度合いを、制御パケットに設定された送信レート低下情報を用いて決定する。
【0114】
(2b)ノード#01、#03は、制御パケットに設定された送信レート低下情報である数値nと、低下前の送信レートrとの関数f(n,r)を用いて、送信レートを決定する。
【0115】
(3b)ノード#01、#03は、制御パケットに設定された送信レート低下情報である整数値nを用いて、送信レートを低下前の送信レートの1/2
nに低下させる。
<送信レート低下情報の具体例>
図12に示した制御パケットのフォーマット例では、送信レートとして4bitが設定可能となっている。制御部11は、Rxポートで送信停止要求の制御パケットを受信したら、その制御パケットに含まれる送信レート値(送信レート低下情報)にしたがって、送信パケットの生成レートを低下させる。
【0116】
この場合、送信レート値をnとした場合、n/16のレートに落とす。例えば、0000は全停止、0001は1/16のレート、0010は2/16のレート、・・・、1111は15/16のレートである。
【0117】
制御部11は、送信レート低下状態で新たに送信停止要求の制御パケットを受信したら、その制御パケットに含まれる新しい送信レート値にしたがって、送信パケットの生成レートを低下させる。
【0118】
この場合、制御部11は、新たな送信停止要求の制御パケットに含まれる送信レート値をn、それを受信する前の送信レートをrとして関数f(n,r)を用いて送信レートを低下させる。例えば、f(n,r)=n+r-8とし、直前の送信レートが1111(=15/16)、受信した送信レート値が0111であったとすると、新たな送信レートは1110(=14/16)となる。
【0119】
または、制御部11は、新たな送信停止要求の制御パケットに含まれる送信レート値をn、それを受信する前の送信レートをrとしてr/2nに送信レートを低下させる。例えば、直前の送信レートが50%、受信した送信レート値が0010(=2)だったとすると、新たな送信レートは12.5%(=50%×1/4)となる。
【0120】
なお、上述したような、送信停止要求の制御パケットは、Ethernet対向のスイッチから見ると通常のEthernetパケットとして処理され、パケットを中継するスイッチは、それらを通常のノード間通信パケットとして扱う。
【0121】
また、送信停止要求の制御パケットには、送信停止期間を表すタイマ値を持たせてもよい。タイマ値を持たせることで、送信元毎に送信停止時間を個別に制御する等、きめの細かいフロー制御を実施することができる。さらに、エラー等により送信停止解除要求の制御パケットが送信ノードに到達しなかった場合にも、送信ノードからのパケット出力を再開可能となる。
【0122】
図13から
図15を用いて、送信停止要求の制御パケットの受信によるパケット出力制御について説明したが、送信停止要求の制御パケットを受信した場合の動作は、送信停止要求の制御パケットを送信したノード宛てのパケットに限定されるものである。また、送信停止要求の制御パケットを受信した場合の動作は、ノード間の通信に求められる品質に応じて、上述の複数の方式を組み合わせてもよい。
【0123】
<送信停止解除要求の制御パケットによる送信停止解除>
図16は送信停止解除要求の制御パケットによる送信停止解除の一例を示す図である。
〔ステップS61〕ノード#00は、スイッチSW#0内のTxバッファbf1の輻輳の予兆の解消状態を検出する。
【0124】
〔ステップS62〕ノード#00は、スイッチSW#0の輻輳の予兆の解消状態を検出すると、送信停止解除要求の制御パケットを出力する。なお、この制御パケットの送信先は、受信ノードにパケットを送信しているノードであり、この例では、ノード#01、#03に向けて制御パケットが送信される。
【0125】
なお、送信停止解除要求の制御パケットは、送信停止要求の制御パケットを送信したノードのみが送出する。また、送信停止解除要求の制御パケットの宛先は、送信停止要求の制御パケットと同じとする。
【0126】
〔ステップS63〕ノード#01は、送信停止解除要求の制御パケットを受信する。
〔ステップS64〕ノード#01は、ノード#00宛てのパケットの送信を停止している場合、ノード#00宛てのパケットの送信停止の解除を行う。またはノード#00宛てのパケットの送信レートを低下している場合、ノード#00宛てのパケットの送信レートの復旧を行う。
【0127】
〔ステップS65〕ノード#03は、送信停止解除要求の制御パケットを受信する。
〔ステップS66〕ノード#03は、ノード#00宛てのパケットの送信を停止している場合、ノード#00宛てのパケットの送信停止の解除を行う。またはノード#00宛てのパケットの送信レートを低下している場合、ノード#00宛てのパケットの送信レートの復旧を行う。
【0128】
このように、送信停止解除要求の制御パケットを受信したノード#01、#03では、パケットの出力を停止していた場合はパケット送信を再開し、パケットの出力を低レートにしていた場合は、パケットの送信レートを低下前のレートに戻す。
【0129】
ここで、パケットの送信停止解除を行う場合、ノード#01、#03において、以下の(1c)および(2c)のような制御を行うことができる。
(1c)パケット出力を停止しているノード#01、#03は、送信停止解除要求の制御パケットを受信しない場合でも、送信停止要求の制御パケットに送信停止期間が指定されている場合は、指定された停止期間を経過した時点でパケット送信を再開する。
【0130】
(2c)パケットの送信レートを低下させているノード#01、#03は、送信停止解除要求の制御パケットを受信しない場合でも、送信停止要求の制御パケットに送信停止期間が指定されている場合は、指定された停止期間を経過した時点でパケットの送信レートを低下前のレートに戻す。
【0131】
なお、送信停止解除要求の制御パケットは、Ethernet対向のスイッチから見ると通常のEthernetパケットとして処理され、パケットを中継するスイッチは、それらを通常のノード間通信パケットとして扱う。
【0132】
<輻輳の予兆状態の検出>
図17は輻輳の予兆状態の検出の一例を示す図である。スイッチSW#0にパケット(パケットストリーム)p1、p2が入力して、Txバッファbf1でバッファリングされ、バッファリング後のパケット(パケットストリーム)p3が通信回線L1を介してノード#00に送信されるとする。
【0133】
この場合、ノード#00側で受信パケットのレートをモニタすることでスイッチSW#0内のTxバッファbf1の輻輳の予兆状態が判定される。
図17の例では、パケットp1のデータ量とパケットp2のデータ量との和が、通信回線L1の通信帯域を上回る場合、Txバッファbf1はデータ蓄積方向にあると認識される。
【0134】
この場合、ノード#00に送信されるパケットのパケット間隔(IFG:interframe gap)は、12Byte以下が連続すると予想される。
したがって、ノード#00は、IFGが12Byte以下になる期間が一定期間連続する場合は、スイッチSW#0内のTxバッファbf1に対して輻輳が発生する予兆状態にあると判定する。
【0135】
または、ノード#00は、IFG/プリアンブルを除いたデータ有効部分のレートが閾値以上になる場合、スイッチSW#0内のTxバッファbf1が輻輳の予兆状態にあると判定する。
【0136】
輻輳の予兆状態の判定方法としては、その他の判定も含めてまとめると以下の(1d)から(3d)のような制御を行うことができる。
(1d)ノード#00は、受信パケットの有効領域(例えば、EthernetではIFG/プリアンブルを除いた部分)のデータ量が一定時間閾値を超えた場合、フルレートでデータ受信しているものとして、スイッチSW#0内のTxバッファbf1へのパケット蓄積が継続している、すなわちTxバッファbf1が輻輳の予兆状態にあると判定する。
【0137】
(2d)ノード#00は、受信パケットのパケット間隔を監視し、ある閾値(例えば、12Byte)以下が一定時間継続する場合、スイッチSW#0内のTxバッファbf1へのパケット蓄積が継続している、すなわちTxバッファbf1が輻輳の予兆状態にあると判定する。
【0138】
(3d)ノード#00は、受信パケットの区切り符号(プリアンブル、ポスタンブル等)の長さを監視し、ある閾値(例えば、6Byte)以下が一定時間(例えば1μs)継続する場合、スイッチSW#0内のTxバッファbf1へのパケット蓄積が継続している、すなわちTxバッファbf1が輻輳の予兆状態にあると判定する。
【0139】
なお、輻輳の予兆状態の検出の条件となる監視時間やパケットレートにはヒステリシスを持たせてもよい。ヒステリシスを持たせることで、輻輳の予兆状態検出のバタツキを抑止し安定したフロー制御が可能になる。
【0140】
また、スイッチSW内のTxバッファの輻輳の予兆状態の検出は、対向するスイッチや使用するアプリケーションの特性に合わせて、より早期に正確に輻輳の予兆を検出することが望ましいため、上述した(1d)から(3d)の複数の制御を組み合わせてもよい。
【0141】
上記のような判定方法によって輻輳の予兆が検出された場合は、送信停止要求の制御パケットがパケット送信元のノードに向けて送信されることになる。
<輻輳の予兆状態の解消検出>
図18は輻輳の予兆状態の解消検出の一例を示す図である。スイッチSW#0にパケット(パケットストリーム)p1、p2が入力して、Txバッファbf1でバッファリングされ、バッファリング後のパケット(パケットストリーム)p3が通信回線L1を介してノード#00に送信されているとする。
【0142】
この場合、ノード#00側で受信パケットのレートをモニタすることでスイッチSW#0内のTxバッファbf1の輻輳の予兆状態の解消が判定される。
図18の例では、パケットp1のデータ量とパケットp2のデータ量との和が、通信回線L1の通信帯域を下回る場合、Txバッファbf1はデータEmpty方向にあると認識される。この場合、ノード#00に送信されるパケットのパケット間隔は12Byteを上回るケースが多く発生する。
【0143】
したがって、ノード#00は、IFGが12Byteより長くなる時間が一定時間以上ある場合は、スイッチSW#0内のTxバッファbf1が輻輳の予兆状態から解消したことを判定する。
【0144】
または、ノード#00は、IFG/プリアンブルを除いたデータ有効部分のレートが閾値を下回る場合、スイッチSW#0内のTxバッファbf1が輻輳の予兆状態から解消したことを判定する。
【0145】
輻輳の予兆状態の解消の判定方法としては、その他の判定も含めてまとめると以下の(1e)から(3e)のような制御を行うことができる。
(1e)ノード#00は、受信パケットの有効領域のデータ量が、一定時間閾値を下回る場合、フルレートでデータを受信していないものとして、スイッチSW内のTxバッファへのパケット蓄積が無い(Empty)、すなわちTxバッファは輻輳していないと判定する。
【0146】
(2e)ノード#00は、受信データのパケット間隔を監視し、ある閾値(例えば、12Byte)を超える状態が一定時間(例えば1μs)継続する場合、スイッチSW内のTxバッファへのパケット蓄積が無い(Empty)、すなわちTxバッファは輻輳していないと判定する。
【0147】
(3e)ノード#00は、受信データの区切り符号(プリアンブル、ポスタンブル等)の長さを監視し、ある閾値(例えば、6Byte)を超える状態が一定時間継続する場合、スイッチ内Txバッファへのパケット蓄積が無い(Empty)、すなわちTxバッファは輻輳していないと判定する。
【0148】
なお、輻輳の予兆状態の解消検出の条件となる監視時間やパケットレートにはヒステリシスを持たせてもよい。ヒステリシスを持たせることで、輻輳の予兆状態の解消検出のバタツキを抑止し安定したフロー制御が可能になる。
【0149】
また、輻輳の予兆状態の解消検出の判定方法は、対向するスイッチや使用するアプリケーションの特性に合わせて、より早期に正確に輻輳の予兆状態の解消を検出することが望ましいため、上述した(1e)から(3e)の複数の制御を組み合わせてもよい。
【0150】
上記のような判定方法によって輻輳の予兆状態の解消が検出された場合は、送信停止解除要求の制御パケットがパケット送信元のノードに向けて送信されることになる。
<フローチャート>
図19は受信ノードの動作の一例を示すフローチャートである。
【0151】
〔ステップS71〕スイッチSW内のTxバッファは、輻輳(または輻輳の予兆)が解消されている状態にある。
〔ステップS72〕受信ノード内の制御部11は、受信パケットのレートを監視する。
【0152】
〔ステップS73〕制御部11は、受信レートと検出閾値とを比較する。検出閾値が受信レートを超える場合(受信レート<検出閾値の場合)はステップS72に処理が戻り、受信レートが検出閾値以上の場合(受信レート≧検出閾値の場合)はステップS74に処理が進む。
【0153】
〔ステップS74〕受信ノード内の制御部11は、送信停止要求の制御パケットを出力する。
〔ステップS75〕スイッチSW内のTxバッファは、輻輳の予兆状態にある。
【0154】
〔ステップS76〕受信ノード内の制御部11は、受信パケットのレートを監視する。
〔ステップS77〕受信ノード内の制御部11は、受信レートと解除閾値とを比較する。受信レートが解除閾値以上の場合(受信レート≧解除閾値の場合)はステップS76に処理が戻り、解除閾値が受信レートを超える場合(受信レート<解除閾値の場合)はステップS78の処理に進む。
【0155】
〔ステップS78〕受信ノード内の制御部11は、送信停止解除要求の制御パケットを出力する。ステップS71の状態に戻る。
図20は送信ノードの動作の一例を示すフローチャートである。なお、
図20に示すフローでは、送信ノードが送信停止要求の制御パケットを受信するとパケット送信の停止を行う場合の例とする。
【0156】
〔ステップS81〕送信ノード内の制御部11は、Rxポートに送信停止要求の制御パケットを受信したか否かを判定する。送信停止要求の制御パケットを受信した場合はステップS82の処理に進み、受信していない場合はステップS83の処理に進む。
【0157】
〔ステップS82〕送信ノード内の制御部11は、送信停止要求の制御パケットの送信元の受信ノードに対するパケット送信の停止を行う。ステップS81の処理に戻る。
〔ステップS83〕送信ノード内の制御部11は、Rxポートに送信停止解除要求の制御パケットを受信したか否かを判定する。送信停止解除要求の制御パケットを受信した場合はステップS84の処理に進み、受信していない場合はステップS83の処理を繰り返す。
【0158】
〔ステップS84〕送信ノード内の制御部11は、送信停止解除要求の制御パケットの送信元の受信ノードに対するパケット送信停止の解除を行う。ステップS81の処理に戻る。
【0159】
以上説明したように、本発明によれば、スイッチを用いたHPCネットワークにおいて、受信ノード側でスイッチSW内のTxバッファの輻輳の予兆を検出してデータ輻輳時にPauseパケットを使用せずに輻輳制御を行う。これにより、全ノードでパケット送信が停止になることを抑止しながら輻輳の発生を回避することが可能になる。
【0160】
さらに、本発明では、以下の(1)から(8)に挙げるような効果を有している。
(1)データ輻輳時において一律的にパケット停止が不要となるため、伝送効率向上が見込まれる。
【0161】
(2)一律でのパケット停止を行わず、ノード間接続フロー毎の制御となるため、接続ノード数が上昇するほど効果は大きい。
(3)多くのノードを多次元のトーラスネットワークで接続する大規模なネットワークをEthernetスイッチで仮想的に構築する場合、Ethernetスイッチを多段にカスケード接続する必要がある。このような場合において、本発明ではPauseパケットを発生させないため、Pauseパケットによる伝送帯域の圧迫を抑制でき、伝送効率の大幅な向上が見込まれる。
【0162】
(4)ノードの受信側に監視処理を分散するため、対象フローの制御を細かく行うことができる。
(5)輻輳の原因となっているパケットを送信している送信ノードの識別を、パケットを受信する側の受信ノードで行うことにより、個々の送信ノードが占有する帯域に制限を設けずに受信ノードの帯域を十分に利用することが可能になる。
【0163】
(6)輻輳の原因となっている送信ノードのパケット送出に対して、停止、優先度を考慮した停止処理や、送信レートの低下処理を、ノード毎に選んで指定することにより、通信サービスの必要性に応じて細やかに制御を行えるため、伝送率の向上が期待できる。
【0164】
(7)受信ノードから直接フロー制御を行えるため、制御のレスポンスが高くなり伝送効率低下を抑えることが可能になる。
(8)上記効果を比較的安価な市販のEthernetスイッチで実現することができる。
【0165】
上記で説明した本発明の通信装置1およびノード10は、コンピュータによって実現することができる。この場合、通信装置1およびノード10が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0166】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶部、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶部には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、CD-ROM/RW等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。
【0167】
プログラムを流通させる場合、例えば、そのプログラムが記録されたCD-ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶部に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0168】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶部に格納する。そして、コンピュータは、自己の記憶部からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
【0169】
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、FPGA、DSP、ASIC、PLD等の電子回路で実現することもできる。
【0170】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0171】
なお、本発明は、Ethernet以外のネットワークであっても、パケットの送信元装置を特定可能な通信(送信元アドレスが判別できる通信)であれば、本発明の要件を満たし、本発明を実施することができる。
【0172】
具体的には、ATM(Asynchronous Transfer Mode)網、ディジタルアクセス(DA-L2)、フレームリレー、ARCNET(Attached Resource Computer Network)、OSPF(Open Shortest Path First)等のネットワークに幅広く適用可能である。さらに、組み込みシステムにおいても適用することができ、例えば、組み込みイーサネット等に適用可能である。
【符号の説明】
【0173】
1、1-1、1-2 通信装置
1a 制御部
p0 通信ポート
sw1 スイッチ
bf0 バッファ