JP7142462B2 - COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM - Google Patents
COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM Download PDFInfo
- Publication number
- JP7142462B2 JP7142462B2 JP2018093223A JP2018093223A JP7142462B2 JP 7142462 B2 JP7142462 B2 JP 7142462B2 JP 2018093223 A JP2018093223 A JP 2018093223A JP 2018093223 A JP2018093223 A JP 2018093223A JP 7142462 B2 JP7142462 B2 JP 7142462B2
- Authority
- JP
- Japan
- Prior art keywords
- transmission data
- checksum value
- transmission
- communication device
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004891 communication Methods 0.000 title claims description 71
- 238000000034 method Methods 0.000 title claims description 26
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 230000005540 biological transmission Effects 0.000 claims description 123
- 230000008569 process Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Communication Control (AREA)
Description
本発明は、通信装置、通信装置の制御方法、およびプログラムに関する。 The present invention relates to a communication device, a communication device control method, and a program.
従来、パケット通信において、通信の信頼性を保証するため、送信側から送信されたパケットを受信した受信側が、ACKと呼ばれる確認応答を用いる通信方式が利用されている。例えば、インターネット通信において広く利用されているTCP/IP(Transmission Control Protocol/Internet Protocol)では、送信側は、送信データをセグメントにチャンク化してパケット化して送信する。受信側は、セグメントをオクテット単位にシーケンス番号で管理し、受信に成功したセグメントのシーケンス番号をACKとして応答する。また、送信側は、所定時間内にACKを受信しなかったセグメントを含むパケットの再送を行う。 2. Description of the Related Art Conventionally, in packet communication, in order to guarantee the reliability of communication, a communication method is used in which a receiving side that receives a packet transmitted from a transmitting side uses an acknowledgment called ACK. For example, in TCP/IP (Transmission Control Protocol/Internet Protocol), which is widely used in Internet communication, the transmitting side chunks transmission data into segments, packetizes them, and transmits them. The receiving side manages the segments by sequence number in units of octets, and responds with the sequence number of the successfully received segment as ACK. Also, the transmitting side retransmits packets including segments for which ACK has not been received within a predetermined time.
TCP/IPのプロトコル処理では、送信側は、通信データのパケット化や再送処理のために、ネットワークバッファを用意している。近年、TCP/IPのプロトコル処理では、CPU(Central Processing Unit)による処理軽減および高速送信を実現可能なパケット化技術が用いられている。例えば、指定されたユーザデータをソケットAPI send()のコール毎にネットワークバッファへの転送とチェックサム計算を同時にハードウェアオフロードで処理を行い、転送時に計算された(事前に計算された)チェックサム値を用いてCPU処理でパケット化する技術である。この技術では、所定の送信単位である1MSS(Maximum Segment Size)以下のデータサイズが、一つずつCPU処理でパケット化される。 In TCP/IP protocol processing, the transmitting side prepares a network buffer for packetization and retransmission processing of communication data. In recent years, TCP/IP protocol processing uses a packetization technique that can reduce processing by a CPU (Central Processing Unit) and achieve high-speed transmission. For example, for each socket API send() call, the specified user data is transferred to the network buffer and the checksum calculation is simultaneously processed by hardware offload, and the check calculated (pre-calculated) at the time of transfer This is a technique of packetizing by CPU processing using a sum value. In this technique, a data size of 1 MSS (Maximum Segment Size) or less, which is a predetermined transmission unit, is packetized one by one by CPU processing.
しかしながら、従来の技術では、より大きいサイズを有する送信データに対するパケット化処理を行う際に、事前に計算されたチェックサム値を活用することができなかった。 However, the prior art cannot utilize pre-calculated checksum values when performing packetization processing for transmission data having a larger size.
本発明は、上記課題に鑑みてなされたものであり、より大きいサイズを有する送信データに対するパケット化処理を行う際に、事前に計算されたチェックサム値を活用することを目的とする。 SUMMARY OF THE INVENTION An object of the present invention is to utilize a pre-calculated checksum value when packetizing transmission data having a larger size.
上記目的を達成するための一手段として、本発明の通信装置は以下の構成を有する。すなわち、通信装置であって、複数のパケットに対応する送信データをDMA(Direct Memory Access)により送信バッファへ転送する転送手段と、前記転送手段による前記送信データの転送に並行して、当該送信データに対する第1のチェックサム値を計算する第1の計算手段と、通信相手装置へ送信する際の送信データサイズを決定する決定手段と、前記決定手段により決定された前記送信データサイズに基づいて、前記第1のチェックサム値が利用可能かを判定する判定手段と、前記判定手段により前記第1のチェックサム値が利用可能と判定された場合、前記転送手段により転送された前記送信データに対するパケット化処理を行う際に、前記第1の計算手段により計算された前記第1のチェックサム値を利用してパケット化処理を行うことで、複数のパケットを生成する第1の生成手段と、を有する。
As one means for achieving the above object, the communication device of the present invention has the following configuration. That is, the communication device includes transfer means for transferring transmission data corresponding to a plurality of packets to a transmission buffer by DMA (Direct Memory Access); a first calculating means for calculating a first checksum value for ; a determining means for determining a transmission data size when transmitting to a communication partner device; and based on the transmission data size determined by the determining means, determining means for determining whether the first checksum value is available; and a packet for the transmission data transferred by the transferring means when the determining means determines that the first checksum value is available. a first generating means for generating a plurality of packets by performing the packetizing process using the first checksum value calculated by the first calculating means when performing the packetizing process; have.
本発明によれば、より大きいサイズを有する送信データに対するパケット化処理を行う際に、事前に計算されたチェックサム値を活用することが可能となる。 According to the present invention, it is possible to utilize pre-calculated checksum values when performing packetization processing for transmission data having a larger size.
以下、添付の図面を参照して、本発明をその実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。 BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, the present invention will be described in detail based on its embodiments with reference to the accompanying drawings. Note that the configurations shown in the following embodiments are merely examples, and the present invention is not limited to the illustrated configurations.
[実施形態1]
送信側におけるTCP/IPパケット生成の一般的な処理では、まず、ソケットAPI send()によって指定されたユーザデータがネットワークバッファに転送され、MTU(maximum transmission unit)にチャンク化される。そして、チャンク化されたデータと擬似ヘッダのチェックサムが計算され、TCPヘッダとIPヘッダが追加されたTCT/IPパケットが生成される。伝送経路がイーサネット(登録商標)の場合、これらのヘッダに加えて、イーサネットヘッダが付加されたイーサネットフレームが生成され、送信される。受信側は、セグメントをオクテット単位にシーケンス番号で管理し、受け取ったセグメントのシーケンス番号をACKとして応答する必要がある。
[Embodiment 1]
In the general process of TCP/IP packet generation on the sending side, user data specified by the socket API send( ) is first transferred to a network buffer and chunked into MTUs (maximum transmission units). A checksum of the chunked data and the pseudo-header is then calculated to generate a TCT/IP packet with the TCP header and IP header added. When the transmission path is Ethernet (registered trademark), in addition to these headers, an Ethernet frame with an Ethernet header added is generated and transmitted. The receiving side must manage segments by sequence number in octet units and respond with the sequence number of the received segment as ACK.
TCP/IPのプロトコル処理では、送信側のパケット送信の度に受信側がACKを送信することによる通信速度の低下を回避するために、所定の送信ウィンドウサイズを利用するウィンドウ制御が行われる。TCP/IPのウィンドウ制御では、受信側は、受信バッファの残りサイズを送信ウィンドウサイズに設定したACKを送信し、送信側は、送信ウィンドウサイズになるまでACKを待つことなく送信データを送信することができる。更に、TCP/IPのウィンドウ制御では、通信速度をより向上させるために、スライディングウィンドウが用いられる。スライディングウィンドウでは、受信側はパケットを受信する度にACKを送信し、送信側は最初のACKを受信するとウィンドウをスライドさせて、ACKを待つことなくウィンドウサイズ分のデータを連続的に送信することが可能となる。 In TCP/IP protocol processing, window control using a predetermined transmission window size is performed in order to avoid a decrease in communication speed due to the receiving side sending an ACK every time the sending side sends a packet. In TCP/IP window control, the receiving side transmits ACK with the remaining size of the receiving buffer set to the transmission window size, and the transmitting side transmits transmission data without waiting for ACK until the transmission window size is reached. can be done. Furthermore, in TCP/IP window control, a sliding window is used to further improve the communication speed. In the sliding window, the receiving side sends an ACK each time it receives a packet, and the sending side slides the window when it receives the first ACK, and continuously sends data for the window size without waiting for an ACK. becomes possible.
上述したように、近年では、CPUによる処理軽減及び高速送信のため、事前に計算したチェックサム値を用いて1MSS以下のデータサイズを、一つずつCPU処理でパケット化する技術が用いられている。また、送信データのセグメントチャンク化処理と、チャンク化したセグメントのIPパケット化処理をネットワークI/Fでハードウェアオフロードがする技術が用いられている。このような技術は、TSO(TCP Segmentation Offload)機能により実現化されている(特許文献1参照)。TSO機能は、NIC(Network Interface Card)などのハードウェアオフロードで実施することが一般的である。TSO機能を用いることで、アプリケーションデータを従来のMSS単位よりも大きいデータ単位でハードウェアオフロードに送信要求を行い、ハードウェアオフロードにてMSS単位にチャンク化してネットワークに連続送信することが可能となる。一方、TSO機能によっても、事前にユーザデータをネットワークバッファへ転送時にハードウェアオフロードで計算したチェックサム値を活用した複数のIPパケット化処理ができない。 As described above, in recent years, in order to reduce processing by the CPU and transmit at high speed, a technology is used in which data sizes of 1 MSS or less are packetized one by one by CPU processing using a pre-calculated checksum value. . Also, a technology is used in which hardware offloading of segment chunking processing of transmission data and IP packetization processing of the chunked segments is performed on a network I/F. Such technology is realized by a TSO (TCP Segmentation Offload) function (see Patent Document 1). The TSO function is generally implemented by hardware offload such as NIC (Network Interface Card). By using the TSO function, it is possible to request the hardware offload to send application data in data units larger than the conventional MSS unit, chunk it into MSS units by the hardware offload, and send it continuously to the network. becomes. On the other hand, even with the TSO function, it is not possible to perform multiple IP packetization processes utilizing checksum values calculated by hardware offloading in advance when transferring user data to a network buffer.
本実施形態では、MSSを超えるデータに対しても、事前に計算したチェックサム値を活用した複数のIPパケット生成処理を行うことを可能とする通信装置について説明する。 In the present embodiment, a communication device capable of performing a plurality of IP packet generation processes utilizing pre-calculated checksum values even for data exceeding MSS will be described.
(通信装置10の構成)
図1に、実施形態1における通信装置10のハードウェア構成例を示す。通信装置10は、そのハードウェア構成として、RAM(Random Access Memory)101、ROM(Read Only Memory)103、CPU102、通信部110を有する。これらの構成要素は通常の通信装置と同様であるが、本実施形態における通信装置10は更に、データ転送部105、フレーム生成部106、パケット生成部107、チェックサム計算部111を有する。以下、各構成要素について説明する。
(Configuration of communication device 10)
FIG. 1 shows a hardware configuration example of the
RAM101は、各種データの保存やワークメモリとして使用される。RAM101は、送信データを格納して管理するための送信バッファ112を有する。ROM103は、CPU102により実行される各種プログラム等を記憶する。CPU102は、RAM101をワークメモリとして、ROM103や、図示していないハードディスクなどのプログラム格納部としての記録媒体に格納された各種プログラムを実行し得る。
A
通信部110は、MAC(Media Access Control)モジュール108とPHY(Physical Layer)モジュール109を有し、Ethernet(商標登録)などのネットワークを介した通信相手装置との通信を行う。データの送受信は、CPU102によりネットワークドライバが実行され、これに応じてMACモジュール108が制御されることにより行われる。なお、本実施形態では、通信部110は、イーサネット(登録商標)を介した通信を行うものとするが、これに替えて、無線LAN(Wi-Fi)など、IP通信可能な媒体を介して通信を行うことも可能である。
The
データ転送部105は、例えばDMA(Direct Memory Access)により構成され、通信装置10内部でデータを転送する。例えば、データ転送部105は、RAM101に記憶されているデータを、フレーム生成部106やパケット生成部107に転送する。データ転送部105は、CPU102により転送制御されてもよい。チェックサム計算部111は、RAM101に記憶されているデータに対してチェックサム計算を行う。フレーム生成部106は、送信する送信データサイズを決定し、決定したサイズの送信データと、送信データに対するヘッダ情報を生成するためのヘッダ情報の生成処理を行う。パケット生成部107は、フレーム生成部106により生成された送信データとヘッダ情報に基づいて、送信データのセグメント化およびヘッダの生成を行い、当該セグメントとヘッダから送信パケットを生成する。タイマ管理部104は、パケット送信に関して必要な所定時間を管理する。なお、以下に説明する(送信)パケットは、IP通信上で送受信されるデータの単位である。このパケットの組み立て方法については、本実施形態の本質ではないので、説明を省略する。
The
図2は、本実施形態における通信装置10の機能構成例を示す。アプリケーション201は、ユーザアプリケーションを指す。本実施形態では、アプリケーション201は、ソケットAPI send()を呼び出すアプリケーションであり、これにより、任意のサイズの、送信対象のアプリケーションデータ(送信データ)がプロトコルスタック202に入力される。
FIG. 2 shows a functional configuration example of the
プロトコルスタック202は、ネットワークバッファ管理部203、セグメント処理部204、通信プロトコル処理部205、コネクション管理部206、TCPウィンドウ制御部207、輻輳制御部208から構成される。ネットワークバッファ管理部203は、アプリケーション201から入力された送信データを、RAM101の送信バッファ112(図1)に格納して管理する。ネットワークバッファ管理部203はまた、送信バッファ112に格納されている送信データのサイズを管理する。コネクション管理部206は、通信装置10の通信コネクションに関する情報を管理する。例えば、コネクション管理部206は、通信コネクションにおけるMSS(Maximum Segment Size)等のコネクション情報を管理する。TCPウィンドウ制御部207は、通信インタフェース制御部209を介して通信相手装置から受信したACK(確認応答)から、TCPコネクションの送信ウィンドウサイズを取得し、管理する。輻輳制御部208は、TCPコネクションにおける輻輳制御を管理する。例えば、輻輳制御部208は、アプリケーション201に対する通信コネクションにおける輻輳ウィンドウサイズを管理する。送信ウィンドウサイズと輻輳ウィンドウサイズは、送信データサイズを決定するために使用され得る。
The
セグメント処理部204は、ネットワークバッファ管理部203、コネクション管理部206、TCPウィンドウ制御部207、輻輳制御部208で管理されている情報等に基づいて、送信データサイズ(送信可能な全体の送信データのサイズ)を決定する。すなわち、RAM101内の送信バッファ112に格納されている送信データのサイズ、MSS、送信ウィンドウサイズ、輻輳ウィンドウサイズ等に基づいて、送信データサイズが決定される。通信プロトコル処理部205は、パケット生成部107を制御して、TCPセグメントのTCPヘッダやIPヘッダの生成と、それに伴うチェックサム計算等の処理を行う。そして、通信プロトコル処理部205は、これらの処理から得られたデータから、パケット化処理を行って送信パケットを生成する。
The
データ転送部400は、データ転送部105とチェックサム計算部111(図1)に対応し、チャンク部401、チェックサム計算部402から構成される。チャンク部401は、送信データを、データ転送するための所定の単位(例えばMSS単位)にチャンク化する。チェックサム計算部402は、チャンク部401によりチャンク化された各データに対してチェックサム計算を行う。
The
パケット生成部300は、データ転送部105、パケット生成部107、チェックサム計算部111(図1)に対応し、データ転送部301、ヘッダ生成部302、パケット生成部303から構成される。データ転送部301は、送信データを所定の単位(例えばMSS単位)へのチャンク化し、チャンク化した各データに対してチェックサム計算を行う。ヘッダ生成部302は、フレーム生成部106により生成されたヘッダ情報に基づいて、TCP/IPヘッダとイーサネットヘッダを生成する。パケット生成部303は、データ転送部301とヘッダ生成部302から出力されたデータから、パケット化処理を行って送信パケットを生成する。
The
本実施形態では、セグメント処理部204により決定された送信データサイズに応じて、通信プロトコル処理部205またはパケット生成部300が、送信パケットを生成する。送信パケットの生成手法については、図3を用いて後述する。
In this embodiment, the communication
通信プロトコル処理部205またはパケット生成部300により生成された送信パケットは、通信インタフェース制御部209に入力される。通信インタフェース制御部209は、プロトコルスタック202と通信インタフェース210との間でデータや情報のやり取りを担う。通信インタフェース210は、図1のMACモジュール108、PHYモジュール109に対応し、ネットワークと通信を行う。送信パケットの送信は、タイマ管理部104により一定時間以上経過したことが通知された場合に、行われてもよい。
A transmission packet generated by the communication
(処理の流れ)
次に、図3を参照して、本実施形態における処理について説明する。図3は、本実施形態におけるデータ送信処理を説明するフローチャートである。本フローチャートは、ソケットAPI send()(以下、send())によるデータ送信処理を想定する。
(Processing flow)
Next, referring to FIG. 3, processing in this embodiment will be described. FIG. 3 is a flowchart for explaining data transmission processing in this embodiment. This flowchart assumes data transmission processing by socket API send( ) (hereinafter, send( )).
まず、ステップS101において、CPU102により、ROM103に格納されている所定のプログラムが実行されることに応じて、アプリケーション201は、send()を呼び出す。send()が呼び出されると、データ転送部105は、ステップS102で、データ転送先であるRAM101内の送信バッファ114へ送信データを転送する。それと並行して、チャンク部401は、送信データをMSS単位にチャンク化し、チェックサム計算部402は、チャンク化されたデータに対してチェックサム計算する。なお、上述したように、チャンク部401とチェックサム計算部402を含むデータ転送部400(図2)は、データ転送部105とチェックサム計算部111(図1)に対応する。
First, in step S<b>101 , the
ステップS103では、ネットワークバッファ管理部203が、チャンク化されたデータと、チャンク化されたデータに対するチェックサム値を関連付けし、送信バッファ112に格納する。ステップS104では、セグメント処理部204が、送信バッファ114に格納されている送信データ(チャンク化された一連のデータ)のサイズが、TCPウィンドウ制御部207により管理されている送信ウィンドウサイズを超えるかどうかを判定する。送信バッファ114に格納されている送信データのサイズが送信ウィンドウサイズを超えない場合は(ステップS104でNo)、処理はステップS105に進む。ステップS105では、セグメント処理部204は、送信バッファ114に格納されている送信データのサイズを、送信データサイズとして決定する。一方、送信バッファ114に格納されている送信データのサイズが送信ウィンドウサイズ超える場合は(ステップS104でYes)、処理はステップS106に進む。ステップS106では、セグメント処理部204は、送信ウィンドウサイズを、送信データサイズとして決定する。
In step S<b>103 , the network
ステップS107では、通信プロトコル処理部205が、ステップS106またはS105で決定した送信データサイズが、コネクション管理部206で管理されているMSSを超えるかどうか判定する。決定した送信データサイズがMSSを超えない場合は(ステップS107でNo)、処理はステップS108に進む。ステップS108では、通信プロトコル処理部205は、送信データに対するチェックサムを計算してTCP/IPヘッダを生成し、TCP/IPヘッダと送信データ(セグメント)を連結してパケット化し、TCP/IPパケットを生成する。通信プロトコル処理部205は、更に、イーサネットヘッダを生成し、生成したイーサネットヘッダを用いて、生成したTCP/IPパケットをイーサネットフレーム化し、ステップS114に進む。
In step S<b>107 , communication
一方、決定した送信データサイズがMSSを超える場合は(ステップS107でYes)、処理はステップS109へ進む。ステップS109では、フレーム生成部106は、TCP/IPヘッダとイーサネットヘッダを生成するための情報としてヘッダ情報を生成し、ステップS110へ進む。ステップS110~S113の処理は、パケット生成部300による処理である。なお、上述したように、パケット生成部300(図2)は、データ転送部105、パケット生成部107、チェックサム計算部111(図1)に対応する。
On the other hand, if the determined transmission data size exceeds the MSS (Yes in step S107), the process proceeds to step S109. In step S109, the
ステップS110では、データ転送部301は、ステップS102で計算されたチェックサム値が利用可能かどうかを判定する。ステップ102で計算されたチェックサム値は、ステップS103で、チャンク化されたデータと関連付けられて送信バッファ112に格納されている。しかしながら、S104からのS105またはS106の処理を経て、送信データサイズに基づいて決定される実際の送信データ(実送信データ)は変わり得る。例えば、実送信データが、複数のチャンクに跨ることもあり得る。よって、ステップS110では、データ転送部301が、ステップS102で計算されたチェックサム値が実送信データに対応するか否かを判定する。
At step S110, the
ステップS110の判定の結果、ステップS102で計算されたチェックサム値が利用可能でない場合は(ステップS110でNo)、処理はステップS111へ進む。ステップS111では、データ転送部301は、実送信データがMSS単位にチャンク化された各セグメントに対するチェックサム計算(再計算)を行う。続いて、ヘッダ生成部302は、ステップS109で生成されたヘッダ情報を使用し、各セグメントに対してTCP/IPヘッダとイーサネットヘッダを(自動)生成する。ステップS113では、パケット生成部303は、S111で生成されたTCP/IPヘッダと各セグメントを連結し、TCP/IPパケット化した後、イーサネットヘッダを付加し、イーサネットフレーム化する。
If the checksum value calculated in step S102 cannot be used as a result of the determination in step S110 (No in step S110), the process proceeds to step S111. In step S111, the
ステップS102で計算されたチェックサム値が利用可能である場合は(ステップS110でYes)、処理はステップS112へ進む。ステップS112では、ヘッダ生成部302は、ステップS102で計算されたチェックサム値と、ステップS109で生成されたヘッダ情報を使用し、各セグメントに対して、TCP/IPヘッダとイーサネットヘッダを(自動)生成する。ステップS113では、パケット生成部303は、S112で生成されたTCP/IPヘッダと各セグメントを連結し、TCP/IPパケット化した後、イーサネットヘッダを付加し、イーサネットフレーム化する。なお、一度に連結できるセグメントの数は、輻輳ウィドウサイズに基づいて決定され得る。ステップS114では、通信プロトコル処理部205は、イーサネットフレームを通信インタフェース制御部209に送信し、処理を終了する。
If the checksum value calculated in step S102 is available (Yes in step S110), the process proceeds to step S112. In step S112, the
このように、送信データサイズがMSSを超える場合であっても、事前にハードウェアで計算したチェックサム値を用いてIPパケット化処理を行うことができる。また、事前にハードウェアで計算したチェックサム値を用いることができない場合であっても、ハードウェアで再計算したチェックサム値を用いて、IPパケット化処理を行うことができる。なお、ステップS110~S113におけるハードウェアによる処理を、ソフトウェアで処理を実行した場合においても、本実施形態を適用可能である。また、本実施形態では、通信インタフェースが一つ存在する例を挙げたが、通信インタフェースが複数の場合にも本実施形態を適用することができる。また、本実施形態では、TCP/IPプロトコルを例にして説明したが、UDP(User Datagram Protocol)プロトコル等の他のプロトコルを適用することも可能である。 In this way, even if the transmission data size exceeds the MSS, IP packetization processing can be performed using the checksum value calculated in advance by hardware. In addition, even if a checksum value calculated in advance by hardware cannot be used, IP packetization processing can be performed using a checksum value recalculated by hardware. Note that the present embodiment can be applied even when the processing by hardware in steps S110 to S113 is executed by software. Also, in this embodiment, an example in which there is one communication interface has been given, but this embodiment can also be applied when there are a plurality of communication interfaces. Also, in the present embodiment, the TCP/IP protocol has been described as an example, but other protocols such as the UDP (User Datagram Protocol) protocol can also be applied.
[実施形態2]
続いて、実施形態2について説明する。なお、本実施形態において、実施形態1と同様の構成については、同一符号を付して、その詳細説明を省略する。
[Embodiment 2]
Next, Embodiment 2 will be described. In addition, in this embodiment, the same code|symbol is attached|subjected about the structure similar to Embodiment 1, and the detailed description is abbreviate|omitted.
(処理の流れ)
図4を参照して、本実施形態における処理について説明する。図4は、本実施形態におけるデータ送信処理を説明するフローチャートである。本フローチャートは、ソケットAPI send()によるデータ送信処理を想定する。なお、S201~S210の処理は、実施形態1において説明した図3のステップS101~S110と同様の処理のため、説明を省略する。
(Processing flow)
Processing in this embodiment will be described with reference to FIG. FIG. 4 is a flowchart for explaining data transmission processing in this embodiment. This flowchart assumes data transmission processing by the socket API send( ). Note that the processing of S201 to S210 is the same as the processing of steps S101 to S110 in FIG. 3 described in the first embodiment, so description thereof will be omitted.
ステップS210では、データ転送部301は、ステップS202で計算されたチェックサム値が利用可能かどうかを判定する。ステップS202で計算されたチェックサム値が利用可能でない場合は(ステップS210でNo)、処理はステップS211へ進む。ステップS211では、データ転送部301は、実送信データがMSS単位にチャンク化されているかどうかを判定する。ステップS202において、送信データはチャンク化されているが、S104からのS105またはS106の処理を経て、送信データサイズに対応する送信データ(実送信データ)は変わり得る。よって、S211では、データ転送部301は、実送信データがMSS単位にチャンク化されているか、すなわち、フラグメント化されているかを判定する。
At step S210, the
実送信データがMSS単位にチャンク化されていない場合は(ステップS211でNo)、処理はステップS212へ進む。ステップS212では、データ転送部301は、実送信データをセグメントサイズへチャンク化し、チャンク化した各送信データ(セグメント)に対するチェックサム計算(再計算)を行う。続いて、ヘッダ生成部302は、ステップS209で生成されたヘッダ情報を使用し、各セグメントに対してTCP/IPヘッダとイーサネットヘッダを(自動)生成する。ステップS215では、パケット生成部303は、S212で生成されたTCP/IPヘッダとセグメントを連結し、TCP/IPパケット化した後、イーサネットヘッダを付加し、イーサネットフレーム化する。
If the actual transmission data is not chunked by MSS (No in step S211), the process proceeds to step S212. In step S212, the
実送信データがMSS単位にチャンク化されている場合は(ステップS211でYes)、処理はステップS213へ進む。ステップS213では、データ転送部301は、チャンク化された各送信データ(セグメント)のチェックサム計算を行う。また、ヘッダ生成部302は、ステップS209で生成されたヘッダ情報を使用し、各セグメントに対してTCP/IPヘッダとイーサネットヘッダを(自動)生成する。ステップS215では、パケット生成部303は、S213で生成されたTCP/IPヘッダとセグメントを連結し、TCP/IPパケット化した後、イーサネットヘッダを付加し、イーサネットフレーム化する。
If the actual transmission data is chunked in units of MSS (Yes in step S211), the process proceeds to step S213. In step S213, the
ステップS202で計算されたチェックサム値が利用可能である場合は(ステップS210でYes)、処理はステップS214へ進む。ステップS214では、ヘッダ生成部302は、ステップS202で計算されたチェックサム値と、ステップS109で生成されたヘッダ情報を使用し、各セグメントに対して、TCP/IPヘッダとイーサネットヘッダを(自動)生成する。ステップS215では、パケット生成部303は、S214で生成されたTCP/IPヘッダとセグメントを連結し、TCP/IPパケット化した後、イーサネットヘッダを付加し、イーサネットフレーム化する。なお、一度に連結できるセグメントの数は、輻輳ウィドウサイズに基づいて決定され得る。ステップS216では、通信プロトコル処理部205は、イーサネットフレームを通信インタフェース制御部209に送信し、処理を終了する。
If the checksum value calculated in step S202 is available (Yes in step S210), processing proceeds to step S214. In step S214, the
このように、送信データサイズがMSSを超える場合であっても、事前にハードウェアで計算したチェックサム値を用いてIPパケット化処理を行うことができる。また、事前にハードウェアで計算したチェックサム値を用いることができない場合や、実送信データがチャンク化されていない場合であっても、ハードウェアで再計算したチェックサム値を用いて、IPパケット化処理を行うことができる。なお、ステップS210~S215におけるハードウェアによる処理を、ソフトウェアで処理を実行した場合においても、本実施形態を適用可能である。また、本実施形態では、通信インタフェースが一つ存在する例を挙げたが、通信インタフェースが複数の場合にも本実施形態を適用することができる。また、本実施形態では、TCP/IPプロトコルを例にして説明したが、UDPプロトコル等の他のプロトコルを適用することも可能である。 In this way, even if the transmission data size exceeds the MSS, IP packetization processing can be performed using the checksum value calculated in advance by hardware. In addition, even if the checksum value calculated in advance by hardware cannot be used, or even if the actual transmission data is not chunked, the checksum value recalculated by hardware is used to generate IP packets. conversion processing can be performed. Note that the present embodiment can be applied even when the processing by hardware in steps S210 to S215 is executed by software. Also, in this embodiment, an example in which there is one communication interface has been given, but this embodiment can also be applied when there are a plurality of communication interfaces. Also, in the present embodiment, the TCP/IP protocol has been described as an example, but other protocols such as the UDP protocol can also be applied.
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
[Other embodiments]
The present invention supplies a program that implements one or more functions of the above-described embodiments to a system or device via a network or a 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 processing to It can also be implemented by a circuit (for example, ASIC) that implements one or more functions.
101 RAM、102 CPU、103 ROM、104 タイマ管理部、105 データ転送部、106 フレーム生成部、107 パケット生成部、108 MACモジュール、109 PHYモジュール、110 通信部、111 チェックサム計算部 101 RAM, 102 CPU, 103 ROM, 104 timer management unit, 105 data transfer unit, 106 frame generation unit, 107 packet generation unit, 108 MAC module, 109 PHY module, 110 communication unit, 111 checksum calculation unit
Claims (9)
複数のパケットに対応する送信データをDMA(Direct Memory Access)により送信バッファへ転送する転送手段と、
前記転送手段による前記送信データの転送に並行して、当該送信データに対する第1のチェックサム値を計算する第1の計算手段と、
通信相手装置へ送信する際の送信データサイズを決定する決定手段と、
前記決定手段により決定された前記送信データサイズに基づいて、前記第1のチェックサム値が利用可能かを判定する判定手段と、
前記判定手段により前記第1のチェックサム値が利用可能と判定された場合、前記転送手段により転送された前記送信データに対するパケット化処理を行う際に、前記第1の計算手段により計算された前記第1のチェックサム値を利用してパケット化処理を行うことで、複数のパケットを生成する第1の生成手段と、
を有することを特徴とする通信装置。 A communication device,
transfer means for transferring transmission data corresponding to a plurality of packets to a transmission buffer by DMA (Direct Memory Access);
a first calculation means for calculating a first checksum value for the transmission data in parallel with the transfer of the transmission data by the transfer means;
determining means for determining a transmission data size when transmitting to a communication partner device;
determining means for determining whether the first checksum value is available based on the transmission data size determined by the determining means;
When the determining means determines that the first checksum value can be used, the above calculated by the first calculating means when packetizing the transmission data transferred by the transferring means a first generation means for generating a plurality of packets by performing packetization processing using the first checksum value;
A communication device comprising:
前記転送手段により転送された前記送信データに対するパケット化処理を行う際に、前記第2の計算手段により計算された前記第2のチェックサム値を利用してパケット化処理を行うことで、複数のパケットを生成する第2の生成手段と、
を更に有し、
前記判定手段により前記第1のチェックサム値が利用可能でないと判定された場合、前記第2の生成手段が複数のパケットを生成することを特徴とする請求項1または2に記載の通信装置。 a second calculation means for calculating a second checksum value when packetizing the transmission data transferred by the transfer means;
When performing the packetization process on the transmission data transferred by the transfer means, by performing the packetization process using the second checksum value calculated by the second calculation means, a plurality of a second generating means for generating packets;
further having
3. The communication device according to claim 1 , wherein said second generating means generates a plurality of packets when said determining means determines that said first checksum value is not available.
前記第2の計算手段は、前記チャンク化手段によりチャンク化された各セグメントについて、前記第2のチェックサム値を計算することを特徴とする請求項3に記載の通信装置。 further comprising chunking means for chunking the transmission data when the determining means determines that the first checksum value is not available;
4. The communication device according to claim 3 , wherein said second calculating means calculates said second checksum value for each segment chunked by said chunking means.
前記判定手段は、前記メモリを参照することにより、前記第1のチェックサム値が利用可能かを判定することを特徴とする請求項1から4のいずれか1項に記載の通信装置。 further comprising management means for managing the first checksum value in a memory in association with the transmission data;
5. The communication apparatus according to any one of claims 1 to 4 , wherein said determining means determines whether said first checksum value is available by referring to said memory.
複数のパケットに対応する送信データをDMA(Direct Memory Access)により送信バッファへ転送する転送工程と、
前記転送工程における前記送信データの転送に並行して、当該送信データに対する第1のチェックサム値を計算する計算工程と、
通信相手装置へ送信する際の送信データサイズを決定する決定工程と、
前記決定工程において決定された前記送信データサイズに基づいて、前記第1のチェックサム値が利用可能かを判定する判定工程と、
前記判定工程において前記第1のチェックサム値が利用可能と判定された場合、前記転送工程において転送された前記送信データに対するパケット化処理を行う際に、前記計算工程において計算された前記第1のチェックサム値を利用してパケット化処理を行うことで、複数のパケットを生成する生成工程と、
を有することを特徴とする制御方法。 A control method performed by a communication device, comprising:
a transfer step of transferring transmission data corresponding to a plurality of packets to a transmission buffer by DMA (Direct Memory Access);
a calculation step of calculating a first checksum value for the transmission data in parallel with the transmission of the transmission data in the transmission step;
a determination step of determining a transmission data size when transmitting to a communication partner device;
determining whether the first checksum value is available based on the transmission data size determined in the determining step;
If it is determined in the determining step that the first checksum value can be used, the first checksum value calculated in the calculating step is performed when packetizing the transmission data transferred in the transferring step. a generation step of generating a plurality of packets by performing packetization processing using the checksum value;
A control method characterized by having
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093223A JP7142462B2 (en) | 2018-05-14 | 2018-05-14 | COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093223A JP7142462B2 (en) | 2018-05-14 | 2018-05-14 | COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2019201249A JP2019201249A (en) | 2019-11-21 |
JP2019201249A5 JP2019201249A5 (en) | 2021-07-26 |
JP7142462B2 true JP7142462B2 (en) | 2022-09-27 |
Family
ID=68613292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018093223A Active JP7142462B2 (en) | 2018-05-14 | 2018-05-14 | COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7142462B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006303765A (en) | 2005-04-19 | 2006-11-02 | Seiko Epson Corp | TCP / IP transmission processing circuit and semiconductor integrated circuit having the same |
JP2009116386A (en) | 2007-11-01 | 2009-05-28 | Sony Corp | Information processor, method and program |
JP2017108357A (en) | 2015-12-11 | 2017-06-15 | キヤノン株式会社 | Arithmetic unit, arithmetic method and communication apparatus |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04352054A (en) * | 1991-05-29 | 1992-12-07 | Toshiba Corp | Communication controller |
US5430842A (en) * | 1992-05-29 | 1995-07-04 | Hewlett-Packard Company | Insertion of network data checksums by a network adapter |
JP3358254B2 (en) * | 1993-10-28 | 2002-12-16 | 株式会社日立製作所 | Communication control device and communication control circuit device |
-
2018
- 2018-05-14 JP JP2018093223A patent/JP7142462B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006303765A (en) | 2005-04-19 | 2006-11-02 | Seiko Epson Corp | TCP / IP transmission processing circuit and semiconductor integrated circuit having the same |
JP2009116386A (en) | 2007-11-01 | 2009-05-28 | Sony Corp | Information processor, method and program |
JP2017108357A (en) | 2015-12-11 | 2017-06-15 | キヤノン株式会社 | Arithmetic unit, arithmetic method and communication apparatus |
Also Published As
Publication number | Publication date |
---|---|
JP2019201249A (en) | 2019-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100448224C (en) | Method and apparatus for exploring path maximum transmission unit | |
US7385923B2 (en) | Method, system and article for improved TCP performance during packet reordering | |
US8311059B2 (en) | Receive coalescing and automatic acknowledge in network interface controller | |
US7596144B2 (en) | System-on-a-chip (SoC) device with integrated support for ethernet, TCP, iSCSI, RDMA, and network application acceleration | |
US7103674B2 (en) | Apparatus and method of reducing dataflow distruption when detecting path maximum transmission unit (PMTU) | |
US11012367B2 (en) | Technologies for managing TCP/IP packet delivery | |
JP5523350B2 (en) | Method and apparatus for TCP flow control | |
US8306062B1 (en) | Method and apparatus of adaptive large receive offload | |
US20180004705A1 (en) | Selective acknowledgment of RDMA packets | |
US20070014246A1 (en) | Method and system for transparent TCP offload with per flow estimation of a far end transmit window | |
EP2632102A1 (en) | Method and device for data transmission | |
JP2014509483A (en) | Mechanisms to improve the performance of transmission control protocols in wireless networks | |
US7480301B2 (en) | Method, system and article for improved TCP performance during retransmission in response to selective acknowledgement | |
US8976814B2 (en) | Method of transporting data from sending node to destination node | |
CN103414714B (en) | Method, device and equipment for processing messages | |
JP6963411B2 (en) | Communication equipment, communication methods, and programs | |
US20070291782A1 (en) | Acknowledgement filtering | |
US8578040B2 (en) | Method, system and article for client application control of network transmission loss tolerance | |
JP7142462B2 (en) | COMMUNICATION DEVICE, COMMUNICATION DEVICE CONTROL METHOD, AND PROGRAM | |
CN114390054A (en) | Core network acceleration method, electronic equipment and computer storage medium | |
JP4506430B2 (en) | Application monitor device | |
JP2012049883A (en) | Communication device and packet processing method | |
KR102184363B1 (en) | Communicating method between host and client with network connector, and network connector proceeding the same | |
JP2021087172A (en) | Communication device, communication method, and program | |
CN116155810A (en) | Multilink aggregation ordered transmission method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210510 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210510 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220331 |
|
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: 20220815 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220913 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7142462 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |