(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022156831
(43)【公開日】2022-10-14
(54)【発明の名称】通信システム、通信装置、プログラム、及び制御方法
(51)【国際特許分類】
H04W 24/04 20090101AFI20221006BHJP
H04W 84/18 20090101ALI20221006BHJP
H04W 76/10 20180101ALI20221006BHJP
【FI】
H04W24/04
H04W84/18
H04W76/10 110
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2021060718
(22)【出願日】2021-03-31
(71)【出願人】
【識別番号】501440684
【氏名又は名称】ソフトバンク株式会社
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】前迫 敬介
(72)【発明者】
【氏名】熊倉 顕
(72)【発明者】
【氏名】張 亮
【テーマコード(参考)】
5K067
【Fターム(参考)】
5K067AA26
5K067BB21
5K067CC08
5K067DD51
5K067EE02
5K067EE25
5K067FF18
5K067LL05
(57)【要約】 (修正有)
【課題】コントローラとメッシュネットワークとの通信リンクに障害が発生した場合に、複数の通信装置のいずれかが代替コントローラとなってメッシュネットワークの経路制御を実行する通信システム、通信装置、プログラム及び制御方法を提供する。
【解決手段】通信システム10において、SDN(Software Defined Networking)コントローラと、複数のSDNスイッチとを備える。SDNコントローラと複数のSDNスイッチにより構成されるメッシュネットワーク20とが通信リンクを確立していて、SDNコントローラがメッシュネットワークの経路制御を実行している状態で、SDNコントローラ又はSDNコントローラとメッシュネットワークとの通信リンクに障害が発生した場合に、複数のSDNスイッチのいずれかが代替コントローラとなってメッシュネットワークの経路制御を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コントローラと、
複数の通信装置と
を備え
前記コントローラと前記複数の通信装置により構成されるメッシュネットワークとが通信リンクを確立していて、前記コントローラが前記メッシュネットワークの経路制御を実行している状態で、前記コントローラ、又は前記コントローラと前記メッシュネットワークとの通信リンクに障害が発生した場合に、前記複数の通信装置のいずれかが代替コントローラとなって前記メッシュネットワークの経路制御を実行する、通信システム。
【請求項2】
前記複数の通信装置のそれぞれは、
前記コントローラ、又は前記コントローラと前記メッシュネットワークとの通信リンクに障害が発生したことを検知する障害検知部と、
前記障害が発生したことが検知されたことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定部と、
前記スイッチ判定部によって前記代表スイッチとして動作すると判定された場合に、自装置が前記代表スイッチとして動作することを広告する広告パケットを、前記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部と、
前記メッシュネットワークに含まれる他の通信装置からの前記広告パケットの受信状況に基づいて、前記代替コントローラとして動作するか否かを判定するコントローラ判定部と、
前記コントローラ判定部によって前記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、前記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部と
を有する、請求項1に記載の通信システム。
【請求項3】
前記スイッチ判定部は、前記障害検知部によって前記障害が発生したことが検知された検知時点から予め定められた期間遡った時点と前記検知時点との間の期間に、前記コントローラ及び前記メッシュネットワークに含まれる他の通信装置の少なくともいずれかとの通信リンクが切断されていた場合に、前記代表スイッチとして動作すると判定する、請求項2に記載の通信システム。
【請求項4】
前記広告パケットは、送信元の通信装置が接続を確立している接続リンク数を含み、
前記コントローラ判定部は、前記メッシュネットワークに含まれる他の通信装置から前記広告パケットを受信している場合において、前記広告パケットの送信元である他の通信装置の接続リンク数よりも、自装置の接続リンク数が多い場合に、前記代替コントローラとして動作すると判定する、請求項2又は3に記載の通信システム。
【請求項5】
前記広告パケットは、送信元の通信装置を識別可能な数値を含む装置識別IDを含み、
前記コントローラ判定部は、前記メッシュネットワークに含まれる他の通信装置から前記広告パケットを受信している場合であって、前記広告パケットの送信元である他の通信装置の接続リンク数と、自装置の接続リンク数が同じである場合において、当該他の通信装置の装置識別IDよりも、自装置の装置識別IDの方が小さい場合に、前記代替コントローラとして動作すると判定する、請求項4に記載の通信システム。
【請求項6】
前記コントローラ判定部は、前記スイッチ判定部によって前記代表スイッチとして動作すると判定され、前記メッシュネットワークに前記代表スイッチとして動作する無線通信装置が複数含まれる場合において、前記メッシュネットワークのトポロジ情報に基づいて、前記メッシュネットワーク内の複数の通信装置のうち、前記代表スイッチとして動作する複数の通信装置への平均ホップ数が最も少ない通信装置を前記代替コントローラとして選定し、選定した前記通信装置に対して、前記代替コントローラとして動作することを指示する指示情報を送信する、請求項2に記載の通信システム。
【請求項7】
前記障害検知部は、予め定められた期間、前記コントローラと通信できない場合に、前記コントローラ、又は前記コントローラと前記メッシュネットワークとの通信リンクに障害が発生したと判定する、請求項2から6のいずれか一項に記載の通信システム。
【請求項8】
前記コントローラによる経路制御サービスを監視する監視アプリ
を備え、
前記監視アプリは、前記経路制御サービスに障害が発生したことに応じて、前記コントローラと直接通信リンクを確立している通信装置に対して通知情報を送信し、
前記複数の通信装置のそれぞれは、
前記監視アプリによって送信された前記通知情報を受信した場合に、代表スイッチとして動作すると判定するスイッチ判定部と、
前記スイッチ判定部によって前記代表スイッチとして動作すると判定された場合に、自装置が前記代表スイッチとして動作することを広告する広告パケットを、前記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部と、
前記メッシュネットワークに含まれる他の通信装置からの前記広告パケットの受信状況に基づいて、前記代替コントローラとして動作するか否かを判定するコントローラ判定部と、
前記コントローラ判定部によって前記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、前記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部と
を有する、請求項1に記載の通信システム。
【請求項9】
前記広告パケットは、送信元の通信装置が接続を確立している接続リンク数を含み、
前記コントローラ判定部は、前記メッシュネットワークに含まれる他の通信装置から前記広告パケットを受信している場合において、前記広告パケットの送信元である他の通信装置の接続リンク数よりも、自装置の接続リンク数が多い場合に、前記代替コントローラとして動作すると判定する、請求項8に記載の通信システム。
【請求項10】
前記広告パケットは、送信元の通信装置を識別可能な数値を含む装置識別IDを含み、
前記コントローラ判定部は、前記メッシュネットワークに含まれる他の通信装置から前記広告パケットを受信している場合であって、前記広告パケットの送信元である他の通信装置の接続リンク数と、自装置の接続リンク数が同じである場合において、当該他の通信装置の装置識別IDよりも、自装置の装置識別IDの方が小さい場合に、前記代替コントローラとして動作すると判定する、請求項9に記載の通信システム。
【請求項11】
前記コントローラ判定部は、前記スイッチ判定部によって前記代表スイッチとして動作すると判定され、前記メッシュネットワークに前記代表スイッチとして動作する無線通信装置が複数含まれる場合において、前記メッシュネットワークのトポロジ情報に基づいて、前記メッシュネットワーク内の複数の通信装置のうち、前記代表スイッチとして動作する複数の通信装置への平均ホップ数が最も少ない通信装置を前記代替コントローラとして選定し、選定した前記通信装置に対して、前記代替コントローラとして動作することを指示する指示情報を送信する、請求項8に記載の通信システム。
【請求項12】
前記コントローラに障害が発生したことを検知する監視アプリ
を備え、
前記監視アプリは、前記コントローラから前記メッシュネットワークのトポロジ情報を取得し、前記コントローラに障害が発生したことに応じて、前記トポロジ情報を用いて、選択した前記メッシュネットワークに含まれる複数の通信装置のうちの一の通信装置に、代替コントローラとして動作することを指示する指示情報を送信し、
前記複数の通信装置のそれぞれは、
前記監視アプリによって送信された前記指示情報を受信した場合に、前記代替コントローラとして動作すると判定するコントローラ判定部と、
前記コントローラ判定部によって前記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、前記メッシュネットワークに含まれる他の通信装置に送信する代替コントローラ情報送信部と
を有する、請求項1に記載の通信システム。
【請求項13】
前記複数の通信装置のそれぞれは、
前記代替コントローラとして動作している間に、前記コントローラの前記障害からの復旧を監視し、前記コントローラが前記障害から復旧したと判定した場合に、前記コントローラと通信して、前記代替コントローラとしての動作を継続するか否かを判定する復旧処理部
を有する、請求項1から12のいずれか一項に記載の通信システム。
【請求項14】
複数の他の通信装置とメッシュネットワークを構成する通信装置であって、
前記メッシュネットワークのコントローラ、又は前記コントローラと前記メッシュネットワークとの通信リンクに障害が発生したことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定部と、
前記スイッチ判定部によって前記代表スイッチとして動作すると判定された場合に、自装置が前記代表スイッチとして動作することを広告する広告パケットを、前記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部と、
前記メッシュネットワークに含まれる他の通信装置からの前記広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定するコントローラ判定部と、
前記コントローラ判定部によって前記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、前記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部と、
前記コントローラ判定部によって前記代替コントローラとして動作すると判定された場合に、前記メッシュネットワークの経路制御の実行を開始する経路制御実行部と
を備える、通信装置。
【請求項15】
コンピュータを、請求項14に記載の通信装置として機能させるためのプログラム。
【請求項16】
複数の他の通信装置とメッシュネットワークを構成する通信装置によって実行される制御方法であって、
前記メッシュネットワークのコントローラ、又は前記コントローラと前記メッシュネットワークとの通信リンクに障害が発生したことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定段階と、
前記スイッチ判定段階において前記代表スイッチとして動作すると判定された場合に、自装置が前記代表スイッチとして動作することを広告する広告パケットを、前記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信段階と、
前記メッシュネットワークに含まれる他の通信装置からの前記広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定するコントローラ判定段階と、
前記コントローラ判定段階において前記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、前記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信段階と、
前記コントローラ判定段階において前記代替コントローラとして動作すると判定された場合に、前記メッシュネットワークの経路制御を実行する経路制御段階と
を備える、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信システム、通信装置、プログラム、及び制御方法に関する。
【背景技術】
【0002】
特許文献1には、コントローラとスイッチとの間の通信に用いられるプロトコルとして、OpenFlowを用いたSDN(Software Defined Networking)コントローラが記載されている。
[先行技術文献]
[特許文献]
[特許文献1]特開2017-163383号公報
【発明の概要】
【0003】
本発明の一実施の態様によれば、通信システムが提供される。通信システムは、コントローラと、複数の通信装置とを備えてよい。通信システムにおいて、コントローラと複数の通信装置により構成されるメッシュネットワークとが通信リンクを確立していて、コントローラがメッシュネットワークの経路制御を実行している状態で、コントローラ、又はコントローラとメッシュネットワークとの通信リンクに障害が発生した場合に、複数の通信装置のいずれかが代替コントローラとなってメッシュネットワークの経路制御を実行してよい。
【0004】
上記複数の通信装置のそれぞれは、上記コントローラ、又は上記コントローラと上記メッシュネットワークとの通信リンクに障害が発生したことを検知する障害検知部を有してよい。上記複数の通信装置のそれぞれは、上記障害が発生したことが検知されたことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定部を有してよい。上記複数の通信装置のそれぞれは、上記スイッチ判定部によって上記代表スイッチとして動作すると判定された場合に、自装置が上記代表スイッチとして動作することを広告する広告パケットを、上記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部を有してよい。上記複数の通信装置のそれぞれは、上記メッシュネットワークに含まれる他の通信装置からの上記広告パケットの受信状況に基づいて、上記代替コントローラとして動作するか否かを判定するコントローラ判定部を有してよい。上記複数の通信装置のそれぞれは、上記コントローラ判定部によって上記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、上記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部を有してよい。上記スイッチ判定部は、上記障害検知部によって上記障害が発生したことが検知された検知時点から予め定められた期間遡った時点と上記検知時点との間の期間に、上記コントローラ及び上記メッシュネットワークに含まれる他の通信装置の少なくともいずれかとの通信リンクが切断されていた場合に、上記代表スイッチとして動作すると判定してよい。上記広告パケットは、送信元の通信装置が接続を確立している接続リンク数を含んでよく、上記コントローラ判定部は、上記メッシュネットワークに含まれる他の通信装置から上記広告パケットを受信している場合において、上記広告パケットの送信元である他の通信装置の接続リンク数よりも、自装置の接続リンク数が多い場合に、上記代替コントローラとして動作すると判定してよい。上記広告パケットは、送信元の通信装置を識別可能な数値を含む装置識別IDを含んでよく、上記コントローラ判定部は、上記メッシュネットワークに含まれる他の通信装置から上記広告パケットを受信している場合であって、上記広告パケットの送信元である他の通信装置の接続リンク数と、自装置の接続リンク数が同じである場合において、当該他の通信装置の装置識別IDよりも、自装置の装置識別IDの方が小さい場合に、上記代替コントローラとして動作すると判定してよい。
【0005】
上記コントローラ判定部は、上記スイッチ判定部によって上記代表スイッチとして動作すると判定され、上記メッシュネットワークに上記代表スイッチとして動作する通信装置が複数含まれる場合において、上記メッシュネットワークのトポロジ情報に基づいて、上記メッシュネットワークに含まれる他の複数の通信装置よりも、自装置の、上記代上記メッシュネットワーク内の複数の通信装置のうち、上記代表スイッチとして動作する複数の通信装置への平均ホップ数が最も少ない通信装置を上記代替コントローラとして選定し、選定した上記通信装置に対して、上記代替コントローラとして動作することを指示する指示情報を送信してよい。上記障害検知部は、予め定められた期間、上記コントローラと通信できない場合に、上記コントローラ、又は上記コントローラと上記メッシュネットワークとの通信リンクに障害が発生したと判定してよい。上記通信システムは、上記コントローラによる経路制御サービスを監視する監視アプリを備えてよく、上記監視アプリは、上記経路制御サービスに障害が発生したことに応じて、上記コントローラと直接通信リンクを確立している通信装置に対して通知情報を送信してよく、上記複数の通信装置のそれぞれは、上記監視アプリによって送信された上記通知情報を受信した場合に、代表スイッチとして動作すると判定するスイッチ判定部と、上記スイッチ判定部によって上記代表スイッチとして動作すると判定された場合に、自装置が上記代表スイッチとして動作することを広告する広告パケットを、上記メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部と、上記メッシュネットワークに含まれる他の通信装置からの上記広告パケットの受信状況に基づいて、上記代替コントローラとして動作するか否かを判定するコントローラ判定部と、上記コントローラ判定部によって上記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、上記メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部とを有してよい。上記広告パケットは、送信元の通信装置が接続を確立している接続リンク数を含んでよく、上記コントローラ判定部は、上記メッシュネットワークに含まれる他の通信装置から上記広告パケットを受信している場合において、上記広告パケットの送信元である他の通信装置の接続リンク数よりも、自装置の接続リンク数が多い場合に、上記代替コントローラとして動作すると判定してよい。上記広告パケットは、送信元の通信装置を識別可能な数値を含む装置識別IDを含んでよく、上記コントローラ判定部は、上記メッシュネットワークに含まれる他の通信装置から上記広告パケットを受信している場合であって、上記広告パケットの送信元である他の通信装置の接続リンク数と、自装置の接続リンク数が同じである場合において、当該他の通信装置の装置識別IDよりも、自装置の装置識別IDの方が小さい場合に、上記代替コントローラとして動作すると判定してよい。上記コントローラ判定部は、上記スイッチ判定部によって上記代表スイッチとして動作すると判定され、上記メッシュネットワークに上記代表スイッチとして動作する通信装置が複数含まれる場合において、上記メッシュネットワークのトポロジ情報に基づいて、上記メッシュネットワーク内の複数の通信装置のうち、上記代表スイッチとして動作する複数の通信装置への平均ホップ数が最も少ない通信装置を上記代替コントローラとして選定し、選定した上記通信装置に対して、上記代替コントローラとして動作することを指示する指示情報を送信してよい。上記通信システムは、上記コントローラに障害が発生したことを検知する監視アプリを備えてよく、上記監視アプリは、上記コントローラから上記メッシュネットワークのトポロジ情報を取得し、上記コントローラに障害が発生したことに応じて、上記トポロジ情報に基づいて選択した上記メッシュネットワークに含まれる複数の通信装置のうちの一の通信装置に、代替コントローラとして動作することを指示する指示情報を送信してよく、上記複数の通信装置のそれぞれは、上記監視アプリによって送信された上記指示情報を受信した場合に、上記代替コントローラとして動作すると判定するコントローラ判定部と、上記コントローラ判定部によって上記代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、上記メッシュネットワークに含まれる他の通信装置に送信する代替コントローラ情報送信部とを有してよい。上記複数の通信装置のそれぞれは、上記代替コントローラとして動作している間に、上記コントローラの上記障害からの復旧を監視し、上記コントローラが上記障害から復旧したと判定した場合に、上記コントローラと通信して、上記代替コントローラとしての動作を継続するか否かを判定する復旧処理部を有してよい。
【0006】
本発明の一実施態様によれば、通信装置が提供される。通信装置は、複数の他の通信装置とメッシュネットワークを構成してよい。通信装置は、メッシュネットワークのコントローラ、又はコントローラとメッシュネットワークとの通信リンクに障害が発生したことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定部を備えてよい。通信装置は、スイッチ判定部によって代表スイッチとして動作すると判定された場合に、自装置が代表スイッチとして動作することを広告する広告パケットを、メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信部を備えてよい。通信装置は、メッシュネットワークに含まれる他の通信装置からの広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定するコントローラ判定部を備えてよい。通信装置は、コントローラ判定部によって代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信部を備えてよい。通信装置は、コントローラ判定部によって代替コントローラとして動作すると判定された場合に、メッシュネットワークの経路制御の実行を開始する経路制御実行部を備えてよい。
【0007】
本発明の一実施態様によれば、コンピュータを、上記通信装置として機能させるためのプログラムが提供される。
【0008】
本発明の一実施態様によれば、制御方法が提供される。制御方法は、複数の他の通信装置とメッシュネットワークを構成する通信装置によって実行されてよい。制御方法は、メッシュネットワークのコントローラ、又はコントローラとメッシュネットワークとの通信リンクに障害が発生したことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定するスイッチ判定段階を備えてよい。制御方法は、スイッチ判定段階において代表スイッチとして動作すると判定された場合に、自装置が代表スイッチとして動作することを広告する広告パケットを、メッシュネットワークに含まれる他の通信装置に対して送信する広告パケット送信段階を備えてよい。制御方法は、メッシュネットワークに含まれる他の通信装置からの広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定するコントローラ判定段階を備えてよい。制御方法は、コントローラ判定段階において代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、メッシュネットワークに含まれる他の通信装置に送信するコントローラ情報送信段階を備えてよい。制御方法は、コントローラ判定段階において代替コントローラとして動作すると判定された場合に、メッシュネットワークの経路制御を実行する経路制御段階を備えてよい。
【0009】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0010】
【
図2】障害発生時の通信システム10について説明するための説明図である。
【
図3】障害発生時の通信システム10の処理内容について説明するための説明図である。
【
図4】ネットワークが分断されるパターンにおける通信システム10の処理内容について説明するための説明図である。
【
図5】代替コントローラとして動作するSDNスイッチ200によって経路制御が実行されている状況を概略的に示す。
【
図6】ネットワークが分断されるパターンにおける代表スイッチ及び代替コントローラの選定方法の一例について説明するための説明図である。
【
図7】ネットワークが分断されるパターンにおける代表スイッチ及び代替コントローラの選定方法の一例について説明するための説明図である。
【
図8】SDNコントローラ100のサービスに障害が発生するパターンにおける通信システム10の処理内容について説明するための説明図である。
【
図9】SDNコントローラ100のサービスに障害が発生するパターンにおける代替コントローラの選定方法の一例について説明するための説明図である。
【
図10】SDNコントローラ100のサービスに障害が発生するパターンにおける代替コントローラの選定方法の一例について説明するための説明図である。
【
図11】SDNスイッチ200の構成の一例を概略的に示す。
【
図12】SDNコントローラ100又はSDNスイッチ200として機能するコンピュータ1200のハードウェア構成の一例を概略的に示す。
【発明を実施するための形態】
【0011】
複数のSDNスイッチによる無線メッシュネットワークをSDNコントローラによって集中制御(経路制御等)する無線メッシュSDNが知られている。SDNを実現するプロトコルとして、OpenFlowが知られている。OpenFlowにおいて、各SDNスイッチは、ノード・リンク情報をSDNコントローラへ送信する。SDNコントローラは、複数のSDNスイッチから受信した情報を用いて、ネットワークトポロジを把握し、経路制御に利用する(SDNコントローラからSDNスイッチに転送ルールを配布したりする)。無線メッシュSDNにおいて、SDNコントローラに障害が発生したり、SDNコントローラと無線メッシュネットワークとの無線通信リンクに障害が発生したりすると、すべてのSDNスイッチがSDNコントローラに接続できなくなり、経路制御が実行できなくなる場合がある。そのような課題に対して、予め複数のSDNコントローラを配置しておいて、いずれかのSDNコントローラに障害が発生した場合に、他のSDNコントローラが経路制御を行うよう構成するマルチSDNコントローラ構成が知られている。従来のマルチSDNコントローラ構成は、有線ネットワークを主に想定しているが、無線メッシュSDN環境では、SDNスイッチの移動性と無線リンクの不安定性により、仮にマルチSDNコントローラ構成を採用した場合であっても、複数のSNDスイッチの少なくともいずれかがいずれのSDNコントローラにも接続できない状況になる恐れがある。本実施形態に係る通信システム10は、障害発生時にSDNスイッチの一つを代替コントローラとして運用する。
【0012】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0013】
図1は、通信システム10の一例を概略的に示す。
図1に示す例において、通信システム10は、SDNコントローラ100と、複数のSDNスイッチ200とを備える。SDNコントローラ100は、コントローラの一例であってよく、SDNスイッチ200は、通信装置の一例であってよい。
【0014】
複数のSDNスイッチ200は、メッシュネットワーク20を構成する。SDNコントローラ100は、メッシュネットワーク20の経路制御を実行する。複数のSDNスイッチ200の間の通信は、無線通信であっても、有線通信であってもよい。SDNコントローラ100と、メッシュネットワーク20との間の通信は、無線通信であっても、有線通信であってもよい。ここでは、複数のSDNスイッチ200の間の通信、及びSDNコントローラ100とメッシュネットワーク20の間の通信が、無線通信である場合を例に挙げて説明する。
【0015】
SDNコントローラ100は、複数のSDNスイッチ200によって構成されるメッシュネットワーク20と無線通信リンクを確立して、メッシュネットワーク20の経路制御を実行する。SDNコントローラ100は、メッシュネットワーク20を構成する複数のSDNスイッチ200のうちの一のSDNスイッチ200と無線通信リンクを確立してよい。SDNコントローラ100は、メッシュネットワーク20を構成する複数のSDNスイッチ200のうちの複数のSDNスイッチ200と無線通信リンクを確立してもよい。
【0016】
SDNスイッチ200は、他のSDNスイッチ200と無線通信リンクを確立可能であれば、どのような装置であってもよい。SDNスイッチ200は、例えば、HAPS(High Altitude Platform Station)に搭載される通信装置であってよく、例えば、ハードウェア型のスイッチやソフトウェア型のスイッチであってよい。SDNスイッチ200は、例えば、ドローン等の無人航空機に搭載される通信装置であってよく、例えば、ハードウェア型のスイッチやソフトウェア型のスイッチであってよい。SDNスイッチ200は、スマートフォン等の携帯電話、タブレット端末、及びPC(Personal Compuer)等であってもよい。
【0017】
ここでは、通信システム10が、OpenFlowに準拠している場合を例に挙げて説明する。通常時は、例えば、複数のSDNスイッチ200のそれぞれが、SDNコントローラ100からのLLDP(Link Layer Discovery Protocol)パケット送信命令によって、無線通信リンクを確立している他のSDNスイッチ200である隣接ノードに、LLDPパケットを定期的に送信し、LLDPパケットを受信したSDNスイッチ200が、その情報をSDNコントローラ100に報告する。そして、SDNコントローラ100が、経路探索アルゴリズム(ex.ダイクストラ法)に従って計算し、OpenFlowに従って転送ルールを複数のSDNスイッチ200に配信する。複数のSDNスイッチ200のそれぞれは、SDNコントローラ100から受信した転送ルールに従って、データ転送を行う。
【0018】
図2は、障害発生時の通信システム10について説明するための説明図である。
図2に示すように、本実施形態に係る通信システム10において、SDNコントローラ100、又はSDNコントローラ100とメッシュネットワーク20との無線通信リンクに障害が発生した場合、メッシュネットワーク20に含まれる複数のSDNスイッチ200のうちのいずれかが代替コントローラとして動作する。これにより、SDNコントローラ100によるSDN経路制御が不能になった場合であっても、SDN経路制御を再び可能とすることができる。
【0019】
図3は、障害発生時の通信システム10の処理内容について説明するための説明図である。複数のSDNスイッチ200のそれぞれは、例えば、予め定められた期間、SDNコントローラ100と通信できない場合に、SDNコントローラ100、またはSDNコントローラ100とメッシュネットワーク20との無線通信リンクに障害が発生したと判定する。SDNスイッチ200は、例えば、いわゆるキープアライブによって、SDNコントローラ100との接続が有効であるかを定期的に確認しており、予め定められた期間、SDNコントローラ100に送信したキープアライブに対する返信が返ってこなかったり、SDNコントローラ100からキープアライブを受信しなかったりした場合に、障害が発生したと判定する。
【0020】
複数のSDNスイッチ200のそれぞれは、障害の発生を検知したことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定する。代表スイッチとして動作すると判定したSDNスイッチ200は、メッシュネットワーク20内の他のSDNスイッチ200に対して、自装置が代表スイッチとして動作することを広告する広告パケットを送信する。代表スイッチとして動作するSDNスイッチ200は、例えば、メッシュネットワーク20において広告パケットをフラッディングする。また、例えば、代表スイッチとして動作するSDNスイッチ200は、メッシュネットワーク20において広告パケットをブロードキャストする。
【0021】
複数のSDNスイッチ200のそれぞれは、広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定する。例えば、代表スイッチとして動作するSDNスイッチ200が、他のいずれのSDNスイッチ200からも広告パケットを受信しない場合、代替コントローラとして動作すると判定する。また、例えば、複数のSDNスイッチ200が代表スイッチとして動作している場合、複数のSDNスイッチ200のいずれかのみが代替コントローラとして動作することになるように、複数のSDNスイッチ200が、予め定められたアルゴリズムに従って、代替コントローラとして動作するか否かを判定する。
【0022】
代替コントローラとして動作するSDNスイッチ200は、自装置の情報を含む代替コントローラ情報を、メッシュネットワーク20に含まれるすべてのSDNスイッチ200に送信する。代替コントローラ情報は、例えば、自装置のIPアドレスを含む。代替コントローラとして動作するSDNスイッチ200は、例えば、メッシュネットワーク20において代替コントローラ情報をフラッディングする。また、例えば、代替コントローラとして動作するSDNスイッチ200は、メッシュネットワーク20において代替コントローラ情報をブロードキャストする。
【0023】
これにより、メッシュネットワーク20に含まれるすべてのSDNスイッチ200が、代替コントローラを認識することができる。そして、以降、代替コントローラとして動作するSDNスイッチ200が、メッシュネットワーク20における経路制御を実行する。
【0024】
障害の発生パターンとして、ネットワークが分断されるパターンと、SDNコントローラ100のサービスに障害が発生するパターンとがあり得るが、それぞれのパターンにおける通信システム10の処理内容について説明する。
【0025】
図4は、ネットワークが分断されるパターンにおける通信システム10の処理内容について説明するための説明図である。
図4に示すように、障害の発生によってネットワークが分断された場合、SDNコントローラ100と通信可能なSDNスイッチ200については、SDNコントローラ100による経路制御が継続されてよい。
【0026】
SDNコントローラ100と通信できない複数のSDNスイッチ200は、いずれかが代替コントローラとして動作する。
図4では、障害が発生した無線通信リンクを有するSDNスイッチ200が、代表スイッチとして動作すると判定し、障害が発生した無線通信リンクを有さないSDNスイッチ200が、代表スイッチとして動作しないと判定する場合を例示している。
図4に示す例においては、2つのSDNスイッチ200が、代表スイッチとして動作すると判定する。
【0027】
代表スイッチとして動作するSDNスイッチ200は、メッシュネットワーク20内の他のSDNスイッチ200に対して、広告パケットを送信する。
図4に示す例において、代表スイッチとして動作する2つのSDNスイッチ200のそれぞれは、自身を含めて2つの代表スイッチの存在を把握する。2つのSDNスイッチ200のそれぞれは、予め定められたアルゴリズムに従って、いずれか一方が代替コントローラとして動作すると判定する。
【0028】
図5は、代替コントローラとして動作するSDNスイッチ200によって経路制御が実行されている状況を概略的に示す。代替コントローラとして動作するSDNスイッチ200は、自身に接続されているSDNスイッチ200から収集した情報を用いて、経路探索アルゴリズムに従って経路表を計算し、OpenFlowに従って経路表を配信する。
【0029】
また、代替コントローラとして動作するSDNスイッチ200は、以前接続していたSDNコントローラ100の障害の復旧を確認する。代替コントローラとして動作するSDNスイッチ200は、SDNコントローラ100への接続の復旧を確認してよい。代替コントローラとして動作するSDNスイッチ200は、SDNコントローラ100への接続が復旧したことを確認した場合に、SDNコントローラ100と通信して、いずれが経路制御を実行するかを決定する。
【0030】
SDNコントローラ100が経路制御を実行すると決定した場合、代替コントローラとして動作するSDNスイッチ200は、コントローラを1つに集約するための情報をSDNコントローラ100に送信して、代替コントローラの機能を停止する。SDNコントローラ100は、自身が経路制御を実行するコントローラであることをメッシュネットワーク20内のSDNスイッチ200に通知して、メッシュネットワーク20の経路制御を実行する。
【0031】
代替コントローラとして動作するSDNスイッチ200が経路制御を実行すると決定した場合、SDNコントローラ100は、コントローラを1つに集約するための情報を当該SDNスイッチ200に送信する。代替コントローラとして動作するSDNスイッチ200は、自身が経路制御を実行するコントローラであることをメッシュネットワーク20内のSDNスイッチ200に通知して、メッシュネットワーク20の経路制御を実行する。
【0032】
図6は、ネットワークが分断されるパターンにおける代表スイッチ及び代替コントローラの選定方法の一例について説明するための説明図である。
【0033】
複数のSDNスイッチ200のそれぞれは、障害の発生を検知する直前(一定期間)に無線通信リンクが切断されていた場合、代表スイッチとして動作すると判定し、切断されていなかった場合、代表スイッチとして動作しないと判定する。すなわち、複数のSDNスイッチ200のそれぞれは、障害が発生したことを検知した検知時点から予め定められた期間遡った時点と、当該検知時点との間の期間に、無線通信リンクが切断されていた場合、代表スイッチとして動作すると判定し、切断されていなかった場合、代表スイッチとして動作しないと判定する。
【0034】
図6に示す例においては、3つのSDNスイッチ200が、代表スイッチとして動作すると判定している。代表スイッチとして動作するSDNスイッチ200のそれぞれは、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して、広告パケットを送信する。広告パケットは、送信元のSDNスイッチ200が無線通信リンクを確立している数である接続リンク数を含んでよい。広告パケットは、送信元のSDNスイッチ200を識別可能なスイッチIDを含んでよい。
【0035】
通信システム10において、代表スイッチとして動作するSDNスイッチ200のうち、接続リンク数が最も多いSDNスイッチ200が、代替コントローラとして選定されてよい。代表スイッチとして動作するSDNスイッチ200は、広告パケットによって、それぞれの接続リンク数を共有する。そして、接続リンク数が最も多いSDNスイッチ200が、代替コントローラとして動作すると判定し、他のSDNスイッチ200は、代替コントローラとして動作しないと判定する。これにより、代替コントローラとして動作した際に、接続経路をより多く有するSDNスイッチ200を、代替コントローラとして選定することができる。
【0036】
通信システム10において、接続リンク数が最も多いSDNスイッチ200が複数存在する場合、スイッチIDが最も小さいSDNスイッチ200が、代替コントローラとして選定されてよい。接続リンク数が最も多い複数のSDNスイッチ200は、当該複数のSDNスイッチ200の中で、自身のスイッチIDが最も小さい場合に、代替コントローラとして動作すると判定し、最も小さくない場合、代替コントローラとして動作しないと判定する。これにより、代替コントローラを一意に決定することができる。
図6に示す例では、代表A、代表B、代表Cのうち、代表B及び代表Cの接続リンク数が最も多いので、スイッチIDの小さい代表BのSDNスイッチ200が代替コントローラとして動作する。
【0037】
図7は、ネットワークが分断されるパターンにおける代表スイッチ及び代替コントローラの選定方法の一例について説明するための説明図である。
【0038】
複数のSDNスイッチ200のそれぞれは、障害の発生を検知する直前(一定期間)に無線通信リンクが切断されていた場合、代表スイッチとして動作すると判定し、切断されていなかった場合、代表スイッチとして動作しないと判定する。すなわち、複数のSDNスイッチ200のそれぞれは、障害が発生したことを検知した検知時点から予め定められた期間遡った時点と、当該検知時点との間の期間に、無線通信リンクが切断されていた場合、代表スイッチとして動作すると判定し、切断されていなかった場合、代表スイッチとして動作しないと判定する。
【0039】
図7に示す例においては、3つのSDNスイッチ200が、代表スイッチとして動作すると判定している。3つのSDNスイッチ200のそれぞれは、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して、広告パケットを送信する。広告パケットは、送信元のSDNスイッチ200が無線通信リンクを確立している数である接続リンク数を含んでよい。送信元が、障害が発生した無線通信リンクを有している場合に、広告パケットは、障害が発生した無線通信リンクを示す障害リンク情報を含んでよい。広告パケットは、送信元のSDNスイッチ200を識別可能なスイッチIDを含んでよい。
【0040】
通信システム10において、メッシュネットワーク20内のすべてのSDNスイッチ200のうち、代表スイッチとして動作する複数のSDNスイッチ200からの平均ホップ数が最も少ないSDNスイッチ200が、代替コントローラとして選定されてよい。代表スイッチとして動作するSDNスイッチ200は、障害発生前にSDNコントローラ100から受信して格納していたメッシュネットワーク全体のトポロジ情報を、他のSDNスイッチ200から受信した広告パケットに含まれる障害リンク情報によって更新することによって、より新しいトポロジ情報を生成する。そして、代表スイッチとして動作するSDNスイッチ200は、生成したトポロジ情報を用いて、代表スイッチとして動作するSDNスイッチ200からの平均ホップ数が最も小さいSDNスイッチ200を、代替コントローラとして選定する。これにより、代替コントローラとして動作した際に、SDN制御メッセージ転送処理がより少なくなるSDNスイッチ200を、代替コントローラとして選定することができる。
【0041】
代表スイッチとして動作するSDNスイッチ200は、平均ホップ数が最も小さいSDNスイッチ200が複数存在する場合、当該複数のSDNスイッチ200のうち、接続リンク数が最も多いSDNスイッチ200を代替コントローラとして選定してよい。接続リンク数が最も多いSDNスイッチ200が複数存在する場合、代表スイッチとして動作するSDNスイッチ200は、当該複数のSDNスイッチ200のうち、スイッチIDが最も小さいSDNスイッチ200を代替コントローラとして選定してよい。
図7に示す例においては、代表A~Cに対してホップ数1で接続可能なSDNスイッチ200が代替コントローラとして選定される。
【0042】
代表スイッチとして動作するSDNスイッチ200は、代替コントローラとして選定したSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してよい。指示情報を受信したSDNスイッチ200は、代替コントローラとして動作すると判定し、自装置の情報を含む代替コントローラ情報を他のSDNスイッチ200に送信するとともに、メッシュネットワーク20における経路制御を実行する。
【0043】
図8は、SDNコントローラ100のサービスに障害が発生するパターンにおける通信システム10の処理内容について説明するための説明図である。通信システム10は、SDNコントローラ100による経路制御サービスを監視する監視アプリ150を備えてよい。
【0044】
監視アプリ150は、例えば、SDNコントローラ100にインストールされる。また、監視アプリ150は、SDNコントローラ100に接続された、SDNコントローラ100を監視する監視装置にインストールされてもよい。
【0045】
監視アプリ150は、SDNコントローラ100の経路制御サービスに障害が発生したことに応じて、SDNコントローラ100と直接無線通信リンクを確立しているSDNスイッチ200に通知情報を送信してよい。通知情報を受信したSDNスイッチ200は、代表スイッチとして動作すると判定し、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して、広告パケットを送信する。代表スイッチとして動作するSDNスイッチ200が1つである場合、当該SDNスイッチ200が代替コントローラとして動作する。代表スイッチとして動作するSDNスイッチ200が複数存在する場合、当該複数のSDNスイッチ200のうちの一のSDNスイッチ200が代替コントローラとして動作する。代替コントローラとして動作すると判定したSDNスイッチ200は、自装置の情報を含む代替コントローラ情報をメッシュネットワーク20の他のSDNスイッチ200に対して送信し、メッシュネットワーク20の経路制御を実行する。
【0046】
なお、監視アプリ150は、SDNコントローラ100と直接無線通信リンクを確立しているSDNスイッチ200が1つである場合において、SDNコントローラ100の経路制御サービスに障害が発生した場合、SDNコントローラ100と直接無線通信リンクを確立しているSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してもよい。
【0047】
図9は、SDNコントローラ100のサービスに障害が発生するパターンにおける代替コントローラの選定方法の一例について説明するための説明図である。
【0048】
監視アプリ150から通知情報を受信した複数のSDNスイッチ200のそれぞれは、代表スイッチとして動作すると判定する。代表スイッチとして動作するSDNスイッチ200のそれぞれは、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して、広告パケットを送信する。広告パケットは、送信元のSDNスイッチ200が無線通信リンクを確立している数である接続リンク数を含んでよい。広告パケットは、送信元のSDNスイッチ200を識別可能なスイッチIDを含んでよい。
【0049】
通信システム10において、代表スイッチとして動作するSDNスイッチ200のうち、接続リンク数が最も多いSDNスイッチ200が、代替コントローラとして選定されてよい。代表スイッチとして動作するSDNスイッチ200は、広告パケットによって、それぞれの接続リンク数を共有する。そして、接続リンク数が最も多いSDNスイッチ200が、代替コントローラとして動作すると判定し、他のSDNスイッチ200は、代替コントローラとして動作しないと判定する。これにより、代替コントローラとして動作した際に、接続経路をより多く有するSDNスイッチ200を、代替コントローラとして選定することができる。
【0050】
通信システム10において、接続リンク数が最も多いSDNスイッチ200が複数存在する場合、スイッチIDが最も小さいSDNスイッチ200が、代替コントローラとして選定されてよい。接続リンク数が最も多い複数のSDNスイッチ200は、当該複数のSDNスイッチ200の中で、自身のスイッチIDが最も小さい場合に、代替コントローラとして動作すると判定し、最も小さくない場合、代替コントローラとして動作しないと判定する。これにより、代替コントローラを一意に決定することができる。
図9に示す例では、代表A、代表Bのうち、接続リンク数がより多い代表Bが代替コントローラとして動作する。
【0051】
なお、
図9では、監視アプリ150が、SDNコントローラ100と直接無線通信リンクを確立している2つのSDNスイッチ200に通知情報を送信する場合を例に挙げて説明したが、これに限らない。SDNコントローラ100と直接無線通信リンクを確立しているSDNスイッチ200が複数存在する場合に、監視アプリ150が、SDNコントローラ100によって管理されているメッシュネットワーク20のトポロジ情報を用いて、接続リンク数が最も多いSDNスイッチ200を特定し、特定したSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してもよい。
【0052】
図10は、SDNコントローラ100のサービスに障害が発生するパターンにおける代替コントローラの選定方法の一例について説明するための説明図である。
【0053】
監視アプリ150から通知情報を受信した複数のSDNスイッチ200のそれぞれは、代表スイッチとして動作すると判定する。代表スイッチとして動作するSDNスイッチ200のそれぞれは、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して、広告パケットを送信する。広告パケットは、送信元のSDNスイッチ200が無線通信リンクを確立している数である接続リンク数を含んでよい。広告パケットは、送信元のSDNスイッチ200を識別可能なスイッチIDを含んでよい。
【0054】
通信システム10において、メッシュネットワーク20内のすべてのSDNスイッチ200のうち、代表スイッチとして動作する複数のSDNスイッチ200からの平均ホップ数が最も少ないSDNスイッチ200が、代替コントローラとして選定されてよい。代表スイッチとして動作するSDNスイッチ200は、障害発生前にSDNコントローラ100から受信して格納していたメッシュネットワーク20のトポロジ情報を用いて、代表スイッチとして動作するSDNスイッチ200からの平均ホップ数が最も小さいSDNスイッチ200を特定し、代替コントローラとして選定する。これにより、代替コントローラとして動作した際に、SDN制御メッセージ転送処理がより少なくなるSDNスイッチ200を、代替コントローラとして選定することができる。
【0055】
代表スイッチとして動作するSDNスイッチ200は、平均ホップ数が最も小さいSDNスイッチ200が複数存在する場合、当該複数のSDNスイッチ200のうち、接続リンク数が最も多いSDNスイッチ200を代替コントローラとして選定してよい。接続リンク数が最も多いSDNスイッチ200が複数存在する場合、代表スイッチとして動作するSDNスイッチ200は、当該複数のSDNスイッチ200のうち、スイッチIDが最も小さいSDNスイッチ200を代替コントローラとして選定してよい。
【0056】
代表スイッチとして動作するSDNスイッチ200は、代替コントローラとして選定したSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してよい。指示情報を受信したSDNスイッチ200は、代替コントローラとして動作すると判定し、自装置の情報を含む代替コントローラ情報を他のSDNスイッチ200に送信するとともに、メッシュネットワーク20における経路制御を実行する。
【0057】
なお、
図10では、監視アプリ150が、SDNコントローラ100と直接無線通信リンクを確立している2つのSDNスイッチ200に通知情報を送信する場合を例に挙げて説明したが、これに限らない。監視アプリ150が、SDNコントローラ100によって管理されているメッシュネットワーク20のトポロジ情報を用いて、メッシュネットワーク20内のすべてのSDNスイッチ200から、代替コントローラを選定してもよい。例えば、監視アプリ150は、SDNコントローラ100と直接無線通信リンクを確立しているSDNスイッチ200を代表スイッチとして選定し、SDNコントローラ100によって管理されているメッシュネットワーク20のトポロジ情報を用いて、メッシュネットワーク20内のすべてのSDNスイッチ200のうち、代表スイッチとして動作する複数のSDNスイッチ200からの平均ホップ数が最も少ないSDNスイッチ200を、代替コントローラとして選定する。監視アプリ150は、選定したSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してよい。
【0058】
図11は、SDNスイッチ200の構成の一例を概略的に示す。SDNスイッチ200は、通信部202、OpenFlowスイッチ204、OpenFlowコントローラ206、転送ルール格納部212、障害検知部214、スイッチ判定部216、広告パケット送信部218、コントローラ判定部220、スイッチ情報格納部232、コントローラ情報送信部234、及び復旧処理部236を備える。
【0059】
通信部202は、SDNコントローラ100と通信する。通信部202は、他のSDNスイッチ200と通信する。
【0060】
OpenFlowスイッチ204は、OpenFlowのスイッチとしての機能を実行する。OpenFlowスイッチ204は、SDNコントローラ100又は代替コントローラから受信した転送ルールを転送ルール格納部212に格納する。OpenFlowスイッチ204は、転送ルール格納部212に格納されている転送ルールに従って、データの送信先や、データの中継先を判断し、データ転送を制御する。
【0061】
OpenFlowコントローラ206は、SDNスイッチ200が代替コントローラとして動作する場合に、OpenFlowのコントローラとしての機能を実行する。OpenFlowコントローラ206は、管理対象のSDNスイッチ200から収集した情報であるスイッチ情報をスイッチ情報格納部232に格納する。OpenFlowコントローラ206は、スイッチ情報格納部232に格納されているスイッチ情報を用いて、メッシュネットワーク20のトポロジ情報を生成する。OpenFlowコントローラ206は、トポロジ情報を用いて、転送ルールを生成し、管理対象のSDNスイッチ200に対して配信する。
【0062】
障害検知部214は、SDNコントローラ100、又はSDNコントローラ100とメッシュネットワーク20との無線通信リンクに障害が発生したことを検知する。障害検知部214は、予め定められた期間、SDNコントローラ100と通信できない場合に、SDNコントローラ100、又はSDNコントローラ100とメッシュネットワーク20との無線通信リンクに障害が発生したと判定してよい。障害検知部214は、SDNコントローラ100に対して定期的にキープアライブを送信することによって、SDNコントローラ100との接続が有効であるかを確認し、予め定められた期間、SDNコントローラ100との接続が有効であることが確認できなかった場合に、SDNコントローラ100、又はSDNコントローラ100とメッシュネットワーク20との無線通信リンクに障害が発生したと判定してよい。
【0063】
スイッチ判定部216は、障害検知部214によって障害が発生したことが検知されたことに応じて、予め定められた条件を満たす代表スイッチとして動作するか否かを判定する。例えば、スイッチ判定部216は、障害検知部214によって障害が発生したことが検知された検知時点から予め定められた期間遡った時点と、当該検知時点との間の期間に、SDNコントローラ100及びメッシュネットワーク20に含まれる他のSDNスイッチ200の少なくともいずれかとの無線通信リンクが切断されていた場合に、代表スイッチとして動作すると判定し、切断されていない場合に、代表スイッチとして動作しないと判定してよい。スイッチ判定部216は、監視アプリ150によって送信された通知情報を受信した場合に、代表スイッチとして動作すると判定してもよい。
【0064】
広告パケット送信部218は、スイッチ判定部216によって代表スイッチとして動作すると判定された場合に、自装置が代表スイッチとして動作することを広告する広告パケットを、メッシュネットワーク20に含まれる他のSDNスイッチ200に対して送信する。広告パケット送信部218は、例えば、メッシュネットワーク20において、広告パケットをフラッディングする。また、広告パケット送信部218は、例えば、メッシュネットワーク20において、広告パケットをブロードキャストする。
【0065】
広告パケットは、送信元のSDNスイッチ200が接続を確立している無線通信リンクの数である接続リンク数を含んでよい。広告パケットは、送信元のSDNスイッチ200のスイッチIDを含んでよい。スイッチIDは、SDNスイッチ200を識別可能な数値を含む装置識別IDの一例であってよい。広告パケットは、送信元のSDNスイッチ200が、障害が発生した無線通信リンクを有している場合に、障害が発生した無線通信リンクを示す障害リンク情報を含んでよい。
【0066】
コントローラ判定部220は、メッシュネットワーク20に含まれる他のSDNスイッチ200からの広告パケットの受信状況に基づいて、代替コントローラとして動作するか否かを判定する。コントローラ判定部220は、例えば、自装置が代表スイッチとして動作しており、他のSDNスイッチ200から広告パケットを受信しないと判定した場合に、代替コントローラとして動作すると判定する。
【0067】
コントローラ判定部220は、自装置が代表スイッチとして動作しており、メッシュネットワーク20に含まれる他のSDNスイッチ200から広告パケットを受信している場合において、広告パケットの送信元である他のSDNスイッチ200の接続リンク数よりも、自装置の接続リンク数が多い場合に、代替コントローラとして動作すると判定し、自装置の接続リンク数が他のSDNスイッチ200の接続リンク数より少ない場合、代替コントローラとして動作しないと判定してよい。
【0068】
コントローラ判定部220は、自装置が代表スイッチとして動作しており、メッシュネットワーク20に含まれる他のSDNスイッチ200から広告パケットを受信している場合であって、広告パケットの送信元のSDNスイッチ200の接続リンク数と、自装置の接続リンク数が同じである場合において、当該他のSDNスイッチ200のスイッチIDよりも、自装置のスイッチIDの方が小さい場合に、代替コントローラとして動作すると判定し、小さくない場合、代替コントローラとして動作しないと判定してよい。
【0069】
コントローラ判定部220は、自装置が代表スイッチとして動作しており、メッシュネットワーク20に代表スイッチとして動作するSDNスイッチ200が複数含まれる場合において、メッシュネットワーク20のトポロジ情報に基づいて、メッシュネットワーク20内の複数のSDNスイッチ200から代替コントローラとして動作するSDNスイッチ200を選定してもよい。例えば、コントローラ判定部220は、複数のSDNスイッチ200のうち、代表スイッチとして動作する複数のSDNスイッチ200への平均ホップ数が最も少ないSDNスイッチ200を、代替コントローラとして選定する。コントローラ判定部220は、選定したSDNスイッチ200に対して、代替コントローラとして動作することを指示する指示情報を送信してよい。コントローラ判定部220は、自装置が代表スイッチとして動作していない場合であって、代表スイッチとして動作する複数のSDNスイッチ200から指示情報を受信した場合に、代替コントローラとして動作すると判定してよい。
【0070】
コントローラ判定部220は、監視アプリ150によって送信された、代替コントローラとして動作することを指示する指示情報を受信した場合に、代替コントローラとして動作すると判定してもよい。
【0071】
コントローラ判定部220は、代替コントローラとして動作すると判定した場合に、OpenFlowコントローラ206に、代替コントローラとしての機能の実行を開始させてよい。
【0072】
コントローラ情報送信部234は、コントローラ判定部220によって代替コントローラとして動作すると判定された場合に、自装置の情報を含む代替コントローラ情報を、メッシュネットワーク20に含まれる他のSDNスイッチ200に送信する。代替コントローラ情報は、自装置のIPアドレスを含んでよい。コントローラ情報送信部234は、例えば、メッシュネットワーク20において、代替コントローラ情報をフラッディングする。また、コントローラ情報送信部234は、例えば、メッシュネットワーク20において、代替コントローラ情報をブロードキャストする。
【0073】
OpenFlowコントローラ206は、コントローラ判定部220によって代替コントローラとして動作すると判定された場合に、メッシュネットワーク20の経路制御の実行を開始してよい。OpenFlowコントローラ206は、経路制御実行部の一例であってよい。
【0074】
復旧処理部236は、自装置が代替コントローラとして動作している間に、SDNコントローラ100の障害からの復旧を監視する。復旧処理部236は、SDNコントローラ100が障害から復旧したと判定した場合に、SDNコントローラ100と通信して、代替コントローラとしての動作を継続するか否かを判定する。
【0075】
復旧処理部236は、例えば、メッシュネットワーク20に含まれるSDNスイッチ200に対する平均ホップ数がSDNコントローラ100より多い場合に、代替コントローラとしての動作を継続すると判定し、少ない場合に、継続しないと判定する。復旧処理部236は、例えば、自装置の接続リンク数が、SDNコントローラ100の接続リンク数よりも多い場合に、代替コントローラとしての動作を継続すると判定し、少ない場合に、継続しないと判定する。復旧処理部236は、平均ホップ数にも、接続リンク数にも差がない場合には、代替コントローラとしての動作を継続しないと判定してよい。代替コントローラとしての動作を継続すると判定した場合、復旧処理部236は、SDNコントローラ100から、コントローラを1つに集約するための情報を受信する。
【0076】
復旧処理部236は、代替コントローラとしての動作を継続しないと判定した場合、コントローラを1つに集約するための情報をSDNコントローラ100に送信する。復旧処理部236は、スイッチ情報格納部232に格納されているスイッチ情報をSDNコントローラ100に送信してよい。そして、復旧処理部236は、OpenFlowコントローラ206による代替コントローラの機能の実行を停止させる。
【0077】
図12は、SDNコントローラ100又はSDNスイッチ200として機能するコンピュータ1200のハードウェア構成の一例を概略的に示す。コンピュータ1200にインストールされたプログラムは、コンピュータ1200を、本実施形態に係る装置の1又は複数の「部」として機能させ、又はコンピュータ1200に、本実施形態に係る装置に関連付けられるオペレーション又は当該1又は複数の「部」を実行させることができ、及び/又はコンピュータ1200に、本実施形態に係るプロセス又は当該プロセスの段階を実行させることができる。そのようなプログラムは、コンピュータ1200に、本明細書に記載のフローチャート及びブロック図のブロックのうちのいくつか又はすべてに関連付けられた特定のオペレーションを実行させるべく、CPU1212によって実行されてよい。
【0078】
本実施形態によるコンピュータ1200は、CPU1212、RAM1214、及びグラフィックコントローラ1216を含み、それらはホストコントローラ1210によって相互に接続されている。コンピュータ1200はまた、通信インタフェース1222、記憶装置1224、DVDドライブ、及びICカードドライブのような入出力ユニットを含み、それらは入出力コントローラ1220を介してホストコントローラ1210に接続されている。DVDドライブは、DVD-ROMドライブ及びDVD-RAMドライブ等であってよい。記憶装置1224は、ハードディスクドライブ及びソリッドステートドライブ等であってよい。コンピュータ1200はまた、ROM1230及びキーボードのようなレガシの入出力ユニットを含み、それらは入出力チップ1240を介して入出力コントローラ1220に接続されている。
【0079】
CPU1212は、ROM1230及びRAM1214内に格納されたプログラムに従い動作し、それにより各ユニットを制御する。グラフィックコントローラ1216は、RAM1214内に提供されるフレームバッファ等又はそれ自体の中に、CPU1212によって生成されるイメージデータを取得し、イメージデータがディスプレイデバイス1218上に表示されるようにする。
【0080】
通信インタフェース1222は、ネットワークを介して他の電子デバイスと通信する。記憶装置1224は、コンピュータ1200内のCPU1212によって使用されるプログラム及びデータを格納する。DVDドライブは、プログラム又はデータをDVD-ROM等から読み取り、記憶装置1224に提供する。ICカードドライブは、プログラム及びデータをICカードから読み取り、及び/又はプログラム及びデータをICカードに書き込む。
【0081】
ROM1230はその中に、アクティブ化時にコンピュータ1200によって実行されるブートプログラム等、及び/又はコンピュータ1200のハードウェアに依存するプログラムを格納する。入出力チップ1240はまた、様々な入出力ユニットをUSBポート、パラレルポート、シリアルポート、キーボードポート、マウスポート等を介して、入出力コントローラ1220に接続してよい。
【0082】
プログラムは、DVD-ROM又はICカードのようなコンピュータ可読記憶媒体によって提供される。プログラムは、コンピュータ可読記憶媒体から読み取られ、コンピュータ可読記憶媒体の例でもある記憶装置1224、RAM1214、又はROM1230にインストールされ、CPU1212によって実行される。これらのプログラム内に記述される情報処理は、コンピュータ1200に読み取られ、プログラムと、上記様々なタイプのハードウェアリソースとの間の連携をもたらす。装置又は方法が、コンピュータ1200の使用に従い情報のオペレーション又は処理を実現することによって構成されてよい。
【0083】
例えば、通信がコンピュータ1200及び外部デバイス間で実行される場合、CPU1212は、RAM1214にロードされた通信プログラムを実行し、通信プログラムに記述された処理に基づいて、通信インタフェース1222に対し、通信処理を命令してよい。通信インタフェース1222は、CPU1212の制御の下、RAM1214、記憶装置1224、DVD-ROM、又はICカードのような記録媒体内に提供される送信バッファ領域に格納された送信データを読み取り、読み取られた送信データをネットワークに送信し、又はネットワークから受信した受信データを記録媒体上に提供される受信バッファ領域等に書き込む。
【0084】
また、CPU1212は、記憶装置1224、DVDドライブ(DVD-ROM)、ICカード等のような外部記録媒体に格納されたファイル又はデータベースの全部又は必要な部分がRAM1214に読み取られるようにし、RAM1214上のデータに対し様々なタイプの処理を実行してよい。CPU1212は次に、処理されたデータを外部記録媒体にライトバックしてよい。
【0085】
様々なタイプのプログラム、データ、テーブル、及びデータベースのような様々なタイプの情報が記録媒体に格納され、情報処理を受けてよい。CPU1212は、RAM1214から読み取られたデータに対し、本開示の随所に記載され、プログラムの命令シーケンスによって指定される様々なタイプのオペレーション、情報処理、条件判断、条件分岐、無条件分岐、情報の検索/置換等を含む、様々なタイプの処理を実行してよく、結果をRAM1214に対しライトバックする。また、CPU1212は、記録媒体内のファイル、データベース等における情報を検索してよい。例えば、各々が第2の属性の属性値に関連付けられた第1の属性の属性値を有する複数のエントリが記録媒体内に格納される場合、CPU1212は、当該複数のエントリの中から、第1の属性の属性値が指定されている条件に一致するエントリを検索し、当該エントリ内に格納された第2の属性の属性値を読み取り、それにより予め定められた条件を満たす第1の属性に関連付けられた第2の属性の属性値を取得してよい。
【0086】
上で説明したプログラム又はソフトウエアモジュールは、コンピュータ1200上又はコンピュータ1200近傍のコンピュータ可読記憶媒体に格納されてよい。また、専用通信ネットワーク又はインターネットに接続されたサーバシステム内に提供されるハードディスク又はRAMのような記録媒体が、コンピュータ可読記憶媒体として使用可能であり、それによりプログラムを、ネットワークを介してコンピュータ1200に提供する。
【0087】
本実施形態におけるフローチャート及びブロック図におけるブロックは、オペレーションが実行されるプロセスの段階又はオペレーションを実行する役割を持つ装置の「部」を表わしてよい。特定の段階及び「部」が、専用回路、コンピュータ可読記憶媒体上に格納されるコンピュータ可読命令と共に供給されるプログラマブル回路、及び/又はコンピュータ可読記憶媒体上に格納されるコンピュータ可読命令と共に供給されるプロセッサによって実装されてよい。専用回路は、デジタル及び/又はアナログハードウェア回路を含んでよく、集積回路(IC)及び/又はディスクリート回路を含んでよい。プログラマブル回路は、例えば、フィールドプログラマブルゲートアレイ(FPGA)、及びプログラマブルロジックアレイ(PLA)等のような、論理積、論理和、排他的論理和、否定論理積、否定論理和、及び他の論理演算、フリップフロップ、レジスタ、並びにメモリエレメントを含む、再構成可能なハードウェア回路を含んでよい。
【0088】
コンピュータ可読記憶媒体は、適切なデバイスによって実行される命令を格納可能な任意の有形なデバイスを含んでよく、その結果、そこに格納される命令を有するコンピュータ可読記憶媒体は、フローチャート又はブロック図で指定されたオペレーションを実行するための手段を作成すべく実行され得る命令を含む、製品を備えることになる。コンピュータ可読記憶媒体の例としては、電子記憶媒体、磁気記憶媒体、光記憶媒体、電磁記憶媒体、半導体記憶媒体等が含まれてよい。コンピュータ可読記憶媒体のより具体的な例としては、フロッピー(登録商標)ディスク、ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、静的ランダムアクセスメモリ(SRAM)、コンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク、メモリスティック、集積回路カード等が含まれてよい。
【0089】
コンピュータ可読命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はSmalltalk(登録商標)、JAVA(登録商標)、C++等のようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続型プログラミング言語を含む、1又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかを含んでよい。
【0090】
コンピュータ可読命令は、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサ、又はプログラマブル回路が、フローチャート又はブロック図で指定されたオペレーションを実行するための手段を生成するために当該コンピュータ可読命令を実行すべく、ローカルに又はローカルエリアネットワーク(LAN)、インターネット等のようなワイドエリアネットワーク(WAN)を介して、汎用コンピュータ、特殊目的のコンピュータ、若しくは他のプログラム可能なデータ処理装置のプロセッサ、又はプログラマブル回路に提供されてよい。プロセッサの例としては、コンピュータプロセッサ、処理ユニット、マイクロプロセッサ、デジタル信号プロセッサ、コントローラ、マイクロコントローラ等を含む。
【0091】
上記実施形態では、SDNスイッチ200同士が無線リンクを確立して無線通信する場合を例に挙げて説明したが、これに限らない。通信システム10は、有線ネットワークを構築する複数の通信装置と、複数の通信装置を制御するコントローラとを備えてもよい。
【0092】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0093】
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階などの各処理の実行順序は、特段「より前に」、「先立って」などと明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「まず、」、「次に、」などを用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【0094】
10 通信システム、20 メッシュネットワーク、100 SDNコントローラ、150 監視アプリ、200 SDNスイッチ、202 通信部、204 OpenFlowスイッチ、206 OpenFlowコントローラ、212 転送ルール格納部、214 障害検知部、216 スイッチ判定部、218 広告パケット送信部、220 コントローラ判定部、232 スイッチ情報格納部、234 コントローラ情報送信部、236 復旧処理部、1200 コンピュータ、1210 ホストコントローラ、1212 CPU、1214 RAM、1216 グラフィックコントローラ、1218 ディスプレイデバイス、1220 入出力コントローラ、1222 通信インタフェース、1224 記憶装置、1230 ROM、1240 入出力チップ