JP2016139978A - Packet processing system, communication system, packet processor, packet processing method, and program - Google Patents

Packet processing system, communication system, packet processor, packet processing method, and program Download PDF

Info

Publication number
JP2016139978A
JP2016139978A JP2015014537A JP2015014537A JP2016139978A JP 2016139978 A JP2016139978 A JP 2016139978A JP 2015014537 A JP2015014537 A JP 2015014537A JP 2015014537 A JP2015014537 A JP 2015014537A JP 2016139978 A JP2016139978 A JP 2016139978A
Authority
JP
Japan
Prior art keywords
packet
processing
packets
buffer
order
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
JP2015014537A
Other languages
Japanese (ja)
Other versions
JP6482296B2 (en
Inventor
智史 境
Satoshi Sakai
智史 境
ウェイ ジィァン
Wei Jiang
ウェイ ジィァン
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/en
Publication of JP2016139978A publication Critical patent/JP2016139978A/en
Application granted granted Critical
Publication of JP6482296B2 publication Critical patent/JP6482296B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

PROBLEM TO BE SOLVED: To perform the processing for outputting the packets subjected to parallel processing while establishing a sequence, efficiently, in a system performing the processing for the packets in parallelization.SOLUTION: A packet processing system for processing packets in parallel includes numbering means numbering the inputted packets for indicating the order thereof, processing means for executing parallel processing of the packets numbered by the numbering means, and control means for outputting the packets processed by the processing means in the order of the number given by the numbering means. The control means includes a buffer for temporarily storing the packets, that are made to standby the output order, out of the packets outputted from the processing means.SELECTED DRAWING: Figure 1

Description

本発明は、順次入力されるパケットを並列に処理し、処理したパケットを順番に出力するための技術に関連するものである。   The present invention relates to a technique for processing sequentially input packets in parallel and sequentially outputting the processed packets.

現在、インターネット上で仮想的なプライベートネットワークを実現するVPN(Virtual Private Network)が普及してきている。VPN通信を実現する通信装置では、パケットを暗号化してカプセリングする等の処理を実行するが、VPN通信の高速化のためには当該通信装置における暗号化/復号化等の処理性能を向上させることが必要である。   Currently, a VPN (Virtual Private Network) that realizes a virtual private network on the Internet has become widespread. A communication device that implements VPN communication executes processing such as packet encryption and encapsulation, but in order to increase the speed of VPN communication, the processing performance such as encryption / decryption in the communication device should be improved. is necessary.

処理性能を向上させる有効なアプローチとして、暗号化/復号化等の処理を例えば複数のCPUを用いて並列化する技術がある。なお、本願に関連する先行技術文献として特許文献1がある。   As an effective approach for improving the processing performance, there is a technique for parallelizing processes such as encryption / decryption using, for example, a plurality of CPUs. In addition, there exists patent document 1 as a prior art document relevant to this application.

特許4648290Patent 4648290

しかし、上記通信装置で動作するVPNソフトウェアのような通信プログラムにおいて、パケットを扱う処理を単純に並列化してしまうと、送出パケットの順序逆転が生じてしまい、ユーザ通信に影響を与えてしまう。   However, in a communication program such as VPN software that operates on the communication device, if processing for handling packets is simply performed in parallel, the order of outgoing packets is reversed, which affects user communication.

そこで、並列処理後のパケットを一時的にバッファに格納し、順序を整えて(並び替えて)送出することが考えられるが、全てのパケットに対し並び替えを実施して送出するような単純な方式では、バッファ処理がボトルネックになってしまい、並列処理の性能向上率を低下させてしまう。   Therefore, it is conceivable to temporarily store the packets after parallel processing in a buffer and send them out of order (reordered), but it is as simple as sorting and sending all packets. In this method, buffer processing becomes a bottleneck, and the performance improvement rate of parallel processing is reduced.

本発明は上記の点に鑑みてなされたものであり、パケットに対する処理を並列化して実施するシステムにおいて、並列処理後のパケットの順序を整えて出力する処理を効率的に行うことを可能とする技術を提供することを目的とする。   The present invention has been made in view of the above points, and in a system in which processing for packets is performed in parallel, processing for arranging and outputting packets after parallel processing can be efficiently performed. The purpose is to provide technology.

本発明の実施の形態によれば、パケットを並列に処理するパケット処理システムであって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理システムが提供される。
According to an embodiment of the present invention, a packet processing system for processing packets in parallel,
Numbering means for assigning a number indicating the order of the packets to the input packet;
Processing means for executing parallel processing on the packets numbered by the number assigning means;
Control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means,
The control means includes a buffer for temporarily storing a packet that waits for an output order among the packets output from the processing means. A packet processing system is provided.

また、本発明の実施の形態によれば、パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、
上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、
前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、
前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とする通信システムが提供される。
Moreover, according to the embodiment of the present invention, a communication system for transmitting packets in parallel through a plurality of paths on a network,
A first packet transfer device that assigns a number indicating a packet order to a packet received from upstream, and sends the numbered packet to a plurality of paths;
A second packet transfer device that receives the packets from the plurality of paths and sends the packets downstream in the order of the numbers assigned by the first packet transfer device;
The second packet transfer apparatus includes a buffer for temporarily storing a packet that waits for a downstream transmission order among packets received from the plurality of paths. Is done.

また、本発明の実施の形態によれば、パケットを並列に処理するパケット処理システムにより実行されるパケット処理方法であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与ステップと、
前記番号付与ステップにより番号が付与されたパケットに対して並列処理を実行する処理ステップと、
前記処理ステップによる処理後のパケットを、前記番号付与ステップで付与された番号順に出力する制御ステップと、を備え、
前記制御ステップにおいて、前記処理後のパケットのうち、出力の順番を待たせるパケットを一時的にバッファに格納する
ことを特徴とするパケット処理方法が提供される。
Moreover, according to the embodiment of the present invention, a packet processing method executed by a packet processing system that processes packets in parallel,
A numbering step for assigning a number indicating the order of the packets to the input packet;
A processing step of performing parallel processing on the packets numbered by the numbering step;
A control step for outputting the packets after the processing by the processing step in the order of the numbers given in the numbering step;
In the control step, a packet processing method is provided in which, among the processed packets, packets that wait for the output order are temporarily stored in a buffer.

また、本発明の実施の形態によれば、パケットを並列に処理するパケット処理装置であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置が提供される。
Moreover, according to the embodiment of the present invention, a packet processing device that processes packets in parallel,
Numbering means for assigning a number indicating the order of the packets to the input packet;
Processing means for executing parallel processing on the packets numbered by the number assigning means;
Control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means,
The control unit includes a buffer for temporarily storing a packet that waits for an output order among the packets output from the processing unit. A packet processing device is provided.

また、本発明の実施の形態によれば、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置が提供される。
Further, according to the embodiment of the present invention, the number assigning unit that assigns a number indicating the order of the packets to the input packet, and the parallel processing is executed on the packet that is given the number by the number assigning unit. A packet processing apparatus that inputs a packet output from a processing system having processing means and executes processing of the packet,
A control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means;
The control unit includes a buffer for temporarily storing a packet that waits for an output order among the packets output from the processing unit. A packet processing device is provided.

本発明の実施の形態によれば、パケットに対する処理を並列化して実施するシステムにおいて、並列処理後のパケットの順序を整えて出力する処理を効率的に行うことを可能とする技術が提供される。   According to the embodiment of the present invention, in a system that performs processing on packets in parallel, a technique is provided that enables efficient processing of arranging and outputting packets after parallel processing. .

本発明の実施の形態に係るパケット処理システムの構成図である。It is a block diagram of the packet processing system which concerns on embodiment of this invention. パケット処理システムの他の構成例を示す図である。It is a figure which shows the other structural example of a packet processing system. バッファの例を説明するための図である。It is a figure for demonstrating the example of a buffer. バッファ制御部の動作を示すフローチャートである。It is a flowchart which shows operation | movement of a buffer control part. 到着待ちパケットが来た際のバッファ送出の例を説明するための図である。It is a figure for demonstrating the example of buffer transmission when the arrival waiting packet comes. バッファ格納の例を説明するための図である。It is a figure for demonstrating the example of buffer storage. パケット破棄の例を説明するための図である。It is a figure for demonstrating the example of packet discard. タイムアウト処理の例を説明するための図である。It is a figure for demonstrating the example of a timeout process.

以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。   Embodiments of the present invention will be described below with reference to the drawings. The embodiment described below is only an example, and the embodiment to which the present invention is applied is not limited to the following embodiment.

以下で説明する「パケット」は、まとまったデータを意味し、IPパケットやイーサパケット等の特定の種類のパケットに限定されない。「パケット」を「データ」と言い換えてもよい。   The “packet” described below means a group of data, and is not limited to a specific type of packet such as an IP packet or an Ethernet packet. “Packet” may be rephrased as “data”.

(システム構成)
図1に、本発明の実施の形態に係るパケット処理システム100の構成図を示す。本実施の形態において、パケット処理システム100は、VPN通信を実現するための通信装置であることを想定しているが、これは一例に過ぎない。本発明は、このような通信装置に限られず、種々のパケット(データ)処理を行う技術に適用可能である。
(System configuration)
FIG. 1 shows a configuration diagram of a packet processing system 100 according to an embodiment of the present invention. In the present embodiment, it is assumed that the packet processing system 100 is a communication device for realizing VPN communication, but this is only an example. The present invention is not limited to such a communication apparatus, and can be applied to a technique for performing various packet (data) processing.

本実施の形態のパケット処理システム100は、VPN通信を実現するために、パケットをネットワークとの間で送信/受信する機能(IF機能)、カプセリング/デカプセリングを行う機能等も備えるが、このような機能はVPN通信のための一般的な機能であるため、図1には、このような一般的な機能は示されておらず、本発明に特に関連する機能のみが示されている。   The packet processing system 100 according to the present embodiment includes a function of transmitting / receiving packets to / from the network (IF function), a function of performing encapsulation / decapsulation, and the like in order to realize VPN communication. Since such a function is a general function for VPN communication, such a general function is not shown in FIG. 1, and only a function particularly relevant to the present invention is shown.

図1に示すように、パケット処理システム100は、番号付与部101、キュー102、パケット処理部103、キュー104、バッファ制御部105を含む。番号付与部101は、外部(例:ユーザ端末側ネットワーク)から受信したパケットに、受信した順番で番号を付与する。キュー102は、パケットを一時的に格納するFIFOメモリである。キュー102には番号付与部101により番号付けされたパケットが順次格納され、格納された順番で、パケット処理部103から順次読み出される(刈り取ると表現してもよい)。   As shown in FIG. 1, the packet processing system 100 includes a number assigning unit 101, a queue 102, a packet processing unit 103, a queue 104, and a buffer control unit 105. The number assigning unit 101 assigns numbers to the packets received from the outside (for example, the user terminal side network) in the order received. The queue 102 is a FIFO memory that temporarily stores packets. The packets numbered by the number assigning unit 101 are sequentially stored in the queue 102, and sequentially read from the packet processing unit 103 in the order in which they are stored (may be expressed as pruning).

パケット処理部103は複数個存在し、パケットに対する処理を並列に実行する。パケットに対する処理は、例えば、パケットの暗号化又は復号化である。   There are a plurality of packet processing units 103, which execute processing on packets in parallel. The processing for the packet is, for example, encryption or decryption of the packet.

キュー104もパケットを一時的に格納するFIFOメモリである。個々のパケット処理部103は、処理を終えたパケットを順次キュー104に格納する。キュー104に格納されたパケットは、格納された順番で、バッファ制御部105から順次読み出される。   The queue 104 is also a FIFO memory that temporarily stores packets. Each packet processing unit 103 sequentially stores the processed packets in the queue 104. Packets stored in the queue 104 are sequentially read from the buffer control unit 105 in the order of storage.

バッファ制御部105は、キュー104から読み出したパケットを格納する所定長のバッファ(メモリ)を備え、所定の処理手順で当該バッファからのパケット読み出し・送出を行うことで、パケットの順序を保持したまま高速な送出処理を可能とする機能部である。バッファ制御部105の処理動作については後に詳しく説明する。   The buffer control unit 105 includes a buffer (memory) having a predetermined length for storing a packet read from the queue 104, and reads and transmits the packet from the buffer according to a predetermined processing procedure, thereby maintaining the packet order. This is a functional unit that enables high-speed transmission processing. The processing operation of the buffer control unit 105 will be described in detail later.

パケット処理システム100は、1つのCPUを有するコンピュータにおいて、各機能部に相当するプログラムを実行することにより実現することもできるし、物理的に複数のコンピュータを使用して実現することもできる。複数のコンピュータで実現する場合において、例えば、番号付与部101とキュー102を1つのコンピュータで構成し、各パケット処理部103を1つのコンピュータで構成し、キュー104とバッファ制御部105を1つのコンピュータで実現することができる。   The packet processing system 100 can be realized by executing a program corresponding to each functional unit in a computer having one CPU, or can be realized by physically using a plurality of computers. When implemented by a plurality of computers, for example, the number assigning unit 101 and the queue 102 are configured by one computer, each packet processing unit 103 is configured by one computer, and the queue 104 and the buffer control unit 105 are configured by one computer. Can be realized.

また、パケット処理システム100を、複数のCPUを搭載した1つの装置として構成し、例えば、番号付与部101、それぞれのパケット処理部103、及びバッファ制御部105に1つずつCPUを割り当てて、各CPUにおいて、処理内容に対応するプログラムを実行させることでパケット処理システム100を実現することもできる。   Further, the packet processing system 100 is configured as a single device equipped with a plurality of CPUs. For example, one CPU is assigned to each of the number assigning unit 101, each packet processing unit 103, and the buffer control unit 105, and The packet processing system 100 can also be realized by executing a program corresponding to the processing content in the CPU.

本実施の形態に係るバッファ制御技術は、図2に示すようなネットワークシステムに適用することも可能である。   The buffer control technique according to the present embodiment can also be applied to a network system as shown in FIG.

図2に示すシステムは、例えば、中継を行うネットワーク200のエッジ装置としてパケット転送装置201とパケット転送装置202が備えられた構成を持つ。便宜上、パケット転送装置201からパケット転送装置202への方向のパケット転送を考える。パケット転送装置201は、図1に示したパケット処理システムの番号付与部101に相当し、上流(送信側)から送信されたパケットを受信し、受信した順番でパケットに番号を付与し、番号が付与されたパケットを複数の経路でネットワーク200に送出する。例えば、パケット1は経路1で送信し、パケット2は経路2で送信する、といったように、並列に送信することでパケット転送の高速化を図っている。   The system shown in FIG. 2 has a configuration in which, for example, a packet transfer device 201 and a packet transfer device 202 are provided as edge devices of a network 200 that performs relay. For convenience, consider packet transfer in the direction from the packet transfer apparatus 201 to the packet transfer apparatus 202. The packet transfer apparatus 201 corresponds to the number assigning unit 101 of the packet processing system shown in FIG. 1, receives packets transmitted from the upstream (transmission side), assigns numbers to the packets in the order received, The assigned packet is transmitted to the network 200 through a plurality of routes. For example, packet 1 is transmitted via path 1 and packet 2 is transmitted via path 2, so that packet transfer is speeded up by transmitting in parallel.

パケット転送装置202は、図1に示したパケット処理システムのキュー104とバッファ制御部105に相当する機能を含み、ネットワーク200から受信したパケットを受信順にキューに格納するとともに、バッファ制御部105と同様のバッファリング処理を実施して、パケットの番号順(=上流から受信した順)に下流(受信側)にパケットを送出する。このような処理により、パケットの順番を保持したまま、並列伝送による高速伝送が可能になる。   The packet transfer apparatus 202 includes functions corresponding to the queue 104 and the buffer control unit 105 of the packet processing system shown in FIG. 1, stores packets received from the network 200 in the queue in the order received, and is similar to the buffer control unit 105. And the packet is sent downstream (reception side) in the order of the packet number (= the order received from the upstream). Such processing enables high-speed transmission by parallel transmission while maintaining the packet order.

パケット転送装置202は、CPUを備えるコンピュータ(通信装置)において、キュー104及びバッファ制御部105の処理内容に相当するプログラムを実行させることにより実現可能である。また、パケット転送装置202は、パケット送出側の機能として、番号付与部101の機能を更に備えてもよい。以下、パケット制御部105が実施する処理の内容をより詳細に説明する。   The packet transfer apparatus 202 can be realized by causing a computer (communication apparatus) including a CPU to execute a program corresponding to the processing contents of the queue 104 and the buffer control unit 105. The packet transfer apparatus 202 may further include the function of the number assigning unit 101 as a function on the packet transmission side. Hereinafter, the contents of the process performed by the packet control unit 105 will be described in more detail.

(パケット制御部105の処理の詳細)
図3に、パケット制御部105が備えるバッファの例を示す。当該バッファは、バッファ要素数として予め定めた長さを持つメモリ領域である。本実施の形態において、パケットには、パケット到着順に順番に番号が付与されるが、番号には予め上限が設定されており、その上限値をナンバリング最大値と呼ぶ。ナンバリング最大値が付されたパケットの次のパケットには最初の番号(本実施の形態では1)が付されることになる。
(Details of processing of packet control unit 105)
FIG. 3 shows an example of a buffer provided in the packet control unit 105. The buffer is a memory area having a predetermined length as the number of buffer elements. In the present embodiment, packets are numbered in order of packet arrival, but an upper limit is set in advance for the number, and the upper limit is referred to as a numbering maximum value. The first number (1 in this embodiment) is assigned to the packet next to the packet with the maximum numbering value.

パケット制御部105の処理を実行するプログラムにおいて、当該バッファのデータ構造は配列として表され、バッファ要素数が配列要素数となる。また、パケットの番号を配列要素数で割った余りをインデックスとする配列位置に当該パケットが格納される。このように、番号を配列の要素数で割った際の剰余をインデックスとして格納処理を行うことで、準備する配列の要素数を限定することができ、確保するメモリを削減することができる。   In the program that executes the processing of the packet control unit 105, the data structure of the buffer is represented as an array, and the number of buffer elements is the number of array elements. In addition, the packet is stored in an array position with a remainder obtained by dividing the packet number by the number of array elements as an index. In this way, by performing the storing process using the remainder when the number is divided by the number of elements in the array as an index, the number of elements in the array to be prepared can be limited, and the memory to be secured can be reduced.

本実施の形態では、バッファリング処理における配列のインデックスとして、WaitポインタとMaxポインタが使用される。Waitポインタは、現在の待ちパケットの番号を配列要素数で割った余りである。Maxポインタは、バッファ格納済みパケットの最大番号を配列要素数で割った余りである。   In this embodiment, a Wait pointer and a Max pointer are used as an array index in the buffering process. The Wait pointer is a remainder obtained by dividing the current waiting packet number by the number of array elements. The Max pointer is a remainder obtained by dividing the maximum number of packets stored in the buffer by the number of array elements.

図3に示す例では、バッファ要素数が10と設定され、ナンバリング最大値が100と設定されている。また、図3に示す時点でのバッファは、65番のパケットの到着待ち、かつ68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態の時点で、73が最大であるから、73÷10の余り3がMaxポインタ("M"と表記)になる。また、65番のパケットを待っているから、65÷10の余り5がWaitポインタ("W"と表記)になる。   In the example shown in FIG. 3, the number of buffer elements is set to 10, and the maximum numbering value is set to 100. Also, the buffer at the time shown in FIG. 3 is waiting for the arrival of the 65th packet, and the 68th, 69th, 70th, 72th and 73rd packets are already stored in the buffer. Since 73 is the maximum at this time, the remainder 3 of 73 ÷ 10 becomes the Max pointer (denoted as “M”). Since the 65th packet is awaited, the remainder 5 of 65 ÷ 10 becomes the Wait pointer (indicated as “W”).

(バッファリング処理内容)
図4は、バッファ制御部105が実行するバッファリング処理に係る手順を示すフローチャートである。図4において、S1、S2等の符号は、各処理を参照するための参照符号である。また、waitは、現在到着を待っている(具体的にはキュー104に格納されることを待っている)パケットの番号(Waitポインタでなくて実際の番号)である。maxは、バッファに格納されているパケットの最大番号(Maxポインタでなくて実際の番号)である。numは、キュー104から読み出した(刈り取った)パケットの番号である。timeは、最近のバッファ送出処理を行った時点の時刻であり、nowは現在時刻である。LENは、配列要素数(例:10)である。NUM_MAXはナンバリング最大値(例:100)である。
(Buffering processing contents)
FIG. 4 is a flowchart illustrating a procedure related to buffering processing executed by the buffer control unit 105. In FIG. 4, symbols such as S <b> 1 and S <b> 2 are reference symbols for referring to each process. Wait is the number of a packet that is currently waiting for arrival (specifically, waiting for being stored in the queue 104) (not a wait pointer but an actual number). max is the maximum number of packets stored in the buffer (actual number, not Max pointer). num is the number of the packet read (cut) from the queue 104. “time” is the time when the latest buffer transmission processing is performed, and “now” is the current time. LEN is the number of array elements (for example, 10). NUM_MAX is a numbering maximum value (example: 100).

以下では、バッファ制御部105が実行する処理について、バッファ送出処理、バッファ格納処理、パケット破棄処理、タイムアウト処理に分けて、それぞれを具体例とフローチャートを用いて説明する。   In the following, the processing executed by the buffer control unit 105 is divided into buffer transmission processing, buffer storage processing, packet discard processing, and timeout processing, and each will be described using a specific example and a flowchart.

<到着待ちパケットが来た際のパケット送出処理>
まず、バッファからパケットを読み出して送出する際の処理を図5を参照して説明する。図5(a)は、到着待ちパケットが来た際のパケット送出の例1を示している。
<Packet transmission processing when an incoming packet arrives>
First, processing when a packet is read from the buffer and transmitted will be described with reference to FIG. FIG. 5A shows Example 1 of packet transmission when an arrival waiting packet arrives.

例1では、パケット到着の直前の時点で、65番のパケットの到着を待ち、かつ68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態で、65番のパケットが来た場合(キュー104から刈り取った場合)、そのパケットを送出する。65番の次である66番のパケットは未到着であるから、次に、66番のパケットの到着待ちとなる。よって、Wポインタをひとつずらす。   In Example 1, the arrival of the 65th packet is awaited immediately before the arrival of the packet, and the 68th, 69th, 70th, 72th, and 73rd packets are already stored in the buffer. In this state, when the 65th packet comes (when the packet is cut from the queue 104), the packet is transmitted. Since the 66th packet, which is the next to the 65th, has not arrived, the 66th packet is waited for arrival. Therefore, the W pointer is shifted by one.

図5(b)は、到着待ちパケットが来た際のパケット送出の例2を示している。例2では、パケット到着の直前の時点で、65番のパケットの到着を待ち、かつ66番、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態である。この状態で、65番のパケットが来た場合、当該パケットと、当該パケットと連続する格納済みパケット(66番)とを送出し、送出個数分Wポインタをずらす。   FIG. 5B shows a second example of packet transmission when an arrival waiting packet arrives. In Example 2, the arrival of the 65th packet is awaited immediately before the arrival of the packet, and the 66th, 68th, 69th, 70th, 72th, and 73rd packets are already stored in the buffer. In this state, when the 65th packet arrives, the packet and the stored packet (66th) continuous with the packet are transmitted, and the W pointer is shifted by the number of packets to be transmitted.

上記のパケット送出の例1、2は、図4のフローチャートにおけるS21のバッファ送出処理の例である。すなわち、図4のS9でキュー104からパケットを刈り取り、S10でwait(例:到着待ちの65)とnum(例:到着した65)を比較した結果、waitがnumと等しいので、S21のバッファ送出処理を実行し、S22においてtimeを現時点の時刻(パケットを送出した時刻)に更新する。上記の例2に例示したように、パケット送出処理において、到着パケットとともに、既に到着しているパケットのうち、到着パケットと連続する一連のパケットも全て送出する。   Examples 1 and 2 of the packet transmission described above are examples of the buffer transmission process of S21 in the flowchart of FIG. That is, the packet is pruned from the queue 104 at S9 in FIG. 4, and wait (eg: 65 waiting for arrival) is compared with num (eg: 65 arrived) at S10. As a result, wait is equal to num. The process is executed, and the time is updated to the current time (time when the packet was transmitted) in S22. As illustrated in Example 2 above, in the packet transmission process, all of a series of packets that are continuous with the arrival packet among the packets that have already arrived are transmitted together with the arrival packet.

<バッファ格納処理>
次に、バッファ格納処理について図6を参照して説明する。図6(a)は、バッファ格納処理の例1を示している。
<Buffer storage processing>
Next, the buffer storage process will be described with reference to FIG. FIG. 6A shows Example 1 of the buffer storage process.

例1では、65番のパケットの到着待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも大きな66番のパケットが来た場合に、そのパケットをバッファ(配列)に格納する。Mポインタ及びWポインタに変更はない。   In Example 1, when the 65th packet is waiting to arrive and the 68th, 69th, 70th, 72th, and 73rd packets are already stored in the buffer, the 66th packet larger than the 65th packet When is received, the packet is stored in a buffer (array). There is no change in the M pointer and W pointer.

図6(b)は、バッファ格納処理の例2を示している。例2では、65番のパケットの到着待ち、かつ66番、67番、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、77番のパケットが来たとする。この場合、77よりも小さい番号の到着待ちパケットが未到着なので、77番のパケットを配列に格納する。   FIG. 6B shows a second example of buffer storage processing. In Example 2, when the 65th packet is waiting to arrive and the 66th, 67th, 68th, 69th, 70th, 72th, and 73th packets are already stored in the buffer, the 77th packet Suppose that In this case, since an arrival waiting packet with a number smaller than 77 has not arrived, the 77th packet is stored in the array.

ただし、ナンバリング最大値よりも小さな配列要素数の配列において、77番のパケットを格納するために、(77−10(配列要素数))以下のパケットを送出する。ただし、65番は未格納なので、65番は破棄扱いとし、66番と67番を送出する。さらに連続する68番、69番、70番を送出し、Wポインタを71にずらす。また77番が待ちパケットの中で最大となるため、Mポインタも77にずらす。   However, in order to store the 77th packet in the array element number smaller than the maximum numbering value, packets of (77-10 (number of array elements)) or less are transmitted. However, since No. 65 is not stored, No. 65 is treated as being discarded, and Nos. 66 and 67 are transmitted. Further, the 68th, 69th and 70th consecutive numbers are sent, and the W pointer is shifted to 71. Since No. 77 is the largest in the waiting packets, the M pointer is also shifted to 77.

上記のパケット格納の例1、2は、図4のフローチャートにおけるS23のバッファ追加処理、S25及びS26のバッファ送出処理の例である。   Examples 1 and 2 of the packet storage described above are examples of the buffer addition process of S23 and the buffer transmission processes of S25 and S26 in the flowchart of FIG.

すなわち、図4のS9の判定の結果、wait<num<wait+LEN(例:65<66<65+10)である場合に、S23においてnum(例:66)番のパケットをバッファに追加し、S24でmaxを更新する。つまり、パケット制御部105は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットをキュー104から取得した場合に、当該パケットをバッファに格納する。   That is, if the result of determination in S9 of FIG. 4 is wait <num <wait + LEN (example: 65 <66 <65 + 10), the packet of num (example: 66) is added to the buffer in S23, and max is determined in S24. Update. That is, when the packet control unit 105 obtains from the queue 104 a packet that should be output after the arrival waiting packet within a predetermined number of packets, the packet control unit 105 stores the packet in the buffer.

また、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)に格納されているパケットを出力する。   Further, when wait + LEN <= num <wait + LEN × 2 (example: 65 + 10 <= 77 <65 + 10 × 2), packets up to num-LEN (example: 77-10) in S25 and S26 (example: No. 66, No. 67 packet) and subsequent packets (eg, No. 68, No. 69, No. 70 packet) are transmitted, time is updated in S27, and max is updated in S24. That is, when the buffer control unit 105 acquires a packet (77) that is more than the number of elements after the arrival waiting packet (65), the buffer control unit 105 stores the packet in the buffer and the element that stores the packet. The packet stored in the index (6, 7) below the index (7) and the packet stored in the index (8, 9, 0) continuous thereto are output.

上記の例はwait<numである場合の例であるが、num<waitである場合にも、S14、S17、S18において同様のパケット追加、送出処理が行われる。これは、実質的に上記の例と同じであるが、到着パケットのナンバリングが最大値を過ぎて、最初に戻り、小さな値になっているような場合に相当する。   The above example is an example in which wait <num. However, in the case of num <wait, similar packet addition and transmission processing is performed in S14, S17, and S18. This is substantially the same as the above example, but corresponds to the case where the numbering of the arrival packet has passed the maximum value, returned to the beginning, and has become a small value.

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を更新する。   If the result of the determination in S11 is num <wait−NUM_MAX + LEN × 2 (example: 1 <100−100 + 10 × 2), NUM_MAX is added to num in S12 (example: num = 1 + 100). As a result of the determination in S13, if wait <num <wait + LEN (eg, 100 <101 <100 + 10), the packet is added to the buffer in S14, and max is updated in S15 and S16.

また、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を更新する。   When wait + LEN <= num <wait + LEN × 2 (example: 100 + 10 <= 112 <100 + 10 × 2), packets up to num-NUM_MUX-LEN (example: 112-100-10) are transmitted in S17 and S18. Then, time is updated in S19, and max is updated in S15 and S16.

<バッファ破棄処理>
次に、バッファ破棄処理について図7を参照して説明する。図7(a)は、バッファ破棄処理の例1を示している。
<Buffer discard process>
Next, the buffer discarding process will be described with reference to FIG. FIG. 7A shows Example 1 of the buffer discard process.

例1では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも少し小さい63番のパケットが来た場合に、そのパケットを破棄する。MポインタとWポインタに変更はない。   In Example 1, when the 65th packet is awaited and the 68th, 69th, 70th, 72th, and 73rd packets are already stored in the buffer, the 63rd is slightly smaller than the 65th. If a packet arrives, discard that packet. There is no change in the M pointer and W pointer.

図7(b)は、バッファ破棄処理の例2を示している。例2では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態であるときに、65番よりも20以上大きな85番のパケットが来た場合には、そのパケットを破棄する。   FIG. 7B shows an example 2 of the buffer discard process. In example 2, when waiting for the arrival of the 65th packet and the 68th, 69th, 70th, 72nd, and 73th packets are already stored in the buffer, 85 is larger than the 65th by 85 or more. When the packet numbered comes, the packet is discarded.

上記のパケット破棄の例1、2は、図4のフローチャートにおけるS20、S28のバッファ破棄処理(drop)の例である。   Examples 1 and 2 of the packet discard described above are examples of the buffer discard process (drop) of S20 and S28 in the flowchart of FIG.

すなわち、図4のS10、S11の判定の結果、num>=wait−NUM_MUX+LEN×2(例:63>=65−100+10×2)となる場合、S20で、当該num番号のパケットを破棄する。   That is, if num> = wait−NUM_MUX + LEN × 2 (eg 63> = 65−100 + 10 × 2) as a result of the determination in S10 and S11 of FIG. 4, the packet with the num number is discarded in S20.

また、S10の判定の結果、wait+LEN×2<=num(例:65+10×2<=85)となる場合、S28で、当該num番号のパケットを破棄する。   If the result of determination in S10 is wait + LEN × 2 <= num (eg, 65 + 10 × 2 <= 85), the packet with the num number is discarded in S28.

これまでに説明したバッファ格納と破棄の手順をまとめると以下のようになる。   The buffer storage and discarding procedures described so far are summarized as follows.

到着待ちのパケットよりも番号が大きなパケットが来た場合は番号を確認し、到着待ちのパケットの番号と配列の要素数を足した合計値(A)と比較を行う。合計値(A)よりも小さい場合は番号を要素数で割った剰余をインデックスとして格納処理を行う。合計値(A)よりも大きい場合は、さらに、合計値に要素数を足した合計値(B)と比較する。合計値(B)よりも大きい場合は、パケット破棄を行う。合計値(B)よりも小さい場合は、到着待ちパケットのインデックスから到着したパケットまでのインデックスの間に格納されているパケット全てと到着したパケットのインデックスを超えて連続して格納されているパケットがある場合は、格納されていないインデックスのひとつ手前までのパケット全てを送出し、到着パケットを格納し、最後に送出したパケットの番号+1の番号を到着待ちとする。   When a packet with a number larger than the packet waiting for arrival arrives, the number is confirmed and compared with the total value (A) obtained by adding the number of packets waiting for arrival and the number of elements in the array. When it is smaller than the total value (A), the storage processing is performed using the remainder obtained by dividing the number by the number of elements as an index. If it is larger than the total value (A), it is further compared with the total value (B) obtained by adding the number of elements to the total value. If it is larger than the total value (B), the packet is discarded. When it is smaller than the total value (B), all the packets stored between the index of the waiting packet to the arrived packet and the packets continuously stored beyond the index of the arrived packet are stored. In some cases, all packets up to one before the unstored index are transmitted, the arrival packet is stored, and the number of the last transmitted packet number + 1 is set as an arrival wait.

また、到着待ちパケットよりも番号の小さなパケットが来た場合は、まず到着待ちパケット番号からナンバリング最大値を引いて要素数の2倍を足した値(C)と比較を行う。値(C)よりも大きい場合は破棄し、小さい場合は更に、到着したパケットの番号にナンバリング最大値を足した値(D)と到着待ちパケットの番号に配列の要素数を足した値(E)を比較し、(D)の値が(E)の値よりも小さければバッファに格納し、大きければ、到着パケット番号から要素数を引いたインデックスの間に格納されているパケット全てと到着したパケットのインデックスを超えて連続して格納されているパケットがある場合は、格納されていないインデックスのひとつ手前までのパケットを全て送出し、到着パケットを格納し、最後に送出したパケットの番号+1の番号を到着待ちとする。   When a packet having a number smaller than the arrival waiting packet arrives, first, the maximum numbering value is subtracted from the arrival waiting packet number and compared with a value (C) obtained by adding twice the number of elements. If it is larger than the value (C), it is discarded, and if it is smaller, a value (D) obtained by adding the numbering maximum value to the number of the arrived packet and a value obtained by adding the number of elements of the array to the number of the waiting packet (E ), And if the value of (D) is smaller than the value of (E), it is stored in the buffer, and if it is larger, all packets stored between the indexes obtained by subtracting the number of elements from the arrival packet number have arrived. If there are packets stored continuously beyond the packet index, send all packets up to one before the unstored index, store the incoming packets, and add the last packet number + 1 The number is waiting for arrival.

<タイムアウト処理>
次に、タイムアウト処理の例について図8を参照して説明する。図8に示す例では、65番のパケットの到着を待ち、かつ、68番、69番、70番、72番、73番のパケットがバッファ格納済みの状態で、一定時間経過しても65番パケットが到達しない場合に、タイムアウトが生じたと判定し、タイムアウト処理として、65番、66番、67番のパケットを破棄扱いとし、68番、69番、70番のパケットを送出する。この際、到着待ちパケットが変わるため、待ちポインタを71にずらす。
<Timeout processing>
Next, an example of timeout processing will be described with reference to FIG. In the example shown in FIG. 8, the 65th packet is awaited, and the 68th, 69th, 70th, 72th, and 73th packets are already stored in the buffer, and the 65th packet is received even after a certain period of time. If the packet does not arrive, it is determined that a timeout has occurred, and as a timeout process, the 65th, 66th, and 67th packets are treated as being discarded, and the 68th, 69th, and 70th packets are transmitted. At this time, since the waiting packet changes, the waiting pointer is shifted to 71.

すなわち、本実施の形態において、バッファ制御部105は、バッファリング処理で待ちパケットが一定時間到着しない場合には、タイムアウト処理を実施する。高負荷時には処理の前後のキューがあふれてバーストロスを起こす可能性がある。バーストロス時にタイムアウト処理をパケット単位で実施してしまうと、複数回のタイムアウト処理が一度に行われることになり、パケットの送出が長時間停止してしまう。そこで、一度タイムアウトが生じた際には、バッファにたまっているパケットの先頭までスキップしてそこからパケット送出を行うようにしている。上記の例では、68番のパケットが、バッファにたまっているパケットの先頭に該当するため、当該68番のパケット、及び、これと連続する69番、70番のパケットをタイムアウト処理時に送出している。   That is, in the present embodiment, the buffer control unit 105 performs a timeout process when a waiting packet does not arrive for a certain time in the buffering process. When the load is high, the queue before and after processing may overflow and burst loss may occur. If timeout processing is performed in units of packets at the time of burst loss, multiple timeout processing is performed at once, and packet transmission is stopped for a long time. Therefore, once a timeout occurs, the packet is transmitted from there by skipping to the beginning of the packet accumulated in the buffer. In the above example, since the 68th packet corresponds to the head of the packet accumulated in the buffer, the 68th packet and the continuous 69th and 70th packets are transmitted at the time of timeout processing. Yes.

また、本実施の形態では、バッファにパケットが積まれていない場合に、タイムアウト処理を行ってしまうと、一定時間を置いて到着したパケットを破棄してしまうため、タイムアウト処理を実施しないこととしている。   Also, in this embodiment, if a time-out process is performed when no packets are stacked in the buffer, the time-out process is not performed because a packet that arrives after a certain period of time is discarded. .

上記のタイムアウト処理の例は、図4のフローチャートにおけるS6のタイムアウト処理の例である。   The example of the timeout process is an example of the timeout process of S6 in the flowchart of FIG.

すなわち、図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〜)。   That is, the result of determination in S2 of FIG. 4 is wait <max (for example, 65 <73), and in S4, when “0 <= wait <LEN && NUM_MAX−LEN <max <= NUM_MAX” is not satisfied, time is determined in S5. A comparison is made between (previous packet transmission time) and now (current time), and when the waiting time has passed, a time-out process is performed in S6, and time is updated in S7. If the waiting time has not passed and the packet remains in the queue 104 in S5, the packet is pruned from the queue 104 and the process is performed (S8, S9-).

S4で、「0<=wait<LEN&&NUM_MAX−LEN<max<=NUM_MAX」が成立する場合には、タイムアウト処理を行うことなくS8に進む。   If “0 <= wait <LEN && NUM_MAX−LEN <max <= NUM_MAX” is satisfied in S4, the process proceeds to S8 without performing a timeout process.

図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〜)。   As a result of the determination in S2 of FIG. 4, wait> max is satisfied. In S3, when “0 <= max <LEN && NUM_MAX−LEN <wait <= NUM_MAX” is satisfied, time (previous time, packet transmission time) in S5 Now (current time) is compared, and when the waiting time has passed, a time-out process is performed in S6, and time is updated in S7. If the waiting time has not passed and the packet remains in the queue 104 in S5, the packet is pruned from the queue 104 and the process is performed (S8, S9-).

S3で、「0<=max<LEN&&NUM_MAX−LEN<wait<=NUM_MAX」が成立しない場合には、タイムアウト処理を行うことなくS8に進む。   If “0 <= max <LEN && NUM_MAX−LEN <wait <= NUM_MAX” is not established in S3, the process proceeds to S8 without performing timeout processing.

なお、図4のS3でFalseとなる場合、及び、S4でTrueとなる場合が、前述したように、バッファにパケットが積まれていない場合に該当し、タイムアウト処理を行わない。   Note that the case of “False” in S3 of FIG. 4 and the case of “True” in S4 correspond to the case where no packet is loaded in the buffer as described above, and the time-out process is not performed.

<並列化した処理に失敗した際のダミーパケット送出>
処理失敗時にパケットを破棄してしまうと、破棄されたパケットがバッファリング処理に至らず、タイムアウトが発生してしまう。本実施の形態では、それを防ぐため、処理失敗時にはダミーパケット(上記パケットの番号が付与される)をキュー104に入れることで、バッファリング処理を行い、そこで破棄するように動作させている。具体的には、例えば、上記の処理手順の中で、ダミーパケットの送出が行われる判断に至った場合に、当該ダミーパケットを送出せずに破棄する。
<Dummy packet transmission when parallelized processing fails>
If the packet is discarded when the processing fails, the discarded packet does not reach the buffering process and a timeout occurs. In this embodiment, in order to prevent this, a buffering process is performed by putting a dummy packet (which is given the packet number) into the queue 104 when the process fails, and an operation is performed to discard the packet. Specifically, for example, when it is determined in the above processing procedure that a dummy packet is transmitted, the dummy packet is discarded without being transmitted.

(実施の形態のまとめ、効果等)
以上、説明したように、本実施の形態では、パケットを並列に処理するパケット処理システムであって、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えることを特徴とするパケット処理システムが提供される。
(Summary of the embodiment, effects, etc.)
As described above, in this embodiment, the packet processing system processes packets in parallel, and includes a numbering unit that assigns a number indicating the order of packets to an input packet, and the numbering unit. Processing means for executing parallel processing on the numbered packets, and control means for outputting the packets processed by the processing means in the order of the numbers given by the number giving means, the control means Is provided with a buffer for temporarily storing a packet that waits for an output order among the packets output from the processing means.

前記制御手段は、前記処理手段から到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力することとしてもよい。   When the control unit acquires a packet waiting for arrival from the processing unit, the control unit outputs the packet, and among the packets stored in the buffer, a series of packets whose number is consecutive with the acquired packet. It is good also as outputting.

前記制御手段は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納することとしてもよい。   The control unit may store the packet in the buffer when a packet to be output after the arrival waiting packet is acquired from the processing unit within a predetermined number of packets.

前記制御手段における前記バッファのデータ構造として例えば配列を用いることができる。   For example, an array can be used as the data structure of the buffer in the control means.

前記配列の要素数は、例えば、パケットに付与される番号の最大値よりも小さく、前記制御手段は、パケットの番号を前記配列の要素数で割った剰余をインデックスとする要素に当該パケットを格納する。   The number of elements in the array is, for example, smaller than the maximum number assigned to the packet, and the control means stores the packet in an element whose index is a remainder obtained by dividing the packet number by the number of elements in the array. To do.

前記制御手段は、到着待ちパケットよりも前記要素数以上の数だけ後のパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納するとともに、当該パケットを格納する要素のインデックス以下のインデックスに格納されているパケット、及び当該格納されているパケットと番号が連続する一連のパケットを出力するようにしてもよい。   When the control means obtains a packet after the number of elements more than the number of elements waiting for arrival from the processing means, the control means stores the packet in the buffer and is equal to or less than the index of the element storing the packet. A packet stored in the index and a series of packets in which the stored packet and number are consecutive may be output.

前記制御手段は、パケットを出力した後に、次のパケットを出力できずにタイムアウトが生じた場合に、前記バッファに格納されているパケットの先頭までスキップし、当該先頭のパケット、及び当該先頭のパケットと番号が連続する一連のパケットを出力することとしてもよい。   The control means skips to the head of the packet stored in the buffer and outputs the head packet and the head packet when a timeout occurs because the next packet cannot be output after outputting the packet. A series of packets with consecutive numbers may be output.

前記制御手段は、前記処理手段におけるパケットの処理が失敗したときに、当該パケットと同じ番号を有するダミーパケットを使用することとしてもよい。   The control means may use a dummy packet having the same number as the packet when the processing of the packet in the processing means fails.

また、本実施の形態では、コンピュータを、上記パケット処理システムにおける前記パケット制御手段として機能させるためのプログラムを提供することもできる。   In the present embodiment, a program for causing a computer to function as the packet control means in the packet processing system can also be provided.

また、本実施の形態により、パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファを備えることを特徴とする通信システムが提供される。   Further, according to the present embodiment, a communication system that transmits packets in parallel through a plurality of routes on the network, the packet received from the upstream is assigned a number indicating the order of the packets, and the numbered packets A first packet transfer device that sends the packet to the second route, and a second packet transfer device that receives the packet from the plurality of routes and sends the packet downstream in the order of the numbers assigned by the first packet transfer device. And the second packet transfer device includes a buffer for temporarily storing a packet that waits for a downstream transmission order among packets received from the plurality of paths. A communication system is provided.

また、本実施の形態により、パケットを並列に処理するパケット処理装置であって、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えるパケット処理装置が提供される。   Further, according to the present embodiment, a packet processing apparatus for processing packets in parallel, the number assigning means for assigning a number indicating the order of the packets to the input packet, and the number assigned by the number assigning means Processing means for executing parallel processing on packets, and control means for outputting packets processed by the processing means in the order of numbers assigned by the number assigning means, wherein the control means comprises the processing means A packet processing apparatus is provided that includes a buffer for temporarily storing a packet that waits for an output order among packets output from.

また、本実施の形態により、入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備えるパケット処理装置が提供される。このパケット処理装置は、例えば、前述したパケット処理システム100が複数のコンピュータから構成される場合におけるキュー104とバッファ制御部105とを有する装置(コンピュータ)に相当する。また、このパケット処理装置は、例えば、図2に示したパケット転送装置202に相当する。   Further, according to the present embodiment, a number assigning unit that assigns a number indicating a packet order to an input packet, and a processing unit that executes parallel processing on the packet assigned a number by the number assigning unit. A packet processing apparatus that inputs a packet output from a processing system having the packet and executes processing of the packet, and outputs a packet after processing by the processing unit in the order of numbers assigned by the number assigning unit The control means is provided with a packet processing device comprising a buffer for temporarily storing packets that wait for the output order among the packets output from the processing means. This packet processing apparatus corresponds to, for example, an apparatus (computer) having a queue 104 and a buffer control unit 105 in the case where the packet processing system 100 described above is composed of a plurality of computers. Further, this packet processing apparatus corresponds to, for example, the packet transfer apparatus 202 shown in FIG.

また、本実施の形態により、コンピュータを、上記パケット処理装置における制御手段として機能させるためのプログラムが提供される。   In addition, according to the present embodiment, a program for causing a computer to function as control means in the packet processing apparatus is provided.

実施の形態で説明した技術(例:図1のパケット処理システム、図2のパケット転送装置202)によれば、並列処理を実施したいモジュールに対し、前後にキューを配備することで、並列処理を可能とし、並列処理(並列伝送含む)の前の機能部にてそれぞれのパケットにナンバリングを実施し、並列処理実行後に、バッファリング処理を実施することで、ナンバリングされた順番通りにパケットを出力することができる。   According to the technology described in the embodiment (for example, the packet processing system in FIG. 1 and the packet transfer apparatus 202 in FIG. 2), parallel processing can be performed by deploying queues before and after a module for which parallel processing is to be performed. Enables each packet to be numbered in the functional unit before parallel processing (including parallel transmission), and after parallel processing is performed, the buffering processing is performed to output the packets in the numbered order. be able to.

また、図4に示した手順でバッファ格納/送出処理等を実施することで、高速なバッファリング処理が可能となり、順序を保持したまま処理効率を向上することができる。更に、処理失敗時(例:壊れた暗号パケットの受信)にも処理効率を維持できる。また、一時的な高負荷(例:バーストトラフィック)の場合の長時間処理停止を防ぐことができる。   In addition, by performing buffer storage / transmission processing and the like according to the procedure shown in FIG. 4, high-speed buffering processing is possible, and processing efficiency can be improved while maintaining the order. Furthermore, the processing efficiency can be maintained even when processing fails (for example, reception of a broken encrypted packet). In addition, it is possible to prevent a long-time processing stop in the case of a temporary high load (eg, burst traffic).

本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。   The present invention is not limited to the above-described embodiments, and various modifications and applications are possible within the scope of the claims.

100 パケット処理システム
101 番号付与部
102 キュー
103 パケット処理部
104 キュー
105 バッファ制御部
200 ネットワーク
201 パケット転送装置
202 パケット転送装置
DESCRIPTION OF SYMBOLS 100 Packet processing system 101 Number assignment part 102 Queue 103 Packet processing part 104 Queue 105 Buffer control part 200 Network 201 Packet transfer apparatus 202 Packet transfer apparatus

Claims (14)

パケットを並列に処理するパケット処理システムであって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理システム。
A packet processing system for processing packets in parallel,
Numbering means for assigning a number indicating the order of the packets to the input packet;
Processing means for executing parallel processing on the packets numbered by the number assigning means;
Control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means,
The control means comprises a buffer for temporarily storing packets that wait for the output order among the packets output from the processing means.
前記制御手段は、前記処理手段から到着待ちのパケットを取得した場合に、当該パケットを出力するとともに、前記バッファに格納されているパケットのうち、当該取得したパケットと番号が連続する一連のパケットを出力する
ことを特徴とする請求項1に記載のパケット処理システム。
When the control unit acquires a packet waiting for arrival from the processing unit, the control unit outputs the packet, and among the packets stored in the buffer, a series of packets whose number is consecutive with the acquired packet. The packet processing system according to claim 1, wherein the packet processing system outputs the packet.
前記制御手段は、所定のパケット数の範囲内で到着待ちパケットよりも後に出力すべきパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納する
ことを特徴とする請求項1又は2に記載のパケット処理システム。
The control unit stores the packet in the buffer when a packet to be output after the arrival waiting packet is acquired from the processing unit within a predetermined number of packets. 3. The packet processing system according to 2.
前記制御手段における前記バッファのデータ構造として配列を用いる
ことを特徴とする請求項1ないし3のうちいずれか1項に記載のパケット処理システム。
The packet processing system according to any one of claims 1 to 3, wherein an array is used as a data structure of the buffer in the control means.
前記配列の要素数は、パケットに付与される番号の最大値よりも小さく、前記制御手段は、パケットの番号を前記配列の要素数で割った剰余をインデックスとする要素に当該パケットを格納する
ことを特徴とする請求項4に記載のパケット処理システム。
The number of elements in the array is smaller than the maximum number assigned to the packet, and the control means stores the packet in an element whose index is a remainder obtained by dividing the packet number by the number of elements in the array. The packet processing system according to claim 4.
前記制御手段は、到着待ちパケットよりも前記要素数以上の数だけ後のパケットを前記処理手段から取得した場合に、当該パケットを前記バッファに格納するとともに、当該パケットを格納する要素のインデックス以下のインデックスに格納されているパケット、及び当該格納されているパケットと番号が連続する一連のパケットを出力する
ことを特徴とする請求項5に記載のパケット処理システム。
When the control means obtains a packet after the number of elements more than the number of elements waiting for arrival from the processing means, the control means stores the packet in the buffer and is equal to or less than the index of the element storing the packet. The packet processing system according to claim 5, wherein the packet stored in the index and a series of packets whose numbers are consecutive with the stored packet are output.
前記制御手段は、パケットを出力した後に、次のパケットを出力できずにタイムアウトが生じた場合に、前記バッファに格納されているパケットの先頭までスキップし、当該先頭のパケット、及び当該先頭のパケットと番号が連続する一連のパケットを出力する
ことを特徴とする請求項1ないし6のうちいずれか1項に記載のパケット処理システム。
The control means skips to the head of the packet stored in the buffer and outputs the head packet and the head packet when a timeout occurs because the next packet cannot be output after outputting the packet. The packet processing system according to claim 1, wherein a series of packets having consecutive numbers are output.
前記制御手段は、前記処理手段におけるパケットの処理が失敗したときに、当該パケットと同じ番号を有するダミーパケットを使用する
ことを特徴とする請求項1ないし7のうちいずれか1項に記載のパケット処理システム。
The packet according to any one of claims 1 to 7, wherein the control unit uses a dummy packet having the same number as the packet when the processing of the packet in the processing unit fails. Processing system.
パケットをネットワーク上の複数の経路で並列に伝送する通信システムであって、
上流から受信したパケットにパケットの順序を示す番号を付与し、番号を付与したパケットを複数の経路に送出する第1のパケット転送装置と、
前記複数の経路から前記パケットを受信し、当該パケットを、前記第1のパケット転送装置で付与された番号順に下流に送出する第2のパケット転送装置と、を備え、
前記第2のパケット転送装置は、前記複数の経路から受信したパケットのうち、下流への送出の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とする通信システム。
A communication system for transmitting packets in parallel through a plurality of paths on a network,
A first packet transfer device that assigns a number indicating a packet order to a packet received from upstream, and sends the numbered packet to a plurality of paths;
A second packet transfer device that receives the packets from the plurality of paths and sends the packets downstream in the order of the numbers assigned by the first packet transfer device;
The second packet transfer apparatus includes a buffer for temporarily storing a packet that waits for a downstream transmission order among packets received from the plurality of paths.
パケットを並列に処理するパケット処理システムにより実行されるパケット処理方法であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与ステップと、
前記番号付与ステップにより番号が付与されたパケットに対して並列処理を実行する処理ステップと、
前記処理ステップによる処理後のパケットを、前記番号付与ステップで付与された番号順に出力する制御ステップと、を備え、
前記制御ステップにおいて、前記処理後のパケットのうち、出力の順番を待たせるパケットを一時的にバッファに格納する
ことを特徴とするパケット処理方法。
A packet processing method executed by a packet processing system for processing packets in parallel,
A numbering step for assigning a number indicating the order of the packets to the input packet;
A processing step of performing parallel processing on the packets numbered by the numbering step;
A control step for outputting the packets after the processing by the processing step in the order of the numbers given in the numbering step;
A packet processing method characterized in that, in the control step, a packet that waits for an output order among the processed packets is temporarily stored in a buffer.
コンピュータを、請求項1ないし8のうちいずれか1項に記載のパケット処理システムにおける制御手段として機能させるためのプログラム。   The program for functioning a computer as a control means in the packet processing system of any one of Claims 1 thru | or 8. パケットを並列に処理するパケット処理装置であって、
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、
前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段と、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段と、を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置。
A packet processing device for processing packets in parallel,
Numbering means for assigning a number indicating the order of the packets to the input packet;
Processing means for executing parallel processing on the packets numbered by the number assigning means;
Control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means,
The packet processing apparatus, wherein the control means includes a buffer for temporarily storing packets that wait for the output order among the packets output from the processing means.
入力されたパケットにパケットの順序を示す番号を付与する番号付与手段と、前記番号付与手段により番号が付与されたパケットに対して並列処理を実行する処理手段とを有する処理システムから出力されるパケットを入力し、当該パケットの処理を実行するパケット処理装置であって、
前記処理手段による処理後のパケットを、前記番号付与手段で付与された番号順に出力する制御手段を備え、
前記制御手段は、前記処理手段から出力されたパケットのうち、出力の順番を待たせるパケットを一時的に格納するためのバッファを備える
ことを特徴とするパケット処理装置。
A packet output from a processing system having numbering means for assigning a number indicating the order of the packets to the input packet and processing means for executing parallel processing on the packet numbered by the numbering means Is a packet processing device that executes processing of the packet,
A control means for outputting packets processed by the processing means in the order of the numbers given by the number giving means;
The packet processing apparatus, wherein the control means includes a buffer for temporarily storing packets that wait for the output order among the packets output from the processing means.
コンピュータを、請求項12又は13に記載のパケット処理装置における制御手段として機能させるためのプログラム。   The program for functioning a computer as a control means in the packet processing apparatus of Claim 12 or 13.
JP2015014537A 2015-01-28 2015-01-28 Packet processing system, communication system, packet processing device, packet processing method, and program Active JP6482296B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015014537A JP6482296B2 (en) 2015-01-28 2015-01-28 Packet processing system, communication system, packet processing device, packet processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015014537A JP6482296B2 (en) 2015-01-28 2015-01-28 Packet processing system, communication system, packet processing device, packet processing method, and program

