JP6060050B2 - Communication apparatus and packet processing method - Google Patents
Communication apparatus and packet processing method Download PDFInfo
- Publication number
- JP6060050B2 JP6060050B2 JP2013160949A JP2013160949A JP6060050B2 JP 6060050 B2 JP6060050 B2 JP 6060050B2 JP 2013160949 A JP2013160949 A JP 2013160949A JP 2013160949 A JP2013160949 A JP 2013160949A JP 6060050 B2 JP6060050 B2 JP 6060050B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- unit
- processing
- calculation
- received
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Description
本発明は、通信装置に関し、特に、パケットに対して処理を行う通信装置に関する。 The present invention relates to a communication device, and more particularly, to a communication device that processes packets.
近年、テレビコンテンツのデジタル化又はスマートフォンの普及等によりネットワークシステムにおけるトラヒックが大容量化している。そして、これにより、100Gbps超の回線の需要が高まっている。 In recent years, the traffic in network systems has increased due to the digitization of TV content or the spread of smartphones. As a result, demand for lines exceeding 100 Gbps is increasing.
現在のパケット処理FPGA(Field−Programmable Gate Array)は、シングルコアで1パケット毎にシーケンシャルにパケットを処理している。これまでのFPGA開発では、トラヒック増加に対応するためにはFPGA内部の動作周波数を高くし、並列展開ビット数を増加することでシングルコアのパケット処理を高速化してきた。しかし、動作周波数が頭打ちになっており、100Gbps超級のパケット処理を実現するためには更に並列展開ビット数を増加する必要がある。具体的には、Ethernet(登録商標)の最少サイズ64バイト(512ビット)以上に並列展開する必要があり、1clk以内に複数パケット分の情報がFPGAに到着する。従来のシングルコアの1パケット毎のシーケンシャル処理ができないため、パケット処理エンジンのマルチコア化への大きな流れがある。 A current packet processing FPGA (Field-Programmable Gate Array) processes a packet sequentially for each packet with a single core. In FPGA development so far, in order to cope with an increase in traffic, the operating frequency inside the FPGA is increased, and the number of parallel development bits is increased to speed up single-core packet processing. However, the operating frequency has reached its peak, and it is necessary to further increase the number of parallel development bits in order to realize packet processing exceeding 100 Gbps. Specifically, it is necessary to develop in parallel to a minimum size of 64 bytes (512 bits) of Ethernet (registered trademark), and information for a plurality of packets arrives at the FPGA within 1 clk. Since conventional single-core sequential processing for each packet cannot be performed, there is a large flow toward multi-core packet processing engines.
帯域制御機能又は統計カウント機能などのパケット管理機能を、FPGAに実装する場合、FPGAは、フロー毎のパケットの情報を一つの情報記憶媒体(以後、テーブルと記載)に格納し、到着したパケットに対応するフロー毎のテーブルの値を、パケットが到着する毎に更新する。 When a packet management function such as a bandwidth control function or a statistic counting function is implemented in an FPGA, the FPGA stores packet information for each flow in one information storage medium (hereinafter referred to as a table), and the received packet The value of the corresponding table for each flow is updated every time a packet arrives.
例えば、統計カウント機能を実現する場合、FPGAは、各フローの統計情報をテーブルで管理する。具体的には、FPGAは、パケット到着毎に該当フローのテーブルから受信パケット数及び受信バイト数を読み出し、受信パケット数及び受信バイト数を更新、及び、受信パケット数及び受信バイト数の更新結果のテーブルへの書込みを実行する。 For example, when realizing the statistical count function, the FPGA manages statistical information of each flow in a table. Specifically, each time the packet arrives, the FPGA reads the number of received packets and the number of received bytes from the corresponding flow table, updates the number of received packets and the number of received bytes, and updates the results of updating the number of received packets and the number of received bytes. Write to the table.
本技術分野の背景技術として、特開2000−358066号公報(特許文献1)がある。この公報には、「到着パケットごとに、同じソースからの前のパケットが処理エレメントに係属中であるかどうかをチェックし、チェックにより、そのようなパケットが係属中であることが明らかになった場合に、この到着パケットを前のパケットと同じ処理エレメントに転送する」ことが記載されている(要約参照)。すなわち、特許文献1には、複数の分散処理部によって、複数のフローのパケットを処理する分散処理技術が提案されている。
As a background art in this technical field, there is JP 2000-358066 A (Patent Document 1). The gazette states, “For each arriving packet, it checks whether a previous packet from the same source is pending on the processing element, and the check reveals that such a packet is pending. If this is the case, it forwards this arriving packet to the same processing element as the previous packet ”(see summary). That is,
しかしながら、特許文献1に記載された技術によれば、パケットはフロー毎に複数の分散処理部に振り分けられ、各分散処理部によってパケット処理が実行される。このため、特許文献1に記載された技術では、同一フローを同じ分散処理部へ振分けるためのHash関数などの複雑な処理が必要である。
However, according to the technique described in
さらに、二つ以上の同じフローのパケットが同時に到着した場合、上記パケット振分けにより、1つの分散処理部に、1パケットを処理するために必要な時間間隔よりも短い時間間隔内に、二つのパケットが転送される。分散処理部に、前に到着したパケット処理が終了しないうちに、次に処理すべきパケットが到着するため、分散処理部は、同時に到着するパケット処理を正常に実行できず、オーバーフローが発生する場合がある。すなわち、同一フローのパケットの処理速度は、1つの分散処理部の処理速度が限界になるという問題がある。 Further, when two or more packets of the same flow arrive at the same time, two packets are transmitted within one time interval shorter than the time interval required for processing one packet to one distributed processing unit by the packet distribution. Is transferred. When the packet to be processed next arrives before the packet processing that arrived at the distributed processing unit is not completed, the distributed processing unit cannot execute the packet processing that arrives at the same time and overflow occurs. There is. That is, there is a problem that the processing speed of a single distributed processing unit is limited in the processing speed of packets of the same flow.
本発明は、前述の問題を鑑みてなされたものであり、マルチコア化されたパケット処理エンジンにおいて、分散処理部へのパケットの振分け処理を簡素化する。さらに、統計カウント機能などパケット到着毎に同じフローの情報を更新する必要がある場合でも、同時に到着するパケットを処理することができる方法の提供を目的とする。 The present invention has been made in view of the above-described problems, and simplifies packet distribution processing to a distributed processing unit in a multi-core packet processing engine. It is another object of the present invention to provide a method capable of processing packets that arrive at the same time even when it is necessary to update the same flow information every time a packet arrives, such as a statistical count function.
振分部は、複数のパケットが入力インタフェースに到着した順に、各パケットを各分散処理部に振り分け、各分散処理部は、当該分散処理部において受信した各パケットの処理に関する情報を集中処理部に転送し、集中処理部は、受信した複数のパケットのうち分散処理部から同時に受信した同一フローの複数のパケットの演算結果を集約して、テーブルに保持する対応するフローの演算結果を更新する。 The distribution unit distributes each packet to each distributed processing unit in the order in which a plurality of packets arrived at the input interface, and each distributed processing unit stores information on processing of each packet received by the distributed processing unit in a central processing unit. The central processing unit aggregates the operation results of a plurality of packets of the same flow received simultaneously from the distributed processing unit among the plurality of received packets, and updates the operation results of the corresponding flows held in the table.
本発明の一実施形態によれば、マルチコア化されたパケット処理エンジンにおいて、1つの分散処理部への負荷集中による性能劣化を抑えることができる。さらに、統計カウント機能などパケット到着毎に同じフローの情報を更新する必要がある場合でも、同時に到着するパケットを処理することができる。 According to an embodiment of the present invention, in a multi-core packet processing engine, it is possible to suppress performance degradation due to load concentration on one distributed processing unit. Furthermore, even when it is necessary to update the same flow information every time a packet arrives, such as a statistical count function, packets that arrive at the same time can be processed.
以下、本発明の実施例について、図面を参照して説明する。 Embodiments of the present invention will be described below with reference to the drawings.
本実施例におけるパケット処理の概要を以下に示す。 An outline of packet processing in this embodiment is shown below.
図1Aは、従来のフローを識別してパケットを分散処理部に振り分ける場合のパケット処理の概要を示す説明図である。 FIG. 1A is an explanatory diagram showing an outline of packet processing when a conventional flow is identified and packets are distributed to distributed processing units.
例えば、同一フローのパケットが到着した場合、パケット通信装置の振分処理はパケットのフローを識別して、同一のフローは同じ分散処理をするようパケットを振分ける。この場合、同一フローのパケット処理の性能は分散処理(例えば#1)の性能に依存する。 For example, when packets of the same flow arrive, the distribution processing of the packet communication apparatus identifies the flow of the packet, and distributes the packets so that the same flow performs the same distributed processing. In this case, the performance of packet processing for the same flow depends on the performance of distributed processing (for example, # 1).
図1Bは、本実施例1のパケット処理の概要を示す説明図である。 FIG. 1B is an explanatory diagram illustrating an outline of packet processing according to the first embodiment.
例えば、同一フローのパケットが到着した場合、本実施例のパケット通信装置は、振分処理がフローを識別せず到着順にラウンドロビンでパケットを分散処理(#1〜#K)に振分ける。本実施例のパケット通信装置は、各分散処理(#1〜#K)に振分けられたパケットの情報を集中処理部に集約し、同一フローのパケットを纏めて処理する。 For example, when packets of the same flow arrive, the packet communication apparatus according to the present embodiment distributes packets to distributed processing (# 1 to #K) in round-robin order in the arrival order without the flow being identified. The packet communication apparatus according to the present embodiment aggregates information on packets distributed to each distributed process (# 1 to #K) in a central processing unit, and processes packets of the same flow collectively.
本実施例におけるパケット到着間隔とパケット処理時間(タイミング)との関係の概要を、図33A及び図33Bを用いて以下に示す。 An overview of the relationship between the packet arrival interval and the packet processing time (timing) in the present embodiment is shown below using FIGS. 33A and 33B.
図33Aは、従来技術のフローを識別してパケットを分散処理部に振り分ける場合のパケット処理において、同一フローのパケットが複数同時に振分処理に到着する際のパケット処理のタイミングを示す説明図である。 FIG. 33A is an explanatory diagram showing the timing of packet processing when a plurality of packets of the same flow arrive at the distribution process simultaneously in packet processing when identifying a flow of the prior art and distributing packets to the distributed processing unit. .
簡単化のため、例として図33Aでは、振分処理は複数のパケットのヘッダを同時に解析してフローを特定し、1つの分散処理部は1パケット毎にパケットを1clkで処理(本実施例では統計処理)可能とした場合において、振分処理に同一フローのパケットが2つずつ同時に到着する例を示す。 For simplification, in FIG. 33A as an example, the distribution processing analyzes the headers of a plurality of packets simultaneously to identify the flow, and one distributed processing unit processes the packets with 1 clk for each packet (in this embodiment, (Statistical processing) An example in which two packets of the same flow arrive at the same time in the distribution process when it is possible.
また、図33A、及び、後述する図33Bと図33Cにおいて、振分処理部が最初に受信する入力パケットを第1のパケット(S1)、第1のパケットと同時に受信する入力パケットを第2のパケット(S2)、第2のパケットよりも1clk後に受信する入力パケットを第3のパケット(S3)、第3のパケットと同時に受信する入力パケットを第4のパケット(S4)と記載する。図33において、第1のパケット、第2のパケット、第3のパケット、及び第4のパケットのフローIDの値は、いずれも“10”である。 In FIG. 33A and FIGS. 33B and 33C described later, the input packet received first by the distribution processing unit is the first packet (S1), and the input packet received simultaneously with the first packet is the second packet. The packet (S2), the input packet received after 1 clk after the second packet is described as a third packet (S3), and the input packet received simultaneously with the third packet is described as a fourth packet (S4). In FIG. 33, the values of the flow IDs of the first packet, the second packet, the third packet, and the fourth packet are all “10”.
従来技術では、図33Aに示すように、振分処理は、第1のパケットと第2のパケットを同時に受信すると、ヘッダを解析してフローを識別する(T3301)。第1のパケットと第2のパケットは、いずれもフローIDの値が“10”であるため、同じ分散処理部(例えば#1)に振分けられる。従来技術の分散処理部は、1clkで1パケット毎にパケットを処理するため、振分処理は1パケット毎に第1のパケットと第2のパケットをT3302及びT3303のタイミングで分散処理部(#1)へ振分ける。分散処理部は、T3302において、第1パケットの統計処理を開始し、T3303において第2パケットの統計処理を開始する。また、振分処理は、第3のパケットと第4のパケットを受信すると、ヘッダを解析してフローを識別する(T3302)。第3のパケットと第4のパケットは、いずれもフローIDの値が“10”であるため、第1パケット及び第2パケットと同じ分散処理部(例えば#1)に振分けられるが、第1のパケット及び第2のパケットの処理の待ち合わせのため、振分処理は、第3のパケットと第4のパケットをT3304及びT3305のタイミングで分散処理部(#1)へ振分ける。(第3のパケットのヘッダ解析の処理タイミングT3302の1クロック後のT3303では、第2パケットの統計処理を実行中であるため、第3のパケットの統計処理は実行出来ない。)分散処理部は、T3304において、第3パケットの統計処理を開始し、T3305において第4パケットの統計処理を開始する。従って、従来では、同一フローのパケットが複数同時に到着すると、前に到着したパケット処理が終了しないうちに、次に処理すべきパケットが到着するため、パケット処理を正常に実行できずオーバーフローが発生する場合がある。 In the prior art, as shown in FIG. 33A, when the distribution process receives the first packet and the second packet at the same time, the header is analyzed to identify the flow (T3301). Since both the first packet and the second packet have the flow ID value “10”, they are distributed to the same distributed processing unit (for example, # 1). Since the distributed processing unit of the prior art processes a packet for each packet at 1 clk, the distribution processing unit distributes the first packet and the second packet for each packet at the timing of T3302 and T3303 (# 1 ). The distributed processing unit starts statistical processing of the first packet at T3302 and starts statistical processing of the second packet at T3303. In the distribution process, when the third packet and the fourth packet are received, the header is analyzed to identify the flow (T3302). Since both the third packet and the fourth packet have the flow ID value “10”, they are distributed to the same distributed processing unit (for example, # 1) as the first packet and the second packet. In order to wait for the processing of the packet and the second packet, the distribution process distributes the third packet and the fourth packet to the distributed processing unit (# 1) at the timing of T3304 and T3305. (The statistical processing of the third packet cannot be executed at T3303 one clock after the processing timing T3302 of the header analysis of the third packet, so the statistical processing of the third packet cannot be executed.) , T3304 starts statistical processing of the third packet, and T3305 starts statistical processing of the fourth packet. Therefore, conventionally, when a plurality of packets of the same flow arrive at the same time, a packet to be processed next arrives before the processing of the previously arrived packet is finished, so that packet processing cannot be executed normally and an overflow occurs. There is a case.
図33Bは、本実施例1のパケット処理において、複数の同一フローのパケットが同時に到着する際のパケット処理のタイミングを示す説明図である。 FIG. 33B is an explanatory diagram illustrating packet processing timing when a plurality of packets having the same flow arrive at the same time in the packet processing according to the first embodiment.
本実施例では、振分処理は、第1のパケットと第2のパケットを受信すると、第1のパケットと第2のパケットをそれぞれ別の分散処理部(例えば#1と#2)に振分ける(T3301)。フローを識別しないため、ここでは処理遅延なしとする。 In this embodiment, in the distribution process, when the first packet and the second packet are received, the first packet and the second packet are distributed to different distributed processing units (for example, # 1 and # 2), respectively. (T3301). Since no flow is identified, there is no processing delay here.
T3301のタイミングにおいて、分散処理部(#1)は第1のパケットのヘッダを解析してフローを識別し、分散処理部(#2)は第2のパケットのヘッダを解析してフローを識別する。その後、各分散処理部は、識別したフローIDやパケット長などの情報を集中処理部に転送する。集中処理部は、各分散処理部(#1と#2)から取得した情報をもとに、第1のパケットと第2のパケットに関する統計処理を纏めて実行する(T3302)。例えば、第1のパケット長、第2のパケット長とも100バイトの場合、受信バイト数として200バイトをカウントする。図33Aの分散処理部は、1パケット毎にパケットを処理しているため、1パケット分を1クロックで統計処理していたが、図33Bの集中処理部は、第1のパケットと第2のパケットに関する統計処理を纏めて実行するため、第1のパケットと第2のパケットの統計処理を1クロックで実行できる。 At the timing of T3301, the distributed processing unit (# 1) analyzes the header of the first packet to identify the flow, and the distributed processing unit (# 2) analyzes the header of the second packet to identify the flow. . Thereafter, each distributed processing unit transfers information such as the identified flow ID and packet length to the central processing unit. The central processing unit collectively executes statistical processing on the first packet and the second packet based on the information acquired from each distributed processing unit (# 1 and # 2) (T3302). For example, when both the first packet length and the second packet length are 100 bytes, 200 bytes are counted as the number of received bytes. Since the distributed processing unit in FIG. 33A processes a packet for each packet, statistical processing is performed for one packet in one clock. However, the central processing unit in FIG. 33B uses the first packet and the second packet. Since statistical processing relating to packets is collectively executed, statistical processing of the first packet and the second packet can be executed in one clock.
また、振分処理は、第3のパケットと第4のパケットを受信すると、振分処理は同様に、第3のパケットと第4のパケットをそれぞれ別の分散処理部(例えば#3と#4)に振分ける(T3302)。 In the distribution process, when the third packet and the fourth packet are received, the distribution process similarly separates the third packet and the fourth packet from different distributed processing units (for example, # 3 and # 4). ) (T3302).
T3302のタイミングにおいて、分散処理部(#3)は第3のパケットのヘッダを解析してフローを識別し、分散処理部(#4)は第4のパケットのヘッダを解析してフローを識別する。その後、各分散処理部は、識別したフローIDやパケット長などの情報を集中処理部に転送する。集中処理部は、各分散処理部(#3と#4)から取得した情報をもとに、第3のパケットと第4のパケットに関する統計処理を纏めて実行する(T3303)。図33Aにおいては、T3303のタイミングは第2のパケットの統計処理に割り当てられていたため、第3のパケットの統計処理はT3304に割り当てられていたところ、図33Bにおいては、T3303のタイミングで第3のパケット及び第4のパケットの統計処理を実行できる。 At the timing of T3302, the distributed processing unit (# 3) analyzes the header of the third packet to identify the flow, and the distributed processing unit (# 4) analyzes the header of the fourth packet to identify the flow. . Thereafter, each distributed processing unit transfers information such as the identified flow ID and packet length to the central processing unit. The central processing unit collectively executes statistical processing on the third packet and the fourth packet based on the information acquired from each distributed processing unit (# 3 and # 4) (T3303). In FIG. 33A, since the timing of T3303 is assigned to the statistical processing of the second packet, the statistical processing of the third packet is assigned to T3304. In FIG. 33B, the third processing is performed at the timing of T3303. Statistical processing of the packet and the fourth packet can be executed.
従って、本実施例では、集中処理部にパケットの情報を集約し、振分処理に同時に到着した複数の同一フローのパケットを纏めて処理することで、同一フローの複数のパケットが同時に到着した場合でも、統計カウント機能のようにパケットが到着する毎に同じフローの情報を更新する必要がある機能をオーバーフローを発生させることなく実現することが出来る。 Therefore, in this embodiment, when the packet information of the same flow arrives at the same time by aggregating the packet information in the central processing unit and processing the packets of the same flow that have arrived at the same time in the sorting process. However, a function that needs to update the same flow information every time a packet arrives, such as the statistical count function, can be realized without causing an overflow.
以下、本実施例1について図2から図18を用いて説明する。なお、以下に述べる実施例1は本発明の実施例の一つであって、本発明を制限するものではない。 Hereinafter, the first embodiment will be described with reference to FIGS. In addition, Example 1 described below is one of the examples of the present invention, and does not limit the present invention.
実施例1では、統計カウント機能に本発明を適用する。実施例1では、統計カウント機能の統計情報として、受信パケット数、及び、受信バイト数をカウントする。 In the first embodiment, the present invention is applied to the statistical count function. In the first embodiment, the number of received packets and the number of received bytes are counted as statistical information of the statistical count function.
図2は、本実施例1のパケット通信装置2の物理的な構成及び論理回路202を示すブロック図である。
FIG. 2 is a block diagram illustrating a physical configuration of the
本実施例のパケット通信装置2は、パケットを他のパケット通信装置へ転送する装置である。パケット通信装置2は、複数のネットワークインタフェースボード(NIF)(200−1〜200−M)、及び、スイッチ部206を備える。
The
NIF200は、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部206は、各NIF200に接続される装置であり、NIF200から受信したパケットを、パケットを送信すべきNIF200に振り分ける装置である。
The
各NIF200は、入出力回線インタフェース201、論理回路202、SWインタフェース205、及びNIF管理部208を備える。
Each
入出力回線インタフェース201は、通信ポートである。パケット通信装置2は、入出力回線インタフェース201及びネットワークを介して、他のパケット通信装置と接続する。実施例1における入出力回線インタフェース201は、イーサネット(登録商標)用の回線インタフェースである。
The input /
SWインタフェース205は、スイッチ部206に接続するための装置である。
The
NIF管理部208は、例えば、CPU等のプロセッサである。NIF管理部208は、論理回路202における処理を制御する。
The
論理回路202は、本実施例のパケットに対する処理を行う回路である。論理回路202は、少なくとも一つのメモリ及び少なくとも一つの演算装置(例えば、プロセッサ)を備える。
The
論理回路202は、入力パケット制御部203、出力パケット制御部204等のパケット処理部を有し、設定レジスタ207を備える。
The
パケット通信装置2が受信したパケットは、入出力回線インタフェース201、入力パケット制御部203、SWインタフェース205、スイッチ部206、SWインタフェース205、出力パケット制御部204、及び、入出力回線インタフェース201の順に送信される。
Packets received by the
論理回路202が有する各処理部は、集積回路等の物理的な装置によって実装されてもよいし、少なくとも一つのプロセッサによって実行されるプログラムによって実装されてもよい。また、複数の処理部(例えば、入力パケット制御部203及び出力パケット制御部204)が一つの装置又はプログラムによって実装されてもよいし、一つの処理部が複数の装置又は複数のプログラムによって実装されてもよい。
Each processing unit included in the
NIF管理部208は、設定レジスタ207を制御する。設定レジスタ207は、データを一時的に格納する記憶領域を有し、論理回路202に備わる各処理部のレジスタ値を保持する。
The
設定レジスタ207は論理回路202を介して論理回路202に備わる全ての処理部と接続する。なお、以下において、設定レジスタ207の処理内容についての説明を省略するが、論理回路202が有する全ての処理部は、設定レジスタ207を用いて処理を実行する。
The
入出力回線インタフェース201は、受信したパケット4に後述する装置内ヘッダ3を付加する。
The input /
図4は、本実施例1の通信において用いられるパケット4のフォーマットを示す説明図である。図4に示すパケット4のフォーマットは一例であり、本実施例において用いられるパケットは、いかなる情報を含んでもよい。例えば、MACアドレスの代わりに、IPアドレスを含んでもよい。パケット4は、宛先MACアドレス401、送信元MACアドレス402、VLANヘッダ403、イーサタイプ値404、ペイロード405、及び、フレームチェックシーケンス(FCS)406を含む。宛先MACアドレス401、又は、送信元MACアドレス402には、パケット通信装置2のMACアドレスが設定される。VLANヘッダ403には、フローの識別子となるVLAN IDが設定される。
FIG. 4 is an explanatory diagram illustrating the format of the
なお、ペイロード405にMPLSヘッダ又は他のプロトコルのヘッダが設定され、MPLSラベル値などをフローの識別子として設定されてもよい。フレームチェックシーケンス(FCS)406には、フレームの誤りを検出するための値が設定される。
Note that an MPLS header or another protocol header may be set in the
図3は、本実施例1のパケット4に付加される装置内ヘッダ3のフォーマットを示す説明図である。装置内ヘッダ3は、出力ネットワークインタフェースボード識別子(出力NIF ID)301、フローID302、及び、パケット長303を含む。出力NIF ID301は、内部ルーティング情報である。本実施例の内部ルーティング情報とは、パケット通信装置2が受信したパケット4を、パケット通信装置2のいずれのNIF200のポートから出力するかを示す情報である。スイッチ部206は、内部ルーティング情報に従い、スイッチ部206に送信された入力パケットを特定のNIF200の特定のSWインタフェース205に転送する。
FIG. 3 is an explanatory diagram showing the format of the in-
入出力回線インタフェース201は、受信したパケット4をパケット通信装置2において処理するため、受信したパケット4に装置内ヘッダ3を付加する。装置内ヘッダ3が付加され、入出力回線インタフェース201からスイッチ部206に向けて送信されるパケット4を、以降において、入力パケットと記載する。
The input /
入出力回線インタフェース201は、受信したパケット4に装置内ヘッダ3を付加する際、出力NIF ID301、及び、フローID302にnull値等の値を格納する。すなわち、入出力回線インタフェース201は、出力NIF ID301、及び、フローID302に格納される値を決定しない。出力NIF ID301、及び、フローID302には、入力パケット制御部203によって値が格納される。
The input /
入出力回線インタフェース201は、受信したパケット4のパケット長を取得し、装置内ヘッダ3のフレーム長303に、取得されたパケット長を格納する。その後、入出力回線インタフェース201は、パケット4を入力パケット制御部203に送信する。
The input /
入力パケット制御部203は、入出力回線インタフェース201から受信したパケット4に関して、後述するパケット処理を実行する。本パケット処理時に、装置内ヘッダ3の出力NIF ID301及びフローID302を追加する。
The input
パケット処理後、入力パケット制御部203は、入力パケットをSWインタフェース205に送信する。SWインタフェース205は、受信した入力パケットをスイッチ部206に転送する。
After the packet processing, the input
スイッチ部206は、各NIF200のSWインタフェース205から入力パケットを受信した後、入力パケットの出力NIF ID301を参照することによって、受信した入力パケットの転送先であるNIF200を特定する。次に、スイッチ部206は、特定されたNIF200に対応するSWインタフェース205に、受信した入力パケットを、出力パケットとして転送する。
After receiving the input packet from the
なお、本実施例において、スイッチ部206から入出力回線インタフェース201へ送信されるパケット4を出力パケットと記載する。
In the present embodiment, the
SWインタフェース205は、受信した出力パケットを出力パケット制御部204に転送する。
The
前述の例では、入力パケット制御部203がパケット処理を実行した。しかし、出力パケット制御部204が、入力パケット制御部203の代わりにパケット処理を実行してもよい。
In the above example, the input
出力パケット制御部204がパケット処理を実行する場合、パケット処理後、出力パケット制御部204は、出力パケットを入出力回線インタフェース201に送信する。
When the output
出力パケット制御部204がパケット処理を実施しない場合、出力パケット制御部208は、SWインタフェース205から受信した出力パケットを、そのまま入出力回線インタフェース201に転送する。
When the output
入出力回線インタフェース201は、受信した出力パケットから装置内ヘッダ3を除去する。その後、入出力回線インタフェース201は、図4に示すパケット4のフォーマットによって、出力パケットを他の装置へ転送する。
The input /
図5は、本実施例1の入力パケット制御部203の論理的な構成を示すブロック図である。
FIG. 5 is a block diagram illustrating a logical configuration of the input
入力パケット制御部203は、振分部502、複数の分散処理部503(503−1〜503−N)(Nは任意の自然数)、多重部504、及び、集中処理部505を備える。
The input
振分部502は、入力パケット制御部203が入出力回線インタフェース201から入力パケットを受信した場合、後述する振分け処理S950を実行する処理部である。振分部502は、振分け処理S950において、パケット処理を実行する分散処理部503を、分散処理部503−1〜分散処理部503−Nから決定する。
The
分散処理部503は、後述するパケット処理を実行する。分散処理部503は、本パケット処理時に、集中処理部505にフローIDやパケット長などのパケット情報を転送する。パケット処理後、分散処理部503は、入力パケットを多重部504に送信する。
The distributed
集中処理部505は、後述するパケット処理を実行する。複数の分散処理部503(503−1〜503−N)から転送されるパケット情報を集約して処理し、後述する統計情報テーブル704を更新する。
The
多重部504は、各分散処理部503から受信したパケットを多重し、到着順にSWインタフェース205に送信する。
The
本実施例において、入力パケット制御部203がパケット処理に要する時間はあらかじめ定められる。
In this embodiment, the time required for packet processing by the input
さらに、本実施例において、分散処理部503の数Nは、入力パケット制御部203において受信するパケット到着間隔(複数のパケットが1clk以内に同時到着する場合はそのパケット数)と分散処理部503のパケット処理時間とに基づいて決定される。なお、最短パケット到着間隔は、パケット通信装置2が接続される回線に従って、あらかじめ定められる値である。
Further, in the present embodiment, the number N of the distributed
例えば、入力パケット制御部203に1clk以内に2つのパケットが同時に到着し、分散処理部503のパケット処理時間が20clkである場合、同時到着パケット数に分散処理部503のパケット処理時間を乗算(余りは繰上げ)した結果は“40”である。このため、分散処理部503の数Nは“40”にあらかじめ決定される。
For example, when two packets arrive at the input
図6は、本実施例1の分散処理部503の論理的な構成を示すブロック図である。
FIG. 6 is a block diagram illustrating a logical configuration of the distributed
分散処理部503は、入力ヘッダ解析部601、入力ヘッダ処理部602、及び、出力判定処理部603を備える。
The distributed
入力ヘッダ解析部601は、振分部502から入力パケットを受信した場合、後述するヘッダ解析処理S1050を実行する処理部である。入力ヘッダ解析部601は、ヘッダ解析処理S1050において、パケット4のフローを識別し、集中処理部505が処理する時に必要となるパケット情報を転送し、ヘッダ処理部602へパケットを転送する。
The input
入力ヘッダ処理部602は、入力ヘッダ解析部601から入力パケットを受信した場合、入力ヘッダ解析部601で識別されたフローに従ってVLANタグの処理を実行する。VLANタグの処理とは、例えば、VLANタグの透過、変換、付与及び削除である。すなわち、VLANタグの処理とは、入力パケットのVLANヘッダを、パケット通信装置2から出力されるパケットのVLANヘッダに変換する処理である。入力ヘッダ処理部602は、VLANタグの処理において、宛先MACアドレス401及び送信元MACアドレス402を、入出力回線インタフェース201に設定される値によって上書きしてもよいし、あらかじめ登録されていたフロー毎の値によって上書きしてもよい。VLANタグを処理した後、入力ヘッダ処理部602は、入力パケットを出力判定処理部603に送信する。この時、入力ヘッダ処理部602は、後述する集中処理部505の演算終了通知のタイミングと同じタイミングでパケットを出力判定処理部603に送信する。
When the input
出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合、後述する出力判定処理S1150を実行する処理部である。出力判定処理部603は、出力判定処理S1150において、集中処理部505の演算終了と同時に、多重部504へパケットを転送する。
When receiving an input packet from the input
図7は、本実施例1の集中処理部505の論理的な構成を示すブロック図である。
FIG. 7 is a block diagram illustrating a logical configuration of the
集中処理部505は、調停部701、演算フロー管理リスト702、演算部703(703−1〜703−N)(Nは任意の自然数)、統計情報テーブル704を備える。
The
調停部701は、分散処理部503(503−1〜503−N)から処理要求を受信した場合、後述する演算部選定調停処理S1250を実行する処理部である。調停部701は、分散処理部503から受信するフローIDによりフローを識別し、さらに、演算フロー管理リスト702を参照する。そして、これによって、入力パケットに関する統計カウント処理を実行する演算部703を、演算部703−1〜演算部703−Nから決定する。
When receiving a processing request from the distributed processing unit 503 (503-1 to 503-N), the arbitrating
また、調停部701は、演算フロー管理リスト702を、論理回路210に備わるメモリ等に保持する。そして、調停部701は、演算部選定調停処理S1250及び演算フロー管理処理S1450において、演算フロー管理リスト702を更新する。
The
さらに、調停部701は、演算部703から演算終了通知を受信した場合、後述する更新調停処理S1650を実行する処理部である。調停部701は、演算部703が更新した統計情報を統計情報テーブル704に書き戻し、処理要求を送信してきた分散処理部503に演算終了通知を転送する。
Further, the
演算フロー管理リスト702は、演算部703が処理する入力パケットのフローIDと、演算部703の処理状況とを示す。
The calculation
演算部703は、後述する統計情報処理S1550において、統計情報テーブル7044に含まれる各フローの情報を更新する。また、演算部703は、統計情報処理S1550において更新した結果を、調停部701に送信する。演算部703は、集中処理部505にN個(Nは任意の自然数)備わる。
The
図8は、本実施例1の統計情報テーブル704を示す説明図である。 FIG. 8 is an explanatory diagram illustrating the statistical information table 704 according to the first embodiment.
統計情報テーブル704は、パケット通信装置2が受信したパケットについての情報を有するテーブルである。統計情報テーブル704は、フローID801、受信パケット数802、及び、受信バイト数803を含む。
The statistical information table 704 is a table having information about packets received by the
フローID801は、入力パケットのフローIDを含む。受信パケット数802は、振分部502が受信した入力パケットの数を含む。受信バイト数803は、振分部502が受信した入力パケットのバイト数の合計値を示す。
The
図13は、本実施例1の演算フロー管理リスト702を示す説明図である。
FIG. 13 is an explanatory diagram illustrating the calculation
演算フロー管理リスト702は、演算部1301、フローID1302、及び、処理状況カウンタ1303を含む。
The calculation
演算部1301は、演算部703−1〜703−Nを一意に示す識別子を含む。本実施例の演算部1301は、演算部703を数値によって識別する値を含む。演算部1301に格納される値は、管理者等によってあらかじめ設定される。フローID1302は、演算部703が処理する入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID1302に格納される値は、調停部701によって更新される。また、フローID1302に格納される値は、入力ヘッダ解析部601において識別したフローIDの値に対応する。
The
処理状況カウンタ1303は、演算部703における演算処理(統計情報処理)の状況を示す値を含む。本実施例の処理状況カウンタ1303は、演算処理が開始されてから経過した実行時間に関する値を含む。
The
以下に示す処理状況カウンタ1303は、減算カウンタによって、演算処理が終了するまでの残り時間を示す。具体的には、演算処理が開始された場合、処理状況カウンタ1303には演算時間が格納される。そして、調停部701が単位時間(本実施例において1clk)毎に処理状況カウンタ1303の値を減算する。処理状況カウンタ1303に“0”が格納されるエントリは、演算部1301が示す演算部703は演算処理を終了したことを示す。また、処理状況カウンタ1303に“0”以外の正の数が格納されるエントリは、演算部1301が示す演算部703は演算処理中であることを示す。
A
以下において、処理状況カウンタ1303が減算カウンタである場合の処理を記載するが、処理状況カウンタ1303は加算カウンタによって、演算処理が開始されてから経過した時間を示してもよい。この場合、調停部701は、所定の演算時間と処理状況カウンタ1303とを比較することによって、演算処理の状況を取得しても良い。
In the following, the processing in the case where the
以下に、振分部502が実行する振分け処理S950について説明する。図9は、本実施例1の振分部502が実行する振分け処理S950を示すフローチャートである。
The distribution process S950 executed by the
振分部502は、入出力回線インタフェース201から入力パケットを受信した場合(複数の入力パケットを同時に受信する場合もある)(S900)、内部カウンタの値(本カウンタは1〜Nの値を取り、Nの次は1に戻る)が示す番号から、パケットを受信した順番に分散処理部503(503−1〜503−N)にパケットを転送する(S901)。S901の後、振分部502は、内部カウンタの値を受信したパケット数分カウントアップし(S902)、図9に示す振分け処理S950を終了する(S903)。
When receiving an input packet from the input / output line interface 201 (a plurality of input packets may be received simultaneously) (S900), the allocating
以下に、入力ヘッダ解析部601が実行するヘッダ解析処理S1050について説明する。図10は、本実施例1の入力ヘッダ解析部601が実行するヘッダ解析処理S1050を示すフローチャートである。
Hereinafter, the header analysis process S1050 executed by the input
入力ヘッダ解析部601は、振分部502から入力パケットを受信した場合(S1000)、入力パケットに含まれる装置内ヘッダ3からパケット長303の値を取得する(S1001)。S1001の後、受信した入力パケットの403に基づいて、パケット4のフローを識別し、これによって、出力NIF IDを決定する(S1002)。S1002の後、入力ヘッダ解析部601は、処理開始トリガ、フローID、及び、取得パケット長を集中処理部505へ出力する(S1003)。S1003の後、入力ヘッダ解析部601は、入力パケットの装置内ヘッダ3の出力NIF ID301、及び、フローID302に値を格納し、入力ヘッダ処理部602へパケットを転送し(S1004)、図10に示すヘッダ解析処理S1050を終了する(S1005)。
When the input
以下に、本実施例1の出力判定処理部603が実行する出力判定処理S1150について説明する。図11は、本実施例1の出力判定処理部603が実行する出力判定処理S1150を示すフローチャートである。
The output determination process S1150 executed by the output
出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合(S1100)、集中処理部505から演算終了通知があるか否かを判定する(S1101)。S1101において、演算終了通知があると判定された場合、多重部504へパケットを転送し(S1102)、図11に示す出力判定処理S1150を終了する(S1104)。また、S1101において、演算終了通知がないと判定された場合、入力パケットを廃棄し(S1103)、図11に示す出力判定処理S1150を終了する(S1104)。
When the output
以下に、本実施例1の調停部701が実行する演算部選定調停処理S1250について説明する。図12は、本実施例1の調停部701が実行する演算部選定調停処理S1250を示すフローチャートである。
Hereinafter, the calculation unit selection arbitration process S1250 executed by the
調停部701は、分散処理部503(503−1〜503−N)から処理開始トリガを受信した場合(複数の処理開始トリガを同時に受信する場合もある)(S1200)、処理開始トリガと同時に受信するフローID、及び、パケット長を取得し、処理開始トリガの到着順を保持する(S1201)。S1201の後、調停部701は、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303の値が“0”と異なるか否かを判定する(S1202)。
The
S1202において、演算フロー管理リスト702の全てのエントリの処理状況カウンタが“0”と異なると判定された場合、全ての演算部703(703−1〜703−N)は、演算処理を実行中である。新規フローの場合の演算処理を受け付けることが出来ないため、調停部701は、入力パケットを廃棄判定し(S1203)、図12に示す演算部選定調停処理S1250を終了する(S1210)。
If it is determined in S1202 that the processing status counters of all entries in the calculation
また、S1202において、演算フロー管理リスト702のエントリのうち、処理状況カウンタ1303が“0”であるエントリが少なくとも1以上ある場合、全ての演算部703(703−1〜703−N)のうち少なくとも一つの演算部703は、演算処理を実行していない。このため、調停部701は、S1201において取得したフローIDの値を検索キー(フローID801)として統計情報テーブル704を検索し、受信パケット数802、及び、受信バイト数803の情報を取得する(S1204)。
If there is at least one entry whose
なお、S1202において、S1200で複数の処理開始トリガを同時に受信した場合は、調停部701は、演算部703において、処理開始トリガを受信したフロー分の数の演算部が処理可能かどうかを確認する。調停部701は、演算フロー管理リスト702のエントリのうち、処理状況カウンタ1303が“0”であるエントリがS1200で調停部701が同時に処理開始トリガを受信した複数フロー分ある場合、S1204の処理に進む。調停部701は、処理状況カウンタ1303が“0”であるエントリが、S1200で同時に処理開始トリガを受信した複数フロー分ない場合、S1203の処理に進む。また、処理状況カウンタ1303が“0”であるエントリがS1200で同時に処理開始トリガを受信した複数フロー分ない場合は、処理状況カウンタ1303が“0”であるエントリ分のフローについての処理はS1204の処理に進み、残りのフローの処理はS1203に進んでも良い。
In S1202, when a plurality of processing start triggers are received simultaneously in S1200, the
S1204の後、S1201において取得したフローIDの値と処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致するか否かを判定する(S1205)。
After S1204, it is determined whether or not the value of the flow ID acquired in S1201 and the
なお、S1205において、調停部701は、S1201において取得したフローIDの値に対応する値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致する場合、取得したフローIDの値に対応する値と処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値とが一致していると判定してもよい。
In S1205, when the value corresponding to the flow ID acquired in S1201 matches the value of the
S1205において、S1201で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致しないと判定された場合、調停部701は、演算処理を実行していない演算部に、入力パケットに関する演算処理を新規に実行させるため、S1208の処理を実行する。
In S1205, when it is determined that the value of the flow ID acquired in S1201 does not match the value of the
また、S1205において、S1201で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致すると判定された場合、入力パケットのフローIDに対応する演算部703は、入力パケットに関する演算処理を継続して実行できる。このため、調停部701は、取得したフローIDの値とフローID1302とが一致したエントリの演算部1301が示す演算部703を、入力パケットに関する演算処理を継続して実行する演算部703に決定する。
In S1205, when it is determined that the value of the flow ID acquired in S1201 matches the value of the
そして、調停部701は、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を、演算時間を示す値に更新する(S1206)。例えば、調停部701は、演算時間が10clkの場合、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を“10”に更新する。
Then, the arbitrating
S1206において処理状況カウンタ1303を更新することによって、調停部701は、各演算部703が演算処理を終了するまで実行していることを示す。
By updating the
S1206の後、調停部701は、S1201において処理開始トリガと同時に取得したフローのうち、フローIDが同じであった数、同じフローIDのパケット長の合算値を、それぞれ取得パケット数、取得パケット長としてフロー毎に保持する(S1211)。取得パケット数は、S1201において取得したフローIDが同じであった数、すなわち、同一フローIDの同時入力パケット数である。取得パケット長は、S1201において取得した同じフローIDのパケット長の合算値、すなわち、同一フローIDの同時入力パケットの合計パケット長である。
S1211の後、調停部701は、取得したフローIDの値とフローID1302の値とが一致した演算フロー管理リスト702のエントリの演算部1301が示す演算部703へ、処理開始トリガ、新規/継続パラメータ、取得パケット数、取得パケット長、受信パケット数、及び、受信バイト数を含む演算通知を出力する(S1207)。
After S1206, the
After S1211, the
S1207において、調停部701は、新規/継続パラメータを、継続を示す値に決定し、継続を示す新規/継続パラメータ(本実施例において“1”)を、演算通知に含める。本実施例における新規/継続パラメータとは、各演算部703にどのような演算処理を実行するかを通知するための値である。S1207の後、図12に示す演算部選定調停処理S1250を終了する(S1210)。
In S1207, the
S1205において、S1201で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致しないと判定された場合、調停部701は、処理状況カウンタ1303が“0”である演算フロー管理リスト1302のエントリのうち、演算部1301の値が最も若い番号のエントリを抽出する。調停部701は、抽出されたエントリの演算部1301が示す演算部703を、入力パケットに関する演算処理を新規に実行する演算部703に決定する。
In S1205, when it is determined that the value of the flow ID acquired in S1201 does not match the value of the
そして、調停部701は、抽出されたエントリのフローID1302を、S1201で取得したフローIDの値によって更新する。また、調停部701は、抽出されたエントリの処理状況カウンタ1303を、演算時間を示す値に更新する(S1208)。
Then, the arbitrating
なお、前述のS1208において、調停部701は、処理状況カウンタ1303が“0”である演算フロー管理リスト1302のエントリのうち、演算部1301の値が最も若い番号(小さい番号)のエントリを抽出したが、調停部701は、処理状況カウンタ1303が“0”である演算フロー管理リスト702のエントリのうちのいずれかであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、調停部701は、最も値が大きい番号のエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
S1208の後、調停部701は、S1201において取得したフローIDが同じであった数、S1201において取得した同じフローIDのパケット長の合算値を、それぞれ取得パケット数、取得パケット長として保持する(S1212)。
S1212の後、調停部701は、S1207及びS1209において決定された演算部703へ、処理開始トリガ、新規/継続パラメータ、取得パケット数、取得パケット長、受信パケット数、及び、受信バイト数を含む演算通知を出力する(S1209)。S1209において調停部701は、新規/継続パラメータを新規を示す値に決定し、新規を示す新規/継続パラメータ(本実施例において“0”)を、演算通知に含める。
In S1208 described above, the
After S1208, the arbitrating
After S <b> 1212, the
S1207及びS1209において、出力される演算通知に含まれる処理開始トリガは、演算部703が後述する統計情報処理S1550を開始することを示す値である。また、演算通知に含まれる取得パケット数は、S1211あるいはS1212において保持した取得パケット数である。また、演算通知に含まれる取得パケット長は、S1211あるいはS1212において保持した取得パケット長である。また、受信パケット数、及び、受信バイト数は、S1204において取得した受信パケット数、及び、受信バイト数である。
In S1207 and S1209, the processing start trigger included in the output calculation notification is a value indicating that the
また、S1207及びS1209において、同時に処理開始トリガを受信した同じフローIDのフローの入力パケット数、及び、その合計パケット長を、取得パケット数、及び、取得パケット長として一つの演算部703に出力する。よって、同じフローIDの入力パケットの処理開始トリガを集中処理部505で同時に受信しても、オーバーフローを発生することなく統計情報処理を実行可能である。
In S1207 and S1209, the number of input packets and the total packet length of the flows with the same flow ID that received the processing start trigger at the same time are output to one
S1209の後、図12に示す演算部選定調停処理S1250を終了する(S1210)。 After S1209, the calculation unit selection arbitration process S1250 shown in FIG. 12 is terminated (S1210).
以下に、調停部701が実行する演算フロー管理処理S1450について説明する。
The calculation flow management process S1450 executed by the
図14は、本実施例1の調停部701が実行する演算フロー管理処理S1450を示すフローチャートである。
FIG. 14 is a flowchart illustrating the calculation flow management process S1450 executed by the
調停部701は、1クロック毎に(S1400)、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303が0であるか否かを判定する(S1401)。
The
演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303が0であると、S1401において判定された場合、調停部701は、演算フロー管理処理S1450を終了する(S1403)。
If it is determined in S1401 that the
また、演算フロー管理リスト702のエントリに処理状況カウンタ1303が0でないエントリがあるとS1401において判定された場合、調停部701は、処理状況カウンタ1303の列に含まれる0以外の値から1を減算する(S1402)。S1402の後、調停部701は、演算フロー管理処理S1450を終了する(S1403)。
If it is determined in S1401 that the
以下に、演算部703(703−1〜703−N)が実行する統計情報処理S1550について説明する。 The statistical information processing S1550 executed by the calculation unit 703 (703-1 to 703-N) will be described below.
図15は、本実施例1の演算部703が実行する統計情報処理S1550を示すフローチャートである。
FIG. 15 is a flowchart illustrating the statistical information processing S1550 executed by the
演算部703は、調停部701から処理開始トリガを含む演算通知を受信した場合(S1500)、受信した演算通知に含まれる新規/継続パラメータ、取得パケット数、取得パケット長、受信パケット数、及び、受信バイト数を取得する(S1501)。
When the
S1501の後、演算部703は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S1502)。
After S1501, the
新規/継続パラメータが“0”である場合、すなわち、新規/継続パラメータが新規を示すとS1502において判定された場合、演算部703は、S1504の処理へ進む。
When the new / continuation parameter is “0”, that is, when it is determined in S1502 that the new / continuation parameter indicates new, the
新規/継続パラメータが“0”ではない場合、すなわち、新規/継続パラメータが継続を示すとS1502において判定された場合、演算部703は、演算部703が継続処理用に内部保持する前回演算結果(前回受信パケット数、及び、前回受信バイト数)を取得する(S1503)。継続処理用に内部保持される前回演算結果とは、統計情報処理が全て終了する前に次の統計情報処理を継続して実行するために、演算部703が、論理回路202に保持する演算結果である。S1503において、内部保持される前回演算結果を取得することによって、演算部703は、S1501において受信した演算通知に含まれる受信パケット数、及び、受信バイト数を更新し、S1504の処理へ進む。調停部が、同一フローを処理している演算部に処理を割り当て、演算部の内部に保持される前回演算結果を用いることによって、同じフローの入力パケットを連続して受信しても、オーバフローを発生することなく、正常に統計情報処理を実行可能である。
If the new / continuation parameter is not “0”, that is, if it is determined in S1502 that the new / continuation parameter indicates continuation, the
S1502(新規/継続パラメータが“0”である場合)又はS1503の後、演算部703は、受信パケット数(S1501において演算通知と同時に取得した受信パケット数、又は、S1503において取得した前回受信パケット数)に、S1501において演算通知と同時に取得した取得パケット数分を加算する。また、演算部703は、受信バイト数(S1501において取得した受信バイト数、又は、S1503において取得した前回受信バイト数)に、S1501において演算通知と同時に取得した取得パケット長分を加算する。
After S1502 (when the new / continuation parameter is “0”) or S1503, the
そして、演算部703は、加算結果を、更新された受信パケット数、及び、受信バイト数として取得し、取得した、更新された受信パケット数、及び、受信バイト数を含む演算終了通知を調停部701に転送する(S1504)。
Then, the
S1504の後、演算部703は、更新した受信パケット数、及び、更新した受信バイト数を、前回受信パケット数及び前回受信バイト数として次パケットの継続処理用に内部保持する(S1505)。
After S1504, the
S1505の後、演算部703は、統計情報処理S1550を終了する(S1506)。
After S1505, the
以下に、調停部701が実行する更新調停処理S1650について説明する。
Below, update mediation processing S1650 which
図16は、本実施例1の調停部701が実行する更新調停処理S1650を示すフローチャートである。
FIG. 16 is a flowchart illustrating the update arbitration process S1650 executed by the
調停部701は、演算部703(703−1〜703−N)から演算終了通知を受信した場合(S1600)、受信した演算終了通知に含まれる受信パケット数、及び、受信バイト数を取得し、統計情報テーブル704に書き戻す(S1601)。ここで、従来技術では、受信したフロー数の回数分、統計情報テーブルへの書き戻しを行うが、本実施例では、同時に処理開始トリガを受信した同じフローIDのフローの取得パケット数、及び、取得パケット長の合計値を用いて一つの演算部703で統計情報処理を行う。従って、従来技術よりも書き戻しの回数を削減することが出来る。
When the
S1601の後、調停部701は、演算部選定調停処理S1250において保持した処理開始トリガの到着順から、処理開始トリガの送信元の分散処理部503(503−1〜503−N)を特定し、特定した分散処理部503へ演算終了通知を転送する(S1602)。
After S1601, the
S1602の後、調停部701は、更新調停処理S1650を終了する(S1603)。
After S1602, the
前述のとおり、実施例1によれば、パケット通信装置2は、調停部701において、ラウンドロビンで各分散処理部503(503−1〜503−N)に振分けられたパケットの情報を集約し、演算部703(703−1〜703−N)へ通知する。これによって、実施例1の演算部703は、同一フローのパケットに関する統計カウント処理を同時に実行することが可能である。
As described above, according to the first embodiment, the
従って、実施例1によれば、マルチコア化されたパケット処理エンジンにおいて、1つの分散処理部への負荷集中による性能劣化を抑えることができる。さらに、分散処理部を増設することでスケーラブルにパケット処理エンジンの高速化が可能となる。 Therefore, according to the first embodiment, performance degradation due to load concentration on one distributed processing unit can be suppressed in the multi-core packet processing engine. Furthermore, by increasing the number of distributed processing units, it is possible to speed up the packet processing engine in a scalable manner.
なお、実施例1では、振分部502は、入力パケット単位で分散処理部503(503−1〜503−N)へ入力パケットを振分けたが、後述するフラグメントヘッダ5を付与し、入力パケットを断片化して分散処理部503へ入力パケットを振分けても良い。
In the first embodiment, the
図17は、本実施例1のパケットに付加されるフラグメントヘッダ5のフォーマットを示す説明図である。
FIG. 17 is an explanatory diagram showing the format of the
図17に示すフラグメントヘッダ5のフォーマットは一例であり、本実施例において用いられるフラグメントヘッダは、いかなる情報を含んでもよい。
The format of the
フラグメントヘッダ5は、総フラグメント数1701、シーケンス番号1702、及び、フラグメント長1703を含む。
The
総フラグメント数1701は、入力パケット(装置内ヘッダ3が付与されたパケット4)が断片化された総数が設定される。シーケンス番号1702は、断片化された入力パケットの順番が設定される。フラグメント長1703は、断片化された入力パケットの長さが設定される。
The total number of
図18は、本実施例1のパケットのフラグメント処理の概要を示す説明図である。 FIG. 18 is an explanatory diagram illustrating an outline of packet fragment processing according to the first embodiment.
振分部702は、受信した入力パケットを断片化し、フラグメントヘッダ5を付加して分散処理部503(503−1〜503−N)に転送する。
The
多重部504は、分散処理部503(503−1〜503−N)から断片化された入力パケットを受信した場合、装置内ヘッダ5の総フラグメント数1701、シーケンス番号1702、及び、フラグメント長1703を参照し、入力パケットを再構築しても良い。
When the
また、振分部502は、入力パケットのヘッダ部分(例えば、宛先MACアドレス401からイーサタイプ値404まで)のみを分散処理部503へ振分け、残りのペイロード部分は多重部504へ転送し、分散処理部503の処理が終了するまで待合せておいても良い。
The
多重部504は、分散処理部503(503−1〜503−N)から入力パケットのヘッダ部分を受信した場合、待合せておいた残りのペイロード部分を受信し、入力パケットを再構築しても良い。
When the
以下、本実施例2について図19から図24を用いて説明する。なお、以下に述べる実施例2は本発明の実施例の一つであって、本発明を制限するものではない。 Hereinafter, the second embodiment will be described with reference to FIGS. The second embodiment described below is one of the embodiments of the present invention and does not limit the present invention.
実施例1におけるパケット通信装置2は、本発明の集中・分散処理方法を実装し、統計カウント処理を実行した。実施例2におけるパケット通信装置は、さらに、入力パケットの帯域に応じて利用する分散処理部の数を変更する。実施例2において、入力パケットの帯域を監視するため、パケット通信装置の入力パケット制御部は、帯域監視部を備える。
The
図19は、本実施例2の入力パケット制御部1900の論理的な構成を示すブロック図である。 FIG. 19 is a block diagram illustrating a logical configuration of the input packet control unit 1900 according to the second embodiment.
実施例2の入力パケット制御部1900は、帯域監視バッファ19、帯域監視部1901、振分部1902、分散処理部管理リスト119、複数の分散処理部503(503−1〜503−N)(Nは任意の自然数)、多重部1904、及び、集中処理部505を備える。
The input packet control unit 1900 according to the second embodiment includes a
実施例2における、分散処理部503、及び、集中処理部505は、実施例1における、分散処理部503、及び、集中処理部505と同じである。
The distributed
帯域監視バッファ19は、入力パケットを格納するために使用される。
The
帯域監視部1901は、入力パケット制御部1900が入出力回線インタフェース201から入力パケットを受信した場合、後述する帯域監視バッファ書込み処理S2050を実行し、入力パケットを帯域監視バッファ19に格納する処理部である。
When the input packet control unit 1900 receives an input packet from the input /
また、帯域監視部1901は、振分部1902からパケット読出し要求を受信した場合、後述する帯域監視バッファ読出し処理S2250を実行し、帯域監視バッファ19から入力パケットを読出し、入力パケットを振分部1902へ転送する処理部である。
When the
さらに、帯域監視部1901は、帯域監視バッファ19に蓄積されたパケット量に応じて、利用する分散処理部の数(後述するX)(Xは1〜Nの任意の自然数)を決定する。
Further, the
振分部1902は、帯域監視部1901からパケット送信要求を受信した場合、後述する振分け処理S2350を実行する処理部である。振分部1902は、振分け処理S2350において、パケット処理を実行する分散処理部503を、分散処理部503−1〜分散処理部503−Xから決定する。なお、Xは、帯域監視部1901により決定される。
The
分散処理部管理リスト119は、振分部1902が入力パケットを振分けた分散処理部503(503−1〜503−N)のIDと、分散処理部503の処理状況とを示す。
The distributed processing unit management list 119 indicates the ID of the distributed processing unit 503 (503-1 to 503-N) to which the
多重部1904は、各分散処理部503から受信したパケットを多重し、到着順にSWインタフェース205に送信する。また、多重部1904は、帯域監視部1901により決定される利用する分散処理部の数Xに応じて、多重するパケットが、利用している分散処理部から受信しているかどうか、到着順を管理する。
The
図24は、本実施例2の分散処理部管理リスト119を示す説明図である。 FIG. 24 is an explanatory diagram illustrating the distributed processing unit management list 119 according to the second embodiment.
分散処理部管理リスト119は、分散処理部2401、及び、処理状況カウンタ2402を含む。
The distributed processing unit management list 119 includes a distributed
分散処理部2401は、分散処理部503−1〜503−Nを一意に示す識別子を含む。本実施例の分散処理部2401は、分散処理部503を数値によって識別する値を含む。分散処理部2401に格納される値は、管理者等によってあらかじめ設定される。
The distributed
処理状況カウンタ2402は、分散処理部503におけるパケット処理の状況を示す値を含む。本実施例の処理状況カウンタ2402は、パケット処理が開始されてから経過した実行時間に関する値を含む。
The
以下に示す処理状況カウンタ2402は、実施例1の演算フロー管理処理S1450と同様に、減算カウンタによって、パケット処理が終了するまでの残り時間を示す。具体的には、パケット処理が開始された場合、処理状況カウンタ2402にはパケット処理時間が格納される。そして、振分部1902が単位時間(本実施例において1clk)毎に処理状況カウンタ2402の値を減算する。
The
処理状況カウンタ2402に“0”が格納されるエントリは、分散処理部2401が示す分散処理部503はパケット処理を終了したことを示す。また、処理状況カウンタ2402に“0”以外の正の数が格納されるエントリは、分散処理部2401が示す分散処理部503はパケット処理中であることを示す。
An entry in which “0” is stored in the
以下において、処理状況カウンタ2402が減算カウンタである場合の処理を記載するが、処理状況カウンタ2402は加算カウンタによって、パケット処理が開始されてから経過した時間を示してもよい。この場合、振分部1902は、所定のパケット処理時間と処理状況カウンタ2402とを比較することによって、パケット処理の状況を取得しても良い。
In the following, the processing when the
以下に、帯域監視部1901が実行する帯域監視バッファ書込み処理S2050について説明する。
The bandwidth monitoring buffer write process S2050 executed by the
図20は、本実施例2の帯域監視部1901が実行する帯域監視バッファ書込み処理S2050を示すフローチャートである。
FIG. 20 is a flowchart illustrating the bandwidth monitoring buffer write processing S2050 executed by the
帯域監視部1901は、入出力回線インタフェース201から入力パケットを受信した場合(複数の入力パケットを同時に受信する場合もある)(S2000)、装置内ヘッダ3からパケット長303を取得する(S2001)。
When receiving an input packet from the input / output line interface 201 (a plurality of input packets may be received simultaneously) (S2000), the
S2001の後、帯域監視部1901は、S2001で取得したパケット長と帯域監視バッファ19の蓄積量(後述するパケット蓄積量21)の合計が、帯域監視バッファ19のバッファサイズ以下であるか否かを判定する(S2002)。
After S2001, the
S2002において、S2001で取得したパケット長と帯域監視バッファ19の蓄積量の合計が、帯域監視バッファ19のバッファサイズ以下である場合、帯域監視部1901は、蓄積パケット数に受信したパケット数分を加算し、パケット蓄積量21に取得したパケット長を加算して更新し、帯域監視バッファ19に受信したパケットを格納する(S2003)。
In S2002, when the sum of the packet length acquired in S2001 and the accumulated amount of the
S2005の後、帯域監視部1901は、帯域監視バッファ書込み処理S2050を終了する(S2005)。
After S2005, the
また、S2002において、S2001で取得したパケット長と帯域監視バッファ19の蓄積量の合計が、帯域監視バッファ19のバッファサイズ以下でない場合、帯域監視部1901は、パケットを廃棄し(S2004)、帯域監視バッファ書込み処理S2050を終了する(S2005)。
In S2002, if the sum of the packet length acquired in S2001 and the accumulated amount of the
図21は、本実施例2の帯域監視バッファ19のパケット蓄積量21と利用分散処理部の数の関係を示す説明図である。
FIG. 21 is an explanatory diagram illustrating the relationship between the
帯域監視部1901は、帯域監視バッファ19に蓄積されたパケット数が1以上の時、振分部1902にパケット送信要求を通知する。
The
また、帯域監視部1901は、帯域監視バッファ19のパケット蓄積量21に応じて、利用する分散処理部503の数を示すX(Xは1〜Nの任意の自然数)を決定し、振分部1902、及び、多重部1904に利用分散処理部の数Xを通知する。帯域監視部1901は、パケット蓄積量21が少ない時は、Xの値を小さく(例えばN/4)し、パケット蓄積量21が多く、バッファサイズに近づいてきた時は、Xの値を大きく(例えばN)とする。
Further, the
以下に、帯域監視部1901が実行する帯域監視バッファ読出し処理S2250について説明する。
Hereinafter, the bandwidth monitoring buffer read process S2250 executed by the
図22は、本実施例2の帯域監視部1901が実行する帯域監視バッファ読出し処理S2250を示すフローチャートである。
FIG. 22 is a flowchart illustrating the bandwidth monitoring buffer read processing S2250 executed by the
帯域監視部1901は、振分部1902からパケット読出し要求を受信した場合(S2200)、蓄積パケット数から読み出したパケット数分を減算し、パケット蓄積量21から読み出したパケットのパケット長を減算して更新し、帯域監視バッファ19からパケットを読み出して振分部1902に送出する(S2201)。
When the
S2201の後、帯域監視部1901は、帯域監視バッファ読出し処理S2250を終了する(S2202)。
以下に、振分部1902が実行する振分け処理S2350について説明する。
After S2201, the
The distribution process S2350 executed by the
図23は、本実施例2の振分部1902が実行する振分け処理S2350を示すフローチャートである。
FIG. 23 is a flowchart illustrating the distribution process S2350 executed by the
振分部1902は、帯域監視部1901からパケット送信要求を受信した場合(S2300)、分散処理部管理リスト119の#1〜#Xの全てのエントリの処理状況カウンタ2402の値が“0”と異なるか否かを判定する(S2301)。
If the
S2301において、分散処理部管理リスト119の#1〜#Xの全てのエントリの処理状況カウンタ2402が“0”と異なると判定された場合、#1〜#Xの全ての分散処理部503(503−1〜503−X)は、パケット処理を実行中である。新規パケット処理を受け付けることが出来ないため、振分部1902は、S2301の処理に戻り、#1〜#Xのいずれかの分散処理部503の処理が終了するのを待つ。
If it is determined in S2301 that the processing status counters 2402 of all
また、S2301において、分散処理部管理リスト119の#1〜#Xのエントリのうち、処理状況カウンタ2402が“0”であるエントリが少なくともひとつある場合、#1〜#Xの全ての分散処理部503(503−1〜503−X)のうち少なくとも一つの分散処理部503は、パケット処理を受け付けられる状態にある。このため、振分部1902は、帯域監視部1901にパケット読出し要求を通知し、帯域監視部1901からパケットを受信する(S2302)。
If there is at least one entry whose
S2302の後、内部カウンタの値(本カウンタは1〜Xの値を取り、Xの次は1に戻る)が示す番号から、パケットを受信した順番に分散処理部503(503−1〜503−X)にパケットを転送する(S2303)。 After S2302, from the number indicated by the value of the internal counter (this counter takes a value of 1 to X and returns to 1 next to X), the distributed processing units 503 (503-1 to 503-503) are received in the order in which the packets are received. The packet is transferred to (X) (S2303).
S2303の後、振分部1902は、内部カウンタの値を受信したパケット数分カウントアップする(S2304)。
After S2303, the
なお、Xは、帯域監視部1901から通知される利用分散処理部の数により決定される値であり、帯域監視バッファ19のパケット蓄積量21に応じて変動する。振分け処理S2350においては、Xの値の変更を反映するタイミングを、後述する内部カウンタの値がXから1にもどる(ラップアラウンドする)時としても良い。また、多重部1904も、振分部1902と同様に内部カウンタ(本カウンタは1〜Xの値を取り、Xの次は1に戻る)を具備し、内部カウンタの番号が示す分散処理部503(503−1〜503−X)から順番にパケットを多重し、Xの値の変更を反映するタイミングを、後述する内部カウンタの値がXから1にもどる(ラップアラウンドする)時としても良い。また、多重部1904は、内部カウンタの番号が示す分散処理部と異なる分散処理部からパケットを受信した場合、パケットを廃棄しても良い。
X is a value determined by the number of usage distribution processing units notified from the
S2304の後、帯域監視部1901からのパケット送信要求が終了しているか否かを判定する(S2305)。
After S2304, it is determined whether or not the packet transmission request from the
S2305において、帯域監視部1901からのパケット送信要求が終了していない場合、振分部1902は、S2301の処理に戻る。
If the packet transmission request from the
また、S2305において、帯域監視部1901からのパケット送信要求が終了している場合、振分部1902は、図23に示す振分け処理S2350を終了する(S2306)。
If the packet transmission request from the
前述のとおり、実施例2によれば、パケット通信装置2は、帯域監視部1901において、振分部1902がラウンドロビンでパケットを振分ける分散処理部503(503−1〜503−X)(Xは1〜Nの任意の自然数)の数を変更し、決定した分散処理部503の数を振分部1902、及び、多重部1904へ通知する。これによって、実施例2の入力パケット制御部1900は、入力パケットの帯域に応じて利用する分散処理部の数を変更しつつ、演算部703は、同一フローのパケットに関する統計カウント処理を同時に実行することが可能である。
As described above, according to the second embodiment, the
従って、実施例2によれば、マルチコア化されたパケット処理エンジンにおいて、1つの分散処理部への負荷集中による性能劣化を抑えることができる。さらに、分散処理部を増設することでスケーラブルにパケット処理エンジンの高速化が可能となる。さらに、入力帯域が小さい時は、利用する分散処理部の数を減らすことで、消費電力を低減することが可能となる。 Therefore, according to the second embodiment, performance degradation due to load concentration on one distributed processing unit can be suppressed in a multi-core packet processing engine. Furthermore, by increasing the number of distributed processing units, it is possible to speed up the packet processing engine in a scalable manner. Furthermore, when the input bandwidth is small, it is possible to reduce power consumption by reducing the number of distributed processing units to be used.
実施例1におけるパケット通信装置2は、本発明の集中・分散処理方法を実装し、統計カウント処理を実行した。実施例3におけるパケット通信装置は、各入力パケットに基づいて帯域制御を行う。実施例3において、帯域制御機能を実現するため、パケット通信装置は、トークンバケツアルゴリズムを使用する。
The
以下に、トークンバケツアルゴリズムの動作概要を説明する。 The operation outline of the token bucket algorithm will be described below.
トークンバケツアルゴリズムを使用する場合、パケット通信装置は、設定された帯域に対応する速度でトークンバケツ(メモリに保持された所定の領域)にトークンを加算する。そして、パケット通信装置は、パケット通信装置が送信する予定のパケットのパケット長分のトークンがトークンバケツに蓄積されている場合、保証帯域内と判定し、パケット長分のトークンをトークンバケツから減算する。また、パケット通信装置は、パケット通信装置が送信する予定のパケットのパケット長分のトークンがトークンバケツに蓄積されていない場合、保証帯域外であると判定し、トークンは保持し、パケット長分のトークンをトークンバケツから減算しない。 When the token bucket algorithm is used, the packet communication apparatus adds tokens to the token bucket (a predetermined area held in the memory) at a speed corresponding to the set bandwidth. When the token for the packet length of the packet scheduled to be transmitted by the packet communication apparatus is accumulated in the token bucket, the packet communication apparatus determines that the token is within the guaranteed bandwidth, and subtracts the token for the packet length from the token bucket. . Further, the packet communication device determines that the token for the packet length of the packet to be transmitted by the packet communication device is not stored in the token bucket, and determines that the packet is out of the guaranteed bandwidth, holds the token, and stores the token for the packet length. Do not subtract tokens from token buckets.
本実施例におけるパケット到着間隔とパケット処理時間(タイミング)との関係の概要を以下に示す。 An outline of the relationship between the packet arrival interval and the packet processing time (timing) in this embodiment is shown below.
図33Cは、本実施例3のパケット処理において、同一フローのパケットが振分処理に複数同時に到着する際のパケット処理のタイミングを示す説明図である。 FIG. 33C is an explanatory diagram illustrating packet processing timing when a plurality of packets of the same flow arrive at the sorting process simultaneously in the packet processing of the third embodiment.
本実施例3では、本実施例1の図33Bと比較し、集中処理部の処理が異なる。 In the third embodiment, the processing of the central processing unit is different from that in FIG. 33B of the first embodiment.
集中処理部は、各分散処理部(#1と#2)から取得した情報をもとに、第1のパケットに関する帯域演算と、第2のパケットに関する帯域演算とを同時に実行する(T3302)。ここで、本実施例では、1パケット毎にトークンバケツアルゴリズムを使用して帯域演算するため、第2のパケットに関する帯域演算は、第1のパケットのパケット長分のトークンを減算し、トークンを補正して計算する。この補正に関する詳細は後述する。 Based on the information acquired from each of the distributed processing units (# 1 and # 2), the central processing unit simultaneously performs the bandwidth calculation for the first packet and the bandwidth calculation for the second packet (T3302). Here, in this embodiment, bandwidth calculation is performed using the token bucket algorithm for each packet, so the bandwidth calculation for the second packet subtracts the token for the packet length of the first packet and corrects the token. And calculate. Details regarding this correction will be described later.
また、集中処理部は、各分散処理部(#3と#4)から取得した情報をもとに、第3のパケットに関する帯域演算と、第4のパケットに関する帯域演算とを同時に実行する(T3303)。 Further, the central processing unit simultaneously performs the bandwidth calculation for the third packet and the bandwidth calculation for the fourth packet based on the information acquired from each of the distributed processing units (# 3 and # 4) (T3303). ).
従って、本実施例では、集中処理部にパケットの情報を集約し、同一フローのパケットを纏めて処理することで、複数の同一フローのパケットが振分処理に同時に到着した場合でも、帯域制御機能のようにパケット到着毎に同じフローの情報を更新する必要がある機能を実現することが出来る。 Therefore, in this embodiment, the centralized processing unit collects packet information and processes the packets of the same flow collectively, so that even when a plurality of packets of the same flow arrive at the distribution process at the same time, the bandwidth control function Thus, a function that needs to update the same flow information every time a packet arrives can be realized.
以下、本実施例3について図25から図31を用いて説明する。なお、以下に述べる実施例3は本発明の実施例の一つであって、本発明を制限するものではない。 Hereinafter, the third embodiment will be described with reference to FIGS. The third embodiment described below is one of the embodiments of the present invention and does not limit the present invention.
図25は、本実施例3の集中処理部2505の論理的な構成を示すブロック図である。 FIG. 25 is a block diagram illustrating a logical configuration of the central processing unit 2505 according to the third embodiment.
実施例3の集中処理部2505は、調停部2501、演算フロー管理リスト702、複数の演算部2503(2503−1〜2503−N)(Nは任意の自然数)、帯域設定テーブル2504、及び、演算結果保持テーブル2514を備える。
The central processing unit 2505 of the third embodiment includes an
実施例3における、演算フロー管理リスト702は、処理状況カウンタ1303に保持する実行時間(実施例1における統計情報処理と、実施例3における帯域制御処理の実行時間の差)を除き、実施例1における演算フロー管理リスト702と同じである。
The calculation
調停部2501は、分散処理部5503(5503−1〜5503−N)から処理要求を受信した場合、後述する演算部選定調停処理S2850を実行する処理部である。調停部2501は、分散処理部5503から受信するフローIDによりフローを識別し、さらに、演算フロー管理リスト702を参照する。そして、これによって、入力パケットに関する帯域制御処理を実行する演算部2503を、演算部2503−1〜演算部2503−Nから決定する。
When receiving a processing request from the distributed processing unit 5503 (5503-1 to 5503-N), the
また、調停部2501は、演算フロー管理リスト702を、論理回路210に備わるメモリ等に保持する。そして、調停部2501は、演算部選定調停処理S2850及び演算フロー管理処理S1450において、演算フロー管理リスト702を更新する。
In addition, the
さらに、調停部2501は、演算部2503から演算終了通知を受信した場合、後述する更新調停処理S3050を実行する処理部である。調停部2501は、演算部2503が更新した帯域制御情報から演算結果保持テーブル2514に書き戻す情報を選択し、処理要求を送信してきた分散処理部5503に演算終了通知を転送する。
Further, the
演算部2503は、後述する帯域演算処理S2950において、演算結果保持テーブル2514に含まれる各フローの情報を更新する。また、演算部2503は、帯域演算処理S2950において更新した結果を、調停部2501に送信する。演算部2503は、集中処理部2505にN個(Nは任意の自然数)備わる。
The
図26は、本実施例3の帯域設定テーブル2504を示す説明図である。 FIG. 26 is an explanatory diagram of a bandwidth setting table 2504 according to the third embodiment.
帯域設定テーブル2504に格納される値は、演算部2503がトークンアルゴリズムを実行するために用いる設定値であり、管理者等によってあらかじめ定められる値である。帯域設定テーブル2504は、フローID2601、周期加算トークン値2602、及び、トークンバケツの深さ2603を含む。
The value stored in the bandwidth setting table 2504 is a setting value used by the
フローID2601は、入力パケットに割り当てられたフローを一意に示す識別子を含む。周期加算トークン値2602は、単位時間あたりにトークンバケツに追加されるトークン量(単位時間あたりに蓄積される保証帯域に相当)を示す。トークンバケツの深さ2603は、トークンバケツが保持できる最大のトークン量を示す。
The
図27は、本実施例3の演算結果保持テーブル2514を示す説明図である。 FIG. 27 is an explanatory diagram of an operation result holding table 2514 according to the third embodiment.
演算結果保持テーブル2514は、パケットを保証帯域によって送信できるか否かを判定するための演算結果を保持するテーブルである。演算結果保持テーブル2514は、フローID2701、前回パケット到着時刻2702、及び、保持トークン値2703を含む。フローID2701は、入力パケットに割り当てられたフローを一意に示すフローIDを含む。前回パケット到着時刻2702は、演算部2503において前回実行された帯域演算処理が実行された時刻を示す。保持トークン値2703は、前回実行された帯域演算処理によって算出された、トークンバケツに蓄積されるトークン量を示す。すなわち、前回パケット到着時刻2702は、保持トークン値2703に格納される値を算出した時刻を示す。
The calculation result holding table 2514 is a table that holds calculation results for determining whether or not a packet can be transmitted in the guaranteed bandwidth. The calculation result holding table 2514 includes a
以下に、調停部2501が実行する演算部選定調停処理S2850について説明する。
Hereinafter, the calculation unit selection arbitration process S2850 executed by the
図28は、本実施例3の調停部2501が実行する演算部選定調停処理S2850を示すフローチャートである。
FIG. 28 is a flowchart illustrating the calculation unit selection arbitration process S2850 executed by the
調停部2501は、分散処理部5503(5503−1〜5503−N)から処理開始トリガを受信した場合(複数の処理開始トリガを同時に受信する場合もある)(S2800)、処理開始トリガと同時に受信するフローID、及び、パケット長を取得し、処理開始トリガの到着順を保持する(S2801)。
The
S2801の後、調停部2501は、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303の値が“0”と異なるか否かを判定する(S2802)。
After S2801, the
S2802において、演算フロー管理リスト702の全てのエントリの処理状況カウンタが“0”と異なると判定された場合、全ての演算部2503(2503−1〜2503−N)は、演算処理を実行中である。新規フローの場合の演算処理を受け付けることが出来ないため、調停部2501は、入力パケットを廃棄判定し(S2803)、図28に示す演算部選定調停処理S2850を終了する(S2811)。
If it is determined in S2802 that the processing status counters of all entries in the calculation
また、S2802において、演算フロー管理リスト702のエントリのうち、処理状況カウンタ1303が“0”であるエントリが少なくとも一つある場合、全ての演算部2503(2503−1〜2503−N)のうち少なくとも一つの演算部2503は、演算処理を実行していない。このため、調停部2501は、S2801において取得したフローIDの値を検索キー(フローID2601)として帯域設定テーブル2504を検索し、周期加算トークン値2602、及び、トークンバケツの深さ2603の情報を取得する(S2804)。
If there is at least one entry whose
S2804の後、調停部2501は、S2801において取得したフローIDの値を検索キー(フローID2701)として演算結果保持テーブル2514を検索し、前回パケット到着時刻2702、及び、保持トークン値2703の情報を取得する(S2805)。
After S2804, the
なお、S2802において、調停部2501がS2800で複数の処理開始トリガを同時に受信した場合は、その複数フロー分の演算が可能かどうかを確認する。演算フロー管理リスト702のエントリのうち、処理状況カウンタ1303が“0”ではないエントリが、S2800で同時に処理開始トリガを受信した数分ある場合、S2804の処理に進む。処理状況カウンタ1303が“0”であるエントリがS2800で同時に処理開始トリガを受信した複数フロー分ない場合、S2803の処理に進む。また、処理状況カウンタ1303が“0”であるエントリがS2801で同時に受信した処理開始トリガの数分ない場合は、処理状況カウンタ1303が“0”であるエントリ分はS2804の処理に進み、残りのフローはS2803に進んでも良い。
In S2802, if the
S2805の後、S2801において取得したフローIDの値が処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致するか否かを判定する(S2806)。
After S2805, it is determined whether or not the value of the flow ID acquired in S2801 matches the value of the
なお、S2806において、調停部2501は、S2801において取得したフローIDの値に対応する値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致する場合、取得したフローIDの値に対応する値と処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値とが一致していると判定してもよい。
In S2806, if the value corresponding to the value of the flow ID acquired in S2801 matches the value of the
S2806において、S2801で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致しないと判定された場合、調停部2501は、演算処理を実行していない演算部に、入力パケットに関する演算処理を新規に実行させるため、S2809の処理を実行する。
In S2806, when it is determined that the value of the flow ID acquired in S2801 does not match the value of the
S2806において、S2801で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致しないと判定された場合、調停部2501は、処理状況カウンタ1303が“0”である演算フロー管理リスト702のエントリのうち、演算部1301の値が若い番号から順番にエントリを抽出する。調停部2501は、抽出されたエントリの演算部1301が示す演算部2503を、入力パケットに関する演算処理を新規に実行する演算部2503に決定する。
In S2806, when it is determined that the value of the flow ID acquired in S2801 does not match the value of the
本実施例においては、1パケット毎の帯域制御結果を取得するため、同じフローIDの複数のパケットを調停部2501が同時に取得した場合、それぞれのパケットを別々の演算部2503で処理する。このため、調停部2501は、同時に取得した同じフローIDのそれぞれのパケットを演算フロー管理リスト702の別々のエントリで管理する。
In the present embodiment, in order to acquire the bandwidth control result for each packet, when the
例えば、調停部2501は、同じフローIDの第1のパケット及び第2のパケットに関する処理トリガを同時に取得し、演算処理を新規に実行すると判定した場合、演算フロー管理リスト702から2つのエントリを抽出し、抽出されたエントリの演算部1301が示す演算部2503を、それぞれ第1のパケットあるいは第2のパケットに関する演算処理を新規に実行する演算部2503に決定する。そして、調停部2501は、抽出されたエントリのフローID1302を、S2801で取得したフローIDの値によって更新する。また、調停部2501は、抽出されたエントリの処理状況カウンタ1303を、演算時間を示す値に更新する(S2809)。例えば、調停部2501は、演算時間が10clkの場合、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を“10”に更新する。
For example, when the
S2809において処理状況カウンタ1303を更新することによって、調停部2501は、各演算部2503が演算処理を終了するまで実行していることを示す。
By updating the
なお、前述のS2809において、調停部2501は、処理状況カウンタ1303が“0”である演算フロー管理リスト1302のエントリのうち、演算部1301の値が若い番号(小さい番号)から順番にエントリを抽出したが、調停部2501は、処理状況カウンタ1303が“0”である演算フロー管理リスト702のエントリのうちのいずれかであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、調停部2501は、値が大きい番号から順番にエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
S2809の後、調停部2501は、同じフローIDの複数の処理開始トリガを同時に取得した場合に使用するトークン補正量を決定して保持する(S2813)。トークン補正量は、調停部2501で同じフローIDの複数のパケットを同時に取得した場合に使用され、後述する帯域演算処理S2950を用いて、入力パケットの到着毎にトークン演算を実施したように計算するために補正するための値である。
In S2809 described above, the
After S2809, the
例えば、調停部2501は、同じフローIDの複数のパケットに関する処理開始トリガを同時に取得しない場合は、トークン補正量を0とする。同じフローIDの複数のパケット(第1のパケット及び第2のパケットとする。)に関する処理開始トリガを同時に取得した場合は、調停部2501は、第1のパケットに関する処理をすると決定された演算部2503向けのトークン補正量を0とし、第2のパケットに関する処理をすると決定された演算部2503向けのトークン補正量を第1のパケットのパケット長とする。さらに、同じフローIDの複数のパケット(第1のパケット、第2のパケット、及び第3のパケット、とする)に関する処理トリガを同時に取得した場合は、調停部2501は、第3のパケットに関する処理をすると決定された演算部2503向けのトークン補正量を第1のパケットのパケット長に第2のパケットのパケット長を加算した値とする。以下、同様に、同じフローIDの複数のパケット(第1のパケット、第2のパケット、第3のパケット、及び第4のパケット、とする)に関する処理トリガを同時に取得した場合は、調停部2501は、第4のパケットに関する処理をすると決定された演算部2503向けのトークン補正量を第1のパケットのパケット長に第2のパケットのパケット長と第3のパケットのパケット長を加算した値とする。
For example, the
S2813の後、調停部2501は、決定された演算部2503へ、処理開始トリガ、新規/継続パラメータ、取得パケット長、テーブル取得結果、及び、トークン補正量を含む演算通知を出力する(S2810)。
After S2813, the
S2810において、調停部2501は、新規/継続パラメータを新規を示す値に決定し、新規を示す新規/継続パラメータ(本実施例において“0”)を、演算通知に含める。本実施例における新規/継続パラメータとは、各演算部2503にどのような演算処理を実行するかを通知するための値である。
In S2810, the
また、S2810において、出力される演算通知に含まれる処理開始トリガは、演算部2503が後述する帯域演算処理S2950を開始することを示す値である。また、演算通知に含まれる取得パケット長は、S2801において取得したパケット長である。なお、本実施例では、同じフローIDの複数のパケットを同時に取得した場合でも、別々の演算部で処理を実行させるため、実施例1のようにパケット長を合算しない。
In S2810, the process start trigger included in the output calculation notification is a value indicating that the
また、S2810において、演算通知に含まれるテーブル取得結果は、S2804及びS2805において取得した周期加算トークン値、トークンバケツの深さ、前回パケット到着時刻、及び、保持トークン値である。また、S2810において、演算通知に含まれるトークン補正量は、S2813において保持したトークン補正量である。 In S2810, the table acquisition results included in the calculation notification are the periodic addition token value, the token bucket depth, the previous packet arrival time, and the retained token value acquired in S2804 and S2805. In S2810, the token correction amount included in the calculation notification is the token correction amount held in S2813.
調停部2501がトークン補正量を演算部2503に出力することによって、同じフローIDの入力パケットを同時に受信した場合でも、複数の各演算部2503が1パケット毎のトークン計算を実施することができ、正常に帯域演算処理を実行可能である。
The
S2810の後、図28に示す演算部選定調停処理S2850を終了する(S2811)。 After S2810, the calculation unit selection arbitration process S2850 shown in FIG. 28 ends (S2811).
また、S2806において、S2801で取得したフローIDの値が、処理状況カウンタ1303が“0”と異なるエントリのフローID1302の値と一致すると判定された場合、入力パケットのフローIDに対応する演算部2503は、入力パケットに関する演算処理を継続して実行できる。このため、調停部2501は、取得したフローIDの値とフローID1302とが一致したエントリの演算部1301が示す演算部2503を、入力パケットに関する演算処理を継続して実行する演算部2503に決定する。
If it is determined in S2806 that the value of the flow ID acquired in S2801 matches the value of the
そして、調停部2501は、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を、演算時間を示す値に更新する(S2807)。
Then, the
S2807の後、調停部2501は、S2813の処理と同様に、同じフローIDの処理開始トリガを複数同時に取得した場合に使用するトークン補正量を決定して保持する(S2812)。
S2812の後、調停部2501は、取得したフローIDの値とフローID1302の値とが一致した演算フロー管理リスト702のエントリの演算部1301が示す演算部2503へ、処理開始トリガ、新規/継続パラメータ、取得パケット長、テーブル取得結果、及び、トークン補正量を含む演算通知を出力する(S2808)。
After S2807, the
After S2812, the
S2808において、調停部2501は、同じフローIDのパケットに関する処理トリガが複数同時に到着した場合、S2812において保持したトークン補正量を出力することにより、複数の演算部2503が並行して1パケット毎のトークン計算を実施することができ、オーバーフローを発生することなく帯域演算処理を実行可能である。
In S2808, when a plurality of processing triggers regarding packets having the same flow ID arrive at the same time, the
S2808の後、図28に示す演算部選定調停処理S2850を終了する(S2811)。 After S2808, the calculation unit selection arbitration process S2850 shown in FIG. 28 is terminated (S2811).
以下、図29A及び図29Bによって、演算部2503(2503−1〜2503−N)が実行する帯域演算処理S2950について説明する。 Hereinafter, the band calculation processing S2950 executed by the calculation unit 2503 (2503-1 to 2503-N) will be described with reference to FIGS. 29A and 29B.
図29Aは、本実施例3の演算部2503が実行する帯域演算処理S2950のうち、入力パケットを受信するまでに蓄積されるべきトークン量を算出する処理を示すフローチャートである。
演算部2503は、調停部2501から処理開始トリガを含む振分け通知を受信した場合(S2900)、演算通知に含まれる新規/継続パラメータ、取得パケット長、テーブル取得結果(周期加算トークン量、トークンバケツの深さ、前回パケット到着時刻、及び、保持トークン値を含む)、及び、トークン補正量を取得する(S2901)。
FIG. 29A is a flowchart illustrating a process of calculating the token amount to be accumulated until the input packet is received, in the band calculation process S2950 executed by the
When the
S2901の後、演算部2503は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S2902)。
After S2901, the
新規/継続パラメータが“0”である場合、すなわち、新規/継続パラメータが新規を示すとS2902において判定された場合、演算部2503は、S2905の処理に進む。
If the new / continuation parameter is “0”, that is, if it is determined in S2902 that the new / continuation parameter indicates new, the
S2902において、新規/継続パラメータが“0”ではないと判定された場合、すなわち、新規/継続パラメータが継続を示すと判定された場合、演算部2503は、継続処理用に内部保持する前回テーブル更新時間を、前回パケット到着時刻として取得する(S2903)。
If it is determined in S2902 that the new / continuation parameter is not “0”, that is, if it is determined that the new / continuation parameter indicates continuation, the
S2903の後、演算部2503は、調停部2501から受信する継続処理用の保持トークン値を、保持トークン値として取得し(S2904)、S2905の処理に進む。
After S2903, the
S2905において、演算部2503は、調停部2501の演算部選定調停処理S2850において帯域設定テーブル2504を検索した時刻を、S2900において受信した処理開始トリガとの時間差より算出し、前回テーブル更新時間として次に受信する入力パケットの継続処理用に内部保持する(S2905)。
In S2905, the
S2905の後、演算部2503は、S2905において算出した帯域設定テーブル2504を検索した時刻と、S2901において取得した前回パケット到着時刻との差を、パケット到着間隔として算出する。そして、演算部2503は、算出されたパケット到着間隔と、S2901において取得した周期加算トークン値とを乗算することによって、加算トークン量を算出する(S2906)。
After S2905, the
S2906の後、演算部2503は、S2906において算出された加算トークン量を、S2901において取得した保持トークン値の値に加算し(S2907)、図29Bに示すS2908の処理に進む。
After S2906, the
S2907における加算結果は、入力パケットを受信するまでにトークンバケツに蓄積されていたトークン量である。 The addition result in S2907 is the token amount stored in the token bucket until the input packet is received.
S2902〜S2907の処理に他に、実施例3の演算部2503は、新規/継続パラメータの値に従って、異なる処理を行ってもよい。例えば、新規/継続パラメータが新規を示す場合、演算部2503は、S2907の結果である加算結果に、ユーザによってあらかじめ与えられた値を加算してもよい。
In addition to the processing of S2902 to S2907, the
図29Bは、本実施例3の演算部2503が実行する帯域演算処理S2950のうち、入力パケットが保証内であるか否かを判定する処理を示すフローチャートである。
FIG. 29B is a flowchart illustrating a process of determining whether or not an input packet is within the guarantee in the band calculation process S2950 executed by the
S2907の後、演算部2503は、S2907における加算結果が、S2901において取得したトークンバケツの深さの値を超過するか否かを判定する(S2908)。
After S2907, the
S2908において、S2907における加算結果がトークンバケツの深さの値以下であると判定された場合、演算部2503は、S2907における加算結果からS2901において取得したトークン補正量を減算した値を、現在トークン量として保持する(S2909)。S2909の後、演算部2503は、S2911の処理に進む。
In S2908, when it is determined that the addition result in S2907 is equal to or less than the token bucket depth value, the
またS2908において、S2907における加算結果がトークンバケツの深さの値を超過していると判定された場合、演算部2503は、トークンバケツの深さからS2901において取得したトークン補正量を減算した値を、現在トークン量として保持する(S2910)。S2910の後、演算部2503は、S2911の処理に進む。
In S2908, when it is determined that the addition result in S2907 exceeds the value of the token bucket depth, the
S2909及びS2910におけるトークン補正量によって、同一フローIDの入力パケットを同時に受信する場合において、更新するトークン量の値を入力パケットの到着順に従って計算することができる。 When receiving the input packets with the same flow ID at the same time according to the token correction amounts in S2909 and S2910, the value of the token amount to be updated can be calculated according to the arrival order of the input packets.
S2909又はS2910の後、演算部2503は、S2909又はS2910において保持された現在トークン量が、S2901において取得した取得パケット長の値以上であるか否かを判定する(S2911)。
After S2909 or S2910, the
S2911において、現在トークン量が取得パケット長の値以上であると判定された場合、演算部2503は、現在トークン量から取得パケット長分を減算した値を、更新保持トークン値として算出する(S2912)。更新保持トークン値は、入力パケットを送信した後のトークンバケツに残るトークン量を示す。
If it is determined in S2911 that the current token amount is equal to or greater than the value of the acquired packet length, the
S2912の後、演算部2503は、帯域が保証内であることを示す帯域制御結果を生成し、生成された帯域制御結果を調停部2501へ送信する(S2913)。
After S2912, the
S2913の後、演算部2503は、S2916の処理に進む。
After S2913, the
S2911において、現在トークン量が取得パケット長の値未満であると判定された場合、演算部2503は、現在トークン量と同じ値を、更新保持トークン値として保持する(S2914)。
If it is determined in S2911 that the current token amount is less than the value of the acquired packet length, the
S2914の後、演算部2503は、帯域が保証外であることを示す帯域制御結果を生成し、生成された帯域制御結果を調停部2501へ送信する(S2915)。
After S2914, the
S2915の後、演算部2503は、S2916の処理に進む。
After S2915, the
なお、演算部2503は、S2913又はS2914において、帯域が保証内又は保証外であることを示す帯域制御結果を生成し、後述するS2916において、生成された帯域制御結果と演算終了を示す通知とを、調停部2501へ送信してもよい。
In S2913 or S2914, the
S2913及びS2914において、帯域制御結果を送信又は生成することによって、演算部2503は、後述する出力判定処理S3150において、帯域制御結果に従った処理を入力パケットに行わせることが可能となる。
By transmitting or generating the bandwidth control result in S2913 and S2914, the
S2913又はS2914の後、演算部2503は、演算終了を示す通知を生成し、帯域設定テーブル2504を検索した時刻を前回パケット到着時刻、及び、更新保持トークン値を保持トークン値として、生成された通知とともに調停部2501へ送信する(S2916)。
After S2913 or S2914, the
S2916の後、図29A及び図29Bに示す処理を終了する(S2917)。 After S2916, the processing shown in FIGS. 29A and 29B is terminated (S2917).
以下に、調停部2501が実行する更新調停処理S3050について説明する。
The update arbitration process S3050 executed by the
図30は、本実施例3の調停部2501が実行する更新調停処理S3050を示すフローチャートである。
FIG. 30 is a flowchart illustrating the update arbitration processing S3050 executed by the
調停部2501は、演算部2503(2503−1〜2503−N)から演算終了通知を受信した場合(S3000)、受信した演算終了通知に含まれる帯域制御結果、前回パケット到着時刻、及び、保持トークン値を取得する(S3001)。
When the
S3001の後、調停部2501は、同一フローを処理している複数の演算部2503から演算終了通知を受信しているか否かを判定する(S3002)。
After S3001, the
S3002において、同一フローを処理している複数の演算部2503から演算終了通知を受信していないと判定した場合、調停部2501は、S3004の処理に進む。
In S3002, when it is determined that the calculation end notification has not been received from the plurality of
また、S3002において、同一フローを処理している複数の演算部2503から演算終了通知を受信していると判定した場合、調停部2501は、演算結果保持テーブル2514に更新する結果を選択する(S3003)。S3003における演算結果保持テーブル2514に更新する結果の選択方法は、後述する図31Aから図31Cを用いて説明する。
If it is determined in S3002 that calculation completion notifications are received from a plurality of
S3003の後、調停部2501は、S3004の処理に進む。
After S3003, the
S3004において、調停部2501は、演算結果保持テーブル2514に前回パケット到着時刻及び保持トークン値を書き戻す。
In step S3004, the
S3004の後、調停部2501は、次に受信する入力パケットの継続処理のために、演算結果保持テーブル2514に書き戻した保持トークン値を前回保持トークン値として、演算終了通知を受信した演算部2503へ通知する(S3005)。
After S3004, the
S3005の後、調停部2501は、演算部選定調停処理S2850において保持した処理開始トリガの到着順から、処理開始トリガの送信元の分散処理部5503(5503−1〜5503−N)を特定し、特定した分散処理部5503へ演算終了通知、及び、帯域制御結果を転送する(S3006)。
After S3005, the
S3006の後、調停部2501は、更新調停処理S3050を終了する(S3007)。
After S3006, the
以下、図31Aから図31Cを用いて前回パケット到着時刻、及び、保持トークン値の選択例について説明する。 Hereinafter, a selection example of the previous packet arrival time and the retained token value will be described with reference to FIGS. 31A to 31C.
図31Aは、本実施例3の調停部2501が実行する更新調停処理S3050における演算結果保持テーブル2514に更新する結果の選択において、同一フローIDを処理する複数の演算部から同時に通知される帯域制御結果が全て保証内であった場合の例を示す説明図である。
FIG. 31A shows bandwidth control that is simultaneously notified from a plurality of arithmetic units that process the same flow ID in selecting a result to be updated in the arithmetic result holding table 2514 in the update arbitration processing S3050 executed by the
図31Aでは、4つの入力パケットが同時に到着し、演算部(1)から演算部(4)は、4つの入力パケットの第一パケットから第四パケットを順番に処理し、その帯域制御結果が全て保証内であった例を示す。帯域制御結果が保証内であった場合、演算部((1)〜(4))は、帯域演算処理S2950において、更新保持トークン値は現在トークン量からパケット長分のトークンを減算した値とする。このため、調停部2501は、演算部((1)〜(4))から出力される保持トークン値の値が最も小さい、第四パケットを処理した演算部(4)の前回パケット到着時刻、及び、保持トークン値を選択する。なお、いづれの演算部((1)〜(4))でも前回パケット到着時刻は同じとなるため、調停部2501は、演算部(1)から演算部(3)が出力する前回パケット到着時刻を選択しても良い。
In FIG. 31A, four input packets arrive at the same time, and the calculation unit (1) to the calculation unit (4) process the first packet to the fourth packet of the four input packets in order, and all of the bandwidth control results are An example that was within the warranty is shown. When the bandwidth control result is within the guarantee, the calculation units ((1) to (4)) use the bandwidth calculation processing S2950 to set the update holding token value to a value obtained by subtracting the token for the packet length from the current token amount. . For this reason, the
図31Bは、本実施例3の調停部2501が実行する更新調停処理S3050における演算結果保持テーブル2514に更新する結果の選択において、同一フローIDを処理する複数の演算部から同時に通知される帯域制御結果が全て保証外であった場合の例を示す説明図である。
図31Bでは、4つの入力パケットが同時に到着し、演算部(1)から演算部(4)は、4つの入力パケットの第一パケットから第四パケットを順番に処理し、その帯域制御結果が全て保証外であった例を示す。帯域制御結果が保証外であった場合、演算部((1)〜(4))は、帯域演算処理S2950において、更新保持トークン値は現在トークン量と同じ値とする。演算部((1)〜(4))から出力される保持トークン値の値が全て同じであるため、調停部2501は、第一パケットを処理した演算部(1)の前回パケット到着時刻、及び、保持トークン値を選択する。調停部2501は、演算部(2)から演算部(4)が出力する前回パケット到着時刻、及び、保持トークン値を選択しても良い。
FIG. 31B shows bandwidth control that is simultaneously notified from a plurality of arithmetic units that process the same flow ID in selection of results to be updated in the arithmetic result holding table 2514 in the update arbitration processing S3050 executed by the
In FIG. 31B, four input packets arrive simultaneously, and the calculation unit (1) to calculation unit (4) process the first packet to the fourth packet of the four input packets in sequence, and all the band control results are An example that was out of warranty is shown. When the bandwidth control result is not guaranteed, the calculation units ((1) to (4)) set the update holding token value to the same value as the current token amount in the bandwidth calculation processing S2950. Since the values of the holding token values output from the calculation units ((1) to (4)) are all the same, the
図31Cは、本実施例3の調停部2501が実行する更新調停処理S3050における演算結果保持テーブル2514に更新する結果の選択において、同一フローIDを処理する複数の演算部から同時に通知される帯域制御結果が保証内と保証外を含んだ場合の例を示す説明図である。
FIG. 31C shows bandwidth control that is simultaneously notified from a plurality of arithmetic units that process the same flow ID in selection of results to be updated in the arithmetic result holding table 2514 in the update arbitration processing S3050 executed by the
図31Cでは、4つの入力パケットが同時に到着し、演算部(1)から演算部(4)は、4つの入力パケットの第一パケットから第四パケットを順番に処理し、演算部(1)及び演算部(2)の帯域制御結果が保証内、演算部(3)及び演算部(4)の帯域制御結果が保証外であった例を示す。この場合、演算部(1)及び演算部(2)は、パケット長分のトークンを減算する。演算部(3)及び演算部(4)はパケット長分のトークンは減算せず、演算部(3)及び演算部(4)の更新保持トークン値は演算(2)の更新保持トークン値と同じになる。このため、調停部2501は、第二パケットを処理した演算部(2)の前回パケット到着時刻、及び、保持トークン値を選択する。調停部2501は、演算部(3)から演算部(4)が出力する前回パケット到着時刻、及び、保持トークン値を選択しても良い。また、前回パケット到着時刻は同じとなるため、調停部2501は、演算部(1)が出力する前回パケット到着時刻を選択しても良い。
In FIG. 31C, four input packets arrive at the same time, and the calculation unit (1) to the calculation unit (4) sequentially process the first packet to the fourth packet of the four input packets, and the calculation unit (1) and An example is shown in which the bandwidth control result of the computation unit (2) is within the guarantee, and the bandwidth control results of the computation unit (3) and the computation unit (4) are not guaranteed. In this case, the calculation unit (1) and the calculation unit (2) subtract tokens for the packet length. The calculation unit (3) and the calculation unit (4) do not subtract tokens for the packet length, and the update holding token values of the calculation unit (3) and calculation unit (4) are the same as the update holding token value of the calculation (2). become. For this reason, the
これによって、調停部2501は、同一フローIDの入力パケットの処理開始トリガを同時に受信する場合において、入力パケットの到着順に従って計算した各保持トークンの計算値の値から更新するべき値を選択することができ、その値を演算結果保持テーブル2514に更新する。よって、従来技術では、演算処理通知を受信した回数分、演算結果保持テーブル2514を更新する必要があったが、本願では、同一フローの演算処理通知を集約して演算結果保持テーブル2514を更新することが出来る。
Accordingly, the
以下に、分散処理部5503(5503−1〜5503−N)の出力判定処理部603が実行する出力判定処理S3250について説明する。
The output determination processing S3250 executed by the output
実施例3における出力判定処理部603は、集中処理部2505から受信する各入力パケットの帯域制御結果に基づいて、ペイロードを書き換える。
The output
図32は、本実施例3の出力判定処理部603が実行する出力判定処理S3250を示すフローチャートである。
FIG. 32 is a flowchart illustrating the output determination processing S3250 executed by the output
出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合(S3200)、集中処理部2505から演算終了通知があるか否かを判定する(S3201)。
When the output
S3201において、演算終了通知があると判定された場合、演算終了通知と同時に受信した帯域制御結果(保証内、保証外)に応じて、パケットのペイロード(例えばVLANヘッダ403のCoS値)を上書きする(S3202)。 If it is determined in S3201 that there is a calculation end notification, the packet payload (for example, the CoS value of the VLAN header 403) is overwritten according to the bandwidth control result (within guarantee or not guaranteed) received simultaneously with the calculation end notification. (S3202).
S3202の後、多重部504へパケットを転送し(S3203)、図32に示す出力判定処理S3250を終了する(S3205)。 After S3202, the packet is transferred to the multiplexing unit 504 (S3203), and the output determination process S3250 shown in FIG. 32 is terminated (S3205).
また、S3201において、演算終了通知がないと判定された場合、入力パケットを廃棄し(S3204)、図32に示す出力判定処理S3250を終了する(S3205)。 If it is determined in S3201 that there is no calculation end notification, the input packet is discarded (S3204), and the output determination processing S3250 shown in FIG. 32 is ended (S3205).
前述のとおり、実施例3によれば、パケット通信装置2は、調停部2501において、ラウンドロビンで各分散処理部5503(5503−1〜5503−N)に振分けられたパケットの情報を集約し、演算部2503(2503−1〜2503−N)へ通知する。これによって、実施例3の演算部2503は、同一フローのパケットに関する帯域制御処理を同時に実行することが可能である。
As described above, according to the third embodiment, the
従って、実施例3によれば、実施例1及び実施例2と同様に、マルチコア化されたパケット処理エンジンにおいて、1つの分散処理部への負荷集中による性能劣化を抑えることができる。さらに、分散処理部を増設することでスケーラブルにパケット処理エンジンの高速化が可能となる。 Therefore, according to the third embodiment, similarly to the first and second embodiments, in the multi-core packet processing engine, it is possible to suppress performance degradation due to load concentration on one distributed processing unit. Furthermore, by increasing the number of distributed processing units, it is possible to speed up the packet processing engine in a scalable manner.
2 パケット通信装置
3 装置内ヘッダ
4 通信パケット
5 フラグメントヘッダ
19 帯域監視バッファ
21 パケット蓄積量
119 分散処理部管理リスト
200 ネットワークインタフェースボード
201 入出力回線インタフェース
202 論理回路
203 入力パケット制御部
204 出力パケット制御部
205 SWインタフェース
206 スイッチ部
207 設定レジスタ
208 NIF管理部
301 出力ネットワークインタフェースボード識別子
302 フローID
303 パケット長
401 宛先MACアドレス
402 送信元MACアドレス
403 VLANヘッダ
404 イーサタイプ値
405 ペイロード
406 フレームチェックシーケンス
502 振分部
503 分散処理部
504 多重部
505 集中処理部
601 入力ヘッダ解析部
602 入力ヘッダ処理部
603 出力判定処理部
701 調停部
702 演算フロー管理リスト
703 演算部
704 統計情報テーブル
1701 総フラグメント数
1702 シーケンス番号
1703 フラグメント長
1900 入力パケット制御部
1901 帯域監視部
1902 振分部
1904 多重部
2501 調停部
2503 演算部
2504 帯域設定テーブル
2505 集中処理部
2514 演算結果保持テーブル
5503 分散処理部
2
303
Claims (11)
前記ネットワークから送信される複数のパケットを受信する入力インタフェースと、
前記受信した複数のパケットの第1の処理を実行する複数の分散処理部と、
前記受信した複数のパケットを前記複数の分散処理部のいずれかへ振り分ける振分部と、
前記複数の分散処理部のそれぞれで処理された前記受信した複数のパケットに関する情報を集約して第2の処理を実行する集中処理部と、
前記集中処理部からの前記第2の処理結果に基づき前記複数の分散処理部のそれぞれで前記第1の処理が実施されたパケットを集約して出力する多重部とを備え、
前記振分部は、
前記分散処理部に備えた順序番号に従い、前記複数のパケットのそれぞれを前記入力インタフェースに到着した順に前記各分散処理部に振り分け、
前記各分散処理部は、
前記受信したパケットのヘッダからパケット長とフローIDとを識別し、前記パケット長と前記フローIDと前記集中処理部への前記第2の処理の開始トリガとを含む前記情報を出力する入力ヘッダ解析部と、前記入力ヘッダ解析部から受信したパケットのヘッダをパケット転送の為に変換する入力ヘッダ処理部と、前記集中処理部の前記第2の処理の結果に基づき、前記入力ヘッダ処理部から受信したパケットの前記多重部への転送を制御する出力判定処理部とで、前記第1の処理を実施し、
前記集中処理部は、
前記受信したパケットの統計情報処理を行う複数の演算部と、前記処理の結果をフローID毎に保持する統計情報テーブルと、前記複数の演算部の状態を管理する演算フロー管理リストとを備え、
前記複数の分散処理部のいずれかから前記情報を受信すると、
前記演算フロー管理リストから前記統計情報処理が可能な演算部を選択し、
前記選択された演算部のそれぞれがフローID毎に受信した前記情報に基づく前記統計情報処理を実施するように前記演算部を設定し、
前記演算部が実施した前記統計情報処理の結果を前記統計情報テーブルに蓄積して、演算終了を前記分散処理部に通知する調停部とで前記第2の処理を実施する
ことを特徴とする通信装置。 A communication device connected to a network,
An input interface for receiving a plurality of packets transmitted from the network ;
A plurality of distributed processing units that execute a first process of the received plurality of packets;
A distribution unit that distributes the received plurality of packets to any of the plurality of distributed processing units;
A centralized processing unit that aggregates information on the received plurality of packets processed by each of the plurality of distributed processing units and executes a second process ;
A multiplexing unit that aggregates and outputs the packets on which the first processing is performed in each of the plurality of distributed processing units based on the second processing result from the central processing unit,
The distribution unit is
According to the sequence number provided in the distributed processing unit, each of the plurality of packets is distributed to each distributed processing unit in the order of arrival at the input interface,
Each of the distributed processing units
Input header analysis that identifies a packet length and a flow ID from the header of the received packet, and outputs the information including the packet length, the flow ID, and a start trigger of the second processing to the central processing unit Received from the input header processing unit based on the result of the second processing of the central processing unit, and an input header processing unit that converts the header of the packet received from the input header analysis unit for packet transfer The output determination processing unit that controls the transfer of the received packet to the multiplexing unit performs the first process,
The central processing unit
A plurality of arithmetic units that perform statistical information processing of the received packet, a statistical information table that holds the result of the processing for each flow ID, and an arithmetic flow management list that manages the states of the plurality of arithmetic units,
When receiving the information from any of the plurality of distributed processing units,
Select a calculation unit capable of the statistical information processing from the calculation flow management list,
Each of the selected computing units is configured to perform the statistical information processing based on the information received for each flow ID,
The result of the statistical information processing performed by the arithmetic unit is accumulated in the statistical information table, and the second process is performed by an arbitration unit that notifies the distributed processing unit of the end of the calculation. A communication device.
前記パケットを格納する帯域監視バッファと
前記パケットの入力帯域を監視し、前記振分部がパケットに関する処理を振り分ける分散処理部の数を前記帯域監視バッファに格納された前記パケットの蓄積量に応じて変更する帯域監視部と、を備え、
前記振分部は、前記帯域監視部から通知された分散処理部の数に基づいて、前記パケットを各分散処理部に振り分けることを特徴とする通信装置。 The communication device according to claim 1,
The bandwidth monitoring buffer for storing the packet and the input bandwidth of the packet are monitored, and the number of distributed processing units to which the allocating unit distributes processing related to the packet is determined according to the accumulated amount of the packet stored in the bandwidth monitoring buffer. A bandwidth monitoring unit to be changed,
The communication unit, wherein the distribution unit distributes the packet to each distributed processing unit based on the number of distributed processing units notified from the bandwidth monitoring unit.
前記集中処理部は、
前記パケットに関する処理を実行する複数の演算部と、
前記分散処理部から同時に受信した複数のパケットのうち同一フローのパケットがあるか否かを判定し、前記同一フローのパケットが複数ある場合、前記演算結果を補正するための補正量を決定し、前記各演算部に各パケットの演算処理を割り当てる調停部と、を備え、
前記各演算部は、前記同一フローの複数のパケットに関する演算結果を前記補正量に基づいて補正し、
前記調停部は、前記各演算部から前記補正した演算結果のいずれかを選択し、選択した演算結果に基づいて前記テーブルに保持する対応するフローの演算結果を更新することを特徴とする通信装置。 The communication device according to claim 1,
The central processing unit
A plurality of arithmetic units for executing processing relating to the packet;
Determine whether there is a packet of the same flow among a plurality of packets received simultaneously from the distributed processing unit, if there are a plurality of packets of the same flow, determine a correction amount for correcting the calculation result, An arbitration unit that assigns computation processing of each packet to each computation unit;
Each of the calculation units corrects the calculation results regarding the plurality of packets of the same flow based on the correction amount,
The arbitration unit selects any one of the corrected calculation results from each of the calculation units, and updates the calculation result of the corresponding flow held in the table based on the selected calculation result. .
前記フロー識別子と、前記フローに対応するトークンバケツに追加される単位時間あたりのトークン量、及び、前記トークンバケツに蓄積されるトークンの最大量と、を含む設定用テーブルを備え、
前記テーブルは、フロー識別子、前回パケット到着時刻、及び、保持トークン値と、を含む演算結果を保持し、
前記調停部は、前記分散処理部から同時に受信した複数のパケットのうち同一フローの第1のパケットと第2のパケットについて、第1のパケットと同時に受信した第2のパケットのトークン補正量を前記第1のパケットのパケット長とすることを特徴とする通信装置。 The communication device according to claim 3 ,
A setting table including the flow identifier, a token amount per unit time added to a token bucket corresponding to the flow, and a maximum amount of tokens accumulated in the token bucket;
The table holds a calculation result including a flow identifier, a previous packet arrival time, and a holding token value,
The arbitration unit determines the token correction amount of the second packet received simultaneously with the first packet for the first packet and the second packet of the same flow among the plurality of packets received simultaneously from the distributed processing unit. A communication apparatus characterized by having a packet length of the first packet.
前記複数の演算部のうち第1のパケットに関する処理を実行する演算部は、
前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのパケット長を下回ると判定された場合、前記第1のパケットの送信が保証外であることを示す帯域制御情報、及び、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量を出力し、
前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのパケット長以上と判定された場合、前記第1のパケットの送信が保証内であることを示す帯域制御情報、及び、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量から前記第1のパケット長分のトークンを減算したトークン量を出力し、
前記複数の演算部のうち第2のパケットに関する処理を実行する演算部は、
前記第1のパケットに関する処理分を補正した前記第2のパケットに関する処理を実行した結果、前記第2のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量から前記第1のパケット長分を減算したトークン量が、前記第2のパケットのパケット長を下回ると判定された場合、前記第1のパケットの送信が保証外であることを示す帯域制御情報、及び、前記第2のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量から前記第1のパケット長分のトークンを減算したトークン量を出力し、
前記第1のパケットに関する処理分を補正した前記第2のパケットに関する処理を実行した結果、前記第2のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量から前記第1のパケット長分を減算したトークン量が、前記第2のパケットのパケット長以上と判定された場合、前記第1のパケットの送信が保証内であることを示す帯域制御情報、及び、前記第2のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量から前記第1のパケット長分及び前記第2のパケット長分のトークンを減算したトークン量を出力し、
前記調停部は、
前記第1のパケットの帯域制御情報が保証外である場合、前記第1のパケットに関する処理を実行した演算部が出力したトークン量を前記テーブルの保持トークン値に更新し、
前記第1のパケットの帯域制御情報が保証内であり、前記第2のパケットの帯域制御情報が保証外である場合、前記第1のパケットに関する処理を実行した演算部が出力したトークン量を前記テーブルの保持トークン値に更新し、
前記第2のパケットの帯域制御情報が保証内である場合、前記第2のパケットに関する処理を実行した演算部が出力したトークン量を前記テーブルの保持トークン値に更新し、
さらに、前記通信装置は、
前記演算部から出力された前記第1及び第2の帯域制御情報に基づいて、前記第1のパケット及び第2のパケットのヘッダを書き換える出力判定処理部を備えることを特徴とする通信装置。 The communication device according to claim 4 ,
Among the plurality of arithmetic units, the arithmetic unit that executes processing related to the first packet is:
As a result of executing the processing related to the first packet, when it is determined that the token amount accumulated in the token bucket until the first packet is received is less than the packet length of the first packet, Output bandwidth control information indicating that transmission of the first packet is not guaranteed, and the token amount accumulated in the token bucket until the first packet is received;
As a result of executing the processing related to the first packet, when it is determined that the token amount accumulated in the token bucket until the first packet is received is equal to or greater than the packet length of the first packet, the first packet Subtract the token for the first packet length from the bandwidth control information indicating that transmission of one packet is within the guarantee and the token amount accumulated in the token bucket until the first packet is received. Output the token amount
Among the plurality of arithmetic units, the arithmetic unit that executes processing related to the second packet is:
As a result of executing the processing related to the second packet, which is obtained by correcting the processing related to the first packet, the first packet length is calculated from the token amount accumulated in the token bucket until the second packet is received. When it is determined that the token amount obtained by subtracting is less than the packet length of the second packet, the bandwidth control information indicating that the transmission of the first packet is not guaranteed, and the second packet Output the token amount obtained by subtracting the token for the first packet length from the token amount accumulated in the token bucket until reception;
As a result of executing the processing related to the second packet, which is obtained by correcting the processing related to the first packet, the first packet length is calculated from the token amount accumulated in the token bucket until the second packet is received. When it is determined that the token amount obtained by subtracting is greater than or equal to the packet length of the second packet, the bandwidth control information indicating that the transmission of the first packet is within the guarantee and the second packet are received. Output a token amount obtained by subtracting tokens for the first packet length and the second packet length from the token amount accumulated in the token bucket until
The mediation unit
When the bandwidth control information of the first packet is out of guarantee, the token amount output by the arithmetic unit that executed the processing related to the first packet is updated to the stored token value of the table,
When the bandwidth control information of the first packet is within the guarantee and the bandwidth control information of the second packet is not the guarantee, the token amount output by the arithmetic unit that has performed the processing related to the first packet is Update to the retention token value in the table,
If the bandwidth control information of the second packet is within the guarantee, the token amount output by the arithmetic unit that executed the processing related to the second packet is updated to the stored token value of the table,
Furthermore, the communication device includes:
A communication apparatus comprising: an output determination processing unit that rewrites headers of the first packet and the second packet based on the first and second band control information output from the arithmetic unit.
前記振分部は、前記パケットを断片化して前記各分散処理部に振り分けることを特徴とする通信装置。 The communication device according to claim 1,
The communication device according to claim 1, wherein the distribution unit fragments the packet and distributes the packet to the distributed processing units.
前記振分部は、前記パケットのヘッダ部分を前記各分散処理部に振り分けることを特徴とする通信装置。 The communication device according to claim 1,
The communication device, wherein the distribution unit distributes a header portion of the packet to each of the distributed processing units.
前記通信装置は、
前記ネットワークから送信される複数のパケットを受信する入力インタフェースと、
前記受信した複数のパケットの第1の処理を実行する複数の分散処理部と、
前記受信した複数のパケットを前記複数の分散処理部のいずれかへ振り分ける振分部と、
前記複数の分散処理部のそれぞれで処理された前記受信した複数のパケットに関する情報を集約して第2の処理を実行する集中処理部と、
前記集中処理部からの前記第2の処理結果に基づき前記複数の分散処理部のそれぞれで前記第1の処理が実施されたパケットを集約して出力する多重部とを備え、
前記振分部は、
前記分散処理部に備えた順序番号に従い、前記複数のパケットのそれぞれを前記入力インタフェースに到着した順に前記各分散処理部に振り分け、
前記各分散処理部は、
前記受信したパケットのヘッダからパケット長とフローIDとを識別し、前記パケット長と前記フローIDと前記集中処理部への前記第2の処理の開始トリガとを含む前記情報を出力する入力ヘッダ解析部と、前記入力ヘッダ解析部から受信したパケットのヘッダをパケット転送の為に変換する入力ヘッダ処理部と、前記集中処理部の前記第2の処理の結果に基づき、前記入力ヘッダ処理部から受信したパケットの前記多重部への転送を制御する出力判定処理部とで、前記第1の処理を実施し、
前記集中処理部は、
前記受信したパケットの統計情報処理を行う複数の演算部と、前記処理の結果をフローID毎に保持する統計情報テーブルと、前記複数の演算部の状態を管理する演算フロー管理リストとを備え、
前記複数の分散処理部のいずれかから前記情報を受信すると、
前記演算フロー管理リストから前記統計情報処理が可能な演算部を選択し、
前記選択された演算部のそれぞれがフローID毎に受信した前記情報に基づく前記統計情報処理を実施するように前記演算部を設定し、
前記演算部が実施した前記統計情報処理の結果を前記統計情報テーブルに蓄積して、演算終了を前記分散処理部に通知する調停部とで前記第2の処理を実施する
ことを特徴とする通信方法。 A communication method by a communication device connected to a network, wherein the communication device is:
An input interface for receiving a plurality of packets transmitted from the network ;
A plurality of distributed processing units that execute a first process of the received plurality of packets;
A distribution unit that distributes the received plurality of packets to any of the plurality of distributed processing units;
A centralized processing unit that aggregates information on the received plurality of packets processed by each of the plurality of distributed processing units and executes a second process ;
A multiplexing unit that aggregates and outputs the packets on which the first processing is performed in each of the plurality of distributed processing units based on the second processing result from the central processing unit,
The distribution unit is
According to the sequence number provided in the distributed processing unit, each of the plurality of packets is distributed to each distributed processing unit in the order of arrival at the input interface,
Each of the distributed processing units
Input header analysis that identifies a packet length and a flow ID from the header of the received packet, and outputs the information including the packet length, the flow ID, and a start trigger of the second processing to the central processing unit Received from the input header processing unit based on the result of the second processing of the central processing unit, and an input header processing unit that converts the header of the packet received from the input header analysis unit for packet transfer The output determination processing unit that controls the transfer of the received packet to the multiplexing unit performs the first process,
The central processing unit
A plurality of arithmetic units that perform statistical information processing of the received packet, a statistical information table that holds the result of the processing for each flow ID, and an arithmetic flow management list that manages the states of the plurality of arithmetic units,
When receiving the information from any of the plurality of distributed processing units,
Select a calculation unit capable of the statistical information processing from the calculation flow management list,
Each of the selected computing units is configured to perform the statistical information processing based on the information received for each flow ID,
The result of the statistical information processing performed by the arithmetic unit is accumulated in the statistical information table, and the second process is performed by an arbitration unit that notifies the distributed processing unit of the end of the calculation. A characteristic communication method.
前記調停部は、
前記同一フローの複数のパケットに関するパケット数、及び、パケット長の合計値を含む情報を前記1つの演算部に通知し、
前記1つの演算部は、前記通知されたパケット数、及び、パケット長の合計値を含む情報に基づいて統計処理を実行し、演算結果を前記調停部に通知することを特徴とする通信方法。 The communication method according to claim 8 , comprising:
The mediation unit
Notifying the one arithmetic unit of information including the number of packets related to a plurality of packets of the same flow and the total value of the packet length,
The one arithmetic unit performs a statistical process based on information including the notified number of packets and a total value of packet lengths, and notifies the arbitration unit of a calculation result.
前記パケットを格納する帯域監視バッファと
前記パケットの入力帯域を監視し、前記振分部がパケットに関する処理を振り分ける分散処理部の数を前記帯域監視バッファに格納された前記パケットの蓄積量に応じて変更する帯域監視部と、を備え、
前記振分部は、前記帯域監視部から通知された分散処理部の数に基づいて、前記パケットを各分散処理部に振り分けることを特徴とする通信方法。 The communication method according to claim 8 , comprising:
The bandwidth monitoring buffer for storing the packet and the input bandwidth of the packet are monitored, and the number of distributed processing units to which the allocating unit distributes processing related to the packet is determined according to the accumulated amount of the packet stored in the bandwidth monitoring buffer. A bandwidth monitoring unit to be changed,
The allocating unit distributes the packet to each distributed processing unit based on the number of distributed processing units notified from the bandwidth monitoring unit.
前記集中処理部は、
前記パケットに関する処理を実行する複数の演算部と、
前記分散処理部から同時に受信した複数のパケットのうち同一フローのパケットがあるか否かを判定し、前記同一フローのパケットが複数ある場合、前記演算結果を補正するための補正量を決定し、前記各演算部に各パケットの演算処理を割り当てる調停部と、を備え、
前記各演算部は、前記同一フローの複数のパケットに関する演算結果を前記補正量に基づいて補正し、
前記調停部は、前記各演算部から前記補正した演算結果のいずれかを選択し、選択した演算結果に基づいて前記テーブルに保持する対応するフローの演算結果を更新することを特徴とする通信方法。 The communication method according to claim 8 , comprising:
The central processing unit
A plurality of arithmetic units for executing processing relating to the packet;
Determine whether there is a packet of the same flow among a plurality of packets received simultaneously from the distributed processing unit, if there are a plurality of packets of the same flow, determine a correction amount for correcting the calculation result, An arbitration unit that assigns computation processing of each packet to each computation unit;
Each of the calculation units corrects the calculation results regarding the plurality of packets of the same flow based on the correction amount,
The arbitration unit selects any one of the corrected calculation results from each of the calculation units, and updates a calculation result of a corresponding flow held in the table based on the selected calculation result. .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013160949A JP6060050B2 (en) | 2013-08-02 | 2013-08-02 | Communication apparatus and packet processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013160949A JP6060050B2 (en) | 2013-08-02 | 2013-08-02 | Communication apparatus and packet processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015032970A JP2015032970A (en) | 2015-02-16 |
JP6060050B2 true JP6060050B2 (en) | 2017-01-11 |
Family
ID=52517955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013160949A Expired - Fee Related JP6060050B2 (en) | 2013-08-02 | 2013-08-02 | Communication apparatus and packet processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6060050B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3060890B1 (en) * | 2016-12-19 | 2019-08-23 | Electricite De France | TRANSMISSION OF ELECTRICAL ENERGY BETWEEN USER ENTITIES OF A DISTRIBUTION NETWORK |
JP7388561B2 (en) * | 2020-08-05 | 2023-11-29 | 日本電信電話株式会社 | Computer system and arithmetic processing method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4294821B2 (en) * | 2000-01-26 | 2009-07-15 | 株式会社日立製作所 | Network relay device |
JP4475835B2 (en) * | 2001-03-05 | 2010-06-09 | 富士通株式会社 | Input line interface device and packet communication device |
JP4782082B2 (en) * | 2007-08-22 | 2011-09-28 | 日本電信電話株式会社 | Packet processing apparatus, method, and program |
JP5156332B2 (en) * | 2007-10-30 | 2013-03-06 | アラクサラネットワークス株式会社 | Packet transfer device |
-
2013
- 2013-08-02 JP JP2013160949A patent/JP6060050B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2015032970A (en) | 2015-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7711006B2 (en) | Data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network | |
JP5863076B2 (en) | Method, apparatus, and system for reconstructing and reordering packets | |
JP7039685B2 (en) | Traffic measurement methods, devices, and systems | |
JP6340481B2 (en) | Data caching method, apparatus and storage medium | |
US20130250792A1 (en) | Router | |
US20110254590A1 (en) | Mapping address bits to improve spread of banks | |
US9900090B1 (en) | Inter-packet interval prediction learning algorithm | |
Hao et al. | Fast dynamic multiple-set membership testing using combinatorial bloom filters | |
US10419965B1 (en) | Distributed meters and statistical meters | |
Hua et al. | Scheduling heterogeneous flows with delay-aware deduplication for avionics applications | |
De Carli et al. | Plug: Flexible lookup modules for rapid deployment of new protocols in high-speed routers | |
EP3461085B1 (en) | Method and device for queue management | |
Qiao et al. | Joint effects of application communication pattern, job placement and network routing on fat-tree systems | |
JP6060050B2 (en) | Communication apparatus and packet processing method | |
EP2517410B1 (en) | Tracing support in a router | |
CN104243348A (en) | Data processing method and device | |
CN116955247B (en) | Cache descriptor management device and method, medium and chip thereof | |
Kogan et al. | Balancing work and size with bounded buffers | |
Giroudot et al. | Tightness and computation assessment of worst-case delay bounds in wormhole networks-on-chip | |
US9137158B2 (en) | Communication apparatus and communication method | |
WO2023134574A1 (en) | Method for flow statistics, device, and system | |
CN112565821B (en) | Data processing method and device, security gateway and storage device | |
US10798227B2 (en) | Centralized chromatic pluralizing of internet of things (IOT) communication | |
Yang et al. | FISE: A forwarding table structure for enterprise networks | |
US20130247071A1 (en) | System and method for efficient shared buffer management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151126 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160906 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161024 |
|
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: 20161115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161212 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6060050 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |