JP2009218743A - Ipプロトコル処理装置及びその処理方法 - Google Patents

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

Info

Publication number
JP2009218743A
JP2009218743A JP2008058703A JP2008058703A JP2009218743A JP 2009218743 A JP2009218743 A JP 2009218743A JP 2008058703 A JP2008058703 A JP 2008058703A JP 2008058703 A JP2008058703 A JP 2008058703A JP 2009218743 A JP2009218743 A JP 2009218743A
Authority
JP
Japan
Prior art keywords
bit
bit table
reassembly
processing
packet
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.)
Granted
Application number
JP2008058703A
Other languages
English (en)
Other versions
JP2009218743A5 (ja
JP5094482B2 (ja
Inventor
Eiji Imao
英司 今尾
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 JP2008058703A priority Critical patent/JP5094482B2/ja
Priority to US12/394,435 priority patent/US7969977B2/en
Publication of JP2009218743A publication Critical patent/JP2009218743A/ja
Publication of JP2009218743A5 publication Critical patent/JP2009218743A5/ja
Application granted granted Critical
Publication of JP5094482B2 publication Critical patent/JP5094482B2/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/166IP fragmentation; TCP segmentation

Abstract

【課題】 フラグメントされたIPパケットのリアセンブル処理を高速化し、並行処理にかかるメモリコストを減少させる。
【解決手段】 IPプロトコル処理装置がフラグメントされたIPパケットの受信状況を管理するビットテーブルに基づいてIPパケットのリアセンブルを行う。リアセンブルを行う際に、複数のビットテーブルを記憶する第1の記憶部から複数のビットテーブルの一部を記憶する第2の記憶部へそのリアセンブルの対象となるビットテーブルを転送する。第2の記憶部へ転送されたビットテーブルに基づいて、フラグメントされたIPパケットをリアセンブル処理する。
【選択図】 図5

Description

本発明は、IP(Internet protocol)通信を利用するアプリケーション機器や、IP通信制御機器におけるプロトコル処理に関し、特に、複数のフラグメントパケットに分割して送信されたIPパケットの受信技術に関する。また、IPプロトコル処理の高速化をTOE(TCP/IP Offload Engine)技術によって実現する組み込み機器に好適である。
プロトコル処理の中でプロセッサ処理量が大きい処理の1つにIPリアセンブルがある。IP通信では、送信元或いは伝送経路上で1つのIPパケットを複数のIPパケットに分割して転送し、受信側で分割元の1つのパケットを復元して受信するメカニズムがある。1つのIPパケットを複数のIPパケットに分割して転送する処理はIPフラグメント(IP Fragmentation)と呼ばれている。一方、分割された複数のIPパケットを受信し、元のIPパケットに復元する処理はIPリアセンブル(IP Reassembly)と呼ばれている。IPリアセンブルは、RFC791に仕様が公開されている。
また、IPリアセンブルには、RFC791に記載の処理方法と、RFC815に記載の処理方法の2つのアルゴリズムが知られている。本発明は、前者の方法に関与するものであるので、前者の方法について紹介しておく。尚、ここでは、前者のIPリアセンブル処理方法を、ビットマップテーブル方式と呼称する。
ビットマップテーブル方式によるIPリアセンブルでは、受信側が送信元IPパケットのペイロードデータの8オクテット分を1ビットに割り当てたビットテーブルを用意する。IPデータグラムは最大長が65535オクテットであるため、用意するビットテーブルは、約8キロビットの長さが必要である。そして、到着する各フラグメントパケットのペイロードデータを保存しながら、フラグメントデータのオフセット位置と長さに相当する、該ビットテーブルのビットをセットしていくことで、フラグメントデータの受信状況を管理する。その後、送信元のIPパケットのペイロード長さに相当するビットテーブル上のビットが全てセットされると、分割元のIPパケットの再組み立てに必要なデータが揃ったことを意味し、IPリアセンブル処理の完了となる。
近年、ネットワーク通信が急速に高速化しており、既に民生用にギガビットネットワーク対応のイーサネット(登録商標)製品が普及している。更に、現在IEEE802.3ワーキンググループにおいて40メガビット/秒、或いは100メガビット/秒の伝送速度を実現可能な規格が標準化されようとしている。こうしたネットワーク通信の高速化に伴い、IP通信を利用するアプリケーションも送受信するデータ量も増大しており、通信端末機器にとって通信プロトコル処理にかかる負荷が高くなってきている。
従来、IP通信のプロトコル処理は、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルスタックというソフトウェアで実現されることが多い。IP通信機能を有する組み込み機器においても、IPプロトコル処理をソフトウェアで実装する場合が多い。しかし、小規模な組み込み機器では、製造コストや電力消費量の面で有利である、動作周波数が低いCPUを搭載することが多いため、必要なソフトウェアによるプロトコル処理のプロセッサ負荷が高くなってしまう。
そのため、従来の処理では高い通信性能を実現することが困難になってきている。また、通信処理にかかる処理負荷が原因で、アプリケーション処理にCPUリソースを十分に割り当てられないことも問題となる。
このような問題への対策として、プロセッサの通信処理負荷を軽減し、高速なIP通信を実現するTOE(TCP/IP Offload Engine)と総称される技術がある。このTOEとは、アプリケーションを実行するプロセッサとは別の処理手段により、TCP/IPプロトコル処理の高速化を図る技術である。
TOEでは、プロトコル処理全体又は一部をハードウェア処理(集積回路)で実行して高速化するケースが多い。また、組み込み機器においては、TOEをLSI化してチップに内蔵する実装も行われている。
特開2007−274056号公報
上述したビットマップテーブル方式のIPリアセンブルでは、分割前のIPパケットの最大パケットサイズに対応するために必要なテーブルサイズは1Kバイト(8192バイト)である。また、IPリアセンブルの同時並行処理数と同数のビットマップテーブルが必要となる。通信の高速化により単位時間あたりの受信IPパケット数が増加すると、並行処理するIPリアセンブルも増加し、ビットマップテーブルに必要なメモリサイズが増加してしまう。
一方、上述のTOE技術によってハードウェア処理でIPリアセンブルの高速化を実現するためには、アクセス遅延が小さいオンチップメモリ上にビットテーブルを形成することが望ましい。しかしながら、並行処理可能な数に見合う大きなメモリ容量が必要となり、メモリコストが高価であるオンチップメモリでは、メモリコストが高くなってしまう。一方、小容量のメモリでは並行処理可能な数に制限が生じることが問題となる。
このビットデータでフラグメントデータの到着状況を管理する先行技術として、例えば特許文献1がある。特許文献1では、IPフラグメントの分割サイズを狭い範囲に限定することで、フラグメントパケットに暗黙的な断片番号を付与し、フラグメントパケットの受信状況の管理を単純化して高速化している。
この方法では、予めIPパケットを分割するサイズを限定しているので、フラグメントパケットの受信状況を管理するビット幅を8Kビットよりも小さくすることが可能であるため、IPリアセンブルに必要なメモリサイズを縮小することができる。しかしながら、分割サイズを狭い範囲に制限するため、任意サイズのフラグメントパケットのIPリアセンブルを実行するには不適である。
本発明は、フラグメントされたIPパケットのリアセンブル処理を高速化し、並行処理にかかるメモリコストを減少させることを目的とする。
本発明は、フラグメントされたIPパケットの受信状況を管理するビットテーブルに基づいて前記IPパケットのリアセンブルを行うIPプロトコル処理装置であって、複数のビットテーブルを記憶する第1の記憶手段と、前記複数のビットテーブルの一部を記憶している第2の記憶手段と、前記ビットテーブルに基づいて前記リアセンブルを行う際に、前記第1の記憶手段から第2の記憶手段へ前記リアセンブルの対象となるビットテーブルを転送する転送手段と、前記転送手段で前記第2の記憶手段へ転送されたビットテーブルに基づいて前記フラグメントされたIPパケットをリアセンブル処理する処理手段と、を有することを特徴とする。
また、本発明は、複数のビットテーブルを記憶する第1の記憶手段と、前記複数のビットテーブルの一部を記憶する第2の記憶手段とを有し、フラグメントされたIPパケットの受信状況を管理するビットテーブルに基づいて前記IPパケットのリアセンブルを行うIPプロトコル処理装置の処理方法であって、前記ビットテーブルに基づいて前記リアセンブルを行う際に、前記第1の記憶手段から第2の記憶手段へ前記リアセンブルの対象となるビットテーブルを転送する転送工程と、前記転送手段で前記第2の記憶手段へ転送されたビットテーブルに基づいて前記フラグメントされたIPパケットをリアセンブル処理する処理工程と、を有することを特徴とする。
本発明によれば、フラグメントされたIPパケットのリアセンブル処理を高速化し、並行処理にかかるメモリコストを減少させることができる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
[第1の実施形態]
図1は、第1の実施形態におけるネットワーク通信装置の構成の一例を表すブロック図である。図1に示すように、CPU102、ROM103、RAM104がシステムバス101に接続されている。ここで、CPU102は、ROM103に格納されたシステムプログラムをRAM104に読み出して実行する。RAM104は、システムプログラムを実行時に使用される主記憶装置である。
105に示すブロックは、本発明に係るIPプロトコル処理装置であり、システムバス101に接続されている。IPプロトコル処理装置105は、CPU102によって実行されるアプリケーションの通信に必要なTCP/IPプロトコル処理、及びネットワーク117へのデータ送受信を実行する。
IPプロトコル処理装置105において、バスブリッジ回路107は、内部のローカルバス106をシステムバス101に接続するもので、ローカルバス106とシステムバス101間のデータ転送が可能である。そして、IPプロトコル処理装置105と、CPU102、ROM104、RAM104で構成される外部のシステムとは、それぞれのバス回路が相互に接続されて通信データや制御データの入出力をバス転送によって行える仕組みになっている。
また、TCP/IPプロトコル処理を実行するための2つのローカルプロセッサ108、109、ローカルRAM110、データ転送を行うためのDMAコントローラ(DMAC)111がローカルバス106に接続されている。更に、IPリアセンブルのビットテーブル処理を実行するリアセンブルビットマップコントローラ(RBMC)112、プロトコル処理のタイマー処理に利用する通信タイマー113がローカルバス106に接続されている。更に、プロトコル処理の様々な管理情報の格納と検索を行うための連想メモリであるCAM(Content Addressable Memory)114がローカルバス106に接続されている。更に、暗号化通信処理に必要な暗号化/復号化の計算処理を実行する暗号処理部115、ネットワーク117に対してデータ送受信を行う通信制御部116がローカルバス106に接続されている。
IPプロトコル処理装置105は、IPプロトコル処理を複数のプロセッサ処理による並列処理で実行する。更に、111から115の各ハードウェア処理部を利用し、TCP/IPプロトコルのパケット送受信と、送信フロー制御や輻輳制御、通信エラー制御、更にIPsecやSSL/TLS等の暗号通信プロトコル処理を実行する。
また、ローカルプロセッサ108、109が実行するプログラムはROM103に保存されており、IPプロトコル処理装置105の起動時にローカルRAM109上にコピーされる。ローカルプロセッサ108、109は、ローカルRAM109からプログラムを読み出して実行する。
尚、図1では、2個のローカルプロセッサ108、109が図示されているが、ソフトウェア処理を実行するプロセッサの個数は2つに限定されるものではない。
DMAC111は、IPプロトコル処理装置105の内部又は外部のメモリデバイスやハードウェアモジュール間における送受信データや制御データの転送処理を行う。RBMC112は、ビットマップ方式(RFC791)のIPリアセンブルアルゴリズムで使用するビットテーブルのビット操作処理や、RAM104との間でビットテーブルのデータ転送を行う。
通信タイマー113は、IPリアセンブルにおけるタイムアウト時間の計測や、TCPプロトコル通信における再送処理、確認応答送信などの各種タイマーで必要な時間計測のように、IPプロトコル処理における様々なタイムアウト処理に利用される。暗号処理部115は、IPSecやSSL(Secure Socket Layer)/TLS(Transport Layer Security)などの暗号通信プロトコル処理で処理負荷が大きい暗号化/復号化の演算処理を実行する。
通信制御部116は、ネットワーク117のMAC処理(伝送メディア制御処理)や、フレームデータの送受信を行う機能が実装される。ネットワーク117は、例えばイーサネット(登録商標)のような有線ネットワークであるが、無線ネットワークや、光ファイバーネットワーク等であっても良い。
ここで、RBMC112の実施構成の一例を、図2を参照して説明する。図2は、第1の実施形態におけるRBMCの構成の一例を表すブロック図である。
RBMC112は、レジスタ201、リソース管理部202、内部メモリ(SRAM)203、ビット処理部204、DMA機能部205で構成される。まず、レジスタ201はRBMC112の設定や起動などの制御インタフェースであり、複数のレジスタセットである。そして、このレジスタ201に対してローカルプロセッサ108、109が読み書きを行い、RBMC112を設定、制御する。
リソース管理部202は、複数のビットテーブルのデータ管理を行う。管理情報データは、図1に示すローカルRAM109に記憶される。ビット処理部204は、内部メモリ203に格納されたビットテーブルデータの任意の範囲に対してビット操作処理を行う。このビット操作処理には、任意長のビット列に対して全ビットを1にセット、全ビットを0にクリア、値が1であるビット数のカウント、全ビットを1にセットしたときに0から1に変化したビット数のカウントが含まれる。
内部メモリ203は、この例ではアクセス遅延が非常に小さいメモリとして実装される。RBMC112は、内部メモリ203上にビット処理部204がビット操作処理を行うビットテーブルデータを一時格納する。ビット処理部204のビット操作処理において、内部メモリ203に対してデータの読み書きが実行される。
DMA機能部205は、リソース管理部202によって制御され、内部メモリ203とRBMC112の外部にあるメモリとの間でビットテーブルのデータ転送を実行する。
以上の構成において、IPリアセンブルのビットテーブルをRAM104に確保する。そして、RBMC112がビットテーブルのビット操作処理を行うときには対象のビットテーブルデータを内部メモリ203に一時格納し、一時格納したビットテーブルデータに対してビット操作処理を実行する。
ここで、IPリアセンブルのビットテーブルのビット操作処理を、図3を参照して説明する。IPリアセンブルで使用するビットテーブルは、先頭ビットから順番に各ビットが分割元IPパケットのペイロードの先頭から8オクテット毎にマッピングされる。即ち、各ビットは、IPリアセンブルによって対応する8オクテットが受信済みであるか否かを記憶しておくフラグである。例えば、図3に示すビットテーブル301で、値が1であるビットが対応する8オクテットは、既に受信済みであることを表している。
IPリアセンブルでは、受信したフラグメントパケットのIPヘッダの内容から、そのフラグメントパケットが運ぶフラグメントデータについて、分割前のIPパケットのペイロードにおけるフラグメントオフセットとフラグメントサイズを得ることができる。この情報を元に、受信したフラグメントデータが対応するビット範囲の各ビットを、受信済みを表す1に書き込んでいく。また、最後尾のフラグメントパケットを受信すると、分割元のIPパケットの全長を得ることができ、ビットテーブル上で必要なビット幅が確定する。従って、分割元IPパケットのペイロード長分のビット列が全て値1で埋まったとき、分割元のIPパケットを構成する全てのフラグメントデータを受信したことになる。
図3に示す例では、301のビットテーブルで、303は受信したフラグメントデータの分割元IPパケットペイロードにおけるオフセット位置を表し、304はフラグメントデータに対応するビット幅を表している。ここで、ビットテーブルはフラグメントされたIPパケットの受信状況を管理するためのテーブルである。
ビット処理部204は、フラグメントデータを受信すると、303の位置から304の幅だけ各ビットに1を書き込む。その結果、301のビットデータは302に示すように更新される。305に表す部分は、新規に0から1に変化したビットであることを表している。ビット処理部204はこのようなビット操作処理を実行する。
また、ビット処理部204は値が0から1に変化したビット数をカウントし、RBMC112のレジスタ201に新規に受信したフラグメントデータサイズを設定する。
上述したように、ビット処理部204は、アクセス遅延が小さい内部メモリ203上のデータに対してビット操作処理を行う。これにより、IPリアセンブルを高速化することができるため、内部メモリ203は、例えばSRAMを実装することが考えられる。
しかし、アクセス遅延の小さい内部メモリ203に、並行処理する全てのIPリアセンブルのビットテーブルを置くことは、並行処理可能なIPリアセンブル数に応じたメモリ容量が必要となり、メモリコストが非常に高くなってしまう。
従って、全てのビットテーブルはRAM104に確保し、IPリアセンブルで処理対象となるビットテーブルデータだけを内部メモリ203にコピーし、一時格納することで、内部メモリ203のメモリコストを抑えることができる。
第1の実施形態では、並行処理する各IPリアセンブルに対してIPリアセンブルIDという識別子を付与し、ビットテーブルに対応付けて管理する。そして、RAM104上のビットテーブルのうち、ビット操作処理の実行頻度が高いビットテーブルを内部メモリ203に一時格納しておくようにする。
図4は、IPリアセンブルのビットテーブルをIPリアセンブル識別子で管理する状態を示す図である。この例では、ある時点において、RAM104上に処理途中であるN個のビットテーブルが確保されており、内部メモリ203には4個のビットテーブルが一時格納されている状態を示している。
図4に示すように、RAM104には、405〜411に示すN個のビットテーブルが任意のメモリアドレスに配置されている。このうち、IPリアセンブルIDが1、3、M、N−1であるビットテーブル406、408、409、411が、それぞれ内部メモリ203の401、402、403、404に示す場所に一時格納されている。
即ち、この内部メモリ203へのデータの格納方法は、ビットテーブルサイズを単位とするフルアソシエイティブ方式である。図4に示す内部メモリ203の使用例では、ある時点において、IPリアセンブルIDが1、3、M、N−1であるビットテーブルが内部メモリ203に置かれている。従って、その時点から次に受信するフラグメントパケットが、これらのIPリアセンブルの何れかであれば、RAM104から内部メモリ203にビットテーブルを転送する必要がない。
しかしながら、内部メモリ203にビットテーブルを格納していないIPリアセンブルのフラグメントパケットを受信した場合、処理対象であるビットテーブルをRAM104から内部メモリ203にコピーする必要がある。また、例えば内部メモリ203にビットテーブルを格納する空きが無い場合、一時格納しているビットテーブルの何れかをRAM104に書き戻し、空いた場所に次の処理対象となるビットテーブルを一時格納する必要が生じる。
そのため、RBMC112内のリソース管理部202において、リアセンブルID毎にビットテーブルの管理を行う。リソース管理部202がIPリセンブルID毎に保持するビットテーブル管理情報70は、次の701〜710を含む。701はリアセンブルIDである。702はこのビットテーブルを使用するIPリアセンブルにおいて最後に処理したIPリアセンブルの処理時刻の記録である。703は最後に処理したIPリアセンブルの時間間隔(到着間隔)の記録である。704はRAM104にあるビットテーブルのメモリアドレスである。705は内部メモリ203にビットテーブルが一時格納されているか否かを示すフラグである。706〜710は内部メモリ203にビットテーブルを一時格納しているときに使用するパラメータである。
706は内部メモリ203上のビットテーブルデータのアドレスであり、707はその内部メモリ203上でのビットテーブルデータのサイズを示す。708はビットテーブルデータが内部メモリ203で変更されたかを示すフラグである。そして、709はビットテーブルの変更されたビット範囲の先頭位置を意味するオフセットアドレスであり、710は変更範囲を示すデータサイズである。各ビットテーブルの管理情報をローカルRAM110に保存し、RBMC112のリソース管理部202によって更新される。
リソース管理部202は、RAM104からビットテーブルデータを転送して内部メモリ203に格納するとき、ビットテーブルデータを一時格納する空きがあるか否かを、ビットテーブル管理情報をチェックして判定する。また、空きがない場合には、ビットテーブル管理情報にある最後に処理したIPリアセンブルの時間間隔703を比較し、最も長い到着間隔であるIPリアセンブルのビットテーブルを選択する。選択されたビットテーブルは内部メモリ203からRAM104にデータを書き戻し、内部メモリ203に空き領域を作成する。
このようにして、IPリアセンブルでビットテーブルを内部メモリ203に一時格納していない場合にも、RAM104から内部メモリ203にビットテーブルデータを転送して一時格納することを実行する。
尚、内部メモリ203及びRAM104間のデータ転送は、RBMC112内のDMA機能部205が実行する。
次に、IPプロトコル処理装置105で実行されるIPリアセンブルの全体的な処理の流れを、図5を参照して説明する。図5は、IPリアセンブルにおけるDMAC111、RBMC112、ローカルプロセッサ108の時間的な処理シーケンスを示す図である。尚、図5に示す例は、受信IPパケットがフラグメントパケットであることを前提としたシーケンスである。
通信制御部116がIPパケットを受信すると、はじめにDMAC111がS501で受信IPパケットの転送を開始し、通信制御部116からRAM104へ転送が行われる。また、受信IPパケットの先頭からIPヘッダまでの部分に相当するサイズのデータはRAM104に転送されると共に、ローカルRAM110へも同時転送される。そして、S502でIPパケットの転送が、先頭のMACヘッダ(リンク層フレームのヘッダ)とIPヘッダ部分に相当するデータサイズまで終わると、ローカルプロセッサ108へ受信通知(S503)を行う。更に、DMAC111は通知を行った後も、S504で引き続きペイロード部分の転送を続行する。
一方、ローカルプロセッサ108は、S505でDMAC111からの通知を受けて、IPパケットの受信処理を開始する。即ち、ローカルプロセッサ108は受信IPパケット全体がRAM104に転送されるのを待たずに、IPパケットの受信処理を開始する。次に、ローカルプロセッサ108はS506でローカルRAM110に転送されたMACヘッダとIPヘッダの内容を解析する。ここで、宛先MACアドレス、宛先IPアドレスが受信可能であるかチェックする。更に、S506でIPパケットヘッダの内容に基づきフラグメントパケットであるかを判定する。
次に、S506でフラグメントパケットであることが判定されると、S507で、その受信フラグメントパケットを対象とするIPリアセンブルのリアセンブルIDの検索処理を行う。続いて、S508でRBMC112に対してS507で検索されたリアセンブルIDに対応するビットテーブルのプリロードを起動(S509)する。このプリロードは、処理対象のビットテーブルデータを内部メモリ203に一時格納する処理である。
起動指示により、RBMC112は、S510で内部メモリ203にそのリアセンブルIDのビットテーブルが格納されているかを調べ、格納されていない場合はRAM104に確保されているビットテーブルを一時格納する。即ち、S510でRAM104と内部メモリ203の間でビットテーブルのデータ転送を行う。
一方、ローカルプロセッサ108は、RBMC112のプリロードを起動した後、その処理完了を待たずに、S511で受信IPパケット(即ちフラグメントパケット)のIPヘッダチェックサムの検証を実行する。IPヘッダのチェックサムが正しいならば、IPヘッダの内容が正しいので、そのIPパケットは受信可能であると判定する。
次に、S512でRBMC112に対して、ビットテーブルへのビット操作処理を起動(S513)する。そして、ローカルプロセッサ108は、S514のビット操作処理の完了を待機する。
起動指示により、RBMC112は、S514で内部メモリ203に一時格納しておいたビットテーブルデータに対するビット操作処理を実施する。この処理でビット値を0から1に変更したビット数分のデータサイズ、即ち新規に受信したフラグメントサイズを、レジスタ201に設定し、処理完了を通知(S515)する。
ここで、ローカルプロセッサ108が通知を受信すると、IPリアセンブル処理で新規に受信したフラグメントデータサイズを得ることができる。
一方、DMAC111がS516で、受信IPパケットの全体をRAM104に転送し終えると、ローカルプロセッサ108に転送完了を通知(S517)する。これにより、ローカルプロセッサ108がS518でDMA転送完了通知を受信すると、ローカルプロセッサ108はこのIPパケットの受信処理を終了する。
以上がIPプロトコル処理装置105で実行されるIPリアセンブルの全体的な処理の流れである。
第1の実施形態では、S511でIPヘッダチェックサム検証後に受信IPパケットが受信可能であるかを判定している。しかし、その判定後のS514でIPリアセンブルのビットテーブルのビット操作処理に至った段階で、RBMC112が内部メモリ203にビットテーブルデータを格納するのではない。前段のS508でRBMC112にビットテーブルのプリロードを起動している。つまり、ローカルプロセッサ108がS511でIPヘッダチェックサムの検証を行っている間にRBMC112はS510でプリロード処理を実行する。
このような処理シーケンスにより、ローカルプロセッサ108のIPパケット受信処理とRBMC112のプリロード処理を並列的に実行する。これにより、RBMC112が内部メモリ203にビットテーブルデータを一時格納する際に、内部メモリ203とRAM104の間でデータ転送が発生したとしても、その時間的なオーバーヘッドは無視することができる。
S511の結果、IPパケットが受信可能であるならば、S512でIPリアセンブルを実行する。ここで、既に内部メモリ203にはビットテーブルデータが格納されているため、S514のビット操作処理は高速に実行される。もし、S511でIPパケットが受信不可と判定した場合でも、S510では内部メモリ203にビットテーブルデータを確保しただけであるため、ビットテーブルの状態を変更していないことは明白である。
次に、上述したIPリアセンブルの処理シーケンスにおけるS506〜S808で実行されるローカルプロセッサ108の処理を、図6及び図7を参照して詳しく説明する。
図6は、IPv4(IPバージョン4)パケットのIPヘッダのフォーマットを示す図である。IPパケットがフラグメントパケットであるか否かは、フラグメント継続フラグ606とフラグメントオフセット609で判定する。フラグメント継続フラグ606が1であれば、このIPパケットがフラグメントパケットであり、更に後続するフラグメントデータを運ぶ別のIPパケットが存在していることを示す。
また、フラグメント継続フラグ606が0であるが、フラグメントオフセット609が0でなければ、このIPパケットはフラグメントデータの最後尾を運ぶフラグメントパケットである。このような判定方法により、受信したIPパケットがフラグメントパケットであるかを判定する。
また、同じ分割元パケットを構成するフラグメントパケットは、IPヘッダ内のIP識別子605、プロトコル611、送信元IPアドレス613、宛先IPアドレス614の4つのフィールド値が同一でなければならない。
第1の実施形態では、これらの4つのパラメータとIPリアセンブルを識別するためのリアセンブルIDを関連付けてCAM114に検索エントリデータを保存する。この検索エントリデータの保存は、新規のIPリアセンブルを開始し、新規のリアセンブルIDを決定したときに実行する。また、フラグメントパケット受信時のIPリアセンブルの検索処理は、CAM114に対して、IPヘッダから得られる4つのフィールドを検索キーとしてリアセンブルIDを検索することである。この検索の結果、リアセンブルIDが見つからなかった場合は、新規のIPリアセンブルを開始し、新規のIPリアセンブルを決定する。
図7は、ローカルプロセッサ108の処理(図5のS505〜S508)を示すフローチャートである。まずS701で、受信IPパケットのMACヘッダとIPヘッダの各種パラメータを読み出して取得する。次に、S702で宛先MACアドレスと宛先IPアドレスが受信可能であるかを判定する。判定した結果、受信できないアドレスである場合は、その受信パケットを破棄し、この処理を終了する。
また、宛先MACアドレスと宛先IPアドレスが共に受信可能なアドレスである場合はS703へ処理を進める。このS703では、S701で取得したIPヘッダ内のフラグメント継続フラグ606とフラグメントオフセット609の値により、このIPパケットがフラグメントパケットであるか否かを調べる。ここで、フラグメントパケットでは無い場合、IPリアセンブルを実行しないで、通常のIPパケット受信の処理を実行する。
一方、S703でフラグメントパケットであると判定した場合はS704へ処理を進め、フラグメントパケットのリアセンブルIDを取得するために検索処理を実行する。尚、この検索処理については上述した通りであるので、その説明は省略する。
続いて、S705でリアセンブルIDが検索できたか否かを判定し、検索できなかった場合はS706へ処理を進める。このS706では、フラグメントパケットは新規にIPリアセンブルを開始する必要があるので、新しいリアセンブルIDを決定する。そして、パケットのIP識別子、プロトコル、送信元IPアドレス、宛先IPアドレスの4つの値に新しいリアセンブルIDを関連付けて、CAM114に検索エントリを登録しておく。更に、新規のリアセンブルIDに対応するビットマップテーブルをRAM104上に確保する。続くS707では、S706で新規に決定したリアセンブルIDと、RAM104上に確保したビットテーブルのメモリアドレスをRBMC112のレジスタ201に設定する。このとき、RBMC112のリソース管理部202が新しいIPリアセンブルのビットテーブル管理情報をローカルRAM110に作成する。
また、S705でリアセンブルIDが検索できた場合及びS707での処理を終了した場合はS708へ処理を進める。このS708では、リアセンブルID、IPヘッダから取得したフラグメントオフセット609、IPパケットのペイロードの長さであるフラグメントデータサイズ、RBMC112のレジスタ201に設定してプリロード処理を起動する。
次に、上述したIPリアセンブルの処理シーケンスにおけるS510で実行されるRBMC112のビットテーブルのプリロード処理を、図8を用いて説明する。
図8は、ビットテーブルのプリロード処理を示すフローチャートである。まずS801では、レジスタ201に指定にされたリアセンブルIDに対応するビットテーブルが内部メモリ203に一時格納されているかを調べる。ここで、内部メモリ203に格納されていれば、この処理を終了する。
また、指定されたリアセンブルIDのビットテーブルが内部メモリ203に格納されていなければS802へ処理を進め、内部メモリ203にビットテーブルを格納する空きがあるか否かを調べる。もし空きがあればS807へ処理を進め、空きが無ければS803へ処理を進める。
S803では、内部メモリ203にビットテーブルを格納しているIPリアセンブルについて、各々が最後に処理されたときの前回処理からの時間間隔を比較し、最も時間間隔が長いIPリアセンブルを選択する。ここでは、リソース管理部202がIPリセンブルID毎に保持するビットテーブル管理情報70を参照し、内部メモリ格納フラグ705がオンであるビットテーブル管理情報の中で、最後に処理したIPリアセンブルの時間間隔703の値で比較する。即ち、ビットテーブル管理情報の703の値が最も大きいリアセンブルIDを選択する。
次に、S804で、選択したリアセンブルIDの内部メモリ203上のビットテーブルが変更されたかを調べる。ここでは、選択されたリアセンブルIDのビットテーブル管理情報で708の内部メモリデータ変更フラグがオンであるかをチェックする。もし、変更されていればS805へ処理を進め、そうでなければS807へ処理を進める。
S805では、選択されたリアセンブルIDの内部メモリ203上のビットテーブルが変更された範囲だけをRAM104上にあるビットテーブルに書き戻す処理を行う。RBMC112は、ビット操作処理の際、ビットテーブル管理情報の709のデータ変更オフセットと、710のデータ変更サイズを更新する。そのため、書き戻す必要のあるビットテーブルの変更部分は709から710の範囲である。ここでは、内部メモリ203上のビットテーブルの変更部分だけをRAM104上のビットテーブルに書き込んで反映する。
次に、S806では、RAM104に書き戻したビットテーブルについて、管理情報の705から710の全てのフィールドをクリアし、S807へ処理を進める。
このS807では、指定されたリアセンブルIDのビットテーブルデータを内部メモリ203に読み込む。内部メモリ203上の読み込む場所は、S802で見つかった空きであるか、S803で選択したリアセンブルIDのビットテーブルがあった場所である。
次に、S808で、レジスタ201に設定されたフラグメントオフセットとフラグメントデータサイズの範囲のビットテーブルデータを優先して先に、内部メモリ203に転送する。この部分以外のビットテーブルデータは後から転送する。これは、ビットテーブルの全体を内部メモリ203に転送する前に、ビット操作処理が起動された場合に、直ちにビット操作処理を行うことを可能にするためである。以上のようにして、ビットテーブルのプリロード処理が実行される。
次に、上述したIPリアセンブルの処理シーケンスにおけるS514で実行されるRBMC112のビットテーブルのビット操作処理を、図9を用いて説明する。
図9は、ビットテーブルのビット操作処理を示すフローチャートである。まずS901で、通信タイマー113から現在のタイマー値を取得して現在時刻を求める。また、指定されたリアセンブルIDのビットテーブル管理情報中の最後に処理したIPリアセンブルの処理時刻702との差分値を求め、1個前に処理実行したIPフラグメントパケットとの時間間隔を取得する。そして、管理情報の702と703のフィールドを更新する。
次に、S902で、指定されたリアセンブルIDのビットテーブルが内部メモリ203上に一時格納されているかを調べる。ここでは、RBMC112のリソース管理部202がそのリアセンブルIDのビットテーブル管理情報の内部メモリ格納フラグ705がオンであるかを調べ、オンであるときはS906へ処理を進め、オフであるならばS903へ処理を進める。
このS903では、RAM104にあるビットテーブルに対して直接ビット操作を施す処理モードとなる。次に、S904では、RAM104上のそのビットテーブルに対してレジスタ201に指定されたフラグメントオフセットと、フラグメントデータサイズに対応するビット範囲を1にセットする。そして、S905では、RAM104上のビットテーブルの中で0から1に変更されたビットの数をレジスタ201に設定して、S910へ処理を進める。
一方、S906では、内部メモリ203上のビットテーブルデータに対してビット操作を施すモードとなる。次に、S907では、内部メモリ203上のそのビットテーブルに対してレジスタ201に指定されたフラグメントオフセットと、フラグメントデータサイズに対応するビット範囲を1にセットする。そして、S908では、RAM104上のビットテーブル中で0から1に変更されたビットの数をレジスタ201に設定する。次に、S909で、内部メモリ203上のビットテーブルで変更した部分のデータオフセットとサイズをビットテーブル管理情報の709と710にそれぞれ記録しておく。そして、S910へ処理を進める。
このS910では、ビット操作処理の終了をローカルプロセッサ108に通知し、この処理を終了する。
尚、S902からS903へ処理を進める場合、アクセス遅延の大きいRAM104上のビットテーブルに対してビット操作処理を行う。そのため、S902からS906へ処理を進める、内部メモリ203にあるビットテーブルへのビット操作処理に比較して処理にかかる時間が大きくなってしまう。しかし、上述した図5に示すシーケンスのように、RBMC112のプリロード処理を実行するので、S902からS906へ処理を進めることになり、ビット操作処理を高速に行うことが可能である。
本実施形態によれば、RFC791に記載のIPリアセンブル方法において、RBMC112がアクセス遅延の小さい内部メモリ203にビットテーブルを一時格納してビット操作処理を行えるため、ビット操作処理の高速化を実現できる。
また、受信したフラグメントパケットのIPパケット受信処理の実行と、RBMC112のプリロード処理が並列処理化されるため、RBMC112が内部メモリ203にビットテーブルを格納するための時間的なオーバーヘッドを無視可能である。
更に、プリロード処理において、内部メモリ203に空きがない場合に、フラグメントパケットの時間的な到着間隔の大きいIPリアセンブルのビットマップテーブルをRAM104に書き戻すような制御を行う。それゆえ、フラグメントパケットの到着間隔の短い、即ちIPリアセンブルの処理頻度が高いビットテーブルを優先的に内部メモリ203に格納しておくことができ、RAM104と内部メモリ203間のビットテーブルのデータ転送を減らすことが可能となる。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。尚、第2の実施形態におけるIPプロトコル装置の構成は、第1の実施形態で説明した図1及び図2と同様である。即ち、図1に示すIPプロトコル処理装置105、図2に示す内部構成は同じであり、リアセンブルビットマップコントローラ(RBMC)112も、第1の実施形態の構成と同じとする。
第1の実施形態では、RBMC112の内部メモリ203に並行して処理を行っている全ビットテーブルの中から、直近に処理されたIPリアセンブルの幾つかについてビットテーブルの全体データを内部メモリ203に一時格納していた。しかし、第2の実施形態では、内部メモリ203に一時格納するデータはRAM104上に確保している全ビットテーブルについて各々の一部データのみを一時格納する。
図10は、全ビットテーブルの一部分データのみを内部メモリ203に格納する状態を示す図である。1008〜1014はRAM104にN個のIPリアセンブルの全ビットテーブルが確保されていることを表している。また、内部メモリ203の1001〜1007には、ビットテーブル1008〜1014における一部データのみが格納されていることを表している。
この例では、リアセンブルIDが0のビットテーブル1008の一部データが1001に格納されており、リアセンブルIDがMのビットテーブル1012の一部データが1005に格納されている。
尚、内部メモリ203への格納方式はダイレクトマップ方式とする。即ち、内部メモリ203では、各ビットテーブルの一部データの格納場所とサイズを固定に定義し、個々の格納場所に格納する対象データは、RAM104上に確保された各ビットテーブルの1Kオクテットの範囲に限定化する。
このような内部メモリ203の格納方法では、格納するデータサイズを小さくすることで、内部メモリ203に必要なメモリサイズを小さくすることが可能である。また、内部メモリ203に格納するデータサイズを1回のIPリアセンブルに必要となる最大サイズ分を格納するようにする。これにより、RBMC112のプリロード処理でRAM104と内部メモリ203間で転送するデータサイズを、ビットテーブル全体を転送するよりも小さくすることが可能である。
ここで、内部メモリ203に格納するサイズは、IPプロトコル処理装置105が接続するネットワークのMTU値を元にして決定する。例えば、一般的なイーサネット(登録商標)の場合、MTUは1500であるので、1つのIPパケットが運ぶペイロードの最大長は、IPヘッダの最小サイズを引いた1480である。
よって、1つのフラグメントパケットが運ぶフラグメントデータは最大長が1480となり、必要なビットテーブルデータは185ビットである。つまり、各ビットテーブルについて24バイト(192ビット)分のビットデータを格納すれば、1回のフラグメントパケットのIPリアセンブルでは十分なデータサイズになる。
また、第1の実施形態では、ビットテーブル全体を内部メモリ203に一時格納しているが、1つのビットテーブルに必要なサイズは1Kバイト(8192ビット)であるため、約40倍の個数のビットテーブルを一時格納することが可能とある。
しかしながら、第1の実施形態では、RBMC112のプリロード処理で、既に内部メモリ203にビットテーブルが確保されている場合は、RAM104からビットテーブルデータを転送する必要が無かった。つまり、同じIPリアセンブルが、連続的に処理する場合や、単位時間当たりの実行頻度が大きい場合には、ビットテーブルデータの転送回数を減らす効果がある。
逆に、第2の実施形態の方法は、フラグメントパケットが重複するフラグメントデータを持つことが頻発する状況でない限り、毎回のIPリアセンブルにおいてRAM104と内部メモリ203へのデータ転送が発生してしまう。
しかし、ビットテーブルデータの転送サイズが小さく、また、前述したようにIPリアセンブルが、ローカルプロセッサ108のIPパケット受信処理と、RBMC112のプリロード処理が並列的に実行される。
このことから、RAM104と内部メモリ203間のビットテーブルデータ転送にかかる時間的オーバーヘッドは無視でき、IPリアセンブル処理速度の低下にはならない。
また、同時に並行処理可能なIPリアセンブルの数により、アクセス遅延の小さい内部メモリ203にかかるメモリコストを低減することが可能になる。
[第3の実施形態]
次に、図面を参照しながら本発明に係る第3の実施形態を詳細に説明する。尚、第3の実施形態におけるIPプロトコル装置の構成は、第1の実施形態で説明した図1と同様である。即ち、図1に示すIPプロトコル処理装置105の内部構成は同じである。しかし、第1の実施形態で説明したリアセンブルビットマップコントローラ(RBMC)の内部構成が異なる。
図11は、第3の実施形態におけるRBMCの構成の一例を示す図である。1100は図2に示すRBMC112に相当する第3の実施形態におけるRBMCである。RBMC1100は、レジスタ201、リソース管理部202、1次内部メモリ1101、ビット処理部204、DMA機能部205、2次内部メモリ1102で構成される。尚、図2に示す構成と同様なものには同一の符号を付している。
RBMC1100の構成において、第1の実施形態との違いは、内部メモリ203を、1次内部メモリ1101と2次内部メモリ1102の2つとしたことである。
図12は、第3の実施形態におけるビットテーブルデータの内部メモリへの格納方法を示す図である。RAM104には、並行して処理を行っている全てのIPリアセンブルのビットテーブル405〜411を確保している。そして、2次内部メモリ1102には、RAM104の任意のアドレスに確保されたビットテーブルの内、4個のビットテーブルが一時格納されている。図12に示す例では、リアセンブルIDが0、3、M、N−1の4個のビットテーブル405、408、409、411が2次内部メモリ1102の1209〜1212の場所に格納されている。更に、2次内部メモリ1102に一時格納されている各ビットテーブルの一部分データ1205〜1208が1次内部メモリ1101の1201〜1204に格納されている。
この格納方法は、1次内部メモリ1101への格納は2次内部メモリ1102に対するダイレクトマップ方式である。
また、2次内部メモリ1102への格納では、RAM104上の任意のアドレスに配置されたビットテーブルに対してビットテーブルサイズ単位でのフルアソシエイティブ方式である。
このようなRBMC1100の構成及びビットテーブルデータの格納方法では、フラグメントパケットの到着間隔が短く、単位時間当たりのIPリアセンブル処理の回数が多いビットテーブルを優先して2次内部メモリ1102に格納しておく。このようにすることで、RAM104へのビットテーブルデータの転送を少なくすることが可能となる。
更に、1次内部メモリ1101と2次内部メモリ1102の間では、ビットテーブルの中の一部データのみを転送するため、データ転送のオーバーヘッドを極小化できる。
また、1次内部メモリ1101と2次内部メモリ1102は、RBMC1100内部で高速にデータ転送を行うことが可能である。よって、1次内部メモリ1101へのビット操作処理により書き込みが行われると同時に、2次内部メモリ1102に書き込むようにするライトスルー(write through)制御を行い、1次メモリ及び2次メモリ間のデータ同期制御を簡便化する。
更に、IPリアセンブルで処理対象となるビットテーブルが2次内部メモリ1102に存在しない場合は、RAM104から処理対象の範囲のデータのみ直接、1次内部メモリ1101に直接転送することでプリロード処理を高速化する。このプリロード処理では、上述のライトスルー制御を行う場合、1次内部メモリ1101のデータは書き戻す必要がない。
このように、ビットマップテーブル方式のIPリアセンブルで複数のIPリアセンブルを並列的に実行する場合にも、ビットテーブルをアクセス遅延の小さいメモリ上に置いてビット操作処理の高速化とメモリに必要な容量を抑えることが可能となる。本発明はIPプロトコル通信を高速に実行する通信端末機器や、TOEにおいて好適である。
上述した実施形態によれば、ビットテーブルのビット操作処理をアクセス遅延の小さい第2の記憶手段に保持するデータに対して実行することで、IPリアセンブルの高速化を図ることができる。
また、処理途中である全てのIPリアセンブルのビットテーブルを第1の記憶手段に配置し、ビット操作を行うビットテーブルのデータだけをアクセス遅延の小さい第2の記憶手段に置くことで、第2の記憶手段に必要な記憶容量を少なくすることができる。例えば、第1の記憶手段にSDRAM、第2の記憶手段にSRAMを用い、一般にメモリコストが高価なSRAMを小容量で実装し、安価なSDRAMには少なくとも全ビットテーブルを保存可能な大容量で実装することでメモリコストを抑えることができる。つまり、IPリアセンブルの並行処理可能な数を低メモリコストで拡大することができる。
更に、ビット操作処理を行うビットテーブルのデータを処理開始の事前に第2の記憶手段に用意し、フラグメントパケットの到着間隔が短いIPリアセンブルのビットテーブルデータを優先的に第2の記憶手段に保持する。これにより、第1の記憶手段と第2の記憶手段の間で発生するデータ転送の時間的なオーバーヘッドを平均的に小さくできるため、IPリアセンブルの処理高速化が可能となる。
尚、本発明は複数の機器(例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
第1の実施形態におけるネットワーク通信装置の構成の一例を表すブロック図である。 第1の実施形態におけるRBMCの構成の一例を表すブロック図である。 IPリアセンブルにおけるビットテーブルのビット操作処理を説明するための図である。 IPリアセンブルのビットテーブルをIPリアセンブル識別子で管理する状態を示す図である。 IPリアセンブルにおけるDMAC111、RBMC112、ローカルプロセッサ108の時間的な処理シーケンスを示す図である。 IPv4(IPバージョン4)パケットのIPヘッダのフォーマットを示す図である。 ローカルプロセッサ108の処理(図5のS505〜S508)を示すフローチャートである。 ビットテーブルのプリロード処理を示すフローチャートである。 ビットテーブルのビット操作処理を示すフローチャートである。 全ビットテーブルの一部分データのみを内部メモリ203に格納する状態を示す図である。 第3の実施形態におけるRBMCの構成の一例を示す図である。 第3の実施形態におけるビットテーブルデータの内部メモリへの格納方法を示す図である。
符号の説明
101 システムバス
102 CPU
103 ROM
104 RAM
105 IPプロトコル処理装置
106 ローカルバス
107 バスブリッジ
108 ローカルプロセッサ
109 ローカルプロセッサ
110 ローカルRAM
111 DMAコントローラ(DMAC)
112 リアセンブルビットマップコントローラ(RBMC)
113 通信タイマー
114 CAM
115 暗号処理部
116 通信制御部
117 ネットワーク
201 レジスタ
202 リソース管理部
203 内部メモリ
204 ビット処理部
205 DMA機能部

Claims (7)

  1. フラグメントされたIPパケットの受信状況を管理するビットテーブルに基づいて前記IPパケットのリアセンブルを行うIPプロトコル処理装置であって、
    複数のビットテーブルを記憶する第1の記憶手段と、
    前記複数のビットテーブルの一部を記憶する第2の記憶手段と、
    前記ビットテーブルに基づいて前記リアセンブルを行う際に、前記第1の記憶手段から第2の記憶手段へ前記リアセンブルの対象となるビットテーブルを転送する転送手段と、
    前記転送手段で前記第2の記憶手段へ転送されたビットテーブルに基づいて前記フラグメントされたIPパケットをリアセンブル処理する処理手段と、
    を有することを特徴とするIPプロトコル処理装置。
  2. 前記第2の記憶手段は、前記第1の記憶手段よりもアクセス遅延が小さいことを特徴とする請求項1に記載のIPプロトコル処理装置。
  3. 前記フラグメントされたIPパケットの到着間隔が短い場合に、前記対象となるビットテーブルを優先的に前記第2の記憶手段へ転送させるよう前記転送手段を制御する手段を更に有することを特徴とする請求項1又は2に記載のIPプロトコル処理装置。
  4. 前記転送手段は、前記ビットテーブルに含まれるデータを優先して前記第2の記憶手段へ転送させることを特徴とする請求項1乃至3の何れか1項に記載のIPプロトコル処理装置。
  5. 複数のビットテーブルを記憶する第1の記憶手段と、前記複数のビットテーブルの一部を記憶する第2の記憶手段とを有し、フラグメントされたIPパケットの受信状況を管理するビットテーブルに基づいて前記IPパケットのリアセンブルを行うIPプロトコル処理装置の処理方法であって、
    前記ビットテーブルに基づいて前記リアセンブルを行う際に、前記第1の記憶手段から第2の記憶手段へ前記リアセンブルの対象となるビットテーブルを転送する転送工程と、
    前記転送工程で前記第2の記憶手段へ転送されたビットテーブルに基づいて前記フラグメントされたIPパケットをリアセンブル処理する処理工程と、
    を有することを特徴とするIPプロトコル処理装置の処理方法。
  6. 請求項1乃至4の何れか1項に記載のIPプロトコル処理装置としてコンピュータを機能させるためのプログラム。
  7. 請求項6に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2008058703A 2008-03-07 2008-03-07 処理装置及びその処理方法 Expired - Fee Related JP5094482B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008058703A JP5094482B2 (ja) 2008-03-07 2008-03-07 処理装置及びその処理方法
US12/394,435 US7969977B2 (en) 2008-03-07 2009-02-27 Processing apparatus and method for processing IP packets

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008058703A JP5094482B2 (ja) 2008-03-07 2008-03-07 処理装置及びその処理方法

Publications (3)

Publication Number Publication Date
JP2009218743A true JP2009218743A (ja) 2009-09-24
JP2009218743A5 JP2009218743A5 (ja) 2011-04-14
JP5094482B2 JP5094482B2 (ja) 2012-12-12

Family

ID=41053510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008058703A Expired - Fee Related JP5094482B2 (ja) 2008-03-07 2008-03-07 処理装置及びその処理方法

Country Status (2)

Country Link
US (1) US7969977B2 (ja)
JP (1) JP5094482B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011035484A (ja) * 2009-07-30 2011-02-17 Nec Commun Syst Ltd パケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラム
JP2015136071A (ja) * 2014-01-17 2015-07-27 キヤノン株式会社 通信装置、制御方法及びプログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5070125B2 (ja) * 2008-05-19 2012-11-07 キヤノン株式会社 受信装置及びその方法、通信システム及びその方法、並びに、プログラム
US10218756B2 (en) * 2012-01-06 2019-02-26 Comcast Cable Communications, Llc Streamlined delivery of video content
JP5812533B2 (ja) * 2012-05-31 2015-11-17 株式会社日立製作所 通信装置、及び、通信方法
JP6192284B2 (ja) 2012-10-15 2017-09-06 キヤノン株式会社 通信装置及びその制御方法
JP6600241B2 (ja) * 2015-12-11 2019-10-30 キヤノン株式会社 演算装置及び演算方法、通信装置
CN112073436B (zh) * 2020-09-28 2022-04-22 山东产研集成电路产业研究院有限公司 一种降低toe中接收通道传输延迟量的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05327771A (ja) * 1992-05-27 1993-12-10 Toshiba Corp パケット組み上げ方式
JPH11261649A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd データ処理装置及びそれを適用したルータ・ブリッジ
JP2006005878A (ja) * 2004-06-21 2006-01-05 Fujitsu Ltd 通信システムの制御方法、通信制御装置、プログラム
JP2006014143A (ja) * 2004-06-29 2006-01-12 Nec Corp 通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム
JP2007274056A (ja) * 2006-03-30 2007-10-18 Oki Electric Ind Co Ltd データグラム再組立装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1437724A (zh) * 2000-03-03 2003-08-20 坦诺网络公司 使用内部处理器存储空间的高速数据处理
US20090161568A1 (en) * 2007-12-21 2009-06-25 Charles Kastner TCP data reassembly
US7245615B1 (en) * 2001-10-30 2007-07-17 Cisco Technology, Inc. Multi-link protocol reassembly assist in a parallel 1-D systolic array system
US7403999B2 (en) * 2001-12-28 2008-07-22 International Business Machines Corporation Classification support system and method for fragmented IP packets
US7346701B2 (en) * 2002-08-30 2008-03-18 Broadcom Corporation System and method for TCP offload
US7424571B2 (en) * 2004-07-27 2008-09-09 Gigafin Networks, Inc. Array machine context data memory
US7594002B1 (en) * 2003-02-14 2009-09-22 Istor Networks, Inc. Hardware-accelerated high availability integrated networked storage system
US7561573B2 (en) * 2005-03-23 2009-07-14 Fujitsu Limited Network adaptor, communication system and communication method
US20060274789A1 (en) * 2005-06-07 2006-12-07 Fong Pong Apparatus and methods for a high performance hardware network protocol processing engine
JP2007172008A (ja) * 2005-12-19 2007-07-05 Sony Corp 情報処理システム、受信装置、およびプログラム
US7769015B2 (en) * 2007-09-11 2010-08-03 Liquid Computing Corporation High performance network adapter (HPNA)

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05327771A (ja) * 1992-05-27 1993-12-10 Toshiba Corp パケット組み上げ方式
JPH11261649A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd データ処理装置及びそれを適用したルータ・ブリッジ
JP2006005878A (ja) * 2004-06-21 2006-01-05 Fujitsu Ltd 通信システムの制御方法、通信制御装置、プログラム
JP2006014143A (ja) * 2004-06-29 2006-01-12 Nec Corp 通信下位プロトコルの実行及び受信データストリームのデータ分割機能を有するオフロードエンジンを備える通信システム
JP2007274056A (ja) * 2006-03-30 2007-10-18 Oki Electric Ind Co Ltd データグラム再組立装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011035484A (ja) * 2009-07-30 2011-02-17 Nec Commun Syst Ltd パケット受信装置、パケットバッファの輻輳状態復旧方法及びプログラム
JP2015136071A (ja) * 2014-01-17 2015-07-27 キヤノン株式会社 通信装置、制御方法及びプログラム

Also Published As

Publication number Publication date
US20090225757A1 (en) 2009-09-10
US7969977B2 (en) 2011-06-28
JP5094482B2 (ja) 2012-12-12

Similar Documents

Publication Publication Date Title
JP5094482B2 (ja) 処理装置及びその処理方法
JP4942375B2 (ja) ネットワーク処理装置
EP1787212B1 (en) Packet queuing, scheduling and ordering
US7535907B2 (en) TCP engine
US7561573B2 (en) Network adaptor, communication system and communication method
JP4504977B2 (ja) オフロードユニットを使用したtcp接続のためのデータ処理
CN102427446B (zh) 分组合并
US9304939B2 (en) Method and multi-core communication processor for replacing data in system cache
US7260631B1 (en) System and method for receiving iSCSI protocol data units
US8661205B2 (en) Communication apparatus and information transfer method
US9866639B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
US9961147B2 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
JP4921142B2 (ja) 通信装置
US11336297B2 (en) DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP4263718B2 (ja) 通信処理装置及び通信処理方法
US20160057068A1 (en) System and method for transmitting data embedded into control information
US20090240925A1 (en) Device, method, and computer program product that process message
JP2007274056A (ja) データグラム再組立装置
JP2020088517A (ja) 通信装置、通信装置の制御方法およびプログラム
US20170265103A1 (en) Communication device, communication method, and non-transitory computer readable medium
US7733862B2 (en) Method and apparatus for implementing IPSec engine in IXDP2851
JP4321390B2 (ja) 半導体集積回路
JP2005141677A (ja) Icカード用通信ライブラリ及びicカード
JP2019213059A (ja) 通信装置、通信装置の制御方法、およびプログラム
JP2005184051A (ja) 通信制御装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120807

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

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

R151 Written notification of patent or utility model registration

Ref document number: 5094482

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees