JP2021036649A - 通信装置、通信装置の制御方法およびプログラム - Google Patents
通信装置、通信装置の制御方法およびプログラム Download PDFInfo
- Publication number
- JP2021036649A JP2021036649A JP2019158064A JP2019158064A JP2021036649A JP 2021036649 A JP2021036649 A JP 2021036649A JP 2019158064 A JP2019158064 A JP 2019158064A JP 2019158064 A JP2019158064 A JP 2019158064A JP 2021036649 A JP2021036649 A JP 2021036649A
- Authority
- JP
- Japan
- Prior art keywords
- communication
- internal buffer
- packet
- packets
- transfer
- 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.)
- Granted
Links
- 238000004891 communication Methods 0.000 title claims abstract description 435
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000005540 biological transmission Effects 0.000 claims abstract description 130
- 230000011218 segmentation Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 47
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
Description
本実施形態においては、通信装置は、通信プロトコル処理により一括生成した複数の通信パケットを通信インタフェースに転送する際に、通信インタフェースの内部バッファの状態に基づいて通信パケットの転送サイズを決定する。
ここで、通信装置において、アプリケーションから転送される送信データから複数の通信パケットを生成する処理は、例えば、TSO(TCP Segmentation Offload)技術を使用してオフロード実行されてよい。
以下、通信装置が、TCP(Transmission Control Protocol)/IP(Internet Protocol)通信プロトコルで通信パケットを生成する例を説明するが、本実施形態の通信プロトコルはこれに限定されない。
図1は、本実施形態に係る通信装置のハードウエアおよび機能構成の一例を示す図である。
通信装置1は、サブシステム2、メインCPU3、およびメインメモリ4を備える。サブシステム2は、各種通信プロトコルで規定された処理である通信プロトコル処理を実行する。サブシステム2、メインCPU3、およびメインメモリ4は、システムバス5を介して相互に接続されている。
メインメモリ4は、システムバス5を介して、通信装置1内の各機能ブロックが共有して利用可能なメモリであり、例えば主としてDRAM(Dynamic Random Access Memory)等の半導体メモリで構成されてよい。メインメモリ4内部の領域は、プログラムを格納する領域やアプリケーションソフトウエアが使用するアプリケーションバッファ領域などに分けられる。
本実施形態において、サブシステム2は、通信プロトコル処理専用のハードウエア(ハードウエアアクセラレータ)を搭載して、通信プロトコル処理の一部をメインCPU3に代えて高速で実行してよい。
なお、サブシステム2は、TCP/IPプロトコルに替えて、その他の通信プロトコルで通信プロトコル処理を実行することができる。以下、TCP/IPプロトコルは、別段の定義のない限り、UDPプロトコルを含むものとして説明する。
サブCPU21は、1つのプロセッサとして構成してもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよい。さらに、サブCPU21は、プロセッサと一部の機能をアクセラレートするハードウエアアクセラレータとで構成してもよい。
なお、サブCPU21に替えて、メインCPU3が通信プロトコル処理の全部または一部を実行してもよい。
また、ローカルメモリ22へは、メインCPU3からもシステムバス5およびローカルバス26を介してアクセス可能である。ローカルメモリ22は、通信プロトコル処理を実行する上で必要となる送受信データを格納するネットワークバッファ221の領域を備える。ネットワークバッファ221は、アプリケーションソフトウエアにより準備され、メインメモリ4から転送された送信データを格納する送信バッファである。ローカルメモリ22へは、必要に応じてサブシステム2の各機能モジュールが、ローカルバス26を介して読み出しや書き込みを実行する。
DMAコントローラ23は、ディスクリプタに記述された内容に従ってソース側からディスティネーション側へデータ転送を実行する。このディスクリプタには、データ転送元となるソース側のメモリ等のアドレス情報、データ転送先となるディスティネーション側のメモリ等のアドレス情報、およびデータ転送の転送サイズ等の情報が記述される。
このDMA転送開始指示の通知を受けたDMAコントローラ23は、メインメモリ4とローカルメモリ22との間、内部メモリ253とローカルメモリ22との間のDMA転送処理を実行する。さらにDMAコントローラ23は、内部メモリ253と通信I/F24との間、ローカルメモリ22と通信I/F24との間のDMA転送処理も実行する。
通信I/F24は、内部に送受信データを一時的に蓄積するバッファメモリである内部バッファ241を装備し、DMAコントローラ23のDMA転送によって、送受信データの入出力が行われる。内部バッファ241は、外部機器に送信すべき通信パケットを格納する。
なお、図1の構成に替えて、通信I/F24がDMAコントローラ23を内蔵して、この内蔵DMAコントローラ23を使用してもよい。
本実施形態において、パケット生成処理部25は、ハードウエアアクセラレータに実装することができ、サブCPU21が実行する通信プロトコル処理のうち、その一部であるペイロード分割処理および通信ヘッダの生成処理を肩代わりして実行する。
サブCPU21は、ひな形ヘッダ251aおよびパケット生成処理情報251bをレジスタ部251に設定し、またパケット生成制御情報251cをレジスタ部251に設定することで、コア部252を起動して、複数の通信ヘッダを生成させる。
具体的には、パケット生成処理情報251bは、分割情報として、ローカルメモリ22に保存されているペイロードのデータサイズ、先頭アドレス、および分割サイズ等を保持する。また、パケット生成処理情報251bは、編集情報として、ひな形ヘッダ251aを複製する回数、作成する通信ヘッダの種別、およびひな形ヘッダ251aを複製して作成した通信ヘッダの編集箇所等を保持する。
パケット生成制御情報251cは、コア部252のペイロード分割処理および通信ヘッダ生成動作を制御するために必要となる情報であり、サブCPU21により実行されるソフトウエアにより設定される。
内部メモリ253は、パケット生成処理部25のコア部252およびサブCPU21からアクセス可能なメモリであり、例えば主としてSRAM(Static Random Access Memory)等の半導体メモリで構成される。内部メモリ253は、コア部252により生成された複数の通信ヘッダ253aを記憶する。
図2は、通信装置1の通信パケット生成および送信における機能構成および動作の一例を示す図である。
図2に示す通信装置1の各機能モジュールのうち、ソフトウエアにより実現される機能については、各機能モジュールの機能を提供するためのプログラムがROM等のメモリに記憶され、RAMに読み出してCPUが実行することにより実現される。ハードウエアにより実現される機能については、例えば、所定のコンパイラを用いることで、各機能モジュールの機能を実現するためのプログラムからFPGA上に自動的に専用回路を生成すればよい。FPGAとは、Field Programmable Gate Arrayの略である。また、FPGAと同様にしてGate Array回路を形成し、ハードウエアとして実現するようにしてもよい。また、ASIC(Application Specific Integrated Circuit)により実現するようにしてもよい。なお、図2に示した機能ブロックの構成は一例であり、複数の機能ブロックが1つの機能ブロックを構成するようにしてもよいし、いずれかの機能ブロックが複数の機能を行うブロックに分かれてもよい。
パケット送信において、通信装置1は、アプリケーション201、プロトコル処理部202、パケット生成部203、送信キュー204、イベント通知部205、無線LANドライバ206、および無線LANデバイス207を備える。
図2を参照して、アプリケーション201は、送信すべきアプリケーションデータをメインメモリ4のユーザバッファに書き込んで、プロトコル処理部202に受け渡す。
具体的には、プロトコル処理部202はまず、メインメモリ4からローカルメモリ22のネットワークバッファ221に転送されたアプリケーションデータを送信データとして送信する際の送信データサイズを決定する。具体的には、プロトコル処理部202は、アプリケーション201から受け取ったアプリケーションデータのサイズ、およびTCPウィンドウサイズから、パケット生成部203に入力すべき送信データサイズを決定する。TCPウィンドウサイズとは、受信確認応答(以下、「ACK」という)パケットの受信を待たずに送信可能なデータ量であり、通信パケットの受信側装置のネットワークバッファの空き容量である。
プロトコル処理部202はさらに、通信I/F24の仕様に基づく制限サイズ、例えば、通信I/F24の内部バッファ241のサイズに基づいて、送信データサイズを決定してもよい。
プロトコル処理部202はまた、ひな形ヘッダ251a、パケット生成処理情報251b、およびパケット生成制御情報251cをレジスタ部251に設定して、パケット生成部203を起動する。
パケット生成部203は、レジスタ部251に設定されたパケット生成処理情報251bに基づいて、入力された送信データを複数のペイロードに分割し、通信ヘッダを生成する。プロトコル処理部202は、パケット生成部203を介して、分割されたペイロード(パケットデータ)のそれぞれに生成された通信ヘッダを付加することにより、複数の通信パケットを一括で生成する。図2では、パケットデータ3をペイロードとする通信パケットで、後続する通信パケットが存在しないことを示すフラグ(後続無フラグ)が付与されている。
プロトコル処理部202は、パケット生成部203により、送信キュー204に送信データのすべての通信パケットの追加が完了した際に、イベント通知部205を起動する。
イベント通知部205は、送信キュー204への通信パケットの追加が完了した旨のイベントを、無線LANドライバ206に通知する。これにより、無線LANドライバ206に処理が遷移する。
具体的には、無線LANドライバ206は、送信キュー204に追加された通信パケット数、SD転送可能なパケット数の上限(例えば、16パケット)、内部バッファ241の状態から、SD転送すべき通信パケットの数(転送サイズ)を決定してよい。
SD転送すべき通信パケットの数を決定するための内部バッファ241の状態は、例えば、内部バッファ241の空き容量(例えば、31〜32パケット)を含んでよい。内部バッファ241の状態はまた、通信I/F24が通信パケットを送信する際のフレームアグリゲーション機能の利用状態、例えば、フレームアグリゲーション機能の有効もしくは無効、モードの情報を含んでよい。内部バッファ241の状態はまた、TCPヘッダサイズ、IPヘッダサイズ、MACヘッダサイズ等の通信プロトコルオーバーヘッダサイズを含んでよい。なお、SD転送可能なパケット数の上限は、無線チップ、無線規格、SDの規格により変わりうる。
図3は、本実施形態において通信装置1が、ネットワーク6を介して外部機器と接続し、外部機器へ通信パケットを送信する通信パケット送信処理の処理手順の一例を示すフローチャートである。以下では通信装置1が受信側通信装置との間でデータ転送する際に通信プロトコルとしてTCP/IPを使用する例を説明するが、本実施形態はTCP/IPプロトコル以外のプロトコルにも適用可能である。図3のパケット送信処理は、例えば、アプリケーションからユーザデータの送信を指示されたことを契機に起動されてよいが、これに限定されない。
サブCPU21へ通知される送信データ準備完了の通知は、現在の通信状態を示す情報を含む。この現在の通信状態を示す情報は、例えばTCPプロトコルを使用した通信接続の開始を示す情報、TCPプロトコルを使用したデータ転送の開始を示す情報、あるいはTCPプロトコルを使用した通信の切断処理の開始を示す情報であってよい。
ここで、アプリケーションから受け取ったアプリケーションデータのデータサイズがMSS(Maximum Segment Size)を超えている場合、パケット生成処理部25がペイロード分割処理を実行する。一方、アプリケーションデータのデータサイズがMSS以下に既に分割されている場合、パケット生成処理部25は、通信ヘッダを生成するためのチェックサム計算のみを実行する。
次に、サブCPU21は、パケット生成処理部25が通信パケットの通信ヘッダを生成するために必要となる各種情報(251a〜251c)をレジスタ部251に設定して、パケット生成処理部25を起動する。起動されたパケット生成処理部25は、生成すべき通信パケットの数と同数の通信ヘッダを、パケット生成処理部25内の内部メモリ253に生成する。パケット生成処理部25はまた、通信ヘッダを付加すべきペイロードのペイロード分割情報を、パケット生成処理部25内の内部メモリ253に生成する。これにより、通信パケットのペイロードの確定と、ペイロードに付加すべき通信ヘッダの生成が完了する。
具体的には、サブCPU21は、ローカルメモリ22のネットワークバッファ221内の送信データをペイロード分割情報を参照してペイロード単位で切り出し、内部メモリ253に生成された各通信ヘッダ253aと結合して1つの通信パケットを生成する。そしてサブCPU21は、DMAコントローラ23にDMA転送を設定することにより、DMAコントローラ23によるDMA転送を起動して、生成された通信パケットを、通信I/F24の内部バッファ241へ転送させる。サブCPU21は、S4で決定された通信パケットの数分の複数の通信パケットにつき、DMA転送を実行する。
S5で、通信I/F24は、通信I/F24の内部バッファ241に転送された通信パケットを、データリンク層(MAC層)や物理層(PHY層)の通信プロトコル処理の実行を経て、ネットワーク6を介して外部機器へ送信する。
S6で判断される外部機器との通信状態を終了させる事象は、例えば、メインCPU3で実行されているアプリケーションソフトウエアからユーザからの操作等で通信装置1と外部機器との接続を終了させる指示入力を検知したことを含む。外部機器との通信状態を終了させる事象はまた、ユーザがネットワークケーブルを通信装置1から引き抜く等して通信回線が断絶したことを通信I/F24が検知したことを含む。外部機器との通信状態を終了させる事象はさらに、通信相手である外部機器側から通信回線を切断する旨の通知を含んだ通信パケットを受信したことを含む。
具体的には、通信装置1のサブCPU21は、サブCPU21が担う通信プロトコル処理に従って、外部機器との通信回線を切断し、ローカルメモリ22やパケット生成処理部25の内部メモリ253に保存している関連情報を削除する。その後、サブCPU21は、メインCPU3へ通信回線の切断が完了した旨を通知する。通信回線の切断が完了した旨の通知を受信したメインCPU3は、アプリケーションソフトウエアの制御の下、通信回線が切断した旨をユーザに通知すべく表示装置を介して表示してもよい。
図4は、図3のS4の通信プロトコル処理および通信I/F24の内部バッファ241への通信パケット転送処理の詳細処理手順の一例を示すフローチャートである。図4を参照して、サブCPU21が通信プロトコル処理を開始してから通信I/F24の内部バッファ241へ通信パケットを転送するまでの処理を一例として説明する。
S401で、サブCPU21は、通信プロトコルに従った送信処理を開始し、通信装置1が外部機器に送信した通信パケットに応答する受信確認応答(ACK)パケットを受信したか否かを判定する。ACKパケットを受信した場合(S401:Yes)、S402に進み、一方、ACKパケットを受信しない場合(S401:No)、S403に進む。
S403で、サブCPU21は、現在のTCPウィンドウサイズを参照し、外部機器のネットワークバッファ221に、通信パケットを受信できるだけの空きがあるか否かを判定する。外部機器のネットワークバッファに空きがある場合(S403:Yes)、S404に進み、一方、外部機器のネットワークバッファに空きがない場合(S403:No)、S401に戻ってACKパケット受信判定を繰り返す。
パケット生成処理部25の実行結果である一括生成された通信ヘッダ253aおよびペイロード分割情報は、図1に示すように、内部メモリ253に書き込まれもよく、あるいはローカルメモリ22に書き込まれてもよい。サブCPU21は、内部メモリ253に書き込まれた実行結果により、通信パケットのペイロードを確定し、一括生成された通信ヘッダを確定したペイロードに付加することにより、複数の通信パケットを一括生成する。
S406で、サブCPU21は、S405で送信キュー204に追加された通信パケットに、後続無フラグが付与されているか否か(各フラグがオンにセットされている場合を含む)を判定する。送信キュー204に追加された通信パケットに後続無フラグが付与されている場合(S406:Yes)、S407に進む。一方、送信キューに追加された通信パケットに後続無フラグが付与されていない場合(S406:No)、S405に戻って、送信キューへの通信パケットの追加および後続無フラグの有無判定を繰り返す。
図5を参照して、パケット管理構造体51は、プロトコルヘッダ51a、ペイロード51b、および後続無フラグ51cを含む。プロトコルヘッダ51aは、パケット生成処理部25により一括生成された通信ヘッダである。ペイロード51bは、パケット生成処理部25により生成されたペイロード分割情報に基づいて、サブCPU21により確定したユーザデータであるペイロードである。後続無フラグ51cは、送信データから生成された通信パケット群において、後続する通信パケットが存在しないことを示すフラグである。
以下、図2に示すように、通信I/F24が無線LANデバイス207であり、送信キューから通信I/F24の内部バッファ241へ通信パケットを転送するタスクが無線LANドライバ206であるものとして説明する。
なお、図4では無線LANデバイス207への通信パケットの転送方式として、図2に示すようにSDIOプロトコルを用いたデータ転送(以下、「SD転送」という)を使用する例を説明するが、本実施形態で使用可能なデータ転送方法はこれに限定されない。例えば、SDIOに替えて、PCIe(Peripheral Component Interconnect express)、USB(Universal Serial Bus)などの転送方式を用いてもよい。SD転送では、一度の送信命令で複数の通信パケットを転送するアグリゲーション転送が可能である。このアグリゲーション転送可能な通信パケット数の上限(例えば、16パケット)が、SD転送可能な通信パケット数の上限となる。なお、アグリゲーション転送可能な通信パケット数の上限は、無線チップ、無線規格、SDの規格により変わりうる。
S409で、サブCPU21は、送信キュー204に追加された通信パケット数と、SD転送可能な通信パケット数の上限とを比較する。
送信キューに追加された通信パケット数が、SD転送可能な通信パケット数の上限より大きい場合(S409:Yes)、S411に進む。一方、送信キューに追加された通信パケット数が、SD転送可能な通信パケット数の上限以下の場合(S409:No)、S412に進む。
送信キュー204に追加された通信パケット数が、無線LANデバイス207の内部バッファ241の空き容量より大きい場合(S410:Yes)、S413に進む。すなわち、無線LANデバイス107の内部バッファ241の空き容量が送信キュー204に追加された通信パケット数以下である場合、S413に進む。一方、送信キューに追加された通信パケット数が、無線LANデバイス207の内部バッファ241の空き容量以下の場合(S410:No)、S412に進む。
S412で、サブCPU21は、送信キュー204に追加した通信パケットの数どおりで、無線LANデバイス207の内部バッファ241に、SD転送する。
S413で、サブCPU21は、送信キュー204に追加した通信パケットのうち、無線LANデバイス207の内部バッファ241に転送可能な数だけ、無線LANデバイス207の内部バッファ241に、SD転送する。
このように、本実施形態では、サブCPU21は、送信キューから無線LANデバイス207の内部バッファ241に通信パケットを転送する際に、内部バッファ241の空き容量に基づいて、転送すべき通信パケットの転送サイズ(数)を決定する。
S415で、サブCPU21は、無線LANデバイス207の内部バッファ241に空きがあれば(S415;Yes)、S408に戻り、S408〜S414の処理を繰り返す。一方、内部バッファ241に空きがなければ、サブCPU21は、S416で待機しS415に戻って、無線LANデバイス207の内部バッファ241に転送された通信パケットが外部機器に送信されて内部バッファ241に空きが生ずるまで処理を繰り返す。
S417で、サブCPU21が実行している無線LANドライバ206のタスクが、例えばローカルメモリ22に送信キュー204として確保しているバッファの開放を、プロトコル処理のタスクに通知し、処理が終了する。
これにより、通信I/Fの内部バッファに通信パケットを転送する際に内部バッファが格納可能な通信パケットの数に、通信パケットの転送サイズを最適化でき、通信I/Fの内部バッファをより効率的に使用することができる。
また、通信パケットに付与された後続無フラグを判定し、後続無フラグが付与された通信パケットが送信キューに追加された際に、通信プロトコル処理を実行するタスクから通信パケットを通信I/Fの内部バッファに転送するタスクにイベントを通知する。
このイベント通知によるタスクスイッチで、複数の通信パケットを一括生成する通信プロトコル処理と、通信I/Fの内部バッファへ一括生成された複数の通信パケットを転送する処理とのそれぞれの待機時間を低減することができる。したがって、本実施形態は、パケット送信における通信性能の向上に資する。
以下、本発明の実施形態2を、実施形態1と異なる点につき説明する。
実施形態1では、通信I/Fに無線LANデバイスを使用して通信パケットを送信する例を説明した。これに対して本実施形態では、通信I/Fに有線LANデバイス(以下、「PHYデバイス」という)もしくは無線LANデバイスのいずれかを使用して、または双方を選択的に使用して通信パケットを送信する。
実施形態2において、通信装置は、通信I/Fの仕様により、通信I/Fの内部バッファへの通信パケットの転送処理を切り替える。具体的には、通信装置は、通信I/Fに無線LANデバイスを使用した場合に、一括して生成した通信パケットを送信キューに追加し、一方、PHYデバイスを使用した場合には、送信キューは使用しない。
図6は、実施形態2に係る通信装置1が実行する図3のS4の通信プロトコル処理および通信I/F24の内部バッファ241への通信パケット転送処理の詳細処理手順の一例を示すフローチャートである。図4を参照して、サブCPU21が通信プロトコル処理を開始してから通信I/F24の内部バッファ241へ通信パケットを転送するまでの処理を一例として説明する。
なお、以下では、実施形態1と同様に、サブCPU21が通信プロトコル処理を実行する例を説明するが、サブCPU21に替えてメインCPU3が通信プロトコル処理を実行してもよい。
S404で複数の通信パケットが一括して生成された後、S601で、サブCPU21は、通信装置1が備える通信I/F24が無線接続であるか否かを判定する。
通信I/F24が無線接続である場合(S601:Yes)、S405に進み、一方、、通信I/F24が有線接続である場合(S601:No)、S602に進む。
無線接続の場合、サブCPU21が実行する通信プロトコル処理のタスクと無線LANドライバ処理のタスクとを切り替える必要がある。このため、通信装置1に送信キュー204を備えて、異なるタスク間でデータの受け渡しを行う。これに対して、有線接続の場合、サブCPU21は、通信パケットの生成から外部機器への送信までを同一タスクで実行するため、通信パケット送信に際してタスクを切り替える必要がない。
このため、本実施形態では、通信I/F24の仕様により、通信I/F24の内部バッファ241への転送処理を切り替える。
S603で、PHYデバイスは、内部バッファ241に格納された通信パケットを、外部機器に送信して、S417に進む。例えば、S602でセットされた転送用のディスクリプタに従って、通信I/F24であるPHYデバイスは、通信パケットを外部機器へ送信する。あるいは、PHYデバイスは、内部バッファ241にセットされた通信パケットごとに、通信パケットを外部機器へ送信してよい。
S604で、サブCPU21は、送信キュー204に追加された通信パケットの所定の条件を満たすか否かを判定する。
具体的には、送信キュー204に追加された通信パケットの数が、S404で一括生成された通信パケットの数、SD転送可能な上限数、または無線LANデバイス207の内部バッファ241に追加可能な通信パケット数のいずれかに達した場合、S407に進む。あるいは、サブCPU21は、図4のS406と同様、通信パケットに付与された後続無フラグがある場合にS407に進んでもよい。
S408〜S417の処理は、図4のS408〜S417の処理と同様である。なお、実施形態1と同様、無線LANデバイスへの通信パケットの転送方式は、SD転送に限定されない。例えば、PCIe、USB等の他の転送方式を使用してもよい。
また、本発明は、上述の実施形態の一部または1以上の機能を実現するプログラムによっても実現可能である。すなわち、そのプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータ(またはCPUやMPU等)における1つ以上のプロセッサがプログラムを読出し実行する処理により実現可能である。また、そのプログラムをコンピュータ可読な記録媒体に記録して提供してもよい。
また、コンピュータが読み出したプログラムを実行することにより、実施形態の機能が実現されるものに限定されない。例えば、プログラムの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって上記した実施形態の機能が実現されてもよい。
Claims (12)
- 送信データから複数の通信パケットを生成する生成手段と、
内部バッファを備え、前記内部バッファに格納された通信パケットを外部へ送信する通信インタフェースと、
前記複数の通信パケットを、前記通信インタフェースの前記内部バッファへ転送する転送手段と、
前記生成手段により生成された前記複数の通信パケットのうち、前記通信インタフェースの前記内部バッファへ転送すべき通信パケットの転送サイズを、前記転送手段により前記通信パケットを転送する際の、前記通信インタフェースの前記内部バッファの状態に基づいて決定する決定手段と、
を備え、
前記転送手段は、前記決定手段により決定された前記転送サイズで、前記複数の通信パケットを前記内部バッファへ転送することを特徴とする通信装置。 - 前記生成手段は、生成された前記複数の通信パケットを送信キューに追加し、
前記転送手段は、前記送信キューから、前記転送サイズで、前記複数の通信パケットを、前記通信インタフェースの前記内部バッファへ転送する
ことを特徴とする請求項1に記載の通信装置。 - 前記送信キューへの通信パケットの追加が完了したことを示すイベントを前記転送手段に通知する通知手段をさらに備える
ことを特徴とする請求項2に記載の通信装置。 - 前記通知手段は、前記生成手段により生成された前記複数の通信パケットのそれぞれについて、後続する通信パケットの有無を示すフラグを判定し、後続する通信パケットが無いことを示すフラグが判定された際に、前記イベントを前記転送手段に通知する
ことを特徴とする請求項3に記載の通信装置。 - 前記通信インタフェースの仕様に応じて、前記生成手段により生成された前記複数のパケットを前記送信キューに追加するか否かを切り替える切り替え手段をさらに備える
ことを特徴とする請求項2から4のいずれか1項に記載の通信装置。 - 前記決定手段は、前記転送サイズを、前記転送手段により前記通信パケットを転送する際の、前記通信インタフェースの前記内部バッファの空き容量に基づいて決定する
ことを特徴とする請求項1から5のいずれか1項に記載の通信装置。 - 前記決定手段は、前記通信インタフェースの前記内部バッファの前記空き容量が、前記転送手段が一度に転送可能な通信パケットの数の上限以下である場合に、前記内部バッファの前記空き容量を前記転送サイズとして決定する
ことを特徴とする請求項6に記載の通信装置。 - 前記生成手段は、生成された前記複数の通信パケットを送信キューに追加し、
前記決定手段は、前記通信インタフェースの前記内部バッファの前記空き容量が、前記送信キューに追加された通信パケットの数以下である場合に、前記内部バッファの前記空き容量を前記転送サイズとして決定する
ことを特徴とする請求項6または7に記載の通信装置。 - 前記転送手段は、前記複数の通信パケットを、Secure Digital Input Output(SDIO)プロトコルを使用して、前記通信インタフェースの前記内部バッファへ転送する
ことを特徴とする請求項1から8のいずれか1項に記載の通信装置。 - 前記生成手段は、TCP Segmentation Offload(TSO)を使用して前記複数の通信パケットを生成する、
ことを特徴とする請求項1から9のいずれか1項に記載の通信装置。 - 通信パケットを送信する通信装置の制御方法であって、
送信データから複数の通信パケットを生成するステップと、
生成された前記複数の通信パケットのうち、通信インタフェースの内部バッファへ転送すべき通信パケットの転送サイズを、前記通信パケットを前記内部バッファへ転送する際の、前記内部バッファの状態に基づいて決定するステップと、
決定された前記転送サイズで、前記複数の通信パケットを、前記通信インタフェースの前記内部バッファへ転送するステップと、
前記内部バッファに転送された通信パケットを外部へ送信するステップと
を含むことを特徴とする制御方法。 - コンピュータを、請求項1から10のいずれか1項に記載の通信装置の各手段として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019158064A JP7423223B2 (ja) | 2019-08-30 | 2019-08-30 | 通信装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019158064A JP7423223B2 (ja) | 2019-08-30 | 2019-08-30 | 通信装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2021036649A true JP2021036649A (ja) | 2021-03-04 |
JP2021036649A5 JP2021036649A5 (ja) | 2022-08-05 |
JP7423223B2 JP7423223B2 (ja) | 2024-01-29 |
Family
ID=74716739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019158064A Active JP7423223B2 (ja) | 2019-08-30 | 2019-08-30 | 通信装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7423223B2 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006005878A (ja) * | 2004-06-21 | 2006-01-05 | Fujitsu Ltd | 通信システムの制御方法、通信制御装置、プログラム |
US20060173970A1 (en) * | 2005-02-03 | 2006-08-03 | Level 5 Networks, Inc. | Including descriptor queue empty events in completion events |
JP2008092082A (ja) * | 2006-09-29 | 2008-04-17 | Canon Inc | データ受信装置及びデータ受信方法 |
JP2018142853A (ja) * | 2017-02-28 | 2018-09-13 | キヤノン株式会社 | 通信方法、通信装置、及びプログラム |
-
2019
- 2019-08-30 JP JP2019158064A patent/JP7423223B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006005878A (ja) * | 2004-06-21 | 2006-01-05 | Fujitsu Ltd | 通信システムの制御方法、通信制御装置、プログラム |
US20060173970A1 (en) * | 2005-02-03 | 2006-08-03 | Level 5 Networks, Inc. | Including descriptor queue empty events in completion events |
JP2008092082A (ja) * | 2006-09-29 | 2008-04-17 | Canon Inc | データ受信装置及びデータ受信方法 |
JP2018142853A (ja) * | 2017-02-28 | 2018-09-13 | キヤノン株式会社 | 通信方法、通信装置、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP7423223B2 (ja) | 2024-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324873B2 (en) | Hardware accelerated communications over a chip-to-chip interface | |
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
US8175116B2 (en) | Multiprocessor system for aggregation or concatenation of packets | |
US8953631B2 (en) | Interruption, at least in part, of frame transmission | |
EP3461086B1 (en) | Communication apparatus, communication method and computer-readable medium | |
WO2015058699A1 (en) | Data forwarding | |
JP7046983B2 (ja) | パケット伝送方法及び装置 | |
US20230156102A1 (en) | Packet processing method, network device, and related device | |
CN110647494A (zh) | 多处理器通信方法及装置 | |
CN107517167B (zh) | 一种数据传输控制方法、装置及SoC芯片 | |
WO2023109891A1 (zh) | 组播传输方法、装置和系统 | |
JP2004207891A (ja) | データ通信装置、データ通信方法、データ通信プログラム及びデータ通信プログラムを記録した記録媒体 | |
WO2023035722A1 (zh) | Rdma数据传输系统、rdma数据传输方法及网络设备 | |
JP7423223B2 (ja) | 通信装置 | |
JP2020088517A (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US11436172B2 (en) | Data frame interface network device | |
JP6873953B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
CN113497767A (zh) | 传输数据的方法、装置、计算设备及存储介质 | |
JP7027145B2 (ja) | 通信装置、通信装置の制御方法およびプログラム | |
US11102150B2 (en) | Communication apparatus and control method for communication apparatus | |
US20230179545A1 (en) | Packet forwarding apparatus with buffer recycling and associated packet forwarding method | |
EP3229145A1 (en) | Parallel processing apparatus and communication control method | |
JP7321913B2 (ja) | 通信装置、制御方法およびプログラム | |
JP2003289315A (ja) | パケット転送装置およびパケット転送方法 | |
JP6891201B2 (ja) | 通信装置、通信装置の制御方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220728 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220728 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230518 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230523 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230718 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231003 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231128 |
|
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: 20231219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240117 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7423223 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |