JP2014179838A - Communication device and program - Google Patents
Communication device and program Download PDFInfo
- 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
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
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
特許文献1に開示の技術のように、各送信キューへのデータブロックの書き込みおよび各送信キューからのデータブロックの読み出しを行う専用コントローラを設ける態様では、中継装置のコストが増加し、市場競争力の低下を招くといった問題がある。極端なコスト増加を抑えつつ、スループットの低下を招かないようにするには、中継装置のメインCPUとしてマルチコアCPUを用いることが考えられる。マルチコアCPUとは、複数のCPUコア(演算回路とL1キャッシュとを含む半導体集積回路)と、これら複数のCPUコアにより共有されるバスインタフェースやL2キャッシュを1つのプロセッサ・パッケージ内に封入して構成されたCPUのことを言う。このようなマルチコアCPUであれば、複数のCPUコアの各々に並列にデータブロックの中継処理(およびこれに伴うキュー制御)を行わせることでスループットの低下を回避することができ、また、メインCPUの他にキュー制御のための専用コントローラを設ける態様に比較してコストの増加を低く抑えることができるからである。
As in the technique disclosed in
しかしながら、中継装置のメイン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.
以下、図面を参照しつつ、本発明の実施形態について説明する。
図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
The
制御部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
通信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
不揮発性記憶部134は例えばフラッシュメモリやハードディスクで構成されている。不揮発性記憶部134には、送信先管理テーブル134a、クラス分類テーブル134b、および中継制御プログラム134cが予め格納されている。送信先管理テーブル134aは、所謂ルーティングテーブルであり、通信I/F部120−n(n=1〜4)の各々を示す識別子に対応付けて通信I/F部120−nから送出するべきデータパケットを示す情報(送信先アドレス、または送信先アドレスの範囲を示す情報)が予め格納されている。クラス分類テーブル134bは、通信I/F部120−nを介して受信したパケットをクラス分けするためのテーブルであり、クラス分けの指標(例えば、プロトコル種別)と分類先のクラスとの関係を示す情報が予め格納されている。
The
中継制御プログラム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
エンキュー処理は、予め定められた時間間隔で周期的に、或いは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
例えば、図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
デキュー処理も、予め定められた時間間隔で周期的に、或いは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
ここで注目すべき点は、本実施形態の中継装置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
このように、本実施形態の中継装置10では、送信キューへのエンキューを行う場合にのみ排他制御が行われる。QoSにおいて最も負荷が高い処理はデキュー時の送信レート計算だが、本実施形態では当該処理を行う際に排他制御を行う必要がないため、スループット低下を抑えることができる。加えて、本実施形態では、各通信I/F部120−nに対応づけられたCPUコア110−nのみがその通信I/F部120−nを用いたデータの送信を行うため、実際の通信レートの計算に支障が生じることもない。
As described above, in the
なお、マルチユーザ環境におけるデータベースの排他制御では、データベースへのデータの書き込みが行われている間、他者による当該データの更新を禁止する排他制御が行われることは勿論、当該データの読み出しも禁止されることが一般的である。これは、所謂ダーティリード(更新処理中のデータがコミットされる前に読み出され、その後更新処理のロールバックが発生すると、結果的に誤ったデータがユーザに提示されること)の発生を回避するためである。一般的なデータベースにおける排他制御と対比すると、本実施形態のエンキュー処理において、そのエンキュー処理にてパケットの書き込みを行っている送信キューからのデキューを禁止していない点が何らかの問題を生じさせることはないかといった疑問が生じるかも知れない。 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
以上本発明の一実施形態について説明したが、この実施形態に以下の変形を加えても勿論良い。
(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
(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
(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
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
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コアの各々は、前記複数の通信インタフェース部の何れかを介して受信したデータブロックを送信対象のデータブロックとして前記第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.
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)
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)
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 |
-
2013
- 2013-03-15 JP JP2013052939A patent/JP2014179838A/en active Pending
Patent Citations (2)
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)
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 |