JP7309384B2 - 通信装置、通信装置の制御方法およびプログラム - Google Patents
通信装置、通信装置の制御方法およびプログラム Download PDFInfo
- Publication number
- JP7309384B2 JP7309384B2 JP2019033938A JP2019033938A JP7309384B2 JP 7309384 B2 JP7309384 B2 JP 7309384B2 JP 2019033938 A JP2019033938 A JP 2019033938A JP 2019033938 A JP2019033938 A JP 2019033938A JP 7309384 B2 JP7309384 B2 JP 7309384B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- received
- communication device
- stored
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims description 131
- 238000000034 method Methods 0.000 title claims description 31
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 239000000872 buffer Substances 0.000 claims description 162
- 238000012545 processing Methods 0.000 description 30
- 230000015654 memory Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 230000006866 deterioration Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
例えば、TCP(Transport Control Protocol)では、データにシーケンス番号を付与して管理する。受信側装置は、受信したデータに付与されたシーケンス番号に基づき、受信したデータを受信バッファに格納し、受信済みの最終データを示すシーケンス番号を確認応答(Acknowledge、以下「ACK」という。)パケットとして送信側装置に通知する。
このため、受信バッファで管理されるデータの量が増加するのに比例して、新たに受信したデータの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまい、受信側装置におけるデータの受信性能が低下しかねない。
従って、受信バッファで管理されるデータの数が増加するのに比例して、順序通りのデータへの順序違いのデータを結合する際の、データの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまう。このため、データの受信性能が低下するおそれがあった。
<本実施形態のハードウエア構成>
図1は、本実施形態に係る通信装置のハードウエア構成の一例を示す図である。
図1の通信装置1は、RAM11、ROM12、CPU13、タイマ管理部14、メディアアクセス制御モジュール(MAC)15、物理レイヤモジュール(PHY)16、およびアンテナ18を備える。RAM11、ROM12、CPU13、タイマ管理部14、およびMAC15は、システムバス17により、通信可能に接続される。
なお、通信装置1は、上記のモジュール全てを備えなくともよく、例えばタイマ管理部14やアンテナ18等は、必要に応じて省略されてもよいし、図1の構成に加えて入出力インタフェースや外部メモリ等を備えてもよい。
ROM(Read Only Memory)12は、CPU13が各種処理を実行するために必要となる、変更を必要としない制御プログラムやパラメータ等を記憶する不揮発性メモリである。なお、これら制御プログラム等は、外部メモリや着脱可能な記憶媒体(不図示)に記憶されていてもよい。
MAC15は、PHY16およびアンテナ18を介して無線LAN(Local Area Network)等のネットワークでの通信を行うための通信部であり、IEEE802OSI参照モデルのデータリンク層中のメディアアクセス制御機能を提供する。CPU13は、ネットワークドライバを実行し、MAC15を制御して、他の装置との間でのデータの送受信を実行する。
PHY16は、アンテナ18を介して無線LAN等のネットワークでの通信を行うための通信部であり、データリンク層の下層である物理層の制御機能を提供する。
あるいは、ネットワークは、例えば、Ethernet(登録商標)等の通信規格に準拠する有線LAN(Local Area Network)等の有線ネットワークであってよく、無線LAN通信機能と有線LAN通信機能を組み合わせてもよい。
なお、ネットワークは、各機器を相互に通信可能に接続できればよく、通信の規格、規模、構成は上記に限定されない。
図2は、本実施形態に係る通信装置1の機能構成の一例を示すブロック図である。
図2に示す各装置の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがROM12等のメモリに記憶され、RAM11に読み出してCPU13が実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウエアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。この場合、専用ハードウエアはCPU11の制御に基づいて動作する。
なお、図2に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
制御部21は、通信装置1が備える各機能モジュール(22~27)を制御して、本実施形態におけるパケット送受信および受信されたパケットの受信バッファへの格納処理を含む処理を実行する。
LAN通信制御部22は、MAC15を制御し、他の通信装置とのLAN通信の制御を実行する。通信装置1が外部の無線アクセスポイント(AP)を経由して他の通信装置と接続する場合、LAN通信制御部22は、MAC15を制御して無線AP(不図示)との無線LAN通信の制御を行う。LAN通信制御部22はその他、有線LAN通信機能等、TCP/IP通信が可能な通信方式であれば他の通信方式を利用してもよい。
TCP/IP通信制御部24は、LAN通信制御部22を使用して、他の通信装置との間でTCP/IP方式の通信プロトコル処理および各種通信制御を行う。なお、TCP/IP通信制御部24は、TCP/IP方式に限らず、シーケンス番号等の順序番号でデータ順序を管理する機構を持つ他のプロトコルの通信制御部に置き換えてもよい。
連続性判定部26は、TCP/IP制御部24から使用され、受信データの連続性を判定する。具体的には、連続性判定部26は、受信バッファ管理部25により管理される受信バッファに受信データが格納される際に、シーケンス番号に基づいて、受信データと、受信バッファ内に格納されたデータとの間の連続性を判定する。
本実施形態において、連続性判定部26は、受信されるパケットと、末尾パケット記憶部27により記憶される末尾パケットとの間でシーケンス番号を比較することにより、受信データの連続性を判定する。受信バッファ管理部25は、連続性判定部26により判定された受信データの連続性に基づいて、受信バッファ中で受信データを格納すべき位置を探索するが、この受信バッファ中の格納位置探索処理の詳細は、図3から図5を参照して後述する。
図3は、通信装置1が実行するパケット受信および受信されたパケットの受信バッファへの格納処理手順の一例を示すフローチャートである。図3に示す処理は、例えば、他の通信装置からパケットを受信したことを契機に開始されてよい。
通信装置1はCPU13が必要なプログラムをROM12または外部メモリから読み出して実行することにより、図3に示す処理を実行することができる。ただし、図2に示す各要素のうち少なくとも一部が専用のハードウエアとして動作することで図3の処理が実現されるようにしてもよい。この場合、専用のハードウエアは、CPU13の制御に基づいて動作する。
S2で、通信装置1のTCP/IP通信制御部24は、連続性判定部26を使用し、S1で受信されたパケットの受信データが末尾パケット記憶部27により記録される末尾パケットのデータに連続するか否かを判定する。
具体的には、まず、通信装置1のTCP/IP通信制御部24は、LAN通信制御部22が管理するバッファから受信されたパケットを取り出す。通信装置1のTCP/IP通信制御部24は、連続性判定部26を使用して、末尾パケット記憶部27で記憶されている末尾パケットと、取り出された受信パケットとを比較することにより、両者の連続性を判定する。
末尾パケット記憶部27は、受信バッファ中に格納される末尾パケットのTCPヘッダから、少なくともシーケンス番号(先頭データ1バイトのシーケンス番号)およびデータ長(バイト数)を取得して、記憶している。連続性判定部26は、末尾パケット記憶部27のこの末尾パケットの情報を参照することにより、S2で、次に受信されることが期待されるシーケンス番号を算出することができる。
算出されたシーケンス番号が受信パケットのシーケンス番号に合致する場合、連続性判定部26は、受信パケットのデータ(受信データ)が末尾パケットのデータに連続すると判定する。一方、シーケンス番号が受信パケットのシーケンス番号に合致しない場合、連続性判定部26は、受信パケットのデータが末尾パケットのデータに連続しないと判定する。
受信データが末尾パケットのデータに連続すると判定された場合、S3で、受信バッファ管理部25は、末尾パケット記憶部27で記憶されている末尾パケットに後続するよう、受信データを受信バッファ中の末尾パケットの後に連続して格納する。
受信データが受信バッファに格納されると、S4で、通信装置1の末尾パケット記憶部27は、記憶している末尾パケットの位置(ポインタ)を、S3で格納された受信データのパケット(後続のパケット)に更新する。
具体的には、本実施形態において、受信バッファ管理部25は、受信パケットのシーケンス番号に基づいて、末尾パケット記憶部27で記憶されている末尾パケットを起点として、受信バッファ中で末尾パケットに後続するパケットのデータを探索する。受信バッファ管理部25は、受信バッファ中で後続するパケットのデータを探索して、受信バッファに格納済みのデータと受信データのシーケンス番号が連続的に整列するよう受信パケットを挿入すべき格納位置を特定する。そして、受信バッファ管理部25は、受信データを受信バッファ中の特定された格納位置へ格納する。
上記のとおり、本実施形態では、受信データが末尾パケットのデータに連続する場合であっても連続しない場合であっても、受信バッファ管理部25は、受信データを同一の受信バッファに格納する。
図4(A)は、図3のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図3のS1で受信されたパケット41は、シーケンス番号301~400が付与されたデータ4を含む。受信パケット41のデータ4が格納される前の受信バッファ42には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、およびデータ3(シーケンス番号201~300)が格納されている。図4(A)において、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
図3のS2で、通信装置1の連続性判定部26は、末尾パケット(データ3)のシーケンス番号(先頭データ:201)にデータ長100を加算して得られるシーケンス番号301が、受信パケット41のシーケンス番号に合致すると判定する。
このため、S3へ進み、通信装置1の受信バッファ管理部25は、受信パケット41のデータ4を、末尾パケット記憶部27で記憶されている末尾パケットのデータ3に後続する受信バッファ43中の位置に格納する。S4で、末尾パケット記憶部27は、受信バッファ43中の末尾パケットの記憶位置として、データ3からデータ4にポインタを更新して、処理を終了する。
図5(A)は、図3のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図3のS1で受信されたパケット51は、シーケンス番号601~700が付与されたデータ7を含む。受信パケット51の受信データ7が格納される前の受信バッファ52には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、データ3(シーケンス番号201~300)が格納されている。受信バッファ52にはさらに、データ5(シーケンス番号401~500)、およびデータ6(シーケンス番号501~600)が格納されている。図5(A)において、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
図3のS2で、通信装置1の連続性判定部26は、末尾パケット(データ3)のシーケンス番号(先頭データ:201)にデータ長100を加算して得られるシーケンス番号301が、受信パケット51のシーケンス番号に合致しないと判定する。
このため、S5へ進み、通信装置1の受信バッファ管理部25は、受信パケット51のデータ7のシーケンス番号に基づき、末尾パケット記憶部27で記憶されている末尾パケットのデータ3に後続するデータ5、データ6と探索する。受信バッファ管理部25は、受信バッファ53中のデータ6(シーケンス番号501~600)に後続する位置を、受信パケット51のデータ7の格納位置として特定し、受信バッファ53中のデータ6に後続する格納位置に、受信パケット51のデータ7を格納する。S4の処理はスキップされるため、末尾パケット記憶部27は、受信バッファ43中の末尾パケットの記憶位置を、データ3のままとして更新しない。
受信バッファに受信データを格納する際、受信バッファの先頭から受信データを格納する位置を探索することなく、記憶される末尾パケットを起点として格納位置を探索すれば足りる。
従って、シーケンス番号通りに受信したパケットを受信バッファに格納する際だけでなく、パケットロス時や再送時等、順序番号通りでないパケットを受信バッファに格納する際にも、受信データを受信バッファに格納する際の探索時間を低減することができる。これにより、パケットの受信性能の低下が有効に防止される。
以下、実施形態2を、図6および図7を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。実施形態2は、受信バッファ内に非連続の受信データが格納されている場合、受信バッファ内の受信データが連続となるデータを受信した際に、受信バッファ内の受信データを格納した後、末尾パケットの記憶位置を、受信データより後続の受信データに更新する。
図6は、実施形態2に係る通信装置1が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図6では、図3のフローチャートに対して、S6が追加されている。
S1~S5までの各処理は、図3に示すS1~S5までの処理と同様である。
S6で、通信装置1の受信バッファ管理部25は、S4で更新された、末尾パケット記憶部27で記憶されている末尾パケットに後続して、シーケンス番号が連続するパケットが存在するか否かを判定する。
図7(A)は、図6のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図6のS1で受信されたパケット71は、シーケンス番号301~400が付与されたデータ4を含む。受信パケット71の受信データ4が格納される前の受信バッファ72には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、データ3(シーケンス番号201~300)、データ5(シーケンス番号401~500)が格納されている。図7(A)において、受信バッファ72内でデータ3とデータ5とは非連続であるため、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
図6のS2で、通信装置1の連続性判定部26は、末尾パケット(データ3)のシーケンス番号(先頭データ:201)にデータ長100を加算して得られるシーケンス番号301が、受信パケット71のシーケンス番号に合致すると判定する。
このため、S3へ進み、通信装置1の受信バッファ管理部25は、受信パケット71のデータ4を、末尾パケット記憶部27で記憶されている末尾パケットのデータ3に後続する受信バッファ73中の位置に格納する。S4で、末尾パケット記憶部27は、受信バッファ73中の末尾パケットの記憶位置として、データ3からデータ4にポインタを更新する。
受信バッファに受信データを格納する際、受信バッファの先頭から受信データを格納する位置を探索することなく、記憶される末尾パケットを起点として格納位置を探索すれば足りる。先頭のデータから末尾パケット位置とされた後続のデータまでは、シーケンス番号が連続することが保証されており、更新された末尾パケットから格納位置を探索するから、受信データを受信バッファに格納する際の探索時間をさらに低減することができる。
以下、実施形態3を、図8~図11を参照して、上記の実施形態2と異なる点についてのみ詳細に説明する。実施形態3は、受信データに受信済みのデータが含まれている場合、受信データから受信バッファ中のデータと重複しない有効データを抽出して、受信バッファに格納する。
図8は、実施形態3に係る通信装置1が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図8では、図6のフローチャートに対して、S7、S8、およびS9が追加されている。
S1の処理は、図6に示すS1の処理と同様である。
具体的には、受信データが末尾パケットのデータに連続する場合、または、受信パケットのシーケンス番号が末尾パケットのデータに後続するシーケンス番号以下である場合(S7:Y)、S2に進む。一方、末尾パケットのデータに後続するシーケンス番号、すなわち次に到来すると期待される受信データのシーケンス番号よりも、受信パケットのシーケンス番号が大きい場合(S7:N)、S5に進んで、受信バッファ中の受信データの挿入位置を探索する。
S3~S6の各処理は、図6に示すS3~S6の各処理と同様である。
S8で、通信装置1の受信バッファ管理部25は、S1で受信されたパケットに、未だ受信バッファに格納されていない未受信データが含まれるか否かを判定する。
受信パケットのデータが未受信データを含む場合(S8:Y)、S9に進み、一方、受信パケットのデータが未受信データを含まない場合(S8:N)、処理を終了する。
図9(A)は、図8のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図8のS1で受信されたパケット91は、シーケンス番号250~350が付与されたデータAを含む。受信パケット91のデータが格納される前の受信バッファ92には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、データ3(シーケンス番号201~300)が格納されている。受信バッファ92にはさらに、データ5(シーケンス番号401~500)、およびデータ6(シーケンス番号501~600)が格納されている。図9(A)において、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
連続性判定部26は、受信パケット91のデータAのシーケンス番号が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット91のデータAと末尾パケットのデータとが連続しないと判定する(S7およびS2)。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット91のデータAのシーケンス番号と、末尾パケット(データ3)のシーケンス番号とを比較し、受信データ91のデータAに未受信データが含まれると判定する。
S3で、通信装置1の受信バッファ管理部25は、S9で更新された受信パケット91のデータA´を、末尾パケット記憶部27で記憶されている末尾パケットであるデータ3に後続する位置に格納する。S4で、末尾パケット記憶部27に記憶される末尾パケットのデータが、データ3からデータA´に更新され、S6で、後続のパケットが存在しないため、処理を終了する。
図10(A)は、図8のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図8のS1で受信されたパケット101は、シーケンス番号250~450が付与されたデータBを含む。受信パケット101のデータが格納される前の受信バッファ102には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、データ3(シーケンス番号201~300)が格納されている。受信バッファ102にはさらに、データ5(シーケンス番号401~500)、およびデータ6(シーケンス番号501~600)が格納されている。図10(A)において、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
連続性判定部26は、データBのシーケンス番号(先頭データ:250)が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット101のデータBと末尾パケットのデータとが連続しないと判定する(S7、S2)。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット101のデータBのシーケンス番号と、末尾パケットのデータ3のシーケンス番号とを比較し、受信データ101のデータBに未受信データが含まれると判定する。
S3で、通信装置1の受信バッファ管理部25は、S9で更新された受信パケット101のデータB´を、末尾パケット記憶部27で記憶されている末尾パケットであるデータ3に後続する位置に格納する。S4で、末尾パケット記憶部27に記憶される末尾パケットのデータが、データ3からデータB´に更新される。
同様に、S6およびS4の処理を経て、末尾パケット記憶部27で記憶している末尾パケットのデータが、データ5からデータ6に更新され、次にS6で、さらに後続のパケットが存在しないため、処理を終了する。
図11(A)は、図8のS1において、パケットが受信された際の受信データと、受信バッファ管理部25により管理される、受信データ格納前の受信バッファの状態を示す。
図8のS1で受信されたパケット111は、シーケンス番号101~250が付与されたデータCを含む。受信データ111が格納される前の受信バッファ112には、データ1(シーケンス番号1~100)、データ2(シーケンス番号101~200)、データ3(シーケンス番号201~300)が格納されている。受信バッファ112にはさらに、データ5(シーケンス番号401~500)、およびデータ6(シーケンス番号501~600)が格納されている。図11(A)において、末尾パケット記憶部27が記憶している末尾パケットの記憶位置(ポインタ)はデータ3(シーケンス番号201~300)を示している。
連続性判定部26は、受信パケット111のデータCのシーケンス番号101~250が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット111のデータCと末尾パケットのデータとが連続しないと判定する。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット111のデータCのシーケンス番号と、末尾パケット(データ3)のシーケンス番号とを比較する。比較の結果、連続性判定部26は、受信パケット111のデータCに未受信データが含まれないと判定し、受信パケット111のデータCを破棄して処理を終了する。
受信データに受信済みのデータが含まれている場合に、受信済みのデータを除く有効データを受信バッファの連続する位置に適切に格納することができ、受信効率の低下が有効に防止される。
また、コンピュータが読みだしたプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
Claims (10)
- パケットを受信する受信手段と、
前記受信手段により受信されたパケットを格納する受信バッファと、
前記受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの格納位置を示すポインタを記憶する記憶手段と、
前記受信手段により受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定する判定手段と、
前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信されるパケットの前記受信バッファ中の格納位置の探索を開始し、前記受信されたパケットを、探索された前記格納位置に格納するよう制御する制御手段と、を備え、
前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信バッファを構成する後続の領域を探索することで、前記受信バッファ内でシーケンス番号が連続的に整列すると想定される格納位置を、前記格納位置として特定し、前記受信されたパケットを、当該特定した格納位置に格納し、
前記制御手段は、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記受信バッファ中で、前記ポインタが指し示す格納位置に連続する格納領域に前記受信されたパケットを格納し、前記記憶手段により記憶される前記連続する末尾のパケットの格納位置を示すポインタを更新し、
前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定され、前記受信されたパケットを前記特定した格納位置に格納する場合には前記ポインタを更新せず、
前記制御手段による前記後続の領域の探索は、前記連続する末尾のパケットの格納位置を示すポインタとは異なるポインタを用いることなしに実行されることを特徴とする通信装置。 - 前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合であっても、当該特定した格納位置に既にパケットが格納されている場合、格納済みのデータと重複する領域に格納すべきデータは破棄するよう制御する
ことを特徴とする請求項1に記載の通信装置。 - 前記通信装置は、センサデバイスである
ことを特徴とする請求項1または2に記載の通信装置。 - 前記判定手段は、前記末尾のパケットに付与された順序番号およびデータ長を参照して、前記受信されたパケットが、前記末尾のパケットに連続するか否かを判定する
ことを特徴とする請求項1から3のいずれか1項に記載の通信装置。 - 前記判定手段は、前記末尾のパケットの前記順序番号に前記データ長を加算した値が、前記受信されたパケットの順序番号に合致する場合に、前記受信されたパケットが前記末尾のパケットに連続すると判定する
ことを特徴とする請求項4に記載の通信装置。 - 前記制御手段は、前記受信されたパケットを、前記末尾のパケットに連続する場合と前記末尾のパケットに連続しない場合とのいずれも、同一の受信バッファに格納する
ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。 - 前記制御手段は、前記受信バッファ中で、前記末尾のパケットに後続してパケットが格納されているか否かを判定し、後続するパケットが先頭のパケットからデータの順序番号が連続する場合に、前記記憶手段により記憶される前記末尾のパケットの情報を、前記後続するパケットで更新する
ことを特徴とする請求項1から6のいずれか1項に記載の通信装置。 - 前記順序番号は、TCP(Transport Control Protocol)におけるシーケンス番号である
ことを特徴とする請求項1から7のいずれか1項に記載の通信装置。 - パケットを受信するステップと、
受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの格納位置を示すポインタを記憶するステップと、
受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定するステップと、
前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信されるパケットの前記受信バッファ中の格納位置の探索を開始し、前記受信されたパケットを、探索された前記格納位置に格納するステップと、を備え、
前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記格納するステップにおいて、前記ポインタが指し示す格納位置を起点として、前記受信バッファを構成する後続の領域を探索することで、前記受信バッファ内でシーケンス番号が連続的に整列すると想定される格納位置を、前記格納位置として特定し、前記受信されたパケットを、当該特定した格納位置に格納し、
前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記格納するステップにおいて、前記受信バッファ中で、前記ポインタが指し示す格納位置に連続する格納領域に前記受信されたパケットを格納し、記憶される前記連続する末尾のパケットの格納位置を示すポインタを更新し、
前記受信されたパケットが前記末尾のパケットに連続しないと判定され、前記受信されたパケットを前記特定した格納位置に格納する場合には前記ポインタを更新せず、
前記後続の領域の探索は、前記連続する末尾のパケットの格納位置を示すポインタとは異なるポインタを用いることなしに実行されることを特徴とする通信装置の制御方法。 - コンピュータを、請求項1から8のいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019033938A JP7309384B2 (ja) | 2019-02-27 | 2019-02-27 | 通信装置、通信装置の制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019033938A JP7309384B2 (ja) | 2019-02-27 | 2019-02-27 | 通信装置、通信装置の制御方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020141188A JP2020141188A (ja) | 2020-09-03 |
JP7309384B2 true JP7309384B2 (ja) | 2023-07-18 |
Family
ID=72265215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019033938A Active JP7309384B2 (ja) | 2019-02-27 | 2019-02-27 | 通信装置、通信装置の制御方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7309384B2 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002290493A (ja) | 2001-03-22 | 2002-10-04 | Fujitsu Denso Ltd | データ転送システム並びにその送信側及び受信側装置 |
US20030128704A1 (en) | 2001-09-06 | 2003-07-10 | Shay Mizrachi | TCP/IP reordering |
JP2012191251A (ja) | 2011-03-08 | 2012-10-04 | Sony Corp | 通信端末、記憶サイズの制御方法、及びプログラム |
-
2019
- 2019-02-27 JP JP2019033938A patent/JP7309384B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002290493A (ja) | 2001-03-22 | 2002-10-04 | Fujitsu Denso Ltd | データ転送システム並びにその送信側及び受信側装置 |
US20030128704A1 (en) | 2001-09-06 | 2003-07-10 | Shay Mizrachi | TCP/IP reordering |
JP2012191251A (ja) | 2011-03-08 | 2012-10-04 | Sony Corp | 通信端末、記憶サイズの制御方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP2020141188A (ja) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7912064B2 (en) | System and method for handling out-of-order frames | |
RU2491737C2 (ru) | Управление памятью для высокоскоростного управления доступом к среде | |
US11012367B2 (en) | Technologies for managing TCP/IP packet delivery | |
US8311059B2 (en) | Receive coalescing and automatic acknowledge in network interface controller | |
US10439940B2 (en) | Latency correction between transport layer host and deterministic interface circuit | |
US8661205B2 (en) | Communication apparatus and information transfer method | |
US8773977B2 (en) | Packet receiving device, packet communication system, and packet reordering method | |
WO2010075795A1 (zh) | 分片信息处理的方法和装置 | |
US10461886B2 (en) | Transport layer identifying failure cause and mitigation for deterministic transport across multiple deterministic data links | |
US7969977B2 (en) | Processing apparatus and method for processing IP packets | |
US11115343B2 (en) | Transport layer providing deterministic transport across multiple deterministic data links | |
CN111147483B (zh) | 一种对原始网络数据包的有损压缩存储方法和装置 | |
US20100014542A1 (en) | Network processing apparatus and processing method thereof | |
JP2007142582A (ja) | データ通信装置、データ通信方法、プログラム及び記憶媒体 | |
US11336297B2 (en) | DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium | |
JP7309384B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
EP1460804B1 (en) | System and method for handling out-of-order frames (fka reception of out-of-order tcp data with zero copy service) | |
JP2006279188A (ja) | 優先制御を行う送信制御装置、通信制御装置、通信システム、通信ネットワーク、及び送信方法 | |
JP2019114947A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US20170265103A1 (en) | Communication device, communication method, and non-transitory computer readable medium | |
JP6334376B2 (ja) | 通信装置及びディスクリプタオーバーフロー検出方法 | |
JP7214396B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
JP2006229973A (ja) | ビットマップマネージャ、ビットマップメモリ割り当て方法、ネットワーク構成要素間の確認を発生する方法、およびこれを実行するネットワーク構成要素 | |
US20150295957A1 (en) | Data transmitting device, data transmitting method, and communication device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220125 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221019 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221025 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221221 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230328 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230523 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230705 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7309384 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D03 |