JP7309384B2 - 通信装置、通信装置の制御方法およびプログラム - Google Patents

通信装置、通信装置の制御方法およびプログラム Download PDF

Info

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
Application number
JP2019033938A
Other languages
English (en)
Other versions
JP2020141188A (ja
Inventor
智也 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2019033938A priority Critical patent/JP7309384B2/ja
Publication of JP2020141188A publication Critical patent/JP2020141188A/ja
Application granted granted Critical
Publication of JP7309384B2 publication Critical patent/JP7309384B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、データに順序番号が付与されたパケットを受信する通信装置、通信装置の制御方法およびプログラムに関する。
通信プロトコルにおいてデータ通信の信頼性を実現するため、送信側装置から送信されたデータに順序番号を付与し、受信側装置によりデータが成功裡に受信されたことを、受信側装置が送信側装置に通知する手法がある。
例えば、TCP(Transport Control Protocol)では、データにシーケンス番号を付与して管理する。受信側装置は、受信したデータに付与されたシーケンス番号に基づき、受信したデータを受信バッファに格納し、受信済みの最終データを示すシーケンス番号を確認応答(Acknowledge、以下「ACK」という。)パケットとして送信側装置に通知する。
このACKパケットを送信側装置が受信することで、受信側装置によりデータが受信されたことが保証され、データの送信が完了したと判断することができる。一方、所定時間内に送信したデータに対するACKが受信できない場合、送信側装置は、データを送信側装置へ再送するよう制御する。
特開平5-56079号公報
ところで、受信側装置は、新たなデータを受信すると、受信したデータに付与されたシーケンス番号を参照し、受信バッファの先頭から受信バッファ内の格納位置を探索して、探索された格納位置に受信したデータを格納する。
このため、受信バッファで管理されるデータの量が増加するのに比例して、新たに受信したデータの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまい、受信側装置におけるデータの受信性能が低下しかねない。
特許文献1は、順序通りに受信したデータと順序違いで受信したデータとを別々のメモリに格納する受信装置を開示する。具体的には、特許文献1の受信装置は、受信バッファを複数のメモリブロックに分け、データパケットが順序通りに到着している間は、メモリブロック内の各メモリへデータを順序番号順に物理的に整列させて格納する。一方、順序違いのデータパケットを受信すると、受信装置は、順序通りのデータを格納するメモリとは異なるメモリへデータを格納する。
しかしながら、特許文献1の受信装置では、順序違いのデータは、順序通りのデータを格納するメモリとは異なるメモリに受信した順に格納されるため、順序通りのデータと順序違いのデータを最終的に順序番号順に結合しなければならない。このため、順序通りのデータを格納するメモリの先頭から探索して、順序通りのデータに再送データ等の順序違いのデータを結合していかなければならない。
従って、受信バッファで管理されるデータの数が増加するのに比例して、順序通りのデータへの順序違いのデータを結合する際の、データの受信バッファ中の格納位置の探索およびデータの格納に要する処理時間が増加してしまう。このため、データの受信性能が低下するおそれがあった。
本発明は上記課題に鑑みてなされたものであり、その目的は、順序番号が付与されたデータを受信バッファに効率的に格納して受信性能の低下を有効に防止することにある。
上記課題を解決するため、本発明に係る通信装置のある態様は、パケットを受信する受信手段と、前記受信手段により受信されたパケットを格納する受信バッファと、前記受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの格納位置を示すポインタを記憶する記憶手段と、前記受信手段により受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定する判定手段と、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信されるパケットの前記受信バッファ中の格納位置の探索を開始し、前記受信されたパケットを、探索された前記格納位置に格納するよう制御する制御手段と、を備え、前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信バッファを構成する後続の領域を探索することで、前記受信バッファ内でシーケンス番号が連続的に整列すると想定される格納位置を、前記格納位置として特定し、前記受信されたパケットを、当該特定した格納位置に格納し、前記制御手段は、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記受信バッファ中で、前記ポインタが指し示す格納位置に連続する格納領域に前記受信されたパケットを格納し、前記記憶手段により記憶される前記連続する末尾のパケットの格納位置を示すポインタを更新し、前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定され、前記受信されたパケットを前記特定した格納位置に格納する場合には前記ポインタを更新せず、前記制御手段による前記後続の領域の探索は、前記連続する末尾のパケットの格納位置を示すポインタとは異なるポインタを用いることなしに実行される。
本発明によれば、順序番号が付与されたデータを受信バッファに効率的に格納して受信性能の低下を有効に防止することができる。
本発明の各実施形態に係る通信装置のハードウエア構成の一例を示す図。 各実施形態に係る通信装置の機能構成の一例を示すブロック図。 実施形態1に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。 実施形態1に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。 実施形態1に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファへの他の格納例。 実施形態2に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。 実施形態2に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。 実施形態3に係る通信装置が受信パケットを受信バッファに格納する処理の概略処理手順の一例を示すフローチャート。 実施形態3に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの構成例。 実施形態3に係る通信装置が受信パケットを受信バッファに格納する前後の受信バッファの他の構成例。 実施形態3に係る通信装置が受信パケットを受信バッファに格納せず廃棄する場合の受信バッファの構成例。
以下、添付図面を参照して、本発明を実施するための実施形態について詳細に説明する。なお、以下に説明する実施形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施形態に限定されるものではない。また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
以下、通信装置が、TCP(Transport Control Protocol)に準拠してシーケンス番号が付与されたデータを送受信する例を説明するが、本実施形態が使用可能な通信プロトコルはTCPに限定されない。例えば、通信装置は、シーケンス番号等の順序番号が付与されるデータを管理する機構を持つ他の通信プロトコルを使用してもよい。
(実施形態1)
<本実施形態のハードウエア構成>
図1は、本実施形態に係る通信装置のハードウエア構成の一例を示す図である。
図1の通信装置1は、RAM11、ROM12、CPU13、タイマ管理部14、メディアアクセス制御モジュール(MAC)15、物理レイヤモジュール(PHY)16、およびアンテナ18を備える。RAM11、ROM12、CPU13、タイマ管理部14、およびMAC15は、システムバス17により、通信可能に接続される。
なお、通信装置1は、上記のモジュール全てを備えなくともよく、例えばタイマ管理部14やアンテナ18等は、必要に応じて省略されてもよいし、図1の構成に加えて入出力インタフェースや外部メモリ等を備えてもよい。
RAM(Random Access Memory)11は、CPU13の主メモリ、ワークエリア等として機能し、プログラムやデータを一時的に記憶する。
ROM(Read Only Memory)12は、CPU13が各種処理を実行するために必要となる、変更を必要としない制御プログラムやパラメータ等を記憶する不揮発性メモリである。なお、これら制御プログラム等は、外部メモリや着脱可能な記憶媒体(不図示)に記憶されていてもよい。
CPU(Central Processing Unit)13は、通信装置1における動作を統括的に制御するものであり、システムバス17を介して、各構成部(11、12、14~16)を制御する。すなわち、CPU13は、各種処理の実行に際してROM12やHDD(Hard Disk Drive:不図示)等の記憶媒体から必要なプログラム等をRAM11にロードし、当該プログラム等を実行することで各種の機能動作を実現する。
タイマ管理部14は、CPU13により実行されるプログラムの処理等の時間の経過を管理する。
MAC15は、PHY16およびアンテナ18を介して無線LAN(Local Area Network)等のネットワークでの通信を行うための通信部であり、IEEE802OSI参照モデルのデータリンク層中のメディアアクセス制御機能を提供する。CPU13は、ネットワークドライバを実行し、MAC15を制御して、他の装置との間でのデータの送受信を実行する。
PHY16は、アンテナ18を介して無線LAN等のネットワークでの通信を行うための通信部であり、データリンク層の下層である物理層の制御機能を提供する。
通信装置1が他の通信装置とデータ送受信を実行するためのネットワークは、無線ネットワークで構成されてよい。この無線ネットワークは、Bluetooth(登録商標)、ZigBee(登録商標)、UWB(Ultra Wide Band)等の無線PAN(Personal Area Network)を含む。また、Wi-Fi(Wireless Fidelity)(登録商標)等の無線LAN(Local Area Network)や、WiMAX(登録商標)等の無線MAN(Metropolitan Area Network)を含む。さらに、LTE/3G等の無線WAN(Wide Area Network)を含む。
あるいは、ネットワークは、例えば、Ethernet(登録商標)等の通信規格に準拠する有線LAN(Local Area Network)等の有線ネットワークであってよく、無線LAN通信機能と有線LAN通信機能を組み合わせてもよい。
なお、ネットワークは、各機器を相互に通信可能に接続できればよく、通信の規格、規模、構成は上記に限定されない。
また、図1の通信装置1の具体例は、各種センサデバイス、デジタルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、PC(PersonalComputer)、ノートPC、サーバ等を含むがこれらに限定されない。
<通信装置1の機能構成>
図2は、本実施形態に係る通信装置1の機能構成の一例を示すブロック図である。
図2に示す各装置の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがROM12等のメモリに記憶され、RAM11に読み出してCPU13が実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウエアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。この場合、専用ハードウエアはCPU11の制御に基づいて動作する。
なお、図2に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
通信装置1は、制御部21、LAN通信制御部22、記憶制御部23、TCP/IP通信制御部24、受信バッファ管理部25、連続性判定部26、および末尾パケット記憶部27を備える。なお、通信装置1が図2のモジュール全てを備えることは必須でない。
制御部21は、通信装置1が備える各機能モジュール(22~27)を制御して、本実施形態におけるパケット送受信および受信されたパケットの受信バッファへの格納処理を含む処理を実行する。
LAN通信制御部22は、MAC15を制御し、他の通信装置とのLAN通信の制御を実行する。通信装置1が外部の無線アクセスポイント(AP)を経由して他の通信装置と接続する場合、LAN通信制御部22は、MAC15を制御して無線AP(不図示)との無線LAN通信の制御を行う。LAN通信制御部22はその他、有線LAN通信機能等、TCP/IP通信が可能な通信方式であれば他の通信方式を利用してもよい。
記憶制御部23は、RAM11やROM12を制御し、処理データや画像コンテンツ、映像コンテンツなどの各種データを、これら記憶装置に記憶し、または削除する。なお、記憶制御部23は、補助記憶装置等の他の記憶装置を利用してもよい。
TCP/IP通信制御部24は、LAN通信制御部22を使用して、他の通信装置との間でTCP/IP方式の通信プロトコル処理および各種通信制御を行う。なお、TCP/IP通信制御部24は、TCP/IP方式に限らず、シーケンス番号等の順序番号でデータ順序を管理する機構を持つ他のプロトコルの通信制御部に置き換えてもよい。
受信バッファ管理部25は、1つまたは複数の受信バッファを通信装置1のメモリ上に動的に構成する。受信バッファは、通信装置1が通信対向装置との間で送受信されるデータを受信及びプロトコル処理する際に使用される受信バッファである。受信バッファは、受信バッファが必要になったタイミングでメモリ上に動的に獲得され、データ受信処理が終了して不要になった際に解放される。受信バッファが構成されるメモリは、RAM11であってよく、またはFPGA、ASIC、NIC(Network Interface Card)等の上に構成されるメモリであってよい。
受信バッファ管理部25はまた、受信されるパケット中のデータ部分(以下、「受信データ」という。)を受信バッファ上に格納および管理する。具体的には、受信バッファ管理部25は、TCP/IP制御部24から使用され、受信バッファ内のデータを、TCPにおいて、1オクテット(バイト)ごとにそれぞれ順に付与されているシーケンス番号に基づく順序で管理する。
連続性判定部26は、TCP/IP制御部24から使用され、受信データの連続性を判定する。具体的には、連続性判定部26は、受信バッファ管理部25により管理される受信バッファに受信データが格納される際に、シーケンス番号に基づいて、受信データと、受信バッファ内に格納されたデータとの間の連続性を判定する。
末尾パケット記憶部27は、TCP/IP制御部24から使用され、受信バッファ管理部25により管理される受信バッファ内のデータのうち、受信バッファの先頭のデータからシーケンス番号が連続する末尾パケットの情報を記憶する。この末尾パケットは、受信されたパケットのうち、受信バッファの末尾に格納すべきと判断されたパケットに含まれていた、受信バッファへの格納単位としての末尾のデータ群であり、以下、単に末尾パケットという。
本実施形態において、連続性判定部26は、受信されるパケットと、末尾パケット記憶部27により記憶される末尾パケットとの間でシーケンス番号を比較することにより、受信データの連続性を判定する。受信バッファ管理部25は、連続性判定部26により判定された受信データの連続性に基づいて、受信バッファ中で受信データを格納すべき位置を探索するが、この受信バッファ中の格納位置探索処理の詳細は、図3から図5を参照して後述する。
<通信装置1の受信パケットの受信バッファへの格納処理の処理フロー>
図3は、通信装置1が実行するパケット受信および受信されたパケットの受信バッファへの格納処理手順の一例を示すフローチャートである。図3に示す処理は、例えば、他の通信装置からパケットを受信したことを契機に開始されてよい。
通信装置1はCPU13が必要なプログラムをROM12または外部メモリから読み出して実行することにより、図3に示す処理を実行することができる。ただし、図2に示す各要素のうち少なくとも一部が専用のハードウエアとして動作することで図3の処理が実現されるようにしてもよい。この場合、専用のハードウエアは、CPU13の制御に基づいて動作する。
S1で、通信装置1のLAN通信制御部22は、他の通信装置からパケットを受信する。他の通信装置から受信されたパケットは、まず、LAN通信制御部22がアクセスおよび管理可能なバッファに保持される。
S2で、通信装置1のTCP/IP通信制御部24は、連続性判定部26を使用し、S1で受信されたパケットの受信データが末尾パケット記憶部27により記録される末尾パケットのデータに連続するか否かを判定する。
具体的には、まず、通信装置1のTCP/IP通信制御部24は、LAN通信制御部22が管理するバッファから受信されたパケットを取り出す。通信装置1のTCP/IP通信制御部24は、連続性判定部26を使用して、末尾パケット記憶部27で記憶されている末尾パケットと、取り出された受信パケットとを比較することにより、両者の連続性を判定する。
受信パケットと末尾パケットとの間の連続性判定において、連続性判定部26は、まず、末尾パケット記憶部27で記憶されている末尾パケットのシーケンス番号にデータ長を加算して、次に受信されることが期待されるシーケンス番号を算出する。
末尾パケット記憶部27は、受信バッファ中に格納される末尾パケットのTCPヘッダから、少なくともシーケンス番号(先頭データ1バイトのシーケンス番号)およびデータ長(バイト数)を取得して、記憶している。連続性判定部26は、末尾パケット記憶部27のこの末尾パケットの情報を参照することにより、S2で、次に受信されることが期待されるシーケンス番号を算出することができる。
算出されたシーケンス番号が受信パケットのシーケンス番号に合致する場合、連続性判定部26は、受信パケットのデータ(受信データ)が末尾パケットのデータに連続すると判定する。一方、シーケンス番号が受信パケットのシーケンス番号に合致しない場合、連続性判定部26は、受信パケットのデータが末尾パケットのデータに連続しないと判定する。
受信パケットのデータが末尾パケットのデータに連続すると判定された場合(S2:Y)、S3へ進み、一方、受信パケットのデータが末尾パケットのデータに連続しないと判定された場合(S2:N)、S5へ進む。
受信データが末尾パケットのデータに連続すると判定された場合、S3で、受信バッファ管理部25は、末尾パケット記憶部27で記憶されている末尾パケットに後続するよう、受信データを受信バッファ中の末尾パケットの後に連続して格納する。
受信データが受信バッファに格納されると、S4で、通信装置1の末尾パケット記憶部27は、記憶している末尾パケットの位置(ポインタ)を、S3で格納された受信データのパケット(後続のパケット)に更新する。
一方、S2で、受信データが末尾パケットのデータに連続しないと判定された場合、S5で、通信装置1の受信バッファ管理部25は、受信パケットのシーケンス番号に基づき、受信データを格納すべき受信バッファ中の位置を探索する。
具体的には、本実施形態において、受信バッファ管理部25は、受信パケットのシーケンス番号に基づいて、末尾パケット記憶部27で記憶されている末尾パケットを起点として、受信バッファ中で末尾パケットに後続するパケットのデータを探索する。受信バッファ管理部25は、受信バッファ中で後続するパケットのデータを探索して、受信バッファに格納済みのデータと受信データのシーケンス番号が連続的に整列するよう受信パケットを挿入すべき格納位置を特定する。そして、受信バッファ管理部25は、受信データを受信バッファ中の特定された格納位置へ格納する。
上記のとおり、本実施形態では、受信データが末尾パケットのデータに連続する場合であっても連続しない場合であっても、受信バッファ管理部25は、受信データを同一の受信バッファに格納する。
図4は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図3のS2で、受信パケットのデータが末尾パケットのデータに連続すると判定された場合(S2:Y)の例を示す。なお、図4中、データN(N=整数)の下方に括弧書で示される番号は、当該データのシーケンス番号を示す。
図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)を示している。
一方、図4(B)は、図4(A)の受信パケット41および受信バッファ42に対して、図3のS2、S3およびS4の順に処理が実行された、受信データ4格納後の受信バッファの状態を示す。
図3のS2で、通信装置1の連続性判定部26は、末尾パケット(データ3)のシーケンス番号(先頭データ:201)にデータ長100を加算して得られるシーケンス番号301が、受信パケット41のシーケンス番号に合致すると判定する。
このため、S3へ進み、通信装置1の受信バッファ管理部25は、受信パケット41のデータ4を、末尾パケット記憶部27で記憶されている末尾パケットのデータ3に後続する受信バッファ43中の位置に格納する。S4で、末尾パケット記憶部27は、受信バッファ43中の末尾パケットの記憶位置として、データ3からデータ4にポインタを更新して、処理を終了する。
図5は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する他の例を概略的に示す図であり、図3のS2で、受信パケットのデータが末尾パケットのデータに連続しないと判定された場合(S2:N)の例を示す。
図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)を示している。
一方、図5(B)は、図5(A)の受信パケット51および受信バッファ52に対して、図3のS2およびS5の順に処理が実行された、受信データ7格納後の受信バッファの状態を示す。
図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)
以下、実施形態2を、図6および図7を参照して、上記の実施形態1と異なる点についてのみ詳細に説明する。実施形態2は、受信バッファ内に非連続の受信データが格納されている場合、受信バッファ内の受信データが連続となるデータを受信した際に、受信バッファ内の受信データを格納した後、末尾パケットの記憶位置を、受信データより後続の受信データに更新する。
実施形態2に係る通信装置1のハードウエア構成および機能構成は、図1および図2にそれぞれ示される実施形態1と同様である。
図6は、実施形態2に係る通信装置1が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図6では、図3のフローチャートに対して、S6が追加されている。
S1~S5までの各処理は、図3に示すS1~S5までの処理と同様である。
S2で、受信パケットのデータが、末尾パケット記憶部27で記憶される末尾パケットのデータに連続すると判定された場合(S2:Y)、S3およびS4の処理が実行され、末尾パケットの記憶位置が受信されたパケットに更新されて、S6に進む。
S6で、通信装置1の受信バッファ管理部25は、S4で更新された、末尾パケット記憶部27で記憶されている末尾パケットに後続して、シーケンス番号が連続するパケットが存在するか否かを判定する。
S4で更新された末尾パケットに後続して、シーケンス番号が連続するパケットのデータが存在する場合(S6:Y)、S4に戻って、末尾パケットの位置を、末尾パケットに後続し、かつシーケンス番号が連続するパケットに更新する。一方、末尾パケットに後続して、シーケンス番号が連続するパケットのデータが存在しない場合(S6:N)、処理を終了する。
図7は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図6のS6で、末尾パケットに後続して、シーケンス番号が連続するデータが存在すると判定された場合(S6:Y)の例を示す。
図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)を示している。
一方、図7(B)は、図7(A)の受信パケット71および受信バッファ72に対して、図6のS2、S3、S4、S6、およびS4およびS6の1回ループの順に処理が実行された、受信データ4格納後の受信バッファの状態を示す。
図6のS2で、通信装置1の連続性判定部26は、末尾パケット(データ3)のシーケンス番号(先頭データ:201)にデータ長100を加算して得られるシーケンス番号301が、受信パケット71のシーケンス番号に合致すると判定する。
このため、S3へ進み、通信装置1の受信バッファ管理部25は、受信パケット71のデータ4を、末尾パケット記憶部27で記憶されている末尾パケットのデータ3に後続する受信バッファ73中の位置に格納する。S4で、末尾パケット記憶部27は、受信バッファ73中の末尾パケットの記憶位置として、データ3からデータ4にポインタを更新する。
S6で、通信装置1の受信バッファ管理部25は、末尾パケット記憶部27で記憶されている末尾パケット(データ4)に後続して、シーケンス番号が連続するパケットのデータ(データ5)が存在することを判定する(S6:Y)。S4へ戻り、受信バッファ管理部25は、末尾パケット記憶部27で記憶する末尾パケットのデータを、データ4から後続するデータ5にさらに更新する。次のS6では、末尾パケット記憶部27で記憶されている末尾パケットのデータ5に後続して、シーケンス番号が連続するデータがもはや存在しないと判定して(S6:N)、処理を終了する。
以上説明したように、本実施形態によれば、通信装置は、受信バッファ内に非連続のデータが存在する場合において、受信バッファ内のデータが連続となるデータを受信した際に、まず、受信バッファに受信データを格納した後、末尾パケットの位置を更新する。 さらに、通信装置は、末尾パケットの後続にシーケンス番号が連続するパケットが存在する場合、末尾パケットの記憶位置を、受信バッファに格納した受信データより後続のデータに更新する。
受信バッファに受信データを格納する際、受信バッファの先頭から受信データを格納する位置を探索することなく、記憶される末尾パケットを起点として格納位置を探索すれば足りる。先頭のデータから末尾パケット位置とされた後続のデータまでは、シーケンス番号が連続することが保証されており、更新された末尾パケットから格納位置を探索するから、受信データを受信バッファに格納する際の探索時間をさらに低減することができる。
(実施形態3)
以下、実施形態3を、図8~図11を参照して、上記の実施形態2と異なる点についてのみ詳細に説明する。実施形態3は、受信データに受信済みのデータが含まれている場合、受信データから受信バッファ中のデータと重複しない有効データを抽出して、受信バッファに格納する。
実施形態3に係る通信装置1のハードウエア構成および機能構成は、図1および図2にそれぞれ示される実施形態1と同様である。
図8は、実施形態3に係る通信装置1が実行する受信パケットの受信バッファへの格納処理の処理手順の一例を示すフローチャートである。図8では、図6のフローチャートに対して、S7、S8、およびS9が追加されている。
S1の処理は、図6に示すS1の処理と同様である。
S1でパケットを受信すると、S7で、通信装置1の連続性判定部26は、S1で受信されたデータと、末尾パケット記憶部27で記憶されている末尾パケットのデータとの順序関係を判定する。
具体的には、受信データが末尾パケットのデータに連続する場合、または、受信パケットのシーケンス番号が末尾パケットのデータに後続するシーケンス番号以下である場合(S7:Y)、S2に進む。一方、末尾パケットのデータに後続するシーケンス番号、すなわち次に到来すると期待される受信データのシーケンス番号よりも、受信パケットのシーケンス番号が大きい場合(S7:N)、S5に進んで、受信バッファ中の受信データの挿入位置を探索する。
S2は、図3および図6のS2と同様であり、末尾パケットのデータと受信データとが連続する場合(S2:Y)、S3へ進むが、一方、末尾パケットのデータと受信データとが連続しない場合(S2:N)、S8へ進む。
S3~S6の各処理は、図6に示すS3~S6の各処理と同様である。
S8で、通信装置1の受信バッファ管理部25は、S1で受信されたパケットに、未だ受信バッファに格納されていない未受信データが含まれるか否かを判定する。
受信パケットのデータが未受信データを含む場合(S8:Y)、S9に進み、一方、受信パケットのデータが未受信データを含まない場合(S8:N)、処理を終了する。
受信パケットのデータが未受信データを含む場合、S9で、受信バッファ管理部25は、S1で受信されたパケットのデータのうち、未受信のデータ部分のみを有効データとして、受信データを更新する。これにより、S3で、受信バッファ中の末尾パケットに後続して、未受信である有効データが格納され、格納済みのデータと重複するデータは格納されず破棄されることになる。
図9は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図8のS8で、受信パケットのデータが未受信データを含むと判定された場合(S8:Y)の例を示す。
図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)を示している。
一方、図9(B)は、図9(A)の受信パケット91および受信バッファ92に対して、図8のS7、S2、S8、S9、S3、S4およびS6の順に処理が実行された、受信データ91格納後の受信バッファの状態を示す。
連続性判定部26は、受信パケット91のデータAのシーケンス番号が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット91のデータAと末尾パケットのデータとが連続しないと判定する(S7およびS2)。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット91のデータAのシーケンス番号と、末尾パケット(データ3)のシーケンス番号とを比較し、受信データ91のデータAに未受信データが含まれると判定する。
S9で、通信装置1のTCP/IP通信制御部24は、受信パケット91のデータAについて、有効データのシーケンス番号を、未受信データを除いた301~350とし、データA´に更新する。
S3で、通信装置1の受信バッファ管理部25は、S9で更新された受信パケット91のデータA´を、末尾パケット記憶部27で記憶されている末尾パケットであるデータ3に後続する位置に格納する。S4で、末尾パケット記憶部27に記憶される末尾パケットのデータが、データ3からデータA´に更新され、S6で、後続のパケットが存在しないため、処理を終了する。
図10は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する他の例を概略的に示す図である。図10は、図8のS8で、受信パケットのデータが未受信データを含むと判定された場合(S8:Y)であって、かつ末尾パケットの後続にシーケンス番号が連続するデータが存在する場合(S6:Y)の例を示す。
図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)を示している。
一方、図10(B)は、図10(A)の受信パケット101および受信バッファ102に対して、図8の処理が実行された、受信パケット101のデータ格納後の受信バッファの状態を示す。図10(B)では、図10(A)に対して、S7、S2、S8、S9、S3、S4、S6、さらにS4とS6の2回ループの順に処理が実行されている。
連続性判定部26は、データBのシーケンス番号(先頭データ:250)が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット101のデータBと末尾パケットのデータとが連続しないと判定する(S7、S2)。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット101のデータBのシーケンス番号と、末尾パケットのデータ3のシーケンス番号とを比較し、受信データ101のデータBに未受信データが含まれると判定する。
S9で、通信装置1のTCP/IP通信制御部24は、受信パケット101のデータBについて、有効データのシーケンス番号を、未受信データを除いた301~400とし、データB´に更新する。
S3で、通信装置1の受信バッファ管理部25は、S9で更新された受信パケット101のデータB´を、末尾パケット記憶部27で記憶されている末尾パケットであるデータ3に後続する位置に格納する。S4で、末尾パケット記憶部27に記憶される末尾パケットのデータが、データ3からデータB´に更新される。
S6で、受信バッファ管理部25は、末尾パケット記憶部27で記憶している末尾パケットのデータB´に後続して、シーケンス番号が連続するデータ5が受信バッファ中に存在することを判定する。S4に戻り、末尾パケット記憶部27で記憶している末尾パケットのデータが、データB´からデータ5に更新される。
同様に、S6およびS4の処理を経て、末尾パケット記憶部27で記憶している末尾パケットのデータが、データ5からデータ6に更新され、次にS6で、さらに後続のパケットが存在しないため、処理を終了する。
図11は、本実施形態に係る通信装置1が、受信パケットを受信バッファに格納する一例を概略的に示す図であり、図8のS8で、受信パケットのデータが未受信データを含まないと判定された場合(S8:N)の例を示す。
図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)を示している。
一方、図11(B)は、図11(A)の受信パケット111および受信バッファ112に対して、図8のS7、S2、およびS8の順に処理が実行された後の受信バッファの状態を示す。
連続性判定部26は、受信パケット111のデータCのシーケンス番号101~250が、末尾パケットのデータに後続するデータのシーケンス番号より小さく、かつ受信パケット111のデータCと末尾パケットのデータとが連続しないと判定する。
このため、S8へ進み、通信装置1の連続性判定部26は、受信パケット111のデータCのシーケンス番号と、末尾パケット(データ3)のシーケンス番号とを比較する。比較の結果、連続性判定部26は、受信パケット111のデータCに未受信データが含まれないと判定し、受信パケット111のデータCを破棄して処理を終了する。
以上説明したように、本実施形態によれば、通信装置は、受信されたパケットのデータに受信バッファにすでに格納済みである受信済みのデータが含まれるか否かを判定する。そして、通信装置は、受信データから未受信のデータである有効データを抽出して、受信バッファに格納すべき受信データを更新する。
受信データに受信済みのデータが含まれている場合に、受信済みのデータを除く有効データを受信バッファの連続する位置に適切に格納することができ、受信効率の低下が有効に防止される。
また、本発明は、上述の実施形態の一部または1以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ(またはCPUやMPU等)における1つ以上のプロセッサがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
また、コンピュータが読みだしたプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
1…通信装置、11…RAM、12…ROM、13…CPU、14…タイマ管理部、15…MAC、16…PHY、17…バス、18…アンテナ、21…制御部、22…LAN通信制御部、23…記憶制御部、24…TCP/IP通信制御部、25…受信バッファ管理部、26…連続性判定部、27…末尾パケット記憶部

Claims (10)

  1. パケットを受信する受信手段と、
    前記受信手段により受信されたパケットを格納する受信バッファと、
    前記受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの格納位置を示すポインタを記憶する記憶手段と、
    前記受信手段により受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定する判定手段と、
    前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信されるパケットの前記受信バッファ中の格納位置の探索を開始し、前記受信されたパケットを、探索された前記格納位置に格納するよう制御する制御手段と、を備え、
    前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信バッファを構成する後続の領域を探索することで、前記受信バッファ内でシーケンス番号が連続的に整列すると想定される格納位置を、前記格納位置として特定し、前記受信されたパケットを、当該特定した格納位置に格納し、
    前記制御手段は、前記判定手段により、前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記受信バッファ中で、前記ポインタが指し示す格納位置に連続する格納領域に前記受信されたパケットを格納し、前記記憶手段により記憶される前記連続する末尾のパケットの格納位置を示すポインタを更新し、
    前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定され、前記受信されたパケットを前記特定した格納位置に格納する場合には前記ポインタを更新せず、
    前記制御手段による前記後続の領域の探索は、前記連続する末尾のパケットの格納位置を示すポインタとは異なるポインタを用いることなしに実行されることを特徴とする通信装置。
  2. 前記制御手段は、前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合であっても、当該特定した格納位置に既にパケットが格納されている場合、格納済みのデータと重複する領域に格納すべきデータは破棄するよう制御する
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記通信装置は、センサデバイスであ
    ことを特徴とする請求項1または2に記載の通信装置。
  4. 前記判定手段は、前記末尾のパケットに付与された順序番号およびデータ長を参照して、前記受信されたパケットが、前記末尾のパケットに連続するか否かを判定する
    ことを特徴とする請求項1から3のいずれか1項に記載の通信装置。
  5. 前記判定手段は、前記末尾のパケットの前記順序番号に前記データ長を加算した値が、前記受信されたパケットの順序番号に合致する場合に、前記受信されたパケットが前記末尾のパケットに連続すると判定する
    ことを特徴とする請求項4に記載の通信装置。
  6. 前記制御手段は、前記受信されたパケットを、前記末尾のパケットに連続する場合と前記末尾のパケットに連続しない場合とのいずれも、同一の受信バッファに格納する
    ことを特徴とする請求項1から4のいずれか1項に記載の通信装置。
  7. 前記制御手段は、前記受信バッファ中で、前記末尾パケットに後続してパケットが格納されているか否かを判定し、後続するパケットが先頭のパケットからデータの順序番号が連続する場合に、前記記憶手段により記憶される前記末尾パケットの情報を、前記後続するパケットで更新する
    ことを特徴とする請求項1から6のいずれか1項に記載の通信装置。
  8. 前記順序番号は、TCP(Transport Control Protocol)におけるシーケンス番号である
    ことを特徴とする請求項1からのいずれか1項に記載の通信装置。
  9. パケットを受信するステップと、
    受信バッファに格納されたパケットのうち、先頭のパケットからデータの順序番号が連続する末尾のパケットの格納位置を示すポインタを記憶するステップと、
    受信されたパケットが、前記受信バッファ中で、前記末尾のパケットに連続するか否かを前記順序番号に基づいて判定するステップと、
    前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記ポインタが指し示す格納位置を起点として、前記受信されるパケットの前記受信バッファ中の格納位置の探索を開始し、前記受信されたパケットを、探索された前記格納位置に格納するステップとを備え、
    前記受信されたパケットが前記末尾のパケットに連続しないと判定された場合、前記格納するステップにおいて、前記ポインタが指し示す格納位置を起点として、前記受信バッファを構成する後続の領域を探索することで、前記受信バッファ内でシーケンス番号が連続的に整列すると想定される格納位置を、前記格納位置として特定し、前記受信されたパケットを、当該特定した格納位置に格納し、
    前記受信されたパケットが前記末尾のパケットに連続すると判定された場合、前記格納するステップにおいて、前記受信バッファ中で、前記ポインタが指し示す格納位置に連続する格納領域に前記受信されたパケットを格納し、記憶される前記連続する末尾のパケットの格納位置を示すポインタを更新し、
    前記受信されたパケットが前記末尾のパケットに連続しないと判定され、前記受信されたパケットを前記特定した格納位置に格納する場合には前記ポインタを更新せず、
    前記後続の領域の探索は、前記連続する末尾のパケットの格納位置を示すポインタとは異なるポインタを用いることなしに実行されることを特徴とする通信装置の制御方法。
  10. コンピュータを、請求項1からのいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
JP2019033938A 2019-02-27 2019-02-27 通信装置、通信装置の制御方法およびプログラム Active JP7309384B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 通信端末、記憶サイズの制御方法、及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
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