JP5794320B2 - コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置 - Google Patents

コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置 Download PDF

Info

Publication number
JP5794320B2
JP5794320B2 JP2013556046A JP2013556046A JP5794320B2 JP 5794320 B2 JP5794320 B2 JP 5794320B2 JP 2013556046 A JP2013556046 A JP 2013556046A JP 2013556046 A JP2013556046 A JP 2013556046A JP 5794320 B2 JP5794320 B2 JP 5794320B2
Authority
JP
Japan
Prior art keywords
controller
load
switch
switches
openflow network
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.)
Expired - Fee Related
Application number
JP2013556046A
Other languages
English (en)
Other versions
JPWO2013114490A1 (ja
Inventor
正太郎 河野
正太郎 河野
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2013556046A priority Critical patent/JP5794320B2/ja
Publication of JPWO2013114490A1 publication Critical patent/JPWO2013114490A1/ja
Application granted granted Critical
Publication of JP5794320B2 publication Critical patent/JP5794320B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/34Signalling channels for network management communication
    • H04L41/342Signalling channels for network management communication between virtual entities, e.g. orchestrators, SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/083Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for increasing network speed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はコントローラ、負荷分散方法、プログラムを格納した非一時的なコンピュータ可読媒体、コンピュータシステム、制御装置に関し、特にオープンフローネットワークにかかるコントローラ、負荷分散方法、プログラムを格納した非一時的なコンピュータ可読媒体、コンピュータシステム、制御装置に関する。
OpenFlow(オープンフロー)ネットワークは、MAC(Media Access Control)アドレスやIPアドレス、ポート番号の組み合わせによって決定される一連の通信を"フロー"として定義し、フロー単位での経路制御を実現するネットワーク制御技術である。OpenFlowネットワークは、パケットの経路計算を行うコントローラ(OFC:OpenFlow Controller)と、パケットの転送を行うスイッチ(OFS:OpenFlow Switch)と、スイッチに接続される端末と、から構成される。
スイッチは、フロー単位にパケットの転送経路や転送方法等を記述したフローテーブルを有する。コントローラは、スイッチ上のフローテーブルのエントリにパケットの転送ルールを設定する。スイッチは、フローテーブルに設定された転送ルールに従ってパケットの転送を行う。
コントローラと各スイッチの間には、セキュアチャネルと呼ばれるSSL/TLS(Secure Socket Layer/Transport Layer Security)またはTCP(Transmission Control Protocol)の接続が確立される。セキュアチャネルを介して、OpenFlowプロトコルのメッセージの送受信が行われる。
スイッチは、端末からパケットを受信すると、フローテーブルのヘッダフィールド(Header Field属性)を参照し、パケットのヘッダ情報を適合するヘッダフィールドを持つエントリを検索する。エントリが存在する場合、スイッチは、エントリの統計情報(Counters属性)を更新し、指定された処理(Actions属性)を実行する。エントリが存在しない場合、スイッチは、当該パケットをコントローラに送信する(Packet Inメッセージ)。
コントローラは、Packet Inメッセージを受信すると、パケットの経路計算を行う。コントローラは、経路計算に応じて、スイッチ上のフローテーブルに当該パケットに対応するエントリを追加する(Flow Modメッセージ)。そして、コントローラは、当該パケットをスイッチに送信する(Packet Outメッセージ)。
OpenFlowネットワークにおいて、スイッチに接続される端末数が増加する場合、スイッチからコントローラに送信されるPacket Inメッセージが増加する。Packet Inメッセージが増加する場合、単一のコントローラではメッセージを処理しきれなくなる可能性がある。そこで、コントローラがスイッチから受信するメッセージ数を分散させるために、OpenFlowネットワーク上に複数のコントローラを設置することが望ましい。
OpenFlowネットワーク内に複数のコントローラを導入する場合、各コントローラに管理対象のスイッチを割り当てる。コントローラは、管理対象のスイッチとのみメッセージの送受信を行う。これにより、コントローラがスイッチから受信するメッセージ数を分散させることができる。
OpenFlowネットワーク上に複数のコントローラを設置した場合、コントローラがスイッチ内のフローテーブルに転送ルールを設定する際に、以下に示す経路情報及びトポロジ情報が必要となる。そのため、コントローラは、お互いに情報の同期処理を行う。
(1)経路情報
OpenFlowネットワーク内の最短経路を示す情報である。コントローラがトポロジ情報から算出する。
(2)トポロジ情報
OpenFlowネットワーク内のスイッチの接続情報を表す情報である。各コントローラは、管理対象のスイッチの各々に対して定期的にLLDP(Link Layer Discovery Protocol)等のクエリパケットを送信することにより取得する。
特開2011−166692号公報
OpenFlow Switch Specification Version 1.1.0 Implemented (Wire Protocol 0x02) February 28, 2011, [平成24年1月16日検索]、インターネット<URL: http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf>
上述のように、OpenFlowネットワークには、複数のコントローラを設けることができる。これにより、コントローラの負荷分散を図ることが可能となる。しかしながら、以下の理由(1)及び(2)により、単純にコントローラに略同数のスイッチを割り当てるだけでは、各コントローラの負荷が均等化されないという問題がある。
(1) スイッチの使用状況
各管理対象のスイッチからコントローラに送信されるメッセージ数は、スイッチ毎に異なる。さらに、当該メッセージ数は、時間帯によっても変化する。
(2) ネットワーク構成(トポロジ)の更新
各管理対象のスイッチからコントローラに送信されるメッセージ数は、スイッチ間の接続障害、スイッチの追加/削除等によるトポロジの変化に応じて変化する。
本発明は、上述した問題を鑑みてなされたものであり、複数のコントローラが配置されたOpenFlowネットワークにおいて、各コントローラの負荷を均等化することができるコントローラ、負荷分散方法、プログラムを格納した非一時的なコンピュータ可読媒体、コンピュータシステム、制御装置を提供することを主たる目的とする。
本発明にかかるコントローラの一態様は、
オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラであって、
オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、
を備えるものである。
本発明にかかる負荷分散方法の一態様は、
オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラの負荷分散方法であって、
前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を持つ負荷管理テーブルを管理する管理ステップと、
所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御ステップと、
を備えるものである。
本発明にかかるプログラムを格納した非一時的なコンピュータ可読媒体の一態様は、
コンピュータに、
オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラの負荷分散方法を実行させるプログラムであって、
前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を持つ負荷管理テーブルを管理する管理ステップと、
所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御ステップと、
を実行させる、ものである。
本発明にかかるコンピュータシステムの一態様は、
フローテーブルに従ってオープンフローネットワーク上のパケット転送を行う複数のスイッチ装置と、
前記複数のスイッチの一部を管理する複数のコントローラと、を備えるコンピュータシステムであって、
前記複数のコントローラの各々は、
前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、を備える、ものである。
本発明にかかる制御装置の一態様は、
オープンフローネットワーク上でのスイッチ装置を管理する複数のコントローラ装置の負荷を分散させる制御装置であって、
前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、
を備えるものである。
本発明では、複数のコントローラが配置されたOpenFlowネットワークにおいて、各コントローラの負荷を均等化することができるコントローラ、負荷分散方法、プログラムを格納した非一時的なコンピュータ可読媒体、コンピュータシステム、制御装置を提供することができる。
実施の形態1にかかるオープンフローネットワークの構成を示すブロック図である。 実施の形態1にかかるコントローラの構成を示すブロック図である。 実施の形態1にかかる負荷管理テーブルの構成を示す概念図である。 実施の形態1にかかるスイッチの構成を示すブロック図である。 実施の形態1にかかるコントローラの制御動作を示すフローチャートである。 実施の形態1にかかるコントローラによる負荷情報の更新処理を示すフローチャートである。 実施の形態1にかかるコントローラによる負荷分散処理を示すフローチャートである。 実施の形態1にかかるオープンフローネットワークにおけるスイッチ追加処理を示すフローチャートである。 実施の形態1にかかるスイッチのコントローラ情報取得処理を示すフローチャートである。 実施の形態1にかかるオープンフローネットワークにおけるスイッチ削除処理を示すフローチャートである。 実施の形態1にかかるオープンフローネットワークの構成を示すブロック図である。 実施の形態1にかかる負荷管理テーブルの構成を示す具体例である。 実施の形態1にかかる負荷管理テーブルの構成を示す具体例である。 実施の形態1にかかるオープンフローネットワークの構成を示すブロック図である。 実施の形態1にかかるコントローラのハードウェア構成を示すブロック図である。 本発明にかかるオープンフローネットワークの構成を示すブロック図である。
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。まず、本実施の形態が扱うオープンフローネットワークの概要を説明する。図1は、本実施の形態が扱うオープンフローネットワークの構成を示すブロック図である。
オープンフローネットワークは、複数のコントローラ1(1−1、1−2)と、複数のスイッチ2(2−1〜2−4)と、複数の端末(3−1〜3−8)から構成される。コントローラ1−1は、スイッチ2−1及びスイッチ2−2を管理、すなわちこれらのスイッチのフローテーブルの制御等を行う。同様に、コントローラ1−2は、スイッチ2−3及びスイッチ2−4を管理、すなわちこれらのスイッチのフローテーブルの制御等を行う。なお、コントローラ1−1、1−2は、任意の数のスイッチを管理できることは勿論である。以下の記載では、コントローラ1−1と1−2を特に区別しない場合、単に「コントローラ1」と記載する。
スイッチ2−1は、内部にフローテーブルを有する。スイッチ2−1は、端末3−1、3−2、または他のスイッチ2−2からパケットを受信し、受信したパケットをフローブルに従って転送する装置である。なお、スイッチ2−1は、任意の数の端末からパケットを受信できることは勿論である。スイッチ2−2〜2−4についてもスイッチ2−1と同様の構成である。以下の記載では、スイッチ2−1〜2−4を特に区別しない場合、「スイッチ2」と記載する。
端末3−1は、パケットをやり取りする端末である。端末3−1は、例えば一般的なパーソナルコンピュータ、携帯電話等が該当する。端末3−2〜3−7についても同様である。以下の記載では、端末3−1〜3−8を特に区別しない場合、「端末3」と記載する。
続いて、図2を参照して、コントローラ1の内部構成及び動作について説明する。図2は、コントローラ1の内部構成を示すブロック図である。コントローラ1は、メッセージ制御部11と、経路制御部12と、トポロジ更新部13と、負荷制御部14と、ネットワーク情報記憶部15と、を備える。コントローラ2は、CPU(Central Processing Unit)等を備えるコンピュータであればよい。
ネットワーク情報記憶部15は、経路情報151と、トポロジ情報152と、負荷管理テーブル153と、を記憶する記憶部である。経路情報151とは、各スイッチ2がパケットをどのように送信するかを示す、いわゆるフロー情報を含む情報である。トポロジ情報152は、オープンフローネットワークの構成を示す情報である。負荷管理テーブル153は、各コントローラ1の負荷がどの程度であるかを把握できる情報を保持するテーブルである。負荷管理テーブル153については、図3を参照して後述する。
ネットワーク情報記憶部15内の各情報は、全てのコントローラ1において同期される(変更情報を互いに通知する)。そのため、あるコントローラ1において、ネットワーク情報記憶部15内の各情報が更新された場合、他のコントローラ1のネットワーク情報記憶部15内の各情報も更新される。
メッセージ制御部11は、管理対象のスイッチ2とオープンフローネットワークプロトコルに定められた各種のメッセージの送受信を行う処理部である。メッセージ制御部11は、受信したメッセージに応じて各処理部(経路制御部12、トポロジ更新部13、負荷制御部14)に各種処理の実行を指示する。
経路制御部12は、スイッチ2からPacket Inメッセージを、メッセージ制御部11を介して受信する。経路制御部12は、Packet Inメッセージの受信時にトポロジ情報152を参照し、当該Packet Inメッセージにかかる経路計算を行う。そして、経路制御部12は、算出した経路に応じて経路情報151を更新する。
トポロジ更新部13は、管理対象のスイッチ2に対して、クエリパケットを送信する。トポロジ更新部13は、当該クエリパケットの送信によりスイッチ2の接続情報を取得する。トポロジ更新部13は、取得した接続情報に応じて、トポロジ情報152を更新する。
負荷制御部14は、負荷管理テーブル153の負荷情報を参照、及び更新する。そして、負荷制御部14は、所定のイベント(一定時間の経過、スイッチ2の追加/削除等)が生じた場合に各コントローラ1の処理負荷を算出し、処理負荷が高いコントローラ1を検出する。そして、負荷制御部14は、検出したコントローラ1の処理負荷を分散させるべきか否かを判定し、処理負荷を分散させるべきと判断した場合には当該コントローラ1の管理するスイッチ2の一部を、処理負荷の低いコントローラ1の管理に切り替える。当該処理負荷の分散処理の詳細は、図6、図7を参照して後述する。
図3は、負荷管理テーブル153の構成を示す概念図である。負荷管理テーブル153は、スイッチID、コントローラID、ホップ数、受信メッセージ数、受信パケット数を属性とするテーブルである。負荷管理テーブル153には、オープンフローネットワーク上に存在するスイッチ毎にエントリが設けられる。
スイッチIDとは、オープンフローネットワーク内でスイッチ2を一意に識別するための属性である。スイッチIDは、負荷管理テーブル153の主キーとなる情報である。スイッチIDは、例えば、スイッチ2のMACアドレスの48ビットと、実装依存の12ビットからなるデータパスIDから構成する。データパスIDは、コントローラ1とスイッチ2との間のセキュアチャネルの確立後、オープンフロープロトコルのFeatures/Replyメッセージのやり取りにより取得することができる。
コントローラIDは、オープンフローネットワーク内において、コントローラ1を一意に識別するための属性である。コントローラIDには、例えばコントローラ1のIP(Internet Protocol)アドレスを使用すればよい。
ホップ数は、コントローラ1とスイッチ2との間のホップ数(通過する通信装置数)を示す属性である。
受信メッセージ数は、コントローラ1がスイッチ2から受信した所定時間当たりのメッセージ数を示す属性である。スイッチ2からコントローラ1がメッセージを受信する毎に、受信メッセージ数はインクリメント(1ずつ加算)される。
受信パケット数は、コントローラ1の管理対象とするスイッチ2が、端末3または隣接するスイッチ2から受信したパケット数を設定するための属性である。オープンフロープロトコルのStatistics Request/Replyメッセージの送受信により、コントローラ1は、スイッチ2内の各ポートの所定時間当たりの受信パケット数を把握することができる。
続いて、図4を参照して、本実施の形態にかかるスイッチ2の内部構成、及び動作について説明する。図4は、本実施の形態にかかるスイッチ2の内部構成を示すブロック図である。
スイッチ2は、パケット制御部21と、メッセージ制御部22と、を備える。また、スイッチ2は、フローテーブル23と、スイッチID24と、コントローラ情報25と、を記憶する。コントローラ情報25は、コントローラID251と、ホップ数252と、を備えている。
パケット制御部21は、端末3または隣接するスイッチ2からパケットを受信した際に、フローテーブル23を参照する。パケット制御部21は、フローテーブル23を参照することにより受信したパケットの転送先を決定し、当該パケットを転送する。オープンフローネットワーク上に新たなスイッチ2を追加する場合、パケット制御部21は、隣接するスイッチ2にクエリパケットを送信し、コントローラ情報25を取得する。
メッセージ制御部22は、コントローラ1内のメッセージ制御部11とオープンフロープロトコルに規定されたメッセージの送受信を行う。コントローラ1からFlow Modメッセージを受信した場合、メッセージ制御部22は、受信メッセージに応じてフローテーブル23を更新する。さらに、メッセージ制御部22は、コントローラ1との間にセキュアチャネルを確立する際には、スイッチID24をコントローラ1に送信する。
フローテーブル23は、コントローラ1から設定される情報である。フローテーブル23は、通信フロー単位のパケットの転送経路や転送方法等が記載される。詳細は、例えば非特許文献1を参照されたい。
スイッチID24は、スイッチ2を一意に特定する識別情報である。コントローラID251は、フローテーブル23を制御するコントローラ1のコントローラIDを示す情報である。ホップ数252は、スイッチ2とコントローラ1との間のホップ数である。
続いて、図5〜図7を参照して、コントローラ1の動作について説明する。上述したようにコントローラ1内の負荷制御部14は、所定イベント(所定時間の経過等)が生じた場合に各コントローラ1の負荷を分散させる処理(負荷分散処理)を行う。以下、当該所定イベント発生時の各動作、及び負荷分散処理の詳細について説明する。
図5は、コントローラ1の制御動作を示すフローチャートである。コントローラ1は、所定時間の待ち合わせを行う(ステップA1)。所定時間の経過後、コントローラ1は、負荷情報の更新処理(図6)を実行する(ステップA2)。
図6は、コントローラ1による負荷情報の更新処理の詳細を示すフローチャートである。はじめに、コントローラ1内のトポロジ制御部13は、管理対象のスイッチ1の各々に対してクエリパケットを送信し、スイッチ1の各ポートの接続情報を取得する(ステップB1)。クエリパケットの送受信により、接続障害のあるスイッチ1(以下、接続障害の生じたスイッチ1をスイッチS0と記載する)を検出した場合(ステップB2:Yes)、トポロジ制御部13は、負荷制御部14に当該スイッチS0を通知する。通知を受けた負荷制御部14は、オープンフローネットワーク内の各コントローラ1の処理負荷を計算し、処理負荷が最小のコントローラ1(以下、負荷が最小のコントローラ1をコントローラC0と記載する)のコントローラIDを取得する(ステップB3)。なお、処理負荷の算出方法は、図7を参照して後述する。
そして、負荷制御部14は、負荷管理テーブル153のスイッチS0のエントリのコントローラID属性に、コントローラC0のコントローラIDを設定する(ステップB4)。さらに、コントローラC0内の負荷制御部14は、セキュアチャネルを介してスイッチS0のコントローラID251にコントローラC0のコントローラIDを設定する(ステップB5)。
さらに、負荷制御部14は、管理対象のスイッチ2の各々から受信パケット数を取得し、負荷管理テーブル153に設定する(ステップB6、B7)。この時、トポロジの変化により使用されなくなったポートの受信パケット数は、使用しない。上述のステップB1〜B7により、接続障害がなく、かつ受信パケット数が取得できた状態となる。この状態において、コントローラの負荷分散処理(ステップB8)が実行される。当該負荷分散処理(ステップB8)の詳細を図7に示す。
負荷制御部14は、負荷管理テーブル153を参照し、各コントローラ1の処理負荷を算出する。負荷制御部14は、例えば受信メッセージ数と受信パケット数を乗算することにより数値情報の処理負荷を算出する。そして、負荷制御部14は、処理負荷が最大のコントローラ1(以下の記載ではコントローラC1と記載する)のコントローラIDを取得する(ステップC1)。
なお、処理負荷は、必ずしも数値情報である必要はなく、所定閾値を基準とした「高」「中」「低」等の情報であっても良い。
負荷制御部14は、コントローラC1の処理負荷が所定閾値(第1閾値)以下であるか否かを判定する(ステップC2)。所定閾値以下である場合(ステップC2:Yes)、負荷制御部14は、処理を終了する。
一方、コントローラC1の処理負荷が所定閾値以下ではない場合(ステップC2:No)、負荷制御部14は、処理負荷が最小のコントローラ1(以下の記載ではコントローラC2と記載する)を選択し、コントローラIDを取得する(ステップC3)。
また、負荷制御部14は、コントローラC1の管理対象のスイッチ2のうち、処理負荷に与える影響が相対的に小さいスイッチ2(以下の記載ではスイッチS1とする)を選択し、スイッチIDを取得する(ステップC4)。換言すると処理負荷に与える影響が低い順序でスイッチ2を選択する。例えば、ステップC4を初めて実行する場合、負荷制御部14は、処理負荷に与える影響が最も小さいスイッチ2をスイッチS1として選択する。
負荷制御部14は、スイッチS1のホップ数を負荷管理テーブル153から取得し、取得したホップ数が閾値(第2閾値)以上であるか否かを判定する(ステップC5)。ホップ数が閾値以上ではない場合(ステップC5:No)、負荷制御部14は、ステップC4から処理を再開する。この際、負荷制御部14は、直前のステップC4で選択したスイッチS1の次に処理負荷が小さいスイッチ2を選択する。
一方、ホップ数が閾値以上である場合(ステップC5:Yes)、負荷制御部14は、負荷管理テーブル153において、スイッチS1のエントリのコントローラID属性にコントローラC2のコントローラIDを設定する(ステップC6)。さらに、負荷制御部14は、セキュアチャネルを経由して、スイッチS1のコントローラID251にコントローラC2のコントローラIDを設定する(ステップC7)。
ステップC7の終了後、負荷制御部14は、ステップC1から処理を再開する。
なお、上述の処理では、負荷制御部14は、所定閾値(第1閾値)との比較により、コントローラC1を選択したが必ずしもこれに限られない。たとえば、負荷制御部14は、もっとも処理負荷が高いコントローラ1を無条件でコントローラC1に選択してもよい。すなわち、負荷制御部14は、任意の基準により処理負荷を分散させるべきコントローラ1を選択すればよい。
上述の処理において、ホップ数の判定を行ったが、必ずしもこれに限られず、ホップ数の判定を行わず、最も処理負荷の小さいスイッチ2を上述のスイッチS1と決定しても良い。しかしながら、ホップ数を考慮することにより、単なる処理負荷の分散のみならず、ネットワーク構成の複雑化を防ぐという効果も奏する。
また、上述の説明では、スイッチ2の切り替え対象のコントローラ1(C2)として、処理負荷が最も小さいコントローラ1を選択したが、必ずしもこれに限られず、処理負荷が所定値以下の任意のコントローラ1を選択しても良い。しかしながら、処理負荷が相対的に小さい順序でコントローラ1を選択していくことにより、最も処理負荷を平均化することができる。
続いて、図8及び図9を参照して、オープンフローネットワーク上に新たなスイッチ2を追加した場合の各装置(コントローラ1、スイッチ2)の処理について説明する。図8は、スイッチ2の追加処理を示すフローチャートである。
まず、追加対象のスイッチ2内のパケット制御部21は、隣接するスイッチ2からコントローラ情報25を取得するために、コントローラ情報取得処理を実行する(ステップD1)。当該コントローラ情報取得処理を図9に示し、説明する。
追加対象のスイッチ2内のパケット制御部21は、隣接するスイッチ2に対してクエリパケットをブロードキャスト送信する。パケット制御部21は、これによりコントローラ情報25を受信する(ステップE1)。複数のスイッチ2からコントローラ情報25を受信した場合(ステップE2:Yes)、パケット制御部21は、ホップ数252が最小の値であるコントローラ情報25を選択する(ステップE3)。そして、パケット制御部21は、メッセージ制御部22を介してコントローラ1と通信を行い、コントローラ1までのホップ数252を取得する(ステップE4)。
再び、図8を参照する。コントローラ情報25を取得(ステップD1)した後に、スイッチ2内のメッセージ制御部22は、コントローラ情報25のコントローラID251を参照し、当該コントローラID251の特定するコントローラ1とセキュアチャネルを確立する(ステップD2)。
そして、メッセージ制御部22は、コントローラ1の負荷管理テーブル153から他のコントローラ1のコントローラIDを取得し、セキュアチャネルを確立する(ステップD3、D4)。
オープンフローネットワークに存在する各コントローラ1内の負荷制御部14は、負荷管理テーブル153に追加対象のスイッチ1のエントリを追加する(ステップD5)。この際、管理テーブル153のスイッチID属性には、追加対象のスイッチ2のスイッチID24の値を設定する。管理テーブル153のホップ数属性には、追加対象のスイッチ2のホップ数252の値を設定する。管理テーブル153の受信メッセージ属性及び受信パケット数属性には、0を設定する。そして、負荷情報の更新処理(上述の図6の処理)を実行する(ステップD6)。
続いて、図10を参照して、オープンフローネットワーク上からスイッチ2を削除した場合の各装置(コントローラ1、スイッチ2)の処理について説明する。図10は、スイッチ2の削除処理を示すフローチャートである。
スイッチ2内のメッセージ制御部22は、オープンフローネットワーク上の全てのコントローラ1とのセキュアチャネルを切断する(ステップF1)。これに応じて、各コントローラ1内の負荷制御部14は、負荷管理テーブル153から削除対象のスイッチ2のエントリを削除する(ステップF2)。そして、上述した負荷情報の更新処理(上述の図6の処理)を実行する(ステップF3)。
続いて、図11〜14を参照して、図7に示すコントローラ1の負荷分散処理の具体例について説明する。図11は、負荷分散処理前のオープンフローネットワークの構成を示すブロック図である。図12は、負荷分散処理前の負荷管理テーブル153の構成を示す概念図である。
負荷制御部14は、オープンフローネットワーク内に存在するコントローラ(コントローラA及びB)の処理負荷を算出する(ステップC1)。ここでは、各コントローラの処理負荷は、以下の式から算出するものとする。
算出対象のコントローラCの処理負荷 =(コントローラCの受信メッセージ数/全コントローラの受信メッセージ数) * (コントローラCの管理対象スイッチの受信パケット数/全スイッチの受信パケット数の合計)
図12を参照すると、コントローラAの処理負荷は、受信メッセージ数の合計値が120であり、受信パケット数の合計値が800であるため、(50/120)*(300/800)≒0.16となる。同様に、コントローラBの処理負荷は、(70/120)*(500/800)≒0.36となる。よって、負荷制御部14は、処理負荷が最大のコントローラとしてコントローラBを選択する(ステップC1)。
なお、上述の算出方法は、あくまで一例であり、他の算出方法を用いても良い。例えば、乗算式の右辺または左辺(もしくは双方)に重み係数をかけても良い。また、乗算に限らず加算により処理負荷を算出しても良い。すなわち、負荷制御部14は、負荷管理テーブル153内の情報に応じて各コントローラ1の処理負荷を算出すればよい。なお、精度は下がるものの、負荷制御部14は、負荷管理テーブル153内の受信メッセージ数、受信パケット数の少なくとも一方を用いれば、各コントローラ1の処理負荷の傾向を把握することができる。
負荷制御部14は、選択したコントローラBの処理負荷が、所定閾値以下であるか否かを判定する(ステップC2)。ここで、閾値が0.3である場合、負荷制御部14は、コントローラBの処理負荷は閾値以下ではないと判断する(ステップC2:No)。そして、負荷制御部14は、処理負荷が最小のコントローラとしてコントローラAを選択する(ステップC3)。
続いて、負荷制御部14は、コントローラBが管理対象とするスイッチのうち、処理負荷に与える影響が最小のスイッチIDを取得する。図12を参照すると、スイッチCの処理負荷に与える影響は、(5/120)*(100/800)≒0.01である。スイッチDの処理負荷に与える影響は、(30/120)*(200/800)≒0.06である。スイッチEの処理負荷に与える影響は、(15/120)*(100/800)≒0.02である。スイッチFの処理負荷に与える影響は、(20/120)*(100/800)≒0.02である。よって、負荷制御部14は、処理負荷に与える影響が最小のスイッチとしてスイッチCを選択する(ステップC4)。
負荷制御部14は、負荷管理テーブル153を参照し、スイッチCのホップ数が閾値か否かを判定する(ステップC5)。閾値が2であるとした場合、負荷制御部14は、スイッチCのホップ数は閾値以上と判定する(ステップC5:Yes)。
負荷制御部14は、負荷管理テーブル153上のスイッチCのエントリのコントローラID属性に対して、コントローラBのコントローラIDを設定する(ステップC6)。そして、負荷制御部14は、セキュアチャネルを経由して、スイッチCのコントローラID251にコントローラBのコントローラIDを設定する(スイッチC7)。当該処理を終了した時点の負荷管理テーブル153を図13に示す。下線部分が変更点である。なお、管理対象の変更に伴いホップ数の値も変わり得るが、ここでは変更は生じないものとする。
そして、負荷制御部14は、再度、オープンフローネットワーク内に存在するコントローラ(コントローラA及びB)の処理負荷を算出する(ステップC1)。
図13を参照すると、コントローラAの処理負荷は、受信メッセージ数の合計値が120であり、受信パケット数の合計値が800であるため、(55/120)*(400/800)≒0.23となる。同様に、コントローラBの処理負荷は、(65/120)*(400/800)≒0.27となる。よって、負荷制御部14は、処理負荷が最大のコントローラとしてコントローラBを選択する(ステップC1)。
負荷制御部14は、選択したコントローラBの処理負荷が、所定閾値以下であるか否かを判定する(ステップC2)。閾値が0.3であるため、負荷制御部14は、コントローラBの処理負荷は閾値以下と判断し(ステップC2:Yes)、処理を終了する。図14は、負荷分散処理前のオープンフローネットワークの構成を示すブロック図である。
続いて、本実施の形態にかかるオープンフローネットワークの効果について説明する。負荷制御部14は、スイッチ2の使用状態や、オープンフローネットワークのトポロジに応じてコントローラ1の処理負荷を分散している。そのため、特定のコントローラ1に処理負荷が偏る状態を回避することができ、精度の高い負荷分散を実現することができる。
さらに、コントローラ1は、オープンフローネットワーク上へのスイッチ2の追加/削除が生じた場合、負荷分散の実行前にトポロジ情報の更新(上述のステップB1〜B7)を行う。これにより、オープンフローネットワーク上における各装置の接続状態が最新の状態となった後に負荷分散を行うことができる。
<実施の形態2>
本発明にかかる実施の形態2にかかるコントローラ1は、上述した図7の負荷分散処理において、各コントローラの管理対象スイッチ数を考慮することを特徴とする。以下、実施の形態1と異なる点を説明する。
負荷制御部14は、上述の図7における各コントローラ1の処理負荷を以下の式により算出する。
算出対象のコントローラCの処理負荷 = (コントローラCの管理対象スイッチ数/オープンフローネットワーク内の全スイッチ数) * (コントローラCの受信メッセージ数/全コントローラの受信メッセージ数) * (コントローラCの管理対象スイッチの受信パケット数/全スイッチの受信パケット数の合計)
続いて、図11〜14を参照して、本実施の形態にかかるコントローラ1の負荷分散処理(図7)の具体例について説明する。図11は、負荷分散処理前のオープンフローネットワークの構成を示すブロック図である。図12は、負荷分散処理前の負荷管理テーブル153の構成を示す概念図である。
図12を参照すると、コントローラAの処理負荷は、スイッチ総数が6であり、受信メッセージ数の合計値が120であり、受信パケット数の合計値が800であるため、(2/6)*(50/120)*(300/800)≒0.05となる。同様に、コントローラBの処理負荷は、(4/6)*(70/120)*(500/800)≒0.24となる。よって、負荷制御部14は、処理負荷が最大のコントローラとしてコントローラBを選択する(ステップC1)。
負荷制御部14は、選択したコントローラBの処理負荷が、所定閾値以下であるか否かを判定する(ステップC2)。ここで、閾値が0.2である場合、負荷制御部14は、コントローラBの処理負荷は閾値以下ではないと判断する(ステップC2:No)。そして、負荷制御部14は、処理負荷が最小のコントローラとしてコントローラAを選択する(ステップC3)。
続いて、負荷制御部14は、コントローラBが管理対象とするスイッチのうち、処理負荷に与える影響が最小のスイッチIDを取得する。図12を基に、負荷制御部14は、以下のように処理負荷に与える影響を算出する。
スイッチC: (5/120)*(100/800)
スイッチD: (30/120)*(200/800)
スイッチE: (15/120)*(100/800)
スイッチF: (20/120)*(100/800)
よって、負荷制御部14は、処理負荷に与える影響が最小のスイッチとしてスイッチCを選択する(ステップC4)。負荷制御部14は、負荷管理テーブル153を参照し、スイッチCのホップ数が閾値以上か否かを判定する(ステップC5)。閾値が2であるとした場合、負荷制御部14は、スイッチCのホップ数は閾値以上と判定する(ステップC5:Yes)。
負荷制御部14は、負荷管理テーブル153上のスイッチCのエントリのコントローラID属性に対して、コントローラBのコントローラIDを設定する(ステップC6)。そして、負荷制御部14は、セキュアチャネルを経由して、スイッチCのコントローラID251にコントローラBのコントローラIDを設定する(スイッチC7)。当該処理を終了した時点の負荷管理テーブル153を図13に示す。下線部分が変更点である。
そして、負荷制御部14は、再度、オープンフローネットワーク内に存在するコントローラ(コントローラA及びB)の処理負荷を算出する(ステップC1)。
図13を参照すると、コントローラAの処理負荷は、スイッチ総数が6であり、受信メッセージ数の合計値が120であり、受信パケット数の合計値が800であるため、(3/6)*(55/120)*(400/800)≒0.11となる。同様に、コントローラBの処理負荷は、(3/6)*(65/120)*(400/800)≒0.13となる。よって、負荷制御部14は、処理負荷が最大のコントローラとしてコントローラBを選択する(ステップC1)。
負荷制御部14は、選択したコントローラBの処理負荷が、所定閾値以下であるか否かを判定する(ステップC2)。閾値が0.2であるため、負荷制御部14は、コントローラBの処理負荷は閾値以下と判断し(ステップC2:Yes)、処理を終了する。図14は、負荷分散処理前のオープンフローネットワークの構成を示すブロック図である。
本実施の形態においても、特定のコントローラ1に負荷が偏る状態を回避することができ、精度の高い負荷分散を実現することができる。上述のように負荷制御部14は、スイッチ総数と、各コントローラ1が管理対象とするスイッチの数と、の関係も考慮して負荷分散を行っている。そのため、ネットワークの接続状態も考慮した負荷分散を行う(すなわちネットワーク上の管理スイッチ数の偏りを回避した負荷分散を行う)ことができる。
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
上述のコントローラ1内の各処理部(メッセージ制御部11、経路制御部12、トポロジ更新部13、及び負荷制御部14)の処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
図15は、コントローラ1のハードウェア構成例を示す図である。中央処理装置(CPU)401とメモリ402とを含んでいる。CPU401とメモリ402とは、バスを介して補助記憶装置としてのハードディスク装置(HDD)403に接続される。ハードディスク装置403等の記憶媒体にはオペレーティングシステムと共同してCPU401等に命令を与え、この通信制御カード100の各部の機能を実施するためのコンピュータ・プログラムを記憶することができる。すなわち、プログラムがメモリ402上に展開され、CPU401がプログラムに従って処理を行い、他のハードウェア構成と協働することによって、コントローラ1の各ブロックが構成されている。そして、コントローラ1による各処理は、CPU401において所定のプログラムが実行されることで実現される。
図16は、本発明の概略を図示したブロック図である。オープンフローネットワークには、複数のコントローラ1と、複数のスイッチ2が存在する。各コントローラ1は、負荷管理テーブル153と、負荷制御部14と、を備える。
負荷管理テーブル153は、オープンフローネットワークに存在するスイッチ2毎に、スイッチ2を管理するコントローラに所定時間毎に送信したメッセージ数、及びスイッチ2の所定時間毎の受信パケット数、の少なくとも一方を管理する。すなわち、負荷管理テーブル153は、オープンフローネットワーク固有の負荷情報を保持する。負荷制御部14は、所定イベント発生時に、負荷管理テーブル153を参照し、処理負荷が第1閾値以上のコントローラ1を検出する。処理負荷は、例えば受信パケット数と受信メッセージ数の乗算により算出する。負荷制御部14は、検出したコントローラ1が管理対象とするスイッチ2の少なくとも一つを他のコントローラ1の管理対象に切り替える。
上述の構成であっても、負荷制御部14は、スイッチ2の使用状態や、オープンフローネットワークのトポロジに応じてコントローラ1の負荷を分散することができる。すなわち、特定のコントローラ1に負荷が偏る状態を回避することができる。
なお、上述した説明では、コントローラ1内に負荷管理テーブル153と負荷制御部14が存在するものとして説明したが必ずしもこれに限られない。例えば、各コントローラ1に対してスイッチ2の管理を指示する制御装置をオープンフローネットワーク内に設ける構成であっても良い。制御装置は、負荷管理テーブル153と負荷制御部14を備える。制御装置が、各コントローラ1の処理負荷を算出し、処理負荷の高いコントローラ1の管理するスイッチ2を他のコントローラ1の管理に切り替えることによっても上述した効果を奏することができる。
この出願は、2012年2月2日に出願された日本出願特願2012−020695を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 コントローラ
11 メッセージ制御部
12 経路制御部
13 トポロジ更新部
14 負荷制御部
15 ネットワーク情報記憶部
151 経路情報
152 トポロジ情報
153 負荷管理テーブル
2 スイッチ
21 パケット制御部
22 メッセージ制御部
23 フローテーブル
24 スイッチID
25 コントローラ情報
251 コントローラID
252 ホップ数
3 端末
401 CPU
402 メモリ
403 HDD

Claims (25)

  1. オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラであって、
    オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
    所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、
    を備えるコントローラ。
  2. 前記処理負荷は、大きいほど負荷が高いことを示す数値情報であり、
    前記負荷制御手段は、前記処理負荷が第1閾値以上のコントローラを検出することを特徴とする、請求項1に記載のコントローラ。
  3. 前記負荷制御手段は、前記処理負荷が相対的に小さい前記コントローラを切り替え先として選択する、請求項2に記載のコントローラ。
  4. 前記負荷管理テーブルは、オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチと当該スイッチを管理するコントローラとのホップ数の情報を管理し、
    前記負荷制御手段は、前記処理負荷に与える影響が相対的に小さく、かつ、前記ホップ数が第2閾値以上の前記スイッチを切り替え対象として選択する、ことを特徴とする請求項2に記載のコントローラ。
  5. 前記負荷制御手段は、前記処理負荷を前記メッセージ数と前記受信パケット数との乗算から算出する、ことを特徴とする請求項2または請求項3に記載のコントローラ。
  6. 前記所定イベントは、一定時間の経過、オープンフローネットワーク上への前記スイッチの追加、オープンフローネットワーク上への前記スイッチの削除、のいずれかを含む、ことを特徴とする請求項1乃至請求項5のいずれか1項に記載のコントローラ。
  7. 前記負荷制御手段は、前記受信メッセージ数、前記受信パケット数に加え、前記コントローラが管理対象とする前記スイッチの台数に基づいて、各コントローラの処理負荷を算出する、ことを特徴とする請求項1乃至請求項6のいずれか1項に記載のコントローラ。
  8. オープンフローネットワーク上のトポロジ情報を管理するトポロジ更新手段を更に備え、
    前記トポロジ更新手段は、前記所定イベントの発生時に、前記負荷制御手段の処理に先立ち、接続障害の生じている管理対象の前記スイッチを検出し、検出した当該スイッチの接続障害を解消する、ことを特徴とする請求項1乃至請求項7のいずれか1項に記載のコントローラ。
  9. オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラの負荷分散方法であって、
    前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を持つ負荷管理テーブルを管理する管理ステップと、
    所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御ステップと、
    を備える負荷分散方法。
  10. 前記処理負荷は、大きいほど負荷が高いことを示す数値情報であり、
    前記負荷制御ステップでは、前記処理負荷が第1閾値以上のコントローラを検出することを特徴とする、ことを特徴とする請求項9に記載の負荷分散方法。
  11. 前記負荷制御ステップでは、前記処理負荷が相対的に小さい前記コントローラを切り替え先として選択する、ことを特徴とする請求項10に記載の負荷分散方法。
  12. 前記負荷管理テーブルは、オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチと当該スイッチを管理するコントローラとのホップ数の情報を管理し、
    前記負荷制御ステップでは、前記処理負荷に与える影響が相対的に小さく、かつ、前記ホップ数が第2閾値以上の前記スイッチを切り替え対象として選択する、ことを特徴とする請求項11に記載の負荷分散方法。
  13. 前記負荷制御ステップでは、前記処理負荷を前記メッセージ数と前記受信パケット数との乗算から算出する、ことを特徴とする請求項10または請求項11に記載の負荷分散方法。
  14. 前記所定イベントは、一定時間の経過、オープンフローネットワーク上への前記スイッチの追加、オープンフローネットワーク上への前記スイッチの削除、のいずれかを含む、ことを特徴とする請求項9乃至請求項13のいずれか1項に記載の負荷分散方法。
  15. 前記負荷制御ステップでは、前記受信メッセージ数、前記受信パケット数に加え、前記コントローラの各々が管理対象とする前記スイッチの台数に基づいて、各コントローラの処理負荷を算出する、ことを特徴とする請求項10乃至請求項14のいずれか1項に記載の負荷分散方法。
  16. コンピュータに、
    オープンフローネットワーク上の複数のスイッチの一部を管理するコントローラの負荷分散方法を実行させるプログラムであって、
    前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を持つ負荷管理テーブルを管理する管理ステップと、
    所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御ステップと、
    を実行させるプログラム。
  17. 前記処理負荷は、大きいほど負荷が高いことを示す数値情報であり、
    前記負荷制御ステップでは、前記処理負荷が第1閾値以上のコントローラを検出する、ことを特徴とする請求項16に記載のプログラム。
  18. 前記負荷制御ステップでは、前記処理負荷が相対的に小さい前記コントローラを切り替え先として選択する、ことを特徴とする請求項17に記載のプログラム。
  19. 前記負荷管理テーブルは、オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチと当該スイッチを管理するコントローラとのホップ数の情報を管理し、
    前記負荷制御ステップでは、前記処理負荷に与える影響が相対的に小さく、かつ、前記ホップ数が第2閾値以上の前記スイッチを切り替え対象として選択する、ことを特徴とする請求項18に記載のプログラム。
  20. 前記負荷制御ステップでは、前記処理負荷を前記メッセージ数と前記受信パケット数との乗算から算出する、ことを特徴とする請求項17または請求項18に記載のプログラム。
  21. 前記所定イベントは、一定時間の経過、オープンフローネットワーク上への前記スイッチの追加、オープンフローネットワーク上への前記スイッチの削除、のいずれかを含む、ことを特徴とする請求項16乃至請求項20のいずれか1項に記載のプログラム。
  22. 前記負荷制御ステップでは、前記所定イベントとしてオープンフローネットワーク上への前記スイッチの追加またはオープンフローネットワーク上の前記スイッチの削除が生じた場合、前記負荷管理テーブルの更新を行った後に第1閾値との比較処理を行う、ことを特徴とする請求項21に記載のプログラム。
  23. 前記負荷制御ステップでは、前記受信メッセージ数、前記受信パケット数に加え、前記コントローラの各々が管理対象とする前記スイッチの台数に基づいて、各コントローラの処理負荷を算出する、ことを特徴とする請求項16乃至請求項22のいずれか1項に記載のプログラム。
  24. フローテーブルに従ってオープンフローネットワーク上のパケット転送を行う複数のスイッチと
    前記複数のスイッチの一部を管理する複数のコントローラと、を備えるコンピュータシステムであって、
    前記複数のコントローラの各々は、
    前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
    所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、
    を備える、コンピュータシステム。
  25. オープンフローネットワーク上でのスイッチを管理する複数のコントローラ装置の負荷を分散させる制御装置であって、
    前記オープンフローネットワークに存在する前記スイッチ毎に、当該スイッチを管理するコントローラに所定時間毎に送信したメッセージ数、及び当該スイッチの所定時間毎の受信パケット数、の少なくとも一方を管理する負荷管理テーブルと、
    所定イベント発生時に、前記負荷管理テーブルに基づき、処理負荷を分散させるべきコントローラを検出し、検出した前記コントローラが管理対象とする前記スイッチの少なくとも一つを他のコントローラの管理対象に切り替える負荷制御手段と、
    を備える制御装置。
JP2013556046A 2012-02-02 2012-10-31 コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置 Expired - Fee Related JP5794320B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013556046A JP5794320B2 (ja) 2012-02-02 2012-10-31 コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012020695 2012-02-02
JP2012020695 2012-02-02
PCT/JP2012/006998 WO2013114490A1 (ja) 2012-02-02 2012-10-31 コントローラ、負荷分散方法、プログラムを格納した非一時的なコンピュータ可読媒体、コンピュータシステム、制御装置
JP2013556046A JP5794320B2 (ja) 2012-02-02 2012-10-31 コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置

Publications (2)

Publication Number Publication Date
JPWO2013114490A1 JPWO2013114490A1 (ja) 2015-05-11
JP5794320B2 true JP5794320B2 (ja) 2015-10-14

Family

ID=48904580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013556046A Expired - Fee Related JP5794320B2 (ja) 2012-02-02 2012-10-31 コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置

Country Status (5)

Country Link
US (1) US9577941B2 (ja)
EP (1) EP2811701B1 (ja)
JP (1) JP5794320B2 (ja)
CN (1) CN104094565B (ja)
WO (1) WO2013114490A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9331930B1 (en) * 2012-09-04 2016-05-03 Big Switch Networks, Inc. Systems and methods for forwarding network packets in a network using network domain topology information
US9374308B2 (en) * 2013-08-30 2016-06-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Openflow switch mode transition processing
KR102188069B1 (ko) * 2013-12-30 2020-12-08 주식회사 케이티 네트워크 어댑터 및 상기 네트워크 어댑터를 이용한 네트워크 제어 방법
US20150195162A1 (en) * 2014-01-06 2015-07-09 Google Inc. Multi-Master Selection in a Software Defined Network
US9397917B2 (en) * 2014-01-10 2016-07-19 Huawei Technologies Co., Ltd. System and method for zoning in software defined networks
EP3116176A4 (en) * 2014-03-06 2017-11-08 Nec Corporation Communication system, control device, communication device, and communication method
CN105282043A (zh) * 2014-06-20 2016-01-27 中国电信股份有限公司 全局网络负载均衡系统、设备和方法
JP6358042B2 (ja) * 2014-10-21 2018-07-18 富士通株式会社 情報処理システム、制御装置および情報処理システムの制御方法
JP6514329B2 (ja) * 2014-11-28 2019-05-15 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
US10237189B2 (en) * 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
CN105812269B (zh) * 2014-12-31 2019-04-23 华为技术有限公司 Sdn中创建端口组的方法、sdn控制器及网络系统
US20160315866A1 (en) * 2015-04-27 2016-10-27 Telefonaktiebolaget L M Ericsson (Publ) Service based intelligent packet-in mechanism for openflow switches
CN104917697B (zh) * 2015-06-02 2017-12-08 西安电子科技大学 基于SDN的WiFi无线中继网络及其通信实现方法
JP6938944B2 (ja) * 2016-05-26 2021-09-22 富士通株式会社 情報処理装置、及び、負荷分散制御方法
US10848439B2 (en) * 2016-09-29 2020-11-24 Siemens Aktiengesellschaft Method for operating an industrial automation system communication network comprising a plurality of communication devices, and control unit
CN108848513B (zh) * 2018-05-07 2020-09-01 清华大学 通信网络中用户终端与控制器的匹配方法、装置及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4559511B2 (ja) 2008-08-11 2010-10-06 日本電信電話株式会社 パケット転送システムおよびパケット転送方法
US20120250496A1 (en) * 2009-11-26 2012-10-04 Takeshi Kato Load distribution system, load distribution method, and program
WO2011074516A1 (ja) 2009-12-15 2011-06-23 日本電気株式会社 ネットワークシステムとその制御方法、及びコントローラ
JP5637148B2 (ja) * 2010-01-05 2014-12-10 日本電気株式会社 スイッチネットワークシステム、コントローラ、及び制御方法
JP5521613B2 (ja) 2010-02-15 2014-06-18 日本電気株式会社 ネットワークシステム、ネットワーク機器、経路情報更新方法、及びプログラム
JP5757552B2 (ja) 2010-02-19 2015-07-29 日本電気株式会社 コンピュータシステム、コントローラ、サービス提供サーバ、及び負荷分散方法
JP5569207B2 (ja) 2010-07-16 2014-08-13 横浜ゴム株式会社 空気入りタイヤ
US8593958B2 (en) * 2011-09-14 2013-11-26 Telefonaktiebologet L M Ericsson (Publ) Network-wide flow monitoring in split architecture networks
JP2013105308A (ja) 2011-11-14 2013-05-30 Nippon Telegr & Teleph Corp <Ntt> 負荷分散システム、負荷分散装置、負荷分散方法および負荷分散プログラム

Also Published As

Publication number Publication date
EP2811701A4 (en) 2015-08-19
US20140355448A1 (en) 2014-12-04
JPWO2013114490A1 (ja) 2015-05-11
EP2811701A1 (en) 2014-12-10
US9577941B2 (en) 2017-02-21
CN104094565B (zh) 2017-06-27
WO2013114490A1 (ja) 2013-08-08
EP2811701B1 (en) 2019-07-24
CN104094565A (zh) 2014-10-08

Similar Documents

Publication Publication Date Title
JP5794320B2 (ja) コントローラ、負荷分散方法、プログラム、コンピュータシステム、制御装置
US20200145334A1 (en) Communication system, communication device, controller, and method and program for controlling forwarding path of packet flow
WO2013105551A1 (ja) コンピュータシステム、コントローラ、スイッチ、通信方法、及びネットワーク管理プログラムが格納された記録媒体
US9407503B2 (en) Control apparatus, communication system, communication method, and program
JP5488979B2 (ja) コンピュータシステム、コントローラ、スイッチ、及び通信方法
US9544223B2 (en) Communication system, control apparatus, method for controlling same, and program
JP5884892B2 (ja) ネットワークシステム、コントローラ、及び負荷分散方法
US20160021028A1 (en) Communication system, control apparatus, forwarding node, control method and program
KR101538244B1 (ko) 서버 관리 장치, 서버 관리 방법, 및 프로그램
WO2012081202A1 (en) Communication control system, control device, communication control method, and communication control program
JPWO2012050071A1 (ja) 通信システム、制御装置、処理規則の設定方法およびプログラム
WO2014054281A1 (en) Control apparatus, control method thereof, and program
Hu et al. Control traffic protection in software-defined networks
JPWO2014175423A1 (ja) 通信ノード、通信システム、パケット処理方法及びプログラム
JP6042838B2 (ja) 管理システム、管理サーバ、および管理方法
US20150381775A1 (en) Communication system, communication method, control apparatus, control apparatus control method, and program
US9596129B2 (en) Communication system, control apparatus, communication apparatus, information-relaying method, and program
US9450835B2 (en) Method for turning off routers in a communications network and router implementing this method
US20160197817A1 (en) Network system, control device, control method, and non-transitory computer-readable medium
JP5915755B2 (ja) 情報処理装置
US20150372900A1 (en) Communication system, control apparatus, communication control method, and program
WO2015046539A1 (ja) 中継装置、制御装置、通信システム、監視パケットの処理方法及びトポロジ管理方法
JP5975752B2 (ja) ノード管理装置、ノード管理方法、及びプログラム
JP2018113506A (ja) 転送装置および制御方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150714

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150727

R150 Certificate of patent or registration of utility model

Ref document number: 5794320

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees