(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-14
(45)【発行日】2023-02-22
(54)【発明の名称】パケット損失の動的管理
(51)【国際特許分類】
H04L 1/16 20230101AFI20230215BHJP
【FI】
H04L1/16
(21)【出願番号】P 2020515824
(86)(22)【出願日】2018-05-22
(86)【国際出願番号】 US2018033914
(87)【国際公開番号】W WO2018217767
(87)【国際公開日】2018-11-29
【審査請求日】2021-05-19
(32)【優先日】2017-05-22
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】519418891
【氏名又は名称】ジーカーダ ネットワークス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】バラーダラジャン,スッブ
(72)【発明者】
【氏名】アンソニーラジ,ロザリン ロイ
【審査官】谷岡 佳彦
(56)【参考文献】
【文献】米国特許出願公開第2007/0206621(US,A1)
【文献】米国特許第08964543(US,B1)
【文献】米国特許出願公開第2004/0008693(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 1/16
(57)【特許請求の範囲】
【請求項1】
第1の複数パケットと第2の複数パケットとを含むパケッ
トを受信することと、
パケットの第1のシーケンスとして宛先計算ノードに送信する前記第1の複数パケットのうち第1のパケットを複製することと、
パケットの第2のシーケンスとして宛先計算ノードに送信する前記第2の複数パケットのうち第2のパケットを複製することであって、前記パケットの第2のシーケンスは、前記パケットの第1のシーケンスに後続することと、
前記第1のパケットの複製を含む前記第1の複数パケットを前記宛先計算ノードに送信することと、
前記第1の複数パケットを送信することに続いて、前記第2のパケットの複製を含む前記第2の複数パケットを前記宛先計算ノードに送信することと、
前記宛先計算ノードから第1の確認応答を受信することと、
前記第1の確認応答が複製対象パケット宛であると判定することと、
前記第1の確認応答が複製対象パケット宛であるとの判定に応答して、
前記複製対象パケットに先行して送信された前記第1の複数パケットのうち第1の1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定すること、
前記第2の確認応答が未だ受信されていないとの判定に応答して、前記第1の1個以上のパケットを前記宛先計算ノードに再送信すること、
前記複製対象パケットに先行して送信された前記第2の複数パケットのうち第2の1個以上のパケットの各々に対して第3の確認応答が未だ受信されていないと判定すること、及び
前記第3の確認応答が未だ受信されていないとの判定に応答して、前記第2の1個以上のパケットを前記宛先計算ノードに再送信することと
を含むコンピュータ実行方法。
【請求項2】
前記第1のパケットが、前記第1の複数パケッ
トのうち、複製される1以上のパケットの1個である、請求項1に記載のコンピュータ実行方法。
【請求項3】
前記パケットの複製が、所定の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが前記複製パケットの原本に続いて送信されるように、前記宛先計算ノードに送信される前記パケットの第1のシーケンス内で分散されている、請求項2に記載のコンピュータ実行方法。
【請求項4】
前記パケットの複製が、前記パケットの第1のシーケンスのうち全ての複製非対象パケットが送信された後で送信される、請求項2に記載のコンピュータ実行方法。
【請求項5】
前記宛先計算ノードへパケットを送信する際のパケット損失量を判定することと、
前記判定されたパケット損失量に基づいて、
複製される前記パケットの個数を設定することと
を更に含む、請求項2~4のいずれか1項に記載のコンピュータ実行方法。
【請求項6】
前記宛先計算ノードへパケットを送信する際のパケット損失量が閾値を超えたと判定することと、
前記パケット損失量が前記閾値を超えたとの判定に応答して、パケットの複製を止めることと
を更に含む、請求項5に記載のコンピュータ実行方法。
【請求項7】
前記宛先計算ノードへパケットを送信する際のパケット損失量を判定することと、
前記判定されたパケット損失量に基づいて
、各パケットの複製の個数を設定することと
を更に含む、請求項2~6のいずれか1項に記載のコンピュータ実行方法。
【請求項8】
前記第1のパケットの複製が、前記パケットの第2のシーケンス内で、前記パケットの第2のシーケンス内の全ての
複製非対象パケット及び複製対象パケットの後に挿入される、請求項2に記載のコンピュータ実行方法。
【請求項9】
非一時的コンピュータ可読記憶媒体であって、処理装置により実行された場合に前記処理装置に、
第1の複数パケットと第2の複数パケットとを含むパケッ
トを受信することと、
パケットの第1のシーケンスとして宛先計算ノードに送信する前記第1の複数パケットのうち第1のパケットを複製することと、
パケットの第2のシーケンスとして宛先計算ノードに送信する前記第2の複数パケットのうち第2のパケットを複製することであって、前記パケットの第2のシーケンスは、前記パケットの第1のシーケンスに後続することと、
前記第1のパケットの複製を含む前記第1の複数パケットを前記宛先計算ノードに送信することと、
前記第1の複数パケットを送信することに続いて、前記第2のパケットの複製を含む前記第2の複数パケットを前記宛先計算ノードに送信することと、
前記宛先計算ノードから第1の確認応答を受信することと、
前記第1の確認応答が複製対象パケット宛であると判定することと、
前記第1の確認応答が複製対象パケット宛であるとの判定に応答して、
前記複製対象パケットに先行して送信された前記第1の複数パケットのうち第1の1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定すること、
前記第2の確認応答が未だ受信されていないとの判定に応答して、前記第1の1個以上のパケットを前記宛先計算ノードに再送信すること、
前記複製対象パケットに先行して送信された前記第2の複数パケットのうち第2の1個以上のパケットの各々に対して第3の確認応答が未だ受信されていないと判定すること、及び
前記第3の確認応答が未だ受信されていないとの判定に応答して、前記第2の1個以上のパケットを前記宛先計算ノードに再送信することと
を含む方法を実行させる命令を格納する非一時的コンピュータ可読記憶媒体。
【請求項10】
前記第1のパケットが、前記第1の複数パケッ
トのうち、複製される1以上のパケットの1個である、請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項11】
前記パケットの複製が、所定の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが前記複製パケットの原本に続いて送信されるように、前記宛先計算ノードに送信される前記パケットの第1のシーケンス内で分散されている、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記パケットの複製が、前記パケットの第1のシーケンスのうち全ての複製非対象パケットが送信された後で送信される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記方法が、
前記宛先計算ノードへパケットを送信する際のパケット損失量を判定することと、
前記判定されたパケット損失量に基づいて、
複製される前記パケットの個数を設定することと
を更に含む、請求項10~12のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記方法が、
前記宛先計算ノードへパケットを送信する際のパケット損失量が閾値を超えたと判定することと、
前記パケット損失量が前記閾値を超えたとの判定に応答して、パケットの複製を止めることと
を更に含む、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記方法が、
前記宛先計算ノードへパケットを送信する際のパケット損失量を判定することと、
前記判定されたパケット損失量に基づいて
、各パケットの複製の個数を設定することと
を更に含む、請求項10~14のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記第1のパケットの複製が、前記パケットの第2のシーケンス内で、前記パケットの第2のシーケンス内の全ての
複製非対象パケット及び複製対象パケットの後に挿入される、請求項10に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
処理装置と、
前記処理装置に結合されたメモリとを含む装置であって、前記メモリが、前記処理装置により実行された場合に前記装置に、
第1の複数パケットと第2の複数パケットとを含むパケッ
トを受信することと、
パケットの第1のシーケンスとして宛先計算ノードに送信する前記第1の複数パケットのうち第1のパケットを複製することと、
パケットの第2のシーケンスとして宛先計算ノードに送信する前記第2の複数パケットのうち第2のパケットを複製することであって、前記パケットの第2のシーケンスは、前記パケットの第1のシーケンスに後続することと、
前記第1のパケットの複製を含む前記第1の複数パケットを前記宛先計算ノードに送信することと、
前記第1の複数パケットを送信することに続いて、前記第2のパケットの複製を含む前記第2の複数パケットを前記宛先計算ノードに送信することと、
前記宛先計算ノードから第1の確認応答を受信することと、
前記第1の確認応答が複製対象パケット宛であると判定することと、
前記第1の確認応答が複製対象パケット宛であるとの判定に応答して、
前記複製対象パケットに先行して送信された前記第1の複数パケットのうち第1の1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定すること、
前記第2の確認応答が未だ受信されていないとの判定に応答して、前記第1の1個以上のパケットを前記宛先計算ノードに再送信すること、
前記複製対象パケットに先行して送信された前記第2の複数パケットのうち第2の1個以上のパケットの各々に対して第3の確認応答が未だ受信されていないと判定すること、及び
前記第3の確認応答が未だ受信されていないとの判定に応答して、前記第2の1個以上のパケットを前記宛先計算ノードに再送信することと
を行わせる命令を格納する、装置。
【請求項18】
前記第1のパケットが、前記第1の複数パケッ
トのうち、複製される1以上のパケットの1個である、請求項17に記載の装置。
【請求項19】
前記パケットの複製が、所定の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが前記複製パケットの原本に続いて送信されるように、前記宛先計算ノードに送信される前記パケットの第1のシーケンス内で分散されている、請求項18に記載の装置。
【請求項20】
前記パケットの複製が、前記パケットの第1のシーケンスのうち全ての複製非対象パケットが送信された後で送信される、請求項18に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
[0001] 本明細書に記述する各種実施形態はパケット損失の管理に関する。特に、実施形態は、パケットのサブセットの余剰コピーを利用して、複製対象パケットの確認応答を受信する確率を高めると共に、複製対象パケットの確認応答に基づいて、複製非対象パケットの確認応答がなされていないかを判定する。
【背景技術】
【0002】
発明の背景
[0002] 伝送制御プロトコル(TCP)等のネットワークプロトコルは再送信タイマーを利用して、受信器が確認応答していないデータが確実に再送信されるようにする。例えば、このようなタイマーは、既定値又は送信器と受信器との間で測定された往復時間に基づく値に設定されてよい。パケットの確認応答を受信する前にタイマーが時間切れになったならばパケットは再送信され、タイマーの設定時間を延長することができる。例えば無線ネットワーク接続によるパケット損失量が増大及び変化するのに伴い、損失パケットを再送信するための再送信タイマーの設定時間切れを待つことによりデータの配信が遅くなる可能性がある。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
[0003] パケットのシーケンスのうち送信するパケットの複製コピーの個数を動的に決定することによりパケット損失を管理する装置及び方法に対するニーズがある。このようなシステム及び方法は任意選択的に、パケット損失を管理する従来方式のシステムを補完又は代替する。
【0004】
[0004] いくつかの実施形態によれば、一方法は、パケットのシーケンスとして宛先計算ノードに送信する複数パケットのうち1個のパケットを複製することを含んでいる。方法は又、当該パケットの複製を含む複数パケットを宛先計算ノードに送信することを含んでいる。方法は又、宛先計算ノードから当該パケットの第1の確認応答を受信することを含んでいる。方法は又、第1の確認応答が複製対象パケット宛であると判定することを含んでいる。方法は又、第1の確認応答が複製対象パケット宛であるとの判定に応答して、当該パケットに先行して送信された複数パケットのうち1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定することを含んでいる。方法は又、第2の確認応答が未だ受信されていないとの判定に応答して、当該1個以上のパケットを宛先計算ノードに再送信することを含んでいる。
【0005】
[0005] いくつかの実施形態において、当該パケットは、複数パケットのサブセットのうち、複製され且つ複製と共に宛先計算ノードに送信される1以上のパケットの1個である。
【0006】
[0006] いくつかの実施形態において、サブセットに含まれるパケットの複製は、最小個数の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが複製パケットの原本に続いて送信されるように、宛先計算ノードに送信されるパケットのシーケンス内で分散されている。
【0007】
[0007] いくつかの実施形態において、サブセットに含まれるパケットの複製は、パケットのシーケンスのうち全ての複製非対象パケットが送信された後で送信される。
【0008】
[0008] いくつかの実施形態において、方法は、宛先計算ノードへパケットを送信する際のパケット損失量を判定すること、及び判定されたパケット損失量に基づいて、複製してサブセットに含めるパケットの個数を設定することを含んでいる。
【0009】
[0009] いくつかの実施形態において、方法は、宛先計算ノードへパケットを送信する際のパケット損失量が閾値を超えたと判定することを含み、パケット損失量が閾値を超えたとの判定に応答して、サブセットに含めるパケットの個数をゼロに設定する。
【0010】
[0010] いくつかの実施形態において、方法は、宛先計算ノードへパケットを送信する際のパケット損失量を判定すること、及び判定されたパケット損失量に基づいて、サブセット内における各パケットの複製の個数を設定することを含んでいる。
【0011】
[0011] いくつかの実施形態において、パケットのシーケンス内でパケットの複製がシーケンス内の後続する各々の複製対象パケットの後に挿入される。
【0012】
[0012] いくつかの実施形態によれば、非一時的コンピュータ可読媒体は、処理装置により実行された場合に処理装置に方法を実行させる命令を保存している。当該方法は、パケットのシーケンスとして宛先計算ノードに送信する複数パケットのうち1個のパケットを複製することを含んでいる。当該方法は又、当該パケットの複製を含む複数パケットを宛先計算ノードに送信することを含んでいる。当該方法は又、宛先計算ノードから当該パケットの第1の確認応答を受信することを含んでいる。当該方法は又、第1の確認応答が複製対象パケット宛であると判定することを含んでいる。当該方法は又、第1の確認応答が複製対象パケット宛であるとの判定に応答して、対象パケットに先行して送信された複数パケットのうち1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定することを含んでいる。当該方法は又、第2の確認応答が未だ受信されていないとの判定に応答して、対象1個以上のパケットを宛先計算ノードに再送信することを含んでいる。
【0013】
[0013] いくつかの実施形態において、当該パケットは、複数パケットのサブセットのうち、複製され且つ複製と共に宛先計算ノードに送信される複数パケットの1個である。
【0014】
[0014] いくつかの実施形態において、サブセットに含まれるパケットの複製は、最小個数の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが複製パケットの原本に続いて送信されるように、宛先計算ノードに送信されるパケットのシーケンス内で分散されている。
【0015】
[0015] いくつかの実施形態において、サブセットに含まれるパケットの複製は、パケットのシーケンスのうち全ての複製非対象パケットが送信された後で送信される。
【0016】
[0016] いくつかの実施形態において、当該命令は、処理装置に、宛先計算ノードへパケットを送信する際のパケット損失量を判定させ、判定されたパケット損失量に基づいて、複製してサブセットに含めるパケットの個数を設定させる命令を含んでいる。
【0017】
[0017] いくつかの実施形態において、当該命令は、処理装置に、宛先計算ノードへパケットを送信する際のパケット損失量が閾値を超えたと判定させる命令を含み、パケット損失量が閾値を超えたとの判定に応答して、サブセットに含めるパケットの個数をゼロに設定する。
【0018】
[0018] いくつかの実施形態において、当該命令は、処理装置に、宛先計算ノードへパケットを送信する際のパケット損失量を判定させ、判定されたパケット損失量に基づいて、サブセット内における各パケットの複製の個数を設定させる命令を含んでいる。
【0019】
[0019] いくつかの実施形態において、パケットのシーケンス内でパケットの複製がシーケンス内の後続する各々の複製対象パケットの後に挿入される。
【0020】
[0020] いくつかの実施形態によれば、一装置は、処理装置と、処理装置に結合されたメモリとを含んでいる。メモリは、処理装置により実行された場合に装置に、パケットのシーケンスとして宛先計算ノードに送信する複数パケットのうち1個のパケットを複製させる命令を格納している。当該命令は又、装置に、当該パケットの複製を含む複数パケットを宛先計算ノードに送信させる。当該命令は又、装置に、宛先計算ノードから当該パケットの第1の確認応答を受信させる。当該命令は又、装置に、第1の確認応答が複製対象パケット宛であると判定させる。当該命令は又、装置に、第1の確認応答が複製対象パケット宛であるとの判定に応答して、当該パケットに先行して送信された複数パケットのうち1個以上のパケットの各々に対して第2の確認応答が未だ受信されていないと判定させる。当該命令は又、装置に、第2の確認応答が未だ受信されていないとの判定に応答して、当該1個以上のパケットを宛先計算ノードに再送信させる。
【0021】
[0021] いくつかの実施形態において、当該パケットは、複数パケットのサブセットのうち、複製され且つ複製と共に宛先計算ノードに送信される1以上のパケットの1個である。
【0022】
[0022] いくつかの実施形態において、サブセットに含まれるパケットの複製は、最小個数の複製非対象パケットが各複製対象パケットの1回目の送信に先行して送信され、且つ各複製パケットが複製パケットの原本に続いて送信されるように、宛先計算ノードに送信されるパケットのシーケンス内で分散されている。
【0023】
[0023] いくつかの実施形態において、サブセットに含まれるパケットの複製は、パケットのシーケンスのうち全ての複製非対象パケットが送信された後で送信される。
【0024】
図面の簡単な説明
[0024] 本実施形態を、添付図面の各図を例として参照しながら、但しこれらに限定することなく説明し、類似参照符号は類似要素を示している。
【図面の簡単な説明】
【0025】
【
図1】[0025]ネットワークを形成すると共に、パケット損失を管理する実施形態を実装する処理装置をブロック図形式で示す。
【
図2】[0026]パケットのサブセットの余剰コピーを含むパケットの3個の例示的なバーストを示す。
【
図3】[0027]パケット損失を管理する例示的な方法を示すフロー図である。
【発明を実施するための形態】
【0026】
発明の詳細な説明
[0028] 本明細書は、パケットのシーケンスのうち、送信するパケットの複製コピーの個数を動的に決定し、且つ複製対象パケットの確認応答を利用して複製非対象パケットの損失を検出することにより、パケット損失を管理する実施形態を記述する。例えば、実施形態は、パケットのシーケンスとして宛先計算ノードに送信する複数パケットのうち1個のパケットの1個以上の複製を生成する。当該パケットの1個以上の複製を含む複数パケットが宛先計算ノードに送信される。当該パケットの複数のコピーを送信する場合、宛先計算ノードが当該パケットを受信及び確認応答する確率が増大する。宛先計算ノードから当該パケットの第1の確認応答を受信した場合、実施形態は、第1の確認応答が複製対象パケット宛であると判定する。確認応答が複製対象パケット宛であるとの判定に応答して、実施形態は、シーケンス内の当該パケットの原本に先行して送信された複数パケットのうち1個以上のパケットの確認応答が未受信であるかを判定する。当該パケットに先行して送信された1個以上のパケットのいずれかの確認応答が未受信との判定に応答して、実施形態は、対応する1個以上のパケットを宛先計算ノードに再送信する。一実施形態において、判定されたパケット損失量に基づいて、複製するパケットの個数及び/又は生成された複製コピーの個数が設定される。その結果、実施形態は、送信する複製パケットの量を動的に調整しつつ、再送信タイマーの設定時間切れに先行してパケットの損失を検出して対応する。
【実施例】
【0027】
[0029]
図1に、複数の処理装置であって、その1個以上が本明細書に記述するようにパケット損失の管理の実施形態を実装している複数の処理装置を含む例示的なネットワーク100をブロック図形式で示す。データ内容はネットワーク100を介して、例えば送信元105から宛先125に送信される。データは、宛先125に到達する前に出口ノード110、中間ノード115、及び入口ノード120を含む経路に沿って送信される。送信元105は、エンドユーザー装置(例えば、パーソナルコンピュータ、モバイル機器等)及び/又はサーバ等の1個以上の処理装置を表す。同様に、宛先125は、エンドユーザー装置(例えば、パーソナルコンピュータ、モバイル機器等)及び/又はサーバ等の1個以上の処理装置を表す。一実施形態において、宛先125は無線接続を介してネットワーク100に結合されたエンドユーザー装置である。
【0028】
[0030] 一実施形態において、1個以上の出口ノード110、中間ノード115、及び入口ノード120は、コンテンツ配信ネットワーク(CDN)の一部である。CDNは、複数のデータセンタに設置されたネットワークサーバノードの地理的に分散された組を含んでいる。CDNネットワークサーバノードは、高い可用性及び性能でコンテンツを提供すべく構成されている。
【0029】
[0031] 入口ノード120は、ハードウェア130を含む状態で示されている。送信元105、出口ノード110、中間ノード115、及び宛先125の各々は又、同様のハードウェアを含んでいてよい。ハードウェア130は、1個以上のプロセッサ(「CPU」)、データストレージ及びメモリ(例えば、「RAM」)、並びにネットワークインターフェースコントローラ(「NIC」)を含んでいる。データストレージ及びメモリは、データ、メタデータ及びプロセッサにより実行されるプログラムの格納に用いられてよい。データストレージ及びメモリは、ランダムアクセスメモリ(「RAM」)、読み出し専用メモリ(「ROM」)、固体ディスク(「SSD」)、フラッシュ、位相変化メモリ(「PCM」)等の、1個以上の揮発性及び不揮発性メモリ、又は磁気ディスクドライブ、光ディスクドライブ等の他の種類のデータストレージを含んでいてよい。メモリは内蔵又は分散メモリであってよい。1個以上のバス(図示せず)を用いてハードウェア130の各種の要素を相互接続することができる。又、NICを用いて、有線又は無線ネットワークを介して入口ノード120を中間ノード115及び宛先125と接続することができる。
【0030】
[0032] 入口ノード120は、パケット損失モジュール135を含む状態でも示されている。一実施形態において、パケット損失モジュール135は、例えば
図2~3を参照しながら記述するように、複製パケットを用いてパケット損失を監視して、損失パケットを再送信する。一実施形態において、1個以上の出口ノード110及び中間ノード115の各々も又パケット損失モジュール135を含んでいる。
【0031】
[0033]
図2に、パケットのサブセットの余剰コピーを含む、パケットの例示的なバースト200、225及び230を示す。図示するように、バースト200、225及び230の各々は100個のパケットのシーケンスを含んでいる。しかし、パケットのバーストは本例に示すよりも少ない又は多くのパケットを含んでいてよい。バースト200、225及び230の各々は、N番目(N=5)のパケット毎に複製を含む状態で示されている。N番目のパケット毎に複製することで、複製対象パケット間で最小個数の複製非対象パケットが送信される。パケットの複製コピーは、複製であることを強調すべくアステリスクで示している。例えば、複製205はシーケンス内で5番目のパケットのコピー、複製210はシーケンス内で10番目のパケットのコピー、複製215はシーケンス内の15番目のパケットのコピー、複製220はシーケンス内で20番目のパケットのコピーである。このパターンの複製は、
図2の丸で表すように、シーケンスの残り全体にわたり継続される。
図3を参照しながら記述するように、Nの値は可変であってよく、また既定値に基づいて、又は宛先125パケットを送信する際に判定されたパケット損失量に基づいて設定されてよい。
【0032】
[0034] 一実施形態において、各複製対象パケットのX個のコピーが生成されてシーケンス内に挿入される。例えば、各複製対象パケットの1個以上のコピーが、パケットの原本の後に、及び/又はパケットのシーケンス終端に挿入されてよい。Xの値が大きいほど、宛先125が複製対象パケットを受信して確認応答する可能性が高くなる。バースト200及び225は、5番目のパケットの直後に1個の複製205だけを有する状態で示されている。同様に、バースト230は、100番目のパケットの直後に1個の複製205だけを有する状態で示されている。しかし、一実施形態において、複数の複製205は、5番目のパケットの直後(例えば、シーケンス内の複製されていない6番目のパケットの前)、100番目のパケットの直後、又はシーケンス内で5番目のパケットの確認応答を受信する可能性を高めるべく他の箇所にあってよい。同様に、複数の複製210、215、220等は、対応する元パケットの直後に、又はバーストの最後のパケットの後に挿入されてよい。
図3を参照しながら記述するように、Xの値は可変であり得、既定値に基づいて、又は宛先125へパケットを送信する際の判定されたパケット損失量に基づいて設定されてよい。
【0033】
[0035] 一実施形態において、(例えば上述のようにXで定義された)各複製対象パケットの1個以上のコピーが、パケットの原本の後に、且つシーケンス内での後続する各々の複製対象パケットの後に挿入される。例えば、図示するように、5番目のパケットの複製205は、5番目のパケットの後に、及び後続する各々のN番目のパケット(第10、第15、第20等)の後に挿入される。10番目のパケットの複製210は、10番目のパケットの後に、及び後続する各々のN番目のパケット(15番目、20番目等)の後に挿入される。複製をバースト200の全体にわたり分散させることで、たとえ損失パケットのクラスタが存在しても、宛先125が複製対象パケットを受信して確認応答する可能性を高める。代替的に、各複製対象パケットの1個以上のコピーが挿入されるのはパケットの対応する原本の後だけであって、シーケンスでの後続する各々の複製対象パケットの後には挿入されない。
【0034】
[0036] 別の実施形態において、シーケンス内で複製対象パケットの最大個数(M)個がバースト内の各位置に挿入される。例えば、バースト225に示すように、M=2であるため複製パケットの2個のインスタンスだけがバースト225内の各位置に挿入される。5番目のパケットの複製205が5番目のパケットの後に挿入される。この時点で他の複製パケットが存在しないため、1個の複製だけが挿入される。5番目のパケットの複製205及び10番目のパケットの複製210が10番目のパケットの後に挿入される。しかし、15番目のパケット後に、5番目のパケットの複製205はもはや挿入されない。本例では、複製パケットの個数がMを超えそうな場合、バースト内の先のパケットが複製から除外される。このように、10番目のパケットの複製210及び15番目のパケットの複製215が15番目のパケットの後に挿入されるが、5番目のパケットの複製205は挿入されない。同様に、15番目のパケットの複製215及び20番目のパケットの複製220が20番目のパケットの後に挿入されるが、複製205及び210は挿入されない。
【0035】
[0037] 一実施形態において、(例えば上述のようにXで定義された)各複製対象パケットの1個以上のコピーが、パケットのバーストの終端に挿入される。例えば、バースト230は、バースト200及び225に示すように、全体にわたり分散された複製を含んでいない。代わりに、バースト230は、バーストの終端に複製を含んでいるだけである。別の例において、パケットのバーストは、元パケットの直後に1個以上の複製(例えば、シーケンス内で5番目のパケットの後の複製205)及びバーストの終端(例えば、シーケンス内で100番目のパケットの後の複製205)に1個以上の複製を含んでいてよいが、それ以外では全体にわたり分散されない(例えば、10番目、15番目等のパケットの後には複製205は無い)。更に別の一実施形態において、図示するように、バースト200は複製をバーストの全体にわたり分散された状態で、及び終端に含んでいてよい。
【0036】
[0038]
図3は、パケット損失を管理する例示的な方法300を示すフロー図である。ブロック305において、パケット損失モジュール135は、一連のパケットの組内でN番目のパケット毎に1個以上の複製を生成する。例えば、
図2を参照しながら記述するように、N番目のパケット毎にX個の複製を生成することができる。パケット損失モジュールは、X及びNの既定値を用いてもよく、又はブロック350に関して後述するように、推定されたパケット損失値に基づいてX及びNの値を設定してのよい。
【0037】
[0039] ブロック310において、パケット損失モジュール135は、複数されたパケットのシーケンス番号(又はバースト内でパケットを一意に識別する他の識別子、以下「シーケンス番号」)を保存する。これらのシーケンス番号は、宛先125により受信及び確認応答される可能性が高い「マーカーパケット」を示す。これらのマーカーパケットのシーケンス番号は、パケット損失モジュール135が当該番号を宛先125からの確認応答で受信されたシーケンス番号と比較できるように、保存される。
【0038】
[0040] ブロック315において、パケット損失モジュール135は、一連のパケットの組を複製コピーと共に宛先125に送信する。
図2を参照しながら記述するように、複製コピーは、対応する原本の後に挿入されていても、シーケンス全体にわたり分散されても、及び/又はパケットの組の終端に挿入されていてもよい。
【0039】
[0041] ブロック320において、パケット損失モジュール135は宛先125から確認応答を受信する。例えば、パケット損失モジュール135は、Internet Engineering Task Force (IETF) RFC 2018 TCP Selective Acknowledgment Optionsに従い確認応答又は選択的確認応答を受信することができる。一実施形態において、受信した確認応答は、宛先125により受信されたパケットのシーケンス番号(又は他の一意な識別子)を含んでいる。
【0040】
[0042] ブロック325において、パケット損失モジュール135は、受信した確認応答が複製対象マーカーパケットのシーケンス番号(又は他の一意な識別子)を含むか否かを判定する。受信した確認応答が複製対象マーカーパケットのシーケンス番号を含んでいない場合、ブロック330において、パケット損失モジュールは任意選択的に、確認応答された複製非対象パケットシーケンス番号のコピーを保存するか、又は成功裏に送信されて再送信する必要がないパケットを確認すべく、確認応答されたパケットを表す値を更新する。
【0041】
[0043] ブロック335において、パケット損失モジュール135は、組内の追加的なパケットがまだ確認応答されるべきかを判定する。全てのパケットが確認応答されている場合、方法300はブロック305に戻ってパケットの別のバーストを送信する。組内の追加的なパケットがまだ確認応答されるべきである場合、方法300はブロック320に戻って追加的な確認応答を待つ。
【0042】
[0044] 受信した確認応答が複製対象マーカーパケットのシーケンス番号を含んでいる場合、ブロック340において、パケット損失モジュール135は、シーケンス内で複製対象パケットに先行する複製非対象パケットに確認応答が欠如しているか否かを判定する。例えば、パケット損失モジュール135は、ブロック330を参照しながら記述するように、確認応答シーケンス番号を保存して、現在確認応答されているパケットより前のどのパケットがデータ構造又は他の表現から欠如しているかを判定してもよい。代替的に、受信した確認応答は、受信した1個以上のパケットの複数の設定を示すことができ、従ってどのパケットが確認応答されていないかが示唆される。
【0043】
[0045] 一実施形態において、パケット損失モジュール135は、シーケンス内で現在の複製対象パケットに先行するN-1個の複製非対象パケットのいずれかの確認応答が欠如しているか否かを判定する。
図2に示す例を参照するに、パケット損失モジュール135が一連のパケットの組の10番目のパケットの確認応答を受信して、10番目のパケットが複製されている(例えば、複製210)と判定した場合、パケット損失モジュール135は、6~9番目のパケット(例えばバースト200ではN=5、N-1=4であり、シーケンス内の10番目のパケットに先行する4個のパケットは、6番目、7番目、8番目、及び9番目のパケットである)が確認応答されているか否かを判定する。代替的に、パケット損失モジュール135は、シーケンス内の現在の複製対象パケットに先行するパケットの確認応答が欠如しているか否かを判定する(例えば、バースト200内の10番目のパケットの確認応答について、1~9番目のパケットの確認応答の欠如を評価する)。
【0044】
[0046] 先行パケットの確認応答が欠如している場合、ブロック345において、パケット損失モジュール135は、確認応答が欠如していると判定された先行パケットのコピーを再送信する。その結果、パケット損失モジュール135は、複製対象マーカーパケットの確認応答の受信に応答して、確認応答が欠如しているパケットを、例えば再送信タイマーの設定時間切れを待つことなく再送信することが可能である。
【0045】
[0047] どの先行パケットも確認応答が欠如していない、又は確認応答されていないパケットの再送が続かない場合、ブロック350において、パケット損失モジュール135は任意選択的に、宛先125へのパケット送信について、推定されたパケット損失値を更新する。例えば、パケット損失モジュール135は、宛先125に送信されたパケットのパケット損失を表すパーセンテージ又は他の値を計算することができる。1つのシーケンス内の20個のパケットのうち1個が失われた場合、パケット損失モジュール135は、宛先125へパケットを送信する際のパケット損失値を5%と計算することができる。
【0046】
[0048] 一実施形態において、推定されたパケット損失値は、後続バースト内のパケットを複製する際に用いるXの値及び/又はNの値にマッピングされる。例えば、パケット損失モジュール135は、データ構造を利用してパケット損失値又はパケット損失値の範囲をXの値及び/又はNの値にマッピングすることができる。パケット損失値が増大するにつれて、X及び/又はNの値も増大する。一実施形態において、パケット損失モジュール135は、パケット損失値が閾値を超えたか否かを判定し、超えた場合、パケットを複製する必要がないと判定する。例えば、パケット損失が12%又は他の閾値を超えた場合、パケット損失モジュール135は、宛先125が無線接続を喪失する恐れがある、又は方法300によるパケットの再送に利点がないと判定することができる。
【0047】
[0049] 任意選択的ブロック350に続いて、方法300はブロック335に戻って一連のパケットの組内に確認応答すべき追加的なパケットが残っているか否かを判定する。
【0048】
[0050] 上の記述から、本発明の態様が少なくとも一部はソフトウェアで実現可能であることは明らかであろう。すなわち、パケット損失モジュール135及び/又はコンピュータ実行方法300は、コンピュータシステム又はノード110、115、及び/又は120等の他のデータ処理システムにおいて、メモリ又は他の非一時的機械可読記憶媒体に含まれる命令のシーケンスを自身のプロセッサが実行したことに応答して、実装又は実行されてよい。ソフトウェアは更に、ネットワークインターフェースを介してネットワーク(図示せず)経由で送信又は受信されてよい。各種の実施形態において、配線回路をソフトウェア命令と組み合わせて用いて本実施形態を実行してもよい。このように、上述の技術はハードウェア回路とソフトウェアのいかなる特定の組み合わせにも、又はノード110、115、及び/又は120により実行される命令のいかなる特定の発行元にも限定されない。図示しない追加的な要素も又、ノード110、115、及び/又は120の一部であってよく、及び特定の実施形態において、
図1に示すよりも少ない個数の部品をノード110、115、及び/又は120で用いてもよいことが理解されよう。
【0049】
[0051] 製品を用いて上述の実施形態の機能の少なくとも一部を提供するプログラムコードを格納してもよい。又、製品を用いて、上述の実施形態の機能の少なくとも一部を用いて生成されたプログラムコードを格納してもよい。プログラムコードを格納する製品は、1個以上のメモリ(例えば、静的、動的、又は他の1個以上のフラッシュメモリ、ランダムアクセスメモリ)、光ディスク、CD-ROM、DVD-ROM、EPROM、EEPROM、磁気又は光カード、固体ドライブ(SSD)、又は電子命令の保存に適した他の種類の非一時的コンピュータ可読媒体として実現できるが、これらに限定されない。又、本発明の実施形態は、FPGA、ASIC、プロセッサ、コンピュータ、又はネットワークを含むコンピュータシステムを利用するハードウェア又はファームウェアに実装されてよいが、これらに限定されない。ハードウェア又はソフトウェアを実装したモジュール及び要素は本発明の実施形態を大幅に変更することなく分割又は組み合わせることができる。
【0050】
[0052] 本明細書において、本発明について特定の例示的な実施形態に関して記述してきた。本発明の各種の実施形態及び態様について本明細書で議論した詳細事項に関して記述しており、添付の図面に各種の実施形態を示している。上の記述及び図面は、本発明を図解するものであって、本発明を限定するものと解釈してはならない。本明細書における「ある実施形態」、「一実施形態」、「例示的な一実施形態」等への言及は、記述する実施形態が特定の機能、構造、又は特徴を含み得ることを示すが、必ずしも全ての実施形態が特定の機能、構造、又は特徴を含んでいる訳ではない。更に、このような語句は必ずしも同一の実施形態を指す訳ではない。更に、特定の機能、構造、又は特徴がある実施形態と関連付けて記述されている場合、そのような機能、構造、又は特徴は、明示的に記述されているか否かに依らず、他の実施形態と関連付けて実装されていてよい。又、本明細書で用いる用語「例示的」は、単に例又は図解に過ぎない実施形態を指している。「例示的」の使用な好適な例を示すものと解釈してはならない。破線の境界を有するブロック(例:粗い破線、細かい破線、一点鎖線、点線)を用いて、本発明の実施形態に追加的な特徴を加える仮想化されたリソース又は、フロー図における任意選択的動作を示す。しかし、このような表記は、唯一の任意選択肢又は任意選択的動作である、及び/又は実線境界を有するブロックは本発明の特定の実施形態において任意選択でないことを意味するものと解釈すべきでない。本発明の各種実施形態が完全に理解されるよう多数の特定の詳細事項を記述している。しかし、特定の実施態様において、本発明の実施形態を簡潔に説明すべく、公知又は従来方式の詳細事項は記述していない。
【0051】
[0053] 以下の請求項に開示する本発明のより広範な趣旨及び範囲から逸脱することなく、各種の変更を行えることは明らかであろう。例えば、本明細書に記述する方法は、より少ない又は多くの特徴/ブロックにより実行することができ、又は特徴/ブロックは異なる順序で実行することができる。又、本明細書に記述する方法は、繰り返し、又は互いに並列に実行されても、或いは同一又は同様の方法の異なる実施態様と並列に実行されてもよい。