説明

パケットロス判定装置及びパケットロス判定方法

【課題】フラグメントパケットのパケットロスをリアルタイムに検出する。
【解決手段】受信部11によりフラグメントパケットを受信し、パケット処理部13により、そのフラグメントパケットが最後のフラグメントパケットであるか否かを判定し、パケットロス判定部14により、最後のフラグメントパケットを受信したときに、全てのフラグメントパケットを受信していない場合であって、所定の時間内に未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定する。これにより、フラグメントパケットの到着順序の入れ替えを考慮しつつ、リアルタイムなパケットロス検出が可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、受信したフラグメントパケットのパケットロスの検出を行う技術に関する。
【背景技術】
【0002】
RTP(Real-time Transport Protocol)パケットのロス判定は既存方式が複数存在する。例えば、特許文献1においては、フラグメントパケットを考慮したロス検出方法が記載されている。特許文献2においては、パケットロス率に基づく送信レート制御手法について記載されている。また、特許文献3においては、バーストロスも含めたパケットロスの発生をリアルタイムに検出する方法が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−328131号公報
【特許文献2】特開2001−144802号公報
【特許文献3】特開2005−159807号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1では、最後尾パケットを受信したときに、パケット群内のロスしたパケットの再送を要求するため、パケットの順序入れ替えなどで最後尾パケットの後に到着するパケットもロスしたと判定されてしまう。
【0005】
また、特許文献2では、受信者からのフィードバック情報に基づいてデータ送出レートを決める方式であり、パケットロスをリアルタイムに検出することはできない。
【0006】
また、特許文献3では、各パケットにシーケンス番号が付与されていることを前提としており、パケットがフラグメントされている場合は想定していない。
【0007】
本発明は、上記に鑑みてなされたものであり、その課題とするところは、フラグメントパケットのパケットロスをリアルタイムに検出することにある。
【課題を解決するための手段】
【0008】
第1の本発明に係るパケットロス判定装置は、フラグメントパケットを受信する受信手段と、フラグメントパケットを受信したときに、当該フラグメントパケットが1つのパケットを分割した一連のフラグメントパケットの最後のフラグメントパケットであるか否かを判定するパケット処理手段と、最後のフラグメントパケットを受信したときに、当該最後のフラグメントパケットが属する一連のフラグメントパケットの全てのフラグメントパケットを受信していない場合であって、最後のフラグメントパケットを受信してから所定の時間内にその未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定するパケットロス判定手段と、を有することを特徴とする。
【0009】
第2の本発明に係るパケットロス判定方法は、フラグメントパケットを受信するステップと、フラグメントパケットを受信したときに、当該フラグメントパケットが1つのパケットを分割した一連のフラグメントパケットの最後のフラグメントパケットであるか否かを判定するステップと、最後のフラグメントパケットを受信したときに、当該最後のフラグメントパケットが属する一連のフラグメントパケットの全てのフラグメントパケットを受信していない場合であって、最後のフラグメントパケットを受信してから所定の時間内にその未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定するステップと、を有することを特徴とする。
【発明の効果】
【0010】
本発明にあっては、フラグメントパケットを受信し、そのフラグメントパケットが最後のフラグメントパケットであって、全てのフラグメントパケットを受信していない場合に、所定の時間内に未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定することにより、フラグメントパケットの到着順序の入れ替えを考慮した、リアルタイムなパケットロス検出が可能となる。
【0011】
このように、本発明によれば、フラグメントパケットのパケットロスをリアルタイムに検出することができる。
【図面の簡単な説明】
【0012】
【図1】一実施の形態におけるパケットロス検出装置の構成を示すブロック図である。
【図2】上記パケットロス検出装置のパケットロス判定処理の処理の流れを示すフローチャートである。
【図3】フラグメントパケットを処理する流れを示すフローチャートである。
【図4】フラグメントパケットのヘッダーを示す図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について図面を用いて説明する。
【0014】
図1は、本実施の形態におけるパケットロス検出装置の構成を示すブロック図である。同図に示すパケットロス検出装置1は、受信部11、タイマー12、パケット処理部13、およびパケットロス判定部14を備える。パケットロス検出装置1は、演算処理装置、記憶装置、メモリ等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムはパケットロス検出装置1が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【0015】
受信部11は、大きなパケットをいくつかに分割したフラグメントパケットなどのパケットを受信する。
【0016】
タイマー12は、パケットロスを検出するための時間を測定する。例えば、1つのパケットをいくつかに分割した一連のフラグメントパケットのいずれかが未受信の場合、そのフラグメントパケットの到着を待つ時間を測定する。
【0017】
パケット処理部13は、パケットの種類、パケットに含まれるデータ、あるいは分割された最後のフラグメントパケットであるか否かなど、受信したパケットを解析する。
【0018】
パケットロス判定部14は、所定の時間内にパケットが到着しなかったときなどにパケットロスが発生したと判定する。例えば、最後のフラグメントパケットを受信したときに一連のフラグメントパケットのうちのいずれかが未受信の場合、最後のフラグメントパケットを受信してから所定の時間内にその未受信のフラグメントパケットを受信できないときにパケットロスが発生したと判定する。なお、最後のフラグメントパケットの受信の有無に関わらず、所定の時間経過したときにパケットロスが発生したと判定する方法もある。また、パケットにシーケンス番号が付されている場合は、受信したシーケンス番号が連続していないときにパケットロスが発生したと判定する。
【0019】
次に、フラグメントパケットのパケットロス判定処理の流れについて説明する。図2は、パケットロス判定処理の処理の流れを示すフローチャートである。
【0020】
まず、フラグメントパケットを受信したとき(ステップS201)、一連のフラグメントパケットのうちの最後のフラグメントパケットを受信しているか否か判定する(ステップS202)。最後のフラグメントパケットを受信していない場合は、ステップS201へ戻り、次のパケットの到着を待つ。なお、受信したフラグメントパケットが最後であるか否かは、フラグメントパケットに付された情報により知ることができる。
【0021】
最後のフラグメントパケットを受信していた場合(受信したパケットが最後のフラグメントパケットである場合も含む)、その最後のフラグメントパケットが属する一連のフラグメントパケットを全て受信しているか否か確認し(ステップS203)、すべてのフラグメントパケットを受信していた場合は、「正常」と判定する。一連のフラグメントパケットには同じフラグメントIDが付されている、つまり、大きなパケットをいくつかのフラグメントパケットに分割した場合、そのフラグメントパケットそれぞれには同じフラグメントIDが付される。同じフラグメントIDを有するフラグメントパケットの総受信サイズ、あるいは、受信個数を調べることで一連のフラグメントパケットを全て受信しているか否か判定できる。
【0022】
一方、最後のフラグメントパケットを受信したが、まだ受信していないフラグメントパケットがある場合は、所定の時間を設定してステップS201へ戻り、未受信のフラグメントパケットの到着を待つ。このとき、設定した時間内にその未受信のフラグメントパケットが受信できない場合は、パケットロスが発生したと判定する(ステップS201)。
【0023】
ここで、一連のフラグメントパケットの全てを受信したか否かの判定について説明する。ステップS202において、受信したフラグメントパケットが最後のフラグメントパケットであった、あるいは、受信したフラグメントパケットと同じ一連のフラグメントパケットの最後のフラグメントパケットを受信していた、と判定された場合は、ステップS203においてその一連のフラグメントパケットを全て受信したか否かを判定する。
【0024】
例えば、最後のフラグメントパケットのオフセット値およびペイロード長から、一連のフラグメントパケットのサイズの合計を算出し、実際に受信したフラグメントパケットのサイズの合計と比較することで、一連のフラグメントパケットを全て受信したか否か判定できる。オフセット値は、そのフラグメントパケットが有するデータが分割前のパケットのどの位置のものであるのかを示す。また、ペイロード長は、そのフラグメントパケットが有するデータのサイズを示す。なお、一連のフラグメントパケットのサイズの合計、つまり、分割前のパケットのサイズは、分割前のパケットのヘッダーから求めることもできる。
【0025】
あるいは、MTU(Maximum Transmission Unit)サイズからフラグメントパケットの個数を推定しておき、同じフラグメントIDを有するフラグメントパケットをその個数だけ受信したことをもって「正常」と判定できる。
【0026】
また、未受信のフラグメントパケットが到着したか否かを調べる方法として、未受信のフラグメントパケットのオフセット値をキーとして待ち受け、所望のフラグメントIDおよびオフセット値を有するフラグメントパケットを受信したことでもって「正常」と判定できる。
【0027】
次に、上記パケットロス検出装置1のパケット処理部13の処理について具体例を挙げて説明する。
【0028】
図3は、パケット処理部13の処理の流れを示すフローチャートである。同図に示す例では、IPv6により複数のフラグメントパケットに分割されたRTPパケットを受信する例を示す。もちろん、分割されていないRTPパケットを受信するものでもよい。図4にフラグメントパケットのヘッダーを解析した例を示す。
【0029】
まず、パケットを受信すると、受信したパケットがIPv6であるか否か判定し(ステップS301)、受信したパケットがIPv6でない場合は次のパケットの到着を待つ。受信したパケットがIPv6であるか否かは、図4の Type の項目を調べることにより判定できる。
【0030】
受信したパケットがIPv6である場合、そのパケットがフラグメントパケットであるか否か判定し(ステップS302)、フラグメントパケットでない場合は次のパケットの到着を待つ。フラグメントパケットであるか否かは、図4の Next header の項目を調べることにより判定できる。
【0031】
続いて、そのフラグメントパケットが1番目のフラグメントパケットであるか否かを調べる(ステップS303)。図4の Fragmentation Header 中の Offset (オフセット値)が0である場合、そのフラグメントパケットは1番目のフラグメントパケットである。1番目のフラグメントパケットが最後のフラグメントパケットであることはない。
【0032】
受信したパケットが1番目のフラグメントパケットである場合、そのパケットに含まれるUDPパケットのデータ部に格納されたRTPパケットからRTPシーケンス番号を取得して、前に受信したRTPパケットのRTPシーケンス番号と連続しているか否か調べる(ステップS304)。RTPシーケンス番号が連続していない場合はパケットロスと判定する。
【0033】
そして、1番目のフラグメントパケットからフラグメントIDと Payload length 値を取得して記憶手段に記憶させる(ステップS305)。フラグメントIDは、図4の Fragmentation Header の Identification の値である。Payload length 値は、IPv6のヘッダを含まないペイロードの長さを示す。
【0034】
さらに、1番目のフラグメントパケットに含まれるUDPの Length 値を取得して記憶手段に記憶させる(ステップS306)。取得した Length 値は、分割したパケットの長さ、つまり、全てのフラグメントパケットを受信した場合のデータのサイズを示す。
【0035】
一方、受信したパケットが1番目のフラグメントパケットではない場合、そのフラグメントパケットからフラグメントIDと Payload length 値を取得して記憶手段に記憶させ(ステップS307)、最後のフラグメントパケットを受信したか否かを判定する(ステップS308)。最後のフラグメントパケットであるか否かは、図4の Fragmentation Header の More Fragment を調べることで分かる。More Fragment が0である場合、そのフラグメントパケットは最後のフラグメントパケットである。まだ最後のフラグメントパケットを受信していない場合は、次のパケットの到着を待つ。
【0036】
最後のフラグメントパケットを受信した場合、あるいは、最後のフラグメントパケットを受信していた場合、すべてのフラグメントパケットを受信したか否か判定する(ステップS309)。すべてのフラグメントパケットを受信したか否かは、ステップS306で取得したUDPの Lenghth 値と、ステップS305,S307で取得した同一フラグメントIDの、Payload length 値の合計とを比較することにより行う。UDPの Length 値と Payload length 値の合計が同じであれば、すべてのフラグメントパケットを受信しているので、次のパケットの到着を待つ。
【0037】
すべてのフラグメントパケットを受信していない場合は、所定の時間を計測するタイマーを起動して次のパケットの到着を待つ。所定の時間内に未受信のフラグメントパケットが受信できない場合は、パケットロスと判定する(図2のステップS201)。
【0038】
以上説明したように、本実施の形態によれば、受信部11によりフラグメントパケットを受信し、パケット処理部13により、そのフラグメントパケットが最後のフラグメントパケットであるか否かを判定し、パケットロス判定部14により、最後のフラグメントパケットを受信したときに、全てのフラグメントパケットを受信していない場合であって、所定の時間内に未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定することにより、フラグメントパケットの到着順序の入れ替えを考慮しつつ、リアルタイムなパケットロス検出が可能となる。
【符号の説明】
【0039】
1…パケットロス検出装置
11…受信部
12…タイマー
13…パケット処理部
14…パケットロス判定部

