JP2013132006A - 整列回路及び受信装置 - Google Patents

整列回路及び受信装置 Download PDF

Info

Publication number
JP2013132006A
JP2013132006A JP2011281916A JP2011281916A JP2013132006A JP 2013132006 A JP2013132006 A JP 2013132006A JP 2011281916 A JP2011281916 A JP 2011281916A JP 2011281916 A JP2011281916 A JP 2011281916A JP 2013132006 A JP2013132006 A JP 2013132006A
Authority
JP
Japan
Prior art keywords
area
packet
written
selection signal
sequence number
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
JP2011281916A
Other languages
English (en)
Other versions
JP2013132006A5 (ja
JP5788308B2 (ja
Inventor
Akihiro Nozaki
暁弘 野崎
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2011281916A priority Critical patent/JP5788308B2/ja
Priority to US13/726,074 priority patent/US8879548B2/en
Publication of JP2013132006A publication Critical patent/JP2013132006A/ja
Priority to US14/506,660 priority patent/US9210093B2/en
Publication of JP2013132006A5 publication Critical patent/JP2013132006A5/ja
Application granted granted Critical
Publication of JP5788308B2 publication Critical patent/JP5788308B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing

Landscapes

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

Abstract

【課題】CPUの代わりに、受信したパケットを送信順に並び替える。
【解決手段】制御回路300は、整列バッファ110の先頭の領域が未書込領域であるときに該領域を示す選択信号SELを生成する。該先頭の領域が書込済領域であるときに、先頭から末尾に向かう順で、該領域に格納されたシーケンス番号と対象パケットのシーケンス番号との比較を順次行って境界領域の検索を行い、検出した境界領域を示す選択信号SELを生成する。最後の書込済領域まで検索を行っても境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す選択信号を生成する。書込回路200は、選択信号SELにより示される領域を起点にして、整列バッファ110の末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、対象パケットのパケット情報を、選択信号SELにより示される領域に書き込む。
【選択図】図1

Description

本発明は、パケット、特に伝送順序が保証されない伝送路により伝送されるパケットを受信する装置におけるパケットの並び替え技術に関する。
近年、WWW(World Wide Web)等のアプリケーションソフトウェア(以下、単に「アプリケーション」ともいう)の登場により、IP(Internet Protocol)をベースとしたパケット通信が普及している。
IPをベースとしたパケット通信では、パケットの転送経路が固定されているわけではないため、輻輳などの要因により、受信装置へのパケットの到達順は、必ずしも送信順と一致するとは限らない。受信したパケットを処理するアプリケーションでは、一般的に、送信順と異なる順序で受信したパケットを受け付けない。
従って、送信装置では、送信する各パケットに対して送信順に応じたシーケンス番号を付加し、受信装置では、受信したパケットをシーケンス番号順に並び替えた後にアプリケーションに渡すことが行われている。
受信装置において、CPU(Central Processing Unit)によりパケットの並替えを行うことが知られている。しかし、近年、多種多様なネットワーク機器の普及に伴い、アプリケーションの処理も多様化する一途を辿り、また、光ファイバー通信網により代表される高速通信インフラの整備に伴い、受信装置側での高速な処理が求められている。
このような背景において、CPUによりパケットの並替えを行うのでは、パケットを受信する度に、CPUへの割込みが生じるため、アプリケーションの処理は元より、受信装置全体の制御なども司るCPUには大きな負担をかけてしまい、ひいては受信装置全体の効率がよくないという問題がある。
そのため、CPUの代わりにハードウェアによりパケットの並替えを担うための技術が種々提案されている。
図29は、特許文献1における図9に対して符号を変更したものであり、該文献における技術を適用した受信装置側のインタフェースを示す。図29を参照して特許文献1に開示されたパケット並替技術を説明する。
図29に示すインタフェースは、並替え制御部1、並替えバッファ4を有する。並替え制御部1には、シーケンス番号分離部2と読出しポインタ用リングカウンタ3が設けられている。
並替え制御部1において、シーケンス番号分離部2は、受信したパケットのヘッダからシーケンス番号を分離すると共に、並替えバッファ4における該パケットの書込み位置を示す書込みポインタを生成する。読出しポインタ用リングカウンタ3は、並替えバッファ4からパケットを読み出す位置を示す読出しポインタを生成する。並替えバッファ4は、書込みに際して、書込部(図示せず)により書込みポインタが示す位置にパケットデータを書き込まれ、読出しに際して、読出部(図示せず)により読出しポインタが示す位置に格納されたパケットデータを出力する。
並替えバッファ4内の番号は、パケットデータを記憶する番地を示し、書込みポインタと読出しポインタの値に対応する。並替えバッファ4内の各番地の記憶領域は、パケットデータを格納するための領域と、該領域内にパケットデータが格納されたか否かを示すストアフラグを格納する領域が含まれる。
並替え制御部1におけるシーケンス番号分離部2は、受信したパケットのシーケンス番号順に書込みポインタを生成し、図示しない書込部は、シーケンス番号分離部2により生成した書込ポインタが示す番地にパケットデータを書き込むと共に、該番地のストアフラグを表示させる。
読出しに際して、読出部は、読出しポインタ用リングカウンタ3を用いて読出しポインタを生成し、そのポインタが示す並替えバッファ4の領域に保持されているストアフラグを検索する。このとき、ストアフラグが表示状態であればパケットが格納されているということになるので、読出部は、該領域に格納されているパケットデータを読み出して出力し、同時にストアフラグを非表示にして次のパケットの記憶領域を検索するために読出しポインタ用リングカウンタ3のカウント値を1進める。こうすることにより、パケットは、シーケンス番号順すなわち送信順に並び替えられて読み出される。
なお、並替えバッファ4の状態が例えば図30(特許文献1における図10)に示すようになっているときに読出しを行う場合に、155番地までパケットが読み出されるが、156番地に書き込むべきパケット、すなわち155番地と157番地に書き込まれたパケットが未到着のため、読出部がストアフラグを検索し続ける状態になり、読出しが停滞してしまう。
このとき、特許文献1に開示された技術は、読出しの停滞状態の続く時間を計測し、計測した時間が閾値に到達すると、156番地に書き込むべきパケットがロスしたと判断し、読出しポインタ用リングカウンタ3を強制的に1インクリメントし、インクリメント後の読出しポインタが示す番地のストアフラグの確認乃至パケットデータの読出しを行う。
図31は、特許文献2における図1に対して符号を変更したものであり、該文献における技術を適用した通信システムを示す。図31を参照して特許文献2に開示されたパケット並替技術を説明する。なお、図31に示すシステムにおいて、通信装置10と通信装置20が同様の構成を有するため、通信装置10について、各機能ブロックの図示及び説明を省略する。また、通信装置20に関しては、受信時のパケット並替えに関連する機能ブロックのみを詳細に説明する。
通信装置20は、パケットタイザー回路21、カウンタ22、パケット送受信回路23、パケットアセンブラ回路24、受信バッファ25、タイマ26、リスト27、順序並替部28を備える。これらの機能ブロックのうち、パケット送受信回路23、パケットアセンブラ回路24、受信バッファ25、タイマ26、リスト27、順序並替部28は、パケット並替えに関連する。
パケット送受信回路23は、通信網30を介して通信装置10からパケットを受信してパケットアセンブラ回路24に渡す。受信したパケットのヘッダには、通信装置10が送信順に応じて追加したシーケンス番号が付加されている。
パケットアセンブラ回路24は、パケット送受信回路23からのパケットのデータとシーケンス番号Scを順序並替部28に渡す。
受信バッファ25は、パケットの送信順でパケットのデータが出力できるようにするバッファであり、この受信バッファ25からアプリケーションなどがデータを取り出すことで様々な処理ことができる。また、受信バッファ25には、既に到達したパケットの中で送信順が最後のパケットのシーケンス番号Sbも格納されている。
リスト27は、到達が期待されるパケットのシーケンス番号が列記されるリスト(待ち受けリスト)である。順序並替部28は、上述した各機能ブロックの制御、パケットの並替え、リスト27への到達期待パケットの登録などを行う。
図32と図33は、特許文献2における図2と図3のフローチャートに対してステップ番号を夫々変更したものである。図32と図33を参照して、順序並替部28の処理を説明する。
順序並替部28は、パケットアセンブラ回路24からパケットのデータとシーケンス番号Scを渡されると、該シーケンス番号Scと、受信バッファ25に格納されたシーケンス番号Sb(既に到達したパケットの中で送信順が最後のパケットのシーケンス番号)と比較する(S11、S13、S15)。
比較の結果、Sc=Sbのとき(S11:Y)、順序並替部28は、新たに受信したパケット(シーケンス番号Scのパケット)が重複したパケットであると判断し、そのデータを受信バッファ25から削除(破棄)する(S12)。
また、Sc=Sb+1のとき(S11:N、S13:Y)、順序並替部28は、シーケンス番号Scのパケットがシーケンス番号Sbのパケットに連続したパケットとみなし、シーケンス番号Scのパケットを、受信バッファ25のシーケンス番号Sbのパケットのデータの次の記憶領域に格納する(S14)。
さらに、Sc<Sbのとき(S11:N、S13:N、S15:Y)、順序並替部28は、リスト27からシーケンス番号Scを探索する(S16)。
そして、リスト27にシーケンス番号Scがなければ(S16:N)、順序並替部28は、シーケンス番号Scのパケットを破棄する(S17)。
また、リスト27を探索した結果、リスト27にシーケンス番号Scがヒットすると(S16:Y)、順序並替部28は、リスト27から当該のシーケンス番号を削除し(S18)、該当するシーケンス番号に対応するタイマ26の計時動作を解除(停止)し(S19)、シーケンス番号Scに対応する受信バッファ25の適切な位置に該当するパケットのデータを挿入する(S20)。
一方、ステップS15の比較において、Sc<Sbではない場合(S15:N)、つまりSc>(Sb+1)であれば、順序並替部28は、シーケンス番号Scのパケットを受信バッファ25へ格納すると共に(S21)、Sb+2〜Sc−1のシーケンス番号を持つパケットを待ち受けるため、それらのシーケンス番号を待ち受けパケットのリスト27に加え(S22)、夫々の待ち受けパケットのシーケンス番号についてタイマ26の計時動作を開始させる(S23)。なお、特許文献2の明細書において、ステップS22に対する説明の部分(「0047」段落)では、リスト27に「Sb+1〜Sc−1」のシーケンス番号を追加すると書かれており、図32のフローチャートでは、「Sb+2〜Sc−1」になっているが、図32のフローチャートに書かれた「Sb+2〜Sc−1」に統一した。
図33は、タイマ26がタイムアウトしたときの順序並替部28の処理を示す。順序並替部28がタイマ26の計時動作を開始させてから、ある一定の時間が経過し、タイマ26がタイムアウトすると(S31)、順序並替部28は、タイマ26と関連付けられたシーケンス番号をリスト27から検索する(S32)。
検索の結果、該当するシーケンス番号が見つかった場合は(S32:Y)、順序並替部28は、そのシーケンス番号をリスト27から削除し(S33)、該当するパケットを欠落パケットとして扱い、処理を終了する。
また、検索の結果、該当するシーケンス番号が見つからなかった場合(S32:N)、順序並替部28は、そのまま処理を終了する。
特許文献2における技術によれば、受信順が送信順と異なっても、受信側において、パケットが送信順に並び替えができるとされている。
特開2001−111608号公報 特開2001−189755号公報
IEEE802.3規格に準拠した通信装置においては、TCP/IP(Transmission Control Protocol/Internet Protocol)やUDP/IP(User Datagram Protocol/Internet Protocol)等の通信プロトコルが用いられている。
例えば、TCP/IPの場合には、パケットのシーケンス番号は、送信順が後になるほど大きな値を有するが、送信順に応じて1ずつインクリメントする値ではない。これについて、図34〜図36を参照して、TCP/IPパケットの構成から説明する。
図34は、TCP/IPパケットのフォーマットを示す。図示のように、TCP/IPパケット50は、IPヘッダ60と、TCPヘッダ70と、アプリケーションデータとなるペイロード90を含む。
IPヘッダ60は、OSI(Open System Interconnection)参照モデルのネットワーク層に位置するものであり、ネットワークに接続されている装置のアドレッシングや、相互に接続された複数のネットワーク内での通信経路の選定のなどのための情報である。
図35に示すように、IPヘッダ60は、パケット長などの情報を示すIPパケット情報61と、送信元IPアドレス62と、宛先IPアドレス63を含む。
TCPヘッダ70は、OSI参照モデルのトランスポート層に位置するものであり、転送されるペイロード90をどの処理に渡せばいいかなどの情報が含まれている。
図36に示すように、TCPヘッダ70は、送信元のプログラムを識別するための送信元ポート番号71、宛先のプログラムを識別するための宛先ポート番号72、送信順を示すシーケンス番号73、次に受信すべきシーケンス番号を示すアクノリッジメント番号74、TCPヘッダ長を示すオフセット75、将来の拡張のための予備フィールド76、制御ビットを示すTCPフラグ77、受信側において受信可能なデータサイズを示すウインドウ78、ペイロード90のチェックサムを示すチェックサム79、緊急を要するデータの格納場所を示すアージェントポイント80を含む。
シーケンス番号73は、送信装置間の接続確立時に乱数により初期値(1つ目のパケットのシーケンス番号)が決定される。その後、現在に送信するパケットには、1つ前に送信したパケットのシーケンス番号73とペイロード長との和であるシーケンス番号が付与される。なお、ペイロード長は、当該パケットのTCPヘッダ70のペイロード90のデータ長である。
アクノリッジメント番号74は、シーケンス番号73とペイロード長との和である。すなわち、アクノリッジメント番号74は、次に送信されるパケットのシーケンス番号であり、現在に受信したパケットのシーケンス番号73が、1つ前に受信したパケットのアクノリッジメント番号74と一致すれば、現在に受信したパケットは、1つ前に受信したパケットに連続して送信されたパケットである。
TCP/IPパケットの送信装置は、送信時に、図34〜図36に示す構成のパケットを生成して送信する。すなわち、受信側で受信されたパケットは、分割されて送信されたパケット(以下「分割パケット」ともいう)であれば、そのTCPヘッダには、該パケットのシーケンス番号73が含まれている。
なお、TCPプロトコルでは、ペイロード90の最大長MSS(Maximum Segment Size)は定められており、アプリケーションデータは、該MSS以下のサイズに分割されて送信される。
TCPヘッダ70中のウインドウ78は、送信先のバッファサイズを示している。送信装置は、MSS以下に分割されて送信されるデータの個数がウインドウ78により示されるウィンドウサイズとなるまで連続してパケットを送出可能であり、ウィンドウサイズに到達した場合は、送信装置は、パケットの送出を一時停止し、受信側からの受信応答検出後、再度、パケットの送信を開始する事となる。
以上の説明から分かるように、TCP/IPの場合、シーケンス番号は、送信順が後になるほど大きい値になるが、送信順に応じて1ずつインクリメントする値ではない。また、ペイロードの最大長MSSが決まっているものの、ペイロード長が固定値ではないため、シーケンス番号の増分値も固定値ではない。
ここで、特許文献1と特許文献2に開示された技術をTCP/IPの受信装置に適用した場合を考える。
特許文献1に開示された技術は、並替えバッファ4にパケットを書き込む際に、シーケンス番号に応じて書込ポインタを生成し、書込ポインタが示す番地にパケットを書き込む。例えば、図30に示す並替えバッファ4に対して155番地までパケットが書き込まれており、156番地からパケットが書き込まれていないと仮定した場合に、新たに受信したパケットのシーケンス番号が155に書き込まれたパケットのシーケンス番号に1を加算した値ではない場合に、新たに受信したパケットを、156以降のいずれかの番地に書き込むかを決定する必要がある。
シーケンス番号が1ずつインクリメントする場合には、新たに受信したパケットのシーケンス番号と、155番地に書き込まれたシーケンス番号との差分の分だけ155から後に位置する番地に新たに受信したパケットを書き込めばよいが、TCP/IPパケットの場合、シーケンス番号が送信順に応じて1ずつインクリメントするわけではなく、また、増分値も固定ではないため、新たに受信したパケットの書き込むべき位置を決定することができず、適切な書込ポインタをそもそも生成することができない。
そのため、特許文献1に開示された技術は、シーケンス番号が送信順に応じて1ずつインクリメントすることを前提としている技術であり、該技術をTCP/IPの受信装置に適用すると、本来連続して送信されたパケット同士も、並替えバッファ4上で間隔をおいて書き込まれることになる。
この場合、間隔となった番地に書き込むべきパケットが無いため、特許文献1の技術によれば、読出し時には、パケットロスの判断がなされ、読出しポインタの強制的なインクリメントが行われる。
これでは、並替えバッファ4の有効利用ができない。さらに、一般的に、パケットロスが生じるとCPUへの割込みが生じるため、割込みが多発し、受信装置の処理効率の低下を引き起こしてしまう。
特許文献2に開示された技術も、シーケンス番号が送信順に1ずつインクリメントすることを前提にしたものであり、新たに受信したパケットのシーケンス番号と、過去に受信したパケットのうちの最大なシーケンス番号とが連続しない場合に、この2つのシーケンス番号間の各数値を、今後受信するパケットのシーケンス番号と予測してリスト27に登録している(図30におけるS15:No、S21〜)。
TCP/IPの場合、このような予測がそもそも適正にできない。そのため、特許文献2の技術をTCP/IPの受信装置に適用すると、存在しないシーケンス番号がリスト27に多数登録されることになり、タイマ26によるこれらのシーケンス番号に対応する計時、及び計時結果に応じたタイムアウトの判断などの無駄な処理が発生し、受信装置の処理効率が低下してしまう。
本発明の1つの態様は、送信順に応じた大きさのシーケンス番号が付随されたパケットの受信側における整列回路である。該整列回路は、今回受信したパケットである対象パケットのシーケンス番号を含むパケット情報が入力され、整列バッファと、書込回路と、制御回路を備える。
整列バッファは、パケット情報を書き込むための領域を複数順次配列してなる。
書込回路は、整列バッファの複数の領域のうちの1つを示す選択信号が入力され、該選択信号に応じて、対象パケットのパケット情報を整列バッファへ書き込む。
制御回路は、対象パケットについて、選択信号を生成して書込回路に供する。
具体的には、制御回路は、整列バッファの先頭の領域がパケット情報を書き込まれていない未書込領域であるときに、該先頭の領域を示す選択信号を生成する。
また、制御回路は、整列バッファの先頭の領域がパケット情報を書き込まれた書込済領域であるときに、対象パケットのパケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含むパケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれたパケット情報に含まれるシーケンス番号と対象パケットのシーケンス番号との比較を順次行うことにより実行する。そして、制御回路は、該検索により境界領域を検出できたときに、該境界領域を示す選択信号を生成する一方、末尾の書込済領域まで検索を行っても境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す選択信号を生成する。
書込回路は、選択信号により示される領域を起点にして、整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、対象パケットのパケット情報を選択信号により示される領域に書き込む。
なお、上記態様の整列回路を装置やシステムに置き換えて表現したもの、該整列回路を備えた受信装置、該受信装置を備えた通信システムなども、本発明の態様としては有効である。
本発明にかかる技術によれば、受信順序が保証されず、かつ、シーケンス番号が送信順に応じて1ずつインクリメントする値ではないパケットの受信装置においても、CPUの代わりに、受信したパケットを送信順に並び替え、受信装置の効率向上を図ることができる。
本発明の技術にかかる原理を説明するため整列回路を示す図である。 図1に示す整列回路において、パケットの受信に伴った整列バッファの状態の遷移の例を示す図である。 図1に示す整列回路の処理を示すフローチャートである。 図3に示すフローチャートにおける書込処理を示すフローチャートである。 図1に示す整列回路における書込回路の構成例を示す図である。 連続ビットに基づいて検索対象領域を判定する手法(第1の手法)を用いる場合に、図1に示す整列回路の処理を示すフローチャートである。 連続ビットに基づいて検索対象領域を判定する手法(第1の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その1)。 連続ビットに基づいて検索対象領域を判定する手法(第1の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その2)。 連続ビットに基づいて検索対象領域を判定する手法(第1の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その3)。 ポインタに基づいて検索対象領域を判定する手法(第2の手法)を用いる場合に、図1に示す整列回路の処理を示すフローチャートである。 図10のフローチャートにおけるポインタ生成/変更処理を示すフローチャートである。 ポインタに基づいて検索対象領域を判定する手法(第2の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その1)。 ポインタに基づいて検索対象領域を判定する手法(第2の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その2)。 ポインタに基づいて検索対象領域を判定する手法(第2の手法)を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その3)。 ポインタに基づいて検索対象領域を判定する第2の手法を改良した手法(第3の手法)を用いる場合に、図1に示す整列回路が行うポインタ生成/変更処理を示すフローチャートである。 第3の手法を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その1)。 第3の手法を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その2)。 第3の手法を用いる場合に、図1に示す整列回路の処理の具体例を示す図である(その3)。 本発明の第1の実施の形態にかかる受信装置を示す図である。 図19に示す受信装置におけるトレーステーブルに格納されたコネクション情報の例を示す図である。 図19に示す受信装置における整列回路を示す図である。 図19に示す受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。 図19に示す受信装置の処理の流れを示すフローチャートである。 図23における書込処理の流れを示すフローチャートである。 本発明の第2の実施の形態にかかる受信装置における整列回路を示す図である。 本発明の第2の実施の形態にかかる受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。 本発明の第3の実施の形態にかかる受信装置における整列回路を示す図である。 本発明の第3の実施の形態にかかる受信装置の整列バッファとメモリ内におけるパケット情報の格納態様の例を示す図である。 特許文献1における図9に対応する図である。 特許文献1における図10に対応する図である。 特許文献2における図1に対応する図である。 特許文献2における図2に対応する図である。 特許文献2における図3に対応する図である。 TCP/IPパケットのフォーマットを示す図である。 図34に示すフォーマットにおけるIPヘッダを示す図である。 図34に示すフォーマットにおけるTCPヘッダを示す図である。
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。なお、以下の説明において、各整列回路は、パケットの受信装置に設けられたものである。また、受信装置に関して、受信時におけるパケットの並替えについてのみを説明するが、受信装置は、受信時にパケットの並替えのみを行うことではなく、受信機能のみを有するものとも限らない。
本発明の具体的な実施の形態の前に、まず、本発明にかかる技術の原理を説明する。
図1に示す整列回路100は、パケットの受信装置に設けられ、送信順にパケットを並び替えるためのものである。図示のように、該整列回路100は、今回受信したパケット(以下「対象パケット」という)のパケット情報PIが入力され、整列バッファ110、書込回路200、制御回路300を備える。なお、パケット情報PIには、対象パケットのシーケンス番号SNが少なくとも含まれている。
整列バッファ110は、複数(「N+1」個)の領域が先頭の領域(領域0)から末尾の領域(領域N)に向かう配列順で配列してなる。これらの領域には、書込回路200に対象パケットのパケット情報PIを書き込まれる。なお、整列バッファ110の複数の領域は、1つのバッファ内の複数の領域であってもよいし、図示の配列順と同様に配列された複数のバッファであってもよい。
書込回路200は、制御回路300からから、整列バッファ110の複数の領域のうちの1つを示す選択信号SELが入力され、選択信号SELに応じて、対象パケットのパケット情報PIを整列バッファ110書き込む。
制御回路300は、下記のように選択信号SELを生成する。
整列バッファ110の先頭の領域(領域0)にパケット情報が書き込まれていない場合には、制御回路300は、該先頭の領域を示す選択信号SELを生成する。なお、以下において、パケット情報が書き込まれていない領域を「未書込領域」という。対して、パケット情報が既に書き込まれた領域を「書込済領域」という。
整列バッファの先頭の領域が書込済領域であるときには、制御回路300は、対象パケットのパケット情報PIからシーケンス番号SNを抽出して、境界領域の検索を行う。境界領域とは、対象パケットのシーケンス番号より大きいシーケンス番号を含むパケット情報が書き込まれた各書込済領域のうちの先頭の領域である。
制御回路300は、整列バッファ110の先頭から末尾に向かう順で、該書込済領域に書き込まれたパケット情報に含まれるシーケンス番号と対象パケットのシーケンス番号との比較を順次行うことにより境界領域の検索を実行する。そして、制御回路300は、該検索により境界領域を検出できたときに、該境界領域を示す選択信号SELを生成する。一方、最後の書込済領域まで検索を行っても境界領域を検出できなかったときに、制御回路300は、最後の書込済領域の次の領域を示す選択信号SELを生成する。
書込回路200は、選択信号SELにより示される領域を起点にして、整列バッファ110の末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、対象パケットのパケット情報PIを起点の済領域に書き込む。
なお、整列バッファ110の領域が書込済領域であるか未書込領域であるかの判断は、従来知られている種々の手法を適用することができる。例えば、各領域内に、該領域にパケット情報PIが書き込まれているか否かを示すストアフラグを設け、該領域内にパケット情報PIが書き込まれたときに、ストアフラグが立つようにする。そして、制御回路300は、当該領域内のストアフラグを確認することにより該領域が書込済領域か未書込領域かを判断すればよい。
図2を参照して、図1に示す整列回路100において、パケットの受信に伴った整列バッファ110の状態の遷移の例を説明する。
図2において、整列バッファ110の各領域を示す四角形の枠のうちの、黒い枠は書込済領域を示し、白い枠が未書込領域を示す。また、整列バッファ110の下の数字は、該領域の配列順を示し、数字が小さい領域ほど、先頭に近い領域である。また、書込済領域内の文字は、該領域に書き込まれたパケット情報PIを示す。また、時間軸は、パケットの受信順を示し、時間が後になるほど受信順も後になる。時間軸の左側の数字は、対象パケットの受信タイミングを示し、時間軸の右側の文字は、該タイミングにおいて受信したパケット(対象パケット)のシーケンス番号SNと、該対象パケットに対して制御回路300が生成した選択信号SELを示す。これらについて、以降の各同種の図面においても同様である。
図2に示すように、タイミングt1において、整列バッファ110の全ての領域が未書込領域である。このときに、シーケンス番号SNが「5」であるパケットが受信され、そのシーケンス番号SNが含まれるパケット情報PIは、整列回路100に入力される。
制御回路300は、整列バッファ110の先頭となる領域0が未書込領域であるため、領域0を示す選択信号SELを生成して書込回路200に出力する。
書込回路200は、選択信号SELを示す領域0を起点にして、整列バッファ110の末尾の領域に向かう方向に1領域分のシフトをすると共に、対象パケットのパケット情報PI(ここではシーケンス番号SNを示す「5」)を領域0に書き込む。なお、シフトのときに、いずれの領域にもパケット情報が書き込まれていないため、空のデータがシフトされることになる。
タイミングt2において、シーケンス番号SNが「11」である次のパケットが受信され、そのパケット情報PIが整列回路100に入力される。図示のように、このときに、整列バッファ110の領域0に、パケット情報PI(シーケンス番号SN=5)が書き込まれており、領域0が書込済領域である。そのため、制御回路300は、まず、整列バッファ110の先頭から末尾に向かう順で、各書込済領域に書き込まれたシーケンス番号SNと、対象パケットのシーケンス番号SNとの比較を順次行うことにより境界領域の検索を行う。
このときに、書込済領域が領域0のみである、領域0に書き込まれたシーケンス番号SNが対象パケットのシーケンス番号SN(11)より小さいため、境界領域が検出できず、制御回路300は、対象パケットに対して、最後の書込済領域(ここでは領域0)の次の領域(領域1)を示す選択信号SELを生成する。
書込回路200は、対象パケットのパケット情報PI(シーケンス番号SNを示す「11」)を、選択信号SELにより示される領域1に書き込む。
タイミングt3において、シーケンス番号SNが「1」である次のパケットが受信され、そのパケット情報PIが整列回路100に入力される。図示のように、このときに、整列バッファ110の領域0と領域1に、パケット情報PI(シーケンス番号SN=5)とパケット情報PI(シーケンス番号SN=11)が夫々書き込まれており、領域0が書込済領域である。そのため、制御回路300は、まず、境界領域の検索を行う。
検索の結果、領域0が境界領域として検出できたため、制御回路300は、境界領域である領域0を示す選択信号SELを生成する
書込回路200は、領域0を起点にし、整列バッファ110の末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、対象パケットのパケット情報PI(シーケンス番号SN=1)を起点の書込済領域(ここでは領域0)に書き込む。
タイミングt4において、シーケンス番号SNが「9」である次のパケットが受信され、そのパケット情報PIが整列回路100に入力される。図示のように、このときに、整列バッファ110の領域0、領域1、領域2に、パケット情報PI(シーケンス番号SN=1)、パケット情報PI(シーケンス番号SN=5)、パケット情報PI(SN=11)が夫々書き込まれており、領域0が書込済領域である。そのため、制御回路300は、まず、境界領域の検索を行う。
検索の結果、領域2が境界領域として検索されたため、制御回路300は、境界領域である領域2を示す選択信号SELを生成する
書込回路200は、領域2を起点にし、整列バッファ110の末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、対象パケットのパケット情報PI(シーケンス番号SN=5)を起点の書込済領域(ここでは領域2)に書き込む。
その結果、整列バッファ110の領域0〜領域3に、パケット情報PI(シーケンス番号SN=1)、パケット情報PI(シーケンス番号SN=5)、パケット情報PI(シーケンス番号SN=9)、パケット情報PI(SN=11)が夫々格納される。
図3は、整列回路100の処理を示すフローチャートであり、対象パケットのパケット情報PIの受信から該対象パケットのパケット情報PIが整列バッファ110に書き込まれるまでの流れを示す。図3において、ステップS102〜ステップS150までは、制御回路300が行う処理であり、ステップS160は、書込回路200が行う処理である。
パケット情報を受信すると(S100)、制御回路300は、受信したパケット情報からシーケンス番号SNを抽出する(S102)。
そして、制御回路300は、整列バッファ110の先頭の領域0が書込済領域なのか未書込領域なのかを確認する(S104)。領域0が未書込領域であれば(S104:No)、制御回路300は、領域0を示す選択信号SELを生成して、書込回路200に出力する(S110、S150)。
ステップS104における確認の結果、領域0が書込済領域であれば(S104:Yes)、制御回路300は、境界領域の検索を行う(S120)。境界領域があり、ステップS120の検索により検出できたときに(S122:Yes)、制御回路300は、該境界領域を示す選択信号SELを生成して書込回路200に出力する(S130、S150)。
境界領域が無く、ステップS120における検索を最後の書込済領域まで行っても境界領域を検出できなかった場合に(S122:No)、制御回路300は、最後の書込済領域の次の領域を示す選択信号SELを生成して書込回路200に出力する(S140、S150)。
書込回路200は、制御回路300からのパケット情報PIと選択信号SELを受信して、書込処理を行う(S160)。
図4は、図3におけるステップS160の書込処理を示すフローチャートである。書込回路200は、まず、選択信号SELにより示される領域を起点にして、整列バッファ110の末尾に向かう方向に、各領域に格納されたデータを1領域分シフトする(S162)。
そして、書込回路200は、選択信号SELにより示される領域に、対象パケットのパケット情報PIを書き込む(S164)。
以上の説明から分かるように、整列回路100において、受信された各パケットのパケット情報PIが整列バッファ110の先頭の領域から、間隔が開かずに、かつ、シーケンス番号の小さい順に格納される。そのため、整列回路100を備えた受信装置において、受信されたパケットの読出し時に、整列バッファ110の先頭の領域から1つずつインクリメントしながら、該領域に書き込まれたパケット情報に対応するパケットを順次読み出すようにすれば、パケットの読出順は、送信順と同一になる。
なお、受信されたパケットの読出しに関しては、種々な態様が考えられる。
例えば、整列回路100における整列バッファ110を受信バッファとして使用し、受信したパケットそのものをパケット情報PIとして整列回路100の該当する領域に格納し、読出しに際しては、整列バッファ110の先頭領域からパケットを読み出すようにすることができる。
この場合、パケット情報PIがパケットそのものになるため、制御回路300は、新たな対象パケットを格納する領域を示す選択信号SELを生成する度に、既に整列バッファ110に格納されたパケットのヘッダを解析してシーケンス番号を抽出する必要がある。
従って、対象パケットのシーケンス番号を含むパケット情報PIと、該パケットのペイロードと共に、整列バッファ110の該当する領域に格納することも考えられる。こうすることにより、新たな対象パケットに対して選択信号SELを生成する際に、既に整列バッファ110に格納されたパケットに対しては、ヘッダの解析をする必要がなく、効率向上を図ることができる。
または、例えば、整列バッファ110とは別途に、パケットを一時的に記憶する受信バッファを設け、DMA(Direct Memory Access)により、受信バッファに格納されたパケットをアプリケーションが使用するRAM(Random Access Memory)などのメモリに一括転送するようにしてもよい。DMA転送時には、整列バッファ110を参照して、整列バッファ110の先頭の領域から1つインクリメントしながら、該領域に書き込まれたパケット情報に対応するパケットを受信バッファから順次出力するようにすればよい。
このように、図1に示す整列回路100によれば、受信順序が保証されず、かつ、シーケンス番号が送信順に応じて1ずつインクリメントする値ではないパケットの受信装置においても、CPUの代わりに、受信したパケットを送信順に並び替え、受信装置の効率向上を図ることができる。
図5を参照して、図1に示す整列回路100における書込回路200の1つの構成例を説明する。
図5に示す例では、書込回路200は、整列バッファ110の領域毎に設けられ、段階的に順次接続されたN個の選択回路(選択回路210〜選択回路21N)を有する。パケット情報PIと選択信号SELは、これらの各選択回路に入力される。
各選択回路(選択回路210〜選択回路21N)は、自身に対応する領域と、選択信号SELにより示される領域の前後関係に応じて異なる動作をする。
具体的には、選択信号SELにより示される領域より前の領域に対応する各選択回路は、何もしない。
また、選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトして格納する。
また、選択信号により示される領域に対応する選択回路は、対象パケットのパケット情報PIを該領域に書き込む。
図5に示す書込回路200は、図1に示す書込回路200の処理を簡単に実現できる一例であり、勿論、該書込回路200を備えた整列回路100は、図1に示す整列回路100のときに説明した効果を得ることができる。
本願発明者は、鋭意研究模索結果、さらに、制御回路300が行う境界領域の検索(図3におけるステップS120)を効率よくできる手法を確立した。
例えば、整列バッファ110の先頭の領域(領域0)から、別の領域M(M≧1)までの各領域に、送信順が連続する複数のパケットのパケット情報PIが夫々格納されている場合、新たな対象パケットのパケット情報PIの書き込まれる領域は、領域0、または領域M以降のいずれかの領域(領域Mを含む)になるはずであり、領域1から、領域(M−1)までの各領域になるはずが無い。そのため、まず、領域0を検索対象領域に判定して、領域0を検索対象にして境界領域の検索をし、すなわち、領域0に書き込まれたパケット情報PIに含まれるシーケンス番号SNと、対象パケットのシーケンス番号SNの比較を行うことにより領域0が境界領域であるか否かの判定をする。領域0が境界領域ではないと判定したときに、領域Mを検索対象領域に判定して、領域Mを検索対象にして境界領域の検索を行うようにすれば、領域1から領域(M−1)までの各領域を検索対象とした検索をスキップすることができる。
前述したように、例えばTCP/IPパケットの場合、各パケットに付随されたシーケンス番号は、該パケットの1つ前に送信されやパケットのシーケンス番号とペイロード長とを加算して得た加算値(以下「W」で表記する)である。すなわち、過去に受信した各パケットについて、そのパケットのシーケンス番号とペイロード長から、該パケットの次に送信されるパケットのシーケンス番号(上記加算値W)を算出することができる。なお、TCP/IPパケットのヘッダには、該パケットの全長を示す情報(図35におけるパケット長)が含まれており、TCPヘッダのヘッダ長が固定長であるため、TCP/IPパケットのヘッダからIPヘッダ長(図35におけるレングス)とシーケンス番号とパケット長を取得すれば、下記の式(1)に従って該パケットの次に送信されるパケットのシーケンス番号を算出できる。
加算値W
=パケットのシーケンス番号+パケット長−IPヘッダ長−TCPヘッダ長
=次に送信されるパケットのシーケンス番号 (1)
さらに、図36のときに説明したように、TCPヘッダ70には、上記加算値Wに該当するアクノリッジメント番号74が含まれている。
上記のことに着目して、境界領域の検索を効率よく行うために本願発明者が確立した手法は、下記のように、パケット情報PIと選択信号SELの生成、及び検索対象領域の判定を行う。なお、分かりやすいように、図1に示す整列回路100を利用して説明する。
まず、パケット情報PIは、シーケンス番号SNに加え、当該パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの上記加算値Wとのいずれか一方を含む必要がある。
パケット情報PIに上記加算値Wを加える場合には、式(1)に従って加算値Wを算出するようにしてもよく、上記加算値Wと同値であるアクノリッジメント番号74をヘッダから読み出してそのまま用いてもよい。
ペイロード長をパケット情報PIに加える場合には、式(2)に従ってペイロード長を算出すればよい。
ペイロード長=パケット長−IPヘッダ長−TCPヘッダ長 (2)
この場合、後に、既に整列バッファ110にパケット情報PIが格納されたパケットの加算値Wが必要なときに、該パケットのシーケンス番号とペイロード長とを加算すればよい。
ペイロード長以外の、ペイロード長を算出可能な値をパケット情報PIに加える場合には、例えばパケット長とIPヘッダ長を利用すればよい。
TCPヘッダ長が固定であるため、この場合、後に、既に整列バッファ110にパケット情報PIが格納されたパケットの加算値Wが必要なときに、該パケットのシーケンス番号とパケット長とIPヘッダ長を読み出して、式(1)に従って加算値Wを算出すればよい。
このように、既に整列バッファ110に書き込まれた各パケット情報PIには、該パケットのシーケンス番号SNと、加算値Wそのものまたは加算値Wを算出可能な値とが含まれるようになる。
制御回路300は、整列バッファ110の整列バッファの先頭の領域が書込済領域であるときに行う境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを検索対象とする。
検索対象領域は、整列バッファ110における各連続グループの先頭の領域となるグループ先頭領域である。
また、グループ先頭領域は、整列バッファ110の先頭の領域以外であり、かつ、1つ前の連続グループの末尾の領域の次の領域である書込済領域と、整列バッファ110の先頭の領域とのいずれか一方に該当する領域である。
各連続グループは、グループ先頭領域のみ、または、グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の2つ目の領域からの各領域に夫々書き込まれたパケット情報PIに含まれるシーケンス番号SNが、領域の1つ前の領域に書き込まれたパケット情報PIから得られる加算値Wに一致する上記複数の書込済領域により構成される。
なお、全ての検索対象領域について、境界領域の検索が行われる訳ではない。例えば、ある検索対象領域(領域B)より前の検索対象領域(領域A)を対象とした検索の結果、領域Aが境界領域であると判定されたときに、境界領域の検索が終了するため、領域Bを対象とする検索が行われない。
前に例挙したように、整列バッファ110の先頭の領域(領域0)から、別の領域M(M≧1)までの各領域に、送信順が連続する複数のパケットのパケット情報PIが夫々格納されている場合、領域1から領域Mまでの各領域に書き込まれたパケット情報PIに含まれるシーケンス番号SNが、1つ前の領域に書き込まれたパケット情報PIから得られる加算値Wに一致する。
この場合、制御回路300は、領域0から領域Mまでの各領域を1つの連続グループとし、まず、グループ先頭領域(領域0)を検索対象にして境界領域を検索する。検索の結果、領域0が境界領域であると判定したときに、境界領域の検索を終了する。この場合、領域0が対象パケットを書き込むべき領域に判定される。
一方、領域0が境界領域ではないと判定したときに、制御回路300は、領域(M+1)が書込済領域であるか否かを確認する。該領域が未書込領域であるときには、境界領域が無いと判定する。この場合においても、領域0が対象パケットを書き込むべき領域に判定される。
領域(M+1)が書込済領域である場合、すなわち、該領域が次の連続グループの先頭の領域である場合、制御回路300は、グループ先頭領域(領域(M+1))を検索対象にして境界領域を検索する。その後の処理に関しては、領域0を検索対象にして境界領域を検索する場合と同様である。
このように。本願発明者が確立した手法によれば、各連続グループの先頭の領域のみを検索対象領域に判定し、判定した検索対象領域のみを検索対象とするため、対象パケットとシーケンス番号SNを比較される領域の数を減らすことができ、境界領域の検索を効率良く実現する。
上述した検索対象領域の判定を実現する具体的な手法は、様々考えられる。ここで、「連続ビット」に基づいた手法(第1の手法)、「ポインタ」に基づいた手法(第2の手法)を説明する。ここも、図1に示す整列回路100の機能ブロックを利用して説明する。また、パケット情報PIには、加算値Wが含まれているとする。
<第1の手法:連続ビットに基づいた手法>
この手法では、制御回路300は、対象パケットのパケット情報PI(シーケンス番号SN+加算値W)に、連続ビットCBを付加してから書込回路200に出力する。連続ビットCBは、「一致する」と「一致しない」のいずれを示す値を有し、例として、「1」が「一致する」を示し、「0」が「一致しない」と示すとする。
制御回路300は、検索対象領域を判定する際に、「一致しない」を示す、すなわち値が0である連続ビットCBを含むパケット情報PIが書き込まれた各書込済領域を検索対象領域に判定する。
また、対象パケットのパケット情報PIに連続ビットCBを付加する際に、制御回路300は、選択信号SELにより示される領域が整列バッファ110の先頭の領域以外であり、かつ、対象パケットのシーケンス番号SNが、選択信号SELにより示される領域の1つ前の領域に書き込まれたパケット情報PIから得られる加算値Wに一致する場合において、「一致する」を示す値(1)を連続ビットCBに付与する。他の場合においては、0を連続ビットCBに付与する。
図6は、第1の手法を適用した場合の整列回路100の処理を示すフローチャートであり、対象パケットの受信から該対象パケットのパケット情報PIが整列バッファ110に書き込まれるまでの流れを示す。図6において、ステップS202〜ステップS280までは、制御回路300が行う処理であり、ステップS160は、図4に示される、書込回路200が行う書込処理である。
図6に示すように、パケットが受信され、該パケットのパケット情報PIが整列回路100に入力されると(S200)、制御回路300は、パケット情報PIからシーケンス番号SNを抽出する(S202)。
そして、制御回路300は、整列バッファ110の先頭の領域0が書込済領域なのか未書込領域なのかを確認する(S204、S210)。領域0が未書込領域であれば(S210:No)、制御回路300は、領域0を示す選択信号SELを生成する(S240)。そして、対象パケットの連続ビットCBに0を付与し(S250:Yes、S270)、該連続ビットCBと、ステップS202で取得したシーケンス番号SNと加算値Wを含むパケット情報PI、及びステップS220で生成した選択信号SELを書込回路200に出力する(S280)。
ステップS210における確認の結果、領域0が書込済領域であれば(S204、S210:Yes)、制御回路300は、境界領域の検索を開始する。具体的には、まず、領域0が検索対象領域であるか否かを判定する(S220)。具体的には、領域0に書き込まれたパケット情報PIに含まれる連続ビットCBが1と0のいずれであるかを確認する。なお、後の説明で分かるが、領域0に書き込まれるパケット情報PIに含まれる連続ビットCBが常に0であるため、制御回路300は、領域0が検索対象領域であるとし、対象パケットのシーケンス番号SNと領域0に書き込まれたパケット情報に含まれるシーケンス番号SN(0)を比較する(S220:Yes、S230)。
対象パケットのシーケンス番号SNがSN(0)より小さければ(S230:Yes)、制御回路300は、領域0が境界領域であるとして、領域0を示す選択信号SELを生成する(S240)。そして、対象パケットの連続ビットCBに0を付与し(S250:Yes、S270)、パケット情報PIと選択信号SELを書込回路200に出力する(S280)。
ステップS230における比較の結果、対象パケットのシーケンス番号SNがSN(0)より大きいときに(S230:No)、制御回路300は、領域0が境界領域ではないと判定して、次の領域(領域1)について、ステップS210からの処理を行う(S232、S210〜)。
領域1について、制御回路300は、まず、該領域が書込済領域であるか否かを確認する(S210)。
領域1が未書込領域であれば(S210:No)、制御回路300は、領域1を示す選択信号SELを生成し(S240)、さらに、対象パケットのシーケンス番号SNが、領域0に書き込まれたパケット情報PIに含まれる加算値W(0)に一致するか否かを確認する(S250:No、S260)。一致すれば、制御回路300は、対象パケットの連続ビットCBに1を付与し(S260:Yes、S262)、パケット情報PIと選択信号SELを書込回路200に出力する(S280)。
なお、ステップS260における確認の結果、一致しない場合に(S260:No)、制御回路300は、対象パケットの連続ビットCBに0を付与し(S270)、パケット情報PIと選択信号SELを書込回路200に出力する(S280)。
ステップS210に戻り、領域1が書込済領域である場合(S210:Yes)を説明する。この場合に、制御回路300は、まず、領域1に書き込まれたパケット情報PIに含まれる連続ビットCBに基づいて領域1が検索対象領域であるか否かを確認する(S220)。領域1が検索対象領域である場合、以降の処理は、領域0のときと同様である(S220:Yes、S230〜)
領域1に書き込まれたパケット情報PIに含まれる連続ビットCBが0である場合に、制御回路300は、領域1が境界領域ではないと判定して、次の領域(領域2)について、ステップS210からの処理を行う(S220:No、S232、S210〜)。
このように、境界領域が検出されるまで、または、全ての検索対象領域を検索対象とした検索が完了するまで、検索対象領域の判定と、検索対象領域に判定した領域を検索対象とした検索が繰り返される。そして、境界領域が検出されれば、該境界領域を示す選択信号SELの生成と、対象パケットのパケット情報PIに含まれる連続ビットCBに1または0の付与がなされる。また、全ての検索対象領域を検索対象とした検索が完了しても境界領域が検出されなかった場合に、最後の書込済領域の次の領域を示す選択信号SELの生成と、対象パケットのパケット情報PIに含まれる連続ビットCBに1または0の付与がなされる。
図7〜図9を参照して、第1の手法を適用した整列回路100による処理の具体例を説明する。これらの図において、星印は、境界領域の検索が最後に実行された領域を示す。
該例において、シーケンス番号が夫々1、5、9、11、17、20、24、30である8つのパケットが送信されたとする。送信順は、小さいシーケンス番号からである。しかし、到着順のシーケンス番号は、「5、1、9、11、24、20、17、30」となっている。
図7に示すように、まず、タイミングt1において、シーケンス番号SNが5であるパケットが受信され、そのパケット情報PIが整列回路100に入力される。制御回路300は、パケット情報PIから該パケットのシーケンス番号SNを抽出する。整列バッファ110の領域0が未書込領域であるため、制御回路300は、領域0を示す選択信号SELを生成すると共に、該パケットの連続ビットCBに0を付与する。
その結果、タイミングt2において、次のパケット(シーケンス番号SN:1)が到着したときに、整列バッファ110の領域0に、パケット情報PIに含まれるシーケンス番号SN、加算値W、連続ビットCBとして、夫々「5」、「9」、「0」が書き込まれている。
このとき、検索対象領域が領域0のみであり、また、領域0に書き込まれたシーケンス番号SNが対象パケットのシーケンス番号SNの1より大きいため、制御回路300は、領域0が境界領域であると判定し、領域0を示す選択信号SELを生成する。また、対象パケットの連続ビットCBに0を付与する。
その結果、タイミングt3において、シーケンス番号SNが9であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして、整列バッファ110の領域0には、夫々「1」、「5」、「0」が書き込まれており、領域1には、「5」、「9」、「0」が書き込まれている。
このとき、領域0と領域1の両方とも検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域2を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの9が、領域1に書き込まれた加算値Wの9に一致するため、制御回路300は、対象パケットの連続ビットCBに1を付与する。
その結果、図8に示すように、タイミングt4において、シーケンス番号SNが11であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして、整列バッファ110の領域0には、夫々「1」、「5」、「0」が書き込まれており、領域1には、「5」、「9」、「0」が書き込まれており、領域2には、「9」、「11」、「1」が書き込まれている。
このとき、領域0と領域1のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域3を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの11が、領域2に書き込まれた加算値Wの11に一致するため、制御回路300は、対象パケットの連続ビットCBに1を付与する。
その結果、タイミングt5において、シーケンス番号SNが24であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして、さらに、整列バッファ110の領域3に、「11」、「17」、「1」が書き込まれている。
このときも、領域0と領域1のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの24が、領域3に書き込まれた加算値Wの17に一致しないため、制御回路300は、対象パケットの連続ビットCBに0を付与する。
その結果、タイミングt6において、シーケンス番号SNが20であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして、さらに、整列バッファ110の領域4に、「24」、「30」、「0」が書き込まれている。
このとき、領域0、領域1、領域4のみが検索対象領域である。制御回路300は、境界領域の検索の結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの20が、領域4に書き込まれた加算値Wの17に一致しないため、制御回路300は、対象パケットの連続ビットCBに0を付与する。
その結果、図9に示すように、タイミングt7において、シーケンス番号SNが17であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして整列バッファ110の領域4に書き込まれていた「24」、「30」、「0」が領域5にシフトされており、領域4には、シーケンス番号SN、加算値W、連続ビットCBとして、「20」、「24」、「0」が書き込まれている。
このとき、領域0、領域1、領域4、領域5が検索対象領域である。制御回路300は、領域4まで境界領域の検索を行った結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの17が、領域3に書き込まれた加算値Wの17に一致するため、制御回路300は、対象パケットの連続ビットCBに1を付与する。
その結果、タイミングt8において、シーケンス番号SNが30であるパケットが到着したときに、シーケンス番号SN、加算値W、連続ビットCBとして整列バッファ110の領域4と領域5に書き込まれていた情報が夫々領域5、領域6にシフトされており、領域4には、シーケンス番号SN、加算値W、連続ビットCBとして、「17」、「20」、「1」が書き込まれている。
このとき、領域0、領域1、領域4、領域5、領域6が検索対象領域である。制御回路300は、領域6まで境界領域の検索を行った結果、境界領域が無いと判定し、領域7を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの30が、領域6に書き込まれた加算値Wの30に一致するため、制御回路300は、対象パケットの連続ビットCBに1を付与する。
例えば、図8に示すタイミングt6において、整列バッファ110の領域0〜領域4が書込済領域であるが、境界領域の検索、すなわち、それに書き込まれたシーケンス番号SNと対象パケットのシーケンス番号SNとの比較がなされたのは、領域0、領域1、領域4のみであり、領域2と領域3がスキップされている。
このように、本第1の手法によれば、境界領域の検索に際して、夫々の書込済領域について、該領域に書き込まれたパケット情報PIに含まれる連続ビットに基づいて該領域が検索対象領域であるか否かを判定し、検索対象領域に判定した領域のみを検索対象とする。その結果、境界領域の検索が効率良くなる。
<第2の手法:ポインタに基づいた手法>
この手法では、制御回路により生成された1つ以上のポインタPを記憶するポインタ記憶回路(図示せず)をさらに有する。制御回路300は、検索対象領域を判定する際に、ポインタ記憶回路に記憶された各ポインタPにより夫々示される書込済領域を検索対象領域に判定する。
また、制御回路300は、対象パケットについて、パケット情報PIに連続ビットCBを付加する代わりに、ポインタ生成/変更処理を行う。
制御回路300が行うポインタ生成/変更処理は、具体的には、下記のような処理である。
<<第1の場合:選択信号SELにより示される領域が未書込領域である>>
この第1の場合において、制御回路300は、選択信号SELにより示される領域が整列バッファ110の先頭の領域以外であり、かつ、対象パケットのシーケンス番号SNが、該領域の1つ前の領域に書き込まれたパケット情報PIから得られる加算値Wに一致する第1Aの場合に、ポインタを生成しない。
上記第1Aの場合に該当しない第1Bの場合に、制御回路300は、選択信号SELにより示される領域を示すポインタを生成する。
<<第2の場合:選択信号SELにより示される領域が書込済領域である>>
この第2の場合において、制御回路300は、まず、選択信号SELにより示される領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更(シフト)する。
そして、選択信号SELにより示される領域が整列バッファ110の先頭の領域以外であり、かつ、対象パケットのシーケンス番号SNが、選択信号SELにより示される領域の1つ前の領域に書き込まれたパケット情報PIから得られる加算値Wに一致する第2Aの場合には、ポインタを生成しない。
一方、上記第2Aの場合に該当しない第2Bの場合に、選択信号SELにより示される領域を示すポインタを生成する。
図10は、第2の手法を適用した場合の整列回路100の処理を示すフローチャートであり、対象パケットの受信から該対象パケットのパケット情報PIが整列バッファ110に書き込まれるまでの流れを示す。図10において、ステップS202〜ステップS320までは、制御回路300が行う処理であり、ステップS160は、図4に示される、書込回路200が行う書込処理である。
図10に示すように、図6に示すフローチャートにおけるステップS222の処理(連続ビットCBに基づいた検索対象領域の判定)は、ステップS300になっている。ステップS300において、制御回路300は、領域iを示すポインタがあるか否かに基づいて領域iが検索対象領域であるか否かを判定する。
また、パケット情報PIは、制御回路300を経由せずに書込回路200に出力されるため、ステップS310において、制御回路300は、選択信号SELのみを書込回路200に出力する。
また、図6のフローチャートにおける連続ビットCBの付与処理は(ステップS250〜S270)は、図10において、ステップS320のポインタ生成/変更処理に変っている。
他の点に関しては、図6のフローチャートと同様である。
図11のフローチャートを参照して、図10のステップS320におけるポインタ生成/変更処理を説明する。
制御回路300は、ポインタ生成/変更処理に際して、まず、選択信号SELにより示される領域(領域i)が書込済領域であるか否かを確認する(S322)。領域iが未書込領域である場合(S322:No)、すなわち上述した第1の場合においては、下記のように処理を行う。
領域iが整列バッファ110の先頭の領域以外であり、かつ、対象パケットのシーケンス番号SNが、領域iの1つ前の領域に書き込まれたパケット情報PIから得られる加算値W(W(i−1))に一致する場合(第1Aの場合)(S324:No、S330:Yes)には、ポインタを生成しない。
一方、他の場合(第1Bの場合)(S324:Yes、またはS324:No、S330:No)においては、制御回路300は、領域iを示すポインタを生成する(S326)。
領域iが書込済領域である場合(S322:Yes)、すなわち上述した第2の場合においては、制御回路300は、下記のように処理を行う。
制御回路300は、まず、領域iからのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すようにシフトする(S340)。
そして、領域iが整列バッファ110の先頭の領域以外であり、かつ、対象パケットのシーケンス番号SNが、領域iの1つ前の領域に書き込まれたパケット情報PIから得られる加算値W(W(i−1))に一致する場合(第2Aの場合)(S342:No、S350:Yes)には、ポインタを生成しない。
一方、他の場合(第2Bの場合)(S342:Yes、またはS342:No、S350:No)においては、領域iを示すポインタを生成する(S326)。
この第2の手法も、境界領域が検出されるまで、または、全ての検索対象領域を検索対象とした検索が完了するまで、検索対象領域の判定と、検索対象領域に判定した領域を検索対象とした検索が繰り返される。そして、境界領域が検出されれば、該境界領域を示す選択信号SELの生成と、ポインタ生成/変更処理が行われる。また、全ての検索対象領域を検索対象とした検索が完了しても境界領域が検出されなかった場合に、最後の書込済領域の次の領域を示す選択信号SELの生成と、ポインタ生成/変更処理がなされる。
図12〜図14を参照して、第2の手法を適用した整列回路100による処理の具体例を説明する。
該例においても、シーケンス番号が夫々1、5、9、11、17、20、24、30である8つのパケットは送信され、到着順のシーケンス番号は、「5、1、9、11、24、20、17、30」となっている。
図12に示すように、まず、タイミングt1において、シーケンス番号SNが5であるパケットが受信され、そのパケット情報PIが整列回路100に入力される。制御回路300は、該パケットのシーケンス番号SNを抽出する。整列バッファ110の領域0が未書込領域であるため、制御回路300は、領域0を示す選択信号SELを生成すると共に、領域0を示すポインタ(ポインタP1)を生成してポインタ記憶回路に格納する。
その結果、タイミングt2において、シーケンス番号SNが1であるパケットが到着したときに、整列バッファ110の領域0に、パケット情報PIに含まれるシーケンス番号SN、加算値Wとして、夫々「5」、「9」が書き込まれている。また、領域0を示すポインタP1がポインタ記憶回路に記憶されている。
このとき、検索対象領域がポインタP1により示される領域0のみであり、また、領域0に書き込まれたシーケンス番号SNが対象パケットのシーケンス番号SNの1より大きいため、制御回路300は、領域0が境界領域であると判定し、領域0を示す選択信号SELを生成すると共に、領域1を示すようにポインタP1をシフトすると共に、領域0を示す新たなポインタ(ポインタP2)を生成する。
その結果、タイミングt3において、シーケンス番号SNが9であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、整列バッファ110の領域0には、「1」、「5」が書き込まれており、領域1には、「5」、「9」が書き込まれている。また、ポインタ記憶回路には、領域0と領域1を夫々示すポインタP2とポインタP1が記憶されている。
このとき、領域0と領域1の両方とも検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域2を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの9が、領域1に書き込まれた加算値Wの9に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
その結果、図12に示すように、タイミングt4において、シーケンス番号SNが11であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、整列バッファ110の領域0には、「1」、「5」が書き込まれており、領域1には、「5」、「9」が書き込まれており、領域2には、「9」、「11」が書き込まれている。また、ポインタ記憶回路には、領域0と領域1を夫々示すポインタP2とポインタP1が記憶されている。
このとき、領域0と領域1のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域3を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの11が、領域2に書き込まれた加算値Wの11に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
その結果、タイミングt5において、シーケンス番号SNが24であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、さらに、整列バッファ110の領域3に、「11」、「17」が書き込まれており、ポインタ記憶回路には、相変わらず、領域0と領域1を夫々示すポインタP2とポインタP1が記憶されている。
このときも、領域0と領域1のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの24が、領域3に書き込まれた加算値Wの17に一致しないため、制御回路300は、領域4を示す新たなポインタ(ポインタP3)を生成してポインタ記憶回路に格納する。
その結果、タイミングt6において、シーケンス番号SNが20であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、さらに、整列バッファ110の領域4に、「24」、「30」が書き込まれており、ポインタ記憶回路には、領域4を示すポインタP3が追加されている。
このとき、領域0、領域1、領域4のみが検索対象領域である。制御回路300は、境界領域の検索の結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの20が、領域4に書き込まれた加算値Wの17に一致しないため、制御回路300は、領域4を示していたポインタP3を、領域5を示すようにシフトすると共に、領域4を示す新たなポインタ(ポインタP4)を生成してポインタ記憶回路に格納する。
その結果、図14に示すように、タイミングt7において、シーケンス番号SNが17であるパケットが到着したときに、シーケンス番号SN、加算値Wとして整列バッファ110の領域4に書き込まれていた「24」、「30」が領域5にシフトされており、領域4には、シーケンス番号SN、加算値Wとして、「20」、「24」が書き込まれている。また、ポインタ記憶回路には、領域0、領域1、領域4、領域5を夫々示すポインタP2、ポインタP1、ポインタP4、ポインタP3が格納されている。
このとき、領域0、領域1、領域4、領域5が検索対象領域である。制御回路300は、領域4まで境界領域の検索を行った結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの17が、領域3に書き込まれた加算値Wの17に一致するため、制御回路300は、領域4と領域5を示しいていたポインタP4とポインタP3を、領域5と領域6を夫々示すようにシフトする。この場合、制御回路300は、新たなポインタの生成をしない。
その結果、タイミングt8において、シーケンス番号SNが30であるパケットが到着したときに、シーケンス番号SN、加算値Wとして整列バッファ110の領域4と領域5に書き込まれていた情報が夫々領域5、領域6にシフトされており、領域4には、シーケンス番号SN、加算値Wとして、「17」、「20」が書き込まれている。また、ポインタ記憶回路には、領域0、領域1、領域5、領域6を夫々示すポインタP2、ポインタP1、ポインタP4、ポインタP3が格納されている。
このとき、領域0、領域1、領域5、領域6が検索対象領域である。制御回路300は、領域6まで境界領域の検索を行った結果、境界領域が無いと判定し、領域7を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの30が、領域6に書き込まれた加算値Wの30に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
ポインタに基づいた本第2の手法も、連続ビットに基づいた第1の手法と同様の効果を得ることができる。
ところで、図7と図12のタイミングt3において、領域1に格納されたパケット情報PIに含まれるシーケンス番号SNが、領域0に格納されたパケット情報PIに含まれる加算値Wに一致するにも関わらず、領域1が、領域0と別の連続グループと判定され、領域0と領域1のいずれも検索対象領域になっている。
この状況は、後の全てのタイミングにおいて同様であり、検索の対象にするべきではない領域1がずっと検索対象領域に判定されている。また、図7と図12のタイミングt7における領域5、タイミングt8における領域5と領域6についても同様である。
この問題を解決し、境界領域の検索をより効率良くするために、本願発明者は、下記の手法を想到した。この手法は、ポインタに基づいた第2の手法を改良したものであり、以下「第3の手法」という。
該第3の手法は、ポインタ生成/変更処理が上述した第2の手法と異なる点以外、第2の手法と同様である。ここで、該第3の手法におけるポインタ生成/変更処理を説明する。
図15は、第3の手法におけるポインタ生成/変更処理を示すフローチャートであり、図11に示すポインタ生成/変更処理の代わりに、図10のステップS320で行われるポインタ生成/変更処理の流れである。なお、図15において、図11におけるステップと同様のものについては、同様のステップ番号を付与しており、これらのステップについての説明を省略する。
図15に示すように、該第3の手法によるポインタ生成/変更処理では、選択信号SELにより示される領域(領域i)が整列バッファ110の先頭の領域以外の書込済領域であり、かつ、対象パケットのシーケンス番号SNが、領域iの1つ前の領域に書き込まれたパケット情報PIから得られる加算値W(W(i−1))に一致する場合(第2Aの場合)(S322:Yes、S340、S342:No、S350:Yes)において、さらに、領域iに書き込まれたパケット情報PIに含まれるシーケンス番号SNが、対象パケットの加算値Wに一致するか否かを確認する(S352)。そして、一致する場合にのみ(S352:Yes)、選択信号SELにより示される領域の次の領域を示すポインタ(P(i+1))を削除する(S354)。一致しない場合には(S352:No)、第2の手法のときと同様に、既にあるポインタに対するこれ以上の変更や、新たなポインタの生成をしない。
なお、ステップS354において削除されるポインタP(i+1)は、領域iを示していたものであり、ステップS340において、領域(i+1)を示すようにシフトされている。
さらに、該第3の手法は、第2Bの場合(S322:Yes、S340、S342:Yes、またはS322:Yes、S340、S342:No、S350:No)においても、制御回路300は、さらに、領域iに書き込まれたパケット情報PIに含まれるシーケンス番号SNが、対象パケットの加算値Wに一致するか否かを確認する(S344)。そして、一致する場合にのみ(S344:Yes)、選択信号SELにより示される領域の次の領域を示すポインタ(P(i+1))を、領域iを示すように変更する(S346)。一致しない場合には(S344:No)、第2の手法のときと同様に、領域iを示すポインタを生成する。
この場合も、ステップS346において変更されたポインタP(i+1)は、領域iを示していたものであり、ステップS340において、領域(i+1)を示すようにシフトされている。
図16〜図17を参照して、第3の手法を適用した整列回路100による処理の具体例を説明する。
該例においても、シーケンス番号が夫々1、5、9、11、17、20、24、30である8つのパケットは送信され、到着順のシーケンス番号は、「5、1、9、11、24、20、17、30」となっている。
図16に示すように、まず、タイミングt1において、シーケンス番号SNが5であるパケットが受信され、そのパケット情報PIが整列回路100に入力される。制御回路300は、該パケットのシーケンス番号SNと加算値Wを取得する。整列バッファ110の領域0が未書込領域であるため、制御回路300は、領域0を示す選択信号SELを生成すると共に、領域0を示すポインタ(ポインタP1)を生成するポインタ記憶回路に格納する。
その結果、タイミングt2において、シーケンス番号SNが1であるパケットが到着したときに、整列バッファ110の領域0に、パケット情報PIに含まれるシーケンス番号SN、加算値Wとして、夫々「5」、「9」が書き込まれている。また、領域0を示すポインタP1がポインタ記憶回路に記憶されている。
このとき、検索対象領域がポインタP1により示される領域0のみであり、また、領域0に書き込まれたシーケンス番号SNが対象パケットのシーケンス番号SNの1より大きいため、制御回路300は、領域0が境界領域であると判定し、領域0を示す選択信号SELを生成する。このとき、制御回路300は、領域1を示すようにポインタP1をシフトするものの、領域0に書き込まれているシーケンス番号SNの5が対象パケットの加算値Wの5に一致するため、制御回路300は、ポインタP1を、領域0を示すように戻す。
その結果、タイミングt3において、シーケンス番号SNが9であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、整列バッファ110の領域0には、「1」、「5」が書き込まれており、領域1には、「5」、「9」が書き込まれている。また、ポインタ記憶回路には、領域0を夫々示すポインタP1のみが記憶されている。
そのため、領域0のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、最後の書込済領域(領域1)の次の領域2を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの9が、領域1に書き込まれた加算値Wの9に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
その結果、図17に示すように、タイミングt4において、シーケンス番号SNが11であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、整列バッファ110の領域0には、「1」、「5」が書き込まれており、領域1には、「5」、「9」が書き込まれており、領域2には、「9」、「11」が書き込まれている。また、ポインタ記憶回路には、相変わらず、領域0示すポインタP1のみが記憶されている。
そのため、領域0のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域3を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの11が、領域2に書き込まれた加算値Wの11に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
その結果、タイミングt5において、シーケンス番号SNが24であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、さらに、整列バッファ110の領域3に、「11」、「17」が書き込まれており、ポインタ記憶回路には、相変わらず、領域0を示すポインタP1のみが記憶されている。
このときも、領域0のみが検索対象領域である。制御回路300は、境界領域の検索の結果、境界領域が無いと判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの24が、領域3に書き込まれた加算値Wの17に一致しないため、制御回路300は、領域4を示す新たなポインタ(ポインタP2)を生成してポインタ記憶回路に格納する。
その結果、タイミングt6において、シーケンス番号SNが20であるパケットが到着したときに、シーケンス番号SN、加算値Wとして、さらに、整列バッファ110の領域4に、「24」、「30」が書き込まれており、ポインタ記憶回路には、領域0を示すポインタP1と、領域4を示すポインタP2が格納されている。
そのため、領域0、領域4が検索対象領域である。制御回路300は、境界領域の検索の結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの20が、領域4に書き込まれた加算値Wの17に一致しないものの、領域5に書き込まれたシーケンス番号が、対象パケットの加算値Wに一致する。従って、制御回路300は、ポインタP2を、一旦領域5を示すようにシフトするものの、領域4を示すように戻す。
その結果、図18に示すように、タイミングt7において、シーケンス番号SNが17であるパケットが到着したときに、シーケンス番号SN、加算値Wとして整列バッファ110の領域4に書き込まれていた「24」、「30」が領域5にシフトされており、領域4には、シーケンス番号SN、加算値Wとして、「20」、「24」が書き込まれている。また、ポインタ記憶回路には、領域0、領域4を夫々示すポインタP1、ポインタP2が格納されている。
このとき、領域0、領域4が検索対象領域である。制御回路300は、領域0に続いて領域4を対象に境界領域の検索を行った結果、領域4が境界領域であると判定し、領域4を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの17が、領域3に書き込まれた加算値Wの17に一致し、さらに、領域4に書き込まれたシーケンス番号SNが対象パケットの加算値Wに一致するため、制御回路300は、ポインタP2を、領域5を示すようにシフトした後に削除する。
その結果、タイミングt8において、シーケンス番号SNが30であるパケットが到着したときに、シーケンス番号SN、加算値Wとして整列バッファ110の領域4と領域5に書き込まれていた情報が夫々領域5、領域6にシフトされており、領域4には、シーケンス番号SN、加算値Wとして、「17」、「20」が書き込まれている。また、ポインタ記憶回路には、領域0を示すポインタP1のみが格納されている。
そのため、領域0のみが検索対象領域である。制御回路300は、領域0を対象にして境界領域の検索を行った結果、境界領域が無いと判定し、最後の書込済領域の次の領域7を示す選択信号SELを生成する。また、対象パケットのシーケンス番号SNの30が、領域6に書き込まれた加算値Wの30に一致するため、制御回路300は、既にあるポインタの変更も、新たなポインタの生成もしない。
以上の説明から分かるように、本第3の手法によれば、制御回路300は、ポインタ生成/変更処理をする際に、選択信号SELにより示される領域に書き込まれていたシーケンス番号SNと対象パケットの加算値Wとの比較をさらに行い、比較の結果に応じてポインタのシフトや生成などを行う(行わないことも含む)ため、第1の手法と第2の手法より、検索対象領域をより絞ることができ、ひいては、境界領域の検索処理の効率を一層向上させることができる。
本第3の手法の技術思想を、第1の手法に適用することもできる。この場合、既に整列バッファ110に書き込まれたパケット情報PIに含まれる連続ビットCBを変更する必要がある。
以上に説明した本発明の技術的原理を踏まえて、本発明にかかる実施の形態を説明する。
<第1の実施の形態>
図19は、本発明の第1の実施の形態にかかる受信装置400を示す図である。受信装置400は、受信ブロック402、FIFO(First In First Out)404、ヘッダ解析部410、トレーステーブル420、計時部422、DMAC430、パケット情報生成部440、バス450、CPU460、メモリ470、整列回路500を備える。
受信ブロック402は、現在到着したパケット(対象パケット)を受信し、FIFO404へ転送する。
FIFO404は、受信バッファであり、受信ブロック402からの対象パケットを一時的に格納して、ヘッダ解析部410、DMAC430、パケット情報生成部440へ出力する。
ヘッダ解析部410は、FIFO404に格納されているパケットに対して逐次ヘッダの抽出を行うと共に、抽出したヘッダをパケット情報生成部440に出力する。また、ヘッダ解析部410は、抽出したヘッダにシーケンス番号があるか否かを確認し、確認の結果もパケット情報生成部440に出力する。さらに、ヘッダ解析部410は、対象パケットのヘッダにシーケンス番号が含まれている場合に、該ヘッダに含まれるコネクション情報(後述する)がトレーステーブル420に格納されているか否かを判定し、判定の結果、格納されていない場合には、対象パケットのコネクション情報をトレーステーブル420に出力する。
トレーステーブル420は、対応するコネクション数分のコネクション情報を格納するエリアを備えており、コネクション毎にコネクションを管理する。図20は、トレーステーブル420に格納されているコネクション情報の例を示す。図示のように、トレーステーブル420には、コネクション毎に、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号がコネクション情報として格納されている。
トレーステーブル420は、ヘッダ解析部410から転送されてきたコネクション情報に一致するコネクション情報が格納されていないときに、該コネクション情報を新たなコネクション情報として蓄積すると共に、計時部422に、該コネクションに対応するタイマ(図示せず)の起動要求を出力する。
また、トレーステーブル420は、計時部422からタイマ満了信号を受信すると、該タイマ満了信号に対応するコネクション情報をトレーステーブル420から削除する。
計時部422は、トレーステーブル420により管理されているコネクション情報毎にタイマ及び受信データ数カウンタ(図示せず)を有する。トレーステーブル420から起動要求を受信すると、当該タイマと受信データ数カウンタのカウントを開始する。そして、タイマまたは受信データ数カウンタのカウント値が予め設定された閾値に達したときに、対応するコネクションについて、トレーステーブル420の満了信号を出力すると共に、当該タイマまたは受信データ数カウンタを初期化する。
パケット情報生成部440は、ヘッダ解析部410からのヘッダ情報から、シーケンス番号SNを含むパケット情報PIを生成する。
また、パケット情報生成部440は、シーケンス番号の有無を示すヘッダ解析部410の確認結果に基づいて、シーケンス番号が無い場合には、該対象パケットが分割パケットではないと判定して、作成したパケット情報PIをDMAC430に出力する。一方、シーケンス番号がある場合には、パケット情報生成部440は、作成したパケット情報PIを整列回路500に出力する。
整列回路500は、対応するコネクションの数分搭載されている。分かりやすいように、1つのみを図示及び説明する。
整列回路500は、対応するコネクションのパケット情報PIをパケット情報生成部440から入力され、シーケンス番号の小さい順にパケット情報PIを並び替えて一時的に保管する。
また、計時部422から、当該コネクションに関するタイマ満了信号が整列回路500にも入力される。整列回路500は、この信号を受信すると、一時保管中の全てのパケット情報PIをDMAC430に出力すると共に、保管中の全てのパケット情報PIを初期化する。
整列回路500については、後に詳細に説明する。
DMAC430は、DMA転送を担うDMAコントローラであり、FIFO404からの各パケットを、バス450を介してメモリ470に転送する。また、DMAC430は、パケット情報生成部440により生成された、シーケンス番号が無いパケットのパケット情報PIも、バス450を介してメモリ470に転送する。さらに、DMAC430は、整列回路500からのパケット情報PIも、バス450を介してメモリ470に転送する。
バス450は、DMAC430及びCPU460によるメモリ470のアクセスを中継する。
CPU460は、受信装置400全体の制御を行う中央処理装置であり、バス450を介してバス450とDMAC430に接続されている。CPU460、DMAC430、メモリ470間のデータのやりとりは、通常の情報処理装置における同種のものと同様であり、ここで詳細な説明を省略する。
メモリ470は、例えばRAM(Radom Access Memory)であり、バス450を介してDMAC430とCPU460によりアクセスされる。
メモリ470は、パケット情報エリア472と、パケットエリア474を備える。DMAC430から転送されてきたパケット情報PIは、パケットエリア474に格納され、パケットエリア474には、DMAC430から転送されたパケットを格納する
図21を参照して、整列回路500を説明する。
図21に示すように、整列回路500は、シーケンス番号抽出回路510、比較器520、選択信号生成回路530、書込回路200、整列バッファ540、情報抽出部550、セレクタ570を備える。整列回路500において、書込回路200と整列バッファ540を除いた他のブロックは、制御回路を構成する。
パケット情報生成部440からのパケット情報PIは、シーケンス番号抽出回路510、書込回路200に入力される。
シーケンス番号抽出回路510は、パケット情報PIから対象パケットのシーケンス番号SNを抽出して比較器520に出力する。
選択信号生成回路530は、第1の選択信号SEL1を生成してセレクタ570に出力し、第2の選択信号SEL2を生成して書込回路200に出力する。第1の選択信号L1と第2の選択信号SEL2は、整列バッファ540内の複数のバッファ(バッファ0〜バッファN)のいずれかを示す信号である。さらに、第2の選択信号SEL2は、「初期化」を示すこともできる。
書込回路200は、本発明の原理のときに説明した書込回路200(図5)であり、第2の選択信号L2に応じて、パケット情報PIを整列バッファ540への書込みを行う。なお、「初期化」を示す第2の選択信号SEL2を受信した際に、書込回路200は、全ての格納データを初期化する。
整列バッファ540は、書込回路200内の各選択回路に夫々対応するバッファを含み、対応する選択回路と、後述の情報抽出部550における相対応の情報抽出回路とに接続されている。
情報抽出部550は、整列バッファ540内の各バッファに夫々対応する情報抽出回路(情報抽出回路560〜情報抽出回路56N)を有する。各情報抽出回路は、対応するバッファにパケット情報PIが書き込まれたとき(更新されたときも含む)に、該バッファに書き込まれたパケット情報PIを読み出して、シーケンス番号SNと、後述するストアフラグSFを抽出すると共に、次に該バッファにパケット情報PIが書き込まれるまで、または初期化されるときまで保持する。
セレクタ570は、情報抽出部550の各情報抽出回路と接続されており、選択信号生成回路530からの第1の選択信号SEL1が示すバッファに対応する情報抽出回路により抽出されたシーケンス番号SNとストアフラグSFを選択して比較器520と選択信号生成回路530に夫々出力する。
比較器520は、セレクタ570からのシーケンス番号SNと、シーケンス番号抽出回路510からのシーケンス番号SN(対象パケットのシーケンス番号)との大小関係を比較し、結果を選択信号生成回路530に出力する。
選択信号生成回路530は、比較器520からの比較結果に基づいて、前回の第1の選択信号SEL1が示すバッファの次のバッファを示す第1の選択信号SEL1を生成してセレクタ570に出力するか、第2の選択信号SEL2を生成して書込回路200に出力する。
図22は、整列バッファ540内の各バッファ、メモリ470のパケット情報エリア472におけるパケット情報PIの格納態様の例を示す図である。図示のように、パケット情報エリア472と各バッファ内に、パケット情報の有無を示すストアフラグと、パケットエリア474において、該パケット情報に対応するパケットを格納するアドレスと、シーケンス番号SNとをパケット情報PIとして格納されている。なお、将来的な機能拡張の為の機能拡張用フィールドも備えられている。整列バッファ540の各バッファは、このようなパケット情報PIを1つのみ格納し、パケット情報エリア472は、複数のパケット情報PIを格納する。
図23は、受信装置400におけるヘッダ解析部410、トレーステーブル420、DMAC430、パケット情報生成部440、整列回路500による処理の流れを示すフローチャートである。
計時部422から当該コネクションのタイマ満了信号を受信しておらず、対象パケットを受信すると(S400:No、S402:Yes)、ヘッダ解析部410は、FIFO404からの該対象パケットのヘッダを解析し、シーケンス番号SNの有無に基づいて分割パケットであるか否かを判定する(S404)。なお、タイマ満了信号は、当該コネクションに対応する整列バッファ540におけるパケット情報PIの滞留時間がタイムアウトしたとき、または、データ滞留数がオーバーフローしているときに計時部422から出力される。
ヘッダ解析部410は、ステップS404における判定の結果と、ヘッダをパケット情報生成部440に出力する。対象パケットが分割パケットではない場合に(S404:No)、パケット情報生成部440は、ヘッダ解析部410からのヘッダに基づいてパケット情報PIを生成してDMAC430に出力し、DMAC430は、該パケット情報PIに対応するパケットをパケットエリア474にDMA転送すると共に、該パケット情報PIをパケット情報エリア472にDMA転送する(S406、S408、S410)。
一方、対象パケットが分割パケットである場合に(S404:Yes)、ヘッダ解析部410は、送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号を含むコネクション情報と生成し、パケット情報生成部440は、パケット情報PIを生成して整列回路500に出力する(S412、S414)。
ヘッダ解析部410は、ステップS412で生成したコネクション情報と、トレーステーブル420に格納された各コネクション情報とを比較する(S416)。
トレーステーブル420に対象パケットのコネクション情報があれば(S420:Yes)、ヘッダ解析部410は、該対象パケットについての処理を終了する。一方、トレーステーブル420に対象パケットのコネクション情報がなければ(S420:No)、ヘッダ解析部410は、ステップ412で生成したコネクション情報をトレーステーブル420に出力する。これにより、トレーステーブル420は、新しいコネクションのパケットが受信されたとして、該コネクションに対応するタイマを計時部422に起動させる(S424)。
整列回路500は、パケット情報生成部440からパケット情報PIを受信すると、並替処理を行う(S430)。また、DMAC430は、当該パケットをパケットエリア474にDMA転送する(S470)。
計時部422からタイマ満了信号が出されると(S400:Yes)、DMAC430は、整列回路500の整列バッファ540内の全てのパケット情報PIをパケット情報エリア472にDMA転送する(S480)。また、トレーステーブル420は、該コネクションに対応するコネクション情報とタイマを初期化する(S482)。
図24は、図23におけるステップS430の並替処理を示すフローチャートである。タイマ満了信号を受信しておらず、パケット情報生成部440からパケット情報PIを受信すると(S432:No、S434:Yes)、シーケンス番号抽出回路510は、パケット情報PIからシーケンス番号SNを生成して比較器520に出力し(S436)、選択信号生成回路530は、バッファ0を示す第1の選択信号SEL1を生成してセレクタ570に出力する(S438、S440)。セレクタ570は、情報抽出部550のうちの、バッファ0に対応する情報抽出回路560に保持されたシーケンス番号SN(0)とストアフラグSF(0)を選択して比較器520と選択信号生成回路530に夫々出力する。
ストアフラグSF(0)が0であり、すなわちバッファ0が未書込バッファ(以下「未書込領域」ともいう)であるときに(S442:No)選択信号生成回路530は、バッファ0を示す第2の選択信号SEL2を生成して書込回路200に出力する(S454)。これを受けて、書込回路200は、ステップS160の書込処理をする。ステップS160の書込処理は、図4に示す通りである。ここで、対象パケットのパケット情報PIは、バッファ0に書き込まれる。
一方、ステップS442において、ストアフラグSF(0)が1であり、すなわちバッファ0が書込済バッファ(以下「書込済領域」ともいう)であるときに(S442:Yes)、選択信号生成回路530は、境界となるバッファ(境界領域)の検索を開始し、比較器520によるバッファ0に格納されているシーケンス番号SN(0)と、シーケンス番号抽出回路510が得た対象パケットのシーケンス番号SNとの比較結果を確認する(S450)。
バッファ0に書き込まれたシーケンス番号SN(0)が対象パケットのシーケンス番号SNより大きいときに、選択信号生成回路530は、バッファ0が境界領域であると判定し、バッファ0を示す第2の選択信号SEL2を生成して書込回路200に出力する(S450:Yes、S454)。これに応じて、書込回路200によるパケット情報PIの書込処理がなされる。このとき、バッファ0からの各バッファに格納されたデータは次のバッファにシフトされ、バッファ0には、対象パケットのパケット情報PIが書き込まれる。
また、情報抽出部550の各情報抽出回路は、対応するバッファ内のパケット情報PIを読み出してシーケンス番号SNとストアフラグSFを抽出して、保持していたものを更新する。
ステップS450において、バッファ0に書き込まれたシーケンス番号SN(0)が対象パケットのシーケンス番号SNより小さいときには、選択信号生成回路530は、バッファ0が境界領域ではないと判定し、次のバッファ(バッファ1)を示す第1の選択信号SEL1を生成してセレクタ570に出力する(S450:No、S452、S440)。そして、領域1を検索対象とした境界領域の検索が行われる(S442〜)。
このような処理は、境界領域が検出されるまで、最後の書込済領域を検索対象とした検索がなされるまで繰り返され、パケット情報PIは、整列バッファ540内の未書込領域か、いずれかの書込済領域に書き込まれる。未書込領域に書き込まれる場合には、該未書込領域が整列バッファ540の先頭のバッファか、最後の書込済領域の次の領域である。また、書込済領域に書き込まれた場合には、該書込済領域に格納されていたシーケンス番号SNが必ず対象パケットのシーケンス番号SNより大きい。また、対象パケットのパケット情報PIを書き込まれた領域の1つ前の領域には、必ず対象パケットのシーケンス番号SNより小さいシーケンス番号SNが書き込まれている。
なお、タイマ満了信号を受信した際に(S432:Yes)、選択信号生成回路530は、整列バッファ540内に書き込まれた全てのパケット情報PIのDMA転送の完了後に、整列バッファ540内の各バッファの初期化を指示する第2の選択信号SEL2を書込回路200に出力する。これにより、整列バッファ540内の各バッファ、及び情報抽出部550内の各情報抽出回路は、初期化される(S460)。
本実施の形態の整列回路100は、本発明の原理を具現化したものであり、本発明の原理のときに説明した効果を得ることができる。
<第2の実施の形態>
本発明の第2の実施の形態も、受信装置である。この受信装置は、図19に示す受信装置400と比べ、パケット情報生成部440が作成したパケット情報PIには、加算値W(次に送信されたパケットのシーケンス番号)が含まれる点と、図21に示す整列回路500の代わりに、図25に示す整列回路600が設けられた点とを除き、受信装置400と同様であるので、ここで、整列回路600についてのみ説明する。なお、整列回路600について、整列回路500と同様の機能を担う回路に関しては、図21と同様の符号を付与しており、これらの回路に関しては、説明を省略する。
整列回路600は、境界領域の検索を効率良く行うための、連続ビットCBに基づいた第1の手法を適用したものである。図25に示すように、整列回路600は、選択信号生成回路630、情報抽出部650、セレクタ670が整列回路500における選択信号生成回路530、情報抽出部550、セレクタ570と夫々異なる点、結合部610と比較器620がさらに設けられた点以外、整列回路500と同様である。
結合部610は、パケット情報生成部440からのパケット情報PIと、比較器620からの連続ビットCBとを結合してパケット情報PIAを得て書込回路200に出力する。そのため、本第2の実施の形態において、整列バッファ540、メモリ470のパケット情報エリア472におけるパケット情報の格納態様は、図26に示すようになる。
図26に示すように、パケット情報PIAには、ストアフラグ、シーケンス番号SNに加え、さらに連続ビットCBと加算値Wが含まれている。なお、加算値Wは、前述したように、パケット情報生成部440によりパケット情報PIに盛り込んだものである。
図25に戻って説明する。
情報抽出部650は、各情報抽出回路が、対応するバッファに書き込まれたパケット情報PIAから、シーケンス番号SNとストアフラグSFに加え、さらに、加算値Wと連続ビットCBを抽出する。それ以外は、情報抽出部550と同様である。
セレクタ670は、第1の選択信号SEL1により示されるバッファに対応する情報抽出回路が抽出したシーケンス番号SNとストアフラグSFを比較器520と選択信号生成回路630に夫々出力すると共に、さらに、第1の選択信号SEL1により示されるバッファに対応する情報抽出回路が抽出した連続ビットCBを選択信号生成回路630に出力し、第1の選択信号SEL1により示されるバッファの1つ前のバッファに対応する情報抽出回路が抽出した加算値Wを比較器620に出力する。
選択信号生成回路630は、境界領域の検索に際して、セレクタ670からの連続ビットCBが0であるときにのみ検索を実行し、連続ビットCBが1である場合には該領域についての検索をスキップする。また、選択信号生成回路630は、第2の選択信号SEL2を出力する際に、第2の選択信号SEL2により示されるバッファが整列バッファ540の先頭のバッファ(バッファ0)以外であるときに、比較指示を示す比較制御信号ctrを比較器620に出力する。他の点に関しては、選択信号生成回路530と同様である。
比較器620は、選択信号生成回路630から比較制御信号ctrを受信すると、対象パケットのシーケンス番号SNが、セレクタ670からの加算値Wに一致するか否かを比較し、一致するときにのみ連続ビットCBに1を出力する。なお、このとき、セレクタ670からの加算値Wは、対象パケットが書き込まれるバッファの1つ前のバッファに格納されている加算値Wである。
結合部610は、比較器620から連続ビットCBを受信すると、該連続ビットCBをパケット情報PIに結合してパケット情報PIAを生成する。なお、比較器620から連続ビットCBの出力がなく、すなわち連続ビットCBが0であるときには、連続ビットCBが0であるとしてパケット情報PIに結合する。
連続ビットCBに基づいて境界領域の効率化を図る第1の手法は、上記にて詳しく説明したため、ここでは、さらなる詳細な説明を省略する。
勿論、本第2の実施の形態の受信装置における整列回路600は、第1の手法を具現化したものであるため、第1の手法により得られる効果を得ることができる。
<第3の実施の形態>
本発明の第3の実施の形態も、受信装置である。この受信装置は、図19に示す受信装置400と比べ、パケット情報生成部440が作成したパケット情報PIには、加算値W(次に送信されたパケットのシーケンス番号)が含まれる点と、図21に示す整列回路500の代わりに、図27に示す整列回路700が設けられた点とを除き、受信装置400と同様であるので、ここで、整列回路700についてのみ説明する。なお、整列回路700について、整列回路500と同様の機能を担う回路に関しては、図21と同様の符号を付与しており、これらの回路に関しては、説明を省略する。
整列回路700は、境界領域の検索を効率良く行うための、ポインタに基づいた第3の手法を適用したものである。図27に示すように、整列回路700は、比較器722、比較器724、ポインタ記憶回路726をさらに備えた点、抽出回路710、選択信号生成回路730、情報抽出部750、セレクタ770が整列回路500における選択信号生成回路530、情報抽出部550、セレクタ570と夫々異なる点を除き、整列回路500と同様である。
図28は、本第3の実施の形態において、整列バッファ540、メモリ470のパケット情報エリア472におけるパケット情報の格納態様の例を示す。図28に示すように、パケット情報PIには、ストアフラグ、シーケンス番号SNに加え、さらに加算値Wが含まれている。なお、加算値Wは、前述したように、パケット情報生成部440によりパケット情報PIに盛り込んだものである。
図27に戻って説明する。
抽出回路710は、パケット情報生成部440からのパケット情報PIからシーケンス番号SNを抽出して比較器520と比較器724に出力する。さらに、抽出回路710は、パケット情報PIから加算値Wを抽出して比較器722に出力する。
情報抽出部750は、各情報抽出回路が、対応するバッファに書き込まれたパケット情報PIから、シーケンス番号SNとストアフラグSFに加え、さらに、加算値Wを抽出する。それ以外は、情報抽出部550と同様である。
セレクタ770は、第1の選択信号SEL1により示されるバッファに対応する情報抽出回路が抽出したシーケンス番号SNとストアフラグSFを比較器520と選択信号生成回路630に夫々出力すると共に、さらに、第1の選択信号SEL1により示されるバッファの1つ前のバッファに対応する情報抽出回路が抽出した加算値Wを比較器620に出力する。また、セレクタ770は、比較器520に出力したシーケンス番号SNを比較器722にも出力する。
選択信号生成回路730は、境界領域の検索に際して、ポインタ記憶回路726に記憶された各ポインタにより夫々示されるバッファのみを検索対象領域にし、ポインタにより示されていないバッファについての検索をスキップする。また、選択信号生成回路730は、第2の選択信号SEL2を出力する際に、第2の選択信号SEL2により示されるバッファが整列バッファ540の先頭のバッファ(バッファ0)以外であるときに、比較指示を示す比較制御信号を比較器724に出力し、第2の選択信号SEL2により示されるバッファが書込済領域であるときに、比較指示を示す比較制御信号を比較器724に出力する。また、比較器722と比較器724の比較結果に応じてポインタ生成/変更処理(ポインタを生成してポインタ記憶回路726への格納、既にあるポインタのシフトなど)を行う。他に関しては、選択信号生成回路530と同様である。
比較器724は、選択信号生成回路730から比較制御信号を受信すると、対象パケットのシーケンス番号SNが、セレクタ770からの加算値Wに一致するか否かを比較し、比較の結果選択信号生成回路730に返送する。なお、このとき、セレクタ770からの加算値Wは、対象パケットが書き込まれるバッファの1つ前のバッファに格納されている加算値Wである。すなわち、比較器724の比較結果は、対象パケットのパケット情報PIを書き込まれるバッファの1つ前のバッファに書き込まれたパケット情報PIが、対象パケットの1つ前に送信されたパケットのパケット情報PIであるか否かを示す。
比較器722は、選択信号生成回路730から比較制御信号を受信すると、セレクタ770からのシーケンス番号SNと、抽出回路710からの加算値Wを比較し、比較の結果を選択信号生成回路730に返送する。なお、このとき、抽出回路710からの加算値Wは、対象パケットの次に送信されたパケットのシーケンス番号に該当し、セレクタ770からのシーケンス番号SNは、第2の選択信号SEL2により示される領域に書き込まれていたシーケンス番号であり、対象パケットのパケット情報PIを書き込まれた後には、パケット情報PIを書き込まれたバッファの次のバッファに格納されている。
すなわち、比較器722の比較結果は、対象パケットのパケット情報PIが書き込まれた後に、当該バッファの次のバッファに格納されているパケット情報PIが、対象パケットの1つ後に送信されたパケットのパケット情報PIであるか否かを示す。
比較器722と比較器724の比較結果に応じたポインタ生成/変更処理は、第3の手法のときに詳しく説明したので、ここでは、さらなる詳細な説明を省略する。
勿論、本第3の実施の形態の受信装置における整列回路700は、第3の手法を具現化したものであるため、第3の手法により得られる効果を得ることができる。
なお、ポインタに基づいた第2の手法に関しては、上記の説明から簡単に具現化できるため、ここで第2の手法の具体的な実施例を省略する。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、第2の実施の形態と第3の実施の形態において、加算値Wを直接パケット情報PIに加えているが、加算値Wを算出可能であれば、ペイロード長やパケット長などの値であってもよい。
また、上述した各実施の形態の受信装置は、整列回路500によりパケット情報の並替えを行い、パケット情報とパケットを別々にDMA転送しているが、例えば、整列回路500における整列バッファ540を受信バッファとして使用し、パケットそのものの格納順を送信順に並び替えると共に、並替え後に各パケットをメモリ470にDMA転送をするようにしてもよい。
1 並替え制御部 2 シーケンス番号分離部
3 読出しポインタ用リングカウンタ 4 並替えバッファ
10 通信装置 20 通信装置
21 パケットタイザー回路 22 カウンタ
23 パケット送受信回路 24 パケットアセンブラ回路
25 受信バッファ 26 タイマ
27 リスト 28 順序並替部
30 通信網 50 TCP/IPパケット
60 IPヘッダ 61 IPパケット情報
62 送信元IPアドレス 63 宛先IPアドレス
70 TCPヘッダ 71 送信元ポート番号
72 宛先ポート番号 73 シーケンス番号
74 アクノリッジメント番号 75 オフセット
76 予備フィールド 77 TCPフラグ
78 ウインドウ 79 チェックサム
80 アージェントポイント 90 ペイロード
100 整列回路 110 整列バッファ
200 書込回路 210〜21N 選択回路
300 制御回路 400 受信装置
402 受信ブロック 404 FIFO
410 ヘッダ解析部 420 トレーステーブル
422 計時部 430 DMAC
440 パケット情報生成部 450 バス
460 CPU 470 メモリ
472 パケット情報エリア 474 パケットエリア
500 整列回路 510 シーケンス番号抽出回路
520 比較器 530 選択信号生成回路
540 整列バッファ 550 情報抽出部
560〜56N 情報抽出回路 570 セレクタ
600 整列回路 610 結合部
620 比較器 630 選択信号生成回路
650 情報抽出部 670 セレクタ
700 整列回路 710 抽出回路
722 比較器 724 比較器
726 ポインタ記憶回路 730 選択信号生成回路
750 情報抽出部 770 セレクタ
CB 連続ビット ctr 比較制御信号
SEL 選択信号 SEL1 第1の選択信号
SEL2 第2の選択信号 PI パケット情報
PIA パケット情報 SF ストアフラグ
SN シーケンス番号 W シーケンス番号とペイロード長の加算値

Claims (14)

  1. 送信順に応じた大きさのシーケンス番号が付随されたパケットの受信側に設けられ、今回受信したパケットである対象パケットのシーケンス番号を含むパケット情報が入力される整列回路であって、
    前記パケット情報を書き込むための領域を複数順次配列してなる整列バッファと、
    前記整列バッファの複数の領域のうちの1つを示す選択信号が入力され、該選択信号に応じて、前記対象パケットの前記パケット情報を前記整列バッファへ書き込む書込回路と、
    前記対象パケットについて、前記選択信号を生成して前記書込回路に供する制御回路とを備え、
    前記制御回路は、
    前記整列バッファの先頭の領域が前記パケット情報を書き込まれていない未書込領域であるときに、前記先頭の領域を示す前記選択信号を生成し、
    前記整列バッファの先頭の領域が前記パケット情報を書き込まれた書込済領域であるときに、
    前記対象パケットの前記パケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含む前記パケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、前記整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれた前記パケット情報に含まれるシーケンス番号と前記対象パケットのシーケンス番号との比較を順次行うことにより実行し、
    前記検索により前記境界領域を検出できたときに、該境界領域を示す前記選択信号を生成する一方、末尾の書込済領域まで前記検索を行っても前記境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す前記選択信号を生成し、
    前記書込回路は、
    前記選択信号により示される領域を起点にして、前記整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、前記対象パケットの前記パケット情報を前記選択信号により示される領域に書き込むことを特徴とする整列回路。
  2. 前記書込回路は、
    前記整列バッファの複数の領域毎に設けられ、段階的に順次接続された複数の選択回路を有し、
    前記複数の選択回路のうちの、
    前記選択信号により示される領域より前の領域に対応する各選択回路は、何もせず、
    前記選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトし、
    前記選択信号により示される領域に対応する選択回路は、前記対象パケットの前記パケット情報を該領域に書き込むことを特徴とする請求項2に記載の整列回路。
  3. 各パケットに付随されたシーケンス番号は、該パケットの1つ前に送信されたパケットのシーケンス番号とペイロード長とを加算して得た加算値であり、
    前記パケット情報は、当該パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの前記加算値とのいずれか一方をさらに含み、
    前記制御回路は、
    前記整列バッファの先頭の領域が書込済領域であるときに行う前記境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを前記検索の対象とし、
    前記検索対象領域は、前記整列バッファにおける各連続グループの先頭の領域となるグループ先頭領域であり、
    前記連続グループは、
    前記整列バッファの先頭の領域以外であり、かつ、1つ前の連続グループの末尾の領域の次の領域である書込済領域と、前記整列バッファの先頭の領域とのいずれか一方に該当する領域を前記グループ先頭領域とし、
    前記グループ先頭領域のみ、または、前記グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の2つ目の領域からの各領域に夫々書き込まれた前記パケット情報に含まれるシーケンス番号が、該領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する前記複数の書込済領域により構成されることを特徴とする請求項1または2に記載の整列回路。
  4. 前記制御回路は、
    「一致する」と「一致しない」のいずれかを示す連続ビットを前記対象パケットの前記パケット情報に付加してから前記書込回路に出力し、
    前記検索対象領域を判定する際に、「一致しない」を示す前記連続ビットを含む前記パケット情報が書き込まれた各書込済領域を前記検索対象領域に判定し、
    前記対象パケットの前記パケット情報に前記連続ビットを付加する際に、
    前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する場合において、「一致する」を示す値を前記連続ビットに付与し、
    他の場合において、「一致しない」を示す値を前記連続ビットに付与することを特徴とする請求項3に記載の整列回路。
  5. 前記制御回路により生成された1つ以上のポインタを記憶するポインタ記憶回路をさらに有し、
    前記制御回路は、
    前記検索対象領域を判定する際に、前記ポインタ記憶回路に記憶された各ポインタにより夫々示される書込済領域を前記検索対象領域に判定し、
    前記選択信号により示される領域が未書込領域である第1の場合において、
    該領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第1Aの場合に、ポインタを生成せず、
    前記第1Aの場合に該当しない第1Bの場合に、前記選択信号により示される領域を示すポインタを生成し、
    前記選択信号により示される領域が書込済領域である第2の場合において、
    該領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更し、
    前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第2Aの場合に、ポインタを生成せず、
    前記第2Aの場合に該当しない第2Bの場合に、前記選択信号により示される領域を示すポインタを生成することを特徴とする請求項3に記載の整列回路。
  6. 前記制御回路は、
    前記第2Aの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、前記選択信号により示される領域の次の領域を示すポインタを削除し、
    前記第2Bの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、ポンタを生成する代わりに、前記選択信号により示される領域の次の領域を示すポインタを、前記選択信号により示される領域を示すように変更することを特徴とする請求項4に記載の整列回路。
  7. 送信順に応じた大きさのシーケンス番号が付随されたパケットを受信した際に、該パケットを対象パケットとして、シーケンス番号を含むパケット情報を生成するパケット情報生成部と、
    整列回路と、
    DMA(Direct Memory Access)コントローラと、
    整列回路とを備える受信装置であって、
    前記整列回路は、
    前記パケット情報を書き込むための領域を複数順次配列してなる整列バッファと、
    前記整列バッファの複数の領域のうちの1つを示す選択信号が入力され、該選択信号に応じて、前記対象パケットの前記パケット情報を前記整列バッファへ書き込む書込回路と、
    前記対象パケットについて、前記選択信号を生成して前記書込回路に供する制御回路とを備え、
    前記制御回路は、
    前記整列バッファの先頭の領域が前記パケット情報を書き込まれていない未書込領域であるときに、前記先頭の領域を示す前記選択信号を生成し、
    前記整列バッファの先頭の領域が前記パケット情報を書き込まれた書込済領域であるときに、
    前記対象パケットの前記パケット情報から該対象パケットのシーケンス番号を取得すると共に、取得したシーケンス番号より大きいシーケンス番号を含む前記パケット情報が書き込まれた各書込済領域のうちの先頭の領域となる境界領域の検索を、前記整列バッファの先頭から末尾に向かう順で、該書込済領域に書き込まれた前記パケット情報に含まれるシーケンス番号と前記対象パケットのシーケンス番号との比較を順次行うことにより実行し、
    前記検索により前記境界領域を検出できたときに、該境界領域を示す前記選択信号を生成する一方、末尾の書込済領域まで前記検索を行っても前記境界領域を検出できなかったときに、最後の書込済領域の次の領域を示す前記選択信号を生成し、
    前記書込回路は、
    前記選択信号により示される領域を起点にして、前記整列バッファの末尾に向かう方向に、各領域に夫々格納されているデータを1領域分シフトすると共に、前記対象パケットの前記パケット情報を前記選択信号により示される領域に書き込み、
    前記DMAコントローラは、
    前記整列バッファに書き込まれた複数の前記パケット情報をDMA転送することを特徴とする受信装置。
  8. 前記書込回路は、
    前記整列バッファの複数の領域毎に設けられ、段階的に順次接続された複数の選択回路を有し、
    前記複数の選択回路のうちの、
    前記選択信号により示される領域より前の領域に対応する各選択回路は、何もせず、
    前記選択信号により示される領域より後の領域に対応する各選択回路は、自身に対応する領域に、前段の選択回路に対応する領域に格納されているデータをシフトし、
    前記選択信号により示される領域に対応する選択回路は、前記対象パケットの前記パケット情報を該領域に書き込むことを特徴とする請求項7に記載の受信装置。
  9. 各パケットに付随されたシーケンス番号は、該パケットの1つ前に送信されたパケットのシーケンス番号とペイロード長とを加算して得た加算値であり、
    前記パケット情報生成部は、前記対象パケットのペイロード長または該ペイロード長を算出可能な値と、該パケットの前記加算値とのいずれか一方をさらに含む前記パケット情報を生成し、
    前記制御回路は、
    前記整列バッファの先頭の領域が書込済領域であるときに行う前記境界領域の検索に際して、検索対象領域の判定をすると共に、検索対象領域に判定した各領域のみを前記検索の対象とし、
    前記検索対象領域は、前記整列バッファにおける各連続グループの先頭の領域となるグループ先頭領域であり、
    前記連続グループは、
    前記整列バッファの先頭の領域以外であり、かつ、1つ前の連続グループの末尾の領域の次の領域である書込済領域と、前記整列バッファの先頭の領域とのいずれか一方に該当する領域を前記グループ先頭領域とし、
    前記グループ先頭領域のみ、または、前記グループ先頭領域を起点にして配列順が連続する複数の書込済領域であって、該複数の書込済領域の2つ目の領域からの各領域に夫々書き込まれた前記パケット情報に含まれるシーケンス番号が、該領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する前記複数の書込済領域により構成されることを特徴とする請求項7または8に記載の受信装置。
  10. 前記制御回路は、
    前記パケット情報生成部により生成された前記パケット情報に、「一致する」と「一致しない」のいずれかを示す連続ビットを付加してから前記書込回路に出力し、
    前記検索対象領域を判定する際に、「一致しない」を示す前記連続ビットを含む前記パケット情報が書き込まれた各書込済領域を前記検索対象領域に判定し、
    前記対象パケットの前記パケット情報に前記連続ビットを付加する際に、
    前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する場合において、「一致する」を示す値を前記連続ビットに付与し、
    他の場合において、「一致しない」を示す値を前記連続ビットに付与することを特徴とする請求項9に記載の受信装置。
  11. 前記整列回路は、前記制御回路により生成された1つ以上のポインタを記憶するポインタ記憶回路をさらに有し、
    前記制御回路は、
    前記検索対象領域を判定する際に、前記ポインタ記憶回路に記憶された各ポインタにより夫々示される書込済領域を前記検索対象領域に判定し、
    前記選択信号により示される領域が未書込領域である第1の場合において、
    該領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第1Aの場合に、ポインタを生成せず、
    前記第1Aの場合に該当しない第1Bの場合に、前記選択信号により示される領域を示すポインタを生成し、
    前記選択信号により示される領域が書込済領域である第2の場合において、
    該領域からのいずれかの領域を示す全てのポインタを、現在示している領域の次の領域を示すように変更し、
    前記選択信号により示される領域が前記整列バッファの先頭の領域以外であり、かつ、前記対象パケットのシーケンス番号が、前記選択信号により示される領域の1つ前の領域に書き込まれた前記パケット情報から得られる前記加算値に一致する第2Aの場合に、ポインタを生成せず、
    前記第2Aの場合に該当しない第2Bの場合に、前記選択信号により示される領域を示すポインタを生成することを特徴とする請求項9に記載の受信装置。
  12. 前記制御回路は、
    前記第2Aの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、前記選択信号により示される領域の次の領域を示すポインタを削除し、
    前記第2Bの場合において、前記選択信号により示される領域に書き込まれた前記パケット情報に含まれるシーケンス番号が、前記対象パケットの前記加算値に一致するときにのみ、ポンタを生成する代わりに、前記選択信号により示される領域の次の領域を示すポインタを、前記選択信号により示される領域を示すように変更することを特徴とする請求項10に記載の受信装置。
  13. 前記DMAコントローラは、さらに、
    前記対象パケットを受信する度に該対象パケットをDMA転送することを特徴とする請求項7から12のいずれか1項に記載の受信装置。
  14. 前記整列バッファは、
    前記パケット情報生成部により生成された前記パケット情報と、該パケット情報に対応する前記対象パケットとが入力され、
    前記書込回路は、
    前記パケット情報と前記対象パケットを前記整列バッファの同一の領域に書き込み、
    前記DMAコントローラは、
    前記整列バッファに書き込まれた複数の前記パケット情報と前記対象パケットをDMA転送することを特徴とする請求項7から12のいずれか1項に記載の受信装置。
JP2011281916A 2011-12-22 2011-12-22 整列回路及び受信装置 Expired - Fee Related JP5788308B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011281916A JP5788308B2 (ja) 2011-12-22 2011-12-22 整列回路及び受信装置
US13/726,074 US8879548B2 (en) 2011-12-22 2012-12-22 Alignment circuit and receiving apparatus
US14/506,660 US9210093B2 (en) 2011-12-22 2014-10-05 Alignment circuit and receiving apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011281916A JP5788308B2 (ja) 2011-12-22 2011-12-22 整列回路及び受信装置

Publications (3)

Publication Number Publication Date
JP2013132006A true JP2013132006A (ja) 2013-07-04
JP2013132006A5 JP2013132006A5 (ja) 2014-11-27
JP5788308B2 JP5788308B2 (ja) 2015-09-30

Family

ID=48654503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011281916A Expired - Fee Related JP5788308B2 (ja) 2011-12-22 2011-12-22 整列回路及び受信装置

Country Status (2)

Country Link
US (2) US8879548B2 (ja)
JP (1) JP5788308B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7376459B2 (ja) 2020-11-30 2023-11-08 日本電波工業株式会社 伝送回路

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9712442B2 (en) * 2013-09-24 2017-07-18 Broadcom Corporation Efficient memory bandwidth utilization in a network device
US11687463B2 (en) * 2021-10-29 2023-06-27 Dell Products L.P. Management of flushing working set based on barrier in page descriptor ring

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434606B1 (en) * 1997-10-01 2002-08-13 3Com Corporation System for real time communication buffer management
JP2001111608A (ja) 1999-10-07 2001-04-20 Canon Inc パケット並べ替え装置とその通信ネットワーク及び通信制御方式
JP2001189755A (ja) 1999-12-28 2001-07-10 Toshiba Corp パケット通信装置、パケット通信方法および記憶媒体
US20020165973A1 (en) * 2001-04-20 2002-11-07 Doron Ben-Yehezkel Adaptive transport protocol
US7269172B2 (en) * 2003-01-07 2007-09-11 Sun Microsystems, Inc. Method and device for managing transmit buffers
US8208380B1 (en) * 2006-11-22 2012-06-26 Marvell Israel (M.I.S.L) Ltd. Lossless system support using circular buffer allocation
JP2009076172A (ja) * 2007-09-25 2009-04-09 Hitachi Ltd データ伝送方法、光ディスク記録方法及び光ディスク記録装置
JP5049834B2 (ja) * 2008-03-26 2012-10-17 株式会社東芝 データ受信装置、データ受信方法およびデータ処理プログラム
US8108538B2 (en) * 2008-08-21 2012-01-31 Voltaire Ltd. Device, system, and method of distributing messages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7376459B2 (ja) 2020-11-30 2023-11-08 日本電波工業株式会社 伝送回路

Also Published As

Publication number Publication date
US20150023356A1 (en) 2015-01-22
US20130163599A1 (en) 2013-06-27
US9210093B2 (en) 2015-12-08
US8879548B2 (en) 2014-11-04
JP5788308B2 (ja) 2015-09-30

Similar Documents

Publication Publication Date Title
JP5956006B2 (ja) ネットワークにおけるメッセージおよび計算オーバーヘッドの軽減
CN102132535B (zh) 在通信网中传输数据分组的方法和交换装置
CN101150527B (zh) 一种pcie数据传输的方法、系统及设备
US20120185633A1 (en) On-chip router and multi-core system using the same
KR100798926B1 (ko) 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법
JP2013115576A (ja) 受信データ処理方法、通信装置、及びプログラム
JP2020535739A (ja) データ伝送
JP5788308B2 (ja) 整列回路及び受信装置
WO2012065425A1 (zh) 数据流定帧方法及装置
US8848739B2 (en) Efficient switch fabric bandwidth distribution
CN113518037A (zh) 一种拥塞信息同步的方法以及相关装置
JP5768289B2 (ja) ネットワークノード及びパケット管理方法
WO2017117955A1 (zh) 一种路由同步方法、设备及通信系统
JP5674179B1 (ja) 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法
US20120163398A1 (en) Communication apparatus, relay apparatus, and network system
CN113708903B (zh) 基于时间戳的信令确定性传输方法、装置、设备及介质
CN113518046B (zh) 一种报文转发方法及框式交换设备
JP4901777B2 (ja) ネットワーク中継装置およびネットワーク中継方法
US20140211604A1 (en) Method and Apparatus for the Fast Detection of Connectivity Loss Between Devices in a Network
JP4746672B2 (ja) 経路確認装置、経路確認システム、経路確認方法およびそのプログラム
JP2013150259A (ja) フレーム伝送システム
JP6206105B2 (ja) 通信システム、通信方法および通信プログラム
JP2002164924A (ja) パケット処理装置
CN108551427B (zh) 基于t型转发器的以太网快速收敛方法
JP5639965B2 (ja) 非同期動作検索回路

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150710

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150729

R150 Certificate of patent or registration of utility model

Ref document number: 5788308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees