JP7005303B2 - Communication equipment, packet generators and their control methods - Google Patents
Communication equipment, packet generators and their control methods Download PDFInfo
- Publication number
- JP7005303B2 JP7005303B2 JP2017219329A JP2017219329A JP7005303B2 JP 7005303 B2 JP7005303 B2 JP 7005303B2 JP 2017219329 A JP2017219329 A JP 2017219329A JP 2017219329 A JP2017219329 A JP 2017219329A JP 7005303 B2 JP7005303 B2 JP 7005303B2
- Authority
- JP
- Japan
- Prior art keywords
- transmission
- data
- packet
- transmission data
- mode
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Description
本発明は通信プロトコル処理を実行する通信装置、パケット生成装置およびそれらの制御方法に関する。 The present invention relates to a communication device that executes communication protocol processing, a packet generation device, and a control method thereof.
近年、急速に増加するスマートデバイスと呼ばれる多機能端末を用いて高解像度動画(8K/4K)をネットワーク経由で閲覧するというニーズが増加しており、これに伴ってネットワークにおけるデータトラフィックが増大している。またEthernet(登録商標)による10Gbps通信、移動体通信の5G通信などのネットワーク高速化に伴って、TCP/UDP/IPなどの通信プロトコル処理のCPUにかかる負荷が大きくなっている。これらの高速データ通信を実現するためにCPUの通信プロトコル処理負荷を低減させる施策が提案されている。 In recent years, there has been an increasing need to view high-resolution video (8K / 4K) via a network using a multifunctional terminal called a smart device, which is rapidly increasing, and along with this, data traffic on the network has increased. There is. Further, with the increase in network speed such as 10 Gbps communication by Ethernet (registered trademark) and 5 G communication of mobile communication, the load on the CPU of communication protocol processing such as TCP / UDP / IP is increasing. In order to realize these high-speed data communications, measures have been proposed to reduce the communication protocol processing load of the CPU.
通信プロトコル処理においてデータを送信するためには、通信ヘッダや通信フッタを付加した通信パケットを生成する必要がある。そして、この通信パケットを生成する処理の効率化は高速データ通信には欠かせないものである。特許文献1は、メインシステムから渡されるロングパケットを送信バッファに蓄積し、所定のサイズ以下に分割し、ヘッダ情報を解析してロングパケットからショートパケットを生成するパケット生成方法について記載している。
In order to transmit data in the communication protocol processing, it is necessary to generate a communication packet to which a communication header and a communication footer are added. Improving the efficiency of the process of generating this communication packet is indispensable for high-speed data communication.
特許文献1の送信パケット生成方法では、メインシステムから渡されるロングパケットを一度送信バッファに蓄積する処理が行われる。一般に、バッファにデータを格納する際に、送信対象のデータが1つのバッファに格納できるとは限らない。言い換えれば、そのデータがすべて連続領域に格納できるとは限らない。また、システムの実装やシステムの稼働状況により、バッファのサイズは一意とは限らず、状況に応じて確保するバッファの大きさを切り替えるものが存在する。特許文献1の通信パケット生成方法では、サイズが異なる複数のバッファに格納された送信データを外部に送信するには、送信処理をそのバッファの数だけ実施しなければならず、送信処理のオーバーヘッドが大きくなるという課題がある。
In the transmission packet generation method of
本発明は上記の課題に鑑みてなされたものであり、バッファへの送信データの格納状況に応じて通信パケットの生成の方法を切り替えるパケット生成装置、通信装置およびそれらの制御方法を提供することを目的とする。 The present invention has been made in view of the above problems, and provides a packet generation device, a communication device, and a control method thereof for switching a communication packet generation method according to a storage status of transmission data in a buffer. The purpose.
本発明の一態様によるパケット生成装置は、
パケット生成システムを備えたパケット生成装置であって、
前記パケット生成システムに配備されたローカルメモリの内の1つの送信バッファに送信対象データの全体が格納できているかの判断処理に基づいて、前記送信対象データを1つの送信データとする、もしくは前記送信対象データからそれぞれが所定長を越えない複数の送信データを生成することを決定する決定手段と、
パケット生成のモードとして、前記1つの送信データからペイロード長が前記所定長を超えない1つ以上のパケットを生成する第1のモードと、前記複数の送信データからそれら送信データの個数を超えない数のパケットを生成する第2のモードと、を有する生成手段と、を備え、
前記生成手段は、前記第1のモードで動作する場合、前記所定長を基に前記送信データからパケットを生成し、前記第2のモードで動作する場合、送信データの結合関係を基に前記送信データからパケットを生成する。
The packet generator according to one aspect of the present invention is
A packet generator equipped with a packet generation system.
Based on the determination process of determining whether the entire transmission target data can be stored in one transmission buffer in the local memory deployed in the packet generation system, the transmission target data is regarded as one transmission data , or the transmission target data is described. A determination means for determining to generate a plurality of transmission data, each of which does not exceed a predetermined length, from the transmission target data .
As the packet generation modes, a first mode for generating one or more packets whose payload length does not exceed the predetermined length from the one transmission data, and a number not exceeding the number of the transmission data from the plurality of transmission data. A second mode for generating a packet of, and a generation means having .
When operating in the first mode, the generation means generates a packet from the transmission data based on the predetermined length, and when operating in the second mode, the transmission means based on the coupling relationship of the transmission data. Generate a packet from the data .
本発明によれば、バッファへの送信データの格納状況に応じて通信パケットの生成方法が切り替わる。 According to the present invention, the method of generating a communication packet is switched according to the storage status of the transmission data in the buffer.
以下、添付の図面を参照して本発明の実施形態の一例について説明する。 Hereinafter, an example of an embodiment of the present invention will be described with reference to the accompanying drawings.
図1は、実施形態による通信装置100の内部構成を機能ブロック単位で示したブロック図である。通信装置100は、メインCPU102と、メインメモリ103と、通信プロトコル処理を実行するサブシステム104とを備える。通信装置100内の各機能ブロック(102~104)はシステムバス101を介して相互に接続されている。
FIG. 1 is a block diagram showing an internal configuration of a
メインCPU102は、通信装置100全体の制御を司るとともに、アプリケーションソフトウエアを実行する。アプリケーションソフトウエアを実行する上で必要となるデータやプログラムなどはメインメモリ103に記憶される。メインCPU102は、メインメモリ103に対し、必要に応じてシステムバス101を介してデータやプログラムの読み出しおよび書き込みを行う。メインメモリ103は、通信装置内の各機能ブロックが共有して利用可能なメモリであり、例えばDRAM(Dynamic Random Access Memory)に代表されるような半導体メモリで構成されている。メインメモリ103のメモリ領域は、プログラムを格納する領域、アプリケーションソフトウエアが使用するアプリケーションバッファ領域、などに分けられる。
The
パケット生成装置としてのサブシステム104は、サブCPU106と、ローカルメモリ107と、DMAコントローラ108と、通信インターフェース109と、ヘッダ処理部110とを備える。これらの機能ブロック(106、107、108,109、110)は、ローカルバス105によって相互に接続されている。ローカルバス105は、システムバス101と通信可能に接続されている。サブシステム104は、通信装置100におけるパケット生成、通信プロトコル処理を実行するサブシステムである。サブシステム104は、TCP/IPプロトコルといった通信プロトコル処理に特化して、外部機器とネットワークを介したデータ転送処理の一部を担っている。サブシステム104は、通信プロトコル処理専用のハードウエアを装備して高速な通信プロトコル処理をメインCPU102に代わって実行する。なお、TCP/IPプロトコルは説明を行うために示した一例であり、他の通信プロトコルが適用されても良い。
The
サブCPU106は、通信プロトコル処理を実行する。具体的には、サブCPU106は、IPv4(IPバージョン4)、IPv6(IPバージョン6)、UDP、TCPの各通信プロトコル処理(送信シーケンス制御や輻輳制御、通信エラー制御等)を行う。またサブCPU106は、1つのプロセッサによる構成としてもよいし、複数のプロセッサによるマルチプロセッサ構成としてもよいし、プロセッサと一部の機能をアクセラレートするハードウエアを含む構成としてもよい。
The
ローカルメモリ107は、サブCPU106による利用が可能なメモリであり、例えば、SRAM(Static Random Access Memory)に代表されるような半導体メモリで構成される。また、ローカルメモリ107は、システムバス101とローカルバス105を経由してメインCPU102からもアクセスが可能になっている。ローカルメモリ107は、通信プロトコル処理を実行する上で必要となる送受信データや各種の設定情報などを記憶する。ローカルメモリ107に対するデータの読み出しおよび書き込みは、ローカルバス105を介して行われる。
The
DMAコントローラ108は、デスクリプタに記載された内容に従ってソース側からディスティネーション側へデータ転送を実行する。デスクリプタには、データ転送元となるソース側のアドレス情報、データ転送先となるディスティネーション側のアドレス情報、データ転送の転送サイズの情報、などが記載されている。また、デスクリプタには次に実行するデスクリプタの有無とそのデスクリプタのアドレス情報を記載する領域があり、DMAコントローラ108への一度の転送開始指示により、複数のデスクリプタを使用した転送が可能である。
The
ローカルバス105に対してマスターとなる機能ブロック(例えば、サブCPU106)が、ローカルメモリ107にデスクリプタを書き込み、その後、DMAコントローラ108に対してDMA転送開始指示を通知する。DMA転送開始指示の通知の方法としては、最初のデスクリプタを保存しているローカルメモリ107のアドレス情報をDMAコントローラ108に設定することが挙げられる。
A functional block (for example, a sub CPU 106) that becomes a master for the
DMAコントローラ108についてより詳細に説明する。DMAコントローラ108は、DMA転送部181とチェックサム演算器182を備える。DMA転送開始指示の通知を受けたDMAコントローラ108のDMA転送部181は、上述のデスクリプタにしたがって、メインメモリ103とローカルメモリ107の間、または、内部メモリ113とローカルメモリ107の間のDMA転送を実行する。また、DMA転送部181は、内部メモリ113と通信インターフェースの間、ローカルメモリ107と通信インターフェースの間のDMA転送処理も実行する。チェックサム演算器182は、DMA転送されるデータについて16ビット単位で1の補数和を計算する演算機能を有する。DMA転送部181は、転送されるデータの末尾にチェックサム演算器182の演算結果を付加してDMA転送する機能、あるいはチェックサム演算器182の演算結果だけを出力する機能を具備する。さらにこの演算機能は、複数の演算領域を指定して1つの補数和を算出することができる。チェックサム演算器182におけるこれら演算機能の実行は、デスクリプタにより指示されてもよいし、DMAコントローラ内のレジスタで指示されてもよい。
The
通信インターフェース109は、LAN(Local Area Network)に代表されるようなネットワーク111とのインターフェースとなっており、通信における物理層(PHY層)とデータリンク層(MAC層)の通信制御を担っている。通信インターフェース109は、送受信情報を一時的に蓄積するバッファメモリ(不図示)を有する。このバッファメモリに対する送受信情報の入出力は、DMAコントローラ108のDMA転送によって行われる。なお、通信インターフェース109がDMAコントローラを内蔵して、そのDMAコントローラを使用する構成であっても良い。その場合には、DMAコントローラ108と同様に一度の転送開始指示で複数のデスクリプタを使用した転送ができるものが望ましい。なぜならば、送信するデータ(ペイロード)とそのヘッダは常に連続領域に格納されているとは限らないため、複数の領域から効率よくデータとヘッダを読み取ることができるほど、高速な通信速度を得られやすいからである。
The
ヘッダ処理部110は、コア部112と内部メモリ113を備え、通信プロトコル処理における通信ヘッダの生成処理を実行する。ヘッダ処理部110は、サブCPU106が実行する通信プロトコル処理における通信ヘッダ生成処理を肩代わりして実行する機能ブロックである。コア部112内のレジスタ部191は、ヘッダ処理部110を制御するための設定情報を入力する入力機能と、ヘッダ処理部110内の状態を確認するためのステータス情報を表示する出力機能を有する。また、レジスタ部191は、ステータス情報を表示するだけでなく外部へ割込み信号を使用してステータス情報を通知する機能も有している。
The
コア部112内の通信ヘッダ生成部192は、レジスタ部191に入力された設定情報に従って通信ヘッダを生成し、内部メモリ113に記憶する。レジスタ部191に入力される設定情報は、ひな形となるヘッダ情報(以下、ひな形ヘッダ)と通信ヘッダ生成のための編集情報を含む。内部メモリ113は、コア部112およびサブCPU106からアクセス可能であり、例えば、SRAM(Static Random Access Memory)に代表されるような半導体メモリで構成される。内部メモリ113は、コア部112により生成された通信ヘッダを記憶する。
The communication
さらに、ヘッダ処理部110は、ローカルバス105に対してマスターとなる機能を有し、DMAコントローラ108を制御することが可能である。ヘッダ処理部110によるDMA転送の設定は次のように行われる。すなわち、ヘッダ処理部110がDMA転送の内容を記載したデスクリプタを生成して内部メモリ113に保存する。そして、ヘッダ処理部110がこのデスクリプタを保存した内部メモリ113のアドレス情報や各種転送にかかわる情報をDMAコントローラ108に設定する。これにより、DMAコントローラ108は、内部メモリ113に保存されているデスクリプタに従ってDMA転送を実行する。さらに、ヘッダ処理部110は、レジスタ部191へ設定される設定情報により、第1のモードと第2のモードを切り替えて動作する機能を有している。設定情報、第1のモードおよび第2のモードの詳細については後述する。
Further, the
次に図1に示す通信装置100の通信動作について説明する。図2は、ネットワーク111を介して外部機器と接続し、その外部機器へ通信パケットを送信する際の通信装置100の動作を示すフローチャートである。なお、以下では通信装置100が外部機器との間でデータ転送する際に使用する通信プロトコルとしてTCP/IPプロトコルを用いた例を説明するが、TCP/IPプロトコル以外の通信プロトコルであってもよいことは言うまでもない。
Next, the communication operation of the
ステップS201は、このフローチャートのスタートを示す。通信装置100がネットワーク111を介して外部機器と通信状態になったとき、すなわち外部機器との通信が確立したときに、図示のフローチャートによって示される処理が開始する。ステップS202において、サブCPU106は、自身が実行する通信プロトコル処理でもって外部機器へ送信する通信パケットの生成準備が整ったかどうかを判断する。例えば、メインCPU102で実行されているアプリケーションソフトウエアから外部機器へ通信パケットを送信する指示(送信指示)をサブCPU106が受け取った場合、通信パケットの生成準備が整ったと判断される。外部機器へ送信する通信パケットの生成準備が整ったと判断された場合、処理はステップS203へ移行し、そうでない場合、処理は現在の状態を維持する。
Step S201 indicates the start of this flowchart. When the
ステップS203において、サブCPU106は、外部機器への通信プロトコルに従った送信を実行するために、送信対象データをメインメモリ103からサブシステム104のローカルメモリ107へ転送する。ここではステップS202で受け取った送信指示に基づいて、メインメモリ103からローカルメモリ107へ送信対象データがDMA転送される。サブCPU106は、DMAコントローラ108を用いてこのDMA転送を行う。DMA転送の設定はサブCPU106がDMA転送の内容を記載したデスクリプタを生成してローカルメモリ107に保存する。そして、サブCPU106が、このデスクリプタが保存されたローカルメモリ107のアドレス情報をDMAコントローラ108に設定することでDMA転送が実行される。このDMA転送の完了をもってステップS203の処理は終了する。
In step S203, the
DMA転送の際に、メインメモリ103の送信対象データの全体を一つの送信バッファ(ローカルメモリ107の、アドレスが連続した1つのメモリ空間)に格納できるとは限らない。確保できる送信バッファの量はサブシステムの稼働状況、つまりローカルメモリ107の空き具合に依存するからである。また、送信データが大きいほど一つの送信バッファに格納できる確率は小さくなる傾向にある。なぜなら、一つの送信バッファを大きく取るということは、メモリの連続領域を確保する必要があるためである。受信処理で受信パケットを格納している場合、その他の通信相手に対する送信のために送信バッファを確保している場合などでは、メモリを連続領域で確保できなくなる可能性が高まる。送信バッファを可能な限り大きく取っても一つの送信バッファに送信対象データが収まらない場合は、サブCPU106は、送信対象データを複数の送信バッファに分割してデータを格納するようにデスクリプタを生成し、データ転送を実行する。ここで、送信対象データが1つの送信バッファに格納できたかどうかを基準に第1のモードもしくは第2のモードのどちらを使用して通信パケットを生成するかをサブCPU106が判断する。
At the time of DMA transfer, it is not always possible to store the entire transmission target data of the
ステップS203における送信データの転送処理が終わると、ステップS204において、サブCPU106は、ヘッダ処理部110に対してヘッダ生成処理を開始するよう命令する。そして、ステップS205において、サブCPU106は、ヘッダ処理部110によるヘッダ生成処理の完了を待つ。ステップS204におけるヘッダ生成処理の開始の命令は、サブCPU106が設定情報をレジスタ部191に設定することでなされる。以下、サブCPU106による設定情報の設定処理について図6のフローチャートを参照して説明する。
When the transfer processing of the transmission data in step S203 is completed, in step S204, the
図6は、サブCPU106による、設定情報の生成処理を示すフローチャートである。まず、ステップS601において、サブCPU106はステップS202で転送した送信対象データの長さ(以下、送信データ長)と生成するパケットのパケットサイズに基づいて生成するパケット数を算出する。ステップS602~ステップS610では、サブCPU106は、ローカルメモリ107への送信対象データの格納状態に基づいて、送信対象データから派生される、パケット生成に用いられる送信データを決定する。ステップS602において、サブCPU106は、ローカルメモリ107の1つの送信バッファ(連続したアドレスのメモリ領域)に送信対象データの全体が格納されたか否かを判定する。1つの送信バッファに送信対象データの全体が格納されている場合は、ステップS603において、サブCPU106は、送信対象データの全体を1つの送信データに決定する。
FIG. 6 is a flowchart showing a process of generating setting information by the
一方、ステップS602において複数の送信バッファに送信対象データが分割されて格納されていると判定された場合、ステップS604~S610において、サブCPU106は、送信対象データから複数の送信データを決定する。この場合、送信対象データは複数の送信バッファの個数以上の送信データとしてパケット生成に提供される。まず、ステップS604において、サブCPU106は、先頭の送信バッファを選択する。ステップS605において、サブCPU106は、選択した送信バッファに格納されているデータ(送信対象データの部分データ)が送信するパケットのセグメントサイズ以下かどうかを判定する。データがセグメントサイズ以下であると判定された場合、ステップS606において、サブCPU106は、選択した送信バッファに格納されているデータを1つの送信データに決定する。データがセグメントサイズ以下ではないと判定された場合、ステップS607において、サブCPU106は、選択した送信バッファに格納されているデータをセグメントサイズ以下のデータに分割し、それぞれを送信データに決定する。
On the other hand, when it is determined in step S602 that the transmission target data is divided and stored in the plurality of transmission buffers, in steps S604 to S610, the
ステップS608において、サブCPU106は、決定された送信データのサイズとパケットのセグメントサイズとに基づいて、隣接する送信データの結合を行うか否かを示すデータ結合情報を生成する。本実施形態によるデータ結合情報の詳細については後述する。次に、ステップS609において、サブCPU106は、全ての送信バッファについて上記処理を行ったか否かを判定する。未処理の送信バッファがあると判定された場合、ステップS610においてサブCPU106は、次の送信バッファを選択し、ステップS605からの処理を実行する。ステップS609で未処理の送信バッファがないと判定されると、処理はステップS611へ進む。ステップS611において、サブCPU106は、ステップS608により生成されたデータ結合情報に基づいてステップS601で設定されたパケット数を修正する。こうして、ローカルメモリ107への送信対象データの格納状態に基づいて、送信対象データを送信するための送信データの構成が決定される。
In step S608, the
ステップS612において、サブCPU106は、設定情報をヘッダ処理部110のレジスタ部191に入力(設定)する。設定情報は、パケット数、ひな形ヘッダの情報、ローカルメモリ107における送信データの開始アドレス、送信データの長さ、送信データの個数、初期シーケンス番号などの情報を含む。なお、送信対象データを複数の送信データとして処理するように決定された場合には、設定情報はそれぞれの送信データの開始アドレスと長さを含む。また、ヘッダ処理部110は、生成する通信ヘッダの開始アドレスが固定された仕様でもよいし、サブCPU106によって管理される仕様でもよい。前者と後者ともに内部メモリ113の領域に通信ヘッダを生成するように実装、もしくは指示する必要がある。後者のメリットとしては、ヘッダ処理部110が生成した通信ヘッダを外部へ送信する前に次の通信ヘッダの生成を実施するような場合に、生成済みでかつ未送信の通信ヘッダを上書きしないように指示することが可能となることが挙げられる。
In step S612, the
なお、ローカルメモリ107のサイズは実装時に決定されてしまうため、前者の仕様と後者の仕様ともにひな形ヘッダの全長の上限値を事前に考慮する必要がある。その際に、TCPやIPv6の場合にはオプション設定を考慮して設定する必要がある。とくにIPv6はオプションの上限値がないため、どこまで対応するか注意が必要である。
Since the size of the
上述のように、ローカルメモリ107において送信対象データが一つの送信バッファに格納できているのであれば送信データの個数は1である。また、送信対象データが複数の送信バッファに分割して格納されているのであれば送信データの個数はその分割数以上である。なお、送信データの個数が1である場合、サブCPU106は、ヘッダ処理部110が送信データの分割を行う分割長を指定する(設定情報に含める)必要がある。この分割長はTCPにおける最大セグメントサイズ(Max Segment Size、以下MSS)と同じでもよいし、より短くても構わない。但し、少なくとも、生成するパケット数と送信データ長と分割長の間で整合性が取れている必要がある。すなわち、生成するパケット数と分割長の掛け算の計算値が、送信データ長と等しいかもしくは小さい必要がある。また、送信データ長よりも分割長のほうが大きい場合には、生成するパケット数は1とする必要がある。
As described above, if the transmission target data can be stored in one transmission buffer in the
また、ヘッダ処理部110は、複数の送信データが入力された場合に、複数の送信データを結合して得られるパケットのための通信ヘッダを生成する機能を持つ。仮に送信データの個数を4と入力した場合、サブCPU106は、1~4のいずれかの数のパケットに対応してパケットを生成するように送信データの結合を指示することができる。但し、入力した送信データの個数よりも多くのパケットを生成することはできない。結合する送信データの個数の上限値は、ヘッダ処理部110に一度に入力できる送信データの数以下であればよく、実装依存である。なお、TCPプロトコルの送信ウィンドウサイズの値とMSSの値から、送信データの個数の上限を算出してもよい。たとえば、送信ウィンドウサイズが64キロバイト(65536バイト)、MSSが1460バイトであれば、最大で45個のパケットを一度の命令で生成できるように実装しているのが望ましい。複数の送信データを入力する場合、最終的なパケットの全長を管理するのはサブCPU106である。したがって、サブCPU106は、使用するプロトコルに準拠するようにヘッダ処理部110に結合を設定する必要がある。あくまでもヘッダ処理部110は入力されたデータを結合するかしないかを管理する。送信データの結合に関する機能の詳細は後述する。
Further, the
また、上述のステップS607では、1つの送信バッファから複数の送信データが決定される。すなわち、送信バッファの数よりも多い数のパケットを生成することが必要となる場合がある。このように、複数の送信バッファに格納されている送信対象データから、その送信バッファ数を超える数のパケットを生成する場合は、ヘッダ処理部110のレジスタ部191に入力される設定情報を工夫する必要がある。より具体的には、設定情報に含まれる送信データの個数、送信データのアドレスと長さを工夫する必要がある。たとえば2つの送信バッファにある送信データから3つのパケットを生成する場合を例に説明する。
Further, in step S607 described above, a plurality of transmission data are determined from one transmission buffer. That is, it may be necessary to generate more packets than there are transmit buffers. In this way, when generating a number of packets exceeding the number of transmission buffers from the transmission target data stored in the plurality of transmission buffers, devise the setting information input to the
図7は送信対象データから送信データおよびパケットを生成する様子を示す図である。図7(a)に示されるように、2つの送信バッファをそれぞれAバッファとBバッファとする。Aバッファに格納されている送信データの開始アドレスが0x1000、送信データ長が2000バイト、Bバッファに格納されている送信データの開始アドレスが0x2000、送信データ長が1000バイトとする。パケットを送信する際のMSSが仮に1000バイトである場合、バッファAの送信データを利用して2つのパケット、バッファBの送信データを利用して1つのパケットを生成することが可能である。そこで、サブCPU106は、以下の内容を示す設定情報をレジスタ部191に入力する。
・送信データの開始アドレスが0x1000、0x13E8(0x1000から1000バイトオフセット)、0x2000。
・送信データ長がそれぞれ1000バイト。
・送信データ数が3で、生成するパケット数が3。
FIG. 7 is a diagram showing how transmission data and packets are generated from transmission target data. As shown in FIG. 7A, the two transmission buffers are the A buffer and the B buffer, respectively. The start address of the transmission data stored in the A buffer is 0x1000, the transmission data length is 2000 bytes, the start address of the transmission data stored in the B buffer is 0x2000, and the transmission data length is 1000 bytes. If the MSS at the time of transmitting a packet is 1000 bytes, it is possible to generate two packets by using the transmission data of the buffer A and one packet by using the transmission data of the buffer B. Therefore, the
-The start address of the transmission data is 0x1000, 0x13E8 (offset from 0x1000 to 1000 bytes), 0x2000.
-Transmission data length is 1000 bytes each.
-The number of transmitted data is 3, and the number of packets to be generated is 3.
この設定により、図7(a)に示されるように、一度の処理命令で、2つの送信データから3つのパケットを生成することが可能となる。ヘッダ処理部110が1つの送信データしか受け付けることができない場合、上記例では必ず二度の処理命令が必要になる。これに対し、本実施形態は、複数に分割されている送信データを一度にパケット化できるメリットがある。その結果、複数回の処理に係るオーバーヘッドを削減することが可能となる。また、図7(a)には、隣接する送信データとの結合の要否を示すデータ結合情報の例が示されている。本実施形態のデータ結合情報は、次の送信データとの結合の要否を示す。図7(a)のデータ結合情報は、全ての送信データに対して"1"となっており、次の送信データとの結合を行わないことを示している。
With this setting, as shown in FIG. 7A, it is possible to generate three packets from two transmission data with one processing instruction. When the
また、上述したように、データ結合情報により結合を指示することにより送信バッファの個数よりも少ない個数のパケットを生成することができる。例えば上記の例で仮にMSSが1500である場合、図7(b)に示されるように、サブCPU106が以下の情報をレジスタ部191に設定することで、3つの送信データから2つのパケットを生成することができる。
・開始アドレスが0x1000、0x15DC(0x1000から1500バイトオフセット)、0x2000。
・送信データ長がそれぞれ1500バイト、500バイト、1000バイト・
・データ結合情報(二番目と三番目の送信データを結合することの指示)。
・送信データ数が3、生成するパケット数が2。
Further, as described above, it is possible to generate a number of packets smaller than the number of transmission buffers by instructing the combination by the data combination information. For example, in the above example, if the MSS is 1500, as shown in FIG. 7B, the
-Starting addresses are 0x1000, 0x15DC (offset from 0x1000 to 1500 bytes), 0x2000.
・ Transmission data lengths are 1500 bytes, 500 bytes, and 1000 bytes, respectively.
-Data combination information (instruction to combine the second and third transmission data).
-The number of transmitted data is 3, and the number of packets to be generated is 2.
データ結合情報として、次の送信データと結合する送信データに"0"が付される。図7(b)では、500バイトの送信データが次の送信データ(1000バイト)と結合されることを示している。なお、上記では、MSSを基準として設定値を決定したが、MSSを基準とする必要はない。また、データを結合せず(送信データのアドレスとデータ長はそのまま)、送信データ数が3、生成するパケット数が3としてもよい。 As the data combination information, "0" is added to the transmission data to be combined with the next transmission data. FIG. 7B shows that 500 bytes of transmission data are combined with the next transmission data (1000 bytes). In the above, the set value is determined based on the MSS, but it is not necessary to use the MSS as a reference. Further, the number of transmitted data may be 3 and the number of generated packets may be 3 without combining the data (the address and the data length of the transmitted data remain the same).
なお、上記では、送信データの結合を行うか否かを判断するための基準として送信データのサイズを用いたがこれに限られるものではない。たとえば通信インターフェースが全二重であるか半二重であるかを、送信データの結合を行うか否かの判断基準として用いてもよい。半二重である場合、一回の送信で送信できる送信データ長が大きくなる程ネットワーク利用効率が高くなるため、送信データを結合させるほうがよい。また、通信相手の性能を加味して送信データの結合を行うか否かを判断してもよい、通信相手の性能が良いほどパケット処理スピードが速くなるので、小さいパケットが増えてもパケットロスが発生する確率は少なく、通信速度の低下が発生するリスクは少ない。一方、ヘッダ処理部110は結合処理が入ると、その分の処理負荷が増えるため処理スピードが遅くなる。したがって、通信相手の性能に問題なければ、送信データを結合させる必要がない。なお、通信相手の性能は、確立している通信接続を用いて通信相手に問い合わせることで取得すればよい。
In the above, the size of the transmission data is used as a criterion for determining whether or not to combine the transmission data, but the present invention is not limited to this. For example, whether the communication interface is full-duplex or half-duplex may be used as a criterion for determining whether to combine transmission data. In the case of half-duplex, the network utilization efficiency increases as the transmission data length that can be transmitted in one transmission increases, so it is better to combine the transmission data. In addition, it may be determined whether or not to combine transmission data in consideration of the performance of the communication partner. The better the performance of the communication partner, the faster the packet processing speed, so even if the number of small packets increases, packet loss will occur. The probability of occurrence is low, and the risk of a decrease in communication speed is low. On the other hand, when the
ステップS205において、サブCPU106は、ヘッダ処理部110に開始させた処理が完了したかどうかを判断する。処理の完了を判断する方法としては、例えば、ヘッダ処理部110からの割り込み信号の受信、ヘッダ処理部110のステータスレジスタのポーリング、などがある。割り込み信号の受信待ちのほうが、割り込みを待っている間に他の処理を行うことができるので処理の並列性が向上するメリットがある。サブCPU106は、ヘッダ処理部110の処理終了を検知すると、処理をステップS206へ進める。ヘッダ処理部110は、レジスタ部191に設定された設定情報に従って処理を行う。その結果、終了通知が行われる際には、指定されたパケット数と同数の通信ヘッダが内部メモリ113上に生成されている。
In step S205, the
ステップS206において、サブCPU106は、ローカルメモリ107に格納されている送信データと内部メモリ113に格納されている通信ヘッダを通信インターフェース109に転送し、通信パケットの送信を行う。サブCPU106はヘッダ処理部110にヘッダ生成の命令(送信データの結合を含む)を発行しているため、生成されたヘッダとそのヘッダに対応するペイロード部分を識別することが可能である。したがって、ヘッダとペイロード部分が連続メモリ領域に格納されていなくても、サブCPU106は、通信パケットを識別することができる。通信インターフェース109にヘッダおよび送信データを転送する際には、DMAコントローラ108が使用されてもよいし、通信インターフェース109内に具備するDMAコントローラが使用されてもよい。サブCPU106は1つのパケットに対してヘッダ部分のデスクリプタとペイロード部分のデスクリプタの2つを1組とし、送信するパケット数だけデスクリプタを準備してから通信インターフェース109へ送信する。
In step S206, the
ステップS206における通信インターフェース109への通信パケットの送信が終了すると、ステップS207において、サブCPU106は、通信装置100と外部機器の通信状態を終了させる要因が発生したかどうかを判断する。外部機器との通信状態を終了させる要因が発生していなければ、サブCPU106は、処理をステップS202へ戻し、上述の処理を繰り返す。外部機器との通信状態を終了させる要因が発生していると判断されると、サブCPU106は、処理をステップS208へ進める。外部機器との通信状態を終了させる要因としては、例えば以下のケースがある。
・メインCPU102で実行しているアプリケーションソフトウエアが、ユーザからの操作などで通信装置と外部機器の接続を終了させる指示を検知した場合。
・ユーザがネットワークケーブルを通信装置から抜くなどして通信回線が断絶したことを通信インターフェース109が検知した場合。
・通信相手である外部機器から通信回線を切断する旨の通知を含んだ通信パケットを受信した場合。
When the transmission of the communication packet to the
-When the application software running on the
-When the
-When a communication packet including a notification to disconnect the communication line is received from an external device that is the communication partner.
ステップS208において、サブCPU106は、通信装置100と外部機器の通信状態を終了させる処理を行う。より詳細には、サブCPU106が担っている通信プロトコル処理に従って外部機器との通信回線を切断する。そして、サブCPU106は、ローカルメモリ107やヘッダ処理部110の内部メモリ113に一時的に保存している関連情報を削除する。その後、サブCPU106からメインCPU102へ通信回線の切断完了の通知が伝達されるとアプリケーションソフトウエアで通信回線が切断した事をユーザなどに示す表示が行われる。その後、本処理は終了する(ステップS209)。
In step S208, the
以上により、ヘッダ処理部110を適切に動作せることで、効率的にパケットの生成を行うことが可能となる。
As described above, by appropriately operating the
図3は実施形態におけるヘッダ処理部110の動作モードを判定する処理を示すフローチャートである。本実施形態において、図3に示される動作モードの判定処理は、ヘッダ処理部110が、サブCPU106から処理を開始する命令(ステップS204)を受け付けたことにより開始する(ステップS301)。ヘッダ処理部110は、サブCPU106により決定された(図6の処理により決定された)送信データの個数に応じて第1のモードと第2のモードを切り替える。
FIG. 3 is a flowchart showing a process of determining the operation mode of the
ステップS302において、ヘッダ処理部110は、レジスタ部191に設定された送信データの個数が1であるか否かを判定する。送信データの個数が1であると判定された場合、ステップS303において、ヘッダ処理部110は、1つの送信データから、所定長を超えない1つ以上のパケットを生成する第1のモードで動作する。本実施形態では、所定長とは分割長であり、MSSを用いることができる。第1のモードでは、分割長を用いて通信ヘッダのシーケンス番号とペイロード長が計算される。第1のモードの詳細は図4で説明する。そして処理はS305へ進み、終了する。他方、ステップS302において、送信データの個数が1以外(複数)であると判定された場合、処理はステップS304へ進む。ステップS304において、ヘッダ処理部110は、複数の送信データからそれら送信データの個数を超えない数のパケットを生成する第2のモードで動作する。第2のモードでは、データ結合情報を用いて通信ヘッダのシーケンス番号とペイロード長が計算される。第2のモードの詳細は図5で説明する。そして処理はS305へ進み、終了する。
In step S302, the
図3のフローチャートに示される処理と並行して、ヘッダ処理部110は、サブCPU106により入力されたひな形ヘッダのコピーを内部メモリ113に生成する。もちろん、ひな形ヘッダのコピー完了前や完了後に図3に示される処理が行われても問題はない。ひな形ヘッダのコピーの個数は、レジスタ部191に設定されたパケット数と等しい。通信ヘッダの各部位の修正はこのコピーと同時に行われてもよいし、コピー後に上書きする形で行われてもよい。
In parallel with the processing shown in the flowchart of FIG. 3, the
図4は、ステップS303において実行される、第1のモードにおける各パケットのペイロード長の計算とシーケンス番号の計算の処理を示すフローチャートである。ひな形ヘッダのコピーが終了していなくてもよいが、計算とヘッダ修正の両方を同時に行う場合、該当部分のヘッダコピーは少なくとも終わっている必要がある。同時に行わない場合は、一時格納領域に計算結果を保存しておく必要がある。図中に記載されているシーケンス番号[i]はi番目のパケットのシーケンス番号の値を表しており、最初のパケットのシーケンス番号はシーケンス番号[0]で表わされるものとする。また、図中に記載されているペイロード長[i]は、i番目のパケットのペイロード長を表しており、最初のパケットのペイロード長はペイロード長[0]で表わされるものとする。 FIG. 4 is a flowchart showing a process of calculating the payload length and the sequence number of each packet in the first mode, which is executed in step S303. The copy of the template header does not have to be completed, but if both the calculation and the header modification are performed at the same time, the header copy of the corresponding part must be completed at least. If not done at the same time, it is necessary to save the calculation result in the temporary storage area. It is assumed that the sequence number [i] shown in the figure represents the value of the sequence number of the i-th packet, and the sequence number of the first packet is represented by the sequence number [0]. Further, the payload length [i] shown in the figure represents the payload length of the i-th packet, and the payload length of the first packet is represented by the payload length [0].
ステップS402において、通信ヘッダ生成部192は、変数iを初期化する(i=0)。次に、ステップS403において、通信ヘッダ生成部192は、最初のパケットに対する処理であるかどうかを判断する。最初のパケットに対する処理であると判断された場合、処理はステップS405へすすみ、そうでない場合は、処理はステップS404へ進む。この判断基準に変数iを使用しても構わない。すなわち、i=0の場合は最初のパケットに対する処理であると判断し、i≠0の場合は最初のパケットに対する処理ではないと判断する。
In step S402, the communication
ステップS404において、通信ヘッダ生成部192は、i(≠0)番目のパケットのヘッダに記載するシーケンス番号を計算する。シーケンス番号[i]は、レジスタ部191(設定情報)に設定された初期シーケンス番号からそれまでのパケット(i-1番目のパケット)のペイロード長の総和を加算したものである。たとえば、3番目のパケットに対する計算の場合、1番目のパケットのペイロード長と2番目のパケットのペイロード長の総和が、「それまでのパケットのペイロード長の総和」となる。計算が終了すると、処理はステップS406へ進む。
In step S404, the communication
ステップS405では、通信ヘッダ生成部192は、ステップS404と同様にi番目のパケットのヘッダに記載するシーケンス番号を計算する。ステップS405に処理が到達する場合はi=0であるため、シーケンス番号[i]には、レジスタ部191に設定された初期シーケンス番号が使用される。計算が終了すると、処理はステップS406へ進む。
In step S405, the communication
ステップS406において、通信ヘッダ生成部192は、最後のパケットに対する処理であるかどうかを判断する。この判断は、例えば変数iの値とレジスタ部191に設定されたパケット数を比較することにより行える。最後のパケットに対する処理ではない判定された場合、ステップS407において、通信ヘッダ生成部192は、i番目のパケットのペイロード長を計算する。ペイロード長は、レジスタ部191に設定される分割長と同じとする。計算が終了すると、ステップS408において、通信ヘッダ生成部192は、変数iに1を加算する。その後、通信ヘッダ生成部192は、処理をステップS403に戻し、次のパケットのシーケンス番号とペイロード長を計算する。
In step S406, the communication
ステップS406において、最後のパケットに対する処理であると判断された場合、ステップS409において、通信ヘッダ生成部192は、i番目のパケットのペイロード長を計算する。ステップS409では、ペイロード長[i]は、レジスタ部191に設定されている送信データ長から、分割長とパケット数から1を差し引いた値との積を差し引いた値である。すなわち、送信データ長からそれまでのパケットのペイロード分を差し引くことで残りの送信データ長を算出し、その値が最後のパケットのペイロード長となる。計算が終了すると、本処理は終了する(ステップS410)。なお、図4のフローチャートは第1のモードの処理であり、ヘッダ処理部110に入力される送信データの個数は1つである。そのため、フローチャートに記載されている送信データ長に対して明示的に番号を付加していない。
If it is determined in step S406 that the process is for the last packet, in step S409, the communication
以上により、第1のモードにおいて、1つの送信データから各パケットのシーケンス番号とペイロード長を計算することが可能となる。 As described above, in the first mode, it is possible to calculate the sequence number and the payload length of each packet from one transmission data.
図5は、ステップS304において実行される、第2のモードにおける各パケットのペイロード長の計算とシーケンス番号の計算の処理を示すフローチャートである。なお、第1のモードの処理(図4)と同様に、ひな形ヘッダのコピーが終了していなくてもよいが、計算とヘッダ修正の両方を同時に行う場合は、該当部分のヘッダコピーは少なくとも終わっている必要がある。同時に行わない場合は、一時格納領域に計算結果を保存しておく必要がある。図5に記載されているシーケンス番号[i]とペイロード長[i]は図4で説明したものと同様である。また、送信データ長[k]は、ヘッダ処理部110に入力されたk番目の送信データの長さを表しており、最初の送信データの長さは送信データ長[0]で表される。
FIG. 5 is a flowchart showing a process of calculating the payload length and the sequence number of each packet in the second mode, which is executed in step S304. As in the process of the first mode (FIG. 4), the copy of the template header does not have to be completed, but when both the calculation and the header correction are performed at the same time, the header copy of the corresponding part is at least. Must be finished. If not done at the same time, it is necessary to save the calculation result in the temporary storage area. The sequence number [i] and the payload length [i] shown in FIG. 5 are the same as those described in FIG. Further, the transmission data length [k] represents the length of the kth transmission data input to the
ステップS502において、ヘッダ処理部110の通信ヘッダ生成部192は、変数iと変数kと変数tmpを初期化する。初期化を終えると、ステップS503において、通信ヘッダ生成部192は、tmpに送信データ長[k]の値を加算する。次に、ステップS504において、通信ヘッダ生成部192は、変数kに1を加算する。次に、ステップS505において、通信ヘッダ生成部192は、k-1番目の送信データを次の送信データ(k番目の送信データ)と結合するかどうかを判定する。結合すると判定された場合、処理はステップS503に戻り、結合しないと判定された場合、処理はステップS506へ進む。
In step S502, the communication
次の送信データ(隣接する送信データ)を結合するか否かの判定には、データ結合の要否を示すデータ結合情報が用いられる。図7(b)により上述したように、本実施形態のデータ結合情報は1つの送信データに対して1ビットの情報である。データ結合情報が0値である場合は次の送信データと結合することを示し、データ結合情報が1値である場合は次の送信データと結合しないことを示す。たとえば、送信データの数が3つであり、データ結合情報が最初の送信データから0、1、1である場合は、最初と二番目の送信データを結合してパケットを生成し、三番目の送信データだけでパケットを生成することを意味する。ヘッダ処理部110のレジスタに入力する生成パケット数とデータ結合情報の総和(今回の例では、0+1+1=2)は等しくなるように入力しなければならない。データ結合情報の入力は専用のレジスタを用意しても構わないが、1つの送信データに1ビットの情報だけなので、他のレジスタ領域の特定フィールドを使用してもよい。たとえば、ヘッダ処理部110が扱える送信データの最長が64キロバイト(一般的なTCPの最大ウィンドウサイズ)である場合、最大で16ビットしか使用しない。1つのレジスタが32ビットで構成する場合であれば、使われないビット領域が存在するので、そのようなビット領域を活用することが可能である。
Data combination information indicating the necessity of data combination is used for determining whether or not to combine the next transmission data (adjacent transmission data). As described above with reference to FIG. 7B, the data combination information of the present embodiment is 1-bit information for one transmission data. When the data binding information is 0 value, it indicates that it is combined with the next transmission data, and when the data binding information is 1 value, it indicates that it is not combined with the next transmission data. For example, if the number of transmitted data is three and the data binding information is 0, 1, 1 from the first transmitted data, the first and second transmitted data are combined to generate a packet, and the third is It means that a packet is generated only from the transmitted data. The number of generated packets to be input to the register of the
ステップS506において、通信ヘッダ生成部192は、i番目のパケットのペイロード長(ペイロード長[i])にステップS503で計算したtmpの値をセットする。次に、ステップS507において、通信ヘッダ生成部192は、変数tmpを0に初期化する。続いて、ステップS508において、通信ヘッダ生成部192は、直前までの処理が最初のパケットに対する処理であるかどうかを判定する。この判定は、例えば、iが0か否かにより行うことができる。
In step S506, the communication
ステップS508において最初のパケットに対する処理ではない(i≠0の場合)と判定された場合、ステップS509において、通信ヘッダ生成部192は、i番目のパケットのヘッダに記載するシーケンス番号(シーケンス番号[i])を計算する。シーケンス番号[i]は、レジスタに設定された初期シーケンス番号からそれまでのパケットのペイロード長の総和を加算したものである。その後、処理はステップS511へ進む。他方、最初のパケットに対する処理であると判定された場合(i=0の場合)、ステップS510において、通信ヘッダ生成部192は、シーケンス番号[i]として、レジスタ部191(設定情報)に設定された初期シーケンス番号を設定する。その後、処理はステップS511へ進む。
When it is determined in step S508 that the processing is not for the first packet (when i ≠ 0), in step S509, the communication
ステップS511において、通信ヘッダ生成部192は、変数iに1を加算する。そして、ステップS512において、通信ヘッダ生成部192は、直前の処理が最後のパケットに対する処理であるかどうかで処理を分岐する。最後のパケットに対する処理であると判定された場合、本処理は終了する(ステップS513)。他方、直前の処理が最後のパケットに対する処理ではないと判定された場合、通信ヘッダ生成部192は、処理をステップS503へ戻し、上述の処理を繰り返す。なお、この判断は、例えば変数iの値とレジスタ部191に設定されたパケット数を比較することにより行える。
In step S511, the communication
以上により、第2のモードにおいて、複数の送信データから各パケットのシーケンス番号とペイロード長を計算することが可能となる。 As described above, in the second mode, it is possible to calculate the sequence number and the payload length of each packet from a plurality of transmission data.
なお、図4、図5のフローチャートにより各パケットのシーケンス番号とペイロード長の計算方法を示したが、ひな形ヘッダのコピー後に各パケットのヘッダを完成させるにはその他の領域も修正する必要がある。 Although the calculation method of the sequence number and the payload length of each packet is shown by the flowcharts of FIGS. 4 and 5, it is necessary to modify other areas in order to complete the header of each packet after copying the template header. ..
IPヘッダのLengthフィールドは図4や図5のシーケンスで計算したペイロード長とヘッダ処理部110に入力されるひな形ヘッダの長さから計算できる。IPヘッダのIdentificationフィールドは各IPパケットで独立した値である必要があるため、ヘッダ処理部110で自動的に用意してもよいし、サブCPU106からレジスタに入力してもらっても構わない。IPヘッダのチェックサムはひな形ヘッダの情報と計算したペイロード長やひな形ヘッダの長さ、Identificationから計算できる。IPヘッダの領域のサム演算を行いながらひな形ヘッダのコピーを行えば、より効果的にIPヘッダのチェックサムを計算することが可能となる。
The Length field of the IP header can be calculated from the payload length calculated in the sequence of FIGS. 4 and 5 and the length of the template header input to the
TCPヘッダのチェックサムに関しては、DMAコントローラ108に通信パケットの通信ヘッダ部分と通信パケットのペイロード部分を連続して読み込ませて16ビット毎に1の補数和を計算させてチェックサム値を算出させる。DMAコントローラ108は複数の領域から補数和を計算できるため、疑似ヘッダを考慮した計算が可能である。ヘッダ処理部110はTCPヘッダのチェックサム計算を行うために、これらを考慮してDMAコントローラ108を制御する。さらに、算出したチェックサム値は元の通信パケットの通信ヘッダの所定の場所に書き込まれるように制御を行う。
Regarding the checksum of the TCP header, the
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
(Other examples)
The present invention supplies a program that realizes one or more functions of the above-described embodiment to a system or device via a network or storage medium, and one or more processors in the computer of the system or device reads and executes the program. It can also be realized by the processing to be performed. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
100:通信装置、101:システムバス、102:メインCPU、103:メインメモリ、104:サブシステム、105:ローカルバス、106:サブCPU、107:ローカルメモリ、108:DMAコントローラ、110:ヘッダ処理部 100: Communication device, 101: System bus, 102: Main CPU, 103: Main memory, 104: Subsystem, 105: Local bus, 106: Sub CPU, 107: Local memory, 108: DMA controller, 110: Header processing unit
Claims (15)
前記パケット生成システムに配備されたローカルメモリの内の1つの送信バッファに送信対象データの全体が格納できているかの判断処理に基づいて、前記送信対象データを1つの送信データとする、もしくは前記送信対象データからそれぞれが所定長を越えない複数の送信データを生成することを決定する決定手段と、
パケット生成のモードとして、前記1つの送信データからペイロード長が前記所定長を超えない1つ以上のパケットを生成する第1のモードと、前記複数の送信データからそれら送信データの個数を超えない数のパケットを生成する第2のモードと、を有する生成手段と、を備え、
前記生成手段は、前記第1のモードで動作する場合、前記所定長を基に前記送信データからパケットを生成し、前記第2のモードで動作する場合、送信データの結合関係を基に前記送信データからパケットを生成することを特徴とするパケット生成装置。 A packet generator equipped with a packet generation system.
Based on the determination process of determining whether the entire transmission target data can be stored in one transmission buffer in the local memory deployed in the packet generation system, the transmission target data is regarded as one transmission data , or the transmission target data is described. A determination means for determining to generate a plurality of transmission data, each of which does not exceed a predetermined length, from the transmission target data .
As the packet generation modes, a first mode for generating one or more packets whose payload length does not exceed the predetermined length from the one transmission data, and a number not exceeding the number of the transmission data from the plurality of transmission data. A second mode for generating a packet of, and a generation means having .
When operating in the first mode, the generation means generates a packet from the transmission data based on the predetermined length, and when operating in the second mode, the transmission means based on the coupling relationship of the transmission data. A packet generator characterized by generating packets from data .
前記生成手段は、前記第2のモードで動作する場合に、前記データ結合情報に従って送信データを結合してパケットを生成することを特徴とする請求項1乃至5のいずれか1項に記載のパケット生成装置。 The determination means determines whether or not it is necessary to combine adjacent transmission data in a sequence constituting the transmission target data for the plurality of transmission data separately stored in a plurality of transmission buffers provided in the local memory. Generates the data binding information to be instructed and
The generation means according to any one of claims 1 to 5, wherein when operating in the second mode, the transmission data is combined according to the data combination information to generate a packet. Packet generator.
所定のアプリケーションの実行により前記送信対象データを生成する処理手段と、
前記送信対象データを前記ローカルメモリにより提供される送信バッファへ転送する転送手段と、
前記パケット生成装置により生成されたパケットを送信することにより、前記送信対象データを送信する送信手段と、を備えることを特徴とする通信装置。 The packet generator according to any one of claims 1 to 12 .
A processing means for generating the transmission target data by executing a predetermined application, and
A transfer means for transferring the transmission target data to the transmission buffer provided by the local memory, and
A communication device comprising: a transmission means for transmitting the transmission target data by transmitting a packet generated by the packet generation device.
前記パケット生成システムに配備されたローカルメモリのうちの1つの送信バッファに送信対象データの全体が格納できているかの判断処理に基づいて、前記送信対象データを1つの送信データとする、もしくは前記送信対象データからそれぞれが所定長を越えない複数の送信データを生成することを決定する決定工程と、
パケット生成のモードとして、前記1つの送信データからペイロード長が前記所定長を超えない1つ以上のパケットを生成する第1のモードと、前記複数の送信データからそれら送信データの個数を超えない数のパケットを生成する第2のモードと、を有する生成工程と、を有し、
前記生成工程では、前記第1のモードで動作する場合、前記所定長を基に前記送信データからパケットを生成し、前記第2のモードで動作する場合、送信データの結合関係を基に前記送信データからパケットを生成することを特徴とするパケット生成装置の制御方法。 It is a control method of a packet generator equipped with a packet generator.
Based on the determination process of determining whether the entire transmission target data can be stored in the transmission buffer of one of the local memories deployed in the packet generation system, the transmission target data is regarded as one transmission data , or the transmission is performed. A decision process that determines to generate multiple transmission data, each of which does not exceed a predetermined length, from the target data .
As the packet generation modes, a first mode for generating one or more packets whose payload length does not exceed the predetermined length from the one transmission data, and a number not exceeding the number of the transmission data from the plurality of transmission data. It has a second mode of generating a packet of, and a generation process having.
In the generation step, when operating in the first mode, a packet is generated from the transmission data based on the predetermined length, and when operating in the second mode, the transmission is based on the coupling relationship of the transmission data. A method for controlling a packet generator, which comprises generating a packet from data .
前記送信対象データをローカルメモリにより提供される送信バッファへ転送する転送工程と、
前記ローカルメモリのうちの1つの送信バッファに前記送信対象データの全体が格納できているかの判断処理に基づいて、前記送信対象データを1つの送信データとする、もしくは前記送信対象データからそれぞれが所定長を越えない複数の送信データを生成することを決定する決定工程と、
前記1つの送信データからペイロード長が前記所定長を超えない1つ以上のパケットを生成する第1のモードと、前記複数の送信データからそれら送信データの個数を超えない数のパケットを生成する第2のモードとを、実行する第2の生成工程と、
前記第2の生成工程で生成されたパケットを送信する送信工程と、を備え、
前記第2の生成工程では、前記第1のモードで動作する場合、前記所定長を基に前記送信データからパケットを生成し、前記第2のモードで動作する場合、送信データの結合関係を基に前記送信データからパケットを生成することを特徴とする通信装置の制御方法。 The first generation step of generating the data to be transmitted by executing a predetermined application, and
The transfer step of transferring the transmission target data to the transmission buffer provided by the local memory, and
Based on the determination process of determining whether the entire transmission target data can be stored in one transmission buffer of the local memory, the transmission target data is regarded as one transmission data , or each is predetermined from the transmission target data. The decision-making process that determines to generate multiple transmission data that does not exceed the length, and
A first mode for generating one or more packets whose payload length does not exceed the predetermined length from the one transmission data, and a first mode for generating a number of packets not exceeding the number of the transmission data from the plurality of transmission data. The second generation step to execute the second mode and
A transmission step of transmitting the packet generated in the second generation step is provided .
In the second generation step, when operating in the first mode, a packet is generated from the transmission data based on the predetermined length, and when operating in the second mode, the coupling relationship of the transmission data is used. A method for controlling a communication device, which comprises generating a packet from the transmission data .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017219329A JP7005303B2 (en) | 2017-11-14 | 2017-11-14 | Communication equipment, packet generators and their control methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017219329A JP7005303B2 (en) | 2017-11-14 | 2017-11-14 | Communication equipment, packet generators and their control methods |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019092035A JP2019092035A (en) | 2019-06-13 |
JP7005303B2 true JP7005303B2 (en) | 2022-02-10 |
Family
ID=66836678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017219329A Active JP7005303B2 (en) | 2017-11-14 | 2017-11-14 | Communication equipment, packet generators and their control methods |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7005303B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006081033A (en) | 2004-09-10 | 2006-03-23 | Canon Inc | Communication control apparatus and method |
JP2010041458A (en) | 2008-08-06 | 2010-02-18 | Toshiba Corp | Transmitter, receiver and communication system |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0955718A (en) * | 1995-08-17 | 1997-02-25 | Nec Corp | Data communication device |
-
2017
- 2017-11-14 JP JP2017219329A patent/JP7005303B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006081033A (en) | 2004-09-10 | 2006-03-23 | Canon Inc | Communication control apparatus and method |
JP2010041458A (en) | 2008-08-06 | 2010-02-18 | Toshiba Corp | Transmitter, receiver and communication system |
Also Published As
Publication number | Publication date |
---|---|
JP2019092035A (en) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0996069B1 (en) | Method of transferring image data using a IEEE 1394 bus | |
CN109992405B (en) | Method and network card for processing data message | |
CN104395895A (en) | Systems and methods for input/output virtualization | |
JP2009031954A (en) | Data processing apparatus and data transfer method | |
JP2005102037A (en) | Packet communication device | |
EP3563534B1 (en) | Transferring packets between virtual machines via a direct memory access device | |
US8965996B2 (en) | Communication apparatus, information processing apparatus, and method for controlling communication apparatus | |
US20100183009A1 (en) | Discriminatory mtu fragmentation in a logical partition | |
JP5094482B2 (en) | Processing apparatus and processing method thereof | |
JP2005167965A (en) | Packet processing method and apparatus | |
WO2022151475A1 (en) | Message buffering method, memory allocator, and message forwarding system | |
US20210006264A1 (en) | Dma transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium | |
JP7005303B2 (en) | Communication equipment, packet generators and their control methods | |
CN114385534A (en) | Data processing method and device | |
CN116644010A (en) | Data processing method, device, equipment and medium | |
JP2004207891A (en) | Data communication apparatus, data communication method, data communication program, and recording medium having data communication program recorded thereon | |
US9509559B2 (en) | Bandwidth control apparatus, bandwidth control method, and bandwidth control program | |
CN111800340B (en) | Data packet forwarding method and device | |
JP7027145B2 (en) | Communication equipment, control methods and programs for communication equipment | |
JP2004094931A (en) | Network system and communication method in network | |
JP7321913B2 (en) | Communication device, control method and program | |
JP6938399B2 (en) | Communication equipment, communication methods and programs | |
JP6873953B2 (en) | Communication equipment, control methods and programs for communication equipment | |
JP7049140B2 (en) | Communication equipment and its control method | |
JP6976786B2 (en) | Communication device and control method of communication device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200902 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210604 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210730 |
|
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: 20211206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220105 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7005303 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |