[go: up one dir, main page]

JP2007215013A - プロトコル処理装置及びプロトコル処理方法 - Google Patents

プロトコル処理装置及びプロトコル処理方法 Download PDF

Info

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
Application number
JP2006034068A
Other languages
English (en)
Inventor
Shinichi Matsumoto
真一 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2006034068A priority Critical patent/JP2007215013A/ja
Publication of JP2007215013A publication Critical patent/JP2007215013A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】定常的なパケット、及び否定常的なパケット(フラグメントパケット)を小さな回路規模で高速に処理することを目的とする。
【解決手段】断片化されたパケットの再組み立て処理、及びチェックサム記憶手段に格納されているチェックサム値と、再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御手段を有し、フラグメント検査手段において受信パケットが断片化されたパケットであると判断された場合は、制御手段においてチェックサム検査を行い、フラグメント検査手段において受信パケットが断片化されたパケットでないと判断された場合は、チェックサム検査手段においてチェックサム検査を行うことによって上記課題を解決する。
【選択図】図4

Description

本発明は、プロトコル処理装置及びプロトコル処理方法に関する。
ネットワークを利用したデータ通信においては、TCP/IPをはじめとしたプロトコルを用いた手法が用いられる。このTCP/IPによる通信では、データを小単位に分割して、送受信に関連する各種情報をヘッダとして付加することにより、パケットと呼ばれるデータのかたまりで送受信を行っている。
また、ネットワークプロトコルにおいては、OSI参照モデルに代表されるように、その処理単位が階層的に行われており、これに従ってパケットのデータ構造においてもそれぞれの処理単位に応じたヘッダ情報が階層的に付加されている。
図1は、イーサネット(登録商標)におけるTCP/IPパケットのデータ構造を示す図である。図1においては、データの先頭からそれぞれ、イーサネット(登録商標)ヘッダ201、IPヘッダ202、TCPヘッダ203が順次付加されており、その後アプリケーションデータであるペイロードデータ204が続いている。
図2は、IPパケットのデータ構造を示す図である。図2において、301はIPヘッダ部、302はデータ部を示している。IPヘッダ部301には、ヘッダサイズやパケットサイズ、サービスタイプや識別子、また、送信元と送信先とのIPアドレス、及び303に示すヘッダチェックサム値、更に304に示すフラグ、305に示すフラグメントオフセット値等が格納されている。ヘッダチェックサム303は、IPヘッダ部301と、データ部302とが壊れていないことを保証するための16ビットのデータである。IPパケット受信処理においては、装置は、受信したパケットのIPヘッダ部301のチェックサム値を演算し、その結果と、ヘッダに格納されているヘッダチェックサム303との比較を行う。
フラグ304には、IPデータグラムのフラグメント処理を制御する3ビットのデータが格納されている。フラグメントオフセット305には、フラグメントされたデータが、オリジナルのIPデータグラムのどこに位置しているかを意味する13ビットのデータが格納されている。
図3は、TCPパケットのデータ構造を示す図である。図3において、401はTCPヘッダ部、402はデータ部を示している。TCPヘッダ部401には、送信元と送信先とのポート番号、シーケンス番号、各種フラグ、ヘッダ部とデータ部とを含む、403に示すチェックサム値等が格納されている。
チェックサム403は、TCPヘッダ部401とデータ部402とが壊れていないことを保証するための16ビットのデータである。TCPパケット受信処理においては、装置は、受信したパケットのTCPヘッダ部401と、データ部402とのチェックサム値を演算し、その結果と、ヘッダに格納されているチェックサム403との比較を行う。
これらTCP/IPのプロトコル処理は従来ソフトウェアによって実装されてきた。しかしながら、例えばチェックサム値の演算等においては、パケット処理ごとに1500バイト程度の加算処理が必要となり、ソフトウェアでは演算に時間がかかるため通信のスループットを上げるのが困難になってくる。
これを解決する手段として、特許文献1において、ハードウェアを利用してチェックサム値を短時間で生成するための回路が提案されている。
特開平9−134295号公報
IPパケット処理を高速に実行する手段として、上述した特許文献1で提案されているようにハードウェアを用いる方法は、特に定常的なパケットの処理を行わせるだけにおいては、比較的簡単に実現させることができ、有効である。しかしながら、非定常的なパケットの処理までハードウェアに行わせようとすると、ハードウェアの回路規模が大きくなってしまう問題があった。
例えば、TCP/IPプロトコルにおいては、IPパケットがデータリンクで転送できる最大値(MTU)を超えたサイズのデータについては、必要に応じてフラグメンテーションと呼ばれるパケット分割を行う機能が決められている。ネットワークの中継を行うルーター等の機器では、受け取ったIPパケットが送り先のMTUより大きなサイズのパケットである場合には、フラグメント処理によってパケットを分割して送信する機能を持っている。
このフラグメンテーションされたIPパケットを受信した場合は、全ての分割パケットが到着するのを待って、パケットの再組み立てを行い、上位のプロトコルに渡すことになる。
このフラグメントされたパケットの待ち合わせと再組み立てをハードウェアで実現する場合は、複雑なメモリ管理を行わなければならず回路構成が複雑になってしまう。また、ソフトウェアで処理される上位プロトコルが使用するメモリとは独立した専用のメモリも必要となるため、回路規模も大きくなる。
本発明は上記の問題点に鑑みなされたもので、定常的なパケット、及び否定常的なパケット(フラグメントパケット)を小さな回路規模で高速に処理することを目的とする。
そこで、上記問題を解決するため、本発明は、受信パケットのデータチェックサム計算を行うチェックサム演算手段と、前記チェックサム演算手段で求めたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査手段と、前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査手段と、前記チェックサム演算手段で求めたチェックサム値を一時的に格納するチェックサム記憶手段と、断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御手段と、を有し、前記フラグメント検査手段において前記受信パケットが断片化されたパケットであると判断された場合は、前記制御手段においてチェックサム検査を行い、前記フラグメント検査手段において前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査手段においてチェックサム検査を行うことを特徴とする。
係る構成とすることにより、非定常的なパケットの処理は、制御手段が行い、定常的なパケットの処理は例えばハードウェアであるチェックサム演算手段や、フラグメント検査手段等が行う。よって、定常的なパケット、及び否定常的なパケットを小さな回路規模で高速に処理することができる。
また、上記問題を解決するため、本発明は、プロトコル処理方法及びプログラムとしてもよい。
本発明によれば、定常的なパケット、及び否定常的なパケットを小さな回路規模で高速に処理することができる。
以下、本発明の実施形態について図面に基づいて説明する。
(実施形態1)
図4は、実施形態1に係る装置の全体構成を表すブロック図である。実施形態1では、ネットワークの物理層、データリンク層としてIEEE802.3に代表される有線LANの規格であるイーサネット(登録商標)を用いて説明する。また、ネットワーク層、トランスポート層としてTCP/IPプロトコルを用いて説明する。
図4において、101はMAC(メディアアクセスコントロール)を示しており、ネットワーク上のイーサネット(登録商標)フレームは、まずMAC101で受信される。MAC101は、MACヘッダの情報に従って、物理層、データリンク層で提供されるプロトコル処理を実行し、MACヘッダを取り除いた後パケットデータを上位層へ受け渡す処理を行う。102はTCP(UDP)/IPデフレーマであり、MAC101によりMACヘッダが取り除かれたTCP/IPパケットを、MAC101より受け取り、IPヘッダ及びTCPヘッダデータを抽出する。
抽出するIPヘッダ、TCPヘッダはそれぞれ図1、図2で説明した構造である。TCP(UDP)/IPデフレーマ102は、抽出したヘッダデータを後述するヘッダ情報解析部106へ送る。また、TCP(UDP)/IPデフレーマ102は、抽出したパケットデータを後述するチェックサム演算部103へ送る。
チェックサム演算部103は、TCP(UDP)/IPデフレーマ102からデータを受け取ると、TCPパケットのチェックサム値の計算を行う。
チェックサム演算部103は、TCPパケットのチェックサム値の計算として、まず、送信先IPアドレス、送信元IPアドレス、パケット長、プロトコル番号から構成される擬似ヘッダを生成する。次に、チェックサム演算部103は、TCPヘッダ中のチェックサム領域に0を入れた後、擬似ヘッダ、TCPヘッダ、データ部分を全て16ビット単位で1の補数で足し合わせる。それから、チェックサム演算部103は、受信パケットバッファ104へデータを送り出す。受信パケットバッファ104は、受信したパケットデータを1パケット分格納する領域であり、受信パケットが正常なパケットでなかった場合にはデータを破棄する処理を行う。
受信パケットバッファ104に格納されたデータが正常なパケットデータである場合には、前記データは、受信バッファ105中のデータバッファ105bへ書き込まれる。
受信バッファ105は、RAM(ランダムアクセスメモリ)から構成されており、後述のCPU110によって管理されているメモリ領域である。そのため、パケットデータが書き込まれるメモリアドレスはCPU110によって予め指定される。受信バッファ105は、パケットディスクリプタ105a、データバッファ105bによって構成されている。
データバッファ105bは、断片化されたメモリ領域の集合体であり、キュー構造となっている。パケットディスクリプタ105aは、データ領域を構成する断片化されたメモリ領域を、チェーンされたキュー構造として管理するための情報を格納する領域であり、より詳細なデータ構造については後述する。
TCP(UDP)/IPデフレーマ102において抽出されたIPヘッダ、TCPヘッダデータは、ヘッダ情報解析部106によって、各種ヘッダの内容が解析された後、CPU110で処理される上位プトロコルであるTCPプロトコル制御へ渡される。解析されるヘッダの内容として、IPヘッダにおいては、パケット長、送信先及び送信元IPアドレス、識別子、フラグ、フラグメントオフセット、プロトコル番号、各種オプション等がある。また、解析されるヘッダの内容として、TCPヘッダにおいては、送信先及び送信元ポート番号、シーケンス番号、確認応答番号、コードビット、ウインドウサイズ、チェックサム値、各種オプション情報等がある。
また、ヘッダ情報解析部106においてはIPヘッダのチェックサム値の演算も行い、演算結果がIPヘッダ中に書き込まれているチェックサム値と一致するか否かの検査を行い、検査結果についてもCPU101及び受信パケットバッファ104へ伝える。受信パケットバッファ104ではヘッダチェックサム値の不一致を検出すると受信パケットを破棄する処理を行う。
ヘッダ情報解析部106は、IPヘッダのチェックサム値の計算として、IPヘッダ中のチェックサム領域に0を入れた後、IPヘッダ部を全て16ビット単位で1の補数で足し合わせる。
106aで示すチェックサム情報は、ヘッダ情報解析部106で解析されたTCPヘッダ情報の一つであり、送信先で計算し埋め込まれたパケットデータのチェックサム値である。また、106bで示すフラグ情報は、ヘッダ情報解析部106で解析されたIPヘッダ情報の一つであり、IPパケットのフラグメント処理を制御する情報(フラグメント制御情報)である。フラグ情報106bには、IPパケットをフラグメントしてもよいか否かを指示するための識別情報が含まれている。また、フラグ情報106bには、このIPパケットがフラグメントされているパケットか否か、またフラグメントされているパケットの場合、最後のフラグメントパケットか途中のフラグメントパケットかを識別する情報が含まれている。
フラグメント検査部107は、ヘッダ情報解析部106で解析されたフラグ情報106bを読み出し、IPパケットがフラグメントされたパケットか否かを判定する。また、フラグメント検査部107は、IPパケットがフラグメントされたパケットの場合、最後のフラグメントパケットか途中のフラグメントパケットかを検査する。フラグメント検査部107は、検査結果をCPU110及びセレクタ111へ伝える。
セレクタ111は、パケットが、フラグメントパケットの場合には、チェックサム演算部103で演算されたパケットのチェックサム値をチェックサム値一時記憶部108へ送り、フラグメントパケットでない場合には、チェックサム検査部109へ送る。
チェックサム値一時記憶部108は、同一の識別子を持つフラグメントパケットが全て到着するまで、各パケットのチェックサム値を一時的に格納しておくメモリである。全てのパケットの到着が終了したら、記憶されているチェックサム値がCPU110によって読み出され、CPU110によるパケットの再組み立て処理と、チェックサム検査処理とに使用される。
また、チェックサム検査部109は、チェックサム演算部103から送られた演算チェックサム値と、ヘッダ情報解析部106のチェックサム情報106aから送られたチェックサム値とを比較する。そして、チェックサム検査部109は、検査結果(比較結果)をCPU110及び受信パケットバッファ104へ伝える。
受信パケットバッファ104は、チェックサム値が不一致であることを示す検査結果を受け取ると、保持している受信パケットを破棄する処理を行う。
CPU110は、ヘッダ情報解析部106で解析されたIPヘッダ、TCPヘッダの各種情報、フラグメント検査部107の検査結果、チェックサム検査部109の検査結果を受け、これらの情報に基づいて、各種制御を行う。また、CPU110は、チェックサム値一時記憶部108に格納されているチェックサム値等の情報受け、この情報等にも基づいて、各種制御を行う。なお、制御としては、例えば、受信バッファ105中のパケットディスクリプタ105aの制御や、データ領域105bへのデータの読み出し、書き込み制御等がある。また、制御として、受信パケットバッファ104がパケットデータを書き込む際のメモリアドレスの指定制御、フラグメントされたパケットの再組み立て処理制御、上位プロトコルであるTCPプロトコル処理制御等がある。但し、CPU110の制御処理手順等の詳細については後述するフローチャートを使用して説明する。
図5は、受信バッファ105の詳細なデータ構造を説明するための図である。なお、図5では、ある一つのパケットデータが受信バッファ105に格納されている場合のデータ構造を表している。
図5において、501、502は105aで示されたパケットディスクリプタ、503、504は105bで示されたデータバッファである。データバッファ105bは、メモリ領域がある大きさの単位ごとに分割されており、受信バッファ105は、これら複数の分割領域の関連付けをパケットディスクリプタ105a中に記述されているデータによって管理するキュー構造となっている。
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)等のデータがそれぞれ含まれている。
また、503にはheader1(503a)、data1(503b)、504にはdata2(504a)がそれぞれ含まれており、これら503、504はそれぞれパケットデータを格納する分割領域の一つである。
503はパケットデータの先頭ブロックが格納されているデータバッファとして、503aで示すTCPヘッダ及びIPヘッダのデータ、及び503bで示すペイロードデータが含まれている。また504はパケットデータの続きのブロックが格納されているデータバッファであり、504a出示す続きのペイロードデータが含まれている。
なお、図5では、一つのパケットが複数のデータバッファ(503,504)に分割して格納されている例を示しているが、通常は一つのパケットは一つのデータバッファに収められる場合が多い。但し、フラグメントされたパケットを受信した場合には、それぞれの分割パケットは異なる時間に到着するために、到着ごとに分割したブロックに格納して管理される。
次に、パケットディスクリプタ501には、データバッファ503や、パケットデータ503a、503bに関連する各種情報及びパケットディスクリプタのキュー構造管理のための情報等が格納されている。
p_next1(501a)は、次のブロックのパケットディスクリプタが存在する場合に次のパケットディスクリプタの先頭アドレスを示すポインタ情報であり、図5の例では502の領域の先頭アドレスが格納されている。次のパケットディスクリプタが存在しない、つまり、最後のブロックに対するパケットディスクリプタの場合は、NULLが格納される。
p_data(501b)には、データバッファにおいて、このパケットディスクリプタの対象となるデータバッファ503において、実際に格納されているパケットデータ503a、503bの先頭を示すポインタであるアドレスが格納されている。またlen1(501c)には、パケットデータ503a、503bを合わせたデータ長が格納されている。pktlen1(501d)にはパケット全体のデータ長、つまり、503a、503b、504aの合計サイズが格納されている。この合計サイズは一つのパケットが複数ブロックで構成される場合には、先頭ブロックのパケットディスクリプタにのみ格納されるものである。
次にp_buf1(501e)には、データバッファにおいて、このパケットディスクリプタの対象となるデータバッファ503の先頭を示すポインタであるアドレスが格納されている。またsize1(501f)には、データバッファ503のサイズが格納されている。
その他の情報1(501g)には、その他パケットデータを管理するための情報、例えばデータバッファが複数の分割サイズをもって管理される場合にはそのブロックタイプ、次の識別子を持つパケットへのポインタ情報等が格納されている。
パケットディスクリプタ502には、データバッファ504や、パケットデータ504aに関連する各種情報及びパケットディスクリプタのキュー構造管理のための情報等が格納されている。
502に格納されている情報の構成は501で説明した構成と同様であるが、pktlen2(502d)に示されるパケット全体のデータ長の情報は、502がパケットの先頭ブロックのパケットディスクリプタではないので、NULLが格納される。
図6は、実施形態1のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図6に示す処理を常に繰り返し、実行している。
ステップS601において、CPU110は、パケットが受信されるのを待つ処理を行う。ステップS602において、CPU110は、パケットを受信したか否かを判定する。CPU110は、パケットを受信したと判定すると、ステップS603に進み、パケットを受信していないと判定すると、ステップS602の処理を繰り返す。
ステップS603において、CPU110は、ヘッダ情報解析部106において算出されたパケットのIPヘッダのチェックサム検査結果(演算チェックサム値)を取得する。ステップS604において、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とを比較して、受信したパケットが正常なパケットか否かを判定する。
つまり、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とが一致する場合は、正常なパケットであると判定し、ステップS605に進む。一方、CPU110は、ステップS603において取得した演算チェックサム値と、パケットのIPヘッダ中のチェックサム値とが一致しない場合は、正常なパケットでないと判定し、受信パケットバッファ104中に格納されたパケットデータを破棄する。そして、CPU110は、図6に示す処理を終了する。
ステップS605において、CPU110は、受信バッファ105のデータバッファ105b中に受信パケット用のデータバッファを確保する。そして、CPU110は、このデータバッファを受信パケットバッファ104からの書き込み用に割り当てる処理、及びこのデータバッファを管理する等のためのパケットディスクリプタ105aを生成する処理を行う。これらのデータバッファ、パケットディスクリプタは図5で説明したようなキュー構造で管理されるものである。
続いて、ステップS606において、CPU110は、ヘッダ情報解析部106より、TCPヘッダに埋め込まれているチェックサム値等を含むパケットヘッダ情報を取得する。なお、このチェックサム値は、後述するチェックサム検査処理、或いはTCP制御等の上位プロトコル処理において利用される。
続いて、ステップS607において、CPU110は、フラグメント検査部107より、検査結果、つまり、受信したIPパケットがフラグメントされているパケット(IPフラグメントパケット)か否かの情報を取得する。
続いて、ステップS608において、CPU110は、ステップS607において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS614に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS609に進む。
ステップS609において、CPU110は、チェックサム検査部109より、TCPパケットのチェックサムの検査結果を取得する。ここで、TCPパケットのチェックサムの検索結果とは、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致するか否かの情報である。
ステップS610において、CPU110は、ステップS609において取得したTCPパケットのチェックサムの検査結果に基づいて、正常なパケットか否かを判定する。CPU110は、正常なパケットであると判定すると、ステップS611に進み、正常なパケットでないと判定すると、ステップS613に進む。CPU110は、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致していると、正常なパケットであると判定する。一方、CPU110は、チェックサム演算部103で計算されたTCPパケットのチェックサム値と、ヘッダ情報解析部106でTCPヘッダから読み出されたチェックサム値とが一致していないと、正常なパケットでないと判定する。
受信パケットバッファ104中に格納されたパケットデータが破棄されるのに伴い、ステップS613において、CPU110は、ステップS605で受信パケット用に確保した受信バッファ105中のデータバッファやパケットディスクリプタをメモリ開放する。
ステップS611において、CPU110は、受信バッファ105のコントロール処理を実行する。このコントロール処理は、受信バッファ105中のメモリブロックに書き込まれたパケットデータに対応して、パケットディスクリプタ中の各項目に数値を書き込む処理である。なお、この数値とは、受信したパケットのサイズや、メモリブロック中のアドレス、ヘッダ情報を参照して取得したパケット全体のデータ長等の情報、更に次のパケットのディスクリプタへのポインタアドレス等である。
続いて、ステップS612において、CPU110は、上位プロトコルであるTCPの制御処理を実行する。TCPの制御処理の詳細な説明は割愛するが、コネクション管理、フロー制御、輻輳制御等が含まれる。
一方、ステップS614において、CPU110は、全てのフラグメントパケットが到着したか否か判定する。CPU110は、同一の識別子を持つIPパケットのフラグ304、及びフラグメントオフセット305に基づいて、全てのフラグメントパケットが到着したか否か判定する。
CPU110は、全てのフラグメントパケットが到着したと判定すると、ステップS615に進み、全てのフラグメントパケットが到着していないと判定すると、ステップS619に進む。
ステップS619において、CPU110は、ステップS611と同様に、受信バッファ105のコントロール処理として、受信したパケットのサイズや、メモリブロック中のアドレスの書き込みを行う。また、CPU110は、先頭ブロックの受信の場合は、パケット全体のデータ長の書き込み、次のパケットのディスクリプタへのポインタアドレスの書き込み等を実行する。
この受信バッファ105のコントロール処理をフラグメントパケットが到着する度に実行することにより、各データバッファ105bに格納されたフラグメントパケットを連続したデータとして扱うことができ、パケットの再組み立て処理を実行することができる。
ステップS615において、CPU110は、チェックサム値一時記憶部108に記憶されている全てのパケットの演算チェックサム値を加算する処理を行う。この加算処理により再組み立て処理されたパケットのチェックサム値(データチェックサム)を求めることができる。
続いて、ステップS616において、CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、を比較し、一致するか否かを判定する。CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、が一致すると判定すると、ステップS611に進む。一方、CPU110は、ステップS615において求めた再組み立て処理されたパケットのチェックサム値と、TCPヘッダ中のチェックサム値と、が一致しないと判定すると、ステップS618に進む。
ステップS618において、CPU110は、ステップS613と同様に、ステップS605で受信パケット用に確保した受信バッファ105中のデータバッファやパケットディスクリプタをメモリ開放する。
(実施形態2)
実施形態1では、フラグメントされたパケットを検出した場合には、常にその再組み立て処理をCPU110で実行する例を用いて説明を行った。しかしながら、TCP/IPを用いたネットワークプロトコルにおいては、フラグメントされたパケットの到着順序は保証されていないが、送信されたパケットが複雑なネットワーク経路を通らなければ比較的先頭パケットから順番に到着する場合が多い。
フラグメントされたパケットを先頭から順次受信する場合においては、受信データをメモリ上に連続的に書き込むことができるため、この書き込み処理においては複雑なメモリ管理は必要なく、単純なアドレスのインクリメントだけでよい。よって、回路規模も大きくなることはない。
従って、実施形態2においては、フラグメントされたパケットを受信した場合にも、そのパケットが先頭ブロックから順番に到着している間は、ハードウェアにより自動的に受信バッファメモリに書き込む制御を行う。そして、到着順序が入れ替わったことを検出した時点で再組み立て処理をCPU100によって行う例を説明する。
図7は、実施形態2に係る装置の全体構成を表すブロック図である。実施形態2においても、ネットワークの物理層、データリンク層としてIEEE802.3に代表される有線LANの規格であるイーサネット(登録商標)を用いて説明する。また、ネットワーク層、トランスポート層としてTCP/IPプロトコルを用いて説明する。
図7において、101のMAC(メディアアクセスコントロール)、102のTCP(UDP)/IPデフレーマは実施形態1と同様の制御を行う。TCP(UDP)/IPデフレーマ102によって抽出されたヘッダデータは、ヘッダ情報解析部106へ送られ、またパケットデータは、チェックサム演算部103へ送られる。ヘッダ情報解析部106、チェックサム演算部103もそれぞれ実施形態1と同様の制御を行う。
受信パケットバッファ104及び受信バッファ105も実施形態1と同様にパケットデータを格納するメモリであり、受信バッファ105は図5で説明したようなキュー構造として管理されている。
TCP(UDP)/IPデフレーマ102において抽出されたIPヘッダ、TCPヘッダデータは、ヘッダ情報解析部106によって、各種ヘッダの内容が解析された後、CPU110で処理される上位プトロコルであるTCPプロトコル制御へ渡される。実施形態2におけるCPU110の処理手順等については後述のフローチャートで詳細に説明する。
フラグメント検査部707は、ヘッダ情報解析部106で解析されたフラグ情報106bを読み出し、IPパケットがフラグメントされたパケットか否かを判定する。また、フラグメント検査部707は、IPパケットがフラグメントされたパケットの場合、最後のフラグメントパケットか、途中のフラグメントパケットかを検査する。また、フラグメント検査部707は、IPパケットがフラグメントされたパケットの場合、フラグメントパケットが先頭から連続した順序で到着したフラグメントパケットか否か、連続した順序で到着していた場合、最後のフラグメントパケットか否かを検査する。フラグメント検査部707は、これらの検査結果をCPU110、又はセレクタ711へ伝える。
セレクタ711は、IPパケットが不連続に到着したフラグメントパケットであると判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値をチェックサム値一時記憶部708へ送る。また、セレクタ711は、IPパケットがフラグメントパケットでないと判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値を、セレクタ713を介してチェックサム検査部709へ送る。
また、セレクタ711は、先頭から連続した順序で到着したフラグメントパケットであると判断された場合には、チェックサム演算部103において演算されたパケットのチェックサム値をチェックサム加算部712へ送る。
チェックサム値一時記憶部708は、同一の識別子を持つフラグメントパケットが全て到着するまで、各パケットのチェックサム値を一時的に格納しておくメモリである。全てのパケットの到着が終了したら、記憶されているチェックサム値がCPU110によって読み出され、CPU110によるパケットの再組み立て処理と、チェックサム検査処理とに使用される。
連続したフラグメントパケットを受信した場合、チェックサム加算部712は、チェックサム値一時記憶部708に格納されているチェックサム値の内、同一の識別子を持つフラグメントパケットのチェックサム値を読み出す。そして、チェックサム加算部712は、チェックサム値を加算した後、再びチェックサム値一時記憶部708に書き込む制御を行う。つまり、連続したフラグメントパケットを受信している間は、これまで到着した同一識別子のパケットのチェックサム値の総和がチェックサム値一時記憶部708に記憶される。
また、フラグメント検査部707において、連続したフラグメントパケットとして到着したパケットの内、最後のパケットであると検出された場合、セレクタ711は、その検出結果をセレクタ713に伝える。セレクタ713は、前記検出結果を受け取ると、チェックサム値一時記憶部708に格納されているチェックサム値をチェックサム検査部709に送り出す。また、セレクタ713は、前記検出結果以外の検出結果(又は前記検出結果以外の制御信号)を受け取ると、チェックサム演算部103で計算されたチェックサム値をチェックサム検査部709に送り出す。
このような処理によって、チェックサム値一時記憶部708から送り出されるチェックサム値は、最終的にパケット全体のチェックサム値となり、このチェックサム値に対してチェックサム検査が行われる。
フラグメント検査部707において、フラグメントされていないパケットであると判断された場合には、上述したようにチェックサム演算部103で演算されたチェックサム値がチェックサム検査部709に送られる。
チェックサム検査部709は、チェックサム演算部103から送られたチェックサム値と、ヘッダ情報解析部106のチェックサム情報106aから送られたチェックサム値とを比較し、検査結果をCPU110及び受信パケットバッファ104へ伝える。
受信パケットバッファ104はチェックサム値の不一致を検出すると受信パケットを破棄する処理を行う。
CPU110は、ヘッダ情報解析部106で解析されたIPヘッダ、TCPヘッダの各種情報、フラグメント検査部707の検査結果、チェックサム検査部709の検査結果を受け、これらの情報に基づいて、各種制御を行う。また、CPU110は、チェックサム値一時記憶部708に格納されているチェックサム値等の情報受け、この情報等にも基づいて、各種制御を行う。なお、制御としては、例えば、受信バッファ105中のパケットディスクリプタ105aの制御や、データ領域105bへのデータの読み出し、書き込み制御等がある。また、制御として、受信パケットバッファ104がパケットデータを書き込む際のメモリアドレスの指定制御、フラグメントされたパケットの再組み立て処理制御、上位プロトコルであるTCPプロトコル処理制御等がある。但し、CPU110の制御処理手順等の詳細については後述するフローチャートを使用して説明する。
図8は、連続したフラグメントパケットを受信した場合に、データバッファ105b中のメモリブロックに書き込まれるデータの構造を示す図である。図8において、801はヘッダデータ部でありIPヘッダ情報が格納されている。802は、フラグメントされた最初のデータ部であり、TCPヘッダ等の上位プロトコルのヘッダ及びペイロードの一部が含まれる。801のデータと、802のデータとを合わせた部分が先頭のフラグメントパケットとして受信される。
803は2番目のデータ部、804は3番目のデータ部を表わしており、803のデータと、804のデータとをそれぞれ受信する度に前のデータの後ろに追加されてデータバッファ105b中のメモリブロックに書き込まれる。
図9は、実施形態2のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図9に示す処理を常に繰り返し、実行している。
ステップS901からステップS907までの処理は、実施形態1の図6に示したステップS601からステップS607までの処理と同様である。
ステップS908において、CPU110は、ステップS907において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS920に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS909に進む。
ステップS909からステップS913までの処理は、実施形態1の図6に示したステップS609からステップS613までの処理と同様である。
ステップS920において、CPU110は、ハードウェアによる再組み立て制御を行っているパケットデータか否か、つまり、連続して到着しているフラグメントパケットか否かを判定する。CPU110は、ハードウェアによる再組み立て制御を行っているパケットデータであると判定すると、ステップS921に進み、ハードウェアによる再組み立て制御を行っているパケットデータでないと判定すると、ステップS914に進む。
ステップS921において、CPU110は、再組み立てが終了しているか否か、つまり、同一識別子パケットの最後のデータを受信して完成したパケットデータとして図8に示されるようなメモリブロックに書き込まれているパケットか否かを判定する。CPU110は、再組み立てが終了していると判定すると、ステップS909に進み、再組み立てが終了していないと判定すると、ステップS922に進む。CPU110は、フラグメント検査部707より出力された検査結果等に基づいて再組み立てが終了しているか否かを判定する。
ステップS922において、CPU110は、CPU110は、受信バッファ105のコントロール処理として、パケットのサイズやメモリブロック中のアドレスの更新処理を実行する。
ステップS914からステップS919までの処理は、実施形態1の図6に示したステップS614からステップS619までの処理と同様である。
(実施形態3)
上述した実施形態では、全てのフラグメントパケットに重複領域がない場合を例に説明を行った。このような場合では、CPU110が処理するチェックサム演算は、チェックサム値一時記憶部108に記憶されている各フラグメントパケットのチェックサム値を加算するだけで、再組み立てされたパケット全体のチェックサム値を求めることができた。
しかしながら、複数のセグメントにまたがるネットワークにおいては、同じ識別子のフラグメントパケットが別の経路を経由し、装置に到着する場合や、再送によって同一のペイロードデータが異なるサイズのフラグメントパケットとして生成される場合も存在する。その結果、重複領域を持ったフラグメントパケットが装置に到着することになり、フラグメントパケットごとのチェックサム値を単純に加算するだけではパケット全体のチェックサム値を求めることができない場合も出てくる。
実施形態3では、重複領域が存在するフラグメントパケットを受信した場合でも、CPU110において、チェックサム値の全ての再計算を行わないですむよう、処理を行う例を説明する。このような処理を行うことで、高速にチェックサム検査を行うことができる。
図10は、再送処理によって重複が発生しているフラグメントパケットの構成例を示す図である。図10において、1001aは送信時における元のパケットデータにおけるIPヘッダ部、1001bはペイロード部を表わしている。
また、1002a、1002b、1003a、1003b、1004a、1004bはそれぞれ、送信後に3分割としてフラグメントされたパケットの構成例であり、それぞれIPヘッダ及びペイロードを示している。
更に、1005a、1005b、1006a、1006b、1007a、1007b、1008a、1008bはそれぞれ、受信側からのTCP再送要求により再送されたパケットの構成例で、それぞれIPヘッダ及びペイロードを示している。最初に送信したパケットとは違うネットワーク経路を経由したことにより、4分割としてフラグメントされたパケットとなっている。
図11は、重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その1)である。図11において、フラグメントパケットのうち「1101で示すパケット」、「1102で示すパケット」の順で受信した場合、ペイロードの重複領域は1103に示す範囲となり、重複領域は受信パケット1102の半分のサイズより小さい。
図12は、重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その2)である。図12において、フラグメントパケットのうち「1201で示すパケット」、「1202で示すパケット」、「1203で示すパケット」の順で受信した場合は、ペイロードの重複領域は1204に示す範囲となる。この重複領域は受信パケット1203の半分のサイズより大きい。
図13は、実施形態3のCPU110が実行するソフトウェアの制御を示すフローチャートである。なお、CPU110は、図13に示す処理を常に繰り返し、実行している。
ステップS1301からステップS1307までの処理は、実施形態1の図6に示したステップS601からステップS607までの処理と同様である。
ステップS1308において、CPU110は、ステップS1307において取得した検査結果に基づいて、受信したIPパケットがIPフラグメントパケットか否かを判定する。CPU110は、受信したIPパケットがIPフラグメントパケットであると判定すると、ステップS1320に進み、受信したIPパケットがIPフラグメントパケットでないと判定すると、ステップS1309に進む。
ステップS1309からステップS1313までの処理は、実施形態1の図6に示したステップS609からステップS613までの処理と同様である。
ステップS1320において、CPU110は、受信したフラグメントパケットのデータと、既に受信している同一識別子のフラグメントパケットのデータとに重複領域があるか否かを判定する。CPU110は、重複領域があると判定すると、ステップS1321に進み、重複領域がないと判定すると、ステップS1314に進む。
ステップS1321において、CPU110は、チェックサム値一時記憶部108に格納されているチェックサム値の補正処理を実行し、ステップS1314に進む。ステップS1321の処理の詳細は、後述する図14に示す。
ステップS1314からステップS1319までの処理は、実施形態1の図6に示したステップS614からステップS619までの処理と同様である。
図14は、チェックサム値の補正処理を示すフローチャートである。ステップS1401において、CPU110は、フラグメントパケットの重複領域のサイズを算出する処理を行う。このサイズの算出は、受信バッファ105中のパケットディスクリプタ105aに記述されている、受信したフラグメントパケットのパケット情報、及び受信したフラグメントパケットと同一識別子を持つフラグメントパケットのパケット情報を用いて行われる。
続いて、ステップS1402において、CPU110は、算出したサイズが受信したフラグメントパケットのサイズの1/2以下か否かを判定する。CPU110は、算出したサイズが受信したフラグメントパケットのサイズの1/2以下であると判定すると、ステップS1403に進み、算出したサイズが受信したフラグメントパケットのサイズの1/2以下でないと判定すると、ステップS1407に進む。
ステップS1403において、CPU110は、受信したフラグメントパケットの内、重複している領域のデータのチェックサム値を算出する。続いて、ステップS1404において、CPU110は、チェックサム値一時記憶部108に格納されている受信したフラグメントパケットのチェックサム値を読み出す。
続いて、ステップS1405において、CPU110は、ステップS1404において読み出したチェックサム値から、ステップS1403において算出したチェックサム値を減算した値を求める。この処理によって、重複していない領域のデータのチェックサム値を求めることができる。続いて、ステップS1406において、CPU110は、ステップS1405において求めた値(チェックサム値)を再びチェックサム値一時記憶部108に書き戻す。
一方、ステップS1407において、CPU110は、受信したフラグメントパケットの内、重複していない領域のデータのチェックサム値を算出する。続いて、ステップS1408において、CPU110は、チェックサム値一時記憶部108に格納されている受信したフラグ面とパケットのチェックサム値を、ステップS1407において算出したチェックサム値に置き換える。
上述したように、フラグメントパケットの重複領域が発生した場合にも、重複領域のみの演算処理と、非重複領域のみの演算処理とを切り替えると共に、チェックサム演算部103で演算されたチェックサム値を利用する。よって、ソフトウェアによりパケット領域全てのチェックサム値の再演算を行うことなく、高速にチェックサム検査を行うことができる。つまり、CPU110の演算量を削減することができる。
定常的なパケット、及び否定常的なパケット(フラグメントパケット)を小さな回路規模で高速に処理することができる。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
イーサネット(登録商標)におけるTCP/IPパケットのデータ構造を示す図である。 IPパケットのデータ構造を示す図である。 TCPパケットのデータ構造を示す図である。 実施形態1に係る装置の全体構成を表すブロック図である。 受信バッファ105の詳細なデータ構造を説明するための図である。 実施形態1のCPU110が実行するソフトウェアの制御を示すフローチャートである。 実施形態2に係る装置の全体構成を表すブロック図である。 連続したフラグメントパケットを受信した場合に、データバッファ105b中のメモリブロックに書き込まれるデータの構造を示す図である。 実施形態2のCPU110が実行するソフトウェアの制御を示すフローチャートである。 再送処理によって重複が発生しているフラグメントパケットの構成例を示す図である。 重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その1)である。 重複したフラグメントパケットが生成された場合の受信パケットの構成例を示す図(その2)である。 実施形態3のCPU110が実行するソフトウェアの制御を示すフローチャートである。 チェックサム値の補正処理を示すフローチャートである。
符号の説明
110 CPU
103 チェックサム演算部
105 受信バッファ
107 フラグメント検査部
109 チェックサム検査部

Claims (11)

  1. 受信パケットのデータチェックサム計算を行うチェックサム演算手段と、
    前記チェックサム演算手段で求めたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査手段と、
    前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査手段と、
    前記チェックサム演算手段で求めたチェックサム値を一時的に格納するチェックサム記憶手段と、
    断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御手段と、
    を有し、
    前記フラグメント検査手段において前記受信パケットが断片化されたパケットであると判断された場合は、前記制御手段においてチェックサム検査を行い、前記フラグメント検査手段において前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査手段においてチェックサム検査を行うことを特徴とするプロトコル処理装置。
  2. 少なくとも前記チェックサム演算手段、及び前記チェックサム検査手段は、専用の回路で構成されていることを特徴とする請求項1記載のプロトコル処理装置。
  3. 前記受信パケットを格納するデータバッファと、複数の前記データバッファの連結に係る連結情報を格納する管理バッファと、を有する受信バッファ手段を更に有し、
    断片化されたパケットを受信した場合、前記制御手段は、前記連結情報を用いて、同一の識別子を有するパケットが格納された前記データバッファを連結するように制御し、断片化されたパケットの再組み立て処理を行うことを特徴とする請求項1又は2記載のプロトコル処理装置。
  4. 断片化されたパケットを、先頭から連続した順序で受信している間は、パケットを受信するごとに、パケットのデータチェックサム計算を行い、チェックサム値を積算していくチェックサム加算手段を更に有し、
    断片化されたパケットを、先頭から後尾まで連続した順序で受信した場合、前記チェックサム検査手段は、前記チェックサム加算手段で求めたチェックサム値と、前記断片化されたパケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行い、
    最初に受信した断片化されたパケットが先頭ではなかった場合、又は断片化されたパケットが連続した順序ではなくなった場合、前記制御手段は、断片化されたパケットの再組み立て処理を行うことを特徴とする請求項1乃至3何れか1項記載のプロトコル処理装置。
  5. 前記制御手段は、断片化されたパケットの内、各パケットに重複する領域がある場合、重複する領域のデータ又は重複していない領域のデータを用いて、データチェックサム計算を行い、チェックサム値を求め、前記チェックサム値を用いて、前記チェックサム演算手段で求められたチェックサム値の補正を行うことを特徴とする請求項1乃至4何れか1項記載のプロトコル処理装置。
  6. 前記制御手段は、前記重複する領域がパケット長の1/2より小さい場合には、重複する領域のデータを用いて、データチェックサム計算を行うことを特徴とする請求項5記載のプロトコル処理装置。
  7. 前記制御手段は、前記重複する領域がパケット長の1/2より大きい場合には、重複していない領域のデータを用いて、データチェックサム計算を行うことを特徴とする請求項5記載のプロトコル処理装置。
  8. 前記制御手段は、前記チェックサム記憶手段に格納されている、前記チェックサム演算手段で求められたチェックサム値から、前記重複する領域のデータを用いてデータチェックサム計算を行い、求めたチェックサム値を減算し、前記チェックサム記憶手段に書き戻すことにより、重複していない領域のチェックサム値を求めることを特徴とする請求項6記載のプロトコル処理装置。
  9. 前記制御手段は、前記チェックサム記憶手段に格納されている、前記チェックサム演算手段で求められたチェックサム値を、前記重複していない領域のデータを用いてデータチェックサム計算を行い、求めたチェックサム値に書き換えることにより、重複していない領域のチェックサム値を求めることを特徴とする請求項7記載のプロトコル処理装置。
  10. プロトコル処理装置におけるプロトコル処理方法であって、
    受信パケットのデータチェックサム計算を行うチェックサム演算ステップと、
    前記チェックサム演算ステップにおいて求められたチェックサム値と、受信パケットのパケットヘッダに格納されているチェックサム値とを使用してデータチェックサム検査を行うチェックサム検査ステップと、
    前記受信パケットが断片化されたパケットか否かを判断するフラグメント検査ステップと、
    前記チェックサム演算ステップで求めたチェックサム値を一時的にチェックサム記憶手段に格納する格納ステップと、
    断片化されたパケットの再組み立て処理、及び前記チェックサム記憶手段に格納されているチェックサム値と、前記再組み立てされたパケットのパケットヘッダに格納されているチェックサム値とを使用して再組み立てされたパケットのデータチェックサム検査処理を実行する制御ステップと、
    を有し、
    前記フラグメント検査ステップにおいて前記受信パケットが断片化されたパケットであると判断された場合は、前記制御ステップにおいてチェックサム検査を行い、前記フラグメント検査ステップにおいて前記受信パケットが断片化されたパケットでないと判断された場合は、前記チェックサム検査ステップにおいてチェックサム検査を行うことを特徴とするプロトコル処理方法。
  11. 請求項10記載のプロトコル処理方法をコンピュータに実行させることを特徴とするプログラム。
JP2006034068A 2006-02-10 2006-02-10 プロトコル処理装置及びプロトコル処理方法 Pending JP2007215013A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006034068A JP2007215013A (ja) 2006-02-10 2006-02-10 プロトコル処理装置及びプロトコル処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006034068A JP2007215013A (ja) 2006-02-10 2006-02-10 プロトコル処理装置及びプロトコル処理方法

Publications (1)

Publication Number Publication Date
JP2007215013A true JP2007215013A (ja) 2007-08-23

Family

ID=38493038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006034068A Pending JP2007215013A (ja) 2006-02-10 2006-02-10 プロトコル処理装置及びプロトコル処理方法

Country Status (1)

Country Link
JP (1) JP2007215013A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008092082A (ja) * 2006-09-29 2008-04-17 Canon Inc データ受信装置及びデータ受信方法
JP2009278364A (ja) * 2008-05-14 2009-11-26 Canon Inc パケット受信装置及びその処理方法
JP2011041243A (ja) * 2009-08-14 2011-02-24 Korea Electronics Telecommun Udp基盤の通信方法及び装置
JP2012156602A (ja) * 2011-01-21 2012-08-16 Ricoh Co Ltd 情報処理装置、通信制御方法、及び通信制御システム
CN106575118A (zh) * 2014-08-22 2017-04-19 西门子股份公司 过程工厂中一致的稳定状态行为的检测

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008092082A (ja) * 2006-09-29 2008-04-17 Canon Inc データ受信装置及びデータ受信方法
JP2009278364A (ja) * 2008-05-14 2009-11-26 Canon Inc パケット受信装置及びその処理方法
US8473632B2 (en) 2008-05-14 2013-06-25 Canon Kabushiki Kaisha Packet receiving apparatus and processing method for the same
JP2011041243A (ja) * 2009-08-14 2011-02-24 Korea Electronics Telecommun Udp基盤の通信方法及び装置
JP2012156602A (ja) * 2011-01-21 2012-08-16 Ricoh Co Ltd 情報処理装置、通信制御方法、及び通信制御システム
US8738999B2 (en) 2011-01-21 2014-05-27 Ricoh Company, Ltd. Information processing apparatus, communication control method, and communication control system
CN106575118A (zh) * 2014-08-22 2017-04-19 西门子股份公司 过程工厂中一致的稳定状态行为的检测

Similar Documents

Publication Publication Date Title
US10374977B2 (en) Method and apparatus for stateless transport layer tunneling
CN105794172B (zh) 网络设备和用于在网络设备中处理报文的方法
US11425058B2 (en) Generation of descriptive data for packet fields
US7561573B2 (en) Network adaptor, communication system and communication method
US8503450B2 (en) TCP receiver acceleration
US8255567B2 (en) Efficient IP datagram reassembly
CN111224839B (zh) 一种带内网络遥测功能的验证方法、装置、存储介质及电子设备
US7260631B1 (en) System and method for receiving iSCSI protocol data units
US7948979B2 (en) Programmable network interface card
CN105191235A (zh) 针对慢速和快速端口的直通处理
JP5711237B2 (ja) データパケットを分析するための装置、データパケット処理システム、及び処理方法
JP2007215013A (ja) プロトコル処理装置及びプロトコル処理方法
CN113783800B (zh) 数据包处理方法、装置、计算机设备及可读存储介质
US20160094513A1 (en) Use of packet header extension for layer-3 direct server return
JP4845674B2 (ja) データ処理装置及び方法、通信装置、並びにプログラム
CN112953829B (zh) 网络设备中的灵活解析器
EP0909063A2 (en) Mechanism for dispatching data units via a telecommunications network
US8990422B1 (en) TCP segmentation offload (TSO) using a hybrid approach of manipulating memory pointers and actual packet data
JP2007274056A (ja) データグラム再組立装置
US7747766B2 (en) System and method for recognizing offloaded packets
US20200220952A1 (en) System and method for accelerating iscsi command processing
CN110383779B (zh) 数据处理装置、网络系统、分组顺序控制电路和数据处理方法
US20060212598A1 (en) Frame transfer method and apparatus
US9553795B2 (en) Port switching method, analysis device, and recording medium
US20060153215A1 (en) Connection context prefetch