Publications (2)

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

Family

ID=56559443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015014537A Active JP6482296B2 (en) 2015-01-28 2015-01-28 Packet processing system, communication system, packet processing device, packet processing method, and program

Country Status (1)

Country Link
JP (1) JP6482296B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6509475B1 (en) * 2017-05-30 2019-05-08 三菱電機株式会社 Management device, management method and management program
WO2020261320A1 (en) * 2019-06-24 2020-12-30 日本電信電話株式会社 Data sequence correction method, packet monitoring device, data sequence correction device, and data sequence correction program
US12040989B2 (en) 2019-12-11 2024-07-16 Nippon Telegraph And Telephone Corporation Data sequence amendment method, packet monitoring apparatus, data sequence amendment device, and data sequence amendment program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002223234A (en) * 2001-01-29 2002-08-09 Nec Corp Packet transmission device and packet transmission method
JP2008131350A (en) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> Packet transfer device, packet distributing method, packet sorting method, group-belonging-processor changing method, and computer program
JP2013070430A (en) * 2013-01-04 2013-04-18 Fujitsu Ltd Numerical order delivery method, communication system, mobile station and base station

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002223234A (en) * 2001-01-29 2002-08-09 Nec Corp Packet transmission device and packet transmission method
JP2008131350A (en) * 2006-11-21 2008-06-05 Nippon Telegr & Teleph Corp <Ntt> Packet transfer device, packet distributing method, packet sorting method, group-belonging-processor changing method, and computer program
JP2013070430A (en) * 2013-01-04 2013-04-18 Fujitsu Ltd Numerical order delivery method, communication system, mobile station and base station

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6509475B1 (en) * 2017-05-30 2019-05-08 三菱電機株式会社 Management device, management method and management program
WO2020261320A1 (en) * 2019-06-24 2020-12-30 日本電信電話株式会社 Data sequence correction method, packet monitoring device, data sequence correction device, and data sequence correction program
JPWO2020261320A1 (en) * 2019-06-24 2020-12-30
US20220247697A1 (en) * 2019-06-24 2022-08-04 Nippon Telegraph And Telephone Corporation Data Sequence Correction Method, Packet Monitoring Device, Data Sequence Correction Device, and Data Sequence Correction Program
JP7197010B2 (en) 2019-06-24 2022-12-27 日本電信電話株式会社 DATA ORDER CORRECTION METHOD, PACKET MONITORING DEVICE, DATA ORDER CORRECTION DEVICE, AND DATA ORDER CORRECTION PROGRAM
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
US12040989B2 (en) 2019-12-11 2024-07-16 Nippon Telegraph And Telephone Corporation Data sequence amendment method, packet monitoring apparatus, data sequence amendment device, and data sequence amendment program

Also Published As

Publication number Publication date
JP6482296B2 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
US8713220B2 (en) Multi-bank queuing architecture for higher bandwidth on-chip memory buffer
JP4779955B2 (en) Packet processing apparatus and packet processing method
US7499470B2 (en) Sequence-preserving deep-packet processing in a multiprocessor system
JP2008512950A (en) Packet queuing, scheduling, and ordering
US11502967B2 (en) Methods and apparatuses for packet scheduling for software-defined networking in edge computing environment
WO2012055319A1 (en) Method and device for dispatching tcam (telecommunication access method) query and refreshing messages
JP4771988B2 (en) Load balancing device and network device
US20150006749A1 (en) Relaxed Ordering Network
US8189578B2 (en) Simple fairness protocols for daisy chain interconnects
WO2017045501A1 (en) Packet scheduling method and apparatus, and storage medium
JPWO2013039083A1 (en) COMMUNICATION SYSTEM, CONTROL DEVICE, AND COMMUNICATION METHOD
JP6482296B2 (en) Packet processing system, communication system, packet processing device, packet processing method, and program
JP5071178B2 (en) Packet transmission equipment
WO2021101640A1 (en) Method and apparatus of packet wash for in-time packet delivery
CN105337888B (en) Load-balancing method, device and virtual switch based on multicore forwarding
US20130177020A1 (en) Communication apparatus and control method
US20190391856A1 (en) Synchronization of multiple queues
US20140016486A1 (en) Fabric Cell Packing in a Switch Device
JP4630231B2 (en) Packet processing system, packet processing method, and program
JP2015507408A (en) Apparatus and method for efficient network address translation and application level gateway processing
US8441953B1 (en) Reordering with fast time out
JP6418291B1 (en) Relay device
JP5359357B2 (en) Packet processing apparatus, packet processing order control method and packet processing order control program used in the processing apparatus
JP2739949B2 (en) Communication buffer device
US10554572B1 (en) Scalable ingress arbitration for merging control and payload

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250