JP5473406B2 - ネットワーク処理装置及びその処理方法 - Google Patents

ネットワーク処理装置及びその処理方法 Download PDF

Info

Publication number
JP5473406B2
JP5473406B2 JP2009126822A JP2009126822A JP5473406B2 JP 5473406 B2 JP5473406 B2 JP 5473406B2 JP 2009126822 A JP2009126822 A JP 2009126822A JP 2009126822 A JP2009126822 A JP 2009126822A JP 5473406 B2 JP5473406 B2 JP 5473406B2
Authority
JP
Japan
Prior art keywords
datagram
processing
information
reassembly
reassembling
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
JP2009126822A
Other languages
English (en)
Other versions
JP2010045767A (ja
JP2010045767A5 (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 JP2009126822A priority Critical patent/JP5473406B2/ja
Priority to US12/501,407 priority patent/US20100014542A1/en
Publication of JP2010045767A publication Critical patent/JP2010045767A/ja
Publication of JP2010045767A5 publication Critical patent/JP2010045767A5/ja
Application granted granted Critical
Publication of JP5473406B2 publication Critical patent/JP5473406B2/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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • 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

Landscapes

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

Description

本発明は、フラグメント化されたIPデータグラムを受信し、そのIPデータグラムをリアセンブル処理する技術に関する。
従来、ネットワークプロトコル処理の一環として、フラグメント処理されたIPデータグラムのリアセンブル処理が行われている。IPデータグラムのフラグメント処理方法及びリアセンブル処理方法に関しては、RFC791 Internet Protocolに記載されている。
IPデータグラムの受信機器において、フラグメント処理されたIPデータグラムを受信した場合、当該IPデータグラムのリアセンブル処理を開始する。具体的なリアセンブル処理方法は、上記RFC791に記載されているため詳細は割愛する。
通常、IPデータグラムは、送信機器がIPデータグラムを送出する際に、通信経路に設定されているデータグラムサイズより大きい場合にフラグメント処理される。この送信機器には、ネットワークコネクションの送信元機器だけではなく、通信経路上に存在する中継機器(ルータ)も含まれる。
中継機器は、一旦受信したIPデータグラムを解析し、適切な経路上に再送出する役目を担う。そして、送出時に送信元機器と同様に、フラグメント処理が必要な場合はフラグメント処理を施してIPデータグラムを送出する。
また、中継機器は通信経路の決定や到達保証等の役割も担う。これに関しては、様々なアルゴリズムが用いられているが、その中にはIPデータグラムを異なる経路上に多重に送出する手法や、同じIPデータグラムを複数回繰り返し送出する手法なども存在する。そのため、中継機器を経由して送信されるIPデータグラムは、先頭から順番に並んでいないばかりではなく、搭載ペイロードの一部もしくは全てが重複するようなフラグメントIPデータグラム群となって到着する可能性がある。また、その到着タイミングも比較的まとまった時間に集中する場合もあれば、一部のIPデータグラムが所定時間経由した後に到着する可能性もある(例えば、特許文献1参照)。
特開2004−180253号公報
上述したように、IPデータグラムの受信機器では、フラグメント化されたIPデータグラムを受信すると、リアセンブル処理を開始するためにリソースを確保する。しかし、通信経路上に中継機器が存在する場合には、既にリアセンブル処理が完了したIPデータグラムの(重複した)フラグメントIPデータグラムが後から到着することがある。
また、リアセンブルタイマがタイムアウトし、リソースを解放してしまった後に、当該IPデータグラムの一部であるフラグメントIPデータグラムが到着することもある。
このような状況が発生すると、受信機器では再度、リアセンブル処理を開始するため、リソースを確保してしまう。しかしながら、上述のような状況では当該リアセンブル処理が完了することはほぼあり得ない。つまり、完了しない可能性の高いリアセンブル処理のために、次にリアセンブルタイマがタイムアウトするまでリソースを確保してしまうこととなる。
このリソースの浪費は、リソースの枯渇を引き起こす原因となり、受信してもリアセンブル処理を行えず、IPデータグラムを破棄しなければならない事態に繋がる。これは、システム全体のパフォーマンス低下を引き起こす可能性がある。特に、組み込みシステムなどのメモリサイズが限られているプラットフォームでは、より影響度が大きい。
一方、これに対応するため、同時に処理可能なリアセンブル処理数を増加(リソースの増加)させると、コストが大幅に増加してしまう。
本発明は、フラグメント化されたIPデータグラムをリアセンブル処理する際に、使用するリソースの浪費を削減することを目的とする。
本発明は、情報処理装置であって、
フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理手段と、
リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持手段と、を有し、
前記処理手段は、前記保持手段に保持された情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理せず、
前記保持手段は、前記処理手段によるリアセンブル処理が終了したIPデータグラムを特定する情報を保持することを特徴とする。
本発明によれば、フラグメント化されたIPデータグラムをリアセンブル処理する際に、使用するリソースの浪費を削減することが可能となる。
第一の実施形態におけるネットワークプロトコル処理装置の構成の一例を示すブロック図である。 RAM103内のデータを模式的に表した図である。 リアセンブル処理対象管理テーブル202に格納された管理エントリを詳細に示す図である。 ビットテーブル領域203に格納されているビットテーブルを詳細に示した図である。 リアセンブルバッファ領域204に格納されているリアセンブルバッファを詳細に示した図である。 リアセンブル初期化処理の処理手順を示すフローチャートである。 リアセンブル通常処理の処理手順を示すフローチャートである。 リアセンブル終了処理の処理手順を示すフローチャートである。 第一の実施形態におけるIPデータグラムの受信処理を示すフローチャートである。 第二の実施形態におけるIPデータグラムの受信処理を示すフローチャートである。
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。
[第一の実施形態]
図1は、第一の実施形態におけるプロトコル処理装置の構成の一例を示すブロック図である。図1において、CPU101は、後述するROMに格納された制御プログラム(ソフトウェア)に従ってTCP/IPネットワークのプロトコル処理を実行する。ROM102にはCPU101が実行するソフトウェアが格納されている。RAM103はCPU101がプロトコル処理を実行時に、ワークエリアとして使用される。
MAC(メディアアクセス制御)104は、OSI参照モデルの第2層に相当するデータリンク層の一部である通信プロトコルである。PHY(物理層)105は、OSI参照モデルの第1層に相当するプロトコル処理及び電気信号を扱うハードウェアである。DMAC(Direct Memory Access Controller)106はTCP/IPネットワーク通信で送受信するデータのRAM103とMAC104との間の転送を管轄する。バス107はCPU101、ROM102、RAM103、MAC104、DMAC106を相互接続する。
タイマ108は、プロトコル処理で必要となる複数種類のタイマ(例えば、リアセンブルタイマ、再送タイマなど)を同時に計時する機能を提供する。
尚、RAM103は安価なDRAM(オフチップ)で実現される場合が一般的であるが、より高速なオンチップSRAMで実現しても良い。しかし、オンチップSRAMは高価である。そのため、本実施形態で想定しているRAM103に格納するデータ全てを格納可能なサイズ分を搭載するのは難しい可能性もある。このような場合には、安価であるが低速なDRAMと、高価であるが高速なオンチップSRAMとの組み合わせで実現するのが適切である。
即ち、頻繁にアクセスするデータやプロトコル処理性能に大きく影響するデータなどを高速なオンチップSRAMに配置し、その他のデータをDRAMに配置するという形態である。本実施形態は、DRAM及びオンチップSRAM、その他の記憶媒体の何れで実現されても良く、全てを包含しRAM103と呼ぶこととする。
ここで、RAM103は、CPU101のワークエリアとして使用されるだけでなく、TCP/IPネットワークプロトコル処理の実行時に必要となるデータの格納領域としても使用される。そのデータには、TCP/IPネットワーク通信で送受信されるデータ、フラグメントブロックビットテーブル、フラグメントブロックビットテーブル管理情報のテーブルなどが含まれる。
尚、このフラグメントブロックビットテーブルをビットテーブルと呼び、フラグメントブロックビットテーブル管理情報のテーブルを管理テーブルと呼ぶ。また、管理テーブルに格納される各ビットテーブルの管理情報を管理エントリと呼ぶ。このビットテーブルはビットマップテーブルとも呼ばれる。
図2は、RAM103内のデータを模式的に表した図である。図2では、本発明を説明するために必要なデータのみを示し、プロトコル処理を実現するために必要なデータは他にも存在するが、図示していない。不図示のデータは、例えばCPU101が処理するワークデータや送信IPデータグラム本体などのデータである。
図2において、受信したIPデータグラムは一旦受信データ領域201に格納される。リアセンブル処理対象管理テーブル202には、各ビットテーブルの管理情報である管理エントリが格納される。管理エントリは、関連付けられたビットテーブルと共に、主にリアセンブル処理の開始時に生成され、リアセンブル処理終了まで、リアセンブル処理対象のIPデータグラムの情報を保持する。
ビットテーブル領域203には、ビットテーブル本体が格納される。全てのビットテーブルは所定の管理エントリに一対一で関連付けられている。リアセンブルバッファ領域204には、リアセンブル処理中のIPデータグラムのペイロードデータが格納される。
リアセンブル処理対象外管理テーブル205には、リアセンブル処理を行わない(対象外の)IPデータグラムの管理情報である管理エントリが格納される。このリアセンブル処理対象外管理テーブル205には、リアセンブル処理が完了したIPデータグラム及びリアセンブル処理でタイムアウトしたIPデータグラムの管理情報が一定期間格納される。この管理情報の使用方法、登録するタイミング及び削除するタイミングの詳細については、更に後述する。
次に、リアセンブル処理対象管理テーブル202内の管理エントリ、ビットテーブル領域203内のビットテーブル、リアセンブルバッファ領域204内のリアセンブルバッファの関係を、図3〜図5を用いて説明する。
図3は、リアセンブル処理対象管理テーブル202に格納された管理エントリを詳細に示す図である。図3において、301は送信元アドレスであり、受信されたIPヘッダに格納されている送信元アドレス(Source Address)フィールドの値に一致する。302は宛先アドレスであり、同じくIPヘッダの宛先アドレス(Destination Address)に一致する。303は識別子であり、同じくIPヘッダの識別子(Identifier)に一致する。
送信元アドレス301、宛先アドレス302、識別子303の各情報は、リアセンブル処理対象のIPデータグラムを特定するために使用される。これは、IPデータグラムが送信元の機器やルータによってフラグメント化される場合、フラグメント前のIPデータグラムの3フィールドがフラグメント後のIPデータグラムのIPヘッダの3フィールドにコピーされるためである。
そのため、受信機器では、上述の3フィールドが同一であるIPデータグラムに対してリアセンブル処理を行わなければならず、3フィールドが一致しないIPデータグラムのリアセンブル処理は、別々の処理として実施しなければならない。
本実施形態では、複数のIPデータグラムに対するリアセンブル処理を並列に行うことを想定している。そこで、管理エントリは、関連付けられたビットテーブルが何れのIPデータグラムのリアセンブル処理に使用されているかを特定するために、3フィールドの情報を保持している。
図3において、304はビットテーブルポインタであり、当該管理エントリに関連付けられたビットテーブル領域203の格納先アドレスを示す情報である。305はリアセンブルバッファポインタであり、当該管理エントリに関連付けられているリアセンブルバッファ領域204の格納先アドレスを示す情報である。
図4は、ビットテーブル領域203に格納されているビットテーブルを詳細に示した図である。図4において、401は初期化時のビットテーブル本体であり、402は所定のリアセンブル処理中のビットテーブル本体である。ビットテーブルのビット401−1〜401−5、402−1〜402−5は、それぞれペイロードデータが受信済みか否かを示し、“1”がセットされている場合は受信済みを示す。これに対して、“0”がセットされている場合は未受信であることを示す。また、ビットテーブルの初期化時は、全てのペイロードデータが未受信であるため、全ビットが“0”にセットされている。
図5は、リアセンブルバッファ領域204に格納されているリアセンブルバッファを詳細に示した図である。図5において、501は初期化時のリアセンブルバッファの状態であり、全て無効データを示している。502は処理中のリアセンブルバッファの状態であり、図4に示すビットテーブル402で受信済みのビットテーブルに対応するバッファには有効データが格納されている。つまり、リアセンブルバッファの単位領域501−1〜501−5、502−1〜502−5はそれぞれペイロードデータ格納領域であり、対応するビットテーブルのビットが受信済みを示していれば、受信済みのペイロードデータが格納されている。尚、初期化時は、全てのペイロードデータが未受信であるため、ビットテーブルの全ビットが“0”にセットされている。このときリアセンブルバッファは全ての単位領域が無効データとなっている。
ビットテーブルの各ビットはフラグメントの最小単位である8バイトを意味している。例えば、図4に示す処理中の402でビット402−1に“1”がセットされているのは、フラグメント前のIPデータグラムのペイロードのうち先頭から8バイト分のデータが既に受信されていることを示している。つまり、図5に示す単位領域502−1に有効なペイロードデータが格納されていることを示している。
また同様に、ビット402−4に“1”がセットされているのは、フラグメント前のIPデータグラムのペイロードのうち、先頭からのオフセット24バイトから8バイト分のデータが既に受信されていることを示している。即ち、図5に示す単位領域502−4に有効なペイロードデータが格納されていることを示している。
一方、“0”がセットされているビット402−2は、フラグメント前のIPデータグラムのペイロードのうち、先頭からのオフセット8バイトから8バイト分のデータは未受信であることを示している。即ち、図5に示す単位領域502−2のデータは無効なペイロードデータであることを示している。そして、ビット402−3、402−5も同様に、それらの部分の8バイト分のデータはまだ受信されていないことを示している。
ここで、リアセンブル処理対象外管理テーブル205には、図3に示す管理エントリと同様のデータが格納されるものとする。このリアセンブル処理対象外のIPデータグラムであるか否かは、送信元アドレス301、宛先アドレス302、識別子303の各情報によって判断可能である。しかし、メモリ管理上都合がよいことがあるため、管理エントリをそのまま流用している。
第一の実施形態では、リアセンブル処理対象管理テーブル202と、リアセンブル処理対象外管理テーブル205とは別領域であることを前提に説明したが、2つの領域は一つの領域に集約されていても良い。その場合は、管理エントリをリンクリスト構造で管理し、リアセンブル処理中の管理エントリリストと、リアセンブル処理対象外の管理エントリリストの2つのリンクリストを生成する。そして、新規にリアセンブル処理を開始する場合は、リアセンブル処理中の管理エントリリストに追加し、リアセンブル処理が完了した場合、若しくはタイムアウトした場合に、当該管理エントリをリアセンブル処理対象外の管理エントリリストに移動する。
従って、リンクリストのポインタのみの操作で処理が完了し、データ部分、即ち送信元アドレス301、宛先アドレス302、識別子303をコピーや修正を行うことなく流用することが可能となる。
また、別の管理方法としてフラグを設けることも考えられる。つまり、管理エントリにリアセンブル処理実行中、若しくは対象外を示すフラグを設け、フラグによってリアセンブル処理中の管理エントリかリアセンブル処理対象外の管理エントリかを区別する。
上述した何れの方法でも、リアセンブル処理対象管理テーブル202と、リアセンブル処理対象外管理テーブル205とを一つの領域で管理することができる。
従って、本発明は、リアセンブル処理対象外の管理情報として、送信元アドレス、宛先アドレス、識別子の各情報が含まれていれば良い。また、管理エントリのRAM103への格納方法や管理方法は本発明の適用可否に関連するものではなく、上述した何れの方法によっても本発明を実現できる。
次に、リアセンブル処理で使用される管理エントリ、ビットテーブル及びリアセンブルバッファに対する処理(リアセンブル初期化処理、リアセンブル通常処理、リアセンブル終了処理)を、図6〜図8を用いて説明する。これらの処理は、CPU101によって実行される。
<リアセンブル初期化処理(図6)>
図6は、リアセンブル初期化処理の処理手順を示すフローチャートである。尚、リアセンブル初期化処理はリアセンブル処理開始時に行われるが、これはフラグメント化されたIPデータグラム受信が前提となる。また、この処理には、受信したIPデータグラムのIPヘッダ情報が引数(Header)として渡される。
まず、ステップS601で、CPU101はリアセンブル処理対象管理テーブル202に対して新規の管理エントリを作成する。次に、ステップS602で、新規作成した管理エントリの送信元アドレス301、宛先アドレス302、識別子303に、引数のHeaderの対象情報(送信元アドレス、宛先アドレス、識別子)を設定する。
次に、ステップS603で、ビットテーブルとリアセンブルバッファをそれぞれビットテーブル領域203、リアセンブルバッファ領域204に確保して初期化する。ここで、ビットテーブルの初期化は、図4に示すビットテーブル401のように、全てのビットを“0”にセットすることで行う。また、リアセンブルバッファ内のデータの有効又は無効はビットテーブル内のビットにより管理されるため、リアセンブルバッファの初期化は、特に何も行わなくても良い。
初期化完了後、ステップS604で、ステップS601で新規作成した管理エントリのビットテーブルポインタ304に、確保したビットテーブルの格納先アドレスを設定する。また同様に、リアセンブルバッファポインタ305に、確保したリアセンブルバッファの格納先アドレスを設定する。
最後に、ステップS605で、タイマ108に対して、このリアセンブル処理用のリアセンブルタイマの計時を開始するように指示し、このリアセンブル初期化処理を終了する。ここで、リアセンブルタイマは、リアセンブル処理のタイムアウトまでの時間を計時するタイマである。
通常、このリアセンブルタイマがタイムアウトする前に、全てのフラグメント化されたIPデータグラムを受信してリアセンブル処理が完了する。しかしながら、フラグメント化されたIPデータグラムの一部が何らかの原因により経路上で欠落してしまった場合、いつまで待ってもリアセンブル処理は完了しなくなってしまう。このような場合に、このリアセンブルタイマがタイムアウトした時点でリアセンブル処理を強制終了し、リソースを解放する。
また、リアセンブルタイマは、タイムアウトした際には、割込みなどでCPU101へタイムアウトしたことを通知する。このとき、CPU101は何れの管理エントリで管理しているリアセンブル処理がタイムアウトしたかを認識できる。この認識方法は、例えば割込み要因に一意に関連付けられている構成もあれば、タイマ108がタイムアウトした内容を保持しており、タイムアウト後に、CPU101がその保持内容を確認することで認識するなどの構成でも良い。ここでは、タイムアウト時に管理エントリが特定できれば良く、その認識方法は限定しない。
<リアセンブル通常処理(図7)>
図7は、リアセンブル通常処理の処理手順を示すフローチャートである。尚、このリアセンブル通常処理は、フラグメント化されたIPデータグラムの受信時に行われる。また、詳細は後述するが、IPデータグラム受信時に受信したIPデータグラムのIPヘッダ情報と合致する管理エントリが存在するか否かを確認するために、リアセンブル処理対象管理テーブル202の検索が行われる。検索した結果、合致する管理エントリが存在する場合は、受信したIPデータグラムのIPヘッダ情報、合致する管理エントリがそれぞれ引数(Header、Entry)として渡される。また、検索した結果、合致する管理エントリが存在しない場合には、リアセンブル初期化処理(図6)により新規に管理エントリが作成され、その管理エントリが引数(Entry)として渡される。
まず、ステップS701で、CPU101は、引数のEntryのビットテーブルポインタ304及びリアセンブルバッファポインタ305から、関連付けられたビットテーブル及びリアセンブルバッファの格納場所を特定する。そして、ステップS702で、引数のHeaderから受信したIPデータグラムのペイロードデータが、全ペイロードデータのどこに位置するデータであるかを示すオフセットとペイロードサイズを取得する。
ここで、オフセットは、Headerにおけるフラグメントオフセット(Fragment Offset)フィールドが示す値そのものである。また、ペイロードサイズは、HeaderにおけるIHLフィールド、全パケット長(Total Length)フィールドから算出する。IHLフィールドは、IPデータグラムにおけるヘッダのワード数(1ワード=4バイト)であり、全パケット長フィールドはIPデータグラム全体の長さ(バイト数)である。即ち、ペイロードサイズは、以下の計算式で算出することができる。
ペイロードサイズ(バイト)=全パケット長フィールド−(IHLフィールド×4)
例えば、全パケット長フィールドが1044バイトであり、IHLフィールドが5である場合には、以下の計算式からペイロードサイズは1Kバイトと算出される。
1044−(5×4)=1024バイト=1Kバイト
上述の方法でオフセットとペイロードサイズを取得した後、ステップS703へ処理を進め、ステップS701で特定したビットテーブル及びリアセンブルバッファの更新処理を行う。ビットテーブルの更新処理は、フラグメント前のペイロードデータ内の受信した部分に対応するビットに“1”をセットすることで行う。例えば、オフセットが0(ゼロ)、ペイロードサイズが24バイトであったとする。この場合は、ビットテーブルの先頭から3ビット分に“1”がセットされる。そして、リアセンブルバッファの更新処理は、フラグメント前のペイロードデータ内の受信した部分に対応する領域にペイロードデータをコピーすることで行う。
次に、ステップS704で、受信したIPデータグラムが終端IPデータグラムであるか否かを確認する。具体的には、HeaderのMF(More Fragment)フラグが“1”であれば後続のデータグラムが存在するため、終端IPデータグラムではないと判断する。また、“0”であれば後続のデータグラムが存在しない、つまり終端IPデータグラムであると判断する。
ステップS704で終端IPデータグラムであると判断した場合、ステップS705へ処理を進め、ビットテーブルの終端処理を行う。具体的には、ビットテーブルの受信したIPデータグラムに対応する部分以降のビットを全て“1”にセットする。
この処理により、ビットテーブルの全てのビットが“1”にセットされたときに、全てのフラグメント化されたIPデータグラムを受信した、つまり、リアセンブル処理が完了したと判断できる。
尚、ビットテーブルの終端処理方法は、上述の方法に限られるわけではなく、他の方法で実現しても良い。即ち、リアセンブル処理が完了したと明確に判断可能な方法であれば、何れの実現方法であっても本発明を適用できる。
このステップS705でビットテーブルの終端処理を行った場合、ステップS704で終端IPデータグラムではないと判断した場合の何れにおいても、リアセンブル通常処理は完了となる。
<リアセンブル終了処理(図8)>
図8は、リアセンブル終了処理の処理手順を示すフローチャートである。尚、このリアセンブル終了処理は、リアセンブル処理が完了した場合、或いはタイムアウトした場合に実行される。この処理の実行前にはリアセンブル処理が完了、若しくはタイムアウトした管理エントリが特定されており、その管理エントリが引数(Entry)として渡される。
まず、ステップS801で、CPU101は、タイマ108に対して当該リアセンブル処理用のリアセンブルタイマの計時を停止するように指示する。具体的には、リアセンブル初期化処理(図6)のステップS605で開始を指示したリアセンブルタイマである。当該リアセンブルタイマは、この後、他のリアセンブル処理で使用可能となる。
次に、ステップS802で、引数(Entry)として渡された管理エントリのビットテーブルポインタ304及びリアセンブルバッファポインタ305から、関連付けられたビットテーブル及びリアセンブルバッファの格納場所を特定する。そして、ステップS803で、ステップS802で特定されたビットテーブルをビットテーブル領域203から解放し、リアセンブルバッファをリアセンブルバッファ領域204から解放する。ここで解放とは、解放対象の領域をその後、自由に使用可能にすることを意味する。
最後に、ステップS804で、引数(Entry)の管理エントリをリアセンブル処理対象管理テーブル202から解放する。この処理でリアセンブル終了処理は完了となる。
<第一の実施形態のリアセンブル処理>
ここで、プロトコル処理装置におけるIPデータグラムを受信した場合の処理手順を、図9を用いて説明する。尚、このリアセンブル処理は、IPデータグラムを受信したことをトリガーとしてCPU101によって実行される。
図9は、第一の実施形態におけるIPデータグラムの受信処理を示すフローチャートである。まず、ステップS901で、IPデータグラムを受信する。IPデータグラムは、外部からPHY105を通して一旦MAC104に受信される。その後、DMAC106によりRAM103内の受信データ領域201にバス107を介して転送される。ここで、受信データの転送はDMAC106を用いずに、CPU101が受信データ領域201に転送しても良い。
次に、ステップS902で、CPU101は、受信したIPデータグラムのIPヘッダを解析する。尚、ステップS901で受信したIPデータグラムを受信IPデータグラムと呼び、受信IPデータグラムのIPヘッダを受信IPヘッダ、受信IPデータグラムのペイロードデータを受信ペイロードと呼ぶ。また、フラグメント処理前のペイロードにおける終端部分のペイロードを持つフラグメント化されたIPデータグラムを終端IPデータグラムと呼ぶ。
次に、ステップS903では、ステップS902で行った受信IPヘッダの解析結果に基づいて受信IPデータグラムがフラグメント化されているか否かを判定する。ここでは、受信IPヘッダのMF(More Fragment)フラグ、フラグメントオフセット(Fragment Offset)フィールドにより判定する。
具体的には、まずMFフラグがセット(“1”の場合)されているか否かを確認する。MFフラグがセットされている場合は、受信IPデータグラムは終端IPデータグラムではないことを意味する。MFフラグがセットされていない場合、受信IPデータグラムはフラグメントされていないか、或いは終端IPデータグラムであることを意味する。
このMFフラグがセットされていない場合は、更にフラグメントオフセットフィールドを確認する。このフラグメントオフセットフィールドが“0”の場合は、受信IPデータグラムはフラグメント化されていないことを意味する。しかし、フラグメントオフセットフィールドが“0”以外の値の場合には、受信IPデータグラムは終端IPデータグラムであることを意味する。
MFフラグがセットされている場合は、受信したIPデータグラムはフラグメント化されていると判断する。また、MFフラグがセットされておらず、かつフラグメントオフセットフィールドが“0”以外の値である場合は、受信したIPデータグラムはフラグメント化されていると判断する。そして、MFフラグがセットされておらず、かつフラグメントオフセットフィールドが“0”である場合、受信IPデータグラムはフラグメント化されていない通常のIPデータグラムであると判断する。
上述のステップS903で、受信IPデータグラムがフラグメント化されていると判断した場合はステップS904へ処理を進め、リアセンブル処理対象外管理テーブル205を検索し、受信IPヘッダに合致する管理エントリが存在するか否かを確認する。即ち、受信IPデータグラムがリアセンブル処理対象外であるか否かを判定する。この処理は、受信IPヘッダ内の送信元アドレス、宛先アドレス、識別子が、それぞれ管理エントリの送信元アドレス301、宛先アドレス302、及び識別子303と一致するかを確認する処理である。
ここで、上記3項目が一致する管理エントリが存在した場合、受信IPデータグラムはリアセンブル処理対象外であることを意味する。この場合はリアセンブル処理を行わず、IPデータグラムの受信処理を終了する。ここで、当該受信IPデータグラム自体を受信データ領域201から削除する、つまり受信IPデータグラムを破棄しても良い。
第一の実施形態では、リアセンブル処理をメインに説明しており、IPデータグラムを受信した際に行う処理内容が他にも存在する可能性がある。受信IPデータグラムの破棄は、その他の処理の全て、或いは一部を行わないということを意味する。
ステップS904で、リアセンブル処理対象外と判断した場合には、受信IPデータグラムに対するリアセンブル処理を実行しないが、その後、当該IPデータグラムを破棄するか否かについては制限しない。
一方、上述のステップS904でリアセンブル処理対象外ではないと判定された場合は、ステップS905へ処理を進める。このステップS905では、リアセンブル処理対象管理テーブル202を検索し、受信IPヘッダに合致する管理エントリが存在するか否かを確認する。ここでは、ステップS904と同様に受信IPヘッダ内の送信元アドレス、宛先アドレス、識別子が、それぞれ管理エントリの送信元アドレス301、宛先アドレス302、及び識別子303と一致するか否かを確認する。
ここで、上記3項目が一致する管理エントリが存在しない場合、受信IPデータグラムに対するリアセンブル処理はまだ開始していない、つまり受信IPヘッダを持つIPデータグラムのリアセンブル処理を開始する必要があることを意味する。そのため、ステップS906へ処理を進め、リアセンブル初期化処理(図6)を実行する。このとき、引数のHeader(IPヘッダ)には、受信IPヘッダを与える。そして、このリアセンブル初期化処理(図6)を実行した後、ステップS907へ処理を進める。
一方、ステップS905で、受信IPヘッダに合致する管理エントリが存在する場合は、受信IPデータグラムに対するリアセンブル処理は既に開始されていることを意味する。そこで、リアセンブル初期化処理(図6)を実行せず、ステップS907へ処理を進め、リアセンブル通常処理(図7)を実行する。このとき、引数のEntryとして、受信IPデータグラムのリアセンブル処理対象管理テーブル202における管理エントリを与える。ここで、その管理エントリは、ステップS906で、リアセンブル初期化処理(図6)が実行された場合は、ステップS601で新規作成した管理エントリを意味する。一方、ステップS906をスキップしてきた場合は、ステップS905で合致した管理エントリを意味する。また、引数のHeaderには、受信IPヘッダを与える。
次に、ステップS908で、リアセンブル処理が完了したか、つまりフラグメント化されたIPデータグラムのペイロードデータを全て受信したか否かを確認する。この処理は、現在の管理エントリに関連付けられたビットテーブルのビットが全て“1”であるか否かを確認する処理である。ただし、リアセンブル通常処理(図7)のステップS705(ビットテーブルに対する終端処理)で、上述した方法で終端処理を行っていなかった場合は、この限りではない。
ここで、終端処理とは、受信したIPデータグラムに対応する部分以降のビットを全て“1”にセットする処理である。何れにしても、上述のリアセンブル通常処理(図7)のステップS705で行った終端処理に応じて、リアセンブル処理が完了したか否かを確認すれば良い。
ステップS908で、リアセンブル処理は未完了と判断した場合は、この処理を完了し、次のIPデータグラムが受信されると、再度ステップS901から処理を行う。一方、ステップS908で、リアセンブル処理を完了したと判断した場合は、ステップS909へ処理を進め、リアセンブル終了処理(図8)を実行する。このとき、引数のEntryには現在の管理エントリを与える。このリアセンブル終了処理(図8)により、管理エントリ、その管理エントリに関連付けられたビットテーブル、リアセンブルバッファが解放され、リアセンブルタイマが計時を停止する。
次に、ステップS910で、リアセンブル処理が完了したIPデータグラムの管理エントリをリアセンブル処理対象外管理テーブル205に移動する。ここで、移動とは、通常コピーを指すが、リアセンブル処理対象管理テーブル202と、リアセンブル処理対象外管理テーブル205の構造によって別の処理になる可能性もある。即ち、上述したように、二つの領域をRAM103の物理領域に一つの領域としてリンクリストや、識別フラグにより管理している場合は、それぞれ別の処理を行う必要がある。何れにしてもステップS910の処理の後、他のIPデータグラム受信時に行う一連の処理において、ステップS904で行うリアセンブル処理対象外管理テーブル205の検索時に当該管理エントリが検索対象に入っていれば良い。
次に、ステップS911で、リアセンブル処理が完了したフラグメント前のペイロードデータを上位層に受け渡す。尚、ステップS903で受信したIPデータグラムがフラグメントされていないと判断した場合も、ステップS911でペイロードデータを上位層に受け渡す。ここで上位層は、通常はTCP処理を行うソフトウェアであるが、第一の実施形態では、特に限定はしない。
ここで、プロトコル処理装置におけるリアセンブルタイマがタイムアウトした場合の処理手順を説明する。プロトコル処理装置は、リアセンブルタイマがタイムアウトしたことをトリガーとして、処理を実行する。
尚、リアセンブル初期化処理(図6)で説明したように、このタイムアウト処理開始時には、タイムアウトしたリアセンブル処理の管理情報が格納されているリアセンブル処理対象管理テーブル202内の管理エントリが特定できていることを前提とする。
所定のリアセンブルタイマがタイムアウトし、それがCPU101へ通知される。同時に、CPU101はタイムアウトしたリアセンブル処理の管理情報である管理エントリを特定する。そして、図9に示すステップS909の処理と同様に、リアセンブル終了処理(図8)を実行する。ここで、引数のEntryには、タイムアウトしたリアセンブル処理の管理情報である管理エントリを与える。次に、ステップS910と同様に、管理エントリをリアセンブル処理対象外管理テーブル205に移動する。
第一の実施形態によれば、既にリアセンブル処理が完了した場合、或いはタイムアウトしたIPデータグラムのフラグメントIPデータグラムを受信した場合、当該IPデータグラムに対するリアセンブル処理を行わないことで以下の効果が得られる。
リソースを余分に確保することがなくなり、リソースの浪費を削減できる。これにより、プロトコル処理におけるパフォーマンスの低下を抑制でき、システム構築時のコストを低減できる。
[第二の実施形態]
次に、図面を参照しながら本発明に係る第二の実施形態を詳細に説明する。第二の実施形態は、第一の実施形態とIPデータグラム受信時の挙動のみが異なり、それ以外は同一である。
尚、第二の実施形態におけるプロトコル処理装置の構成は、図1を用いて説明した第一の実施形態と同じであり、その説明は省略する。また、リアセンブル処理で使用する管理情報も図2〜図5を用いて説明した第一の実施形態と同じであり、その説明も省略する。
更に、リアセンブル初期化処理、リアセンブル通常処理、リアセンブル終了処理も図6〜図8を用いて説明した第一の実施形態と同じであり、その説明も省略する。
<第二の実施形態のリアセンブル処理>
ここで、プロトコル処理装置におけるIPデータグラムを受信した場合の処理手順を、図10を用いて説明する。尚、このリアセンブル処理は、IPデータグラムを受信したことをトリガーとしてCPU101によって実行される。
図10は、第二の実施形態におけるIPデータグラムの受信処理を示すフローチャートである。このステップS1001〜S1003までの処理は、第一の実施形態で説明した図9に示すステップS901〜S903までの処理と同じであり、その説明は省略する。
次に、ステップS1004でリアセンブル処理対象管理テーブル202を検索し、受信IPヘッダに合致する管理エントリが存在するか否かを確認する。この確認処理は、第一の実施形態と同様であり、その説明は省略する。
ここで、リアセンブル処理対象管理テーブル202に管理エントリが存在しない場合は、ステップS1005へ処理を進め、リアセンブル初期化処理(図6)を実行する。このとき、引数のHeader(IPヘッダ)には、受信IPヘッダを与える。そして、このリアセンブル初期化処理(図6)を実行した後、ステップS1006へ処理を進める。
一方、ステップS1004で受信IPヘッダに合致する管理エントリが存在した場合は、リアセンブル処理(図6)を実行せず、ステップS1006へ処理を進める。ステップS1006では、リアセンブル処理対象外管理テーブル205を検索し、受信IPヘッダに合致する管理エントリが存在するかを確認する。即ち、受信IPデータグラムがリアセンブル処理対象外であるか否かを判定する。この判定処理は、第一の実施形態と同様であり、その説明は省略する。
ここで、リアセンブル処理対象外管理テーブル205に一致する管理エントリが存在した場合は、受信IPデータグラムはリアセンブル処理対象外であることを意味する。この場合はリアセンブル処理を行わず、ステップS1012へ処理を進め、リアセンブル終了処理(図9)を実行し、その後、IPデータグラムの受信処理を完了する。
即ち、第一の実施形態では、リアセンブル処理を開始しないのに対して第二の実施形態ではリアセンブル処理は一旦開始するもののリアセンブル処理対象外である場合は、即座にリアセンブル終了処理を行う。
一般的に見ると、処理ステップが少ない分、第一の実施形態が有利に見えるが、第二の実施形態にもメリットがある。それは、ファームウェアの仕組みに依存する。新規に開発するファームウェアは如何様にも開発可能であるため、第一の実施形態を選択することが望ましい。しかしながら、既に開発済みのファームウェアを変更する場合はこの限りではない。つまり、既存のファームウェアがヘッダ解析とリアセンブル開始処理が密接に結びついており、修正が困難である場合が考えられる。
このような場合、ヘッダ解析とリアセンブル開始処理に変更を行わず一旦リアセンブル処理を開始してしまい、その後、リアセンブル処理を取り止めるという第二の実装形態の方がファームウェアの修正量、難易度ともに優位であると考えられる。
また、ステップS1012のリアセンブル終了処理(図9)の後、当該受信IPデータグラム自体を受信データ領域201から削除する、つまり受信IPデータグラムを破棄しても良い。
第二の実施形態では、リアセンブル処理をメインに説明しており、IPデータグラムを受信した際に行う処理内容が他にも存在する可能性がある。受信IPデータグラムの破棄は、その他の処理の全て、或いは一部を行わないということを意味する。
従って、ステップS1006でリアセンブル処理対象外と判断した場合には、受信IPデータグラムに対するリアセンブル処理を実行しないが、その後、当該IPデータグラムを破棄するか否かについては制限しない。
一方、上述のステップS1006でリアセンブル処理対象外ではないと判定された場合は、ステップS1007へ処理を進める。このステップS1007〜S1011の処理は、第一の実施形態におけるステップS907〜S911の処理と同じであり、その説明は省略する。
尚、第一及び第二の実施形態においては、ネットワークプロトコルのリアセンブル処理をIPデータグラムの受信時に行うことを前提に説明したが、必ずしもIPデータグラムの受信をトリガーにして実行する必要はない。プロトコル処理装置の実装によっては、例えばある程度受信済みIPデータグラムがたまった時点で処理を開始するという実装形態も考えられる。本発明は、IPデータグラムを受信し、RAM103の受信データ領域201に格納されている状態であれば実施可能であり、上述したような構成であっても、本発明を適用できることは言うまでもない。
また、第一及び第二の実施形態においては、管理エントリやビットテーブル、リアセンブルバッファの確保において、それぞれの領域の容量が不足し、生成できなかった場合に関しては言及していない。しかし、本事象が発生した場合でも、本発明の適用範囲を何ら減じることはない。例えば、生成できなかった場合には、リアセンブル処理をその時点で放棄し、IPデータグラムを破棄しても構わない。本来、通常のプロトコル処理装置では、リアセンブル処理を並列に実行可能な数を制限しており、制限数を超えてリアセンブル処理を行うことはない。
また、本発明は、TCP/IPプロトコルのIP層に適用される内容であり、上位層のTCP層では、一定時間内に受信できなかったTCPパケットは再送を促す仕組みが定義されている。これにより、IP層で一度リアセンブル処理を放棄した場合でも、TCP層レベルの再送要求により、再度当該データが送信機器から到着することとなる。
また、第一及び第二の実施形態では、管理エントリやビットテーブルのRAM103内での割り当て方法及び解放方法に関して明記していないが、何れの方法であっても本発明を適用できることは言うまでもない。例えば、通常の処理装置では、固定長のデータ領域を確保する場合には、予め所定の個数分のデータ領域を確保しておき、それぞれのデータ領域に対する使用状態を示すフラグ等を準備し、当該フラグによって確保及び解放を管理することが多い。
更に、可変長のデータ領域を確保する場合には、ファイルシステムなどのソフトウェアによって所定サイズのデータ領域の確保及び解放を管理することが多い。何れにおいても、またその他の方法でも、管理エントリ及びビットテーブルの確保、解放が行える限り、本発明の適用範囲である。
また更に、第一及び第二の実施形態では、リアセンブル処理対象外管理テーブル205に設定した管理エントリの削除に関して明記していないが、何れの削除手法であっても、本発明を適用できることは言うまでもない。例えば、管理エントリの登録時に、当該管理エントリの有効期間後にタイムアウトするようにタイマを設定し、タイムアウト時に削除するようにしても良い。
しかしながら、上記の方法では登録されている管理エントリ数分タイマが必要になってしまう。これに対して、例えば周期タイマを利用して登録した後、所定回数分周期タイマが計時したら削除するなどの方法を適用すれば複数のタイマを使用する必要はない。この有効期間はIPデータグラムのIPヘッダ内に含まれるTTL(Time To Live)フィールドを基に算出する方法が考えられる。即ち、TTLフィールドが通信経路上で経由できる中継機器の数を示していることから、各中継機器の最大遅延時間(数十ms〜数百ms等)とTTLフィールド値を乗算して算出した時間を有効期間とするという方法である。
また、有効期間は固定値にするという手法も考えられる。何れの方法、また他の方法を用いて有効期間を決定しても、有効期間内は前記管理エントリを保有しているため本発明による効果が期待できる。
これに対して、有効期間は設けず、リアセンブル処理対象外管理テーブル205に登録可能な管理エントリ数を設定するという手法も考えられる。即ち、登録可能な管理エントリ数を超えて登録を行う場合、現在登録されている管理エントリを削除し、新たに登録するという手法である。この場合、削除対象の管理エントリを選択する手法として、LRU(Least Recently Used)やFIFO(First-In First-Out)等の手法が考えられる。また、その他何れの方法を用いても、管理エントリを少なくとも1つ以上保有している限り、本発明の効果が期待できる。
更に、第一及び第二の実施形態では、リアセンブル処理対象外管理テーブルに登録した管理エントリの利用方法として、送信元アドレス、宛先アドレス、識別子の3つが合致した場合にリアセンブル処理を行わないように制御する手法のみを説明した。しかし、その他の利用方法を適用し、IPデータグラム受信時にリアセンブル処理を行うか否かを別の判定方法により実現しても良い。
また、第一及び第二の実施形態では、リアセンブル処理が完了したIPデータグラムとリアセンブル処理にタイムアウトしたIPデータグラムを同等に扱う構成で説明したが、それぞれ異なる管理方法をとっても良い。例えば、リアセンブル処理にタイムアウトした管理エントリにおいて、同じ送信元であった場合には本システムのハードウェアリソースの浪費を狙ったDoS攻撃である可能性を想像できる。
このような場合には、送信元IPアドレスでのみの合致判定によってリアセンブル処理を行うか否かを判定するような特別な管理エントリテーブルを構成するなどの手法が考えられる。
また、例えばリアセンブル処理にタイムアウトした管理エントリに合致するIPデータグラムを所定数以上受信した場合、当該IPデータグラムの送信元との通信経路が原因で、到着タイミングに幅が出てしまっている可能性を想像できる。このような場合には、リアセンブル初期化処理においてリアセンブルタイマのタイムアウト時間を所定時間分長くすることで、リアセンブル処理完了の確率の向上を狙う等の手法が考えられる。
また、例えばリアセンブル処理が完了した管理エントリに合致するIPデータグラムが一切到着しなかった場合や、送信元が明らかに同一ネットワーク内である場合には、重複パケットが遅れて到着するような状況が発生しにくいことが想像できる。
このような到着状況の場合には、リアセンブル処理完了時に、当該管理エントリを登録しないように構成し、管理エントリによるメモリ消費量の削減を狙うなどの手法が考えられる。
このように、リアセンブル処理対象外の管理エントリ情報との合致回数・確率・タイミング、合致内容などにより何らかの学習を行い、リアセンブル処理対象外であるか否かの判定やリアセンブルタイマ時間などの調整を行う。
従って、より木目細やかな管理が行えるようになり、総合的なネットワーク処理効率の向上や処理速度の向上が期待できる。
次に、第一及び第二の実施形態に対する補足を説明する。第一及び第二の実施形態と組み合わせて実施する内容であるためその差分のみを説明する。該補足は、リアセンブル処理対象外管理テーブル205内の管理エントリの合致条件、保持期間及び破棄条件を明確にするものである。
まず、合致条件について説明する。リアセンブル処理対象外管理テーブル205内の管理エントリに合致するか否かは、二つの合致条件が存在する。一つ目の合致条件は、送信元アドレス、宛先アドレス及び識別子の3つ全ての一致である。該合致条件によりリアセンブル処理対象外と判断されるのは、既にリアセンブル処理が完了したIPデータグラム或いはタイムアウトしたIPデータグラムに属するフラグメントIPデータグラムのみである。一方、二つ目の合致条件は、送信元アドレス、宛先アドレスの2つのみの一致がある。この方法によりリアセンブル処理対象外と判断されるのは、既にリアセンブル処理が完了したIPデータグラム、或いはタイムアウトしたIPデータグラムを送信した送信元クライアントが送信する全てのフラグメントIPデータグラムである。以下、一つ目の合致条件をIPデータグラム合致条件と呼び、二つ目の合致条件をクライアント合致条件と呼ぶこととする。
これら二つの合致条件を状況によって使い分けることでより高い効果が期待できる。例えば、リアセンブル処理が完了した場合に追加する管理エントリにおいては、IPデータグラム合致条件を適用する。リアセンブル処理が完了した場合に、以降リアセンブル処理対象外と判断したいのは、通信経路上での複製や重複により作成されたフラグメントIPデータグラムのみで、当該フラグメントIPデータグラムはIPデータグラム合致条件で識別することができる。一方、リアセンブル処理がタイムアウトした場合には、IPデータグラム合致条件とクライアント合致条件を使い分ける。同じクライアントによるリアセンブル処理のタイムアウトの回数や頻度等に閾値を設定し、該閾値を超えるまではIPデータグラム合致条件を適用し、閾値を超えた後はクライアント合致条件を適用する。例えば、所定回数以上発生した場合には、通信自体に何らかの問題がある場合やDoS攻撃の可能性が考えられるためである。
次に、保持期間及び破棄条件について説明する。合致条件と同様にリアセンブル処理が完了した場合に追加する管理エントリと、タイムアウトした場合に追加する管理エントリで保持期間及び破棄条件を使い分けることでより高い効果が期待できる。例えば、リアセンブル処理が完了した場合に追加する管理エントリにおいては、IPデータグラムの生存時間(TTL:Time to Live)を保持期間に設定し、破棄条件は保持期間経過とする。リアセンブル処理が完了した場合に、以降リアセンブル処理対象外と判断したいのは、通信経路上での複製や重複により作成されたフラグメントIPデータグラムのみで、当該フラグメントIPデータグラムは、生存時間(TTL)を超えて到達することはない。また、リアセンブル処理がタイムアウトした場合には、前記合致条件に連動して保持時間と破棄条件を変更する。すなわち、同じクライアントによるリアセンブル処理のタイムアウトの回数や頻度等に閾値を設定し、該閾値を超えるまでは保持期間に生存時間(TTL)を適用し、破棄条件は保持期間経過とする。一方、閾値を超えた後は保持期間を無期限に設定し、破棄条件は所定時間の間対象のクライアントからパケットの送信が無かった場合に破棄と設定する。このように設定することで、通信自体に何らかの問題がある場合やシステムの性能低下や破綻を目的としたDoS攻撃に対し、リアセンブル処理に使用するリソースの枯渇を抑制することができる。
尚、本発明は複数の機器(例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアプログラムを記録した記録媒体を、システム或いは装置に供給し、システム或いは装置のコンピュータ(CPU若しくはMPU)が読み取り可能な記録媒体からプログラムを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。

Claims (16)

  1. 情報処理装置であって、
    フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理手段と、
    リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持手段と、を有し、
    前記処理手段は、前記保持手段に保持された情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理せず、
    前記保持手段は、前記処理手段によるリアセンブル処理が終了したIPデータグラムを特定する情報を保持することを特徴とする情報処理装置。
  2. 情報処理装置であって、
    フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理手段と、
    リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持手段と、を有し、
    前記処理手段は、前記保持手段に保持された情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理せず、
    前記保持手段は、一定時間内にアセンブル処理が終了しなかったIPデータグラムを特定する情報を保持することを特徴とする情報処理装置。
  3. 情報処理装置であって、
    フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理手段と、
    リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持手段と、を有し、
    前記処理手段は、前記リアセンブル処理を開始した後、前記保持手段に保持される情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理しないで前記開始したリアセンブル処理を終了させることを特徴とする情報処理装置。
  4. 前記保持手段は、前記処理手段によるリアセンブル処理が終了したIPデータグラムを特定する情報を保持することを特徴とする請求項2または3に記載の情報処理装置。
  5. 前記保持手段は、一定時間内にアセンブル処理が終了しなかったIPデータグラムを特定する情報を保持することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記保持手段は、前記処理手段によるリアセンブル処理が終了したIPデータグラムを送信した送信元クライアントを特定する情報を保持することを特徴とする請求項1または3に記載の情報処理装置。
  7. 前記保持手段は、一定時間内にアセンブル処理が終了しなかったIPデータグラムを送信した送信元クライアントを特定する情報を保持することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記処理手段は、前記リアセンブル処理を開始した後、前記保持手段に保持される情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理しないで前記開始したリアセンブル処理を終了させることを特徴とする請求項1または2に記載の情報処理装置。
  9. 前記処理手段は、前記リアセンブル処理しないIPデータグラムを破棄することを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記処理手段は、前記フラグメント化されたIPデータグラムを格納するリアセンブルバッファ、IPデータグラムの到着状況を管理するビットマップテーブル、リアセンブル処理のタイムアウトを計時するリアセンブルタイマのうち、少なくとも何れか一つを確保することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
  11. 前記保持手段に保持される情報の保持期間が経過した場合には、前記保持手段に保持される情報を破棄する破棄手段を更に有することを特徴とする請求項1乃至10のいずれか1項に記載の情報処理装置。
  12. 前記保持手段に保持される情報の破棄条件を設定する設定手段と、
    前記設定手段に設定された破棄条件に合致する情報を破棄する破棄手段とを更に有することを特徴とする請求項1乃至11のいずれか1項に記載の情報処理装置。
  13. 情報処理装置の処理方法であって、
    処理手段が、フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理工程と、
    保持手段が、リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持工程と、を有し、
    前記処理工程では、前記保持工程にて保持された情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理せず、
    前記保持工程では、前記処理工程にてリアセンブル処理が終了したIPデータグラムを特定する情報を保持することを特徴とする情報処理装置の処理方法。
  14. 情報処理装置の処理方法であって、
    処理手段が、フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理工程と、
    保持手段が、リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持工程と、を有し、
    前記処理工程では、前記保持工程にて保持された情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理せず、
    前記保持工程では、一定時間内にアセンブル処理が終了しなかったIPデータグラムを特定する情報を保持することを特徴とする情報処理装置の処理方法。
  15. 情報処理装置の処理方法であって、
    処理手段が、フラグメント化されたIPデータグラムを受信し、該IPデータグラムをリアセンブル処理する処理工程と、
    保持手段が、リアセンブル処理対象外のIPデータグラムを特定する情報を保持する保持工程と、を有し、
    前記処理工程では、前記リアセンブル処理を開始した後、前記保持工程にて保持される情報で特定されるIPデータグラムを受信した場合、該IPデータグラムをリアセンブル処理しないで前記開始したリアセンブル処理を終了させることを特徴とする情報処理装置の処理方法。
  16. コンピュータ請求項1乃至12のいずれか1項に記載の情報処理装置として動作させるためのプログラム
JP2009126822A 2008-07-18 2009-05-26 ネットワーク処理装置及びその処理方法 Expired - Fee Related JP5473406B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009126822A JP5473406B2 (ja) 2008-07-18 2009-05-26 ネットワーク処理装置及びその処理方法
US12/501,407 US20100014542A1 (en) 2008-07-18 2009-07-11 Network processing apparatus and processing method thereof

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008187913 2008-07-18
JP2008187913 2008-07-18
JP2009126822A JP5473406B2 (ja) 2008-07-18 2009-05-26 ネットワーク処理装置及びその処理方法

Publications (3)

Publication Number Publication Date
JP2010045767A JP2010045767A (ja) 2010-02-25
JP2010045767A5 JP2010045767A5 (ja) 2012-06-28
JP5473406B2 true JP5473406B2 (ja) 2014-04-16

Family

ID=41530256

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009126822A Expired - Fee Related JP5473406B2 (ja) 2008-07-18 2009-05-26 ネットワーク処理装置及びその処理方法

Country Status (2)

Country Link
US (1) US20100014542A1 (ja)
JP (1) JP5473406B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5070125B2 (ja) * 2008-05-19 2012-11-07 キヤノン株式会社 受信装置及びその方法、通信システム及びその方法、並びに、プログラム
JP2012049883A (ja) * 2010-08-27 2012-03-08 Nec Access Technica Ltd 通信装置およびパケット処理方法
US8824437B2 (en) * 2011-03-02 2014-09-02 Ricoh Company, Ltd. Wireless communications device, electronic apparatus, and methods for determining and updating access point
JP5429902B2 (ja) * 2012-03-23 2014-02-26 Necインフロンティア株式会社 通信システム、通信方法、及び通信プログラム
US8761181B1 (en) * 2013-04-19 2014-06-24 Cubic Corporation Packet sequence number tracking for duplicate packet detection
JPWO2016103568A1 (ja) * 2014-12-26 2017-10-12 日本電気株式会社 パケット処理装置、方法、プログラム
US10089339B2 (en) * 2016-07-18 2018-10-02 Arm Limited Datagram reassembly

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058974B1 (en) * 2000-06-21 2006-06-06 Netrake Corporation Method and apparatus for preventing denial of service attacks
DE60103331T2 (de) * 2000-07-05 2004-09-23 Roke Manor Research Ltd., Romsey Verfahren zum Betreiben eines Puffers für das Wiederzusammenstellen von Paketen und Netzwerk-Router
US7356599B2 (en) * 2001-08-30 2008-04-08 International Business Machines Corporation Method and apparatus for data normalization
US7403999B2 (en) * 2001-12-28 2008-07-22 International Business Machines Corporation Classification support system and method for fragmented IP packets
US8370936B2 (en) * 2002-02-08 2013-02-05 Juniper Networks, Inc. Multi-method gateway-based network security systems and methods
US7843968B2 (en) * 2002-09-30 2010-11-30 Sanyo Electric Co., Ltd. Communication apparatus and applications thereof
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
US7706378B2 (en) * 2003-03-13 2010-04-27 Sri International Method and apparatus for processing network packets
WO2005050935A1 (ja) * 2003-11-21 2005-06-02 Mitsubishi Denki Kabushiki Kaisha 侵入検知装置およびその方法
US7792147B1 (en) * 2004-02-09 2010-09-07 Symantec Corporation Efficient assembly of fragmented network traffic for data security
JP4490331B2 (ja) * 2004-08-03 2010-06-23 富士通株式会社 断片パケット処理方法及びこれを用いるパケット転送装置
US20060198375A1 (en) * 2004-12-07 2006-09-07 Baik Kwang H Method and apparatus for pattern matching based on packet reassembly
JP2007267051A (ja) * 2006-03-29 2007-10-11 Nec Engineering Ltd パケット受信回路
US7724776B2 (en) * 2007-10-30 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Method and ingress node for handling fragmented datagrams in an IP network
US8320372B2 (en) * 2008-06-23 2012-11-27 Alcatel Lucent Processing of packet fragments

Also Published As

Publication number Publication date
JP2010045767A (ja) 2010-02-25
US20100014542A1 (en) 2010-01-21

Similar Documents

Publication Publication Date Title
JP5473406B2 (ja) ネットワーク処理装置及びその処理方法
US8526441B2 (en) System and method for handling out-of-order frames
US7613813B2 (en) Method and apparatus for reducing host overhead in a socket server implementation
US7953817B2 (en) System and method for supporting TCP out-of-order receive data using generic buffer
US7535907B2 (en) TCP engine
US9485178B2 (en) Packet coalescing
US7397800B2 (en) Method and system for data placement of out-of-order (OOO) TCP segments
EP1537695B1 (en) System and method for tcp offload
US7065086B2 (en) Method and system for efficient layer 3-layer 7 routing of internet protocol (“IP”) fragments
TWI332150B (en) Processing data for a tcp connection using an offload unit
US20050243834A1 (en) Packet transfer method and device
US7237031B2 (en) Method and apparatus for caching protocol processing data
KR101018575B1 (ko) Rx fifo 버퍼를 사용하여 고속 네트워크애플리케이션에서 rx 패킷을 프로세싱하는 시스템 및방법
JP4779955B2 (ja) パケット処理装置及びパケット処理方法
US20070022212A1 (en) Method and system for TCP large receive offload
EP1473867A2 (en) System, method, and computer program product for ack promotion in a cable modem environment
WO2010075795A1 (zh) 分片信息处理的方法和装置
US20150264141A1 (en) Communication apparatus, information processor, communication method, and computer-readable storage medium
EP1460804B1 (en) System and method for handling out-of-order frames (fka reception of out-of-order tcp data with zero copy service)
JP2007274056A (ja) データグラム再組立装置
US20060221827A1 (en) Tcp implementation with message-count interface
JP4769316B2 (ja) パケットキューイング装置およびパケットキューイング方法
WO2004021143A2 (en) Method and system for data placement of out-of-order (ooo) tcp segments

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131029

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140204

R151 Written notification of patent or utility model registration

Ref document number: 5473406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees