説明

コンピュータシステム、コントローラ、サービス提供サーバ、及び負荷分散方法

【課題】オープンフロー技術を利用してコンピュータシステムの負荷分散を行う。
【解決手段】本発明によるコンピュータシステムは、オープンフロー技術を利用したシステムであって、複数のクライアント端末21〜2nと複数のサービス提供サーバ31〜3mと間の負荷分散を行うDNSサーバ(5)と、複数のサービス提供サーバ31〜3mのそれぞれの負荷状況に応じて、スイッチ4iに設定したフローエントリを変更するコントローラとを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステム、及び負荷分散方法に関し、特に、オープンフロー(オープンフロー)技術を利用して負荷分散を行うコンピュータシステムに関する。
【背景技術】
【0002】
コンピュータネットワークにおいて、各スイッチの転送動作等を外部のコントローラによって一元的に制御する技術(オープンフロー)が、OpenFlow Consortiumによって提案されている(非特許文献1参照)。この技術に対応したネットワークスイッチ(以下、オープンフロースイッチ(OFS)と称す)は、プロトコル種別やポート番号等の詳細な情報をフローテーブルに保持し、フローの制御と統計情報の採取を行うことができる。
【0003】
OFSが保持するフローテーブルは、OFSとは分離して設けられるコントローラ(以下、オープンフローコントローラ(OFC)と称す)によって設定される。OFCは、ノード間の通信経路の設定や、経路上におけるOFSに対する転送動作(中継動作)等の設定を行う。この際、OFCは、OFSが保持するフローテーブルに、フロー(パケットデータ)を特定するルールと、当該フローに対する処理を規定するアクションとを対応付けたフローエントリを設定する。フローテーブルに設定されるエントリの内容については、例えば非特許文献1で規定されている。
【0004】
通信経路上のOFSは、OFCによって設定されたフローエントリに従って受信パケットデータの転送先を決定し、転送処理を行う。これにより、ネットワーク上のノードは、OFCによって設定された通信経路を利用して他のノードとの間でパケットデータの送受信が可能となる。すなわち、オープンフローを利用したコンピュータシステムでは、転送処理を行うOFSと分離して設けられたOFCによって、システム全体の通信を一元的に制御及び管理することが可能となる。
【0005】
OFCは、OFSからの要求に応じて通信経路の算出及び通信経路上のOFSにおけるフローテーブルの更新を行う。詳細には、OFSが自身のフローテーブルに規定されていないパケットデータを受信した場合、当該パケットデータをOFCに通知する。OFCは、通知されたパケットデータのヘッダ情報に基づいて転送元及び転送先を特定し通信経路やOFSに設定するフローエントリ(ルール+アクション)を生成し、各OFSのフローテーブルを更新する。
【0006】
一方、処理能力の向上や耐障害性の向上などを目的として、複数のノードを1台のノードのように見せるサーバの仮想化技術が存在する。複数のサーバを1つのサーバとして仮想化した場合、当該サーバ(仮想化サーバ)に対して、複数のクライアントによってアクセス可能となる。この際、複数のクライアントからのアクセスによる負荷分散が可能となる。しかし、仮想サーバを構成する1つのサーバ(物理サーバ)に負荷が偏らないようするためには、各クライアントから接続するサーバを何らかの手段で決定する必要がある。
【0007】
複数のサーバに対する負荷分散を実現する技術として、DNS(Domain Name System)サーバのラウンドロビン機能を使った負荷分散方法が知られている。ラウンドロビン機能では、DNSサーバによって同一名称(FQDN:Fully Qualified Domain Name)のホストに複数のIPアドレスを設定し、DNSクライアントからの名前解決要求に応じて複数のIPアドレスのうちの1つを順に返す。これにより、クライアントが1つの名前で参照できるサーバは複数となり、負荷分散が実現される。
【0008】
又、仮想サーバに対する負荷状況に応じてFQDNの振り分け可否を設定することで仮想サーバ間の負荷分散を行うシステムが、例えば、特開2009−259206に記載されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2009−259206
【非特許文献】
【0010】
【非特許文献1】OpenFlow Switch Specification Version 0.9.0 (Wire Protocol 0x98) July 20, 2009
【発明の概要】
【発明が解決しようとする課題】
【0011】
オープンフロー技術を利用したシステムでは、受信パケットの送信元と送信先のIPアドレスやMACアドレスやポート番号、VLAN IDなどをもとにして動作を決定することができる。このため、オープンフロー技術では、ルールや動作(アクション)を細かく規定することができるが、この精度を上げようとすると複雑な処理が必要になる。
【0012】
一方、オープンフロー技術による負荷分散方法が検討され始めている。例えば、OFCは、OFSにおける負荷の増大に応じてOFSのフローエントリ(ルール+アクション)を動的に変更することで負荷分散を実現できる。この場合、負荷の増大や偏りによっては、OFSのフローエントリの更新頻度が増大することが予想される。オープンフロー技術を利用したシステムでは、1つのOFCによって複数のOFSの動作を一元的に制御しているため、フローエントリの更新頻度の増大に伴って、OFCにおける処理負荷は増大する。又、上述のように、細かなフローエントリの設定により負荷分散を実現するためには、複雑な処理が必要となるため、OFCにおける処理負荷が増大し、処理遅延を招くことが予想される。
【0013】
従って、本発明の目的は、オープンフローコントローラの処理負荷の増大を抑制しつつ、オープンフロー技術を利用した負荷分散を実現することである。
【課題を解決するための手段】
【0014】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、[特許請求の範囲]の記載と[発明を実施するための形態]の記載との対応関係を明らかにするために、[発明を実施するための形態]で使用される番号・符号が付加されている。ただし、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【0015】
本発明によるコンピュータシステムは、通信経路上のスイッチ(4i)に対して、フローエントリを設定するコントローラ(1)と、コントローラ(1)によって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチ(4i)と、スイッチ(4i)を介して自身に接続された複数のクライアント端末(21〜2n)のそれぞれに対して、サービスを提供する複数のサービス提供サーバ(31〜3m)と、ラウンドロビン機能によって、複数のクライアント端末(21〜2n)と複数のサービス提供サーバ(31〜3m)と間の負荷分散を行うDNS(Domain Name System)サーバ(5)とを具備する。複数のサービス提供サーバ(31〜3m)のそれぞれは、それぞれの負荷状況を監視し、自身に対する負荷が閾値以上であると判定すると、負荷分散要求をコントローラ(1)に発行する。コントローラ(1)は、負荷分散要求に応じて、スイッチ(4i)に設定したフローエントリを変更する。
【0016】
本発明による負荷分散方法は、コントローラ(1)が、通信経路上のスイッチ(4i)に対して、フローエントリを設定するステップと、スイッチ(4i)が、コントローラ(1)によって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと、複数のサービス提供サーバ(31〜3m)のそれぞれが、スイッチ(4i)を介して自身に接続された複数のクライアント端末(21〜2n)のそれぞれに対して、サービスを提供するステップと、DNSサーバ(5)が、ラウンドロビン機能によって、複数のクライアント端末(21〜2n)と複数のサービス提供サーバ(31〜3m)と間の負荷分散を行うステップと、複数のサービス提供サーバ(31〜3m)のそれぞれが、それぞれの負荷状況を監視するステップと、複数のサービス提供サーバ(31〜3m)のそれぞれが、自身に対する負荷が閾値以上であると判定すると、負荷分散要求をコントローラ(1)に発行するステップと、コントローラ(1)が、前記負荷分散要求に応じて、スイッチ(4i)に設定したフローエントリを変更するステップとを具備する。
【発明の効果】
【0017】
本発明によれば、オープンフローコントローラの処理負荷の増大を抑制しつつ、オープンフロー技術を利用した負荷分散を実現できる。
【図面の簡単な説明】
【0018】
【図1】図1は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。
【図2】図2は、本発明によるサービス提供サーバの実施の形態における構成を示す図である。
【図3】図3は、本発明によるオープンフローコントローラの実施の形態における構成を示す図である。
【図4】図4は、本発明によるオープンフローコントローラが保持するフローテーブルの一例を示す図である。
【図5】図5は、本発明によるオープンフローコントローラが保持するトポロジ情報の一例を示す図である。
【図6】図6は、本発明によるオープンフローコントローラが保持する通信経路情報の一例を示す図である。
【図7】図7は、本発明によるオープンフロースイッチの実施の形態における構成を示す図である。
【図8】図8は、オープンフロースイッチが保持するフローテーブルの一例を示す図である。
【図9】図9は、本発明に係るオープンフロー制御を説明するための図である。
【図10A】図10Aは、本発明によるコンピュータシステムの実施の形態における負荷分散動作の一例を示すシーケンス図である。
【図10B】図10Bは、本発明によるコンピュータシステムの実施の形態における負荷分散動作の一例を示すシーケンス図である。
【図11A】図11Aは、本発明によるオープンフロースイッチに設定されたフローテーブルの一例を示す図である。
【図11B】図11Bは、本発明によるオープンフローコントローラによって更新されたフローテーブルの一例を示す図である。
【図12】図12は、本発明によるコンピュータシステムの実施の形態における負荷分散後のパケット転送動作の一例を示すシーケンス図である。
【図13】図13は、負荷状況が改善した場合の、通信経路復帰動作の一例を示すシーケンス図である。
【発明を実施するための形態】
【0019】
(概要)
本発明によるコンピュータシステムでは、通常動作時、DNSラウンドロビン機能により負荷分散を行い、1つのサーバに負荷が集中した場合、オープンフローコントローラによるフローテーブルの変更によって、クライアントのアクセス先サーバを変更する。これにより、ラウンドロビン機能による負荷分散方法で対処できない負荷の集中を防止するとともに、オープンフローコントローラにおける通信経路の変更処理に係る処理負荷を軽減することができる。
【0020】
オープンフロー(プログラマブルフローとも呼ぶ)は新しい技術であるため、その処理量についての検討はまだ進んでいないが、本発明では、オープンフロー技術を用いた負荷分散方法と、それに伴う処理量を抑制する方法を実現している。
【0021】
以下、添付図面を参照しながら本発明の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示す。
【0022】
(コンピュータシステムの構成)
図1を参照して、本発明によるコンピュータシステムの構成を説明する。図1は、本発明によるコンピュータシステムの実施の形態における構成を示す図である。本発明によるコンピュータシステムは、オープンフローを利用して通信経路の構築及びパケットデータの転送制御を行う。図1を参照して、本発明によるコンピュータシステムは、オープンフローコントローラ1(以下、OFC1と称す)、複数のクライアント端末21〜2n(以下、クライアント21〜2nと称す)、複数のサービス提供サーバ31〜3m(以下、サーバ31〜3mと称す)、複数のオープンフロースイッチ41〜4i(以下、OFS41〜4iと称す)を有するスイッチ群4、DNSサーバ5を具備する。ただし、m、n、iは2以上の自然数である。又、クライアント21〜2nを区別せずに総称する場合はクライアント2nと称し、サーバ31〜3mを区別せずに総称する場合はサーバ3mと称し、OFS41〜4iを区別せずに総称する場合はOFS4iと称して説明する。
【0023】
クライアント2n、OFS群4、DNSサーバ5は、LAN6(Local Area Network)を介して接続される。又、OFC1やサーバ3mはOFS群4を介してLAN6に接続される。DNSサーバ5は、LAN6に接続するノード(クライアント2nやサーバ3m)に対する名前解決を行う。詳細には、DNSサーバ5は、1つのホスト名に対して複数のIPアドレスを返却するためのラウンドロビンによる名前解決の機能(ラウンドロビン機能)を備える。DNSサーバ5は、クライアント2nから名前解決の問い合わせがあった場合に、プールされたIPアドレスから順番にIPアドレスを返却する。本発明に係るDNSサーバ5は、一般的なラウンドロビン機能を備えることが好適である。
【0024】
クライアント2nは、図示しないCPU、ネットワークインタフェース(I/F)、及びメモリを備えるコンピュータ装置であり、メモリ内のプログラムを実行することでサーバ3mとの間で通信を行う。
【0025】
サーバ3mは、CPU301、ネットワークI/F302、及びメモリ303を備えるコンピュータ装置である。メモリ303には、サービス提供用プログラム310及びフロー制御用サーバへの通知用プログラム320が格納されている。サーバ3mは、CPU301によってサービス提供用プログラム310を実行することで、図2に示すサービス提供部311の機能を実現する。
【0026】
サービス提供部311は、ネットワークI/F302を制御して、クライアント2nや他のサーバ3mとの間で通信を行う。クライアント2nや他のサーバ3mと間の通信は、スイッチ群4を介して行われる。又、サービス提供部311は、データベースやファイル共有機能などの業務サービスをクライアント2nに提供する。サービス提供部311が提供するサービス内容に応じて、サーバ3mは、Webサーバ、ファイルサーバ、アプリケーションサーバのいずれかに例示される機能を実現する。例えば、サーバ3mがWebサーバとして機能する場合、クライアント2nの要求に従い、メモリ303内の図示しないHTML文書や画像データをクライアント2nに転送する。
【0027】
サービス提供部311は、他のサーバ3mと通信を行うことで、アクセスするクライアントに対して他のサーバ3mと同一の処理を実行できる。
【0028】
又、サーバ3mは、CPU301によってフロー制御用サーバへの通知用プログラム320を実行することで、図2に示す負荷監視部312の機能を実現する。負荷監視部312は、クライアント2nからのアクセスに応じた負荷を監視する。又、負荷監視部312は、アクセスに応じた負荷が、予め設定された基準値(閾値)以上であるか否かを判定する。この判定は、所定の周期や任意の時期に行われても良いし、クライアントからのアクセスの都度、行われても良い。更に、負荷監視部312は、負荷が閾値以上である場合、当該負荷に対応するクライアント2nを特定し、OFC1に通知する。
【0029】
例えば、負荷監視部312は、サーバ3mへの同時接続数を所定の周期で監視及び判定し、同時接続数が基準値以上となった場合、判定時において接続中のクライアント2nのIPアドレスをOFC1に通知するとともに、負荷分散要求を発行する。あるいは、負荷監視部312は、サーバ3mへの同時接続数をアクセスの都度監視及び判定し、同時接続数が基準値に達した場合、負荷監視部は、判定時において接続中のクライアント2nのIPアドレスをOFC1に通知するとともに、負荷分散要求を発行する。
【0030】
負荷状況の監視及び判定は、クライアントの接続数の監視に限らず、CPU301に対する負荷を監視し、当該負荷が基準値以上となったか否かを判定しても良い。
【0031】
サーバ3mのネットワークI/F302には、複数のIPアドレス“1”〜IPアドレス“k”(kは任意の数)が設定されている。ネットワークインタフェースI/F302に設定されたIPアドレスの数とサーバ3mの数は特に関係性は無いものとする。又、サーバ31〜3mには同じホスト名(FQDN)が与えられ、1つの仮想サーバ10として機能することが好適である。更に、OFC1にもサーバ31〜3mと同じホスト名が与えられてもよい。
【0032】
OFC1は、オープンフロー技術により、システム内におけるパケット転送に係る通信経路パケット転送処理を制御するスイッチ制御部11を備える。オープンフロー技術とは、コントローラ(ここではOFC1)が、ルーティングポリシー(フローエントリ:フロー+アクション)に従い、マルチレイヤ及びフロー単位の経路情報をOFS4iに設定し、経路制御やノード制御を行う技術を示す(詳細は、非特許文献1を参照)。これにより、経路制御機能がルータやスイッチから分離され、コントローラによる集中制御によって最適なルーティング、トラフィック管理が可能となる。オープンフロー技術が適用されるOFS4iは、従来のルータやスイッチのようにパケットやフレームの単位ではなく、END2ENDのフローとして通信を取り扱う。
【0033】
OFC1は、OFS4iが保持するフローテーブル403にフローエントリ(ルール144+アクション情報145)を設定することで、当該OFS4iの動作(例えばパケットデータの中継動作)を制御する。
【0034】
図1及び図3を参照して、OFC1の構成の詳細を説明する。図3は、本発明によるOFC1の構成を示す図である。OFC1は、CPU101、ネットワークI/F102、及びメモリ103を備えるコンピュータによって実現される。OFC1では、CPU101がメモリ103に格納されたフローコントロール用プログラム110を実行することで、図3に示すスイッチ制御部11、フロー管理部12、フロー生成部13の各機能が実現される。又、OFC1は、メモリ103に格納されたフローテーブル14、トポロジ情報15、通信経路情報16を備える。
【0035】
スイッチ制御部11は、フローテーブル14に従ってOFS4i毎にフローエントリ(ルール+アクション)の設定又は削除を行う。OFS4iは、設定されたフローエントリを参照し、受信パケットのヘッダ情報に応じたルールに対応するアクション(例えばパケットデータの中継や破棄)を実行する。ルール、及びアクションの詳細は後述する。
【0036】
スイッチ制御部11は、OFS4iからのファーストパケットの受信通知や、サーバ3mからの負荷分散要求に応じてOFS4iに対してフローエントリ(フロー+アクション)の設定、削除又は更新を行う。ここでファーストパケットとは、OFS4iに設定されたルール144に適合しないパケットデータを示す。又、スイッチ制御部11は、サーバ3mから、負荷の軽減に応じて発行された設定復帰要求を受けると、負荷分散要求に応じて変更したフローエントリを元のフローエントリに変更することが好ましい。この際、後述する設定情報146を参照して、変更前のフローテーエントリを特定し、これを用いてフローエントリを元に戻す。
【0037】
図4は、OFC1が保持するフローテーブル14の構成の一例を示す図である。図4を参照して、フローテーブル14には、フローエントリを特定するためのフロー識別子141、当該フローエントリの設定対象(OFS4i)を識別する識別子(対象装置142)、経路情報143、ルール144、アクション情報145、設定情報146が対応付けられて設定される。フローテーブル14には、OFC1の制御対象となる全てのOFS4に対して生成されたフローエントリ(ルール144+アクション情報145)が設定される。又、フローテーブル14には、フロー毎のQoSや暗号化に関する情報など、通信の扱い方が定義されても構わない。
【0038】
ルール144には、例えば、TCP/IPのパケットデータにおけるヘッダ情報に含まれる、OSI(Open Systems Interconnection)参照モデルのレイヤ1からレイヤ4のアドレスや識別子の組み合わせが規定される。例えば、図9に示すレイヤ1の物理ポート、レイヤ2のMACアドレス、レイヤ3のIPアドレス、レイヤ4のポート番号、VLANタグ(VLAN id)のそれぞれの組み合わせがルール144として設定される。尚、VLANタグには、優先順位(VLAN Priority)が付与されていても良い。
【0039】
ここで、ルール144に設定されるポート番号等の識別子やアドレス等は、所定の範囲で設定されても構わない。又、宛先や送信元のアドレス等を区別してルール144として設定されることが好ましい。例えば、MAC宛先アドレスの範囲や、接続先のアプリケーションを特定する宛先ポート番号の範囲、接続元のアプリケーションを特定する送信元ポート番号の範囲がルール144として設定される。更に、データ転送プロトコルを特定する識別子をルール144として設定してもよい。
【0040】
アクション情報145には、例えばTCP/IPのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。又、アクション情報145には、パケットデータの複製や、破棄することを指示する情報が設定されてもよい。
【0041】
経路情報143は、フローエントリ(ルール144+アクション情報145)を適用する経路を特定する情報である。これは、後述する通信経路情報16に対応付けられた識別子である。
【0042】
設定情報146は、フローエントリ(ルール144+アクション情報145)が現在、通信経路上のOFS4に設定されているか否かを示す情報(「設定済み」又は「未設定」)を含む。設定情報146は、対象装置142や経路情報143に対応付けられているため、通信経路にフローが設定されているか否かを確認できるとともに、通信経路上のOFS4毎にフローが設定されているか否かを確認することができる。
【0043】
又、設定情報146には、負荷が基準値以上であるために変更されたフローエントリを特定する情報(変更情報と称す)を含むことが好ましい。例えば、変更情報として、変更前のフローエントリと変更後のフローエントリとを対応づけるための情報が好適に設定される。
【0044】
フロー管理部12は、フロー生成部13によって生成されたフロー(ルール144+アクション情報145)にフロー識別子141をつけて記憶装置に記録する。この際、フローエントリを適用する通信経路の識別子(経路情報143)やフローエントリを適用するOFS4の識別子(対象装置442)が、フローエントリ(ルール144+アクション情報145)に付されて記録される。
【0045】
又、フロー管理部12は、フローテーブル14を参照して、ファーストパケットのヘッダ情報や、サーバ3mから通知された送信元のIPアドレス等に対応するフローエントリ(ルール144+アクション情報145)を抽出し、スイッチ制御部11に通知する。スイッチ制御部11は、通知されたフローエントリ(ルール144+アクション情報145)を、当該フローエントリに対応付けられた対象装置142(OFS4)に設定する。
【0046】
更に、フロー管理部12は、スイッチ制御部11によって設定されたフローエントリ(ルール144+アクション情報145)の設定情報146を設定済みとする。又、負荷分散処理により、他のフローエントリに変更されたフローエントリの設定情報を未設定に変更し、当該他のフローエントリと未設定としたフローエントリとを対応付ける。
【0047】
フロー生成部13は、OFS4iからのファーストパケットの受信通知に応じて、又はサーバ3mからの負荷分散要求に応じてフローエントリ(ルール144+アクション情報145)を生成する。
【0048】
フロー生成部13は、ファーストパケットの通知に応じてフローエントリを生成する場合、OFS4iから通知されたファーストパケットのヘッダ情報に基づいて通信経路を算出し、当該通信経路上のOFS4iに設定するフローエントリ(ルール144+アクション情報145)を生成する。詳細には、フロー生成部13は、ファーストパケットのヘッダ情報から、パケットデータの送信元のクライアント2nと宛先のサーバ3mを特定し、トポロジ情報15を用いて通信経路を算出し、算出結果を通信経路情報136として記憶装置に記録する。ここでは、通信経路の端点となるサーバ3mと、通信経路上のOFS4i及びそれぞれの接続関係が通信経路情報136として設定される。又、フロー生成部13は、通信経路情報136に基づいて通信経路上のOFS4iに設定するフローエントリ(ルール144+アクション情報145)を設定する。
【0049】
あるいは、フロー生成部13は、負荷分散要求に応じてフローエントリを生成する場合、サーバ3mから通知された送信元IPアドレスと要求元のサーバ3mとに基づいて通信経路を算出し、当該通信経路上のOFS4iに設定するフローエントリ(ルール144+アクション情報145)を生成する。この際、フロー生成部13は、要求元のサーバ3mへの負荷を軽減させるフローエントリ(ルール144+アクション情報145)を生成する。例えば、フロー生成部13は、要求元のサーバ3m宛のパケットデータの一部又は全部が、要求元のサーバ3m以外のサーバに転送されるようにOFS4iを制御するフローエントリ(ルール144+アクション情報145)を生成することが好ましい。
【0050】
より具体的には、フロー生成部13は、通知された送信元IPアドレスのクライアント2nから、要求元のサーバ3mに宛てたパケットデータを要求元のサーバ3mに転送するフローエントリと、通知された送信元IPアドレス以外のIPアドレスのクライアント2nから、要求元のサーバ3mに宛てたパケットデータを要求元のサーバ3m以外のサーバに転送するフローエントリとを生成する。あるいは、フロー生成部13は、所定の期間、要求元のサーバ3m宛のパケットデータを、当該サーバ3m以外のサーバに転送するようなフローエントリを生成する。
【0051】
負荷分散要求に応じてフローエントリを生成する場合も、上述と同様に、新たに指定した送信元のクライアントと宛先サーバとの間の通信経路を、トポロジ情報15を用いて算出し、算出結果を通信経路情報136として記憶装置に記録する。又、フロー生成部13は、通信経路情報136に基づいて通信経路上のOFS4iに設定するフローエントリ(ルール144+アクション情報145)を設定する。
【0052】
図5は、本発明によるオープンフローコントローラが保持するトポロジ情報の一例を示す図である。トポロジ情報15は、OFS4iやサーバ3m等の接続状況に関する情報を含む。具体的には、トポロジ情報15として、OFS4iやサーバ3mを特定する装置識別子151に、当該装置のポート数152やポート接続先情報153が対応付けられて記憶装置に記録される。ポート接続先情報153は、接続相手を特定する接続種別(スイッチ/ノード/外部ネットワーク)や接続先を特定する情報(OFS4の場合はスイッチID、ホストの場合はMACアドレス、外部ネットワーク(例示:インターネット)の場合は外部ネットワークID)が含まれる。
【0053】
図6は、本発明によるオープンフローコントローラが保持する通信経路情報の一例を示す図である。通信経路情報16は、通信経路を特定するための情報である。詳細には、通信経路情報136として、サーバ3mや外部ネットワークインタフェース(図示なし)を端点として指定する端点情報161と、通過するOFS4iとポートの対群を指定する通過スイッチ情報162と、付随情報163とが対応付けられて記憶装置に記録される。例えば、通信経路がサーバ3m間を接続する経路である場合、各サーバ3mのMACアドレスが端点情報161として記録される。通過スイッチ情報162は、端点情報161で示される端点間の通信経路上に設けられるOFS4iの識別子を含む。又、通過スイッチ情報162は、当該OFS4iに設定されるフローエントリ(ルール144+アクション情報145)と当該OFS4iとを対応づけるための情報を含んでも良い。付随情報163は、端点が変更された後の経路上のOFS4(通過スイッチ)に関する情報を含む。
【0054】
以上のような構成により、本発明によるOFC1は、OFS4iからのファーストパケットの受信通知や、サーバ3mからの負荷分散要求に応じて、当該パケットを転送させるためのフローエントリを生成するとともに、生成したフローエントリを、算出した通信経路上のOFS4iに設定する。
【0055】
尚、OFC1はサーバ31〜3mと異なる装置であっても、サーバ31〜3mのいずれかに搭載されていても良い。
【0056】
図7は、本発明によるオープンフロースイッチの実施の形態における構成を示す図である。OFS4iは、OFC1によって設定(更新)されたフローテーブル403に従って受信パケットの処理方法(アクション)を決定する。OFS4iは、転送処理部401とフロー設定部402を備える。転送処理部401とフロー設定部402は、ハードウェアで構成されても、CPUによって実行されるソフトウェアで実現してもどちらでも良い。
【0057】
OFS4iの記憶装置には、図8に示すようなフローテーブル403が設定される。フロー設定部402は、OFC1から取得したフローエントリ(ルール144+アクション情報145)をフローテーブル403に設定する。詳細には、フロー設定部402は、受信パケットのヘッダ情報が、フローテーブル403に記録されたルール144に適合(又は一致)しない場合、当該パケットデータをファーストパケットとして判定し、ファーストパケットを受信したことをOFC1に通知するとともにフローエントリの設定要求を発行する。
【0058】
そして、フロー設定部402は、ファーストパケットの通知に応じてOFC1から送信されるフローエントリ(ルール144+アクション情報145)を、フローテーブル403に設定する。このように、ファーストパケットの受信をトリガとして、OFS41〜2nのそれぞれにはフローエントリに設定される。
【0059】
受信パケットのヘッダ情報が、フローテーブル403に記録されたルール144に適合(一致)する場合、当該パケットデータは、転送処理部401によって、他のOFS4i又はサーバ3mに転送される。詳細には、転送処理部401は、パケットデータのヘッダ情報に適合(又は一致)するルール144に対応するアクション情報145を特定する。転送処理部401は、当該アクション情報145で指定された転送先のノード(OFS4i又はサーバ3m)に当該パケットデータを転送する。
【0060】
具体的には、ルール144:MAC送信元アドレス(L2)が“A1〜A3”、IP宛先アドレス(L3)が“B1〜B3”、プロトコルが“http”、宛先ポート番号(L4)が“C1〜C3”と、アクション情報145:“サーバ31に中継”とが対応付けられているフローが設定されたOFS4iの動作を説明する。MAC送信元アドレス(L2)が“A1”、IP宛先アドレス(L3)が“B2”、プロトコルが“http”、宛先ポート番号(L4)が“C3”であるパケットデータを受信した場合、OFS4iは、ヘッダ情報が当該ルール144に一致していると判断し、受信したパケットデータをサーバ31に転送する。一方、MAC送信元アドレス(L2)が“A5”、IP宛先アドレス(L3)が“B2”、プロトコルが“http”、宛先ポート番号(L4)が“C4”であるパケットデータを受信した場合、OFS4iは、ヘッダ情報が当該ルール144に一致(適合)しないと判断し、ファーストパケット受信の旨をOFC1に通知する。
【0061】
以上のような構成により、本発明によるOFS4対するフローテーブルの更新は、OFS4iにおけるファーストパケットの受信をトリガとして実行されるだけではなく、サーバ3mにおける負荷の監視結果に応じた負荷分散要求をトリガとしても実行される。サーバ3mからの負荷分散要求に応じて設定されるフローエントリは、要求元のサーバ3mにおける負荷が軽減されるようなフローエントリであることが好ましい。
【0062】
(負荷分散方法)
図10A、Bから図13を参照して、本発明によるコンピュータシステムにおける負荷分散動作の詳細を説明する。以下では、サーバ31に集中した負荷を分散する場合を一例に説明する。
【0063】
先ず、前提条件として、OFC1は、OFS41〜4iのそれぞれのフローテーブル403に、フローエントリ(ルール144+アクション情報145)を設定しているものとする。ここでは、OFS41のフローテーブル403に図11Aに示すようなフローエントリが設定されている。図11Aに示すフローテーブル403に従った場合、OFS41は、その送信元IPアドレス(アクセス元IPアドレス)に関わらず、宛先IPアドレス(アクセス先IPアドレス)がIPアドレス“1”のパケットデータをサーバ31に転送し、宛先IPアドレス(アクセス先IPアドレス)がIPアドレス“2”のパケットデータをサーバ32に転送する。
【0064】
図10A及び図10Bは、本発明によるコンピュータシステムの実施の形態における負荷分散動作の一例を示すシーケンス図である。図10A及び図10Bを参照して、先ず、クライアント21は仮想サーバ10にアクセスするため、仮想サーバ10のホスト名の名前解決要求をDNSサーバ5に発行する(ステップS101)。DNSサーバ5は、クライアント21からの名前解決要求に対して、ラウンドロビンのルールに基づき、プールされているIPアドレスを1つ返却する(ステップS102)。ここではIPアドレス“1”を返却したものとする。
【0065】
クライアント21は、DNSサーバ5から取得したIPアドレス“1”を使って仮想サーバ10にアクセスする(ステップS103、S104)。詳細には、クライアント21は、仮想サーバ10宛てのパケットデータの宛先アドレスとしてIPアドレス“1”を設定し、自身のIPアドレス“A”を送信元アドレスとして設定し、OFS41に転送する(ステップS103)。OFS41は、受信パケットに適合するフローエントリに従って、当該パケットデータを処理する。ここでは、図11Aに示すフローテーブル403に従い、宛先IPアドレスがIPアドレス“1”であるため、転送先に設定されたサーバ31に、受信したパケットデータを転送する(ステップS104)。
【0066】
サーバ31は、パケットデータを受信すると、パケットデータの内容に従った処理を行う(ステップS105)。処理内容については、パケットデータの内容、及びサービス提供用プログラム310に応じたサービス提供処理が実行される。これと並行して、サーバ31は、自身の負荷状況を監視及び負荷が過大か否かを判断する(ステップS106)。例えば、サーバ31は、自身への同時接続数が所定の基準値以上であるか否かを判定する。
【0067】
ステップS106において、サーバ31への負荷(ここでは同時接続数)がサーバ31にあらかじめ設定していた基準値(ここでは最大接続数)以下である場合、通常通り、クライアント2nからのアクセスを待ち受ける(ステップS106No)。
【0068】
一方、ステップS106において、サーバ31への負荷(ここでは同時接続数)がサーバ31にあらかじめ設定していた基準値(ここでは最大接続数)以上である場合、OFC1に負荷分散要求を発行する(ステップS106Yes、S107)。この際、負荷状況の判定時にサーバ31へ接続中のすべてのクライアントのIPアドレスを、OFC1に通知する。
【0069】
OFC1は、負荷分散要求に応じて、サーバ31に接続しているクライアント以外のクライアントが以後、サーバ31にアクセスしないような通信経路を算出し、当該通信経路上のOFS4i、及びサーバ31宛てのパケットが通過する通信経路上のOFS4iに設定するフローエントリ(ルール144+アクション情報145)を生成する(ステップS108)。例えば、通知された接続中のIPアドレスがIPアドレス“A”及び“B”である場合、OFC1は、送信元アドレスがIPアドレス“A”又は“B”、宛先アドレスがIPアドレス“1”のパケットデータを、サーバ31に転送するフローエントリと、送信元アドレスがIPアドレス“A”及び“B”以外のアドレスであり、宛先アドレスがIPアドレス“1”であるパケットデータを、サーバ31以外のサーバ(例えばサーバ32)に転送するフローエントリとを作成する。
【0070】
OFC1は、作成したフローエントリを、新たに算出した通信経路(以下、新通信経路と称す)上のOFS4iに設定するとともに、サーバ31へのアクセスに使用した通信経路(以下、旧通信経路と称す)上のOFS4iに設定されていたサーバ31にアクセスするためのフローエントリを削除する(ステップS109、S110)。例えばOFS41、OFS42を介してサーバ32に至る経路が新通信経路として算出された場合、OFC1は、フローエントリの設定指示を新通信経路上のOFS41、42に発行する(ステップS109)。この際、OFS41は、旧通信経路上のスイッチであるため、OFC1は、OFS41に設定していたサーバ31を転送先とするフローエントリの削除指示を発行する。
【0071】
OFS41、42はOFC1から送信されたフローエントリを自身のフローテーブル403に設定する(ステップS110)。例えば、OFS41のフローテーブル403は、図11Bに示すように更新される。ここでは、OFS41のフローテーブル403から、図11Aに示す転送先をサーバ31としたフローエントリが削除され、図11Bに示す新たなフローエントリが追加される。ここでは、送信元IPアドレス(アクセス元IPアドレス)がIPアドレス“A”又は“B”であり、宛先IPアドレス(アクセス先IPアドレス)がIPアドレス“1”のパケットデータをサーバ31に転送するフローエントリと、送信元IPアドレスがIPアドレス“A”、“B”以外のアドレスであり、宛先IPアドレスがIPアドレス“1”のパケットデータを、OFS42に転送するフローエントリとが追加設定される。一方、OFS42のフローテーブル403には、図示しないが、送信元IPアドレスがIPアドレス“A”又は“B”以外のアドレスであり、宛先IPアドレスがIPアドレス“1”のパケットデータをサーバ32に転送するフローエントリが新たに設定される。
【0072】
OFS4iのフローテーブルが更新されて以降、IPアドレス“A”、”B”のクライアントから、IPアドレス“1”を宛先アドレスとして仮想サーバ10へアクセスする場合、当該クライアントは、サーバ31へアクセスすることとなる。一方、IPアドレス“A”、”B”以外のクライアントから、IPアドレス“1”を宛先アドレスとして仮想サーバ10へアクセスする場合、当該クライアントは、サーバ32へアクセスすることとなる。図12を参照して、OFC1による負荷分散処理移行のパケットデータの転送動作について説明する。
【0073】
現在接続中のクライアント21(IPアドレス“A”)からIPアドレス“1”を宛先としたパケットが送信されると、OFS41は、受信パケットに適合するフローエントリに従って、当該パケットデータを処理する(ステップS201、S202)。ここでは、図11Bに示すフローテーブル403に従い、送信元IPアドレスがIPアドレス“A”、宛先IPアドレスがIPアドレス“1”であるため、転送先に設定されたサーバ31に、受信したパケットデータが転送される(ステップS202)。
【0074】
サーバ31は、パケットデータを受信すると、パケットデータの内容に従った処理を行う(ステップS203)。処理内容については、パケットデータの内容、及びサービス提供用プログラム310に応じたサービス提供処理が実行される。上述と同様に、サーバ31は、自身の負荷状況を監視及び負荷が過大か否かを判断し、判断結果に応じてOFS4iのフローテーブル403を変更する。
【0075】
一方、クライアン23は仮想サーバにアクセスするため、当該仮想サーバのホスト名の名前解決要求をDNSサーバ5に発行する(ステップS204)。DNSサーバ5は、クライアント23からの名前解決要求に対して、ラウンドロビンのルールに基づき、プールされているIPアドレスを1つ返却する(ステップS205)。ここではIPアドレス“1”を返却したものとする。
【0076】
クライアント23は、DNSサーバ5から取得したIPアドレス“1”を使って仮想サーバ10にアクセスする(ステップS206〜S208)。詳細には、クライアント23は、仮想サーバ10宛てのパケットデータの宛先アドレスとしてIPアドレス“1”を設定し、自身のIPアドレス“C”を送信元アドレスとして設定して、OFS41に転送する(ステップS206)。OFS41は、受信パケットに適合するフローエントリに従って、当該パケットデータを処理する。ここでは、図11Bに示すフローテーブル403に従い、送信元IPアドレスがIPアドレス“C”、宛先IPアドレスがIPアドレス“1”であるため、転送先に設定されたOFS42に、受信したパケットデータを転送する(ステップS207)。
【0077】
OFS42は、受信パケットに適合するフローエントリに従って、当該パケットデータを処理する(ステップS208)。ここでは、自身のフローテーブル403に従い、送信元IPアドレスがIPアドレス“C”、宛先IPアドレスがIPアドレス“1”であるため、転送先に設定されたサーバ32に、受信したパケットデータを転送する。
【0078】
サーバ32は、パケットデータを受信すると、パケットデータの内容に従った処理を行う(ステップS209)。処理内容については、パケットデータの内容、及びサービス提供用プログラム310に応じたサービス提供処理が実行される。図示しないが、サーバ31と同様に、サーバ32は、自身の負荷状況を監視及び負荷が過大か否かを判断し、判断結果に応じてOFS4iのフローテーブル403を変更する。
【0079】
以上のように、本発明では、通常動作時においては、DNSサーバ5のラウンドロビン機能によって負荷分散が行われ、同一サーバに負荷が集中した場合は、OFC1によってフローテーブル403が更新されることで、負荷の集中を分散することができる。
【0080】
ラウンドロビン機能のみで負荷分散を行ったとしても、少数のクライアントから高い負荷を加えるような運用がされた場合、1つのサーバに負荷が偏ってしまう可能性がある。本発明では、このような負荷の集中を、OFC1による通信経路の変更処理によって回避することができる。すなわち、DNSでウンドロビンによる負荷制御が十分に機能せず、特定のサーバに負荷が偏ってきた場合に初めてOFC1による負荷分散が行われる。
【0081】
又、OFC1によるフロー制御機能のみを利用して負荷分散を行っても良いが、この機能のみを使用して負荷分散を行った場合、負荷の偏り(集中)の発生頻度が高まると、OFC1における処理負荷が増大してしまう。又、フローテーブルの変更頻度が増大するため、パケット転送処理が遅延する場合がある。本発明では、DNSラウンドロビン機能を利用することで、負荷が同一サーバに集中する頻度を抑制している。これにより、OFC1における処理負荷が軽減される。
【0082】
本発明によるOFC1は、DNSサーバ5による名前解決処理に関係なく、OFS4iのフローテーブル403を更新することで、特定サーバへの負荷の集中を回避できる。このため、DNSサーバ5は、通常の名前解決を行えばよく、特別な構成の変更を必要としない。例えば、特許文献1に記載のシステムでは、DNSサーバに対してアドレスの振り分け可否が設定されるが、本発明ではこのような仕様の変更は必要ない。すなわち、本発明によるOFC1は、従来技術によるDNSサーバと連携して負荷分散を行うことができる。又、OFC1は、サーバ3mからの通知(サーバ3mの負荷状況)に応じて負荷分散処理を行うため、DNSサーバ5と直接通信することなく、DNSサーバ5によって回避できなかった負荷の集中を分散することができる。
【0083】
又、ラウンドロビンで返却する候補のIPアドレスの数とサーバ3mの数との対応関係は不要であるため、クライアント2nの設定を変更することなくサーバ3mの数を増減させることができる。
【0084】
更に、オープンフローによるフロー制御機能を利用して負荷分散を行うため、従来よりも詳細な条件で負荷分散を行うことが可能となる。詳細には、OFC1は、フロー(パケットデータ)をレイヤ1からレイヤ4のアドレスや識別子の組み合わせで制御できるため、これらの組み合わせを条件として負荷分散を行うことができる。例えば、サーバ3m上で動作する仮想サーバに対する負荷の集中を分散する運用も可能となる。
【0085】
OFC1による負荷分散処理により、サーバ31に対する負荷が軽減された場合、IPアドレス“1”宛ての通信経路(新通信経路)を負荷分散前の旧通信経路に変更しても構わない。
【0086】
図13は、負荷状況が改善した場合の、通信経路復帰動作の一例を示すシーケンス図である。図13を参照して、負荷増大に伴い負荷分散要求を発行したサーバ31は、負荷(例えば同時接続数)が基準値(閾値)を下回るか否かを判定する(ステップS301)。この判定は、所定の周期や任意に時期に行われることが好ましい。
【0087】
サーバ31への同時接続数が予め設定されている基準値を下回った場合、サーバ31は、設定復帰要求をOFC1に発行する(ステップS301Yes、S302)。サーバ31は、負荷(例えば同時接続数)が基準値を下回った期間が所定の期間以上維持した場合に設定復旧要求を発行することが好ましい。あるいは、サーバ31は、負荷(例えば同時接続数)が基準値を下回ったことを検出した回数が所定の回数に達した場合に設定復旧要求を発行することが好ましい。一方、サーバ31への同時接続数が予め設定されている基準値以上である場合は現状を維持し、クライアント2nからのアクセスを待ち受ける(ステップS301No)。
【0088】
OFC1は、同時接続数が閾値を下回ったという通知(設定復帰要求)を受けると、ステップS108〜S110で変更したOFS4iのフローテーブルを元に戻す(ステップS303〜S305)。詳細には、変更前に設定していたフローエントリ(ルール144+アクション情報145)をフローテーブル14から抽出し、OFS41、42に設定する。この際、変更前のフローエントリ(旧通信経路に対応するフローエントリ)は、新通信経路に対応するフローエントリに紐付けられており、これによって、旧通信経路に対応するフローエントリを特定することが好ましい。
【0089】
このようにアクセス先(通信経路)を元に戻すことで、DNSサーバ5でのラウンドロビン機能による負荷制御が十分に機能している間は、OFC1によって変更されたフローエントリが不要となり、デフォルトの状態(例えばユーザが最初に設定した状態)の通信環境が維持される。すなわち、ユーザが所望の通信環境でシステムの保守管理が可能となる。ただし、OFC1によって負荷分散された状態でも、OFC1が通信経路やOFS4iの動作を一元的に制御しているため、システムの保守管理は容易に行うことができる。
【0090】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。上述の実施の形態では、新通信経路と旧通信経路は、異なるOFS4iを通過しているが、同じOFS4iを通過した経路でも良い。この場合、OFS4iの最終段のフローエントリのみを変更することで、クライアント2nのアクセス先サーバを変更することができる。この結果、OFC1のフローエントリの更新処理による負荷を、更に減じることが可能となる。
【0091】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限らない。
【0092】
(付記1)
通信経路上のスイッチに対して、フローエントリを設定するコントローラと、
前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチと、
前記スイッチを介して自身に接続された複数のクライアント端末のそれぞれに対して、サービスを提供する複数のサービス提供サーバと、
ラウンドロビン機能によって、前記複数のクライアント端末と前記複数のサービス提供サーバと間の負荷分散を行うDNS(Domain Name System)サーバと
を具備し、
前記複数のサービス提供サーバのそれぞれは、それぞれの負荷状況を監視し、自身に対する負荷が閾値以上であると判定すると、負荷分散要求を前記コントローラに発行し、
前記コントローラは、前記負荷分散要求に応じて、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【0093】
(付記2)
付記1に記載のコンピュータシステムにおいて、
前記コントローラは、前記負荷分散要求の要求元サーバへの負荷を軽減させるためのフローエントリを前記スイッチに設定する
コンピュータシステム。
【0094】
(付記3)
付記2に記載のコンピュータシステムにおいて、
前記コントローラは、前記要求元サーバと異なるサービス提供サーバにアクセスするための新通信経路を算出し、前記新通信経路上のスイッチに設定するフローエントリを生成する
コンピュータシステム。
【0095】
(付記4)
付記2又は3に記載のコンピュータシステムにおいて、
前記要求元サーバは、自身に接続中のクライアント端末のアドレスを前記コントローラに通知し、
前記コントローラは、前記通知されたアドレス以外のアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバ以外のサービス提供サーバに到達するように、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【0096】
(付記5)
付記4に記載のコンピュータシステムにおいて、
前記コントローラは、前記通知されたアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバに到達するように、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【0097】
(付記6)
付記1から5のいずれか1項に記載のコンピュータシステムにおいて、
前記複数のサービス提供サーバのそれぞれは、自身への同時接続数を監視し、前記同時接続数が閾値以上であると判定した場合、前記負荷分散要求を前記コントローラに発行する
コンピュータシステム。
【0098】
(付記7)
付記1から6のいずれか1項に記載のコンピュータシステムにおいて、
前記負荷分散要求を発行した要求元サーバは、前記負荷が、前記閾値を下回った場合、設定復帰要求を前記コントローラに発行し、
前記コントローラは、前記負荷分散要求に応じて、変更した前記スイッチのフローエントリを元のフローエントリに戻す
コンピュータシステム。
【0099】
(付記8)
付記1から7のいずれか1項に記載のコンピュータシステムにおいて、
前記複数のサービス提供サーバは、1つのホスト名が割り当てられた仮想サーバを形成し、
前記複数のサービス提供サーバのそれぞれには、複数のIPアドレスが割り当てられる
コンピュータシステム。
【0100】
(付記9)
付記1から8のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【0101】
(付記10)
付記1から8のいずれか1項に記載のコンピュータシステムで利用されるスイッチ。
【0102】
(付記11)
付記1から8のいずれか1項に記載のコンピュータシステムで利用されるサービス提供サーバ。
【0103】
(付記12)
コントローラが、通信経路上のスイッチに対して、フローエントリを設定するステップと、
スイッチが、前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと、
複数のサービス提供サーバのそれぞれが、前記スイッチを介して自身に接続された複数のクライアント端末のそれぞれに対して、サービスを提供するステップと、
DNS(Domain Name System)サーバが、ラウンドロビン機能によって、前記複数のクライアント端末と前記複数のサービス提供サーバと間の負荷分散を行うステップと、
前記複数のサービス提供サーバのそれぞれが、それぞれの負荷状況を監視するステップと、
前記複数のサービス提供サーバのそれぞれが、自身に対する負荷が閾値以上であると判定すると、負荷分散要求を前記コントローラに発行するステップと、
前記コントローラが、前記負荷分散要求に応じて、前記スイッチに設定したフローエントリを変更するステップと
を具備する
負荷分散方法。
【0104】
(付記13)
付記12に記載の負荷分散方法において、
前記フローエントリを変更するステップは、前記コントローラは、前記負荷分散要求の要求元サーバへの負荷を軽減させるためのフローエントリを前記スイッチに設定するステップを備える
負荷分散方法。
【0105】
(付記14)
付記13に記載の負荷分散方法において、
前記フローエントリを変更するステップは、
前記コントローラが、前記要求元サーバと異なるサービス提供サーバにアクセスするための新通信経路を算出するステップと、
前記コントローラが、前記新通信経路上のスイッチに設定するフローエントリを生成するステップと
を更に備える
負荷分散方法。
【0106】
(付記15)
付記13又は14に記載の負荷分散方法において、
前記フローエントリを変更するステップは、
前記要求元サーバが、自身に接続中のクライアント端末のアドレスを前記コントローラに通知するステップと、
前記コントローラが、前記通知されたアドレス以外のアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバ以外のサービス提供サーバに到達するように、前記スイッチに設定したフローエントリを変更するステップと
を更に備える
負荷分散方法。
【0107】
(付記16)
付記15に記載の負荷分散方法において、
前記フローエントリを変更するステップは、前記コントローラが、前記通知されたアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバに到達するように、前記スイッチに設定したフローエントリを変更するステップを更に備える
負荷分散方法。
【0108】
(付記17)
付記12から16のいずれか1項に記載の負荷分散方法において、
前記負荷状況を監視するステップは、前記複数のサービス提供サーバのそれぞれが、自身への同時接続数を監視するステップを備え、
前記負荷分散要求を発行するステップは、前記複数のサービス提供サーバのそれぞれが、前記同時接続数が閾値以上であると判定した場合、前記負荷分散要求を前記コントローラに発行するステップを備える
を備える
負荷分散方法。
【0109】
(付記18)
付記12から17のいずれか1項に記載の負荷分散方法において、
前記負荷分散要求を発行した要求元サーバが、前記負荷が前記閾値を下回った場合、設定復帰要求を前記コントローラに発行するステップと、
前記コントローラが、前記負荷分散要求に応じて変更した前記スイッチのフローエントリを、元のフローエントリに戻すステップと
を更に具備する
負荷分散方法。
【符号の説明】
【0110】
1:オープンフローコントローラ(OFC)
21〜2n:クライアント端末
31〜3m:サービス提供サーバ
41〜4i:オープンフロースイッチ(OFS)

【特許請求の範囲】
【請求項1】
通信経路上のスイッチに対して、フローエントリを設定するコントローラと、
前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うスイッチと、
前記スイッチを介して自身に接続された複数のクライアント端末のそれぞれに対して、サービスを提供する複数のサービス提供サーバと、
ラウンドロビン機能によって、前記複数のクライアント端末と前記複数のサービス提供サーバと間の負荷分散を行うDNS(Domain Name System)サーバと
を具備し、
前記複数のサービス提供サーバのそれぞれは、それぞれの負荷状況を監視し、自身に対する負荷が閾値以上であると判定すると、負荷分散要求を前記コントローラに発行し、
前記コントローラは、前記負荷分散要求に応じて、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【請求項2】
請求項1に記載のコンピュータシステムにおいて、
前記コントローラは、前記負荷分散要求の要求元サーバへの負荷を軽減させるためのフローエントリを前記スイッチに設定する
コンピュータシステム。
【請求項3】
請求項2に記載のコンピュータシステムにおいて、
前記要求元サーバは、自身に接続中のクライアント端末のアドレスを前記コントローラに通知し、
前記コントローラは、前記通知されたアドレス以外のアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバ以外のサービス提供サーバに到達するように、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【請求項4】
請求項3に記載のコンピュータシステムにおいて、
前記コントローラは、前記通知されたアドレスを送信元アドレスとしたパケットデータが、前記要求元サーバに到達するように、前記スイッチに設定したフローエントリを変更する
コンピュータシステム。
【請求項5】
請求項1から4のいずれか1項に記載のコンピュータシステムにおいて、
前記複数のサービス提供サーバのそれぞれは、自身への同時接続数を監視し、前記同時接続数が閾値以上であると判定した場合、前記負荷分散要求を前記コントローラに発行する
コンピュータシステム。
【請求項6】
請求項1から5のいずれか1項に記載のコンピュータシステムにおいて、
前記負荷分散要求を発行した要求元サーバは、前記負荷が前記閾値を下回った場合、設定復帰要求を前記コントローラに発行し、
前記コントローラは、前記負荷分散要求に応じて、変更した前記スイッチのフローエントリを元のフローエントリに戻す
コンピュータシステム。
【請求項7】
請求項1から6のいずれか1項に記載のコンピュータシステムにおいて、
前記複数のサービス提供サーバは、1つのホスト名が割り当てられた仮想サーバを形成し、
前記複数のサービス提供サーバのそれぞれには、複数のIPアドレスが割り当てられる
コンピュータシステム。
【請求項8】
請求項1から7のいずれか1項に記載のコンピュータシステムで利用されるコントローラ。
【請求項9】
請求項1から7のいずれか1項に記載のコンピュータシステムで利用されるサービス提供サーバ。
【請求項10】
コントローラが、通信経路上のスイッチに対して、フローエントリを設定するステップと、
スイッチが、前記コントローラによって設定されたフローエントリに従って、受信パケットの中継処理を行うステップと、
複数のサービス提供サーバのそれぞれが、前記スイッチを介して自身に接続された複数のクライアント端末のそれぞれに対して、サービスを提供するステップと、
DNS(Domain Name System)サーバが、ラウンドロビン機能によって、前記複数のクライアント端末と前記複数のサービス提供サーバと間の負荷分散を行うステップと、
前記複数のサービス提供サーバのそれぞれが、それぞれの負荷状況を監視するステップと、
前記複数のサービス提供サーバのそれぞれが、自身に対する負荷が閾値以上であると判定すると、負荷分散要求を前記コントローラに発行するステップと、
前記コントローラが、前記負荷分散要求に応じて、前記スイッチに設定したフローエントリを変更するステップと
を具備する
負荷分散方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−170718(P2011−170718A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−35322(P2010−35322)
【出願日】平成22年2月19日(2010.2.19)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】