(57)【要約】複数のプロセッサユニットを有する通信装置であって，各プロセッサユニットは，パケットをバッファリングするためのバッファと，受信プロセッサと，送信プロセッサとを有する。受信プロセッサは，受信トークンを受け取ると，外部からパケットを受信し，バッファが空いていれば，受信したパケットをバッファにバッファリングし，バッファが空いていなければ，受信したパケットを廃棄して廃棄パケット数をインクリメントして，他のプロセッサユニットに受信トークンを渡して巡回させる。送信プロセッサは，送信トークンを受け取ると，廃棄パケット数に基づいて，バッファ内のパケットを外部に送信する。
2004088938.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサユニットを有する通信装置であって、
各プロセッサユニットは、
パケットをバッファリングするためのバッファと、
受信トークンを受け取ると、外部からパケットを受信し、受信したパケットを前記バッファにバッファリングし、他のプロセッサユニットに受信トークンを渡して巡回させる受信プロセッサと、
送信トークンを受け取ると、前記バッファ内のパケットを外部に送信し、他のプロセッサユニットに送信トークンを渡して巡回させる送信プロセッサとを有し、
前記受信プロセッサは、受信トークンを受け取ったときに、前記バッファが空いているときには受信したパケットを前記バッファにバッファリングし、前記バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他のプロセッサユニットに渡し、
前記送信プロセッサは、前記カウントした廃棄パケット数を基に前記受信したパケットの順番でパケットを外部に送信する通信装置。
【請求項２】
前記送信プロセッサは、送信トークンを受け取ったときに、前記廃棄パケット数が０であれば前記バッファ内のパケットを送信し、前記廃棄パケット数が１以上であれば送信せずに前記廃棄パケット数をデクリメントし、送信トークンを他のプロセッサユニットに渡す請求項１記載の通信装置。
【請求項３】
前記受信プロセッサは、ＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）フレームを有するパケットを受信する請求項２記載の通信装置。
【請求項４】
前記送信プロセッサは、さらに前記バッファ内のパケットのアドレスを解析する請求項３記載の通信装置。
【請求項５】
さらに、前記複数のプロセッサユニットにより送信されたパケットを受信し、前記解析されたアドレスに応じて、該受信したパケットを出力するための出力装置を有する請求項４記載の通信装置。
【請求項６】
前記送信プロセッサは、送信トークンを受け取ったときに、前記バッファ内にパケットがなければアイドル数をインクリメントして他のプロセッサユニットに送信トークンを渡し、前記バッファ内にパケットがあれば前記廃棄パケット数及び前記アイドル数に応じて前記バッファ内のパケットを送信する請求項１記載の通信装置。
【請求項７】
前記送信プロセッサは、前記廃棄パケット数が前記アイドル数以下であるときには前記バッファ内のパケットを送信する請求項６記載の通信装置。
【請求項８】
前記送信プロセッサは、前記廃棄パケット数が前記アイドル数以下であるときには前記バッファ内のパケットを送信し、前記アイドル数をリセットする請求項６記載の通信装置。
【請求項９】
前記送信プロセッサは、前記廃棄パケット数が前記アイドル数より大きいときには前記バッファ内のパケットを送信せずに前記廃棄パケット数をデクリメントし、他のプロセッサユニットに送信トークンを渡す請求項８記載の通信装置。
【請求項１０】
前記受信プロセッサは、ＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）フレームを有するパケットを受信する請求項９記載の通信装置。
【請求項１１】
前記送信プロセッサは、さらに前記バッファ内のパケットのアドレスを解析する請求項１０記載の通信装置。
【請求項１２】
さらに、前記複数のプロセッサユニットにより送信されたパケットを受信し、前記解析されたアドレスに応じて、該受信したパケットを出力するための出力装置を有する請求項１１記載の通信装置。
【請求項１３】
複数のプロセッサユニットを用いる通信方法であって、
各プロセッサユニットが、受信トークンを受け取ると、外部からパケットを受信し、受信したパケットをバッファにバッファリングし、他のプロセッサユニットに受信トークンを渡して巡回させる受信ステップと、
各プロセッサユニットが、送信トークンを受け取ると、バッファ内のパケットを外部に送信し、他のプロセッサユニットに送信トークンを渡して巡回させる送信ステップとを有し、
前記受信ステップは、受信トークンを受け取ったときに、バッファが空いているときには受信したパケットをバッファにバッファリングし、バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他のプロセッサユニットに渡し、
前記送信ステップは、前記カウントした廃棄パケット数を基に前記受信したパケットの順番でパケットを外部に送信する通信方法。
【請求項１４】
前記送信ステップは、送信トークンを受け取ったときに、前記廃棄パケット数が０であればバッファ内のパケットを送信し、前記廃棄パケット数が１以上であれば送信せずに前記廃棄パケット数をデクリメントし、送信トークンを他のプロセッサユニットに渡す請求項１３記載の通信方法。
【請求項１５】
前記受信ステップは、ＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）フレームを有するパケットを受信する請求項１４記載の通信方法。
【請求項１６】
前記送信ステップは、さらにバッファ内のパケットのアドレスを解析するステップを含む請求項１５記載の通信方法。
【請求項１７】
さらに、前記複数のプロセッサユニットにより送信されたパケットを受信し、前記解析されたアドレスに応じて、該受信したパケットを出力する出力ステップを有する請求項１６記載の通信方法。
【請求項１８】
前記送信ステップは、送信トークンを受け取ったときに、バッファ内にパケットがなければアイドル数をインクリメントして他のプロセッサユニットに送信トークンを送信し、バッファ内にパケットがあれば前記廃棄パケット数及び前記アイドル数に応じてバッファ内のパケットを送信する請求項１３記載の通信方法。
【請求項１９】
前記送信ステップは、前記廃棄パケット数が前記アイドル数以下であるときにはバッファ内のパケットを送信する請求項１８記載の通信方法。
【請求項２０】
前記送信ステップは、前記廃棄パケット数が前記アイドル数以下であるときにはバッファ内のパケットを送信し、前記アイドル数をリセットする請求項１８記載の通信方法。
【請求項２１】
前記送信ステップは、前記廃棄パケット数が前記アイドル数より大きいときにはバッファ内のパケットを送信せずに前記廃棄パケット数をデクリメントし、他のプロセッサユニットに送信トークンを渡す請求項２０記載の通信方法。
【請求項２２】
前記受信ステップは、ＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）フレームを有するパケットを受信する請求項２１記載の通信方法。
【請求項２３】
前記送信ステップは、さらにバッファ内のパケットのアドレスを解析するステップを含む請求項２２記載の通信方法。
【請求項２４】
さらに、前記複数のプロセッサユニットにより送信されたパケットを受信し、前記解析されたアドレスに応じて、該受信したパケットを出力する出力ステップを有する請求項２３記載の通信方法。
【発明の詳細な説明】
【技術分野】  本発明は、通信技術に関し、特に複数のプロセッサユニットがトークンを用いてパケットを通信する技術に関する。
【背景技術】  高速なパケット（Ｇｉｇａｂｉｔ  Ｅｔｈｅｒ等）を処理する為に、複数のプロセッサを用いて、互いに並列処理させる事により処理の高速化を図っている。又、その複数プロセッサ間でトークンを用いる事によって、複数プロセッサ間での負荷分散、処理高速化及びパケット順序整合を実現している。
図１５は、従来技術によるマルチプロセッサシステムによる通信装置を示す。この通信装置は、第１〜第４のプロセッサユニット１５０１〜１５０４が並列に接続され、パケット１５３１を入力し、パケット１５３２を出力する。第１のプロセッサユニット１５０１は、第１の受信プロセッサ１５１１ａ、第１の受信バッファ１５１２ａ及び第１の処理プロセッサ１５１３ａを有する。第２のプロセッサユニット１５０２は、第２の受信プロセッサ１５１１ｂ、第２の受信バッファ１５１２ｂ及び第２の処理プロセッサ１５１３ｂを有する。第３のプロセッサユニット１５０３は、第３の受信プロセッサ１５１１ｃ、第３の受信バッファ１５１２ｃ及び第３の処理プロセッサ１５１３ｃを有する。第４のプロセッサユニット１５０４は、第４の受信プロセッサ１５１１ｄ、第４の受信バッファ１５１２ｄ及び第４の処理プロセッサ１５１３ｄを有する。
以下、第１〜第４の受信プロセッサ１５１１ａ〜１５１１ｄの個々又はすべてを受信プロセッサ１５１１、第１〜第４の受信バッファ１５１２ａ〜１５１２ｄの個々又はすべてを受信バッファ１５１２、第１〜第４の処理プロセッサ１５１３ａ〜１５１３ｄの個々又はすべてを処理プロセッサ１５１３という。
受信プロセッサ１５１１は、パケットの受信を主機能とする。処理プロセッサ１５１３は、受信されたパケットの処理やパケット送信を主機能とする。受信バッファ１５１２は、受信プロセッサ１５１１及び処理プロセッサ１５１３間のインタフェース機能を有し、例えば２個のパケット分のバッファリング容量を有する。
受信トークン１５４１及び送信トークン１５４２は、非同期にプロセッサユニット１５０１〜１５０４間を巡回している。受信プロセッサ１５１１は、受信トークン１５４１を受け取ると、受信パケット１５３１を受信し、受信トークン１５４１を次のプロセッサユニットに渡す。処理プロセッサ１５１３は、送信トークン１５４２を受け取ると、送信パケット１５３２を送信し、送信トークン１５４２を次のプロセッサユニットに渡す。
動作の流れとしては、パケット１５３１が入力されると、受信トークン１５４１を所持している受信プロセッサ１５１１がパケット１５３１を受信し、受信されたパケットは受信バッファ１５１２へ格納される。処理プロセッサ１５１３は、受信バッファ１５１２にパケットが格納された事を知ると、そのパケットに対して処理を開始し、送信トークン１５４２を所持していればパケット送信して、処理終了時に受信バッファ１５１２を解放する。
上記は、理想的な処理の流れであるが、昨今の通信の高速化や、搭載機能の複雑化によって必ずしも上記の処理が守られるとは限らない。パケットが入力され、受信バッファ１５１２がパケットを受信しようとするが、処理プロセッサ１５１３が輻輳状態で受信バッファ１５１２の解放がパケット入力に間に合わない様な過負荷が掛かった場合、パケットは受信出来ない。すなわち、パケットが廃棄される事になる。
ネットワークプロセッサ等では、処理プロセッサ１５１３はプログラマブルであり、プログラマが任意のプログラムで構成することが可能である。このプログラムの規模が大きくなるにつれ、処理時間が長くなり、受信バッファ１５１２の解放が遅くなり、パケットの廃棄数も増える。このパケットの廃棄が発生する事によって、トークンでのパケット順序整合では解決出来ない、パケットの順序逆転が起こってしまう。以下に、この時の動作を示す。
図１６に示すように、パケットＰ１〜Ｐ８が連続で入力された場合、まず受信トークン１５４１を所持している第１の受信プロセッサ１５１１ａは、パケットＰ１を受信し、第１の受信バッファ１５１２ａに格納し、受信トークン１５４１を第２の受信プロセッサ１５１１ｂに渡す。次に、受信トークン１５４１を所持する第２の受信プロセッサ１５１１ｂは、パケットＰ２を受信し、受信バッファ１５１２ｂに格納し、受信トークン１５４１を第３の受信プロセッサ１５１１ｃに渡す。以降、第３の受信プロセッサ１５１１ｃ→第４の受信プロセッサ１５１１ｄ→第１の受信プロセッサ１５１１ａ・・・と受信トークン１５４１が巡回され、パケットが受信される。
これにより、第１の受信バッファ１５１２ａはパケットＰ１及びＰ５を記憶し、第２の受信バッファ１５１２ｂはパケットＰ２及びＰ６を記憶し、第３の受信バッファ１５１２ｃはパケットＰ３及びＰ７を記憶し、第４の受信バッファ１５１２ｄはパケットＰ４及びＰ８を記憶する。第１の処理プロセッサ１５１３ａは第１の受信バッファ１５１２ａ内のパケットＰ１の処理を行い、第２の処理プロセッサ１５１３ｂは第２の受信バッファ１５１２ｂ内のパケットＰ２の処理を行い、第３の処理プロセッサ１５１３ｃは第３の受信バッファ１５１２ｃ内のパケットＰ３の処理を行い、第４の処理プロセッサ１５１３ｄは第４の受信バッファ１５１２ｄ内のパケットＰ４の処理を行う。
次に、図１７に示すように、第１の処理プロセッサ１５１３ａは、送信トークン１５４２を所持しているので、処理したパケットＰ１を送信し、第１の受信バッファ１５１２ａ内のパケットＰ１を解放する。その後、第１の処理プロセッサ１５１３ａは、送信トークン１５４２を第２の処理プロセッサ１５１３ｃに渡し、第１の受信バッファ１５１２ａ内のパケットＰ５を処理する。
続いて、パケットＰ９〜Ｐ１２が連続で入力された場合、受信トークン１５４１を所持している第１の受信プロセッサ１５１１ａは、パケットＰ９を受信し、第１の受信バッファ１５１２ａに格納し、受信トークン１５４１を第２の受信プロセッサ１５１１ｂに渡す。次に、受信トークン１５４１を所持する第２の受信プロセッサ１５１１ｂは、パケットＰ１０を受信するが、受信バッファ１５１２ｂが一杯であるので、パケットＰ１０を廃棄し、受信トークン１５４１を第３の受信プロセッサ１５１１ｃに渡す。同様に、第３及び第４の受信プロセッサ１５１１ｃ及び１５１１ｄは、受信バッファ１５１２ｃ及び１５１２ｄが一杯であるので、パケットＰ１１及びＰ１２を廃棄する。
次に、図１８に示すように、第２の処理プロセッサ１５１３ｂは、送信トークン１５４２を所持しているので、処理したパケットＰ２を送信し、第２の受信バッファ１５１２ｂ内のパケットＰ２を解放する。その後、第２の処理プロセッサ１５１３ｂは、送信トークン１５４２を第３の処理プロセッサ１５１３ｃに渡し、第２の受信バッファ１５１２ｂ内のパケットＰ６を処理する。同様に、第３及び第４の処理プロセッサ１５１３ｃ及び１５１３ｄは、それぞれ、パケットＰ３及びＰ４を送信し、続いてパケットＰ７及びＰ８を処理する。次に、第１の処理プロセッサ１５１３ａは、パケットＰ５を送信し、続いてパケットＰ９を処理する。
次に、パケットＰ１３〜Ｐ１６が連続で入力された場合、受信トークン１５４１を所持している第１の受信プロセッサ１５１１ａは、パケットＰ１３を受信し、第１の受信バッファ１５１２ａに格納し、受信トークン１５４１を第２の受信プロセッサ１５１１ｂに渡す。同様に、第２〜第４の受信プロセッサ１５１１ｂ〜１５１１ｄは、それぞれ、パケットＰ１４〜Ｐ１６を受信し、受信バッファ１５１２ｂ〜１５１２ｄに格納する。
次に、図１９に示すように、第２の処理プロセッサ１５１３ｂは、送信トークン１５４２を所持しているので、処理したパケットＰ６を送信し、第２の受信バッファ１５１２ｂ内のパケットＰ６を解放する。その後、第２の処理プロセッサ１５１３ｂは、第２の受信バッファ１５１２ｂ内のパケットＰ１４を処理する。次に、同様に、第３及び第４の処理プロセッサ１５１３ｃ及び１５１３ｄは、それぞれ、パケットＰ７及びＰ８を送信し、続いてパケットＰ１５及びＰ１６を処理する。次に、第１の処理プロセッサ１５１３ａは、パケットＰ９を送信し、続いてパケットＰ１３を処理する。
次に、図２０に示すように、第２の処理プロセッサ１５１３ｂは、送信トークン１５４２を所持しているので、処理したパケットＰ１４を送信し、第２の受信バッファ１５１２ｂ内のパケットＰ１４を解放する。次に、同様に、第３及び第４の処理プロセッサ１５１３ｃ及び１５１３ｄは、それぞれ、パケットＰ１５及びＰ１６を送信する。次に、第１の処理プロセッサ１５１３ａは、パケットＰ１３送信する。
以上のように、送信トークン１５４２が巡回し、第１の処理プロセッサ→第２の処理プロセッサ→第３の処理プロセッサ→第４の処理プロセッサ→第１の処理プロセッサ→・・・の順番で送信を行う。また、パケット自体に入力順序が識別可能な番号等がない為、受信バッファ１５１２に格納されているパケットが何番目のパケットなのかは、各処理プロセッサ１５１３側から知ることは出来ず、単純に受信バッファ１５１２に格納された順に処理を行っている。そのため、パケットＰ１０〜Ｐ１２の廃棄が生ずると、パケットＰ１３の送信順序が逆転してしまう問題がある。すなわち、パケット順序が、Ｐ１４→Ｐ１５→Ｐ１６→Ｐ１３になってしまう。この場合でも、パケットＰ１３を適正な順番で送信することが好ましい。
もし、パケットの順序が逆転したままパケット送信を実施すると、宛先によって正しく受け取れなくなり、そのリカバリの為に不要なトラフィックの増大にも繋がる。また、プロセッサの処理能力への影響を最小に抑える必要がある為、パケット順序逆転を回避する方法は極力簡素化する必要がある。
また、下記の特許文献１が開示されている。
【特許文献１】  特開平９−１６２９２７号公報
【発明の開示】
本発明の目的は、簡素化した構成で送信パケットの順序逆転を防止することができる通信技術を提供することである。
本発明の一観点によれば、複数のプロセッサユニットを有する通信装置であって、各プロセッサユニットは、パケットをバッファリングするためのバッファと、受信プロセッサと、送信プロセッサとを有する通信装置が提供される。受信プロセッサは、受信トークンを受け取ると、外部からパケットを受信し、受信したパケットをバッファにバッファリングし、他のプロセッサユニットに受信トークンを渡して巡回させる。送信トークンは、送信トークンを受け取ると、バッファ内のパケットを外部に送信し、他のプロセッサユニットに送信トークンを渡して巡回させる。また、受信プロセッサは、受信トークンを受け取ったときに、バッファが空いているときには受信したパケットをバッファにバッファリングし、バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他のプロセッサユニットに渡す。送信プロセッサは、カウントした廃棄パケット数を基に受信したパケットの順番でパケットを外部に送信する。
本発明によれば、各プロセッサユニットが、廃棄パケット数をカウントし、その廃棄パケット数を基にパケットを送信することにより、輻輳状態により受信パケットが廃棄された場合にも、送信パケット順序逆転を防止することができる。また、他のプロセッサユニットの状態等を考慮する必要がなく、簡単な構成で送信パケット順序逆転を防止することができ、通信装置の処理能力への影響を最小限に留めることができる。
【図面の簡単な説明】  図１は、本発明の実施形態による通信装置であるルータの構成例を示すブロック図である。
図２は、本実施形態による入力プロセッサの構成例を示す図である。
図３は、入力プロセッサの第１の処理例を示す図である。
図４は、入力プロセッサの第１の処理例を示す図である。
図５は、入力プロセッサの第１の処理例を示す図である。
図６は、入力プロセッサの第１の処理例を示す図である。
図７は、入力プロセッサの第１の処理例を示す図である。
図８は、入力プロセッサの第１の処理例を示す図である。
図９は、入力プロセッサの第２の処理例を示す図である。
図１０は、入力プロセッサの第２の処理例を示す図である。
図１１は、入力プロセッサの第３の処理例を示す図である。
図１２は、入力プロセッサの第３の処理例を示す図である。
図１３は、入力プロセッサの第３の処理例を示す図である。
図１４は、入力プロセッサの処理手順を示すフローチャートである。
図１５は、従来技術による入力プロセッサの構成を示す図である。
図１６は、従来技術による入力プロセッサの処理例を示す図である。
図１７は、従来技術による入力プロセッサの処理例を示す図である。
図１８は、従来技術による入力プロセッサの処理例を示す図である。
図１９は、従来技術による入力プロセッサの処理例を示す図である。
図２０は、従来技術による入力プロセッサの処理例を示す図である。
【発明を実施するための最良の形態】  図１は、本発明の実施形態による通信装置であるルータの構成例を示す。ルータ１００は、例えば入力プロセッサ１０１及び出力プロセッサ１０２，１０３を有する。入力プロセッサ１０１は、ＭＡＣ（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）フレームを有するパケット１１０を入力し、パケットのアドレスを解析し、適切な順序でパケット１１１を出力する。出力プロセッサ１０２及び１０３は、それぞれ、入力プロセッサ１０１により送信されたパケット１１１を受信し、上記の解析されたアドレスに応じて、パケット１１２及び１１３を出力する。すなわち、アドレスに応じて適切な宛先にパケットを送信するため、パケット１１２を第１のポートに出力又はパケット１１３を第２のポートに出力する。パケット１１２及び１１３は、ＭＡＣフレームを有するパケットである。このように、ルータ１００は、アドレスに応じて、パケットの出力先を制御する。
図２は、上記の入力プロセッサ（通信装置）１０１の構成例を示す。この入力プロセッサは、第１〜第４のプロセッサユニット２０１〜２０４が並列に接続され、パケット２３１を入力し、パケット２３２を出力する。第１のプロセッサユニット２０１は、第１の受信プロセッサ２１１ａ、第１の受信バッファ２１２ａ及び第１の処理プロセッサ２１３ａを有する。第２のプロセッサユニット２０２は、第２の受信プロセッサ２１１ｂ、第２の受信バッファ２１２ｂ及び第２の処理プロセッサ２１３ｂを有する。第３のプロセッサユニット２０３は、第３の受信プロセッサ２１１ｃ、第３の受信バッファ２１２ｃ及び第３の処理プロセッサ２１３ｃを有する。第４のプロセッサユニット２０４は、第４の受信プロセッサ２１１ｄ、第４の受信バッファ２１２ｄ及び第４の処理プロセッサ２１３ｄを有する。
以下、第１〜第４の受信プロセッサ２１１ａ〜２１１ｄの個々又はすべてを受信プロセッサ２１１、第１〜第４の受信バッファ２１２ａ〜２１２ｄの個々又はすべてを受信バッファ２１２、第１〜第４の処理プロセッサ２１３ａ〜２１３ｄの個々又はすべてを処理プロセッサ（送信プロセッサ）２１３という。
さらに、受信プロセッサ２１１は、廃棄パケットカウンタ２２１を有する。また、処理プロセッサ２１３は、アイドルカウンタ２２２及び廃棄パケットカウンタ２２３を有する。
受信プロセッサ２１１は、パケットの受信を主機能とする。処理プロセッサ２１３は、受信されたパケットの処理やパケット送信を主機能とする。受信バッファ２１２は、受信プロセッサ２１１及び処理プロセッサ２１３間のインタフェース機能を有し、例えば２個のパケット分のバッファリング容量を有する。
受信トークン２４１及び送信トークン２４２は、非同期にプロセッサユニット２０１〜２０４間を巡回している。受信プロセッサ２１１は、受信トークン２４１を受け取ると、受信パケット２３１を受信し、受信トークン２４１を次のプロセッサユニットに渡す。処理プロセッサ２１３は、送信トークン２４２を受け取ると、送信パケット２３２を送信し、送信トークン２４２を次のプロセッサユニットに渡す。
パケット２３１が入力されると、受信トークン２４１を所持している受信プロセッサ２１１がパケット２３１を受信し、受信されたパケットは受信バッファ２１２へ格納される。処理プロセッサ２１３は、受信バッファ２１２にパケットが格納された事を知ると、そのパケットに対して処理を開始し、送信トークン２４２を所持していればパケット送信して、処理終了時に受信バッファ２１２を解放する。
図３に示すように、パケットＰ１〜Ｐ８が連続で入力された場合、まず受信トークン２４１を所持している第１の受信プロセッサ２１１ａは、パケットＰ１を受信し、第１の受信バッファ２１２ａに格納し、受信トークン２４１を第２の受信プロセッサ２１１ｂに渡す。次に、受信トークン２４１を所持する第２の受信プロセッサ２１１ｂは、パケットＰ２を受信し、受信バッファ２１２ｂに格納し、受信トークン２４１を第３の受信プロセッサ２１１ｃに渡す。次に、同様に、第３及び第４の受信プロセッサ２１１ｃ及び２１１ｄは、それぞれ、パケットＰ３及びＰ４を受信し、受信バッファ２１２ｃ及び２１２ｄに格納する。受信トークン２４１は、第３の受信プロセッサ２１１ｃ→第４の受信プロセッサ２１１ｄ→第１の受信プロセッサ２１１ａ・・・と巡回される。次に、第１〜第４の受信プロセッサ２１１ａ〜２１１ｄは、それぞれパケットＰ５〜Ｐ８を受信し、受信バッファ２１２ａ〜２１２ｄに格納する。
第１の受信バッファ２１２ａはパケットＰ１及びＰ５を記憶し、第２の受信バッファ２１２ｂはパケットＰ２及びＰ６を記憶し、第３の受信バッファ２１２ｃはパケットＰ３及びＰ７を記憶し、第４の受信バッファ２１２ｄはパケットＰ４及びＰ８を記憶する。第１の処理プロセッサ２１３ａは第１の受信バッファ２１２ａ内のパケットＰ１の処理を行い、第２の処理プロセッサ２１３ｂは第２の受信バッファ２１２ｂ内のパケットＰ２の処理を行い、第３の処理プロセッサ２１３ｃは第３の受信バッファ２１２ｃ内のパケットＰ３の処理を行い、第４の処理プロセッサ２１３ｄは第４の受信バッファ２１２ｄ内のパケットＰ４の処理を行う。
次に、図４に示すように、第１の処理プロセッサ２１３ａは、送信トークン２４２を所持しているので、処理したパケットＰ１を送信し、第１の受信バッファ２１２ａ内のパケットＰ１を解放する。その後、第１の処理プロセッサ２１３ａは、送信トークン２４２を第２の処理プロセッサ２１３ｂに渡し、第１の受信バッファ２１２ａ内のパケットＰ５を処理する。
続いて、パケットＰ９〜Ｐ１２が連続で入力された場合、受信トークン２４１を所持している第１の受信プロセッサ２１１ａは、パケットＰ９を受信し、第１の受信バッファ２１２ａに格納し、受信トークン２４１を第２の受信プロセッサ２１１ｂに渡す。次に、受信トークン２４１を所持する第２の受信プロセッサ２１１ｂは、パケットＰ１０を受信するが、受信バッファ２１２ｂが一杯であるので、パケットＰ１０を廃棄して廃棄パケットカウンタ２２１をインクリメント（＋１）し、受信トークン２４１を第３の受信プロセッサ２１１ｃに渡す。同様に、第３及び第４の受信プロセッサ２１１ｃ及び２１１ｄは、受信バッファ２１２ｃ及び２１２ｄが一杯であるので、パケットＰ１１及びＰ１２を廃棄し、廃棄パケットカウンタ２２１をインクリメントする。第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄの廃棄パケットカウンタ２２１の値は「１」になる。
次に、図５に示すように、第２の処理プロセッサ２１３ｂは、送信トークン２４２を所持しているので、処理したパケットＰ２を送信し、第２の受信バッファ２１２ｂ内のパケットＰ２を解放する。その後、第２の処理プロセッサ２１３ｂは、送信トークン２４２を第３の処理プロセッサ２１３ｃに渡し、第２の受信バッファ２１２ｂ内のパケットＰ６を処理する。同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、それぞれ、パケットＰ３及びＰ４を送信し、続いてパケットＰ７及びＰ８を処理する。次に、第１の処理プロセッサ２１３ａは、パケットＰ５を送信し、続いてパケットＰ９を処理する。
次に、パケットＰ１３〜Ｐ１６が連続で入力された場合、受信トークン２４１を所持している第１の受信プロセッサ２１１ａは、パケットＰ１３を受信し、第１の受信バッファ２１２ａに格納し、受信トークン２４１を第２の受信プロセッサ２１１ｂに渡す。同様に、第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄは、それぞれ、パケットＰ１４〜Ｐ１６を受信し、受信バッファ２１２ｂ〜２１２ｄに格納する。第２〜第４の受信バッファ２１２ｂ〜２１２ｄは、パケットＰ１４〜Ｐ１６を格納すると共に、第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄの廃棄パケットカウンタ２２１の値「１」を格納する。
次に、図６に示すように、第２の処理プロセッサ２１３ｂは、送信トークン２４２を所持しているので、処理したパケットＰ６を送信し、第２の受信バッファ２１２ｂ内のパケットＰ６を解放する。その後、第２の処理プロセッサ２１３ｂは、第２の受信バッファ２１２ｂ内のパケットＰ１４を処理すると共に、受信バッファ２１２ｂ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、それぞれ、パケットＰ７及びＰ８を送信し、続いてパケットＰ１５及びＰ１６を処理すると共に、受信バッファ２１２ｃ及び２１２ｄ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。次に、第１の処理プロセッサ２１３ａは、パケットＰ９を送信し、続いてパケットＰ１３を処理する。
次に、図７に示すように、第２の処理プロセッサ２１３ｂは、送信トークン２４２を所持しているが、廃棄パケットカウンタ２２３の値が「１」でありアイドルカウンタ２２２の値「０」よりも大きいので、パケット送信をせずに廃棄パケットカウンタ２２３をデクリメント（−１）し、送信トークン２４２を第３の処理プロセッサ２１３ｃに渡す。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、それぞれ、パケット送信せずに、廃棄パケットカウンタ２２３をデクリメントし、送信トークン２４２を次の処理プロセッサ２１３に渡す。次に、第１の処理プロセッサ２１３ａは、パケットＰ１３送信し、送信トークン２４２を第２の処理プロセッサ２１３ｂに渡す。
次に、図８に示すように、第２の処理プロセッサ２１３ｂは、廃棄パケットカウンタ２２３の値が「０」でありアイドルカウンタ２２２の値「０」以下であるので、パケットＰ１４を送信し、第２の受信バッファ２１２ｂのパケットＰ１４を解放する。同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、廃棄パケットカウンタ２２３の値が「０」でありアイドルカウンタ２２２の値「０」以下であるので、パケットＰ１５及びＰ１６を送信し、受信バッファ２１２ｃ及び２１２ｄのパケットＰ１５及びＰ１６を解放する。
以上のように、受信プロセッサ２１１において、パケット廃棄が発生した場合に廃棄パケットカウンタ２２１をインクリメントしておき、次に受信パケットを受信バッファ２１２に格納する際、同時に廃棄パケットカウンタも格納しておくことによって、処理プロセッサ２１３は現在のパケット受信以前に幾つのパケットが廃棄されたかを認識する事が可能となる。
パケットの廃棄が発生しない状況であれば、トークンでパケット順序の整合を取っている以上、順序逆転の発生はありえない。廃棄されたパケットは、本来その処理プロセッサで処理されるべきパケットであった事に着目し、各処理プロセッサにて廃棄パケットカウンタの数だけ送信トークンを空回しし、廃棄されたパケットを、あたかも処理及び送信したかの如く扱う事で、順序逆転を回避する事が可能となる。
上記の場合には、アイドルカウンタ２２２は、必ずしも必要でない。処理プロセッサ２１３は、送信トークン２４２を受け取ったときに、廃棄パケットカウンタ２２３が０であれば受信バッファ２１２内のパケットを送信し、廃棄パケットカウンタ２２３が１以上であれば送信せずに廃棄パケットカウンタをデクリメントし、送信トークンを次の処理プロセッサ２１３に渡す。
次に、図９及び図１０を参照しながら、アイドルカウンタ２２２を設けない場合の問題点を説明する。図３及び図４の処理の後、アイドル状態が生じた場合を説明する。ここで、アイドル状態は、上記のパケットＰ１〜Ｐ８の入力後、パケット入力がない状態をいう。具体的には、処理プロセッサ２１３が送信トークン２４２を受け取ったときに、受信バッファ２１２が空である状態をいう。
上記のアイドル状態後、図９に示すように、パケットＱ１〜Ｑ８が連続で入力された場合、受信トークン２４１を所持している第１の受信プロセッサ２１１ａは、パケットＱ１を受信し、第１の受信バッファ２１２ａに格納し、受信トークン２４１を第２の受信プロセッサ２１１ｂに渡す。同様に、第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄは、それぞれ、パケットＱ２〜Ｑ４を受信し、受信バッファ２１２ｂ〜２１２ｄに格納すると共に、第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄの廃棄パケットカウンタ２２１の値「１」を受信バッファ２１２ｂ〜２１２ｄに格納する。その後、廃棄パケットカウンタ２２１は、０にリセットされる。次に、第１〜第４の受信プロセッサ２１１ａ〜２１１ｄは、それぞれパケットＱ５〜Ｑ８を受信し、受信バッファ２１２ａ〜２１２ｄに格納する。
第１の受信バッファ２１２ａはパケットＱ１及びＱ５を記憶し、第２の受信バッファ２１２ｂはパケットＱ２及びＱ６を記憶し、第３の受信バッファ２１２ｃはパケットＱ３及びＱ７を記憶し、第４の受信バッファ２１２ｄはパケットＱ４及びＱ８を記憶する。第１の処理プロセッサ２１３ａは、第１の受信バッファ２１２ａ内のパケットＱ１の処理を行う。次に、第２の処理プロセッサ２１３ｂは、第２の受信バッファ２１２ｂ内のパケットＱ２の処理を行うと共に、それに対応する受信バッファ２１２ｂ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、受信バッファ２１２ｃ及び２１２ｄ内のパケットＱ３及びＱ４の処理を行うと共に、それらに対応する受信バッファ２１２ｃ及び２１２ｄ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。
次に、第１の処理プロセッサ２１３ａは、パケットＱ１を送信し、受信バッファ２１２ａのパケットＱ１を解放し、受信バッファ２１２ａ内の次のパケットＱ５を処理する。次に、第２の処理プロセッサ２１３ｂは、廃棄パケットカウンタ２２３が「１」であるので、パケット送信をせずに廃棄パケットカウンタ２２３をデクリメントし、送信トークン２４２を第３の処理プロセッサ２１３ｃに渡す。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、廃棄パケットカウンタ２２３が「１」であるので、パケット送信をせずに廃棄パケットカウンタ２２３をデクリメントし、送信トークン２４２を次に渡す。第２〜第４の処理プロセッサ２１３ｂ〜２１３ｄ内の廃棄パケットカウンタ２２３は「０」になる。
次に、図１０に示すように、第１の処理プロセッサ２１３ａは、パケットＱ５を送信し、受信バッファ２１２ａのパケットＱ５を解放する。次に、第２の処理プロセッサ２１３ｂは、パケットＱ２を送信し、受信バッファ２１２ｂ内のパケットＱ２を解放する。その後、第２の処理プロセッサ２１３ｂは、受信バッファ２１２ｂ内のパケットＱ６を処理する。同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、それぞれ、パケットＱ３及びＱ４を送信し、続いてパケットＱ７及びＱ８を処理する。
以上のように、連続パケットの最後のパケットＰ１０〜Ｐ１２が廃棄されていた場合（図４の状態でパケット入力が終わった場合）で、アイドル状態を挟んでも、次に処理プロセッサ２１３に渡される最初のパケットＱ２〜Ｑ４には、廃棄パケットカウンタ２２３の値「１」が付加されて来ている為、パケット順序逆転を引き起こしてしまう。すなわち、パケット順序が、Ｑ５→Ｑ２→Ｑ３→Ｑ４になってしまう。このような問題点は、上記のアイドルカウンタ２２２を用いることにより解決することができる。以下、その説明を行う。
上記と同様に、図３及び図４の処理の後、アイドル状態が生じる場合を説明する。図１１に示すように、処理プロセッサ２１３は、送信トークンを受け取ったときに、受信バッファ２１２が空であるときには、アイドル状態であるとして、アイドルカウンタ２２２をインクリメントし、送信トークンを次の処理プロセッサ２１３に渡す。この処理により、例えば、処理プロセッサ２１３ａ〜２１３ｄのアイドルカウンタ２２２には「ｎ」がセットされる。「ｎ」は、例えば１以上の値とする。
次に、パケットＱ１〜Ｑ８が連続で入力された場合、受信トークン２４１を所持している第１の受信プロセッサ２１１ａは、パケットＱ１を受信し、第１の受信バッファ２１２ａに格納し、受信トークン２４１を第２の受信プロセッサ２１１ｂに渡す。同様に、第２〜第４の受信プロセッサ２１１ｂ〜２１１ｄは、それぞれ、パケットＱ２〜Ｑ４を受信し、バッファ２１２ｂ〜２１２ｄに格納すると共に、廃棄パケットカウンタ２２１の値「１」を受信バッファ２１２ｂ〜２１２ｄに格納する。その後、廃棄パケットカウンタ２２１は、０にリセットされる。次に、第１〜第４の受信プロセッサ２１１ａ〜２１１ｄは、それぞれパケットＱ５〜Ｑ８を受信し、受信バッファ２１２ａ〜２１２ｄに格納する。
第１の受信バッファ２１２ａはパケットＱ１及びＱ５を記憶し、第２の受信バッファ２１２ｂはパケットＱ２及びＱ６を記憶し、第３の受信バッファ２１２ｃはパケットＱ３及びＱ７を記憶し、第４の受信バッファ２１２ｄはパケットＱ４及びＱ８を記憶する。第１の処理プロセッサ２１３ａは、第１の受信バッファ２１２ａ内のパケットＱ１の処理を行う。次に、第２の処理プロセッサ２１３ｂは、第２の受信バッファ２１２ｂ内のパケットＱ２の処理を行うと共に、それに対応する受信バッファ２１２ｂ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、受信バッファ２１２ｃ及び２１２ｄ内のパケットＱ３及びＱ４の処理を行うと共に、それらに対応する受信バッファ２１２ｃ及び２１２ｄ内の廃棄パケットカウンタ値「１」を廃棄パケットカウンタ２２３にセットする。
次に、図１２に示すように、第１の処理プロセッサ２１３ａは、パケットＱ１を送信する。次に、第２の処理プロセッサ２１３ｂは、廃棄パケットカウンタ２２３の値「１」がアイドルカウンタ２２２の値「ｎ」以下であるので、パケットＱ２を送信し、送信トークン２４２を第３の処理プロセッサ２１３ｃに渡す。次に、同様に、第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、廃棄パケットカウンタ２２３の値「１」がアイドルカウンタ２２２の値「ｎ」以下であるので、パケットＱ３及びＱ４を送信し、送信トークン２４２を次に渡す。
次に、図１３に示すように、第１〜第４の処理プロセッサ２１３ａ〜２１３ｄは、上記の送信後、アイドルカウンタ２２２及び廃棄パケットカウンタ２２３を０にリセットする。その後、第１の処理プロセッサ２１３ａは、受信バッファ２１２ａ内のパケットＱ１を解放し、パケットＱ５を処理する。第２の処理プロセッサ２１３ｂは、受信バッファ２１２ｂ内のパケットＱ２を解放し、パケットＱ６を処理する。第３及び第４の処理プロセッサ２１３ｃ及び２１３ｄは、受信バッファ２１２ｃ及び２１２ｄ内のパケットＱ３及びＱ４を解放し、パケットＱ７及びＱ８を処理する。その後、パケットＱ５，Ｑ６，Ｑ７及びＱ８が順に送信される。
以上のように、処理プロセッサ２１３は、送信トークンを受け取ったときに、受信バッファ２１２内にパケットがなければアイドルカウンタ２２２をインクリメントして他の処理プロセッサ２１３に送信トークンを渡し、受信バッファ２１２内にパケットがあれば、廃棄パケットカウンタ２２３がアイドルカウンタ２２２以下であるときには受信バッファ２１２内のパケットを送信し、アイドルカウンタ２２２をリセットする。また、送信プロセッサ２１３は、廃棄パケットカウンタ２２３がアイドルカウンタ２２２より大きいときには受信バッファ２１２内のパケットを送信せずに廃棄パケットカウンタ２２３をデクリメントし、他の処理プロセッサ２１３に送信トークンを渡す。これにより、連続パケットの最後のパケットＰ１０〜Ｐ１２が廃棄されていた後、アイドル状態になり、パケットＱ１〜Ｑ８が入力されても、適切な順序でパケットを送信することができる。
図１４は、本発明の実施形態による上記の入力プロセッサ（通信装置）１０１の処理手順を示すフローチャートである。ステップＳ１４０１では、パケットを受信したか否かをチェックする。具体的には、処理プロセッサが受信バッファ内にパケットがあるか否かをチェックする。受信バッファ内にパケットがあればステップＳ１４０５へ進み、パケットがなければステップＳ１４０２へ進む。なお、受信プロセッサは、受信バッファが空いていればそのパケットを受信バッファに格納し、空いていなければそのパケットを廃棄する。
ステップＳ１４０２では、送信トークンを所有しているか否かをチェックする。所有していなければステップＳ１４０１へ戻り、所有していればステップＳ１４０３へ進む。ステップＳ１４０３では、送信トークンを解放し、次の処理プロセッサに渡す。次に、ステップＳ１４０４では、アイドルカウンタをインクリメントする。その後、ステップＳ１４０１へ戻る。
ステップＳ１４０５では、受信パケット処理を行う。すなわち、送信プロセッサは、受信バッファ内のパケット処理を行う。例えば、パケットのアドレス解析を行い、宛先を確定する。次に、ステップＳ１４０６では、送信トークンを所有しているか否かをチェックする。所有していなければ待機し、所有していればステップＳ１４０７へ進む。
ステップＳ１４０７では、廃棄パケットカウンタがアイドルカウンタ以下であるか否かの条件をチェックする。条件を満たさなければステップＳ１４０８へ進み、条件を満たしていればステップＳ１４１０へ進む。
ステップＳ１４０８では、送信トークンを解放し、次の処理プロセッサに渡す。次に、ステップＳ１４０９では、廃棄パケットカウンタをデクリメントする。その後、ステップＳ１４０６へ戻る。
ステップＳ１４１０では、処理プロセッサがパケット送信処理を行う。次に、ステップＳ１４１１では、送信トークンを解放し、次の処理プロセッサに渡す。次に、ステップＳ１４１２では、アイドルカウンタを０にリセットする。以上で、処理を終了する。このような処理を繰り返し行う。
本実施形態は、マルチプロセッサシステム（ネットワークプロセッサ等）において、特にトークンを用いて高速パケット処理を行うものである。以上のように、受信プロセッサは、受信トークンを受け取ったときに、受信バッファが空いているときには受信したパケットを受信バッファにバッファリングし、受信バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他の受信プロセッサに渡す。処理プロセッサは、カウントした廃棄パケット数を基に上記受信したパケットの順番でパケットを外部に送信する。
また、処理プロセッサは、送信トークンを受け取ったときに、受信バッファ内にパケットがなければアイドル数をインクリメントして他の処理プロセッサに送信トークンを渡し、受信バッファ内にパケットがあれば廃棄パケット数及びアイドル数に応じて受信バッファ内のパケットを送信する。
本実施形態によれば、トークンを使用したネットワークプロセッサ等のマルチプロセッサシステムにおいて、パケットの廃棄による、パケット順序逆転が発生し得る状況においても、これを回避する事が可能であり、他のプロセッサの状態等を考慮する必要がなく、わずかなアルゴリズム追加で実現可能である為、処理能力への影響を最小限に留める事が可能である。
なお、廃棄パケットは、上位階層のソフトウエアが再送要求し、廃棄パケットをリカバリすることができる。また、本実施形態は、上記のプロセッサ構成数等に限定されるものではなく、トークン制御により動作している種々のマルチプロセッサシステムにおいて実施可能である。
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】  本発明によれば、各プロセッサユニットが、廃棄パケット数をカウントし、その廃棄パケット数を基にパケットを送信することにより、輻輳状態により受信パケットが廃棄された場合にも、送信パケット順序逆転を防止することができる。また、他のプロセッサユニットの状態等を考慮する必要がなく、簡単な構成で送信パケット順序逆転を防止することができ、通信装置の処理能力への影響を最小限に留めることができる。
【図１】
2004088938.tif 000003
【図２】
2004088938.tif 000004
【図３】
2004088938.tif 000005
【図４】
2004088938.tif 000006
【図５】
2004088938.tif 000007
【図６】
2004088938.tif 000008
【図７】
2004088938.tif 000009
【図８】
2004088938.tif 000010
【図９】
2004088938.tif 000011
【図１０】
2004088938.tif 000012
【図１１】
2004088938.tif 000013
【図１２】
2004088938.tif 000014
【図１３】
2004088938.tif 000015
【図１４】
2004088938.tif 000016
【図１５】
2004088938.tif 000017
【図１６】
2004088938.tif 000018
【図１７】
2004088938.tif 000019
【図１８】
2004088938.tif 000020
【図１９】
2004088938.tif 000021
【図２０】
2004088938.tif 000022
【手続補正書】
【提出日】平成17年5月13日(2005.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサユニットを有する通信装置であって、
各プロセッサユニットは、
パケットをバッファリングするためのバッファと、
受信トークンを受け取ると、外部からパケットを受信し、受信したパケットを前記バッファにバッファリングし、他のプロセッサユニットに受信トークンを渡して巡回させる受信プロセッサと、
送信トークンを受け取ると、前記バッファ内のパケットを外部に送信し、他のプロセッサユニットに送信トークンを渡して巡回させる送信プロセッサとを有し、
前記受信プロセッサは、受信トークンを受け取ったときに、前記バッファが空いているときには受信したパケットを前記バッファにバッファリングし、前記バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他のプロセッサユニットに渡し、
前記送信プロセッサは、前記カウントした廃棄パケット数を基に前記受信したパケットの順番でパケットを外部に送信する通信装置。
【請求項２】
前記送信プロセッサは、送信トークンを受け取ったときに、前記廃棄パケット数が０であれば前記バッファ内のパケットを送信し、前記廃棄パケット数が１以上であれば送信せずに前記廃棄パケット数をデクリメントし、送信トークンを他のプロセッサユニットに渡す請求項１記載の通信装置。
【請求項３】
前記送信プロセッサは、送信トークンを受け取ったときに、前記バッファ内にパケットがなければアイドル数をインクリメントして他のプロセッサユニットに送信トークンを渡し、前記バッファ内にパケットがあれば前記廃棄パケット数及び前記アイドル数に応じて前記バッファ内のパケットを送信する請求項１記載の通信装置。
【請求項４】
前記送信プロセッサは、前記廃棄パケット数が前記アイドル数以下であるときには前記バッファ内のパケットを送信する請求項３記載の通信装置。
【請求項５】
前記送信プロセッサは、前記廃棄パケット数が前記アイドル数以下であるときには前記バッファ内のパケットを送信し、前記アイドル数をリセットする請求項３記載の通信装置。
【請求項６】
複数のプロセッサユニットを用いる通信方法であって、
各プロセッサユニットが、受信トークンを受け取ると、外部からパケットを受信し、受信したパケットをバッファにバッファリングし、他のプロセッサユニットに受信トークンを渡して巡回させる受信ステップと、
各プロセッサユニットが、送信トークンを受け取ると、バッファ内のパケットを外部に送信し、他のプロセッサユニットに送信トークンを渡して巡回させる送信ステップとを有し、
前記受信ステップは、受信トークンを受け取ったときに、バッファが空いているときには受信したパケットをバッファにバッファリングし、バッファが空いていないときには受信したパケットを廃棄して廃棄パケット数をインクリメントし、受信トークンを他のプロセッサユニットに渡し、
前記送信ステップは、前記カウントした廃棄パケット数を基に前記受信したパケットの順番でパケットを外部に送信する通信方法。
【請求項７】
前記送信ステップは、送信トークンを受け取ったときに、前記廃棄パケット数が０であればバッファ内のパケットを送信し、前記廃棄パケット数が１以上であれば送信せずに前記廃棄パケット数をデクリメントし、送信トークンを他のプロセッサユニットに渡す請求項６記載の通信方法。
【請求項８】
前記送信ステップは、送信トークンを受け取ったときに、バッファ内にパケットがなければアイドル数をインクリメントして他のプロセッサユニットに送信トークンを送信し、バッファ内にパケットがあれば前記廃棄パケット数及び前記アイドル数に応じてバッファ内のパケットを送信する請求項６記載の通信方法。
【請求項９】
前記送信ステップは、前記廃棄パケット数が前記アイドル数以下であるときにはバッファ内のパケットを送信する請求項８記載の通信方法。
【請求項１０】
前記送信ステップは、前記廃棄パケット数が前記アイドル数以下であるときにはバッファ内のパケットを送信し、前記アイドル数をリセットする請求項８記載の通信方法。
【国際調査報告】
2004088938.tif 000023
2004088938.tif 000024
2004088938.tif 000025