JP2009130853A - パケットリアセンブル装置およびプログラム - Google Patents
パケットリアセンブル装置およびプログラム Download PDFInfo
- Publication number
- JP2009130853A JP2009130853A JP2007306415A JP2007306415A JP2009130853A JP 2009130853 A JP2009130853 A JP 2009130853A JP 2007306415 A JP2007306415 A JP 2007306415A JP 2007306415 A JP2007306415 A JP 2007306415A JP 2009130853 A JP2009130853 A JP 2009130853A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- entry
- data
- reassembling
- reassembly
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】MTUの制約により断片化されたパケットのリアセンブル処理に必要なリソースの再配分を適切かつ迅速に行う。
【解決手段】リアセンブル中のパケットのデータを一時的に格納するバッファのアドレス等をそれぞれが有するリアセンブル管理テーブル20内の複数の登録エントリを、パケットの断片が最後に受信された順にポインタ28,30で連結し、この連結を維持する。リソース再配分のためにデータを廃棄する必要が生じたとき、先頭エントリポインタ36がポイントするエントリが示すデータを廃棄する。
【選択図】図3
【解決手段】リアセンブル中のパケットのデータを一時的に格納するバッファのアドレス等をそれぞれが有するリアセンブル管理テーブル20内の複数の登録エントリを、パケットの断片が最後に受信された順にポインタ28,30で連結し、この連結を維持する。リソース再配分のためにデータを廃棄する必要が生じたとき、先頭エントリポインタ36がポイントするエントリが示すデータを廃棄する。
【選択図】図3
Description
本発明は、通信路を通過するパケットの最大サイズ(MTU:Maximum Transmission Unit)の制約等により複数の断片に断片化されたパケットをリアセンブルするパケットリアセンブル装置およびそれをコンピュータに実現させるプログラムに関する。
近年のインターネット普及に伴う通信量の著しい増加により、通信機器(例えば移動通信システムの基地局および移動機)でのデータ受信において、受信バッファ等のリソース不足が懸念される。
特に通信路を通過するパケットの最大サイズの制約等により、複数の断片に断片化されたパケットのリアセンブル処理では、断片が全て揃いリアセンブルが完了するまでリアセンブル処理用リソース(メモリ領域)を確保したままであり、リソース不足に陥りやすい。また、通信路の途中で断片が欠落した場合は、リアセンブル完了待ち期限を経過し処理を中止するまでリアセンブル処理用リソースを解放しないため、無意味なリソース保持が生じる。
リアセンブル処理用リソースを使いきった状態から、さらに断片を受信した場合、通常、新しく到着した断片を廃棄することになるが、前述したような断片欠落などのためにリアセンブルを完了することができないパケットのための無意味なリソース保持が生じ得ることを考えると、効率的な通信とは言えない。
下記特許文献1,2には、パケットのリアセンブル処理に関するものではないが、到着時刻の古いパケットを廃棄することが記載されている。
したがって本発明の目的は、パケットのリアセンブル処理におけるリソースの管理を適切に行うことにある。
上記の課題は、リアセンブル中のパケットの断片のデータをパケットごとに格納して結合するデータ結合バッファと、リアセンブル中のパケットにそれぞれ対応する複数のエントリを格納するリアセンブル管理テーブルと、該データ結合バッファと該リアセンブル管理テーブルを用いてパケットの断片を結合し、データ結合バッファ内のデータのいずれかをリアセンブル途中で廃棄すべきとき、最後に断片を受け取った時刻が最も古いパケットのデータを廃棄するリアセンブル処理ブロックとを具備するパケットリアセンブル装置により達成される。
最後に断片を受信した時刻が最も古いパケットについては、長時間、断片を受信していないことから、断片欠落によりリアセンブルを完了することができないパケットであるものと推測することができる。したがってそのようなパケットのリアセンブル処理を中止し、当該リソースを解放したうえで、新しく到着した断片のリアセンブル処理にリソースを再配分することで、パケットのリアセンブル処理におけるリソースの管理を適切に行うことができる。
前述の装置において、前記リアセンブル処理ブロックは、前記リアセンブル管理テーブル内の複数のエントリを、対応するパケットの断片が最後に受け取られた順に連結し、かつ、この連結を維持し、データ結合バッファ内のデータのいずれかをリアセンブル途中で廃棄すべきとき、連結の先頭のエントリが示すデータを廃棄するように構成することが好ましい。
最後に断片を受け取った時刻が最も古いパケットを決定するには、パケット毎に最後に断片を受け取った時刻を記憶し、それらを比較することになる。しかしながら、リアセンブル処理中のパケットが多量である場合、それらのそれぞれについて最後に断片を受け取った時刻を取得し、相互に比較して廃棄すべきパケットを決定する処理に時間を要することになり、これは伝送遅延につながる可能性がある。そこで、上記のように、リアセンブル管理テーブル内の各エントリをパケットの断片が最後に受け取られた時刻の順に連結し、連結の先頭のエントリが示すデータを廃棄するように構成することでリソース再配分の処理を短時間で完了することができる。
図1は本発明の一実施形態に係るパケットリアセンブル装置の構成の一例を示す。このパケットリアセンブル装置は、例えば、移動通信システムの基地局および移動機において、無線区間のMTU(Maximum Transmission Unit)の制限のために断片化されたパケットの断片を結合して元のパケットを復元するために設けられる。
図1において、受信部10から出力されるパケットはA1,A2,・・・;B1,B2・・・のように分割(断片化)されており、リアセンブル処理ブロック12がこれらを結合(リアセンブル)してパケットA,B・・・を復元し、アプリケーション14へ渡す。リアセンブル処理ブロック12は、リアセンブルが完了するまで、受信されたパケットの断片のデータをメモリ16上のデータ結合用バッファ領域18に格納し、その格納アドレス、受信済バイト数等は、同じくメモリ16上のリアセンブル管理テーブル20に格納される。
図2は本発明の第1の実施形態に係るパケットリアセンブル装置における、メモリ16上のリアセンブル管理テーブル20とデータ結合用バッファ領域18の構成の一例を示す。
データ結合用バッファ領域18には、矢印19で示すようにリアセンブル処理中のパケット毎に受信済のパケットのデータが順次格納され、元のパケットが復元される。データ結合用バッファ領域18に必要なメモリ領域はパケットの断片が受信されるごとに必要に応じてハントされる。
リアセンブル管理テーブル20には、予め定められた数のエントリ(図示した例ではエントリ0〜エントリ99の100個のエントリ)が用意されている。各エントリは、矢印23で示すように、それに対応するリアセンブル処理中パケットのデータが格納されているバッファのアドレス22と、リアセンブル処理用の情報(パケット長、受信済バイト数)24と、断片最終受信時刻26を保持する。リアセンブル管理テーブル20の各エントリへのアクセスは、矢印25で示すように、受信パケットに含まれる、各パケットにユニークな要素(例えば、IPプロトコルが使用されている場合、発信元および宛先のIPアドレス、パケットの識別子など)から0〜99のハッシュ値を計算することにより行なわれる。
すなわち、リアセンブル管理テーブル20は一種のハッシュテーブルである。異なるパケットから計算されるハッシュ値が同じ値である場合、すなわちハッシュ値の衝突が発生した場合には、二重ハッシュ法などの周知の手法でこれを回避することができる。
リアセンブル管理テーブル20については、上記の構成に限られず、例えば、新たなパケットのリアセンブルが開始されるごとにテーブルの先頭から順に空き領域を見付け出してエントリを登録する構成も可能である。しかしながら、エントリの数が多量にある場合に、アクセスに時間を要することになる。
図2に示した第1の実施形態においては、リアセンブル管理テーブル20の各エントリが断片最終受信時刻26を保持しているので、リソースを再配分する必要が生じた時には、これらを比較することにより最後に断片を受信した時刻が最も古いものを決定してそのデータを廃棄することができる。
しかしながら、リアセンブル処理中のパケットが多量にある場合、それらのそれぞれについて断片最終受信時刻を取得し、相互に比較する処理には時間を要することになり、伝送遅延につながる可能性がある。
図3は、この点を解決した、本発明の第2の実施形態に係るパケットリアセンブル装置における、リアセンブル管理テーブル20の構成の一例を示す。データ結合用バッファ領域18については図示が省略されている。
図3に示したリアセンブル管理テーブル20の各エントリは、図2の断片最終受信時刻26を保持する代わりに、前エントリポインタ28および次エントリポインタ30を保持することでチェーンで連結されている。新たに設けられるチェーン管理テーブル32はチェーンの先頭を示す先頭エントリポインタ34とチェーンの末尾を示す末尾エントリポインタ36を保持している。リアセンブル管理テーブル20のすべての登録エントリは、断片最終受信時刻の順にチェーンで連結されており、チェーン管理テーブル32の先頭エントリポインタ34はチェーンの先頭を示している。したがって、先頭エントリポインタ34が示すエントリが断片最終受信時刻が最も古いエントリとなるので、リソースを再配分する必要が生じた際には、先頭エントリポインタ34が示すチェーンの先頭のエントリが示すリアセンブル中パケットのデータを廃棄してリソースを再配分することにより、適切なリソース管理を短時間で達成することができる。
なお、図3では、図を簡潔にするため、リアセンブル管理テーブル20のエントリ0がチェーン先頭のエントリ、エントリ99がチェーン末尾のエントリになっているが、実際には、エントリの格納装置(0〜99の番号)は、IPアドレス、識別番号などの、パケットに含まれるユニークな要素から計算され、各エントリはパケットの断片最終受信時刻の順に連結されるので、必ずしもこのようになるとは限らない。
以下、上記のようなチェーンを維持しつつエントリを追加・更新・削除する操作手順を具体的に説明する。
図4は、リアセンブル中のパケットがない状態(初期状態)において、断片を受信したときのチェーン操作を説明する図である。パケットに含まれるユニークな要素から計算される0〜99のハッシュ値をIとすると、前エントリポインタ28および次エントリポインタ30がいずれもNullに設定されたエントリIが登録され、チェーン管理テーブル32の先頭エントリポインタ34と末尾エントリポインタ36はいずれもこのエントリIをポイントするように変更される。
図5は、図4の状態において、ハッシュ値Jのパケットの断片を新たに受信したときのチェーン操作を示す。この場合、エントリJが新たに登録され、これをチェーンの末尾とするため、エントリJの前エントリポインタは以前チェーンの末尾であったエントリIをポイントするように設定され、次エントリポインタはNullと設定される。以前チェーンの末尾であったエントリIの次エントリポインタはNullからJに変更され、チェーン管理テーブル32の末尾エントリポインタ36はIからJに変更される。
図6は、図3に示す状態において、新たな断片の受信により、チェーンの途中に位置するエントリNが示すパケットのリアセンブルが完了したときのチェーン操作を示す。この場合には、エントリNをチェーンから外すために、エントリNの前エントリポインタが示すエントリN−1の次エントリポインタをNからエントリNの次エントリポインタであるN+1に変更し、エントリNの次エントリポインタが示すエントリN+1の前エントリポインタをNからエントリNの前エントリポインタであるN−1に変更する。チェーン管理テーブル32の先頭エントリポインタ34と末尾エントリポインタ36は変更されない。
図7は、図3の状態において、チェーンの先頭に位置するエントリ0が示すパケットのリアセンブルが完了したときのチェーン操作を示す。この場合には、先頭エントリポインタ34が0からエントリ0の次エントリであった1に変更され、エントリ1の前エントリポインタが0からNullに変更される。
図8は、図3の状態において、チェーンの末尾に位置するエントリ99が示すパケットのリアセンブルが完了したときのチェーン操作を示す。この場合には、チェーン管理テーブルの末尾エントリポインタ36が99からエントリ99の前エントリであった98に変更され、エントリ98の次エントリポインタが99からNullに変更される。
図9は、図3に示す状態において、チェーンの途中に位置するエントリNが示すパケットの断片を受信したが、それによってもリアセンブルが完了しない場合のチェーン操作を示す。この場合には、エントリNをいったんチェーンから外してチェーン末尾に再接続するチェーン操作が行なわれる。すなわち図9において、エントリNをいったんチェーンから外すために、エントリNの前エントリであったエントリN−1の次エントリポインタが、Nから、エントリNの次エントリであったN+1に変更され、エントリNの次エントリであったエントリN+1の前エントリポインタが、Nから、エントリNの前エントリであったN−1に変更される、次に、エントリNをチェーンの末尾に再接続するため、末尾エントリであったエントリ99の次エントリポインタがNullからNに変更され、エントリNの前エントリポインタがN−1から99に変更され、次エントリポインタがN+1からNullに変更される。そして、チェーン管理テーブル32の末尾エントリポインタ36は99からNに変更される。
図10は、図3に示す状態において、チェーン先頭のエントリ0が示すパケットの断片を受信したが、それによってもリアセンブルが完了しない場合のチェーン操作を示す。この場合にも同様にエントリ0をいったんチェーンから外し、チェーン末尾に再接続する。チェーン管理テーブル32の先頭エントリポインタ34は0から1に変更され、末尾エントリポインタ36は99から0に変更される。
チェーン末尾のエントリのパケットの断片が受信され、それによってもリアセンブルが完了しない場合には、チェーン操作は行なわれない。
以上の操作により、リアセンブル管理テーブル内の各登録エントリは、断片が最後に受信された時刻(断片最終受信時刻)の順に連結され、この連結は常に維持されるので、チェーン管理テーブルの先頭エントリポインタは断片最終受信時刻が最も古いエントリを常にポイントしており、このようなエントリを廃棄の対象とするリソース再配分処理を迅速に達成することができる。
上記のような処理とそれに用いるデータの構造は、コンピュータと、コンピュータにこれらを実現させるべくプログラムされたソフトウェアにより実現することができる。
Claims (5)
- リアセンブル中のパケットの断片のデータをパケットごとに格納して結合するデータ結合バッファと、
リアセンブル中のパケットにそれぞれ対応する複数のエントリを格納するリアセンブル管理テーブルと、
該データ結合バッファと該リアセンブル管理テーブルを用いてパケットの断片を結合し、データ結合バッファ内のデータのいずれかをリアセンブル途中で廃棄すべきとき、最後に断片を受け取った時刻が最も古いパケットのデータを廃棄するリアセンブル処理ブロックとを具備するパケットリアセンブル装置。 - 前記リアセンブル処理ブロックは、前記リアセンブル管理テーブル内の複数のエントリを、対応するパケットの断片が最後に受け取られた順に連結し、かつ、この連結を維持し、データ結合バッファ内のデータのいずれかをリアセンブル途中で廃棄すべきとき、連結の先頭のエントリが示すデータを廃棄する請求項1記載の装置。
- 前記リアセンブル管理テーブル内の各エントリの格納位置は、パケットに含まれるパケット毎にユニークな要素から決定される請求項1または2記載の装置。
- 前記リアセンブル管理テーブル内の各エントリは、対応するリアセンブル中パケットについての全データ長および格納済データ長を含む請求項1〜3のいずれか1項記載の装置。
- コンピュータに請求項1〜4のいずれか1項記載の装置を実現させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007306415A JP2009130853A (ja) | 2007-11-27 | 2007-11-27 | パケットリアセンブル装置およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007306415A JP2009130853A (ja) | 2007-11-27 | 2007-11-27 | パケットリアセンブル装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009130853A true JP2009130853A (ja) | 2009-06-11 |
Family
ID=40821294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007306415A Pending JP2009130853A (ja) | 2007-11-27 | 2007-11-27 | パケットリアセンブル装置およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009130853A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011035484A (ja) * | 2009-07-30 | 2011-02-17 | Nec Commun Syst Ltd | パケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラム |
CN110730143A (zh) * | 2015-11-11 | 2020-01-24 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06152686A (ja) * | 1992-11-10 | 1994-05-31 | Matsushita Electric Ind Co Ltd | タイマ管理装置 |
JP2005072664A (ja) * | 2003-08-26 | 2005-03-17 | Toshiba Corp | 無線lan装置 |
-
2007
- 2007-11-27 JP JP2007306415A patent/JP2009130853A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06152686A (ja) * | 1992-11-10 | 1994-05-31 | Matsushita Electric Ind Co Ltd | タイマ管理装置 |
JP2005072664A (ja) * | 2003-08-26 | 2005-03-17 | Toshiba Corp | 無線lan装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011035484A (ja) * | 2009-07-30 | 2011-02-17 | Nec Commun Syst Ltd | パケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラム |
CN110730143A (zh) * | 2015-11-11 | 2020-01-24 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
CN110730143B (zh) * | 2015-11-11 | 2020-12-04 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10652147B2 (en) | Packet coalescing | |
US7957392B2 (en) | Method and apparatus for high-performance bonding resequencing | |
US7564847B2 (en) | Flow assignment | |
TWI306711B (en) | Message context based tcp transmission | |
US9385957B1 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
TWI332150B (en) | Processing data for a tcp connection using an offload unit | |
JP4779955B2 (ja) | パケット処理装置及びパケット処理方法 | |
JP4872952B2 (ja) | Tcpバッファコピー分散並列処理装置、方法及びプログラム | |
CN109246036B (zh) | 一种处理分片报文的方法和装置 | |
KR20120070595A (ko) | 패킷 처리 장비내에서의 플로우 데이터의 저장 관리 방법 및 패킷 처리 장비 | |
US7721086B2 (en) | Packet-parallel high performance cryptography systems and methods | |
US6026093A (en) | Mechanism for dispatching data units via a telecommunications network | |
CN113891396B (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
CN110958331A (zh) | 一种数据传输方法及终端 | |
US7969977B2 (en) | Processing apparatus and method for processing IP packets | |
US9015438B2 (en) | System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores | |
CN109726144B (zh) | 一种数据报文的处理方法和装置 | |
JP2009130853A (ja) | パケットリアセンブル装置およびプログラム | |
CN114257545A (zh) | 一种报文转发方法及装置 | |
US8441953B1 (en) | Reordering with fast time out | |
US20060098659A1 (en) | Method of data packet transmission in an IP link striping protocol | |
WO2004107800A1 (en) | A method of recombining data units | |
US20160344691A1 (en) | Packet transmission system, packet transmission apparatus, and packet transmission method | |
CN117424866A (zh) | 一种基于乱序重排的数据存储方法、装置及介质 | |
CN117424862A (zh) | 报文转发方法、装置、设备及芯片系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100715 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111014 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111025 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120228 |