JP6060050B2 - Communication apparatus and packet processing method - Google Patents

Communication apparatus and packet processing method Download PDF

Info

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
Application number
JP2013160949A
Other languages
Japanese (ja)
Other versions
JP2015032970A (en
Inventor
泰輔 植田
泰輔 植田
遠藤 英樹
英樹 遠藤
誠由 高瀬
誠由 高瀬
明彦 土屋
明彦 土屋
祐輔 矢島
祐輔 矢島
小林 正伸
正伸 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2013160949A priority Critical patent/JP6060050B2/en
Publication of JP2015032970A publication Critical patent/JP2015032970A/en
Application granted granted Critical
Publication of JP6060050B2 publication Critical patent/JP6060050B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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, Patent Document 1 proposes a distributed processing technique in which a plurality of distributed processing units process packets of a plurality of flows.

特開2000−358066号公報JP 2000-358066 A

しかしながら、特許文献1に記載された技術によれば、パケットはフロー毎に複数の分散処理部に振り分けられ、各分散処理部によってパケット処理が実行される。このため、特許文献1に記載された技術では、同一フローを同じ分散処理部へ振分けるためのHash関数などの複雑な処理が必要である。   However, according to the technique described in Patent Document 1, packets are distributed to a plurality of distributed processing units for each flow, and packet processing is executed by each distributed processing unit. For this reason, the technique described in Patent Document 1 requires complicated processing such as a Hash function for distributing the same flow to the same distributed processing unit.

さらに、二つ以上の同じフローのパケットが同時に到着した場合、上記パケット振分けにより、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.

従来のフローを識別してパケットを分散処理部に振り分ける場合のパケット処理の概要を示す説明図である。It is explanatory drawing which shows the outline | summary of the packet process in the case of identifying the conventional flow and distributing a packet to a distributed processing part. 本実施例1のパケット処理の概要を示す説明図である。It is explanatory drawing which shows the outline | summary of the packet process of the present Example 1. FIG. 本実施例1のパケット通信装置の物理的な構成及び論理回路を示すブロック図である。1 is a block diagram illustrating a physical configuration and a logic circuit of a packet communication device according to a first embodiment. 本実施例1のパケットに付加される装置内ヘッダのフォーマットを示す説明図である。It is explanatory drawing which shows the format of the header in a device added to the packet of the present Example 1. FIG. 本実施例1の通信において用いられるパケットのフォーマットを示す説明図である。It is explanatory drawing which shows the format of the packet used in the communication of the present Example 1. 本実施例1の入力パケット制御部の論理的な構成を示すブロック図である。It is a block diagram which shows the logical structure of the input packet control part of the present Example 1. 本実施例1の分散処理部の論理的な構成を示すブロック図である。FIG. 3 is a block diagram illustrating a logical configuration of a distributed processing unit according to the first embodiment. 本実施例1の集中処理部の論理的な構成を示すブロック図である。FIG. 3 is a block diagram illustrating a logical configuration of a central processing unit according to the first embodiment. 本実施例1の統計情報テーブルを示す説明図である。It is explanatory drawing which shows the statistical information table of the present Example 1. 本実施例1の振分部が実行する振分け処理を示すフローチャートである。It is a flowchart which shows the distribution process which the distribution part of a present Example 1 performs. 本実施例1の入力ヘッダ解析部が実行するヘッダ解析処理を示すフローチャートである。It is a flowchart which shows the header analysis process which the input header analysis part of the present Example 1 performs. 本実施例1の出力判定処理部が実行する出力判定処理を示すフローチャートである。It is a flowchart which shows the output determination process which the output determination process part of the present Example 1 performs. 本実施例1の調停部が実行する演算部選定調停処理を示すフローチャートである。It is a flowchart which shows the calculating part selection arbitration process which the arbitration part of the present Example 1 performs. 本実施例1の演算フロー管理リストを示す説明図である。It is explanatory drawing which shows the calculation flow management list | wrist of the present Example 1. 本実施例1の調停部が実行する演算フロー管理処理を示すフローチャートである。It is a flowchart which shows the calculation flow management process which the mediation part of the present Example 1 performs. 本実施例1の演算部が実行する統計情報処理を示すフローチャートである。It is a flowchart which shows the statistical information processing which the calculating part of the present Example 1 performs. 本実施例1の調停部が実行する更新調停処理を示すフローチャートである。It is a flowchart which shows the update mediation process which the mediation part of the present Example 1 performs. 本実施例1のパケットに付加されるフラグメントヘッダのフォーマットを示す説明図である。It is explanatory drawing which shows the format of the fragment header added to the packet of the present Example 1. FIG. 本実施例1のパケットのフラグメント処理の概要を示す説明図である。It is explanatory drawing which shows the outline | summary of the fragment processing of the packet of the present Example 1. FIG. 本実施例2の入力パケット制御部の論理的な構成を示すブロック図である。It is a block diagram which shows the logical structure of the input packet control part of the present Example 2. 本実施例2の帯域監視部が実行する帯域監視バッファ書込み処理を示すフローチャートである。It is a flowchart which shows the bandwidth monitoring buffer write process which the bandwidth monitoring part of the present Example 2 performs. 本実施例2の帯域監視バッファのパケット蓄積量と利用分散処理部の数の関係を示す説明図である。It is explanatory drawing which shows the relationship between the packet accumulation amount of the bandwidth monitoring buffer of the present Example 2, and the number of utilization distribution processing parts. 本実施例2の帯域監視部が実行する帯域監視バッファ読出し処理を示すフローチャートである。It is a flowchart which shows the bandwidth monitoring buffer read-out process which the bandwidth monitoring part of the present Example 2 performs. 本実施例2の振分部が実行する振分け処理を示すフローチャートである。It is a flowchart which shows the distribution process which the distribution part of the present Example 2 performs. 本実施例2の分散処理部管理リストを示す説明図である。It is explanatory drawing which shows the distributed processing part management list of the present Example 2. 本実施例3の集中処理部の論理的な構成を示すブロック図である。It is a block diagram which shows the logical structure of the central processing part of the present Example 3. 本実施例3の帯域設定テーブルを示す説明図である。It is explanatory drawing which shows the band setting table of the present Example 3. 本実施例3の演算結果保持テーブルを示す説明図である。It is explanatory drawing which shows the calculation result holding table of the present Example 3. 本実施例3の調停部が実行する演算部選定調停処理を示すフローチャートである。It is a flowchart which shows the calculating part selection arbitration process which the arbitration part of the present Example 3 performs. 本実施例3の演算部が実行する帯域演算処理のうち、入力パケットを受信するまでに蓄積されるべきトークン量を算出する処理を示すフローチャートである。It is a flowchart which shows the process which calculates the token amount which should be accumulate | stored before receiving an input packet among the band calculation processes which the calculating part of the present Example 3 performs. 本実施例3の演算部が実行する帯域演算処理のうち、入力パケットが保証内であるか否かを判定する処理を示すフローチャートである。It is a flowchart which shows the process which determines whether an input packet is within a guarantee among the band calculation processes which the calculating part of the present Example 3 performs. 本実施例3の調停部が実行する更新調停処理を示すフローチャートである。It is a flowchart which shows the update mediation process which the mediation part of the present Example 3 performs. 本実施例3の調停部が実行する更新調停処理における演算結果保持テーブルに更新する結果の選択において、同一IDを処理する複数の演算部から同時に通知される帯域制御結果が全て保証内であった場合の例を示す説明図である。In the selection of the result to be updated to the calculation result holding table in the update arbitration process executed by the arbitration unit of the third embodiment, all the bandwidth control results notified simultaneously from a plurality of calculation units that process the same ID were within the guarantee. It is explanatory drawing which shows the example of a case. 本実施例3の調停部が実行する更新調停処理における演算結果保持テーブルに更新する結果の選択において、同一IDを処理する複数の演算部から同時に通知される帯域制御結果が全て保証外であった場合の例を示す説明図である。In selecting a result to be updated to the calculation result holding table in the update arbitration process executed by the arbitration unit according to the third embodiment, all the bandwidth control results notified simultaneously from a plurality of calculation units that process the same ID are out of the guarantee. It is explanatory drawing which shows the example of a case. 本実施例3の調停部が実行する更新調停処理における演算結果保持テーブルに更新する結果の選択において、同一IDを処理する複数の演算部から同時に通知される帯域制御結果が保証内と保証外を含んだ場合の例を示す説明図である。In the selection of the result to be updated to the calculation result holding table in the update arbitration process executed by the arbitration unit of the third embodiment, the bandwidth control results notified simultaneously from a plurality of calculation units that process the same ID are within and out of the guarantee. It is explanatory drawing which shows the example in the case of including. 本実施例3の出力判定処理部が実行する出力判定処理を示すフローチャートである。It is a flowchart which shows the output determination process which the output determination process part of the present Example 3 performs. 従来のフローを識別してパケットを分散処理部に振り分ける場合のパケット処理において、同一フローのパケットが複数同時に到着する際のパケット処理のタイミングを示す説明図である。It is explanatory drawing which shows the timing of the packet processing when the packet of the same flow arrives simultaneously in the packet processing in the case of identifying the conventional flow and distributing the packet to the distributed processing unit. 本実施例1のパケット処理において、同一フローのパケットが複数同時に到着する際のパケット処理のタイミングを示す説明図である。In the packet processing of the first embodiment, it is an explanatory diagram showing the timing of packet processing when a plurality of packets of the same flow arrive simultaneously. 本実施例3のパケット処理において、同一フローのパケットが複数同時に到着する際のパケット処理のタイミングを示す説明図である。In the packet processing of the present Example 3, it is explanatory drawing which shows the timing of the packet processing when the packet of the same flow arrives simultaneously.

以下、本発明の実施例について、図面を参照して説明する。   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 packet communication apparatus 2 and the logic circuit 202 according to the first embodiment.

本実施例のパケット通信装置2は、パケットを他のパケット通信装置へ転送する装置である。パケット通信装置2は、複数のネットワークインタフェースボード(NIF)(200−1〜200−M)、及び、スイッチ部206を備える。   The packet communication device 2 of the present embodiment is a device that transfers a packet to another packet communication device. The packet communication apparatus 2 includes a plurality of network interface boards (NIF) (200-1 to 200-M) and a switch unit 206.

NIF200は、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部206は、各NIF200に接続される装置であり、NIF200から受信したパケットを、パケットを送信すべきNIF200に振り分ける装置である。   The NIF 200 is an interface for receiving a packet from the network and transmitting the packet to the network. The switch unit 206 is a device connected to each NIF 200, and is a device that distributes a packet received from the NIF 200 to the NIF 200 to which the packet is to be transmitted.

各NIF200は、入出力回線インタフェース201、論理回路202、SWインタフェース205、及びNIF管理部208を備える。   Each NIF 200 includes an input / output line interface 201, a logic circuit 202, a SW interface 205, and an NIF management unit 208.

入出力回線インタフェース201は、通信ポートである。パケット通信装置2は、入出力回線インタフェース201及びネットワークを介して、他のパケット通信装置と接続する。実施例1における入出力回線インタフェース201は、イーサネット(登録商標)用の回線インタフェースである。   The input / output line interface 201 is a communication port. The packet communication device 2 is connected to other packet communication devices via the input / output line interface 201 and the network. The input / output line interface 201 in the first embodiment is a line interface for Ethernet (registered trademark).

SWインタフェース205は、スイッチ部206に接続するための装置である。   The SW interface 205 is a device for connecting to the switch unit 206.

NIF管理部208は、例えば、CPU等のプロセッサである。NIF管理部208は、論理回路202における処理を制御する。   The NIF management unit 208 is a processor such as a CPU, for example. The NIF management unit 208 controls processing in the logic circuit 202.

論理回路202は、本実施例のパケットに対する処理を行う回路である。論理回路202は、少なくとも一つのメモリ及び少なくとも一つの演算装置(例えば、プロセッサ)を備える。   The logic circuit 202 is a circuit that performs processing on the packet of this embodiment. The logic circuit 202 includes at least one memory and at least one arithmetic device (for example, a processor).

論理回路202は、入力パケット制御部203、出力パケット制御部204等のパケット処理部を有し、設定レジスタ207を備える。   The logic circuit 202 includes packet processing units such as an input packet control unit 203 and an output packet control unit 204, and includes a setting register 207.

パケット通信装置2が受信したパケットは、入出力回線インタフェース201、入力パケット制御部203、SWインタフェース205、スイッチ部206、SWインタフェース205、出力パケット制御部204、及び、入出力回線インタフェース201の順に送信される。   Packets received by the packet communication apparatus 2 are transmitted in the order of the input / output line interface 201, the input packet control unit 203, the SW interface 205, the switch unit 206, the SW interface 205, the output packet control unit 204, and the input / output line interface 201. Is done.

論理回路202が有する各処理部は、集積回路等の物理的な装置によって実装されてもよいし、少なくとも一つのプロセッサによって実行されるプログラムによって実装されてもよい。また、複数の処理部(例えば、入力パケット制御部203及び出力パケット制御部204)が一つの装置又はプログラムによって実装されてもよいし、一つの処理部が複数の装置又は複数のプログラムによって実装されてもよい。   Each processing unit included in the logic circuit 202 may be implemented by a physical device such as an integrated circuit, or may be implemented by a program executed by at least one processor. In addition, a plurality of processing units (for example, the input packet control unit 203 and the output packet control unit 204) may be implemented by a single device or program, or a single processing unit may be implemented by a plurality of devices or a plurality of programs. May be.

NIF管理部208は、設定レジスタ207を制御する。設定レジスタ207は、データを一時的に格納する記憶領域を有し、論理回路202に備わる各処理部のレジスタ値を保持する。   The NIF management unit 208 controls the setting register 207. The setting register 207 has a storage area for temporarily storing data, and holds register values of the respective processing units included in the logic circuit 202.

設定レジスタ207は論理回路202を介して論理回路202に備わる全ての処理部と接続する。なお、以下において、設定レジスタ207の処理内容についての説明を省略するが、論理回路202が有する全ての処理部は、設定レジスタ207を用いて処理を実行する。   The setting register 207 is connected to all processing units included in the logic circuit 202 via the logic circuit 202. In the following, description of the processing contents of the setting register 207 is omitted, but all the processing units included in the logic circuit 202 execute processing using the setting register 207.

入出力回線インタフェース201は、受信したパケット4に後述する装置内ヘッダ3を付加する。   The input / output line interface 201 adds a later-described apparatus header 3 to the received packet 4.

図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 packet 4 used in the communication according to the first embodiment. The format of the packet 4 shown in FIG. 4 is an example, and the packet used in this embodiment may include any information. For example, an IP address may be included instead of the MAC address. The packet 4 includes a destination MAC address 401, a source MAC address 402, a VLAN header 403, an ether type value 404, a payload 405, and a frame check sequence (FCS) 406. In the destination MAC address 401 or the source MAC address 402, the MAC address of the packet communication device 2 is set. In the VLAN header 403, a VLAN ID serving as a flow identifier is set.

なお、ペイロード405にMPLSヘッダ又は他のプロトコルのヘッダが設定され、MPLSラベル値などをフローの識別子として設定されてもよい。フレームチェックシーケンス(FCS)406には、フレームの誤りを検出するための値が設定される。   Note that an MPLS header or another protocol header may be set in the payload 405, and an MPLS label value or the like may be set as a flow identifier. A value for detecting a frame error is set in the frame check sequence (FCS) 406.

図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-device header 3 added to the packet 4 of the first embodiment. The in-device header 3 includes an output network interface board identifier (output NIF ID) 301, a flow ID 302, and a packet length 303. The output NIF ID 301 is internal routing information. The internal routing information in this embodiment is information indicating which NIF 200 port of the packet communication device 2 outputs the packet 4 received by the packet communication device 2. The switch unit 206 transfers the input packet transmitted to the switch unit 206 to the specific SW interface 205 of the specific NIF 200 according to the internal routing information.

入出力回線インタフェース201は、受信したパケット4をパケット通信装置2において処理するため、受信したパケット4に装置内ヘッダ3を付加する。装置内ヘッダ3が付加され、入出力回線インタフェース201からスイッチ部206に向けて送信されるパケット4を、以降において、入力パケットと記載する。   The input / output line interface 201 adds the in-device header 3 to the received packet 4 in order to process the received packet 4 in the packet communication device 2. The packet 4 to which the in-device header 3 is added and transmitted from the input / output line interface 201 to the switch unit 206 is hereinafter referred to as an input packet.

入出力回線インタフェース201は、受信したパケット4に装置内ヘッダ3を付加する際、出力NIF ID301、及び、フローID302にnull値等の値を格納する。すなわち、入出力回線インタフェース201は、出力NIF ID301、及び、フローID302に格納される値を決定しない。出力NIF ID301、及び、フローID302には、入力パケット制御部203によって値が格納される。   The input / output line interface 201 stores values such as a null value in the output NIF ID 301 and the flow ID 302 when adding the in-device header 3 to the received packet 4. That is, the input / output line interface 201 does not determine the values stored in the output NIF ID 301 and the flow ID 302. Values are stored in the output NIF ID 301 and the flow ID 302 by the input packet control unit 203.

入出力回線インタフェース201は、受信したパケット4のパケット長を取得し、装置内ヘッダ3のフレーム長303に、取得されたパケット長を格納する。その後、入出力回線インタフェース201は、パケット4を入力パケット制御部203に送信する。   The input / output line interface 201 acquires the packet length of the received packet 4 and stores the acquired packet length in the frame length 303 of the in-device header 3. Thereafter, the input / output line interface 201 transmits the packet 4 to the input packet control unit 203.

入力パケット制御部203は、入出力回線インタフェース201から受信したパケット4に関して、後述するパケット処理を実行する。本パケット処理時に、装置内ヘッダ3の出力NIF ID301及びフローID302を追加する。   The input packet control unit 203 performs packet processing described later on the packet 4 received from the input / output line interface 201. At the time of this packet processing, the output NIF ID 301 and the flow ID 302 of the in-device header 3 are added.

パケット処理後、入力パケット制御部203は、入力パケットをSWインタフェース205に送信する。SWインタフェース205は、受信した入力パケットをスイッチ部206に転送する。   After the packet processing, the input packet control unit 203 transmits the input packet to the SW interface 205. The SW interface 205 transfers the received input packet to the switch unit 206.

スイッチ部206は、各NIF200のSWインタフェース205から入力パケットを受信した後、入力パケットの出力NIF ID301を参照することによって、受信した入力パケットの転送先であるNIF200を特定する。次に、スイッチ部206は、特定されたNIF200に対応するSWインタフェース205に、受信した入力パケットを、出力パケットとして転送する。   After receiving the input packet from the SW interface 205 of each NIF 200, the switch unit 206 refers to the output NIF ID 301 of the input packet to identify the NIF 200 that is the transfer destination of the received input packet. Next, the switch unit 206 transfers the received input packet as an output packet to the SW interface 205 corresponding to the specified NIF 200.

なお、本実施例において、スイッチ部206から入出力回線インタフェース201へ送信されるパケット4を出力パケットと記載する。   In the present embodiment, the packet 4 transmitted from the switch unit 206 to the input / output line interface 201 is referred to as an output packet.

SWインタフェース205は、受信した出力パケットを出力パケット制御部204に転送する。   The SW interface 205 transfers the received output packet to the output packet control unit 204.

前述の例では、入力パケット制御部203がパケット処理を実行した。しかし、出力パケット制御部204が、入力パケット制御部203の代わりにパケット処理を実行してもよい。   In the above example, the input packet control unit 203 executes packet processing. However, the output packet control unit 204 may execute packet processing instead of the input packet control unit 203.

出力パケット制御部204がパケット処理を実行する場合、パケット処理後、出力パケット制御部204は、出力パケットを入出力回線インタフェース201に送信する。   When the output packet control unit 204 executes packet processing, the output packet control unit 204 transmits the output packet to the input / output line interface 201 after packet processing.

出力パケット制御部204がパケット処理を実施しない場合、出力パケット制御部208は、SWインタフェース205から受信した出力パケットを、そのまま入出力回線インタフェース201に転送する。   When the output packet control unit 204 does not perform packet processing, the output packet control unit 208 transfers the output packet received from the SW interface 205 to the input / output line interface 201 as it is.

入出力回線インタフェース201は、受信した出力パケットから装置内ヘッダ3を除去する。その後、入出力回線インタフェース201は、図4に示すパケット4のフォーマットによって、出力パケットを他の装置へ転送する。   The input / output line interface 201 removes the in-device header 3 from the received output packet. Thereafter, the input / output line interface 201 transfers the output packet to another device in the format of the packet 4 shown in FIG.

図5は、本実施例1の入力パケット制御部203の論理的な構成を示すブロック図である。   FIG. 5 is a block diagram illustrating a logical configuration of the input packet control unit 203 according to the first embodiment.

入力パケット制御部203は、振分部502、複数の分散処理部503(503−1〜503−N)(Nは任意の自然数)、多重部504、及び、集中処理部505を備える。   The input packet control unit 203 includes a distribution unit 502, a plurality of distributed processing units 503 (503-1 to 503-N) (N is an arbitrary natural number), a multiplexing unit 504, and a centralized processing unit 505.

振分部502は、入力パケット制御部203が入出力回線インタフェース201から入力パケットを受信した場合、後述する振分け処理S950を実行する処理部である。振分部502は、振分け処理S950において、パケット処理を実行する分散処理部503を、分散処理部503−1〜分散処理部503−Nから決定する。   The distribution unit 502 is a processing unit that executes a distribution process S950 described later when the input packet control unit 203 receives an input packet from the input / output line interface 201. In the distribution process S950, the distribution unit 502 determines a distributed processing unit 503 that executes packet processing from the distributed processing units 503-1 to 503-N.

分散処理部503は、後述するパケット処理を実行する。分散処理部503は、本パケット処理時に、集中処理部505にフローIDやパケット長などのパケット情報を転送する。パケット処理後、分散処理部503は、入力パケットを多重部504に送信する。   The distributed processing unit 503 executes packet processing to be described later. The distributed processing unit 503 transfers packet information such as a flow ID and a packet length to the central processing unit 505 at the time of this packet processing. After the packet processing, the distributed processing unit 503 transmits the input packet to the multiplexing unit 504.

集中処理部505は、後述するパケット処理を実行する。複数の分散処理部503(503−1〜503−N)から転送されるパケット情報を集約して処理し、後述する統計情報テーブル704を更新する。   The central processing unit 505 executes packet processing to be described later. Packet information transferred from a plurality of distributed processing units 503 (503-1 to 503-N) is aggregated and processed, and a statistical information table 704 described later is updated.

多重部504は、各分散処理部503から受信したパケットを多重し、到着順にSWインタフェース205に送信する。   The multiplexing unit 504 multiplexes the packets received from the respective distributed processing units 503 and transmits them to the SW interface 205 in the order of arrival.

本実施例において、入力パケット制御部203がパケット処理に要する時間はあらかじめ定められる。   In this embodiment, the time required for packet processing by the input packet control unit 203 is determined in advance.

さらに、本実施例において、分散処理部503の数Nは、入力パケット制御部203において受信するパケット到着間隔(複数のパケットが1clk以内に同時到着する場合はそのパケット数)と分散処理部503のパケット処理時間とに基づいて決定される。なお、最短パケット到着間隔は、パケット通信装置2が接続される回線に従って、あらかじめ定められる値である。   Further, in the present embodiment, the number N of the distributed processing units 503 is the packet arrival interval received by the input packet control unit 203 (the number of packets when a plurality of packets arrive simultaneously within 1 clk) and the number of distributed processing units 503. It is determined based on the packet processing time. The shortest packet arrival interval is a value determined in advance according to the line to which the packet communication device 2 is connected.

例えば、入力パケット制御部203に1clk以内に2つのパケットが同時に到着し、分散処理部503のパケット処理時間が20clkである場合、同時到着パケット数に分散処理部503のパケット処理時間を乗算(余りは繰上げ)した結果は“40”である。このため、分散処理部503の数Nは“40”にあらかじめ決定される。   For example, when two packets arrive at the input packet control unit 203 within 1 clk at the same time and the packet processing time of the distributed processing unit 503 is 20 clk, the number of simultaneous arrival packets is multiplied by the packet processing time of the distributed processing unit 503 (remainder The result of the advance is “40”. For this reason, the number N of distributed processing units 503 is determined in advance to “40”.

図6は、本実施例1の分散処理部503の論理的な構成を示すブロック図である。   FIG. 6 is a block diagram illustrating a logical configuration of the distributed processing unit 503 according to the first embodiment.

分散処理部503は、入力ヘッダ解析部601、入力ヘッダ処理部602、及び、出力判定処理部603を備える。   The distributed processing unit 503 includes an input header analysis unit 601, an input header processing unit 602, and an output determination processing unit 603.

入力ヘッダ解析部601は、振分部502から入力パケットを受信した場合、後述するヘッダ解析処理S1050を実行する処理部である。入力ヘッダ解析部601は、ヘッダ解析処理S1050において、パケット4のフローを識別し、集中処理部505が処理する時に必要となるパケット情報を転送し、ヘッダ処理部602へパケットを転送する。   The input header analysis unit 601 is a processing unit that executes a header analysis process S1050 described later when an input packet is received from the distribution unit 502. In the header analysis processing S1050, the input header analysis unit 601 identifies the flow of the packet 4, transfers packet information required when the central processing unit 505 processes the packet, and transfers the packet to the header processing unit 602.

入力ヘッダ処理部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 header processing unit 602 receives an input packet from the input header analysis unit 601, the input header processing unit 602 executes VLAN tag processing according to the flow identified by the input header analysis unit 601. The VLAN tag processing is, for example, transparency, conversion, addition, and deletion of the VLAN tag. That is, the VLAN tag processing is processing for converting the VLAN header of the input packet into the VLAN header of the packet output from the packet communication device 2. In the VLAN tag processing, the input header processing unit 602 may overwrite the destination MAC address 401 and the transmission source MAC address 402 with values set in the input / output line interface 201 or for each flow registered in advance. It may be overwritten by the value of. After processing the VLAN tag, the input header processing unit 602 transmits the input packet to the output determination processing unit 603. At this time, the input header processing unit 602 transmits the packet to the output determination processing unit 603 at the same timing as the calculation completion notification timing of the central processing unit 505 described later.

出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合、後述する出力判定処理S1150を実行する処理部である。出力判定処理部603は、出力判定処理S1150において、集中処理部505の演算終了と同時に、多重部504へパケットを転送する。   When receiving an input packet from the input header processing unit 602, the output determination processing unit 603 is a processing unit that executes output determination processing S1150 described later. In the output determination processing S1150, the output determination processing unit 603 transfers the packet to the multiplexing unit 504 at the same time as the calculation of the central processing unit 505.

図7は、本実施例1の集中処理部505の論理的な構成を示すブロック図である。   FIG. 7 is a block diagram illustrating a logical configuration of the central processing unit 505 according to the first embodiment.

集中処理部505は、調停部701、演算フロー管理リスト702、演算部703(703−1〜703−N)(Nは任意の自然数)、統計情報テーブル704を備える。   The central processing unit 505 includes an arbitration unit 701, a calculation flow management list 702, calculation units 703 (703-1 to 703-N) (N is an arbitrary natural number), and a statistical information table 704.

調停部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 unit 701 is a processing unit that executes arithmetic unit selection arbitration processing S1250 described later. The arbitration unit 701 identifies the flow based on the flow ID received from the distributed processing unit 503, and further refers to the calculation flow management list 702. And thereby, the calculating part 703 which performs the statistics count process regarding an input packet is determined from the calculating part 703-1-calculating part 703-N.

また、調停部701は、演算フロー管理リスト702を、論理回路210に備わるメモリ等に保持する。そして、調停部701は、演算部選定調停処理S1250及び演算フロー管理処理S1450において、演算フロー管理リスト702を更新する。   The arbitration unit 701 holds the calculation flow management list 702 in a memory or the like provided in the logic circuit 210. The arbitration unit 701 then updates the computation flow management list 702 in the computation unit selection arbitration process S1250 and the computation flow management process S1450.

さらに、調停部701は、演算部703から演算終了通知を受信した場合、後述する更新調停処理S1650を実行する処理部である。調停部701は、演算部703が更新した統計情報を統計情報テーブル704に書き戻し、処理要求を送信してきた分散処理部503に演算終了通知を転送する。   Further, the arbitration unit 701 is a processing unit that executes an update arbitration process S1650, which will be described later, when a computation end notification is received from the computation unit 703. The arbitration unit 701 writes the statistical information updated by the calculation unit 703 back to the statistical information table 704, and transfers the calculation end notification to the distributed processing unit 503 that has transmitted the processing request.

演算フロー管理リスト702は、演算部703が処理する入力パケットのフローIDと、演算部703の処理状況とを示す。   The calculation flow management list 702 indicates the flow ID of the input packet processed by the calculation unit 703 and the processing status of the calculation unit 703.

演算部703は、後述する統計情報処理S1550において、統計情報テーブル7044に含まれる各フローの情報を更新する。また、演算部703は、統計情報処理S1550において更新した結果を、調停部701に送信する。演算部703は、集中処理部505にN個(Nは任意の自然数)備わる。   The arithmetic unit 703 updates information of each flow included in the statistical information table 7044 in statistical information processing S1550 described later. In addition, the calculation unit 703 transmits the result updated in the statistical information processing S1550 to the arbitration unit 701. The arithmetic unit 703 includes N (N is an arbitrary natural number) in the central processing unit 505.

図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 packet communication device 2. The statistical information table 704 includes a flow ID 801, the number of received packets 802, and the number of received bytes 803.

フローID801は、入力パケットのフローIDを含む。受信パケット数802は、振分部502が受信した入力パケットの数を含む。受信バイト数803は、振分部502が受信した入力パケットのバイト数の合計値を示す。   The flow ID 801 includes the flow ID of the input packet. The number of received packets 802 includes the number of input packets received by the distribution unit 502. The number of received bytes 803 indicates the total number of bytes of input packets received by the distribution unit 502.

図13は、本実施例1の演算フロー管理リスト702を示す説明図である。   FIG. 13 is an explanatory diagram illustrating the calculation flow management list 702 according to the first embodiment.

演算フロー管理リスト702は、演算部1301、フローID1302、及び、処理状況カウンタ1303を含む。   The calculation flow management list 702 includes a calculation unit 1301, a flow ID 1302, and a processing status counter 1303.

演算部1301は、演算部703−1〜703−Nを一意に示す識別子を含む。本実施例の演算部1301は、演算部703を数値によって識別する値を含む。演算部1301に格納される値は、管理者等によってあらかじめ設定される。フローID1302は、演算部703が処理する入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID1302に格納される値は、調停部701によって更新される。また、フローID1302に格納される値は、入力ヘッダ解析部601において識別したフローIDの値に対応する。   The calculation unit 1301 includes an identifier that uniquely indicates the calculation units 703-1 to 703-N. The calculation unit 1301 of this embodiment includes a value that identifies the calculation unit 703 by a numerical value. The value stored in the calculation unit 1301 is set in advance by an administrator or the like. The flow ID 1302 includes a flow ID that uniquely indicates the flow assigned to the input packet processed by the arithmetic unit 703. The value stored in the flow ID 1302 is updated by the arbitration unit 701. The value stored in the flow ID 1302 corresponds to the value of the flow ID identified in the input header analysis unit 601.

処理状況カウンタ1303は、演算部703における演算処理(統計情報処理)の状況を示す値を含む。本実施例の処理状況カウンタ1303は、演算処理が開始されてから経過した実行時間に関する値を含む。   The processing status counter 1303 includes a value indicating the status of arithmetic processing (statistical information processing) in the arithmetic unit 703. The processing status counter 1303 of the present embodiment includes a value related to the execution time that has elapsed since the arithmetic processing started.

以下に示す処理状況カウンタ1303は、減算カウンタによって、演算処理が終了するまでの残り時間を示す。具体的には、演算処理が開始された場合、処理状況カウンタ1303には演算時間が格納される。そして、調停部701が単位時間(本実施例において1clk)毎に処理状況カウンタ1303の値を減算する。処理状況カウンタ1303に“0”が格納されるエントリは、演算部1301が示す演算部703は演算処理を終了したことを示す。また、処理状況カウンタ1303に“0”以外の正の数が格納されるエントリは、演算部1301が示す演算部703は演算処理中であることを示す。   A processing status counter 1303 shown below indicates the remaining time until the arithmetic processing is completed by the subtraction counter. Specifically, when the calculation process is started, the calculation time is stored in the processing status counter 1303. Then, the arbitration unit 701 subtracts the value of the processing status counter 1303 every unit time (1 clk in the present embodiment). An entry in which “0” is stored in the processing status counter 1303 indicates that the calculation unit 703 indicated by the calculation unit 1301 has finished the calculation process. An entry in which a positive number other than “0” is stored in the processing status counter 1303 indicates that the calculation unit 703 indicated by the calculation unit 1301 is performing calculation processing.

以下において、処理状況カウンタ1303が減算カウンタである場合の処理を記載するが、処理状況カウンタ1303は加算カウンタによって、演算処理が開始されてから経過した時間を示してもよい。この場合、調停部701は、所定の演算時間と処理状況カウンタ1303とを比較することによって、演算処理の状況を取得しても良い。   In the following, the processing in the case where the processing status counter 1303 is a subtraction counter will be described, but the processing status counter 1303 may indicate the time that has elapsed since the arithmetic processing was started by the addition counter. In this case, the arbitration unit 701 may acquire the status of the calculation process by comparing a predetermined calculation time with the processing status counter 1303.

以下に、振分部502が実行する振分け処理S950について説明する。図9は、本実施例1の振分部502が実行する振分け処理S950を示すフローチャートである。   The distribution process S950 executed by the distribution unit 502 will be described below. FIG. 9 is a flowchart illustrating the distribution process S950 executed by the distribution unit 502 according to the first embodiment.

振分部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 unit 502 takes an internal counter value (this counter takes a value of 1 to N). , N returns to 1), and the packets are transferred to the distribution processing unit 503 (503-1 to 503-N) in the order in which the packets are received (S901). After S901, the distribution unit 502 counts up the value of the internal counter by the number of received packets (S902), and ends the distribution process S950 shown in FIG. 9 (S903).

以下に、入力ヘッダ解析部601が実行するヘッダ解析処理S1050について説明する。図10は、本実施例1の入力ヘッダ解析部601が実行するヘッダ解析処理S1050を示すフローチャートである。   Hereinafter, the header analysis process S1050 executed by the input header analysis unit 601 will be described. FIG. 10 is a flowchart illustrating the header analysis processing S1050 executed by the input header analysis unit 601 according to the first embodiment.

入力ヘッダ解析部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 header analysis unit 601 receives an input packet from the distribution unit 502 (S1000), the input header analysis unit 601 acquires the value of the packet length 303 from the in-device header 3 included in the input packet (S1001). After S1001, the flow of the packet 4 is identified based on the received input packet 403, thereby determining the output NIF ID (S1002). After S1002, the input header analysis unit 601 outputs the processing start trigger, the flow ID, and the acquired packet length to the central processing unit 505 (S1003). After S1003, the input header analysis unit 601 stores values in the output NIF ID 301 and the flow ID 302 of the in-device header 3 of the input packet, and forwards the packet to the input header processing unit 602 (S1004). The header analysis process S1050 shown is terminated (S1005).

以下に、本実施例1の出力判定処理部603が実行する出力判定処理S1150について説明する。図11は、本実施例1の出力判定処理部603が実行する出力判定処理S1150を示すフローチャートである。   The output determination process S1150 executed by the output determination processing unit 603 according to the first embodiment will be described below. FIG. 11 is a flowchart illustrating the output determination processing S1150 executed by the output determination processing unit 603 according to the first embodiment.

出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合(S1100)、集中処理部505から演算終了通知があるか否かを判定する(S1101)。S1101において、演算終了通知があると判定された場合、多重部504へパケットを転送し(S1102)、図11に示す出力判定処理S1150を終了する(S1104)。また、S1101において、演算終了通知がないと判定された場合、入力パケットを廃棄し(S1103)、図11に示す出力判定処理S1150を終了する(S1104)。   When the output determination processing unit 603 receives an input packet from the input header processing unit 602 (S1100), the output determination processing unit 603 determines whether there is a calculation end notification from the central processing unit 505 (S1101). If it is determined in S1101 that there is an operation end notification, the packet is transferred to the multiplexing unit 504 (S1102), and the output determination process S1150 shown in FIG. 11 is ended (S1104). If it is determined in S1101 that there is no calculation end notification, the input packet is discarded (S1103), and the output determination process S1150 shown in FIG. 11 is ended (S1104).

以下に、本実施例1の調停部701が実行する演算部選定調停処理S1250について説明する。図12は、本実施例1の調停部701が実行する演算部選定調停処理S1250を示すフローチャートである。   Hereinafter, the calculation unit selection arbitration process S1250 executed by the arbitration unit 701 according to the first embodiment will be described. FIG. 12 is a flowchart illustrating the calculation unit selection arbitration process S1250 executed by the arbitration unit 701 according to the first embodiment.

調停部701は、分散処理部503(503−1〜503−N)から処理開始トリガを受信した場合(複数の処理開始トリガを同時に受信する場合もある)(S1200)、処理開始トリガと同時に受信するフローID、及び、パケット長を取得し、処理開始トリガの到着順を保持する(S1201)。S1201の後、調停部701は、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303の値が“0”と異なるか否かを判定する(S1202)。   The arbitration unit 701 receives the processing start trigger from the distributed processing unit 503 (503-1 to 503-N) (may receive a plurality of processing start triggers at the same time) (S1200) and receives the processing start trigger at the same time. The flow ID and the packet length to be acquired are acquired, and the arrival order of the processing start trigger is held (S1201). After S1201, the arbitration unit 701 determines whether or not the values of the processing status counters 1303 of all entries in the computation flow management list 702 are different from “0” (S1202).

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 flow management list 702 are different from “0”, all the calculation units 703 (703-1 to 703-N) are executing calculation processing. is there. Since the arithmetic processing in the case of a new flow cannot be accepted, the arbitration unit 701 determines to discard the input packet (S1203), and ends the arithmetic unit selection arbitration processing S1250 shown in FIG. 12 (S1210).

また、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 processing status counter 1303 is “0” among the entries in the computation flow management list 702 in S1202, at least one of all the computation units 703 (703-1 to 703-N). One arithmetic unit 703 does not execute arithmetic processing. Therefore, the arbitration unit 701 searches the statistical information table 704 using the flow ID value acquired in S1201 as a search key (flow ID 801), and acquires information on the number of received packets 802 and the number of received bytes 803 (S1204). ).

