(57)【特許請求の範囲】
【請求項１】
パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜くパケット引き抜き手段と、
前記パケット引き抜き手段により引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化するカプセル化手段と、
前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、ネットワークを介して接続される宛先毎にそれぞれ設定された送信速度に基づいて決定するレート設定手段と
を備えたパケット伝送装置。
【請求項２】
前記パケットを宛先毎に分けて蓄積する前記バッファと、
前記カプセル化されたパケットを、ネットワークを介して前記宛先に対して送信する送信手段と
を更に備えた
請求項１に記載のパケット伝送装置。
【請求項３】
前記パケット引き抜き手段は、前記宛先毎に分けられて蓄積されるパケットを、該宛先毎にラウンドロビンで探索して引き抜く
請求項１又は２に記載のパケット伝送装置。
【請求項４】
前記レート設定手段は、前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置に接続されたネットワークの帯域に基づいて決定する
請求項１乃至３のいずれか１項に記載のパケット伝送装置。
【請求項５】
前記レート設定手段は、前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置とネットワークを介して接続される宛先毎に設定された送信速度の合計、及び当該パケット伝送装置に接続されたネットワークの帯域、の何れか遅い方の速度に基づいて決定する
請求項４に記載のパケット伝送装置。
【請求項６】
パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜くパケット引き抜き手段と、
前記パケット引き抜き手段により引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化するカプセル化手段と、を備え、
前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、接続されたネットワークの帯域に基づいて決定する第１のモードと、
前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、ネットワークを介して接続される宛先毎にそれぞれ設定した送信速度の合計、及び接続されたネットワークの帯域、の何れか遅い方の速度に基づいて決定する第２のモードと、
前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、ネットワークを介して接続される宛先毎にそれぞれ設定した送信速度に基づいて決定する第３のモードと、
の３つのモードの少なくとも１つを含む複数のモードを含み、何れかのモードにて前記パケット引き抜き手段が前記パケットの引き抜きを行う
パケット伝送装置。
【請求項７】
前記パケット引き抜き手段は、前記バッファから、同一宛先のパケットを、該バッファに蓄積されているパケット全て、または、引き抜くパケットの合計サイズが前記ネットワークが許容するパケットサイズを超えないパケット数、または予め定められたパケットの合計サイズもしくは合計数を超えないパケット数、引き抜く
請求項１乃至５の何れか１項に記載のパケット伝送装置。
【請求項８】
それぞれがネットワークを介して接続され、互いに該ネットワークを介してパケットを送受信する請求項１乃至７の何れか１項に記載のパケット伝送装置を、複数備えた
パケット伝送システム。
【請求項９】
パケット伝送装置が、
パケット引き抜き手段において、パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜き、
カプセル化手段において、前記引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化し、
レート設定手段において、前記パケットの引き抜きを行う速度を、自パケット伝送装置とネットワークを介して接続される宛先毎にそれぞれ設定された送信速度に基づいて決定する
パケット伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットを伝送するための、パケット伝送システム、パケット伝送装置及びパケット伝送方法等に関する。
【背景技術】
【０００２】
ネットワークを介して接続されたノード間にて、相互にパケットを伝送することが行われている（例えば、特許文献１及び２参照）。【０００３】
また、このようなパケット伝送システムの構成の一例が非特許文献１に記載されている。【０００４】
非特許文献１に記載のパケット伝送システムは、図１４に表されるように、第１のネットワークノード５００、第２のネットワークノード６００及び第３のネットワークノード７００を含む。そして、これら各ネットワークノード（第１のネットワークノード５００、第２のネットワークノード６００及び第３のネットワークノード７００）はネットワーク８００を介して接続されており、相互に通信を行う。なお、図１４及びこの図１４を参照して行う本説明ではネットワークノードの台数が３つの場合を想定するが、これは説明の都合上３つとするに過ぎず、パケット伝送システム内に含まれるネットワークノードの数を限定する趣旨ではない。パケット伝送システム内には任意の台数のネットワークノードが含まれていて良い。【０００５】
次に、更に図１４を参照して第１のネットワークノード５００の構成について説明する。なお、今回は第１のネットワークノード５００の構成を例にとって説明を行うが、他の第２のネットワークノード６００と第３のネットワークノード７００の構成も、第１のネットワークノード５００の構成と同じであると仮定する。【０００６】
第１のネットワークノード５００は、パケット出力アプリケーション５１０、パケット集積キュー５２０、パケット集積部５３０、メモリ５４０及びパケット受信部５５０を含む。【０００７】
パケット出力アプリケーション５１０は、ネットワーク８００に対して送信するパケットをパケット集積キュー５２０に対して出力する。【０００８】
パケット集積キュー５２０は、パケット出力アプリケーション５１０が出力したパケットを蓄積する。【０００９】
パケット集積部５３０は、パケット集積キュー５２０に蓄積された複数のパケットを集積してネットワーク８００に対して送信する。送信されたパケットは、第２のネットワークノード６００や第３のネットワークノード７００に対して伝送される。【００１０】
メモリ５４０は、パケット集積部５３０の動作パラメータを保持する。【００１１】
パケット受信部５５０は、第２のネットワークノード６００や第３のネットワークノード７００が送信したパケットをネットワーク８００経由にて受信し、受信したパケットをパケット出力アプリケーション５１０に渡す。【００１２】
また、パケット集積部５３０は、集積パケットを送信する契機を与えるタイムアウトを検出するタイマであるタイマ５３１を保持する。【００１３】
更に、メモリ５４０は、集積パケット数の最小値を示す最小集積数５４１と、パケット集積のタイムアウト値を示すタイムアウト値５４２とを保持する。【００１４】
更に、パケット集積キュー５２０に集積しているパケットとして、パケットＰ５２１及びパケットＰ’５２２を図示する。ここで、パケットＰ５２１はパケット集積キュー５２０の先頭パケットであり、パケットＰ’５２２は宛先がパケットＰ５２１と同じパケットである。【００１５】
このような構成を有する一般的なパケット伝送システムの動作を、図１５の流れ図を参照して説明する。ここで上述したように、各ネットワークノード（第１のネットワークノード５００、第２のネットワークノード６００及び第３のネットワークノード７００）はネットワーク８００を介して相互にパケットを送受信するが、今回は第１のネットワークノード５００が保持するパケット出力アプリケーション５１０がネットワーク８００にパケットを送信する際の動作を例にとって説明する。【００１６】
まず、パケット出力アプリケーション５１０が出力したパケットはパケット集積キュー５２０に蓄積される。パケット集積キュー５２０にパケットが１つでも入ると、パケット集積部５３０は、パケット集積キュー５２０を参照する。パケット集積部５３０は、パケット集積キュー５２０の先頭にパケットＰ５２１が存在し、且つ、パケット集積キュー５２０に蓄積されているＰ５２１と宛先が同じパケットＰ’５２２の数が最小集積数５４１より大きいとき（ステップＳ５１においてＹｅｓ）、以下を行う。すなわち、パケット集積部５３０は、パケットＰ５２１とパケットＰ’５２２とを集積した集積パケットを作成する（ステップＳ５２）。【００１７】
ここで集積パケットに集積するパケットＰ’５２２の数は、パケットＰ’５２２の全てか、最大パケット長が許容する集積数の最大値である。すなわち、パケット集積キュー５２０に蓄積されているパケットＰ’５２２の数が３つであったと仮定する。この３つのパケットＰ’５２２と、パケットＰ５２１とを集積した集積パケットが、最大パケット長が許容する集積数の最大値に収まるのであれば、この３つのパケットＰ’５２２と、パケットＰ５２１とを集積した集積パケットを集積する。一方、上記３つのパケットＰ’５２２とパケットＰ５２１とを集積した集積パケットが、最大パケット長が許容する集積数の最大値の収まらない場合、集積数の最大値に収まるように、この３つのパケットＰ’５２２の内の２つ（又は１つ）のパケットＰ’５２２とパケットＰ５２１とを集積した集積パケットを作成する。【００１８】
他方で、パケット集積部５３０は、ステップＳ５１における条件が満たされない場合には（ステップＳ５１においてＮｏ）、ステップＳ５２の処理を行うことなくステップＳ５３に進む。【００１９】
次に、パケット集積部５３０はパケット集積キュー５２０を参照し、キューの先頭にパケットＰ５２１が存在し、且つ、タイムアウト値５４２にセットしたタイマ５３１がタイムアウトしたとき（ステップＳ５３においてＹｅｓ）、以下を行う。すなわち、パケット集積部５３０は、パケットＰ５２１とパケットＰ’５２２とを集積したパケットを作成する（ステップＳ５４）。ここで集積パケットに集積するパケットＰ’５２２の数はステップＳ５２と同じである。【００２０】
他方で、パケット集積部５３０は、ステップＳ５３における条件が満たされない場合には（ステップＳ５３においてＮｏ）、ステップＳ５４の処理を行うことなくステップＳ５５に進む。【００２１】
次に、パケット集積部５３０は、ステップＳ５２もしくはステップＳ５４で集積パケットを作成したならば、作成したパケットをネットワーク８００に対して送信する（ステップＳ５５）。【００２２】
次にパケット集積部５３０は、タイマ５３１のタイムアウト値を、タイムアウト値５４２で定められた値にリセットする（ステップＳ５６）。そして、パケット集積部５３０は、再度タイマ５３１による計測を継続する。【００２３】
次に、パケット集積部５３０がステップＳ５１の動作に戻ることで、一般的なパケット伝送システムはパケット出力アプリケーション５１０が出力するパケットを継続的にネットワーク８００に対して送信する。【００２４】
このような動作により、一般的なパケット伝送システムは、同一の宛先に対して送信する複数のパケットを集積してからネットワークに対して送信する。これにより、パケット伝送システムは、同一の宛先に対して送信する複数のパケットをそれぞれ別個に送信する場合に比べて、より広帯域なパケット伝送を実現する。【００２５】
一例として、ネットワーク８００が無線ＬＡＮ（Local Area Network）プロトコルに準拠するネットワークである場合、ネットワークプロトコルによって続けて送信するパケットの時間間隔が定められる。その結果、パケット出力アプリケーション５１０がネットワーク８００に送信できるパケットの帯域が制限される。しかし、複数のパケットを集約して送信することで、集約したパケットの間に対応する時間間隔を削減することができ、広帯域なパケット通信を実現できる。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２００９−２１８６５２号公報
【特許文献２】特開２００７−０４９６９６号公報
【非特許文献１】K. Kim, S. Ganguly, R. Izmailov, S. Hong著「On Packet Aggregation Mechanisms for Improving VoIP Quality in Mesh Networks」IEEE 63rd Vehicular Technology Conference, 2006年5月7日-10日, pp. 891-895
【発明の概要】
【発明が解決しようとする課題】
【００２７】
上述したように、非特許文献１等に記載の技術を用いることにより、広帯域なパケット通信を実現できる。しかしながら、非特許文献１等に記載の技術には、少なくとも以下において指摘する２つの問題点があった。【００２８】
第１の問題点は、パケットの集積時にパケットに伝送遅延が発生するということである。【００２９】
その理由は、集積されるパケットがパケット集積キューにおいて待たされるためである。【００３０】
第２の問題点は、パケット伝送システムの管理が煩雑だということである。その理由は、ネットワークや接続ノードなどの環境に応じて、最小集積数や、パケット集積待ちのタイムアウト値を適切に設定する必要があるからである。【００３１】
そこで、本発明は、パケット集積のための伝送遅延を抑制でき広帯域に伝送を行うことが可能な、パケット伝送システム等を提供することを主な目的とする。
【課題を解決するための手段】
【００３２】
本発明の第１のパケット伝送装置は、パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜くパケット引き抜き手段と、前記パケット引き抜き手段により引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化するカプセル化手段とを備える。
パケット伝送装置が提供される。【００３３】
本発明の第１のパケット伝送システムは、  パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜くパケット引き抜き手段と、前記パケット引き抜き手段により引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化するカプセル化手段とを備えたパケット伝送装置を複数含む。
本発明の第１のパケット伝送方法は、パケット伝送装置が行う伝送方法であって、パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜き、前記引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化する。
本発明の第１のパケット伝送プログラムを記憶するプログラム記録媒体は、パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜く処理と、前記引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化する処理とを、コンピュータに実行させるパケット伝送プログラムを記憶する。
【発明の効果】
【００３４】
本発明の第１の効果は、パケット集積のための伝送遅延を抑制でき広帯域に伝送を行うことが可能となる点である。
【図面の簡単な説明】
【００３５】
【図１】本発明の第１の実施形態全体の基本的構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるパケット集積デバイスの構成を示すブロック図である。
【図３】本発明の第１の実施形態における３つのモードを表すイメージ図である。
【図４】本発明の第１の実施形態におけるパケット集積デバイスのパケット集積キュー等の構成を示すブロック図である。
【図５】本発明の第１の実施形態におけるパケット集積デバイスのパケット集積キュー等の構成を示すブロック図である。
【図６】本発明の第１の実施形態におけるパケット集積デバイスのカプセル化テーブルを説明するためのイメージ図である。
【図７】本発明の第１の実施形態におけるパケット集積デバイスのカプセル化を説明するためのイメージ図である。
【図８】本発明の第１の実施形態の動作を示す流れ図（１／４）である。
【図９】本発明の第１の実施形態の動作を示す流れ図（２／４）である。
【図１０】本発明の第１の実施形態の動作を示す流れ図（３／４）である。
【図１１】本発明の第１の実施形態の動作を示す流れ図（４／４）である。
【図１２】本発明の各実施形態におけるパケット集積デバイスのハードウエア構成を例示する図である。
【図１３】本発明の第２の実施形態におけるパケット伝送装置の構成を示すブロック図である。
【図１４】一般的な技術の基本的構成を示すブロック図である。
【図１５】一般的な技術の動作を示す流れ図である。
【発明を実施するための形態】
【００３６】
第１の実施形態
まず、本発明の実施形態の概略を説明する。本発明の実施形態は、複数のパケットを集積してネットワークに対して送信する場合、集積するパケットに伝送遅延が発生する、といった課題や、集積するパケット数や、パケット集積待ちのタイムアウト値を設定する必要があり管理が煩雑になる、といった課題を解決することを目的とするものである。
【００３７】
これらの課題を解決するために、本発明の実施形態であるパケット伝送システムは、パケットを宛先毎の内部キューに分けて蓄積するバッファと、引き抜き部とを含む。引き抜き部は、設定された速度でそのバッファの内部キューをラウンドロビンで探索し、探索中の内部キューが蓄積した、宛先が同じパケットを全て引き抜く。そして、パケット伝送システムは、バッファに蓄積された同じ宛先のパケットをネットワークの最大パケット長で定められた制限を合計サイズの上限として全て引き抜き、引き抜いた１つ以上のパケットを１つのパケットにカプセル化してネットワークに対して送信する。
【００３８】
このような構成を採用し、ラウンドロビンで探索している内部キューがその時点で蓄積する宛先が同じ複数のパケットを集積してカプセル化しネットワークに対して送信することにより、パケットに遅延を与えずに複数のパケットを集積してカプセル化する。これにより、複数のパケットそれぞれを個別にカプセル化してネットワークに対して送信する場合と比較して、カプセル化ヘッダに起因するネットワーク帯域のオーバヘッドを削減することができ、広帯域なパケット伝送を実現できる。また、ラウンドロビンで探索した内部キューがその時点で蓄積しているパケットを集積するため、集積するパケット数を自動で設定することができる。これにより上記課題を解決することが可能となる。以上が本発明の実施形態の概略である。
【００３９】
次に、本発明の第１の実施形態について図面を参照して詳細に説明する。
【００４０】
図１を参照すると、本発明の実施形態は、第１のパケット出力ノード１１０、第２のパケット出力ノード２１０及び第３のパケット出力ノード３１０並びに第１のパケット集積デバイス１２０、第２のパケット集積デバイス２２０及び第３のパケット集積デバイス３２０を含む。ここで、第１のパケット集積デバイス１２０、第２のパケット集積デバイス２２０及び第３のパケット集積デバイス３２０は、本願発明の「パケット伝送装置」に相当する。
【００４１】
第１のパケット出力ノード１１０、第２のパケット出力ノード２１０及び第３のパケット出力ノード３１０は、それぞれが他のパケット出力ノードとの間で相互にパケットの送受信を行う。
【００４２】
第１のパケット集積デバイス１２０、第２のパケット集積デバイス２２０及び第３のパケット集積デバイス３２０は、ネットワーク４００を介して接続されている。それぞれは、第１のパケット出力ノード１１０、第２のパケット出力ノード２１０及び第３のパケット出力ノード３１０が出力した複数のパケットを集積してネットワーク４００に送出する。
【００４３】
なお、第１のパケット出力ノード１１０、第２のパケット出力ノード２１０及び第３のパケット出力ノード３１０の構成はそれぞれ同じである。また、第１のパケット集積デバイス１２０、第２のパケット集積デバイス２２０及び第３のパケット集積デバイス３２０の構成もそれぞれ同じである。また、本説明ではパケット出力ノード及びパケット集積デバイスの組が３つである場合を想定するが、これは説明の都合上３つとするに過ぎず、パケット伝送システム内に含まれるパケット出力ノード及びパケット集積デバイスの組の数を限定する趣旨ではない。パケット伝送システム内には任意の数のパケット出力ノード及びパケット集積デバイスの組が含まれていて良い。また、これらパケット出力ノード及びパケット集積デバイスはそれぞれを別個の複数の装置にて実現しても良いが、単一の装置にてパケット出力ノード及びパケット集積デバイスの双方を実現しても良い。
【００４４】
続いて、図２を参照して第１のパケット集積デバイス１２０の内部に含まれる機能ブロックについて説明する。なお、今回は第１のパケット集積デバイス１２０を例にとって説明を行うが、上述したように、第２のパケット集積デバイス２２０と第３のパケット集積デバイス３２０も第１のパケット集積デバイス１２０と同一の構成である。また、その動作内容も同一である。よって、第２のパケット集積デバイス２２０及び第３のパケット集積デバイス３２０についての詳細な説明は省略する。
【００４５】
図２を参照すると、第１のパケット集積デバイス１２０は、パケット集積キュー１２１、パケット引き抜き部１２２、レート設定部１２３、パケットカプセル化部１２４、カプセル化テーブル１２５、再送輻輳制御部１２６及びパケットデカプセル化部１２７を含む。
【００４６】
パケット集積キュー１２１は、パケットの宛先に対応した内部キューを複数含む。そして、パケット集積キュー１２１は、第１のパケット出力ノード１１０が出力したパケットを宛先毎に分けて、これらパケットそれぞれをパケットの宛先に対応した内部キューに蓄積する。
【００４７】
パケット引き抜き部１２２は、パケット集積キュー１２１に蓄積された同じ宛先の複数のパケットを引き抜く。
【００４８】
レート設定部１２３は、パケット引き抜き部１２２がパケットの引き抜きを実行する速度を設定する。
【００４９】
パケットカプセル化部１２４は、パケット引き抜き部１２２が引き抜いた、同一の宛先宛の複数のパケットを単一のパケットにカプセル化する。
【００５０】
カプセル化テーブル１２５は、パケットカプセル化部１２４が同一の宛先宛の複数のパケットをカプセル化する際に、カプセル化パケットのヘッダに記載する宛先アドレスの情報を保持する。
【００５１】
再送輻輳制御部１２６は、ネットワーク４００に輻輳が発生しない速度で複数のパケットがカプセル化されたパケットをネットワーク４００に対して送信する。また、再送輻輳制御部１２６は、第１のパケット集積デバイス１２０以外の、他のパケット集積デバイスでカプセル化されたパケットを、ネットワーク４００を介して受信する。そして、受信したパケットをパケットデカプセル化部１２７に対して送信する。
【００５２】
パケットデカプセル化部１２７は、再送輻輳制御部１２６から複数のパケットがカプセル化されたパケットを受信し、カプセル化を解除して元の複数のパケットに戻す。そして、戻した複数のパケットを第１のパケット出力ノード１１０に対して送信する。
【００５３】
続いて、上述した各部のより詳細な内容について説明する。
【００５４】
まず、図３を参照してレート設定部１２３について説明する。レート設定部１２３は、図３に表す、３つのモード（（Ａ）：物理リンク帯域モード１２３−Ａ、（Ｂ）：輻輳制御帯域モード１２３−Ｂ及び（Ｃ）：個別フロー帯域モード１２３−Ｃ）：の内の何れかのモードでパケット引き抜き部１２２が動作するように、パケット引き抜き部１２２を設定する。以下、これら各モードそれぞれについて説明する。なお、以下の説明において「帯域」とは転送可能なビットレートである「伝送路容量」のことを指すものとする。
＜（Ａ）：物理リンク帯域モード１２３−Ａ＞
（Ａ）：物理リンク帯域モード１２３−Ａでは、レート設定部１２３は、パケット引き抜き部１２２が、「再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域」で、パケット集積キュー１２１からラウンドロビンでパケットを引き抜くようにパケット引き抜き部１２２を設定する。また、この設定に伴いレート設定部１２３は、再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域をパケット引き抜き部１２２に通知する。
＜（Ｂ）：輻輳制御帯域モード１２３−Ｂ＞
（Ｂ）：輻輳制御帯域モード１２３−Ｂでは、レート設定部１２３は、パケット引き抜き部１２２が、以下のうち何れか遅い方の速度で、パケット集積キュー１２１からラウンドロビンでパケットを引き抜くように、パケット引き抜き部１２２を設定する。すなわち、「再送輻輳制御部１２６がパケットの宛先それぞれに対して設定しているパケット送信速度の合計値」若しくは「再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域」の何れか遅い方の速度、である。また、この設定に伴いレート設定部１２３は、「再送輻輳制御部１２６がパケットの宛先それぞれに対して設定しているパケット送信速度の合計値」及び「再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域」を、パケット引き抜き部１２２に通知する。
＜（Ｃ）：個別フロー帯域モード１２３−Ｃ＞
（Ｃ）：個別フロー帯域モード１２３−Ｃでは、レート設定部１２３は、パケット引き抜き部１２２が、「再送輻輳制御部１２６がパケットの宛先に対し送信している速度と同じ速度」でそれぞれの宛先のパケットを、パケット集積キュー１２１から引き抜くように設定する。つまり、上記（Ａ）：物理リンク帯域モード１２３−Ａや、（Ｂ）：輻輳制御帯域モード１２３−Ｂでは、パケットの宛先が何れのパケット出力ノードであるかに関わらず所定の速度で順番に引き抜きを行う。よって、宛先毎に引き抜く速度は同じであるが、個別フロー帯域モード１２３−Ｃでは、パケットの宛先毎に引き抜く速度が異なる。
具体的には、（Ｃ）：個別フロー帯域モード１２３−Ｃでは、例えば、第１の宛先に対し送信している速度が「速度Ａ」であり、第２の宛先に対し送信している速度が「速度Ｂ」であれば、以下のように設定する。すなわち、第１の宛先宛に対応するパケット集積キュー１２１内の内部キューについては「速度Ａ」に対応する速度でパケットを引き抜き、第２の宛先宛に対応するパケット集積キュー１２１内の内部キューについては「速度Ｂ」に対応する速度でパケットを引き抜くように、設定する。なお、各モードの設定を行った後に、パケット引き抜き部１２２が具体的にどのようにして引き抜きを行うのかについては、図４及び図５を参照して後述する。また、この設定に伴いレート設定部１２３は、「再送輻輳制御部１２６がネットワーク４００で接続する各宛先に対しパケットを送信している速度」をパケット引き抜き部１２２に通知する。
【００５５】
次に、図４及び図５を参照してこれら３つのモード設定された際のパケット引き抜き部１２２の処理及びパケット集積キュー１２１内の内部キューについて説明する。
【００５６】
図４及び図５を参照すると、パケット集積キュー１２１は、第１のパケット出力ノード１１０が出力したパケットを宛先毎に分けて蓄積するために、宛先ノード数分の内部キュー１２１−１を保持する。ここで、図４及び図５では、内部キュー１２１−１として内部キュー１２１−１−１乃至１２１−１−ｎを図示する。ここで、図中にて符号で用いている「ｎ」は２以上の整数であって、少なくとも宛先ノードの数と同じ数である。また、以下の説明において内部キュー１２１−１−１乃至１２１−１−ｎの何れか又は全てのことを特に特定せずに説明する際は、単に「内部キュー１２１−１」と表記する。
【００５７】
そして、パケット集積キュー１２１は、第１のパケット出力ノード１１０が出力したパケットを受信した順番に宛先毎に分類し、宛先ノード毎に対応した内部キュー１２１−１に蓄積する。
【００５８】
一方、パケット引き抜き部１２２は、レート設定部１２３により設定された上記３つの内のいずれかのモードで動作する。
【００５９】
ここで、上述の（Ａ）：物理リンク帯域モード１２３−Ａや、（Ｂ）：輻輳制御帯域モード１２３−Ｂに、パケット引き抜き部１２２が設定されている場合、パケット引き抜き部１２２は、レート設定部１２３から指定された速度（データ容量／単位時間）でパケット集積キュー１２１からラウンドロビンでパケットを引き抜く。
【００６０】
このラウンドロビンでのパケット引き抜きを表す図である図４を参照して、この点について説明する。図４を参照すると、ラウンドロビンでのパケット引き抜きでは、パケット引き抜き部１２２は、パケット集積キュー１２１が保持する宛先毎に、内部キュー１２１−１を順に探索する。このときパケット引き抜き部１２２は、探索した内部キュー１２１−１に同じ宛先のパケットが蓄積されていれば、蓄積されたパケット全てを引き抜き、この引き抜いたパケットを全てパケットカプセル化部１２４に渡す。ただし、探索した内部キュー１２１−１に蓄積された各パケットのサイズを合計したサイズが、ネットワーク４００で定められたパケットのデータ部のサイズの上限値を超える場合には、探索した内部キュー１２１−１に蓄積されたパケットを全て引き抜いてカプセル化したとしてもネットワーク４００に対して送信することができない。そこで、このような場合には、引き抜くパケットのサイズの合計値がネットワーク４００で定められたパケットのデータ部のサイズの上限値を超えない数だけのパケットをパケット集積キュー１２１の内部キュー１２１−１から引き抜く。ここで、上記の記載及び以下の説明における「ネットワーク４００で定められたパケットのデータ部のサイズの上限値」とは、ネットワーク４００で定められた最大パケット長から、ネットワーク４００で定められたパケットヘッダ等を差し引いた、送信データが格納できる領域のデータ長、を指す。またその他の手段として、一度にパケット集積キュー１２１の内部キュー１２１−１から引き抜くパケットの合計サイズの上限や、パケットの合計数の上限を予め定めておき、この定められた合計サイズや合計数の上限値を超えない数だけのパケットを引き抜くようにしても良い。
【００６１】
次に、（Ｃ）：個別フロー帯域モード１２３−Ｃに、パケット引き抜き部１２２が設定されている場合について説明する。この場合にはパケット引き抜き部１２２は、「再送輻輳制御部１２６が宛先毎に設定しているネットワーク４００への送信速度」でパケット集積キュー１２１からそれぞれの宛先のパケットを引き抜く。
【００６２】
この「再送輻輳制御部１２６が宛先毎に設定しているネットワーク４００への送信速度」での引き抜きについて図５を参照して説明する。
【００６３】
図５を参照すると、パケット引き抜き部１２２は、（Ｃ）：個別フロー帯域モード１２３−Ｃでの動作のため、内部にフロー別クレジットバッファ１２２−１とクレジット再計算タイマ１２２−２とを保持する。ここで、図５では、フロー別クレジットバッファ１２２−１としてフロー別クレジットバッファ１２２−１−１乃至１２２−１−ｎを図示する。ここで図中にて符号で用いている「ｎ」は２以上の整数であって、少なくとも宛先ノードの数と同じ数である。また、以下の説明においてフロー別クレジットバッファ１２２−１−１乃至１２２−１−ｎの何れか又は全てのことを特に特定せずに説明する際は、単に「フロー別クレジットバッファ１２２−１」と表記する。
【００６４】
フロー別クレジットバッファ１２２−１のそれぞれは、第１のパケット出力ノード１１０が通信を行う宛先毎の要素を保持する。具体的には、フロー別クレジットバッファ１２２−１には、パケット引き抜き部１２２がレート設定部１２３から通知された宛先毎の送信速度に対応するクレジットが時間の経過と共に蓄積される。ここで、クレジットは、例えば対応する送信速度で送信可能な（つまり、引き抜くことが可能な）１または複数のパケットの合計サイズである。また、パケット引き抜き部１２２による内部キュー１２１−１からのパケットの引き抜きが行われた際には、この引きぬかれた内部キュー１２１−１と同一の宛先に対応しているフロー別クレジットバッファ１２２−１から、引き抜かれたパケットの合計サイズに対応する分のクレジットが減算される。
【００６５】
クレジット再計算タイマ１２２−２は、フロー別クレジットバッファ１２２−１にクレジットが蓄積される周期を管理するために用いられるタイマである。
【００６６】
そして、パケット引き抜き部１２２は、パケット集積キュー１２１の内部キュー１２１−１をラウンドロビンで巡回して探索する。このときパケット引き抜き部１２２は、内部キュー１２１−１に対応する宛先に該当するフロー別クレジットバッファ１２２−１を参照する。そして、パケット引き抜き部１２２は、クレジットバッファ１２２−１に蓄積されたクレジットが内部キュー１２１−１に蓄積されたパケットの合計サイズ以上であれば内部キュー１２１−１から蓄積されているパケット全てを引き抜き、この引き抜いたパケットを全てパケットカプセル化部１２４に渡す。ただし、探索した内部キュー１２１−１に蓄積された各パケットのサイズを合計したサイズが、ネットワーク４００で定められたパケットのデータ部のサイズの上限値を超える場合、パケット引き抜き部１２２は、探索した内部キュー１２１−１に蓄積されたパケットを全て引き抜いてカプセル化したとしてもネットワーク４００に対して送信できない。そこで、このような場合には、引き抜くパケットのサイズの合計値がネットワーク４００で定められたパケットのデータ部のサイズの上限値を超えない数だけのパケットをパケット集積キュー１２１の内部キュー１２１−１から引き抜く。またその他の手段として、一度にパケット集積キュー１２１の内部キュー１２１−１から引き抜くパケットの合計サイズの上限や、パケットの合計数の上限を予め定めておき、この定められた合計サイズや合計数の上限値を超えない数だけのパケットを引き抜くようにしても良い。また、引き抜きを行ったパケット引き抜き部１２２は、パケット集積キュー１２１の内部キュー１２１−１から引き抜いた複数のパケットの合計サイズに対応するクレジット数を、パケットの宛先に対応するフロー別クレジットバッファ１２２−１の要素から減算する。
【００６７】
次に、カプセル化テーブル１２５内に含まれる情報について図６を参照して説明する。
ここで、カプセル化テーブル１２５は、第１のパケット出力ノード１１０が送信したパケットをカプセル化する際に、カプセル化するパケットのヘッダに記載するアドレス情報を保持する。
【００６８】
図６に表されるように、カプセル化テーブル１２５は、第１のパケット出力ノード１１０が送信したパケットの宛先アドレスと、カプセル化で用いるパケットの宛先アドレスとを紐付けた状態で格納する。このとき、パケット宛先アドレスは、単一の値である他に、ある一定のアドレス領域でも良い。例えば、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  Ｅｘｐｒｅｓｓバスのパケットにおいて宛先アドレスとして用いられる宛先メモリ番地が一例である。そして、その場合、パケットの宛先アドレスであるある一定のアドレス領域を、カプセル化テーブル１２５のパケット宛先アドレスの要素とし、その領域をカプセル化アドレスと対応付けることも可能である。
【００６９】
パケットカプセル化部１２４は、パケット引き抜き部１２２から宛先となるパケット出力ノードが同じであるパケットを１つ以上受信すると共に、カプセル化テーブル１２５を参照する。そして、パケットカプセル化部１２４は、パケット引き抜き部１２２から受信したパケットの宛先を検索キーとして、カプセル化テーブル１２５からカプセル化に用いるアドレスを検索する。またパケットカプセル化部１２４は、図７に表されるように、パケット引き抜き部１２２から受信した１つ以上のパケットをまとめ、そのまとめたパケットを、カプセル化する際のデータ部とする。そしてパケットカプセル化部１２４は、カプセル化テーブル１２５から検索したカプセル化のためのアドレスを、カプセル化ヘッダとしてデータ部に付加することにより、カプセル化された一つのパケットを生成する。そして、パケットカプセル化部１２４は、カプセル化されたパケットを、再送輻輳制御部１２６に渡す。
【００７０】
再送輻輳制御部１２６は、ネットワーク４００に輻輳を起こさないように送信速度を調整しながら、パケットカプセル化部１２４から受信したパケットを、ネットワーク４００に対して送信する。このため、再送輻輳制御部１２６は、ネットワーク４００に接続する宛先それぞれ毎にパケットを送信する速度等を制御している。また、再送輻輳制御部１２６は、「宛先毎のパケット送信速度」と、「それらのパケット送信速度の合計値」と、「ネットワーク４００に接続するネットワークリンクの物理帯域」、といった情報の全て又はその内の一部の情報を、レート設定部１２３に通知する。また再送輻輳制御部１２６は、ネットワーク４００に送信したパケットがネットワーク４００における輻輳やビットエラーといった何らかの事情により宛先まで到達しなかった場合、そのパケットを再送する。再送輻輳制御部１２６はまた、ネットワーク４００から受信した複数のパケットがカプセル化されたパケットをパケットデカプセルカ部１２７に渡す。なお、かかる複数のパケットがカプセル化されたパケットは、送信元のパケット出力ノードに接続された他のパケット集積デバイスによりカプセル化されたパケットである。
【００７１】
次に、図面を参照して本発明の実施の形態の詳細動作について説明する。始めに図２のブロック図及び図８の流れ図を参照して本発明の実施の形態において第１のパケット出力ノード１１０がネットワーク４００にパケットを送信する動作について説明する。なお、本説明では第１のパケット出力ノード１１０がネットワーク４００にパケットを送信する際の、第１のパケット出力ノード１１０及び第１のパケット集積デバイス１２０の動作を例に取るが、他のパケット出力ノード及び他のパケット集積デバイスも、ネットワーク４００にパケットを送信する際には同様に動作する。
【００７２】
図８は第１のパケット出力ノード１１０がネットワーク４００にパケットを送信する動作を表す流れ図である。
【００７３】
まず、第１のパケット出力ノード１１０がパケットを出力する（ステップＳ１１）。
【００７４】
次にパケット集積キュー１２１は、第１のパケット出力ノード１１０からパケットを受信し、受信したパケットの宛先となるパケット出力ノードに対応する内部キュー１２１−１に、受信したパケットを蓄積する（ステップＳ１２）。
【００７５】
続いて、パケット引き抜き部１２２は、上述した３つのモード（（Ａ）：物理リンク帯域モード１２３−Ａ、（Ｂ）：輻輳制御帯域モード１２３−Ｂ及び（Ｃ）：個別フロー帯域モード１２３−Ｃ）：の内の何れかのモードで動作する。ここで、（Ａ）：物理リンク帯域モード１２３−Ａと（Ｂ）：輻輳制御帯域モード１２３−Ｂでは、パケット引き抜き部１２２は、ラウンドロビンによる巡回でパケット集積キュー１２１の内部キュー１２１−１を探索する。そして、パケット引き抜き部１２２は、探索中の内部キュー１２１−１に蓄積された同一宛先行きのパケットを全て引き抜く（ステップＳ１３）。
【００７６】
ただし、探索した内部キュー１２１−１に蓄積された各パケットのサイズを合計したサイズが、ネットワーク４００で定められたパケットのデータ部のサイズの上限値を超える場合には、探索した内部キュー１２１−１に蓄積されたパケットを全て引き抜いてカプセル化したとしてもネットワーク４００に対して送信することができない。そこで、このような場合、パケット引き抜き部１２２は、引き抜くパケットのサイズの合計値がネットワーク４００で定められたパケットのデータ部のサイズの上限値を超えない数だけのパケットをパケット集積キュー１２１の内部キュー１２１−１から引き抜く。またその他の手段として、一度にパケット集積キュー１２１の内部キュー１２１−１から引き抜くパケットの合計サイズの上限や、パケットの合計数の上限を予め定めておき、この定められた合計サイズや合計数の上限値を超えない数だけのパケットを引き抜くようにしても良い。
【００７７】
また、（Ｃ）：個別フロー帯域モード１２３−Ｃの動作でも、パケット引き抜き部１２２は、ラウンドロビンにより巡回でパケット集積キュー１２１の内部キュー１２１−１を探索する。そして、探索中の内部キュー１２１−１に関しては、その時点で内部キュー１２１−１に蓄積された同一宛先行きのパケットの合計サイズと、宛先に対応するフロー別クレジットバッファ１２２−１の要素に記載された残存クレジットとを比較する。比較の結果、残存クレジットが蓄積されたパケットの合計サイズ以上であれば、パケット引き抜き部１２２は、パケット集積キュー１２１の探索中の内部バッファから全てのパケットを引き抜く（ステップＳ１３）。ただし、同一宛先の内部キュー１２１−１に蓄積された各パケットのサイズを合計したサイズがネットワーク４００で定められたパケットのデータ部のサイズの上限値を超える場合、パケット引き抜き部１２２は、その上限値を超えない数だけのパケットの合計サイズと、フロー別クレジットバッファ１２２−１の要素とを比較し、パケット引き抜きの有無を判断する。そしてパケットを引き抜くと判断した場合、パケット引き抜き部１２２は、その上限値を超えない数だけのパケット数を引き抜く。またその他の手段として、一度にパケット集積キュー１２１の内部キュー１２１−１から引き抜くパケットの合計サイズの上限や、パケットの合計数の上限を予め定めておき、この定められた合計サイズや合計数の上限値を超えない数だけのパケットを引き抜くようにしても良い。この場合、パケット引き抜き部１２２は、上限値を超えない各パケットのサイズを合計したサイズを、フロー別クレジットバッファ１２２−１の対応する要素と比較し、残存クレジットがそのパケットの合計サイズ以上であれば内部キュー１２１−１からその上限値を超えないパケットを引き抜く。また、何れの場合であっても、引き抜きを行ったパケット引き抜き部１２２は、パケット集積キュー１２１の内部キュー１２１−１から引き抜いた複数のパケットの合計サイズに対応するクレジット数を、パケットの宛先に対応するフロー別クレジットバッファ１２２−１の要素から、減算する。
【００７８】
次にパケットカプセル化部１２４は、カプセル化テーブル１２５を参照し、パケット引き抜き部１２２から受信した１つ以上のパケットの宛先アドレスを検索キーとして、パケット引き抜き部１２２から受信した１つ以上のパケットに対応しているカプセル化アドレスを検索する（ステップＳ１４）。
【００７９】
続いてパケットカプセル化部１２４は、図７に表すように検索したアドレスを用いてパケット引き抜き部１２２から受信した１つ以上のパケットを１つのパケットにカプセル化する（ステップＳ１５）。１つ以上のパケットのカプセル化にはカプセル化ヘッダを用い、カプセル化ヘッダの宛先アドレスにはステップＳ１４で検索したアドレスを用いる。
【００８０】
続いて再送輻輳制御部１２６は、パケットカプセル化部１２４からパケットを受信し、宛先パケット出力ノード毎に定めた送信速度でネットワーク４００にパケットを送信する（ステップＳ１６）。
【００８１】
次に図４及び図９を参照して（Ａ）：物理リンク帯域モード１２３−Ａ及び（Ｂ）：輻輳制御帯域モード１２３−Ｂの内の何れかのモードにパケット引き抜き部１２２が設定されている際のパケット引き抜き部１２２の動作を説明する。かかる動作は図８に表す動作の内のステップＳ１３での動作に相当するものである。
【００８２】
ここで、図９は、（Ａ）：物理リンク帯域モード１２３−Ａ及び（Ｂ）：輻輳制御帯域モード１２３−Ｂの内の何れかのモードにパケット引き抜き部１２２が設定されている際のパケット引き抜き部１２２の動作を示す流れ図である。
【００８３】
始めにレート設定部１２３が、パケット引き抜き部１２２のラウンドロビンの動作速度（引き抜くデータ量／単位時間）を決定する（ステップＳ２１）。このラウンドロビンの速度は、（Ａ）：物理リンク帯域モード１２３−Ａでは、再送輻輳制御部１２６がネットワーク４００と接続するネットワークリンクの帯域である。一方、（Ｂ）：輻輳制御帯域モード１２３−Ｂでは、このラウンドロビンの速度は、「再送輻輳制御部１２６がパケットの宛先それぞれに対して設定しているパケット送信速度の合計値」若しくは「再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域」の何れか遅い方の速度である。
【００８４】
次にパケット引き抜き部１２２は、パケット集積キュー１２１の最初の内部キュー１２１−１を参照し、そのキューに蓄積された全てのパケットを引き抜いてパケットカプセル化部に渡す（ステップＳ２２）。ただし、同一宛先の内部キュー１２１−１に蓄積された各パケットのサイズを合計したサイズがネットワーク４００で定められたパケットのデータ部のサイズの上限値を超える場合、パケット引き抜き部１２２は、その上限値を超えない数だけのパケットの合計サイズと、フロー別クレジットバッファ１２２−１の要素とを比較する。パケット引き抜き部１２２は、比較の結果に基づいて、パケット引き抜きの有無を判断する。そしてパケットを引き抜くと判断した場合、パケット引き抜き部１２２は、その上限値を超えない数だけのパケット数を引き抜く。またその他の手段として、一度にパケット集積キュー１２１の内部キュー１２１−１から引き抜くパケットの合計サイズの上限や、パケットの合計数の上限を予め定めておき、この定められた合計サイズや合計数の上限値を超えない数だけのパケットを引き抜くようにしても良い。
【００８５】
次にパケット引き抜き部１２２は、今回のステップＳ２２でパケットを引き抜いた内部キュー１２１−１がパケット集積キュー１２１が保持する最後の内部キュー１２１−１か否かを確認する（ステップＳ２３）。確認の結果、今回のステップＳ２２でパケットを引き抜いた内部キュー１２１−１が、最後の内部キュー１２１−１に該当しない場合（ステップＳ２３においてＮｏ）は、今回のステップＳ２２でパケットを引き抜いた内部キュー１２１−１の次のキューからパケットを引き抜く（ステップＳ２４）。ステップＳ２４の動作は、ステップＳ２２においてパケットを引き抜く動作と同じである。続いてパケット引き抜き部１２２は、ステップＳ２３に戻り動作を継続する。このように、以後ステップＳ２３とＳ２４を繰り返すことで、パケット集積キュー１２１が保持する最後の内部キュー１２１−１までパケットの引き抜きを繰り返す。
【００８６】
またパケットの引き抜きが最後の内部バッファまで到達した場合（ステップＳ２３においてＹｅｓ）は、ステップＳ２２に戻ることで、パケット集積キュー１２１の最初の内部キュー１２１−１にパケット引き抜きの順番が戻る。
【００８７】
以後ステップＳ２２以降の動作を繰り返す。なお、（Ｂ）：輻輳制御帯域モード１２３−Ｂでは、ステップＳ２１で定めたパケット引き抜き部１２２のラウンドロビン動作の速度を、一定期間毎に更新することが可能である。その場合、速度の更新値の計算には、その時点の再送輻輳制御部１２６がそれぞれの宛先毎に定める送信速度を用いる。そして、パケット引き抜き部１２２は、「その時点の再送輻輳制御部１２６がパケットの宛先それぞれに対して設定しているパケット送信速度の合計値」若しくは「再送輻輳制御部１２６とネットワーク４００とが接続するネットワークリンクの帯域」の何れか遅い方の速度でラウンドロビンを繰り返す。
【００８８】
次に、図５、図１０及び図１１を参照して、（Ｃ）：個別フロー帯域モード１２３−Ｃにパケット引き抜き部１２２が設定されている際のパケット引き抜き部１２２の動作を説明する。かかる動作は図８に表す動作の内のステップＳ１３での動作に相当するものである。
【００８９】
図１０は、（Ｃ）：個別フロー帯域モード１２３−Ｃにパケット引き抜き部１２２が設定されている際のパケット引き抜き部１２２の動作を表す流れ図である。また図１１は、パケット引き抜き部１２２が、フロー別クレジットバッファ１２２−１にクレジットを更新する動作を示す流れ図である。
【００９０】
パケット引き抜き部１２２は、パケット集積キュー１２１の最初の内部キュー１２１−１に対応する宛先の残存クレジットを、宛先に対応するフロー別クレジットバッファ１２２−１の要素を参照することによって確認する（ステップＳ３１）。
【００９１】
続いてパケット引き抜き部１２２は、確認したクレジットの値が、パケット集積キュー１２１の最初の内部キュー１２１−１に蓄積されたパケットの合計サイズ以上であれば（ステップＳ３２においてＹｅｓ）、内部キュー１２１−１から全てのパケットを引き抜く（ステップＳ３３）。
【００９２】
そしてパケット引き抜き部１２２は、引き抜いたパケットの合計サイズに対応するクレジット数を、宛先に対応するフロー別クレジットバッファ１２２−１の要素から、減算する（ステップＳ３４）。ここで、フロー別クレジットバッファ１２２−１の構成を説明する際やステップＳ１３の説明の際に上述したように、パケット引き抜き部１２２がパケット集積キュー１２１の内部バッファから引き抜くパケットは、内部キュー１２１−１に蓄積された全てのパケットでなく、ネットワーク４００で定められた最大パケット長を超えないパケット数や、予め定められた合計サイズや合計数を超えないパケット数の場合がある。これは、ステップＳ１３において述べた動作と同じである。その場合、パケット引き抜き部１２２が宛先に対応するフロー別クレジットバッファ１２２−１の要素から減算するクレジット数は、内部キュー１２１−１に蓄積された全てのパケットでなく、実際に引き抜いたパケットの合計サイズに対応するクレジット数とする。また、この場合、ステップＳ３２では、内部キュー１２１−１に蓄積された全てのパケットでなく、実際に引き抜こうとしているパケットの合計サイズ以上のクレジット数が残存しているのであれば、「ステップＳ３２でＹｅｓ」と判定するようにしても良い。
【００９３】
続いてパケット引き抜き部１２２は、パケットを引き抜いた内部キュー１２１−１が、パケット集積キュー１２１が保持する最後の内部キュー１２１−１であるか否かを確認する（ステップＳ３５）。最後のキューでなければ（ステップＳ３５においてＮｏ）、パケット引き抜き部１２２は、次の内部キュー１２１−１の宛先に対応するフロー別クレジットバッファ１２２−１の要素を参照することによって、クレジットの値を確認する（ステップＳ３６）。
【００９４】
次にパケット引き抜き部１２２は、確認したクレジットの値が、パケット集積キュー１２１の確認したクレジットに対応する宛先の内部キュー１２１−１に蓄積されたパケットの合計サイズ以上であれば（ステップＳ３７においてＹｅｓ）、内部キュー１２１−１から全てのパケットを引き抜く（ステップＳ３８）。
【００９５】
そして、パケット引き抜き部１２２は、引き抜いたパケットの合計サイズに対応するクレジット数を、宛先に対応するフロー別クレジットバッファ１２２−１の要素から、減算する（ステップＳ３９）。ここでパケット引き抜き部１２２がパケット集積キュー１２１の内部バッファから引き抜くパケットは、内部キュー１２１−１に蓄積された全てのパケットではなく、ネットワーク４００で定められたパケットのデータ部の最大パケット長を超えないパケット数や、予め定められた合計サイズや合計数を超えない数の場合があることは、ステップＳ３３の動作と同じである。また、この場合に、実際に引き抜いたクレジット数を減算すれば足りることや、実際に引き抜こうとしているパケットの合計サイズ以上のクレジット数が残存しているのであれば、「ステップＳ３６でＹｅｓ」と判定するようにしても良いことも、ステップＳ３２やステップＳ３３と同様である。
【００９６】
続いてパケット引き抜き部１２２は、ステップＳ３５に処理を戻す。そして、パケット引き抜き部１２２は、ステップＳ３５乃至ステップＳ３９の動作を、パケット集積キュー１２１が保持する最後の内部キュー１２１−１に到達するまで、すなわちステップＳ３５においてＹｅｓとなるまで繰り返す。そしてパケット引き抜き部１２２は、最後の内部バッファに到達した後（ステップＳ３５においてＹｅｓ）パケット集積キュー１２１が保持する最初の内部バッファに戻ることで、パケット集積キュー１２１の最初の内部キュー１２１−１にパケット引き抜きの順番が戻る。以後、上述した動作と同様にしてステップＳ３１乃至ステップＳ３９の動作を繰り返す。
【００９７】
他方、パケット引き抜き部１２２は、上述したステップＳ３１乃至ステップＳ３９の動作により、第１のパケット出力ノード１１０から受信したパケットを引き抜いて、引き抜いたパケットをパケットカプセル化部１２４に渡す動作と並行して、定期的にフロー別クレジットバッファ１２２−１を更新する動作を行う。この、定期的にフロー別クレジットバッファ１２２−１を更新する動作について図１１の流れ図を参照して説明する。
【００９８】
図１１を参照すると、まずパケット引き抜き部１２２は、レート設定部１２３から、再送輻輳制御部１２６が宛先ノード毎に設定している送信速度を受信する。そして、パケット引き抜き部１２２は、それぞれの宛先の送信速度に依存するクレジットの値を用いて、フロー別クレジットバッファ１２２−１を更新する（ステップＳ４１）。
【００９９】
次にパケット引き抜き部１２２は、クレジット再計算タイマ１２２−２を、予め定められた値にセットする（ステップＳ４２）。
【０１００】
続いてパケット引き抜き部１２２は、クレジット再計算タイマ１２２−２のタイムアウトを待ち（ステップＳ４３）、タイムアウト後にステップＳ４１に戻る。続いて行うステップＳ４１の動作では、パケット引き抜き部１２２は、レート設定部１２３から再送輻輳制御部１２６がその時点で宛先毎に設定している新しい送信速度を受信し、その値をクレジット計算に用いる。そして、パケット引き抜き部１２２が、これらのステップを繰り返すことにより、フロー別クレジットバッファ１２２−１の定期的な更新が実現される。
【０１０１】
以上説明した本実施形態では、パケット引き抜き部がパケット集積キュー１２１の内部バッファをラウンドロビンで探索し、探索した内部バッファに蓄積されたパケットを、ネットワークで許容される最大パケット数を上限として全て引き抜いてカプセル化し、ネットワークに対して送信する。
【０１０２】
このような構成を採用することにより、パケット集積キューに蓄積されたパケットには送信の遅延を発生させずに、パケット引き抜き部１２２のラウンドロビンによる探索が回ってくると直ちにネットワークに対して送信することができる。
【０１０３】
また、カプセル化されるパケット数はその時点でパケット集積キュー１２１の内部バッファに蓄積されているパケット数であり、カプセル化で集積されるパケット数を自動で設定することができる。
【０１０４】
更に、これらの動作により複数のパケットを集積してカプセル化しネットワークに対して送信することで、個別にパケットをカプセル化してネットワークに対して送信する場合と比較して、カプセル化ヘッダに起因するネットワーク帯域のオーバヘッドを削減することができ、広帯域なパケット伝送が実現できる。
【０１０５】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１０６】
例えば、上述の説明においては図３等に表される３つのモードを用意し、この３つのモードの何れかにパケット引き抜き部１２２を設定していた。しかしながら、必ずしもこのようにする必要はなく、３つのモードでそれぞれ定める速度以外の速度で動作するようにしても良い。つまり、図３に表される３つのモード以外の他のモードを設けるようにしても良い。また、必ずしも３つのモード全てを用意しておかなくとも良い。例えば、１つのモードのみを用意するようにしても良い。
【０１０７】
なお、上記の各パケット出力ノード及び各パケット集積デバイスのそれぞれは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。図２等に示したパケット出力ノード及びパケット集積デバイスの各部は、例えば、図１２に例示するハードウエア資源において実現される。すなわち、図１２に示す構成は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、外部接続インタフェース１３および記憶媒体１４を備える。ＣＰＵ１０は、ＲＯＭ１２または記憶媒体１４に記憶された各種ソフトウエア・プログラム（コンピュータ・プログラム）を、ＲＡＭ１１に読み出して実行することにより、パケット出力ノード及びパケット集積デバイスの全体的な動作を司る。また、上記の各パケット出力ノード及び各パケット集積デバイスのそれぞれにより行われるパケット伝送方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【０１０８】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory）)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１０９】
以上説明した本発明の実施形態は、以下に示すような効果を奏する。
【０１１０】
第１の効果は、パケットに遅延を与えずに複数のパケットを集積してカプセル化しネットワークに対して送信することで広帯域なパケット伝送システムが実現できることにある。
【０１１１】
その理由は、パケットを蓄積するバッファを探索した時点で蓄積されている同じ宛先の複数のパケットを集積してカプセル化するためである。
【０１１２】
第２の効果は、集積するパケット数を自動で設定し、パラメータ設定不要である広帯域なパケット伝送システムが実現できることにある。
【０１１３】
その理由は第１の効果の理由と同じである。
第２の実施形態
図１３は、本発明の第２の実施形態に係るパケット伝送装置４００の構成を示すブロック図である。図13に示すように、パケット伝送装置４００は、パケット引き抜き部４１０およびカプセル化部４２０を備える。
パケット引き抜き部４１０は、パケットを宛先毎に分けて蓄積するバッファから、宛先毎にパケットを探索して該パケットを引き抜くと共に、同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを前記バッファから引き抜く。
カプセル化部４２０は、パケット引き抜き部４１０により引き抜かれたパケットを、宛先毎に単一のパケットにカプセル化する。
上記構成を採用することにより、本第２の実施形態によれば、パケット集積のための伝送遅延を抑制でき広帯域に伝送を行うことが可能となる。
【０１１４】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１５】
（付記１）  パケットを宛先毎に分けて蓄積するバッファ内に同一宛先のパケットが複数蓄積されている場合は、該複数のパケットを一度に全て引き抜くパケット引き抜き手段を備え、
前記引き抜きは、前記一度に引き抜いたパケットを宛先毎に単一のパケットにカプセル化してから宛先に対して伝送するために行うことを特徴とするパケット伝送装置。
【０１１６】
（付記２）  付記１に記載のパケット伝送装置であって、
パケットを宛先毎に分けて蓄積する前記バッファと、
前記パケット引き抜き手段により前記一度に引き抜かれたパケット全てを単一のパケットにカプセル化するカプセル化手段と、
前記カプセル化されたパケットを、ネットワークを介して前記宛先に対して送信する送信手段と、
を更に備えることを特徴とするパケット伝送装置。
【０１１７】
（付記３）  付記１又は２に記載のパケット伝送装置であって、
前記パケット引き抜き手段は、各宛先のパケットをラウンドロビンで巡回して順番に引き抜くことを特徴とするパケット伝送装置。
【０１１８】
（付記４）  前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置に接続されたネットワークのネットワークリンクの帯域に基づいて決定することを特徴とする付記１乃至３の何れか１に記載のパケット伝送装置。
【０１１９】
（付記５）  前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置とネットワークを介して接続される宛先毎にそれぞれ設定した送信速度の合計、及び当該パケット伝送装置に接続されたネットワークのネットワークリンクの帯域、の何れか遅い方の速度に基づいて決定することを特徴とする付記１乃至３の何れか１に記載のパケット伝送装置。
【０１２０】
（付記６）  前記パケット引き抜き手段は、同一宛先のパケットが複数蓄積されている場合であっても、当該パケット伝送装置とネットワークを介して接続される宛先毎にそれぞれ設定した送信速度に基づいて定めた所定の条件を満たしていない場合には前記引き抜きを行わないことを特徴とする付記１乃至３の何れか１に記載のパケット伝送装置。
【０１２１】
（付記７）  前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置に接続されたネットワークのネットワークリンクの帯域に基づいて決定する第１のモードと、
前記パケット引き抜き手段による前記パケットの引き抜きを行う速度を、当該パケット伝送装置とネットワークを介して接続される宛先毎にそれぞれ設定した送信速度の合計、及び当該パケット伝送装置に接続されたネットワークのネットワークリンクの帯域、の何れか遅い方の速度に基づいて決定する第２のモードと、
前記パケット引き抜き手段が、同一宛先のパケットが複数蓄積されている場合であっても、当該パケット伝送装置とネットワークを介して接続される宛先毎にそれぞれ設定した送信速度に基づいて定めた所定の条件を満たしていない場合には前記引き抜きを行わない第３のモードと、
の３つのモードの一部又は全部を少なくとも含む複数のモードを用意し、該用意するモードの中の何れかのモードを選択して動作することを特徴とする付記１乃至３の何れか１に記載のパケット伝送装置。
【０１２２】
（付記８）  前記パケット引き抜き手段が前記バッファから一度に引き抜く同一の宛先のパケットは、前記バッファに蓄積されているパケット全て、引き抜くパケットの合計サイズが当該パケット伝送装置に接続されたネットワークが許容するパケットのデータ部の最大パケットサイズを超えない数のパケット、引き抜くパケットの合計サイズが予め定めたパケットの合計サイズの上限を超えない数のパケット、及び、引き抜くパケットの合計数が予め定めたパケットの合計数の上限を超えない数のパケット、の何れかであることを特徴とする付記１乃至６の何れか１に記載のパケット伝送装置。
【０１２３】
（付記９）  複数のパケット伝送装置を含むパケット伝送システムであって、
前記複数のパケットを伝送装置のそれぞれは、
パケットを宛先毎に分けて蓄積するバッファ内に同一宛先のパケットが複数蓄積されている場合は該複数のパケットを一度に全て引き抜くパケット引き抜き手段を備え、
前記引き抜きは、前記一度に引き抜いたパケットを宛先毎に単一のパケットにカプセル化してから宛先に対して伝送するために行うことを特徴とするパケット伝送システム。
【０１２４】
（付記１０）  パケット伝送装置が行う伝送方法であって、
前記パケット伝送装置は、パケットを宛先毎に分けて蓄積するバッファ内に同一宛先のパケットが複数蓄積されている場合は該複数のパケットを一度に全て引き抜くパケット引き抜きステップを有し、
前記引き抜きは、前記一度に引き抜いたパケットを宛先毎に単一のパケットにカプセル化してから宛先に対して伝送するために行うことを特徴とするパケット伝送方法。
【０１２５】
（付記１１）  パケットをあて先毎に分けて蓄積するバッファ手段と、
前記バッファ手段に蓄積されたパケットをあて先毎に探索しパケットを引き抜くパケット引き抜き手段と、
前記パケット引き抜き手段により引き抜かれた１つ乃至は複数のパケットを単一のパケットにカプセル化するカプセル化手段と、
前記カプセル化されたパケットをネットワークに送信する送信手段と
を備え、前記パケット引き抜き手段は、探索した同一あて先の複数のパケットを一度に全て引き出すことを特徴とするパケット伝送システム。
【０１２６】
（付記１２）  前記パケット引き抜き手段が前記バッファ手段に蓄積されたパケットをあて先毎に探索する方法は、ラウンドロビンによるあて先毎の巡回であることを特徴とする付記１１に記載のパケット伝送システム。
【０１２７】
（付記１３）  前記パケット引き抜き手段によるラウンドロビンでのパケット引き抜き速度を、前記送信手段がネットワークと接続するネットワークリンクの帯域に設定する第１の設定手段をさらに備えたことを特徴とする付記１２に記載のパケット伝送システム。
【０１２８】
（付記１４）  前記パケット引き抜き手段によるラウンドロビンでのパケット引き抜き速度を、前記送信手段がネットワークと接続するあて先毎に設定した送信速度の合計値か、あるいは前記送信手段がネットワークと接続するネットワークリンクの帯域のいずれか小さい方に設定する第２の設定手段をさらに備えたことを特徴とする付記１２に記載のパケット伝送システム。
【０１２９】
（付記１５）  前記パケット引き抜き手段がラウンドロビンで各あて先のパケットを引き抜く引き抜き速度は、前記送信手段がネットワークと接続するあて先毎に設定した送信速度とそれぞれ同じとなるように設定する第３の設定手段をさらに備え、
前記パケット引き抜き手段は、各あて先毎に引き抜くことが可能である複数のパケットの合計サイズをクレジットとして記憶するクレジットバッファ手段をさらに備えたことを特徴とする付記１２に記載のパケット伝送システム。
【０１３０】
（付記１６）  前記パケット引き抜き手段が前記バッファ手段から一度に引き抜く同一のあて先のパケットは、前記バッファ手段に蓄積されているパケット全てか、引き抜くパケットの合計サイズがネットワークが許容する最大パケットサイズを超えないパケット数か、あるいは予め定められたパケットの合計サイズもしくは合計数を超えないパケット数であることを特徴とする付記１３乃至１５の何れか１に記載のパケット伝送システム。
【０１３１】
（付記１７）  バッファ手段にパケットをあて先毎に分けて蓄積させ、
パケット引き抜き手段に前記バッファ手段に蓄積させたパケットをあて先毎に探索させ、探索させた同一あて先の複数のパケットを一度に全て引き抜かせ、
カプセル化手段に前記パケット引き抜き手段により引き抜かせた１つ乃至は複数のパケットを単一のパケットにカプセル化させ、
送信手段に前記カプセル化手段にカプセル化させたパケットをネットワークに送信させることを特徴とするパケット伝送方法。
【０１３２】
（付記１８）  前記バッファ手段に蓄積させたパケットを前記パケット引き抜き手段にあて先毎に探索させる方法は、ラウンドロビンによるあて先毎の巡回であることを特徴とする付記１７に記載のパケット伝送方法。
【０１３３】
（付記１９）  前記パケット引き抜き手段にラウンドロビンでパケットを引き抜かせる速度を、前記送信手段がネットワークと接続するネットワークリンクの帯域に設定することを特徴とする付記１８に記載のパケット伝送方法。
【０１３４】
（付記２０）  前記パケット引き抜き手段にラウンドロビンでパケット引き抜かせる速度を、前記送信手段がネットワークと接続するあて先毎に設定した送信速度の合計値か、あるいは前記送信手段がネットワークと接続するネットワークリンクの帯域のいずれか小さい方に設定することを特徴とする付記１８に記載のパケット伝送方法。
【０１３５】
（付記２１）  前記パケット引き抜き手段にラウンドロビンで各あて先のパケットを引き抜かせる速度を、前記送信手段がネットワークと接続するあて先毎に設定した送信速度と同じとなるよう設定し、
前記パケット引き抜き手段に、各あて先毎に引き抜き可能なパケットの合計サイズをクレジットとして管理させることを特徴とする付記１８に記載のパケット伝送方法。
【０１３６】
（付記２２）  前記パケット引き抜き手段に前記バッファ手段から一度に引き抜かせる同一のあて先のパケットは、前記バッファ手段に蓄積されているパケット全てか、引き抜くパケットの合計サイズがネットワークが許容する最大パケットサイズを超えないパケット数か、あるいは予め定めたパケットの合計サイズもしくは合計数を超えないパケット数であることを特徴とする付記１９乃至２１の何れか１に記載のパケット伝送方法。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
この出願は、２０１４年２月６日に出願された日本出願特願２０１４−０２１３７０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３７】
本発明は、ネットワークを通して相互に通信するノード間でパケットを広帯域に伝送するといった用途に好適である。また、コンピュータとＩ／Ｏデバイスをネットワークを用いて接続するバスシステムにおいて、Ｉ／Ｏパケットを広帯域に伝送するといった用途にも好適である。
【符号の説明】
【０１３８】
１１０  第１のパケット出力ノード
１２０  第１のパケット集積デバイス
１２１  パケット集積キュー
１２１−１  内部キュー
１２２  パケット引き抜き部
１２２−１  フロー別クレジットバッファ
１２２−２  クレジット再計算タイマ
１２３  レート設定部
１２３−Ａ  物理リンク帯域モード
１２３−Ｂ  輻輳制御帯域モード
１２３−Ｃ  個別フロー帯域モード
１２４  パケットカプセル化部
１２５  カプセル化テーブル
１２６  再送輻輳制御部
１２７  パケットデカプセル化部
２１０  第２のパケット出力ノード
２２０  第２のパケット集積デバイス
３１０  第３のパケット出力ノード
３２０  第３のパケット集積デバイス
４００  ネットワーク
５００  第１のネットワークノード
５１０  パケット出力アプリケーション
５２０  パケット集積キュー
５３０  パケット集積部
５３１  タイマ
５４０  メモリ
５４１  最小集積数
５４２  タイムアウト値
５５０  パケット受信部
【図１】
0006569533.tif 000002
【図２】
0006569533.tif 000003
【図３】
0006569533.tif 000004
【図４】
0006569533.tif 000005
【図５】
0006569533.tif 000006
【図６】
0006569533.tif 000007
【図７】
0006569533.tif 000008
【図８】
0006569533.tif 000009
【図９】
0006569533.tif 000010
【図１０】
0006569533.tif 000011
【図１１】
0006569533.tif 000012
【図１２】
0006569533.tif 000013
【図１３】
0006569533.tif 000014
【図１４】
0006569533.tif 000015
【図１５】
0006569533.tif 000016