(58)【調査した分野】(Int.Cl.,DB名)
通信可能に接続されている複数のノードとの間で、前記ノードが所属するグループの識別子であるグループIDが付与されたパケットの送受信を行い、通信可能に接続されている他のネットワークスイッチと共に1台の仮想ネットワークスイッチとして機能するネットワークスイッチであって、
当該ネットワークスイッチが、どの前記グループIDが付与されているパケットの中継を行うかを示す振り分け情報を格納する振り分け情報格納手段と、
「前記グループID、該グループに所属している前記ノード」の組み合わせを示すグループ情報を取得するグループ情報取得手段と、
当該ネットワークスイッチと通信できなくなった前記ノードを特定する障害情報を取得する障害情報取得手段と、
前記他のネットワークスイッチのそれぞれについて、前記ノードとの通信の可否を示すスイッチ情報を取得するスイッチ情報取得手段と、
前記障害情報で特定される前記ノードに関して前記グループ情報を参照し、該ノードが所属するグループのグループIDを抽出し、抽出したグループIDが前記振り分け情報に示されている場合は、
該抽出したグループIDが付与されたパケットを、当該ネットワークスイッチが中継しないことを示すように前記振り分け情報を更新し、
前記スイッチ情報及び前記グループ情報に基づいて、前記他のネットワークスイッチのうち、前記仮想ネットワークスイッチを構成している別のネットワークスイッチを介さずに、該抽出したグループIDで特定されるグループに所属している全ての前記ノードと通信可能であるネットワークスイッチのいずれか一つを選択し、選択したネットワークスイッチを、該抽出したグループIDと共に示す振り分け更新情報を生成する振り分け更新情報生成手段と、
前記振り分け更新情報が示すネットワークスイッチに対し、該振り分け更新情報が示す前記グループIDを送信する振り分け更新情報送信手段と、
前記他のネットワークスイッチから前記振り分け更新情報を受信する振り分け更新情報受信手段と、
前記振り分け更新情報受信手段から前記グループIDを取得し、該グループIDで特定される前記グループに所属しているノードに対し、該グループIDが付与されたパケットを送信する場合は、当該ネットワークスイッチへ送信するように指示するスイッチ指定手段と、
前記振り分け更新情報受信手段から前記グループIDを取得し、取得したグループIDが付与されたパケットを、当該ネットワークスイッチが中継することを示すように、前記振り分け情報を更新する振り分け情報更新手段と、
を有するネットワークスイッチ。
コンピュータを、通信可能に接続されている複数のノードとの間で、前記ノードが所属するグループの識別子であるグループIDが付与されたパケットの送受信を行い、通信可能に接続されている他のネットワークスイッチと共に1台の仮想ネットワークスイッチとして動作するネットワークスイッチとして機能させるネットワークスイッチ制御プログラムであって、
当該プログラムは、前記コンピュータに、
前記コンピュータが、どの前記グループIDが付与されているパケットを中継するかを示す振り分け情報を格納する振り分け情報格納機能と、
「前記グループID、該グループに所属している前記ノード」の組み合わせを示すグループ情報を取得するグループ情報取得機能と、
前記コンピュータと通信できなくなった前記ノードを特定する障害情報を取得する障害情報取得機能と、
前記他のネットワークスイッチのそれぞれについて、前記ノードとの通信の可否を示すスイッチ情報を取得するスイッチ情報取得機能と、
前記障害情報で特定される前記ノードに関して前記グループ情報を参照し、該ノードが所属するグループのグループIDを抽出し、抽出したグループIDが前記振り分け情報に示されている場合は、
該抽出したグループIDが付与されたパケットを、前記コンピュータが中継しないことを示すように前記振り分け情報を更新し、
前記スイッチ情報及び前記グループ情報に基づいて、前記他のネットワークスイッチのうち、前記仮想ネットワークスイッチを構成している別のネットワークスイッチを介さずに、該抽出したグループIDで特定されるグループに所属している全ての前記ノードと通信可能であるネットワークスイッチのいずれか一つを選択し、選択したネットワークスイッチを、該抽出したグループIDと共に示す振り分け更新情報を生成する振り分け更新情報生成機能と、
前記振り分け更新情報が示すネットワークスイッチに対し、該振り分け更新情報が示す前記グループIDを送信する振り分け更新情報送信機能と、
前記他のネットワークスイッチから前記振り分け更新情報を受信する振り分け更新情報受信機能と、
前記振り分け更新情報受信機能が受信した前記グループIDを取得し、該グループIDで特定される前記グループに所属しているノードに対し、該グループIDが付与されたパケットを送信する場合は、前記コンピュータへ送信するように指示するスイッチ指定機能と、
前記振り分け更新情報受信機能が受信した前記グループIDを取得し、取得したグループIDが付与されたパケットを、前記コンピュータが中継することを示すように、前記振り分け情報を更新する振り分け情報更新機能と、
を持たせるネットワークスイッチ制御プログラム。
コンピュータを、通信可能に接続されている複数のノードとの間で、前記ノードが所属するグループの識別子であるグループIDが付与されたパケットの送受信を行い、通信可能に接続されている他のネットワークスイッチと共に1台の仮想ネットワークスイッチとして機能するネットワークスイッチとして動作させるネットワークスイッチ制御方法であって、
前記コンピュータが、前記コンピュータによってどの前記グループIDが付与されているパケットの中継を行うかを示す振り分け情報を格納する振り分け情報格納ステップと、
「前記グループID、該グループに所属している前記ノード」の組み合わせを示すグループ情報を取得するグループ情報取得ステップと、
前記コンピュータが、前記コンピュータと通信できなくなった前記ノードを特定する障害情報を取得する障害情報取得ステップと、
前記コンピュータが、前記他のネットワークスイッチのそれぞれについて、前記ノードとの通信の可否を示すスイッチ情報を取得するスイッチ情報取得ステップと、
前記障害情報で特定される前記ノードに関して前記グループ情報を参照し、該ノードが所属するグループのグループIDを抽出し、抽出したグループIDが前記振り分け情報に示されている場合は、
前記コンピュータが、該抽出したグループIDが付与されたパケットを、前記コンピュータが中継しないことを示すように前記振り分け情報を更新し、
前記コンピュータが、前記スイッチ情報及び前記グループ情報に基づいて、前記他のネットワークスイッチのうち、前記仮想ネットワークスイッチを構成している別のネットワークスイッチを介さずに、該抽出したグループIDで特定されるグループに所属している全ての前記ノードと通信可能であるネットワークスイッチのいずれか一つを選択し、選択したネットワークスイッチを、該抽出したグループIDと共に示す振り分け更新情報を生成する振り分け更新情報生成ステップと、
前記コンピュータが、前記振り分け更新情報が示すネットワークスイッチに対し、該振り分け更新情報が示す前記グループIDを送信する振り分け更新情報送信ステップと、
前記コンピュータが、前記他のネットワークスイッチから前記振り分け更新情報を受信する振り分け更新情報受信ステップと、
前記コンピュータが、前記振り分け更新情報受信ステップで受信した前記グループIDを取得し、該グループIDで特定される前記グループに所属しているノードに対し、該グループIDが付与されたパケットを送信する場合は、前記コンピュータへ送信するように指示するスイッチ指定ステップと、
前記コンピュータが、前記振り分け更新情報受信ステップで受信した前記グループIDを取得し、取得したグループIDが付与されたパケットを、前記コンピュータが中継することを示すように、前記振り分け情報を更新する振り分け情報更新ステップと、
を有するネットワークスイッチ制御方法。
【発明を実施するための形態】
【0019】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【0020】
なお、以下に示す説明において、各装置の各構成要素は、ハードウエア単位の構成ではなく、機能単位のブロックを示している。各装置の各構成要素は、任意のコンピュータのCPU、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶メディア、ネットワーク接続用インタフェースを中心に、ハードウエア、ソフトウエア、又はハードウエア及びソフトウエアの組合せによって実現される。そして、その実現方法、装置には様々な変形例がある。
【0021】
[実施形態1]
<概要>
図1は、本実施形態に係るスイッチ2000を、その使用環境と共に示す図である。
図1において、矢印は情報の流れを表している。
【0022】
スイッチ2000は、通信回線を介して接続されている他のスイッチ2000と共に、1つの仮想的なスイッチである仮想スイッチ3000として機能する。ここで、仮想スイッチ3000を構成するスイッチ2000同士を接続する通信回線を、制御インタフェース2300と呼ぶ。仮想スイッチ3000を構成する各スイッチ2000は、パケットの送信又は受信を行う複数のノードと、通信回線を介して接続されている。ここで、パケットを送信するノードを送信元のノード10、送信元のノード10が送信したパケットの宛先であるノードを送信先のノード20と呼ぶ。スイッチ2000は、送信元のノード10からパケットを受信し、送信先のノード20へパケットを送信する中継装置として機能する。
【0023】
スイッチ2000は、振り分け情報格納部2020を有する。振り分け情報格納部2020は、振り分け情報を格納する。振り分け情報とは、スイッチ2000がパケットを中継する「パケット送信元のノード10、パケット送信先のノード20」の各組み合わせを示す情報である。例えば、振り分け情報が「ノード1、ノード2」という組み合わせを示しているとする。この場合、スイッチ2000は、ノード2を宛先とするパケットをノード1から受信し、ノード2へ送信する。
【0024】
スイッチ2000は、障害情報取得部2040を有する。障害情報取得部2040は、障害情報を取得する。障害情報は、スイッチ2000と通信回線を介して接続されているノードのうち、スイッチ2000と通信ができなくなったノードを特定する情報である。以下、障害情報で特定されるノードを、障害ノードと呼ぶ。
【0025】
スイッチ2000は、スイッチ情報取得部2060を有する。スイッチ情報取得部2060は、スイッチ情報を取得する。スイッチ情報は、スイッチ2000と共に仮想スイッチ3000を構成するスイッチ2000それぞれについて、別のスイッチ2000を介さずに通信可能であるノードを示す情報である。
【0026】
スイッチ2000は、振り分け更新情報生成部2080を有する。振り分け更新情報生成部2080は、振り分け更新情報を生成する。振り分け更新情報とは、振り分け情報が示す「送信元のノード10、送信先のノード20」の組み合わせについて、パケットを中継するスイッチ2000を変更するための情報である。振り分け更新情報生成部2080は、障害情報取得部2040から障害情報を取得する。そして、振り分け更新情報生成部2080は、障害ノードが、振り分け情報格納部2020に格納されている振り分け情報が示すパケット送信元のノード10又はパケット送信先のノード10に該当するか否かを判定する。
【0027】
障害ノードが、振り分け情報が示すノードに該当する場合、振り分け更新情報生成部2080は、次のように動作して振り分け更新情報を生成する。振り分け更新情報生成部2080は、振り分け情報格納部2020に格納されている振り分け情報から、送信元のノード10又は送信先のノード20が障害ノードに該当する「送信元のノード10、送信先のノード20」の組み合わせを抽出する。振り分け更新情報生成部2080は、抽出した組み合わせについて当該スイッチ2000がパケットを中継しないことを示すように、抽出した組み合わせに関する振り分け情報を更新する。振り分け更新情報生成部2080は、スイッチ情報取得部2060からスイッチ情報を取得する。振り分け更新情報生成部2080は、スイッチ情報に基づき、仮想スイッチ3000を構成する他のスイッチ2000の中から、抽出した組み合わせが示す送信元のノード10及び送信先のノード20の双方と、別のスイッチ2000を介さずに通信可能であるスイッチ2000を選択する。そして、振り分け更新情報生成部2080は、「送信元のノード10、送信先のノード20、選択したスイッチ2000」の組み合わせを示す振り分け更新情報を生成する。
【0028】
抽出した「送信元のノード10、送信先のノード20」の組み合わせが複数ある場合は、組み合わせごとに振り分け更新情報を生成する。つまり、障害ノードが送信元のノード10又は送信先のノード20に該当する「送信元のノード10、送信先のノード20」の組み合わせごとに、送信元のノード10から送信先のノード20へ送信されるパケットを中継させるスイッチ2000を新たに選択する。
【0029】
スイッチ2000は、振り分け更新情報送信部2120を有する。振り分け更新情報送信部2120は、振り分け更新情報が示すスイッチ2000へ、その振り分け更新情報が示す「送信元のノード10、送信先のノード20」の組み合わせを送信する。
【0030】
スイッチ2000は、振り分け更新情報受信部2130を有する。振り分け更新情報受信部2130は、他のスイッチ2000の振り分け更新情報送信部2120から、「送信元のノード10、送信先のノード20」の組み合わせを取得する。
【0031】
スイッチ2000は、振り分け情報更新部2140を有する。振り分け情報更新部2140は、振り分け更新情報受信部2130が受信した「送信元のノード10、送信先のノード20」の組み合わせを取得する。そして、振り分け情報更新部2140は、当該スイッチ2000が、取得した組み合わせの間で送信されるパケットの中継を行うことを示すように、振り分け情報を更新する。
【0032】
スイッチ2000は、スイッチ指定部2100を有する。スイッチ指定部2100は、振り分け更新情報受信部2130が受信した「送信元のノード10、送信先のノード20」の組み合わせを取得する。そして、スイッチ指定部2100は、取得した組み合わせが示す送信元のノード10に対し、取得した組み合わせが示す送信先のノード20を宛先とするパケットを、当該スイッチ2000に対して送信するように指示する。
【0033】
以上のように、本実施形態のスイッチ2000は、自身がパケットを中継している「送信元のノード10、送信先のノード20」の組み合わせにおける送信元のノード10又は送信先のノード20と通信ができなくなった場合に、上記組み合わせの間で送信されるパケットを中継するスイッチ2000を変更する動作を行う。その際、新たに中継を行うスイッチ2000として、上記送信元のノード10及び送信先のノード20の双方と、別のスイッチ2000を介さずに通信可能であるスイッチ2000を選択する。こうすることで、スイッチ2000とスイッチ2000間でパケットの転送が行われないようにする。その結果、スイッチ2000とスイッチ2000の間を接続する制御インタフェース2300で輻輳が発生することを防ぐことができる。
【0034】
また、本実施形態のスイッチ2000は、「送信元のノード10、送信先のノード20」の組み合わせごとに、パケットを中継するスイッチ2000を決定する。したがって、スイッチ2000は、仮想スイッチ3000を構成する複数のスイッチ2000で、通信負荷を分散させることが可能である。
【0036】
<構成詳細>
スイッチ2000は、ノードとの間でパケットの送受信を行うパケット送受信部2200を有する。ここで、スイッチにおいて、受信した各パケットをどのノードへ送信するかを判断する方法は、既知の技術であるため、説明を省略する。
【0037】
<振り分け情報格納部2020の詳細>
振り分け情報格納部2020が有する振り分け情報は、例えば
図2に示す振り分けテーブル200を有する。振り分けテーブル200は例えば、送信元ノードID202及び送信先ノードID204を有する。送信元ノードID202、送信先ノードID204はそれぞれ、送信元のノード10、送信先のノード20を特定する識別子である。振り分けテーブル200の各レコードは、送信元ノードID202で特定される送信元のノード10から、送信先ノードID204で特定される送信先のノード20を宛先として送信されるパケットを、上記振り分け情報を有するスイッチ2000が中継することを示す。
【0038】
振り分け情報は、全ての「送信元のノード10、送信先のノード20」の組み合わせについて、その組み合わせの間で送信されるパケットを中継するスイッチ2000を示す情報であってもよい。
【0039】
送信元ノードID202及び送信先ノードID204がノードを特定するために示す識別子は様々である。その識別子は例えば、ノードのMACアドレスである。その他にも例えば、上記識別子は、ノードのUUID(Universal Unique Identifier)などでもよい。
【0040】
<障害情報取得部2040の詳細>
障害情報取得部2040が障害情報を取得する方法は様々である。例えば、スイッチ2000は、自身と接続されている各ノードとの通信可否を検知する障害検知部を有していてもよい。この場合、障害情報取得部2040は、上記障害検知部が生成した障害情報を取得する。一般に、ネットワークスイッチは、ポートごとに、そのポートに接続されているノードと通信できるか否かを検知する機能を有する。上記障害検知部は、あるポートに接続されているノードと通信できない場合に、そのポートに接続されているノードを示す障害情報を生成する。その他にも例えば、障害情報取得部2040は、スイッチ2000の状態や、スイッチ2000とノードの間の通信回線の状態を監視する外部装置から障害情報を取得してもよい。
【0041】
<スイッチ情報取得部2060の詳細>
スイッチ情報取得部2060が取得するスイッチ情報は、例えば
図3に示すスイッチ情報テーブル300で示される。スイッチ情報テーブル300は、例えばスイッチの識別子であるスイッチID302、及びノードの識別子であるノードID304を有する。スイッチ情報テーブル300の各レコードは、スイッチID302で特定されるスイッチ2000が、ノードID304で特定されるノードと通信可能であることを示す。
【0042】
スイッチID302が示すスイッチの識別子は、例えば、仮想スイッチ3000を構成する各スイッチ2000を識別するために、各スイッチ2000に付与されたIDである。一般にマルチシャーシ機能を有するスイッチは、協調してマルチシャーシを構成する各スイッチを管理する機能を有する。上記管理機能は、マルチシャーシを構成する各スイッチを識別するために、各スイッチにIDを付与する場合がある。スイッチID302は、このようにマルチシャーシを管理する機能によって付与されたIDである。その他にも例えば、スイッチID302は、スイッチ2000のUUIDでもよい。
【0043】
スイッチ情報は、スイッチ2000と、スイッチ2000と通信回線で接続されている各ノードとの組み合わせそれぞれについて、スイッチ2000とノードが通信可能か否かを示す情報であってもよい。以降の説明では、スイッチ情報は、スイッチ情報テーブル300で示されるとする。
【0044】
<振り分け更新情報生成部2080の詳細>
振り分け更新情報生成部2080は、振り分け情報の中から、送信元のノード10又は送信先のノード20のいずれかが障害ノードに該当する「送信元のノード10、送信先のノード20」の組み合わせを抽出する。そして、振り分け更新情報生成部2080は、当該スイッチ2000が、抽出した組み合わせについてパケットの中継を行わないことを示すように、振り分け情報を更新する。例えば、振り分け情報が、振り分け情報テーブル200のように、当該スイッチ2000がパケットの中継を行う「送信元のノード10、送信先のノード20」の組み合わせを示しているとする。この場合、振り分け更新情報生成部2080は、抽出した「送信元のノード10、送信先のノード20」の組み合わせを、振り分け情報から削除する。
【0045】
振り分け情報が、「送信元のノード10、送信先のノード20」の全ての組み合わせそれぞれについて、パケットの中継を行うスイッチ2000を対応付けているとする。この場合、振り分け更新情報生成部2080は、抽出した「送信元のノード10、送信先のノード20」に対応付けられているスイッチ2000が無いことを示すように、振り分け情報を更新する。例えば、振り分け更新情報生成部2080は、抽出した「送信元のノード10、送信先のノード20」に対応付けられているスイッチ2000を示すIDとして、空文字などを設定する。
【0046】
振り分け更新情報生成部2080が生成する振り分け更新情報は、例えば
図4に示す振り分け更新情報400で示される。振り分け更新情報400は、例えば送信元のノード10のIDを示す送信元ノードID402、送信先のノード20のIDを示す送信先ノードID404、及びスイッチのIDを示すスイッチID406を有する。振り分け更新情報は、送信元ノードID402で特定される送信元のノード10から送信先ノードID404で特定される送信先のノード20を宛先として送信されるパケットを中継するスイッチ2000を、スイッチID406で特定するスイッチ2000に変更することを示す。
【0047】
送信元ノードID402及び送信先ノードID404がノードを特定するために示す識別子は、振り分けテーブル200における送信元ノードID202及び送信先ノードID204と同様である。また、スイッチID406が示すスイッチの識別子は、スイッチ情報テーブル300におけるスイッチID302と同様である。
【0048】
<振り分け更新情報送信部2120及び振り分け更新情報受信部2130の詳細>
振り分け更新情報送信部2120は、制御インタフェース2300を介し、振り分け更新情報が示すスイッチ2000の振り分け更新情報受信部2130へ、振り分け更新情報が示す「送信元のノード10、送信先のノード20」の組み合わせを送信する。振り分け更新情報受信部2130は、制御インタフェース2300を介して、別のスイッチ2000の振り分け更新情報送信部2120から、「送信元のノード10、送信先のノード20」の組み合わせを受信する。ここで、振り分け更新情報送信部2120は、振り分け更新情報受信部2130に対して、振り分け更新情報を送信してもよい。
【0049】
<振り分け情報更新部2140の詳細>
振り分け情報更新部2140は、振り分け更新情報受信部2130から、「送信元のノード10、送信先のノード20」の組み合わせを取得する。そして、振り分け情報更新部2140は、当該スイッチ2000が、取得した組み合わせの間で送信されるパケットの中継を行うことを示すように、振り分け情報を更新する。例えば、振り分け情報が、振り分け情報テーブル200のように、当該スイッチ2000がパケットの中継を行う「送信元のノード10、送信先のノード20」の組み合わせを示しているとする。この場合、振り分け情報更新部2140は、取得した「送信元のノード10、送信先のノード20」の組み合わせを、振り分け情報に登録する。
【0050】
振り分け情報が、「送信元のノード10、送信先のノード20」の全ての組み合わせそれぞれについて、パケットの中継を行うスイッチ2000を対応付けているとする。この場合、振り分け更新情報生成部2140は、取得した「送信元のノード10、送信先のノード20」に当該スイッチ2000を対応付けるように、振り分け情報を更新する。
【0051】
<動作の流れ>
図5は、スイッチ2000が、あるノードと通信できなくなった際に振り分け情報を更新する処理の流れの一例を示すフローチャートである。
【0052】
ステップS102において、障害情報取得部2040は、障害情報を取得する。
【0053】
ステップS104において、振り分け更新情報生成部2080は、上記障害情報で特定される障害ノードのIDをキーとして、振り分け情報格納部2020に格納されている振り分け情報テーブル200を検索する。具体的には、振り分け情報テーブル200から、送信元ノードID202又は送信先ノードID204が障害ノードのIDを示すレコードを検索する。
【0054】
ステップS106において、振り分け更新情報生成部2080は、ステップS104の検索の結果を判定する。該当するレコードがある場合は、ステップS108に進む。該当するレコードがない場合は、
図5のフローチャートで示す処理を終了する。
【0055】
ステップS108において、スイッチ情報取得部2060は、スイッチ情報を取得する。
【0056】
ステップS110〜ステップS120は、ステップS104において振り分け情報テーブル200を検索して取得した各レコードについて行うループ処理である。ステップS110において、検索結果の全てのレコードについて処理を行ったかを判定する。まだ処理を行っていないレコードがある場合は、その中の1つを選択する。選択したレコードをレコードiとする。そして、ステップS112に進む。全てのレコードについて処理を終えている場合は、
図5のフローチャートに示す処理を終了する。
【0057】
ステップS112において、振り分け更新情報生成部2080は、振り分け情報格納部2020に格納されている振り分け情報テーブル200から、レコードiを削除する。
【0058】
ステップS114において、振り分け更新情報生成部2080は、スイッチ情報取得部2060が取得したスイッチ情報に基づいて、レコードiに示されている「送信元のノード10、送信先のノード20」の組み合わせについて、振り分け更新情報400を生成する。
【0059】
ステップS118において、振り分け更新情報送信部2120は、上記振り分け更新情報400が示す「送信元のノード10、送信先のノード20」を、上記振り分け更新情報400が示すスイッチ2000へ送信する。以下、上記振り分け更新情報400が示すスイッチ2000を、変更先スイッチ2000と表記する。
【0060】
変更先スイッチ2000が有する振り分け更新情報受信部2130は、上記振り分け更新情報400を受信する。そして、変更先スイッチ2000が有するスイッチ指定部2100は、振り分け更新情報受信部2130が受信した「送信元のノード10、送信先のノード20」の組み合わせを取得する。そして、上記スイッチ指定部2100は、取得した組み合わせが示す送信元のノード10へ、取得した組み合わせが示す送信先のノード20を宛先とするパケットを送信する場合は、変更先スイッチ2000へ送信するように指示する。
【0061】
さらに、変更先スイッチ2000が有する振り分け情報更新部2140は、振り分け更新情報受信部2130が受信した振り分け更新情報400が示す「送信元のノード10、送信先のノード20」の組み合わせを、変更先スイッチ2000が有する振り分け情報格納部2020に格納されている振り分け情報テーブル200へ登録する。
【0062】
ステップS120は、ステップS110から始まるループ処理の終端である。したがって、ステップS110に戻る。
【0063】
スイッチ2000が、通信ができなくなったノードとの間でパケットをやりとりするスイッチ2000を変更する処理の流れは、上記に限定されない。例えば振り分け更新情報送信部2120は、ステップS118で行う「送信元のノード10、送信先のノード20」の組み合わせの送信を、全てのレコードiについて振り分け更新情報400を生成した後で行ってもよい。この場合、例えば振り分け更新情報送信部2120は、同じスイッチ2000へ送信する「送信元のノード10、送信先のノード20」の組み合わせを、そのスイッチ2000に対してまとめて送信する。これにより、スイッチ2000の間を接続する制御用ポートにかかる通信負荷を低減することができる。
【0064】
<作用・効果>
以上の構成により、本実施形態によれば、スイッチ2000は、自身がパケットを中継している「送信元のノード10、送信先のノード20」の組み合わせにおける送信元のノード10又は送信先のノード20と通信ができなくなった場合に、上記中継を行うスイッチ2000を変更する。その際、新たに中継を行うスイッチ2000として、上記送信元のノード10及び送信先のノード20の双方と、別のスイッチ2000を介さずに通信可能であるスイッチ2000を選択する。こうすることで、送信元のノード10から送信先のノード20へパケットを送信する際に、スイッチ2000から別のスイッチ2000へパケットを転送しないようにする。その結果、スイッチ2000とスイッチ2000を接続する制御インタフェース2300で輻輳が発生することを防ぐことができる。
【0065】
また、本実施形態のスイッチ2000は、「送信元のノード10、送信先のノード20」の組み合わせごとに、パケットを中継するスイッチ2000を決定する。したがって、スイッチ2000は、仮想スイッチ3000を構成する他のスイッチ2000との間で、パケットの送受信にかかる通信負荷を分散させることが可能である。
【0066】
[実施形態2]
<概要>
図6は、実施形態2に係るスイッチ4000を、その使用環境と共に示すブロック図である。ここで、
図6における矢印は、情報の流れを示している。
【0067】
スイッチ4000は、通信回線を介して接続されている他のスイッチ4000と共に、1つの仮想的なスイッチである仮想スイッチ5000として機能する。ここで、仮想スイッチ5000を構成するスイッチ4000同士を接続する通信回線を、制御インタフェース4300と呼ぶ。仮想スイッチ5000を構成する各スイッチ4000は、パケットの送信又は受信を行う複数のノード30と、通信回線を介して接続されている。スイッチ4000は、ノード30からパケットを受信し、別のノード30へパケットを送信する中継装置として機能する。
【0068】
ノード30は、1つ以上のノード30のまとまりであるグループに所属する。各グループに所属するノード30は、自身が所属するグループの識別子であるグループIDが付与されたパケットを送信、又は受信する。ノード30は、複数のグループに所属していてもよい。
【0069】
スイッチ4000は、振り分け情報格納部4020を有する。振り分け情報格納部4020は、振り分け情報を格納する。本実施形態における振り分け情報は、当該スイッチ4000が、どのグループIDが付与されたパケットを中継するかを示す情報である。
【0070】
スイッチ4000は、グループ情報取得部4160を有する。グループ情報取得部4160は、グループ情報を取得する。グループ情報は、グループごとに、そのグループに所属するノード30を示す情報である。
【0071】
スイッチ4000は、障害情報取得部4040を有する。障害情報取得部4040は、障害情報を取得する。障害情報は、スイッチ4000と通信回線を介して接続されているノード30のうち、スイッチ4000と通信ができなくなったノード30を特定する情報である。以下、実施形態1の場合と同様に、障害情報で特定されるノードを障害ノードと呼ぶ。
【0072】
スイッチ4000は、スイッチ情報取得部4060を有する。スイッチ情報取得部4060は、スイッチ情報を取得する。スイッチ情報は、スイッチ4000と共に仮想スイッチ5000を構成する他のスイッチ4000それぞれについて、通信可能であるノード30を示す情報である。
【0073】
スイッチ4000は、振り分け更新情報生成部4080を有する。振り分け更新情報生成部4080は、振り分け更新情報を生成する。本実施形態における振り分け更新情報は、振り分け情報が示すグループについて、そのグループIDが付与されたパケットの中継を行うスイッチ4000を変更するための情報である。振り分け更新情報生成部4080は、障害情報取得部4040が取得する障害情報、振り分け情報格納部4020に格納されている振り分け情報、及びグループ情報取得部4160が取得するグループ情報を参照し、障害ノードが、上記振り分け情報で示されているグループに所属しているか否かを判定する。
【0074】
障害ノードが、上記振り分け情報で示されているグループに所属している場合、振り分け更新情報生成部4080は、次のように動作して振り分け更新情報を生成する。まず、振り分け更新情報生成部4080は、上記振り分け情報の中から、障害ノードが所属しているグループのグループIDを抽出する。そして、振り分け更新情報生成部4080は、当該スイッチ4000が、抽出したグループIDが付与されたパケットを中継しないことを示すように、抽出したグループIDに関する振り分け情報を更新する。振り分け更新情報生成部4080は、スイッチ情報取得部4060からスイッチ情報を取得する。振り分け更新情報生成部4080は、スイッチ情報に基づき、仮想スイッチ5000を構成する他のスイッチ4000の中から、抽出したグループIDで特定されるグループに所属している全てのノード30と、別のスイッチ4000を介さずに通信可能であるスイッチ4000を選択する。そして、振り分け更新情報生成部4080は、「抽出したグループID、選択したスイッチ4000」の組み合わせを示す振り分け更新情報を生成する。
【0075】
障害ノードが複数のグループに所属している場合は、そのグループごとに、振り分け更新情報を生成する。つまり、障害ノードが所属しているグループごとに、そのグループのグループIDが付与されたパケットを中継するスイッチ4000を新たに選択する。
【0076】
スイッチ4000は、振り分け更新情報送信部4120を有する。振り分け更新情報送信部4120は、振り分け更新情報が示すスイッチ4000へ、その振り分け更新情報が示すグループIDを送信する。
【0077】
スイッチ4000は、振り分け更新情報受信部4130を有する。振り分け更新情報受信部4130は、別のスイッチ4000が送信したグループIDを取得する。
【0078】
スイッチ4000は、振り分け情報更新部4140を有する。振り分け更新情報受信部4130が受信したグループIDを取得する。そして、当該スイッチ4000が、取得したグループIDが付与されたパケットを中継するように、振り分け情報を更新する。
【0079】
スイッチ4000は、スイッチ指定部4100を有する。スイッチ指定部4100は、振り分け更新情報受信部4130が受信したグループIDを取得する。そして、取得したグループIDで特定されるグループに所属しているノード30に対し、取得したグループIDが付与されたパケットを、当該スイッチ4000へ送信するように指示する。
【0080】
以上のように、本実施形態のスイッチ4000は、自身との間でパケットをやりとりしているノード30と通信ができなくなった場合に、上記ノード30が所属するグループのグループIDが付与されたパケットを中継するスイッチ4000を変更する。その際、新たに中継を行うスイッチ4000として、上記ノード30が所属するグループに所属している全てのノード30と、別のスイッチ4000を介さずに通信可能であるスイッチ4000を選択する。こうすることで、スイッチ4000とスイッチ4000との間で、上記グループIDが付与されたパケットの転送が行われないようにする。その結果、スイッチ4000とスイッチ4000を接続する制御インタフェース4300で輻輳が発生することを防ぐことができる。
【0081】
また、本実施形態のスイッチ4000は、パケットを中継するスイッチ4000をグループごとに決定することができる。これにより、パケットの中継にかかる通信負荷を、仮想スイッチ5000を構成する複数のスイッチ4000の間で分散することができる。
【0083】
<構成詳細>
仮想スイッチ5000を構成する複数のスイッチ4000は、制御インタフェース4300により、互いに通信可能に接続されている。スイッチ4000の振り分け更新情報送信部4120は、制御インタフェース4300を介して、別のスイッチ4000の振り分け情報更新部4140へ振り分け更新情報を送信する。
【0084】
スイッチ4000は、ノード30との間でパケットの送受信を行うパケット送受信部4200を有する。
【0085】
本実施形態におけるグループは、例えばVLAN(Virtual Local Area Network)のグループである。同じグループに属するノード30は、同じVLANに属する。この場合、グループIDは、VLANのIDである。また、グループは、複数のVLANをまとめたものであってもよい。
【0086】
<振り分け情報格納部4020の詳細>
振り分け情報格納部4020が有する振り分け情報は、例えば
図7に示すように、振り分け情報リスト500を有する。振り分け情報リスト500は例えば、グループIDのリストである。スイッチ4000は、振り分け情報リスト500に示される各グループIDで特定されるグループに所属しているノード30との間で、そのグループのグループIDが付与されているパケットをやりとりする。
【0087】
振り分け情報は、全てのグループIDそれぞれについて、各グループIDが付与されたパケットを中継するスイッチ4000を示す情報であってもよい。
【0088】
<障害情報取得部4040の詳細>
障害情報取得部4040が障害情報を取得する方法は、実施形態1における障害情報取得部2040が障害情報を取得する方法と同様である。
【0089】
<スイッチ情報取得部4060の詳細>
スイッチ情報取得部4060が取得するスイッチ情報は、例えば実施形態1におけるスイッチ情報と同様である(
図3参照)。
【0090】
<振り分け更新情報生成部4080の詳細>
振り分け更新情報生成部4080は、振り分け情報の中から、障害ノードが所属するグループのグループIDを抽出する。そして、振り分け更新情報生成部4080は、当該スイッチ2000が、抽出したグループIDが付与されたパケットの中継を行わないことを示すように、振り分け情報を更新する。例えば、振り分け情報が、振り分け情報リスト500のように、当該スイッチ4000がパケットの中継を行うグループのグループIDを示しているとする。この場合、振り分け更新情報生成部4080は、抽出したグループIDを、振り分け情報から削除する。
【0091】
振り分け情報が、各グループIDについて、そのグループIDが付与されたパケットの中継を行うスイッチ4000を対応付けているとする。この場合、振り分け更新情報生成部4080は、抽出したグループIDに対応付けられているスイッチ4000が無いことを示すように、振り分け情報を更新する。例えば、振り分け更新情報生成部4080は、抽出したグループIDに対応付けられているスイッチ4000を示すIDとして、空文字などを設定する。
【0092】
振り分け更新情報生成部4080が生成する振り分け更新情報は、例えば
図8に示す振り分け更新情報600で表される。振り分け更新情報600は、例えばグループID602及びスイッチID604を有する。振り分け更新情報600の各レコードは、グループID602が付与されたパケットを中継するスイッチ4000を、スイッチID604で特定されるスイッチ4000に更新することを示す。
【0093】
<グループ情報取得部4160の詳細>
グループ情報取得部4160が取得するグループ情報は、例えば
図9に示すグループ情報テーブル700で表される。グループ情報テーブル700は、グループID702及びノードID704を有する。グループ情報テーブル700のレコードは、グループID702で特定されるグループに、ノードID704で特定されるノード30が所属していることを表す。言い換えると、ノードID704で特定されるノード30は、グループID702が示すグループIDが付与されたパケットの送信又は受信を行うことを表す。
【0094】
<振り分け更新情報送信部4120及び振り分け更新情報受信部4130の詳細>
振り分け更新情報送信部4120は、制御インタフェース4300を介し、振り分け更新情報が示すスイッチ4000の振り分け更新情報受信部4130へ、振り分け更新情報が示すグループIDを送信する。振り分け更新情報受信部4130は、制御インタフェース4300を介して、別のスイッチ4000の振り分け更新情報送信部4120から、グループIDを受信する。ここで、振り分け更新情報送信部4120は、振り分け更新情報受信部4130に対して、振り分け更新情報を送信してもよい。
【0095】
<振り分け情報更新部4140の詳細>
振り分け情報更新部4140は、振り分け更新情報受信部4130から、グループIDを取得する。そして、振り分け情報更新部4140は、当該スイッチ4000が、取得したグループIDが付与されたパケットの中継を行うことを示すように、振り分け情報を更新する。例えば、振り分け情報が、振り分け情報リスト500のように、当該スイッチ4000が、どのグループIDが付与されたパケットを中継するかを示しているとする。この場合、振り分け情報更新部4140は、取得したグループIDを、振り分け情報に登録する。
【0096】
振り分け情報が、各グループIDについて、そのグループIDが付与されたパケットの中継を行うスイッチ4000を対応付けているとする。この場合、振り分け情報更新部4140は、取得したグループIDに当該スイッチ4000を対応付けるように、振り分け情報を更新する。
【0097】
<動作の流れ>
図10は、スイッチ4000が、あるノード30との間で通信ができなくなった際に振り分け情報を更新する処理の流れの一例を示すフローチャートである。
【0098】
ステップS202において、障害情報取得部4040は、障害情報を取得する。
【0099】
ステップS204において、グループ情報取得部4160は、グループ情報テーブル700を取得する。
【0100】
ステップS206において、振り分け更新情報生成部4080は、上記障害情報で特定される障害ノードのIDをキーとして、グループ情報取得部4160が取得したグループ情報テーブル700を検索する。具体的には、グループ情報テーブル700から、ノードID704が障害ノードのIDを示すレコードを検索する。
【0101】
ステップS208〜ステップS224は、ステップS206において振り分け情報テーブル200を検索して取得した各レコードについて行うループ処理Aである。ステップS208において、検索結果の全てのレコードについて処理を行ったかを判定する。まだ処理を行っていないレコードがある場合は、その中の1つを選択する。選択したレコードをレコードiとする。そして、ステップS210に進む。全てのレコードについて処理を終えている場合は、
図10のフローチャートに示す処理を終了する。なお、障害ノードがいずれのグループにも属していない場合は、ステップS206における検索でレコードが取得されない。したがって、スイッチ2000は、一度もループ処理Aを実行せずに、
図10のフローチャートに示す処理を終了する。
【0102】
ステップS210において、振り分け更新情報生成部4080は、レコードiが示すグループのIDをキーとして、振り分け情報リスト500を検索する。以降、レコードiが示すグループを、グループgと呼ぶ。
【0103】
ステップS212において、ステップS210における検索の結果を判定する。グループgが振り分け情報リスト500に含まれている場合は、ステップS214に進む。グループgが振り分け情報リスト500に含まれていない場合は、ステップS224に進む。
【0104】
ステップS214において、スイッチ情報取得部4060は、スイッチ情報を取得する。
【0105】
ステップS216において、振り分け更新情報生成部4080は、振り分け情報を更新する。具体的には、振り分け更新情報生成部4080は、振り分け情報リスト500からグループgを削除する。
【0106】
ステップS218において、振り分け更新情報生成部4080は、スイッチ情報取得部4060が取得したスイッチ情報に基づいて、グループgについて、振り分け更新情報600を生成する。
【0107】
ステップS222において、振り分け更新情報送信部4120は、上記振り分け更新情報600が示すグループIDを、上記振り分け更新情報が示すスイッチ4000へ送信する。以下、上記振り分け更新情報が示すスイッチ4000を、変更先スイッチ4000と表記する。
【0108】
変更先スイッチ4000が有する振り分け更新情報受信部4130は、上記グループIDを受信する。そして、変更先スイッチ4000が有するスイッチ指定部4100は、振り分け更新情報受信部4130が受信したグループIDを取得する。そして、上記スイッチ指定部4100は、取得したグループIDで特定されるグループに属しているノード30に対し、取得したグループIDが付与されたパケットを送信する場合は、変更先スイッチ4000へ送信するように指示する。
【0109】
さらに、変更先スイッチ4000の振り分け情報更新部4140は、振り分け更新情報受信部4130がグループIDを、変更先スイッチ4000の振り分け情報格納部4020に格納されている振り分け情報リスト500へ登録する。
【0110】
ステップS224は、ステップS208から始まるループ処理Aの終端である。したがって、ステップS208に戻る。
【0111】
スイッチ4000が、ノード30と通信ができなくなった際に振り分け情報を更新する処理の流れは、上記に限定されない。例えば振り分け更新情報送信部4120は、ステップS222で行う振り分け更新情報600の送信を、全てのレコードiについて振り分け更新情報600を生成した後で行ってもよい。この場合、例えば振り分け更新情報送信部4120は、同じスイッチ4000を示す振り分け更新情報600を、そのスイッチ4000に対してまとめて送信する。これにより、スイッチ4000の間を接続する制御用ポートにかかる通信負荷を低減することができる。
【0112】
<作用・効果>
以上の構成により、本実施形態によれば、スイッチ4000は、自身との間でパケットをやりとりしているノード30と通信ができなくなった場合に、上記ノード30が所属するグループのグループIDが付与されたパケットを中継するスイッチ4000を変更する。その際、新たに中継を行うスイッチ4000として、上記ノード30が所属するグループに所属している全てのノード30と、別のスイッチ4000を介さずに通信可能であるスイッチ4000を選択する。こうすることで、スイッチ4000とスイッチ4000との間で、上記グループIDが付与されたパケットの転送が行われないようにする。その結果、スイッチ4000とスイッチ4000を接続する制御インタフェース4300で輻輳が発生することを防ぐことができる。
【0113】
また、本実施形態のスイッチ4000は、パケットを中継するスイッチ4000をグループごとに決定することができる。これにより、パケットの中継にかかる通信負荷を、仮想スイッチ5000を構成する複数のスイッチ4000の間で分散することができる。
【0114】
以上、図面を参照して本発明の実施形態及び実施例について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。