【特許請求の範囲】
【請求項1】
フラグメントパケットを受信する受信手段と、
前記フラグメントパケットを受信したときに、当該フラグメントパケットが1つのパケットを分割した一連のフラグメントパケットの最後のフラグメントパケットであるか否かを判定するパケット処理手段と、
前記最後のフラグメントパケットを受信したときに、当該最後のフラグメントパケットが属する前記一連のフラグメントパケットの全てのフラグメントパケットを受信していない場合であって、前記最後のフラグメントパケットを受信してから所定の時間内にその未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定するパケットロス判定手段と、
を有することを特徴とするパケットロス判定装置。
【請求項2】
フラグメントパケットを受信するステップと、
前記フラグメントパケットを受信したときに、当該フラグメントパケットが1つのパケットを分割した一連のフラグメントパケットの最後のフラグメントパケットであるか否かを判定するステップと、
前記最後のフラグメントパケットを受信したときに、当該最後のフラグメントパケットが属する前記一連のフラグメントパケットの全てのフラグメントパケットを受信していない場合であって、前記最後のフラグメントパケットを受信してから所定の時間内にその未受信のフラグメントパケットを受信できないときにはパケットロスが発生したと判定するステップと、
を有することを特徴とするパケットロス判定方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−166244(P2010−166244A)
【公開日】平成22年7月29日(2010.7.29)
【国際特許分類】
【出願番号】特願2009−5954(P2009−5954)
【出願日】平成21年1月14日(2009.1.14)
【出願人】(399040405)東日本電信電話株式会社 (286)
【Fターム(参考)】