(57)【特許請求の範囲】
【請求項１】
送信ノードと、受信ノードとの間の通信方法であって、
送信ノードにおいて、
順序制御に関する第１の基準に基づいた１以上のフローを有する第１のフロー群と、再送制御に関する第２の基準に基づいた１以上のフローを有する第２のフロー群とを設け、前記第１のフロー群に属する各々のフローに一意の第１の識別子を割り当て、前記第２のフロー群に属する各々のフローに一意の第２の識別子を割り当て、
入力されたパケットを、前記第１の基準に基づいて前記第１のフロー群に属する１以上のフローに分類し、かつ、前記第２の基準に基づいて前記第２のフロー群に属する１以上のフローに分類し、前記パケットに、前記第１の識別子と、前記第１の識別子で特定される第１のフロー内で一意の第１のシーケンス番号と、前記第２の識別子と、前記第２の識別子で特定されるフロー内で一意の第２のシーケンス番号とを付与して送信し、
受信ノードにおいて、
受信した全てのパケットを第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、送信ノード対してこれらの再送を要求し、
送信ノードにおいて、
受信ノードからの要求された第２のフローの第２のシーケンス番号のパケットを再送し、
受信ノードにおいて、
受信した全てのパケットを第１の識別子に基づいて分類し、各第１のフローに関して、第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行うことを特徴とする通信方法。
【請求項２】
送信ノードと受信ノードは一つの通信経路で結ばれ、送信ノードの第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項１に記載の通信方法。
【請求項３】
送信ノードは、パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択することを特徴とする請求項１に記載の通信方法。
【請求項４】
送信ノードと受信ノードとは複数の通信経路で結ばれ、
送信ノードは、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項３に記載の通信方法。
【請求項５】
送信ノードと受信ノードとは複数の通信経路で結ばれ、
送信ノードは、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項３に記載の通信方法。
【請求項６】
送信ノードは他の通信ノードの送信するパケットを転送する送信側転送ノードであり、
受信ノードは他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする請求項１に記載の通信方法。
【請求項７】
送信ノードと受信ノードは一つの通信経路で結ばれ、
送信ノードの第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項６に記載の通信方法。
【請求項８】
送信ノードと受信ノードとは複数の通信経路で結ばれ、
送信ノードは、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項６に記載の通信方法。
【請求項９】
送信ノードと受信ノードとは複数の通信経路で結ばれ、
送信ノードは、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項６に記載の通信方法。
【請求項１０】
送信ノードの第３の基準として、送信側ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うことを特徴とする請求項３に記載の通信方法。
【請求項１１】
前記経路状態情報は、経路の遅延を含むことを特徴とする請求項１０に記載の通信方法。
【請求項１２】
前記経路状態情報は、経路の通信速度を含むことを特徴とする請求項１０に記載の通信方法。
【請求項１３】
前記経路状態情報は、経路の負荷を含むことを特徴とする請求項１０に記載の通信方法。
【請求項１４】
経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えることを特徴とする請求項１０に記載の通信方法。
【請求項１５】
各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄することを特徴とする請求項１４に記載の通信方法。
【請求項１６】
パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択することを特徴とする請求項１０に記載の通信方法。
【請求項１７】
パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択することを特徴とする請求項１０に記載の通信方法。
【請求項１８】
各経路につき、推測される現在の経路状態に応じてデータの送信を中断することを特徴とする請求項１０に記載の通信方法。
【請求項１９】
前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする請求項１８に記載の通信方法。
【請求項２０】
経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うことを特徴とする請求項１０に記載の通信方法。
【請求項２１】
パケットを送信する送信部とパケットを受信する受信部とから構成され、パケットの再送制御と順序制御とを独立に行うノードであって、
前記送信部は、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、送信するパケットに付加して送信する手段と、
パケットを受信したノードから再送を要求されたパケットを、前記第２の識別子及び第２のシーケンス番号から特定し、そのパケットを再送する手段と
を有し、
前記受信部は、
受信した全てのパケットを前記第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、その第２の識別子と第２のシーケンス番号とを、パケットに送信したノードに対して送信して再送を要求する手段と、
受信した全てのパケットを前記第１の識別子に基づいて分類し、各第１のフローに関して、前記第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行う手段と
を有することを特徴とするノード。
【請求項２２】
ノード間は一つの通信経路で結ばれ、第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項２１に記載のノード。
【請求項２３】
パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択する手段を有することを特徴とする請求項２１に記載のノード。
【請求項２４】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項２３に記載のノード。
【請求項２５】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項２３に記載のノード。
【請求項２６】
ノードの送信部は他の通信ノードの送信するパケットを転送する送信側転送ノードであり、
ノードの受信部は他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする請求項２１に記載のノード。
【請求項２７】
ノード間は一つの通信経路で結ばれ、
第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項２６に記載のノード。
【請求項２８】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項２６に記載のノード。
【請求項２９】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項２６に記載のノード。
【請求項３０】
前記通信経路を選択する手段は、第３の基準として、ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うことを特徴とする請求項２３に記載のノード。
【請求項３１】
前記経路状態情報は、経路の遅延を含むことを特徴とする請求項３０に記載のノード。
【請求項３２】
前記経路状態情報は、経路の通信速度を含むことを特徴とする請求項３０に記載のノード。
【請求項３３】
前記経路状態情報は、経路の負荷を含むことを特徴とする請求項３０に記載のノード。
【請求項３４】
前記通信経路を選択する手段は、経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えることを特徴とする請求項３０に記載のノード。
【請求項３５】
前記通信経路を選択する手段は、各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄することを特徴とする請求項３４に記載のノード。
【請求項３６】
前記通信経路を選択する手段は、パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択することを特徴とする請求項３０に記載のノード。
【請求項３７】
前記通信経路を選択する手段は、パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択することを特徴とする請求項３０に記載のノード。
【請求項３８】
前記通信経路を選択する手段は、各経路につき、推測される現在の経路状態に応じてデータの送信を中断することを特徴とする請求項３０に記載のノード。
【請求項３９】
前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする請求項３８に記載のノード。
【請求項４０】
前記通信経路を選択する手段は、経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うことを特徴とする請求項３０に記載のノード。
【請求項４１】
パケットの再送制御と順序制御とを独立に行うノードの制御プログラムであって、
前記ノードがコンピュータであり、
前記制御プログラムは前記コンピュータを、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、送信するパケットに付加して送信する手段と、
パケットを受信したノードから再送を要求されたパケットを、前記第２の識別子及び第２のシーケンス番号から特定し、そのパケットを再送する手段と、
受信した全てのパケットを前記第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、その第２の識別子と第２のシーケンス番号とを、パケットに送信したノードに対して送信して再送を要求する手段と、
受信した全てのパケットを前記第１の識別子に基づいて分類し、各第１のフローに関して、前記第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行う手段と
して機能させることを特徴とするノードの制御プログラム。
【請求項４２】
ノード間は一つの通信経路で結ばれ、第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項４１に記載のノードの制御プログラム。
【請求項４３】
前記制御プログラムは前記ノードを、パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択する手段として更に機能させることを特徴とする請求項４１に記載のノードの制御プログラム。
【請求項４４】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項４３に記載のノードの制御プログラム。
【請求項４５】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項４３に記載のノードの制御プログラム。
【請求項４６】
ノードの送信側は他の通信ノードの送信するパケットを転送する送信側転送ノードであり、
ノードの受信側は他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする請求項４１に記載のノードの制御プログラム。
【請求項４７】
ノード間は一つの通信経路で結ばれ、
第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする請求項４６に記載のノードの制御プログラム。
【請求項４８】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項４６に記載のノードの制御プログラム。
【請求項４９】
ノード間は複数の通信経路で結ばれ、
第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする請求項４６に記載のノードの制御プログラム。
【請求項５０】
制御プログラムは、前記通信経路を選択する手段を、ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うように機能させることを特徴とする請求項４３に記載のノードの制御プログラム。
【請求項５１】
前記経路状態情報は、経路の遅延を含むことを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５２】
前記経路状態情報は、経路の通信速度を含むことを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５３】
前記経路状態情報は、経路の負荷を含むことを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５４】
制御プログラムは、前記通信経路を選択する手段を、経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えるように機能させることを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５５】
制御プログラムは、前記通信経路を選択する手段を、各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄するように機能させることを特徴とする請求項５４に記載のノードの制御プログラム。
【請求項５６】
制御プログラムは、前記通信経路を選択する手段を、パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択するように機能させることを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５７】
制御プログラムは、前記通信経路を選択する手段を、パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択するように機能させることを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５８】
制御プログラムは、前記通信経路を選択する手段を、各経路につき、推測される現在の経路状態に応じてデータの送信を中断するように機能させることを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項５９】
前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする請求項５８に記載のノードの制御プログラム。
【請求項６０】
制御プログラムは、前記通信経路を選択する手段を、経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うように機能させることを特徴とする請求項５０に記載のノードの制御プログラム。
【請求項６１】
通信方法であって、
送信パケットに、順序制御のための情報とは別に、送信フローを識別する識別子と、前記送信フロー内におけるシーケンス番号とを付与し、受信側で前記識別子と前記シーケンス番号とに基づいて、送信フローごとに再送制御を行うことを特徴とする通信方法。
【請求項６２】
通信方法であって、
送信パケットに、順序制御のための情報とは別に、送信フローを識別する識別子と、前記送信フロー内におけるシーケンス番号とを付与し、受信側で前記識別子と前記シーケンス番号とに基づいて、送信フローごとにパケットの損失を検出することを特徴とする通信方法。
【請求項６３】
ノードであって、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、パケットに付加して送信する手段と、
前記第２の識別子と前記第２のシーケンス番号とに基づいて、送信フローごとに検出された損失パケットを再送する手段と
を有することを特徴とするノード。
【請求項６４】
ノードの制御プログラムであって、
前記ノードがコンピュータであり、
前記制御プログラムは前記コンピュータを、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、パケットに付加して送信する手段と、
前記第２の識別子と前記第２のシーケンス番号とに基づいて、送信フローごとに検出された損失パケットを再送する手段と
して機能させることを特徴とするノードの制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフローの存在する２ノード間のパケット通信に関し、特に再送制御に関する。
【背景技術】
【０００２】
インターネット上を経由して２ノードがパケット通信する場合には、パケット損失、パケット順序ミスが発生する。パケット損失に対処する方法として、パケットの再送方法の技術が提案されている（例えば、特許文献１）。特許文献１の技術は、送信ノードと受信ノードとの間で送信パケットのフロー制御及び順序制御を行うが、受信ノードでパケット損失による順序待ちが発生した場合、一定時間内に順序待ち対象のパケットを受信しなかった場合、送信ノードに対して順序待ち対象のパケットの再送要求を通知するものである。【０００３】
また、２ノード間に複数のフローが存在する場合には、フローそれぞれを単位として、例えばTCP（”Transmission Control Protocol”, rfc793）などを利用して、パケットの再送や順序制御を行っていた。【０００４】
以下に、従来技術による順序制御やパケット損失の検出による再送制御を、図１９を用いて説明する。【０００５】
図１９は、３本のフロー１、フロー２、フロー３からのパケットを一つの経路を介して送信する場合におけるパケット損失の検出を示している。【０００６】
図１９によれば、フロー１からはパケット1-1、パケット1-2及びパケット1-3を受信し、フロー２からはパケット2-1、パケット2-2及びパケット2-3を受信し、フロー３からはパケット3-1、パケット3-2及びパケット3-3を受信している。尚、各パケットには、フローと各フローのパケットの順番（シーケンス番号）とを示す識別情報が付されている。例えば、パケット2-1は、フロー２において２番目の順番であることを示している。【０００７】
受信したパケットは一つの経路４に送信するにあたって、各フローより順番にひとつずつのパケットを選択し、経路４に送信している。すなわち、パケット1-1、パケット2-1、パケット3-1、…、パケット1-3、パケット2-3、パケット3-3の順番で経路４に送信される。受信側では、経路４から受信されたパケットを、パケットの識別情報に基づいて、フロー毎に並べなおす順序制御が行われると共に、損失したパケットを検出して再送の要求（再生制御）が行われていた。
【特許文献１】特開平９−４６３７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来技術では、多数のパケットを送受信するにも関わらず、順序制御をしながらパケット損失の検出を行う為、パケット損失の検出が遅れるという課題があった。【０００９】
例えば、図１９で示される従来技術において、経路４上でパケット2-2の損失が発生した場合を考えると、受信側では、パケットが送信された順序で受信するので、パケット1-1、パケット2-1、パケット3-1、…、パケット1-3、パケット2-3、パケット3-3の順番でパケットを受信することになる。損失したパケットはパケット2-2であるので、パケット1-2の次に受信されるパケットはパケット3-2である。【００１０】
この時点では、パケット2-2が損失したことを検出することは出来ず、損失したパケット2-2と同じフローの次のパケット2-3が受信されて順序制御が行われ、パケット2-1と、パケット2-3とが検出され、初めてパケット2-2の損失が検出される。すなわち、図１９の例においては、損失したパケット2-2の３パケット先であるパケット2-3の受信及び順序制御を待たなければ、パケット2-2の損失を検出することが出来なかった。【００１１】
そこで、本発明は上記課題に鑑みて発明されたものであって、その目的は上記課題を解決し、従来のフロー毎の再送制御に比較して早期のパケット損失の検出が可能となる技術を提供することにある。【００１２】
また、本発明の目的は上記課題を解決し、従来のパケット損失の検出に比較して早期のパケット損失の検出が可能となる技術を提供することにある。【００１３】
また、本発明の目的は、順序制御の為の識別情報とは別に、パケットの損失検出及び再生制御の為の識別情報をパケットに付与し、順序制御とパケット損失の検出及び再生制御とを独立に行うことにより、早期にパケットを検出して再送の制御が行える技術を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決する第１の発明は、送信ノードと、受信ノードとの間の通信方法であって、
送信ノードにおいて、
順序制御に関する第１の基準に基づいた１以上のフローを有する第１のフロー群と、再送制御に関する第２の基準に基づいた１以上のフローを有する第２のフロー群とを設け、前記第１のフロー群に属する各々のフローに一意の第１の識別子を割り当て、前記第２のフロー群に属する各々のフローに一意の第２の識別子を割り当て、
入力されたパケットを、前記第１の基準に基づいて前記第１のフロー群に属する１以上のフローに分類し、かつ、前記第２の基準に基づいて前記第２のフロー群に属する１以上のフローに分類し、前記パケットに、前記第１の識別子と、前記第１の識別子で特定される第１のフロー内で一意の第１のシーケンス番号と、前記第２の識別子と、前記第２の識別子で特定されるフロー内で一意の第２のシーケンス番号とを付与して送信し、
受信ノードにおいて、
受信した全てのパケットを第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、送信ノード対してこれらの再送を要求し、
送信ノードにおいて、
受信ノードからの要求された第２のフローの第２のシーケンス番号のパケットを再送し、
受信ノードにおいて、
受信した全てのパケットを第１の識別子に基づいて分類し、各第１のフローに関して、第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行うことを特徴とする。【００１５】
上記課題を解決する第２の発明は、上記第１の発明において、送信ノードと受信ノードは一つの通信経路で結ばれ、送信ノードの第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００１６】
上記課題を解決する第３の発明は、上記第１の発明において、送信ノードは、パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択することを特徴とする。【００１７】
上記課題を解決する第４の発明は、上記第３の発明において、送信ノードと受信ノードとは複数の通信経路で結ばれ、送信ノードは、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００１８】
上記課題を解決する第５の発明は、上記第３の発明において、送信ノードと受信ノードとは複数の通信経路で結ばれ、送信ノードは、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００１９】
上記課題を解決する第６の発明は、上記第１から第３のいずれかの発明において、送信ノードは他の通信ノードの送信するパケットを転送する送信側転送ノードであり、受信ノードは他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする。【００２０】
上記課題を解決する第７の発明は、上記第６の発明において、送信ノードと受信ノードは一つの通信経路で結ばれ、送信ノードの第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００２１】
上記課題を解決する第８の発明は、上記第６の発明において、送信ノードと受信ノードとは複数の通信経路で結ばれ、送信ノードは、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００２２】
上記課題を解決する第９の発明は、上記第６の発明において、送信ノードと受信ノードとは複数の通信経路で結ばれ、送信ノードは、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００２３】
上記課題を解決する第１０の発明は、上記第３の発明において、送信ノードの第３の基準として、送信側ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うことを特徴とする。【００２４】
上記課題を解決する第１１の発明は、上記第１０の発明において、前記経路状態情報は、経路の遅延を含むことを特徴とする。【００２５】
上記課題を解決する第１２の発明は、上記第１０又は第１１の発明において、前記経路状態情報は、経路の通信速度を含むことを特徴とする。【００２６】
上記課題を解決する第１３の発明は、上記第１０から第１２のいずれかの発明において、前記経路状態情報は、経路の負荷を含むことを特徴とする。【００２７】
上記課題を解決する第１４の発明は、上記第１０から第１３のいずれかの発明において、経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えることを特徴とする。【００２８】
上記課題を解決する第１５の発明は、上記第１０から第１４のいずれかの発明において、各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄することを特徴とする。【００２９】
上記課題を解決する第１６の発明は、上記第１０から第１５のいずれかの発明において、パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択することを特徴とする。【００３０】
上記課題を解決する第１７の発明は、上記第１０から第１６のいずれかの発明において、パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択することを特徴とする。【００３１】
上記課題を解決する第１８の発明は、上記第１０から第１７のいずれかの発明において、各経路につき、推測される現在の経路状態に応じてデータの送信を中断することを特徴とする。【００３２】
上記課題を解決する第１９の発明は、上記第１８の発明において、前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする。【００３３】
上記課題を解決する第２０の発明は、上記第１０から第１９のいずれかの発明において、経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うことを特徴とする。【００３４】
上記課題を解決する第２１の発明は、パケットを送信する送信部とパケットを受信する受信部とから構成され、パケットの再送制御と順序制御とを独立に行うノードであって、
前記送信部は、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、送信するパケットに付加して送信する手段と、
パケットを受信したノードから再送を要求されたパケットを、前記第２の識別子及び第２のシーケンス番号から特定し、そのパケットを再送する手段と
を有し、
前記受信部は、
受信した全てのパケットを前記第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、その第２の識別子と第２のシーケンス番号とを、パケットに送信したノードに対して送信して再送を要求する手段と、
受信した全てのパケットを前記第１の識別子に基づいて分類し、各第１のフローに関して、前記第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行う手段と
を有することを特徴とする。【００３５】
上記課題を解決する第２２の発明は、上記第２１の発明において、ノード間は一つの通信経路で結ばれ、第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００３６】
上記課題を解決する第２３の発明は、上記第２１の発明において、パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択する手段を有することを特徴とする。【００３７】
上記課題を解決する第２４の発明は、上記第２３の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００３８】
上記課題を解決する第２５の発明は、上記第２３の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００３９】
上記課題を解決する第２６の発明は、上記第２１から第２３のいずれかの発明において、ノードの送信部は他の通信ノードの送信するパケットを転送する送信側転送ノードであり、ノードの受信部は他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする。【００４０】
上記課題を解決する第２７の発明は、上記第２６の発明において、ノード間は一つの通信経路で結ばれ、第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００４１】
上記課題を解決する第２８の発明は、上記第２６の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００４２】
上記課題を解決する第２９の発明は、上記第２６の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００４３】
上記課題を解決する第３０の発明は、上記第２３の発明において、前記通信経路を選択する手段は、第３の基準として、ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うことを特徴とする。【００４４】
上記課題を解決する第３１の発明は、上記第３０の発明において、前記経路状態情報は、経路の遅延を含むことを特徴とする。【００４５】
上記課題を解決する第３２の発明は、上記第３１の発明において、前記経路状態情報は、経路の通信速度を含むことを特徴とする。【００４６】
上記課題を解決する第３３の発明は、上記第３０から第３２のいずれかの発明において、前記経路状態情報は、経路の負荷を含むことを特徴とする。【００４７】
上記課題を解決する第３４の発明は、上記第３０から第３３のいずれかの発明において、前記通信経路を選択する手段は、経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えることを特徴とする。【００４８】
上記課題を解決する第３５の発明は、上記第３０から第３４のいずれかの発明において、前記通信経路を選択する手段は、各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄することを特徴とする。【００４９】
上記課題を解決する第３６の発明は、上記第３０から第３５のいずれかの発明において、前記通信経路を選択する手段は、パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択することを特徴とする。【００５０】
上記課題を解決する第３７の発明は、上記第３０から第３６のいずれかの発明において、前記通信経路を選択する手段は、パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択することを特徴とする。【００５１】
上記課題を解決する第３８の発明は、上記第３０から第３７のいずれかの発明において、前記通信経路を選択する手段は、各経路につき、推測される現在の経路状態に応じてデータの送信を中断することを特徴とする。【００５２】
上記課題を解決する第３９の発明は、上記第３８の発明において、前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする。【００５３】
上記課題を解決する第４０の発明は、上記第３０から第３９のいずれかの発明において、前記通信経路を選択する手段は、経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うことを特徴とする。【００５４】
上記課題を解決する第４１の発明は、パケットの再送制御と順序制御とを独立に行うノードの制御プログラムであって、
前記ノードがコンピュータであり、
前記制御プログラムは前記コンピュータを、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、送信するパケットに付加して送信する手段と、
パケットを受信したノードから再送を要求されたパケットを、前記第２の識別子及び第２のシーケンス番号から特定し、そのパケットを再送する手段と、
受信した全てのパケットを前記第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、その第２の識別子と第２のシーケンス番号とを、パケットに送信したノードに対して送信して再送を要求する手段と、
受信した全てのパケットを前記第１の識別子に基づいて分類し、各第１のフローに関して、前記第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行う手段と
して機能させることを特徴とする。
【００５５】
上記課題を解決する第４２の発明は、上記第４１の発明において、ノード間は一つの通信経路で結ばれ、第２のフロー群は単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００５６】
上記課題を解決する第４３の発明は、上記第４１の発明において、前記制御プログラムは前記ノードを、パケットを送信する通信経路が複数ある場合、パケット送信のスケジュールに関する第３の基準に基づいて、パケットを送信する通信経路を選択する手段として更に機能させることを特徴とする。【００５７】
上記課題を解決する第４４の発明は、上記第４３の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００５８】
上記課題を解決する第４５の発明は、上記第４３の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００５９】
上記課題を解決する第４６の発明は、上記第４１から第４３のいずれかの発明において、ノードの送信側は他の通信ノードの送信するパケットを転送する送信側転送ノードであり、ノードの受信側は他の通信ノードの受信するパケットを転送する受信側転送ノードであることを特徴とする。【００６０】
上記課題を解決する第４７の発明は、上記第４６の発明において、ノード間は一つの通信経路で結ばれ、第２のフロー群は、単一のフローで構成され、単一の通信経路を利用してパケットを送信することを特徴とする。【００６１】
上記課題を解決する第４８の発明は、上記第４６の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路に対応して一意のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００６２】
上記課題を解決する第４９の発明は、上記第４６の発明において、ノード間は複数の通信経路で結ばれ、第２の基準として、送信するパケットの通過する通信経路よりも少ない数のフローに分類し、第３の基準として、再送時に初回送信時とは独立に通信経路を選択することを特徴とする。【００６３】
上記課題を解決する第５０の発明は、上記第４３の発明において、制御プログラムは、前記通信経路を選択する手段を、ノードにおいて入力されるパケットごとに、選択可能な各経路の経路状態情報と、前記経路状態情報が有効となる時刻又は送信済みパケットの識別情報と、前記経路状態情報が有効となる時刻以降の送信履歴又は送信済みパケットの識別情報で特定されるパケットの送信以降の送信履歴とに基づいて、経路の選択または選択優先度を行うように機能させることを特徴とする。【００６４】
上記課題を解決する第５１の発明は、上記第５０の発明において、前記経路状態情報は、経路の遅延を含むことを特徴とする。【００６５】
上記課題を解決する第５２の発明は、上記第５０又は第５１の発明において、前記経路状態情報は、経路の通信速度を含むことを特徴とする。【００６６】
上記課題を解決する第５３の発明は、上記第５０から第５２のいずれかの発明において、前記経路状態情報は、経路の負荷を含むことを特徴とする。【００６７】
上記課題を解決する第５４の発明は、上記第５０から第５３のいずれかの発明において、制御プログラムは、前記通信経路を選択する手段を、経路の選択又は選択優先度の更新に際し、各経路の経路状態情報が更新されると、更新以前に送信されたパケットに関する送信コスト計算結果に修正を加えるように機能させることを特徴とする。【００６８】
上記課題を解決する第５５の発明は、上記第５４の発明において、制御プログラムは、前記通信経路を選択する手段を、各経路の送信コスト計算結果の修正に際し、最新の経路状態情報が有効となる最初の送信済パケット以前の履歴を破棄するように機能させることを特徴とする。【００６９】
上記課題を解決する第５６の発明は、上記第５０から第５５のいずれかの発明において、制御プログラムは、前記通信経路を選択する手段を、パケットを送信する経路として、受信側ノードでの受信完了時刻の推定値が最も早い経路を選択するように機能させることを特徴とする。【００７０】
上記課題を解決する第５７の発明は、上記第５０から第５６のいずれかの発明において、制御プログラムは、前記通信経路を選択する手段を、パケットを送信する経路として、受信側ノードで特定時刻までに受信完了できるデータ量の推定値が最大の経路を選択するように機能させることを特徴とする。
【００７１】
上記課題を解決する第５８の発明は、上記第５０から第５７のいずれかの発明において、制御プログラムは、前記通信経路を選択する手段を、各経路につき、推測される現在の経路状態に応じてデータの送信を中断するように機能させることを特徴とする。
【００７２】
上記課題を解決する第５９の発明は、上記第５８のいずれかの発明において、前記データ送信中断の基準が、推定受信完了時刻が特定の値以上であることを特徴とする。【００７３】
上記課題を解決する第６０の発明は、上記第５０から第５９のいずれかの発明において、制御プログラムは、前記通信経路を選択する手段を、経路選択又は送信中断の判断を、送信データの属性ごとに異なるポリシーにより行うように機能させることを特徴とする。【００７４】
上記課題を解決する第６１の発明は、通信方法であって、送信パケットに、順序制御のための情報とは別に、送信フローを識別する識別子と、前記送信フロー内におけるシーケンス番号とを付与し、受信側で前記識別子と前記シーケンス番号とに基づいて、送信フローごとに再送制御を行うことを特徴とする。【００７５】
上記課題を解決する第６２の発明は、通信方法であって、送信パケットに、順序制御のための情報とは別に、送信フローを識別する識別子と、前記送信フロー内におけるシーケンス番号とを付与し、受信側で前記識別子と前記シーケンス番号とに基づいて、送信フローごとにパケットの損失を検出することを特徴とする。【００７６】
上記課題を解決する第６３の発明は、ノードであって、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、パケットに付加して送信する手段と、
前記第２の識別子と前記第２のシーケンス番号とに基づいて、送信フローごとに検出された損失パケットを再送する手段とを有することを特徴とする。【００７７】
上記課題を解決する第６４の発明は、ノードの制御プログラムであって、
前記ノードがコンピュータであり、
前記制御プログラムは前記コンピュータを、
順序制御に関する第１の基準に基づいた第１のフロー群の各フローに一意に割り当てられた第１の識別子と、前記第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、再送制御に関する第２の基準に基づいた第２のフロー群の各フローに一意に割り当てられた第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、パケットに付加して送信する手段と、
前記第２の識別子と前記第２のシーケンス番号とに基づいて、送信フローごとに検出された損失パケットを再送する手段と
して機能させることを特徴とする。
【００７８】
本発明は、送信するパケットに、順序制御の識別子とは別に再送制御の識別子を付与し、順序制御は順序制御の識別子に基づいて行い、パケット損失の検出及び再生制御は再送制御の識別子に基づいて行う。再送制御の為の識別子は再送のフロー毎に識別子を設け、更に、そのフロー内で一意にパケットを特定できるシーケンス番号のような識別情報を付与する。通常、再送のフローと、送受信される経路とは一対一の関係にあるが、これに限る必要もない。【００７９】
上述した本発明の概要を図１５を用いて説明する。【００８０】
図１５では、送信側と受信側との間に一つの経路ａを介してパケットの送受信を行う例を示している。【００８１】
送信側の各フローのパケットには順序制御のフローを識別する第１の識別子と、各々のフロー内で一意の第１のシーケンス番号とが付与されている。例えば、フロー１の２番目のパケットならば、”1-2”である。【００８２】
更に、本発明では、この順序制御の為の識別子とは別に、再送制御のフローを識別する第２の識別子と、各々のフロー内で一意の第２のシーケンス番号とが付与されている。ここでは、再送フローと経路ａとが一対一の関係にあるので、再送フローを識別する識別子を”a”とし、この”a”で識別されるフロー（経路ａ）内で一意にパケットを特定できるようにシーケンス番号を付与する。従って、”a”で識別されるフロー（経路ａ）内における最初のパケットの再送制御の識別子は”a-1”となる。【００８３】
送信側では上述のような識別子をパケットに付して、各フローより順番にひとつずつのパケットを選択し、経路ａに送信する。すなわち、パケット（1-1, a-1）、パケット（2-1, a-2）、…、パケット（3-3, a-9）（順序制御用識別子，再送制御用識別子）の順番で送信されている。一方、送信したパケットは再送キューとして保持する。【００８４】
ここで、経路ａ上でパケット（2-2, a-5）の損失が発生したとする。【００８５】
受信側では、パケットが送信された順序で受信するので、パケット（1-1, a-1）、 パケット（2-1, a-2）、…、パケット（1-2, a-4）、パケット（3-2, a-6）、…、パケット（3-3, a-9）の順番でパケットを受信することになる。【００８６】
ここで、本発明は、パケット損失の検出及び再送制御について、再送制御用識別子に基づいて行う。本例では、経路ａから受信したパケットの再送制御用識別子を確認していくと、…、”a-4”、”a-6”、…、”a-9”であるので、パケット（3-2, a-6）を受信した時点で”a-5”が欠落していることが解る。従って、”a-5”の再送制御用識別子を持つパケット（2-2, a-5）が損失していることが解り、このパケット（2-2, a-5）の再送要求を送信側に行う。送信側では、再送制御用識別子”a-5” を持つパケットの再送要求を受けて、再送キューに保持している再送制御用識別子”a-5” を持つパケットを再送する。【００８７】
一方、順序制御は、上述したパケット損失の検出及び再送制御とは独立に順序制御用識別子に基づいて行い、パケット損失に対する再送要求はしない。【００８８】
このように、本発明ではパケット（3-2, a-6）を受信した時点で、パケット（2-2, a-5）の損失を検出することができ、従来技術と比較して早期にパケット損失の検出を行うことができ、更に、再送制御も独立に行うので、パケット損失に伴う順序制御の遅滞を防止することができる。【００８９】
尚、再送制御のパケット損失の検出であるが、上述のようにパケット損失の検出を受信側で行う場合だけでなく、例えば、受信側では到着済みのパケットの情報を送信側に送信し、この情報に基づいて送信側でパケット損失を検出するようにしても良い。
【発明の効果】
【００９０】
本発明は、パケット通信において、順序制御と再送制御とを独立に行い、パケット損失を最も早期に検出可能な単位に対して再送IDを割り当てることにより、従来の順序制御に付随してフロー毎に行う再送制御に比較して早期のパケット損失の検出が可能となる。【００９１】
また、本発明によれば、フロー毎の順序制御においても、あるフローのパケットの損失による他のフローのパケットの無駄な待ち時間が発生せず、転送されるという効果を奏する。【００９２】
また、本発明は、送信に利用する経路と再送制御は独立であるため、ある経路が通信不能となった場合にもシステム全体として問題は発生しない。
【図面の簡単な説明】
【００９３】
【図１】図１は送受信ノード間経路が1本の場合の通信ネットワーク構成を示す図である。
【図２】図２は送信ノード、又は受信ノードの構成を示す図である。
【図３】図３はパケットの構成を示す図である。
【図４】図４第１の実施例における記憶部の保持する情報を示す図である。
【図５】図５は送受信ノード間経路がＭ本の場合の通信ネットワーク構成を示す図である。
【図６】図６は送信ノード、又は受信ノードの構成を示す図である。
【図７】図７は第２の実施例における記憶部の保持する情報を示す図である。
【図８】図８再送ID同一通信インタフェース・グループ決定アルゴリズムのフローチャートである。
【図９】図９は第３の実施例における記憶部の保持する情報を示す図である。
【図１０】図１０は送受信側転送ノード間経路がＭ本の場合の通信ネットワーク構成を示す図である。
【図１１】図１１はスケジューラの動作例１における送信側ノードおよび受信側ノードでのパケット処理タイミングを示す図である。
【図１２】図１２はスケジューラの動作例１におけるスケジューリング部の動作フローチャートである。
【図１３】図１３はスケジューラの動作例２における送信側ノードおよび受信側ノードでのパケット処理タイミングを示す図である。
【図１４】図１４はスケジューラの動作例２におけるスケジューリング部の動作フローチャートである。
【図１５】図１５は本発明を説明する為の図である。
【図１６】図１６は本発明の実施例１の具体的な動作を説明する為の図である。
【図１７】図１７は本発明の実施例１の具体的な動作を説明する為の図である。
【図１８】図１８はスケジューラの動作例１における送信側ノードおよび受信側ノードでのパケット処理タイミングの具体例を示した図である。
【図１９】図１９は従来技術を説明する為の図である。
【符号の説明】
【００９４】
１０１            送信ノード
１０２            受信ノード
１１０            経路
２０１            ソケット
２０２            入出力部
２１１，２２２    フロー識別部
２１２，２２４    フロー毎キュー
２１３            スケジューラ
２１４            再送制御部
２１５            再送キュー
２１６            記憶部
２２１            再送ID順序チェック部
２２３            フロー順序チェック部
３０１            送信ノード
３０２            受信ノード
３１２−１〜Ｍ    経路
４０１            ソケット
４０２−１〜Ｍ    入出力部
４１１，４２２    フロー識別部
４１２，４２４    フロー毎キュー
４１３            スケジューラ
４１４            再送制御部
４１５            再送キュー
４１６            記憶部
４２１            再送ID順序チェック部
４２３            フロー順序チェック部
５０１−１〜Ｌ    送信ノード
５０２            送信側転送ノード
５０３            受信側転送ノード
５０４−１〜Ｎ    受信ノード
５１１−１〜Ｌ    経路
５１２−１〜Ｍ    経路
５１３−１〜Ｎ    経路
６００−１，２，３      データパケット
【発明を実施するための最良の形態】
【００９５】
本発明は、パケット通信において、順序制御と再送制御とを独立に行いことを特徴とする。【００９６】
その為、送信ノードは、順序制御に関する第１の基準に基づいた１以上のフローを有する第１のフロー群と、再送制御に関する第２の基準に基づいた１以上のフローを有する第２のフロー群とを設け、第１のフロー群に属する各々のフローに一意の第１の識別子を割り当て、前記第２のフロー群に属する各々のフローに一意の第２の識別子を割り当ている。そして、送信するパケットを、第１の基準に基づいて第１のフロー群に属する１以上のフローに分類し、かつ、第２の基準に基づいて第２のフロー群に属する１以上のフローに分類し、第１の識別子と、第１のフロー群に属する各々のフロー内で一意の第１のシーケンス番号と、前記第２の識別子と、前記第２のフロー群に属する各々のフロー内で一意の第２のシーケンス番号とを、送信するパケットに付与して送信する。【００９７】
受信ノードでは、受信した全てのパケットを第２の識別子に基づいて分類し、各第２のフローに関して、受信していない第２のシーケンス番号のパケットをチェックし、受信していない第２のシーケンス番号に対応したパケットの再送を要求する。そして、送信ノードは、受信ノードからの要求された第２のフローの第２のシーケンス番号に対応するパケットを再送することにより、再送の制御を行う。【００９８】
また、パケットの順序制御においては、受信ノードが、受信した全てのパケットを第１の識別子に基づいて分類し、各第１のフローに関して、第１のシーケンス番号に基づいてパケットを順番に並べ、順番になっているパケットから受信処理を行うことにより行われる。【００９９】
以下、具体的な実施例について説明する。
【実施例１】
【０１００】
本発明の実施例１を説明する。【０１０１】
実施例１では、送信ノードと受信ノードとがひとつの経路で結ばれている場合について説明する。【０１０２】
図１を参照すると、本発明の実施例１は、送信ノード１０１と、受信ノード１０２と、ノード間を結ぶ経路１１０とからなる。経路１１０は、インターネットなどのパケット通信網である。尚、通信は送信ノード１０１から受信ノード１０２に対するものと、受信ノード１０２から送信ノード１０１に対するものとどちらも考えられる。説明の便宜上、ノードには送信・受信と名前をつけているが、機能的には同一である。【０１０３】
次に、送信ノード１０１の構成を説明する。【０１０４】
図２は送信ノード１０１の構成を示す図である。【０１０５】
図２を参照すると、アプリケーションに対するAPI(Application Process Interface)であるソケット２０１と、入出力部２０２と、使用するポート番号と宛先のアドレス・ポート番号とからフローを識別してそれぞれのキューに振り分けるフロー識別部２１１と、フローIDからフローを識別子それぞれのキューに振り分けるフロー識別部２２２と、識別されたフロー毎にパケットを保持するフロー毎キュー２１２，２２４と、フロー毎キュー２１２の中から送信するパケットを選択して送信するスケジューラ２１３と、パケット送信時にパケットに再送IDをつけ、再送ID毎に再送キュー２１５に保持させて再送に備える再送制御部２１４と、再送ID毎にパケットを保持する再送キュー２１５と、経路ごとの遅延や、遅延分散などの情報、フロー毎や再送ID毎のシーケンス番号情報を記録しておく記憶部２１６と、パケット受信時にパケットの再送IDをチェックして順序どおりにパケットが到着したかをチェックする再送ID順序チェック部２２１と、フロー毎キュー２２４のうち順序がそろっているパケットについては転送を行うためにフロー毎キュー２２４をチェックするフロー順序チェック部２２３とからなる。【０１０６】
尚、受信ノード１０２の構成は、送信ノード１０１と同一である。【０１０７】
以下に、送信ノード１０１から受信ノード１０２にパケットを送信する場合の動作例を説明する。【０１０８】
送信ノードは、任意の数のアプリケーションによって、任意の数のTCPやUDPを利用した通信を発生させる。ここで、第１の基準とはパケットの順序制御に関する基準であり、TCPやUDPの各通信が第１のフローに相当する。【０１０９】
アプリケーションからソケット２０１がパケットを受信すると、フロー識別部２１１にパケットが渡され、フロー識別部２１１は自ノードのポート番号とパケットの宛先のアドレス・ポート番号からフローを識別する。識別されたパケットは、フロー毎キュー２１２にフロー毎に格納される。【０１１０】
図２では、７０本のフロー毎のキューを持つ例を示しているが、この数に限定されることなく、多くても少なくてもかまわない。フロー毎キュー２１２に格納されたパケットは、スケジューラ２１３と再送制御部２１４によってパケットロスの際の再送に必要な処理を施した後、入出力端子２０２を介して受信ノード１０２に向けて送信されるとともに、パケットロスに対処するための再送キュー２１５にも保持される。【０１１１】
次に、スケジューラ２１３と再送制御部２１４との動作を説明する。【０１１２】
スケジューラ２１３は、送信するパケットの送信タイミングを定め、送信タイミングでフロー毎キュー２１２の中から受信ノード１０２にパケットを送信するキューを決定し、該当するキューからパケットを取り出す。取り出されたパケットは、再送に必要な処理を施すため、再送制御部２１４に渡される。【０１１３】
再送制御部２１４は、上述したパケット送信に関する基準である第１の基準とは異なる第２の基準で再送制御を行う。ここで、第２の基準とはパケットの再送に関する基準である。具体的には、再送制御部２１４は、記憶部２１６を参照して送信パケットに付加する再送IDと再送シーケンス番号とを決定し、再送キュー２１５の所定のキューにパケットを格納する。第二のフローは、この再送IDを単位としたパケット群に相当する。尚、ここでは、第二のフローと経路とが一対一に対応している。【０１１４】
再送制御部２１４は、決定した再送IDと再送シーケンス番号とをスケジューラ２１３に通知し、スケジューラ２１３は通知された再送ID及び再送シーケンス番号（再送制御の為の第２の識別子、第２のシーケンス番号）と、記憶部２１６から取得したフロー毎に一意に割り当てられるフローID及びフローでユニークなフローシーケンス番号（順序制御の為の第１の識別子、第１のシーケンス番号）とを独自ヘッダとして付加し、入出力部２０２を利用して受信ノード１０１に対してパケットを送信する。【０１１５】
以上の動作を行うために、記憶部２１６は、例えば図４に示されるような情報を保持している。図４では、送信用の情報として、順序制御のためのフローID（第１の識別子）及び転送済みパケットの最大フローシーケンス番号（第１のシーケンス番号）と、再送制御のための再送ID（第２の識別子）及び到着済みパケット再送シーケンス番号（第２のシーケンス番号）とが記憶されている様子を示している。例えば、フローID“１”では転送済みパケットの最大フローシーケンス番号が“２５”である。また、再送ID“１”では到着済みパケット再送シーケンス番号が“１から２００と、２０３”であることを示している。尚、到着済みパケット再送シーケンス番号において、記載されていない番号“２０１、２０２”は到着が確認されていないパケットのシーケンス番号である。【０１１６】
以上がスケジューラ２１３と再送制御部２１４の動作である。このときの送信パケットのフォーマットは、例えば図３のようになる。【０１１７】
続いて、受信ノード１０２について説明する。以下の説明では、受信ノード１０２が、送信ノード１０１の入出力部２０２から送信されたパケットを入出力部２０２を介して受信した場合について説明する。尚、本発明では、パケット損失が発生したと判断するノードはデータ受信側・送信側のどちらの場合でも適用可能であるが、ここではデータ受信側は到達確認を伝えるACKのみを送信側に送信し、送信側が任意の基準でパケット損失が発生したと判断する場合を示す。また、本発明では、送信ノード１０１、受信ノード１０２は同一の構成となるため、図２を用いて、受信ノード１０２の動作例を説明する。【０１１８】
入出力部２０２から受信されたパケットは、再送ID順序チェック部２２１に入力される。【０１１９】
再送ID順序チェック部２２１は、データパケットであることを確認すると、パケットから再送IDと再送シーケンス番号を取得し、受信したパケットの再送IDと、受信したパケットの再送シーケンス番号とからなるACK情報をスケジューラ２１３に渡す。【０１２０】
ACK情報を渡されたスケジューラ２１３は、送信ノード１０１にパケットを受信した事を通知するため、渡されたACK情報を含むACKパケットを入出力部２０２を経由して送信する。ACKパケットを送信するタイミングに、他の送信データパケットが存在する場合には、独立のACKパケットを生成せずにデータパケットのヘッダ部分に情報を付加することもできる。【０１２１】
また、再送ID順序チェック部２２１は、受信したパケットの再送IDの再送シーケンス番号情報を記憶部２１６に通知し、記憶部２１６に記憶されている再送シーケンス番号情報を更新して再送制御処理は完了する。再送制御処理の完了後、再送ID順序チェック部２２１は、受信したパケットをフロー識別部２２２に供給し、順序制御処理が行われる。【０１２２】
順序制御処理では、フロー識別部２２２は再送ID順序チェック部２２１から供給されたパケットからフローIDを取得し、フローIDに従いフロー毎キュー２２４の該当キューにパケットを送る。図２では、１００本の異なるフローに対するキューを持つ構成例を示している。【０１２３】
また、同時に、新規にパケットを受信したことをフローIDと共にフロー順序チェック部２２３に通知する。フロー順序チェック部２２３は、記憶部２１６から該当するフローIDについて送信済みの最大フローシーケンス番号を取得する。【０１２４】
次に、フロー順序チェック部２２３は、入力されたフローIDに該当するキューをチェックする。チェックの結果、転送済み最大フローシーケンス番号に連続するパケットが存在するならば、この連続するパケットを取り出し、図３に示されるフレームフォーマット中のフローID、フローシーケンス番号、再送ID、再送シーケンス番号を取り除き、ソケット部２０１を経由しアプリケーションに渡す。一方、転送済み最大フローシーケンス番号に連続するフローシーケンス番号のパケットがなければ、フロー順序チェック部２２３は動作を終了する。【０１２５】
以降の動作は、上述した送信ノードの動作と同様である。【０１２６】
続いて、受信ノードからACK情報を受信した送信ノードについて説明する。【０１２７】
送信ノード１０１は、受信ノード１０２からのACK情報を含むパケットを入出力部２０２から受信すると、再送ID順序チェック部２２１においてACK情報を取り出す。次に、ACK情報から受信ノード102が受信した再送IDと再送シーケンス番号を取得し、この再送IDと再送シーケンス番号とを、到着確認済みのパケットとして記憶部２１６に記憶するとともに、その再送IDと再送シーケンス番号とに該当するパケットを再送ID毎キュー２１５から削除する。【０１２８】
また、送信ノード１０１は、定期的に、記憶されている到着済みの再送IDと再送シーケンス番号をチェックし、欠けている再送シーケンス番号を検出する。そして、欠けている再送ID及び再送シーケンス番号に該当するパケットは損失したとみなして、欠けている再送ID及び再送シーケンス番号に対応するパケットを再送IDキュー２１５から取り出し、スケジューラ２１３にパケットを渡すと共に再送が必要である事を通知する。スケジューラ２１３は渡されたパケット再送を行う。尚、このとき、再送するパケットには、先に送ったパケットに付された再送ID及び再送シーケンス番号と同一の再送ID及び再送シーケンス番号を付して再送する。【０１２９】
次に、上述した動作の具体例を図面を参照して説明する。【０１３０】
図１６は送信ノード１０１と受信ノード１０２との間の具体的な動作を説明する為の図である。尚、以下の説明において、具体的な動作例を示す為、図２に示される構成と、図４に示した送信用情報とを例にして説明する。【０１３１】
まず、送信側ノード１０１のスケジューラ２１３により、フロー毎キュー２１２の７０本のフローから一つずつパケットが取り出され、再送制御部２１４により、記憶部２１６が参照されて送信パケットに付加する再送IDと再送シーケンス番号とが付される。例えば、再送IDが”１”、シーケンス番号”200”であるならば、”1-200”というように付される。そして、この再送IDと再送シーケンス番号が付されたパケットは、入出力端子２０２を介して受信ノード１０２に向けて送信されるとともに、パケットロスに対処するための再送キュー２１５にも保持される。【０１３２】
図１６の例では、一つのパケットにおいて前半につけられたものがフローID、フローシーケンス番号であり、後半につけられたものが再送ID及び再送シーケンス番号である。図１６では、パケット（11-54, 1-200）、パケット（12-87, 1-201）、パケット（13-7, 1-202）、パケット（14-24, 1-203）…というように経路上を送信されている。尚、パケット（m-n, x-y）のうち、mはフローID、nはフローシーケンス番号、xは再送ID、yは再送シーケンス番号を示している。【０１３３】
このような状態で、パケット（12-87, 1-201）、パケット（13-7, 1-202）が損失した場合を考える。【０１３４】
受信ノード側では、パケット（11-54, 1-200）、パケット（14-24, 1-203）…が入出力部２０２から受信され、再送ID順序チェック部２２１に入力される。再送ID順序チェック部２２１は、データパケットであることを確認すると、パケットから”1-200”、”1-203”というように再送IDと再送シーケンス番号を取得し、この受信したパケットの再送IDと再送シーケンス番号とからなるACK情報をスケジューラ２１３に渡す。【０１３５】
ACK情報を渡されたスケジューラ２１３は、送信ノード１０１にパケットを受信した事を通知するため、渡されたACK情報を含むACKパケットを入出力部２０２を経由して送信する。【０１３６】
また、再送ID順序チェック部２２１は、受信したパケットの再送IDの再送シーケンス番号を記憶部２１６に通知し、記憶部２１６に記憶されている受信済みパケット再送シーケンス番号を更新して再送制御処理は完了する。再送制御処理の完了後、再送ID順序チェック部２２１は、受信したパケットをフロー識別部２２２に供給し、順序制御処理が行われる。【０１３７】
順序制御処理では、フロー識別部２２２は再送ID順序チェック部２２１から供給されたパケットから、フローID”11”、…、フローID”14”、…、フローID”1”を取得し、フローIDに従いフロー毎キュー２２４の該当キューにパケットを送る。図１６では、受信したパケット（14-24）をフロー１４に、パケット（11-54）をフロー１１に、パケット（1-23）をフロー１に送信した様子を示している。【０１３８】
一方、送信ノード１０１では、受信ノード１０２からのACK情報を含むパケットを入出力部２０２から受信すると、再送ID順序チェック部２２１において、ACK情報を取り出す。【０１３９】
次に、ACK情報から受信ノード102が受信した再送IDと再送シーケンス番号を取得し、この再送IDと再送シーケンス番号とを、到着確認済みのパケットとして記憶部２１６に記憶するとともに、その再送IDと再送シーケンス番号とに該当するパケットを再送ID毎キュー２１５から削除する。【０１４０】
例えば、”1-200”、”1-203”というACK情報を取得した場合、送信用情報の再送ＩＤ”1”における到着済みパケット再送シーケンス番号に”200”と”203”とを加えるとともに、再送ID毎キュー２１５から再送シーケンス番号が”200”、”203”のパケットを削除する。【０１４１】
また、再送制御部２１４は、一定の周期毎に到着済みの再送IDと再送シーケンス番号をチェックし、欠けている再送シーケンス番号を検出する。図１６の例では、再送シーケンス番号”201”、”202”が欠落している。そこで、欠けている再送シーケンス番号”201”、”202”に該当するパケットは損失したとみなして、再送シーケンス番号”201”、”202”に対応するパケットを再送IDキュー２１５から取り出し、スケジューラ２１３にパケットを渡すと共に再送が必要である事を通知する。スケジューラ２１３は渡されたパケット再送を行う。尚、このとき、再送するパケットには、先に送ったパケットに付された再送ID及び再送シーケンス番号、すなわち、”1-201”、”1-202”を付して再送する。【０１４２】
以上の動作により、パケット損失を早期に発見できるため、受信ノード１０２と送信ノード１０１との間でデータ送受信をより短い時間で行う事が可能となる。【０１４３】
次に、受信側ノード１０２でパケット損失を検出する場合の例について述べる。【０１４４】
図１７は受信側ノード１０２でパケット損失を検出する場合を説明する為の図である。尚、受信側ノード１０２でパケット損失を検出する為に用いられる情報として、図４で示した受信用情報を用いる。また、送信側ノードから受信ノードまで到達するまでの動作を上述の動作と同様であるので、具体的な説明は省略する。【０１４５】
図１７において、経路上で、パケット（11-54, 1-100）、パケット（12-87, 1-101）、パケット（13-7, 1-102）、パケット（14-24, 1-103）…というように経路上を送信されている。ここで、パケット（12-87, 1-101）が損失した場合を考える。【０１４６】
受信ノード側では、パケット（11-54, 1-100）、パケット（13-7, 1-102）、パケット（14-24, 1-103）…が入出力部２０２から受信され、再送ID順序チェック部２２１に入力される。再送ID順序チェック部２２１は、データパケットであることを確認すると、パケットから”1-100”、”1-102”というように再送IDと再送シーケンス番号を取得し、この再送IDと再送シーケンス番号と、記憶部２１６の受信用情報に記憶されている再送ID及び受信済みパケット再送シーケンス番号とを比較する事により，受信が期待されるパケットを受信したかどうかを判断する。【０１４７】
判断の結果、期待されるパケットであった場合には、受信したパケットの再送IDと、受信したパケットの再送シーケンス番号とからなるACK情報をスケジューラ２１３に渡す。一方、期待されるパケットでなかった場合には、受信したパケットの再送IDと、受信したパケットの再送IDで最初から連続して受信したパケットのうち最大の再送シーケンス番号とからなるACK情報をスケジューラ２１３に渡す。【０１４８】
ここでは、受信したパケット（11-54, 1-100）は期待されるパケットであるので、受信したパケットの再送IDと、受信したパケットの再送シーケンス番号とからなるACK情報、すなわち”1-100”をスケジューラ２１３に渡す。そして、受信したパケットの再送ID、再送シーケンス番号情報である”1-100”を記憶部２１６に通知し、記憶部２１６に記憶されている再送シーケンス番号情報を更新して再送制御処理は完了する。【０１４９】
続いて、受信したパケット（13-7, 1-102）は、本来ならば再送シーケンス番号が101のパケット（12-87, 1-101）である。そこで、受信したパケットの再送IDで最初から連続して受信したパケットのうち最大の再送シーケンス番号、すなわち、”1-100”をスケジューラ２１３に渡す。そして、受信したパケットの再送ID、再送シーケンス番号情報である”1-102”を記憶部２１６に通知し、記憶部２１６に記憶されている再送シーケンス番号情報を更新して再送制御処理は完了する。【０１５０】
次に、受信したパケット（1-23, 1-103）は期待されるパケットであるので、受信したパケットの再送IDと、受信したパケットの再送シーケンス番号とからなるACK情報、すなわち”1-103”をスケジューラ２１３に渡す。そして、受信したパケットの再送ID、再送シーケンス番号情報である”1-103”を記憶部２１６に通知し、記憶部２１６に記憶されている再送シーケンス番号情報を更新して再送制御処理は完了する。【０１５１】
ACK情報を渡されたスケジューラ２１３は、送信ノード１０１にパケットを受信した事を通知するため、渡されたACK情報を含むACKパケットを入出力部２０２を経由して送信する。【０１５２】
再送制御処理の完了後の順序制御処理については、上述と同じ動作であるので、説明を省略する。【０１５３】
続いて、受信ノードからACK情報を受信した送信ノードについて説明する。【０１５４】
送信ノード１０１は、受信ノード１０２からのACK情報を含むパケットを入出力部２０２から受信すると、再送ID順序チェック部２２１においてACK情報を取り出す。次に、ACK情報から受信ノード102が受信した再送IDと再送シーケンス番号を取得し、この再送IDと再送シーケンス番号とを、到着確認済みのパケットとして記憶部２１６に記憶するとともに、その再送IDと再送シーケンス番号とに該当するパケットを再送ID毎キュー２１５から削除する。【０１５５】
ここでは、ACK情報の情報として、まず、”1-100”、”1-100”、”1-103”を受信する。まず、”1-100”については、到着確認済みのパケットとして記憶部２１６に記憶するとともに、その再送IDと再送シーケンス番号とに該当するパケットを再送ID毎キュー２１５から削除する。続いて、同じ内容の”1-100”を受信した場合には、その再送シーケンス番号の次の番号である”1-101”に対応するパケットが損失したとみなして再送を行う。すなわち、２回連続して同じ番号の再送シーケンス番号がきた場合には、その再送シーケンス番号の次の番号に対応するパケットが損失したとみなして再送を行うのである。尚、再送するパケットには、先に送ったパケットに付された再送ID及び再送シーケンス番号と同一の再送ID及び再送シーケンス番号を付して再送する。【０１５６】
以上で、送信側でのパケット損失の検出と受信側でのパケット損失の検出との例を説明したが、本発明はこの例に限られない。例えば、他の例としては、受信ノードが、連続した再送シーケンス番号でパケットを受信しなかった場合、その抜けている再送シーケンス番号だけを再送要求情報として送信ノードに送信し、この抜けている再送シーケンス番号に対応するパケットを送信ノードが送信する方法も考えられる。
【実施例２】
【０１５７】
本発明の実施例２を説明する。【０１５８】
実施例２は、送信ノードと受信ノードとを結ぶ経路が複数ある場合について説明する。【０１５９】
図５は送信ノードと受信ノードとを結ぶ経路が複数ある場合の構成図である。【０１６０】
図５を参照すると、送信ノード３０１と、受信ノード３０２と、ノード間を結ぶＭ本の経路３１２−１〜３１２−Ｍからなる。経路３１２−１〜３１２−Ｍは、インターネットなどのパケット通信網である。Ｍ本の経路が複数存在する場合とは、送信ノード３０１と受信ノード３０２との両ノード、あるいはどちらか一方のノードが複数の通信インタフェースを保持する場合である。例えば、送信ノード３０１と受信ノード３０２とのうちどちらかがＭ本の通信インタフェースを持つ場合、あるいは送信ノード３０１と受信ノード３０２とがそれぞれＳ個、ｔ個の通信インタフェースを持ち、Ｍ＝ｓ×ｔとなる場合である。【０１６１】
但し、通信は送信ノード３０１から受信ノード３０２に対するものとするが、受信ノード３０２から送信ノード３０１に対しては、送達確認(ACK)メッセージが送信される。このように、本実施例では、送信ノード３０１から受信ノード３０２への通信を説明するが、一般に、双方向の通信を行うためには、送信ノード３０１と受信ノード３０２は同一機能をもつ必要がある。【０１６２】
次に、送信ノード３０１の構成を説明する。【０１６３】
図６を参照すると、アプリケーションに対するAPIであるソケット４０１と、入出力部４０２−１〜４０２−Ｍと、使用するポート番号と宛先のアドレス・ポート番号とからフローを識別しそれぞれのキューに振り分けるフロー識別部４１１と、フローIDからフローを識別子それぞれのキューに振り分けるフロー識別部４２２と、識別されたフロー毎にパケットを保持するフロー毎キュー４１２，４２４と、フロー毎キューの中から送信するパケットを選択して送信するスケジューラ４１３と、パケット送信時に再送IDをつけ再送キューに再送ID毎に保持し再送に備える再送制御部４１４と、再送ID毎にパケットを保持する再送キュー４１５と、経路ごとの遅延や遅延分散などの情報、フロー毎や再送ID毎のシーケンス番号情報を記録しておく記憶部４１６と、パケット受信時にパケットの再送IDをチェックして順序どおりにパケットが到着したかをチェックする再送ID順序チェック部４２１と、フロー毎キューのうち順序がそろっているパケットについては転送を行うためにフロー毎キューをチェックするフロー順序チェック部４２３とからなる。【０１６４】
尚、入出力部４０２−１〜４０２−Ｍは、経路３１２−１〜３１２−Ｍに対応した論理的なものであり、送信ノード３０１の持つ物理的な通信インタフェースの数はＭ本とは限らない。また、受信ノード３０２は、送信ノード３０１と同一である。【０１６５】
次に、上述の構成における実施例２の動作を説明する。【０１６６】
実施例２の動作は、実施例１の動作とほぼ同じであるが、経路が複数あることからスケジューラと再送制御部の処理が異なる。以下にその異なる部分の動作を説明する。【０１６７】
スケジューラ４１３は、送信するパケットの送信タイミングを定め、送信タイミングでフロー毎キュー４１２の中から受信ノード３０２にパケットを送信するキューを決定し、該当するキューからパケットを取り出す。また、スケジューラ４１３は、経路選択に関する第３の基準に基づき経路３１２−１〜３１２−Ｍのいずれの経路を利用するかを決定する。【０１６８】
スケジューラ４１３は、再送に必要な処理を施すために、利用する経路の情報と共に取り出したパケットを再送制御部４１４に渡す。再送制御部４１４は、記憶部４１６を参照して送信パケットに付加する再送IDと再送シーケンス番号を決定し、再送キュー４１５の所定のキューにパケットを格納する。送信パケットに対して再送IDを決定する記憶部４１６の情報は、たとえば図７の経路と再送IDのテーブル部分に示すものである。再送IDの数は入出力部の数であるＭ個に等しく、入出力部と１対１で対応している。第二のフローはこの再送IDを単位としたパケット群を指す。再送制御部４１４は決定した再送IDと再送シーケンス番号をスケジューラ４１３に通知し、スケジューラ４１３は通知された再送IDと再送シーケンス番号、記憶部４１６から取得したフロー毎に一意に割り当てられるフローIDとフローでユニークなフローシーケンス番号とを独自ヘッダとして付加し、先ほどの選択に従い入出力部４０２−１〜４０２−Ｍのいずれかを利用し受信ノード３０２に対してパケットを送信する。このときの送信パケットのフォーマットは、例えば図３のようになる。【０１６９】
パケット受信時の受信ノード３０２の動作は、ACK送信の際の動作のみが異なる。以下にその動作を説明する。【０１７０】
スケジューラ４１３は、再送IDと再送シーケンス番号を含むACK情報を送信ノード３０１に送信する。ACKパケットを送信するタイミングに、送信データパケットが存在する場合には、独立のACKパケットを生成せずにデータパケットのヘッダ部分に情報を付加することもできる。通信経路を選択する第三の基準に従い、適当なタイミングで入出力部４０２−１〜４０２−Ｍのいずれかを利用して、送信ノード３０１に対してパケットを送信する。第３の基準としては、例えば、各経路の負荷状況に基づき、負荷の最も少ない経路を選択するものがある。【０１７１】
ACKを受信した際の送信ノード３０１の動作もスケジューラ４１３の動作が異なる。以下に説明する。【０１７２】
スケジューラ４１３は渡されたパケットを任意のタイミングで入出力部４０２−１〜４０２−Ｍのいずれかから再送を行う。このとき、スケジューラ４１３は、第３の基準に基づき以前に同一パケットを送信した経路とは独立に送信経路を選択可能である。【０１７３】
以上の動作により、パケット損失を早期に発見できるため、受信ノード３０１と送信ノード３０２との間でデータ送受信をより短い時間で行う事が可能となる。【０１７４】
尚、図５、図６の構成では一つのフローに属する複数のパケットは、送信ノードのスケジューラ４１３により一般に異なる経路に振り分けられる。各経路の遅延やレートが独立に揺らぐ場合、スケジューラによる経路間遅延差の相殺には限界があり、特に安定性が低い無線リンクを含む場合に完全に経路間のジッターを相殺することは難しい。【０１７５】
従って、フローに注目したとき、受信ノードにおけるパケットの到着順序は送信ノードにおける送信順序を反映することが保証されない。例えばあるフローに属するパケットAを経路３１２−１より送信し、その後に同じフローに属し、パケットAより大きいシーケンス番号を有するパケットBを経路３１２−２より送信したとする。またこのとき経路Aの遅延がスケジューラの予想より大きく、受信ノードにおいてはAより先にBが受信されたとする。【０１７６】
このとき、受信ノードがもし、順序制御のフローごとのシーケンス番号に基づく損失の検出を行っていると、パケットBの受信時に、よりシーケンス番号の若いパケットAが受信されていないため受信ノードはパケットAの損失を検出する。ところが実際にはパケットAは、遅延の大きい経路３１２−１を通ってBの受信後に受信されるので損失ではなく、パケットAの損出検出は誤検出となる。【０１７７】
再送制御を順序制御のフローごとに行わず、経路ごとに行う本実施例においては、各経路の順序逆転が生じない限りは、再送に用いるシーケンス番号の受信ノードにおける不連続は必ずパケット損失を反映するため、上記に説明したような誤検出は回避される。また経路間のジッターによるフロー内の順序逆転に比べ各経路の順序逆転が生じる確率が低ければ、本発明による誤検出の低下が期待できる。
【実施例３】
【０１７８】
本発明の実施例３を説明する。【０１７９】
実施例３は、ノードの配置、ノードの機能構成は、すべ実施例２と同じであるが、送信ノードにおいて送信パケットに対して再送IDを決定する処理のみが異なるので以下に説明する。【０１８０】
実施例３では、経路と再送IDとが１対１に対応せず、自由に変更できる。通常、複数の経路を一つの再送IDにまとめた場合、その再送IDに属するそれぞれの経路の遅延や遅延分散によっては、受信ノードがパケットを受信する際のパケットの到着順序が著しく乱れる可能性がある。そのため、一つの再送IDに属するパケットの到着順序が正しくない確率が一定以下となるように、一つの再送IDに属する複数の経路を決定するアルゴリズムを説明する。【０１８１】
送信ノード３０１と受信ノード３０２との各経路３１２−１〜３１２−Ｍについて、片方向、または往復の遅延時間と遅延分散とを常に測定しており、任意のタイミングで経路と再送IDのマッピングを行う。タイミングは、例えば、一定時間間隔ごとや、経路情報が更新されたタイミングなどである。マッピングの方法は、例えば、図８のようなアルゴリズムによって経路３１２−１〜３１２−Ｍに再送IDをマッピングする。【０１８２】
図８を参照すると、現在時刻における経路３１２−１〜３１２−Ｍを遅延時間の大きい順に並べ替え、また一次的な変数i=1にセットする（ステップA００１）。次に、i==Mであるかどうかをチェックする（ステップA００２）。最初はi==Mでないので（ステップA００３）に進み、一時的な変数j=１にセットする。次に経路(i+j)の遅延と遅延分散、経路iの遅延分散を取得する（ステップA００４）。【０１８３】
送信側が到着時間を見計らって受信側で順序どおりにパケットを受信できるように送信した場合に、最初に到着すべき経路iのパケットが到着するまでに、経路(i+j)の任意の数のパケットが先に到着してしまう確率をある一定に抑えられるかどうかのチェックを行う（ステップA００５）。図８の例は、経路(i+j)の3個のパケットが経路iのパケットより先に到着してしまう確率が1.5%以下であることを条件としたものである。条件を満たしているならば、jをインクリメントし、i+j==Mであるかどうかチェックし、全ての経路について処理を完了したかチェックする（ステップA００６）。全ての経路についての処理がまだ完了していなければ（ステップA００４）に戻り、次に遅延の大きな経路についても同様のチェックを行う。【０１８４】
ステップA００６において、i+j==Mの場合には（ステップA００７）に進む。（ステップA００４）と（ステップA００５）を繰り返すうちに、（ステップA００５）の条件を満たせない経路が出現すると（ステップA００７）に進む。（ステップA００７）では、経路iから経路(i+j-1)を同一の再送IDに設定し、（ステップA００２）に戻る。【０１８５】
以上の処理を繰り返し、全ての経路についての再送IDを設定し終えると、つまりステップA００２においてi==Mとなると終了し、次回のマッピング処理が起動されるまでスリープする。【０１８６】
以上の処理によって、例えば図９のテーブルに示される経路と再送IDとをマッピングするテーブル部分が完成する。これに従い、スケジューラは再送IDを決定することになる。【０１８７】
また、他にフローと再送IDを固定的にマッピングする方法や、遅延や遅延分散などの情報に無関係に経路ごとに一つ再送IDをマッピングする方法なども考えられる。
【実施例４】
【０１８８】
上述した実施例１、実施例２及び実施例３では、End-to-Endの送受信ノード間の通信を仮定していたが、多数のEnd-to-End通信が必ず経由する二ノード間についても、本発明を適用することができる。【０１８９】
図１０を参照すると、任意の数の送信ノード５０１−１〜５０１−Ｌと、送信側転送ノード５０２と、受信側転送ノード５０３と、任意の数の受信ノード５０４−１〜５０４−Ｎからなり、次のようにリンクされている。各送信ノードは送信側転送ノードと、それぞれ経路５１１−１〜５１１−Ｌで結ばれている。送信側転送ノードと受信側転送ノードとは１以上の任意の数の経路５１２−１〜５１２−Ｍの複数経路で結ばれている。各受信ノードは受信側転送ノードと、それぞれ経路５１３−１〜５１３−Ｎで結ばれている。【０１９０】
例えば、送信側転送ノードと受信側転送ノード間の経路数Ｍが１の場合は、実施例１の形態と同様である。【０１９１】
また、送信側転送ノードと受信側転送ノード間の経路数Ｍが２以上の場合は、実施例２実施例３と同様である。【０１９２】
但し、上述の場合、それぞれ実施例１、実施例２、実施例３における送信ノードは送信側転送ノード、同様に受信ノードは受信側転送ノードとなる。また、送信側転送ノード内構成におけるソケットは、送信ノードから受信するパケットの入力部、受信側転送ノード内構成におけるソケットは受信ノードに送信するパケットの出力部となる。【０１９３】
また、この場合、第１のフローは送信ノード５０１−１〜５０１−Ｌと、受信ノード受信ノード５０４−１〜５０４−Ｎとの間の通信を送信元・宛先のアドレス・ポート番号で一意に決まるパケット群を指す。【０１９４】
以上の動作により、パケット損失を早期に発見できるため、送信ノード５０１−１〜５０１−Ｌと受信ノード５０４−１〜５０４−Ｎとの間でデータ送受信を、より短い時間で行う事が可能となる。
【実施例５】
【０１９５】
本発明の実施例５を説明する。【０１９６】
実施例５は、実施例２、実施例３、実施例４に示すスケジューラ２１３，４１３が、以下のような第３の基準に従う経路選択動作を行う場合である。この動作により、送信ノードと受信ノードとの間に複数の経路がある場合、受信ノードでは送信ノードが期待した順番通りにパケットを受信する確率が高くなるため、順序間違いに起因する再送頻度を減らすことができる。また、特に実施例３や、その応用である実施例４のように複数の経路でノード間が結ばれている構成に適用した場合には、より多くの通信経路を一つの再送単位として上記の再送制御を適用可能となるため通信性能向上が期待できる。【０１９７】
ここで、第３の基準とは、予測されたデータの到着時刻又は受信完了時刻に基づいて、最も適切な経路、例えば到着時刻が最も早いと予測される経路を選択するものである。【０１９８】
例えば、データ（パケット）送信時において、送信データ（パケット）の送信履歴を記憶する。この送信履歴には、送信データ（パケット）を識別する識別子や、送信開始時刻等を記述する。一方、受信側では、データ（パケット）が通る経路の状態情報（例えば、速度やパケット遅延）を送信側に送信する。この経路状態情報には、上述したデータ（パケット）の識別子のような、経路状態情報が適用される最新のデータ（パケット）を識別する情報を含める。送信側では、経路の状態情報を受信し、この経路状態に含まれているデータ（パケット）を識別する情報（例えば、識別子）により、この経路状態が有効となる送信済みのデータ（パケット）を、送信履歴から求める。そして、求めたデータ（パケット）以降のデータについて、受信した経路の状態を適用して受信完了時刻等を予測し、更に、この予測と受信した経路の状態情報とに基づいて、各経路におけるこれから送信しようとするデータの到着時刻又は受信完了時刻を予測する。【０１９９】
経路選択においては、予測されたデータの到着時刻又は受信完了時刻に基づいて、最も適切な経路、例えば到着時刻が最も早いと予測される経路を選択する。【０２００】
ここで経路状態情報とは、通信性能の指標となる情報一般を指す。本実施の形態では、そのうち経路の速度とパケット遅延を用いる。また、経路状態情報の有効時とは、送信ノード側における経路状態情報の更新時を意味するものでなく、経路状態情報で示される経路状態となった時間、その経路状態において伝送されたパケットで特定される時刻等である。従って、経路状態情報の有効時以降の送信履歴とは、経路状態情報の有効時以降に送信されたパケットの送信履歴等をいう。尚、この時刻は、その測定の元になったパケット情報（パケットを識別する識別子）や、受信ノード側から送信される受信時等から得られるが、多少のずれはかまわない。また、経路状態情報を得る為、受信ノードが速度や遅延を測定する方法は各種提案されているが、想定している方法を以下に述べる。【０２０１】
送信ノードは、受信ノードへのパケットの各々に識別子と送信時刻を挿入して転送するものとする。受信ノードはパケット遅延を、送信ノードが挿入した送信時刻と自身が受信した時刻を比較することで測定する。また、送信ノードは定期的に測定用のパケット列を送信し、受信ノードはその到着時間のばらつきから速度を推定できる。推定の方法の詳細は例えば文献「Dovrolis, Ramanathan, and Moore, ”What DoPacket Dispersion Techniques Measuere?,” IEEE INFOCOM 2001」で紹介されている。前記Dovrolisらの文献においては、送信側ノードが２つのパケットを同時に送信し、送信側でこの２つのパケットの到着時刻差からリンク速度を推定する。パケットの到着間隔を広げるのは伝送遅延であり、伝送遅延はリンク速度と関係があることから、到着間隔より速度を推定可能である。【０２０２】
受信ノードは、定期的にこれらの測定値または推定値を経路状態情報として送信ノードに送信する。また、そのときまでに受信した最新のパケットの識別子を、送信する状態情報が有効となるパケットの識別情報として同時に送信する。これらの情報が、レポートとして送信ノードで受信される。尚、以上の方式は一例であり、本発明の実施可能性は経路状態情報及びこれが有効となるパケットの決定及び伝達の方法には依存しない。【０２０３】
以下に、具体的な動作を説明する。【０２０４】
スケジューラ２１３もしくは４１３は、次に転送すべきパケットにつき、送信経路毎に現在までに受信している経路情報等のレポートおよびその情報が有効となるパケットの送信以降の送信履歴を参照し、受信側ノードでの到着遅延を予測する、送信履歴は記憶部２１６もしくは４１６に記憶されている。スケジューラ２１３もしくは４１３は、予測した到着遅延が最小となる経路を次に転送すべきパケットの送信経路として選択し、選択した経路へのパケット転送後、その転送時刻を記憶部２１６もしくは４１６上の送信履歴に加える。【０２０５】
スケジューラ２１３もしくは４１３で動作する経路ごとの到着遅延推定方法の一例としてスケジューラ動作例を図１１に示す。【０２０６】
図１１中600-1, 600-2, 600-3はデータパケットであり、その送信側ノードでの送信履歴および予測と受信側ノードでの受信履歴および予測がそれぞれ時間軸上で示されている。例えばデータパケット600-1は送信側ノードで時刻T1に送信が開始され、時刻T2に送信が完了している。また同じパケット600-1は受信側ノードで時刻T3より受信が開始され、時刻T4に受信が完了している。ここでT1とT3との差I1が伝送遅延である。また、T4とT2との差I2が、伝送遅延I1に送信インタフェースと転送経路の速度差とにより生じるパケットの分散を加えた総遅延となる。【０２０７】
ここで、時間軸上TPの現在時刻において、パケット600-3を送信しようとしているものとする。そして、この経路につき、T5とTPの間でレポート結果通知の受信により、送信側ノードが有している経路状態情報が更新され、この経路状態情報が有効となるパケットは600-1からとする。そこで、経路状態情報が有効となるパケット600-1、600-2の送信履歴に基づいて、パケット600-1、パケット600-2を考慮したパケット600-3の受信完了時刻の推定を行う。【０２０８】
すると、パケット600-1より後に送信されたパケット600-2の受信側ノードでの受信開始時刻及び完了時刻は現在受信している経路状態情報に含まれる速度及び伝送遅延から推定される。推定された受信開始時刻は図１１中T5、受信完了時刻はT7である。ここで、この推定を行わず、経路状態情報が示す伝送遅延がI1と等しいとすると、TPに送信開始したパケット600-3は時刻T6に受信開始されるはずである。しかし、T6では、いまだ受信側ノードでは、パケット600-2の受信が完了していないと推定されるので、パケット600-3の推定受信開始時刻はパケット600-2の受信が完了すると推定されるT7以降となり、パケット600-3の推定受信完了時刻は現在受信している経路状態情報に含まれる経路速度から推定されるパケット分散を加えたT8となる。同様にパケット600-3の受信完了時刻の推定を各経路につき行い、それが最も早い時刻となる経路にパケット600-3は送出される。【０２０９】
なお、図１１におけるTPの時点での受信側の到着時刻推定に用いている経路状態情報は、T5とTPの間でレポート結果通知の受信により更新されたものである。すると、パケット600-2を送信した際の到着時刻推定はTPにおけるより古い経路状態情報に基づいて行われたことになる。この古い状態情報を情報A、T5とTPとの間で更新された新しい情報を情報Bとすると、リンク状態の変動により情報Aと情報Bに含まれる遅延や経路速度が異なれば、Aに基づく到着時刻予測は、図１１に示される情報Bに基づく到着時刻予測と異なっていたはずである。したがって、より正確な予測を行うために、図１１に示したパケット600-1および600-2の到着時刻予測は情報Bを得た結果の修正を反映している。ひとたび経路状態情報の更新が行われると、その更新が有効となるパケット以前の送信履歴は参照不要となるのでこれを破棄する。【０２１０】
更に、本発明を適用した場合のパケット到着時刻推定及び受信完了時刻と、従来のパケット到着時刻推定及び受信完了時刻との差を、図１８を用いて具体的に説明する。【０２１１】
図１８中500-1, 500-2, 500-3は送出されるデータパケットであり、その送信側ノードでのパケットの送信履歴（実線）と受信側ノードでの実際のパケットの受信履歴（実線）がそれぞれ時間軸上で示されている。また、パケットの到着及び受信完了時刻の予測（点線）もそれぞれ時間軸上で示されている。また、図１８の上部に記した曲線は、伝送経路の速度変化を示すものである。図１８では、時間が経過するとともに伝送速度が遅くなっている旨を示している。【０２１２】
まず、実際のパケットの送受信であるが、送信側ノード側から時刻T1にデータパケット500-1の送信が開始され、時刻T2に送信が完了している。そして、受信側ノードで、パケット500-1は、時刻T3より受信が開始され、時刻T5に受信が完了している。【０２１３】
その後、送信側ノード側から時刻T4にデータパケット500-2の送信が開始され、時刻T8に送信が完了している。そして、受信側ノード側では、通信速度の低下により、データパケット500-2は、時刻T7より受信が開始され、時刻T13に受信が完了している。【０２１４】
更に、送信側ノード側から時刻T9にデータパケット500-3の送信が開始され、時刻T10に送信が完了している。そして、受信側ノード側では、データパケット500-3が、時刻T14より受信が開始され、時刻T16に受信が完了している。【０２１５】
次に、上述のような実際のパケットの送受信において、本発明を適用した場合のパケットの到着時刻及び受信完了時刻の予測について説明する。【０２１６】
上述の如く、データパケット500-1は、時刻T1に、データパケット500-1の送信時刻及びパケット識別子の情報と共に送信側ノードで送信が開始され、時刻T2に送信が完了している。このとき、送信側ノードでは、送信履歴としてデータパケット500-1の送信時刻及びパケット識別子を記憶している。【０２１７】
続いて、送信側ノードより、データパケット500-2が、データパケット500-2の送信時刻及びパケット識別子の情報と共に時刻T4に送信が開始され、時刻T8に送信が完了している。このとき、送信側ノードでは、上述と同様に、送信履歴としてデータパケット500-2の送信時刻及びパケット識別子を記憶している。【０２１８】
受信ノード側では、データパケット500-1が、時刻T3より受信が開始され、時刻T5に受信が完了している。このとき、受信ノード側は、データパケット500-1の識別子、受信完了時刻及び通信速度等の情報をレポートとして、送信ノードに送信する。【０２１９】
送信ノード側では、時刻TXに受信ノードからレポートを受信したとする。そして、レポートに含まれるデータパケット500-1の識別子により、レポートの経路状態情報の有効時は、データパケット500-1の送信時刻T1と判断する。【０２２０】
そこで、送信ノードは、時刻T1以降の送信履歴に基づいて、データパケット500-3の到着時刻及び受信完了時刻の予測を行う。時刻T1以降の送信履歴によると、対象となるデータパケットはデータパケット500-1、データパケット500-2である。データパケット500-1の受信完了時刻は、レポートにより、時刻T5とわかる。データパケット500-2の到着時刻及び受信完了時刻の予測には、レポートのデータパケット500-1の通信速度や、受信完了時刻が用いられ、これらの情報により、伝送遅延やパケットの総遅延の時間がわかる。尚、伝送遅延はT1とT3との差I1である。また、パケットの総遅延は、伝送遅延I1に送信インターフェースと転送経路の速度差とにより生じるパケットの分散を加えた時間であり、T5とT2との差I2である。データパケット500-2の到着時刻は、伝送遅延I1により求められ、データパケット500-2の送信時刻T4に伝送遅延I1を加えた時刻T6と予測される。また、データパケット500-2の受信完了時刻は、レポートの通信速度によりパケット遅延を求めることができるので、データパケット500-2の受信完了時刻は時刻T12と予測することができる。従って、この経路において、データパケット500-3の受信ノードの到着時刻は、時刻T12以降と予測することができる。また、この時刻T12から受信が開始された場合の受信完了時刻は、上述したパケット分散の予測により、時刻T15と予測することができる。このような予測の結果によれば、予測したデータパケット500-3の到着時刻T12と、実際のデータパケット500-3の到着時刻T14との差は、時間ID1である。【０２２１】
一方、従来技術によるパケットの到着時刻及び受信完了時刻の予測では、受信ノードより得られたレポートの到着時刻において、レポートで示される経路状態を有効としており、データパケット500-3の予測にあたっても、レポートで示される経路状態をそのまま適用している。すなわち、データパケット500-3の到着時刻の予測にあたって、データパケット500-3の送信時刻T9に伝送遅延I1を加えた時刻T11と予測している。このような予測の結果によれば、予測したデータパケット500-3の到着時刻T11と、実際のデータパケット500-3の到着時刻T14との差は、時間ID2である。【０２２２】
従って、実際の到着時間との誤差時間ID1と誤差時間ID2とでは、本発明による予測による誤差時間ID1の方が、誤差時間ID2よりも誤差が少ないことは、図面からも明らかである。【０２２３】
次に、以上説明したような到着時刻推定を含む、スケジューラの経路選択の手順を図１２に示す。【０２２４】
まず、キューイング部312により、パケットが受信される（Ｓｔｅｐ  １００）。【０２２５】
次に、いずれかの経路で、その経路から最後のパケットを送信した後に経路状態情報が更新されたかを判断する（Ｓｔｅｐ  １０１）。経路状態情報が更新された場合には、更新された全ての経路で、経路状態情報が有効となる以前の送信履歴を削除する（Ｓｔｅｐ  １０２）。【０２２６】
続いて、各経路において、経路状態情報と送信履歴とに基づいて、パケットの到着時刻を予測（推定）する（Ｓｔｅｐ  １０３）。そして、予測（推定）到着時刻が最も早い経路にパケットを送信する（Ｓｔｅｐ  １０４）。【０２２７】
最後に、パケット送信に用いた経路の送信履歴を更新する（Ｓｔｅｐ  １０５）。【０２２８】
以上の如く、経路状態情報更新の際にはそれ以前に送信済みのパケットの到着時刻予測が修正され、それ以降のパケット送信の際の判断に反映されるので、結果的に過去の送信実績の補償が可能になる。この補償の効果は各経路の往復遅延が大きく、経路の状態変動の周期に対して無視できない場合に顕著になる。以下にその理由を述べる。【０２２９】
経路の状態変動が往復遅延程度の時間で起こる場合、ある状態情報を送信側ノードが取得したころには既に当該経路の状態は変わっているかもしれないのでその情報は信頼するに足らない。したがってパケットを送信する時点で経路選択およびタイミング設定を最適に行うことは不可能であり、一般には非最適な経路およびタイミングでパケットが送信されることになる。状態情報更新の際に到着時刻予測を修正することは、既に行われた非最適な送信のインパクトを、状態情報更新間隔分の時間が経ってから推定することに等しい。例えば、以前に高すぎるレートで送信していた場合、状態情報の更新により送信済みパケットの到着予測時刻は延長されてその経路の送信コストは引き上げられる。【０２３０】
以上のような、状態情報更新による過去の送信パケットの到着時刻予測の修正は経路選択の最適化の効果があるが、経路選択のみならず送信タイミング制御に到着時刻予測の修正をフィードバックすると各経路の輻輳制御も長期的に最適化される。【０２３１】
次に、実施するための他の形態について説明する。【０２３２】
以下の形態では簡単なタイミング制御を実装した場合の動作を説明する。【０２３３】
次に示す他の形態では、上述した形態と同様に送出パケットの受信完了時刻を経路ごとに推定し、最も評価値の高い経路を選択するが、新たに経路ごとに許容推定遅延を定義し、推定遅延がその値を超えないよう送信側ノードが送信タイミングを制御する簡単なタイミング制御を導入することもできる。図１３を用いて本形態の動作を説明する。【０２３４】
図１３中、許容推定遅延をTMとしている。この意味は、TPの時点でパケットを送出するにはそのパケットはTM+TPまでに受信完了すると推定されなければならないということである。ところが上述した形態と同様な手段でパケット400-3の受信完了時刻を推定するとT8となり、これはTM+TPよりも未来である。したがって推定受信完了時刻がTM+TPとなるまでの間、送信側ノード100はこの経路からパケット400-3を送出できない。この場合送信側ノード100はいずれかの経路の推定受信完了時刻がTM+TP以下となるまでパケット400-3を保留し、最も早く保留が解ける経路よりこのパケットを送信する。以上の形態でのスケジューリングの動作を図１４に示す。【０２３５】
まず、キューイング部312により、パケットが受信される（Ｓｔｅｐ  ２００）。【０２３６】
次に、いずれかの経路で、その経路から最後のパケットを送信した後に経路状態情報が更新されたかを判断する（Ｓｔｅｐ  ２０１）。経路状態情報が更新された場合には、更新された全ての経路で、経路状態情報が有効となる以前の送信履歴を削除する（Ｓｔｅｐ  ２０２）。【０２３７】
続いて、各経路において、経路状態情報と送信履歴とに基づいて、パケットの到着時刻を予測（推定）する（Ｓｔｅｐ  ２０３）。そして、予測（推定）された到着時刻を用いて、全ての経路について、（予測（推定）到着時刻）＞（現在時刻＋許容推定遅延）であるかを判断し（Ｓｔｅｐ  ２０４）、いずれかの経路で（予測（推定）到着時刻）≦（現在時刻＋許容推定遅延）である場合には、それらの経路のうち予測（推定）到着時刻が最も早い経路にパケットを送信する（Ｓｔｅｐ  ２０５）。【０２３８】
一方、全ての経路で、（予測（推定）到着時刻）＞（現在時刻＋許容推定遅延）である場合には、いずれかの経路で現在時刻が（予測到着時刻−許容推定遅延）となるまで待機し、いずれかの経路で条件を満たした場合にはＳｔｅｐ  ２０５に進む（Ｓｔｅｐ  ２０６）。【０２３９】
最後に、パケット送信に用いた経路の送信履歴を更新する（Ｓｔｅｐ  ２０７）。【０２４０】
尚、許容遅延TMの値は経路ごとに独立に設定してよい。例えば各経路の遅延や経由するサーバのバッファ量等が大きく異なる場合、特に高負荷下ではTMの設定値を各経路で異なる設定とすることで各経路の帯域の有効活用が図れると考えられる。【０２４１】
また、経路選択の判断は推定受信完了時刻の他に、例えばパケット欠落率や回線使用料金などが監視可能であればそれらを優先して評価してもよい。また判断の方法は送られるデータの属性により異なってもよい。例えば音声データであれば遅延を、緊急ではないファイル転送データであれば回線使用料金を重視した選択を行うなどである。本実施例の特徴は、いずれの場合においても、送信ノードが経路状態情報を更新する際に同時にその更新が有効となる送信パケットまたは時刻を取得し、有効パケットまたは有効時刻以降の送信履歴より送信コストへのインパクトを推定し、コスト最小の経路に次のパケットを送信することである。その結果、遅延が大きく経路の状態変動の時定数に比べ無視できないほど大きい場合にも、過去の非最適な送信により既に与えてしまったコスト基準へのインパクトをその後の送信タイミングの調整に反映させることで補償することができ、経路の利用効率を向上させる効果がある。【０２４２】
尚、上述した実施例１、実施例２、実施例３、実施例４及び実施例５において、ノードのフロー識別部２１１，２２２と、スケジューラ２１３と、再送制御部２１４と再送ID順序チェック部２２１と、フロー順序チェック部２２３等をそれぞれ別の部として構成したが、これらの全部又は一部を、制御プログラムで動作するＣＰＵ等で構成しても良い。
【図１】
0004497322.tif 000002
【図２】
0004497322.tif 000003
【図３】
0004497322.tif 000004
【図４】
0004497322.tif 000005
【図５】
0004497322.tif 000006
【図６】
0004497322.tif 000007
【図７】
0004497322.tif 000008
【図８】
0004497322.tif 000009
【図９】
0004497322.tif 000010
【図１０】
0004497322.tif 000011
【図１１】
0004497322.tif 000012
【図１２】
0004497322.tif 000013
【図１３】
0004497322.tif 000014
【図１４】
0004497322.tif 000015
【図１５】
0004497322.tif 000016
【図１６】
0004497322.tif 000017
【図１７】
0004497322.tif 000018
【図１８】
0004497322.tif 000019
【図１９】
0004497322.tif 000020