(57)【要約】【課題】通信装置のスケールアウトのための設定作業の手間やコストを低減すること。【解決手段】通信制御装置（例えば、Ｌ２スイッチ自体）は、Ｌ２スイッチに収容されたサーバを宛先とする第１のパケットがＬ２スイッチによって受信された場合に、第１のパケットの送信元ＭＡＣアドレス及び第１のパケットのセッションを特定する情報を記憶部に格納する。また、通信制御装置は、Ｌ２スイッチに収容されたサーバから送信され、Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、記憶部に格納された第１のパケットのセッションを特定する情報と一致する場合、第２のパケットの宛先ＭＡＣアドレスを、第１のパケットの送信元ＭＡＣアドレスに更新する。【選択図】図１
2020136743.tif 000002
【特許請求の範囲】
【請求項１】
Ｌ２スイッチに収容された通信装置を宛先とする第１のパケットが前記Ｌ２スイッチによって受信された場合に、前記第１のパケットの送信元ＭＡＣアドレス及び前記第１のパケットのセッションを特定する情報を記憶部に格納する格納部と、
前記Ｌ２スイッチに収容された通信装置から送信され、前記Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、前記記憶部に格納された前記第１のパケットのセッションを特定する情報と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新する更新部と、
を有することを特徴とする通信制御装置。
【請求項２】
前記格納部は、前記第１のパケットのセッションを特定する情報として、前記第１のパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号を前記記憶部に格納し、
前記更新部は、第２のパケットの宛先ＩＰアドレス、宛先ポート番号及びプロトコル番号が、それぞれ前記記憶部に格納された前記第１のパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
Ｌ２スイッチに収容された通信装置を宛先とする第１のパケットが前記Ｌ２スイッチによって受信された場合に、前記第１のパケットの送信元ＭＡＣアドレス及び前記第１のパケットのセッションを特定する情報を記憶部に格納する格納ステップと、
前記Ｌ２スイッチに収容された通信装置から送信され、前記Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、前記記憶部に格納された前記第１のパケットのセッションを特定する情報と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新する更新ステップと、
をコンピュータに実行させることを特徴とする通信制御プログラム。
【請求項４】
通信装置を配下に持つＬ２スイッチを制御する通信制御装置と、前記Ｌ２スイッチと接続され、それぞれにＭＡＣアドレスが設定された複数のロードバランサと、を有する通信制御システムであって、
前記ロードバランサのそれぞれは、
前記通信装置を宛先とする第１のパケットの送信元ＭＡＣアドレスを、自身に設定されたＭＡＣアドレスに更新する第１の更新部を有し、
前記通信制御装置は、
前記第１のパケットが前記Ｌ２スイッチによって受信された場合に、前記第１のパケットの送信元ＭＡＣアドレス及び前記第１のパケットのセッションを特定する情報を記憶部に格納する格納部と、
前記Ｌ２スイッチに収容された通信装置から送信され、前記Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、前記記憶部に格納された前記第１のパケットのセッションを特定する情報と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新する第２の更新部と、
を有することを特徴とする通信制御システム。
【請求項５】
前記複数のロードバランサと接続されたＬ３スイッチをさらに有し、
前記複数のロードバランサのそれぞれには同一のＩＰアドレスが設定され、
前記Ｌ３スイッチは、
同一のＩＰアドレスが設定された前記複数のロードバランサに前記第１のパケットを送信する際に、per-flow  ECMPにより送信先のロードバランサを決定する決定部を有することを特徴とする請求項４に記載の通信制御システム。
【請求項６】
通信装置を配下に持つＬ２スイッチを制御する通信制御装置と、前記Ｌ２スイッチと接続され、それぞれにＭＡＣアドレスが設定された複数のロードバランサと、を有する通信制御システムによって実行される通信制御方法であって、
前記ロードバランサのそれぞれが、前記通信装置を宛先とする第１のパケットの送信元ＭＡＣアドレスを、自身に設定されたＭＡＣアドレスに更新する第１の更新工程と、
前記通信制御装置が、前記第１のパケットが前記Ｌ２スイッチによって受信された場合に、前記第１のパケットの送信元ＭＡＣアドレス及び前記第１のパケットのセッションを特定する情報を記憶部に格納する格納工程と、
前記通信制御装置が、前記Ｌ２スイッチに収容された通信装置から送信され、前記Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、前記記憶部に格納された前記第１のパケットのセッションを特定する情報と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新する第２の更新工程と、
を含むことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、通信制御プログラム、通信制御システム及び通信制御方法に関する。
【背景技術】
【０００２】
従来、ロードバランサやファイアウォール等のＬ３（レイヤ３）終端を行う通信装置が性能の限界を超えた際の対応策として、当該通信装置をスケールアウトする方法が知られている。ここで、例えば、ロードバランサのスケールアウトを行う場合、各ロードバランサ間での負荷分散を行うために、ＤＮＳラウンドロビンを用いる方法が知られている。ＤＮＳラウンドロビンを用いる場合、同じドメインの複数のロードバランサに異なるＶＩＰが設定される。
【０００３】
ここで、各ロードバランサには、負荷分散処理を行うサーバ群が割り当てられているものとする。そして、例えば、ＤＮＳラウンドロビンによりパケットの転送先のロードバランサが決定されると、当該パケットを受信したロードバランサは、自身に割り当てられたいずれかのサーバへパケットを転送する。
【０００４】
ここで、ロードバランサは、例えば、ＶＩＰ（Virtual  IP：仮想ＩＰアドレス）を物理サーバのＩＰアドレスにＮＡＴ（Network  Address  Translation）したり、ＤＨ（Diffie-Hellman）鍵交換方式のＳＳＬ／ＴＳＬを終端させたり、Ｌ７（レイヤ７）ロードバランスを実行したりする、ステートフルな装置である。そのため、サーバへのパケット（上りパケット）も当該サーバからの応答パケット（下りパケット）も同じロードバランサを経由する必要がある。ここで、ＤＮＳラウンドロビンを用いる方法によれば、上記のようにロードバランサごとにサーバ群が割り当てられるため、上りパケットと下りパケットとで同じロードバランサを経由させることができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Maglev:  A  Fast  and  Reliable  Software  Network  Load  Balancer、［平成31年2月4日検索］、インターネット＜URL：https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/44824.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術には、通信装置のスケールアウトのための設定作業に多大な手間やコストを要するという問題がある。例えば、ロードバランサが上記のＤＮＳラウンドロビンを用いて負荷分散を行う場合、スケールアウトにより追加されたロードバランサに対するサーバ群の新規割り当てや各ロードバランサに割り当てるサーバ群の収容替えといった作業が生じる場合がある。
【課題を解決するための手段】
【０００７】
前記した課題を解決するため、本発明の通信制御装置は、Ｌ２スイッチに収容された通信装置を宛先とする第１のパケットが前記Ｌ２スイッチによって受信された場合に、前記第１のパケットの送信元ＭＡＣアドレス及び前記第１のパケットのセッションを特定する情報を記憶部に格納する格納部と、前記Ｌ２スイッチに収容された通信装置から送信され、前記Ｌ２スイッチによって受信された第２のパケットのセッションを特定する情報が、前記記憶部に格納された前記第１のパケットのセッションを特定する情報と一致する場合、前記第２のパケットの宛先ＭＡＣアドレスを、前記第１のパケットの送信元ＭＡＣアドレスに更新する更新部と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、通信装置のスケールアウトのための設定作業の手間やコストを低減することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、第１の実施形態に係る通信制御システムの構成例を示す図である。
【図２】図２は、第１の実施形態に係るＬ２スイッチの構成例を示す図である。
【図３】図３は、第１の実施形態に係るＬ２スイッチの上り方向の通信に対する処理の流れを示すフローチャートである。
【図４】図４は、第１の実施形態に係るＬ２スイッチの下り方向の通信に対する処理の流れを示すフローチャートである。
【図５】図５は、通信制御システムの１の上り方向の通信に対する処理手順の具体例を説明するための図である。
【図６】図６は、通信制御システムの１の下り方向の通信に対する処理手順の具体例を説明するための図である。
【図７】図７は、スケールアップについて説明するための図である。
【図８】図８は、ＤＮＳラウンドロビンについて説明するための図である。
【図９】図９は、通信制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る通信制御装置、通信制御プログラム、通信制御システム及び通信制御方法の実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【００１１】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係る通信制御システムの構成について説明する。図１は、第１の実施形態に係る通信制御システムの構成例を示す図である。図１に示すように、通信制御システム１は、クライアント１０、Ｌ３スイッチ２０、複数のロードバランサ３０、Ｌ２スイッチ４０及びサーバ５０を有する。サーバ５０は、サーバ群に含まれる。Ｌ２スイッチ４０は、通信制御装置の一例である。
【００１２】
図１の例では、クライアント１０は、Ｌ３スイッチ２０と接続されている。また、Ｌ３スイッチ２０は、ロードバランサ３０ａ、ロードバランサ３０ｂ及びロードバランサ３０ｃと接続されている。以降、各ロードバランサに共通の事項について説明する場合には、単にロードバランサ３０と表記する。
【００１３】
ロードバランサ３０はＬ２スイッチ４０と接続されている。また、サーバ群は、Ｌ２スイッチ４０の配下にあるものとする。つまり、Ｌ２スイッチ４０は、サーバ群を収容している。
【００１４】
通信制御システム１の各装置は、物理マシンであってもよいし仮想マシンであってもよい。また、ロードバランサ３０及びサーバ群は、ＣＧＮ（Carrier  Grade  NAT）、ＶＰＮ装置、ＷＡＦ（Web  Application  Firewall）、ＩＰＳ（Intrusion  Prevention  System）等の他のネットワーク機能を有する装置に置き換えられてもよい。
【００１５】
通信制御システム１では、ロードバランサの性能アップが必要になる場合がある。ロードバランサの性能アップのための手法には、例えばロードバランサを新たに追加するスケールアウトがある。なお、図１のロードバランサの数は一例であり、ロードバランサの数は図示のものに限られない。さらに、ロードバランサの数はスケールアウト等により変動する。
【００１６】
ここで、クライアント１０からサーバ群へ向かう通信の方向を上り方向とする。逆に、サーバ群からクライアント１０へ向かう通信の方向を下り方向とする。また、上り方向に送信されるパケットを上りパケットと呼ぶ。また、下り上り方向に送信されるパケットを下りパケットと呼ぶ。
【００１７】
クライアント１０は、サーバ５０との通信を行う装置である。Ｌ３スイッチ２０は、受信パケットのルーティングを行う。例えば、Ｌ３スイッチ２０は、クライアント１０から受信した上りパケットを、自身に接続されているいずれかのロードバランサへ転送する。
【００１８】
ロードバランサ３０は、Ｌ３モードで動作し、サーバ群へのパケットの負荷分散処理を行う。また、ロードバランサ３０は、例えば、自身に設定されたＶＩＰをサーバ５０のＩＰアドレスにＮＡＴしたり、Ｌ７（レイヤ７）ロードバランスを実行したりする、ステートフルな装置である。
【００１９】
ここで、ロードバランサ３０のそれぞれには同一のＩＰアドレスが設定されているものとする。Ｌ３スイッチ２０は、クライアント１０から送信された上りパケットをロードバランサ３０に送信する際に、per-flow  ECMP（Equal  Cost  Multi  Path）により送信先のロードバランサを決定する。なお、上りパケットは、第１のパケットの一例である。また、ロードバランサ３０が仮想マシンである場合、ロードバランサ３０のそれぞれにはＶＩＰが設定される。
【００２０】
また、ロードバランサ３０のそれぞれには異なるＭＡＣ（Media  Access  Control）アドレスが設定されているものとする。ロードバランサ３０は、サーバ群に含まれるサーバを宛先とする上りパケットの送信元ＭＡＣアドレスを、自身に設定されたＭＡＣアドレスに更新する。
【００２１】
ここで、上りパケットはクライアント１０からサーバ５０に向けて送信されるものとする。また、下りパケットはサーバ５０からクライアント１０に向けて送信されるものとする。ロードバランサ３０は、送信元ＭＡＣアドレスを更新した上りパケットをＬ２スイッチ４０へ送信する。また、ロードバランサ３０は、Ｌ２スイッチ４０から送信された下りパケットを受信した場合、当該下りパケットをＬ３スイッチ２０に送信する。なお、下りパケットは、第２のパケットの一例である。
【００２２】
Ｌ２スイッチ４０は、ロードバランサ３０とサーバ群とを接続する。このＬ２スイッチ４０は、ロードバランサ３０から送信されたパケットを受信し、当該受信したパケットをルーティングしサーバ群に送信する。また、Ｌ２スイッチ４０は、サーバ５０からの下りパケットを宛先ＭＡＣアドレスに対応するロードバランサ３０へ転送する。図１の例では、Ｌ２スイッチ４０は、サーバ５０へ上りパケットを送信し、サーバ５０から下りパケットを受信する。
【００２３】
サーバ５０は、例えば、クライアント１０からの受信した上りパケットに基づき種々の処理を行った後、当該受信したパケットに対する返信パケットを、下りパケットとして当該クライアント１０へ送信する。ここで、ロードバランサがステートフルな装置であることから、返信パケットは、対応する上りパケットが経由したロードバランサと同じロードバランサを経由する必要がある。一方で、サーバ５０は、上りパケットが経由したロードバランサ認識することができない。
【００２４】
そこで、Ｌ２スイッチ４０は、サーバ５０から受信した返信パケットの宛先ＭＡＣアドレスを、当該返信パケットに対応する上りパケットが経由したロードバランサのＭＡＣアドレスに書き換える。これにより、Ｌ２スイッチ４０によってＭＡＣアドレスが書き換えられた返信パケットは、対応する上りパケットが経由したロードバランサと同じロードバランサを経由して、Ｌ３スイッチ２０及びクライアント１０に送信されることになる。
【００２５】
図１に示すように、クライアント１０からサーバ５０宛てに送信され、ロードバランサ３０ｃを経由してＬ２スイッチ４０に到着した上りパケットのＩＰヘッダには、送信元ＩＰアドレスとしてクライアント１０のＩＰアドレスが記載され、宛先ＩＰアドレスとしてサーバ５０の物理ＩＰアドレスが記載されている。さらに、当該パケットのＬ２ヘッダの送信元ＭＡＣアドレスには、送信元ＭＡＣアドレスとしてロードバランサ３０ｃのＭＡＣアドレスが記載され、宛先ＭＡＣアドレスとしてサーバ５０のＭＡＣアドレスが記載されている。このため、Ｌ２スイッチ４０は、上りパケットのＬ２ヘッダから、経由したロードバランサのＭＡＣアドレスを取得することができる。
【００２６】
図２を用いて、Ｌ２スイッチ４０の構成について説明する。図２は、第１の実施形態に係るＬ２スイッチの構成例を示す図である。図２に示すように、Ｌ２スイッチ４０は、通信部４１、入出力部４２、記憶部４３及び制御部４４を有する。
【００２７】
通信部４１は、外部装置との通信インタフェースを司る。通信部４１は、例えば、ロードバランサ３０経由で上りパケットを受信したり、制御部４４から出力された下りパケットをサーバ群に送信したりする。入出力部４２は、当該Ｌ２スイッチ４０への各種情報の入出力を司る。入出力部４２は、例えば、当該Ｌ２スイッチ４０への設定情報等の入力を受け付ける。
【００２８】
記憶部４３は、制御部４４が動作する際に参照する各種情報を記憶する。記憶部４３は、例えば、ルーティング情報４３１及びセッションテーブル４３２を記憶する領域を備える。ルーティング情報４３１は、Ｌ２がルーティングを行うための情報である。例えば、ルーティング情報４３１は、ポート番号とＭＡＣアドレスが対応付けられたルーティングテーブルである。セッションテーブル４３２は、セッション情報を記憶する。セッション情報は、Ｌ２スイッチ４０に収容されたサーバを宛先とする上りパケットの送信元ＭＡＣアドレス及び当該上りパケットのセッションを特定する情報である。
【００２９】
制御部４４は、Ｌ２スイッチ４０全体の制御を司る。制御部４４は、受信部４４１、格納部４４２、更新部４４３及び送信部４４４を有する。
【００３０】
受信部４４１は、上りパケット及び下りパケットを通信部４１経由で受信する。また、送信部４４４は、上りパケット及び下りパケットをルーティングを行った上で通信部４１経由で送信する。ここで、受信部４４１が受信したサーバ群宛ての上りパケットに対しては、後述する格納部４４２による処理が行われる。また、受信部４４１が受信したサーバ群からの下りパケットに対しては、後述する更新部４４３による処理が行われる。
【００３１】
格納部４４２は、Ｌ２スイッチ４０に収容されたサーバを宛先とする上りパケットがＬ２スイッチ４０によって受信された場合に、当該上りパケットの送信元ＭＡＣアドレス及び当該上りパケットのセッションを特定する情報を記憶部４３に格納する。
【００３２】
更新部４４３は、Ｌ２スイッチ４０に収容されたサーバから送信され、Ｌ２スイッチ４０によって受信された下りパケットのセッションを特定する情報が、記憶部４３に格納された上りパケットのセッションを特定する情報と一致する場合、当該下りパケットの宛先ＭＡＣアドレスを、当該上りパケットの送信元ＭＡＣアドレスに更新する。また、例えば、更新部４４３は、netfilterと呼ばれるLinux（登録商標）  Kernelが持つＡＰＩや、libnetfilter_queueと呼ばれる類似のライブラリ等を用いてＭＡＣアドレスの更新を行うことができる。
【００３３】
例えば、格納部４４２は、上りパケットのセッションを特定する情報として、上りパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号を記憶部４３に格納する。このとき、更新部４４３は、下りパケットの宛先ＩＰアドレス、宛先ポート番号及びプロトコル番号が、それぞれ記憶部４３に格納された上りパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号と一致する場合、下りパケットの宛先ＭＡＣアドレスを、上りパケットの送信元ＭＡＣアドレスに更新する。
【００３４】
［第１の実施形態の処理手順］
図３を用いて、Ｌ２スイッチ４０の上り方向の通信に対する処理の流れを説明する。図３は、第１の実施形態に係るＬ２スイッチの上り方向の通信に対する処理の流れを示すフローチャートである。
【００３５】
図３に示すように、まず、Ｌ２スイッチ４０は、配下のサーバ宛てのパケットを受信する（ステップＳ１１）。次に、Ｌ２スイッチ４０は、パケットの送信元ＩＰアドレス、送信元ポート番号、プロトコル番号及び返却用ＭＡＣアドレスを取得する（ステップＳ１２）。ここで、送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号は、セッションを特定する情報の一例である。また、返却用ＭＡＣアドレスは、送信元ＭＡＣアドレスである。
【００３６】
ここで、Ｌ２スイッチ４０は、取得した情報をセッションテーブル４３２に格納する（ステップＳ１３）。そして、Ｌ２スイッチ４０は、ルーティング情報４３１にしたがいパケットを送信する（ステップＳ１４）。
【００３７】
図４を用いて、Ｌ２スイッチ４０の下り方向の通信に対する処理の流れを説明する。図４は、第１の実施形態に係るＬ２スイッチの下り方向の通信に対する処理の流れを示すフローチャートである。
【００３８】
図４に示すように、まず、Ｌ２スイッチ４０は、配下のサーバから送信されたパケットを受信する（ステップＳ２１）。次に、Ｌ２スイッチは、パケットの宛先ＩＰアドレス、宛先ポート番号、プロトコル番号でセッションテーブル４３２を検索し、一致するレコードの返却用ＭＡＣアドレスを取得する（ステップＳ２２）。
【００３９】
ここで、Ｌ２スイッチ４０は、パケットの宛先ＭＡＣアドレスを、取得した返却用ＭＡＣアドレスに更新する（ステップＳ２３）。そして、Ｌ２スイッチ４０は、ルーティング情報４３１にしたがいパケットを送信する（ステップＳ２４）。
【００４０】
［第１の実施形態の処理手順の具体例］
図５を用いて、通信制御システムの１の上り方向の通信に対する処理手順の具体例を説明する。図５は、通信制御システムの上り方向の通信に対する処理手順の具体例を説明するための図である。
【００４１】
図５に示すように、通信制御システム１には、Ｎ台のクライアント１０が設置され、クライアント１０それぞれのＩＰアドレスは「ＩＰ−Ｃ−１〜Ｎ」、ＭＡＣアドレスは「ＭＣ−Ｃ−１〜Ｎ」であるものとする。
【００４２】
また、Ｌ３スイッチ２０のＩＰアドレスは「ＩＰ−Ｌ３」、ＭＡＣアドレスは「ＭＣ−Ｌ３」であるものとする。さらに、Ｌ３スイッチ２０とＬ２スイッチ４０との間には、ロードバランサ３０ａ、３０ｂ、３０ｃが設置される。
【００４３】
ロードバランサ３０ａ、ロードバランサ３０ｂ及びロードバランサ３０ｃのＩＰアドレスは、それぞれ「ＩＰ−ＬＢ−１」、「ＩＰ−ＬＢ−２」及び「ＩＰ−ＬＢ−３」であるものとする。また、ロードバランサ３０ａ、ロードバランサ３０ｂ及びロードバランサ３０ｃのＭＡＣアドレスは、それぞれ「ＭＣ−ＬＢ−１」、「ＭＣ−ＬＢ−２」及び「ＭＣ−ＬＢ−３」であるものとする。なお、ロードバランサ３０ａ、３０ｂ、３０ｃのＶＩＰは、いずれも「ＶＰ」であるものとする。
【００４４】
また、サーバ５０は３台設置され、サーバ５０ａ、サーバ５０ｂ及びサーバ５０ｃのＩＰアドレスは、それぞれ「ＩＰ−ＳＶ−１」、「ＩＰ−ＳＶ−２」及び「ＩＰ−ＳＶ−３」であるものとする。また、サーバ５０ａ、サーバ５０ｂ及びサーバ５０ｃのＭＡＣアドレスは、それぞれ「ＭＣ−ＳＶ−１」、「ＭＣ−ＳＶ−２」及び「ＭＣ−ＳＶ−３」であるものとする。それぞれのサーバ５０は、Ｌ２スイッチ４０経由でロードバランサ３０ａ、３０ｂ、３０ｃに接続される。
【００４５】
なお、図５における「ＴＯ  ＭＡＣ」は、宛先ＭＡＣアドレスを示し、「ＴＯ  ＩＰ」は宛先ＩＰアドレスを示し、「ＴＯ  Ｐｏｒｔ」は宛先ポート番号を示す。また、図５における「ＦＭ  ＭＡＣ」は、送信元ＭＡＣアドレスを示し、「ＦＭ  ＩＰ」は送信元ＩＰアドレスを示し、「ＦＭ  Ｐｏｒｔ」は送信元ポート番号を示す。
【００４６】
通信制御システム１において、Ｌ３スイッチ２０がＩＰアドレス「ＩＰ−Ｃ−１」のクライアント１０から、ＶＩＰ「ＶＰ」宛のパケット（上りパケット）を受信した場合を考える。この場合、まず、Ｌ３スイッチ２０は、per-flow  ECMPにより、当該パケットの転送先のロードバランサ３０を決定する。これにより、上りパケットの処理負荷を各ロードバランサ３０に分散させることができる。
【００４７】
ここで、例えば、Ｌ３スイッチ２０が、当該パケットの転送先をロードバランサ３０ａに決定した場合、Ｌ３スイッチ２０は、符号５０１に示すヘッダ情報を当該パケットに設定してロードバランサ３０ａに転送する。その後、ロードバランサ３０ａは、転送されたパケットに符号５０２に示すヘッダ情報を設定してＬ２スイッチ４０へ送信する。つまり、ロードバランサ３０ａは、Ｌ３スイッチ２０から転送されたパケットの宛先ＭＡＣアドレスを「ＭＣ−ＳＶ−１」に変換し、宛先ＩＰアドレスを「ＩＰ−ＳＶ−１」に変換し、送信元ＭＡＣアドレスを「ＭＣ−ＬＢ−１」に変換して、Ｌ２スイッチ４０へ送信する。
【００４８】
そして、Ｌ２スイッチ４０は、受信した上りパケットのＩＰヘッダ及びＬ２ヘッダから、送信元ＩＰアドレス、送信元ポート番号、プロトコル番号、返却用ＭＡＣアドレスを学習する。つまり、Ｌ２スイッチ４０は、受信パケットのＩＰヘッダ及びＬ２ヘッダから、送信元ＩＰアドレス、送信元ポート番号、プロトコル番号、送信元ＭＡＣアドレス取得し、取得した情報をセッション番号とともにセッションテーブル４３２に記録する。
【００４９】
ここで、図５に示すように、セッションテーブル４３２の項目には、セッション識別情報＃、送信元ポート番号、プロトコル番号及び返却用ＭＡＣアドレスが含まれる。図５の例では、セッションテーブル４３２には、セッション識別情報＃として「１」が格納され、送信元ポート番号として「ＩＰ−Ｃ−１」が格納され、プロトコル番号として「ｘｘｘｘ」が格納され、返却用ＭＡＣアドレスとしてｔｃｐプロトコルを示す「６」が格納され、返却用ＭＡＣアドレスとして「ＭＣ−ＬＢ−１」が格納される。ただし、「ｘｘｘｘ」は所定の数値であるものとする。
【００５０】
図６を用いて、通信制御システムの１の下り方向の通信に対する処理手順の具体例を説明する。図６は、通信制御システムの１の下り方向の通信に対する処理手順の具体例を説明するための図である。図６における各装置に設定されたアドレス等は、図５のもとの同様である。
【００５１】
まず、Ｌ２スイッチ４０は、宛先ＩＰアドレスが「ＩＰ−Ｃ−１」、宛先ポート番号が「ｘｘｘｘ」、プロトコル番号が「６」である下りパケットをサーバ５０ａから受信する。このとき、下りパケットの送信先ＭＡＣアドレスには任意の値が設定されていてよい。
【００５２】
そして、Ｌ２スイッチ４０は、セッションテーブル４３２から下りパケットと同じセッションを特定する情報を検索し、返却用ＭＡＣアドレスを取得する。ここでは、Ｌ２スイッチ４０は、セッションテーブル４３２から、送信元ＩＰアドレスが「ＩＰ−Ｃ−１」、送信先ポート番号「ｘｘｘｘ」、プロトコル番号「６」であるレコードを検索し、返却用ＭＡＣアドレスとして「ＭＣ−ＬＢ−１」を取得する。
【００５３】
さらに、Ｌ２スイッチ４０は、サーバ５０から受信した下りパケットに符号５０３に示すヘッダ情報を設定する。つまり、Ｌ２スイッチ４０は、送信先ＭＡＣアドレスを、返却用ＭＡＣアドレスとして取得した「ＭＣ−ＬＢ−１」に更新する。これにより、上りパケットは、ロードバランサ３０ａを経由するようになる。
【００５４】
［第１の実施形態の効果］
これまで説明してきたように、Ｌ２スイッチ４０は、Ｌ２スイッチ４０に収容されたサーバを宛先とする第１のパケットがＬ２スイッチ４０によって受信された場合に、第１のパケットの送信元ＭＡＣアドレス及び第１のパケットのセッションを特定する情報を記憶部４３に格納する。また、Ｌ２スイッチ４０は、Ｌ２スイッチ４０に収容されたサーバから送信され、Ｌ２スイッチ４０によって受信された第２のパケットのセッションを特定する情報が、記憶部４３に格納された第１のパケットのセッションを特定する情報と一致する場合、第２のパケットの宛先ＭＡＣアドレスを、第１のパケットの送信元ＭＡＣアドレスに更新する。
【００５５】
このように、Ｌ２スイッチ４０は、上りパケットに対する返信パケットの宛先ＭＡＣアドレスを、上りパケットが経由した装置のＭＡＣアドレスに自動的に書き換えることができる。このため、第１の実施形態によれば、ロードバランサ３０のスケールアウトを行う際、ＤＮＳサーバの設定変更や、追加されたロードバランサ３０に対するサーバ群の新規割り当てや各ロードバランサ３０に割り当てるサーバ群の収容替えが不要になり、設定作業の手間やコストを低減することができる。
【００５６】
また、同様の宛先ＭＡＣアドレスをサーバに直接実装することが困難な場合であっても、第１の実施形態によれば、上りパケットと返信パケットが同一のロードバランサを経由するようにする制御を実現することができる。
【００５７】
また、Ｌ２スイッチ４０は、第１のパケットのセッションを特定する情報として、第１のパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号を記憶部４３に格納する。また、Ｌ２スイッチ４０は、第２のパケットの宛先ＩＰアドレス、宛先ポート番号及びプロトコル番号が、それぞれ記憶部４３に格納された第１のパケットの送信元ＩＰアドレス、送信元ポート番号及びプロトコル番号と一致する場合、第２のパケットの宛先ＭＡＣアドレスを、第１のパケットの送信元ＭＡＣアドレスに更新する。このように、第１の実施形態では、上りパケットである第１のパケットのヘッダに設定された各値を使って、容易にセッションを特定することができる。
【００５８】
また、ロードバランサ３０のそれぞれには異なるＭＡＣアドレスが設定される。また、各ロードバランサは、サーバを宛先とする第１のパケットの送信元ＭＡＣアドレスを、自身に設定されたＭＡＣアドレスに更新する。これにより、第１の実施形態では、ロードバランサのＭＡＣアドレスを一意に特定することが可能になる。
【００５９】
ロードバランサ３０のそれぞれには同一のＩＰアドレスが設定され、かつ異なるＭＡＣアドレスが設定される。また、Ｌ３スイッチ２０は、同一のＩＰアドレスが設定された複数のロードバランサに第１のパケットを送信する際に、per-flow  ECMPにより送信先のロードバランサを決定する。これにより、第１の実施形態では、上りパケットの負荷分散が可能になる。
【００６０】
ここで、第１の実施形態の効果を、既存技術であるロードバランサのスケールアップ及びＤＮＳラウンドロビンによるロードバランサのスケールアウトと対比しながら説明する。図７は、スケールアップについて説明するための図である。図８は、ＤＮＳラウンドロビンについて説明するための図である。
【００６１】
図７に示すように、ロードバランサのスケールアップにおいては、既存のロードバランサ３０ｄがより性能の高いロードバランサ３０ｅにリプレースされる。また、スケールアップは、既存のロードバランサ３０ｄに対しモジュールを追加することにより行われてもよい。
【００６２】
また、図８に示すように、ＤＮＳラウンドロビンによるロードバランサのスケールアウトにおいては、同一ドメインに対する解決先ＶＩＰ（例えば、ＶＩＰ３）が追加され、ＤＮＳラウンドロビンによる負荷分散が行われる。例えば、ロードバランサ３０ｆ（ＶＩＰ１）、ロードバランサ３０ｇ（ＶＩＰ２）に対し、ロードバランサ３０ｈを追加した場合、ロードバランサ３０ｈにＶＩＰ３が設定される。また、ロードバランサ３０ｈを追加した場合、ロードバランサ３０ｆ、３０ｇ、３０ｈの間で、各ロードバランサ３０の配下のサーバ群のグルーピングが再度行われる。
【００６３】
（１）設定作業及び設定コストについて
上記のロードバランサ３０ｄのスケールアップを行う場合、サーバ群のゲートウェイの設定変更が必要であり、ＤＮＳラウンドロビンによりロードバランサ３０のスケールアウトを行う場合、追加するロードバランサ３０ｈに割り当てるサーバ群の設定と、ＤＮＳサーバの設定変更が必要である。しかし、第１の実施形態の場合、上記の設定変更等は不要である。
【００６４】
（２）サーバ分割損について
上記のロードバランサ３０ｄのスケールアップを行う場合、サーバ群の再分割は発生しないのでいわゆるサーバの分割損は発生しないが、ＤＮＳラウンドロビンによりロードバランサ３０のスケールアウトを行う場合、３０ｆ、３０ｇ、３０ｈに対し割り当てるサーバ群の再グルーピングを行う必要があるのでサーバの分割損が発生する。一方、第１の実施形態の場合、上記のサーバ分割損は発生しない。
【００６５】
（３）切り戻しについて
上記のロードバランサ３０ｄのスケールアップを行う場合において、切り戻しを行う際には長い時間を要する。また、ＤＮＳラウンドロビンによりロードバランサ３０のスケールアウトを行う場合において、切り戻しを行う際には、ＤＮＳサーバのレコード削除とサーバの戻し作業が発生するため作業の手間がかかる。また、ＤＮＳサーバのキャッシュのＴＴＬ（Time  To  Live）があるため、作業結果の反映にも時間がかかる。一方、第１の実施形態の場合、切り戻しを行う際には、Ｌ３スイッチ２０のルーティング情報を削除すればよいので切り戻しに要する作業は少ない。
【００６６】
以上説明したとおり、本実施形態のシステムによれば、ロードバランサ３０のスケールアウト時の設定作業及び設定コストを低減することができる。また、ロードバランサ３０の配下のサーバ群の分割損も発生せず、また切り戻しを行う際の設定作業及び設定コストも低減することができる。
【００６７】
［その他の実施形態］
なお、典型的なクライアント〜サーバ間のネットワーク構成として、クライアント−ファイアウォール−ロードバランサ−サーバという構成がある。このような構成において、ファイアウォールのスケールアウトを行う場合もある。ここで、ファイアウォールもステートフルな装置であるので、上記の構成においてファイアウォールのスケールアウトを行う場合に、ロードバランサに上記の実施形態で述べた技術を適用してもよい。つまり、図１に示した構成図におけるロードバランサをファイアウォールに置き換え、サーバをロードバランサに置き換えてもよい。
【００６８】
この場合、Ｌ２スイッチ４０は、ファイアウォール経由で受信した上りパケットのＬ２ヘッダに設定された送信元ＭＡＣアドレスにより、当該上りパケットの送信元ＭＡＣアドレスを得る。ここで得たＭＡＣアドレスは、当該上りパケットが経由したファイアウォールのＭＡＣアドレスである。そして、Ｌ２スイッチ４０は、当該受信パケットの送信元ＭＡＣアドレスを返却用ＭＡＣアドレスとして記憶しておく。そして、Ｌ２スイッチ４０は、当該上りパケットに対する返信パケットをファイアウォール側へ送信する際、当該返信パケットの宛先ＭＡＣアドレスを、返却用ＭＡＣアドレスに更新する。これにより、返信パケットは、上りパケットが経由したファイアウォールと同じファイアウォールを経由することになる。
【００６９】
また、上記の実施形態では、下りパケットの宛先ＭＡＣアドレスの更新に関する処理をＬ２スイッチ４０が行うものとして説明した。一方で、下りパケットの宛先ＭＡＣアドレスの更新に関する処理は、Ｌ２スイッチ４０と接続された外部の通信制御装置によって行われてもよい。
【００７０】
ここで、外部の通信制御装置は、少なくともＬ２スイッチ４０の格納部４４２、更新部４４３及びセッションテーブル４３２と同等の機能を有する。そして、外部の通信制御装置は、Ｌ２スイッチ４０から上りパケットを受け取り、受け取った上りパケットからセッションを特定する情報及び返却用ＭＡＣアドレスを取得し、取得した情報を記憶しておく。さらに、外部の通信制御装置は、Ｌ２スイッチ４０から下りパケットを受け取り、当該下りパケットとセッションを特定する情報が一致する返却用ＭＡＣアドレスで当該下りパケットの宛先ＭＡＣアドレスを更新し、更新済みの下りパケットをＬ２スイッチ４０に返す。
【００７１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ（Central  Processing  Unit）及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７２】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７３】
［プログラム］
一実施形態として、通信制御装置（例えば、Ｌ２スイッチ４０）は、パッケージソフトウェアやオンラインソフトウェアとして上記の通信制御を実行する通信制御プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の通信制御プログラムを情報処理装置に実行させることにより、情報処理装置を通信制御装置として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００７４】
図９は、通信制御プログラムを実行するコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００７５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００７６】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、通信制御の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、通信制御における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００７７】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０は、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した実施形態の処理を実行する。
【００７８】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７９】
１０  クライアント
２０  Ｌ３スイッチ
３０、３０ａ、３０ｂ、３０ｃ  ロードバランサ
４０  Ｌ２スイッチ
４１  通信部
４２  入出力部
４３  記憶部
４４  制御部
４３１  ルーティング情報
４３２  セッションテーブル
４４１  受信部
４４２  格納部
４４３  更新部
４４４  送信部
５０、５０ａ、５０ｂ、５０ｃ  サーバ
【図１】
2020136743.tif 000003
【図２】
2020136743.tif 000004
【図３】
2020136743.tif 000005
【図４】
2020136743.tif 000006
【図５】
2020136743.tif 000007
【図６】
2020136743.tif 000008
【図７】
2020136743.tif 000009
【図８】
2020136743.tif 000010
【図９】
2020136743.tif 000011