JP6482296B2 - パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム - Google Patents

パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム Download PDF

Info

Publication number
JP6482296B2
JP6482296B2 JP2015014537A JP2015014537A JP6482296B2 JP 6482296 B2 JP6482296 B2 JP 6482296B2 JP 2015014537 A JP2015014537 A JP 2015014537A JP 2015014537 A JP2015014537 A JP 2015014537A JP 6482296 B2 JP6482296 B2 JP 6482296B2
Authority
JP
Japan
Prior art keywords
packet
packets
processing
buffer
control means
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.)
Active
Application number
JP2015014537A
Other languages
English (en)
Other versions
JP2016139978A (ja
Inventor
智史 境
智史 境
ウェイ ジィァン
ウェイ ジィァン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Communications Corp
Original Assignee
NTT Communications 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 NTT Communications Corp filed Critical NTT Communications Corp
Priority to JP2015014537A priority Critical patent/JP6482296B2/ja
Publication of JP2016139978A publication Critical patent/JP2016139978A/ja
Application granted granted Critical
Publication of JP6482296B2 publication Critical patent/JP6482296B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、順次入力されるパケットを並列に処理し、処理したパケットを順番に出力するための技術に関連するものである。
現在、インターネット上で仮想的なプライベートネットワークを実現するVPN(Virtual Private Network)が普及してきている。VPN通信を実現する通信装置では、パケットを暗号化してカプセリングする等の処理を実行するが、VPN通信の高速化のためには当該通信装置における暗号化/復号化等の処理性能を向上させることが必要である。
処理性能を向上させる有効なアプローチとして、暗号化/復号化等の処理を例えば複数のCPUを用いて並列化する技術がある。なお、本願に関連する先行技術文献として特許文献1がある。
特許4648290
しかし、上記通信装置で動作するVPNソフトウェアのような通信プログラムにおいて、パケットを扱う処理を単純に並列化してしまうと、送出パケットの順序逆転が生じてしまい、ユーザ通信に影響を与えてしまう。
そこで、並列処理後のパケットを一時的にバッファに格納し、順序を整えて(並び替えて)送出することが考えられるが、全てのパケットに対し並び替えを実施して送出するような単純な方式では、バッファ処理がボトルネックになってしまい、並列処理の性能向上率を低下させてしまう。
本発明は上記の点に鑑みてなされたものであり、パケットに対する処理を並列化して実施するシステムにおいて、並列処理後のパケットの順序を整えて出力する処理を効率的に行うことを可能とする技術を提供することを目的とする。
本発明の実施の形態によれば、パケットを並列に処理するパケット処理システムであって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
ことを特徴とするパケット処理システムが提供される。
また、本発明の実施の形態によれば、パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、
上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、
前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、
前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
前記第2のパケット転送装置は、前記複数の経路から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを受信した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該受信したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
ことを特徴とする通信システムが提供される。
また、本発明の実施の形態によれば、パケットを並列に処理するパケット処理システムにより実行されるパケット処理方法であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与ステップと、
前記番号付与ステップにより番号が付与されたパケットに対して並列処理を実行する処理ステップと、
前記処理ステップによる処理後のパケットを、前記番号付与ステップで付与された番号順に出力する制御ステップと、を備え、
前記制御ステップにおいて、前記処理後のパケットのうち、出力の順番を待たせるパケットを一時的に、データ構造として配列を用いるバッファに格納し、前記処理ステップによる処理後のパケットとして、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
ことを特徴とするパケット処理方法が提供される。
また、本発明の実施の形態によれば、パケットを並列に処理するパケット処理装置であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
ことを特徴とするパケット処理装置が提供される。
また、本発明の実施の形態によれば、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
ことを特徴とするパケット処理装置が提供される。

本発明の実施の形態によれば、パケットに対する処理を並列化して実施するシステムにおいて、並列処理後のパケットの順序を整えて出力する処理を効率的に行うことを可能とする技術が提供される。
本発明の実施の形態に係るパケット処理システムの構成図である。 パケット処理システムの他の構成例を示す図である。 バッファの例を説明するための図である。 バッファ制御部の動作を示すフローチャートである。 到着待ちパケットが来た際のバッファ送出の例を説明するための図である。 バッファ格納の例を説明するための図である。 パケット破棄の例を説明するための図である。 タイムアウト処理の例を説明するための図である。
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
以下で説明する「パケット」は、まとまったデータを意味し、IPパケットやイーサパケット等の特定の種類のパケットに限定されない。「パケット」を「データ」と言い換えてもよい。
(システム構成)
図1に、本発明の実施の形態に係るパケット処理システム100の構成図を示す。本実施の形態において、パケット処理システム100は、VPN通信を実現するための通信装置であることを想定しているが、これは一例に過ぎない。本発明は、このような通信装置に限られず、種々のパケット(データ)処理を行う技術に適用可能である。
本実施の形態のパケット処理システム100は、VPN通信を実現するために、パケットをネットワークとの間で送信/受信する機能(IF機能)、カプセリング/デカプセリングを行う機能等も備えるが、このような機能はVPN通信のための一般的な機能であるため、図1には、このような一般的な機能は示されておらず、本発明に特に関連する機能のみが示されている。
図1に示すように、パケット処理システム100は、番号付与部101、キュー102、パケット処理部103、キュー104、バッファ制御部105を含む。番号付与部101は、外部(例:ユーザ端末側ネットワーク)から受信したパケットに、受信した順番で番号を付与する。キュー102は、パケットを一時的に格納するFIFOメモリである。キュー102には番号付与部101により番号付けされたパケットが順次格納され、格納された順番で、パケット処理部103から順次読み出される(刈り取ると表現してもよい)。
パケット処理部103は複数個存在し、パケットに対する処理を並列に実行する。パケットに対する処理は、例えば、パケットの暗号化又は復号化である。
キュー104もパケットを一時的に格納するFIFOメモリである。個々のパケット処理部103は、処理を終えたパケットを順次キュー104に格納する。キュー104に格納されたパケットは、格納された順番で、バッファ制御部105から順次読み出される。
バッファ制御部105は、キュー104から読み出したパケットを格納する所定長のバッファ(メモリ)を備え、所定の処理手順で当該バッファからのパケット読み出し・送出を行うことで、パケットの順序を保持したまま高速な送出処理を可能とする機能部である。バッファ制御部105の処理動作については後に詳しく説明する。
パケット処理システム100は、1つのCPUを有するコンピュータにおいて、各機能部に相当するプログラムを実行することにより実現することもできるし、物理的に複数のコンピュータを使用して実現することもできる。複数のコンピュータで実現する場合において、例えば、番号付与部101とキュー102を1つのコンピュータで構成し、各パケット処理部103を1つのコンピュータで構成し、キュー104とバッファ制御部105を1つのコンピュータで実現することができる。
また、パケット処理システム100を、複数のCPUを搭載した1つの装置として構成し、例えば、番号付与部101、それぞれのパケット処理部103、及びバッファ制御部105に1つずつCPUを割り当てて、各CPUにおいて、処理内容に対応するプログラムを実行させることでパケット処理システム100を実現することもできる。
本実施の形態に係るバッファ制御技術は、図2に示すようなネットワークシステムに適用することも可能である。
図2に示すシステムは、例えば、中継を行うネットワーク200のエッジ装置としてパケット転送装置201とパケット転送装置202が備えられた構成を持つ。便宜上、パケット転送装置201からパケット転送装置202への方向のパケット転送を考える。パケット転送装置201は、図1に示したパケット処理システムの番号付与部101に相当し、上流(送信側)から送信されたパケットを受信し、受信した順番でパケットに番号を付与し、番号が付与されたパケットを複数の経路でネットワーク200に送出する。例えば、パケット1は経路1で送信し、パケット2は経路2で送信する、といったように、並列に送信することでパケット転送の高速化を図っている。
パケット転送装置202は、図1に示したパケット処理システムのキュー104とバッファ制御部105に相当する機能を含み、ネットワーク200から受信したパケットを受信順にキューに格納するとともに、バッファ制御部105と同様のバッファリング処理を実施して、パケットの番号順(=上流から受信した順)に下流(受信側)にパケットを送出する。このような処理により、パケットの順番を保持したまま、並列伝送による高速伝送が可能になる。
パケット転送装置202は、CPUを備えるコンピュータ(通信装置)において、キュー104及びバッファ制御部105の処理内容に相当するプログラムを実行させることにより実現可能である。また、パケット転送装置202は、パケット送出側の機能として、番号付与部101の機能を更に備えてもよい。以下、パケット制御部105が実施する処理の内容をより詳細に説明する。
(パケット制御部105の処理の詳細)
図3に、パケット制御部105が備えるバッファの例を示す。当該バッファは、バッファ要素数として予め定めた長さを持つメモリ領域である。本実施の形態において、パケットには、パケット到着順に順番に番号が付与されるが、番号には予め上限が設定されており、その上限値をナンバリング最大値と呼ぶ。ナンバリング最大値が付されたパケットの次のパケットには最初の番号(本実施の形態では1)が付されることになる。
パケット制御部105の処理を実行するプログラムにおいて、当該バッファのデータ構造は配列として表され、バッファ要素数が配列要素数となる。また、パケットの番号を配列要素数で割った余りをインデックスとする配列位置に当該パケットが格納される。このように、番号を配列の要素数で割った際の剰余をインデックスとして格納処理を行うことで、準備する配列の要素数を限定することができ、確保するメモリを削減することができる。
本実施の形態では、バッファリング処理における配列のインデックスとして、WaitポインタとMaxポインタが使用される。Waitポインタは、現在の待ちパケットの番号を配列要素数で割った余りである。Maxポインタは、バッファ格納済みパケットの最大番号を配列要素数で割った余りである。
図3に示す例では、バッファ要素数が10と設定され、ナンバリング最大値が100と設定されている。また、図3に示す時点でのバッファは、65番のパケットの到着待ち、かつ68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態の時点で、73が最大であるから、73÷10の余り3がMaxポインタ("M"と表記)になる。また、65番のパケットを待っているから、65÷10の余り5がWaitポインタ("W"と表記)になる。
(バッファリング処理内容)
図4は、バッファ制御部105が実行するバッファリング処理に係る手順を示すフローチャートである。図4において、S1、S2等の符号は、各処理を参照するための参照符号である。また、waitは、現在到着を待っている(具体的にはキュー104に格納されることを待っている)パケットの番号(Waitポインタでなくて実際の番号)である。maxは、バッファに格納されているパケットの最大番号(Maxポインタでなくて実際の番号)である。numは、キュー104から読み出した(刈り取った)パケットの番号である。timeは、最近のバッファ送出処理を行った時点の時刻であり、nowは現在時刻である。LENは、配列要素数(例:10)である。NUM_MAXはナンバリング最大値(例:100)である。
以下では、バッファ制御部105が実行する処理について、バッファ送出処理、バッファ格納処理、パケット破棄処理、タイムアウト処理に分けて、それぞれを具体例とフローチャートを用いて説明する。
<到着待ちパケットが来た際のパケット送出処理>
まず、バッファからパケットを読み出して送出する際の処理を図5を参照して説明する。図5(a)は、到着待ちパケットが来た際のパケット送出の例1を示している。
例1では、パケット到着の直前の時点で、65番のパケットの到着を待ち、かつ68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態で、65番のパケットが来た場合(キュー104から刈り取った場合)、そのパケットを送出する。65番の次である66番のパケットは未到着であるから、次に、66番のパケットの到着待ちとなる。よって、Wポインタをひとつずらす。
図5(b)は、到着待ちパケットが来た際のパケット送出の例2を示している。例2では、パケット到着の直前の時点で、65番のパケットの到着を待ち、かつ66番、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態で、65番のパケットが来た場合、当該パケットと、当該パケットと連続する格納済みパケット(66番)とを送出し、送出個数分Wポインタをずらす。
上記のパケット送出の例1、2は、図4のフローチャートにおけるS21のバッファ送出処理の例である。すなわち、図4のS9でキュー104からパケットを刈り取り、S10でwait(例:到着待ちの65)とnum(例:到着した65)を比較した結果、waitがnumと等しいので、S21のバッファ送出処理を実行し、S22においてtimeを現時点の時刻(パケットを送出した時刻)に更新する。上記の例2に例示したように、パケット送出処理において、到着パケットとともに、既に到着しているパケットのうち、到着パケットと連続する一連のパケットも全て送出する。
<バッファ格納処理>
次に、バッファ格納処理について図6を参照して説明する。図6(a)は、バッファ格納処理の例1を示している。
例1では、65番のパケットの到着待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも大きな66番のパケットが来た場合に、そのパケットをバッファ(配列)に格納する。Mポインタ及びWポインタに変更はない。
図6(b)は、バッファ格納処理の例2を示している。例2では、65番のパケットの到着待ち、かつ66番、67番、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、77番のパケットが来たとする。この場合、77よりも小さい番号の到着待ちパケットが未到着なので、77番のパケットを配列に格納する。
ただし、ナンバリング最大値よりも小さな配列要素数の配列において、77番のパケットを格納するために、(77−10(配列要素数))以下のパケットを送出する。ただし、65番は未格納なので、65番は破棄扱いとし、66番と67番を送出する。さらに連続する68番、69番、70番を送出し、Wポインタを71にずらす。また77番が待ちパケットの中で最大となるため、Mポインタも77にずらす。
上記のパケット格納の例1、2は、図4のフローチャートにおけるS23のバッファ追加処理、S25及びS26のバッファ送出処理の例である。
すなわち、図4のS9の判定の結果、wait<num<wait+LEN(例:65<66<65+10)である場合に、S23においてnum(例:66)番のパケットをバッファに追加し、S24でmaxを更新する。つまり、パケット制御部105は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットをキュー104から取得した場合に、当該パケットをバッファに格納する。
また、wait+LEN<=num<wait+LEN×2(例:65+10<=77<65+10×2)である場合に、S25およびS26においてnum−LEN(例:77−10)までのパケット(例:66番、67番のパケット)及び、それに連続するパケット(例:68番、69番、70番のパケット)を送出し、S27でtimeを更新し、S24でmaxを更新する。つまり、バッファ制御部105は、到着待ちパケット(65)よりも要素数以上の数だけ後のパケット(77)を取得した場合に、当該パケットをバッファに格納するとともに、当該パケットを格納する要素のインデックス(7)以下のインデックス(6,7)に格納されているパケット及び、それに連続するインデックス(8,9,0)に格納されているパケットを出力する。
上記の例はwait<numである場合の例であるが、num<waitである場合にも、S14、S17、S18において同様のパケット追加、送出処理が行われる。これは、実質的に上記の例と同じであるが、到着パケットのナンバリングが最大値を過ぎて、最初に戻り、小さな値になっているような場合に相当する。
S11の判定の結果、num<wait−NUM_MAX+LEN×2(例:1<100−100+10×2)である場合、S12でnumにNUM_MAXを加える(例:num=1+100)。S13の判定の結果、wait<num<wait+LEN(例:100<101<100+10)である場合に、S14において当該パケットをバッファに追加し、S15、S16でmaxを更新する。
また、wait+LEN<=num<wait+LEN×2(例:100+10<=112<100+10×2)である場合に、S17及びS18においてnum−NUM_MUX−LEN(例:112−100−10)までのパケットを送出し、S19でtimeを更新し、S15、S16でmaxを更新する。
<バッファ破棄処理>
次に、バッファ破棄処理について図7を参照して説明する。図7(a)は、バッファ破棄処理の例1を示している。
例1では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも少し小さい63番のパケットが来た場合に、そのパケットを破棄する。MポインタとWポインタに変更はない。
図7(b)は、バッファ破棄処理の例2を示している。例2では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも20以上大きな85番のパケットが来た場合には、そのパケットを破棄する。
上記のパケット破棄の例1、2は、図4のフローチャートにおけるS20、S28のバッファ破棄処理(drop)の例である。
すなわち、図4のS10、S11の判定の結果、num>=wait−NUM_MUX+LEN×2(例:63>=65−100+10×2)となる場合、S20で、当該num番号のパケットを破棄する。
また、S10の判定の結果、wait+LEN×2<=num(例:65+10×2<=85)となる場合、S28で、当該num番号のパケットを破棄する。
これまでに説明したバッファ格納と破棄の手順をまとめると以下のようになる。
到着待ちのパケットよりも番号が大きなパケットが来た場合は番号を確認し、到着待ちのパケットの番号と配列の要素数を足した合計値(A)と比較を行う。合計値(A)よりも小さい場合は番号を要素数で割った剰余をインデックスとして格納処理を行う。合計値(A)よりも大きい場合は、さらに、合計値に要素数を足した合計値(B)と比較する。合計値(B)よりも大きい場合は、パケット破棄を行う。合計値(B)よりも小さい場合は、到着待ちパケットのインデックスから到着したパケットまでのインデックスの間に格納されているパケット全てと到着したパケットのインデックスを超えて連続して格納されているパケットがある場合は、格納されていないインデックスのひとつ手前までのパケット全てを送出し、到着パケットを格納し、最後に送出したパケットの番号+1の番号を到着待ちとする。
また、到着待ちパケットよりも番号の小さなパケットが来た場合は、まず到着待ちパケット番号からナンバリング最大値を引いて要素数の2倍を足した値(C)と比較を行う。値(C)よりも大きい場合は破棄し、小さい場合は更に、到着したパケットの番号にナンバリング最大値を足した値(D)と到着待ちパケットの番号に配列の要素数を足した値(E)を比較し、(D)の値が(E)の値よりも小さければバッファに格納し、大きければ、到着パケット番号から要素数を引いたインデックスの間に格納されているパケット全てと到着したパケットのインデックスを超えて連続して格納されているパケットがある場合は、格納されていないインデックスのひとつ手前までのパケットを全て送出し、到着パケットを格納し、最後に送出したパケットの番号+1の番号を到着待ちとする。
<タイムアウト処理>
次に、タイムアウト処理の例について図8を参照して説明する。図8に示す例では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態で、一定時間経過しても65番パケットが到達しない場合に、タイムアウトが生じたと判定し、タイムアウト処理として、65番、66番、67番のパケットを破棄扱いとし、68番、69番、70番のパケットを送出する。この際、到着待ちパケットが変わるため、待ちポインタを71にずらす。
すなわち、本実施の形態において、バッファ制御部105は、バッファリング処理で待ちパケットが一定時間到着しない場合には、タイムアウト処理を実施する。高負荷時には処理の前後のキューがあふれてバーストロスを起こす可能性がある。バーストロス時にタイムアウト処理をパケット単位で実施してしまうと、複数回のタイムアウト処理が一度に行われることになり、パケットの送出が長時間停止してしまう。そこで、一度タイムアウトが生じた際には、バッファにたまっているパケットの先頭までスキップしてそこからパケット送出を行うようにしている。上記の例では、68番のパケットが、バッファにたまっているパケットの先頭に該当するため、当該68番のパケット、及び、これと連続する69番、70番のパケットをタイムアウト処理時に送出している。
また、本実施の形態では、バッファにパケットが積まれていない場合に、タイムアウト処理を行ってしまうと、一定時間を置いて到着したパケットを破棄してしまうため、タイムアウト処理を実施しないこととしている。
上記のタイムアウト処理の例は、図4のフローチャートにおけるS6のタイムアウト処理の例である。
すなわち、図4のS2における判定の結果、wait<max(例:65<73)となり、S4において、「0<=wait<LEN&&NUM_MAX−LEN<max<=NUM_MAX」が成立しない場合に、S5でtime(前回、パケット送出した時刻)とnow(現在時刻)とを比較し、待ち時間を過ぎた場合に、S6においてタイムアウト処理を実施し、S7でtime更新を行う。S5で、待ち時間を過ぎておらず、キュー104にパケットが残っていれば、キュー104からパケットを刈り取って処理を実施する(S8、S9〜)。
S4で、「0<=wait<LEN&&NUM_MAX−LEN<max<=NUM_MAX」が成立する場合には、タイムアウト処理を行うことなくS8に進む。
図4のS2における判定の結果、wait>maxとなり、S3において、「0<=max<LEN&&NUM_MAX−LEN<wait<=NUM_MAX」が成立する場合に、S5でtime(前回、パケット送出した時刻)とnow(現在時刻)とを比較し、待ち時間を過ぎた場合に、S6においてタイムアウト処理を実施し、S7でtime更新を行う。S5で、待ち時間を過ぎておらず、キュー104にパケットが残っていれば、キュー104からパケットを刈り取って処理を実施する(S8、S9〜)。
S3で、「0<=max<LEN&&NUM_MAX−LEN<wait<=NUM_MAX」が成立しない場合には、タイムアウト処理を行うことなくS8に進む。
なお、図4のS3でFalseとなる場合、及び、S4でTrueとなる場合が、前述したように、バッファにパケットが積まれていない場合に該当し、タイムアウト処理を行わない。
<並列化した処理に失敗した際のダミーパケット送出>
処理失敗時にパケットを破棄してしまうと、破棄されたパケットがバッファリング処理に至らず、タイムアウトが発生してしまう。本実施の形態では、それを防ぐため、処理失敗時にはダミーパケット(上記パケットの番号が付与される)をキュー104に入れることで、バッファリング処理を行い、そこで破棄するように動作させている。具体的には、例えば、上記の処理手順の中で、ダミーパケットの送出が行われる判断に至った場合に、当該ダミーパケットを送出せずに破棄する。
(実施の形態のまとめ、効果等)
以上、説明したように、本実施の形態では、パケットを並列に処理するパケット処理システムであって、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えることを特徴とするパケット処理システムが提供される。
前記制御手段は、前記処理手段から到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力することとしてもよい。
前記制御手段は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納することとしてもよい。
前記制御手段における前記バッファのデータ構造として例えば配列を用いることができる。
前記配列の要素数は、例えば、パケットに付与される番号の最大値よりも小さく、前記制御手段は、パケットの番号を前記配列の要素数で割った剰余をインデックスとする要素に当該パケットを格納する。
前記制御手段は、到着待ちパケットよりも前記要素数以上の数だけ後のパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納するとともに、当該パケットを格納する要素のインデックス以下のインデックスに格納されているパケット、及び当該格納されているパケットと番号が連続する一連のパケットを出力するようにしてもよい。
前記制御手段は、パケットを出力した後に、次のパケットを出力できずにタイムアウトが生じた場合に、前記バッファに格納されているパケットの先頭までスキップし、当該先頭のパケット、及び当該先頭のパケットと番号が連続する一連のパケットを出力することとしてもよい。
前記制御手段は、前記処理手段におけるパケットの処理が失敗したときに、当該パケットと同じ番号を有するダミーパケットを使用することとしてもよい。
また、本実施の形態では、コンピュータを、上記パケット処理システムにおける前記パケット制御手段として機能させるためのプログラムを提供することもできる。
また、本実施の形態により、パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファを備えることを特徴とする通信システムが提供される。
また、本実施の形態により、パケットを並列に処理するパケット処理装置であって、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えるパケット処理装置が提供される。
また、本実施の形態により、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えるパケット処理装置が提供される。このパケット処理装置は、例えば、前述したパケット処理システム100が複数のコンピュータから構成される場合におけるキュー104とバッファ制御部105とを有する装置(コンピュータ)に相当する。また、このパケット処理装置は、例えば、図2に示したパケット転送装置202に相当する。
また、本実施の形態により、コンピュータを、上記パケット処理装置における制御手段として機能させるためのプログラムが提供される。
実施の形態で説明した技術(例:図1のパケット処理システム、図2のパケット転送装置202)によれば、並列処理を実施したいモジュールに対し、前後にキューを配備することで、並列処理を可能とし、並列処理(並列伝送含む)の前の機能部にてそれぞれのパケットにナンバリングを実施し、並列処理実行後に、バッファリング処理を実施することで、ナンバリングされた順番通りにパケットを出力することができる。
また、図4に示した手順でバッファ格納/送出処理等を実施することで、高速なバッファリング処理が可能となり、順序を保持したまま処理効率を向上することができる。更に、処理失敗時(例:壊れた暗号パケットの受信)にも処理効率を維持できる。また、一時的な高負荷(例:バーストトラフィック)の場合の長時間処理停止を防ぐことができる。
(第1項)
パケットを並列に処理するパケット処理システムであって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理システム。
(第2項)
前記制御手段は、前記処理手段から到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力する
ことを特徴とする第1項に記載のパケット処理システム。
(第3項)
前記制御手段は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納する
ことを特徴とする第1項又は第2項に記載のパケット処理システム。
(第4項)
前記制御手段における前記バッファのデータ構造として配列を用いる
ことを特徴とする第1項ないし第3項のうちいずれか1項に記載のパケット処理システム。
(第5項)
前記配列の要素数は、パケットに付与される番号の最大値よりも小さく、前記制御手段は、パケットの番号を前記配列の要素数で割った剰余をインデックスとする要素に当該パケットを格納する
ことを特徴とする第4項に記載のパケット処理システム。
(第6項)
前記制御手段は、到着待ちパケットよりも前記要素数以上の数だけ後のパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納するとともに、当該パケットを格納する要素のインデックス以下のインデックスに格納されているパケット、及び当該格納されているパケットと番号が連続する一連のパケットを出力する
ことを特徴とする第5項に記載のパケット処理システム。
(第7項)
前記制御手段は、パケットを出力した後に、次のパケットを出力できずにタイムアウトが生じた場合に、前記バッファに格納されているパケットの先頭までスキップし、当該先頭のパケット、及び当該先頭のパケットと番号が連続する一連のパケットを出力する
ことを特徴とする第1項ないし第6項のうちいずれか1項に記載のパケット処理システム。
(第8項)
前記制御手段は、前記処理手段におけるパケットの処理が失敗したときに、当該パケットと同じ番号を有するダミーパケットを使用する
ことを特徴とする第1項ないし第7項のうちいずれか1項に記載のパケット処理システム。
(第9項)
パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、
上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、
前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、
前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とする通信システム。
(第10項)
パケットを並列に処理するパケット処理システムにより実行されるパケット処理方法であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与ステップと、
前記番号付与ステップにより番号が付与されたパケットに対して並列処理を実行する処理ステップと、
前記処理ステップによる処理後のパケットを、前記番号付与ステップで付与された番号順に出力する制御ステップと、を備え、
前記制御ステップにおいて、前記処理後のパケットのうち、出力の順番を待たせるパケットを一時的にバッファに格納する
ことを特徴とするパケット処理方法。
(第11項)
コンピュータを、第1項ないし第8項のうちいずれか1項に記載のパケット処理システムにおける制御手段として機能させるためのプログラム。
(第12項)
パケットを並列に処理するパケット処理装置であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置。
(第13項)
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置。
(第14項)
コンピュータを、第12項又は第13項に記載のパケット処理装置における制御手段として機能させるためのプログラム。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
100 パケット処理システム
101 番号付与部
102 キュー
103 パケット処理部
104 キュー
105 バッファ制御部
200 ネットワーク
201 パケット転送装置
202 パケット転送装置

Claims (12)

  1. パケットを並列に処理するパケット処理システムであって、
    入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
    前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
    前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
    前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
    前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
    ことを特徴とするパケット処理システム。
  2. 前記制御手段は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納する
    ことを特徴とする請求項1に記載のパケット処理システム。
  3. 前記配列の要素数は、パケットに付与される番号の最大値よりも小さく、前記制御手段は、パケットの番号を前記配列の要素数で割った剰余をインデックスとする要素に当該パケットを格納する
    ことを特徴とする請求項1又は2に記載のパケット処理システム。
  4. 前記制御手段は、到着待ちパケットよりも前記要素数以上の数だけ後のパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納するとともに、当該パケットを格納する要素のインデックス以下のインデックスに格納されているパケット、及び当該格納されているパケットと番号が連続する一連のパケットを出力する
    ことを特徴とする請求項に記載のパケット処理システム。
  5. 前記制御手段は、パケットを出力した後に、次のパケットを出力できずにタイムアウトが生じた場合に、前記バッファに格納されているパケットの先頭までスキップし、当該先頭のパケット、及び当該先頭のパケットと番号が連続する一連のパケットを出力する
    ことを特徴とする請求項1ないしのうちいずれか1項に記載のパケット処理システム。
  6. 前記制御手段は、前記処理手段におけるパケットの処理が失敗したときに、当該パケットと同じ番号を有するダミーパケットを使用する
    ことを特徴とする請求項1ないしのうちいずれか1項に記載のパケット処理システム。
  7. パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、
    上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、
    前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、
    前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
    前記第2のパケット転送装置は、前記複数の経路から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを受信した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該受信したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
    ことを特徴とする通信システム。
  8. パケットを並列に処理するパケット処理システムにより実行されるパケット処理方法であって、
    入力されたパケットにパケットの順序を示す番号を付与する番号付与ステップと、
    前記番号付与ステップにより番号が付与されたパケットに対して並列処理を実行する処理ステップと、
    前記処理ステップによる処理後のパケットを、前記番号付与ステップで付与された番号順に出力する制御ステップと、を備え、
    前記制御ステップにおいて、前記処理後のパケットのうち、出力の順番を待たせるパケットを一時的に、データ構造として配列を用いるバッファに格納し、前記処理ステップによる処理後のパケットとして、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
    ことを特徴とするパケット処理方法。
  9. コンピュータを、請求項1ないしのうちいずれか1項に記載のパケット処理システムにおける制御手段として機能させるためのプログラム。
  10. パケットを並列に処理するパケット処理装置であって、
    入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
    前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
    前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
    前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
    前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
    ことを特徴とするパケット処理装置。
  11. 入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、
    前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、
    前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファであって、データ構造として配列を用いるバッファを備え、
    前記制御手段は、前記処理手段から、前記配列において待ちポインタで示される要素に対応する到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力し、出力したパケット個数分の要素数だけ待ちポインタをずらす
    ことを特徴とするパケット処理装置。
  12. コンピュータを、請求項10又は11に記載のパケット処理装置における制御手段として機能させるためのプログラム。
JP2015014537A 2015-01-28 2015-01-28 パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム Active JP6482296B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015014537A JP6482296B2 (ja) 2015-01-28 2015-01-28 パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015014537A JP6482296B2 (ja) 2015-01-28 2015-01-28 パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2016139978A JP2016139978A (ja) 2016-08-04
JP6482296B2 true JP6482296B2 (ja) 2019-03-13

Family

ID=56559443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015014537A Active JP6482296B2 (ja) 2015-01-28 2015-01-28 パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6482296B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018220702A1 (ja) * 2017-05-30 2018-12-06 三菱電機株式会社 管理装置、管理方法及び管理プログラム
US11882061B2 (en) * 2019-06-24 2024-01-23 Nippon Telegraph And Telephone Corporation Data sequence correction method, packet monitoring device, data sequence correction device, and data sequence correction program
JP7197026B2 (ja) 2019-12-11 2022-12-27 日本電信電話株式会社 データ順序補正方法、パケット監視装置、データ順序補正装置、及びデータ順序補正プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3584885B2 (ja) * 2001-01-29 2004-11-04 日本電気株式会社 パケット伝送装置および伝送方法
JP4648290B2 (ja) * 2006-11-21 2011-03-09 日本電信電話株式会社 パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム
JP5892952B2 (ja) * 2013-01-04 2016-03-23 富士通株式会社 番号順配送方法、通信システム、移動局及び基地局

Also Published As

Publication number Publication date
JP2016139978A (ja) 2016-08-04

Similar Documents

Publication Publication Date Title
US8713220B2 (en) Multi-bank queuing architecture for higher bandwidth on-chip memory buffer
US11082366B2 (en) Method and apparatus for using multiple linked memory lists
JP3489573B2 (ja) パケット処理装置
US7336675B2 (en) Optimized back-to-back enqueue/dequeue via physical queue parallelism
JP2007208963A (ja) パケット処理装置及びパケット処理方法
US7555579B2 (en) Implementing FIFOs in shared memory using linked lists and interleaved linked lists
US7546399B2 (en) Store and forward device utilizing cache to store status information for active queues
US7039770B1 (en) Low latency request dispatcher
JP2008512950A (ja) パケットのキューイング、スケジューリングおよび順序づけ
WO2012055319A1 (zh) 调度tcam查询和刷新消息的方法和装置
US20040049613A1 (en) Balanced linked lists for high performance data buffers in a network device
EP2919426B1 (en) Concurrent hashes and sub-hashes on data streams
JP6482296B2 (ja) パケット処理システム、通信システム、パケット処理装置、パケット処理方法、及びプログラム
US8189578B2 (en) Simple fairness protocols for daisy chain interconnects
US20170063733A1 (en) Systems and methods for performing packet reorder processing
US20070156928A1 (en) Token passing scheme for multithreaded multiprocessor system
US7327759B2 (en) Sequence-preserving deep-packet processing in a multiprocessor system
JP5071178B2 (ja) パケット伝送装置
US7756131B2 (en) Packet forwarding system capable of transferring packets fast through interfaces by reading out information beforehand for packet forwarding and method thereof
US7006513B1 (en) Method and system for pipelining packet selection
US7603539B2 (en) Systems and methods for multi-frame control blocks
JP5359357B2 (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム
CN112385186A (zh) 用于对数据包进行排序的设备和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180918

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20181009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190109

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20190117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190212

R150 Certificate of patent or registration of utility model

Ref document number: 6482296

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250