なお、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 arbitration unit 701 checks in the calculation unit 703 whether the number of calculation units corresponding to the number of flows that have received the process start trigger can be processed. . The arbitration unit 701 performs processing in S1204 when there are a plurality of entries in the computation flow management list 702 whose processing status counter 1303 is “0” for SFlow and the arbitration unit 701 has received a processing start trigger at the same time. move on. The arbitration unit 701 proceeds to the processing of S1203 when there is no entry whose processing status counter 1303 is “0” for a plurality of flows that simultaneously received the processing start trigger in S1200. If there is no entry for which the process status counter 1303 is “0” for a plurality of flows that simultaneously received the process start trigger in S1200, the process for the flow for the entry for which the process status counter 1303 is “0” is performed in S1204. The processing may proceed to S1203 for the remaining flow processing.

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 processing status counter 1303 match the value of the flow ID 1302 of an entry different from “0” (S1205).

なお、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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 701 determines the flow ID acquired. It may be determined that the value corresponding to the value matches the value of the flow ID 1302 of the entry whose processing status counter 1303 is different from “0”.

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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 701 has not performed the arithmetic processing. In order to cause the calculation unit to newly execute a calculation process related to the input packet, the process of S1208 is executed.

また、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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the calculation unit 703 corresponding to the flow ID of the input packet. Can continue the arithmetic processing related to the input packet. For this reason, the arbitration unit 701 determines the arithmetic unit 703 indicated by the arithmetic unit 1301 of the entry whose acquired flow ID value matches the flow ID 1302 to be the arithmetic unit 703 that continuously executes the arithmetic processing related to the input packet. .

そして、調停部701は、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を、演算時間を示す値に更新する(S1206)。例えば、調停部701は、演算時間が10clkの場合、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を“10”に更新する。   Then, the arbitrating unit 701 updates the value of the processing status counter 1303 of the entry in which the acquired flow ID value matches the flow ID 1302 to a value indicating the calculation time (S1206). For example, when the calculation time is 10 clk, the arbitration unit 701 updates the value of the processing status counter 1303 of the entry in which the acquired flow ID value matches the flow ID 1302 to “10”.

S1206において処理状況カウンタ1303を更新することによって、調停部701は、各演算部703が演算処理を終了するまで実行していることを示す。   By updating the processing status counter 1303 in S1206, the arbitration unit 701 indicates that each calculation unit 703 is executing until the calculation process is completed.

S1206の後、調停部701は、S1201において処理開始トリガと同時に取得したフローのうち、フローIDが同じであった数、同じフローIDのパケット長の合算値を、それぞれ取得パケット数、取得パケット長としてフロー毎に保持する(S1211)。取得パケット数は、S1201において取得したフローIDが同じであった数、すなわち、同一フローIDの同時入力パケット数である。取得パケット長は、S1201において取得した同じフローIDのパケット長の合算値、すなわち、同一フローIDの同時入力パケットの合計パケット長である。
S1211の後、調停部701は、取得したフローIDの値とフローID1302の値とが一致した演算フロー管理リスト702のエントリの演算部1301が示す演算部703へ、処理開始トリガ、新規/継続パラメータ、取得パケット数、取得パケット長、受信パケット数、及び、受信バイト数を含む演算通知を出力する(S1207)。
After S1206, the arbitration unit 701 calculates the number of acquired packets and the acquired packet length by using the number of flows with the same flow ID and the sum of the packet lengths of the same flow ID among the flows acquired simultaneously with the processing start trigger in S1201. Is held for each flow (S1211). The number of acquired packets is the number that the flow IDs acquired in S1201 are the same, that is, the number of simultaneously input packets of the same flow ID. The acquired packet length is the sum of the packet lengths of the same flow ID acquired in S1201, that is, the total packet length of the simultaneously input packets of the same flow ID.
After S1211, the arbitration unit 701 transfers the processing start trigger and the new / continuation parameter to the calculation unit 703 indicated by the calculation unit 1301 of the entry of the calculation flow management list 702 in which the acquired flow ID value matches the flow ID 1302 value. An operation notification including the number of acquired packets, the acquired packet length, the number of received packets, and the number of received bytes is output (S1207).

