通信装置、その処理方法及びプログラム
【課題】簡単な構成で分割されたパケットの受信処理を柔軟に行なう。
【解決手段】通信装置は、受信パケットが分割パケットであれば、ヘッダ情報から分割前における分割パケットの位置を規定する情報と、分割パケットの識別情報とを含むセグメントデータを抽出し、受信パケットが分割パケットであり且つ最後尾の分割パケットであれば、最後尾の分割パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する。セグメントデータと、パケット長情報に識別情報を対応付けた情報とを保持するセグメントデータベースが格納される。通信装置は、抽出されたセグメントデータと、セグメントデータと同一の識別情報を持つセグメントデータベースに格納されたセグメントデータとにおける位置を規定する情報の関係を比較し、比較結果に基づきセグメントデータの統合処理を実行し、処理された位置を規定する情報に基づいてセグメントデータベースを更新する。
【解決手段】通信装置は、受信パケットが分割パケットであれば、ヘッダ情報から分割前における分割パケットの位置を規定する情報と、分割パケットの識別情報とを含むセグメントデータを抽出し、受信パケットが分割パケットであり且つ最後尾の分割パケットであれば、最後尾の分割パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する。セグメントデータと、パケット長情報に識別情報を対応付けた情報とを保持するセグメントデータベースが格納される。通信装置は、抽出されたセグメントデータと、セグメントデータと同一の識別情報を持つセグメントデータベースに格納されたセグメントデータとにおける位置を規定する情報の関係を比較し、比較結果に基づきセグメントデータの統合処理を実行し、処理された位置を規定する情報に基づいてセグメントデータベースを更新する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、その処理方法及びプログラムに関する。
【背景技術】
【0002】
Ethernet(登録商標)以外のネットワークを構築する場合や、最大転送単位(MTU)が異なるネットワーク同士を結合する場合、MTUが小さい方のネットワークに併せてTCP/IPパケットのサイズを変更する必要がある。
【0003】
この問題を解決するため、IP(Internet Protocol)を記述しているRFC791では、インターネットデータグラムの分割手続きとその再構成手続きとが定義される(非特許文献1)。この方式を用いれば、ネットワーク間のMTUの違いを意識せずに、ネットワークを構築できる。この場合、ネットワーク間を接続する中継器において、パケットを分割し、その分割されたパケットを受信側ステーションにおいて再構成する。
【0004】
MTUの異なるネットワークが相互に接続される環境においては、MTUの大きいネットワークからMTUの小さいネットワークにデータを送信する場合、大きいサイズのパケットを伝送できない。上述したRFC791では、IPデータグラムのペイロード部分をMTUサイズ以下になるように分割する手法が定義されている。
【0005】
分割パケットは、送信側ステーションからの送信時や、ルータなどで異なるネットワークに中継される時に生じる。分割パケットは、異なるネットワークを通じて受信側ステーションに到達する場合もある。分割パケットは、全て同じサイズで構成される場合もあれば、そうでない場合もある。また、分割パケットは、分割された順序通りに受信側ステーションに到達する保証も無い。
【0006】
ここで、受信側ステーションにおいては、パケットの再構成が完了するまでそれまでに受信した分割パケットをIP層に保留する必要がある。このため、IP層では、分割パケットの再構成処理と、分割パケット全ての受信完了を判定する判定処理とが実施される必要がある。
【0007】
受信完了の判定には、リンクドリストを用いる方法が知られている。リンクドリスト方式では、分割パケットのヘッダ情報(パケット長フィールド、フラグメント・オフセットフィールド)から分割パケットの先頭アドレス及び終端アドレスをリンクドリスト情報として抽出する。リンクドリスト情報が得られる度に既存のリンクドリスト情報を用いて、連続したデータであるか否かを判断し、リンクの先頭データと終端データとを更新していく。
【0008】
再構成後のパケット長は、最後尾のパケットのパケット長フィールドとフラグメント・オフセットフィールドとに基づいて判明する。そのため、その時点における先頭データ及び終端データの情報と、パケット長とを比較することによって分割パケットの受信完了を判定できる。特許文献1の技術では、シフトレジスタ上にリンクドリスト情報を更新・蓄積し、受信完了通知を生成する方式が提案されている。
【0009】
また、TCP層では、ヘッダに記述されたシーケンス番号を基にリオーダリングと呼ばれる手法を用いてパケットを組み立てる。TCPにおいては、データストリームによる通信が行なわれており、ストリーム中のデータの固まりをセグメントと呼称される。TCPの受信パケットには、TCPのセグメントが含まれており、シーケンス番号にセグメントの位置が示されている。連続したセグメントを組み立てれば、送信されたTCPストリームを組み立てることができる。しかし、TCP/IPネットワーク上では、宛先までパケットが到達する保障が無いため、パケットを受信した宛先では、ストリームの最新受信位置としてAcknowledge番号を送信元に通知する。送信元では返送されたAcknowledgeをもって宛先がTCPストリームを受信したことが知らされる(スライディングウインドウ)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006−81030号公報
【非特許文献】
【0011】
【非特許文献1】RFC791(http://www.ietf.org/rfc/rfc0793.txt?number=791)
【非特許文献2】RFC793(http://www.ietf.org/RFC/RFC0793.txt?number=793)
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかし、上述した分割パケットの受信完了の判定方法では、種々の課題がある。例えば、分割パケットの受信順序は、入れ替わる可能性があるので、パケット識別番号毎に既存のリンクドリスト情報をソートする必要がある。そのため、パケットを受信する都度、ソートを実施し、それにより得られたリンクドリスト情報と受信した分割パケットとを比較し、リンクドリスト情報を統合したり、また、追加したりする必要がある。
【0013】
また、ASIC(Application Specific Integrated Circuit)等において、分割パケットの受信完了を判定するモジュールを組み込む場合、ビット幅、深さなどが予め決められた専用のシフトレジスタを設ける必要がある。そのため、大規模化が難しく、柔軟なハードウェアを構築するのが困難である。
【0014】
本発明は、上記課題に鑑みてなされたものであり、簡単な構成で分割されたパケットの受信処理を柔軟に行なうことを目的とする。
【課題を解決するための手段】
【0015】
上記課題を解決するため、本発明の一態様による通信装置は、受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段と、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段と、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段と、前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段と、前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリと、前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段とを具備する。
【発明の効果】
【0016】
本発明によれば、本構成を有さない場合よりも、簡単な構成で分割されたパケットの受信処理を柔軟に行なえる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施の形態に係わる通信装置の構成の一例を示す図。
【図2】本実施形態に係わるパケットの一例を示す図。
【図3】図1に示す比較部105及びメモリ107における構成の一例を示す図。
【図4】図1に示す通信装置における動作の一例を示すフローチャート。
【図5】セグメントデータベース205の構成の一例を示す図。
【図6】図3に示す第1の比較部203による処理の概要を示す図。
【図7】実施形態2に係わる比較部105及びメモリ107における構成の一例を示す図。
【図8】TCPウインドウ処理の概要を示す図。
【図9】実施形態3に係わる第1の比較部703による処理の概要を示す図。
【図10】実施形態3に係わるセグメントデータベース705の構成の一例を示す図。
【図11】実施形態4に係わる比較部105及びメモリ107における構成の一例を示す図。
【図12】実施形態4に係わるセグメントデータベース705の構成の一例を示す図。
【発明を実施するための形態】
【0018】
以下、本発明の一実施の形態について添付図面を参照して詳細に説明する。
【0019】
(実施形態1)
図1は、本発明の一実施の形態に係わる通信装置の構成の一例を示す図である。
【0020】
通信装置10には、PHY部102と、MAC部103と、パケット解析部104と、比較部105と、DMAコントローラ106と、メモリ107と、CPU108とが具備される。
【0021】
通信装置10は、外部メディア等とネットワーク101を介して接続される。ここで、PHY部102は、物理層を処理し、MAC部103は、データリンク層を処理し、パケット解析部104は、パケットデータ(以下、パケットと略す)を解析する。DMA(Direct Memory Access)コントローラ106は、パケットをDMA転送し、比較部105は、分割パケット(フラグメントパケット)の受信完了を判定する。DMAコントローラ106は、受信したパケットをメモリ107に向けてDMA転送する。詳細については後述するが、DMAコントローラ106には、1又は複数の内部レジスタ106aが設けられる。
【0022】
メモリ107は、例えば、RAM(DRAM、SRAM等)や不揮発性メモリ等により実現され、送受信パケットやセグメントデータを記憶する。CPU108は、通信装置10における動作を統括制御し、バス109は、通信装置10内の各部を接続する。
【0023】
ここで、図2(a)及び図2(b)を用いて、本実施形態に係わるパケットの一例について説明する。
【0024】
図2(a)には、Ethernet(登録商標)IIのMAC(Media Access Control)ヘッダの一例が示される。MACヘッダには、48ビットからなる宛先MACアドレス(Destination MAC Address)フィールドと、48ビットからなる送信元MACアドレス(Source MAC Address)フィールドとが具備される。MACヘッダには、その他、16ビットからなるTypeフィールドや、48〜1500ビットからなるPayloadフィールドも具備される。MAC層プロトコルとしては、この他にもIEEE802.3やEthernet(登録商標)パケット等もあるが、この点に関しては、本実施形態の要部ではないため、その説明については省略する。
【0025】
図2(b)には、ヘッダ情報の一例が示される。ここでは、パケット長(Total Length)フィールドと、パケット識別番号(IP-ID)フィールドと、フラグ(Frags)フィールドと、フラグメント・オフセットフィールドとについて説明する。
【0026】
パケット長フィールドには、パケット全体の長さが格納される。パケット識別番号フィールドには、パケットを一意に識別する番号が格納される。なお、パケット分割前に同じデータを構成していたパケットには、同一のパケット識別番号が割り当てられる。
【0027】
フラグフィールドは、リザーブビットとDF(Don't Fragment)ビットとMFビットとを含む3ビットで構成される。リザーブビットは、当該フィールドが使用されない場合、予備ビットとして機能し、将来の拡張に備えて常に’0’が設定される。DFビットは、分割の不許可を示すフィールドである。受信パケットのDFビットが有効になっている場合、当該パケットは、ネットワーク経路中で分割されていないことになる。
【0028】
MFビットは、後続に分割パケットが続くことを示すフィールドである。受信パケットのMFビットが有効になっている場合、当該パケットは、分割パケットであることが分かる。なお、最後尾の分割パケット以外には、MFビットに有効が設定される。
【0029】
フラグメント・オフセットフィールドには、分割前のパケットにおける当該分割パケットの位置が示される。再構成に際しては、フラグメント・オフセットフィールドを参照し、それにより、元のパケットの位置が特定される。すなわち、MFビットが有効であるか、また、フラグメント・オフセットに’0’以外の値が記述されているかすれば、そのパケットは分割パケットということになる。また、MFビットが有効でなく更に、フラグメント・オフセットフィールドに数値が記述されていれば、そのパケットは、最後尾の分割パケットである。
【0030】
このように通信装置10においては、フラグフィールドとフラグメント・オフセットフィールドとを用いて分割パケットであるか否かを判定できる。なお、分割パケット以外のパケットは、DMAコントローラ106によりメモリ107にDMA転送される。
【0031】
図3は、図1に示す比較部105及びメモリ107における構成の一例を示す図である。
【0032】
比較部105は、判定部201と、第1の抽出部202と、第1の比較部203と、第2の比較部204と、セグメントデータベース205と、レジスタ206〜212と、更新部213とを具備して構成される。
【0033】
判定部201は、受信パケットのヘッダ情報に基づいてパケットを判定する機能を有し、第1の判定部201aと、第2の判定部201bとを具備して構成される。第1の判定部201aは、受信パケットが分割パケットであるか否かを判定し、第2の判定部201bは、第1の判定部201aにより分割パケットである旨判定された場合に、最後尾のパケットであるか否かの判定を行なう。なお、これら判定は、図2(b)に示すフラグフィールドとフラグメント・オフセットフィールドとに基づいて行なわれる。
【0034】
抽出部202は、分割パケットのヘッダ情報から各種情報を抽出する機能を有し、第1の抽出部202aと、第2の抽出部202bとを具備して構成される。第1の抽出部202aは、分割パケットのヘッダ情報から当該パケットのセグメントデータを抽出する。セグメントデータは、分割前のパケットにおける分割パケットの位置を示す上端アドレス及び下端アドレスと、パケット識別番号(IP−ID)とを規定した情報である。第2の抽出部202bは、最後尾の分割パケットのヘッダ情報から分割前のパケット長を抽出する。
【0035】
第1の比較部203は、分割パケットのセグメントデータとセグメントデータベース205に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの上端アドレス及び下端アドレスが出力される。セグメントデータの統合処理では、例えば、分割パケットのセグメントデータとデータベース内のセグメントデータとを統合させる。なお、セグメントデータ同士を統合させずに、分割パケットのセグメントデータを新規セグメントデータとしてデータベース内に格納する場合もある。
【0036】
第2の比較部204は、第2の抽出部202bによりパケット長が抽出された場合に、当該パケット長と、第1の比較部203による処理の結果(統合後の上端アドレス及び下端アドレス等)とを比較する。そして、その比較結果に基づいて分割前のパケットを構成する分割パケット全ての受信が完了したか否かを判定する。
【0037】
更新部213は、第1の比較部203による処理の結果に基づいて、セグメントデータベース205を更新する。セグメントデータベース205は、詳細については後述するが、セグメントデータを格納する。すなわち、上端アドレスと、下端アドレスと、パケット識別番号とを対応付けたデータセットを格納する。なお、セグメントデータベース205は、メモリ107の一部の領域を用いて実現される。
【0038】
レジスタ206〜212は、各構成の出力を一時的に格納する。Rx_UP_Prtレジスタ206は、分割パケットのセグメントデータの上端アドレスを格納する。Rx_Lw_Ptrレジスタ208は、分割パケットのセグメントデータの下端アドレスを格納する。Seg_Up_Ptrレジスタ207は、セグメントデータベース205に格納されたセグメントデータの上端アドレスを格納する。Seg_Lw_Ptrレジスタ209は、セグメントデータベース205に格納されたセグメントデータの下端アドレスを格納する。
【0039】
Up_Ptrレジスタ210は、第1の比較部203から出力されるセグメントデータの上端アドレスを格納する。Lw_Ptrレジスタ211は、第1の比較部203から出力されるセグメントデータの下端アドレスを格納する。Ref_Pkt_Lenレジスタ212は、統合されたセグメントデータにより求められるパケット長を格納する。このレジスタ212には、最後尾の分割パケットが受信された段階(MFビットが0でフラグメント・オフセットフィールドに有意な数値が書き込まれている分割パケット)で、再構成後のパケットの全長(パケット長)が格納される。第2の比較部204では、このレジスタ212にパケット長が格納された場合に、分割パケット全ての受信が完了したと判定する。
【0040】
次に、図4を用いて、図1に示す通信装置における動作の一例について説明する。ここでは、パケット受信時の動作(パケット受信完了の判定方法)について説明する。
【0041】
パケットが送られてくると、通信装置10は、PHY部102において、それを受信し、復調する(S101でYES)。なお、パケットは、各種スイッチやルータなど(図不指示)の中継器を経由して通信装置10に送られてくる。
【0042】
パケットを受信した通信装置10は、MAC部103において、図2(a)に示すようなEthernet(登録商標)パケットに変換する。ここで、宛先MACアドレスフィールドに自局のMACアドレスが記述され、また、TypeフィールドにIPv4プロトコルを示す(0x0800)記述がなされていたとする。この場合、MAC部103は、当該パケットのPayloadフィールドをIPv4パケットとしてパケット解析部104に出力する。これを受けたパケット解析部104は、ヘッダ情報を解析する。
【0043】
次に、通信装置10は、第1の判定部201aにおいて、S101で受信したパケットが分割パケットであるか否かを判定する。判定の結果、分割パケットでなければ(S102でNO)、再度、S101の処理に戻り、パケット受信待ちとなる。
【0044】
一方、分割パケットであれば(S102でYES)、通信装置10は、第2の判定部201bにおいて、更に、最後尾のパケットであるか否かを判定する。最後尾のパケットでなければ(S103でNO)、通信装置10は、第1の抽出部202aにおいて、当該分割パケットのヘッダ情報からセグメントデータ(上端アドレス、下端アドレス、パケット識別番号(IP−ID))を抽出する(S104)。なお、上端アドレスは、Rx_Up_Ptrレジスタ206に格納され、下端アドレスは、Rx_Lw_Ptrレジスタ208に格納される。
【0045】
また、最後尾のパケットであれば(S103でYES)、通信装置10は、上記同様に、第1の抽出部202aにおいて、当該分割パケットのヘッダ情報からセグメントデータを抽出する(S105)。そして、第2の抽出部202bにおいて、当該分割パケットのヘッダ情報からパケット長情報を抽出する(S106)。なお、上端アドレスは、Rx_Up_Ptrレジスタ206に格納され、下端アドレスは、Rx_Lw_Ptrレジスタ208に格納される。また、パケット長情報は、パケット識別番号と対応付けられてセグメントデータベース205に格納される。これら情報の格納は、DMAコントローラ106により行なわれる。
【0046】
次に、通信装置10は、受信したパケットのパケット識別番号と一致するセグメントデータをセグメントデータベース205内から探索する。具体的には、DMAコントローラ106において、セグメントデータベース205に格納されたセグメントデータ内でパケット識別番号が一致するデータの上端及び下端アドレスをレジスタ207及び209に順番に出力していく。これにより、上端アドレスがSeg_Up_Ptrレジスタ207に格納され、下端アドレスがSeg_Lw_Ptrレジスタ209に格納される。なお、この上端アドレス及び下端アドレスの出力は、第1の比較部203による比較処理が行なわれる度に行なわれ、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返される。
【0047】
ここで、通信装置10は、第1の比較部203において、レジスタ(207、209)に格納されたアドレス情報と、レジスタ(206、208)に格納されたアドレス情報とを比較する。これにより、セグメントデータベース205内におけるセグメントデータと、受信パケットから抽出したセグメントデータとを比較する。
【0048】
ここでまず、最初の分割パケットを受信した時の処理について説明する。最初の分割パケットを受信時においては、セグメントデータベース205内には、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータが格納されていない(S107でNO)。そのため、Rx_Up_Ptrレジスタ207及びRx_Lw_Ptrレジスタ208には、nullが格納される。この場合、第1の比較部203は、比較処理を行なわず、Rx_Up_Ptrレジスタ207及びRx_Lw_Ptrレジスタ208に格納されたアドレス情報をそのままUp_Ptrレジスタ210及びLw_Ptrレジスタ211に出力する。なお、最初の分割パケットが最後尾のパケットでなければ、分割前におけるパケットの全長が不明であるので、Ref_Pkt_Lenレジスタ212にはnullが格納されており、第2の比較部204による比較処理も実施されない。その後、更新部213は、レジスタ210及び211に格納されたアドレス情報と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S108)。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0049】
次に、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータがセグメントデータベース205内に格納されている場合について説明する(S107でYES)。この場合、通信装置10は、第1の比較部203において、Rx_Lw_Ptrレジスタ208とSeg_Lw_Ptr209とに格納された下端アドレスを比較する。また、Rx_Up_Ptrレジスタ206とSeg_Up_Ptrレジスタ207とに格納された上端アドレスの比較も行なう(S109)。これにより、セグメントデータ同士の位置を規定する情報の関係を比較する。そして、これらの比較結果の組み合わせに基づいてセグメントデータの統合処理を実行し、その処理後の情報(上端アドレス、下端アドレス)をレジスタ(210、211)に出力する(S110)。この比較は、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返し行なわれる。なお、セグメントデータの統合処理の詳細については後述する。
【0050】
第1の比較部203による比較処理が終わると、通信装置10は、DMAコントローラ106において、受信パケットと同一のパケット識別番号を持つパケット長情報がセグメントデータベース205内に格納されているか否かを判定する。格納されていれば(S111でYES)、DMAコントローラ106は、当該パケット長情報をRef_Pkt_Lenレジスタ212に格納する。これにより、通信装置10は、第2の比較部204ににおいて、当該レジスタ212に格納されたパケット長情報と、第1の比較部203の処理結果(上端アドレス、下端アドレス)とを比較し、両者が示すデータ長が一致するか否かを判定する(S112)。
【0051】
ここで、両者が一致すれば(S113でYES)、通信装置10は、第2の比較部204において、分割前のパケットを構成する分割パケット全ての受信が完了した旨の判定を行なう(S114)。そして、通信装置10は、更新部213において、第1の比較部203による処理の結果に基づいてセグメントデータベース205を更新する。すなわち、第1の比較部203の処理結果(上端アドレス、下端アドレス)と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S115)。そして、該当するパケット識別番号に対応するデータをnullデータで更新する(S117)。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0052】
また、S111において該当するパケット長情報がなかった場合(S111でNO)、また、S113において両者のデータ長が不一致であった場合(S113でNO)、通信装置10は、更新部213において、更新処理を行なう。すなわち、第1の比較部203の処理結果(上端アドレス、下端アドレス)と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S116)。この場合、Ref_Pkt_Lenレジスタ212には、nullが格納されているため、第2の比較部204による比較処理は実施されない。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0053】
以上が、通信装置10における動作についての説明であるが、ここに示す処理の流れはあくまで一例であり、処理の順番等は前後してもよい。例えば、DMAコントローラ106において、パケット長情報をRef_Pkt_Lenレジスタ212に格納するタイミングは、分割パケットの受信とともに行なわれる等してもよい。
【0054】
次に、図5及び図6を用いて、図4のS109及びS110に示す第1に比較部203によるセグメントデータの統合処理の概要について説明する。ここでは、まず、図5を用いて、セグメントデータベース205の構成の一例について説明する。
【0055】
セグメントデータベース205には、分割パケットから抽出及び算出されたセグメントデータが格納されている。セグメントデータベース205には、セグメントデータが記述されている領域「スタートアドレス1」〜「エンドアドレス1」がある。ここで、DMAコントローラ106は、内部レジスタ106において、この「スタートアドレス1」と「エンドアドレス1」とを示す情報を格納している。これにより、DMAコントローラ106は、第1の比較に際して、セグメントデータベース205のセグメントデータを比較部105に向けて転送できる。
【0056】
また、セグメントデータベース205には、パケット再構成後のパケット長を示すパケット長情報と、パケット識別番号(IP−ID)とが対応付けられて格納されている。これら情報は、領域「スタートアドレス2」〜「エンドアドレス2」に格納されている。DMAコントローラ106では、上記同様に、内部レジスタ106aにおいて、この「スタートアドレス2」と「エンドアドレス2」とを示す情報を格納している。そのため、DMAコントローラ106は、第2の比較に際して、セグメントデータベース205に格納された情報を比較部105に向けてDMA転送できる。
【0057】
DMAコントローラ106は、内部レジスタ106aにおいて、ライタブルアドレス(WritableAddress)を格納している。ライタブルアドレスは、パケット識別番号が未登録の領域(一番低位のアドレス(スタートアドレス1に近いアドレス)のアドレスであり、この領域に新規セグメントが登録される。仮に、未登録の領域がなければ、内部レジスタ106aには、「エンドアドレス1」+1のアドレスがライタブルアドレスとして保持される。このとき、内部レジスタ106aには、「エンドアドレス1」の値も1増加した値が格納される。これにより、「スタートアドレス1」から「エンドアドレス1」のセグメントデータの登録領域をコンパクトに保てるため、セグメントデータの転送時間の増大を抑制できる。
【0058】
次に、図6を用いて、第1の比較部203によるセグメントデータの統合処理の概要について説明する。
【0059】
この処理では、第1の比較部203において、セグメントデータ同士の下端アドレスと上端アドレスとを比較する。これにより、図6に示すようなパターン分けを行なう。パターン(a)及びパターン(f)は、比較対象となる2つのセグメントデータに共通する区間がない場合を示し、パターン(b)、(c)、(e)は、比較対象となる2つのセグメント間に共通、又は連続したセグメントの領域があることを示す。パターン(d)は、受信したセグメントデータが既に受信済みであり、セグメントデータベース205内のセグメントデータを変更する必要がない場合を示している。なお、第1の比較部203においては、受信したセグメントデータを、セグメントデータベース内の全てのセグメントデータと比較し、このようなパターンに分類する。
【0060】
ここで、パターン(b)、(c)、(e)の場合、第1の比較部203は、セグメントデータ同士を統合する。この統合に際して、第1の比較部203は、統合後のセグメントデータの上端アドレス及び下端アドレスを出力する。これにより、Rx_Up_Ptrレジスタ206には、統合後の上端アドレスが格納され、Rx_Lw_Ptrレジスタ208には、統合後の下端アドレスが格納される。第1に比較部203においては、、「エンドアドレス1」に到達するまで、残りのデータについて比較処理を継続して行なう。
【0061】
また、統合対象となるセグメントデータがセグメントデータベース205内に2つ以上ある場合、第1の比較部203は、受信したセグメントデータと、最初に該当したセグメントデータとを統合する。その後、残りの統合対象のデータとも統合を実施する。なお、当該残りの統合対象のデータが格納されていた領域には、nullが格納される。例えば、「エンドアドレス1」領域にnullが書き込まれている場合、DMAコントローラ106では、内部レジスタ106aに保持された対応する値を’1’減算する。
【0062】
また、パターン(a)及びパターン(f)の場合、「スタートアドレス1」〜「エンドアドレス1」に格納されたセグメントデータ全ての比較が終了しても、統合するセグメントデータがない。この場合、当該セグメントデータは、新規セグメントデータとしてセグメントデータベース205に格納されることになる。
【0063】
以上説明したように本実施形態によれば、パケット分割前における分割パケットの位置と当該分割パケットの識別情報とを含むセグメントデータと、既受信の分割パケットのセグメントデータとを比較し、分割パケットの受信の完了を判定する。
【0064】
ここで、既受信の分割パケットのセグメントデータは、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ(セグメントデータベースの領域を定義する情報を格納)を書き換えるのみで済む。
【0065】
これにより、簡単且つ柔軟な構成で分割パケットの受信完了を判定できる。また、メモリを使用してセグメントデータベースを管理するため、構成が安価で済むとともに、大容量化にも柔軟に対応できる。更に、分割パケットの同時に再構成する数を増加させる場合にも、セグメントデータベースの領域を定義するレジスタを書き換えるだけで済む。
【0066】
一般に、ASIC内部にシフトレジスタを設ける場合よりも、ASICの外部にメモリデバイスを接続してシステム構築した方がビット単価が安価になる。そのため、本実施形態の構成によれば、コストを抑制できる。また、ASICを再設計せずに、メモリデバイスを変更することができる。
【0067】
(実施形態2)
次に、実施形態2について説明する。実施形態2においては、IPパケットではなく、TCPパケットの受信状態を判定する構成について説明する。なお、実施形態1と同様の構成についての説明は省略し、ここでは相違点について重点的に省略する。
【0068】
図7は、実施形態2に係わる通信装置10における比較部105及びメモリ107における構成の一例を示す図である。
【0069】
抽出部702は、TCPヘッダ及びIPヘッダからセグメントデータを抽出する。具体的には、分割パケットの受信範囲を規定する情報(ストリーム全体におけるどの位置のデータであるかを示す情報)として、ソケットIDと、TCPヘッダのSequence番号と、Next Sequence番号とを抽出する。Sequence番号は左端アドレスとして抽出され、Next Sequence番号は右端アドレスとして抽出される。なお、ソケットID(SO−ID)は、受信パケットのIPヘッダの送信元−宛先IPアドレスと、TCPヘッダの送信元−宛先ポート番号との組み合わせであるソケットペアから一意に決定される。
【0070】
セグメントデータベース705は、リオーダリング中のTCPパケットのセグメントデータを格納する。より具体的には、ソケットIDに対応してセグメントデータが格納されている。
【0071】
第1の比較部703は、受信したTCPパケットのセグメントデータとセグメントデータベース705に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの左端アドレス及び右端アドレスが出力される。
【0072】
更新部713は、第1の比較部703による処理の結果に基づいて、セグメントデータベース205を更新する。
【0073】
第2の比較部704は、第1の比較部703による処理の結果(統合後の左端アドレス及び右端アドレス等)と、受信済みの分割パケットの連続する受信範囲を示す情報(ウインドウ左端情報及び受信済みACK番号)とを比較する。そして、その比較結果に基づいて分割パケットの受信状態(受信済みACK番号及びウインドウサイズ情報)を更新する。なお、更新後の情報は、次にパケットを送信する際に通信相手先に通知される。
【0074】
ここで、ウインドウサイズは、送信可能な最大のデータサイズを示す。また、ウインドウ左端情報は、図8の符号801に示すウインドウ左端を示し、受信済みACK番号は、図8の符号802に示す受信済みACK番号を示す。受信済みACK番号は、ウインドウ左端801から連続してデータを受信した場合に更新され、例えば、受信したデータのバイト数に応じてその数が増えていく。これに対して、ウインドウサイズは、図8の符号803に示すように、ACK番号が増えるにつれ減少する。
【0075】
ここで、例えば、図8の符号804及び805に示すセグメントデータを受信した場合、これらセグメントデータ804及び805は、受信済みACK番号802に示される位置と接していない。そのため、このような場合には、受信済みACK番号は更新されない。この場合、セグメントデータ804及び805は、更新部713において、セグメントデータベース705へ新規登録される。
【0076】
レジスタ706〜711は、各構成の出力を一時的に格納する。Rx_LE_Ptrレジスタ706は、受信したTCPパケットのセグメントデータの左端アドレスを格納する。RX_RE_Ptrレジスタ708は、受信したTCPパケットのセグメントデータの右端アドレスを格納する。Seg_LE_Ptrレジスタ707は、セグメントデータベース705に格納されたセグメントデータの左端アドレスを格納する。Seg_RE_Ptrレジスタ709は、セグメントデータベース705に格納されたセグメントデータの右端アドレスを格納する。
【0077】
Ref_LE_Ptrレジスタ710は、第1の比較部703から出力されるセグメントデータの左端アドレスを格納する。Ref_RE_Ptrレジスタ711は、第1の比較部703から出力されるセグメントデータの右端アドレスを格納する。Ref_Seg_Regレジスタ714は、ウインドウ左端情報及び受信済みACK番号を格納する。これらの情報は、取得部712によりTCPの上位層から取得される。
【0078】
ここで、実施形態2に係わる通信装置10における処理の流れについて簡単に説明する。
【0079】
通信装置10は、まず、抽出部702において、TCPパケットを受信すると、Sequence番号と、Next Sequence番号と、ソケットIDとを抽出する。そして、Sequence番号とNext Sequence番号とをそれぞれ、レジスタ706及び708に格納する。また、ソケットIDは、セグメントデータベース705に出力され、セグメントデータベース705内のセグメントデータと比較される。
【0080】
セグメントデータベース705には、ソケットIDに対応してセグメントデータが格納されている。通信装置10は、受信したセグメントデータのソケットIDと一致するセグメントデータをセグメントデータベース705内から探索する。具体的には、DMAコントローラ106において、セグメントデータベース705に格納されたセグメントデータ内でソケットIDが一致するセグメントデータの左端及び右端アドレスをレジスタ707及び709に順番に出力していく。これにより、左端アドレスがSeg_LE_Ptrレジスタ707に格納され、右端アドレスがSeg_RE_Ptrレジスタ709に格納される。
【0081】
レジスタ707及び709に値が格納されると、通信装置10は、第1の比較部703において、レジスタ(707、709)に格納されたアドレス情報と、レジスタ(706、708)に格納されたアドレス情報とを比較する。これにより、セグメントデータベース705内におけるセグメントデータと、TCPパケットから抽出されたセグメントデータとが比較される。この比較により、第1の比較部703においては、実施形態1で説明した処理と同様にして、新規セグメント、セグメントの統合、セグメントの保持などの判定を行なう。
【0082】
受信したセグメントデータと、セグメントデータベース705内のデータとの比較が終了すると、その比較結果がレジスタ710及び711にそれぞれ格納される。なお、セグメントデータが統合される場合は、セグメントデータベース705から該当のセグメントデータが削除される。すなわち、該当のデータがnullデータで更新される。ここで、例えば、図6(d)に示すような比較結果が得られた場合には、実施形態1と同様に、更新後のアドレス情報がレジスタ706及び708に格納され、第1の比較部703による比較処理が継続して行なわれることになる。
【0083】
第1の比較部703による比較処理が終了すると、その比較結果は、レジスタ710及びレジスタ711にそれぞれ格納される。そして、通信装置10は、第2の比較部704による比較処理を行なう。
【0084】
ここで、ウインドウ左端情報と、受信済みACK番号とが、第2の比較部704に入力される。通信装置10は、第2の比較部704において、これら情報と、レジスタ710及び711に格納されたアドレス情報とを比較する。第2の比較部704は、この比較結果に基づいて、現在のソケットに対応するウインドウの左端情報と、ACK(Acknowledgement)番号とを更新して出力する。
【0085】
以上説明したように実施形態2によれば、通信装置(TCP受信セグメント処理装置)において、TCPパケットの受信範囲を規定するセグメントデータと、既受信のTCPパケットのセグメントデータとを比較する。これにより、TCPパケットの受信状態を判定(更新)することができる。
【0086】
また、セグメントデータは、実施形態1同様に、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ(セグメントデータベースの領域を定義する情報を格納)を書き換えるのみで済む。これにより、簡単且つ柔軟な構成でTCPパケットの受信状態を判定できる。また更に、実施形態1同様に、構成が安価で済むとともに、大容量化にも柔軟に対応できる。
【0087】
(実施形態3)
次に、実施形態3について説明する。実施形態2においては、受信したTCPパケットを受信バッファ上で組み立てていたが、この手法に限られない。例えば、リンクドリストを構築し、組み立てられたパケットのシーケンス番号までリンクドリストを追跡することにより、TCPパケットの受信状態を上位層に通知する手法が知られている。
【0088】
この処理を行なう場合、実施形態2で説明したセグメントデータの統合処理による受信通知の他、各セグメントを再構築するためのリンクドリストの処理に多くのリソースが必要となる。そこで、実施形態3においては、セグメントデータのリンクドリストの処理負荷を軽減させる構成について説明する。
【0089】
図9は、実施形態3に係わる第1の比較部703による処理の概要を示す図である。実施形態1及び2においては、セグメントデータを統合することでパケットの受信完了の判定や、受信済みACK番号等を更新する場合について説明した。これに対して、実施形態3においては、セグメントデータの統合は行なわず、セグメントデータベース705におけるセグメントデータの左端及び右端アドレスの値を変更させる。
【0090】
パターン(b)、(d)及び(e)に示すように、受信したセグメントデータと、セグメントデータベース705から読み出したセグメントデータとに重複する領域がある場合、セグメントデータの左端及び右端アドレスを変更させる。TCPパケットの受信では、セグメントデータの重複があった場合、時系列的に後から受信したセグメントデータを受信データとする。そのため、セグメントデータベース705から読み出したセグメントデータを修正している。
【0091】
パターン(a)及び(f)に示すように、受信したセグメントデータが、セグメントデータベース705内の全てのセグメントデータと重複する領域がない場合、受信したセグメントデータを新規セグメントとしてセグメントデータベース705に登録する。
【0092】
パターン(c)に示すように、受信したセグメントデータが、セグメントデータベース705内のセグメントデータをオーバーラップしている場合、セグメントデータベース705から該当のデータを削除する。セグメントデータベース705においては、図10に示すように、セグメントデータ自体のアドレス情報の他、リンク情報として隣接するセグメントのアドレス情報が付加されている。一つのセグメントデータを読み込むことにより、次にリンクされるセグメントデータのアドレス情報が記載されている。そのため、通信装置10は、このリストを辿ることによりセグメントデータを構築することができる。
【0093】
以上説明したように実施形態3によれば、実施形態2で説明した受信ウインドウ管理の他、受信セグメントデータのリンクドリスト情報の管理も、プロセッサのリソースを用いずに高速に処理することができる。
【0094】
(実施形態4)
次に、実施形態4について説明する。実施形態4においては、実施形態1(IPパケットの受信完了判定)及び実施形態2(TCPパケットの受信状態の判定)を一つの構成で行なう場合について説明する。
【0095】
図11を用いて、実施形態4に係わる通信装置10における比較部105及びメモリ107における構成の一例を示す図である。すなわち、実施形態1で説明したリアセンブル処理と、実施形態2で説明したリオーダリング処理とを行なう構成について説明する。
【0096】
選択部902は、Ref_Pkt_Lenレジスタ212及びRef_Seg_Regレジスタ714のいずれかを選択し、当該選択したレジスタに格納された値を第2の比較部704に入力する。より具体的には、IPパケット処理時にはRef_Pkt_Lenレジスタ212を選択し、TCPパケット処理時にはRef_Seg_Regレジスタ714を選択する。なお、いずれのレジスタを選択するかは、後述するID番号に基づいて決められる。
【0097】
また、実施形態4においては、受信したセグメントデータに関するアドレス情報を格納するレジスタ(706、708、710、711)がそれぞれ複数設けられる。これにより、セグメントデータベース705からの一度の読み出しに対して、複数の比較を行なうことができる。
【0098】
また、実施形態4に係わる抽出部702は、実施形態2で説明した機能に加えて、実施形態1を説明した図3に示す抽出部202の機能を有する。実施形態4に係わる抽出部702においては、各種アドレス等の情報を抽出するとともに、IPパケットを処理する際に用いるIP−IDと、TCPパケットを処理する際に用いるSO−IDに対してユニークなID番号(識別情報)を割り当てる。
【0099】
ここで、実施形態4に係わる通信装置10における処理の流れについて簡単に説明する。
【0100】
通信装置10は、まず、判定部201において、受信パケットのヘッダ情報に基づいてパケットを判定する。IPパケットの場合、分割パケットが処理対象となり、TCPパケットの場合、コネクションが確立しているソケットが処理対象となる。
【0101】
次に、通信装置10は、抽出部702において、受信パケットから各種アドレス等の情報を抽出するとともに、IPパケットを処理する際に用いるIP−ID及びTCPパケットを処理する際に用いるSO−IDに対してユニークなID番号を割り当てる。このID番号は、セグメントデータベース705、受信セグメントデータ用のレジスタ(706、708)、選択部902に入力される。
【0102】
ここで、図12には、実施形態4に係わるセグメントデータベース705の構成の一例が示される。セグメントデータベース705には、実施形態1を説明した図5と同様に、各レコードに対応して、ID番号とセグメントデータとが登録されている。分割IPパケットによるセグメントデータと、TCPパケットによるセグメントデータとは、ID番号により識別可能であれば、同一データベースに登録されていても問題ない。
【0103】
受信セグメントデータ用のレジスタ(706、708)は、例えば、ID番号毎に複数設けられる。受信セグメントデータ用のレジスタ(706、708)に格納された値は、セグメントデータベース705から読み出されたセグメントデータとともに、第1の比較部703に入力される。
【0104】
その後、通信装置10は、第1の比較部703において、上述した実施形態1及び2と同様にして比較処理を行なう。第1の比較結果用のレジスタ(710、711)は、上述した受信セグメントデータ用のレジスタ(706、708)と同様に、ID番号毎に複数設けられる。第1の比較部703においては、比較結果を第1の比較結果用のレジスタ(710、711)にそれぞれ出力する。これらレジスタ706及び708に格納された値は、第2の比較部704に入力される。この他、第2の比較部704には、IPパケット処理時にはパケット長情報が入力され、TCPパケット処理時にはウインドウ左端情報と受信済みACK番号とが入力される。
【0105】
通信装置10は、第2の比較部704において、上記入力された情報に基づいて比較処理を行なう。この比較結果に基づいて、第2の比較部704は、実施形態1及び実施形態2で説明したように、IPパケットの受信完了通知、又はTCPパケットの受信状態の通知を行なう。その後、通信装置10は、更新部713において、セグメントデータベース705への登録・更新処理を行なう。
【0106】
以上説明したように実施形態4によれば、複数のレジスタを備えることにより、実施形態1(IPパケットの受信完了の判定)及び実施形態2(TCPパケットの受信状態の判定)における処理を一度のセグメントデータベースの読み込みで行なうことができる。
【0107】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【0108】
例えば、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0109】
(その他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、通信装置、その処理方法及びプログラムに関する。
【背景技術】
【0002】
Ethernet(登録商標)以外のネットワークを構築する場合や、最大転送単位(MTU)が異なるネットワーク同士を結合する場合、MTUが小さい方のネットワークに併せてTCP/IPパケットのサイズを変更する必要がある。
【0003】
この問題を解決するため、IP(Internet Protocol)を記述しているRFC791では、インターネットデータグラムの分割手続きとその再構成手続きとが定義される(非特許文献1)。この方式を用いれば、ネットワーク間のMTUの違いを意識せずに、ネットワークを構築できる。この場合、ネットワーク間を接続する中継器において、パケットを分割し、その分割されたパケットを受信側ステーションにおいて再構成する。
【0004】
MTUの異なるネットワークが相互に接続される環境においては、MTUの大きいネットワークからMTUの小さいネットワークにデータを送信する場合、大きいサイズのパケットを伝送できない。上述したRFC791では、IPデータグラムのペイロード部分をMTUサイズ以下になるように分割する手法が定義されている。
【0005】
分割パケットは、送信側ステーションからの送信時や、ルータなどで異なるネットワークに中継される時に生じる。分割パケットは、異なるネットワークを通じて受信側ステーションに到達する場合もある。分割パケットは、全て同じサイズで構成される場合もあれば、そうでない場合もある。また、分割パケットは、分割された順序通りに受信側ステーションに到達する保証も無い。
【0006】
ここで、受信側ステーションにおいては、パケットの再構成が完了するまでそれまでに受信した分割パケットをIP層に保留する必要がある。このため、IP層では、分割パケットの再構成処理と、分割パケット全ての受信完了を判定する判定処理とが実施される必要がある。
【0007】
受信完了の判定には、リンクドリストを用いる方法が知られている。リンクドリスト方式では、分割パケットのヘッダ情報(パケット長フィールド、フラグメント・オフセットフィールド)から分割パケットの先頭アドレス及び終端アドレスをリンクドリスト情報として抽出する。リンクドリスト情報が得られる度に既存のリンクドリスト情報を用いて、連続したデータであるか否かを判断し、リンクの先頭データと終端データとを更新していく。
【0008】
再構成後のパケット長は、最後尾のパケットのパケット長フィールドとフラグメント・オフセットフィールドとに基づいて判明する。そのため、その時点における先頭データ及び終端データの情報と、パケット長とを比較することによって分割パケットの受信完了を判定できる。特許文献1の技術では、シフトレジスタ上にリンクドリスト情報を更新・蓄積し、受信完了通知を生成する方式が提案されている。
【0009】
また、TCP層では、ヘッダに記述されたシーケンス番号を基にリオーダリングと呼ばれる手法を用いてパケットを組み立てる。TCPにおいては、データストリームによる通信が行なわれており、ストリーム中のデータの固まりをセグメントと呼称される。TCPの受信パケットには、TCPのセグメントが含まれており、シーケンス番号にセグメントの位置が示されている。連続したセグメントを組み立てれば、送信されたTCPストリームを組み立てることができる。しかし、TCP/IPネットワーク上では、宛先までパケットが到達する保障が無いため、パケットを受信した宛先では、ストリームの最新受信位置としてAcknowledge番号を送信元に通知する。送信元では返送されたAcknowledgeをもって宛先がTCPストリームを受信したことが知らされる(スライディングウインドウ)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006−81030号公報
【非特許文献】
【0011】
【非特許文献1】RFC791(http://www.ietf.org/rfc/rfc0793.txt?number=791)
【非特許文献2】RFC793(http://www.ietf.org/RFC/RFC0793.txt?number=793)
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかし、上述した分割パケットの受信完了の判定方法では、種々の課題がある。例えば、分割パケットの受信順序は、入れ替わる可能性があるので、パケット識別番号毎に既存のリンクドリスト情報をソートする必要がある。そのため、パケットを受信する都度、ソートを実施し、それにより得られたリンクドリスト情報と受信した分割パケットとを比較し、リンクドリスト情報を統合したり、また、追加したりする必要がある。
【0013】
また、ASIC(Application Specific Integrated Circuit)等において、分割パケットの受信完了を判定するモジュールを組み込む場合、ビット幅、深さなどが予め決められた専用のシフトレジスタを設ける必要がある。そのため、大規模化が難しく、柔軟なハードウェアを構築するのが困難である。
【0014】
本発明は、上記課題に鑑みてなされたものであり、簡単な構成で分割されたパケットの受信処理を柔軟に行なうことを目的とする。
【課題を解決するための手段】
【0015】
上記課題を解決するため、本発明の一態様による通信装置は、受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段と、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段と、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段と、前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段と、前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリと、前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段とを具備する。
【発明の効果】
【0016】
本発明によれば、本構成を有さない場合よりも、簡単な構成で分割されたパケットの受信処理を柔軟に行なえる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施の形態に係わる通信装置の構成の一例を示す図。
【図2】本実施形態に係わるパケットの一例を示す図。
【図3】図1に示す比較部105及びメモリ107における構成の一例を示す図。
【図4】図1に示す通信装置における動作の一例を示すフローチャート。
【図5】セグメントデータベース205の構成の一例を示す図。
【図6】図3に示す第1の比較部203による処理の概要を示す図。
【図7】実施形態2に係わる比較部105及びメモリ107における構成の一例を示す図。
【図8】TCPウインドウ処理の概要を示す図。
【図9】実施形態3に係わる第1の比較部703による処理の概要を示す図。
【図10】実施形態3に係わるセグメントデータベース705の構成の一例を示す図。
【図11】実施形態4に係わる比較部105及びメモリ107における構成の一例を示す図。
【図12】実施形態4に係わるセグメントデータベース705の構成の一例を示す図。
【発明を実施するための形態】
【0018】
以下、本発明の一実施の形態について添付図面を参照して詳細に説明する。
【0019】
(実施形態1)
図1は、本発明の一実施の形態に係わる通信装置の構成の一例を示す図である。
【0020】
通信装置10には、PHY部102と、MAC部103と、パケット解析部104と、比較部105と、DMAコントローラ106と、メモリ107と、CPU108とが具備される。
【0021】
通信装置10は、外部メディア等とネットワーク101を介して接続される。ここで、PHY部102は、物理層を処理し、MAC部103は、データリンク層を処理し、パケット解析部104は、パケットデータ(以下、パケットと略す)を解析する。DMA(Direct Memory Access)コントローラ106は、パケットをDMA転送し、比較部105は、分割パケット(フラグメントパケット)の受信完了を判定する。DMAコントローラ106は、受信したパケットをメモリ107に向けてDMA転送する。詳細については後述するが、DMAコントローラ106には、1又は複数の内部レジスタ106aが設けられる。
【0022】
メモリ107は、例えば、RAM(DRAM、SRAM等)や不揮発性メモリ等により実現され、送受信パケットやセグメントデータを記憶する。CPU108は、通信装置10における動作を統括制御し、バス109は、通信装置10内の各部を接続する。
【0023】
ここで、図2(a)及び図2(b)を用いて、本実施形態に係わるパケットの一例について説明する。
【0024】
図2(a)には、Ethernet(登録商標)IIのMAC(Media Access Control)ヘッダの一例が示される。MACヘッダには、48ビットからなる宛先MACアドレス(Destination MAC Address)フィールドと、48ビットからなる送信元MACアドレス(Source MAC Address)フィールドとが具備される。MACヘッダには、その他、16ビットからなるTypeフィールドや、48〜1500ビットからなるPayloadフィールドも具備される。MAC層プロトコルとしては、この他にもIEEE802.3やEthernet(登録商標)パケット等もあるが、この点に関しては、本実施形態の要部ではないため、その説明については省略する。
【0025】
図2(b)には、ヘッダ情報の一例が示される。ここでは、パケット長(Total Length)フィールドと、パケット識別番号(IP-ID)フィールドと、フラグ(Frags)フィールドと、フラグメント・オフセットフィールドとについて説明する。
【0026】
パケット長フィールドには、パケット全体の長さが格納される。パケット識別番号フィールドには、パケットを一意に識別する番号が格納される。なお、パケット分割前に同じデータを構成していたパケットには、同一のパケット識別番号が割り当てられる。
【0027】
フラグフィールドは、リザーブビットとDF(Don't Fragment)ビットとMFビットとを含む3ビットで構成される。リザーブビットは、当該フィールドが使用されない場合、予備ビットとして機能し、将来の拡張に備えて常に’0’が設定される。DFビットは、分割の不許可を示すフィールドである。受信パケットのDFビットが有効になっている場合、当該パケットは、ネットワーク経路中で分割されていないことになる。
【0028】
MFビットは、後続に分割パケットが続くことを示すフィールドである。受信パケットのMFビットが有効になっている場合、当該パケットは、分割パケットであることが分かる。なお、最後尾の分割パケット以外には、MFビットに有効が設定される。
【0029】
フラグメント・オフセットフィールドには、分割前のパケットにおける当該分割パケットの位置が示される。再構成に際しては、フラグメント・オフセットフィールドを参照し、それにより、元のパケットの位置が特定される。すなわち、MFビットが有効であるか、また、フラグメント・オフセットに’0’以外の値が記述されているかすれば、そのパケットは分割パケットということになる。また、MFビットが有効でなく更に、フラグメント・オフセットフィールドに数値が記述されていれば、そのパケットは、最後尾の分割パケットである。
【0030】
このように通信装置10においては、フラグフィールドとフラグメント・オフセットフィールドとを用いて分割パケットであるか否かを判定できる。なお、分割パケット以外のパケットは、DMAコントローラ106によりメモリ107にDMA転送される。
【0031】
図3は、図1に示す比較部105及びメモリ107における構成の一例を示す図である。
【0032】
比較部105は、判定部201と、第1の抽出部202と、第1の比較部203と、第2の比較部204と、セグメントデータベース205と、レジスタ206〜212と、更新部213とを具備して構成される。
【0033】
判定部201は、受信パケットのヘッダ情報に基づいてパケットを判定する機能を有し、第1の判定部201aと、第2の判定部201bとを具備して構成される。第1の判定部201aは、受信パケットが分割パケットであるか否かを判定し、第2の判定部201bは、第1の判定部201aにより分割パケットである旨判定された場合に、最後尾のパケットであるか否かの判定を行なう。なお、これら判定は、図2(b)に示すフラグフィールドとフラグメント・オフセットフィールドとに基づいて行なわれる。
【0034】
抽出部202は、分割パケットのヘッダ情報から各種情報を抽出する機能を有し、第1の抽出部202aと、第2の抽出部202bとを具備して構成される。第1の抽出部202aは、分割パケットのヘッダ情報から当該パケットのセグメントデータを抽出する。セグメントデータは、分割前のパケットにおける分割パケットの位置を示す上端アドレス及び下端アドレスと、パケット識別番号(IP−ID)とを規定した情報である。第2の抽出部202bは、最後尾の分割パケットのヘッダ情報から分割前のパケット長を抽出する。
【0035】
第1の比較部203は、分割パケットのセグメントデータとセグメントデータベース205に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの上端アドレス及び下端アドレスが出力される。セグメントデータの統合処理では、例えば、分割パケットのセグメントデータとデータベース内のセグメントデータとを統合させる。なお、セグメントデータ同士を統合させずに、分割パケットのセグメントデータを新規セグメントデータとしてデータベース内に格納する場合もある。
【0036】
第2の比較部204は、第2の抽出部202bによりパケット長が抽出された場合に、当該パケット長と、第1の比較部203による処理の結果(統合後の上端アドレス及び下端アドレス等)とを比較する。そして、その比較結果に基づいて分割前のパケットを構成する分割パケット全ての受信が完了したか否かを判定する。
【0037】
更新部213は、第1の比較部203による処理の結果に基づいて、セグメントデータベース205を更新する。セグメントデータベース205は、詳細については後述するが、セグメントデータを格納する。すなわち、上端アドレスと、下端アドレスと、パケット識別番号とを対応付けたデータセットを格納する。なお、セグメントデータベース205は、メモリ107の一部の領域を用いて実現される。
【0038】
レジスタ206〜212は、各構成の出力を一時的に格納する。Rx_UP_Prtレジスタ206は、分割パケットのセグメントデータの上端アドレスを格納する。Rx_Lw_Ptrレジスタ208は、分割パケットのセグメントデータの下端アドレスを格納する。Seg_Up_Ptrレジスタ207は、セグメントデータベース205に格納されたセグメントデータの上端アドレスを格納する。Seg_Lw_Ptrレジスタ209は、セグメントデータベース205に格納されたセグメントデータの下端アドレスを格納する。
【0039】
Up_Ptrレジスタ210は、第1の比較部203から出力されるセグメントデータの上端アドレスを格納する。Lw_Ptrレジスタ211は、第1の比較部203から出力されるセグメントデータの下端アドレスを格納する。Ref_Pkt_Lenレジスタ212は、統合されたセグメントデータにより求められるパケット長を格納する。このレジスタ212には、最後尾の分割パケットが受信された段階(MFビットが0でフラグメント・オフセットフィールドに有意な数値が書き込まれている分割パケット)で、再構成後のパケットの全長(パケット長)が格納される。第2の比較部204では、このレジスタ212にパケット長が格納された場合に、分割パケット全ての受信が完了したと判定する。
【0040】
次に、図4を用いて、図1に示す通信装置における動作の一例について説明する。ここでは、パケット受信時の動作(パケット受信完了の判定方法)について説明する。
【0041】
パケットが送られてくると、通信装置10は、PHY部102において、それを受信し、復調する(S101でYES)。なお、パケットは、各種スイッチやルータなど(図不指示)の中継器を経由して通信装置10に送られてくる。
【0042】
パケットを受信した通信装置10は、MAC部103において、図2(a)に示すようなEthernet(登録商標)パケットに変換する。ここで、宛先MACアドレスフィールドに自局のMACアドレスが記述され、また、TypeフィールドにIPv4プロトコルを示す(0x0800)記述がなされていたとする。この場合、MAC部103は、当該パケットのPayloadフィールドをIPv4パケットとしてパケット解析部104に出力する。これを受けたパケット解析部104は、ヘッダ情報を解析する。
【0043】
次に、通信装置10は、第1の判定部201aにおいて、S101で受信したパケットが分割パケットであるか否かを判定する。判定の結果、分割パケットでなければ(S102でNO)、再度、S101の処理に戻り、パケット受信待ちとなる。
【0044】
一方、分割パケットであれば(S102でYES)、通信装置10は、第2の判定部201bにおいて、更に、最後尾のパケットであるか否かを判定する。最後尾のパケットでなければ(S103でNO)、通信装置10は、第1の抽出部202aにおいて、当該分割パケットのヘッダ情報からセグメントデータ(上端アドレス、下端アドレス、パケット識別番号(IP−ID))を抽出する(S104)。なお、上端アドレスは、Rx_Up_Ptrレジスタ206に格納され、下端アドレスは、Rx_Lw_Ptrレジスタ208に格納される。
【0045】
また、最後尾のパケットであれば(S103でYES)、通信装置10は、上記同様に、第1の抽出部202aにおいて、当該分割パケットのヘッダ情報からセグメントデータを抽出する(S105)。そして、第2の抽出部202bにおいて、当該分割パケットのヘッダ情報からパケット長情報を抽出する(S106)。なお、上端アドレスは、Rx_Up_Ptrレジスタ206に格納され、下端アドレスは、Rx_Lw_Ptrレジスタ208に格納される。また、パケット長情報は、パケット識別番号と対応付けられてセグメントデータベース205に格納される。これら情報の格納は、DMAコントローラ106により行なわれる。
【0046】
次に、通信装置10は、受信したパケットのパケット識別番号と一致するセグメントデータをセグメントデータベース205内から探索する。具体的には、DMAコントローラ106において、セグメントデータベース205に格納されたセグメントデータ内でパケット識別番号が一致するデータの上端及び下端アドレスをレジスタ207及び209に順番に出力していく。これにより、上端アドレスがSeg_Up_Ptrレジスタ207に格納され、下端アドレスがSeg_Lw_Ptrレジスタ209に格納される。なお、この上端アドレス及び下端アドレスの出力は、第1の比較部203による比較処理が行なわれる度に行なわれ、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返される。
【0047】
ここで、通信装置10は、第1の比較部203において、レジスタ(207、209)に格納されたアドレス情報と、レジスタ(206、208)に格納されたアドレス情報とを比較する。これにより、セグメントデータベース205内におけるセグメントデータと、受信パケットから抽出したセグメントデータとを比較する。
【0048】
ここでまず、最初の分割パケットを受信した時の処理について説明する。最初の分割パケットを受信時においては、セグメントデータベース205内には、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータが格納されていない(S107でNO)。そのため、Rx_Up_Ptrレジスタ207及びRx_Lw_Ptrレジスタ208には、nullが格納される。この場合、第1の比較部203は、比較処理を行なわず、Rx_Up_Ptrレジスタ207及びRx_Lw_Ptrレジスタ208に格納されたアドレス情報をそのままUp_Ptrレジスタ210及びLw_Ptrレジスタ211に出力する。なお、最初の分割パケットが最後尾のパケットでなければ、分割前におけるパケットの全長が不明であるので、Ref_Pkt_Lenレジスタ212にはnullが格納されており、第2の比較部204による比較処理も実施されない。その後、更新部213は、レジスタ210及び211に格納されたアドレス情報と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S108)。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0049】
次に、受信パケットの識別番号と一致するパケット識別番号を持つセグメントデータがセグメントデータベース205内に格納されている場合について説明する(S107でYES)。この場合、通信装置10は、第1の比較部203において、Rx_Lw_Ptrレジスタ208とSeg_Lw_Ptr209とに格納された下端アドレスを比較する。また、Rx_Up_Ptrレジスタ206とSeg_Up_Ptrレジスタ207とに格納された上端アドレスの比較も行なう(S109)。これにより、セグメントデータ同士の位置を規定する情報の関係を比較する。そして、これらの比較結果の組み合わせに基づいてセグメントデータの統合処理を実行し、その処理後の情報(上端アドレス、下端アドレス)をレジスタ(210、211)に出力する(S110)。この比較は、同一のパケット識別情報を持つセグメントデータがなくまるまで繰り返し行なわれる。なお、セグメントデータの統合処理の詳細については後述する。
【0050】
第1の比較部203による比較処理が終わると、通信装置10は、DMAコントローラ106において、受信パケットと同一のパケット識別番号を持つパケット長情報がセグメントデータベース205内に格納されているか否かを判定する。格納されていれば(S111でYES)、DMAコントローラ106は、当該パケット長情報をRef_Pkt_Lenレジスタ212に格納する。これにより、通信装置10は、第2の比較部204ににおいて、当該レジスタ212に格納されたパケット長情報と、第1の比較部203の処理結果(上端アドレス、下端アドレス)とを比較し、両者が示すデータ長が一致するか否かを判定する(S112)。
【0051】
ここで、両者が一致すれば(S113でYES)、通信装置10は、第2の比較部204において、分割前のパケットを構成する分割パケット全ての受信が完了した旨の判定を行なう(S114)。そして、通信装置10は、更新部213において、第1の比較部203による処理の結果に基づいてセグメントデータベース205を更新する。すなわち、第1の比較部203の処理結果(上端アドレス、下端アドレス)と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S115)。そして、該当するパケット識別番号に対応するデータをnullデータで更新する(S117)。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0052】
また、S111において該当するパケット長情報がなかった場合(S111でNO)、また、S113において両者のデータ長が不一致であった場合(S113でNO)、通信装置10は、更新部213において、更新処理を行なう。すなわち、第1の比較部203の処理結果(上端アドレス、下端アドレス)と、パケット識別番号とを対応付けたデータセットをセグメントデータとしてセグメントデータベース205に格納する(S116)。この場合、Ref_Pkt_Lenレジスタ212には、nullが格納されているため、第2の比較部204による比較処理は実施されない。その後、通信装置10は、再度、S101の処理に戻り、パケット受信待ちとなる。
【0053】
以上が、通信装置10における動作についての説明であるが、ここに示す処理の流れはあくまで一例であり、処理の順番等は前後してもよい。例えば、DMAコントローラ106において、パケット長情報をRef_Pkt_Lenレジスタ212に格納するタイミングは、分割パケットの受信とともに行なわれる等してもよい。
【0054】
次に、図5及び図6を用いて、図4のS109及びS110に示す第1に比較部203によるセグメントデータの統合処理の概要について説明する。ここでは、まず、図5を用いて、セグメントデータベース205の構成の一例について説明する。
【0055】
セグメントデータベース205には、分割パケットから抽出及び算出されたセグメントデータが格納されている。セグメントデータベース205には、セグメントデータが記述されている領域「スタートアドレス1」〜「エンドアドレス1」がある。ここで、DMAコントローラ106は、内部レジスタ106において、この「スタートアドレス1」と「エンドアドレス1」とを示す情報を格納している。これにより、DMAコントローラ106は、第1の比較に際して、セグメントデータベース205のセグメントデータを比較部105に向けて転送できる。
【0056】
また、セグメントデータベース205には、パケット再構成後のパケット長を示すパケット長情報と、パケット識別番号(IP−ID)とが対応付けられて格納されている。これら情報は、領域「スタートアドレス2」〜「エンドアドレス2」に格納されている。DMAコントローラ106では、上記同様に、内部レジスタ106aにおいて、この「スタートアドレス2」と「エンドアドレス2」とを示す情報を格納している。そのため、DMAコントローラ106は、第2の比較に際して、セグメントデータベース205に格納された情報を比較部105に向けてDMA転送できる。
【0057】
DMAコントローラ106は、内部レジスタ106aにおいて、ライタブルアドレス(WritableAddress)を格納している。ライタブルアドレスは、パケット識別番号が未登録の領域(一番低位のアドレス(スタートアドレス1に近いアドレス)のアドレスであり、この領域に新規セグメントが登録される。仮に、未登録の領域がなければ、内部レジスタ106aには、「エンドアドレス1」+1のアドレスがライタブルアドレスとして保持される。このとき、内部レジスタ106aには、「エンドアドレス1」の値も1増加した値が格納される。これにより、「スタートアドレス1」から「エンドアドレス1」のセグメントデータの登録領域をコンパクトに保てるため、セグメントデータの転送時間の増大を抑制できる。
【0058】
次に、図6を用いて、第1の比較部203によるセグメントデータの統合処理の概要について説明する。
【0059】
この処理では、第1の比較部203において、セグメントデータ同士の下端アドレスと上端アドレスとを比較する。これにより、図6に示すようなパターン分けを行なう。パターン(a)及びパターン(f)は、比較対象となる2つのセグメントデータに共通する区間がない場合を示し、パターン(b)、(c)、(e)は、比較対象となる2つのセグメント間に共通、又は連続したセグメントの領域があることを示す。パターン(d)は、受信したセグメントデータが既に受信済みであり、セグメントデータベース205内のセグメントデータを変更する必要がない場合を示している。なお、第1の比較部203においては、受信したセグメントデータを、セグメントデータベース内の全てのセグメントデータと比較し、このようなパターンに分類する。
【0060】
ここで、パターン(b)、(c)、(e)の場合、第1の比較部203は、セグメントデータ同士を統合する。この統合に際して、第1の比較部203は、統合後のセグメントデータの上端アドレス及び下端アドレスを出力する。これにより、Rx_Up_Ptrレジスタ206には、統合後の上端アドレスが格納され、Rx_Lw_Ptrレジスタ208には、統合後の下端アドレスが格納される。第1に比較部203においては、、「エンドアドレス1」に到達するまで、残りのデータについて比較処理を継続して行なう。
【0061】
また、統合対象となるセグメントデータがセグメントデータベース205内に2つ以上ある場合、第1の比較部203は、受信したセグメントデータと、最初に該当したセグメントデータとを統合する。その後、残りの統合対象のデータとも統合を実施する。なお、当該残りの統合対象のデータが格納されていた領域には、nullが格納される。例えば、「エンドアドレス1」領域にnullが書き込まれている場合、DMAコントローラ106では、内部レジスタ106aに保持された対応する値を’1’減算する。
【0062】
また、パターン(a)及びパターン(f)の場合、「スタートアドレス1」〜「エンドアドレス1」に格納されたセグメントデータ全ての比較が終了しても、統合するセグメントデータがない。この場合、当該セグメントデータは、新規セグメントデータとしてセグメントデータベース205に格納されることになる。
【0063】
以上説明したように本実施形態によれば、パケット分割前における分割パケットの位置と当該分割パケットの識別情報とを含むセグメントデータと、既受信の分割パケットのセグメントデータとを比較し、分割パケットの受信の完了を判定する。
【0064】
ここで、既受信の分割パケットのセグメントデータは、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ(セグメントデータベースの領域を定義する情報を格納)を書き換えるのみで済む。
【0065】
これにより、簡単且つ柔軟な構成で分割パケットの受信完了を判定できる。また、メモリを使用してセグメントデータベースを管理するため、構成が安価で済むとともに、大容量化にも柔軟に対応できる。更に、分割パケットの同時に再構成する数を増加させる場合にも、セグメントデータベースの領域を定義するレジスタを書き換えるだけで済む。
【0066】
一般に、ASIC内部にシフトレジスタを設ける場合よりも、ASICの外部にメモリデバイスを接続してシステム構築した方がビット単価が安価になる。そのため、本実施形態の構成によれば、コストを抑制できる。また、ASICを再設計せずに、メモリデバイスを変更することができる。
【0067】
(実施形態2)
次に、実施形態2について説明する。実施形態2においては、IPパケットではなく、TCPパケットの受信状態を判定する構成について説明する。なお、実施形態1と同様の構成についての説明は省略し、ここでは相違点について重点的に省略する。
【0068】
図7は、実施形態2に係わる通信装置10における比較部105及びメモリ107における構成の一例を示す図である。
【0069】
抽出部702は、TCPヘッダ及びIPヘッダからセグメントデータを抽出する。具体的には、分割パケットの受信範囲を規定する情報(ストリーム全体におけるどの位置のデータであるかを示す情報)として、ソケットIDと、TCPヘッダのSequence番号と、Next Sequence番号とを抽出する。Sequence番号は左端アドレスとして抽出され、Next Sequence番号は右端アドレスとして抽出される。なお、ソケットID(SO−ID)は、受信パケットのIPヘッダの送信元−宛先IPアドレスと、TCPヘッダの送信元−宛先ポート番号との組み合わせであるソケットペアから一意に決定される。
【0070】
セグメントデータベース705は、リオーダリング中のTCPパケットのセグメントデータを格納する。より具体的には、ソケットIDに対応してセグメントデータが格納されている。
【0071】
第1の比較部703は、受信したTCPパケットのセグメントデータとセグメントデータベース705に格納されたセグメントデータとを比較する。そして、その比較結果に基づいてセグメントデータの統合処理を実行し、その処理結果を出力する。処理結果としては、例えば、統合後のセグメントデータの左端アドレス及び右端アドレスが出力される。
【0072】
更新部713は、第1の比較部703による処理の結果に基づいて、セグメントデータベース205を更新する。
【0073】
第2の比較部704は、第1の比較部703による処理の結果(統合後の左端アドレス及び右端アドレス等)と、受信済みの分割パケットの連続する受信範囲を示す情報(ウインドウ左端情報及び受信済みACK番号)とを比較する。そして、その比較結果に基づいて分割パケットの受信状態(受信済みACK番号及びウインドウサイズ情報)を更新する。なお、更新後の情報は、次にパケットを送信する際に通信相手先に通知される。
【0074】
ここで、ウインドウサイズは、送信可能な最大のデータサイズを示す。また、ウインドウ左端情報は、図8の符号801に示すウインドウ左端を示し、受信済みACK番号は、図8の符号802に示す受信済みACK番号を示す。受信済みACK番号は、ウインドウ左端801から連続してデータを受信した場合に更新され、例えば、受信したデータのバイト数に応じてその数が増えていく。これに対して、ウインドウサイズは、図8の符号803に示すように、ACK番号が増えるにつれ減少する。
【0075】
ここで、例えば、図8の符号804及び805に示すセグメントデータを受信した場合、これらセグメントデータ804及び805は、受信済みACK番号802に示される位置と接していない。そのため、このような場合には、受信済みACK番号は更新されない。この場合、セグメントデータ804及び805は、更新部713において、セグメントデータベース705へ新規登録される。
【0076】
レジスタ706〜711は、各構成の出力を一時的に格納する。Rx_LE_Ptrレジスタ706は、受信したTCPパケットのセグメントデータの左端アドレスを格納する。RX_RE_Ptrレジスタ708は、受信したTCPパケットのセグメントデータの右端アドレスを格納する。Seg_LE_Ptrレジスタ707は、セグメントデータベース705に格納されたセグメントデータの左端アドレスを格納する。Seg_RE_Ptrレジスタ709は、セグメントデータベース705に格納されたセグメントデータの右端アドレスを格納する。
【0077】
Ref_LE_Ptrレジスタ710は、第1の比較部703から出力されるセグメントデータの左端アドレスを格納する。Ref_RE_Ptrレジスタ711は、第1の比較部703から出力されるセグメントデータの右端アドレスを格納する。Ref_Seg_Regレジスタ714は、ウインドウ左端情報及び受信済みACK番号を格納する。これらの情報は、取得部712によりTCPの上位層から取得される。
【0078】
ここで、実施形態2に係わる通信装置10における処理の流れについて簡単に説明する。
【0079】
通信装置10は、まず、抽出部702において、TCPパケットを受信すると、Sequence番号と、Next Sequence番号と、ソケットIDとを抽出する。そして、Sequence番号とNext Sequence番号とをそれぞれ、レジスタ706及び708に格納する。また、ソケットIDは、セグメントデータベース705に出力され、セグメントデータベース705内のセグメントデータと比較される。
【0080】
セグメントデータベース705には、ソケットIDに対応してセグメントデータが格納されている。通信装置10は、受信したセグメントデータのソケットIDと一致するセグメントデータをセグメントデータベース705内から探索する。具体的には、DMAコントローラ106において、セグメントデータベース705に格納されたセグメントデータ内でソケットIDが一致するセグメントデータの左端及び右端アドレスをレジスタ707及び709に順番に出力していく。これにより、左端アドレスがSeg_LE_Ptrレジスタ707に格納され、右端アドレスがSeg_RE_Ptrレジスタ709に格納される。
【0081】
レジスタ707及び709に値が格納されると、通信装置10は、第1の比較部703において、レジスタ(707、709)に格納されたアドレス情報と、レジスタ(706、708)に格納されたアドレス情報とを比較する。これにより、セグメントデータベース705内におけるセグメントデータと、TCPパケットから抽出されたセグメントデータとが比較される。この比較により、第1の比較部703においては、実施形態1で説明した処理と同様にして、新規セグメント、セグメントの統合、セグメントの保持などの判定を行なう。
【0082】
受信したセグメントデータと、セグメントデータベース705内のデータとの比較が終了すると、その比較結果がレジスタ710及び711にそれぞれ格納される。なお、セグメントデータが統合される場合は、セグメントデータベース705から該当のセグメントデータが削除される。すなわち、該当のデータがnullデータで更新される。ここで、例えば、図6(d)に示すような比較結果が得られた場合には、実施形態1と同様に、更新後のアドレス情報がレジスタ706及び708に格納され、第1の比較部703による比較処理が継続して行なわれることになる。
【0083】
第1の比較部703による比較処理が終了すると、その比較結果は、レジスタ710及びレジスタ711にそれぞれ格納される。そして、通信装置10は、第2の比較部704による比較処理を行なう。
【0084】
ここで、ウインドウ左端情報と、受信済みACK番号とが、第2の比較部704に入力される。通信装置10は、第2の比較部704において、これら情報と、レジスタ710及び711に格納されたアドレス情報とを比較する。第2の比較部704は、この比較結果に基づいて、現在のソケットに対応するウインドウの左端情報と、ACK(Acknowledgement)番号とを更新して出力する。
【0085】
以上説明したように実施形態2によれば、通信装置(TCP受信セグメント処理装置)において、TCPパケットの受信範囲を規定するセグメントデータと、既受信のTCPパケットのセグメントデータとを比較する。これにより、TCPパケットの受信状態を判定(更新)することができる。
【0086】
また、セグメントデータは、実施形態1同様に、メモリ内に定義されたセグメントデータベースにおいて管理されている。そのため、セグメントデータを管理するメモリ領域の容量の変更に際しては、レジスタ(セグメントデータベースの領域を定義する情報を格納)を書き換えるのみで済む。これにより、簡単且つ柔軟な構成でTCPパケットの受信状態を判定できる。また更に、実施形態1同様に、構成が安価で済むとともに、大容量化にも柔軟に対応できる。
【0087】
(実施形態3)
次に、実施形態3について説明する。実施形態2においては、受信したTCPパケットを受信バッファ上で組み立てていたが、この手法に限られない。例えば、リンクドリストを構築し、組み立てられたパケットのシーケンス番号までリンクドリストを追跡することにより、TCPパケットの受信状態を上位層に通知する手法が知られている。
【0088】
この処理を行なう場合、実施形態2で説明したセグメントデータの統合処理による受信通知の他、各セグメントを再構築するためのリンクドリストの処理に多くのリソースが必要となる。そこで、実施形態3においては、セグメントデータのリンクドリストの処理負荷を軽減させる構成について説明する。
【0089】
図9は、実施形態3に係わる第1の比較部703による処理の概要を示す図である。実施形態1及び2においては、セグメントデータを統合することでパケットの受信完了の判定や、受信済みACK番号等を更新する場合について説明した。これに対して、実施形態3においては、セグメントデータの統合は行なわず、セグメントデータベース705におけるセグメントデータの左端及び右端アドレスの値を変更させる。
【0090】
パターン(b)、(d)及び(e)に示すように、受信したセグメントデータと、セグメントデータベース705から読み出したセグメントデータとに重複する領域がある場合、セグメントデータの左端及び右端アドレスを変更させる。TCPパケットの受信では、セグメントデータの重複があった場合、時系列的に後から受信したセグメントデータを受信データとする。そのため、セグメントデータベース705から読み出したセグメントデータを修正している。
【0091】
パターン(a)及び(f)に示すように、受信したセグメントデータが、セグメントデータベース705内の全てのセグメントデータと重複する領域がない場合、受信したセグメントデータを新規セグメントとしてセグメントデータベース705に登録する。
【0092】
パターン(c)に示すように、受信したセグメントデータが、セグメントデータベース705内のセグメントデータをオーバーラップしている場合、セグメントデータベース705から該当のデータを削除する。セグメントデータベース705においては、図10に示すように、セグメントデータ自体のアドレス情報の他、リンク情報として隣接するセグメントのアドレス情報が付加されている。一つのセグメントデータを読み込むことにより、次にリンクされるセグメントデータのアドレス情報が記載されている。そのため、通信装置10は、このリストを辿ることによりセグメントデータを構築することができる。
【0093】
以上説明したように実施形態3によれば、実施形態2で説明した受信ウインドウ管理の他、受信セグメントデータのリンクドリスト情報の管理も、プロセッサのリソースを用いずに高速に処理することができる。
【0094】
(実施形態4)
次に、実施形態4について説明する。実施形態4においては、実施形態1(IPパケットの受信完了判定)及び実施形態2(TCPパケットの受信状態の判定)を一つの構成で行なう場合について説明する。
【0095】
図11を用いて、実施形態4に係わる通信装置10における比較部105及びメモリ107における構成の一例を示す図である。すなわち、実施形態1で説明したリアセンブル処理と、実施形態2で説明したリオーダリング処理とを行なう構成について説明する。
【0096】
選択部902は、Ref_Pkt_Lenレジスタ212及びRef_Seg_Regレジスタ714のいずれかを選択し、当該選択したレジスタに格納された値を第2の比較部704に入力する。より具体的には、IPパケット処理時にはRef_Pkt_Lenレジスタ212を選択し、TCPパケット処理時にはRef_Seg_Regレジスタ714を選択する。なお、いずれのレジスタを選択するかは、後述するID番号に基づいて決められる。
【0097】
また、実施形態4においては、受信したセグメントデータに関するアドレス情報を格納するレジスタ(706、708、710、711)がそれぞれ複数設けられる。これにより、セグメントデータベース705からの一度の読み出しに対して、複数の比較を行なうことができる。
【0098】
また、実施形態4に係わる抽出部702は、実施形態2で説明した機能に加えて、実施形態1を説明した図3に示す抽出部202の機能を有する。実施形態4に係わる抽出部702においては、各種アドレス等の情報を抽出するとともに、IPパケットを処理する際に用いるIP−IDと、TCPパケットを処理する際に用いるSO−IDに対してユニークなID番号(識別情報)を割り当てる。
【0099】
ここで、実施形態4に係わる通信装置10における処理の流れについて簡単に説明する。
【0100】
通信装置10は、まず、判定部201において、受信パケットのヘッダ情報に基づいてパケットを判定する。IPパケットの場合、分割パケットが処理対象となり、TCPパケットの場合、コネクションが確立しているソケットが処理対象となる。
【0101】
次に、通信装置10は、抽出部702において、受信パケットから各種アドレス等の情報を抽出するとともに、IPパケットを処理する際に用いるIP−ID及びTCPパケットを処理する際に用いるSO−IDに対してユニークなID番号を割り当てる。このID番号は、セグメントデータベース705、受信セグメントデータ用のレジスタ(706、708)、選択部902に入力される。
【0102】
ここで、図12には、実施形態4に係わるセグメントデータベース705の構成の一例が示される。セグメントデータベース705には、実施形態1を説明した図5と同様に、各レコードに対応して、ID番号とセグメントデータとが登録されている。分割IPパケットによるセグメントデータと、TCPパケットによるセグメントデータとは、ID番号により識別可能であれば、同一データベースに登録されていても問題ない。
【0103】
受信セグメントデータ用のレジスタ(706、708)は、例えば、ID番号毎に複数設けられる。受信セグメントデータ用のレジスタ(706、708)に格納された値は、セグメントデータベース705から読み出されたセグメントデータとともに、第1の比較部703に入力される。
【0104】
その後、通信装置10は、第1の比較部703において、上述した実施形態1及び2と同様にして比較処理を行なう。第1の比較結果用のレジスタ(710、711)は、上述した受信セグメントデータ用のレジスタ(706、708)と同様に、ID番号毎に複数設けられる。第1の比較部703においては、比較結果を第1の比較結果用のレジスタ(710、711)にそれぞれ出力する。これらレジスタ706及び708に格納された値は、第2の比較部704に入力される。この他、第2の比較部704には、IPパケット処理時にはパケット長情報が入力され、TCPパケット処理時にはウインドウ左端情報と受信済みACK番号とが入力される。
【0105】
通信装置10は、第2の比較部704において、上記入力された情報に基づいて比較処理を行なう。この比較結果に基づいて、第2の比較部704は、実施形態1及び実施形態2で説明したように、IPパケットの受信完了通知、又はTCPパケットの受信状態の通知を行なう。その後、通信装置10は、更新部713において、セグメントデータベース705への登録・更新処理を行なう。
【0106】
以上説明したように実施形態4によれば、複数のレジスタを備えることにより、実施形態1(IPパケットの受信完了の判定)及び実施形態2(TCPパケットの受信状態の判定)における処理を一度のセグメントデータベースの読み込みで行なうことができる。
【0107】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【0108】
例えば、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【0109】
(その他の実施形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段と、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段と、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段と、
前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段と、
前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリと、
前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段と
を具備することを特徴とする通信装置。
【請求項2】
前記第1の抽出手段により抽出されたセグメントデータと同一の前記識別情報を持つ前記パケット長情報が前記セグメントデータベースに格納されている場合、該パケット長情報と前記第1の比較手段により処理された前記位置を規定する情報とを比較し、分割前のパケットを構成する分割パケット全ての受信が完了したか否かを判定する第2の比較手段
を更に具備することを特徴とする請求項1記載の通信装置。
【請求項3】
前記第1の抽出手段は、
前記分割前における該分割パケットの位置を規定する情報として、該分割前のパケットにおける上端アドレス及び下端アドレスを抽出し、
前記第1の比較手段は、
前記識別情報が同一である前記セグメントデータ同士の上端アドレス及び下端アドレスの関係を比較し、該比較の結果、該セグメントデータ同士を統合する場合には、統合後のセグメントデータの上端アドレス及び下端アドレスを出力し、該セグメントデータ同士を統合しない場合には、前記第1の抽出手段により抽出されたセグメントデータの上端アドレス及び下端アドレスを出力し、
前記第2の比較手段は、
前記第1の抽出手段により抽出されたセグメントデータと同一の前記識別情報を持つ前記パケット長情報が前記セグメントデータベースに格納されている場合、該パケット長情報と、前記第1の比較手段から出力された上端アドレス及び下端アドレスとを比較し、前記受信完了の判定を行なう
ことを特徴とする請求項2記載の通信装置。
【請求項4】
分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する抽出手段と、
前記セグメントデータを保持するセグメントデータベースを格納するメモリと、
前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、
受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する第2の比較手段と、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段と
を具備することを特徴とする通信装置。
【請求項5】
通信装置における処理方法であって、
第1の判定手段が、受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する工程と、
第2の判定手段が、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する工程と、
第1の抽出手段が、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する工程と、
第2の抽出手段が、前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する工程と、
格納手段が、前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースをメモリに格納する工程と、
比較手段が、前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する工程と、
更新手段が、前記比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する工程と
を含むことを特徴とする処理方法。
【請求項6】
通信装置における処理方法であって、
抽出手段が、分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する工程と、
格納手段が、前記セグメントデータを保持するセグメントデータベースをメモリに格納する工程と、
第1の比較手段が、前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する工程と、
第2の比較手段が、受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する工程と、
更新手段が、前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する工程と
を含むことを特徴とする処理方法。
【請求項7】
コンピュータを、
受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段、
前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段、
前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリ、
前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する比較手段、
前記比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段
として機能させるためのプログラム。
【請求項8】
コンピュータを、
分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する抽出手段、
前記セグメントデータを保持するセグメントデータベースを格納するメモリ、
前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段、
受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する第2の比較手段、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段
として機能させるためのプログラム。
【請求項1】
受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段と、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段と、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段と、
前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段と、
前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリと、
前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段と
を具備することを特徴とする通信装置。
【請求項2】
前記第1の抽出手段により抽出されたセグメントデータと同一の前記識別情報を持つ前記パケット長情報が前記セグメントデータベースに格納されている場合、該パケット長情報と前記第1の比較手段により処理された前記位置を規定する情報とを比較し、分割前のパケットを構成する分割パケット全ての受信が完了したか否かを判定する第2の比較手段
を更に具備することを特徴とする請求項1記載の通信装置。
【請求項3】
前記第1の抽出手段は、
前記分割前における該分割パケットの位置を規定する情報として、該分割前のパケットにおける上端アドレス及び下端アドレスを抽出し、
前記第1の比較手段は、
前記識別情報が同一である前記セグメントデータ同士の上端アドレス及び下端アドレスの関係を比較し、該比較の結果、該セグメントデータ同士を統合する場合には、統合後のセグメントデータの上端アドレス及び下端アドレスを出力し、該セグメントデータ同士を統合しない場合には、前記第1の抽出手段により抽出されたセグメントデータの上端アドレス及び下端アドレスを出力し、
前記第2の比較手段は、
前記第1の抽出手段により抽出されたセグメントデータと同一の前記識別情報を持つ前記パケット長情報が前記セグメントデータベースに格納されている場合、該パケット長情報と、前記第1の比較手段から出力された上端アドレス及び下端アドレスとを比較し、前記受信完了の判定を行なう
ことを特徴とする請求項2記載の通信装置。
【請求項4】
分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する抽出手段と、
前記セグメントデータを保持するセグメントデータベースを格納するメモリと、
前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段と、
受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する第2の比較手段と、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段と
を具備することを特徴とする通信装置。
【請求項5】
通信装置における処理方法であって、
第1の判定手段が、受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する工程と、
第2の判定手段が、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する工程と、
第1の抽出手段が、前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する工程と、
第2の抽出手段が、前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する工程と、
格納手段が、前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースをメモリに格納する工程と、
比較手段が、前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する工程と、
更新手段が、前記比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する工程と
を含むことを特徴とする処理方法。
【請求項6】
通信装置における処理方法であって、
抽出手段が、分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する工程と、
格納手段が、前記セグメントデータを保持するセグメントデータベースをメモリに格納する工程と、
第1の比較手段が、前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する工程と、
第2の比較手段が、受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する工程と、
更新手段が、前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する工程と
を含むことを特徴とする処理方法。
【請求項7】
コンピュータを、
受信パケットのヘッダ情報に基づいて該受信パケットが分割パケットであるか否かを判定する第1の判定手段、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報に基づいて該受信パケットが最後尾の分割パケットであるか否かを判定する第2の判定手段、
前記第1の判定手段により前記受信パケットが分割パケットであると判定された場合に、前記受信パケットのヘッダ情報から分割前における該受信パケットの位置を規定する情報と、該受信パケットの識別情報とを含むセグメントデータを抽出する第1の抽出手段、
前記第2の判定手段により前記受信パケットが最後尾の分割パケットであると判定された場合に、該受信パケットのヘッダ情報からパケット分割前におけるパケット長情報を抽出する第2の抽出手段、
前記セグメントデータと、前記パケット長情報に前記識別情報を対応付けた情報とを保持するセグメントデータベースを格納するメモリ、
前記第1の抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する比較手段、
前記比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段
として機能させるためのプログラム。
【請求項8】
コンピュータを、
分割パケットのヘッダ情報から分割前における該分割パケットの位置を規定する情報と、該分割パケットの識別情報とを含むセグメントデータを抽出する抽出手段、
前記セグメントデータを保持するセグメントデータベースを格納するメモリ、
前記抽出手段により抽出されたセグメントデータと、該セグメントデータと同一の前記識別情報を持つ前記セグメントデータベースに格納されたセグメントデータとにおける前記位置を規定する情報の関係を比較し、その比較結果に基づいてセグメントデータの統合処理を実行する第1の比較手段、
受信済みの分割パケットの連続する受信範囲を示す情報と、前記第1の比較手段により処理された前記位置を規定する情報とを比較し、その比較結果に基づいて前記分割パケットの受信状態を更新する第2の比較手段、
前記第1の比較手段により処理された前記位置を規定する情報に基づいて前記セグメントデータベースを更新する更新手段
として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2011−151781(P2011−151781A)
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【出願番号】特願2010−245703(P2010−245703)
【出願日】平成22年11月1日(2010.11.1)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【出願日】平成22年11月1日(2010.11.1)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]