JP2018117300A - Control device, control program and control method - Google Patents
Control device, control program and control method Download PDFInfo
- Publication number
- JP2018117300A JP2018117300A JP2017008076A JP2017008076A JP2018117300A JP 2018117300 A JP2018117300 A JP 2018117300A JP 2017008076 A JP2017008076 A JP 2017008076A JP 2017008076 A JP2017008076 A JP 2017008076A JP 2018117300 A JP2018117300 A JP 2018117300A
- Authority
- JP
- Japan
- Prior art keywords
- distribution
- node
- server
- destination
- relay server
- 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
Abstract
Description
本発明は制御装置、制御プログラムおよび制御方法に関する。 The present invention relates to a control device, a control program, and a control method.
複数の装置を含むシステムでは、各装置はネットワークに接続され、相互に通信する。ネットワークは、データの送信元の装置と宛先の装置との間の通信を中継する複数の中継ノードを含み得る。ネットワークでは、トラフィック量が増すと、中継ノードの負荷も増して、通信に遅延が生じ得る。また、ある中継ノードで障害が発生すると、該当の中継ノードを経由する通信を行えなくなるおそれもある。そこで、ネットワーク上のある箇所(例えば、トラフィックが比較的集中しやすい箇所)において、複数の中継ノードを冗長化し、データの転送を分散して行うことで、通信遅延の低減や通信機能の可用性向上を図ることがある。 In a system including a plurality of devices, each device is connected to a network and communicates with each other. The network may include a plurality of relay nodes that relay communication between a data transmission source device and a destination device. In the network, when the amount of traffic increases, the load on the relay node also increases and communication may be delayed. In addition, when a failure occurs in a certain relay node, there is a possibility that communication via the corresponding relay node cannot be performed. Therefore, at certain points on the network (for example, where traffic is likely to concentrate), multiple relay nodes are made redundant and data transfer is distributed to reduce communication delays and improve the availability of communication functions. May be planned.
例えば、複数のスイッチ装置を用いて、パケットの転送を分散して行うシステムが考えられている。この提案では、上位スイッチ群に属するスイッチ装置の各送信ポートを、下位スイッチ群に属する複数のスイッチ装置に接続する。上位スイッチ群に属するスイッチ装置は、パケットのヘッダから算出されたハッシュ値に応じて、パケットを送信する送信ポートを選択する。 For example, a system is considered in which packet transfer is distributed using a plurality of switch devices. In this proposal, each transmission port of a switch device belonging to the upper switch group is connected to a plurality of switch devices belonging to the lower switch group. The switch device belonging to the upper switch group selects a transmission port for transmitting a packet according to the hash value calculated from the header of the packet.
また、端末装置とサーバ装置との通信を中継する中継装置が、端末装置との通信量をサーバ装置毎に計測し、接続要求情報を端末装置から受信すると、所定の期間に計測された通信量が最も少ないサーバ装置に接続要求情報を送信する提案もある。 Further, when the relay device that relays communication between the terminal device and the server device measures the communication amount with the terminal device for each server device and receives connection request information from the terminal device, the communication amount measured in a predetermined period. There is also a proposal for transmitting the connection request information to the server device having the smallest number.
なお、第1の記憶装置群に格納されたデータを、データの種別毎に均等に、第2の記憶装置群に属する2台の記憶装置に分配するデータ分配装置の提案もある。データ分配装置は、第2の記憶装置群に属する2台の記憶装置に出力されたデータの累積個数を、当該データの種別毎に記憶するカウンタ群を備え、カウンタ群の内容に基づいて、第2の記憶装置群へ転送するデータの種別毎の偏りを判断する。 There is also a proposal for a data distribution device that distributes data stored in the first storage device group equally to two storage devices belonging to the second storage device group for each data type. The data distribution device includes a counter group for storing the cumulative number of data output to two storage devices belonging to the second storage device group for each type of the data, and based on the contents of the counter group, The bias for each type of data transferred to the second storage device group is determined.
冗長化された複数の中継ノードによりデータの転送を分散して行う場合、転送対象のデータを各中継ノードへ振り分ける制御装置を設けることが考えられる。例えば、各中継ノードの処理能力が同程度であれば、制御装置が、所定のルールに従い、各中継ノードに対して、ある程度均等にデータを振り分けることで、各中継ノードの負荷を適切に分散できる。しかし、実際の運用では、制御装置が、各中継ノードに対して常に均等にデータを振り分けられるとは限らず、データの振分先の中継ノードの選択に偏りが生じ得る。そこで、ノード選択に偏りが生じることを考慮し、偏りを補正するための仕組みが問題となる。 When data transfer is distributed by a plurality of redundant relay nodes, it is conceivable to provide a control device that distributes data to be transferred to each relay node. For example, if the processing capacity of each relay node is approximately the same, the control device can appropriately distribute the load of each relay node by distributing data to each relay node to some extent equally according to a predetermined rule. . However, in actual operation, the control device is not always able to distribute data equally to each relay node, and there may be a bias in the selection of the relay node to which data is distributed. Therefore, considering the occurrence of bias in node selection, a mechanism for correcting the bias becomes a problem.
例えば、制御装置が、振分の累積回数を中継ノード毎に記憶し、累積回数が相対的に多い中継ノードの存在を検出することで、ノード選択の偏りを検出し、偏って選択されたノード以外のノードに振分先を振り替える方法が考えられる。具体的には、制御装置は、ある中継ノードに対する振分の累積回数と他の中継ノードに対する振分の累積回数との比較を、中継ノードの組み合わせを変えながら総当たりで行うことで、累積回数が比較的多い中継ノードの存在を検出し得る。しかし、この方法では、中継ノードの数が増すと、比較に要する演算量が過大になる可能性がある。 For example, the control device stores the cumulative number of distributions for each relay node, detects the presence of a relay node with a relatively large cumulative number, detects a bias in node selection, and selects nodes that are biased A method of transferring the assignment destination to a node other than is possible. Specifically, the control device compares the cumulative number of allocations for a certain relay node with the cumulative number of allocations for another relay node by changing the combination of relay nodes, so that the cumulative number The presence of a relay node having a relatively large number can be detected. However, with this method, if the number of relay nodes increases, the amount of computation required for comparison may become excessive.
1つの側面では、本発明は、ノード選択の偏りを省演算量で補正可能にすることを目的とする。 In one aspect, an object of the present invention is to make it possible to correct a bias in node selection with a small amount of computation.
1つの態様では、データを転送する際に複数のノードの何れかを選択して転送する制御装置が提供される。制御装置は、記憶部と処理部とを有する。記憶部は、複数のノードそれぞれが選択された回数に関する複数の数値であって、第1のノードに対応する第1の数値と第2のノードに対応する第2の数値とを含む複数の数値を記憶する。処理部は、第1のデータの転送先として第1のノードを選択した場合に、第1の数値を減らし、選択されなかった第2のノードに対応する第2の数値を増やし、第2の数値が所定値以上になると、第2のデータの転送先として第2のノードを選択する。 In one aspect, a control device is provided that selects and transfers one of a plurality of nodes when transferring data. The control device includes a storage unit and a processing unit. The storage unit is a plurality of numerical values relating to the number of times each of the plurality of nodes is selected, and includes a plurality of numerical values including a first numerical value corresponding to the first node and a second numerical value corresponding to the second node. Remember. When the first node is selected as the transfer destination of the first data, the processing unit decreases the first numerical value, increases the second numerical value corresponding to the second node not selected, When the numerical value exceeds a predetermined value, the second node is selected as the transfer destination of the second data.
1つの側面では、ノード選択の偏りを省演算量で補正可能にする。 In one aspect, the bias in node selection can be corrected with a small amount of computation.
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の制御装置を示す図である。第1の実施の形態のシステムは、制御装置1、ノード2,3,4および宛先装置5,6,7を含む。制御装置1は、ノード2,3,4に接続されている。ノード2,3,4は、ネットワークN1に接続されている。宛先装置5,6,7は、ネットワークN1に接続されている。更に、制御装置1は、ネットワークN2に接続されている。ネットワークN2には、端末装置8,9も接続されている。ただし、制御装置1は、スイッチ装置(図示を省略している)を介してノード2,3,4と接続されてもよい。
Hereinafter, the present embodiment will be described with reference to the drawings.
[First Embodiment]
FIG. 1 is a diagram illustrating a control device according to the first embodiment. The system according to the first embodiment includes a
ここで、制御装置1は、データを転送する際にノード2,3,4の何れかを選択して転送する。すなわち、制御装置1は、データを転送する際に、ノード2,3,4のうちの何れかを転送先に選択し、選択した転送先のノードに当該データを転送する。
Here, the
端末装置8,9それぞれにより送信されるデータの宛先は、宛先装置5,6,7である。データは、パケットと呼ばれる単位で送信されてもよい。端末装置8,9それぞれにより送信されるデータは、宛先装置5,6,7の何れかに到着するまでに、複数の経路を通り得る。第1の経路は、制御装置1およびノード2を経由する経路である。第2の経路は、制御装置1およびノード3を経由する経路である。第3の経路は、制御装置1およびノード4を経由する経路である。ノード2,3,4の何れを経由させるかは、制御装置1によって制御される。したがって、ノード2,3,4は、制御装置1によるデータの転送先の候補である。なお、「データの転送先の候補」は「データの振分先の候補」と表されてもよい。
The destinations of the data transmitted by the
ノード2,3,4は、ネットワークN1にデータを転送する。ネットワークN1は、宛先装置5,6,7にデータを転送する。ノード2,3,4はデータの中継を行う中継ノードであるといえる。なお、ノード2,3,4それぞれによるデータの転送処理の能力は、ほぼ同じであるとする。
The
制御装置1は、記憶部1aおよび処理部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部1bはプログラムを実行するプロセッサでもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)が含まれ得る。
The
記憶部1aは、ノード2,3,4それぞれが選択された回数に関する複数の数値を記憶する。複数の数値は、ノード2に対応する数値と、ノード3に対応する数値と、ノード4に対応する数値とを含む。
The storage unit 1a stores a plurality of numerical values related to the number of times each of the
例えば、ノード2の識別情報(ノード#)を“1”とする。ノード3の識別情報を“2”とする。ノード4の識別情報を“3”とする。記憶部1aは、ノードの識別情報(ノード#)と、カウンタとを対応付けたテーブルT1を記憶する。例えば、あるタイミングにおいて、テーブルT1には、ノード#“1”、カウンタ“−1”のレコードが登録されている。カウンタの項目に登録された数値は、処理部1bにより該当のノードがデータ転送先として選択された回数に関する数値である(具体的なカウント方法は後述される)。同様に、テーブルT1には、ノード#“2”、カウンタ“−2”のレコードが登録されている。更に、テーブルT1には、ノード#“3”、カウンタ“3”のレコードが登録されている。なお、ノード2,3,4それぞれのカウンタの数値の初期値は、例えば“0”である。
For example, the identification information (node #) of
処理部1bは、所定のルールに従って、転送対象のデータを、ノード2,3,4の何れに振り分けるか(何れに転送するか)を判断する。処理部1bが利用する所定のルールとしては、次の例が考えられる。
The
第1の例として、データの宛先毎に、ノード2,3,4に対して、データを等確率で振り分けるルール(例えば、ラウンドロビンや乱数などを用いて転送先を決定するルール)が考えられる。データの宛先毎にラウンドロビンを行う場合、処理部1bは、宛先装置5を宛先とするデータを、ノード2,3,4に順番に振り分ける(ノード4の次をノード2とする)。また、処理部1bは、宛先装置6を宛先とするデータを、ノード2,3,4に順番に振り分ける(ノード4の次をノード2とする)。更に、処理部1bは、宛先装置7を宛先とするデータを、ノード2,3,4に順番に振り分ける(ノード4の次をノード2とする)。これにより、宛先単位に、端末装置8,9からのアクセスを冗長化された各パスへ分散させることができる。
As a first example, a rule for distributing data to
第2の例として、パケットに含まれるヘッダの情報により識別されるフローに応じて、データの転送先を選択するルールが考えられる。より具体的には、処理部1bは、IP(Internet Protocol)パケットに含まれる5タプル(プロトコル番号、送信元/宛先IPアドレスおよび送信元/宛先ポート番号)からフローを識別し、5タプルにより計算されるハッシュ値に応じて転送先を選択してもよい。これにより、フロー単位に、端末装置8,9からのアクセスを冗長化された各パスへ分散させることができる。
As a second example, a rule for selecting a data transfer destination according to a flow identified by information of a header included in a packet can be considered. More specifically, the
処理部1bは、第1のデータに対し、上記の所定のルールに従って、第1のノードを転送先として選択する。すると、処理部1bは、第1のノードに対応するカウンタの数値(第1の数値)を減らし、選択されなかった第2のノードに対応するカウンタの数値(第2の数値)を増やす。減らす量、および、増やす量は、任意に決定できる。第1の実施の形態の例では、増減量の合計が“0”になるように、減らす量を“−2”、増やす量を“1”とする。
The
例えば、処理部1bは、第1のデータに対して、ノード2を転送先として選択したとする。この場合、処理部1bは、テーブルT1のノード#“1”のカウンタの数値を“2”だけ減らす。一方、処理部1bは、テーブルT1におけるノード#“2”のカウンタの数値、および、ノード#“3”のカウンタの数値を、それぞれ“1”だけ増やす。
For example, it is assumed that the
より具体的には、処理部1bは、テーブルT1において、ノード#“1”に対して登録されている数値“−1”を、−1−2=−3に更新する。処理部1bは、テーブルT1において、ノード#“2”に対して登録されている数値“−2”を、−2+1=−1に更新する。処理部1bは、テーブルT1において、ノード#“3”に対して登録されている数値“3”を、3+1=4に更新する。テーブルT1aは、これらの更新の結果が反映された後を示している。処理部1bは、ノード2,3,4それぞれに対して、データの転送先として選択されなかった回数をカウントしているということもできる。
More specifically, the
そして、処理部1bは、第2の数値が所定値以上になると、第2のデータの転送先として、所定値以上となった当該第2の数値と対応付けられた第2のノードを選択する。例えば、記憶部1aは、所定値として、カウンタの閾値=4を予め記憶する。テーブルT1aの例では、ノード4(ノード#“3”)に対応するカウンタの数値が“4”である。したがって、処理部1bは、ノード4に対応する数値“4”が所定値“4”以上になったことを検出する。このため、処理部1bは、第2のデータの転送先として、前述の所定のルールによらずに、ノード4を選択する。処理部1bは、選択したノード4に、第2のデータを転送する。
Then, when the second numerical value is equal to or greater than the predetermined value, the
なお、処理部1bは、ノード4を選択すると、テーブルT1aを更新する。具体的には、処理部1bは、ノード#“1”のカウンタの数値を−3+1=−2に更新する。また、処理部1bは、ノード#“2”のカウンタの数値を−1+1=0に更新する。更に、処理部1bは、ノード#“3”のカウンタの数値を4−2=2に更新する。ただし、図1では、当該更新後のテーブルの図示を省略している。
When the
ところで、例えば、処理部1bが、宛先毎にラウンドロビンで負荷分散を行う場合、複数のデータの各宛先に対してラウンドロビンにより選択される転送先が同期すると、特定のノードへのトラフィックが、バースト的に増大することがある。この場合、該当のノードに対するデータの転送待ちが発生し、最悪の場合、バッファあふれによりデータが廃棄され得る。
By the way, for example, when the
また、処理部1bが、フロー毎に一意となるように、転送先のノードを選択する場合でも、複数のフローの転送先が特定のノードに集中すると、特定のノードへのトラフィックがバースト的に増大し、同様の問題が生じ得る。
Further, even when the
そこで、ノード選択に偏りが発生することを考慮し、偏りを補正するための仕組みが問題となる。
例えば、複数のノードへデータの振分を行う装置が、選択された累積回数をノード毎に記憶し、累積回数が相対的に多いノードの存在を検出することで、ノード選択の偏りを検出し、偏りのあるノード以外のノードに振分先を振り替える方法も考えられる。具体的には、振分を行う装置が、ある中継ノードに対する振分の累積回数と他の中継ノードに対する振分の累積回数との比較を、中継ノードの組み合わせを変えながら総当たりで行うことで、累積回数が比較的多い中継ノードの存在を検出し得る。しかし、この方法では、ノードの数が増すと、比較に要する演算量が過大になる可能性がある。
Therefore, considering the occurrence of bias in node selection, a mechanism for correcting the bias becomes a problem.
For example, a device that distributes data to a plurality of nodes stores the selected cumulative number for each node, and detects the bias of node selection by detecting the presence of a node with a relatively large cumulative number. A method of transferring the distribution destination to a node other than the biased node is also conceivable. Specifically, the allocation device performs a brute force comparison of the cumulative number of allocations for a certain relay node and the cumulative number of allocations for other relay nodes while changing the combination of relay nodes. The presence of a relay node having a relatively large cumulative number can be detected. However, with this method, if the number of nodes increases, the amount of computation required for comparison may become excessive.
より具体的には、1つの比較例として、2つのノードの組み合わせについて総当たりで比較を行い、選択の累積回数の最小値と、偏りの度合いを表す指標(例えば、2つの累積回数の差の平均値または最大値など)とを計算することを考える。例えば、偏りの度合いを表す指標が所定の閾値を超過した場合に、ノード選択に偏りが発生していると判断し得る。しかし、この方法では、転送先候補のノード数の増加に応じて、計算量は線形増加する。しかも、累積回数の差を表す指標により偏りが発生していることを検出する演算と、転送先のノードを選択するための演算(例えば、選択した累積回数が最小値であるノードを選択するなど)とを別個に行うことになる。このため、比較例の方法では、データの転送先の選択処理を十分に高速化できない。 More specifically, as one comparative example, a combination of two nodes is compared brute force, and the minimum value of the cumulative number of selections and an index indicating the degree of bias (for example, the difference between the two cumulative times) And calculating the average value or the maximum value). For example, when an index indicating the degree of bias exceeds a predetermined threshold, it can be determined that bias has occurred in node selection. However, in this method, the amount of calculation increases linearly as the number of transfer destination candidate nodes increases. In addition, an operation for detecting the occurrence of bias by an index representing the difference in the number of times of accumulation, and an operation for selecting a transfer destination node (for example, selecting a node having the selected accumulation number having the minimum value). ) Will be performed separately. For this reason, the method of the comparative example cannot sufficiently speed up the data transfer destination selection process.
一方、制御装置1では、データの転送先として選択されたノードのカウンタをカウントダウンし、選択されなかったノードのカウンタをカウントアップする。このため、制御装置1は、当該カウンタに基づいて、転送先として選択された回数が相対的に少ないノードを効率的に特定できる。図1の例において、制御装置1は、ノード4のカウンタの値が、所定の閾値以上になったことを検出することで、ノード選択に偏りが発生していると判断できる。なぜなら、ノード4が選択されなかった回数が相対的に多いということは、別のノード(例えば、ノード2,3の両方あるいは何れか一方)が選択された回数が相対的に多いと推定されるからである。更に、選択されなかった回数が相対的に多いノードは、振り分けられたデータ量も比較的少ないため、リソース(データの転送に用いられるリソースを含む)にも比較的余裕があると考えられる。したがって、制御装置1は、ノード2,3,4に、ある程度均等にデータを振り分けようとする場合、ノード4を優先的に選択した方がよいと判断できる。
On the other hand, the
このように、制御装置1は、ノード選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべきノードの両方をテーブルT1aのカウンタの値によって効率的に判定できる。特に、前述の比較例のように、ノード間での選択の累積回数の比較を総当たりで行って偏りを検出する方法よりも、演算量を少なくすることができる。
In this way, the
こうして、制御装置1によれば、ノード選択の偏りを省演算量で補正可能になる。その結果、制御装置1のデータの転送先の選択に伴う演算を高速化でき、端末装置8,9と宛先装置5,6,7との間の通信の遅延の低減に寄与する。
Thus, according to the
以下では、より具体的な情報処理システムを例示し、制御装置1の機能を更に詳細に説明する。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、振分サーバ100,100a,100b、中継サーバ200,200a,200b、業務サーバ300,300a,300b,・・・,300mおよびスイッチ(SW:SWitch)400を含む。
Below, a more specific information processing system is illustrated and the function of the
[Second Embodiment]
FIG. 2 is a diagram illustrating an example of an information processing system according to the second embodiment. The information processing system according to the second embodiment includes
振分サーバ100,100a,100bおよび中継サーバ200,200a,200bはSW400に接続されている。中継サーバ200,200a,200bおよび業務サーバ300,300a,300b,・・・,300mは、ネットワーク10に接続されている。
The
また、振分サーバ100,100a,100bは、ネットワーク20に接続されている。更に、ネットワーク20には、クライアント500,500a,500b,・・・,500nが接続されている。ネットワーク10,20は、例えば、LAN(Local Area Network)である。ただし、ネットワーク10,20は、WAN(Wide Area Network)でもよい。
The
第2の実施の形態の情報処理システムは、クライアント500,500a,500b,・・・,500nそれぞれによる業務サーバ300,300a,300b,・・・,300mへのアクセスを中継し、クライアントとWebサーバとの間の通信を実現する。
The information processing system according to the second embodiment relays access to the
ここで、第2の実施の形態の情報処理システムでは、OSI(Open Systems Interconnection)参照モデルのレイヤ2における通信プロトコルとして、イーサネット(登録商標)が用いられる。また、同レイヤ3における通信プロトコルとして、IP(Internet Protocol)が用いられる。更に、同レイヤ4における通信プロトコルとして、UDP(User Datagram Protocol)またはTCP(Transmission Control Protocol)が用いられる。
Here, in the information processing system according to the second embodiment, Ethernet (registered trademark) is used as a communication protocol in
振分サーバ100,100a,100bは、クライアント500,500a,500b,・・・,500nにより送信されたパケットを受け付け、中継サーバ200,200a,200bに振り分けるサーバコンピュータである。振分サーバ100,100a,100bは、振分先の中継サーバ200,200a,200bのMAC(Media Access Control)アドレスを指定することで、各中継サーバにパケットを振り分ける。ここで、振分サーバ100,100a,100bによるパケットの「振分先」は、振分サーバ100,100a,100bによるパケットの「転送先」に相当する。振分サーバ100,100a,100bは、第1の実施の形態の制御装置1の一例である。
The
中継サーバ200,200a,200bは、振分サーバ100,100a,100bにより振り分けられたパケットを受け付け、ネットワーク10に転送するサーバコンピュータである。中継サーバ200,200a,200bのパケットの転送処理の能力はほぼ同じである。中継サーバ200,200a,200bから宛先の業務サーバ(業務サーバ300,300a,300b,・・・,300mの何れか)へのルーティングは、IPなどを用いて行われる。例えば、中継サーバ200,200a,200bは、各々が保持するルーティングテーブルに従ってネットワーク10に属するネクストホップにパケットを転送する。中継サーバ200,200a,200bは、1つの仮想的なルータ(仮想ルータ)を形成しているということもできる。中継サーバ200,200a,200bは、第1の実施の形態のノード2,3,4の一例である。
The
第2の実施の形態の情報処理システムでは、各クライアントからのアクセスを受け付けるエッジに振分サーバ100,100a,100bを設けている。そして、振分サーバ100,100a,100bによる負荷分散によって、パケットの宛先IPアドレス毎にECMP(Equal Cost Multi Path)ルーティングの実現を図る。ECMPルーティングは、送信元装置と宛先装置との間に複数のパスを設け、各パスを均等に用いて、パケットを転送する手法である。
In the information processing system according to the second embodiment,
業務サーバ300,300a,300b,・・・,300mは、所定の業務サービスをクライアント500,500a,500b,・・・,500nに提供するサーバコンピュータである。業務サービスは、例えば、DNS(Domain Name System)による名前解決サービスである。DNSはUDPを用いる。ただし、業務サービスは、例えばTCPを用いるWebサービスなどでもよい。業務サーバ300,300a,300b,・・・,300mは、第1の実施の形態の宛先装置5,6,7の一例である。
The
SW400は、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの接続を集約するスイッチ装置である。
クライアント500,500a,500b,・・・,500nは、ユーザにより利用されるクライアントコンピュータである。クライアント500,500a,500b,・・・,500nは、第1の実施の形態の端末装置8,9の一例である。
The
The
ここで、ネットワーク機能をサーバコンピュータ上のソフトウェアによって実現するNFV(Network Functions Virtualization)技術が知られている。例えば、NFV技術を利用することで、低コスト化や運用に応じた柔軟な導入を可能とするなどのメリットがある。また、このようなサーバを複数設け(例えば、中継サーバ200,200a,200b)、データ転送処理を分散して実行することで、データ転送の処理性能を向上させることができる。このとき、中継サーバ200,200a,200bにデータを振り分ける振分サーバも複数設けることで(例えば、振分サーバ100,100a,100b)、データ振分の処理性能を向上させることができる。
Here, NFV (Network Functions Virtualization) technology for realizing a network function by software on a server computer is known. For example, by using the NFV technology, there are merits such as cost reduction and flexible introduction according to operation. Further, by providing a plurality of such servers (for example,
第2の実施の形態の例では、振分サーバ100,100a,100bは、パケットの宛先IPアドレス毎に、ラウンドロビンにより、パケットの振分先(転送先)の中継サーバを選択する。ただし、この手法では、あるタイミングにおいて、複数の宛先IPアドレスのパケットに対して同じ中継サーバが振分先として選択され、特定の中継サーバにトラフィックが集中する可能性がある。このようなトラフィックの集中は、通信の遅延の要因になる。そこで、振分サーバ100,100a,100bは、トラフィックの集中を抑えるため、振分先として選択される中継サーバの偏りを抑える機能を提供する。
In the example of the second embodiment, the
図3は、第2の実施の形態の振分サーバのハードウェア例を示す図である。振分サーバ100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。各ハードウェアは振分サーバ100のバスに接続されている。
FIG. 3 illustrates a hardware example of the distribution server according to the second embodiment. The
プロセッサ101は、振分サーバ100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
The
RAM102は、振分サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
The
HDD103は、振分サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。振分サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
The
画像信号処理部104は、プロセッサ101からの命令に従って、振分サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11として、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
The image
入力信号処理部105は、振分サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
The input
媒体リーダ106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
The
通信インタフェース107は、ネットワーク10を介して他の装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
The
振分サーバ100a,100b、中継サーバ200,200a,200b、業務サーバ300,300a,300b,・・・,300mおよびクライアント500,500a,500b,・・・,500nも、振分サーバ100と同様のハードウェアを用いて実現できる。
The
図4は、第2の実施の形態の振分サーバの機能例を示す図である。振分サーバ100は、記憶部110、識別部120、偏り判定部130および振分決定部140を有する。例えば、記憶部110は、RAM102またはHDD103に確保された記憶領域を用いて実現される。例えば、プロセッサ101は、RAM102に記憶されたプログラムを実行することで、識別部120、偏り判定部130および振分決定部140の機能を発揮する。
FIG. 4 is a diagram illustrating a function example of the distribution server according to the second embodiment. The
記憶部110は、パケットの転送制御に用いられる制御情報を記憶する。制御情報は、ラウンドロビンによる宛先毎の振分先を管理するためのラウンドロビンテーブルと、中継サーバが振分先として選択された回数に関するカウンタとを含む。カウンタは、中継サーバ200,200a,200bそれぞれに対して設けられる。カウンタは、振分先として選択されなかった回数のカウントに用いられる。
The
識別部120は、クライアント500,500a,500b,・・・,500nにより送信されたパケットを受け付け、パケットのヘッダ情報を参照して、パケットの宛先(宛先IPアドレス)を識別する。
The
偏り判定部130は、記憶部110に記憶された中継サーバ毎のカウンタを参照して、振分先の選択に偏りがあるか否かを判定する。具体的には、偏り判定部130は、中継サーバ毎のカウンタの値と、所定の偏り閾値とを比較する。そして、偏り判定部130は、少なくとも1つ中継サーバに対応するカウンタの値が、偏り閾値以上である場合に、振分先の選択に偏りがあると判定する。偏り判定部130は、全ての中継サーバに対応するカウンタの値が偏り閾値未満である場合に、振分先の選択に偏りがないと判定する。
The
振分決定部140は、偏り判定部130により偏りがないと判定された場合、記憶部110に記憶されたラウンドロビンテーブルに基づいて、識別部120により識別された宛先IPアドレスに対する振分先を決定する。振分決定部140は、決定した振分先の中継ノードにパケットを転送する。
The
一方、振分決定部140は、偏り判定部130により偏りがあると判定された場合、記憶部110に記憶されたカウンタの値に基づいて、パケットの振分先を決定する。振分決定部140は、決定した振分先の中継ノードにパケットを転送する。
On the other hand, when the
図5は、第2の実施の形態のパケットの例を示す図である。パケットP1は、ペイロードf1、TCP/UDPヘッダf2、IPヘッダf3およびMACヘッダf4を含む。ペイロードf1には、送信対象のデータの本体が登録される。TCP/UDPヘッダf2には、TCPやUDPのヘッダ情報が登録される。IPヘッダf3には、IPのヘッダ情報が登録される。IPヘッダf3には、宛先IPアドレス(D−IP:Destination - IP address)が含まれる。MACヘッダf4には、イーサネットのヘッダ情報が登録される。MACヘッダf4には、宛先MACアドレス(D−MAC:Destination - MAC address)が含まれる。 FIG. 5 is a diagram illustrating an example of a packet according to the second embodiment. The packet P1 includes a payload f1, a TCP / UDP header f2, an IP header f3, and a MAC header f4. The main body of data to be transmitted is registered in the payload f1. TCP or UDP header information is registered in the TCP / UDP header f2. IP header information is registered in the IP header f3. The IP header f3 includes a destination IP address (D-IP: Destination-IP address). Ethernet header information is registered in the MAC header f4. The MAC header f4 includes a destination MAC address (D-MAC: Destination-MAC address).
例えば、振分決定部140は、パケットP1に含まれる宛先MACアドレスを、振分先の中継サーバのMACアドレスに書き換えることで、SW400に対してパケットP1の振分先の中継サーバを指定する。SW400は、振分サーバ100からパケットP1を受信すると、該当の宛先MACアドレスに対応するポート(指定された中継サーバが接続されているポートに相当)からパケットP1を送出する。
For example, the
なお、ペイロードf1、TCP/UDPヘッダf2およびIPヘッダf3を含み、MACヘッダf4を含まない、レイヤ3のPDU(Protocol Data Unit)は、「IPパケット」と呼ばれることもある。この場合、MACヘッダf4を含むレイヤ2のPDUは、「フレーム」と呼ばれることもある(パケットP1は「フレーム」と呼ばれてもよい)。
A
図6は、第2の実施の形態のラウンドロビンテーブルの例を示す図である。ラウンドロビンテーブル111は、記憶部110に格納される。ラウンドロビンテーブル111は、宛先#およびSvr(Server)#の項目を含む。
FIG. 6 is a diagram illustrating an example of a round robin table according to the second embodiment. The round robin table 111 is stored in the
宛先#の項目には、業務サーバの識別情報が登録される。Svr#の項目には、今回振分先として選択された中継サーバの識別情報が登録される。
業務サーバの識別情報は、業務サーバのIPアドレスに対応付けられる。ラウンドロビンテーブル111の例では、業務サーバの識別情報として、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”が示されている。
In the destination # item, business server identification information is registered. In the item of Svr #, the identification information of the relay server selected as the current distribution destination is registered.
The identification information of the business server is associated with the IP address of the business server. In the example of the round robin table 111, “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H” are indicated as the identification information of the business server. Yes.
また、中継サーバ200の識別情報は“1”である。中継サーバ200を指す場合に、“Svr1”と表記することがある。中継サーバ200aの識別情報は“2”である。中継サーバ200aを指す場合に、“Svr2”と表記することがある。中継サーバ200bの識別情報は“3”である。中継サーバ200bを指す場合に、“Svr3”と表記することがある。
The identification information of the
ここで、ラウンドロビンテーブル111では、ラウンドロビンのルールにより、中継サーバ200,200a,200bが順番に選択されることが分かり易いよう、宛先#毎に、Svr#を“1 −> 2 −> 3”と表記している。その上で、今回選択された中継サーバの識別情報を点線の丸印で囲うことで、Svr#の項目の設定値を表している。なお、Svr#“3”の次は、Svr#“1”に戻る。
Here, in the round robin table 111, Svr # is set to “1 → 2 → 3” for each destination # so that it is easy to understand that the
例えば、ラウンドロビンテーブル111には、宛先#が“A”、Svr#が“1”というレコードが登録されている。このレコードは、宛先Aのパケットに対し、最新の振分先として、中継サーバ200が選択されたことを示す。これは、宛先Aのパケットに対して、次回の振分先を、中継サーバ200aとすることを示す。
For example, in the round robin table 111, a record in which the destination # is “A” and the Svr # is “1” is registered. This record indicates that the
また、例えば、ラウンドロビンテーブル111には、宛先#が“B”、Svr#が“2”というレコードが登録されている。このレコードは、宛先Bのパケットに対し、最新の振分先として、中継サーバ200aが選択されたことを示す。これは、宛先Bのパケットに対して、次回の振分先を、中継サーバ200bとすることを示す。
Further, for example, in the round robin table 111, a record in which the destination # is “B” and the Svr # is “2” is registered. This record indicates that the
また、例えば、ラウンドロビンテーブル111には、宛先#が“C”、Svr#が“3”というレコードが登録されている。このレコードは、宛先Cのパケットに対し、最新の振分先として、中継サーバ200bが選択されたことを示す。これは、宛先Cのパケットに対して、次回の振分先を、中継サーバ200とすることを示す。
Further, for example, in the round robin table 111, a record in which the destination # is “C” and the Svr # is “3” is registered. This record indicates that the
更に、ラウンドロビンテーブル111には、他の宛先#に対しても同様に、振分先の最新の選択結果を示すレコードが登録されている。
図7は、第2の実施の形態のアンセレクトカウンタの例を示す図である。アンセレクトカウンタ(USC:UnSelectCounter)112は、記憶部110に格納される。USC112は、Svr1、Svr2およびSvr3の項目を含む。
Further, in the round robin table 111, a record indicating the latest selection result of the distribution destination is similarly registered for other destinations #.
FIG. 7 is a diagram illustrating an example of an unselect counter according to the second embodiment. An unselect counter (USC: UnSelectCounter) 112 is stored in the
Svr1の項目には、中継サーバ200に対応するカウント値が登録される。Svr2の項目には、中継サーバ200aに対応するカウント値が登録される。Svr3の項目には、中継サーバ200bに対応するカウント値が登録される。
In the item of Svr1, a count value corresponding to the
例えば、USC112には、Svr1に対して“−1”、Svr2に対して“−1”、Svr3に対して“2”という数値が登録されている。これは、あるタイミングにおける中継サーバ200に対応するカウント値が“−1”であり、中継サーバ200aに対応するカウント値が“−1”であり、中継サーバ200bに対応するカウント値が“2”であることを示す。
For example, in the
図8は、第2の実施の形態のUSC更新ルールの例を示す図である。USC更新ルール113は、記憶部110に予め格納される。USC更新ルール113は、区分および加算値の項目を含む。
FIG. 8 is a diagram illustrating an example of the USC update rule according to the second embodiment. The
区分の項目には、振分先として選択されたこと(“選択”と表記する)、または、選択されなかったこと(“非選択”と表記する)を示す区分が登録される。加算値の項目には、区分に応じたUSC112の加算値が登録される。
In the category item, a category indicating that it has been selected as a distribution destination (denoted as “selected”) or not selected (denoted as “non-selected”) is registered. In the addition value item, an addition value of
例えば、USC更新ルール113には、区分が“非選択”、加算値が“+1”というレコードが登録されている。このレコードは、振分先として選択されなかった場合に、USC112における該当の中継サーバのカウント値に、加算値“+1”を加算することを示す。
For example, in the
また、例えば、USC更新ルール113には、区分が“選択”、加算値が“−(X−1)”というレコードが登録されている。このレコードは、振分先として選択された場合に、USC112における該当の中継サーバのカウント値に、加算値“−(X−1)”を加算することを示す。これは、「当該カウント値から“(X−1)”を減算する」ことに相当する。ここで、Xは、パケットの振分先の候補となる中継サーバの数である。第2の実施の形態の例では、X=3である。
Further, for example, in the
例えば、USC112において、Svr1、Svr2およびSvr3の各カウント値が何れも“0”であるときに、振分決定部140が中継サーバ200に、あるパケットを振り分けた場合を考える。この場合、中継サーバ200は、振分先として選択されたことになる(中継サーバ200は“選択”に区分される)。一方、中継サーバ200a,200bが振分先として選択されなかったことになる(中継サーバ200a,200bは“非選択”に区分される)。
For example, in the
このため、振分決定部140は、USC更新ルール113に従って、USC112におけるSvr1のカウント値から“3−1=2”を減算する。同様に、振分決定部140は、USC112におけるSvr2のカウント値に“+1”を加算する。同様に、振分決定部140は、USC112におけるSvr3のカウント値に“+1”を加算する。
Therefore, the
ただし、USC更新ルール113で例示した加算値および減算値は一例であり、上記以外の値としてもよい。
次に、振分サーバ100,100a,100bの処理手順を説明する。以下では、主に振分サーバ100の手順を説明するが、振分サーバ100a,100bも同様の手順を実行する。
However, the addition value and the subtraction value exemplified in the
Next, the processing procedure of the
図9は、第2の実施の形態のパケット転送例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(S11)識別部120は、何れかのクライアントにより送信されたパケットP1を受信する。識別部120は、パケットP1のIPヘッダf3を参照して、パケットP1の宛先IPアドレスに対応する業務サーバの識別情報を特定する。
FIG. 9 is a flowchart illustrating an example of packet transfer according to the second embodiment. In the following, the process illustrated in FIG. 9 will be described in order of step number.
(S11) The
(S12)偏り判定部130は、記憶部110に記憶されたUSC112を参照して、USC112のカウント値が、偏り閾値以上の中継サーバがあるか否かを判定する。USC112のカウント値が、偏り閾値以上の中継サーバがある場合、偏り判定部130は、ステップS13に処理を進める。USC112のカウント値が、偏り閾値以上の中継サーバがない場合、偏り判定部130は、ステップS14に処理を進める。
(S12) The
(S13)振分決定部140は、ステップS12でUSC112のカウント値が偏り閾値以上であると判定された中継サーバを振分先に決定する。そして、振分決定部140は、ステップS15に処理を進める。
(S13) The
(S14)振分決定部140は、記憶部110に記憶されたラウンドロビンテーブル111を参照して、ステップS11で特定された業務サーバの識別情報に対して、振分先の中継サーバを決定する。
(S14) The
(S15)振分決定部140は、USC112を更新する。具体的には、振分決定部140は、記憶部110に記憶されたUSC更新ルール113に従って、USC112における各中継サーバのカウント値を更新する。第2の実施の形態の例では、振分決定部140は、今回振分先として選択された中継サーバのカウント値を“2”減らし、今回振分先として選択されなかった中継サーバのカウント値を“1”増やす。
(S15) The
(S16)振分決定部140は、ラウンドロビンテーブル111を更新する。具体的には、振分決定部140は、ステップS11で特定された業務サーバの識別情報に対して、今回選択した振分先の中継サーバの識別情報を、ラウンドロビンテーブル111に登録する。
(S16) The
(S17)振分決定部140は、ステップS13またはステップS14により振分先として決定した中継サーバに、受信したパケットP1を転送する。
図10は、第2の実施の形態の転送先振替の具体例を示す図である。一例として、宛先#がそれぞれ“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”である複数のパケットが、この順番で振分サーバ100に到着したとする。
(S17) The
FIG. 10 is a diagram illustrating a specific example of transfer destination transfer according to the second embodiment. As an example, a plurality of packets with destination numbers “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H” are sorted in this order. Assume that the
なお、宛先#が“A”であるパケットが到着する前のUSC112の各中継サーバのカウント値は、全て“0”であるとする。また、図10のUSC112は、振分サーバ100により各パケットが転送されるたびに更新される(上側から下側へ向かう方向が更新によりカウント値が推移する方向である)。更に、一例として偏り閾値は“4”であるとする。
It is assumed that the count values of the relay servers of the
まず、振分サーバ100は、宛先#“A”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“A”のパケットを、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0+1=1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“0+1=1”に更新する。
First, the
次に、振分サーバ100は、宛先#“B”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“B”のパケットを、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“1−2=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“1+1=2”に更新する。
Next, the
次に、振分サーバ100は、宛先#“C”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“C”のパケットを、中継サーバ200b(Svr3)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“2−2=0”に更新する。
Next, the
次に、振分サーバ100は、宛先#“D”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“D”のパケットを、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0+1=1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“0+1=1”に更新する。
Next, the
次に、振分サーバ100は、宛先#“E”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“E”のパケットを、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“1−2=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“1+1=2”に更新する。
Next, the
次に、振分サーバ100は、宛先#“F”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“F”のパケットを、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−1−2=−3”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“2+1=3”に更新する。
Next, the
次に、振分サーバ100は、宛先#“G”のパケットを受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、ラウンドロビンテーブル111を参照して、宛先#“G”のパケットを、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−3+1=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“3+1=4”に更新する。
Next, the
次に、振分サーバ100は、宛先#“H”のパケットを受信する。振分サーバ100は、USC112を参照して、中継サーバ200bのカウント値“4”が、偏り閾値“4”に等しいことを検出する。このため、振分サーバ100は、ラウンドロビンテーブル111を用いずに、宛先#“H”のパケットを、中継サーバ200b(Svr3)に振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“4−2=2”に更新する。
Next,
ここで、宛先#“H”の今回のパケットについて、ラウンドロビンテーブル111による振分先が、中継サーバ200(“Svr1”)であるとする。そうすると、振分サーバ100は、宛先#“H”のパケットの振分先を、ラウンドロビンテーブル111を基に決められる中継サーバ200から、USC112を基に決められる中継サーバ200bに振り替えたことになる。
Here, it is assumed that the distribution destination by the round robin table 111 is the relay server 200 (“Svr1”) for the current packet of the destination # “H”. As a result, the
このように、振分サーバ100は、パケットの転送先として選択された中継サーバのUSC112のカウント値をカウントダウンし、選択されなかった中継サーバのUSC112のカウント値をカウントアップする。このため、振分サーバ100は、USC112に基づいて、転送先として選択された回数が相対的に少ないノードを効率的に特定できる。振分サーバ100は、中継サーバ200bのカウント値が、偏り閾値以上になったことを検出することで、パケットの転送先の選択に偏りが発生していると判断できる。なぜなら、中継サーバ200bが選択されなかった回数が相対的に多いということは、中継サーバ200,200aの両方あるいは何れか一方が選択された回数が相対的に多いと推定されるからである。更に、選択されなかった回数が相対的に多い中継サーバ200bは、振り分けられたトラフィック量も中継サーバ200,200aに比べて少ないと考えられる。このため、SW400の中継サーバ200bと接続するインタフェースのリソース(例えば、転送待ちパケットを格納するバッファ)や、中継サーバ200bのリソースにも比較的余裕があると考えられる。したがって、振分サーバ100は、中継サーバ200,200a,200bに、ある程度均等にデータを振り分けようとする場合、中継サーバ200bを優先的に選択した方がよいと判断できる。
In this way, the
このように、振分サーバ100は、中継サーバの選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべき中継サーバの両方をUSC112によって効率的に判定できる。こうして、中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100のデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと、業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。
As described above, the
図11は、第2の実施の形態に対する比較例(その1)を示す図である。図11では、振分サーバ600,600a,600bおよび中継サーバ700,700a,・・・,700mが、SW400に接続された例を示している。ただし、図11中、「中継サーバ」については、中継サーバ700,700a,・・・,700mそれぞれの識別情報“Svr1”,“Svr2”,・・・,“Svr10”を表記している(以下でも、同様に表記することがある)。
FIG. 11 is a diagram illustrating a comparative example (part 1) with respect to the second embodiment. FIG. 11 shows an example in which
振分サーバ600,600a,600bは、それぞれラウンドロビンテーブル601,601a,601bを用いて、パケットの振分先を決定するが、USC112に相当する情報を保持しない点が、振分サーバ100,100a,100bと異なる。
The
例えば、振分サーバ600が、ラウンドロビンテーブル601を用いて、パケットの振分先を決定するとき、宛先毎の振分先が同期することがある。図11の例では、各宛先に対するパケットの振分先が中継サーバ700(Svr1)に偏っている。このように、振分サーバ600単体の動作において、特定の中継サーバ700にトラフィックを集中させてしまうことがある。
For example, when the
更に、振分サーバ600,600a,600bそれぞれによる振分先が同期することもある。図11の例では、振分サーバ600a,600bによる各宛先に対するパケットの振分先も中継サーバ700(Svr1)に偏っている。このように、バースト的に中継サーバ700にトラフィックが集中することがある。
Furthermore, the distribution destinations by the
この場合、SW400が備える通信インタフェースのうち、中継サーバ700と通信する通信インタフェースの負荷が特に過大になる。すると、当該通信インタフェースが備えるバッファを用いた転送待ち合わせによる遅延が増大したり、バッファあふれによるパケット廃棄が発生したりする。
In this case, among the communication interfaces provided in the
これに対して、宛先毎にラウンドロビンを行わない方法も考えられる。例えば、宛先に拘わらず、パケットの到着順にラウンドロビンで、当該パケットを振り分けることも考えられる。 On the other hand, a method in which round robin is not performed for each destination can be considered. For example, regardless of the destination, it is also possible to distribute the packets in round robin order in the arrival order of the packets.
図12は、第2の実施の形態に対する比較例(その2)を示す図である。振分サーバ610,610a,610bそれぞれは、パケットの宛先を区別せずに、パケットの到着順で、パケットの振分先をラウンドロビンにより決定する点が、振分サーバ600,600a,600bと異なる。この場合、振分サーバ610,610a,610bの次段の中継サーバ700,700a,700b,・・・,700mに対するバースト的なトラフィック集中は改善される。一方、宛先毎のECMPを行えなくなるため、仮想ルータ(中継サーバの集合)によるホップを複数段重ねると、特定の宛先のパケットが、特定の中継サーバを経由するルートに偏る可能性がある。
FIG. 12 is a diagram illustrating a comparative example (No. 2) with respect to the second embodiment. The
例えば、図12の例では、3つの仮想ルータが示されている。第1の仮想ルータは、中継サーバ700,700a,700b,・・・,700mが属する中継サーバの集合である。第2の仮想ルータは、中継サーバ800,800a,800b,・・・,800mが属する中継サーバの集合である。第3の仮想ルータは、中継サーバ900,900a,900b,・・・,900mが属する中継サーバの集合である。中継サーバの識別情報は、1つの仮想ルータ内において一意であり、それぞれの仮想ルータが、“Svr1”,“Svr2”,“Svr3”,・・・,“Svr10”という識別情報が付与された中継サーバを含む。そして、ある中継サーバは、自身と同じ識別情報をもつ後段の中継サーバにパケットを転送するものとする。第3の仮想ルータは、第1の仮想ルータおよび第2の仮想ルータの後段の仮想ルータである。
For example, in the example of FIG. 12, three virtual routers are shown. The first virtual router is a set of relay servers to which the
この場合に、図12の比較例の方法では、宛先毎のECMPを行えないために、特定の宛先のパケットの転送経路が、例えば、中継サーバ900を経由するルートに偏る可能性がある。そうすると、中継サーバ900の負荷が高まったり、中継サーバ900で障害などが発生したりしたときに、該当の宛先を対象とした通信への影響が過大になる。このように、宛先毎にECMPを行えなくなることは好ましくない。
In this case, since the ECMP for each destination cannot be performed in the method of the comparative example in FIG. 12, there is a possibility that the transfer path of the packet of the specific destination is biased to the route via the
一方、第2の実施の形態の振分サーバ100,100a,100bによれば、個々の振分サーバ100,100a,100bが振分先の偏りを是正するので、図11で例示した特定の中継サーバに対するバースト的なトラフィックの集中の発生を抑えられる。なおかつ、振分サーバ100,100a,100bは、宛先毎にラウンドロビンを行うことで、宛先毎にECMPを実現でき、図12で例示した宛先毎のパケットの転送経路の偏りを抑えられる。
On the other hand, according to the
また、振分先の選択の偏りを検出するために、振分サーバ100,100a,100bそれぞれは他のサーバと通信しなくてよい。すなわち、振分サーバ100,100a,100bは、それぞれが単体で振分先の偏りを検出できる。
Moreover, in order to detect the selection bias of the distribution destination, each of the
なお、第2の実施の形態では、振分先を等確率で選択するルールとして、ラウンドロビンを例示したが、他の方法でもよい。例えば、振分決定部140は、乱数を用いた所定の演算により、振分先を決定することも考えられる。
In the second embodiment, round robin is exemplified as a rule for selecting an allocation destination with equal probability, but other methods may be used. For example, the
また、第2の実施の形態では、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bを物理的なコンピュータ(物理マシン)により実現するものとした。これに対し、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの両方または何れか一方を、物理マシン上で動作する仮想的なコンピュータ(仮想マシン)により実現してもよい。
In the second embodiment, the
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
[Third Embodiment]
Hereinafter, a third embodiment will be described. Items that differ from the second embodiment described above will be mainly described, and descriptions of common items will be omitted.
ここで、第3の実施の形態の情報処理システムおよびハードウェアは、図2,3で例示した第2の実施の形態の情報処理システムおよびハードウェアと同様である。第3の実施の形態の振分サーバの機能は、図4で例示した第2の実施の形態の振分サーバ100の機能と同様である。このため、第3の実施の形態でも、第2の実施の形態と同じ名称および符号を用いて各要素を指し示すこととする。また、第3の実施の形態の情報処理システムで用いられる通信プロトコルは、第2の実施の形態で例示した通信プロトコルと同様である。
Here, the information processing system and hardware of the third embodiment are the same as the information processing system and hardware of the second embodiment illustrated in FIGS. The function of the distribution server according to the third embodiment is the same as the function of the
ただし、第3の実施の形態では、業務サーバ300,300a,300b,・・・,300mにより提供される業務サービスの内容が第2の実施の形態と異なる。具体的には、第3の実施の形態では、業務サーバ300,300a,300b,・・・,300mは、ファイアウォールやプロキシといったステートフル(セッション状態を保持する通信形態)なネットワーク機能を提供する。この場合、あるクライアントとある業務サーバとの通信を中継する中継サーバは、1つの通信のセッションに対して一意に対応付けられる。そのため、第3の実施の形態では、振分サーバ100の振分決定部140は、パケットのヘッダ情報を用いて算出されるハッシュ値を基に、当該パケットの振分先の中継サーバを決定する。この点が、第2の実施の形態と異なる。
However, in the third embodiment, the contents of the business service provided by the
図13は、第3の実施の形態のパケットの例を示す図である。パケットP1は、ペイロードf1、TCP/UDPヘッダf2、IPヘッダf3およびMACヘッダf4のフィールドを含む。TCP/UDPヘッダf2は、宛先ポート番号(D−Port:Destination Port)および送信元ポート番号(S−Port:Source Port)を含む。IPヘッダf3は、宛先IPアドレス(D−IP)、送信元IPアドレス(S−IP:Source IP address)およびプロトコル番号(Protocol)を含む。 FIG. 13 is a diagram illustrating an example of a packet according to the third embodiment. The packet P1 includes fields of a payload f1, a TCP / UDP header f2, an IP header f3, and a MAC header f4. The TCP / UDP header f2 includes a destination port number (D-Port: Destination Port) and a source port number (S-Port: Source Port). The IP header f3 includes a destination IP address (D-IP), a source IP address (S-IP), and a protocol number (Protocol).
宛先ポート番号、送信元ポート番号、宛先IPアドレス、送信元IPアドレスおよびプロトコル番号を総称して、5タプルと呼ぶこともある。また、5タプルは、フローの識別に用いられる情報であるともいえる。 The destination port number, source port number, destination IP address, source IP address, and protocol number may be collectively referred to as a 5-tuple. It can also be said that the 5-tuple is information used for flow identification.
振分決定部140は、5タプルの値を用いたハッシュ演算を行う。振分決定部140は、ハッシュ演算により得られたハッシュ値を基に、パケットP1の振分先を決定する。例えば、求められるハッシュ値は、何れかの中継サーバの識別情報(識別番号)に一致していてもよい。その場合、振分決定部140は、求められたハッシュ値に対応する中継サーバを振分先として決定することができる。振分決定部140は、振分先の中継サーバのMACアドレスをMACヘッダf4のD−MAC(図13では図示を省略している)に設定してSW400に送信することで、該当の中継サーバにパケットP1を転送する。
The
ここで、第3の実施の形態では、振分サーバ100は、ラウンドロビンテーブル111に代えて、セッション管理テーブルを記憶する。セッション管理テーブルは、フローと、振分先の中継サーバとを管理するための情報である。
Here, in the third embodiment, the
図14は、第3の実施の形態のセッション管理テーブルの例を示す図である。セッション管理テーブル114は、記憶部110に格納される。セッション管理テーブル114は、フロー#、Svr#およびフラグの項目を含む。
FIG. 14 illustrates an example of a session management table according to the third embodiment. The session management table 114 is stored in the
フロー#の項目には、フローの識別情報が登録される。フローの識別情報は、パケットのヘッダ情報における5タプルの値の組そのものを表す情報でもよいし、5タプルの値の組に対応付けられる所定の情報でもよい。Svr#の項目には、該当のフローのパケットの振分先とする中継サーバの識別情報が登録される。フラグの項目には、該当のフローのパケットに対してUSC112による振分先の決定を行ったか否かを示すフラグが登録される。USC112による振分先の決定を行った場合、フラグは“True”である。USC112による振分先の決定を行っていない場合、フラグは“False”である。
Flow identification information is registered in the flow # item. The flow identification information may be information representing the 5-tuple value set itself in the packet header information, or may be predetermined information associated with the 5-tuple value set. In the item of Svr #, the identification information of the relay server that is the distribution destination of the packet of the corresponding flow is registered. In the flag item, a flag indicating whether or not the
例えば、セッション管理テーブル114には、フロー#が“a”、Svr#が“1”、フラグが“False”というレコードが登録されている。これは、フロー#“a”のフローの振分先が中継サーバ200(Svr1)であり、当該振分先がパケットの5タプルのハッシュ値に基づいて決定されたものであることを示す。 For example, in the session management table 114, a record in which the flow # is “a”, the Svr # is “1”, and the flag is “False” is registered. This indicates that the flow distribution destination of the flow # “a” is the relay server 200 (Svr1), and the distribution destination is determined based on the hash value of the 5-tuple of the packet.
また、例えば、セッション管理テーブル114には、フロー#が“h”、Svr#が“3”、フラグが“True”というレコードが登録されている。これは、フロー#“h”のフローの振分先が中継サーバ200b(Svr3)であり、当該振分先が、USC112に基づいて決定されたものであることを示す。
Further, for example, in the session management table 114, a record having a flow # of “h”, Svr # of “3”, and a flag of “True” is registered. This indicates that the flow distribution destination of the flow # “h” is the
セッション管理テーブル114には、他のフローについても、同様に、振分先の中継サーバの識別情報およびフラグが設定されている。
次に、第3の実施の形態の振分サーバ100の処理手順を説明する(振分サーバ100a,100bも同様の手順を実行することができる)。
In the session management table 114, the identification information and flags of the relay servers that are the distribution destinations are similarly set for the other flows.
Next, the processing procedure of the
図15は、第3の実施の形態のパケット転送例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
(S21)識別部120は、何れかのクライアントにより送信されたパケットP1を受信する。
FIG. 15 is a flowchart illustrating an example of packet transfer according to the third embodiment. In the following, the process illustrated in FIG. 15 will be described in order of step number.
(S21) The
(S22)識別部120は、パケットP1の5タプルの情報の組を基にフローを識別し、パケットP1に対するフローの識別情報(フロー#)を取得する。また、識別部120は、5タプルの情報を用いたハッシュ演算を行い、ハッシュ値を計算する。
(S22) The
(S23)偏り判定部130は、記憶部110に記憶されたUSC112を参照して、USC112のカウント値が、偏り閾値以上の中継サーバがあるか否かを判定する。USC112のカウント値が、偏り閾値以上の中継サーバがある場合、偏り判定部130は、ステップS24に処理を進める。USC112のカウント値が、偏り閾値以上の中継サーバがない場合、偏り判定部130は、ステップS27に処理を進める。
(S23) The
(S24)振分決定部140は、今回のパケットP1が新規セッションのパケットであるか否かを判定する。新規セッションのパケットである場合、振分決定部140は、ステップS25に処理を進める。新規セッションのパケットでない場合、振分決定部140は、ステップS27に処理を進める。
(S24) The
ここで、振分決定部140は、記憶部110に記憶されたセッション管理テーブル114を参照することで、ステップS24の判定を行う。具体的には、振分決定部140は、ステップS22で取得したフローの識別情報に対応するレコードがセッション管理テーブル114に登録済であるか否かを判定する。登録済である場合、振分決定部140は、新規セッションではない(すなわち、既存セッションである)と判定する。登録済でない場合、振分決定部140は、新規セッションであると判定する。
Here, the
(S25)振分決定部140は、ステップS23でUSC112のカウント値が偏り閾値以上であると判定された中継サーバを振分先に決定する。ステップS25の処理は、振分先の振替を行うことに相当する。
(S25) The
(S26)振分決定部140は、今回取得したフローの識別情報に対応するフラグを“True”に設定する。そして、振分決定部140は、ステップS30に処理を進める。
(S27)振分決定部140は、セッション管理テーブル114を参照して、ステップS22で取得したフローの識別情報に対応するレコードのフラグが“True”であるか否かを判定する。“True”である場合、振分決定部140は、ステップS28に処理を進める。“True”でない場合、振分決定部140は、ステップS29に処理を進める。なお、ステップS23がNoであった場合、該当のフローの識別情報に対応するレコードがセッション管理テーブル114に未登録のこともある(今回のパケットP1が新規セッションのパケットの場合)。この場合、振分決定部140は、ステップS27において“True”でないと判定する。
(S26) The
(S27) The
(S28)振分決定部140は、フラグに基づき振分先を決定する。具体的には、振分決定部140は、ステップS27で参照したセッション管理テーブル114のレコードに設定されたSvr#を取得する。振分決定部140は、当該Svr#に対応する中継サーバを、今回のパケットP1の振分先に決定する。そして、振分決定部140は、ステップS30に処理を進める。ステップS28の処理は、振分先の振替を継続することに相当する。
(S28) The
(S29)振分決定部140は、ステップS22で求めたハッシュ値に対応する中継サーバを、今回のパケットP1の振分先に決定する。
(S30)振分決定部140は、USC112を更新する。具体的には、振分決定部140は、記憶部110に記憶されたUSC更新ルール113に従って、USC112における各中継サーバのカウント値を更新する。第3の実施の形態の例では、振分決定部140は、今回振分先として選択された中継サーバのカウント値を“2”減らし、今回振分先として選択されなかった中継サーバのカウント値を“1”増やす。
(S29) The
(S30) The
(S31)振分決定部140は、セッション管理テーブル114を更新する。具体的には、振分決定部140は、次の処理を行う。
今回のパケットP1に対してステップS26を実行した場合、振分決定部140は、今回の新規セッションのフローに関するレコードをセッション管理テーブル114に追加する。追加されるレコードのフロー#の設定値は、ステップS22で取得されたフローの識別情報となる。当該レコードのSvr#の設定値は、ステップS25で決定された振分先の中継サーバの識別情報となる。当該レコードのフラグの設定値は“True”となる。
(S31) The
When step S <b> 26 is executed for the current packet P <b> 1, the
今回のパケットP1に対してステップS29を実行した場合、振分決定部140は、今回のフローに関するレコードをセッション管理テーブル114に登録する。このとき、振分決定部140は、(1)今回のフローに関するレコードを新たに追加するケースもあれば、(2)今回のフローに関する既存のレコードのSvr#の設定値の更新を行うケースもある。
When step S <b> 29 is executed for the current packet P <b> 1, the
(1)のケースは、ステップS23 No、かつ、ステップS27 No、かつ、今回のパケットP1が新規セッションのパケットである場合である。この場合、セッション管理テーブル114に追加されるレコードのフロー#の設定値は、ステップS22で取得されたフローの識別情報となる。当該レコードのSvr#の設定値は、ステップS29で決定された振分先の中継サーバの識別情報となる。当該レコードのフラグの設定値は“False”となる。 Case (1) is a case where step S23 No, step S27 No, and the current packet P1 is a packet of a new session. In this case, the setting value of the flow # of the record added to the session management table 114 becomes the flow identification information acquired in step S22. The set value of Svr # of the record becomes the identification information of the relay server that is the distribution destination determined in step S29. The set value of the flag of the record is “False”.
(2)のケースは、ステップS23 No、かつ、ステップS27 No、かつ、今回のパケットP1が新規セッションのパケットでない場合である。この場合、振分決定部140は、ステップS22で取得されたフローの識別情報に対応するセッション管理テーブル114の既存のレコードにおいて、ステップS29で決定された振分先の中継サーバの識別情報を、Svr#に設定する。
Case (2) is a case where step S23 No, step S27 No, and the current packet P1 is not a packet of a new session. In this case, the allocating
なお、今回のパケットP1に対してステップS28を実行した場合、振分決定部140は、セッション管理テーブル114の更新を行わなくてよい。
(S32)振分決定部140は、ステップS25またはステップS29により振分先として決定した中継サーバに、受信したパケットP1を転送する。
When step S28 is executed for the current packet P1, the
(S32) The
更に、振分決定部140は、セッション管理テーブル114において、フラグ“True”が設定されたフローにおける通信のアイドル時間(該当のフローのパケットの送受信が行われていない時間)を監視し、転送先の振替を解除する処理も行う。
Further, the
図16は、第3の実施の形態の転送先振替の解除例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S41)振分決定部140は、記憶部110に記憶されたセッション管理テーブル114において、フラグ=Trueが設定されたフローに関する通信のアイドル時間を監視する。
FIG. 16 is a flowchart illustrating an example of canceling transfer destination transfer according to the third embodiment. In the following, the process illustrated in FIG. 16 will be described in order of step number.
(S41) In the session management table 114 stored in the
(S42)振分決定部140は、該当のフローに関する通信のアイドル時間が所定時間に達したか否かを判定する。アイドル時間が所定時間に達した場合、振分決定部140は、ステップS43に処理を進める。アイドル時間が所定時間に達していない場合、振分決定部140は、ステップS41に処理を進める(監視を継続する)。ステップS42の判定に用いられる所定時間の長さは、任意に定めることができる(例えば、1分でもよいし、数分程度でもよい)。
(S42) The
(S43)振分決定部140は、セッション管理テーブル114において、該当のフローに対するフラグを“False”に設定する。
このように、振分決定部140は、特定のフローに対してハッシュ値によらずに振分先(転送先)の中継サーバを選択すると、所定期間、当該特定のフローに対応するパケットの振分先を、選択した中継サーバとする。これにより、ファイアウォールやプロキシなどのステートフルな業務サービスをクライアントに対して適切に提供可能になる。
(S43) In the session management table 114, the
As described above, when the
なお、図16の例では、通信のアイドル時間を監視するものとしたが他の方法も考えられる。例えば、振分決定部140は、フラグ“True”のフローについて、TCPにおけるFINパケットやRSTパケットによるセッションの切断を検出した場合に、該当のフローに対するフラグを“False”に設定してもよい。
In the example of FIG. 16, the idle time of communication is monitored, but other methods are also conceivable. For example, the
図17は、第3の実施の形態の転送先振替の具体例を示す図である。一例として、フロー#がそれぞれ“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”である複数のパケットが、この順番で振分サーバ100に到着したとする。
FIG. 17 is a diagram illustrating a specific example of transfer destination transfer according to the third embodiment. As an example, a plurality of packets having flow numbers “a”, “b”, “c”, “d”, “e”, “f”, “g”, and “h” are sorted in this order. Assume that the
なお、宛先#が“a”であるパケットが到着する前のUSC112の各中継サーバのカウント値は、全て“0”であるとする。また、図17のUSC112は、振分サーバ100により各パケットが転送されるたびに更新される(上側から下側へ向かう方向が更新によりカウント値が推移する方向である)。更に、一例として偏り閾値は“4”であるとする。
It is assumed that the count values of the relay servers of the
まず、振分サーバ100は、フロー#“a”のパケット“a1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“a1”のヘッダ情報のハッシュ値に基づいて、パケット“a1”を、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“a”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0+1=1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“0+1=1”に更新する。
First, the
次に、振分サーバ100は、フロー#“b”のパケット“b1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“b1”のヘッダ情報のハッシュ値に基づいて、パケット“b1”を、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“b”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“1−2=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“1+1=2”に更新する。
Next, the
次に、振分サーバ100は、フロー#“c”のパケット“c1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“c1”のヘッダ情報のハッシュ値に基づいて、パケット“c1”を、中継サーバ200b(Svr3)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“c”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“2−2=0”に更新する。
Next, the
次に、振分サーバ100は、フロー#“d”のパケット“d1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“d1”のヘッダ情報のハッシュ値に基づいて、パケット“d1”を、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“d”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0+1=1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“0+1=1”に更新する。
Next, the
次に、振分サーバ100は、フロー#“e”のパケット“e1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“e1”のヘッダ情報のハッシュ値に基づいて、パケット“e1”を、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“e”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“1−2=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“1+1=2”に更新する。
Next, the
次に、振分サーバ100は、フロー#“f”のパケット“f1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“f1”のヘッダ情報のハッシュ値に基づいて、パケット“f1”を、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“f”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−1−2=−3”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“2+1=3”に更新する。
Next, the
次に、振分サーバ100は、フロー#“g”のパケット“g1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。このため、振分サーバ100は、パケット“g1”のヘッダ情報のハッシュ値に基づいて、パケット“g1”を、中継サーバ200a(Svr2)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“g”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−3+1=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0−2=−2”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“3+1=4”に更新する。
Next, the
次に、振分サーバ100は、フロー#“a”のパケット“a2”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値があることを確認する。一方、パケット“a2”は既存セッションのパケットであり、セッション管理テーブル114におけるフロー#“a”のフラグは“False”である。したがって、振分サーバ100は、パケット“a2”のヘッダ情報のハッシュ値に基づいて、パケット“a2”を、中継サーバ200(Svr1)に振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“a”のレコードのフラグを“False”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−2−2=−4”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−2+1=−1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“4+1=5”に更新する。
Next, the
次に、振分サーバ100は、フロー#“h”のパケット“h1”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値があることを確認する。また、パケット“h1”は新規セッションのパケットである。したがって、振分サーバ100は、USC112に基づいて、カウント値が偏り閾値“4”に達している中継サーバ200bに、パケット“h1”を振り分ける。振分サーバ100は、セッション管理テーブル114のフロー#“h”のレコードのSvr#を“3”、フラグを“True”とする。振分サーバ100は、USC112における中継サーバ200のカウント値を“−4+1=−3”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“−1+1=0”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“5−2=3”に更新する。
Next, the
ここで、パケット“h1”のヘッダ情報のハッシュ値による振分先が、中継サーバ200(“Svr1”)であるとする。そうすると、振分サーバ100は、パケット“h1”の振分先を、当該ハッシュ値を基に決められる中継サーバ200から、USC112を基に決められる中継サーバ200bに振り替えたことになる。
Here, it is assumed that the distribution destination based on the hash value of the header information of the packet “h1” is the relay server 200 (“Svr1”). Then, the
次に、振分サーバ100は、フロー#“h”のパケット“h2”を受信する。振分サーバ100は、USC112を参照して、偏り閾値“4”に達したカウント値がないことを確認する。一方、パケット“h2”は既存セッションのパケットであり、セッション管理テーブル114におけるフロー#“h”のフラグは“True”である。したがって、振分サーバ100は、セッション管理テーブル114に基づいて、パケット“h2”を、中継サーバ200bに振り分ける。振分サーバ100は、USC112における中継サーバ200のカウント値を“−3+1=−2”に更新する。振分サーバ100は、USC112における中継サーバ200aのカウント値を“0+1=1”に更新する。振分サーバ100は、USC112における中継サーバ200bのカウント値を“3−2=1”に更新する。
Next, the
ここで、パケット“h2”のヘッダ情報のハッシュ値による振分先は、パケット“h1”と同様に、中継サーバ200(“Svr1”)である。このため、振分サーバ100は、パケット“h2”の振分先を、当該ハッシュ値を基に決められる中継サーバ200から、USC112を基に決められる中継サーバ200bに振り替えたことになる。
Here, the distribution destination based on the hash value of the header information of the packet “h2” is the relay server 200 (“Svr1”), similarly to the packet “h1”. For this reason, the
このように、振分サーバ100は、パケットの転送先として選択された中継サーバのUSC112のカウント値をカウントダウンし、選択されなかった中継サーバのUSC112のカウント値をカウントアップする。このため、振分サーバ100は、USC112に基づいて、転送先として選択された回数が相対的に少ないノードを効率的に特定できる。振分サーバ100は、中継サーバ200bのカウント値が、偏り閾値以上になったことを検出することで、パケットの転送先の選択に偏りが発生していると判断できる。なぜなら、中継サーバ200bが選択されなかった回数が相対的に多いということは、中継サーバ200,200aの両方あるいは何れか一方が選択された回数が相対的に多いと推定されるからである。更に、選択されなかった回数が相対的に多い中継サーバ200bは、振り分けられたトラフィック量も中継サーバ200,200aに比べて少ないと考えられる。このため、SW400の中継サーバ200bと接続するインタフェースのリソース(例えば、転送待ちパケットを格納するバッファ)や、中継サーバ200bのリソースにも比較的余裕があると考えられる。したがって、振分サーバ100は、中継サーバ200,200a,200bに、ある程度均等にデータを振り分けようとする場合、中継サーバ200bを優先的に選択した方がよいと判断できる。
In this way, the
このように、振分サーバ100は、中継サーバの選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべき中継サーバの両方をUSC112によって効率的に判定できる。こうして、中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100のデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと、業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。
As described above, the
図18は、第3の実施の形態に対する比較例を示す図である。図18では、振分サーバ620,620a,620bおよび中継サーバ700,700a,・・・,700mが、SW400に接続された例を示している。ただし、図18中、「中継サーバ」については、中継サーバ700,700a,・・・,700mそれぞれの識別情報“Svr1”,“Svr2”,・・・,“Svr10”を表記している。
FIG. 18 is a diagram illustrating a comparative example with respect to the third embodiment. FIG. 18 shows an example in which
振分サーバ600,600a,600bは、それぞれセッション管理テーブル621,621a,621bを用いて、パケットの振分先を決定する。セッション管理テーブル621,621a,621bは、フロー#とSvr#との項目を含むが、フラグの項目を含まない点がセッション管理テーブル114と異なる。また、振分サーバ620,620a,620bは、USC112に相当する情報を保持しない点が、振分サーバ100,100a,100bと異なる。
The
例えば、振分サーバ620において中継サーバ700を経由する複数のフローのパケットが比較的短い期間の間に受信されることがある。すなわち、複数のフローに対するパケットの振分先が、中継サーバ700(Svr1)に偏ることがある。
For example, the
更に、振分サーバ620,620a,620bそれぞれによる振分先が同期することもある。図18の例では、振分サーバ620a,620bによる各フローに対するパケットの振分先も中継サーバ700(Svr1)に偏っている。このように、バースト的に中継サーバ700にトラフィックが集中することがある。
Furthermore, the distribution destinations by the
この場合、SW400が備える通信インタフェースのうち、中継サーバ700と通信する通信インタフェースの負荷が特に過大になる。すると、当該通信インタフェースが備えるバッファを用いた転送待ち合わせによる遅延が増大したり、バッファあふれによるパケット廃棄が発生したりする。
In this case, among the communication interfaces provided in the
一方、第3の実施の形態の振分サーバ100,100a,100bによれば、個々の振分サーバ100,100a,100bが振分先の偏りを是正するので、図18で例示した特定の中継サーバに対するバースト的なトラフィックの集中の発生を抑えられる。
On the other hand, according to the
また、振分先の選択の偏りを検出するために、振分サーバ100,100a,100bそれぞれは他のサーバと通信しなくてよい。すなわち、振分サーバ100,100a,100bは、それぞれが単体で振分先の偏りを検出できる。
Moreover, in order to detect the selection bias of the distribution destination, each of the
なお、第3の実施の形態でも、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの両方または何れか一方を、物理マシン上で動作する仮想的なコンピュータ(仮想マシン)により実現してもよい。
In the third embodiment, the
ところで、振分サーバ100,100a,100bのように複数の振分サーバを用いる場合、2以上の振分サーバにおいて、USCのカウント値が偏り閾値に達した中継サーバが複数存在することもある。この場合、当該2以上の振分サーバが全て同じ中継サーバを振替先に選択すると、振替先の中継サーバにパケットを転送するためのリソースの負荷が過大になるおそれもある。このため、各振分サーバは、振替先の選択を、他の振分サーバと異なるよう制御してもよい。例えば、次のような方法が考えられる。
By the way, when using a plurality of distribution servers such as the
図19は、転送先振替の他の例(その1)を示す図である。振分サーバ100aは、USC112aを記憶する。図19の上側から下側へ向かう方向がUSC112,112aの更新推移の方向を表す。なお、USC112,112aの各中継サーバに対するカウント値の初期値は、何れも“0”である。また、図19では、一例として、振分サーバ100,100aそれぞれによる初回から4回目までのパケットの振分先は、中継サーバ200であるとする。更に、偏り閾値は“4”とする。
FIG. 19 is a diagram illustrating another example (part 1) of transfer destination transfer. The
この場合、4回目の振り分けにおいて、USC112,112aにおける中継サーバ200のカウント値は“−8”、中継サーバ200aのカウント値は“4”、中継サーバ200bのカウント値は“4”となる。この段階で、中継サーバ200a,200bの両方のカウント値が、偏り閾値“4”に達する。
In this case, in the fourth distribution, the count value of the
このとき、振分サーバ100は、Svr#の小さい方を優先的に振分先として選択する(若番優先)。一方、振分サーバ100aは、Svr#の大きい方を優先的に振分先として選択する(老番優先)。上記の例では、振分サーバ100は、次回のパケットの振分先を、中継サーバ200a(Svr2)とする。一方、振分サーバ100aは、次回のパケットの振分先を、中継サーバ200b(Svr3)とする。なお、若番優先により振分先を選択する振分サーバ、および、老番優先により振分先を選択する振分サーバは、システムの管理者によって予め定められる。各振分サーバは、振分サーバ間で連携し、互いに異なる優先度を決定してもよい。
At this time, the
このように、振分サーバ100,100aは、カウント値が偏り閾値に達した中継サーバが複数ある場合、複数の中継サーバそれぞれに対する所定の優先度に基づいて、振分先を選択してもよい。このとき、ある振分サーバが用いる中継サーバの優先度と、別の振分サーバが用いる中継サーバの優先度とは、異なる優先順位となるようにする。これにより、振分サーバ100,100aの両方が振分先の振替を行う場合に、中継サーバ200a、または、中継サーバ200bの何れか一方にトラフィックを集中させることを抑えられる。
As described above, when there are a plurality of relay servers whose count values reach the bias threshold, the
あるいは、振分サーバ100,100aそれぞれは、中継サーバ200,200a,200bのカウント値を更新する際の加算値を中継サーバ毎に変えてもよい。具体的には次の通りである。
Alternatively, each of the
図20は、転送先振替の他の例(その2)を示す図である。図20の上側から下側へ向かう方向がUSC112,112aの更新推移の方向を表す。なお、USC112,112aの各中継サーバに対するカウント値の初期値は、何れも“0”である。また、図20では、一例として、振分サーバ100,100aそれぞれによる初回から4回目までのパケットの振分先は、中継サーバ200であるとする。更に、偏り閾値は“4”とする。
FIG. 20 is a diagram illustrating another example (part 2) of transfer destination transfer. The direction from the upper side to the lower side in FIG. 20 represents the direction of update transition of
ここで、振分サーバ100は、USC112における中継サーバ200aのカウント値の加算値を、“1.1(=1.0+0.1)”とする。一方、振分サーバ100は、USC112における中継サーバ200bのカウント値の加算値を、“0.9(=1.0−0.1)”とする。
Here, the
更に、振分サーバ100aは、USC112aにおける中継サーバ200aのカウント値の加算値を、“0.9(=1.0−0.1)”とする。一方、振分サーバ100aは、USC112aにおける中継サーバ200bのカウント値の加算値を、“1.1(=1.0+0.1)”とする。
Further, the
そうすると、4回目の振り分けにおいて、USC112における中継サーバ200のカウント値は“−8”、中継サーバ200aのカウント値は“4.4”、中継サーバ200bのカウント値は“3.6”となる。この段階で、中継サーバ200aのカウント値が、偏り閾値“4”に達する。
Then, in the fourth distribution, the count value of the
一方、4回目の振り分けにおいて、USC112aにおける中継サーバ200のカウント値は“−8”、中継サーバ200aのカウント値は“3.6”、中継サーバ200bのカウント値は“4.4”となる。この段階で、中継サーバ200bのカウント値が、偏り閾値“4”に達する。
On the other hand, in the fourth distribution, the count value of the
したがって、振分サーバ100は、次回のパケットの振分先を、中継サーバ200a(Svr2)とする。一方、振分サーバ100aは、次回のパケットの振分先を、中継サーバ200b(Svr3)とする。なお、各中継サーバに対する加算値は、システムの管理者によって予め定められる。各振分サーバは、振分サーバ間で連携し、互いに異なる加算値を決定してもよい。
Therefore, the
このように、振分サーバ100,100aは、各中継サーバのカウント値に対する加算値を中継サーバ毎に異なる値としてもよい。例えば、振分サーバ100による第1の中継サーバの加算値の重みを大きくし、第2の中継サーバの加算値の重みを小さくしたならば、振分サーバ100aによる第1の中継サーバの加算値の重みを小さくし、第2の中継サーバの加算値の重みを大きくする。これにより、振分サーバ100,100aの両方が振分先の振替を行う場合に、中継サーバ200a、または、中継サーバ200bの何れか一方にトラフィックを集中させることを抑えられる。
As described above, the
なお、図19,図20の方法は、第2,第3の実施の形態の両方に適用することができる。また、図19および図20の方法の両方を、第2,第3の実施の形態に適用することも考えられる。 Note that the methods of FIGS. 19 and 20 can be applied to both the second and third embodiments. It is also conceivable to apply both the methods of FIGS. 19 and 20 to the second and third embodiments.
ところで、第2,第3の実施の形態では、USC112を用いて、振分先として選択されなかった回数をカウントするものとした。一方、振分先の偏りを検出する単純な方法として、振分先として選択された累積の回数を中継サーバ毎にカウントすることも考えられる。そこで、例えば、振分サーバ100が、USC112に代えて、振分累積カウンタを用いてパケットの振分先を決定することを考える。
By the way, in 2nd, 3rd embodiment, the frequency | count which was not selected as a distribution destination was counted using USC112. On the other hand, as a simple method of detecting the distribution destination bias, it may be possible to count the number of times of accumulation selected as the distribution destination for each relay server. Thus, for example, consider that the
図21は、振分累積カウンタの例を示す図である。振分累積カウンタ115は、振分先として選択された累積の回数を中継サーバ毎にカウントするカウンタである。例えば、振分サーバ100は、振分累積カウンタ115を用いて、パケットの振分先として選択された中継サーバのカウント値を、選択のたびに、1ずつ加算する。このとき、振分サーバ100は、振分先として選択されなかった中継サーバのカウント値を更新しない。
FIG. 21 is a diagram illustrating an example of a distribution accumulation counter. The
この場合、振分先の選択に偏りがあるか否かを判定するために、各中継サーバのカウント値の最小値、および、最小値と最大値との差の大きさを取得することが考えられる。この場合、差が所定の閾値よりも大きい場合に、振分先の選択に偏りがあると判定できる。また、偏りがある場合に、カウント値の最小値に対応する中継サーバを振分先として選択することが考えられる。 In this case, in order to determine whether or not the selection of the distribution destination is biased, it is considered to obtain the minimum value of the count value of each relay server and the magnitude of the difference between the minimum value and the maximum value. It is done. In this case, when the difference is larger than a predetermined threshold value, it can be determined that there is a bias in selection of the distribution destination. In addition, when there is a bias, it is conceivable to select the relay server corresponding to the minimum value of the count value as the distribution destination.
振分累積カウンタ115におけるカウント値の最小値や最大値を取得するために、各中継サーバのカウント値を、2つの中継サーバの組について総当たりで比較することが考えられる。しかし、この方法では、振分先候補の中継サーバの数が多くなるほど、比較のための演算量が線形増加する。このため、中継サーバの数が多くなるほど、振分先の決定までの遅延量が過大になる可能性がある。
In order to obtain the minimum value and the maximum value of the count value in the distribution
図22は、振分累積カウンタとUSCとの比較例を示す図である。図22(A)は、振分累積カウンタ115の更新の推移を示している。図22(B)は、偏り閾値>7の場合のUSC112aの更新の推移を示している(図22(C)のUSC112と区別するために、USC112aと表記する)。図22(C)は、偏り閾値=4の場合のUSC112の更新の推移を示している。なお、図22の上側から下側へ向かう方向が更新推移の方向である。
FIG. 22 is a diagram illustrating a comparative example of the distribution accumulation counter and the USC. FIG. 22A shows the transition of the update of the distribution
ここでは、中継サーバ200,200a,200bが振分先の候補であるとする。そして、図22で例示される3つの場合の何れも、当初、各中継サーバのカウンタのカウント値は“0”であるとする。また、3つの場合の何れも、中継サーバの選択の順序は、初回から7回目の選択まで同じである。初回から7回目の選択は、中継サーバ200(Svr1)、中継サーバ200a(Svr2)、中継サーバ200b(Svr3)、中継サーバ200(Svr1)、中継サーバ200a(Svr2)、中継サーバ200、(Svr1)、中継サーバ200a(Svr2)の順であるとする。
Here, it is assumed that the
図22(A)の場合、振分先の選択のたびに、振分累積カウンタ115に基づいて、振分先の選択に偏りがあるか否かが判定される。また、選択結果に応じて、振分累積カウンタ115において、振分先として選択された中継サーバのカウント値がカウントアップされる。例えば、8回目、9回目、10回目の選択では、それぞれ中継サーバ200(Svr1)、中継サーバ200a(Svr2)、中継サーバ200(Svr1)が選択される。10回目の選択後の振分累積カウンタ115では、中継サーバ200のカウント値は“5”である。中継サーバ200aのカウント値は“4”である。中継サーバ200bのカウント値は“1”である。例えば、10回目の選択後に、振分先の選択に偏りがあるか否かを判定する場合、振分累積カウンタ115の各中継サーバのカウント値を総当たり比較することで、選択回数に最大で4の差があると判定される。その上で、当該差が許容される差以上であれば、例えば、振分累積カウンタ115のカウント値が最小の中継サーバ200b(Svr3)が振分先として選択されることになる。
In the case of FIG. 22A, each time a distribution destination is selected, it is determined based on the
図22(B)の場合、振分先の選択のたびに、USC112aに基づいて、振分先の選択に偏りがあるか否かが判定される。また、選択結果に応じて、USC更新ルール113に従って、USC112aの各中継サーバのカウント値が更新される。例えば、8回目、9回目、10回目の選択では、それぞれ中継サーバ200(Svr1)、中継サーバ200a(Svr2)、中継サーバ200(Svr1)が選択される。10回目の選択後のUSC112aでは、中継サーバ200のカウント値は“−5”である。中継サーバ200aのカウント値は“−2”である。中継サーバ200bのカウント値は“7”である。
In the case of FIG. 22B, each time a distribution destination is selected, it is determined whether there is a bias in the selection of the distribution destination based on the
カウント値の更新は、選択の都度、全ての中継サーバ分の更新が行われる。ただし、USC112aにおける各中継サーバのカウント値は独立して更新可能であり、並列演算が可能である。例えば、プロセッサ101がマルチコアである場合、複数コアにより並列して更新を行うことで、全ての中継サーバのカウント値を1サイクルで更新することも可能である。したがって、全ての中継サーバ分の更新を行うことによる処理遅延は、非常に少ないと考えてよい。
The count value is updated for every relay server every time it is selected. However, the count value of each relay server in the
また、振分先の選択に偏りがあるか否かの判定は、各中継サーバのカウント値を偏り閾値と比較するだけでよく、各中継サーバ同士のカウント値の総当たりの比較を行わずに済む。例えば、中継サーバの数を10とすると、振分累積カウンタ115を用いる場合は、最も振分回数の少ない中継サーバを特定するのに10サイクルの比較演算を要するが、振分サーバ100によれば、当該比較演算を行わずに済む。この場合、前述のように、10個の中継サーバ分のUSC112のカウント値の更新を行うことになるが、更新そのものは並列演算可能(例えば、1サイクルで更新可能)である。これは、図22(C)の場合も同様である。
In addition, it is only necessary to compare the count value of each relay server with the bias threshold value, without comparing the brute force of the count values of each relay server. That's it. For example, assuming that the number of relay servers is 10, when the distribution
図22(C)の場合も、振分先の選択のたびに、USC112に基づいて、振分先の選択に偏りがあるか否かが判定される。また、選択結果に応じて、USC更新ルール113に従って、USC112の各中継サーバのカウント値が更新される。例えば、8回目の選択では、中継サーバ200b(Svr3)のカウント値が偏り閾値に達しているため、中継サーバ200ではなく、中継サーバ200bを振分先に選択する。続いて、9回目、10回目の選択では、それぞれ中継サーバ200a(Svr2)、中継サーバ200(Svr1)が選択される。10回目の選択後のUSC112では、中継サーバ200のカウント値は“−2”である。中継サーバ200aのカウント値は“−2”である。中継サーバ200bのカウント値は“4”である。
In the case of FIG. 22C as well, each time a distribution destination is selected, it is determined whether there is a bias in selection of the distribution destination based on the
このように、振分サーバ100,100a,100bは、ノード選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべきノードの両方をUSC112(または、USC112a)のカウント値によって効率的に判定できる。特に、振分累積カウンタ115を用いる比較例のように、中継サーバ間での累積カウント値の比較を総当たりで行って偏りを検出する方法よりも、演算量を少なくすることができる。
As described above, the
こうして、振分サーバ100,100a,100bによれば、振分先の中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100,100a,100bのデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。
Thus, according to the
なお、振分サーバ100,100a,100bによる通常時の振分ルールとして、ラウンドロビンや、パケットのヘッダ情報のハッシュ値により振分先を選択する方法を例示したが、通常時の振分ルールはそれ以外でもよい。例えば、振分サーバ100は、通常時の振分ルールとして、中継サーバ200,200a,200bそれぞれのCPUやメモリの負荷などを取得し、当該負荷に応じて、パケットの振分先を決定するルールを採用してもよい。この場合、振分サーバ100は、最小負荷の中継サーバを振分先に決定することが考えられる。振分サーバ100a,100bも同様である。
In addition, as a normal distribution rule by the
また、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2,第3の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
The information processing according to the first embodiment can be realized by causing the
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
For example, the program can be distributed by distributing the
1 制御装置
1a 記憶部
1b 処理部
2,3,4 ノード
5,6,7 宛先装置
8,9 端末装置
N1,N2 ネットワーク
T1,T1a テーブル
DESCRIPTION OF
Claims (10)
前記複数のノードそれぞれが選択された回数に関する複数の数値であって、第1のノードに対応する第1の数値と第2のノードに対応する第2の数値とを含む前記複数の数値を記憶する記憶部と、
第1のデータの転送先として前記第1のノードを選択した場合に、前記第1の数値を減らし、選択されなかった前記第2のノードに対応する前記第2の数値を増やし、前記第2の数値が所定値以上になると、第2のデータの転送先として前記第2のノードを選択する処理部と、
を有する制御装置。 In a control device that selects and transfers one of a plurality of nodes when transferring data,
A plurality of numerical values relating to the number of times each of the plurality of nodes has been selected, the first numerical value corresponding to the first node and the second numerical value corresponding to the second node being stored. A storage unit to
When the first node is selected as the transfer destination of the first data, the first numerical value is decreased, the second numerical value corresponding to the second node not selected is increased, and the second node A processing unit that selects the second node as a transfer destination of the second data when the numerical value of
Control device.
前記複数のノードそれぞれが選択された回数に関する複数の数値であって、第1のノードに対応する第1の数値と第2のノードに対応する第2の数値とを含む前記複数の数値を記憶し、
第1のデータの転送先として前記第1のノードを選択した場合に、前記第1の数値を減らし、選択されなかった前記第2のノードに対応する前記第2の数値を増やし、
前記第2の数値が所定値以上になると、第2のデータの転送先として前記第2のノードを選択する、
処理をコンピュータに実行させる制御プログラム。 In a control program used for processing to select and transfer one of a plurality of nodes when transferring data,
A plurality of numerical values relating to the number of times each of the plurality of nodes has been selected, the first numerical value corresponding to the first node and the second numerical value corresponding to the second node being stored. And
When the first node is selected as the transfer destination of the first data, the first numerical value is decreased, and the second numerical value corresponding to the second node not selected is increased,
When the second numerical value is equal to or greater than a predetermined value, the second node is selected as a second data transfer destination.
A control program that causes a computer to execute processing.
前記複数のノードそれぞれが選択された回数に関する複数の数値であって、第1のノードに対応する第1の数値と第2のノードに対応する第2の数値とを含む前記複数の数値を記憶し、
第1のデータの転送先として前記第1のノードを選択した場合に、前記第1の数値を減らし、選択されなかった前記第2のノードに対応する前記第2の数値を増やし、
前記第2の数値が所定値以上になると、第2のデータの転送先として前記第2のノードを選択する、
制御方法。 A computer that selects and transfers one of a plurality of nodes when transferring data.
A plurality of numerical values relating to the number of times each of the plurality of nodes has been selected, the first numerical value corresponding to the first node and the second numerical value corresponding to the second node being stored. And
When the first node is selected as the transfer destination of the first data, the first numerical value is decreased, and the second numerical value corresponding to the second node not selected is increased,
When the second numerical value is equal to or greater than a predetermined value, the second node is selected as a second data transfer destination.
Control method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017008076A JP2018117300A (en) | 2017-01-20 | 2017-01-20 | Control device, control program and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017008076A JP2018117300A (en) | 2017-01-20 | 2017-01-20 | Control device, control program and control method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018117300A true JP2018117300A (en) | 2018-07-26 |
Family
ID=62984396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017008076A Pending JP2018117300A (en) | 2017-01-20 | 2017-01-20 | Control device, control program and control method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018117300A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021024377A1 (en) * | 2019-08-06 | 2021-02-11 | 日本電信電話株式会社 | L2 switch, communication control method, and communication control program |
-
2017
- 2017-01-20 JP JP2017008076A patent/JP2018117300A/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021024377A1 (en) * | 2019-08-06 | 2021-02-11 | 日本電信電話株式会社 | L2 switch, communication control method, and communication control program |
JPWO2021024377A1 (en) * | 2019-08-06 | 2021-02-11 | ||
JP7188602B2 (en) | 2019-08-06 | 2022-12-13 | 日本電信電話株式会社 | L2 switch, communication control method, and communication control program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10389634B2 (en) | Multiple active L3 gateways for logical networks | |
US20210120080A1 (en) | Load balancing for third party services | |
US8601126B2 (en) | Method and apparatus for providing flow based load balancing | |
US9503371B2 (en) | High availability L3 gateways for logical networks | |
US10257066B2 (en) | Interconnect congestion control in a storage grid | |
EP2987305B1 (en) | Multipath routing in a distributed load balancer | |
EP2987304B1 (en) | Distributed load balancer | |
US9450874B2 (en) | Method for internet traffic management using a central traffic controller | |
US9325609B2 (en) | Segmented source routing in a network | |
JP6670109B2 (en) | Scalable flow and congestion control in networks | |
US9397920B2 (en) | Multi-path network bandwidth estimation | |
US10826823B2 (en) | Centralized label-based software defined network | |
JP2015503274A (en) | System and method for mitigating congestion in a fat tree topology using dynamic allocation of virtual lanes | |
US9537785B2 (en) | Link aggregation group (LAG) link allocation | |
EP2997487A1 (en) | Selecting a content providing server in a content delivery network | |
JP7313480B2 (en) | Congestion Avoidance in Slice-Based Networks | |
US10341224B2 (en) | Layer-3 flow control information routing system | |
US11722420B2 (en) | System and method for reactive path selection | |
US20210314255A1 (en) | Dynamic multipathing using programmable data plane circuits in hardware forwarding elements | |
JP2018117300A (en) | Control device, control program and control method | |
EP3531622A1 (en) | Method of handling packet flow in software-defined network, computer program product, and software-defined network | |
US11720387B2 (en) | Managing communication rates between applications in a tiered application computing environment | |
JP2018110359A (en) | Virtual machine management program, virtual machine management device, and virtual machine management method | |
JP2023048396A (en) | Communication system, packet redundancy device, method, and program | |
Phinjirapong | CAFFEINE: Congestion Avoidance For Fairness & Efficiency In Network Entities |