JP2018117300A - Control device, control program and control method - Google Patents

Control device, control program and control method Download PDF

Info

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
Application number
JP2017008076A
Other languages
Japanese (ja)
Inventor
北田 敦史
Atsushi Kitada
敦史 北田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017008076A priority Critical patent/JP2018117300A/en
Publication of JP2018117300A publication Critical patent/JP2018117300A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To allow an operator to compensate for deviation of node selection with the saving operation amount.SOLUTION: In a storage part 1a, a plurality of numerical values are stored regarding the number of times in which each of nodes 2, 3, 4 is selected. The plurality of numerical values include a first numerical value corresponding to a node 2 and a second numerical value corresponding to a node 4. When the node 2 is selected as destination of first data, a processing part 1b decreases the first numerical value and increases the second numerical value corresponding to the node 4 not selected. When the second numerical value becomes equal to or more than a specified value, the processing part 1b selects the node 4 as the destination of second data.SELECTED DRAWING: Figure 1

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.

特開2016−82333号公報JP 2006-82333 A 特開2010−56898号公報JP 2010-56898 A 特開平4−127271号公報JP-A-4-127271

冗長化された複数の中継ノードによりデータの転送を分散して行う場合、転送対象のデータを各中継ノードへ振り分ける制御装置を設けることが考えられる。例えば、各中継ノードの処理能力が同程度であれば、制御装置が、所定のルールに従い、各中継ノードに対して、ある程度均等にデータを振り分けることで、各中継ノードの負荷を適切に分散できる。しかし、実際の運用では、制御装置が、各中継ノードに対して常に均等にデータを振り分けられるとは限らず、データの振分先の中継ノードの選択に偏りが生じ得る。そこで、ノード選択に偏りが生じることを考慮し、偏りを補正するための仕組みが問題となる。   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の実施の形態の制御装置を示す図である。It is a figure which shows the control apparatus of 1st Embodiment. 第2の実施の形態の情報処理システムの例を示す図である。It is a figure which shows the example of the information processing system of 2nd Embodiment. 第2の実施の形態の振分サーバのハードウェア例を示す図である。It is a figure which shows the hardware example of the distribution server of 2nd Embodiment. 第2の実施の形態の振分サーバの機能例を示す図である。It is a figure which shows the function example of the distribution server of 2nd Embodiment. 第2の実施の形態のパケットの例を示す図である。It is a figure which shows the example of the packet of 2nd Embodiment. 第2の実施の形態のラウンドロビンテーブルの例を示す図である。It is a figure which shows the example of the round robin table of 2nd Embodiment. 第2の実施の形態のアンセレクトカウンタの例を示す図である。It is a figure which shows the example of the unselect counter of 2nd Embodiment. 第2の実施の形態のUSC更新ルールの例を示す図である。It is a figure which shows the example of the USC update rule of 2nd Embodiment. 第2の実施の形態のパケット転送例を示すフローチャートである。It is a flowchart which shows the packet transfer example of 2nd Embodiment. 第2の実施の形態の転送先振替の具体例を示す図である。It is a figure which shows the specific example of the transfer destination transfer of 2nd Embodiment. 第2の実施の形態に対する比較例(その1)を示す図である。It is a figure which shows the comparative example (the 1) with respect to 2nd Embodiment. 第2の実施の形態に対する比較例(その2)を示す図である。It is a figure which shows the comparative example (the 2) with respect to 2nd Embodiment. 第3の実施の形態のパケットの例を示す図である。It is a figure which shows the example of the packet of 3rd Embodiment. 第3の実施の形態のセッション管理テーブルの例を示す図である。It is a figure which shows the example of the session management table of 3rd Embodiment. 第3の実施の形態のパケット転送例を示すフローチャートである。It is a flowchart which shows the packet transfer example of 3rd Embodiment. 第3の実施の形態の転送先振替の解除例を示すフローチャートである。15 is a flowchart illustrating an example of canceling transfer destination transfer according to the third embodiment. 第3の実施の形態の転送先振替の具体例を示す図である。It is a figure which shows the specific example of the transfer destination transfer of 3rd Embodiment. 第3の実施の形態に対する比較例を示す図である。It is a figure which shows the comparative example with respect to 3rd Embodiment. 転送先振替の他の例(その1)を示す図である。It is a figure which shows the other example (the 1) of transfer destination transfer. 転送先振替の他の例(その2)を示す図である。It is a figure which shows the other example (the 2) of transfer destination transfer. 振分累積カウンタの例を示す図である。It is a figure which shows the example of a distribution accumulation counter. 振分累積カウンタとUSCとの比較例を示す図である。It is a figure which shows the comparative example of a distribution accumulation counter and USC.

以下、本実施の形態について図面を参照して説明する。
[第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 control device 1, nodes 2, 3, 4 and destination devices 5, 6, 7. The control device 1 is connected to the nodes 2, 3, and 4. Nodes 2, 3, and 4 are connected to the network N1. The destination devices 5, 6, and 7 are connected to the network N1. Furthermore, the control device 1 is connected to the network N2. Terminal devices 8 and 9 are also connected to the network N2. However, the control device 1 may be connected to the nodes 2, 3, and 4 via a switch device (not shown).

ここで、制御装置1は、データを転送する際にノード2,3,4の何れかを選択して転送する。すなわち、制御装置1は、データを転送する際に、ノード2,3,4のうちの何れかを転送先に選択し、選択した転送先のノードに当該データを転送する。   Here, the control device 1 selects and transfers one of the nodes 2, 3 and 4 when transferring the data. That is, when transferring data, the control device 1 selects one of the nodes 2, 3, and 4 as a transfer destination, and transfers the data to the selected transfer destination node.

端末装置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 terminal devices 8 and 9 are the destination devices 5, 6, and 7, respectively. Data may be transmitted in units called packets. Data transmitted by each of the terminal devices 8 and 9 can pass through a plurality of routes before reaching the destination device 5, 6, or 7. The first route is a route that passes through the control device 1 and the node 2. The second route is a route that passes through the control device 1 and the node 3. The third route is a route that passes through the control device 1 and the node 4. Which of the nodes 2, 3, 4 is routed is controlled by the control device 1. Therefore, the nodes 2, 3, and 4 are candidates for data transfer destinations by the control device 1. The “data transfer destination candidate” may be expressed as “data distribution destination candidate”.

ノード2,3,4は、ネットワークN1にデータを転送する。ネットワークN1は、宛先装置5,6,7にデータを転送する。ノード2,3,4はデータの中継を行う中継ノードであるといえる。なお、ノード2,3,4それぞれによるデータの転送処理の能力は、ほぼ同じであるとする。   The nodes 2, 3, and 4 transfer data to the network N1. The network N1 transfers data to the destination devices 5, 6, and 7. It can be said that the nodes 2, 3, and 4 are relay nodes that relay data. It is assumed that the capacity of data transfer processing by the nodes 2, 3, and 4 is substantially the same.

制御装置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 control device 1 includes a storage unit 1a and a processing unit 1b. The storage unit 1a may be a volatile storage device such as a RAM (Random Access Memory) or a non-volatile storage device such as an HDD (Hard Disk Drive) or a flash memory. The processing unit 1b may include a CPU (Central Processing Unit), a DSP (Digital Signal Processor), an ASIC (Application Specific Integrated Circuit), an FPGA (Field Programmable Gate Array), and the like. The processing unit 1b may be a processor that executes a program. Here, the “processor” may include a set of multiple processors (multiprocessor).

記憶部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 nodes 2, 3, and 4 is selected. The plurality of numerical values include a numerical value corresponding to the node 2, a numerical value corresponding to the node 3, and a numerical value corresponding to the node 4.

例えば、ノード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 node 2 is “1”. The identification information of the node 3 is “2”. The identification information of the node 4 is “3”. The storage unit 1a stores a table T1 in which node identification information (node #) is associated with a counter. For example, at a certain timing, a record of node # “1” and counter “−1” is registered in the table T1. The numerical value registered in the counter item is a numerical value related to the number of times the corresponding node is selected as a data transfer destination by the processing unit 1b (a specific counting method will be described later). Similarly, a record of node # “2” and counter “−2” is registered in the table T1. Further, records of node # “3” and counter “3” are registered in the table T1. Note that the initial value of the counter of each of the nodes 2, 3, and 4 is, for example, “0”.

処理部1bは、所定のルールに従って、転送対象のデータを、ノード2,3,4の何れに振り分けるか(何れに転送するか)を判断する。処理部1bが利用する所定のルールとしては、次の例が考えられる。   The processing unit 1b determines to which of the nodes 2, 3 and 4 the data to be transferred is distributed (to which data is transferred) according to a predetermined rule. The following example can be considered as the predetermined rule used by the processing unit 1b.

第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 nodes 2, 3, and 4 with equal probability for each data destination (for example, a rule for determining a transfer destination using a round robin or a random number) can be considered. . When round robin is performed for each data destination, the processing unit 1b distributes the data destined for the destination device 5 to the nodes 2, 3, and 4 in order (node 2 is the next node 4). Further, the processing unit 1b distributes the data destined for the destination device 6 to the nodes 2, 3, and 4 in order (the node 2 is next to the node 4). Further, the processing unit 1b distributes the data destined for the destination device 7 to the nodes 2, 3, and 4 in order (the node 2 is the node next to the node 4). As a result, access from the terminal devices 8 and 9 can be distributed to each redundant path for each destination.

第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 processing unit 1b identifies a flow from 5 tuples (protocol number, transmission source / destination IP address and transmission source / destination port number) included in an IP (Internet Protocol) packet, and calculates by the 5 tuples. The transfer destination may be selected according to the hash value to be processed. Thereby, the access from the terminal devices 8 and 9 can be distributed to each redundant path for each flow.

処理部1bは、第1のデータに対し、上記の所定のルールに従って、第1のノードを転送先として選択する。すると、処理部1bは、第1のノードに対応するカウンタの数値(第1の数値)を減らし、選択されなかった第2のノードに対応するカウンタの数値(第2の数値)を増やす。減らす量、および、増やす量は、任意に決定できる。第1の実施の形態の例では、増減量の合計が“0”になるように、減らす量を“−2”、増やす量を“1”とする。   The processing unit 1b selects the first node as the transfer destination for the first data according to the predetermined rule. Then, the processing unit 1b decreases the counter value (first numerical value) corresponding to the first node, and increases the counter value (second numerical value) corresponding to the second node that is not selected. The amount to be reduced and the amount to be increased can be arbitrarily determined. In the example of the first embodiment, the decrease amount is set to “−2” and the increase amount is set to “1” so that the total increase / decrease amount becomes “0”.

例えば、処理部1bは、第1のデータに対して、ノード2を転送先として選択したとする。この場合、処理部1bは、テーブルT1のノード#“1”のカウンタの数値を“2”だけ減らす。一方、処理部1bは、テーブルT1におけるノード#“2”のカウンタの数値、および、ノード#“3”のカウンタの数値を、それぞれ“1”だけ増やす。   For example, it is assumed that the processing unit 1b selects the node 2 as the transfer destination for the first data. In this case, the processing unit 1b decreases the numerical value of the counter of the node # “1” in the table T1 by “2”. On the other hand, the processing unit 1b increases the numerical value of the counter of the node # “2” and the numerical value of the counter of the node # “3” by “1”, respectively.

より具体的には、処理部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 processing unit 1b updates the numerical value “−1” registered for the node # “1” in the table T1 to −1-2 = −3. In the table T1, the processing unit 1b updates the numerical value “−2” registered for the node # “2” to −2 + 1 = −1. In the table T1, the processing unit 1b updates the numerical value “3” registered for the node # “3” to 3 + 1 = 4. The table T1a shows after the results of these updates are reflected. It can also be said that the processing unit 1b counts the number of times that the nodes 2, 3, and 4 are not selected as data transfer destinations.

そして、処理部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 processing unit 1b selects the second node associated with the second numerical value that is equal to or greater than the predetermined value as the transfer destination of the second data. . For example, the storage unit 1a stores in advance the counter threshold value = 4 as the predetermined value. In the example of the table T1a, the value of the counter corresponding to the node 4 (node # “3”) is “4”. Therefore, the processing unit 1b detects that the numerical value “4” corresponding to the node 4 is equal to or greater than the predetermined value “4”. Therefore, the processing unit 1b selects the node 4 as the transfer destination of the second data regardless of the predetermined rule described above. The processing unit 1b transfers the second data to the selected node 4.

なお、処理部1bは、ノード4を選択すると、テーブルT1aを更新する。具体的には、処理部1bは、ノード#“1”のカウンタの数値を−3+1=−2に更新する。また、処理部1bは、ノード#“2”のカウンタの数値を−1+1=0に更新する。更に、処理部1bは、ノード#“3”のカウンタの数値を4−2=2に更新する。ただし、図1では、当該更新後のテーブルの図示を省略している。   When the processing unit 1b selects the node 4, the processing unit 1b updates the table T1a. Specifically, the processing unit 1b updates the numerical value of the counter of the node # “1” to −3 + 1 = −2. Further, the processing unit 1b updates the numerical value of the counter of the node # “2” to −1 + 1 = 0. Further, the processing unit 1b updates the numerical value of the counter of the node # “3” to 4-2 = 2. However, in FIG. 1, illustration of the updated table is omitted.

ところで、例えば、処理部1bが、宛先毎にラウンドロビンで負荷分散を行う場合、複数のデータの各宛先に対してラウンドロビンにより選択される転送先が同期すると、特定のノードへのトラフィックが、バースト的に増大することがある。この場合、該当のノードに対するデータの転送待ちが発生し、最悪の場合、バッファあふれによりデータが廃棄され得る。   By the way, for example, when the processing unit 1b performs load distribution in a round robin manner for each destination, if the transfer destination selected by the round robin is synchronized with respect to each destination of a plurality of data, traffic to a specific node is May increase in bursts. In this case, data transfer waiting for the corresponding node occurs, and in the worst case, data may be discarded due to buffer overflow.

また、処理部1bが、フロー毎に一意となるように、転送先のノードを選択する場合でも、複数のフローの転送先が特定のノードに集中すると、特定のノードへのトラフィックがバースト的に増大し、同様の問題が生じ得る。   Further, even when the processing unit 1b selects a transfer destination node so as to be unique for each flow, if the transfer destinations of a plurality of flows are concentrated on a specific node, traffic to the specific node is bursty. And similar problems can arise.

そこで、ノード選択に偏りが発生することを考慮し、偏りを補正するための仕組みが問題となる。
例えば、複数のノードへデータの振分を行う装置が、選択された累積回数をノード毎に記憶し、累積回数が相対的に多いノードの存在を検出することで、ノード選択の偏りを検出し、偏りのあるノード以外のノードに振分先を振り替える方法も考えられる。具体的には、振分を行う装置が、ある中継ノードに対する振分の累積回数と他の中継ノードに対する振分の累積回数との比較を、中継ノードの組み合わせを変えながら総当たりで行うことで、累積回数が比較的多い中継ノードの存在を検出し得る。しかし、この方法では、ノードの数が増すと、比較に要する演算量が過大になる可能性がある。
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 control device 1 counts down the counter of the node selected as the data transfer destination, and counts up the counter of the node not selected. For this reason, the control device 1 can efficiently identify a node with a relatively small number of times selected as a transfer destination based on the counter. In the example of FIG. 1, the control device 1 can determine that there is a bias in node selection by detecting that the counter value of the node 4 is equal to or greater than a predetermined threshold. This is because the relatively large number of times that node 4 has not been selected means that the number of times that another node (for example, both of nodes 2 and / or 3) has been selected is relatively large. Because. Furthermore, since a node that has not been selected a relatively large number of times has a relatively small amount of distributed data, it is considered that resources (including resources used for data transfer) have a relatively large margin. Therefore, the control device 1 can determine that it is better to preferentially select the node 4 when attempting to distribute the data to the nodes 2, 3, 4 evenly to some extent.

このように、制御装置1は、ノード選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべきノードの両方をテーブルT1aのカウンタの値によって効率的に判定できる。特に、前述の比較例のように、ノード間での選択の累積回数の比較を総当たりで行って偏りを検出する方法よりも、演算量を少なくすることができる。   In this way, the control device 1 can efficiently determine both the occurrence of bias in node selection and the nodes to be selected as transfer destinations to correct the bias based on the counter values in the table T1a. . In particular, as in the above-described comparative example, the amount of calculation can be reduced as compared with the method of detecting the bias by comparing the cumulative number of selections between nodes in a brute force manner.

こうして、制御装置1によれば、ノード選択の偏りを省演算量で補正可能になる。その結果、制御装置1のデータの転送先の選択に伴う演算を高速化でき、端末装置8,9と宛先装置5,6,7との間の通信の遅延の低減に寄与する。   Thus, according to the control device 1, it is possible to correct the bias in node selection with a small amount of calculation. As a result, the calculation accompanying the selection of the data transfer destination of the control device 1 can be speeded up, which contributes to a reduction in communication delay between the terminal devices 8, 9 and the destination devices 5, 6, 7.

以下では、より具体的な情報処理システムを例示し、制御装置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 control apparatus 1 is demonstrated in detail.
[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 distribution servers 100, 100a, 100b, relay servers 200, 200a, 200b, business servers 300, 300a, 300b,..., 300m, and a switch (SW: SWitch) 400. including.

振分サーバ100,100a,100bおよび中継サーバ200,200a,200bはSW400に接続されている。中継サーバ200,200a,200bおよび業務サーバ300,300a,300b,・・・,300mは、ネットワーク10に接続されている。   The distribution servers 100, 100a, 100b and the relay servers 200, 200a, 200b are connected to the SW 400. Relay servers 200, 200a, 200b and business servers 300, 300a, 300b,..., 300m are connected to the network 10.

また、振分サーバ100,100a,100bは、ネットワーク20に接続されている。更に、ネットワーク20には、クライアント500,500a,500b,・・・,500nが接続されている。ネットワーク10,20は、例えば、LAN(Local Area Network)である。ただし、ネットワーク10,20は、WAN(Wide Area Network)でもよい。   The distribution servers 100, 100 a, 100 b are connected to the network 20. Furthermore, clients 500, 500a, 500b,..., 500n are connected to the network 20. The networks 10 and 20 are, for example, LANs (Local Area Networks). However, the networks 10 and 20 may be a WAN (Wide Area Network).

第2の実施の形態の情報処理システムは、クライアント500,500a,500b,・・・,500nそれぞれによる業務サーバ300,300a,300b,・・・,300mへのアクセスを中継し、クライアントとWebサーバとの間の通信を実現する。   The information processing system according to the second embodiment relays access to the business servers 300, 300a, 300b,..., 300m by the clients 500, 500a, 500b,. Communication between the two.

ここで、第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 layer 2 of the OSI (Open Systems Interconnection) reference model. Further, IP (Internet Protocol) is used as a communication protocol in the layer 3. Further, UDP (User Datagram Protocol) or TCP (Transmission Control Protocol) is used as a communication protocol in the layer 4.

振分サーバ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 distribution servers 100, 100a, 100b are server computers that receive packets transmitted by the clients 500, 500a, 500b,..., 500n and distribute them to the relay servers 200, 200a, 200b. The distribution servers 100, 100a, 100b distribute packets to each relay server by designating the MAC (Media Access Control) addresses of the relay servers 200, 200a, 200b that are the distribution destinations. Here, the “allocation destination” of the packet by the allocation servers 100, 100a, 100b corresponds to the “forwarding destination” of the packet by the allocation servers 100, 100a, 100b. The distribution servers 100, 100a, and 100b are an example of the control device 1 according to the first embodiment.

中継サーバ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 relay servers 200, 200 a, and 200 b are server computers that accept packets distributed by the distribution servers 100, 100 a, and 100 b and transfer them to the network 10. The packet transfer processing capabilities of the relay servers 200, 200a, and 200b are almost the same. Routing from the relay server 200, 200a, 200b to the destination business server (any of the business servers 300, 300a, 300b,..., 300m) is performed using IP or the like. For example, the relay servers 200, 200a, and 200b transfer the packet to the next hop belonging to the network 10 according to the routing table held by each of them. It can also be said that the relay servers 200, 200a, and 200b form one virtual router (virtual router). The relay servers 200, 200a, and 200b are examples of the nodes 2, 3, and 4 according to the first embodiment.

第2の実施の形態の情報処理システムでは、各クライアントからのアクセスを受け付けるエッジに振分サーバ100,100a,100bを設けている。そして、振分サーバ100,100a,100bによる負荷分散によって、パケットの宛先IPアドレス毎にECMP(Equal Cost Multi Path)ルーティングの実現を図る。ECMPルーティングは、送信元装置と宛先装置との間に複数のパスを設け、各パスを均等に用いて、パケットを転送する手法である。   In the information processing system according to the second embodiment, distribution servers 100, 100a, and 100b are provided at the edges that accept access from each client. Then, ECMP (Equal Cost Multi Path) routing is realized for each destination IP address of the packet by load distribution by the distribution servers 100, 100a, and 100b. ECMP routing is a technique in which a plurality of paths are provided between a transmission source device and a destination device, and packets are transferred using each path equally.

業務サーバ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 business servers 300, 300a, 300b,..., 300m are server computers that provide predetermined business services to the clients 500, 500a, 500b,. The business service is, for example, a name resolution service based on DNS (Domain Name System). DNS uses UDP. However, the business service may be a Web service using TCP, for example. The business servers 300, 300a, 300b,..., 300m are examples of the destination devices 5, 6, and 7 according to the first embodiment.

SW400は、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの接続を集約するスイッチ装置である。
クライアント500,500a,500b,・・・,500nは、ユーザにより利用されるクライアントコンピュータである。クライアント500,500a,500b,・・・,500nは、第1の実施の形態の端末装置8,9の一例である。
The SW 400 is a switch device that aggregates connections of the distribution servers 100, 100a, 100b and the relay servers 200, 200a, 200b.
The clients 500, 500a, 500b,..., 500n are client computers used by users. The clients 500, 500a, 500b,..., 500n are examples of the terminal devices 8 and 9 according to the first embodiment.

ここで、ネットワーク機能をサーバコンピュータ上のソフトウェアによって実現する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, relay servers 200, 200a, and 200b) and executing the data transfer process in a distributed manner, the data transfer processing performance can be improved. At this time, by providing a plurality of distribution servers that distribute data to the relay servers 200, 200a, and 200b (for example, the distribution servers 100, 100a, and 100b), the data distribution processing performance can be improved.

第2の実施の形態の例では、振分サーバ100,100a,100bは、パケットの宛先IPアドレス毎に、ラウンドロビンにより、パケットの振分先(転送先)の中継サーバを選択する。ただし、この手法では、あるタイミングにおいて、複数の宛先IPアドレスのパケットに対して同じ中継サーバが振分先として選択され、特定の中継サーバにトラフィックが集中する可能性がある。このようなトラフィックの集中は、通信の遅延の要因になる。そこで、振分サーバ100,100a,100bは、トラフィックの集中を抑えるため、振分先として選択される中継サーバの偏りを抑える機能を提供する。   In the example of the second embodiment, the distribution servers 100, 100a, and 100b select a packet distribution destination (transfer destination) relay server by round robin for each packet destination IP address. However, with this method, at a certain timing, the same relay server may be selected as a distribution destination for packets with a plurality of destination IP addresses, and traffic may concentrate on a specific relay server. Such traffic concentration causes communication delay. Therefore, the distribution servers 100, 100a, and 100b provide a function of suppressing the bias of the relay servers selected as distribution destinations in order to suppress the concentration of traffic.

図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 distribution server 100 includes a processor 101, a RAM 102, an HDD 103, an image signal processing unit 104, an input signal processing unit 105, a medium reader 106, and a communication interface 107. Each hardware is connected to the distribution server 100 bus.

プロセッサ101は、振分サーバ100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。   The processor 101 is hardware that controls information processing of the distribution server 100. The processor 101 may be a multiprocessor. The processor 101 is, for example, a CPU, DSP, ASIC, or FPGA. The processor 101 may be a combination of two or more elements of CPU, DSP, ASIC, FPGA, and the like.

RAM102は、振分サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。   The RAM 102 is a main storage device of the distribution server 100. The RAM 102 temporarily stores at least part of an OS (Operating System) program and application programs to be executed by the processor 101. The RAM 102 stores various data used for processing by the processor 101.

HDD103は、振分サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。振分サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。   The HDD 103 is an auxiliary storage device of the distribution server 100. The HDD 103 magnetically writes and reads data to and from the built-in magnetic disk. The HDD 103 stores an OS program, application programs, and various data. The distribution server 100 may include other types of auxiliary storage devices such as flash memory and SSD (Solid State Drive), or may include a plurality of auxiliary storage devices.

画像信号処理部104は、プロセッサ101からの命令に従って、振分サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11として、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。   The image signal processing unit 104 outputs an image to the display 11 connected to the distribution server 100 in accordance with an instruction from the processor 101. As the display 11, a CRT (Cathode Ray Tube) display, a liquid crystal display, or the like can be used.

入力信号処理部105は、振分サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。   The input signal processing unit 105 acquires an input signal from the input device 12 connected to the distribution server 100 and outputs the input signal to the processor 101. As the input device 12, for example, a pointing device such as a mouse or a touch panel, a keyboard, or the like can be used.

媒体リーダ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 medium reader 106 is a device that reads programs and data recorded on the recording medium 13. As the recording medium 13, for example, a magnetic disk such as a flexible disk (FD) or an HDD, an optical disk such as a CD (Compact Disc) or a DVD (Digital Versatile Disc), or a magneto-optical disk (MO) is used. Can be used. Further, as the recording medium 13, for example, a non-volatile semiconductor memory such as a flash memory card can be used. For example, the medium reader 106 stores the program and data read from the recording medium 13 in the RAM 102 or the HDD 103 in accordance with an instruction from the processor 101.

通信インタフェース107は、ネットワーク10を介して他の装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。   The communication interface 107 communicates with other devices via the network 10. The communication interface 107 may be a wired communication interface or a wireless communication interface.

振分サーバ100a,100b、中継サーバ200,200a,200b、業務サーバ300,300a,300b,・・・,300mおよびクライアント500,500a,500b,・・・,500nも、振分サーバ100と同様のハードウェアを用いて実現できる。   The distribution servers 100a, 100b, the relay servers 200, 200a, 200b, the business servers 300, 300a, 300b,..., 300m and the clients 500, 500a, 500b,. It can be realized using hardware.

図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 distribution server 100 includes a storage unit 110, an identification unit 120, a bias determination unit 130, and a distribution determination unit 140. For example, the storage unit 110 is realized using a storage area secured in the RAM 102 or the HDD 103. For example, the processor 101 exhibits the functions of the identification unit 120, the bias determination unit 130, and the distribution determination unit 140 by executing a program stored in the RAM 102.

記憶部110は、パケットの転送制御に用いられる制御情報を記憶する。制御情報は、ラウンドロビンによる宛先毎の振分先を管理するためのラウンドロビンテーブルと、中継サーバが振分先として選択された回数に関するカウンタとを含む。カウンタは、中継サーバ200,200a,200bそれぞれに対して設けられる。カウンタは、振分先として選択されなかった回数のカウントに用いられる。   The storage unit 110 stores control information used for packet transfer control. The control information includes a round robin table for managing a distribution destination for each destination by round robin, and a counter regarding the number of times the relay server is selected as the distribution destination. A counter is provided for each of the relay servers 200, 200a, and 200b. The counter is used to count the number of times that it has not been selected as a distribution destination.

識別部120は、クライアント500,500a,500b,・・・,500nにより送信されたパケットを受け付け、パケットのヘッダ情報を参照して、パケットの宛先(宛先IPアドレス)を識別する。   The identification unit 120 accepts packets transmitted by the clients 500, 500a, 500b,..., 500n, and identifies the destination (destination IP address) of the packet with reference to the header information of the packet.

偏り判定部130は、記憶部110に記憶された中継サーバ毎のカウンタを参照して、振分先の選択に偏りがあるか否かを判定する。具体的には、偏り判定部130は、中継サーバ毎のカウンタの値と、所定の偏り閾値とを比較する。そして、偏り判定部130は、少なくとも1つ中継サーバに対応するカウンタの値が、偏り閾値以上である場合に、振分先の選択に偏りがあると判定する。偏り判定部130は、全ての中継サーバに対応するカウンタの値が偏り閾値未満である場合に、振分先の選択に偏りがないと判定する。   The bias determination unit 130 refers to the counter for each relay server stored in the storage unit 110 and determines whether there is a bias in selection of the distribution destination. Specifically, the bias determination unit 130 compares the counter value for each relay server with a predetermined bias threshold. Then, the bias determination unit 130 determines that there is a bias in selection of the distribution destination when the value of the counter corresponding to at least one relay server is equal to or greater than the bias threshold. The bias determination unit 130 determines that there is no bias in the selection of the distribution destination when the counter values corresponding to all the relay servers are less than the bias threshold.

振分決定部140は、偏り判定部130により偏りがないと判定された場合、記憶部110に記憶されたラウンドロビンテーブルに基づいて、識別部120により識別された宛先IPアドレスに対する振分先を決定する。振分決定部140は、決定した振分先の中継ノードにパケットを転送する。   The distribution determination unit 140 determines the distribution destination for the destination IP address identified by the identification unit 120 based on the round robin table stored in the storage unit 110 when the bias determination unit 130 determines that there is no bias. decide. The distribution determination unit 140 transfers the packet to the determined relay node.

一方、振分決定部140は、偏り判定部130により偏りがあると判定された場合、記憶部110に記憶されたカウンタの値に基づいて、パケットの振分先を決定する。振分決定部140は、決定した振分先の中継ノードにパケットを転送する。   On the other hand, when the bias determination unit 130 determines that there is a bias, the distribution determination unit 140 determines a packet allocation destination based on the value of the counter stored in the storage unit 110. The distribution determination unit 140 transfers the packet to the determined relay node.

図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 distribution determination unit 140 rewrites the destination MAC address included in the packet P1 with the MAC address of the relay server that is the distribution destination, thereby designating the relay server that is the distribution destination of the packet P1 to the SW 400. When SW400 receives packet P1 from distribution server 100, SW400 transmits packet P1 from the port corresponding to the destination MAC address (corresponding to the port to which the specified relay server is connected).

なお、ペイロードf1、TCP/UDPヘッダf2およびIPヘッダf3を含み、MACヘッダf4を含まない、レイヤ3のPDU(Protocol Data Unit)は、「IPパケット」と呼ばれることもある。この場合、MACヘッダf4を含むレイヤ2のPDUは、「フレーム」と呼ばれることもある(パケットP1は「フレーム」と呼ばれてもよい)。   A layer 3 PDU (Protocol Data Unit) that includes the payload f1, the TCP / UDP header f2, and the IP header f3 but does not include the MAC header f4 may be referred to as an “IP packet”. In this case, the layer 2 PDU including the MAC header f4 may be referred to as a “frame” (the packet P1 may be referred to as a “frame”).

図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 storage unit 110. The round robin table 111 includes items of destination # and Svr (Server) #.

宛先#の項目には、業務サーバの識別情報が登録される。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 relay server 200 is “1”. When referring to the relay server 200, “Svr1” may be used. The identification information of the relay server 200a is “2”. When referring to the relay server 200a, it may be expressed as “Svr2”. The identification information of the relay server 200b is “3”. When referring to the relay server 200b, it may be expressed as “Svr3”.

ここで、ラウンドロビンテーブル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 relay servers 200, 200a, and 200b are sequentially selected according to the rule of the round robin. ". In addition, the setting value of the Svr # item is represented by enclosing the identification information of the relay server selected this time with a dotted circle. After Svr # “3”, the process returns to Svr # “1”.

例えば、ラウンドロビンテーブル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 relay server 200 has been selected as the latest distribution destination for the packet of destination A. This indicates that the next distribution destination for the packet of destination A is the relay server 200a.

また、例えば、ラウンドロビンテーブル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 relay server 200a is selected as the latest distribution destination for the packet of destination B. This indicates that the next distribution destination for the packet of destination B is the relay server 200b.

また、例えば、ラウンドロビンテーブル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 relay server 200b is selected as the latest distribution destination for the packet of destination C. This indicates that the next distribution destination is the relay server 200 for the packet of the destination C.

更に、ラウンドロビンテーブル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 storage unit 110. The USC 112 includes items of Svr1, Svr2, and Svr3.

Svr1の項目には、中継サーバ200に対応するカウント値が登録される。Svr2の項目には、中継サーバ200aに対応するカウント値が登録される。Svr3の項目には、中継サーバ200bに対応するカウント値が登録される。   In the item of Svr1, a count value corresponding to the relay server 200 is registered. The count value corresponding to the relay server 200a is registered in the item of Svr2. In the item of Svr3, a count value corresponding to the relay server 200b is registered.

例えば、USC112には、Svr1に対して“−1”、Svr2に対して“−1”、Svr3に対して“2”という数値が登録されている。これは、あるタイミングにおける中継サーバ200に対応するカウント値が“−1”であり、中継サーバ200aに対応するカウント値が“−1”であり、中継サーバ200bに対応するカウント値が“2”であることを示す。   For example, in the USC 112, numerical values “−1” for Svr1, “−1” for Svr2, and “2” for Svr3 are registered. This is because the count value corresponding to the relay server 200 at a certain timing is “−1”, the count value corresponding to the relay server 200 a is “−1”, and the count value corresponding to the relay server 200 b is “2”. Indicates that

図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 USC update rule 113 is stored in the storage unit 110 in advance. The USC update rule 113 includes items of category and added value.

区分の項目には、振分先として選択されたこと(“選択”と表記する)、または、選択されなかったこと(“非選択”と表記する)を示す区分が登録される。加算値の項目には、区分に応じた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 112 corresponding to the category is registered.

例えば、USC更新ルール113には、区分が“非選択”、加算値が“+1”というレコードが登録されている。このレコードは、振分先として選択されなかった場合に、USC112における該当の中継サーバのカウント値に、加算値“+1”を加算することを示す。   For example, in the USC update rule 113, a record with the classification “non-selected” and the added value “+1” is registered. This record indicates that the addition value “+1” is added to the count value of the corresponding relay server in the USC 112 when it is not selected as a distribution destination.

また、例えば、USC更新ルール113には、区分が“選択”、加算値が“−(X−1)”というレコードが登録されている。このレコードは、振分先として選択された場合に、USC112における該当の中継サーバのカウント値に、加算値“−(X−1)”を加算することを示す。これは、「当該カウント値から“(X−1)”を減算する」ことに相当する。ここで、Xは、パケットの振分先の候補となる中継サーバの数である。第2の実施の形態の例では、X=3である。   Further, for example, in the USC update rule 113, a record having a classification “selection” and an addition value “− (X−1)” is registered. This record indicates that, when selected as a distribution destination, an addition value “− (X−1)” is added to the count value of the corresponding relay server in the USC 112. This corresponds to “subtracting“ (X−1) ”from the count value”. Here, X is the number of relay servers that are candidates for packet distribution. In the example of the second embodiment, X = 3.

例えば、USC112において、Svr1、Svr2およびSvr3の各カウント値が何れも“0”であるときに、振分決定部140が中継サーバ200に、あるパケットを振り分けた場合を考える。この場合、中継サーバ200は、振分先として選択されたことになる(中継サーバ200は“選択”に区分される)。一方、中継サーバ200a,200bが振分先として選択されなかったことになる(中継サーバ200a,200bは“非選択”に区分される)。   For example, in the USC 112, consider a case where the distribution determination unit 140 distributes a packet to the relay server 200 when the count values of Svr1, Svr2, and Svr3 are all “0”. In this case, the relay server 200 is selected as a distribution destination (the relay server 200 is classified as “selected”). On the other hand, the relay servers 200a and 200b are not selected as distribution destinations (the relay servers 200a and 200b are classified as “non-selected”).

このため、振分決定部140は、USC更新ルール113に従って、USC112におけるSvr1のカウント値から“3−1=2”を減算する。同様に、振分決定部140は、USC112におけるSvr2のカウント値に“+1”を加算する。同様に、振分決定部140は、USC112におけるSvr3のカウント値に“+1”を加算する。   Therefore, the distribution determination unit 140 subtracts “3-1 = 2” from the count value of Svr1 in the USC 112 in accordance with the USC update rule 113. Similarly, the distribution determination unit 140 adds “+1” to the count value of Svr2 in the USC 112. Similarly, the distribution determination unit 140 adds “+1” to the count value of Svr3 in the USC 112.

ただし、USC更新ルール113で例示した加算値および減算値は一例であり、上記以外の値としてもよい。
次に、振分サーバ100,100a,100bの処理手順を説明する。以下では、主に振分サーバ100の手順を説明するが、振分サーバ100a,100bも同様の手順を実行する。
However, the addition value and the subtraction value exemplified in the USC update rule 113 are examples, and values other than those described above may be used.
Next, the processing procedure of the distribution servers 100, 100a, 100b will be described. In the following, although the procedure of the distribution server 100 will be mainly described, the distribution servers 100a and 100b also execute the same procedure.

図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 identification unit 120 receives the packet P1 transmitted by any client. The identification unit 120 refers to the IP header f3 of the packet P1 and identifies the business server identification information corresponding to the destination IP address of the packet P1.

(S12)偏り判定部130は、記憶部110に記憶されたUSC112を参照して、USC112のカウント値が、偏り閾値以上の中継サーバがあるか否かを判定する。USC112のカウント値が、偏り閾値以上の中継サーバがある場合、偏り判定部130は、ステップS13に処理を進める。USC112のカウント値が、偏り閾値以上の中継サーバがない場合、偏り判定部130は、ステップS14に処理を進める。   (S12) The bias determination unit 130 refers to the USC 112 stored in the storage unit 110, and determines whether there is a relay server in which the count value of the USC 112 is equal to or greater than the bias threshold. If there is a relay server whose USC 112 count value is greater than or equal to the bias threshold value, the bias determination unit 130 proceeds to step S13. If there is no relay server having a count value of USC 112 equal to or greater than the bias threshold, the bias determination unit 130 proceeds to step S14.

(S13)振分決定部140は、ステップS12でUSC112のカウント値が偏り閾値以上であると判定された中継サーバを振分先に決定する。そして、振分決定部140は、ステップS15に処理を進める。   (S13) The distribution determination unit 140 determines, as the distribution destination, the relay server that has been determined in step S12 that the count value of the USC 112 is equal to or greater than the bias threshold. Then, the distribution determination unit 140 proceeds to step S15.

(S14)振分決定部140は、記憶部110に記憶されたラウンドロビンテーブル111を参照して、ステップS11で特定された業務サーバの識別情報に対して、振分先の中継サーバを決定する。   (S14) The distribution determination unit 140 refers to the round robin table 111 stored in the storage unit 110, and determines the relay server that is the distribution destination for the business server identification information specified in step S11. .

(S15)振分決定部140は、USC112を更新する。具体的には、振分決定部140は、記憶部110に記憶されたUSC更新ルール113に従って、USC112における各中継サーバのカウント値を更新する。第2の実施の形態の例では、振分決定部140は、今回振分先として選択された中継サーバのカウント値を“2”減らし、今回振分先として選択されなかった中継サーバのカウント値を“1”増やす。   (S15) The distribution determination unit 140 updates the USC 112. Specifically, the distribution determination unit 140 updates the count value of each relay server in the USC 112 in accordance with the USC update rule 113 stored in the storage unit 110. In the example of the second embodiment, the distribution determination unit 140 decreases the count value of the relay server selected as the current distribution destination by “2”, and the count value of the relay server that is not selected as the current distribution destination. Is increased by "1".

(S16)振分決定部140は、ラウンドロビンテーブル111を更新する。具体的には、振分決定部140は、ステップS11で特定された業務サーバの識別情報に対して、今回選択した振分先の中継サーバの識別情報を、ラウンドロビンテーブル111に登録する。   (S16) The distribution determination unit 140 updates the round robin table 111. Specifically, the distribution determination unit 140 registers the identification information of the relay server selected at this time in the round robin table 111 with respect to the identification information of the business server specified in step S11.

(S17)振分決定部140は、ステップS13またはステップS14により振分先として決定した中継サーバに、受信したパケットP1を転送する。
図10は、第2の実施の形態の転送先振替の具体例を示す図である。一例として、宛先#がそれぞれ“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”である複数のパケットが、この順番で振分サーバ100に到着したとする。
(S17) The distribution determining unit 140 transfers the received packet P1 to the relay server determined as the distribution destination in step S13 or step S14.
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 server 100 arrives.

なお、宛先#が“A”であるパケットが到着する前のUSC112の各中継サーバのカウント値は、全て“0”であるとする。また、図10のUSC112は、振分サーバ100により各パケットが転送されるたびに更新される(上側から下側へ向かう方向が更新によりカウント値が推移する方向である)。更に、一例として偏り閾値は“4”であるとする。   It is assumed that the count values of the relay servers of the USC 112 before the arrival of the packet whose destination # is “A” are all “0”. 10 is updated every time each packet is transferred by the distribution server 100 (the direction from the upper side to the lower side is the direction in which the count value changes due to the update). Further, as an example, it is assumed that the bias threshold is “4”.

まず、振分サーバ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 distribution server 100 receives a packet of destination # “A”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 refers to the round robin table 111 and distributes the packet of the destination # “A” to the relay server 200 (Svr1). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0 + 1 = 1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “0 + 1 = 1”.

次に、振分サーバ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 distribution server 100 receives the packet of the destination # “B”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. Therefore, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “B” to the relay server 200a (Svr2). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “1-2 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “1 + 1 = 2”.

次に、振分サーバ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 distribution server 100 receives the packet of destination # “C”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “C” to the relay server 200b (Svr3). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “2-2 = 0”.

次に、振分サーバ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 distribution server 100 receives the packet of the destination # “D”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. Therefore, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “D” to the relay server 200 (Svr1). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0 + 1 = 1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “0 + 1 = 1”.

次に、振分サーバ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 distribution server 100 receives the packet of destination # “E”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. Therefore, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “E” to the relay server 200a (Svr2). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “1-2 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “1 + 1 = 2”.

次に、振分サーバ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 distribution server 100 receives the packet of destination # “F”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “F” to the relay server 200 (Svr1). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−1-2 = −3”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “2 + 1 = 3”.

次に、振分サーバ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 distribution server 100 receives the packet of destination # “G”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. Therefore, the distribution server 100 refers to the round robin table 111 and distributes the packet of destination # “G” to the relay server 200a (Svr2). The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−3 + 1 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “3 + 1 = 4”.

次に、振分サーバ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, distribution server 100 receives the packet of destination # “H”. The distribution server 100 refers to the USC 112 and detects that the count value “4” of the relay server 200b is equal to the bias threshold “4”. For this reason, the distribution server 100 distributes the packet of destination # “H” to the relay server 200b (Svr3) without using the round robin table 111. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “4-2 = 2”.

ここで、宛先#“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 distribution server 100 transfers the distribution destination of the packet of destination # “H” from the relay server 200 determined based on the round robin table 111 to the relay server 200b determined based on the USC 112. .

このように、振分サーバ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 distribution server 100 counts down the count value of the USC 112 of the relay server selected as the packet transfer destination, and counts up the count value of the USC 112 of the relay server that has not been selected. For this reason, the distribution server 100 can efficiently identify a node with a relatively small number of times selected as a transfer destination based on the USC 112. The distribution server 100 can determine that there is a bias in the selection of the packet transfer destination by detecting that the count value of the relay server 200b is equal to or greater than the bias threshold. This is because the relatively large number of times that the relay server 200b has not been selected is presumed that the number of times that either or one of the relay servers 200 and 200a has been selected is relatively large. Furthermore, it is considered that the relay server 200b having a relatively large number of times of not being selected has a smaller amount of distributed traffic than the relay servers 200 and 200a. For this reason, it is considered that the resources of the interface connected to the relay server 200b of the SW 400 (for example, the buffer for storing the transfer waiting packet) and the resources of the relay server 200b are relatively free. Accordingly, the distribution server 100 can determine that it is better to preferentially select the relay server 200b when attempting to distribute data to the relay servers 200, 200a, and 200b evenly to some extent.

このように、振分サーバ100は、中継サーバの選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべき中継サーバの両方をUSC112によって効率的に判定できる。こうして、中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100のデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと、業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。   As described above, the distribution server 100 can efficiently determine both the fact that the selection of the relay server is biased and the relay server to be selected as the transfer destination in order to correct the bias by the USC 112. In this way, the selection bias of the relay server can be corrected with a small amount of calculation. As a result, the computation associated with the data transfer of the distribution server 100 can be accelerated, and communication between the clients 500, 500a, 500b,..., 500n and the business servers 300, 300a, 300b,. This contributes to a reduction in delay.

図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 distribution servers 600, 600a, 600b and relay servers 700, 700a,..., 700m are connected to SW 400. However, in FIG. 11, “relay server” represents identification information “Svr1”, “Svr2”,..., “Svr10” of the relay servers 700, 700a,. However, it may be written similarly).

振分サーバ600,600a,600bは、それぞれラウンドロビンテーブル601,601a,601bを用いて、パケットの振分先を決定するが、USC112に相当する情報を保持しない点が、振分サーバ100,100a,100bと異なる。   The distribution servers 600, 600a, and 600b use the round robin tables 601, 601a, and 601b to determine packet distribution destinations, but the distribution servers 100, 100a do not hold information corresponding to the USC 112. , 100b.

例えば、振分サーバ600が、ラウンドロビンテーブル601を用いて、パケットの振分先を決定するとき、宛先毎の振分先が同期することがある。図11の例では、各宛先に対するパケットの振分先が中継サーバ700(Svr1)に偏っている。このように、振分サーバ600単体の動作において、特定の中継サーバ700にトラフィックを集中させてしまうことがある。   For example, when the distribution server 600 determines a packet distribution destination using the round robin table 601, the distribution destination for each destination may be synchronized. In the example of FIG. 11, the distribution destination of packets for each destination is biased toward the relay server 700 (Svr1). Thus, in the operation of the distribution server 600 alone, traffic may be concentrated on a specific relay server 700.

更に、振分サーバ600,600a,600bそれぞれによる振分先が同期することもある。図11の例では、振分サーバ600a,600bによる各宛先に対するパケットの振分先も中継サーバ700(Svr1)に偏っている。このように、バースト的に中継サーバ700にトラフィックが集中することがある。   Furthermore, the distribution destinations by the distribution servers 600, 600a, and 600b may be synchronized. In the example of FIG. 11, the distribution destinations of packets for each destination by the distribution servers 600a and 600b are also biased toward the relay server 700 (Svr1). In this way, traffic may concentrate on the relay server 700 in a burst manner.

この場合、SW400が備える通信インタフェースのうち、中継サーバ700と通信する通信インタフェースの負荷が特に過大になる。すると、当該通信インタフェースが備えるバッファを用いた転送待ち合わせによる遅延が増大したり、バッファあふれによるパケット廃棄が発生したりする。   In this case, among the communication interfaces provided in the SW 400, the load on the communication interface that communicates with the relay server 700 is particularly excessive. Then, a delay due to transfer waiting using a buffer included in the communication interface increases, or packet discard due to buffer overflow occurs.

これに対して、宛先毎にラウンドロビンを行わない方法も考えられる。例えば、宛先に拘わらず、パケットの到着順にラウンドロビンで、当該パケットを振り分けることも考えられる。   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 distribution servers 610, 610a, and 610b are different from the distribution servers 600, 600a, and 600b in that the packet distribution destinations are determined by round robin in the arrival order of the packets without distinguishing the packet destinations. . In this case, bursty traffic concentration with respect to the relay servers 700, 700a, 700b,..., 700m subsequent to the distribution servers 610, 610a, 610b is improved. On the other hand, since ECMP cannot be performed for each destination, when a plurality of hops by virtual routers (a set of relay servers) are stacked, a packet of a specific destination may be biased to a route via a specific relay server.

例えば、図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 relay servers 700, 700a, 700b,. The second virtual router is a set of relay servers to which the relay servers 800, 800a, 800b,. The third virtual router is a set of relay servers to which the relay servers 900, 900a, 900b,. The relay server identification information is unique within one virtual router, and each virtual router is relayed with identification information “Svr1”, “Svr2”, “Svr3”,..., “Svr10”. Includes servers. A certain relay server transfers a packet to a subsequent relay server having the same identification information as that of the relay server. The third virtual router is a virtual router subsequent to the first virtual router and the second virtual router.

この場合に、図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 relay server 900, for example. As a result, when the load on the relay server 900 increases or when a failure or the like occurs in the relay server 900, the influence on communication targeting the corresponding destination becomes excessive. As described above, it is not preferable that ECMP cannot be performed for each destination.

一方、第2の実施の形態の振分サーバ100,100a,100bによれば、個々の振分サーバ100,100a,100bが振分先の偏りを是正するので、図11で例示した特定の中継サーバに対するバースト的なトラフィックの集中の発生を抑えられる。なおかつ、振分サーバ100,100a,100bは、宛先毎にラウンドロビンを行うことで、宛先毎にECMPを実現でき、図12で例示した宛先毎のパケットの転送経路の偏りを抑えられる。   On the other hand, according to the distribution servers 100, 100a, and 100b of the second embodiment, the individual distribution servers 100, 100a, and 100b correct the distribution destination bias. Therefore, the specific relay illustrated in FIG. The occurrence of bursty traffic concentration on the server can be suppressed. In addition, the distribution servers 100, 100a, and 100b can implement ECMP for each destination by performing round robin for each destination, and can suppress the deviation of the packet transfer path for each destination illustrated in FIG.

また、振分先の選択の偏りを検出するために、振分サーバ100,100a,100bそれぞれは他のサーバと通信しなくてよい。すなわち、振分サーバ100,100a,100bは、それぞれが単体で振分先の偏りを検出できる。   Moreover, in order to detect the selection bias of the distribution destination, each of the distribution servers 100, 100a, and 100b does not need to communicate with other servers. That is, each of the distribution servers 100, 100a, and 100b can detect the distribution destination bias alone.

なお、第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 distribution determination unit 140 may determine the distribution destination by a predetermined calculation using random numbers.

また、第2の実施の形態では、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bを物理的なコンピュータ(物理マシン)により実現するものとした。これに対し、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの両方または何れか一方を、物理マシン上で動作する仮想的なコンピュータ(仮想マシン)により実現してもよい。   In the second embodiment, the distribution servers 100, 100a, 100b and the relay servers 200, 200a, 200b are realized by a physical computer (physical machine). On the other hand, you may implement | achieve both or any one of distribution server 100,100a, 100b and relay server 200,200a, 200b with the virtual computer (virtual machine) which operate | moves on a physical machine.

[第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 distribution server 100 according to the second embodiment illustrated in FIG. For this reason, in the third embodiment, each element is indicated by using the same name and symbol as those in the second embodiment. In addition, the communication protocol used in the information processing system of the third embodiment is the same as the communication protocol exemplified in the second embodiment.

ただし、第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 business servers 300, 300a, 300b,..., 300m are different from those in the second embodiment. Specifically, in the third embodiment, the business servers 300, 300a, 300b,..., 300m provide a stateful (communication mode for maintaining a session state) network function such as a firewall or a proxy. In this case, a relay server that relays communication between a certain client and a certain business server is uniquely associated with one communication session. Therefore, in the third embodiment, the distribution determination unit 140 of the distribution server 100 determines the relay server that is the distribution destination of the packet based on the hash value calculated using the header information of the packet. . This point is different from the second embodiment.

図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 distribution determination unit 140 performs a hash operation using a 5-tuple value. The distribution determination unit 140 determines the distribution destination of the packet P1 based on the hash value obtained by the hash calculation. For example, the obtained hash value may match the identification information (identification number) of any relay server. In that case, the distribution determination unit 140 can determine the relay server corresponding to the obtained hash value as the distribution destination. The distribution determination unit 140 sets the MAC address of the relay server that is the distribution destination to the D-MAC (not shown in FIG. 13) of the MAC header f4 and transmits it to the SW 400, so that the corresponding relay server Packet P1 is forwarded to.

ここで、第3の実施の形態では、振分サーバ100は、ラウンドロビンテーブル111に代えて、セッション管理テーブルを記憶する。セッション管理テーブルは、フローと、振分先の中継サーバとを管理するための情報である。   Here, in the third embodiment, the distribution server 100 stores a session management table instead of the round robin table 111. The session management table is information for managing a flow and a relay server as a distribution destination.

図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 storage unit 110. The session management table 114 includes items of flow #, Svr #, and flag.

フロー#の項目には、フローの識別情報が登録される。フローの識別情報は、パケットのヘッダ情報における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 USC 112 has determined the distribution destination for the packet of the corresponding flow is registered. When the assignment destination is determined by the USC 112, the flag is “True”. When the allocation destination is not determined by the USC 112, the flag is “False”.

例えば、セッション管理テーブル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 relay server 200b (Svr3), and the distribution destination is determined based on the USC 112.

セッション管理テーブル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 distribution server 100 according to the third embodiment will be described (the same procedure can be executed by the distribution servers 100a and 100b).

図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 identification unit 120 receives the packet P1 transmitted by any client.

(S22)識別部120は、パケットP1の5タプルの情報の組を基にフローを識別し、パケットP1に対するフローの識別情報(フロー#)を取得する。また、識別部120は、5タプルの情報を用いたハッシュ演算を行い、ハッシュ値を計算する。   (S22) The identification unit 120 identifies a flow based on the 5-tuple information set of the packet P1, and acquires flow identification information (flow #) for the packet P1. Further, the identification unit 120 performs a hash operation using information of five tuples and calculates a hash value.

(S23)偏り判定部130は、記憶部110に記憶されたUSC112を参照して、USC112のカウント値が、偏り閾値以上の中継サーバがあるか否かを判定する。USC112のカウント値が、偏り閾値以上の中継サーバがある場合、偏り判定部130は、ステップS24に処理を進める。USC112のカウント値が、偏り閾値以上の中継サーバがない場合、偏り判定部130は、ステップS27に処理を進める。   (S23) The bias determination unit 130 refers to the USC 112 stored in the storage unit 110 and determines whether there is a relay server in which the count value of the USC 112 is equal to or greater than the bias threshold. If there is a relay server whose USC 112 count value is greater than or equal to the bias threshold, the bias determination unit 130 proceeds to step S24. If there is no relay server with a count value of USC 112 equal to or greater than the bias threshold, the bias determination unit 130 proceeds to step S27.

(S24)振分決定部140は、今回のパケットP1が新規セッションのパケットであるか否かを判定する。新規セッションのパケットである場合、振分決定部140は、ステップS25に処理を進める。新規セッションのパケットでない場合、振分決定部140は、ステップS27に処理を進める。   (S24) The distribution determination unit 140 determines whether or not the current packet P1 is a packet for a new session. If the packet is a new session, the distribution determination unit 140 proceeds to step S25. If it is not a packet of a new session, the distribution determination unit 140 proceeds to step S27.

ここで、振分決定部140は、記憶部110に記憶されたセッション管理テーブル114を参照することで、ステップS24の判定を行う。具体的には、振分決定部140は、ステップS22で取得したフローの識別情報に対応するレコードがセッション管理テーブル114に登録済であるか否かを判定する。登録済である場合、振分決定部140は、新規セッションではない(すなわち、既存セッションである)と判定する。登録済でない場合、振分決定部140は、新規セッションであると判定する。   Here, the distribution determination unit 140 refers to the session management table 114 stored in the storage unit 110 to perform the determination in step S24. Specifically, the distribution determining unit 140 determines whether or not a record corresponding to the flow identification information acquired in step S22 has been registered in the session management table 114. If registered, the distribution determining unit 140 determines that the session is not a new session (that is, an existing session). If not registered, the distribution determination unit 140 determines that the session is a new session.

(S25)振分決定部140は、ステップS23でUSC112のカウント値が偏り閾値以上であると判定された中継サーバを振分先に決定する。ステップS25の処理は、振分先の振替を行うことに相当する。   (S25) The distribution determination unit 140 determines, as the distribution destination, the relay server that has been determined in step S23 that the count value of the USC 112 is equal to or greater than the bias threshold. The process of step S25 is equivalent to performing transfer of the distribution destination.

(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 distribution determination unit 140 sets a flag corresponding to the flow identification information acquired this time to “True”. Then, the distribution determining unit 140 proceeds to step S30.
(S27) The distribution determination unit 140 refers to the session management table 114 and determines whether or not the flag of the record corresponding to the flow identification information acquired in step S22 is “True”. In the case of “True”, the distribution determination unit 140 proceeds with the process to step S28. If it is not “True”, the distribution determination unit 140 proceeds to step S29. If Step S23 is No, a record corresponding to the identification information of the corresponding flow may not be registered in the session management table 114 (when the current packet P1 is a packet of a new session). In this case, the distribution determining unit 140 determines that “True” is not satisfied in step S27.

(S28)振分決定部140は、フラグに基づき振分先を決定する。具体的には、振分決定部140は、ステップS27で参照したセッション管理テーブル114のレコードに設定されたSvr#を取得する。振分決定部140は、当該Svr#に対応する中継サーバを、今回のパケットP1の振分先に決定する。そして、振分決定部140は、ステップS30に処理を進める。ステップS28の処理は、振分先の振替を継続することに相当する。   (S28) The distribution determination unit 140 determines a distribution destination based on the flag. Specifically, the distribution determining unit 140 acquires Svr # set in the record of the session management table 114 referred to in step S27. The distribution determination unit 140 determines the relay server corresponding to the Svr # as the distribution destination of the current packet P1. Then, the distribution determining unit 140 proceeds to step S30. The process of step S28 is equivalent to continuing the transfer of the distribution destination.

(S29)振分決定部140は、ステップS22で求めたハッシュ値に対応する中継サーバを、今回のパケットP1の振分先に決定する。
(S30)振分決定部140は、USC112を更新する。具体的には、振分決定部140は、記憶部110に記憶されたUSC更新ルール113に従って、USC112における各中継サーバのカウント値を更新する。第3の実施の形態の例では、振分決定部140は、今回振分先として選択された中継サーバのカウント値を“2”減らし、今回振分先として選択されなかった中継サーバのカウント値を“1”増やす。
(S29) The distribution determination unit 140 determines the relay server corresponding to the hash value obtained in step S22 as the distribution destination of the current packet P1.
(S30) The distribution determination unit 140 updates the USC 112. Specifically, the distribution determination unit 140 updates the count value of each relay server in the USC 112 in accordance with the USC update rule 113 stored in the storage unit 110. In the example of the third embodiment, the distribution determination unit 140 decreases the count value of the relay server selected as the current distribution destination by “2”, and the count value of the relay server that is not selected as the current distribution destination. Is increased by "1".

(S31)振分決定部140は、セッション管理テーブル114を更新する。具体的には、振分決定部140は、次の処理を行う。
今回のパケットP1に対してステップS26を実行した場合、振分決定部140は、今回の新規セッションのフローに関するレコードをセッション管理テーブル114に追加する。追加されるレコードのフロー#の設定値は、ステップS22で取得されたフローの識別情報となる。当該レコードのSvr#の設定値は、ステップS25で決定された振分先の中継サーバの識別情報となる。当該レコードのフラグの設定値は“True”となる。
(S31) The distribution determination unit 140 updates the session management table 114. Specifically, the distribution determination unit 140 performs the following processing.
When step S <b> 26 is executed for the current packet P <b> 1, the distribution determination unit 140 adds a record relating to the current flow of the new session to the session management table 114. The set value of the flow # of the record to be added 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 S25. The set value of the flag of the record is “True”.

今回のパケットP1に対してステップS29を実行した場合、振分決定部140は、今回のフローに関するレコードをセッション管理テーブル114に登録する。このとき、振分決定部140は、(1)今回のフローに関するレコードを新たに追加するケースもあれば、(2)今回のフローに関する既存のレコードのSvr#の設定値の更新を行うケースもある。   When step S <b> 29 is executed for the current packet P <b> 1, the distribution determination unit 140 registers a record relating to the current flow in the session management table 114. At this time, the distribution determination unit 140 may (1) newly add a record related to the current flow, or (2) update the Svr # setting value of an existing record related to the current flow. is there.

(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 unit 140 uses the existing record of the session management table 114 corresponding to the flow identification information acquired in step S22 to obtain the identification information of the relay server that is the distribution destination determined in step S29. Set to Svr #.

なお、今回のパケットP1に対してステップS28を実行した場合、振分決定部140は、セッション管理テーブル114の更新を行わなくてよい。
(S32)振分決定部140は、ステップS25またはステップS29により振分先として決定した中継サーバに、受信したパケットP1を転送する。
When step S28 is executed for the current packet P1, the allocation determination unit 140 does not need to update the session management table 114.
(S32) The distribution determination unit 140 transfers the received packet P1 to the relay server determined as the distribution destination in step S25 or step S29.

更に、振分決定部140は、セッション管理テーブル114において、フラグ“True”が設定されたフローにおける通信のアイドル時間(該当のフローのパケットの送受信が行われていない時間)を監視し、転送先の振替を解除する処理も行う。   Further, the distribution determination unit 140 monitors the communication idle time (the time during which the packet of the corresponding flow is not transmitted / received) in the flow in which the flag “True” is set in the session management table 114, and the transfer destination The process of canceling the transfer is also performed.

図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 storage unit 110, the distribution determination unit 140 monitors the idle time of communication related to the flow for which the flag = True is set.

(S42)振分決定部140は、該当のフローに関する通信のアイドル時間が所定時間に達したか否かを判定する。アイドル時間が所定時間に達した場合、振分決定部140は、ステップS43に処理を進める。アイドル時間が所定時間に達していない場合、振分決定部140は、ステップS41に処理を進める(監視を継続する)。ステップS42の判定に用いられる所定時間の長さは、任意に定めることができる(例えば、1分でもよいし、数分程度でもよい)。   (S42) The distribution determination unit 140 determines whether or not the idle time of communication related to the flow has reached a predetermined time. When the idle time has reached the predetermined time, the distribution determination unit 140 proceeds to step S43. If the idle time has not reached the predetermined time, the distribution determination unit 140 proceeds to step S41 (continues monitoring). The length of the predetermined time used for the determination in step S42 can be arbitrarily determined (for example, it may be 1 minute or about several minutes).

(S43)振分決定部140は、セッション管理テーブル114において、該当のフローに対するフラグを“False”に設定する。
このように、振分決定部140は、特定のフローに対してハッシュ値によらずに振分先(転送先)の中継サーバを選択すると、所定期間、当該特定のフローに対応するパケットの振分先を、選択した中継サーバとする。これにより、ファイアウォールやプロキシなどのステートフルな業務サービスをクライアントに対して適切に提供可能になる。
(S43) In the session management table 114, the distribution determination unit 140 sets a flag for the corresponding flow to “False”.
As described above, when the distribution determination unit 140 selects a relay server that is a distribution destination (transfer destination) for a specific flow regardless of the hash value, the distribution determination unit 140 allocates a packet corresponding to the specific flow for a predetermined period. The destination is the selected relay server. As a result, stateful business services such as firewalls and proxies can be appropriately provided to clients.

なお、図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 distribution determination unit 140 may set the flag for the corresponding flow to “False” when detecting the disconnection of the session by the FIN packet or the RST packet in TCP for the flow of the flag “True”.

図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 server 100 arrives.

なお、宛先#が“a”であるパケットが到着する前のUSC112の各中継サーバのカウント値は、全て“0”であるとする。また、図17のUSC112は、振分サーバ100により各パケットが転送されるたびに更新される(上側から下側へ向かう方向が更新によりカウント値が推移する方向である)。更に、一例として偏り閾値は“4”であるとする。   It is assumed that the count values of the relay servers of the USC 112 before the arrival of the packet whose destination # is “a” are all “0”. 17 is updated every time each packet is transferred by the distribution server 100 (the direction from the upper side to the lower side is the direction in which the count value changes due to the update). Further, as an example, it is assumed that the bias threshold is “4”.

まず、振分サーバ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 distribution server 100 receives the packet “a1” of the flow # “a”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “a1” to the relay server 200 (Svr1) based on the hash value of the header information of the packet “a1”. The distribution server 100 sets the flag of the record of the flow # “a” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0 + 1 = 1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “0 + 1 = 1”.

次に、振分サーバ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 distribution server 100 receives the packet “b1” of the flow # “b”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “b1” to the relay server 200a (Svr2) based on the hash value of the header information of the packet “b1”. The distribution server 100 sets the flag of the record of the flow # “b” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “1-2 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “1 + 1 = 2”.

次に、振分サーバ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 distribution server 100 receives the packet “c1” of the flow # “c”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “c1” to the relay server 200b (Svr3) based on the hash value of the header information of the packet “c1”. The distribution server 100 sets the flag of the record of the flow # “c” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “2-2 = 0”.

次に、振分サーバ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 distribution server 100 receives the packet “d1” of the flow # “d”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “d1” to the relay server 200 (Svr1) based on the hash value of the header information of the packet “d1”. The distribution server 100 sets the flag of the record of the flow # “d” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0 + 1 = 1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “0 + 1 = 1”.

次に、振分サーバ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 distribution server 100 receives the packet “e1” of the flow # “e”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “e1” to the relay server 200a (Svr2) based on the hash value of the header information of the packet “e1”. The distribution server 100 sets the flag of the record of the flow # “e” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “1-2 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “1 + 1 = 2”.

次に、振分サーバ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 distribution server 100 receives the packet “f1” of the flow # “f”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “f1” to the relay server 200 (Svr1) based on the hash value of the header information of the packet “f1”. The distribution server 100 sets the flag of the record of the flow # “f” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−1-2 = −3”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “2 + 1 = 3”.

次に、振分サーバ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 distribution server 100 receives the packet “g1” of the flow # “g”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. For this reason, the distribution server 100 distributes the packet “g1” to the relay server 200a (Svr2) based on the hash value of the header information of the packet “g1”. The distribution server 100 sets the flag of the record of the flow # “g” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−3 + 1 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0-2 = −2”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “3 + 1 = 4”.

次に、振分サーバ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 distribution server 100 receives the packet “a2” of the flow # “a”. The distribution server 100 refers to the USC 112 and confirms that there is a count value that has reached the bias threshold “4”. On the other hand, the packet “a2” is a packet of an existing session, and the flag of the flow # “a” in the session management table 114 is “False”. Therefore, the distribution server 100 distributes the packet “a2” to the relay server 200 (Svr1) based on the hash value of the header information of the packet “a2”. The distribution server 100 sets the flag of the record of the flow # “a” in the session management table 114 to “False”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−2-2 = −4”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−2 + 1 = −1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “4 + 1 = 5”.

次に、振分サーバ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 distribution server 100 receives the packet “h1” of the flow # “h”. The distribution server 100 refers to the USC 112 and confirms that there is a count value that has reached the bias threshold “4”. The packet “h1” is a packet for a new session. Therefore, the distribution server 100 distributes the packet “h1” to the relay server 200b whose count value reaches the bias threshold “4” based on the USC 112. The distribution server 100 sets Svr # of the record of the flow # “h” in the session management table 114 to “3” and the flag to “True”. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−4 + 1 = −3”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “−1 + 1 = 0”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “5-2 = 3”.

ここで、パケット“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 distribution server 100 transfers the distribution destination of the packet “h1” from the relay server 200 determined based on the hash value to the relay server 200b determined based on the USC 112.

次に、振分サーバ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 distribution server 100 receives the packet “h2” of the flow # “h”. The distribution server 100 refers to the USC 112 and confirms that there is no count value that has reached the bias threshold “4”. On the other hand, the packet “h2” is a packet of an existing session, and the flag of the flow # “h” in the session management table 114 is “True”. Therefore, the distribution server 100 distributes the packet “h2” to the relay server 200b based on the session management table 114. The distribution server 100 updates the count value of the relay server 200 in the USC 112 to “−3 + 1 = −2”. The distribution server 100 updates the count value of the relay server 200a in the USC 112 to “0 + 1 = 1”. The distribution server 100 updates the count value of the relay server 200b in the USC 112 to “3-2 = 1”.

ここで、パケット“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 distribution server 100 transfers the distribution destination of the packet “h2” from the relay server 200 determined based on the hash value to the relay server 200b determined based on the USC 112.

このように、振分サーバ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 distribution server 100 counts down the count value of the USC 112 of the relay server selected as the packet transfer destination, and counts up the count value of the USC 112 of the relay server that has not been selected. For this reason, the distribution server 100 can efficiently identify a node with a relatively small number of times selected as a transfer destination based on the USC 112. The distribution server 100 can determine that there is a bias in the selection of the packet transfer destination by detecting that the count value of the relay server 200b is equal to or greater than the bias threshold. This is because the relatively large number of times that the relay server 200b has not been selected is presumed that the number of times that either or one of the relay servers 200 and 200a has been selected is relatively large. Furthermore, it is considered that the relay server 200b having a relatively large number of times of not being selected has a smaller amount of distributed traffic than the relay servers 200 and 200a. For this reason, it is considered that the resources of the interface connected to the relay server 200b of the SW 400 (for example, the buffer for storing the transfer waiting packet) and the resources of the relay server 200b are relatively free. Accordingly, the distribution server 100 can determine that it is better to preferentially select the relay server 200b when attempting to distribute data to the relay servers 200, 200a, and 200b evenly to some extent.

このように、振分サーバ100は、中継サーバの選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべき中継サーバの両方をUSC112によって効率的に判定できる。こうして、中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100のデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと、業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。   As described above, the distribution server 100 can efficiently determine both the fact that the selection of the relay server is biased and the relay server to be selected as the transfer destination in order to correct the bias by the USC 112. In this way, the selection bias of the relay server can be corrected with a small amount of calculation. As a result, the computation associated with the data transfer of the distribution server 100 can be accelerated, and communication between the clients 500, 500a, 500b,..., 500n and the business servers 300, 300a, 300b,. This contributes to a reduction in delay.

図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 distribution servers 620, 620a, 620b and relay servers 700, 700a,..., 700m are connected to the SW 400. However, in FIG. 18, “relay server” represents identification information “Svr1”, “Svr2”,..., “Svr10” of the relay servers 700, 700a,.

振分サーバ600,600a,600bは、それぞれセッション管理テーブル621,621a,621bを用いて、パケットの振分先を決定する。セッション管理テーブル621,621a,621bは、フロー#とSvr#との項目を含むが、フラグの項目を含まない点がセッション管理テーブル114と異なる。また、振分サーバ620,620a,620bは、USC112に相当する情報を保持しない点が、振分サーバ100,100a,100bと異なる。   The distribution servers 600, 600a, and 600b determine packet distribution destinations using the session management tables 621, 621a, and 621b, respectively. The session management tables 621, 621a, and 621b include items of flow # and Svr #, but are different from the session management table 114 in that they do not include a flag item. The distribution servers 620, 620a, and 620b are different from the distribution servers 100, 100a, and 100b in that they do not hold information corresponding to the USC 112.

例えば、振分サーバ620において中継サーバ700を経由する複数のフローのパケットが比較的短い期間の間に受信されることがある。すなわち、複数のフローに対するパケットの振分先が、中継サーバ700(Svr1)に偏ることがある。   For example, the distribution server 620 may receive a plurality of flow packets passing through the relay server 700 during a relatively short period. That is, packet distribution destinations for a plurality of flows may be biased toward the relay server 700 (Svr1).

更に、振分サーバ620,620a,620bそれぞれによる振分先が同期することもある。図18の例では、振分サーバ620a,620bによる各フローに対するパケットの振分先も中継サーバ700(Svr1)に偏っている。このように、バースト的に中継サーバ700にトラフィックが集中することがある。   Furthermore, the distribution destinations by the distribution servers 620, 620a, and 620b may be synchronized. In the example of FIG. 18, the distribution destination of packets for each flow by the distribution servers 620a and 620b is also biased toward the relay server 700 (Svr1). In this way, traffic may concentrate on the relay server 700 in a burst manner.

この場合、SW400が備える通信インタフェースのうち、中継サーバ700と通信する通信インタフェースの負荷が特に過大になる。すると、当該通信インタフェースが備えるバッファを用いた転送待ち合わせによる遅延が増大したり、バッファあふれによるパケット廃棄が発生したりする。   In this case, among the communication interfaces provided in the SW 400, the load on the communication interface that communicates with the relay server 700 is particularly excessive. Then, a delay due to transfer waiting using a buffer included in the communication interface increases, or packet discard due to buffer overflow occurs.

一方、第3の実施の形態の振分サーバ100,100a,100bによれば、個々の振分サーバ100,100a,100bが振分先の偏りを是正するので、図18で例示した特定の中継サーバに対するバースト的なトラフィックの集中の発生を抑えられる。   On the other hand, according to the distribution servers 100, 100a, and 100b of the third embodiment, the individual distribution servers 100, 100a, and 100b correct the distribution destination bias. Therefore, the specific relay illustrated in FIG. The occurrence of bursty traffic concentration on the server can be suppressed.

また、振分先の選択の偏りを検出するために、振分サーバ100,100a,100bそれぞれは他のサーバと通信しなくてよい。すなわち、振分サーバ100,100a,100bは、それぞれが単体で振分先の偏りを検出できる。   Moreover, in order to detect the selection bias of the distribution destination, each of the distribution servers 100, 100a, and 100b does not need to communicate with other servers. That is, each of the distribution servers 100, 100a, and 100b can detect the distribution destination bias alone.

なお、第3の実施の形態でも、振分サーバ100,100a,100bおよび中継サーバ200,200a,200bの両方または何れか一方を、物理マシン上で動作する仮想的なコンピュータ(仮想マシン)により実現してもよい。   In the third embodiment, the distribution server 100, 100a, 100b and / or the relay server 200, 200a, 200b are realized by a virtual computer (virtual machine) that operates on a physical machine. May be.

ところで、振分サーバ100,100a,100bのように複数の振分サーバを用いる場合、2以上の振分サーバにおいて、USCのカウント値が偏り閾値に達した中継サーバが複数存在することもある。この場合、当該2以上の振分サーバが全て同じ中継サーバを振替先に選択すると、振替先の中継サーバにパケットを転送するためのリソースの負荷が過大になるおそれもある。このため、各振分サーバは、振替先の選択を、他の振分サーバと異なるよう制御してもよい。例えば、次のような方法が考えられる。   By the way, when using a plurality of distribution servers such as the distribution servers 100, 100a, 100b, there may be a plurality of relay servers in which the count value of the USC has reached the bias threshold in two or more distribution servers. In this case, if the two or more distribution servers all select the same relay server as the transfer destination, the load of resources for transferring the packet to the transfer destination relay server may be excessive. For this reason, each distribution server may control the selection of the transfer destination so that it is different from other distribution servers. For example, the following method can be considered.

図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 distribution server 100a stores the USC 112a. The direction from the upper side to the lower side in FIG. 19 represents the direction of update transition of USCs 112 and 112a. Note that the initial value of the count value for each relay server of USC 112 and 112a is “0”. In FIG. 19, as an example, it is assumed that the distribution destination of packets from the first time to the fourth time by the distribution servers 100 and 100 a is the relay server 200. Further, the bias threshold is “4”.

この場合、4回目の振り分けにおいて、USC112,112aにおける中継サーバ200のカウント値は“−8”、中継サーバ200aのカウント値は“4”、中継サーバ200bのカウント値は“4”となる。この段階で、中継サーバ200a,200bの両方のカウント値が、偏り閾値“4”に達する。   In this case, in the fourth distribution, the count value of the relay server 200 in the USCs 112 and 112a is “−8”, the count value of the relay server 200a is “4”, and the count value of the relay server 200b is “4”. At this stage, the count values of both relay servers 200a and 200b reach the bias threshold “4”.

このとき、振分サーバ100は、Svr#の小さい方を優先的に振分先として選択する(若番優先)。一方、振分サーバ100aは、Svr#の大きい方を優先的に振分先として選択する(老番優先)。上記の例では、振分サーバ100は、次回のパケットの振分先を、中継サーバ200a(Svr2)とする。一方、振分サーバ100aは、次回のパケットの振分先を、中継サーバ200b(Svr3)とする。なお、若番優先により振分先を選択する振分サーバ、および、老番優先により振分先を選択する振分サーバは、システムの管理者によって予め定められる。各振分サーバは、振分サーバ間で連携し、互いに異なる優先度を決定してもよい。   At this time, the distribution server 100 preferentially selects the smaller Svr # as the distribution destination (priority number priority). On the other hand, the distribution server 100a preferentially selects the one having a larger Svr # as the distribution destination (priority number priority). In the above example, the distribution server 100 sets the distribution destination of the next packet as the relay server 200a (Svr2). On the other hand, the distribution server 100a sets the distribution destination of the next packet as the relay server 200b (Svr3). Note that the distribution server that selects the allocation destination with the priority of the younger number and the distribution server that selects the allocation destination with the priority of the older number are determined in advance by the system administrator. Each distribution server may cooperate with the distribution servers to determine different priorities.

このように、振分サーバ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 distribution servers 100 and 100a may select a distribution destination based on a predetermined priority for each of the plurality of relay servers. . At this time, the priority of the relay server used by a certain distribution server and the priority of the relay server used by another distribution server are set to have different priorities. Thereby, when both of the distribution servers 100 and 100a perform distribution destination transfer, it is possible to suppress the concentration of traffic on either the relay server 200a or the relay server 200b.

あるいは、振分サーバ100,100aそれぞれは、中継サーバ200,200a,200bのカウント値を更新する際の加算値を中継サーバ毎に変えてもよい。具体的には次の通りである。   Alternatively, each of the distribution servers 100 and 100a may change the added value for updating the count values of the relay servers 200, 200a, and 200b for each relay server. Specifically, it is as follows.

図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 USCs 112 and 112a. Note that the initial value of the count value for each relay server of USC 112 and 112a is “0”. In FIG. 20, as an example, it is assumed that the distribution destination of packets from the first time to the fourth time by the distribution servers 100 and 100 a is the relay server 200. Further, the bias threshold is “4”.

ここで、振分サーバ100は、USC112における中継サーバ200aのカウント値の加算値を、“1.1(=1.0+0.1)”とする。一方、振分サーバ100は、USC112における中継サーバ200bのカウント値の加算値を、“0.9(=1.0−0.1)”とする。   Here, the distribution server 100 sets “1.1 (= 1.0 + 0.1)” as the addition value of the count value of the relay server 200a in the USC 112. On the other hand, the distribution server 100 sets the added value of the count value of the relay server 200b in the USC 112 to “0.9 (= 1.0−0.1)”.

更に、振分サーバ100aは、USC112aにおける中継サーバ200aのカウント値の加算値を、“0.9(=1.0−0.1)”とする。一方、振分サーバ100aは、USC112aにおける中継サーバ200bのカウント値の加算値を、“1.1(=1.0+0.1)”とする。   Further, the distribution server 100a sets the added value of the count value of the relay server 200a in the USC 112a to “0.9 (= 1.0−0.1)”. On the other hand, the distribution server 100a sets the added value of the count value of the relay server 200b in the USC 112a to “1.1 (= 1.0 + 0.1)”.

そうすると、4回目の振り分けにおいて、USC112における中継サーバ200のカウント値は“−8”、中継サーバ200aのカウント値は“4.4”、中継サーバ200bのカウント値は“3.6”となる。この段階で、中継サーバ200aのカウント値が、偏り閾値“4”に達する。   Then, in the fourth distribution, the count value of the relay server 200 in the USC 112 is “−8”, the count value of the relay server 200a is “4.4”, and the count value of the relay server 200b is “3.6”. At this stage, the count value of the relay server 200a reaches the bias threshold “4”.

一方、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 relay server 200 in the USC 112a is “−8”, the count value of the relay server 200a is “3.6”, and the count value of the relay server 200b is “4.4”. At this stage, the count value of the relay server 200b reaches the bias threshold “4”.

したがって、振分サーバ100は、次回のパケットの振分先を、中継サーバ200a(Svr2)とする。一方、振分サーバ100aは、次回のパケットの振分先を、中継サーバ200b(Svr3)とする。なお、各中継サーバに対する加算値は、システムの管理者によって予め定められる。各振分サーバは、振分サーバ間で連携し、互いに異なる加算値を決定してもよい。   Therefore, the distribution server 100 sets the next packet distribution destination as the relay server 200a (Svr2). On the other hand, the distribution server 100a sets the distribution destination of the next packet as the relay server 200b (Svr3). The added value for each relay server is determined in advance by the system administrator. Each distribution server may cooperate with the distribution servers and determine different addition values.

このように、振分サーバ100,100aは、各中継サーバのカウント値に対する加算値を中継サーバ毎に異なる値としてもよい。例えば、振分サーバ100による第1の中継サーバの加算値の重みを大きくし、第2の中継サーバの加算値の重みを小さくしたならば、振分サーバ100aによる第1の中継サーバの加算値の重みを小さくし、第2の中継サーバの加算値の重みを大きくする。これにより、振分サーバ100,100aの両方が振分先の振替を行う場合に、中継サーバ200a、または、中継サーバ200bの何れか一方にトラフィックを集中させることを抑えられる。   As described above, the distribution servers 100 and 100a may set different addition values for the count value of each relay server for each relay server. For example, if the weight of the addition value of the first relay server by the distribution server 100 is increased and the weight of the addition value of the second relay server is decreased, the addition value of the first relay server by the distribution server 100a And the weight of the added value of the second relay server is increased. Thereby, when both of the distribution servers 100 and 100a perform distribution destination transfer, it is possible to suppress the concentration of traffic on either the relay server 200a or the relay server 200b.

なお、図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 distribution server 100 determines a packet distribution destination using a distribution accumulation counter instead of the USC 112.

図21は、振分累積カウンタの例を示す図である。振分累積カウンタ115は、振分先として選択された累積の回数を中継サーバ毎にカウントするカウンタである。例えば、振分サーバ100は、振分累積カウンタ115を用いて、パケットの振分先として選択された中継サーバのカウント値を、選択のたびに、1ずつ加算する。このとき、振分サーバ100は、振分先として選択されなかった中継サーバのカウント値を更新しない。   FIG. 21 is a diagram illustrating an example of a distribution accumulation counter. The distribution accumulation counter 115 is a counter that counts the number of accumulations selected as a distribution destination for each relay server. For example, the distribution server 100 uses the distribution accumulation counter 115 to increment the count value of the relay server selected as the packet distribution destination by one each time it is selected. At this time, the distribution server 100 does not update the count value of the relay server that is not selected as the distribution destination.

この場合、振分先の選択に偏りがあるか否かを判定するために、各中継サーバのカウント値の最小値、および、最小値と最大値との差の大きさを取得することが考えられる。この場合、差が所定の閾値よりも大きい場合に、振分先の選択に偏りがあると判定できる。また、偏りがある場合に、カウント値の最小値に対応する中継サーバを振分先として選択することが考えられる。   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 cumulative counter 115, it is conceivable to compare the count values of each relay server with respect to a set of two relay servers. However, in this method, the amount of computation for comparison increases linearly as the number of distribution destination candidate relay servers increases. For this reason, as the number of relay servers increases, the amount of delay until the allocation destination is determined may become excessive.

図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 cumulative counter 115. FIG. 22B shows the transition of the update of the USC 112a when the bias threshold> 7 (denoted as USC 112a to distinguish it from the USC 112 in FIG. 22C). FIG. 22C shows the transition of USC 112 updates when the bias threshold = 4. The direction from the upper side to the lower side in FIG. 22 is the direction of the update transition.

ここでは、中継サーバ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 relay servers 200, 200a, and 200b are distribution destination candidates. In all of the three cases illustrated in FIG. 22, it is assumed that the count value of each relay server is initially “0”. In all three cases, the relay server selection order is the same from the first to the seventh selection. The first selection from the first time is relay server 200 (Svr1), relay server 200a (Svr2), relay server 200b (Svr3), relay server 200 (Svr1), relay server 200a (Svr2), relay server 200, (Svr1). Assume that the relay server 200a (Svr2) is in this order.

図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 distribution accumulation counter 115 whether the selection of the distribution destination is biased. Further, according to the selection result, the distribution cumulative counter 115 counts up the count value of the relay server selected as the distribution destination. For example, in the eighth, ninth, and tenth selections, the relay server 200 (Svr1), the relay server 200a (Svr2), and the relay server 200 (Svr1) are selected, respectively. In the distribution accumulation counter 115 after the tenth selection, the count value of the relay server 200 is “5”. The count value of the relay server 200a is “4”. The count value of the relay server 200b is “1”. For example, when it is determined whether or not there is a bias in the selection of the distribution destination after the 10th selection, the count value of each relay server of the distribution accumulation counter 115 is compared to the round robin so that the maximum number of selections can be obtained. It is determined that there is a difference of 4. In addition, if the difference is greater than the allowable difference, for example, the relay server 200b (Svr3) having the smallest count value of the distribution cumulative counter 115 is selected as the distribution destination.

図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 USC 112a. Further, according to the selection result, the count value of each relay server of the USC 112a is updated according to the USC update rule 113. For example, in the eighth, ninth, and tenth selections, the relay server 200 (Svr1), the relay server 200a (Svr2), and the relay server 200 (Svr1) are selected, respectively. In the USC 112a after the tenth selection, the count value of the relay server 200 is “−5”. The count value of the relay server 200a is “−2”. The count value of the relay server 200b is “7”.

カウント値の更新は、選択の都度、全ての中継サーバ分の更新が行われる。ただし、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 USC 112a can be updated independently, and parallel calculation is possible. For example, when the processor 101 is a multi-core, it is possible to update the count values of all the relay servers in one cycle by updating in parallel with a plurality of cores. Therefore, it can be considered that the processing delay due to the update for all the relay servers is very small.

また、振分先の選択に偏りがあるか否かの判定は、各中継サーバのカウント値を偏り閾値と比較するだけでよく、各中継サーバ同士のカウント値の総当たりの比較を行わずに済む。例えば、中継サーバの数を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 cumulative counter 115 is used, 10 cycles of comparison operations are required to identify the relay server with the smallest number of distributions. Therefore, it is not necessary to perform the comparison operation. In this case, as described above, the count value of the USC 112 for 10 relay servers is updated, but the update itself can be performed in parallel (for example, can be updated in one cycle). The same applies to the case of FIG.

図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 USC 112. Further, according to the selection result, the count value of each relay server of the USC 112 is updated according to the USC update rule 113. For example, in the eighth selection, since the count value of the relay server 200b (Svr3) has reached the bias threshold, the relay server 200b is selected as the distribution destination instead of the relay server 200. Subsequently, in the ninth and tenth selections, the relay server 200a (Svr2) and the relay server 200 (Svr1) are selected, respectively. In the USC 112 after the tenth selection, the count value of the relay server 200 is “−2”. The count value of the relay server 200a is “−2”. The count value of the relay server 200b is “4”.

このように、振分サーバ100,100a,100bは、ノード選択に偏りが発生していること、および、偏りを補正するために転送先として選択すべきノードの両方をUSC112(または、USC112a)のカウント値によって効率的に判定できる。特に、振分累積カウンタ115を用いる比較例のように、中継サーバ間での累積カウント値の比較を総当たりで行って偏りを検出する方法よりも、演算量を少なくすることができる。   As described above, the distribution servers 100, 100a, and 100b have both the fact that the selection of the node is biased and the node that should be selected as the transfer destination in order to correct the bias of the USC 112 (or USC 112a). It can be determined efficiently by the count value. In particular, as in the comparative example using the distribution cumulative counter 115, the amount of calculation can be reduced as compared with the method of detecting the bias by comparing the cumulative count values between the relay servers by brute force.

こうして、振分サーバ100,100a,100bによれば、振分先の中継サーバの選択の偏りを省演算量で補正可能になる。その結果、振分サーバ100,100a,100bのデータ転送に伴う演算を高速化でき、クライアント500,500a,500b,・・・,500nと業務サーバ300,300a,300b,・・・,300mとの間の通信の遅延の低減に寄与する。   Thus, according to the distribution servers 100, 100a, and 100b, it is possible to correct the selection bias of the relay server that is the distribution destination with a small amount of calculation. As a result, it is possible to speed up computations associated with data transfer of the distribution servers 100, 100a, 100b, and the clients 500, 500a, 500b,..., 500n and the business servers 300, 300a, 300b,. It contributes to the reduction of communication delays.

なお、振分サーバ100,100a,100bによる通常時の振分ルールとして、ラウンドロビンや、パケットのヘッダ情報のハッシュ値により振分先を選択する方法を例示したが、通常時の振分ルールはそれ以外でもよい。例えば、振分サーバ100は、通常時の振分ルールとして、中継サーバ200,200a,200bそれぞれのCPUやメモリの負荷などを取得し、当該負荷に応じて、パケットの振分先を決定するルールを採用してもよい。この場合、振分サーバ100は、最小負荷の中継サーバを振分先に決定することが考えられる。振分サーバ100a,100bも同様である。   In addition, as a normal distribution rule by the distribution servers 100, 100a, and 100b, a method of selecting a distribution destination by a round robin or a hash value of header information of a packet is illustrated, but a normal distribution rule is Other than that. For example, the distribution server 100 acquires a load on the CPU and memory of each of the relay servers 200, 200a, and 200b as a normal distribution rule, and determines a packet distribution destination according to the load. May be adopted. In this case, it is conceivable that the distribution server 100 determines the relay server with the minimum load as the distribution destination. The same applies to the distribution servers 100a and 100b.

また、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2,第3の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。   The information processing according to the first embodiment can be realized by causing the processing unit 1b to execute a program. The information processing according to the second and third embodiments can be realized by causing the processor 101 to execute a program. The program can be recorded on a computer-readable recording medium 13.

例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。   For example, the program can be distributed by distributing the recording medium 13 on which the program is recorded. Alternatively, the program may be stored in another computer and distributed via a network. For example, the computer stores (installs) a program recorded in the recording medium 13 or a program received from another computer in a storage device such as the RAM 102 or the HDD 103, and reads and executes the program from the storage device. Good.

1 制御装置
1a 記憶部
1b 処理部
2,3,4 ノード
5,6,7 宛先装置
8,9 端末装置
N1,N2 ネットワーク
T1,T1a テーブル
DESCRIPTION OF SYMBOLS 1 Control apparatus 1a Memory | storage part 1b Processing part 2, 3, 4 Node 5, 6, 7 Destination apparatus 8, 9 Terminal apparatus N1, N2 Network T1, T1a Table

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のデータの転送先として前記第2のノードを選択する、請求項1記載の制御装置。   The processing unit selects the first node as a transfer destination of the first data according to a predetermined rule, and when the second numerical value is equal to or greater than the predetermined value, The control device according to claim 1, wherein the second node is selected as a transfer destination of second data. 前記所定のルールは、データの宛先毎に転送先を等確率で選択するルールである、請求項2記載の制御装置。   The control device according to claim 2, wherein the predetermined rule is a rule for selecting a transfer destination with equal probability for each data destination. 前記所定のルールは、データの送信に用いられるパケットのヘッダ情報により識別されるフローに応じて転送先を選択するルールである、請求項2記載の制御装置。   The control device according to claim 2, wherein the predetermined rule is a rule for selecting a transfer destination according to a flow identified by header information of a packet used for data transmission. 前記処理部は、特定のフローに対して前記所定のルールによらずに前記第2のノードを転送先として選択すると、所定期間、前記特定のフローに対応する前記データの転送先を、前記第2のノードとする、請求項4記載の制御装置。   When the processing unit selects the second node as a transfer destination without depending on the predetermined rule for a specific flow, the processing unit sets the transfer destination of the data corresponding to the specific flow for the predetermined period. The control device according to claim 4, wherein two nodes are used. 前記処理部は、前記第1のノードを転送先として選択すると、選択されなかった複数の前記第2のノードそれぞれに対応する複数の前記第2の数値を増やす、請求項1乃至5の何れか1項に記載の制御装置。   6. The processing unit according to claim 1, wherein when the first node is selected as a transfer destination, the processing unit increases the plurality of second numerical values corresponding to the plurality of second nodes that are not selected. The control device according to item 1. 前記処理部は、複数の前記第2の数値が前記所定値以上になると、前記複数のノードそれぞれに対する優先度に基づいて、前記第2のデータの転送先を選択する、請求項6記載の制御装置。   The control according to claim 6, wherein the processing unit selects a transfer destination of the second data based on a priority for each of the plurality of nodes when a plurality of the second numerical values are equal to or greater than the predetermined value. apparatus. 前記処理部は、前記複数の数値それぞれに加える値をノード毎に異なる値とする、請求項1乃至7の何れか1項に記載の制御装置。   The control device according to claim 1, wherein the processing unit sets a value added to each of the plurality of numerical values to be a different value for each node. データを転送する際に複数のノードの何れかを選択して転送する処理に用いられる制御プログラムにおいて、
前記複数のノードそれぞれが選択された回数に関する複数の数値であって、第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.
JP2017008076A 2017-01-20 2017-01-20 Control device, control program and control method Pending JP2018117300A (en)

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)

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

Cited By (3)

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