(57)【要約】【課題】パケットの順序制御において、すべてのパケットの待ち状態を監視することなく未到着パケットと消失パケットとを区別することができ、消失パケット待ちによるパケット転送遅延を減少させることができるようにする。【解決手段】現時点で到着したパケットのシーケンス番号、次に到着することが期待されているシーケンス番号（ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ）、バッファに存在するパケットの最小シーケンス番号、伝送路ｉのポートに最後に到着したパケットのシーケンス番号（ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］）、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　中の最小のシーケンス番号を管理する。順序制御アルゴリズムは、すべての伝送路Ａ、Ｂ、Ｃから　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より大きいシーケンス番号のパケットが到着したときに未到着パケットの消失を判断し、バッファ内のパケットの転送処理を進める。バッファ内にパケットが存在する場合は、一定時間ごとにタイムアウトアルゴリズムも実行する。【選択図】　図５
2004080139.tif 000002
【特許請求の範囲】
【請求項１】
ノード間での通信を複数の伝送路を並列に利用して行い、受信側ノードにおいてバッファを用い、到着したパケットの順序制御を各パケットに付与されているシーケンス番号に基づいて行う、マルチリンク通信システムにおけるパケットの順序制御方法において、
送信側ノードにおいて、パケットの生成順に従って各パケットにシーケンス番号を付与し、
受信側ノードにおいて、以下の（１）〜（５）のシーケンス番号の管理を行い、
（１）現時点で到着したパケットのシーケンス番号、
（２）次に上位レイヤに引き上げるべきパケットのシーケンス番号、
（３）前記バッファに存在するパケットの最小のシーケンス番号、
（４）各伝送路ごとの最後に到着したパケットのシーケンス番号、
（５）各伝送路ごとの最後に到着したパケットのシーケンス番号（４）の最小値、
前記（１）〜（５）のシーケンス番号を用い、未到着のパケットが消失したと判断した時点で該パケットの到着をあきらめた順序制御の順序制御アルゴリズムを実行することを特徴とする、マルチリンク通信システムにおけるパケットの順序制御方法。
【請求項２】
さらに、前記バッファ中にパケットが存在する場合には、一定時間ごとにタイムアウトアルゴリズムを実行することを特徴とする請求項１に記載の、マルチリンク通信システムにおけるパケットの順序制御方法。
【請求項３】
前記順序制御アルゴリズムは、前記複数の伝送路から到着したパケットのシーケンス番号すべてが、次の到着が予定されるパケットのシーケンス番号を越えたとき、各伝送路ごとの最後に到着したパケットのシーケンス番号の最小値以下の未到着のパケットを消失したパケットと判断し、該パケットの到着を待つことなく、前記バッファ中に存在する該最小値以下のシーケンス番号のパケットを上位レイヤに転送する処理を含むことを特徴とする、請求項１または２に記載のマルチリンク通信システムにおけるパケットの順序制御方法。
【請求項４】
前記タイムアウトアルゴリズムは、前記バッファ中に存在するパケットがタイムアウトとなったとき、該タイムアウトしたパケットのシーケンス番号以下の未到着のパケットの到着を待つことなく、該タイムアウトとなったパケットのシーケンス番号以下のシーケンス番号の前記バッファ中に存在するパケットを上位レイヤに転送する処理を含むことを特徴とする、請求項２に記載のマルチリンク通信システムにおけるパケットの順序制御方法。
【請求項５】
前記タイムアウトアルゴリズムにおけるタイムアウトの時間は、パケットの到着を待っている伝送路の中で最も伝送速度の低い伝送路で最大サイズのパケットを伝送する場合の伝送遅延時間であることを特徴とする、請求項２または４に記載のマルチリンク通信システムにおけるパケットの順序制御方法。
【請求項６】
前記タイムアウトアルゴリズムにおけるタイムアウトの時間を、伝送路の伝送速度に応じて動的に変更することを特徴とする、請求項２、４または５のいずれかに記載のマルチリンク通信システムにおけるパケットの順序制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチリンク通信システムにおけるパケットの順序制御方法に関し、特に、マルチリンク通信システムにおけるパケットの順序制御において、すべてのパケットの待ち状態を監視することなく未到着のパケットと伝送エラーにより消失したパケットとを区別することができ、消失パケットを待つことによるパケット転送遅延を減少させることができる、マルチリンク通信システムにおけるパケットの順序制御方法に関する。
【０００２】
【従来の技術】
パケット通信において、ノード間での通信に複数の伝送路を並列に利用することが可能な場合、複数の伝送路の各々の空き状況をみながら各伝送路にパケットを分配し、負荷分散を行うことによりスループットを向上させることができる。
【０００３】
その際、送信側ノードにおいて順次生成したパケットがそのままの順序で受信側ノードに到着するという保証はなく、受信側ノードに到着するパケットに順序逆転が発生するのが普通である。これは、送信側ノードにおいて同一時間に生成されたパケットでも、複数の伝送路間の速度差や送信パケットの大きさによって、受信側ノードへの到着時間に差異が生じることに起因している。
【０００４】
この対策として、送信側ノードにおいて各伝送路にパケットを分配する際、パケットに各パケットの生成順序を示すシーケンス番号を付与して順次送出し、受信側ノードにおいて各パケットに付与されているシーケンス番号を利用して順序制御を行うことが一般的に行われている。
【０００５】
この順序制御のために、受信側ノードに順序制御用のバッファを用意する。到着したパケットのシーケンス番号を確認し、該シーケンス番号が順序通りのものであるなら、該パケットをそのまま上位レイヤ（ＩＰレイヤ）に転送し、そうでない場合は、該パケットを一旦バッファ内に取り込む。バッファ中にパケットが存在する場合、パケットが到着するごとにバッファの内容を確認し、連続するシーケンス番号順に整えてパケットを上位レイヤに転送する。このように順序制御を行うことにより、上位レイヤは、連続するシーケンス番号順のパケットを受けることができる。
【０００６】
このように、ノード間で複数の伝送路を並列に利用してパケット通信を行う場合、パケットの順序制御を行う方法として、送信側ノードにおいて、パケットに各パケットの生成順序を示すシーケンス番号を付与して送出し、受信側ノードでシーケンス番号に基づいて順序制御を行う方式が一般的であり、順序制御を効率よく行うために、各種方式が提案されている。
【０００７】
特開平５−１１０６００号公報には、各リンクの受信側通信制御装置相互間を同報バスで接続し、次に取り込むべきパケットのシーケンス番号を互いに通知し合うことにより、各受信側通信制御装置で平行して順序制御を行い、パケットの取り込みに要する時間を短縮する、受信パケットの順序制御方法が提案されている。
【０００８】
また、特開平５−１０３０１１号公報には、相手通信制御プロセッサの障害を早期に検出することを目的とし、すべてのパケットの制御状態を管理し、通信制御プロセッサ間のパケット転送を効率的に行う通信制御プロセッサ間パケット転送制御方式が提案されている。
【０００９】
【発明が解決しようとする課題】
しかしながら、特開平５−１１０６００号公報で提案されている受信パケットの順序制御方法は、パケット消失の際の対応が考慮されていないため、これをシステムの通信環境が不安定な無線区間に導入した場合、パケットが消失した場合の遅延時間が大きくなる。これにより提案されている受信パケットの順序制御方法を含めて、従来の順序制御方法は、パケット損失率の少ない有線網での利用を前提としているため、パケット損失への対応が困難であるという問題がある。
【００１０】
また、特開平５−１０３０１１号公報で提案されている通信制御プロセッサ間パケット転送制御方式は、すべてのパケットの到着管理を行うものであるため、平常時でもパケットの処理遅延が大きくなるという問題があり、高速処理が要求されるシステムには向いていない。
【００１１】
本発明の目的は、パケットの順序制御において、すべてのパケットの待ち状態を監視することなく未到着のパケットと伝送エラーにより消失したパケットとを区別することができ、消失パケットを待つことによるパケット転送遅延を減少させることができる、マルチリンク通信システムにおけるパケットの順序制御方法を提供することにある。
【００１２】
【課題を解決するための手段】
上記課題を解決するため、本発明は、ノード間での通信を複数の伝送路を並列に利用して行い、受信側ノードにおいてバッファを用い、到着したパケットの順序制御を各パケットに付与されているシーケンス番号に基づいて行う、マルチリンク通信システムにおけるパケットの順序制御方法において、送信側ノードにおいて、パケットの生成順にそって各パケットにシーケンス番号を付与し、受信側ノードにおいて、現時点で到着したパケットのシーケンス番号、次に上位レイヤに引き上げるべきパケットのシーケンス番号、前記バッファに存在するパケットの最小のシーケンス番号、各伝送路ごとの最後に到着したパケットのシーケンス番号、各伝送路ごとに最後に到着したパケットのシーケンス番号の最小値、のシーケンス番号の管理を行い、これらのシーケンス番号を用い、未到着のパケットが消失したと判断した時点で該パケットの到着をあきらめた順序制御の順序制御アルゴリズムを実行する点に第１の特徴がある。
【００１３】
また、本発明は、さらに、前記バッファ中にパケットが存在する場合には、一定時間ごとにタイムアウトアルゴリズムを実行する点に第２の特徴がある。
【００１４】
また、本発明は、前記順序制御アルゴリズムが、前記複数の伝送路から到着したパケットのシーケンス番号すべてが、次の到着が予定されるパケットのシーケンス番号を越えたとき、各伝送路ごとの最後に到着したパケットのシーケンス番号の最小値以下の未到着のパケットを消失したパケットと判断し、該パケットの到着を待つことなく、前記バッファ中に存在する該最小値以下のシーケンス番号のパケットを上位レイヤに転送する処理を含む点に第３の特徴がある。
【００１５】
また、本発明は、前記タイムアウトアルゴリズムが、前記バッファ中に存在するパケットがタイムアウトとなったとき、該タイムアウトしたパケットのシーケンス番号以下の未到着のパケットの到着を待つことなく、該タイムアウトとなったパケットのシーケンス番号以下のシーケンス番号の前記バッファ中に存在するパケットを上位レイヤに転送する処理を含む点に第４の特徴がある。
【００１６】
また、本発明は、前記タイムアウトアルゴリズムにおけるタイムアウトの時間が、パケットの到着を待っている伝送路の中で最も伝送速度の低い伝送路で最大サイズのパケットを伝送する場合の伝送遅延時間である点に第５の特徴がある。
【００１７】
さらに、本発明は、前記タイムアウトアルゴリズムにおけるタイムアウトの時間を、伝送路の伝送速度に応じて動的に変更する点に第６の特徴がある。
【００１８】
第１の特徴によれば、前記５つのシーケンス番号を管理し、順序制御アルゴリズムを実行することにより、すべてのパケットの待ち状態を監視することなく未到着のパケットと伝送エラーにより消失したパケットとを区別することができ、消失パケットを待つことによるパケット転送遅延を減少させることができる。
【００１９】
また、第２、４の特徴によれば、バッファ中に存在するパケットがタイムアウトとなった時点で、該タイムアウトしたパケットのシーケンス番号以下の未到着のパケットの到着を待つことなく処理を進めることができ、パケット転送遅延を減少させることができる。
【００２０】
また、第３の特徴によれば、複数の伝送路から到着したパケットのシーケンス番号すべてが、次の到着が予定されるパケットのシーケンス番号を越えた時点で、最後に到着したパケットのシーケンス番号の最小値以下の未到着のパケットは消失したと判断できるため、そのような未到着のパケットの到着を待つことなく処理を進めることができる。
【００２１】
また、第５の特徴によれば、タイムアウトの時間を適切に設定することができる。
【００２２】
さらに、第６の特徴によれば、伝送路の伝送速度が動的に変化しても、タイムアウトの時間を伝送路の伝送速度に対応した値に変更することにより、パケットの転送遅延を実際の運用に合わせて少なくすることができる。
【００２３】
【発明の実施の形態】
以下、図面を参照して本発明を詳細に説明する。図１は、本発明による順序制御方法を示す概念図であり、ここでは、一例として、送信側ノードと受信側ノード間を３本の並列する伝送路Ａ、Ｂ、Ｃによって接続するマルチリンク通信システムを仮定している。送信側ノードでは生成したパケットを３本の伝送路Ａ、Ｂ、Ｃに分配する。その際、パケットの生成順に従って各パケットにシーケンス番号を付与する。各伝送路Ａ、Ｂ、Ｃに分配されたパケットは、それぞれの伝送速度に合わせてバッファリングされて受信側ノードに伝送される。
【００２４】
従来の順序制御においては、シーケンス番号と各伝送路との対応を考えずに、１つの連続する番号として管理しているが、本発明では、受信側ノードにおいて、各伝送路ごとに到着したパケットのシーケンス番号を管理し、これらのシーケンス番号を用いて順序制御アルゴリズムおよびタイムアウトアルゴリズムを実行する。これにより、未到着のパケットと伝送エラーにより消失したパケットとを区別することができ、未到着のパケットを待つことによるパケット転送遅延を減少させることができる。
【００２５】
また、伝送路の速度が動的に変化しても、タイムアウトアルゴリズムにおけるタイムアウトの時間を伝送路の速度に対応した値に変更することにより、パケットの転送遅延を実際の運用に合わせて少なくすることができる。
【００２６】
本発明の順序制御方法について具体的に説明する。
送信側ノードにおいては、リンクを通過するトラフィックを、各伝送路の伝送速度に応じてパケット単位で各伝送路に分配する。例えば伝送路Ａ、Ｂ、Ｃの伝送速度が３：２：１であるならば、分配するパケットも３：２：１にする。その際、パケットの生成順に従って独自のシーケンス番号を各パケットのヘッダに付加する。一方、受信側ノードでは、到着したパケットをバッファリングし、順序制御アルゴリズムによって順序を整えてから上位レイヤに転送する。
【００２７】
順序制御アルゴリズムは、現時点で到着したパケットのシーケンス番号　ｓｅｑｎｏを中心とする以下の（１）〜（５）の５つのパラメータを管理して順序制御を行うものであり、これによりパケットが消失した際にも待ち時間の少ない順序制御を実現する。
（１）ｓｅｑｎｏ　：現時点で到着したパケットのシーケンス番号
（２）ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　：次に到着することが期待されているシーケンス番号
（３）ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ　：受信バッファに存在する最小のシーケンス番号
（４）ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　：伝送路ｉのポートに最後に到着したパケットのシーケンス番号（＝伝送路ｉのポートに到着している最大の　ｓｅｑｎｏ　のパケット）
（５）ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　：ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　の中で最も小さいシーケンス番号
【００２８】
図２は、一例として、シーケンス番号１〜６のパケットが順次送出された場合の受信側ノードでのシーケンス番号の挙動を示している。本例は、まず、伝送路Ａのポート（Ｐｏｒｔ）０へ１番のパケットが到着し、伝送路Ｂのポート１への２番目のパケットが未到着のまま、伝送路Ｃのポート２への３番目のパケットが到着し、続いて４番、５番、６番のパケットがそれぞれポート０、１、２へ到着した場合を想定している。
【００２９】
ポート０への１番のパケットは、到着と同時に上位レイヤ（ＩＰレイヤ）に転送され、ポート２への３番目のパケットは、２番のパケットが未到着であるため、受信バッファ内に格納される。
【００３０】
４番、５番、６番のパケットがそれぞれポート０、１、２へ到着した時点で、ｓｅｑｎｏ＝６、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＝２、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ＝３となる。また、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　はそれぞれ、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝４、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｂ］＝５、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｃ］＝６となり、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝４である。
【００３１】
順序制御アルゴリズムは、これらのシーケンス番号を管理し、順序制御を行う。図３は、本発明の順序制御アルゴリズムの一例を示すフローチャートであり、パケットが到着したときに実行される。以下、このフローに沿って説明する。
【００３２】
まず、伝送路ｉのポートに　ｓｅｑｎｏ　のパケットが到着した場合、該　ｓｅｑｎｏ　を、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　とする（Ｓ１）。次に、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下であるか否かを判断する（Ｓ２）。なお、後述のタイムアウトアルゴリズムやエラーなどにより、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より小さいこともあり得るが、これはまれである。Ｓ２で、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下でないと判断すれば、到着したパケット、すなわち、　ｓｅｑｎｏ　のパケットを受信バッファに格納し、該パケットにタイムスタンプを設定する（Ｓ３）。このタイムスタンプは、後述するタイムアウトアルゴリズムで用いられる。
【００３３】
次に、すべての伝送路ｉの　ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より大きいか否かを判断し（Ｓ４）、大きくないと判断すれば、パケット受信待ち状態に戻る（Ｓ５）。また、Ｓ４で、すべての伝送路ｉの　ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より大きいと判断すれば、すべての伝送路ｉの　ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　を　ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　とした（Ｓ６）後、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下のパケットをすべて上位レイヤ（ＩＰレイヤ）に転送する（Ｓ７）。続いて　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　を　ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＋１とする。
【００３４】
以上のＳ４〜Ｓ８のステップは、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下の未到着のパケットは消失されたとしてそれらの到着をあきらめ、バッファ中に存在する　ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下のパケットをすべて上位レイヤに転送する処理〔Ａ〕である。ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下の未到着のパケットの到着をあきらめるのは、１つの伝送路ではパケットの順序逆転が発生しないことを根拠としている。Ｓ８に続いて、受信バッファ内の残りのパケットを順序に従って上位レイヤに転送する処理〔Ｂ〕を実行する。
【００３５】
Ｓ２で、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下であると判断すれば、到着したパケット、すなわち、　ｓｅｑｎｏ　のパケットを上位レイヤに転送し（Ｓ９）する。なお、ここでは　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より小さい　ｓｅｑｎｏ　のパケットも廃棄することなく、上位レイヤに転送して上位レイヤでの処理に委ねることとしている。次に、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　に等しいか否かを判断する（Ｓ１０）。ここで、ｓｅｑｎｏ　がｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　に等しくないと判断すれば、パケット受信待ち状態に戻る（Ｓ５）。また、Ｓ１０で、ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　に等しいと判断すれば、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＋１を新たな　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とした（Ｓ１１）後、受信バッファ内のパケットを順序に従って上位レイヤに転送する処理〔Ｂ〕を実行する。
【００３６】
処理〔Ｂ〕においては、受信バッファ内に　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　のパケットが存在するか否かを判断し（Ｓ１２）、それが存在すれば当該パケットの上位レイヤへの転送（Ｓ１３）および　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＋１を新たな　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とする更新処理（Ｓ１４）を繰り返し実行し、受信バッファ内に　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　のパケットが存在しなくなれば、パケット受信待ち状態に戻る（Ｓ５）。
【００３７】
このように、図３の順序制御アルゴリズムは、１つの伝送路ではパケットの順序逆転が発生しないことを利用し、すべての伝送路から到着したパケットのシーケンス番号が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　より大きくなった場合には、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下の未到着のパケットをあきらめ、受信バッファ中の　ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ　以下のパケットを転送する（図３の〔Ａ〕部分）。また、受信バッファ中の残りのパケットは順序制御して転送する（図３の〔Ｂ〕部分）。
【００３８】
図４は、受信バッファ中にパケットが存在する場合に、一定時間ごとに実行する、本発明のタイムアウトアルゴリズムの一例を示すフローチャートである。このタイムアウトアルゴリズムに従って、受信バッファ中に、指定した許容待ち時間を越えるパケットが存在する場合、その中でタイムアウトから最も経過時間の長いパケットのシーケンス番号を　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とし、その後、受信バッファ中に存在する　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下のパケットを上位レイヤに転送し、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　から連続するパケットを上位レイヤ（ＩＰレイヤ）に順次転送する。
【００３９】
以下、図４のフローに沿って説明する。受信バッファ中にパケットが存在する場合に、一定時間ごとに割り込み処理を開始し、受信バッファ中に、指定した許容待ち時間を越えたパケットが存在するか否かを判断する（Ｓ１５）。指定した許容待ち時間を越えたか否かは、　前記Ｓ３で設定されたタイムスタンプに基づいて判断できる。
【００４０】
許容待ち待ち時間としては、パケットの到着を待っている伝送路の中で最も伝送速度の低い伝送路で最大サイズのパケットを送信する場合の伝送遅延時間とすることができる。この伝送遅延時間、すなわち、これ以上待っても当該伝送路にパケットが到着しないと判断する時間をタイマ値としてセットし、このタイマ値を基準にしてＳ１５での判断を行うことができる。
【００４１】
Ｓ１５で、受信バッファ中に、指定した許容待ち時間を越えたパケットが存在しないと判断すれば、パケット受信待ち状態に戻り（Ｓ５）、存在すると判断すれば、タイムアウトしたパケットの中で、最も経過時間の長いパケットの＿ｓｅｑｎｏ　を　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とする（Ｓ１６）。
【００４２】
次に、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ　が　Ｓ１６で設定された　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下であるか否かを判断し（Ｓ１７）、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ　が　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下であると判断すれば、処理〔Ｃ〕を実行し、以下でないと判断すれば、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＋１を新たな　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とした（Ｓ１８）後、処理〔Ｄ〕を実行する。
【００４３】
処理〔Ｃ〕は、　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下の未到着のパケットの到着をあきらめる処理であり、Ｓ１７、Ｓ１９、Ｓ２０のループにより、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ　のパケットの上位レイヤへの転送（Ｓ１９）および　ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ　の更新（Ｓ２０）を繰り返し実行して、受信バッファ中に存在する　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　以下のパケットを上位レイヤに順次転送する。
【００４４】
処理〔Ｄ〕は、Ｓ１６で置き換えられた　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　の次から連続する、受信バッファ中のパケットを上位レイヤに順次転送する処理であり、まず、受信バッファ中に　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　（＝ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＋１）　のパケットが存在するか否かを判断する（Ｓ２１）。受信バッファ中に　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　のパケットが存在しないと判断すれば、パケット受信待ち状態に戻り（Ｓ５）、存在すると判断すれば、Ｓ２１、Ｓ２２、Ｓ２３のループにより、これが存在しなくなるまで当該パケットの上位レイヤへの転送（Ｓ２２）および　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＋１を新たな　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ　とする更新処理（Ｓ２３）を繰り返し実行する。
【００４５】
次に図５および図６を参照して、順序制御アルゴリズムの動作の一具体例について説明する。図５は、ある時点におけるパケットの到着の流れの一例を示している。本例では、伝送路ＡとＢから１番と２番のパケットが順序通りに到着し、続いて伝送路Ａから５番と７番のパケットが到着し、伝送路Ｃから９番のパケットが到着し、伝送路Ｂから１０番のパケットが到着して、３番、４番、６番、８番のパケットは未到着の場合を想定している。
【００４６】
伝送路ＡとＢから到着した１番と２番のパケットは、順序通りであるので直ちに上位レイヤに転送される（Ｓ９）。伝送路Ａから到着した５番と７番のパケットおよび伝送路Ｃから到着した９番のパケットは、未到着の３番のパケットがまだ伝送路Ｂから到着する可能性があるため、受信バッファ内に格納される。
【００４７】
伝送路Ｂから１０番のパケットが到着した時点で、ｓｅｑｎｏ＝１０、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＝３、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ＝５となる。また、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　はそれぞれ、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｂ］＝１０、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｃ］＝９となり、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７である。
【００４８】
この時点で、すべての伝送路Ａ、Ｂ、Ｃのポートに　ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ（＝３）よりシーケンス番号の大きなパケットが到着したことになり、未到着のパケット３番、４番、６番は、遅延しているのではなく、消失したと判断する（Ｓ４）。
【００４９】
その後、順序制御アルゴリズムに従い、受信バッファ中に存在する　ａｒｒｉｖｅｄ＿ｍｉｎ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７までのパケットを上位レイヤに順次転送する（Ｓ７）。本例では、５番と７番のパケットが上位レイヤに転送される。
【００５０】
図６は、５番と７番のパケットが転送された直後の状態を示している。この状態では、ｓｅｑｎｏ＝１０、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＝８、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ＝９となる。また、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　は転送前と変わらずそれぞれ、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｂ］＝１０、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｃ］＝９であり、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７である。
【００５１】
前記のように、５番と７番のパケットを上位レイヤに転送し、３番、４番、６番のパケットの到着は、図３の処理〔Ａ〕に従ってあきらめている。本例では、８番のパケットも消失していることを想定しているが、順序制御アルゴリズムにおいては、８番のパケットがまだ伝送路Ａから到着する可能性があると判断するため、９番、１０番のパケットは受信バッファ中で待機し、新たなパケットの到着を待つことになる。
【００５２】
次に、図７および図８を参照して、タイムアウトアルゴリズムの動作の一具体例について説明する。本例は、伝送路ＡとＢから１番と２番が順序通り到着し、続いて伝送路Ａから５番と７番のパケットが到着し、伝送路Ｂから８番のパケットが到着し、３番、４番、６番のパケットは未到着である場合を想定している。
【００５３】
伝送路ＡとＢから到着した１番と２番のパケットは、直ちに上位レイヤに転送される（Ｓ９）。また、５番と７番と８番のパケットは、３番のパケットがまだ伝送路Ｃから到着する可能性があるため、受信バッファに格納される。
【００５４】
伝送路Ｂから８番のパケットが到着したとき、ｓｅｑｎｏ＝８、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＝３、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ＝５となる。また、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　はそれぞれ、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｂ］＝８となり、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７である。
【００５５】
ここで、もし伝送路Ｃから９番のパケットが到着した場合には、前記の順序制御アルゴリズムに従って３番、４番、６番のパケットの到着をあきらめ、５番のパケットを上位レイヤに転送する（Ｓ７）。しかし、その前に５番のパケットがタイムアウトになり（Ｓ１５）、タイムアウトアルゴリズムが実行されたと仮定すると、５番のパケットは、タイムアウトアルゴリズムによって上位レイヤに転送される（Ｓ１９）。本例では、図４のタイムアウトアルゴリズムによって上位レイヤに転送されるのは５番のパケットのみである。
【００５６】
図８は、５番のパケットが上位レイヤに転送された直後の状態を示している。この状態では、ｓｅｑｎｏ＝８、ｅｘｐｅｃｔｅｄ＿ｓｅｑｎｏ＝６、ｍｉｎ＿ｂｕｆｆｅｒ＿ｓｅｑｎｏ＝７となる。また、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［ｉ］　は転送前と変わらずそれぞれ、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７、ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ｂ］＝８であり、ａｒｒｉｖｅｄ＿ｍｉｎｉｍｕｍ＝ａｒｒｉｖｅｄ＿ｓｅｑｎｏ［Ａ］＝７である。
【００５７】
前記のように、５番のパケットが上位レイヤに転送され、３番、４番のパケットの到着は、図４の処理〔Ｃ〕に従ってあきらめる。本例でも、順序制御アルゴリズムの場合と同様に、６番のパケットも消失していることを想定しているが、受信バッファに存在する７番、８番のパケットとも、まだタイムアウトする時間ではなく、６番のパケットがまだ伝送路Ｃから到着する可能性があると判断されるため、７番、８番のパケットは受信バッファ中で待機し、新たなパケットの到着を待つことになる。この際の７番、８番の待ち時間は、伝送路Ｃに最大サイズのパケットが送信されたと仮定したときの伝送完了にかかる時間とすることができる。
【００５８】
以上では、順序制御アルゴリズムとともにタイムアウトアルゴリズムを実行する実施形態について説明したが、順序制御アルゴリズムのみの実行でもパケット転送遅延を減少させることができ、この場合にはＳ３におけるタイムスタンプの設定は不要である。
【００５９】
本発明は、各伝送路ごとに到着したパケットのシーケンス番号を管理し、それらシーケンス番号を用いて順序制御アルゴリズムおよびタイムアウトアルゴリズムを実行することにより、パケットの消失をも考慮して転送遅延を減少させるという特徴を有するものであり、パケット損失率の比較的大きい無線マルチリンクシステム、例えば無線ノード間を結ぶ無線リンクが複数の無線チャネルによって構成される無線マルチリンク構成の加入者系無線アクセスシステムなどの広帯域固定無線アクセスシステム（ＦＷＡ：ｆｉｘｅｄ　ｗｉｒｅｌｅｓｓ　ａｃｃｅｓｓ）に適用して有効であるが、パケットの消失が考えられる有線マルチリンク構成のシステムにも適用することができる。
【００６０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、伝送路ごとに到着したパケットの最新のシーケンス番号を管理することにより、パケットの順序制御を行う場合にすべてのパケットの待ち状態を監視することなく未到着のパケットと伝送エラーにより消失したパケットとを区別することができ、消失パケットを待つことによるパケット転送遅延を減少させることができる。
【図面の簡単な説明】
【図１】本発明による順序制御方法を示す概念図である。
【図２】受信側ノードでのシーケンス番号の挙動の一例の説明図である。
【図３】本発明の順序制御アルゴリズムの一例を示すフローチャートである。
【図４】本発明のタイムアウトアルゴリズムの一例を示すフローチャートである。
【図５】本発明の順序制御によるパケットのある状態例を示す説明図である。
【図６】本発明の順序制御によるパケットの他の状態例を示す説明図である。
【図７】本発明のタイムアウトアルゴリズムによるパケットのある状態例を示す説明図である。
【図８】本発明のタイムアウトアルゴリズムによるパケットの他の状態例を示す説明図である。
【符号の説明】
１〜１０・・・パケット、Ａ、Ｂ、Ｃ・・・伝送路
【図１】
2004080139.tif 000003
【図２】
2004080139.tif 000004
【図３】
2004080139.tif 000005
【図４】
2004080139.tif 000006
【図５】
2004080139.tif 000007
【図６】
2004080139.tif 000008
【図７】
2004080139.tif 000009
【図８】
2004080139.tif 000010