S1207において、調停部701は、新規/継続パラメータを、継続を示す値に決定し、継続を示す新規/継続パラメータ(本実施例において“1”)を、演算通知に含める。本実施例における新規/継続パラメータとは、各演算部703にどのような演算処理を実行するかを通知するための値である。S1207の後、図12に示す演算部選定調停処理S1250を終了する(S1210)。   In S1207, the arbitration unit 701 determines the new / continuation parameter as a value indicating continuation, and includes the new / continuation parameter (“1” in the present embodiment) indicating continuation in the calculation notification. The new / continuation parameter in the present embodiment is a value for notifying each arithmetic unit 703 what kind of arithmetic processing is to be executed. After S1207, the calculation unit selection arbitration process S1250 shown in FIG. 12 is terminated (S1210).

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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 701 sets the processing status counter 1303 to “0”. Among the entries in the computation flow management list 1302 that is “,” the entry having the smallest number in the computation unit 1301 is extracted. The arbitration unit 701 determines the calculation unit 703 indicated by the calculation unit 1301 of the extracted entry to be a calculation unit 703 that newly executes a calculation process related to the input packet.

そして、調停部701は、抽出されたエントリのフローID1302を、S1201で取得したフローIDの値によって更新する。また、調停部701は、抽出されたエントリの処理状況カウンタ1303を、演算時間を示す値に更新する(S1208)。   Then, the arbitrating unit 701 updates the flow ID 1302 of the extracted entry with the value of the flow ID acquired in S1201. Further, the arbitrating unit 701 updates the processing status counter 1303 of the extracted entry to a value indicating the calculation time (S1208).

なお、前述の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 arbitration unit 701 extracts the entry with the smallest number (smallest number) in the computation unit 1301 from the computation flow management list 1302 whose processing status counter 1303 is “0”. However, the arbitration unit 701 may extract an entry according to any rule as long as it is one of the entries in the computation flow management list 702 whose processing status counter 1303 is “0”. For example, the arbitrating unit 701 may extract the entry having the largest value, or the order of entries to be extracted in advance may be determined by the administrator.
After S1208, the arbitrating unit 701 holds the number of the same flow ID acquired in S1201 and the sum of the packet lengths of the same flow ID acquired in S1201 as the acquired packet number and the acquired packet length, respectively (S1212). ).
After S <b> 1212, the arbitration unit 701 performs an operation including the processing start trigger, the new / continuation parameter, the number of acquired packets, the acquired packet length, the number of received packets, and the number of received bytes, to the calculation unit 703 determined in S <b> 1207 and S <b> 1209. A notification is output (S1209). In S1209, the arbitration unit 701 determines the new / continuation parameter as a value indicating new, and includes the new / continuation parameter indicating “new” (“0” in this embodiment) in the calculation notification.

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 calculation unit 703 starts statistical information processing S1550 described later. The number of acquired packets included in the calculation notification is the number of acquired packets held in S1211 or S1212. The acquisition packet length included in the calculation notification is the acquisition packet length held in S1211 or S1212. The number of received packets and the number of received bytes are the number of received packets and the number of received bytes acquired in S1204.

また、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 arithmetic unit 703 as the number of acquired packets and the acquired packet length. . Therefore, even if the central processing unit 505 receives processing start triggers for input packets with the same flow ID at the same time, statistical information processing can be executed without causing overflow.

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 arbitration unit 701 will be described below.

図14は、本実施例1の調停部701が実行する演算フロー管理処理S1450を示すフローチャートである。   FIG. 14 is a flowchart illustrating the calculation flow management process S1450 executed by the arbitration unit 701 according to the first embodiment.

調停部701は、1クロック毎に(S1400)、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303が0であるか否かを判定する(S1401)。   The arbitration unit 701 determines whether or not the processing status counters 1303 of all entries in the calculation flow management list 702 are 0 every clock (S1400).

演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303が0であると、S1401において判定された場合、調停部701は、演算フロー管理処理S1450を終了する(S1403)。   If it is determined in S1401 that the processing status counter 1303 of all entries in the computation flow management list 702 is 0, the arbitration unit 701 ends the computation flow management processing S1450 (S1403).

また、演算フロー管理リスト702のエントリに処理状況カウンタ1303が0でないエントリがあるとS1401において判定された場合、調停部701は、処理状況カウンタ1303の列に含まれる0以外の値から1を減算する(S1402)。S1402の後、調停部701は、演算フロー管理処理S1450を終了する(S1403)。   If it is determined in S1401 that the processing status counter 1303 has an entry other than 0 in the calculation flow management list 702, the arbitration unit 701 subtracts 1 from a value other than 0 included in the processing status counter 1303 column. (S1402). After S1402, the arbitrating unit 701 ends the calculation flow management process S1450 (S1403).

以下に、演算部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 calculation unit 703 according to the first embodiment.

演算部703は、調停部701から処理開始トリガを含む演算通知を受信した場合(S1500)、受信した演算通知に含まれる新規/継続パラメータ、取得パケット数、取得パケット長、受信パケット数、及び、受信バイト数を取得する(S1501)。   When the calculation unit 703 receives a calculation notification including a process start trigger from the arbitration unit 701 (S1500), the new / continuation parameter, the acquired packet number, the acquired packet length, the received packet number, and the received calculation notification, The number of received bytes is acquired (S1501).

S1501の後、演算部703は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S1502)。   After S1501, the calculation unit 703 determines whether the new / continuation parameter is “0”, that is, whether the new / continuation parameter indicates new (S1502).

新規/継続パラメータが“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 arithmetic unit 703 proceeds to the processing of S1504.

新規/継続パラメータが“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 calculation unit 703 causes the calculation unit 703 to internally retain the previous calculation result for continuation processing ( The previous received packet count and the previous received byte count) are acquired (S1503). The previous calculation result held internally for the continuation processing is the calculation result held by the arithmetic unit 703 in the logic circuit 202 in order to continuously execute the next statistical information processing before all statistical information processing ends. It is. In S1503, the calculation unit 703 updates the number of received packets and the number of received bytes included in the calculation notification received in S1501 by acquiring the previous calculation result held internally, and the process proceeds to S1504. The arbitration unit assigns processing to the processing unit that is processing the same flow, and uses the previous calculation result held inside the calculation unit, so that even if the input packets of the same flow are received continuously, overflow will occur. Statistical information processing can be executed normally without occurrence.

S1502(新規/継続パラメータが“0”である場合)又はS1503の後、演算部703は、受信パケット数(S1501において演算通知と同時に取得した受信パケット数、又は、S1503において取得した前回受信パケット数)に、S1501において演算通知と同時に取得した取得パケット数分を加算する。また、演算部703は、受信バイト数(S1501において取得した受信バイト数、又は、S1503において取得した前回受信バイト数)に、S1501において演算通知と同時に取得した取得パケット長分を加算する。   After S1502 (when the new / continuation parameter is “0”) or S1503, the calculation unit 703 determines the number of received packets (the number of received packets acquired simultaneously with the calculation notification in S1501 or the number of previous received packets acquired in S1503). ) Is added to the number of acquired packets acquired at the same time as the calculation notification in S1501. In addition, the calculation unit 703 adds the acquired packet length acquired simultaneously with the calculation notification in S1501 to the number of received bytes (the number of received bytes acquired in S1501 or the previous number of received bytes acquired in S1503).

そして、演算部703は、加算結果を、更新された受信パケット数、及び、受信バイト数として取得し、取得した、更新された受信パケット数、及び、受信バイト数を含む演算終了通知を調停部701に転送する(S1504)。   Then, the calculation unit 703 acquires the addition result as the updated number of received packets and the number of received bytes, and arbitrates the calculation end notification including the acquired updated number of received packets and the number of received bytes. The data is transferred to 701 (S1504).

S1504の後、演算部703は、更新した受信パケット数、及び、更新した受信バイト数を、前回受信パケット数及び前回受信バイト数として次パケットの継続処理用に内部保持する(S1505)。   After S1504, the calculation unit 703 internally stores the updated number of received packets and the updated number of received bytes as the previous received packet number and the previous received byte number for subsequent processing of the next packet (S1505).

S1505の後、演算部703は、統計情報処理S1550を終了する(S1506)。   After S1505, the calculation unit 703 ends the statistical information processing S1550 (S1506).

以下に、調停部701が実行する更新調停処理S1650について説明する。   Below, update mediation processing S1650 which mediation part 701 performs is explained.

図16は、本実施例1の調停部701が実行する更新調停処理S1650を示すフローチャートである。   FIG. 16 is a flowchart illustrating the update arbitration process S1650 executed by the arbitration unit 701 according to the first embodiment.

調停部701は、演算部703(703−1〜703−N)から演算終了通知を受信した場合(S1600)、受信した演算終了通知に含まれる受信パケット数、及び、受信バイト数を取得し、統計情報テーブル704に書き戻す(S1601)。ここで、従来技術では、受信したフロー数の回数分、統計情報テーブルへの書き戻しを行うが、本実施例では、同時に処理開始トリガを受信した同じフローIDのフローの取得パケット数、及び、取得パケット長の合計値を用いて一つの演算部703で統計情報処理を行う。従って、従来技術よりも書き戻しの回数を削減することが出来る。   When the arbitration unit 701 receives a calculation end notification from the calculation unit 703 (703-1 to 703-N) (S1600), the arbitration unit 701 acquires the number of received packets and the number of received bytes included in the received calculation end notification, The data is written back to the statistical information table 704 (S1601). Here, in the prior art, writing back to the statistical information table is performed for the number of received flows, but in this embodiment, the number of acquired packets of the flow with the same flow ID that received the processing start trigger at the same time, and One arithmetic unit 703 performs statistical information processing using the total value of the acquired packet lengths. Therefore, the number of write-backs can be reduced as compared with the prior art.

S1601の後、調停部701は、演算部選定調停処理S1250において保持した処理開始トリガの到着順から、処理開始トリガの送信元の分散処理部503(503−1〜503−N)を特定し、特定した分散処理部503へ演算終了通知を転送する(S1602)。   After S1601, the arbitration unit 701 specifies the distributed processing unit 503 (503-1 to 503-N) that is the transmission source of the process start trigger from the arrival order of the process start trigger held in the calculation unit selection arbitration process S1250, An operation end notification is transferred to the identified distributed processing unit 503 (S1602).

S1602の後、調停部701は、更新調停処理S1650を終了する(S1603)。   After S1602, the arbitration unit 701 ends the update arbitration process S1650 (S1603).

前述のとおり、実施例1によれば、パケット通信装置2は、調停部701において、ラウンドロビンで各分散処理部503(503−1〜503−N)に振分けられたパケットの情報を集約し、演算部703(703−1〜703−N)へ通知する。これによって、実施例1の演算部703は、同一フローのパケットに関する統計カウント処理を同時に実行することが可能である。   As described above, according to the first embodiment, the packet communication device 2 aggregates the information of the packets distributed to the distributed processing units 503 (503-1 to 503-N) by the round robin in the arbitration unit 701. Notify the arithmetic unit 703 (703-1 to 703-N). As a result, the calculation unit 703 according to the first embodiment can simultaneously execute the statistical count processing regarding packets of the same flow.

従って、実施例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 distribution unit 502 distributes the input packet to the distributed processing units 503 (503-1 to 503-N) in units of input packets. The input packet may be distributed to the distributed processing unit 503 after being fragmented.

図17は、本実施例1のパケットに付加されるフラグメントヘッダ5のフォーマットを示す説明図である。   FIG. 17 is an explanatory diagram showing the format of the fragment header 5 added to the packet of the first embodiment.

図17に示すフラグメントヘッダ5のフォーマットは一例であり、本実施例において用いられるフラグメントヘッダは、いかなる情報を含んでもよい。   The format of the fragment header 5 shown in FIG. 17 is an example, and the fragment header used in this embodiment may include any information.

フラグメントヘッダ5は、総フラグメント数1701、シーケンス番号1702、及び、フラグメント長1703を含む。   The fragment header 5 includes a total fragment number 1701, a sequence number 1702, and a fragment length 1703.

総フラグメント数1701は、入力パケット(装置内ヘッダ3が付与されたパケット4)が断片化された総数が設定される。シーケンス番号1702は、断片化された入力パケットの順番が設定される。フラグメント長1703は、断片化された入力パケットの長さが設定される。   The total number of fragments 1701 is set to the total number of fragmented input packets (packet 4 with in-device header 3 attached). In the sequence number 1702, the order of the fragmented input packet is set. In the fragment length 1703, the length of the fragmented input packet is set.

図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 distribution unit 702 fragments the received input packet, adds the fragment header 5, and transfers the fragmented packet to the distributed processing unit 503 (503-1 to 503 -N).

多重部504は、分散処理部503(503−1〜503−N)から断片化された入力パケットを受信した場合、装置内ヘッダ5の総フラグメント数1701、シーケンス番号1702、及び、フラグメント長1703を参照し、入力パケットを再構築しても良い。   When the multiplexing unit 504 receives the fragmented input packet from the distributed processing unit 503 (503-1 to 503-N), the multiplexing unit 504 sets the total number of fragments 1701, the sequence number 1702, and the fragment length 1703 of the in-device header 5. The input packet may be reconstructed by referring to it.

また、振分部502は、入力パケットのヘッダ部分(例えば、宛先MACアドレス401からイーサタイプ値404まで)のみを分散処理部503へ振分け、残りのペイロード部分は多重部504へ転送し、分散処理部503の処理が終了するまで待合せておいても良い。   The distribution unit 502 distributes only the header portion (for example, from the destination MAC address 401 to the ethertype value 404) of the input packet to the distribution processing unit 503, and transfers the remaining payload portion to the multiplexing unit 504 for distributed processing. You may wait until the process of the part 503 is completed.

多重部504は、分散処理部503(503−1〜503−N)から入力パケットのヘッダ部分を受信した場合、待合せておいた残りのペイロード部分を受信し、入力パケットを再構築しても良い。   When the multiplexing unit 504 receives the header portion of the input packet from the distributed processing unit 503 (503-1 to 503-N), the multiplexing unit 504 may receive the remaining payload portion that has been queued and reconstruct the input packet. .

以下、本実施例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 packet communication apparatus 2 according to the first embodiment implements the statistical count process by implementing the centralized / distributed processing method of the present invention. The packet communication apparatus according to the second embodiment further changes the number of distributed processing units to be used according to the bandwidth of the input packet. In the second embodiment, in order to monitor the bandwidth of the input packet, the input packet control unit of the packet communication device includes a bandwidth monitoring unit.

図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 bandwidth monitoring buffer 19, a bandwidth monitoring unit 1901, a distribution unit 1902, a distributed processing unit management list 119, and a plurality of distributed processing units 503 (503-1 to 503-N) (N Is an arbitrary natural number), a multiplexing unit 1904, and a central processing unit 505.

実施例2における、分散処理部503、及び、集中処理部505は、実施例1における、分散処理部503、及び、集中処理部505と同じである。   The distributed processing unit 503 and the central processing unit 505 in the second embodiment are the same as the distributed processing unit 503 and the central processing unit 505 in the first embodiment.

帯域監視バッファ19は、入力パケットを格納するために使用される。   The bandwidth monitoring buffer 19 is used for storing input packets.

帯域監視部1901は、入力パケット制御部1900が入出力回線インタフェース201から入力パケットを受信した場合、後述する帯域監視バッファ書込み処理S2050を実行し、入力パケットを帯域監視バッファ19に格納する処理部である。   When the input packet control unit 1900 receives an input packet from the input / output line interface 201, the bandwidth monitoring unit 1901 executes a bandwidth monitoring buffer write process S2050, which will be described later, and stores the input packet in the bandwidth monitoring buffer 19. is there.

また、帯域監視部1901は、振分部1902からパケット読出し要求を受信した場合、後述する帯域監視バッファ読出し処理S2250を実行し、帯域監視バッファ19から入力パケットを読出し、入力パケットを振分部1902へ転送する処理部である。   When the bandwidth monitoring unit 1901 receives a packet read request from the allocating unit 1902, the bandwidth monitoring unit 1901 executes a bandwidth monitoring buffer reading process S 2250 described later, reads the input packet from the bandwidth monitoring buffer 19, and distributes the input packet to the allocating unit 1902 It is a processing part to transfer to.

さらに、帯域監視部1901は、帯域監視バッファ19に蓄積されたパケット量に応じて、利用する分散処理部の数(後述するX)(Xは1〜Nの任意の自然数)を決定する。   Further, the bandwidth monitoring unit 1901 determines the number of distributed processing units to be used (X described later) (X is an arbitrary natural number from 1 to N) according to the amount of packets accumulated in the bandwidth monitoring buffer 19.

振分部1902は、帯域監視部1901からパケット送信要求を受信した場合、後述する振分け処理S2350を実行する処理部である。振分部1902は、振分け処理S2350において、パケット処理を実行する分散処理部503を、分散処理部503−1〜分散処理部503−Xから決定する。なお、Xは、帯域監視部1901により決定される。   The distribution unit 1902 is a processing unit that executes a distribution process S2350 described later when a packet transmission request is received from the bandwidth monitoring unit 1901. In the distribution process S2350, the distribution unit 1902 determines a distributed processing unit 503 that executes packet processing from the distributed processing units 503-1 to 503-X. X is determined by the bandwidth monitoring unit 1901.

分散処理部管理リスト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 distribution unit 1902 distributes the input packet, and the processing status of the distributed processing unit 503.

多重部1904は、各分散処理部503から受信したパケットを多重し、到着順にSWインタフェース205に送信する。また、多重部1904は、帯域監視部1901により決定される利用する分散処理部の数Xに応じて、多重するパケットが、利用している分散処理部から受信しているかどうか、到着順を管理する。   The multiplexing unit 1904 multiplexes the packets received from the respective distributed processing units 503 and transmits them to the SW interface 205 in the order of arrival. In addition, the multiplexing unit 1904 manages the arrival order according to the number X of the distributed processing units to be used determined by the bandwidth monitoring unit 1901 and whether or not the packets to be multiplexed are received from the used distributed processing units. To do.

図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 processing unit 2401 and a processing status counter 2402.

分散処理部2401は、分散処理部503−1〜503−Nを一意に示す識別子を含む。本実施例の分散処理部2401は、分散処理部503を数値によって識別する値を含む。分散処理部2401に格納される値は、管理者等によってあらかじめ設定される。   The distributed processing unit 2401 includes an identifier that uniquely indicates the distributed processing units 503-1 to 503-N. The distributed processing unit 2401 of this embodiment includes a value that identifies the distributed processing unit 503 by a numerical value. The value stored in the distributed processing unit 2401 is set in advance by an administrator or the like.

処理状況カウンタ2402は、分散処理部503におけるパケット処理の状況を示す値を含む。本実施例の処理状況カウンタ2402は、パケット処理が開始されてから経過した実行時間に関する値を含む。   The processing status counter 2402 includes a value indicating the status of packet processing in the distributed processing unit 503. The processing status counter 2402 of the present embodiment includes a value related to the execution time that has elapsed since the packet processing was started.

以下に示す処理状況カウンタ2402は、実施例1の演算フロー管理処理S1450と同様に、減算カウンタによって、パケット処理が終了するまでの残り時間を示す。具体的には、パケット処理が開始された場合、処理状況カウンタ2402にはパケット処理時間が格納される。そして、振分部1902が単位時間(本実施例において1clk)毎に処理状況カウンタ2402の値を減算する。   The processing status counter 2402 shown below indicates the remaining time until the packet processing is completed by the subtraction counter, similarly to the calculation flow management processing S1450 of the first embodiment. Specifically, when packet processing is started, the packet processing time is stored in the processing status counter 2402. Then, the distribution unit 1902 subtracts the value of the processing status counter 2402 every unit time (1 clk in the present embodiment).

処理状況カウンタ2402に“0”が格納されるエントリは、分散処理部2401が示す分散処理部503はパケット処理を終了したことを示す。また、処理状況カウンタ2402に“0”以外の正の数が格納されるエントリは、分散処理部2401が示す分散処理部503はパケット処理中であることを示す。   An entry in which “0” is stored in the processing status counter 2402 indicates that the distributed processing unit 503 indicated by the distributed processing unit 2401 has finished packet processing. An entry in which a positive number other than “0” is stored in the processing status counter 2402 indicates that the distributed processing unit 503 indicated by the distributed processing unit 2401 is processing a packet.

以下において、処理状況カウンタ2402が減算カウンタである場合の処理を記載するが、処理状況カウンタ2402は加算カウンタによって、パケット処理が開始されてから経過した時間を示してもよい。この場合、振分部1902は、所定のパケット処理時間と処理状況カウンタ2402とを比較することによって、パケット処理の状況を取得しても良い。   In the following, the processing when the processing status counter 2402 is a subtraction counter will be described, but the processing status counter 2402 may indicate the time elapsed since the packet processing was started by the addition counter. In this case, the allocating unit 1902 may acquire the packet processing status by comparing a predetermined packet processing time with the processing status counter 2402.

以下に、帯域監視部1901が実行する帯域監視バッファ書込み処理S2050について説明する。   The bandwidth monitoring buffer write process S2050 executed by the bandwidth monitoring unit 1901 will be described below.

図20は、本実施例2の帯域監視部1901が実行する帯域監視バッファ書込み処理S2050を示すフローチャートである。   FIG. 20 is a flowchart illustrating the bandwidth monitoring buffer write processing S2050 executed by the bandwidth monitoring unit 1901 according to the second embodiment.

帯域監視部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 bandwidth monitoring unit 1901 acquires the packet length 303 from the in-device header 3 (S2001).

S2001の後、帯域監視部1901は、S2001で取得したパケット長と帯域監視バッファ19の蓄積量(後述するパケット蓄積量21)の合計が、帯域監視バッファ19のバッファサイズ以下であるか否かを判定する(S2002)。   After S2001, the bandwidth monitoring unit 1901 determines whether the sum of the packet length acquired in S2001 and the accumulated amount of the bandwidth monitoring buffer 19 (packet accumulated amount 21 described later) is equal to or smaller than the buffer size of the bandwidth monitoring buffer 19. Determination is made (S2002).

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 bandwidth monitoring buffer 19 is equal to or smaller than the buffer size of the bandwidth monitoring buffer 19, the bandwidth monitoring unit 1901 adds the number of received packets to the accumulated packet number. Then, the packet length is updated by adding the acquired packet length to the packet accumulation amount 21, and the received packet is stored in the bandwidth monitoring buffer 19 (S2003).

S2005の後、帯域監視部1901は、帯域監視バッファ書込み処理S2050を終了する(S2005)。   After S2005, the bandwidth monitoring unit 1901 ends the bandwidth monitoring buffer write processing S2050 (S2005).

また、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 bandwidth monitoring buffer 19 is not less than or equal to the buffer size of the bandwidth monitoring buffer 19, the bandwidth monitoring unit 1901 discards the packet (S2004) and performs bandwidth monitoring. The buffer writing process S2050 is terminated (S2005).

図21は、本実施例2の帯域監視バッファ19のパケット蓄積量21と利用分散処理部の数の関係を示す説明図である。   FIG. 21 is an explanatory diagram illustrating the relationship between the packet accumulation amount 21 of the bandwidth monitoring buffer 19 and the number of usage distribution processing units according to the second embodiment.

帯域監視部1901は、帯域監視バッファ19に蓄積されたパケット数が1以上の時、振分部1902にパケット送信要求を通知する。   The bandwidth monitoring unit 1901 notifies the distribution unit 1902 of a packet transmission request when the number of packets accumulated in the bandwidth monitoring buffer 19 is 1 or more.

また、帯域監視部1901は、帯域監視バッファ19のパケット蓄積量21に応じて、利用する分散処理部503の数を示すX(Xは1〜Nの任意の自然数)を決定し、振分部1902、及び、多重部1904に利用分散処理部の数Xを通知する。帯域監視部1901は、パケット蓄積量21が少ない時は、Xの値を小さく(例えばN/4)し、パケット蓄積量21が多く、バッファサイズに近づいてきた時は、Xの値を大きく(例えばN)とする。   Further, the bandwidth monitoring unit 1901 determines X (X is an arbitrary natural number from 1 to N) indicating the number of distributed processing units 503 to be used in accordance with the packet accumulation amount 21 of the bandwidth monitoring buffer 19, and a distribution unit 1902 and the multiplexing unit 1904 are notified of the number X of usage sharing processing units. The bandwidth monitoring unit 1901 decreases the value of X when the packet accumulation amount 21 is small (for example, N / 4), and increases the value of X when the packet accumulation amount 21 is large and approaches the buffer size ( For example, N).

以下に、帯域監視部1901が実行する帯域監視バッファ読出し処理S2250について説明する。   Hereinafter, the bandwidth monitoring buffer read process S2250 executed by the bandwidth monitoring unit 1901 will be described.

図22は、本実施例2の帯域監視部1901が実行する帯域監視バッファ読出し処理S2250を示すフローチャートである。   FIG. 22 is a flowchart illustrating the bandwidth monitoring buffer read processing S2250 executed by the bandwidth monitoring unit 1901 of the second embodiment.

帯域監視部1901は、振分部1902からパケット読出し要求を受信した場合(S2200)、蓄積パケット数から読み出したパケット数分を減算し、パケット蓄積量21から読み出したパケットのパケット長を減算して更新し、帯域監視バッファ19からパケットを読み出して振分部1902に送出する(S2201)。   When the bandwidth monitoring unit 1901 receives a packet read request from the distribution unit 1902 (S2200), the bandwidth monitoring unit 1901 subtracts the read packet number from the accumulated packet number, and subtracts the packet length of the read packet from the packet accumulation amount 21. The packet is updated, and the packet is read from the bandwidth monitoring buffer 19 and sent to the distribution unit 1902 (S2201).

S2201の後、帯域監視部1901は、帯域監視バッファ読出し処理S2250を終了する(S2202)。
以下に、振分部1902が実行する振分け処理S2350について説明する。
After S2201, the bandwidth monitoring unit 1901 ends the bandwidth monitoring buffer read processing S2250 (S2202).
The distribution process S2350 executed by the distribution unit 1902 will be described below.

図23は、本実施例2の振分部1902が実行する振分け処理S2350を示すフローチャートである。   FIG. 23 is a flowchart illustrating the distribution process S2350 executed by the distribution unit 1902 of the second embodiment.

振分部1902は、帯域監視部1901からパケット送信要求を受信した場合(S2300)、分散処理部管理リスト119の#1〜#Xの全てのエントリの処理状況カウンタ2402の値が“0”と異なるか否かを判定する(S2301)。   If the distribution unit 1902 receives a packet transmission request from the bandwidth monitoring unit 1901 (S2300), the values of the processing status counters 2402 of all entries # 1 to #X in the distributed processing unit management list 119 are “0”. It is determined whether or not they are different (S2301).

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 entries # 1 to #X in the distributed processing unit management list 119 are different from “0”, all the distributed processing units 503 (503) of # 1 to #X -1 to 503-X) are executing packet processing. Since the new packet processing cannot be accepted, the distribution unit 1902 returns to the processing of S2301 and waits for the processing of any of the distributed processing units 503 of # 1 to #X to end.

また、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 processing status counter 2402 is “0” among the entries of # 1 to #X in the distributed processing unit management list 119 in S2301, all the distributed processing units of # 1 to #X. At least one distributed processing unit 503 among 503 (503-1 to 503-X) is in a state where packet processing can be accepted. Therefore, the allocating unit 1902 notifies the bandwidth monitoring unit 1901 of a packet read request and receives a packet from the bandwidth monitoring unit 1901 (S2302).

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 distribution unit 1902 counts up the value of the internal counter by the number of received packets (S2304).

なお、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 bandwidth monitoring unit 1901 and varies according to the packet accumulation amount 21 of the bandwidth monitoring buffer 19. In the distribution process S2350, the timing for reflecting the change in the value of X may be the time when the value of an internal counter (to be described later) returns from X to 1 (wraps around). Similarly to the distribution unit 1902, the multiplexing unit 1904 also includes an internal counter (this counter takes a value of 1 to X and returns to 1 after X), and the distributed processing unit 503 indicated by the number of the internal counter. The timing when the packets are multiplexed in order from (503-1 to 503-X) and the change in the value of X is reflected may be the time when the value of the internal counter described later returns from X to 1 (wraps around). In addition, when the multiplexing unit 1904 receives a packet from a distributed processing unit different from the distributed processing unit indicated by the number of the internal counter, the multiplexing unit 1904 may discard the packet.

S2304の後、帯域監視部1901からのパケット送信要求が終了しているか否かを判定する(S2305)。   After S2304, it is determined whether or not the packet transmission request from the bandwidth monitoring unit 1901 has ended (S2305).

S2305において、帯域監視部1901からのパケット送信要求が終了していない場合、振分部1902は、S2301の処理に戻る。   If the packet transmission request from the bandwidth monitoring unit 1901 has not ended in S2305, the allocating unit 1902 returns to the processing of S2301.

また、S2305において、帯域監視部1901からのパケット送信要求が終了している場合、振分部1902は、図23に示す振分け処理S2350を終了する(S2306)。   If the packet transmission request from the bandwidth monitoring unit 1901 has ended in S2305, the distribution unit 1902 ends the distribution process S2350 shown in FIG. 23 (S2306).

前述のとおり、実施例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 packet communication device 2 includes the distribution processing unit 503 (503-1 to 503-X) (X) in the bandwidth monitoring unit 1901 in which the distribution unit 1902 distributes packets in round robin. The number of distributed processing units 503 is notified to the distribution unit 1902 and the multiplexing unit 1904. As a result, the input packet control unit 1900 according to the second embodiment changes the number of distributed processing units to be used according to the bandwidth of the input packet, and the calculation unit 703 simultaneously executes the statistical count processing regarding the packets of the same flow. It is possible.

従って、実施例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 packet communication apparatus 2 according to the first embodiment implements the statistical count process by implementing the centralized / distributed processing method of the present invention. The packet communication apparatus according to the third embodiment performs bandwidth control based on each input packet. In the third embodiment, the packet communication apparatus uses a token bucket algorithm in order to realize the bandwidth control function.

以下に、トークンバケツアルゴリズムの動作概要を説明する。   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 arbitration unit 2501, a calculation flow management list 702, a plurality of calculation units 2503 (2503-1 to 2503-N) (N is an arbitrary natural number), a bandwidth setting table 2504, and a calculation A result holding table 2514 is provided.

実施例3における、演算フロー管理リスト702は、処理状況カウンタ1303に保持する実行時間(実施例1における統計情報処理と、実施例3における帯域制御処理の実行時間の差)を除き、実施例1における演算フロー管理リスト702と同じである。   The calculation flow management list 702 in the third embodiment is the same as that in the first embodiment except for the execution time held in the processing status counter 1303 (the difference between the statistical information processing in the first embodiment and the execution time of the bandwidth control processing in the third embodiment). The same as the calculation flow management list 702 in FIG.

調停部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 arbitrating unit 2501 is a processing unit that executes arithmetic unit selection arbitration processing S2850 described later. The arbitration unit 2501 identifies the flow by the flow ID received from the distributed processing unit 5503, and further refers to the calculation flow management list 702. And thereby, the calculating part 2503 which performs the bandwidth control process regarding an input packet is determined from the calculating parts 2503-1 to 2503-N.

また、調停部2501は、演算フロー管理リスト702を、論理回路210に備わるメモリ等に保持する。そして、調停部2501は、演算部選定調停処理S2850及び演算フロー管理処理S1450において、演算フロー管理リスト702を更新する。   In addition, the arbitration unit 2501 holds the calculation flow management list 702 in a memory or the like provided in the logic circuit 210. Then, the arbitration unit 2501 updates the computation flow management list 702 in the computation unit selection mediation process S2850 and the computation flow management process S1450.

さらに、調停部2501は、演算部2503から演算終了通知を受信した場合、後述する更新調停処理S3050を実行する処理部である。調停部2501は、演算部2503が更新した帯域制御情報から演算結果保持テーブル2514に書き戻す情報を選択し、処理要求を送信してきた分散処理部5503に演算終了通知を転送する。   Further, the arbitration unit 2501 is a processing unit that executes update arbitration processing S3050, which will be described later, when a computation end notification is received from the computation unit 2503. The arbitration unit 2501 selects information to be written back to the calculation result holding table 2514 from the band control information updated by the calculation unit 2503, and transfers the calculation end notification to the distributed processing unit 5503 that has transmitted the processing request.

演算部2503は、後述する帯域演算処理S2950において、演算結果保持テーブル2514に含まれる各フローの情報を更新する。また、演算部2503は、帯域演算処理S2950において更新した結果を、調停部2501に送信する。演算部2503は、集中処理部2505にN個(Nは任意の自然数)備わる。   The calculation unit 2503 updates information of each flow included in the calculation result holding table 2514 in a band calculation process S2950 described later. In addition, the calculation unit 2503 transmits the result updated in the band calculation processing S2950 to the arbitration unit 2501. The calculation unit 2503 includes N (N is an arbitrary natural number) in the central processing unit 2505.

図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 calculation unit 2503 to execute the token algorithm, and is a value determined in advance by an administrator or the like. The bandwidth setting table 2504 includes a flow ID 2601, a period addition token value 2602, and a token bucket depth 2603.

フローID2601は、入力パケットに割り当てられたフローを一意に示す識別子を含む。周期加算トークン値2602は、単位時間あたりにトークンバケツに追加されるトークン量(単位時間あたりに蓄積される保証帯域に相当)を示す。トークンバケツの深さ2603は、トークンバケツが保持できる最大のトークン量を示す。   The flow ID 2601 includes an identifier that uniquely indicates the flow assigned to the input packet. The period addition token value 2602 indicates the amount of tokens added to the token bucket per unit time (corresponding to the guaranteed bandwidth accumulated per unit time). The token bucket depth 2603 indicates the maximum amount of tokens that the token bucket can hold.

図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 flow ID 2701, a previous packet arrival time 2702, and a holding token value 2703. The flow ID 2701 includes a flow ID that uniquely indicates the flow assigned to the input packet. The previous packet arrival time 2702 indicates the time when the bandwidth calculation process executed last time in the calculation unit 2503 is executed. The retained token value 2703 indicates the amount of tokens accumulated in the token bucket, which is calculated by the bandwidth calculation process executed last time. That is, the previous packet arrival time 2702 indicates the time when the value stored in the retained token value 2703 is calculated.

以下に、調停部2501が実行する演算部選定調停処理S2850について説明する。   Hereinafter, the calculation unit selection arbitration process S2850 executed by the arbitration unit 2501 will be described.

図28は、本実施例3の調停部2501が実行する演算部選定調停処理S2850を示すフローチャートである。   FIG. 28 is a flowchart illustrating the calculation unit selection arbitration process S2850 executed by the arbitration unit 2501 according to the third embodiment.

調停部2501は、分散処理部5503(5503−1〜5503−N)から処理開始トリガを受信した場合(複数の処理開始トリガを同時に受信する場合もある)(S2800)、処理開始トリガと同時に受信するフローID、及び、パケット長を取得し、処理開始トリガの到着順を保持する(S2801)。   The arbitration unit 2501 receives the processing start trigger from the distributed processing unit 5503 (5503-1 to 5503-N) (may receive a plurality of processing start triggers at the same time) (S2800), and receives the processing start trigger at the same time. The flow ID and packet length to be acquired are acquired, and the arrival order of the processing start trigger is held (S2801).

S2801の後、調停部2501は、演算フロー管理リスト702の全てのエントリの処理状況カウンタ1303の値が“0”と異なるか否かを判定する(S2802)。   After S2801, the arbitration unit 2501 determines whether or not the values of the processing status counters 1303 of all entries in the computation flow management list 702 are different from “0” (S2802).

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 flow management list 702 are different from “0”, all the calculation units 2503 (2503-1 to 2503-N) are executing calculation processing. is there. Since the arithmetic processing in the case of a new flow cannot be accepted, the arbitration unit 2501 determines to discard the input packet (S2803), and ends the arithmetic unit selection arbitration processing S2850 shown in FIG. 28 (S2811).

また、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 processing status counter 1303 is “0” among the entries in the calculation flow management list 702 in S2802, at least one of all the calculation units 2503 (2503-1 to 2503-N). One arithmetic unit 2503 does not execute arithmetic processing. Therefore, the arbitration unit 2501 searches the bandwidth setting table 2504 using the flow ID value acquired in S2801 as a search key (flow ID 2601), and acquires information on the period addition token value 2602 and the token bucket depth 2603. (S2804).

S2804の後、調停部2501は、S2801において取得したフローIDの値を検索キー(フローID2701)として演算結果保持テーブル2514を検索し、前回パケット到着時刻2702、及び、保持トークン値2703の情報を取得する(S2805)。   After S2804, the arbitration unit 2501 searches the calculation result holding table 2514 using the flow ID value acquired in S2801 as a search key (flow ID 2701), and acquires information on the previous packet arrival time 2702 and the holding token value 2703. (S2805).

