JP4921142B2 - 通信装置 - Google Patents

通信装置 Download PDF

Info

Publication number
JP4921142B2
JP4921142B2 JP2006334787A JP2006334787A JP4921142B2 JP 4921142 B2 JP4921142 B2 JP 4921142B2 JP 2006334787 A JP2006334787 A JP 2006334787A JP 2006334787 A JP2006334787 A JP 2006334787A JP 4921142 B2 JP4921142 B2 JP 4921142B2
Authority
JP
Japan
Prior art keywords
recording means
control information
data
pcb
protocol processing
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.)
Expired - Fee Related
Application number
JP2006334787A
Other languages
English (en)
Other versions
JP2008148133A5 (ja
JP2008148133A (ja
Inventor
利秋 南
大介 白石
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 JP2006334787A priority Critical patent/JP4921142B2/ja
Priority to US11/952,217 priority patent/US7720979B2/en
Publication of JP2008148133A publication Critical patent/JP2008148133A/ja
Publication of JP2008148133A5 publication Critical patent/JP2008148133A5/ja
Application granted granted Critical
Publication of JP4921142B2 publication Critical patent/JP4921142B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、PCB(プロトコル制御ブロック)等のプロトコル制御情報を用いてプロトコル処理を行う技術に関するものである。
ギガビットイーサネット(登録商標)等の普及により汎用PCのみならず、組み込み機器においてもネットワークプロトコル処理を高速に実行できることが要求されている。
ところで、ギガビットイーサネット(登録商標)のFull-wireの速度を達成するためには、動作周波数3GHz程度のプロセッサが必要になると言われている。これは、今日の組み込み機器が一般的に搭載するプロセッサ能力をはるかに超えている。そこで、TOE(TCP/IPオフロードエンジン)といったプロトコル処理に特化した補助的デバイスをシステムに付加し、広帯域なネットワーク通信を実現することが一般的になりつつある。TOEの従来技術の一例が特許文献1に開示されている。
さて、TCPのプロトコル処理において重要となるのはPCBの扱いである。PCBとは、プロトコル制御ブロックの略称である。PCBは、TCPコネクション毎に用意されている、数十種類のパラメータ(変数)で構成されるコンテキスト情報であり、TCPパケットを受信する度にどのPCB情報を使うかを検索し、決定する必要がある。
また、PCBの各要素は、TCP処理中に頻繁にアクセスされる変数であり、TCP処理においては要になる変数である。TCPの高速化において、PCBの検索とアクセスの高速化が必須とされている。
特許文献1に開示される発明においては、TCPプロトコル処理を行うのに必要なPCBを主記憶からSRAM等の高速な一時メモリにコピーして保持することによりアクセスの高速化を実現している。このとき、コネクションの数が増え、全てのPCBが一時メモリに収まらない場合は、必要なPCBのみ一時メモリに存在するように主記憶との間で入れ替え処理を行っている。
特表2002−524005号公報
前述のように、PCBを高速な一時メモリに格納して処理することによりプロトコルスタック処理を高速化させることができる。しかしながら、処理性能を考えるときには、一時メモリ中のPCBの入れ替え処理の影響を考慮しなければならない。一時メモリ中のPCBの入れ替えは、一時メモリの容量がコネクション数に比べ小さい場合に頻発する。この問題は、特に組込み系のシステムではコスト面から一時メモリ容量を大きくすることができないため深刻である。
一時メモリの入れ替えには、一時メモリ中に存在するPCBのうちの一つを選択し、それを主記憶部に書き戻し、その後、新たに必要となったPCBを読み出すことになる。PCBのデータ量は100数十バイトに及ぶため、この一時メモリ入れ替えの時間が性能に与える影響は大きく、この時間を短縮することが課題となっている。
そこで、本発明の目的は、書き戻すデータ量を削減し、プロトコル制御情報の書き戻しに要する時間を短縮することにある。
本発明の通信装置は、第1の記録手段と、第2の記録手段と、コネクションの処理を含むプロトコル処理を行うプロトコル処理手段と、を有し、前記プロトコル処理手段は、コネクション毎に設定される制御情報を、前記第2の記録手段から前記第1の記録手段に転送し、コネクションの処理に応じて、前記第1の記録手段に記録された制御情報の一部分を更新し、前記第1の記録手段において更新された制御情報の前記一部分を選択し、選択された制御情報の前記一部分を、前記第1の記録手段から前記第2の記録手段に書き戻すことを特徴とする。
本発明によれば、書き戻すデータ量を削減でき、プロトコル制御情報の書き戻しに要する時間を短縮することが可能となり、結果としてプロトコル処理性能を向上させることができる。
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
<第1の実施形態>
先ず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態に係るプロトコル処理装置10の構成を示すブロック図である。図1において、100はプロセッサであり、アプリケーションやOS、デバイスドライバ等の一般的なソフトウェアを実行する。101は、TCPプロトコル処理をプロセッサ100からオフロードするTOE(通信装置)であり、この後の説明はTOE101を中心に行う。102は、バスであり、プロセッサ100、TOE101及び主記憶部(第1の記録媒体)103間を接続する。
主記憶部103は、プロセッサ100が実行するプログラムとその作業領域の他、TOE101が利用するデータ、TOE101の作業領域、及び、プロセッサ100とTOE101との通信用領域等が置かれる。
104は、イーサネット(登録商標)のMAC(データリンク層)及びPHY(物理層)であり、TOE101から制御され、TOE101との間でイーサネット(登録商標)フレームの単位でやりとりを行う。105は、イーサネット(登録商標)であり、図示されないスイッチ、ハブ、ルータ等を介して、他のネットワーク機器とMAC/PHY104との接続を可能にする。
図2は、TOE101及び主記憶部103の構成を詳細に示すブロック図である。図2に示すように、TOE101は、プロトコル前後処理部201、プロトコル入出力処理部205及びホストインタフェース209により構成される。
プロトコル前後処理部201において、202は、一時メモリ(第2の記録媒体)である。PCB(プロトコル制御ブロック)は、プロトコル処理を制御するための情報(プロトコル制御情報)で、実際には、INPCBとTCPCBとから成る。一時メモリ202内の203は、PCB記憶領域であり、PCBを複数組保持するためのメモリ上の領域である。PCB記憶領域203に保持されるPCBの組は、主記憶部103内のPCB記憶領域212に保持されるPCBの部分集合である。なお、一時メモリは、TOE101内の不図示のサブプロセッサによって高速アクセス可能なメモリである。また、INPCBは、Internet Protocol Control Blockの略称である。TCPCBは、TCP Protocol Control Blockの略称である。
204は、ソケット設定部である。206、207は、それぞれ出力部、入力部であり、ストリームメッセージ及び制御メッセージをMAC層と入出力する。
208は、制御部であり、PCB記憶領域203に格納されるPCBの内容に従ってプロトコル制御を行うとともに、PCB記憶領域203内のPCBを更新する。なお、制御部208は、本発明のプロトコル処理手段の一適用例となる構成である。
209は、ホストインタフェースであり、バス102に接続されるプロセッサ100(図1)との間の通信を制御する。
主記憶部103において、211は、ソケットテーブルであり、コネクション毎のソケット情報を保持する。212は、PCB記憶領域であり、一時メモリ202内のPCB記憶領域203に保持されるPCBの組を含む、その時点で存在するPCBの全ての組を保持している。
なお、説明の簡単のため、図2には、図1のプロセッサ100、MAC/PHY104及びイーサネット(登録商標)105に相当する構成は図示されていない。
図3は、図2の出力部206、プロトコル前後処理部201、入力部207及び制御部208の詳細な構成を示すブロック図である。
出力部206は、ソケット出力部2061、TCP出力部2062、UDP出力部2063、IP出力部2064及びMAC出力部2065から構成される。
ソケット出力部2061は、ユーザからのストリーム出力を適正な通信チャネルから出力するための機能を備える。
TCP出力部2062は、ユーザからのストリーム出力にTCPヘッダを付けて下層であるIP出力部2064にセグメントを出力する。
UDP出力部2063は、ユーザからのストリーム出力のソケットがUDPソケットである場合は、ストリームにUDPヘッダを付けて下層であるIP出力部2064にデータグラムを出力する。
IP出力部2064は、トランスポート層(TCP出力部2062やUDP出力部2063)からのセグメントやデータグラムを受信してIPパケットとして構成し、IPヘッダを付加する。
MAC出力部2065は、IP層からのIPパケットにMACヘッダを付加してインタフェースにフレーム出力する。
入力部207は、ソケット入力部2071、TCP入力部2072、UDP入力部2073、IP入力部2074及びMAC入力部2075から構成される。
MAC入力部2075は、インタフェースから受けたフレームのMACヘッダの妥当性を検証し、MACヘッダを除去する。
IP入力部2074は、MAC入力部2075から受けたIPパケットの妥当性を検証する。必要であれば、IP入力部2074は、IPフラグメントの再構成等を行い、IPパケットをトランスポート層より上位に解釈可能な形に整形し、IPヘッダを除去した上で適切なトランスポート(UDP又はTCP)層にそのIPパケットのペイロードを出力する。
UDP入力部2073は、IP入力部2074から受けたUDPデータグラムのヘッダの妥当性を検証し、UDPヘッダを除去し、ソケット入力部2071にデータグラムペイロードを出力する。
TCP入力部2072は、IP入力部2074から受けたTCPセグメントのヘッダの妥当性を検証し、TCPヘッダを除去し、セグメントのペイロードをストリームとしてソケット入力部2071に出力する。
ソケット入力部2071は、トランスポート層入力部(UDP入力部2073又はTCP入力部2072)から受けたストリーム又はデータグラムをその通信チャネル(ソケット)から判断して、適切なアプリケーション(ユーザデバイス)に出力する。
制御部208は、TCP制御部2081及びIP制御部2082により構成される。TCP制御部2081は、TCP入力部2072が検出したフラグセグメント受信、内部に持つタイマイベント、ソケット設定部204からのコネクション確立・消去指示を基に、ソケット毎のTCP状態制御等を行う。そして、TCP制御部2081は、TCP出力部2062にセグメント出力の指示を行う。
IP制御部2082は、IP入力部2074からのIPパケット受信イベントを基に、受信IPパケット受信可否判断依頼やIP出力部2064からのストリーム出力時のルーティング問い合わせ依頼の処理を行う。
プロトコル前後処理部201は、ソケット設定部204、TCPCB記憶領域203a及びINPCB記憶領域203bから構成される。
ソケット設定部204は、ユーザデバイスからのSA/DA設定やコネクション確立/消去指示を受信し、ソケットテーブル211の確保・更新・消去を行い、プロトコル入出力処理部205にコネクション確立・消去に伴うフレーム出力を依頼する。
ソケットテーブル211は、複数の通信チャネル(ソケット)各々に対し、そのSAAddr/DAAddr/SAPort/DAPort、通信パラメータ、扱うプロトコルとそのプロトコルに付随するPCBへの参照情報及びトランスポート層のプロトコル種別(UDP/TCP等)を保持する。なお、SAAddr/DAAddr/SAPort/DAPortは、SourceAddress/DestinationAddress/SroucePort/DestinationPortの略である。SAAddrは自局側IPアドレス、DAAddrは相手側IPアドレス、SAPortは自局側ポート番号、DAPortは相手側ポート番号である。
厳密には、SAAddr/DAAddr/SAPort/DAPortは、INPCB記憶領域203bに保存される。この場合、ソケットテーブル211には、該当するソケットがどのINPCBレコードを参照すべきかを示す参照情報を保持することになる。
TCPCB記憶領域203aは、TCPを制御する為に各通信チャネル(ソケット)毎にTCPコネクションの状態や必要なパラメータを保存する。
INPCB記憶領域203bは、IPを制御する為に各通信チャネル(ソケット)毎にSAAddr/DAAddr/SAPort/DAPortやTTL/TOSやオプション等を保存する。
なお、図2のPCB記憶領域203は、図3のTCPCB記憶領域203aとINPCB記憶領域203bとに相当する。
以下、図2を用いて、プロトコル前後処理部201及びプロトコル入出力処理部205には図3に示した機能ブロックが含まれることを前提に、プロトコル前後処理部201とプロトコル入出力処理部205について説明する。
プロセッサ100上で動作するユーザアプリケーションプログラムからTCPによるストリーム通信が要求されると、プロセッサ100上で動作するOSは、ストリーム入出力に前後し、コネクションDA及びコネクションSAの設定をTOE200に依頼する。
TOE200では、この依頼をプロトコル前後処理部201において受信し、プロトコル前後処理部201の中でもその依頼はソケット設定部204により処理される。ソケット設定部204では、コネクションDA及びコネクションSAに関する設定はソケットテーブル211に保存すべきものと判断し、ソケットテーブル211にコネクションDA及びコネクションSAに関する設定を行う。このとき、このコネクションに対応するPCBが主記憶部103内のPCB記憶領域212に新たに生成され、初期化が行われる。
(1)次に、ユーザアプリケーションは、コネクションの確立指示を行う。TOE200では、この指示についてもプロトコル前後処理部201にてソケット設定部204が受信し、処理を判断する。この際、ソケット設定部204は、主記憶部210内のPCB記憶領域212から該当するPCBを一時メモリ202内のPCB記憶領域203にコピーする。このとき、PCB記憶領域203に空き領域がない場合は、PCB記憶領域203から最も使われる可能性の低い(例えば、最も長い間使われていない)PCBを一つ選択し、前述のコピーに先んじてPCB記憶領域212に書き戻す。
ソケット設定部204は、コネクション確立指示に起因する制御フレームの送信指示をプロトコル入出力処理部205に対して行う。プロトコル入出力処理部205において、このコネクション確立指示は、制御部208により処理される。
制御部208では、コネクション確立においてどの様な制御フレームを送信すべきか判断し、また、その制御フレームを送信することによりプロトコル状態がどのように変化するかを判断し、これをPCB記憶領域203にパラメータとして設定する。この行為は、具体的にはTCPであればSYNセグメントの送信判断とSYNセグメントを送信した場合の状態遷移による状態変数の変更をTCPCB記憶領域203aに設定する行為に該当する。この制御部208の状態変数変更の機能構成が、本発明の更新手段の一適用例となる構成である。
制御部208では、コネクション確立に伴う制御フレーム送信の判断とソケットテーブル211及びPCB記憶領域212、203の設定は行うが、実際のフレーム送信作業は出力部206によって行われる。
制御部208は、制御フレームを送信する必要性を判断すれば、制御メッセージ出力要求を出力部206に送信する。出力部206では、(他の)ストリーム送信の合間をみて、これらの例えばコネクション確立時に必要な制御フレーム送信を行う。
(2)ユーザアプリケーション又はOSカーネルは、SA/DA設定とコネクション確立指示とが終了すれば、ストリームを出力することができる。ストリーム出力指示は、TOE200の中でもプロトコル入出力処理部205内の出力部206が直接受け取る。出力部206内部でも、ストリーム出力指示は、ソケット出力部2061、TCP出力部2062又はUDP出力部2063、IP出力部2064及びMAC出力部2065にて処理される。この際、必要ならばPCB記憶領域203を参照しながら、実際のフレームが作成され、出力される。
この場合、まず、制御部208がソケットテーブル211を参照した結果、必要なPCBが判明する。次に、制御部208は、PCB記憶領域203を参照し、該当するPCBが存在するかどうかを調べる。もし存在しない場合は、制御部208は、主記憶部210内のPCB記憶領域212から該当するPCBをPCB記憶領域203にコピーする。このとき、PCB記憶領域203に空き領域がない場合は、PCB記憶領域203から最も使われる可能性の低い(例えば、最も長い間使われていない)PCBを一つ選択し、前述のコピーに先んじてPCB記憶領域212に書き戻す。
(3)MAC層からストリームフレームを受信した場合は、入力部207がこれを受ける。入力部207内では、MAC入力部2075、IP入力部2074、UDP入力部2073又はTCP入力部2072及びソケット入力部2071にてその受信ストリームフレームを処理し、OSカーネル又はユーザアプリケーションにストリーム入力を行う。この際、特にそのストリームがどの通信チャネル(ソケット)に属するものであるかを判断するために、ソケットテーブル211及びPCB記憶領域203を参照する必要がある。
まず、制御部208がソケットテーブル211を参照した結果、必要なPCBが判明する。次に、PCB記憶領域203を参照し、該当するPCBが存在するかどうかを調べる。もし存在しない場合は、PCB記憶領域212から該当するPCBをPCB記憶領域203にコピーする。このとき、PCB記憶領域203に空き領域がない場合は、PCB記憶領域203から最も使われる可能性の低い(例えば、最も長い間使われていない)PCBを一つ選択し、前述のコピーに先んじてPCB記憶領域212に書き戻す。
ストリーム入出力中には、プロトコル制御のためのフレームをMAC層から受信する可能性があるが、これは、入力部207ではそのヘッダ解析を行う程度にとどめ、プロトコル制御の為の実際の処理は制御部208にて行う。このため、入力部207はプロトコル制御関連フレームを受信すると、制御部208に対して制御メッセージを受信した旨とその種別と解析の結果得られた必要なデータを送信する。制御部208では、この制御メッセージ受信のイベントをトリガにPCB記憶領域203を操作した上で、再び出力部206に対してプロトコル制御の為の制御メッセージ出力を依頼する場合もある。
ユーザアプリケーションによるストリーム入出力が終了すれば、ユーザアプリケーションは、コネクション消去指示を行うがその基本的な処理の流れはコネクション確立指示と同じである。
上述したように、(1)コネクション確立、(2)ストリーム出力及び(3)ストリーム入力のケースでは、PCB記憶領域203に保持されるPCBの一組とPCB記憶領域203に保持されるPCBの一組との間で入れ替えが生じることがある。このとき、PCB記憶領域203に保持されるPCBの一組をまず主記憶部210に書き戻す必要がある。本実施形態においては、毎回全てのPCBを書き戻すことはなく、変更された部分だけを書き戻すようにしている。
具体的には、INPCB記憶領域203bに格納されるデータ(INPCB)を例に挙げると、相手側IPアドレス、相手側ポート番号、自局側IPアドレス、自局側ポート番号を含むが、これらは一つのコネクションに不変の値であるので書き戻すことはない。一方、INPCBには、これ以外にIPオプション、フラグ等、通信中に変更される可能性のあるパラメータも含み、これらは書き戻しの対象になる。
TCPCB記憶領域203aに格納されるデータ(TCPCB)ついては、大きくは送信パラメータ、受信パラメータに分けられる。図4にTCPCBの抜粋を示す。図4で接頭辞snd_から始まるパラメータは送信パラメータ、rcv_から始まるパラメータは受信パラメータである。TCPCBも実装に依存し、コネクション毎に不変のパラメータと可変のパラメータに分離することができる。例えば、図4において、リアセンブルキューへのポインタt_segqは不変であるように実装することが可能である。
上述のように、PCB内の各パラメータは、コネクション毎に不変のパラメータと通信中に更新されるパラメータとに区分される。
本実施形態においては、PCBを上述のように区分して管理する。図5は、一時メモリ202内のPCB記憶領域203におけるPCBの格納状態を模式的に示す図である。
図5に示すように、PCB記憶領域203には、各コネクションに対応するPCBが格納されており、各PCBは、TCPプロトコル処理中において不変のパラメータ部分(不変部)と変更されるパラメータ部分(変数部)とに区別される。なお、一PCBあたり256Byte、後述するパラメータ更新情報がMbitであるため、PCB記憶領域203には、一時メモリ容量/(256Byte+Mbit)の数のPCBが格納可能である。
また、図5においては、PCBのうちの一つについて、コネクション毎に不変なパラメータ、主記憶部103への書き戻し時まで変更のなかったパラメータ、及び、主記憶部103への書き戻し時に変更されたパラメータを区別して表している。これは、説明の便宜のためであり、図5に示す全PCBについて上記3種のパラメータが存在し得る。
ここで、各PCBには、パラメータ更新情報が付加されている。任意の一組のPCBがPCB記憶領域212からPCB記憶領域203にコピーされるとき、当該PCBのパラメータ更新情報はクリアされた状態にある。その後、ソケット設定部204又は制御部208がPCB記憶領域203内に保持される任意のPCBを更新した際、当該PCBのパラメータ更新情報に更新情報ビットがセットされる。この更新情報ビットは、PCBの各パラメータ毎にセットできる値であり、更新情報ビットによって、どのパラメータが更新されたのかを示すことができる。その後、上述の(1)、(2)、(3)の何れかの事象が生じ、当該PCBがPCB記憶領域212に書き戻される場合には、当該PCBの更新情報ビットが参照され、実際に更新されたパラメータのみが選択され、書き戻される。この機能構成が、本発明の選択手段及び制御手段の一適用例となる構成である。
以上のようにして、本実施形態においては、変更された部分だけを一時メモリ203から主記憶部103に書き戻すようにしている。従って、一時メモリ202に格納されるPCBと主記憶部103に格納されるPCBとを入れ替える際の書き込みデータ量を削減でき、一時メモリ入れ替えに要する時間を短縮することが可能となる。その結果、プロトコル処理性能を向上させることができる。
また、主記憶部103への書き込みに要するバス、メモリ帯域を低減でき、その分をシステム内の他の装置に振り分けることができるため、システム全体の処理性能を向上させるとともに、システムの消費電力を低減することが可能となる。
本発明の一適用例として上述した実施形態を説明したが、本発明の要旨を逸脱しない範囲で様々な変更が可能であることはいうまでもない。
例えば、上述した実施形態においては、PCBの各パラメータ毎に更新情報ビットを設ける例を示したが、これに限定するものではない。例えばパラメータをバス転送サイズ、主記憶アクセスサイズに適合するようにいくつかをグルーピングし、各グループ毎に更新情報ビットを設けて管理しても良い。その際には、変更される可能性の高いパラメータを選択的にグループ化するよう構成すれば、より高い効果が得られることは言うまでもない。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。なお、本実施形態に係るプロトコル処理装置の構成は、図1乃至図3に示す構成と同様であるため、その説明は省略する。また、本実施形態に係るプロトコル処理装置は、上述した第1の実施形態に係るプロトコル処理装置の機能を備えているものとする。
一時メモリ202内のPCB記憶領域203に保持されるPCB及び主記憶部210内のPCB記憶領域212に保持されるPCBは、図6に示すように、リオーダリング情報が追加された構成となっている。即ち、本実施形態におけるPCBは、相手側IPアドレス、相手側ポート番号、自局側IPアドレス、自局側ポート番号等の従来のPCBのパラメータの他、リオーダリング情報も含まれる。
TCPプロトコル処理においては、上述したパラメータの他、リオーダリング情報もアクセスの対象となる。リオーダリングとは、TCPプロトコル処理において、順不同で受信したパケットを送信ストリームの順番に並び替える処理である。
TCPプロトコル処理において、送信元から送信されたパケットは、各々が異なる経路を通過して送信先に到着する可能性がある。経路毎にネットワークの状況は異なるため、パケットが送信されてから受信されるまでにかかる時間が大きくなることがあり、パケットは送信元から送信された順番で送信先に到着することがある。よって、送信先では、受信したパケットを送信元が送信した順番に並び替える必要がある。その際、リオーダリング情報は、送信先が受信したパケットを並び替えるために利用される情報であり、受信したパケットが不連続になる箇所をポインタ等で管理するものである。
また、リオーダリング情報は、0個以上、予め定められた個数以下の不連続情報で構成される。本実施形態においては、PCB記憶領域203の容量の制約上、各PCBについて4つまでの不連続情報を保持することを許容している。不連続情報は、TCP入力部2072が受信したパケットが不連続になる位置(不連続開始点)と、その位置から次に受信したパケットの先頭の位置までのサイズ(不連続サイズ)とで構成される。なお、ここでいう位置とは、例えば、受信データを一時的に格納するTCP入力部2072内のバッファメモリの格納位置のことをいう。
入力部207内のTCP入力部2072は、不連続なデータを受信した場合に、PCB記憶領域203内に保持されるPCBのリオーダリング情報に不連続情報を登録する。このTCP入力部2072の機能構成が、本発明の受信手段及び登録手段の一適用例となる構成である。
TCP入力部2072が受信したデータは、送信元から送信された順番でソケット入力部2071へ一定の単位で転送される。即ち、TCP入力部2072は、受信したパケットのシーケンス番号(送信元の送信順番を示す情報)に従って、送信元から送信された順番となるようにパケットの転送順番を入れ換えて、ソケット入力部2071に転送する。このTCP入力部2072の機能構成が、本発明の並び替え手段の一適用例となる構成である。
例えば、図7(a)に示すように、既にパケットa、パケットcを受信した状態で新たにパケットbを受信した場合、パケットa〜cのシーケンス番号からパケットbをどの位置に挿入して転送するのかを判定する。図7(a)に示す例は、シーケンス番号により示される送信元の送信順番が、パケットa、パケットb、パケットcの順番であることを前提としている。従って、TCP入力部2072は、パケットaとパケットcとの間にパケットbを挿入して転送することになる。このとき、不連続情報(不連続開始点1、不連続サイズ1)が参照されることによって、パケットaとパケットcとの間の位置にパケットbが挿入される。また、図7(a)の例においては、パケットaとパケットcとの間にパケットbを挿入することによって、パケットa〜パケットcを連続的に転送できるようになっている。この場合、不連続情報(不連続開始点1、不連続サイズ1)は不要となるため、TCP入力部2072によって削除される。このTCP入力部2072の機能構成が、本発明の第1の削除手段の一適用例となる構成である。
また、図7(b)に示すように、TCP入力部2072は、既にパケットa〜d、パケットfを受信した状態で新たにパケットeを受信した場合、パケットa〜fのシーケンス番号からパケットeをどの位置に挿入して転送するのかを判定する。
図7(b)に示す例は、シーケンス番号により示される送信元の送信順番が、パケットa、パケットb、パケットc、パケットd、パケットe、パケットfの順番であることを前提としている。従って、TCP入力部2072は、パケットdとパケットfとの間にパケットeを挿入して転送することになる。
但し、本実施形態においては、PCB記憶領域203のメモリ容量の制約から一つのPCBに対して4つまでの不連続情報しか設定することができない。よって、TCP入力部2072は、上記パケットの並び替えの結果、5つの不連続情報に対応するパケットのうち、時間的に最も後方に位置するパケットの不連続開始点を示す不連続情報を選択する。即ち、ここでは、送信元から最後に送信されたパケットに対応する不連続情報を選択している。
そして、TCP入力部2072は、リオーダリング情報から選択された不連続情報を削除する。また、削除される不連続情報が示す不連続開始点の後に存在するパケットfも削除する。このTCP入力部2072の機能構成が、本発明の第2の削除手段の一適用例となる構成である。
以上のようにして、本実施形態においては、PCBにリオーダリング情報を含むことで、一時メモリ202の容量制限に基づく制約を守りつつ、TOE101(TCP入力部2072)によるリオーダリング情報へのアクセスの高速化を図ることが可能となる。これにより、TCP受信処理における受信データの並べ替え処理時間が短縮され、その結果、プロトコルスタック処理の高速化が可能になる。
また、本実施形態によれば、リオーダリング情報をPCBと独立して管理する必要がないため、リオーダリング情報を管理するための専用機構を設ける必要がなく、実装規模を縮小させることができる。
本発明の一適用例として上述した実施形態を説明したが、本発明の要旨を逸脱しない範囲で様々な変更が可能であることはいうまでもない。
例えば、上述した実施形態においては、リオーダリング情報が持つ不連続情報の最大数を4としているが、これに限定するものではない。不連続情報の最大数は、一時メモリ202の容量とコストから決定されてもよい。また、本実施形態においては、不連続情報の数が予め決められた数より大きくなる場合に、その数を超える不連続情報と対応する受信データとを削除している。この他にも、データ先頭から最も離れている不連続開始点を示す不連続情報を選択した後、選択された不連続情報を主記憶部103等、他の記録媒体に保持する実施形態も考えられる。この機能構成が、本発明の退避手段の一適用例となる構成である。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているOS等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきCPU等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
本発明の実施形態に係るプロトコル処理装置の構成を示すブロック図である。 TOE及び主記憶部の構成を詳細に示すブロック図である。 図2の出力部、プロトコル前後処理部、入力部及び制御部の詳細な構成を示すブロック図である。 TCPCBの抜粋を示す図である。 不変パラメータと更新パラメータとを管理するためのPCBのデータ構造の一例を示す図である。 リオーダリング情報を含むPCBのデータ構造と受信データとの関係を示す図である。 リオーダリング情報を含むPCBのデータ構造と受信データとの関係を示す図である。
符号の説明
10 プロトコル処理装置
100 プロセッサ
101 TOE
102 バス
103 主記憶部
104 MAC/PHY
105 イーサネット(登録商標)
201 プロトコル前後処理部
202 一時メモリ
203、212 PCB記憶領域
204 ソケット設定部
205 プロトコル入出力部
206 出力部
207 入力部
208 制御部
209 ホストインタフェース
211 ソケットテーブル
2061 ソケット出力部
2062 TCP出力部
2063 UDP出力部
2064 IP出力部
2065 MAC出力部
2071 ソケット入力部
2072 TCP入力部
2073 UDP入力部
2074 IP入力部
2075 MAC入力部
2081 TCP制御部
2082 IP制御部

Claims (9)

  1. 通信装置であって、
    第1の記録手段と、
    第2の記録手段と、
    コネクションの処理を含むプロトコル処理を行うプロトコル処理手段と、を有し、
    前記プロトコル処理手段は、コネクション毎に設定される制御情報を、前記第2の記録手段から前記第1の記録手段に転送し、コネクションの処理に応じて、前記第1の記録手段に記録された制御情報の一部分を更新し、前記第1の記録手段において更新された制御情報の前記一部分を選択し、選択された制御情報の前記一部分を、前記第1の記録手段から前記第2の記録手段に書き戻すことを特徴とする通信装置。
  2. 前記第1の記録手段は、前記第2の記録手段から転送された制御情報の一部分である複数のパラメータのそれぞれが更新されたか否かを示す更新情報を記録し、前記プロトコル処理手段は、複数のパラメータの1つの更新に応じて、更新されたパラメータに対応する更新情報を書き換え、更新されたパラメータを第2の記録手段に転送するために、更新情報に応じて、更新されたパラメータを選択することを特徴とする請求項1に記載の通信装置。
  3. 前記第1の記録手段は、前記第2の記録手段から転送された制御情報の一部である複数のパラメータについて、更新される可能性のある第1のパラメータ群と更新されない第2のパラメータ群とに分けて記録し、前記第1のパラメータ群について、それぞれが更新されたか否かを示す更新情報を記録し、前記プロトコル処理手段は、前記第1のパラメータ群のそれぞれの更新に応じて、更新された第1のパラメータに対応する更新情報を書き換え、更新情報に応じて、更新された前記第1のパラメータを選択することを特徴とする請求項1に記載の通信装置。
  4. コネクション毎に設定される制御情報は、通信の要求に応じて、前記第2の記録手段に生成され、前記プロトコル処理手段は、コネクション確立指示に応じて、制御情報を、前記第2の記録手段から前記第1の記録手段に転送することを特徴とする請求項1に記載の通信装置。
  5. 前記プロトコル処理手段は、MAC層からフレームを受信した場合、前記第2の記録手段を参照して、どの制御情報を利用するか判断し、利用する制御情報を前記第2の記録手段から前記第1の記録手段に転送することを特徴とする請求項1に記載の通信装置。
  6. 前記プロトコル処理手段は、送信された順番と異なる順番で受信されたデータを送信された順番に並び替えるための情報を、前記第1の記録手段に記録することを特徴とする請求項1に記載の通信装置。
  7. 記プロトコル処理手段は、コネクションの処理に応じて、前記第1の記憶手段に記憶された第1の制御情報の前記一部分を更新し、前記第1の記録手段が第2の制御情報を記録し、前記第2の記録手段が前記第1の制御情報と前記第2の制御情報とを記録するように、前記第1の記録手段に記録された第1の制御情報の前記一部分と前記第2の記録手段に記録された第2の制御情報を入れ換え、送信された順番と異なる順番で受信されたデータを送信された順番に並び替えるための情報を、前記第1の記録手段に記録することを特徴とする請求項1に記載の通信装置。
  8. 記プロトコル処理手段は、に受信したデータより前に送信された未受信のデータを示すデータを前記第1の記録手段に記録し、複数の未受信のデータの一部を、複数の未受信のデータが送信された順番に応じて選択し、複数の未受信のデータの選択された一部を示すデータを、前記第1の記録手段から削除することを特徴とする請求項1に記載の通信装置。
  9. 記プロトコル処理手段は、受信のデータを示すデータを前記第1の記録手段に記録し、複数の未受信のデータの一部を、複数の未受信のデータが送信された順番に応じて選択し、複数の未受信のデータの選択された一部を示すデータを、前記第2の記録手段に記録することを特徴とする請求項1に記載の通信装置。
JP2006334787A 2006-12-12 2006-12-12 通信装置 Expired - Fee Related JP4921142B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006334787A JP4921142B2 (ja) 2006-12-12 2006-12-12 通信装置
US11/952,217 US7720979B2 (en) 2006-12-12 2007-12-07 Communication apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006334787A JP4921142B2 (ja) 2006-12-12 2006-12-12 通信装置

Publications (3)

Publication Number Publication Date
JP2008148133A JP2008148133A (ja) 2008-06-26
JP2008148133A5 JP2008148133A5 (ja) 2010-02-04
JP4921142B2 true JP4921142B2 (ja) 2012-04-25

Family

ID=39499719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006334787A Expired - Fee Related JP4921142B2 (ja) 2006-12-12 2006-12-12 通信装置

Country Status (2)

Country Link
US (1) US7720979B2 (ja)
JP (1) JP4921142B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5353278B2 (ja) 2009-02-06 2013-11-27 富士通株式会社 通信装置
JP2010278897A (ja) * 2009-05-29 2010-12-09 Renesas Electronics Corp 通信データ処理回路及び通信データ処理方法
JP5568164B2 (ja) * 2013-05-27 2014-08-06 株式会社東芝 通信装置及びそのプログラム
JP6351363B2 (ja) * 2013-08-01 2018-07-04 キヤノン株式会社 通信装置およびそのデータ処理方法
EP3613004A1 (en) * 2017-04-19 2020-02-26 Sensormatic Electronics, LLC Systems and methods for providing a security tag with synchronized display
CN110958213B (zh) 2018-09-27 2021-10-22 华为技术有限公司 处理tcp报文的方法、toe组件以及网络设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908823A (en) * 1988-01-29 1990-03-13 Hewlett-Packard Company Hybrid communications link adapter incorporating input/output and data communications technology
US5537417A (en) * 1993-01-29 1996-07-16 International Business Machines Corporation Kernel socket structure for concurrent multiple protocol access
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
JPH11313126A (ja) 1998-04-28 1999-11-09 Matsushita Electric Ind Co Ltd 通信制御データ処理装置および処理方法
JP2001333075A (ja) * 2000-05-23 2001-11-30 Canon Inc ノード装置、ネットワークおよびネットワーク制御方法
JP4068798B2 (ja) * 2000-10-31 2008-03-26 株式会社日立製作所 記憶サブシステム及びi/oインタフェースの制御方法ならびに情報処理システム
US7734812B2 (en) * 2002-06-06 2010-06-08 International Business Machines Corporation Method and apparatus for processing outgoing internet protocol packets
JP4429703B2 (ja) * 2003-11-28 2010-03-10 株式会社日立製作所 ディスクアレイ装置及びディスクアレイ装置の制御方法
JP2006072440A (ja) * 2004-08-31 2006-03-16 Hitachi Ltd ストレージ装置およびそのデータ移行方法
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
JP2006256105A (ja) * 2005-03-17 2006-09-28 Seiko Epson Corp 印刷装置及びデータ処理方法
JP2006276973A (ja) * 2005-03-28 2006-10-12 Nec Corp 演算装置
JP4501159B2 (ja) * 2005-03-30 2010-07-14 株式会社デンソー 自動車用制御ユニット

Also Published As

Publication number Publication date
JP2008148133A (ja) 2008-06-26
US20080141009A1 (en) 2008-06-12
US7720979B2 (en) 2010-05-18

Similar Documents

Publication Publication Date Title
JP5470828B2 (ja) データ配信用通信装置、及びデータ配信システム
JP4638658B2 (ja) オフロードされたネットワークスタックの状態オブジェクトをアップロードする方法及びそれを同期する方法
US9071529B2 (en) Method and apparatus for accelerating forwarding in software-defined networks
US7239635B2 (en) Method and apparatus for implementing alterations on multiple concurrent frames
JP4504977B2 (ja) オフロードユニットを使用したtcp接続のためのデータ処理
JP5022691B2 (ja) 通信装置、その制御方法及びプログラム
JP4921142B2 (ja) 通信装置
US10237130B2 (en) Method for processing VxLAN data units
KR100798926B1 (ko) 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법
US9304939B2 (en) Method and multi-core communication processor for replacing data in system cache
JP2009093348A (ja) 情報処理装置、及び情報処理システム
US20060221824A1 (en) Storage system and data processing method
JP5094482B2 (ja) 処理装置及びその処理方法
US20110032952A1 (en) Two stage internet protocol header compression
US11546261B2 (en) Congestion control method and related device
JP2007129452A (ja) 通信装置及び通信方法
JP4040045B2 (ja) データ転送装置
JP2009284028A (ja) 受信装置及びその方法、通信システム及びその方法、送信装置及びその方法、プログラム、並びに、記録媒体
JP5300355B2 (ja) ネットワークプロトコル処理装置及びその処理方法
JP4638849B2 (ja) 機能分散型通信装置および経路制御方法
KR100670817B1 (ko) IXDP2851에서의 IPSec 엔진 구현 방법 및 장치
JP2017163346A (ja) 通信装置、方法、及びプログラム
JP4443266B2 (ja) パケット更新装置
JP2006032995A (ja) 通信支援装置
CN112653631A (zh) 一种基于CoLoR的缓存功能优化的边界路由器

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110603

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: 20120131

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120202

R151 Written notification of patent or utility model registration

Ref document number: 4921142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees