JP2014179838A - Communication device and program - Google Patents

Communication device and program Download PDF

Info

Publication number
JP2014179838A
JP2014179838A JP2013052939A JP2013052939A JP2014179838A JP 2014179838 A JP2014179838 A JP 2014179838A JP 2013052939 A JP2013052939 A JP 2013052939A JP 2013052939 A JP2013052939 A JP 2013052939A JP 2014179838 A JP2014179838 A JP 2014179838A
Authority
JP
Japan
Prior art keywords
communication interface
communication
data block
cpu
unit
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.)
Pending
Application number
JP2013052939A
Other languages
Japanese (ja)
Inventor
Takashi Yoshida
傑 吉田
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.)
Yamaha Corp
Original Assignee
Yamaha Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yamaha Corp filed Critical Yamaha Corp
Priority to JP2013052939A priority Critical patent/JP2014179838A/en
Publication of JP2014179838A publication Critical patent/JP2014179838A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

PROBLEM TO BE SOLVED: To achieve band control in the environment of a plurality of CPU cores simultaneously performing transmission processing in a router having a multi-core CPU (Central Processing Unit).SOLUTION: Each CPU core in the multi-core CPU is allocated one-by-one to each communication I/F unit provided in the router. Each CPU core refers to a routing table to identify a communication I/F unit corresponding to the transmission destination of a data block received through the communication I/F unit associated with the self-CPU core, and writes the data block into the transmission queue of the communication I/F unit. During a time until completing writing, the CPU core is made to execute first processing to inhibit the writing into the transmission queue by other CPU cores, and second processing to transmit the data block stored in the transmission queue of the communication I/F unit associated with the self-CPU core while performing band control.

Description

この発明は、QoS(Quality of Service)を行いつつ通信網へデータを送出する技術に関する。   The present invention relates to a technique for transmitting data to a communication network while performing QoS (Quality of Service).

QoSとは、データ通信の種類に応じて必要な通信品質が得られるように、パケットなどのデータブロックの送出制御を行う技術のことをいう。QoSの具体的な実現方法としては、優先制御と帯域制御の2種類が挙げられる。図4は、一般的なQoSの概要を説明するための図である。QoSでは、送信対象のデータブロックは各々のペイロード部に書き込まれているデータの種類や各々の伝送に用いられる通信プロトコルの種類に応じてクラス分けされ、クラス毎に設けられたキュー(以下、クラス別キュー)に一旦蓄積される。これらクラス別キューに蓄積されたデータブロックは、スケジューラによって読み出され、通信網へと送出される。このクラス別キューからのデータブロックの読み出し制御によって前述した優先制御や帯域制御が実現される。例えば、クラス別キュー毎に優先度を定めておき、各クラス別キューについてそのクラス別キューよりも優先度の高い他のクラス別キューにデータブロックが格納されている間は、そのクラス別キューからのデータブロックを読み出さないようにすることで優先制御が実現される。また、クラス別キュー毎に目標通信レートを定めておき、実際の通信レートが目標通信レートに近似した値となるように各クラス別キューからのデータブロックの読み出しを行うことで帯域制御が実現される。なお、通信レートとは、単位時間当たりのデータ送信量のことをいう。   QoS refers to a technique for performing transmission control of data blocks such as packets so that necessary communication quality can be obtained according to the type of data communication. There are two types of QoS realization methods: priority control and bandwidth control. FIG. 4 is a diagram for explaining an outline of general QoS. In QoS, data blocks to be transmitted are classified according to the type of data written in each payload part and the type of communication protocol used for each transmission, and queues (hereinafter referred to as class) provided for each class. It is temporarily stored in another queue. The data blocks stored in these class queues are read by the scheduler and sent to the communication network. The above-described priority control and bandwidth control are realized by the data block read control from the class-specific queue. For example, priorities are defined for each class queue, and while data blocks are stored in other class queues with higher priority than that class queue for each class queue, The priority control is realized by not reading the data block. In addition, bandwidth control is realized by setting a target communication rate for each queue for each class and reading data blocks from each class queue so that the actual communication rate becomes a value approximate to the target communication rate. The The communication rate refers to the amount of data transmission per unit time.

QoSは、ルータやスイッチングハブといった中継装置や情報配信サーバなど、通信網へデータを送出する通信装置において行われる。例えば、中継装置においてQoSを行う場合、前述したクラス分けおよび各クラス別キューからのデータブロックの読み出し制御を当該中継装置のメインCPU(Central Processing Unit)に実行させることが一般的であった。しかし、中継装置が多数の通信網に接続されている場合、各通信網に接続されている通信インタフェース毎にクラス別キュー(以下、1つの通信インタフェース部に対して設けられている複数のクラス別キューを「送信キュー」と総称する)を設け、通信インタフェース毎に送信キューへのデータブロックの書き込みおよび送信キューからのデータブロックの読み出し制御を行う必要がある。このため、中継装置に設けられる通信インタフェースの数や各送信キューを構成するクラス別キューの数によっては、中継装置のメインCPUの処理負荷が過剰に高くなり、スループット(単位時間当たり転送可能なデータ量)が低下する虞がある。このようなスループットの低下を回避するための技術の一例としては、特許文献1に開示の技術が挙げられる。特許文献1に開示の技術では、各送信キューへのデータブロックの書き込みおよび各送信キューからのデータブロックの読み出しを行う専用コントローラをメインCPUとは別個に設けることで、スループットの低下が回避される。   QoS is performed in a communication device that transmits data to a communication network, such as a relay device such as a router or a switching hub, or an information distribution server. For example, when performing QoS in a relay device, it is common to cause the main CPU (Central Processing Unit) of the relay device to execute the above-described classification and data block read control from each class queue. However, when the relay device is connected to a large number of communication networks, a class-specific queue for each communication interface connected to each communication network (hereinafter, a plurality of class-specific queues provided for one communication interface unit). The queue is collectively referred to as “transmission queue”), and it is necessary to control the writing of data blocks to the transmission queue and the reading of data blocks from the transmission queue for each communication interface. For this reason, depending on the number of communication interfaces provided in the relay device and the number of queues for each class constituting each transmission queue, the processing load on the main CPU of the relay device becomes excessively high, resulting in throughput (data transferable per unit time). There is a risk that the amount will decrease. As an example of a technique for avoiding such a decrease in throughput, a technique disclosed in Patent Document 1 can be cited. In the technique disclosed in Patent Literature 1, a dedicated controller that writes data blocks to each transmission queue and reads data blocks from each transmission queue is provided separately from the main CPU, thereby avoiding a decrease in throughput. .

特開2010−226275号公報JP 2010-226275 A

特許文献1に開示の技術のように、各送信キューへのデータブロックの書き込みおよび各送信キューからのデータブロックの読み出しを行う専用コントローラを設ける態様では、中継装置のコストが増加し、市場競争力の低下を招くといった問題がある。極端なコスト増加を抑えつつ、スループットの低下を招かないようにするには、中継装置のメインCPUとしてマルチコアCPUを用いることが考えられる。マルチコアCPUとは、複数のCPUコア(演算回路とL1キャッシュとを含む半導体集積回路)と、これら複数のCPUコアにより共有されるバスインタフェースやL2キャッシュを1つのプロセッサ・パッケージ内に封入して構成されたCPUのことを言う。このようなマルチコアCPUであれば、複数のCPUコアの各々に並列にデータブロックの中継処理(およびこれに伴うキュー制御)を行わせることでスループットの低下を回避することができ、また、メインCPUの他にキュー制御のための専用コントローラを設ける態様に比較してコストの増加を低く抑えることができるからである。   As in the technique disclosed in Patent Document 1, in an aspect in which a dedicated controller for writing data blocks to each transmission queue and reading data blocks from each transmission queue is provided, the cost of the relay device increases and the market competitiveness is increased. There is a problem of incurring a decline. In order to prevent a reduction in throughput while suppressing an extreme increase in cost, it is conceivable to use a multi-core CPU as the main CPU of the relay apparatus. A multi-core CPU is configured by enclosing a plurality of CPU cores (a semiconductor integrated circuit including an arithmetic circuit and an L1 cache) and a bus interface and an L2 cache shared by the plurality of CPU cores in one processor package. Refers to the CPU. With such a multi-core CPU, it is possible to avoid a decrease in throughput by causing each of a plurality of CPU cores to perform relay processing of data blocks (and queue control associated therewith) in parallel. This is because an increase in cost can be suppressed to a low level as compared with a mode in which a dedicated controller for queue control is provided.

しかしながら、中継装置のメインCPUとしてマルチコアCPUを用いたとしても、期待したほどの効果が得られない場合がある。以下、QoSとして帯域制御を行う場合を例にとってその理由を説明する。中継装置のメインCPUとしてマルチコアCPUを用い、各CPUコアにデータブロックの中継制御およびこれに伴うキュー制御を独立に行わる場合、一つの通信インタフェース部を介して複数のCPUコアが同時にパケットを送信しようとする、といった事象が発生し得る。帯域制御を行う場合、通信インタフェース毎に実際の通信レートを計算する必要があり、実際の通信レートの計算が正しく行われるようにするためには、一つの通信インタフェース部に対して複数のCPUコアが同時に送信処理等を行わないよう排他制御する必要がある。このため、中継装置のメインCPUとしてマルチコアCPUを用いたとしても、QoSを行う場合には、排他制御による処理待ちが多発し、マルチコアCPU本来の性能を発揮できなくなってしまうのである。   However, even if a multi-core CPU is used as the main CPU of the relay apparatus, the expected effect may not be obtained. Hereinafter, the reason will be described taking the case of performing bandwidth control as QoS as an example. When a multi-core CPU is used as the main CPU of the relay device and the relay control of the data block and the associated queue control are performed independently for each CPU core, a plurality of CPU cores simultaneously transmit packets via one communication interface unit. An event such as trying to occur may occur. When performing bandwidth control, it is necessary to calculate an actual communication rate for each communication interface, and in order to correctly calculate the actual communication rate, a plurality of CPU cores are used for one communication interface unit. However, it is necessary to perform exclusive control so that transmission processing and the like are not performed at the same time. For this reason, even when a multi-core CPU is used as the main CPU of the relay device, when QoS is performed, processing waits due to exclusive control frequently occur, and the original performance of the multi-core CPU cannot be exhibited.

本発明は上記課題に鑑みて為されたものであり、マルチコアCPUを搭載した通信装置において、複数のCPUコアが同時に送信処理を行っている環境でスループットの低下を抑えつつQoSを実現する技術を提供することを目的とする。   The present invention has been made in view of the above problems, and in a communication apparatus equipped with a multi-core CPU, a technique for realizing QoS while suppressing a decrease in throughput in an environment where a plurality of CPU cores perform transmission processing simultaneously. The purpose is to provide.

上記課題を解決するために本発明は、複数の通信インタフェース部と、通信インタフェース毎に設けられた送信キューと、複数の通信インタフェース部の各々に一つずつ対応付けられた複数のCPUコアと、を備え、複数のCPUコアの各々は、送信先アドレスを含むヘッダを付与されたデータブロックの送信を行う際に、その送信先に対応する通信インタフェース部を特定し、当該通信インタフェース部の送信キューに当該データブロックを書き込むとともにその書き込みが完了するまでの間、他のCPUコアによる当該送信キューへのデータブロックの書き込みを禁止する第1の処理と、自身に対応付けられた通信インタフェース部の送信キューに格納されているデータブロックを、QoSを行いつつ当該通信インタフェース部を介して送信する第2の処理と、を実行することを特徴とする通信装置、を提供する。   In order to solve the above problems, the present invention provides a plurality of communication interface units, a transmission queue provided for each communication interface, a plurality of CPU cores associated with each of the plurality of communication interface units, Each of the plurality of CPU cores specifies a communication interface unit corresponding to the transmission destination when transmitting the data block to which the header including the transmission destination address is assigned, and transmits the transmission queue of the communication interface unit. The first process for prohibiting the writing of the data block to the transmission queue by another CPU core and the transmission of the communication interface unit associated with itself until the writing of the data block is completed. The data block stored in the queue is transferred via the communication interface unit while performing QoS. A communications device, characterized in that to perform the second process of signal, the.

本発明の通信装置では、送信キューへのデータブロックの書き込み(以下、「エンキュー」と呼ぶ)の間だけ他のCPUコアによる当該送信キューへのエンキューが禁止され(すなわち、排他制御が実行され)、送信キューからのデータブロックの読み出し(以下、「デキュー」と呼ぶ)の際には排他制御は行われない。このため、送信キューへのエンキューおよびデキューの両方で排他制御を行う場合に比較して排他制御による待ち時間が少なくなり、排他制御を行うことに起因するスループットの低下を抑えることができる。加えて、本発明の通信装置では、各通信インタフェース部に対応づけられたCPUコアのみがその通信インタフェース部を用いたデータの送信を行うため、通信レートの計算や優先制御に支障が生じることもない。つまり、本発明によれば、マルチコアCPUを搭載した通信装置において、複数のCPUコアが同時に送信処理を行っている環境でスループットの低下を抑えつつ、QoSを行うことが可能になる。なお、本発明の別の態様としてはコンピュータ(CPUコア)に上記第1の処理と第2の処理とを実行させるプログラムを提供する態様も考えられる。   In the communication apparatus of the present invention, enqueue to the transmission queue by another CPU core is prohibited (that is, exclusive control is executed) only during the writing of the data block to the transmission queue (hereinafter referred to as “enqueue”). When the data block is read from the transmission queue (hereinafter referred to as “dequeue”), exclusive control is not performed. For this reason, compared with the case where exclusive control is performed both in the enqueue and dequeue to the transmission queue, the waiting time due to exclusive control is reduced, and a reduction in throughput due to performing exclusive control can be suppressed. In addition, in the communication device of the present invention, only the CPU core associated with each communication interface unit transmits data using the communication interface unit, which may cause problems in communication rate calculation and priority control. Absent. That is, according to the present invention, it is possible to perform QoS while suppressing a decrease in throughput in an environment in which a plurality of CPU cores perform transmission processing simultaneously in a communication device equipped with a multi-core CPU. As another aspect of the present invention, an aspect of providing a program that causes a computer (CPU core) to execute the first process and the second process is also conceivable.

より好ましい態様としては、各CPUコアの処理負荷(例えば、単位時間当たりのCPU利用率の平均値や駆動タスク数の平均値など)を計測し、処理負荷の軽いCPUコアほど、多くの通信インタフェースに対応付けられるようにCPUコアと通信インタフェース部との対応付けを変更する変更手段を上記通信装置に設ける態様が考えられ、さらに好ましい態様としては、通信インタフェース部を介して行われる通信のトラフィック(例えば、単位時間当たりの各クラスのデータ送信量の総和)を通信インタフェース毎に計測し、処理負荷の重いCPUコアほど、トラフィックの少ない通信インタフェースに対応付けられるようにCPUコアと通信インタフェース部との対応付けを変更する処理を上記変更手段に実行させる態様が考えられる。これらの態様によれば、各CPUコアの処理負荷に大きなバラツキが生じることを回避することができる。   As a more preferable aspect, the processing load of each CPU core (for example, the average value of the CPU usage rate per unit time, the average value of the number of drive tasks, etc.) is measured. A mode in which the communication device is provided with changing means for changing the correspondence between the CPU core and the communication interface unit so as to be associated with the communication interface unit, and a more preferable mode is a traffic of communication performed via the communication interface unit ( For example, the total data transmission amount of each class per unit time) is measured for each communication interface, and a CPU core with a heavy processing load is associated with a communication interface with less traffic so that the CPU core and the communication interface unit are associated with each other. A mode for causing the changing means to execute the process of changing the association is considered. . According to these aspects, it is possible to avoid a large variation in the processing load of each CPU core.

上記通信装置の具体例としては、ルータやスイッチングハブなどの中継装置、クライアントから送信されたリクエストメッセージに応じて情報を配信する情報配信装置(情報配信サーバ)が挙げられる。上記通信装置が中継装置である場合、受信したデータブロックの送信先と複数の通信インタフェース部とを対応付ける情報の書き込まれたテーブルの記憶された記憶部を備えていることが一般的である。例えば、上記通信装置がルータであれば上記テーブルは所謂ルーティングテーブルであり、上記通信装置がスイッチングハブであれば上記テーブルは所謂MAC(Media Access Control)アドレステーブルである。そこで、上記通信装置が中継装置である場合には、複数の通信インタフェース部の何れかを介して受信したデータブロックを送信対象のデータブロックとして第1の処理を実行し、この第1の処理においては、上記テーブルの格納内容を参照して送信対象のデータブロックの送信先に対応する通信インタフェース部を特定する処理を各CPUコアに実行させるようにすれば良い。また、上記通信装置が情報配信装置である場合には、リクエストメッセージを受信した通信インタフェース部を送信対象のデータブロック(すなわち、リクエストメッセージにより送信を要求されたデータがペイロード部に書き込まれたデータブロック)の送信先に対応する通信インタフェース部として第1の処理を各CPUコアに実行させるようにすれば良い。   Specific examples of the communication device include a relay device such as a router and a switching hub, and an information distribution device (information distribution server) that distributes information in response to a request message transmitted from a client. When the communication device is a relay device, the communication device generally includes a storage unit in which a table in which information for associating a destination of the received data block with a plurality of communication interface units is written is stored. For example, if the communication device is a router, the table is a so-called routing table, and if the communication device is a switching hub, the table is a so-called MAC (Media Access Control) address table. Therefore, when the communication device is a relay device, the first process is executed with the data block received via any one of the plurality of communication interface units as the data block to be transmitted. In this case, each CPU core may be caused to execute processing for identifying the communication interface unit corresponding to the transmission destination of the data block to be transmitted with reference to the stored contents of the table. Further, when the communication device is an information distribution device, the communication interface unit that has received the request message transmits the data block to be transmitted (that is, the data block in which the data requested to be transmitted by the request message is written in the payload unit) The first processing may be executed by each CPU core as a communication interface unit corresponding to the transmission destination.

なお、各CPUコアの処理能力が充分高い場合には、送信キューからのデキューの際にも排他制御を実行させる(すなわち、前記第2の処理において、自身に対応付けられた通信インタフェース部の送信キューに格納されているデータブロックを読み出す際に、その読み出しが完了するまでの間、他のCPUコアによる当該送信キューへのデータパケットの書き込みを禁止する処理を各CPUコアに実行させる)ことも考えられる。各CPUコアの処理能力が充分に高ければ、送信キューへのエンキューに要する処理時間および送信キューからのデキューに要する処理時間が充分に短くなり、送信キューへのエンキューおよびデキューの両方で排他制御を行ったとしても、スループットが大幅に低下することはないからである。しかしながら、送信キューへのエンキューおよび送信キューからのデキューの両方で排他制御を行ったとしても、送信キューへのエンキューの際にのみ排他制御を行う態様に比較して特段の効果を奏する訳ではなく、また、送信キューからのデキューの際の排他待ちの分だけスループットが低下することは避けられない。したがって、送信キューへのエンキューの際にのみ排他制御を行う態様であれば充分である。   When the processing capability of each CPU core is sufficiently high, exclusive control is executed even when dequeuing from the transmission queue (that is, transmission of the communication interface unit associated with itself in the second processing) (When the data block stored in the queue is read, each CPU core executes a process of prohibiting writing of data packets to the transmission queue by other CPU cores until the reading is completed) Conceivable. If the processing capacity of each CPU core is sufficiently high, the processing time required for enqueuing to the transmission queue and the processing time required for dequeuing from the transmission queue will be sufficiently short, and exclusive control will be performed for both enqueuing and dequeuing to the transmission queue. This is because even if it is performed, the throughput is not significantly reduced. However, even if exclusive control is performed both in the enqueue to the transmission queue and in the dequeue from the transmission queue, there is no particular effect as compared to the mode in which exclusive control is performed only when enqueuing to the transmission queue. In addition, it is inevitable that the throughput is reduced by the amount of exclusion waiting when dequeuing from the transmission queue. Therefore, an aspect in which exclusive control is performed only at the time of enqueuing to the transmission queue is sufficient.

この発明の一実施形態の中継装置10の構成例を示す図である。It is a figure which shows the structural example of the relay apparatus 10 of one Embodiment of this invention. キューの実装態様を説明するための図である。It is a figure for demonstrating the mounting aspect of a queue. 中継装置10の動作を説明するための図である。FIG. 6 is a diagram for explaining the operation of the relay device 10. QoSを説明するための図である。It is a figure for demonstrating QoS.

以下、図面を参照しつつ、本発明の実施形態について説明する。
図1は、本発明の通信装置の一実施形態の中継装置10の構成例を示す図である。
中継装置10は、所謂ルータである。ルータとは、OSI(Open Systems Interconnection)参照モデルにおける第3層(すなわち、ネットワーク層)の通信プロトコルにしたがって送受信されるデータブロック(すなわち、パケット)の中継制御を行う通信装置のことをいう。図1に示すように、中継装置10は、制御部100、通信インタフェース(以下、「I/F」と略記)部120−n(n=1〜4)、記憶部130、およびこれら構成要素間のデータ授受を仲介するバス140を含んでいる。
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 is a diagram illustrating a configuration example of a relay device 10 according to an embodiment of a communication device of the present invention.
The relay device 10 is a so-called router. The router refers to a communication device that performs relay control of data blocks (that is, packets) that are transmitted and received according to a communication protocol of the third layer (that is, the network layer) in an OSI (Open Systems Interconnection) reference model. As shown in FIG. 1, the relay device 10 includes a control unit 100, a communication interface (hereinafter abbreviated as “I / F”) unit 120-n (n = 1 to 4), a storage unit 130, and between these components. A bus 140 that mediates the exchange of data is included.

制御部100は、中継装置10のメインCPUである。制御部100は、所謂マルチコアCPUであり、キャッシュメモリ(図1では、図示略)を共有する複数のCPUコアを有している。図1に示すように、本実施形態の制御部100は、4つのCPUコア(CPUコア110−1、110−2、110−3および110−4)を有している。CPUコア110−n(n=1〜4)の各々は、記憶部130に記憶されている中継制御プログラム134cを実行することによりパケットの中継制御を行う。   The control unit 100 is a main CPU of the relay device 10. The control unit 100 is a so-called multi-core CPU, and has a plurality of CPU cores that share a cache memory (not shown in FIG. 1). As shown in FIG. 1, the control unit 100 according to the present embodiment has four CPU cores (CPU cores 110-1, 110-2, 110-3, and 110-4). Each of the CPU cores 110-n (n = 1 to 4) performs packet relay control by executing the relay control program 134 c stored in the storage unit 130.

通信I/F部120−n(n=1〜4)の各々は例えばNIC(Network Interface Card)であり、各々異なる通信網に接続されている。通信I/F部120−n(n=1〜4)の各々には、その接続先の通信網から受信したパケットがその受信順に格納されるキュー(以下、受信キュー)と、同通信網へ送出するパケットがクラス毎に格納される送信キュー(前述したように、複数のクラス別キューからなる送信キュー)と、が対応付けられている。さらに、本実施形態では、通信I/F部120−nにはCPUコア110−nが対応付けられている。このように、通信I/F部120−nに対してCPUコア110−nを対応付けた理由については後に明らかにする。   Each of the communication I / F units 120-n (n = 1 to 4) is a NIC (Network Interface Card), for example, and is connected to a different communication network. Each of the communication I / F units 120-n (n = 1 to 4) includes a queue (hereinafter referred to as a reception queue) in which packets received from the communication network of the connection destination are stored in the order of reception, and the communication network. A transmission queue in which packets to be transmitted are stored for each class (as described above, a transmission queue composed of a plurality of class-specific queues) is associated. Furthermore, in this embodiment, the CPU core 110-n is associated with the communication I / F unit 120-n. The reason why the CPU core 110-n is associated with the communication I / F unit 120-n will be clarified later.

記憶部130は、図1に示すように、揮発性記憶部132と不揮発性記憶部134とを含んでいる。揮発性記憶部132は例えばRAM(Random Access Memory)であり、中継制御プログラム134cを実行する際のワークエリアとしてCPUコア110−n(n=1〜4)の各々によって使用される。また、揮発性記憶部132は、通信I/F部120−nの受信キュー132a−nとして機能するとともに、通信I/F部120−nの送信キュー132b−nとして機能する。なお、送信キュー132b−nを構成する各クラス別キューおよび受信キュー132a−nの具体的な実現態様としては、図2に示す構造の単方向リストを用い、エンキューの際には当該リストの末尾にエントリ(データと、後続のデータの格納先アドレスを示すポインタからなるデータセット)を追加し、デキューの際には先頭のエントリからデータを読み出し、当該先頭のエントリをリストから削除する態様が考えられる。   As shown in FIG. 1, the storage unit 130 includes a volatile storage unit 132 and a nonvolatile storage unit 134. The volatile storage unit 132 is, for example, a RAM (Random Access Memory), and is used by each of the CPU cores 110-n (n = 1 to 4) as a work area when executing the relay control program 134c. The volatile storage unit 132 functions as a reception queue 132a-n of the communication I / F unit 120-n and also functions as a transmission queue 132b-n of the communication I / F unit 120-n. As a specific mode of realization of each class queue and reception queue 132a-n constituting the transmission queue 132b-n, a unidirectional list having the structure shown in FIG. 2 is used. It is possible to add an entry (data set consisting of data and a pointer indicating the storage address of subsequent data) to the data, read the data from the first entry at the time of dequeuing, and delete the first entry from the list. It is done.

不揮発性記憶部134は例えばフラッシュメモリやハードディスクで構成されている。不揮発性記憶部134には、送信先管理テーブル134a、クラス分類テーブル134b、および中継制御プログラム134cが予め格納されている。送信先管理テーブル134aは、所謂ルーティングテーブルであり、通信I/F部120−n(n=1〜4)の各々を示す識別子に対応付けて通信I/F部120−nから送出するべきデータパケットを示す情報(送信先アドレス、または送信先アドレスの範囲を示す情報)が予め格納されている。クラス分類テーブル134bは、通信I/F部120−nを介して受信したパケットをクラス分けするためのテーブルであり、クラス分けの指標(例えば、プロトコル種別)と分類先のクラスとの関係を示す情報が予め格納されている。   The nonvolatile storage unit 134 is configured by, for example, a flash memory or a hard disk. In the nonvolatile storage unit 134, a transmission destination management table 134a, a class classification table 134b, and a relay control program 134c are stored in advance. The transmission destination management table 134a is a so-called routing table, and data to be transmitted from the communication I / F unit 120-n in association with identifiers indicating the communication I / F units 120-n (n = 1 to 4). Information indicating a packet (information indicating a transmission destination address or a range of transmission destination addresses) is stored in advance. The class classification table 134b is a table for classifying packets received via the communication I / F unit 120-n, and indicates the relationship between the classification index (for example, the protocol type) and the class to be classified. Information is stored in advance.

中継制御プログラム134cは、送信先アドレスに基づくパケットの中継制御をCPUコア110−n(n=1〜4)の各々に実行させるためのプログラムである。この中継制御プログラム134cは、中継装置10の電源(図1では図示略)が投入されたことを契機として制御部100によって揮発性記憶部132に読み出される。同様に、送信先管理テーブル134aおよびクラス分類テーブル134bも中継装置10の電源投入を契機として制御部110によって揮発性記憶部132に読み出される。揮発性記憶部132へ読み出された中継制御プログラム134cはCPUコア110−n(n=1〜4)の各々によって別個独立に実行される。中継制御プログラム134cにしたがって作動しているCPUコア110−nは、送信キュー132b−nへのエンキュー処理および送信キュー132b−nからのデキュー処理の2種類を実行する。   The relay control program 134c is a program for causing each of the CPU cores 110-n (n = 1 to 4) to perform packet relay control based on the transmission destination address. The relay control program 134c is read into the volatile storage unit 132 by the control unit 100 when the power supply (not shown in FIG. 1) of the relay device 10 is turned on. Similarly, the transmission destination management table 134a and the class classification table 134b are also read out to the volatile storage unit 132 by the control unit 110 when the relay device 10 is turned on. The relay control program 134c read to the volatile storage unit 132 is executed independently by each of the CPU cores 110-n (n = 1 to 4). The CPU core 110-n operating according to the relay control program 134c executes two types of processing, that is, enqueue processing to the transmission queue 132b-n and dequeue processing from the transmission queue 132b-n.

エンキュー処理は、予め定められた時間間隔で周期的に、或いはCPUコア110−nに対応付けられた通信I/F部120−nの受信キュー132a−nにパケットが書き込まれる毎に実行される処理である。このエンキュー処理では、CPUコア110−nは、受信キュー132a−nに格納されているパケットのうちのもっとも古いもの(図2に示すリスト構造における先頭のエントリに格納されているパケット)を読み出し、送信先管理テーブル134aの格納内容を参照して当該パケットの送出を行うべき通信I/F部120−kを特定するとともに、クラス分類テーブル134bを参照して当該パケットのクラスを判別する。次いで、CPUコア110−nは、当該パケットを通信I/F部120−kの送信キュー132b−kの該当するクラス別キュー書き込むとともに、その書き込みが完了するまでの間、他のCPUコア110−m(m≠n)による当該クラス別キューへのパケットの書き込みを禁止する排他制御を行う。   The enqueue process is executed periodically at predetermined time intervals or whenever a packet is written to the reception queue 132a-n of the communication I / F unit 120-n associated with the CPU core 110-n. It is processing. In this enqueue process, the CPU core 110-n reads the oldest packet stored in the reception queue 132a-n (packet stored in the first entry in the list structure shown in FIG. 2), The communication I / F unit 120-k that should transmit the packet is identified with reference to the stored contents of the transmission destination management table 134a, and the class of the packet is determined with reference to the class classification table 134b. Next, the CPU core 110-n writes the packet to the corresponding class queue in the transmission queue 132b-k of the communication I / F unit 120-k and waits until the writing is completed. Exclusive control is performed to prohibit writing of packets to the class-specific queue by m (m ≠ n).

例えば、図3(A)に示すように、CPUコア110−1が送信キュー132b−3のあるクラス別キューにパケットP1をエンキューしているときに、CPUコア110−2が同じクラス別キューにパケットP2をエンキューしようとした場合、CPUコア110−1のエンキュー処理が終了するまでCPUコア110−2の動作はブロックされる。これは、図3(B)に示すように、1つのクラス別キューの末尾に2つのパケットが登録されるといった不整合が発生しないようにするためである。なお、パケットのクラスの判別およびクラス分けについては既存のQoSにおけるものを利用すれば良く、排他制御についてはセマフォなどの周知技術を用いるようにすれば良い。   For example, as shown in FIG. 3A, when the CPU core 110-1 enqueues the packet P1 in a certain class queue in the transmission queue 132b-3, the CPU core 110-2 enters the same class queue. When enqueueing the packet P2, the operation of the CPU core 110-2 is blocked until the enqueue processing of the CPU core 110-1 is completed. This is to prevent inconsistency that two packets are registered at the end of one class-specific queue as shown in FIG. It should be noted that existing QoS may be used for packet class discrimination and classification, and well-known techniques such as semaphores may be used for exclusive control.

デキュー処理も、予め定められた時間間隔で周期的に、或いはCPUコア110−nに対応付けられた通信I/F部120−nの送信キュー132b−nにパケットが書き込まれる毎に実行される処理である。このデキュー処理では、CPUコア110−nは、送信キュー132b−nを構成する各クラス別キューに格納されているパケットを、実際の通信レートが目標通信レートに近似した値となるように読み出し速度の調整を行いつつ読み出し、通信I/F部120−nを介して送信(すなわち、帯域制御を行いつつ送信)する。   The dequeue process is also executed periodically at predetermined time intervals or whenever a packet is written to the transmission queue 132b-n of the communication I / F unit 120-n associated with the CPU core 110-n. It is processing. In this dequeue process, the CPU core 110-n reads the packets stored in the queues for each class constituting the transmission queue 132b-n so that the actual communication rate becomes a value approximate to the target communication rate. Are read out while adjusting, and transmitted via the communication I / F unit 120-n (that is, transmitted while performing bandwidth control).

ここで注目すべき点は、本実施形態の中継装置10では、送信キュー132b−kのクラス別キューへのパケットの書き込みの間だけ他のCPUコア110−m(m≠n)による当該クラス別キューへのパケットの書き込みを禁止する排他制御がCPU110−nによって実行され、送信キュー132b−nからのパケットのデキューの際には排他制御は行われない、という点である。本実施形態では、各通信I/F部120−nに対応づけられたCPUコア110−nのみがその通信I/F部120の送信キュー132b−nからのパケットのデキューを行う。このため、1つのクラス別キューに対して複数のCPUコア110−nが同時にデキュー処理を行うことはなく、デキュー処理において排他制御を行う必要はないからである。   It should be noted here that in the relay device 10 according to the present embodiment, each CPU core 110-m (m ≠ n) performs the class-specific processing only during the writing of the packet to the class-specific queue of the transmission queue 132b-k. The exclusive control for prohibiting the writing of the packet to the queue is executed by the CPU 110-n, and the exclusive control is not performed when the packet is dequeued from the transmission queue 132b-n. In the present embodiment, only the CPU core 110-n associated with each communication I / F unit 120-n dequeues packets from the transmission queue 132b-n of the communication I / F unit 120. For this reason, a plurality of CPU cores 110-n do not simultaneously perform dequeue processing on one class-by-class queue, and it is not necessary to perform exclusive control in the dequeue processing.

このように、本実施形態の中継装置10では、送信キューへのエンキューを行う場合にのみ排他制御が行われる。QoSにおいて最も負荷が高い処理はデキュー時の送信レート計算だが、本実施形態では当該処理を行う際に排他制御を行う必要がないため、スループット低下を抑えることができる。加えて、本実施形態では、各通信I/F部120−nに対応づけられたCPUコア110−nのみがその通信I/F部120−nを用いたデータの送信を行うため、実際の通信レートの計算に支障が生じることもない。   As described above, in the relay device 10 of the present embodiment, exclusive control is performed only when enqueuing the transmission queue. The processing with the highest load in QoS is transmission rate calculation at the time of dequeuing. However, in this embodiment, it is not necessary to perform exclusive control when performing the processing, so that a reduction in throughput can be suppressed. In addition, in this embodiment, only the CPU core 110-n associated with each communication I / F unit 120-n transmits data using the communication I / F unit 120-n. There is no problem in calculating the communication rate.

なお、マルチユーザ環境におけるデータベースの排他制御では、データベースへのデータの書き込みが行われている間、他者による当該データの更新を禁止する排他制御が行われることは勿論、当該データの読み出しも禁止されることが一般的である。これは、所謂ダーティリード(更新処理中のデータがコミットされる前に読み出され、その後更新処理のロールバックが発生すると、結果的に誤ったデータがユーザに提示されること)の発生を回避するためである。一般的なデータベースにおける排他制御と対比すると、本実施形態のエンキュー処理において、そのエンキュー処理にてパケットの書き込みを行っている送信キューからのデキューを禁止していない点が何らかの問題を生じさせることはないかといった疑問が生じるかも知れない。   In the exclusive control of the database in the multi-user environment, while the data is being written to the database, the exclusive control for prohibiting the update of the data by others is performed, and the reading of the data is also prohibited. It is common to be done. This avoids the occurrence of so-called dirty reads (reading before the data being updated is committed, and then when the update process rolls back, incorrect data is presented to the user as a result). It is to do. Compared with exclusive control in a general database, in the enqueue processing of this embodiment, the point that dequeuing from the transmission queue that writes packets in the enqueue processing is not prohibited causes some problem. The question of whether or not there may arise.

しかし、本実施形態のエンキュー処理では、送信キュー(より正確には送信キューに含まれる何れかのクラス別キュー)の末尾へのパケットの追加が行われるのであって送信キューに格納済のデータの更新が行われる訳ではない。そして、データベースアクセスとは異なり、エンキュー処理のロールバックが行われることも無い。このため、本実施形態では、エンキュー処理にてパケットの書き込みを行っている送信キューからのデキューを禁止しなくても、ダーティリードのような問題は発生しないのである。また、本実施形態のエンキュー処理では、パケットの書き込み先となるクラス別キューは1つであるから、排他制御の際に特段の工夫をしなくても、所謂デッドロックが発生することも無い。   However, in the enqueue processing of this embodiment, packets are added to the end of the transmission queue (more precisely, any class-specific queue included in the transmission queue). No updates are made. Unlike database access, rollback of enqueue processing is not performed. For this reason, in this embodiment, a problem such as dirty read does not occur even if dequeuing from the transmission queue in which packets are written in the enqueue process is not prohibited. Further, in the enqueue process of the present embodiment, there is one class-specific queue serving as a packet write destination, and so-called deadlock does not occur even if no special measures are taken during exclusive control.

以上説明したように本実施形態によれば、制御部100としてマルチコアCPUを搭載した中継装置10において各CPUコア110−nが同時に送信処理を行っている環境で、スループットの低下を抑えつつ、帯域制御を行うことが可能になる。   As described above, according to the present embodiment, in the relay device 10 in which the multi-core CPU is mounted as the control unit 100, each CPU core 110-n performs transmission processing at the same time, while suppressing a decrease in throughput, Control can be performed.

以上本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
(1)上記実施形態では、QoSとして帯域制御を行う場合について説明したが、帯域制御に換えて優先制御を行っても良く、また、帯域制御と優先制御とを組み合わせて行っても良い。また、上記実施形態では、エンキュー処理における排他制御をクラス別キュー単位で行った。これは、排他制御における粒度を極力小さくし、排他待ちが多発しないようにするためである。しかし、エンキュー処理における排他制御を、送信キュー単位で行っても良い。ここで、送信キュー単位で排他制御を行うとは、送信キューを構成する複数のクラス別キューのうちの何れかに対して、あるCPUコアがパケットの書き込みを行っている間は、パケットの書き込み先のクラス別キューが異なる場合であっても他のCPUコアによるパケットの書き込みを禁止することを言う。エンキュー処理における排他制御を送信キュー単位で行うようにすると、上記実施形態に比較して排他待ちが多発する可能性が高くなるが、排他制御が簡略化され、排他制御に要するリソース(例えば、セマフォを利用して排他制御を行う場合にはセマフォ値を格納するための記憶容量など)が少なくて済むなどの利点もある。
Although one embodiment of the present invention has been described above, it goes without saying that the following modifications may be added to this embodiment.
(1) In the above embodiment, the case of performing bandwidth control as QoS has been described. However, priority control may be performed instead of bandwidth control, or bandwidth control and priority control may be combined. In the above embodiment, the exclusive control in the enqueue process is performed for each class queue. This is to reduce the granularity in the exclusive control as much as possible and prevent frequent exclusion waits. However, exclusive control in the enqueue process may be performed for each transmission queue. Here, exclusive control for each transmission queue means that packet writing is performed while a certain CPU core is writing a packet to any one of a plurality of class-specific queues constituting the transmission queue. This means that packet writing by other CPU cores is prohibited even if the previous class queue is different. If exclusive control in enqueue processing is performed in units of transmission queues, there is a higher possibility that exclusive waiting will occur compared to the above embodiment, but exclusive control is simplified and resources required for exclusive control (for example, semaphores) In the case where exclusive control is performed using the semaphore, there is an advantage that the storage capacity for storing the semaphore value is small.

(2)上記実施形態の中継装置10は、4個の通信I/F部と各通信I/F部に1つずつ対応付けられた4個のCPUコアとを有していたが、中継装置10が有する通信I/F部の数は、2または3個、或いは5個以上であっても良く、また、中継装置10が有するCPUコアの数も、2または3個、或いは5個以上であっても良い。また、上記実施形態では、通信I/F部120−nとCPUコア110−nとが一対一に対応付けられていたが、通信I/F部120−nから見て一つのCPUコア110−nが対応付けられている態様であれば良く、一つのCPUコア110−nが複数の通信I/F部120−nに対応づけられていても良い。一つの送信キューからのデキューを予め定められた一つのCPUコア110−nが常に担当する態様であれば、通信レートの計算に支障は生じず、デキュー処理において排他制御を行わなくても特段の問題は生じないからである。したがって、中継装置10に設けられている通信I/F部の数とCPUコアの数は同じである必要はなく、前者よりも後者の方が少なくても良い。また、上記実施形態では、各CPUコア110−nに、自身に対応付けられた通信I/F部120の受信キュー132a−nに格納されたパケットを対象としてエンキュー処理を行わせたが、他の受信キューに格納されたパケットを対象としてエンキュー処理を行わせても勿論良い。すなわち、エンキュー処理においてパケットの読み出し先となる受信キューと同エンキュー処理においてパケットの書き込み先となる送信キューとが、各々異なる通信I/F部に対応付けられたものであっても良い。 (2) Although the relay device 10 of the above embodiment has four communication I / F units and four CPU cores associated with each communication I / F unit, one relay device. The number of communication I / F units included in 10 may be two, three, or five or more, and the number of CPU cores included in the relay apparatus 10 is two, three, or five or more. There may be. In the above-described embodiment, the communication I / F unit 120-n and the CPU core 110-n are associated one-to-one. However, when viewed from the communication I / F unit 120-n, one CPU core 110-n is associated. It is sufficient that n is associated with each other, and one CPU core 110-n may be associated with a plurality of communication I / F units 120-n. As long as one predetermined CPU core 110-n is always in charge of dequeuing from one transmission queue, there is no problem in the calculation of the communication rate, and even if exclusive control is not performed in the dequeue process, there is no particular problem. This is because no problem occurs. Therefore, the number of communication I / F units provided in the relay apparatus 10 and the number of CPU cores do not have to be the same, and the latter may be smaller than the former. In the above-described embodiment, each CPU core 110-n is caused to perform enqueue processing for the packets stored in the reception queue 132a-n of the communication I / F unit 120 associated with the CPU core 110-n. Of course, the enqueue process may be performed on the packets stored in the reception queue. That is, the reception queue that is the packet reading destination in the enqueue processing and the transmission queue that is the packet writing destination in the enqueue processing may be associated with different communication I / F units.

(3)上記実施形態では、通信I/F部120−nとCPUコア110−nの対応関係が固定されていたが、各CPUコア110−nの処理負荷を計測し、処理負荷の軽いCPUコア110−nほど、多くの通信I/F部120−nに対応付けられるようにCPUコア110−nと通信I/F部120−nとの対応付けを動的に変更する処理を実行する変更手段(例えば、制御部100とは別個の制御部)を中継装置10に設けても良く、また、制御部100が有する複数のCPUコア110−nの何れを上記変更手段として機能させても良い。また、通信I/F部120−nを介して行われる通信のトラフィックを通信I/F部120−n毎に計測する処理と、処理負荷の重いCPUコアほど、トラフィックの少ない通信I/F部120に対応付けられるようにCPUコア110−nと通信I/F部120−nとの対応付けを動的に変更する処理を上記変更手段に実行させるようにしても良い。 (3) In the above embodiment, the correspondence between the communication I / F unit 120-n and the CPU core 110-n is fixed. However, the processing load of each CPU core 110-n is measured, and the CPU with a light processing load The core 110-n executes a process of dynamically changing the association between the CPU core 110-n and the communication I / F unit 120-n so as to be associated with many communication I / F units 120-n. A changing unit (for example, a control unit separate from the control unit 100) may be provided in the relay apparatus 10, and any of the plurality of CPU cores 110-n included in the control unit 100 may function as the changing unit. good. In addition, a process for measuring the traffic of communication performed via the communication I / F unit 120-n for each communication I / F unit 120-n and a CPU core with a heavy processing load, a communication I / F unit with less traffic A process for dynamically changing the association between the CPU core 110-n and the communication I / F unit 120-n so as to be associated with 120 may be executed by the changing unit.

(4)上記実施形態では、複数のCPUコアを有するマルチコアCPUをメインCPU(制御部100)として有するルータへの適用例を説明した。しかし、各々1つのCPUコアを有するシングルコアCPUを複数有し、これら複数のシングコアCPUをメインCPUとして機能させるルータに本発明を適用しても勿論良い。また、ルータではなく、スイッチングハブ(すなわち、OSI参照モデルにおける第2層(データリンク層)においてデータ通信を中継する中継装置)に本発明を適用しても勿論良い。この場合、データリンク層におけるデータの送受信単位であるフレームが、エンキュー処理およびデキュー処理における処理単位のデータブロックとなる。また、ルータやスイッチングハブなどの中継装置ではなく、通信網を介してクライアント装置から送信されてくるリクエストメッセージに応じて各種情報の配信を行う情報配信装置に本発明を適用しても良い。 (4) In the above embodiment, an application example to a router having a multi-core CPU having a plurality of CPU cores as a main CPU (control unit 100) has been described. However, of course, the present invention may be applied to a router having a plurality of single core CPUs each having one CPU core and functioning the plurality of single core CPUs as main CPUs. Of course, the present invention may be applied to a switching hub (that is, a relay device that relays data communication in the second layer (data link layer) in the OSI reference model) instead of the router. In this case, a frame, which is a data transmission / reception unit in the data link layer, becomes a data block of a processing unit in enqueue processing and dequeue processing. Further, the present invention may be applied to an information distribution apparatus that distributes various types of information in response to a request message transmitted from a client apparatus via a communication network, instead of a relay apparatus such as a router or a switching hub.

要は、複数の通信インタフェース部と、通信インタフェース毎に設けられた送信キューと、複数の通信インタフェース部の各々に一つずつ対応付けられた複数のCPUコアと、を備えた通信装置であれば、複数のCPUコアの各々に、送信先アドレスを含むヘッダを付与されたデータブロックの送信を行う際に、その送信先に対応する通信インタフェース部を特定し、当該通信インタフェース部の送信キューに当該データブロックを書き込むとともにその書き込みが完了するまでの間、他のCPUコアによる当該送信キューへのデータブロックの書き込みを禁止する第1の処理と、自身に対応付けられた通信インタフェース部の送信キューに格納されているデータブロックを、QoSを行いつつ当該通信インタフェース部を介して送信する第2の処理と、を実行させることで、上記実施形態と同一の効果が奏される。   In short, any communication device including a plurality of communication interface units, a transmission queue provided for each communication interface, and a plurality of CPU cores associated with each of the plurality of communication interface units. When transmitting a data block to which a header including a transmission destination address is assigned to each of the plurality of CPU cores, a communication interface unit corresponding to the transmission destination is specified, and the transmission queue of the communication interface unit The first process for prohibiting the writing of the data block to the transmission queue by another CPU core and the transmission queue of the communication interface unit associated with the data block until the writing of the data block is completed. The stored data block is transmitted via the communication interface unit while performing QoS. And processing, by the execution, the same effect as the above embodiment are achieved.

(5)上記実施形態では、CPUコア110−n(n=1〜4)の各々に本発明の特徴を顕著に示す中継制御処理(送信キュー132b−nへのエンキュー処理および送信キュー132b−nからのデキュー処理)を実行させる中継制御プログラム134cが不揮発性記憶部134に予め格納されていた。しかし、中継制御プログラム134cを例えばCD−ROM(Compact Disk-Read Only Memory)などのコンピュータ読み取り可能な記録媒体に書き込んで配布しても良く、また、インターネットなどの電気通信回線経由のダウンロードにより配布しても良い。 (5) In the above embodiment, each of the CPU cores 110-n (n = 1 to 4) has a relay control process (enqueue processing to the transmission queue 132b-n and transmission queue 132b-n) that clearly shows the characteristics of the present invention. The relay control program 134c for executing the dequeuing process from the non-volatile storage unit 134 is stored in advance. However, the relay control program 134c may be distributed by writing it on a computer-readable recording medium such as a CD-ROM (Compact Disk-Read Only Memory), or by downloading via a telecommunication line such as the Internet. May be.

10…中継装置、100…制御部、110−n(n=1〜4)…CPUコア、120−n(n=1〜4)…通信I/F部、130…記憶部、132…揮発性記憶部、132a−n(n=1〜4)…受信キュー、132b−n…送信キュー、134…不揮発性記憶部、134a…送信先管理テーブル、134b…クラス分類テーブル、134c…中継制御プログラム、140…バス。   DESCRIPTION OF SYMBOLS 10 ... Relay apparatus, 100 ... Control part, 110-n (n = 1-4) ... CPU core, 120-n (n = 1-4) ... Communication I / F part, 130 ... Memory | storage part, 132 ... Volatility Storage unit, 132a-n (n = 1 to 4) ... Reception queue, 132b-n ... Transmission queue, 134 ... Non-volatile storage unit, 134a ... Destination management table, 134b ... Class classification table, 134c ... Relay control program, 140 ... Bus.

Claims (5)

複数の通信インタフェース部と、
通信インタフェース毎に設けられた送信キューと、
複数の通信インタフェース部の各々に一つずつ対応付けられた複数のCPUコアと、を備え、
複数のCPUコアの各々は、
送信先アドレスを含むヘッダを付与されたデータブロックの送信を行う際に、その送信先に対応する通信インタフェース部を特定し、当該通信インタフェース部の送信キューに当該データブロックを書き込むとともにその書き込みが完了するまでの間、他のCPUコアによる当該送信キューへのデータブロックの書き込みを禁止する第1の処理と、
自身に対応付けられた通信インタフェース部の送信キューに格納されているデータブロックを、QoSを行いつつ当該通信インタフェース部を介して送信する第2の処理と、を実行する
ことを特徴とする通信装置。
A plurality of communication interface units;
A transmission queue provided for each communication interface;
A plurality of CPU cores associated one by one with each of the plurality of communication interface units,
Each of the plurality of CPU cores
When transmitting a data block to which a header including a transmission destination address is assigned, the communication interface unit corresponding to the transmission destination is specified, the data block is written to the transmission queue of the communication interface unit, and the writing is completed In the meantime, a first process for prohibiting writing of a data block to the transmission queue by another CPU core,
And a second process of transmitting the data block stored in the transmission queue of the communication interface unit associated with itself through the communication interface unit while performing QoS. .
各CPUコアの処理負荷を計測し、処理負荷の軽いCPUコアほど、多くの通信インタフェースに対応付けられるようにCPUコアと通信インタフェース部との対応付けを変更する変更手段をさらに有することを特徴とする請求項1に記載の通信装置。   The processing load of each CPU core is measured, and the CPU core having a lighter processing load further includes a changing unit that changes the association between the CPU core and the communication interface unit so as to be associated with more communication interfaces. The communication device according to claim 1. 前記変更手段は、通信インタフェース部を介して行われる通信のトラフィックを通信インタフェース毎に計測し、処理負荷の重いCPUコアほど、トラフィックの少ない通信インタフェースに対応付けられるようにCPUコアと通信インタフェース部との対応付けを変更することを特徴とする請求項2に記載の通信装置。   The changing unit measures the traffic of communication performed via the communication interface unit for each communication interface, and the CPU core having a heavy processing load is associated with a communication interface with less traffic so that the CPU core and the communication interface unit The communication apparatus according to claim 2, wherein the association is changed. 送信先アドレスを含むヘッダを付与されたデータブロックの送信先アドレスと複数の通信インタフェース部の各々とを対応付ける情報の書き込まれたテーブルが記憶された記憶部を備え、
前記複数のCPUコアの各々は、前記複数の通信インタフェース部の何れかを介して受信したデータブロックを送信対象のデータブロックとして前記第1の処理を実行し、前記第1の処理においては、前記テーブルの格納内容を参照して送信対象のデータブロックの送信先に対応する通信インタフェース部を特定することを特徴とする請求項1〜3の何れか1項に記載の通信装置。
A storage unit storing a table in which information that associates each of a plurality of communication interface units with a destination address of a data block to which a header including a destination address is assigned is stored;
Each of the plurality of CPU cores executes the first process using a data block received via any of the plurality of communication interface units as a data block to be transmitted, and in the first process, The communication apparatus according to any one of claims 1 to 3, wherein a communication interface unit corresponding to a transmission destination of a data block to be transmitted is specified with reference to a stored content of the table.
コンピュータに、
送信先アドレスを含むヘッダを付与されたデータブロックの送信を行う際に、当該コンピュータに接続された複数の通信インタフェース部であって、各々に送信キューの設けられた複数の通信インタフェース部のうち、送信対象のデータブロックの送信先に対応する通信インタフェース部を特定し、該当する通信インタフェース部の送信キューに当該データブロックを書き込むとともにその書き込みが完了するまでの間、他のコンピュータによる当該送信キューへのデータブロックの書き込みを禁止する第1の処理と、
自身に対応付けられた通信インタフェース部の送信キューに格納されているデータブロックを、QoSを行いつつ当該通信インタフェース部を介して送出する第2の処理と、
を実行させることを特徴とするプログラム。
On the computer,
A plurality of communication interface units connected to the computer when transmitting a data block provided with a header including a transmission destination address, and a plurality of communication interface units each provided with a transmission queue, The communication interface unit corresponding to the transmission destination of the data block to be transmitted is specified, the data block is written to the transmission queue of the corresponding communication interface unit, and until the writing is completed, it is transferred to the transmission queue by another computer. A first process for prohibiting writing of the data block;
A second process of sending a data block stored in the transmission queue of the communication interface unit associated with itself via the communication interface unit while performing QoS;
A program characterized by having executed.
JP2013052939A 2013-03-15 2013-03-15 Communication device and program Pending JP2014179838A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013052939A JP2014179838A (en) 2013-03-15 2013-03-15 Communication device and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013052939A JP2014179838A (en) 2013-03-15 2013-03-15 Communication device and program

Publications (1)

Publication Number Publication Date
JP2014179838A true JP2014179838A (en) 2014-09-25

Family

ID=51699348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013052939A Pending JP2014179838A (en) 2013-03-15 2013-03-15 Communication device and program

Country Status (1)

Country Link
JP (1) JP2014179838A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106815298A (en) * 2016-12-09 2017-06-09 中电科华云信息技术有限公司 Distributed sharing file system based on block storage
WO2023145391A1 (en) * 2022-01-26 2023-08-03 株式会社オートネットワーク技術研究所 Relay device, program, and relay method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619858A (en) * 1992-07-06 1994-01-28 Fujitsu Ltd Automatic return system for common resources
JP2011024027A (en) * 2009-07-16 2011-02-03 Fujitsu Ltd Packet transmission control apparatus, hardware circuit, and program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619858A (en) * 1992-07-06 1994-01-28 Fujitsu Ltd Automatic return system for common resources
JP2011024027A (en) * 2009-07-16 2011-02-03 Fujitsu Ltd Packet transmission control apparatus, hardware circuit, and program

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106815298A (en) * 2016-12-09 2017-06-09 中电科华云信息技术有限公司 Distributed sharing file system based on block storage
WO2023145391A1 (en) * 2022-01-26 2023-08-03 株式会社オートネットワーク技術研究所 Relay device, program, and relay method

Similar Documents

Publication Publication Date Title
US9571402B2 (en) Congestion control and QoS in NoC by regulating the injection traffic
JP6290462B2 (en) Coordinated admission control for network accessible block storage
CN109076029B (en) Method and apparatus for non-uniform network input/output access acceleration
US9813529B2 (en) Effective circuits in packet-switched networks
US11025745B2 (en) Technologies for end-to-end quality of service deadline-aware I/O scheduling
US20120275304A1 (en) Hierarchical profiled scheduling and shaping
CN107846443B (en) Distributed processing in a network
CN112041826B (en) Fine-grained traffic shaping offload for network interface cards
US9336006B2 (en) High-performance parallel traffic management for multi-core platforms
US10536385B2 (en) Output rates for virtual output queses
Stephens et al. Titan: Fair Packet Scheduling for Commodity Multiqueue {NICs}
EP3461085B1 (en) Method and device for queue management
US11283723B2 (en) Technologies for managing single-producer and single consumer rings
Lin et al. {RingLeader}: efficiently Offloading {Intra-Server} Orchestration to {NICs}
US11875839B2 (en) Flow based rate limit
JP2014179838A (en) Communication device and program
CN112671832A (en) Forwarding task scheduling method and system for guaranteeing hierarchical time delay in virtual switch
CN115509644B (en) Computing power unloading method and device, electronic equipment and storage medium
CN115695578A (en) Method, system and device for scheduling TCP (transmission control protocol) and RDMA (remote direct memory Access) mixed streams of data center network
US11979476B2 (en) High performance connection scheduler
JP2019009630A (en) Network load distribution device and method
Rizzo et al. A Fast and Practical Software Packet Scheduling Architecture
US9325640B2 (en) Wireless network device buffers
Lee et al. i-NVMe: Isolated NVMe over TCP for a Containerized Environment
Li et al. Decentralized Scheduling for Data-Parallel Tasks in the Cloud

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161108

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20161209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20161209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170530

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170925

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180213