JP2007215013A - Protocol processor and protocol processing method - Google Patents
Protocol processor and protocol processing method Download PDFInfo
- Publication number
- JP2007215013A JP2007215013A JP2006034068A JP2006034068A JP2007215013A JP 2007215013 A JP2007215013 A JP 2007215013A JP 2006034068 A JP2006034068 A JP 2006034068A JP 2006034068 A JP2006034068 A JP 2006034068A JP 2007215013 A JP2007215013 A JP 2007215013A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- checksum
- data
- fragmented
- checksum value
- 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.)
- Pending
Links
Images
Landscapes
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
本発明は、プロトコル処理装置及びプロトコル処理方法に関する。 The present invention relates to a protocol processing apparatus and a protocol processing method.
ネットワークを利用したデータ通信においては、TCP/IPをはじめとしたプロトコルを用いた手法が用いられる。このTCP/IPによる通信では、データを小単位に分割して、送受信に関連する各種情報をヘッダとして付加することにより、パケットと呼ばれるデータのかたまりで送受信を行っている。 In data communication using a network, a technique using a protocol such as TCP / IP is used. In this communication by TCP / IP, data is divided into small units, and various information related to transmission / reception is added as a header, whereby transmission / reception is performed in a block of data called a packet.
また、ネットワークプロトコルにおいては、OSI参照モデルに代表されるように、その処理単位が階層的に行われており、これに従ってパケットのデータ構造においてもそれぞれの処理単位に応じたヘッダ情報が階層的に付加されている。 Further, in the network protocol, as represented by the OSI reference model, the processing unit is hierarchically performed, and according to this, the header information corresponding to each processing unit is hierarchically included in the packet data structure. It has been added.
図1は、イーサネット(登録商標)におけるTCP/IPパケットのデータ構造を示す図である。図1においては、データの先頭からそれぞれ、イーサネット(登録商標)ヘッダ201、IPヘッダ202、TCPヘッダ203が順次付加されており、その後アプリケーションデータであるペイロードデータ204が続いている。
FIG. 1 is a diagram showing a data structure of a TCP / IP packet in Ethernet (registered trademark). In FIG. 1, an Ethernet (registered trademark)
図2は、IPパケットのデータ構造を示す図である。図2において、301はIPヘッダ部、302はデータ部を示している。IPヘッダ部301には、ヘッダサイズやパケットサイズ、サービスタイプや識別子、また、送信元と送信先とのIPアドレス、及び303に示すヘッダチェックサム値、更に304に示すフラグ、305に示すフラグメントオフセット値等が格納されている。ヘッダチェックサム303は、IPヘッダ部301と、データ部302とが壊れていないことを保証するための16ビットのデータである。IPパケット受信処理においては、装置は、受信したパケットのIPヘッダ部301のチェックサム値を演算し、その結果と、ヘッダに格納されているヘッダチェックサム303との比較を行う。
FIG. 2 is a diagram illustrating a data structure of an IP packet. In FIG. 2, 301 indicates an IP header portion, and 302 indicates a data portion. The
フラグ304には、IPデータグラムのフラグメント処理を制御する3ビットのデータが格納されている。フラグメントオフセット305には、フラグメントされたデータが、オリジナルのIPデータグラムのどこに位置しているかを意味する13ビットのデータが格納されている。
The
図3は、TCPパケットのデータ構造を示す図である。図3において、401はTCPヘッダ部、402はデータ部を示している。TCPヘッダ部401には、送信元と送信先とのポート番号、シーケンス番号、各種フラグ、ヘッダ部とデータ部とを含む、403に示すチェックサム値等が格納されている。
FIG. 3 is a diagram illustrating a data structure of a TCP packet. In FIG. 3, 401 indicates a TCP header portion, and 402 indicates a data portion. The TCP
チェックサム403は、TCPヘッダ部401とデータ部402とが壊れていないことを保証するための16ビットのデータである。TCPパケット受信処理においては、装置は、受信したパケットのTCPヘッダ部401と、データ部402とのチェックサム値を演算し、その結果と、ヘッダに格納されているチェックサム403との比較を行う。
The
これらTCP/IPのプロトコル処理は従来ソフトウェアによって実装されてきた。しかしながら、例えばチェックサム値の演算等においては、パケット処理ごとに1500バイト程度の加算処理が必要となり、ソフトウェアでは演算に時間がかかるため通信のスループットを上げるのが困難になってくる。 These TCP / IP protocol processes have been conventionally implemented by software. However, for example, in the calculation of the checksum value or the like, an addition process of about 1500 bytes is required for each packet process, and it takes time for the calculation in software, so it is difficult to increase the communication throughput.
これを解決する手段として、特許文献1において、ハードウェアを利用してチェックサム値を短時間で生成するための回路が提案されている。
As means for solving this,
IPパケット処理を高速に実行する手段として、上述した特許文献1で提案されているようにハードウェアを用いる方法は、特に定常的なパケットの処理を行わせるだけにおいては、比較的簡単に実現させることができ、有効である。しかしながら、非定常的なパケットの処理までハードウェアに行わせようとすると、ハードウェアの回路規模が大きくなってしまう問題があった。
As a means for executing IP packet processing at high speed, the method using hardware as proposed in
例えば、TCP/IPプロトコルにおいては、IPパケットがデータリンクで転送できる最大値(MTU)を超えたサイズのデータについては、必要に応じてフラグメンテーションと呼ばれるパケット分割を行う機能が決められている。ネットワークの中継を行うルーター等の機器では、受け取ったIPパケットが送り先のMTUより大きなサイズのパケットである場合には、フラグメント処理によってパケットを分割して送信する機能を持っている。 For example, in the TCP / IP protocol, for data having a size exceeding the maximum value (MTU) that an IP packet can be transferred through a data link, a function for performing packet division called fragmentation is determined as necessary. A device such as a router that relays a network has a function of dividing and transmitting a packet by fragment processing when the received IP packet is a packet having a size larger than the destination MTU.
このフラグメンテーションされたIPパケットを受信した場合は、全ての分割パケットが到着するのを待って、パケットの再組み立てを行い、上位のプロトコルに渡すことになる。 When this fragmented IP packet is received, the packet is reassembled after waiting for all the divided packets to arrive and passed to the upper protocol.
このフラグメントされたパケットの待ち合わせと再組み立てをハードウェアで実現する場合は、複雑なメモリ管理を行わなければならず回路構成が複雑になってしまう。また、ソフトウェアで処理される上位プロトコルが使用するメモリとは独立した専用のメモリも必要となるため、回路規模も大きくなる。 When the waiting and reassembly of the fragmented packet is realized by hardware, complicated memory management must be performed and the circuit configuration becomes complicated. In addition, since a dedicated memory independent from the memory used by the higher-level protocol processed by software is required, the circuit scale increases.
本発明は上記の問題点に鑑みなされたもので、定常的なパケット、及び否定常的なパケット(フラグメントパケット)を小さな回路規模で高速に処理することを目的とする。 The present invention has been made in view of the above problems, and an object of the present invention is to process a stationary packet and a non-stationary packet (fragment packet) at high speed with a small circuit scale.
そこで、上記問題を解決するため、本発明は、受信パケットのデータチェックサム計算を行うチェックサム演算手段と、前記チェックサム演算手段で求めたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査手段と、前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査手段と、前記チェックサム演算手段で求めたチェックサム値を一時的に格納するチェックサム記憶手段と、断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御手段と、を有し、前記フラグメント検査手段において前記受信パケットが断片化されたパケットであると判断された場合は、前記制御手段においてチェックサム検査を行い、前記フラグメント検査手段において前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査手段においてチェックサム検査を行うことを特徴とする。 Therefore, in order to solve the above problem, the present invention stores checksum calculation means for performing data checksum calculation of a received packet, a checksum value obtained by the checksum calculation means, and a packet header of the received packet. Checksum checking means for performing a data checksum check using a checksum value, a fragment checking means for determining whether or not the received packet is a fragmented packet, and a check obtained by the checksum calculation means Checksum storage means for temporarily storing the sum value, reassembly processing of the fragmented packet, checksum value stored in the checksum storage means, and packet header of the reassembled packet Data packet of the reassembled packet using the stored checksum value Control means for executing a checksum check process, and when the received packet is determined to be a fragmented packet by the fragment check means, the control means performs a checksum check, and the fragment check When the means determines that the received packet is not a fragmented packet, the checksum checking means performs a checksum check.
係る構成とすることにより、非定常的なパケットの処理は、制御手段が行い、定常的なパケットの処理は例えばハードウェアであるチェックサム演算手段や、フラグメント検査手段等が行う。よって、定常的なパケット、及び否定常的なパケットを小さな回路規模で高速に処理することができる。 With this configuration, non-stationary packet processing is performed by the control unit, and stationary packet processing is performed by, for example, hardware checksum calculation unit, fragment inspection unit, or the like. Therefore, stationary packets and non-stationary packets can be processed at high speed with a small circuit scale.
また、上記問題を解決するため、本発明は、プロトコル処理方法及びプログラムとしてもよい。 In order to solve the above problem, the present invention may be a protocol processing method and a program.
本発明によれば、定常的なパケット、及び否定常的なパケットを小さな回路規模で高速に処理することができる。 According to the present invention, stationary packets and non-stationary packets can be processed at high speed with a small circuit scale.
以下、本発明の実施形態について図面に基づいて説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
(実施形態1)
図4は、実施形態1に係る装置の全体構成を表すブロック図である。実施形態1では、ネットワークの物理層、データリンク層としてIEEE802.3に代表される有線LANの規格であるイーサネット(登録商標)を用いて説明する。また、ネットワーク層、トランスポート層としてTCP/IPプロトコルを用いて説明する。
(Embodiment 1)
FIG. 4 is a block diagram illustrating the overall configuration of the apparatus according to the first embodiment. In the first embodiment, description will be made using Ethernet (registered trademark) which is a standard of wired LAN represented by IEEE 802.3 as a physical layer and a data link layer of a network. Further, description will be made using the TCP / IP protocol as a network layer and a transport layer.
図4において、101はMAC(メディアアクセスコントロール)を示しており、ネットワーク上のイーサネット(登録商標)フレームは、まずMAC101で受信される。MAC101は、MACヘッダの情報に従って、物理層、データリンク層で提供されるプロトコル処理を実行し、MACヘッダを取り除いた後パケットデータを上位層へ受け渡す処理を行う。102はTCP(UDP)/IPデフレーマであり、MAC101によりMACヘッダが取り除かれたTCP/IPパケットを、MAC101より受け取り、IPヘッダ及びTCPヘッダデータを抽出する。
In FIG. 4,
抽出するIPヘッダ、TCPヘッダはそれぞれ図1、図2で説明した構造である。TCP(UDP)/IPデフレーマ102は、抽出したヘッダデータを後述するヘッダ情報解析部106へ送る。また、TCP(UDP)/IPデフレーマ102は、抽出したパケットデータを後述するチェックサム演算部103へ送る。
The extracted IP header and TCP header have the structures described with reference to FIGS. The TCP (UDP) /
チェックサム演算部103は、TCP(UDP)/IPデフレーマ102からデータを受け取ると、TCPパケットのチェックサム値の計算を行う。
When the
チェックサム演算部103は、TCPパケットのチェックサム値の計算として、まず、送信先IPアドレス、送信元IPアドレス、パケット長、プロトコル番号から構成される擬似ヘッダを生成する。次に、チェックサム演算部103は、TCPヘッダ中のチェックサム領域に0を入れた後、擬似ヘッダ、TCPヘッダ、データ部分を全て16ビット単位で1の補数で足し合わせる。それから、チェックサム演算部103は、受信パケットバッファ104へデータを送り出す。受信パケットバッファ104は、受信したパケットデータを1パケット分格納する領域であり、受信パケットが正常なパケットでなかった場合にはデータを破棄する処理を行う。
The
受信パケットバッファ104に格納されたデータが正常なパケットデータである場合には、前記データは、受信バッファ105中のデータバッファ105bへ書き込まれる。
When the data stored in the
受信バッファ105は、RAM(ランダムアクセスメモリ)から構成されており、後述のCPU110によって管理されているメモリ領域である。そのため、パケットデータが書き込まれるメモリアドレスはCPU110によって予め指定される。受信バッファ105は、パケットディスクリプタ105a、データバッファ105bによって構成されている。
The
データバッファ105bは、断片化されたメモリ領域の集合体であり、キュー構造となっている。パケットディスクリプタ105aは、データ領域を構成する断片化されたメモリ領域を、チェーンされたキュー構造として管理するための情報を格納する領域であり、より詳細なデータ構造については後述する。
The
TCP(UDP)/IPデフレーマ102において抽出されたIPヘッダ、TCPヘッダデータは、ヘッダ情報解析部106によって、各種ヘッダの内容が解析された後、CPU110で処理される上位プトロコルであるTCPプロトコル制御へ渡される。解析されるヘッダの内容として、IPヘッダにおいては、パケット長、送信先及び送信元IPアドレス、識別子、フラグ、フラグメントオフセット、プロトコル番号、各種オプション等がある。また、解析されるヘッダの内容として、TCPヘッダにおいては、送信先及び送信元ポート番号、シーケンス番号、確認応答番号、コードビット、ウインドウサイズ、チェックサム値、各種オプション情報等がある。
The IP header and TCP header data extracted by the TCP (UDP) /
また、ヘッダ情報解析部106においてはIPヘッダのチェックサム値の演算も行い、演算結果がIPヘッダ中に書き込まれているチェックサム値と一致するか否かの検査を行い、検査結果についてもCPU101及び受信パケットバッファ104へ伝える。受信パケットバッファ104ではヘッダチェックサム値の不一致を検出すると受信パケットを破棄する処理を行う。
The header
ヘッダ情報解析部106は、IPヘッダのチェックサム値の計算として、IPヘッダ中のチェックサム領域に0を入れた後、IPヘッダ部を全て16ビット単位で1の補数で足し合わせる。
As the calculation of the checksum value of the IP header, the header
106aで示すチェックサム情報は、ヘッダ情報解析部106で解析されたTCPヘッダ情報の一つであり、送信先で計算し埋め込まれたパケットデータのチェックサム値である。また、106bで示すフラグ情報は、ヘッダ情報解析部106で解析されたIPヘッダ情報の一つであり、IPパケットのフラグメント処理を制御する情報(フラグメント制御情報)である。フラグ情報106bには、IPパケットをフラグメントしてもよいか否かを指示するための識別情報が含まれている。また、フラグ情報106bには、このIPパケットがフラグメントされているパケットか否か、またフラグメントされているパケットの場合、最後のフラグメントパケットか途中のフラグメントパケットかを識別する情報が含まれている。
The
フラグメント検査部107は、ヘッダ情報解析部106で解析されたフラグ情報106bを読み出し、IPパケットがフラグメントされたパケットか否かを判定する。また、フラグメント検査部107は、IPパケットがフラグメントされたパケットの場合、最後のフラグメントパケットか途中のフラグメントパケットかを検査する。フラグメント検査部107は、検査結果をCPU110及びセレクタ111へ伝える。
The
セレクタ111は、パケットが、フラグメントパケットの場合には、チェックサム演算部103で演算されたパケットのチェックサム値をチェックサム値一時記憶部108へ送り、フラグメントパケットでない場合には、チェックサム検査部109へ送る。
When the packet is a fragment packet, the selector 111 sends the checksum value of the packet calculated by the
チェックサム値一時記憶部108は、同一の識別子を持つフラグメントパケットが全て到着するまで、各パケットのチェックサム値を一時的に格納しておくメモリである。全てのパケットの到着が終了したら、記憶されているチェックサム値がCPU110によって読み出され、CPU110によるパケットの再組み立て処理と、チェックサム検査処理とに使用される。
The checksum value
また、チェックサム検査部109は、チェックサム演算部103から送られた演算チェックサム値と、ヘッダ情報解析部106のチェックサム情報106aから送られたチェックサム値とを比較する。そして、チェックサム検査部109は、検査結果(比較結果)をCPU110及び受信パケットバッファ104へ伝える。
Also, the
受信パケットバッファ104は、チェックサム値が不一致であることを示す検査結果を受け取ると、保持している受信パケットを破棄する処理を行う。
When receiving a test result indicating that the checksum values do not match, the received
CPU110は、ヘッダ情報解析部106で解析されたIPヘッダ、TCPヘッダの各種情報、フラグメント検査部107の検査結果、チェックサム検査部109の検査結果を受け、これらの情報に基づいて、各種制御を行う。また、CPU110は、チェックサム値一時記憶部108に格納されているチェックサム値等の情報受け、この情報等にも基づいて、各種制御を行う。なお、制御としては、例えば、受信バッファ105中のパケットディスクリプタ105aの制御や、データ領域105bへのデータの読み出し、書き込み制御等がある。また、制御として、受信パケットバッファ104がパケットデータを書き込む際のメモリアドレスの指定制御、フラグメントされたパケットの再組み立て処理制御、上位プロトコルであるTCPプロトコル処理制御等がある。但し、CPU110の制御処理手順等の詳細については後述するフローチャートを使用して説明する。
The
図5は、受信バッファ105の詳細なデータ構造を説明するための図である。なお、図5では、ある一つのパケットデータが受信バッファ105に格納されている場合のデータ構造を表している。
FIG. 5 is a diagram for explaining a detailed data structure of the
図5において、501、502は105aで示されたパケットディスクリプタ、503、504は105bで示されたデータバッファである。データバッファ105bは、メモリ領域がある大きさの単位ごとに分割されており、受信バッファ105は、これら複数の分割領域の関連付けをパケットディスクリプタ105a中に記述されているデータによって管理するキュー構造となっている。
In FIG. 5, 501 and 502 are packet descriptors indicated by 105a, and 503 and 504 are data buffers indicated by 105b. The
501には、p_next1(501a)、p_data1(501b)、len1(501c)、pktlen1(501d)、p_buf1(501e)、size1(501f)、その他の情報1(501g)等のデータがそれぞれ含まれている。同様に、502には、p_next2(502a)、p_data2(502b)、len2(502c)、pktlen2(502d)、p_buf2(502e)、size2(502f)、その他の情報2(502g)等のデータがそれぞれ含まれている。 501 includes data such as p_next1 (501a), p_data1 (501b), len1 (501c), pktlen1 (501d), p_buf1 (501e), size1 (501f), and other information 1 (501g). . Similarly, 502 includes data such as p_next2 (502a), p_data2 (502b), len2 (502c), pktlen2 (502d), p_buf2 (502e), size2 (502f), and other information 2 (502g). It is.
また、503にはheader1(503a)、data1(503b)、504にはdata2(504a)がそれぞれ含まれており、これら503、504はそれぞれパケットデータを格納する分割領域の一つである。
503はパケットデータの先頭ブロックが格納されているデータバッファとして、503aで示すTCPヘッダ及びIPヘッダのデータ、及び503bで示すペイロードデータが含まれている。また504はパケットデータの続きのブロックが格納されているデータバッファであり、504a出示す続きのペイロードデータが含まれている。
なお、図5では、一つのパケットが複数のデータバッファ(503,504)に分割して格納されている例を示しているが、通常は一つのパケットは一つのデータバッファに収められる場合が多い。但し、フラグメントされたパケットを受信した場合には、それぞれの分割パケットは異なる時間に到着するために、到着ごとに分割したブロックに格納して管理される。 FIG. 5 shows an example in which one packet is divided and stored in a plurality of data buffers (503, 504). Usually, one packet is often stored in one data buffer. . However, when a fragmented packet is received, since each divided packet arrives at a different time, it is stored and managed in a block divided for each arrival.
次に、パケットディスクリプタ501には、データバッファ503や、パケットデータ503a、503bに関連する各種情報及びパケットディスクリプタのキュー構造管理のための情報等が格納されている。
Next, the
p_next1(501a)は、次のブロックのパケットディスクリプタが存在する場合に次のパケットディスクリプタの先頭アドレスを示すポインタ情報であり、図5の例では502の領域の先頭アドレスが格納されている。次のパケットディスクリプタが存在しない、つまり、最後のブロックに対するパケットディスクリプタの場合は、NULLが格納される。
p_next1 (501a) is pointer information indicating the start address of the next packet descriptor when the packet descriptor of the next block exists. In the example of FIG. 5, the start address of the
p_data(501b)には、データバッファにおいて、このパケットディスクリプタの対象となるデータバッファ503において、実際に格納されているパケットデータ503a、503bの先頭を示すポインタであるアドレスが格納されている。またlen1(501c)には、パケットデータ503a、503bを合わせたデータ長が格納されている。pktlen1(501d)にはパケット全体のデータ長、つまり、503a、503b、504aの合計サイズが格納されている。この合計サイズは一つのパケットが複数ブロックで構成される場合には、先頭ブロックのパケットディスクリプタにのみ格納されるものである。
In the data buffer, p_data (501b) stores an address which is a pointer indicating the head of the
次にp_buf1(501e)には、データバッファにおいて、このパケットディスクリプタの対象となるデータバッファ503の先頭を示すポインタであるアドレスが格納されている。またsize1(501f)には、データバッファ503のサイズが格納されている。
Next, p_buf1 (501e) stores an address which is a pointer indicating the head of the
その他の情報1(501g)には、その他パケットデータを管理するための情報、例えばデータバッファが複数の分割サイズをもって管理される場合にはそのブロックタイプ、次の識別子を持つパケットへのポインタ情報等が格納されている。 Other information 1 (501g) includes information for managing other packet data, for example, when the data buffer is managed with a plurality of division sizes, its block type, pointer information to a packet having the next identifier, etc. Is stored.
パケットディスクリプタ502には、データバッファ504や、パケットデータ504aに関連する各種情報及びパケットディスクリプタのキュー構造管理のための情報等が格納されている。
The
502に格納されている情報の構成は501で説明した構成と同様であるが、pktlen2(502d)に示されるパケット全体のデータ長の情報は、502がパケットの先頭ブロックのパケットディスクリプタではないので、NULLが格納される。 The configuration of information stored in 502 is the same as the configuration described in 501, but the information on the data length of the entire packet indicated in pktlen2 (502d) is that 502 is not the packet descriptor of the first block of the packet. NULL is stored.
図6は、実施形態1のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図6に示す処理を常に繰り返し、実行している。
FIG. 6 is a flowchart illustrating control of software executed by the
ステップS601において、CPU110は、パケットが受信されるのを待つ処理を行う。ステップS602において、CPU110は、パケットを受信したか否かを判定する。CPU110は、パケットを受信したと判定すると、ステップS603に進み、パケットを受信していないと判定すると、ステップS602の処理を繰り返す。
In step S601, the
ステップS603において、CPU110は、ヘッダ情報解析部106において算出されたパケットのIPヘッダのチェックサム検査結果(演算チェックサム値)を取得する。ステップS604において、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とを比較して、受信したパケットが正常なパケットか否かを判定する。
In step S <b> 603, the
つまり、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とが一致する場合は、正常なパケットであると判定し、ステップS605に進む。一方、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とが一致しない場合は、正常なパケットでないと判定し、受信パケットバッファ104中に格納されたパケットデータを破棄する。そして、CPU110は、図6に示す処理を終了する。
That is, if the calculated checksum value acquired in step S603 matches the checksum value in the IP header of the packet, the
ステップS605において、CPU110は、受信バッファ105のデータバッファ105b中に受信パケット用のデータバッファを確保する。そして、CPU110は、このデータバッファを受信パケットバッファ104からの書き込み用に割り当てる処理、及びこのデータバッファを管理する等のためのパケットディスクリプタ105aを生成する処理を行う。これらのデータバッファ、パケットディスクリプタは図5で説明したようなキュー構造で管理されるものである。
In step S605, the
続いて、ステップS606において、CPU110は、ヘッダ情報解析部106より、TCPヘッダに埋め込まれているチェックサム値等を含むパケットヘッダ情報を取得する。なお、このチェックサム値は、後述するチェックサム検査処理、或いはTCP制御等の上位プロトコル処理において利用される。
In step S606, the
続いて、ステップS607において、CPU110は、フラグメント検査部107より、検査結果、つまり、受信したIPパケットがフラグメントされているパケット(IPフラグメントパケット)か否かの情報を取得する。
Subsequently, in step S607, the
続いて、ステップS608において、CPU110は、ステップS607において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS614に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS609に進む。
Subsequently, in step S608,
ステップS609において、CPU110は、チェックサム検査部109より、TCPパケットのチェックサムの検査結果を取得する。ここで、TCPパケットのチェックサムの検索結果とは、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致するか否かの情報である。
In step S <b> 609, the
ステップS610において、CPU110は、ステップS609において取得したTCPパケットのチェックサムの検査結果に基づいて、正常なパケットか否かを判定する。CPU110は、正常なパケットであると判定すると、ステップS611に進み、正常なパケットでないと判定すると、ステップS613に進む。CPU110は、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致していると、正常なパケットであると判定する。一方、CPU110は、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致していないと、正常なパケットでないと判定する。
In step S610, the
受信パケットバッファ104中に格納されたパケットデータが破棄されるのに伴い、ステップS613において、CPU110は、ステップS605で受信パケット用に確保した受信バッファ105中のデータバッファやパケットディスクリプタをメモリ開放する。
As the packet data stored in the
ステップS611において、CPU110は、受信バッファ105のコントロール処理を実行する。このコントロール処理は、受信バッファ105中のメモリブロックに書き込まれたパケットデータに対応して、パケットディスクリプタ中の各項目に数値を書き込む処理である。なお、この数値とは、受信したパケットのサイズや、メモリブロック中のアドレス、ヘッダ情報を参照して取得したパケット全体のデータ長等の情報、更に次のパケットのディスクリプタへのポインタアドレス等である。
In step S611, the
続いて、ステップS612において、CPU110は、上位プロトコルであるTCPの制御処理を実行する。TCPの制御処理の詳細な説明は割愛するが、コネクション管理、フロー制御、輻輳制御等が含まれる。
Subsequently, in step S612, the
一方、ステップS614において、CPU110は、全てのフラグメントパケットが到着したか否か判定する。CPU110は、同一の識別子を持つIPパケットのフラグ304、及びフラグメントオフセット305に基づいて、全てのフラグメントパケットが到着したか否か判定する。
On the other hand, in step S614, the
CPU110は、全てのフラグメントパケットが到着したと判定すると、ステップS615に進み、全てのフラグメントパケットが到着していないと判定すると、ステップS619に進む。
If the
ステップS619において、CPU110は、ステップS611と同様に、受信バッファ105のコントロール処理として、受信したパケットのサイズや、メモリブロック中のアドレスの書き込みを行う。また、CPU110は、先頭ブロックの受信の場合は、パケット全体のデータ長の書き込み、次のパケットのディスクリプタへのポインタアドレスの書き込み等を実行する。
In step S619, the
この受信バッファ105のコントロール処理をフラグメントパケットが到着する度に実行することにより、各データバッファ105bに格納されたフラグメントパケットを連続したデータとして扱うことができ、パケットの再組み立て処理を実行することができる。
By executing the control process of the
ステップS615において、CPU110は、チェックサム値一時記憶部108に記憶されている全てのパケットの演算チェックサム値を加算する処理を行う。この加算処理により再組み立て処理されたパケットのチェックサム値(データチェックサム)を求めることができる。
In step S615, the
続いて、ステップS616において、CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、を比較し、一致するか否かを判定する。CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、が一致すると判定すると、ステップS611に進む。一方、CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、が一致しないと判定すると、ステップS618に進む。
Subsequently, in step S616, the
ステップS618において、CPU110は、ステップS613と同様に、ステップS605で受信パケット用に確保した受信バッファ105中のデータバッファやパケットディスクリプタをメモリ開放する。
In step S618, as in step S613, the
(実施形態2)
実施形態1では、フラグメントされたパケットを検出した場合には、常にその再組み立て処理をCPU110で実行する例を用いて説明を行った。しかしながら、TCP/IPを用いたネットワークプロトコルにおいては、フラグメントされたパケットの到着順序は保証されていないが、送信されたパケットが複雑なネットワーク経路を通らなければ比較的先頭パケットから順番に到着する場合が多い。
(Embodiment 2)
In the first embodiment, when a fragmented packet is detected, the reassembly process is always executed by the
フラグメントされたパケットを先頭から順次受信する場合においては、受信データをメモリ上に連続的に書き込むことができるため、この書き込み処理においては複雑なメモリ管理は必要なく、単純なアドレスのインクリメントだけでよい。よって、回路規模も大きくなることはない。 When sequentially receiving fragmented packets from the beginning, the received data can be written continuously into the memory, so this memory processing does not require complicated memory management and only a simple address increment is required. . Therefore, the circuit scale does not increase.
従って、実施形態2においては、フラグメントされたパケットを受信した場合にも、そのパケットが先頭ブロックから順番に到着している間は、ハードウェアにより自動的に受信バッファメモリに書き込む制御を行う。そして、到着順序が入れ替わったことを検出した時点で再組み立て処理をCPU100によって行う例を説明する。 Therefore, in the second embodiment, even when a fragmented packet is received, control is performed to automatically write to the reception buffer memory by hardware while the packet arrives in order from the first block. An example in which the CPU 100 performs the reassembly process when it is detected that the arrival order has been changed will be described.
図7は、実施形態2に係る装置の全体構成を表すブロック図である。実施形態2においても、ネットワークの物理層、データリンク層としてIEEE802.3に代表される有線LANの規格であるイーサネット(登録商標)を用いて説明する。また、ネットワーク層、トランスポート層としてTCP/IPプロトコルを用いて説明する。 FIG. 7 is a block diagram illustrating the overall configuration of the apparatus according to the second embodiment. Also in the second embodiment, description will be made using Ethernet (registered trademark), which is a standard of wired LAN represented by IEEE 802.3, as a physical layer and a data link layer of a network. Further, description will be made using the TCP / IP protocol as a network layer and a transport layer.
図7において、101のMAC(メディアアクセスコントロール)、102のTCP(UDP)/IPデフレーマは実施形態1と同様の制御を行う。TCP(UDP)/IPデフレーマ102によって抽出されたヘッダデータは、ヘッダ情報解析部106へ送られ、またパケットデータは、チェックサム演算部103へ送られる。ヘッダ情報解析部106、チェックサム演算部103もそれぞれ実施形態1と同様の制御を行う。
In FIG. 7, a MAC (Media Access Control) 101 and a TCP (UDP) /
受信パケットバッファ104及び受信バッファ105も実施形態1と同様にパケットデータを格納するメモリであり、受信バッファ105は図5で説明したようなキュー構造として管理されている。
The
TCP(UDP)/IPデフレーマ102において抽出されたIPヘッダ、TCPヘッダデータは、ヘッダ情報解析部106によって、各種ヘッダの内容が解析された後、CPU110で処理される上位プトロコルであるTCPプロトコル制御へ渡される。実施形態2におけるCPU110の処理手順等については後述のフローチャートで詳細に説明する。
The IP header and TCP header data extracted by the TCP (UDP) /
フラグメント検査部707は、ヘッダ情報解析部106で解析されたフラグ情報106bを読み出し、IPパケットがフラグメントされたパケットか否かを判定する。また、フラグメント検査部707は、IPパケットがフラグメントされたパケットの場合、最後のフラグメントパケットか、途中のフラグメントパケットかを検査する。また、フラグメント検査部707は、IPパケットがフラグメントされたパケットの場合、フラグメントパケットが先頭から連続した順序で到着したフラグメントパケットか否か、連続した順序で到着していた場合、最後のフラグメントパケットか否かを検査する。フラグメント検査部707は、これらの検査結果をCPU110、又はセレクタ711へ伝える。
The
セレクタ711は、IPパケットが不連続に到着したフラグメントパケットであると判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値をチェックサム値一時記憶部708へ送る。また、セレクタ711は、IPパケットがフラグメントパケットでないと判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値を、セレクタ713を介してチェックサム検査部709へ送る。
When it is determined that the IP packet is a fragment packet that has arrived discontinuously, the
また、セレクタ711は、先頭から連続した順序で到着したフラグメントパケットであると判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値をチェックサム加算部712へ送る。
If the
チェックサム値一時記憶部708は、同一の識別子を持つフラグメントパケットが全て到着するまで、各パケットのチェックサム値を一時的に格納しておくメモリである。全てのパケットの到着が終了したら、記憶されているチェックサム値がCPU110によって読み出され、CPU110によるパケットの再組み立て処理と、チェックサム検査処理とに使用される。
The checksum value
連続したフラグメントパケットを受信した場合、チェックサム加算部712は、チェックサム値一時記憶部708に格納されているチェックサム値の内、同一の識別子を持つフラグメントパケットのチェックサム値を読み出す。そして、チェックサム加算部712は、チェックサム値を加算した後、再びチェックサム値一時記憶部708に書き込む制御を行う。つまり、連続したフラグメントパケットを受信している間は、これまで到着した同一識別子のパケットのチェックサム値の総和がチェックサム値一時記憶部708に記憶される。
When receiving successive fragment packets, the
また、フラグメント検査部707において、連続したフラグメントパケットとして到着したパケットの内、最後のパケットであると検出された場合、セレクタ711は、その検出結果をセレクタ713に伝える。セレクタ713は、前記検出結果を受け取ると、チェックサム値一時記憶部708に格納されているチェックサム値をチェックサム検査部709に送り出す。また、セレクタ713は、前記検出結果以外の検出結果(又は前記検出結果以外の制御信号)を受け取ると、チェックサム演算部103で計算されたチェックサム値をチェックサム検査部709に送り出す。
Further, when the
このような処理によって、チェックサム値一時記憶部708から送り出されるチェックサム値は、最終的にパケット全体のチェックサム値となり、このチェックサム値に対してチェックサム検査が行われる。
By such processing, the checksum value sent out from the checksum value
フラグメント検査部707において、フラグメントされていないパケットであると判断された場合には、上述したようにチェックサム演算部103で演算されたチェックサム値がチェックサム検査部709に送られる。
When the
チェックサム検査部709は、チェックサム演算部103から送られたチェックサム値と、ヘッダ情報解析部106のチェックサム情報106aから送られたチェックサム値とを比較し、検査結果をCPU110及び受信パケットバッファ104へ伝える。
The
受信パケットバッファ104はチェックサム値の不一致を検出すると受信パケットを破棄する処理を行う。
The
CPU110は、ヘッダ情報解析部106で解析されたIPヘッダ、TCPヘッダの各種情報、フラグメント検査部707の検査結果、チェックサム検査部709の検査結果を受け、これらの情報に基づいて、各種制御を行う。また、CPU110は、チェックサム値一時記憶部708に格納されているチェックサム値等の情報受け、この情報等にも基づいて、各種制御を行う。なお、制御としては、例えば、受信バッファ105中のパケットディスクリプタ105aの制御や、データ領域105bへのデータの読み出し、書き込み制御等がある。また、制御として、受信パケットバッファ104がパケットデータを書き込む際のメモリアドレスの指定制御、フラグメントされたパケットの再組み立て処理制御、上位プロトコルであるTCPプロトコル処理制御等がある。但し、CPU110の制御処理手順等の詳細については後述するフローチャートを使用して説明する。
The
図8は、連続したフラグメントパケットを受信した場合に、データバッファ105b中のメモリブロックに書き込まれるデータの構造を示す図である。図8において、801はヘッダデータ部でありIPヘッダ情報が格納されている。802は、フラグメントされた最初のデータ部であり、TCPヘッダ等の上位プロトコルのヘッダ及びペイロードの一部が含まれる。801のデータと、802のデータとを合わせた部分が先頭のフラグメントパケットとして受信される。
FIG. 8 is a diagram showing the structure of data written to the memory block in the
803は2番目のデータ部、804は3番目のデータ部を表わしており、803のデータと、804のデータとをそれぞれ受信する度に前のデータの後ろに追加されてデータバッファ105b中のメモリブロックに書き込まれる。
図9は、実施形態2のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図9に示す処理を常に繰り返し、実行している。
FIG. 9 is a flowchart illustrating control of software executed by the
ステップS901からステップS907までの処理は、実施形態1の図6に示したステップS601からステップS607までの処理と同様である。 The processing from step S901 to step S907 is the same as the processing from step S601 to step S607 shown in FIG. 6 of the first embodiment.
ステップS908において、CPU110は、ステップS907において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS920に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS909に進む。
In step S908, the
ステップS909からステップS913までの処理は、実施形態1の図6に示したステップS609からステップS613までの処理と同様である。 The processing from step S909 to step S913 is the same as the processing from step S609 to step S613 shown in FIG. 6 of the first embodiment.
ステップS920において、CPU110は、ハードウェアによる再組み立て制御を行っているパケットデータか否か、つまり、連続して到着しているフラグメントパケットか否かを判定する。CPU110は、ハードウェアによる再組み立て制御を行っているパケットデータであると判定すると、ステップS921に進み、ハードウェアによる再組み立て制御を行っているパケットデータでないと判定すると、ステップS914に進む。
In step S920, the
ステップS921において、CPU110は、再組み立てが終了しているか否か、つまり、同一識別子パケットの最後のデータを受信して完成したパケットデータとして図8に示されるようなメモリブロックに書き込まれているパケットか否かを判定する。CPU110は、再組み立てが終了していると判定すると、ステップS909に進み、再組み立てが終了していないと判定すると、ステップS922に進む。CPU110は、フラグメント検査部707より出力された検査結果等に基づいて再組み立てが終了しているか否かを判定する。
In step S921, the
ステップS922において、CPU110は、CPU110は、受信バッファ105のコントロール処理として、パケットのサイズやメモリブロック中のアドレスの更新処理を実行する。
In step S922, the
ステップS914からステップS919までの処理は、実施形態1の図6に示したステップS614からステップS619までの処理と同様である。 The processing from step S914 to step S919 is the same as the processing from step S614 to step S619 shown in FIG. 6 of the first embodiment.
(実施形態3)
上述した実施形態では、全てのフラグメントパケットに重複領域がない場合を例に説明を行った。このような場合では、CPU110が処理するチェックサム演算は、チェックサム値一時記憶部108に記憶されている各フラグメントパケットのチェックサム値を加算するだけで、再組み立てされたパケット全体のチェックサム値を求めることができた。
(Embodiment 3)
In the above-described embodiment, the case where there is no overlapping area in all fragment packets has been described as an example. In such a case, the checksum operation processed by the
しかしながら、複数のセグメントにまたがるネットワークにおいては、同じ識別子のフラグメントパケットが別の経路を経由し、装置に到着する場合や、再送によって同一のペイロードデータが異なるサイズのフラグメントパケットとして生成される場合も存在する。その結果、重複領域を持ったフラグメントパケットが装置に到着することになり、フラグメントパケットごとのチェックサム値を単純に加算するだけではパケット全体のチェックサム値を求めることができない場合も出てくる。 However, in a network spanning multiple segments, fragment packets with the same identifier may arrive at the device via different routes, or the same payload data may be generated as different size fragment packets by retransmission. To do. As a result, a fragment packet having an overlapping area arrives at the apparatus, and there may be a case where the checksum value of the entire packet cannot be obtained by simply adding the checksum value for each fragment packet.
実施形態3では、重複領域が存在するフラグメントパケットを受信した場合でも、CPU110において、チェックサム値の全ての再計算を行わないですむよう、処理を行う例を説明する。このような処理を行うことで、高速にチェックサム検査を行うことができる。
In the third embodiment, an example will be described in which processing is performed so that the
図10は、再送処理によって重複が発生しているフラグメントパケットの構成例を示す図である。図10において、1001aは送信時における元のパケットデータにおけるIPヘッダ部、1001bはペイロード部を表わしている。 FIG. 10 is a diagram illustrating a configuration example of fragment packets in which duplication occurs due to retransmission processing. In FIG. 10, 1001a represents the IP header portion in the original packet data at the time of transmission, and 1001b represents the payload portion.
また、1002a、1002b、1003a、1003b、1004a、1004bはそれぞれ、送信後に3分割としてフラグメントされたパケットの構成例であり、それぞれIPヘッダ及びペイロードを示している。
更に、1005a、1005b、1006a、1006b、1007a、1007b、1008a、1008bはそれぞれ、受信側からのTCP再送要求により再送されたパケットの構成例で、それぞれIPヘッダ及びペイロードを示している。最初に送信したパケットとは違うネットワーク経路を経由したことにより、4分割としてフラグメントされたパケットとなっている。
Further,
図11は、重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その1)である。図11において、フラグメントパケットのうち「1101で示すパケット」、「1102で示すパケット」の順で受信した場合、ペイロードの重複領域は1103に示す範囲となり、重複領域は受信パケット1102の半分のサイズより小さい。
FIG. 11 is a diagram (part 1) illustrating a configuration example of a received packet when a duplicate fragment packet is generated. In FIG. 11, when the packet is received in the order of “packet indicated by 1101” and “packet indicated by 1102” in the order of the fragment packet, the overlapping area of the payload becomes the range indicated by 1103, and the overlapping area is smaller than half the size of the received
図12は、重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その2)である。図12において、フラグメントパケットのうち「1201で示すパケット」、「1202で示すパケット」、「1203で示すパケット」の順で受信した場合は、ペイロードの重複領域は1204に示す範囲となる。この重複領域は受信パケット1203の半分のサイズより大きい。
FIG. 12 is a diagram (part 2) of a configuration example of a received packet when a duplicate fragment packet is generated. In FIG. 12, when the fragment packets are received in the order of “packet indicated by 1201”, “packet indicated by 1202”, and “packet indicated by 1203”, the overlapping area of the payload becomes a range indicated by 1204. This overlapping area is larger than half the size of the received
図13は、実施形態3のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図13に示す処理を常に繰り返し、実行している。
FIG. 13 is a flowchart illustrating control of software executed by the
ステップS1301からステップS1307までの処理は、実施形態1の図6に示したステップS601からステップS607までの処理と同様である。 The processing from step S1301 to step S1307 is the same as the processing from step S601 to step S607 shown in FIG. 6 of the first embodiment.
ステップS1308において、CPU110は、ステップS1307において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS1320に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS1309に進む。
In step S1308, the
ステップS1309からステップS1313までの処理は、実施形態1の図6に示したステップS609からステップS613までの処理と同様である。 The processing from step S1309 to step S1313 is the same as the processing from step S609 to step S613 shown in FIG. 6 of the first embodiment.
ステップS1320において、CPU110は、受信したフラグメントパケットのデータと、既に受信している同一識別子のフラグメントパケットのデータとに重複領域があるか否かを判定する。CPU110は、重複領域があると判定すると、ステップS1321に進み、重複領域がないと判定すると、ステップS1314に進む。
In step S1320,
ステップS1321において、CPU110は、チェックサム値一時記憶部108に格納されているチェックサム値の補正処理を実行し、ステップS1314に進む。ステップS1321の処理の詳細は、後述する図14に示す。
In step S1321, the
ステップS1314からステップS1319までの処理は、実施形態1の図6に示したステップS614からステップS619までの処理と同様である。 The processing from step S1314 to step S1319 is the same as the processing from step S614 to step S619 shown in FIG. 6 of the first embodiment.
図14は、チェックサム値の補正処理を示すフローチャートである。ステップS1401において、CPU110は、フラグメントパケットの重複領域のサイズを算出する処理を行う。このサイズの算出は、受信バッファ105中のパケットディスクリプタ105aに記述されている、受信したフラグメントパケットのパケット情報、及び受信したフラグメントパケットと同一識別子を持つフラグメントパケットのパケット情報を用いて行われる。
FIG. 14 is a flowchart showing a checksum value correction process. In step S1401, the
続いて、ステップS1402において、CPU110は、算出したサイズが受信したフラグメントパケットのサイズの1/2以下か否かを判定する。CPU110は、算出したサイズが受信したフラグメントパケットのサイズの1/2以下であると判定すると、ステップS1403に進み、算出したサイズが受信したフラグメントパケットのサイズの1/2以下でないと判定すると、ステップS1407に進む。
Subsequently, in step S1402, the
ステップS1403において、CPU110は、受信したフラグメントパケットの内、重複している領域のデータのチェックサム値を算出する。続いて、ステップS1404において、CPU110は、チェックサム値一時記憶部108に格納されている受信したフラグメントパケットのチェックサム値を読み出す。
In step S1403,
続いて、ステップS1405において、CPU110は、ステップS1404において読み出したチェックサム値から、ステップS1403において算出したチェックサム値を減算した値を求める。この処理によって、重複していない領域のデータのチェックサム値を求めることができる。続いて、ステップS1406において、CPU110は、ステップS1405において求めた値(チェックサム値)を再びチェックサム値一時記憶部108に書き戻す。
Subsequently, in step S1405, the
一方、ステップS1407において、CPU110は、受信したフラグメントパケットの内、重複していない領域のデータのチェックサム値を算出する。続いて、ステップS1408において、CPU110は、チェックサム値一時記憶部108に格納されている受信したフラグ面とパケットのチェックサム値を、ステップS1407において算出したチェックサム値に置き換える。
On the other hand, in step S1407,
上述したように、フラグメントパケットの重複領域が発生した場合にも、重複領域のみの演算処理と、非重複領域のみの演算処理とを切り替えると共に、チェックサム演算部103で演算されたチェックサム値を利用する。よって、ソフトウェアによりパケット領域全てのチェックサム値の再演算を行うことなく、高速にチェックサム検査を行うことができる。つまり、CPU110の演算量を削減することができる。
As described above, even when an overlapping area of fragment packets occurs, the calculation process of only the overlapping area and the calculation process of only the non-overlapping area are switched and the checksum value calculated by the
定常的なパケット、及び否定常的なパケット(フラグメントパケット)を小さな回路規模で高速に処理することができる。 Regular packets and non-steady packets (fragment packets) can be processed at high speed with a small circuit scale.
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。 The preferred embodiments of the present invention have been described in detail above, but the present invention is not limited to such specific embodiments, and various modifications can be made within the scope of the gist of the present invention described in the claims.・ Change is possible.
110 CPU
103 チェックサム演算部
105 受信バッファ
107 フラグメント検査部
109 チェックサム検査部
110 CPU
103
Claims (11)
前記チェックサム演算手段で求めたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査手段と、
前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査手段と、
前記チェックサム演算手段で求めたチェックサム値を一時的に格納するチェックサム記憶手段と、
断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御手段と、
を有し、
前記フラグメント検査手段において前記受信パケットが断片化されたパケットであると判断された場合は、前記制御手段においてチェックサム検査を行い、前記フラグメント検査手段において前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査手段においてチェックサム検査を行うことを特徴とするプロトコル処理装置。 Checksum calculation means for calculating the data checksum of the received packet;
Checksum checking means for performing a data checksum check using the checksum value obtained by the checksum calculation means and the checksum value stored in the packet header of the received packet;
Fragment checking means for determining whether the received packet is a fragmented packet;
Checksum storage means for temporarily storing the checksum value obtained by the checksum calculation means;
Fragmented packet reassembly process, checksum value stored in the checksum storage means, and reassembly using the checksum value stored in the packet header of the reassembled packet A control means for executing a data checksum check process of the received packet;
Have
When the received packet is determined to be fragmented by the fragment checking means, the control means performs a checksum check, and the fragment checking means determines that the received packet is not a fragmented packet. If so, the checksum checking means performs a checksum check.
断片化されたパケットを受信した場合、前記制御手段は、前記連結情報を用いて、同一の識別子を有するパケットが格納された前記データバッファを連結するように制御し、断片化されたパケットの再組み立て処理を行うことを特徴とする請求項1又は2記載のプロトコル処理装置。 A reception buffer means having a data buffer for storing the reception packet, and a management buffer for storing connection information related to the connection of the plurality of data buffers;
When the fragmented packet is received, the control means uses the concatenation information to control the concatenation of the data buffers in which packets having the same identifier are stored, and recycles the fragmented packet. 3. The protocol processing apparatus according to claim 1, wherein an assembly process is performed.
断片化されたパケットを、先頭から後尾まで連続した順序で受信した場合、前記チェックサム検査手段は、前記チェックサム加算手段で求めたチェックサム値と、前記断片化されたパケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行い、
最初に受信した断片化されたパケットが先頭ではなかった場合、又は断片化されたパケットが連続した順序ではなくなった場合、前記制御手段は、断片化されたパケットの再組み立て処理を行うことを特徴とする請求項1乃至3何れか1項記載のプロトコル処理装置。 While receiving the fragmented packets in the sequential order from the beginning, each time a packet is received, a checksum addition means is further provided that performs a data checksum calculation of the packet and accumulates the checksum value. Have
When the fragmented packets are received in the sequential order from the head to the tail, the checksum checking means stores the checksum value obtained by the checksum adding means and the packet header of the fragmented packet. Data checksum check using the checksum value that is
When the first fragmented packet received is not at the beginning, or when the fragmented packets are not in a continuous order, the control means performs reassembly processing of the fragmented packets. The protocol processing device according to any one of claims 1 to 3.
受信パケットのデータチェックサム計算を行うチェックサム演算ステップと、
前記チェックサム演算ステップにおいて求められたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査ステップと、
前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査ステップと、
前記チェックサム演算ステップで求めたチェックサム値を一時的にチェックサム記憶手段に格納する格納ステップと、
断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御ステップと、
を有し、
前記フラグメント検査ステップにおいて前記受信パケットが断片化されたパケットであると判断された場合は、前記制御ステップにおいてチェックサム検査を行い、前記フラグメント検査ステップにおいて前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査ステップにおいてチェックサム検査を行うことを特徴とするプロトコル処理方法。 A protocol processing method in a protocol processing device,
A checksum calculation step for calculating the data checksum of the received packet;
A checksum check step for performing a data checksum check using the checksum value obtained in the checksum calculation step and the checksum value stored in the packet header of the received packet;
Fragment inspection step for determining whether the received packet is a fragmented packet;
A storage step of temporarily storing the checksum value obtained in the checksum calculation step in a checksum storage means;
Fragmented packet reassembly process, checksum value stored in the checksum storage means, and reassembly using the checksum value stored in the packet header of the reassembled packet A control step for performing a data checksum check process of the received packet;
Have
If it is determined in the fragment checking step that the received packet is a fragmented packet, a checksum check is performed in the control step, and the received packet is determined not to be a fragmented packet in the fragment checking step. If so, a checksum check is performed in the checksum check step.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034068A JP2007215013A (en) | 2006-02-10 | 2006-02-10 | Protocol processor and protocol processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006034068A JP2007215013A (en) | 2006-02-10 | 2006-02-10 | Protocol processor and protocol processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007215013A true JP2007215013A (en) | 2007-08-23 |
Family
ID=38493038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006034068A Pending JP2007215013A (en) | 2006-02-10 | 2006-02-10 | Protocol processor and protocol processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007215013A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008092082A (en) * | 2006-09-29 | 2008-04-17 | Canon Inc | Data receiver and data receiving method |
JP2009278364A (en) * | 2008-05-14 | 2009-11-26 | Canon Inc | Packet receiving apparatus and processing method of the same |
JP2011041243A (en) * | 2009-08-14 | 2011-02-24 | Korea Electronics Telecommun | Method and device for communicating in udp platform |
JP2012156602A (en) * | 2011-01-21 | 2012-08-16 | Ricoh Co Ltd | Information processing device, communication control method, and communication control system |
CN106575118A (en) * | 2014-08-22 | 2017-04-19 | 西门子股份公司 | Detection of consistent steady-state behavior in process plants |
-
2006
- 2006-02-10 JP JP2006034068A patent/JP2007215013A/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008092082A (en) * | 2006-09-29 | 2008-04-17 | Canon Inc | Data receiver and data receiving method |
JP2009278364A (en) * | 2008-05-14 | 2009-11-26 | Canon Inc | Packet receiving apparatus and processing method of the same |
US8473632B2 (en) | 2008-05-14 | 2013-06-25 | Canon Kabushiki Kaisha | Packet receiving apparatus and processing method for the same |
JP2011041243A (en) * | 2009-08-14 | 2011-02-24 | Korea Electronics Telecommun | Method and device for communicating in udp platform |
JP2012156602A (en) * | 2011-01-21 | 2012-08-16 | Ricoh Co Ltd | Information processing device, communication control method, and communication control system |
US8738999B2 (en) | 2011-01-21 | 2014-05-27 | Ricoh Company, Ltd. | Information processing apparatus, communication control method, and communication control system |
CN106575118A (en) * | 2014-08-22 | 2017-04-19 | 西门子股份公司 | Detection of consistent steady-state behavior in process plants |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105794172B (en) | The network equipment and method for handling message in the network device | |
US10374977B2 (en) | Method and apparatus for stateless transport layer tunneling | |
US11425058B2 (en) | Generation of descriptive data for packet fields | |
US7561573B2 (en) | Network adaptor, communication system and communication method | |
CN102272716B (en) | The SIMD of network packet processes | |
US7260631B1 (en) | System and method for receiving iSCSI protocol data units | |
KR101726359B1 (en) | An apparatus for analyzing a data packet, a data packet processing system and a method | |
US20110080912A1 (en) | Tcp receiver acceleration | |
US7948979B2 (en) | Programmable network interface card | |
US9912637B2 (en) | Use of packet header extension for layer-3 direct server return | |
JP2007215013A (en) | Protocol processor and protocol processing method | |
CN113783800B (en) | Data packet processing method and device, computer equipment and readable storage medium | |
US20140105212A1 (en) | Communications over multiple protocol interfaces in a computing environment | |
US20080104162A1 (en) | DATA PROCESSING APPARATUS and DATA PROCESSING METHOD | |
US7606967B2 (en) | Frame transfer method and apparatus | |
US8990422B1 (en) | TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data | |
US7747766B2 (en) | System and method for recognizing offloaded packets | |
JP2007274056A (en) | Datagram reassembling apparatus | |
US20200220952A1 (en) | System and method for accelerating iscsi command processing | |
CN110383779B (en) | Data processing apparatus, network system, packet sequence control circuit, and data processing method | |
US20060153215A1 (en) | Connection context prefetch | |
US9553795B2 (en) | Port switching method, analysis device, and recording medium | |
EP4169231A1 (en) | Online application layer processing of network layer timestamps | |
CN107147578B (en) | Information processing method and electronic equipment | |
CN109150584A (en) | A method of being instructed based on SMID is that network packet classification provides acceleration support |