なお、S2802において、調停部2501がS2800で複数の処理開始トリガを同時に受信した場合は、その複数フロー分の演算が可能かどうかを確認する。演算フロー管理リスト702のエントリのうち、処理状況カウンタ1303が“0”ではないエントリが、S2800で同時に処理開始トリガを受信した数分ある場合、S2804の処理に進む。処理状況カウンタ1303が“0”であるエントリがS2800で同時に処理開始トリガを受信した複数フロー分ない場合、S2803の処理に進む。また、処理状況カウンタ1303が“0”であるエントリがS2801で同時に受信した処理開始トリガの数分ない場合は、処理状況カウンタ1303が“0”であるエントリ分はS2804の処理に進み、残りのフローはS2803に進んでも良い。   In S2802, if the arbitration unit 2501 receives a plurality of processing start triggers in S2800 at the same time, it is checked whether the calculation for the plurality of flows is possible. If there are as many entries in the computation flow management list 702 that the processing status counter 1303 is not “0”, as many as the number of processing start triggers received at S2800, the process proceeds to S2804. If there is no entry whose processing status counter 1303 is “0” for a plurality of flows that have received the processing start trigger at S2800, the process proceeds to S2803. If there are not enough entries for which the processing status counter 1303 is “0” for the number of processing start triggers simultaneously received in S2801, the entry for which the processing status counter 1303 is “0” proceeds to the processing of S2804, and the remaining The flow may proceed to S2803.

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 flow ID 1302 of an entry whose processing status counter 1303 is different from “0” (S2806).

なお、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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 2501 It may be determined that the value corresponding to the value matches the value of the flow ID 1302 of the entry whose processing status counter 1303 is different from “0”.

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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 2501 does not execute the arithmetic processing. In order to cause the calculation unit to newly execute a calculation process related to the input packet, the process of S2809 is executed.

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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the arbitration unit 2501 sets the processing status counter 1303 to “0”. Among the entries in the computation flow management list 702 that are "", entries are extracted in order from the smallest number of the computation unit 1301. The arbitration unit 2501 determines the arithmetic unit 2503 indicated by the arithmetic unit 1301 of the extracted entry as the arithmetic unit 2503 that newly executes the arithmetic processing related to the input packet.

本実施例においては、1パケット毎の帯域制御結果を取得するため、同じフローIDの複数のパケットを調停部2501が同時に取得した場合、それぞれのパケットを別々の演算部2503で処理する。このため、調停部2501は、同時に取得した同じフローIDのそれぞれのパケットを演算フロー管理リスト702の別々のエントリで管理する。   In the present embodiment, in order to acquire the bandwidth control result for each packet, when the arbitration unit 2501 acquires a plurality of packets having the same flow ID at the same time, each packet is processed by a separate calculation unit 2503. For this reason, the arbitration unit 2501 manages each packet of the same flow ID acquired at the same time with separate entries in the calculation flow management list 702.

例えば、調停部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 arbitration unit 2501 acquires processing triggers for the first packet and the second packet with the same flow ID at the same time and determines to newly execute the arithmetic processing, the arbitration unit 2501 extracts two entries from the arithmetic flow management list 702 Then, the calculation unit 2503 indicated by the calculation unit 1301 of the extracted entry is determined to be a calculation unit 2503 that newly executes a calculation process related to the first packet or the second packet. Then, the arbitration unit 2501 updates the flow ID 1302 of the extracted entry with the value of the flow ID acquired in S2801. Further, the arbitrating unit 2501 updates the processing status counter 1303 of the extracted entry to a value indicating the calculation time (S2809). For example, when the calculation time is 10 clk, the arbitration unit 2501 updates the value of the processing status counter 1303 of the entry in which the acquired flow ID value matches the flow ID 1302 to “10”.

S2809において処理状況カウンタ1303を更新することによって、調停部2501は、各演算部2503が演算処理を終了するまで実行していることを示す。   By updating the processing status counter 1303 in S2809, the arbitration unit 2501 indicates that each calculation unit 2503 is executing until the calculation process is completed.

なお、前述のS2809において、調停部2501は、処理状況カウンタ1303が“0”である演算フロー管理リスト1302のエントリのうち、演算部1301の値が若い番号(小さい番号)から順番にエントリを抽出したが、調停部2501は、処理状況カウンタ1303が“0”である演算フロー管理リスト702のエントリのうちのいずれかであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、調停部2501は、値が大きい番号から順番にエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
S2809の後、調停部2501は、同じフローIDの複数の処理開始トリガを同時に取得した場合に使用するトークン補正量を決定して保持する(S2813)。トークン補正量は、調停部2501で同じフローIDの複数のパケットを同時に取得した場合に使用され、後述する帯域演算処理S2950を用いて、入力パケットの到着毎にトークン演算を実施したように計算するために補正するための値である。
In S2809 described above, the arbitration unit 2501 extracts entries in order from the smallest number (the smallest number) of the computation unit 1301 among the entries in the computation flow management list 1302 whose processing status counter 1303 is “0”. However, the arbitration unit 2501 may extract an entry according to any rule as long as it is one of the entries in the computation flow management list 702 whose processing status counter 1303 is “0”. For example, the arbitration unit 2501 may extract the entries in order from the largest value, or the order of entries to be extracted in advance may be determined by the administrator.
After S2809, the arbitrating unit 2501 determines and holds a token correction amount to be used when a plurality of processing start triggers having the same flow ID are acquired simultaneously (S2813). The token correction amount is used when the arbitration unit 2501 acquires a plurality of packets having the same flow ID at the same time. The token correction amount is calculated using a bandwidth calculation process S2950, which will be described later, so that a token calculation is performed each time an input packet arrives. Therefore, this is a value for correction.

例えば、調停部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 arbitration unit 2501 sets the token correction amount to 0 when it does not simultaneously acquire processing start triggers regarding a plurality of packets having the same flow ID. When processing start triggers regarding a plurality of packets having the same flow ID (referred to as a first packet and a second packet) are acquired at the same time, the arbitration unit 2501 is determined to perform processing related to the first packet. The token correction amount for 2503 is set to 0, and the token correction amount for the arithmetic unit 2503, which is determined to be processed for the second packet, is set as the packet length of the first packet. Furthermore, when processing triggers related to a plurality of packets having the same flow ID (first packet, second packet, and third packet) are acquired at the same time, the arbitration unit 2501 performs processing related to the third packet. Then, the token correction amount for the arithmetic unit 2503 determined to be the value obtained by adding the packet length of the second packet to the packet length of the first packet. Hereinafter, similarly, when processing triggers related to a plurality of packets having the same flow ID (first packet, second packet, third packet, and fourth packet) are acquired at the same time, the arbitration unit 2501 Is a value obtained by adding the packet length of the second packet and the packet length of the third packet to the packet length of the first packet, and the token correction amount for the arithmetic unit 2503 determined to process the fourth packet. To do.

S2813の後、調停部2501は、決定された演算部2503へ、処理開始トリガ、新規/継続パラメータ、取得パケット長、テーブル取得結果、及び、トークン補正量を含む演算通知を出力する(S2810)。   After S2813, the arbitration unit 2501 outputs a calculation notification including the processing start trigger, the new / continuation parameter, the acquired packet length, the table acquisition result, and the token correction amount to the determined calculation unit 2503 (S2810).

S2810において、調停部2501は、新規/継続パラメータを新規を示す値に決定し、新規を示す新規/継続パラメータ(本実施例において“0”)を、演算通知に含める。本実施例における新規/継続パラメータとは、各演算部2503にどのような演算処理を実行するかを通知するための値である。   In S2810, the arbitration unit 2501 determines the new / continuation parameter as a value indicating new, and includes the new / continuation parameter indicating “new” (“0” in this embodiment) in the calculation notification. The new / continuation parameter in the present embodiment is a value for notifying each arithmetic unit 2503 what kind of arithmetic processing is to be executed.

また、S2810において、出力される演算通知に含まれる処理開始トリガは、演算部2503が後述する帯域演算処理S2950を開始することを示す値である。また、演算通知に含まれる取得パケット長は、S2801において取得したパケット長である。なお、本実施例では、同じフローIDの複数のパケットを同時に取得した場合でも、別々の演算部で処理を実行させるため、実施例1のようにパケット長を合算しない。   In S2810, the process start trigger included in the output calculation notification is a value indicating that the calculation unit 2503 starts a band calculation process S2950 described later. The acquired packet length included in the calculation notification is the packet length acquired in S2801. In this embodiment, even when a plurality of packets having the same flow ID are acquired at the same time, the packet length is not added as in the first embodiment because the processing is executed by different calculation units.

また、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 arbitration unit 2501 outputs the token correction amount to the calculation unit 2503, so that even when input packets with the same flow ID are received simultaneously, a plurality of calculation units 2503 can perform token calculation for each packet. The bandwidth calculation process can be executed normally.

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 flow ID 1302 of the entry whose processing status counter 1303 is different from “0”, the calculation unit 2503 corresponding to the flow ID of the input packet. Can continue the arithmetic processing related to the input packet. For this reason, the arbitration unit 2501 determines the calculation unit 2503 indicated by the calculation unit 1301 of the entry whose flow ID 1302 matches the acquired flow ID value as the calculation unit 2503 that continuously executes the calculation process related to the input packet. .

そして、調停部2501は、取得されたフローIDの値とフローID1302とが一致したエントリの処理状況カウンタ1303の値を、演算時間を示す値に更新する(S2807)。   Then, the arbitration unit 2501 updates the value of the processing status counter 1303 of the entry in which the acquired flow ID value matches the flow ID 1302 to a value indicating the calculation time (S2807).

S2807の後、調停部2501は、S2813の処理と同様に、同じフローIDの処理開始トリガを複数同時に取得した場合に使用するトークン補正量を決定して保持する(S2812)。
S2812の後、調停部2501は、取得したフローIDの値とフローID1302の値とが一致した演算フロー管理リスト702のエントリの演算部1301が示す演算部2503へ、処理開始トリガ、新規/継続パラメータ、取得パケット長、テーブル取得結果、及び、トークン補正量を含む演算通知を出力する(S2808)。
After S2807, the arbitration unit 2501 determines and holds a token correction amount to be used when a plurality of process start triggers having the same flow ID are simultaneously acquired, similarly to the process of S2813 (S2812).
After S2812, the arbitration unit 2501 transfers the processing start trigger and the new / continuation parameter to the calculation unit 2503 indicated by the calculation unit 1301 of the entry of the calculation flow management list 702 in which the acquired flow ID value matches the flow ID 1302 value. The calculation notification including the acquisition packet length, the table acquisition result, and the token correction amount is output (S2808).

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 arbitration unit 2501 outputs the token correction amount held in S2812, so that the plurality of arithmetic units 2503 can execute tokens for each packet in parallel. The calculation can be performed, and the band calculation process can be executed without causing an overflow.

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 calculation unit 2503 of the third embodiment.
When the calculation unit 2503 receives the distribution notification including the processing start trigger from the arbitration unit 2501 (S2900), the new / continuation parameter, the acquired packet length, the table acquisition result (period addition token amount, token bucket) included in the calculation notification The depth, the previous packet arrival time, and the retained token value are included), and the token correction amount is acquired (S2901).

S2901の後、演算部2503は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S2902)。   After S2901, the calculation unit 2503 determines whether the new / continuation parameter is “0”, that is, whether the new / continuation parameter indicates new (S2902).

新規/継続パラメータが“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 arithmetic unit 2503 proceeds to the processing of S2905.

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 calculation unit 2503 updates the previous table internally held for continuation processing. Time is acquired as the previous packet arrival time (S2903).

S2903の後、演算部2503は、調停部2501から受信する継続処理用の保持トークン値を、保持トークン値として取得し(S2904)、S2905の処理に進む。   After S2903, the calculation unit 2503 acquires the hold token value for continuation processing received from the arbitration unit 2501 as the hold token value (S2904), and proceeds to the process of S2905.

S2905において、演算部2503は、調停部2501の演算部選定調停処理S2850において帯域設定テーブル2504を検索した時刻を、S2900において受信した処理開始トリガとの時間差より算出し、前回テーブル更新時間として次に受信する入力パケットの継続処理用に内部保持する(S2905)。   In S2905, the calculation unit 2503 calculates the time when the bandwidth setting table 2504 was searched in the calculation unit selection arbitration process S2850 of the arbitration unit 2501 from the time difference from the process start trigger received in S2900, and the next table update time is Internally held for continued processing of received input packets (S2905).

S2905の後、演算部2503は、S2905において算出した帯域設定テーブル2504を検索した時刻と、S2901において取得した前回パケット到着時刻との差を、パケット到着間隔として算出する。そして、演算部2503は、算出されたパケット到着間隔と、S2901において取得した周期加算トークン値とを乗算することによって、加算トークン量を算出する(S2906)。   After S2905, the calculation unit 2503 calculates a difference between the time when the bandwidth setting table 2504 calculated in S2905 is searched and the previous packet arrival time acquired in S2901 as a packet arrival interval. Then, the arithmetic unit 2503 calculates the added token amount by multiplying the calculated packet arrival interval by the periodic addition token value acquired in S2901 (S2906).

S2906の後、演算部2503は、S2906において算出された加算トークン量を、S2901において取得した保持トークン値の値に加算し(S2907)、図29Bに示すS2908の処理に進む。   After S2906, the computing unit 2503 adds the added token amount calculated in S2906 to the value of the retained token value acquired in S2901 (S2907), and proceeds to the process of S2908 shown in FIG. 29B.

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 calculation unit 2503 of the third embodiment may perform different processing according to the value of the new / continuation parameter. For example, when the new / continuation parameter indicates new, the calculation unit 2503 may add a value given in advance by the user to the addition result that is the result of S2907.

図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 calculation unit 2503 of the third embodiment.

S2907の後、演算部2503は、S2907における加算結果が、S2901において取得したトークンバケツの深さの値を超過するか否かを判定する(S2908)。   After S2907, the arithmetic unit 2503 determines whether or not the addition result in S2907 exceeds the value of the depth of the token bucket acquired in S2901 (S2908).

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 calculation unit 2503 obtains a value obtained by subtracting the token correction amount acquired in S2901 from the addition result in S2907, as the current token amount. (S2909). After S2909, the arithmetic unit 2503 proceeds to the process of S2911.

また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 calculation unit 2503 calculates a value obtained by subtracting the token correction amount acquired in S2901 from the token bucket depth. The current token amount is held (S2910). After S2910, the arithmetic unit 2503 proceeds to the process of S2911.

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 calculation unit 2503 determines whether or not the current token amount held in S2909 or S2910 is equal to or larger than the acquired packet length value acquired in S2901 (S2911).

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 calculation unit 2503 calculates a value obtained by subtracting the acquired packet length from the current token amount as an update holding token value (S2912). . The update holding token value indicates the amount of token remaining in the token bucket after transmitting the input packet.

S2912の後、演算部2503は、帯域が保証内であることを示す帯域制御結果を生成し、生成された帯域制御結果を調停部2501へ送信する(S2913)。   After S2912, the calculation unit 2503 generates a band control result indicating that the band is within the guarantee, and transmits the generated band control result to the arbitration unit 2501 (S2913).

S2913の後、演算部2503は、S2916の処理に進む。   After S2913, the arithmetic unit 2503 proceeds to the process of S2916.

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 calculation unit 2503 holds the same value as the current token amount as the update holding token value (S2914).

S2914の後、演算部2503は、帯域が保証外であることを示す帯域制御結果を生成し、生成された帯域制御結果を調停部2501へ送信する(S2915)。   After S2914, the arithmetic unit 2503 generates a band control result indicating that the band is not guaranteed, and transmits the generated band control result to the arbitrating unit 2501 (S2915).

S2915の後、演算部2503は、S2916の処理に進む。   After S2915, the arithmetic unit 2503 proceeds to the process of S2916.

なお、演算部2503は、S2913又はS2914において、帯域が保証内又は保証外であることを示す帯域制御結果を生成し、後述するS2916において、生成された帯域制御結果と演算終了を示す通知とを、調停部2501へ送信してもよい。   In S2913 or S2914, the calculation unit 2503 generates a band control result indicating that the band is within or not guaranteed, and in S2916 described later, the generated band control result and a notification indicating the end of the calculation. , It may be transmitted to the arbitration unit 2501.

S2913及びS2914において、帯域制御結果を送信又は生成することによって、演算部2503は、後述する出力判定処理S3150において、帯域制御結果に従った処理を入力パケットに行わせることが可能となる。   By transmitting or generating the bandwidth control result in S2913 and S2914, the calculation unit 2503 can cause the input packet to perform processing according to the bandwidth control result in output determination processing S3150 described later.

S2913又はS2914の後、演算部2503は、演算終了を示す通知を生成し、帯域設定テーブル2504を検索した時刻を前回パケット到着時刻、及び、更新保持トークン値を保持トークン値として、生成された通知とともに調停部2501へ送信する(S2916)。   After S2913 or S2914, the calculation unit 2503 generates a notification indicating the end of the calculation, and the generated notification using the time when the bandwidth setting table 2504 is searched as the previous packet arrival time and the updated hold token value as the hold token value. At the same time, the data is transmitted to the arbitration unit 2501 (S2916).

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 arbitration unit 2501 will be described below.

図30は、本実施例3の調停部2501が実行する更新調停処理S3050を示すフローチャートである。   FIG. 30 is a flowchart illustrating the update arbitration processing S3050 executed by the arbitration unit 2501 according to the third embodiment.

調停部2501は、演算部2503(2503−1〜2503−N)から演算終了通知を受信した場合(S3000)、受信した演算終了通知に含まれる帯域制御結果、前回パケット到着時刻、及び、保持トークン値を取得する(S3001)。   When the arbitration unit 2501 receives the calculation end notification from the calculation unit 2503 (2503-1 to 2503-N) (S3000), the bandwidth control result, the previous packet arrival time, and the holding token included in the received calculation end notification A value is acquired (S3001).

S3001の後、調停部2501は、同一フローを処理している複数の演算部2503から演算終了通知を受信しているか否かを判定する(S3002)。   After S3001, the arbitration unit 2501 determines whether or not calculation end notifications are received from a plurality of calculation units 2503 that are processing the same flow (S3002).

S3002において、同一フローを処理している複数の演算部2503から演算終了通知を受信していないと判定した場合、調停部2501は、S3004の処理に進む。   In S3002, when it is determined that the calculation end notification has not been received from the plurality of calculation units 2503 that are processing the same flow, the arbitration unit 2501 proceeds to the process of S3004.

また、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 calculation units 2503 that are processing the same flow, the arbitration unit 2501 selects a result to be updated in the calculation result holding table 2514 (S3003). ). A method of selecting a result to be updated in the calculation result holding table 2514 in S3003 will be described with reference to FIGS. 31A to 31C described later.

S3003の後、調停部2501は、S3004の処理に進む。   After S3003, the arbitrating unit 2501 proceeds to the process of S3004.

S3004において、調停部2501は、演算結果保持テーブル2514に前回パケット到着時刻及び保持トークン値を書き戻す。   In step S3004, the arbitration unit 2501 writes back the previous packet arrival time and the stored token value in the calculation result holding table 2514.

S3004の後、調停部2501は、次に受信する入力パケットの継続処理のために、演算結果保持テーブル2514に書き戻した保持トークン値を前回保持トークン値として、演算終了通知を受信した演算部2503へ通知する(S3005)。   After S3004, the arbitration unit 2501 uses the retained token value written back to the computation result retaining table 2514 as the previous retained token value for the continuation processing of the next received input packet, and receives the computation end notification. (S3005).

S3005の後、調停部2501は、演算部選定調停処理S2850において保持した処理開始トリガの到着順から、処理開始トリガの送信元の分散処理部5503(5503−1〜5503−N)を特定し、特定した分散処理部5503へ演算終了通知、及び、帯域制御結果を転送する(S3006)。   After S3005, the arbitration unit 2501 identifies the distributed processing unit 5503 (5503-1 to 5503-N) that is the transmission source of the process start trigger from the arrival order of the process start trigger held in the calculation unit selection arbitration process S2850, The calculation completion notification and the bandwidth control result are transferred to the identified distributed processing unit 5503 (S3006).

S3006の後、調停部2501は、更新調停処理S3050を終了する(S3007)。   After S3006, the arbitrating unit 2501 ends the update arbitration process S3050 (S3007).

以下、図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 arbitration unit 2501 of the third embodiment. It is explanatory drawing which shows the example when all the results are within guarantee.

図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 arbitration unit 2501 has the smallest value of the retained token value output from the calculation units ((1) to (4)), the previous packet arrival time of the calculation unit (4) that processed the fourth packet, and Select a retention token value. Note that since the previous packet arrival time is the same in any of the arithmetic units ((1) to (4)), the arbitration unit 2501 determines the previous packet arrival time output from the arithmetic unit (1) by the arithmetic unit (3). You may choose.

図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 arbitration unit 2501 of the third embodiment. It is explanatory drawing which shows the example when all the results are out of guarantee.
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 arbitration unit 2501 includes the previous packet arrival time of the calculation unit (1) that processed the first packet, and Select a retention token value. The arbitration unit 2501 may select the previous packet arrival time output from the calculation unit (2) and the hold token value output from the calculation unit (4).

図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 arbitration unit 2501 of the third embodiment. It is explanatory drawing which shows the example when a result includes the guarantee inside and a guarantee outside.

図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 arbitration unit 2501 selects the previous packet arrival time and the retained token value of the calculation unit (2) that has processed the second packet. The arbitration unit 2501 may select the previous packet arrival time output from the calculation unit (3) and the hold token value output from the calculation unit (4). Further, since the previous packet arrival time is the same, the arbitration unit 2501 may select the previous packet arrival time output by the calculation unit (1).

これによって、調停部2501は、同一フローIDの入力パケットの処理開始トリガを同時に受信する場合において、入力パケットの到着順に従って計算した各保持トークンの計算値の値から更新するべき値を選択することができ、その値を演算結果保持テーブル2514に更新する。よって、従来技術では、演算処理通知を受信した回数分、演算結果保持テーブル2514を更新する必要があったが、本願では、同一フローの演算処理通知を集約して演算結果保持テーブル2514を更新することが出来る。   Accordingly, the arbitration unit 2501 selects a value to be updated from the calculated value of each holding token calculated according to the arrival order of the input packets when receiving the processing start trigger of the input packets having the same flow ID at the same time. And the value is updated in the calculation result holding table 2514. Therefore, in the conventional technique, it is necessary to update the calculation result holding table 2514 for the number of times the calculation processing notification is received. However, in this application, the calculation processing holding table 2514 is updated by consolidating calculation processing notifications of the same flow. I can do it.

以下に、分散処理部5503(5503−1〜5503−N)の出力判定処理部603が実行する出力判定処理S3250について説明する。   The output determination processing S3250 executed by the output determination processing unit 603 of the distributed processing unit 5503 (5503-1 to 5503-N) will be described below.

実施例3における出力判定処理部603は、集中処理部2505から受信する各入力パケットの帯域制御結果に基づいて、ペイロードを書き換える。   The output determination processing unit 603 according to the third embodiment rewrites the payload based on the bandwidth control result of each input packet received from the central processing unit 2505.

図32は、本実施例3の出力判定処理部603が実行する出力判定処理S3250を示すフローチャートである。   FIG. 32 is a flowchart illustrating the output determination processing S3250 executed by the output determination processing unit 603 according to the third embodiment.

出力判定処理部603は、入力ヘッダ処理部602から入力パケットを受信した場合(S3200)、集中処理部2505から演算終了通知があるか否かを判定する(S3201)。   When the output determination processing unit 603 receives an input packet from the input header processing unit 602 (S3200), the output determination processing unit 603 determines whether there is a calculation end notification from the central processing unit 2505 (S3201).

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 packet communication device 2 aggregates information on packets distributed to each distributed processing unit 5503 (5503-1 to 5503-N) in a round robin manner in the arbitrating unit 2501. Notify the arithmetic unit 2503 (2503-1 to 2503-N). As a result, the arithmetic unit 2503 according to the third embodiment can simultaneously execute the bandwidth control processing for packets of the same flow.

従って、実施例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 Packet communication device 3 In-device header 4 Communication packet 5 Fragment header 19 Band monitoring buffer 21 Packet accumulation amount 119 Distributed processing unit management list 200 Network interface board 201 Input / output line interface 202 Logic circuit 203 Input packet control unit 204 Output packet control unit 205 SW interface 206 Switch unit 207 Setting register 208 NIF management unit 301 Output network interface board identifier 302 Flow ID
303 Packet length 401 Destination MAC address 402 Source MAC address 403 VLAN header 404 Ethertype value 405 Payload 406 Frame check sequence 502 Distribution unit 503 Distribution processing unit 504 Multiplexing unit 505 Central processing unit 601 Input header analysis unit 602 Input header analysis unit 603 Output determination processing unit 701 Arbitration unit 702 Operation flow management list 703 Operation unit 704 Statistical information table 1701 Total fragment number 1702 Sequence number 1703 Fragment length 1900 Input packet control unit 1901 Bandwidth monitoring unit 1902 Distribution unit 1904 Multiplexing unit 2501 Arbitration unit 2503 Calculation unit 2504 Band setting table 2505 Central processing unit 2514 Calculation result holding table 5503 Distributed processing unit

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.
請求項1に記載の通信装置であって、
前記パケットを格納する帯域監視バッファと
前記パケットの入力帯域を監視し、前記振分部がパケットに関する処理を振り分ける分散処理部の数を前記帯域監視バッファに格納された前記パケットの蓄積量に応じて変更する帯域監視部と、を備え、
前記振分部は、前記帯域監視部から通知された分散処理部の数に基づいて、前記パケットを各分散処理部に振り分けることを特徴とする通信装置。
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.
請求項1に記載の通信装置であって、
前記集中処理部は、
前記パケットに関する処理を実行する複数の演算部と、
前記分散処理部から同時に受信した複数のパケットのうち同一フローのパケットがあるか否かを判定し、前記同一フローのパケットが複数ある場合、前記演算結果を補正するための補正量を決定し、前記各演算部に各パケットの演算処理を割り当てる調停部と、を備え、
前記各演算部は、前記同一フローの複数のパケットに関する演算結果を前記補正量に基づいて補正し、
前記調停部は、前記各演算部から前記補正した演算結果のいずれかを選択し、選択した演算結果に基づいて前記テーブルに保持する対応するフローの演算結果を更新することを特徴とする通信装置。
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.
請求項1に記載の通信装置であって、
前記振分部は、前記パケットを断片化して前記各分散処理部に振り分けることを特徴とする通信装置。
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.
請求項1に記載の通信装置であって、
前記振分部は、前記パケットのヘッダ部分を前記各分散処理部に振り分けることを特徴とする通信装置。
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. .
JP2013160949A 2013-08-02 2013-08-02 Communication apparatus and packet processing method Expired - Fee Related JP6060050B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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