JP6268943B2 - 情報処理システム,スイッチ装置及び情報処理システムの制御方法 - Google Patents

情報処理システム,スイッチ装置及び情報処理システムの制御方法 Download PDF

Info

Publication number
JP6268943B2
JP6268943B2 JP2013230394A JP2013230394A JP6268943B2 JP 6268943 B2 JP6268943 B2 JP 6268943B2 JP 2013230394 A JP2013230394 A JP 2013230394A JP 2013230394 A JP2013230394 A JP 2013230394A JP 6268943 B2 JP6268943 B2 JP 6268943B2
Authority
JP
Japan
Prior art keywords
switch
switch device
failure
fdb
control unit
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.)
Active
Application number
JP2013230394A
Other languages
English (en)
Other versions
JP2015091035A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013230394A priority Critical patent/JP6268943B2/ja
Priority to US14/530,946 priority patent/US9960955B2/en
Publication of JP2015091035A publication Critical patent/JP2015091035A/ja
Application granted granted Critical
Publication of JP6268943B2 publication Critical patent/JP6268943B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty 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/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. 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/12Discovery or management of network topologies

Landscapes

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

Description

本発明は、情報処理システム,スイッチ装置及び情報処理システムの制御方法に関する。
集中管理コントローラにより、マルチレイヤフロー制御を行なう統一的な管理機構としてOpenFlowがある。OpenFlowでは、パケット・フィールドとフローを定義したルールとをワイルドカードで参照し、フローを識別することにより、フローレベルの制御が可能となる。
このようなOpenFlowを用いた情報処理システムの運用においては、リンク障害発生時にパケットの伝送経路を高速に切り替えることにより、システムを冗長化させることが求められる。
そこで、リンク障害の発生を検知したスイッチがコントローラにそのリンク障害を通知し、他のスイッチが、コントローラに問い合わせることによって、発生したリンク障害に関する情報を受信する技術が知られている。
また、例えば、リンク障害発生時の対応として、以下の技術も知られている。
障害が発生したリンクの上位ノードのスイッチ及び下位ノードのスイッチは、その障害を検知する。上位ノードのスイッチ及び下位ノードのスイッチは、正常ポート数情報を更新する。上位のノードのスイッチは、隣接する他の下位ノードのスイッチに更新した正常ポート数情報を送信する。障害を検知した下位ノードのスイッチは、更新した正常ポート数に基づいて、パケット転送テーブルを更新する。
特表2004−522383号公報 特開2006−313949号公報 特開2007−208369号公報
しかしながら、上述した技術においては、障害発生時における高速なパス切り替えができないという課題がある。また、リンクの状態を考慮してパスの切り替えを行なうことができないという課題もある。
1つの側面では、本発明は、障害発生時における通信経路の切り替えを効率的に行なうことを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
このため、この情報処理システムは、根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、前記スイッチ装置は、当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、を備える。
開示の情報処理システムによれば、障害発生時における通信経路の切り替えを効率的に行なうことができる。
実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。 実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。 実施形態の一例としてのネットワークシステムが用いるOpenFlowを説明する図である。 実施形態の一例としてのネットワークシステムが用いるOpenFlowのフロー定義を示す図である。 実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。 実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。 (a)は実施形態の一例としてのネットワークシステムが用いるACLベースのフロー定義のRuleフィールドを示す図であり、(b)はそのActionフィールドを示す図である。 (a)は実施形態の一例としてのネットワークシステムが用いるFDBベースのフロー定義のRuleフィールドを示す図であり、(b)はそのActionフィールドを示す図である。 (a)〜(d)は、実施形態の一例としてのネットワークシステムにおけるACLベースのフロー制御のマッチングを例示する図である。 実施形態の一例としてのネットワークシステムが用いるVXLANを説明する図である。 (a)は実施形態の一例としてのネットワークシステムが用いるVXLANパケットの概略を示す図であり、(b)はその詳細を示す図である。 従来例としてのネットワークシステムが用いるVXLANのトラフィック特性を説明する図である。 実施形態の一例としてのネットワークシステムにおけるマルチパスの分散を説明する図である。 実施形態の一例としてのネットワークシステムのBack to Back構成におけるフロー制御を説明する図である。 実施形態の一例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。 (a)〜(c)は、実施形態の一例としてのネットワークシステムにおけるハッシュ計算を説明する図である。 実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第1の例を説明する図である。 実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第2の例を説明する図である。 実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の詳細を例示する図である。 実施形態の一例としてのネットワークシステムにおける障害IDテーブルを例示する図である。 (a)は実施形態の一例としてのネットワークシステムにおける制御メッセージを示す図であり、(b)はそのRPCパラメタの詳細を例示する図である。 実施形態の一例としてのネットワークシステムが備えるコントローラにおけるフローリストの設定処理を示すフローチャートである。 実施形態の一例としてのネットワークシステムにおけるフローリストの作成処理に用いるアルゴリズムを例示する図である。 実施形態の一例としてのネットワークシステムが備えるスイッチにおけるフローリストの設定処理を示すフローチャートである。 実施形態の一例としてのネットワークシステムが備えるスイッチにおけるACLテーブルの設定処理を示すフローチャートである。 実施形態の一例としてのネットワークシステムが備えるスイッチにおけるFDBテーブルの設定処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のリンク障害発生通知の送信処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のパス切り替え情報記録処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるリンク障害通知受信時のパス切り替え処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるアップリンク障害発生時のパス切り替え処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるダウンリンク障害復旧時のリンク障害復旧通知の送信処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるリンク障害復旧通知受信時のパスを切り替え前の状態に戻す処理を示すフローチャートである。 実施形態の一例としてのスイッチにおけるアップリンク障害復旧時のパスを切り替え前の状態に戻す処理を示すフローチャートである。 (a)は実施形態の一例としてのネットワークシステムが用いるOpenFlowテーブルを模式的に示す図であり、(b)はそのコモディティスイッチを模式的に示す図である。 実施形態の一例としてのネットワークシステムのBack to Back構成を例示する図である。 実施形態の一例としてのネットワークシステムのFat Tree構成を例示する図である。 従来のネットワークシステムと本実施形態の一例におけるネットワークシステムとにおける使用エントリ数を示す図である。 実施形態の第1変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。 実施形態の第2変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。 従来のネットワークシステムと本実施形態の第1変形例及び第2変形例におけるネットワークシステムとにおける使用エントリ数を示す図である。 (a)は実施形態の第3変形例としてのスイッチにおけるACLテーブルの書き換え前の状態を例示する図であり、(b)はその書き換え後の状態を例示する図である。
以下、図面を参照して情報処理システム,スイッチ装置及び情報処理システムの制御方法に係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕実施形態の一例
〔A−1〕システム構成
図1は、実施形態の一例としてのネットワークシステムの機能構成を模式的に示す図である。
本実施形態の一例としてのネットワークシステム(情報処理システム)1は、図1に示すようにスイッチ(スイッチ装置)10−1,10−2、コントローラ(ネットワーク制御装置)20及びサーバ装置(送受信装置,情報処理装置)30−1〜30−4を備える。各サーバ装置30−1〜30−4は、1つ又は2つのスイッチ10−1,10−2を介して、他のサーバ装置30−1〜30−4と互いに通信可能に接続されている。例えば、サーバ装置30−1は、スイッチ10−1を介してサーバ装置30−2と互いに通信可能に接続されている。また、サーバ装置30−1は、スイッチ10−1,10−2を介してサーバ装置30−3と互いに通信可能に接続されている。
以下、スイッチを示す符号としては、複数のスイッチのうち1つを特定する必要があるときには符号10−1,10−2を用いるが、任意のスイッチを指すときには符号10を用いる。また、以下、サーバ装置を示す符号としては、複数のサーバ装置のうち1つを特定する必要があるときには符号30−1〜30−4を用いるが、任意のサーバ装置を指すときには符号30を用いる。
サーバ装置30は、例えば、サーバ機能を備えたコンピュータである。図1に示す例では、ネットワークシステム1が4つのサーバ装置30−1〜30−4を備えているが、3つ以下又は5つ以上のサーバ装置30を備えることとしても良い。
コントローラ20は、複数のスイッチ10を制御し、各スイッチ10に対してフロー制御を行なうための設定を行なう。コントローラ20は、図1に示すようにCentral Processing Unit(CPU)21,メモリ22及び記憶装置23を備える。
記憶装置23は、データを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD)である。本実施形態の一例においては、記憶装置23は、例えば、フローリスト100(設定データ;図3等を用いて後述)を格納する。
メモリ22は、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ22のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれている。メモリ22上のソフトウェアプログラムは、CPU21に適宜読み込まれて実行される。また、メモリ22のRAMは、一次記録メモリあるいはワーキングメモリとして利用される。
CPU21は、種々の制御や演算を行なう処理装置であり、メモリ22に格納されたOSやプログラムを実行することにより、種々の機能を実現する。すなわち、CPU21は、図1に示すように、送信部211として機能する。
なお、この送信部211としての機能を実現するためのプログラム(制御プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
送信部211としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ22)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU21)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
送信部211は、複数のスイッチ10に対して、複数のパケット伝送制御手法に従った、パケット伝送のためのルール情報を送信する。具体的には、送信部211は、記憶装置23に格納されているフローリスト100を読み出し、読み出したフローリスト100に含まれるルール情報を対象のスイッチ10へ送信する。また、送信部211は、各スイッチ10に対して、自律的にリンクの障害状態を考慮してパス切り替えを行なうようにACLテーブル220(図19を用いて後述)を設定する。
図2は、実施形態の一例としてのネットワークシステムが備えるスイッチの機能構成を模式的に示す図である。
スイッチ10は、各サーバ装置30間で送受信されるパケットを伝送する。スイッチ10は、図2に示すようにCPU11,スイッチングモジュール12,受信ポート14−1〜14−N(以下、Nは1以上の整数),送信ポート15−1〜15−N及び管理用ポート16を備える。
以下、受信ポートを示す符号としては、複数の受信ポートのうち1つを特定する必要があるときには符号14−1〜14−Nを用いるが、任意の受信ポートを指すときには符号14を用いる。また、以下、送信ポートを示す符号としては、複数の送信ポートのうち1つを特定する必要があるときには符号15−1〜15−Nを用いるが、任意の送信ポートを指すときには符号15を用いる。
受信ポート14は、他の装置から送信されたパケットを受信するためのインタフェースである。具体的には、受信ポート14は、他のスイッチ10又はサーバ装置30と通信可能に接続され、他のスイッチ10又はサーバ装置30から送信されたパケットを受信する。例えば、図1に示したスイッチ10−1が備える受信ポート14は、スイッチ10−2及びサーバ装置30−1,30−2と通信可能に接続されている。
送信ポート15は、他の装置へパケットを送信するためのインタフェースである。具体的には、送信ポート15は、他のスイッチ10又はサーバ装置30と通信可能に接続され、他のスイッチ10又はサーバ装置30へパケットを送信する。例えば、図1に示したスイッチ10−1が備える送信ポート1は、スイッチ10−2及びサーバ装置30−1,30−2と通信可能に接続されている。
管理用ポート16は、コントローラ20と通信可能に接続され、コントローラ20から送信されたデータを受信し、又、コントローラ20へのデータを送信するインタフェースである。本実施形態の一例においては、管理用ポート16は、コントローラ20の送信部211から送信されたフローリスト100を受信する。また、管理用ポート16は、受信したフローリスト100に基づいて行なったスイッチ10の設定結果をコントローラ20へ送信する。
CPU11は、種々の制御や演算を行なう処理装置であり、図示しないメモリ又はスイッチングモジュール12が備える後述するメモリ130に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。すなわち、CPU11は、図2に示すように、設定部110(ACL設定部111及びFDB設定部112)及び切り替え制御部115(リンク状態監視制御部116及びスイッチ連携部117)として機能する。
なお、この設定部110(ACL設定部111及びFDB設定部112)及び切り替え制御部115(リンク状態監視制御部116及びスイッチ連携部117)としての機能を実現するためのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
設定部110(ACL設定部111及びFDB設定部112)及び切り替え制御部115(リンク状態監視制御部116及びスイッチ連携部117)としての機能を実現する際には、内部記憶装置(本実施形態では図示しないメモリ又はスイッチングモジュール12が備える後述するメモリ130)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU11)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
設定部110は、図2に示すようにACL設定部111及びFDB設定部112として機能する。
ACL設定部111は、Access Control List(ACL)に従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、ACL設定部111は、コントローラ20の送信部211から受信したフローリスト100に基づき、複数のパケット伝送制御手法のうち、ACLに従ったパケットの伝送を制御するACLテーブル(第1のルール情報;図14及び図19等を用いて後述)200,220を登録する。
FDB設定部112は、Forwarding Database(FDB)に従ったフロー制御に関するフローテーブルの設定を行なう。具体的には、FDB設定部112は、コントローラ20の送信部211から受信したフローリスト100に基づき、複数のパケット伝送制御手法のうち、ACLとは異なるFDBに従ったパケットの伝送を制御するためのFDBテーブル(第2のルール情報;図14等を用いて後述)300を登録する。
切り替え制御部115は、図2に示すようにリンク状態監視制御部(制御部)116及びスイッチ連携部(通知部)117として機能する。
リンク状態監視制御部116は、当該スイッチ10に接続されたリンクで発生した障害を検知する。リンク状態監視制御部116は、当該スイッチ10のアップリンク(根ノード)側の通信経路上で障害を検知した場合にACLテーブル220(図19を用いて後述)を書き換えることで、複数の通信経路の切り替えを行なう。リンク状態監視制御部116は、当該スイッチ10に接続されている他のスイッチ10からのリンク障害発生通知に基づき、ACLテーブル220を書き換えることで、複数の通信経路の切り替えを行なう。
また、リンク状態監視制御部116は、通信経路(パス)の切り替えを行なった旨をコントローラ20に通知する。
更に、リンク状態監視制御部116は、当該スイッチ10に接続されたリンクで発生した障害の復旧を検知する。リンク状態監視制御部116は、当該スイッチ10のアップリンク(根ノード)側で障害復旧を検知した場合にACLテーブル220(図19を用いて後述)を書き換えることで、通信経路を切り替え前の状態に戻す。リンク状態監視制御部116は、当該スイッチ10に接続されている他のスイッチ10からのリンク障害復旧通知に基づき、ACLテーブル220を書き換えることで、通信経路を切り替え前の状態に戻す。
スイッチ連携部117は、リンク状態監視制御部116が検知したリンク障害に基づき、他のスイッチ10にリンク障害発生を通知する。具体的には、スイッチ連携部117は、当該スイッチ10のダウンリンク(葉ノード)側の通信経路上で障害を検知した場合に、当該スイッチ10に接続されている他のスイッチ10に、リンク障害発生通知(リンク障害ID;図19を用いて後述)を送信する。また、スイッチ連携部117は、当該スイッチ10に接続されている他のスイッチ10からのリンク障害発生通知(リンク障害ID)を受信する。そして、スイッチ連携部117は、当該スイッチ10のアップリンク(根ノード)側に使用可能な通信経路が無い場合に、当該スイッチ10に接続されている他のスイッチ10にリンク障害発生通知(リンク障害ID)を転送する。なお、使用可能な通信経路が無い場合とは、物理的に通信経路が接続されていても、パケットの伝送ができない状態である。
また、リンク障害発生通知を受信したスイッチ10のスイッチ連携部117は、リンク障害発生通知を送信したスイッチ10に対して、パス切り替えに関する情報をパス切り替え応答として送信する。リンク障害発生通知を送信したスイッチ10のスイッチ連携部117は、リンク障害発生通知を受信したスイッチ10から、パス切り替えに関する情報をパス切り替え応答として受信する。そして、パス切り替え応答を受信したスイッチ連携部117は、パス切り替え応答に含まれる情報をパス切り替え情報として、例えばメモリ130に格納する。
更に、スイッチ連携部117は、リンク状態監視制御部116が検知したリンク障害復旧に基づき、他のスイッチ10にリンク障害復旧を通知する。具体的には、スイッチ連携部117は、当該スイッチ10のダウンリンク(葉ノード)側で障害復旧を検知した場合に、パス切り替え情報に基づいて特定したスイッチ10に、リンク障害復旧通知(リンク障害ID=0;図19を用いて後述)を送信する。また、スイッチ連携部117は、他のスイッチ10からのリンク障害復旧通知(リンク障害ID=0)を受信する。
スイッチングモジュール12は、図示しないスイッチング回路(例えば、クロスバースイッチ)を有し、入力されたパケット毎にその経路を自在に変更するものである。スイッチングモジュール12は、図2に示すようにTernary Content Addressable Memory(TCAM)120及びメモリ130を備え、又、ACL制御部122及びFDB制御部132として機能する。
TCAM120は、キーで検索しデータにアクセスする通常のCAM(連想メモリ)に、マスク値を記憶する領域を付加した記憶装置である。TCAM120は、図2に示すようにACL記憶部(第1の記憶部)121として機能する。
ACL記憶部121は、ACLテーブル200,220を格納する。すなわち、CPU11のACL設定部111は、ACLテーブル200,220をACL記憶部121に格納する。
ACL制御部122は、ACLに従ったフロー制御を行なう。具体的には、ACL制御部122は、ACL記憶部121に格納されているACLテーブル200,220に従ってパケット伝送の制御を行なう。
メモリ130は、ROM及びRAMを含む記憶装置である。メモリ130は、図2に示すようにFDB記憶部(第2の記憶部)131として機能する。
FDB記憶部131は、FDBテーブル300を格納する。すなわち、CPU11のFDB設定部112は、FDBテーブル300をFDB記憶部131に格納する。
FDB制御部132は、FDBに従ったフロー制御を行なう。具体的には、FDB制御部132は、FDB記憶部131に格納されているFDBテーブル300に従ってパケット伝送の制御を行なう。
本実施形態の一例におけるスイッチ10においては、ACL設定部111,TCAM120及びACL制御部122が第1のパケット伝送制御部として機能し、FDB設定部112,メモリ130及びFDB制御部132が第2のパケット伝送制御部として機能する。
図3は、実施形態の一例としてのネットワークシステムが用いるOpenFlowを説明する図である。
本実施形態の一例におけるネットワークシステム1は、OpenFlowを用いてネットワーク制御を行なう。図3に例示するネットワークシステム1は、3つのスイッチ10,コントローラ20及び2つのサーバ装置30を備える。
各サーバ装置30は、3つのスイッチ10を介して他のサーバ装置30にパケットを伝送する(図3中の実線両矢印参照)。
コントローラ20は、各スイッチ10の管理を行なう。例えば、コントローラ20は、各スイッチ10間のパケット伝送に先立って、各スイッチ10に対してRule,Action及びStatisticsの各フィールドが互いに関連付けられたフローリスト100を設定する。
本ネットワークシステム1は、コントローラ20によるフローリスト100の設定により、マルチレイヤフロー(例えば、レイヤ2(L2),レイヤ3(L3)及びレイヤ4(L4))の制御を行なうことができ、統一的なフロー管理を実現できる。
図4は、実施形態の一例としてのネットワークシステムが用いるOpenFlowのフロー定義を示す図である。
本ネットワークシステム1が用いるOpenFlowのフロー定義は、Ruleフィールドに図示するような12Tuple(タプル)のフィールドを含む。スイッチ10は、Ruleフィールドに含まれる各フィールドの情報によって受信したパケットを識別する。
Actionフィールドには図示するようにForward packet to port(s)の情報が含まれる。スイッチ10は、Actionフィールドに基づいて、Ruleフィールドにマッチしたパケットの処理(送信ポート15の番号指定)を行なう。
Statisticsフィールドには図示するようにPacket及びbyte countersの情報が含まれる。
図5は、実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
本実施形態の一例におけるネットワークシステム1は、図5に示すように、パケットの伝送経路を領域〔1〕(第1のパケット伝送制御領域)及び領域〔2〕(第2のパケット伝送制御領域)の2つの領域に分けてパケットの伝送を行なう。具体的には、本ネットワークシステム1は、領域〔1〕においてACLに従ったフロー制御を行ない、又、領域〔2〕においてFDBに従ったフロー制御を行なう。言い換えれば、本ネットワークシステム1は、第1のパケット伝送制御部に従う第1のパケット伝送制御領域と、第2のパケット伝送制御部に従う第2のパケット伝送制御領域とを含む。また、領域〔1〕と領域〔2〕とは、図5に示すように折り返し点Aで区切られている。
領域〔1〕は、スイッチ10のサーバ装置30側ポートに宛先が存在せず、サーバ装置30から折り返し点Aに向けたパケット伝送において、上流に向けて複数の経路が存在する領域である。言い換えれば、領域〔1〕は、送信元のサーバ装置30から送信先のサーバ装置30までのパケット伝送経路のうち、送信先のサーバ装置30への経路が一意に決まる折り返し点Aまでの領域である。
領域〔2〕は、スイッチ10のサーバ装置30側ポートに宛先が存在し、折り返し点Aからサーバ装置30へ向けたパケット伝送において、一意に経路が決定される領域である。言い換えれば、領域〔2〕は、送信元のサーバ装置30から送信先のサーバ装置30までのパケット伝送経路のうち、折り返し点A以降の領域である。
図6は、実施形態の一例としてのネットワークシステムにおけるフロー制御を説明する図である。
図6に例示するネットワークシステム1は、4つのスイッチ10(SW#1〜#4),4つのサーバ装置30(Svr#1〜#4)及び図示しないコントローラ20を備える。
以下、図6を参照しながら説明する際には、特定のスイッチ10を指す場合には「SW#1」,「SW#2」,「SW#3」又は「SW#4」と表記する。また、以下、図6を参照しながら説明する際には、特定のサーバ装置30を指す場合には「Svr#1」,「Svr#2」,「Svr#3」又は「Svr#4」と表記する。
図6に示す例おいては、Svr#1がパケットを送信する送信元装置であり、Svr#4がパケットを受信する送信先装置である。また、図6に示す例おいては、Svr#1が送信したパケットは、SW#1,SW#3及びSW#2を介してSvr#4へ送信されている(図6中の破線矢印参照)。
図6に示す例においては、Svr#1からSvr#4へパケットを送信する経路は2つ存在する。すなわち、Svr#1からSvr#4へ伝送されるパケットの経路は、図中の破線矢印で示すSW#3を経由する経路の他に、SW#4を経由する経路が存在する。また、SW#3からSvr#4への経路は一意に決まり、SW#4からSvr#4への経路も一意に決まる。
このように、送信元装置からの伝送経路において、送信先装置への経路が一意に決定可能となる最初のスイッチ10が、本実施形態の一例における折り返し点Aとして定義される(図6に示す例においてはSW#3)。
そして、各スイッチ10は、送信元装置から折り返し点Aまでの領域〔1〕においてはACLに従ったフロー制御を行ない、折り返し点Aから送信先装置までの領域〔2〕においてはFDBに従ったフロー制御を行なう。図6に示す例においては、SW#1のACL制御部122はACLに従ったフロー制御を行ない、SW#3及びSW#2のFDB制御部132はFDBに従ったフロー制御を行なう。
言い換えれば、ACL制御部122は、送信元装置から送信先装置までのパケット伝送経路のうち、送信先装置への経路が一意に決まらない折り返し点Aまでの領域〔1〕においては、ACLに従ってパケットを伝送する。また、FDB制御部132は、送信元装置から送信先装置までのパケット伝送経路のうち、折り返し点A以降の領域〔2〕においては、FDBに従ってパケットを伝送する。
図6に図示されないコントローラ20は、送信元装置から送信先装置までのパケット伝送経路のうち、折り返し点AまでをACLに従って経路選択的に、折り返し点Aから送信先装置までをFDBに従って経路決定的に、パケットを伝送できるよう各スイッチ10のフローテーブルを構成する。
図7(a)は実施形態の一例としてのネットワークシステムが用いるACLベースのフロー定義のRuleフィールドを示す図であり、図7(b)はそのActionフィールドを示す図である。
本実施形態の一例におけるネットワークシステム1は、領域〔1〕におけるACLベースのフロー制御を、ワイルドカードのマッチングによるWildcard Matching Table(WMT)主導で行なう(詳細は図9を用いて後述)。
WMTの構築は、コントローラ20がスイッチ10に対して原則Proactiveに行なう(事前設定)。例えば、コントローラ20の送信部211は、ネットワークシステム1の起動時やトポロジ情報が変更された際に事前設定を行なう。また、トポロジ情報の変更は、動的に検出しても良く、又、オペレータの操作によって検出しても良い。
フローの識別方法はネットワークの使用形態に依存する。例えば、Virtual eXtensible Local Area Network(VXLAN)やStateless Transport Tunneling(STT)等のオーバーレイネットワークでは、図7(a)に示すRuleフィールドのL4 sportに注目してフローを識別する。また、テナント分離(マルチテナント)ではInternet Protocol(IP)アドレス、End-Host Mode(EHM)ではVirtual Local Area Network(VLAN)、 Multi-Protocol Label Switching(MPLS)ではMPLSラベル等にそれぞれ注目してフローを識別する。
本実施形態の一例におけるネットワークシステム1は、注目するフィールドをネットワーク使用形態毎に選択し、注目するフィールドの値に基づいて折り返し点Aに向けた経路を決定する。例えば、オーバーレイネットワークにおいては、図7(b)のActionフィールドに示すように、L4 TCP/UDP src portに基づいてパケットを伝送するポート(パス)を選択する。
また、本実施形態の一例におけるネットワークシステム1は、図9を用いて後述するように、パスの数に応じたマスク値を注目するフィールドに適用することによって、ACLの消費エントリ数を削減することができる。
図8(a)は実施形態の一例としてのネットワークシステムが用いるFDBベースのフロー定義のRuleフィールドを示す図であり、図8(b)はそのActionフィールドを示す図である。
本実施形態の一例におけるネットワークシステム1は、領域〔2〕におけるFDBベースのフロー制御を、Exactマッチング(宛先特定)によるExact Matching Table(EMT)主導で行なう。
EMTの構築は、コントローラ20がスイッチ10に対して原則Proactiveに行なう(事前設定)。コントローラ20による事前設定のタイミングは、WMTの構築と同じタイミングに加え、サーバ装置30やサーバ装置30が展開するVirtual Machine(VM)の起動/停止/移動時等でも良い。このように、コントローラ20の設定によってEMTを構築する方式は、ネットワークシステム1におけるUnicast,Multicast及びBroadcastの全ての動作が対象になる。
なお、EMTの構築は、上述したコントローラ20の設定によってEMTを構築する方式に限定されるものではない。例えば、スイッチ10がハード学習する方式でも良く、又、コントローラ20の設定によってEMTを構築する方式とスイッチ10がハード学習する方式とを組み合わせたハイブリッド方式でも良い。なお、ハード学習する方式では、ループ回避、および、WMT主導のフォワーディングとの競合を避けるため、サーバ側から折り返し点Aに向かうパケット(折り返し点Aからサーバへ向かう経路)のみを学習するようスイッチを構成するとともに、学習パケットがサーバから送出されるよう制御する必要がある。また、ハイブリッド方式はサーバに直接接続されるスイッチのみコントローラ20から設定し、上流のスイッチを自動学習させることで、コントローラ20のEMT構築のためのアルゴリズムを簡略化できるとともに、ハード学習で必要なサーバ制御を排除することができる。
本実施形態の一例におけるネットワークシステム1は、図8(a),(b)に示すように、MAC dstやIP dstを用いて、FDB(Media Access Control(MAC)テーブル,静的IPルーティングテーブル)により、出力先を一意に決定する。すなわち、複数のスイッチのうち、第2のパケット伝送制御領域に含まれるスイッチは、入力パケットの宛先情報と、複数の第2のルール情報300のうちいずれかとが、対応するかの検索を行ない、対応する第2のルール情報300に従って入力パケットの伝送を行なう。図8(b)に示す例においては、MAC dstに基づいてExactマッチングを行なっているが、これに限定されるものではない。例えば、MAC dstとVLAN IDとの組み合わせや、IP dstとVLAN IDとの組み合わせに基づいてマッチングを行なっても良い。なお、Exactマッチングにおいては、MAC dst,IP dst及びVLAN IDに対してビットマスクは適用しない。
本実施形態の一例におけるネットワークシステム1は、入力されたパケットの宛先を決定するためのフローテーブルの検索は、WMTよりEMTの検索結果が優先されるよう構成される。つまり、EMTの検索で宛先が存在しない(DLF:Destination Lookup Failure)場合のみ、WMTの検索結果が実行される。言い換えれば、入力パケットの宛先に対応する第2のルール情報300が第2の記憶部131に格納されている場合には、第2のパケット伝送制御部は、第2のルール情報300に従って入力パケットの伝送を制御する。また、入力パケットの宛先に対応する第2のルール情報300が第2の記憶部131に格納されていない場合には、第1のパケット伝送制御部は、入力パケットに対応する第1のルール情報200に従って入力パケットの伝送を制御する。
前述の通り、EMT、および、WMTの設定は原則Proactiveに行なう(事前設定)が、EMTとWMTの両方の検索に失敗した場合に、スイッチ10がコントローラ20に問い合わせることによりReactiveに設定してもよい(事後設定)。
図9(a)〜(d)は、実施形態の一例としてのネットワークシステムにおけるACLベースのフロー制御のマッチングを例示する図である。
図9において、入力データDataのうち、Ingress Portのフィールドはスイッチ10での受信時に付加される受信ポート情報である。また、ACL制御部122における入力データとルールとのマッチングでは、Ingress Portのフィールドは、例えばポートベクタの形で指定され複数の入力ポートに対してマッチさせることができる。ポートベクタ形式のデータは、ビット番号がポート番号に対応しており、あるビットの値が0か1かで対応するポートが指定されているかを識別するものである。ポートベクタのビット幅は、スイッチ10の持つポート数に依存するため、スイッチ装置毎に異なるためここでは明示しない。
ACL制御部122は、入力パケットのヘッダ情報の所定のフィールドにマスクを適用し、マスク適用後のパケットデータに基づきテーブル検索を行い、検索結果に応じてパケットに対して出力ポートの決定・伝送など、所定の動作を実行する。
ACL制御部122は、図9(a)に示す各フィールドのデータ(data)と、図9(b)に示すビットマスク値(Bit Mask Value)とのビット論理積をとり(矢印B1参照)、図9(c)に示すマスク後データ(Data after masking)を得る(矢印B2参照)。更に、ACL制御部122は、L4 sportのマスク後データを図9(d)に示すルールとマッチングする(矢印B3参照)。
なお、図9(d)中の“*”は、Wildcardを意味する。また、Wildcardは検索時のDon’t Careを表わすものであり、TCAM120のWildcardが指定されたフィールドには適当な比較値が設定される。本実施形態の一例においては、Wildcard指定のフィールドも使用することにより、より細かいフローの識別や制御が可能となる。
ACL制御部122は、L4sportを0x0001でマスクすることにより、L4sportを0又は1にマップし、2つのルールのどちらにマッチするかを判定する。図9(a)〜(d)に示す例においては、L4sportのマスク後データが1であるため、ACL制御部122は、ルール2(Rule2)にマッチすると判定する(矢印B4参照)。
この時、ACLに登録されるルールの数はマスク値に応じて決定されるが、マスク値は折り返し点Aへ向けた上流スイッチへの経路数に応じて決定する。言い換えると、スイッチ10から折り返し点Aへ向けた経路数に応じて必要なルール数が決定する。図9では、経路が2つ存在する場合の例を示しており、マスク値が0x0001であり、ルール数が2となっている。経路数が4の場合は、マスク値が0x0003となり、ルール数が4となる。
ACL制御部122は、Ingress Portについてはマスク後データとルールとのビット論理積の結果が0以外の場合にマッチと判定する。又、Ingress Port以外のフィールドは完全一致した場合(たとえば排他的論理和の結果が0の場合)にマッチと判定する。更に、ACL制御部122は、Don’t Care以外の全てのフィールドがマッチした場合には、データとルールとがマッチしたと判定する。
そして、ACL制御部122は、ACL記憶部121のマッチしたルールに対応するエントリに格納されたアクションに従い、図示しないハードワイヤ回路により、入力パケットに対する所定の制御(指定された送信ポート15への出力や廃棄等)を行なう。
すなわち、複数のスイッチのうち、第1のパケット伝送制御領域に含まれるスイッチは、入力パケットのヘッダ情報の所定の位置に複数の第1のルール情報200の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて第1の記憶部121から選択した第1のルール情報200に従って入力パケットの制御を行なう。
図9(a)〜(d)は、ACL制御部122におけるマスク適用、および、マッチング動作の一例であり、マスク適用とマッチング検査の操作(演算)順序は、結果が同じになる限りにおいて、図示した方法に限定するものではない。
図10は、実施形態の一例としてのネットワークシステムが用いるVXLANを説明する図である。
図10に例示するネットワークシステム1は、2つのスイッチ10,2つのサーバ装置30及び図示しないコントローラ20を備える。また、ネットワークシステム1は、物理的にL2/L3 network (Routed IP network)2を形成し、又、論理的にVXLAN network3を形成する。
サーバ装置30は、図10に示すように、例えば図示しないCPU上にApplication/Operating System(APP/OS)31及びVXLAN Terminal End-Point(VTEP)32を展開する。
VXLANは、フレームをUser Datagram Protocol(UDP)でカプセル化することにより、レイヤ3ネットワーク上に論理的なレイヤ2ネットワークを構築するプロトコルである。
VXLANにおいては、VXLAN Network Identifier(VNI)という24ビットの識別
子をVXLANヘッダに持つことにより、最大で1600万のオーバーレイネットワークを定義できる。
また、VXLANにおいては、エッジのエンドポイントであるVTEP32でパケット変換を行なう。具体的には、VTEP32は、物理サーバ上(で動作するHypervisor上)で動作し、VXLANと図示しないVMとの間のパケット変換を実施する。
図10に示す例においては、APP/OS31は、VTEP32に対してオリジナルフレームを送信する(矢印C1参照)。VTEP32は、VMが送信したフレームからVNIを特定し、VXLANヘッダでカプセル化し、L2/L3 network2へ送信する(矢印C2参照)。送信先装置のVTEP32は、VNI及びオリジナルデータの宛先から宛先VMを特定し、VXLANヘッダを削除して図示しないVMへ渡す(矢印C3参照)。一方、論理的には、VM間の通信は、VXLAN network3を介して行なわれる(矢印C4参照)。
このように、VXLANにおいては、VM間の通信をカプセル化によって、VTEP32間の通信に集約する。
図11(a)は実施形態の一例としてのネットワークシステムが用いるVXLANパケットの概略を示す図であり、図11(b)はその詳細を示す図である。
図11(a)に示すように、VXLANパケットのフォーマットは、VTEP32間のUDP通信として転送するOuter Header及びOriginal Frameを含む。
また、図11(b)に示すように、Outer HeaderはOuter Ethernet(登録商標) Header,Outer IP Header,Outer UDP Header及びVXLAN Headerを含み、Original FlameはInner Ethernet(登録商標) Frameを含む。
図12は、従来例としてのネットワークシステムが用いるVXLANのトラフィック特性を説明する図である。
図12に示す従来例においては、サーバ装置60とスイッチ50とがLink-Aggregation Group(LAG)40を介して互いに通信可能に接続されている。また、サーバ装置60は、VTEP62及び5つのVM61を展開し、又、Network Interface Card(NIC)63を備える。
NIC63は、サーバ装置60を、例えば、LAN等の外部ネットワークに接続する通信アダプタであり、例えばLANカードである。
IP/MACハッシュに基づく分散アルゴリズムを用いる従来例としてのネットワークシステムにおいては、図12に示すように、複数(図示する例では5つ)のVM61がVTEP間通信に集約される。そのため、ネットワーク上で識別できるフロー数が減少し、トラフィックの偏りが発生する可能性が高い。また、MultiPath Transmission Control Protocol(MPTCP)においては、L4 src portを変えてマルチパスを構成するが、VXLANのカプセル化によりオリジナルデータのL4 src portが隠蔽されるため、マルチパスを期待通り構成することができない。
そこで、本実施形態の一例におけるネットワークシステム1が用いるVXLAN仕様では、L4 src portにペイロードのハッシュ値を入れる。
図13は、実施形態の一例としてのネットワークシステムにおけるマルチパスの分散を説明する図である。
図13では、図11(b)に示した実施形態の一例としてのネットワークシステムが用いるVXLANパケットのうち、Outer Headerの詳細を示している。
VMware ESXiのVTEP32では、カプセル化をする際に、ペイロードを参照してハッシュ値を計算し、計算したハッシュ値をL4 src portに格納する。すなわち、フレームの内容からハッシュ値を生成し、Outer HeaderのUDP Source Portに使用する。なお、ペイロードの参照する箇所は、IP src,IP dst,IP proto,L4 src及びdst portsの5タプルである。
図14は、実施形態の一例としてのネットワークシステムのBack to Back構成におけるフロー制御を説明する図である。
図14に例示するネットワークシステム1は、Back to Back構成になっており、2つのスイッチ10(SW1,SW2),コントローラ20及び4つのサーバ装置30(S1〜S4)を備える。
以下、図14を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に「SW1」又は「SW2」と表記する。また、以下、図14を参照しながら説明する際に、特定のサーバ装置30を指す場合には、単に「S1」,「S2」,「S3」又は「S4」と表記する。また、図14では簡単のため省略しているが、ACLを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLのエントリ(FDBテーブル300及びACLテーブル200)を各スイッチ10に対して設定(送信)する。具体的には、送信部211は、メモリ130のFDB記憶部131にFDBテーブル300を格納させ、又、TCAM120のACL記憶部121にACLテーブル200を格納させる。なお、送信部211は、SW2に対してもACLテーブル200を設定するが、図14では簡単のため省略している。
図14においては、S1がS4に対してパケットを伝送する例について説明する。
符号Eに示すように、パケット(Packet)のDestination Address(DA;送信先アドレ
ス),Source Address(SA;送信元アドレス)及びL4sportには、S4,S1及び1がそれぞれ設定されている。
SW1のFDB制御部132は、FDBテーブル300を参照し、DA=S4の場合のアク
ションが格納されているかを確認する。ここでは、SW1のFDBテーブル300にS4が格納されていないため、SW1のACL制御部122は、ACLテーブル200を参照し、L4sport=1の場合のアクションを確認する。ここでは、SW1のACLテーブル200にL4sport=1に対してPort=P4が格納されているため、SW1のACL制御部122は、符号Eに示すようにアクション(Action)としてP4ポートを選択する。すなわち、ACL制御部122は、SW1のP4ポートを介してSW2に対してパケットを伝送させる。
SW2のFDB制御部132は、FDBテーブル300を参照し、DA=S4の場合のアクションが格納されているかを確認する。ここでは、SW2のFDBテーブル300にServer=S4に対してPort=P2が格納されているため、FDB制御部132は、アクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW2のP2ポートを介してS4に対してパケットを伝送させる。
図14に示す例においては、最初にFDBベースのフロー制御を行なうSW2が折り返し点Aとなる。
図15は、実施形態の一例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
図15に例示するネットワークシステム1は、Fat Tree構成になっており、4つのスイッチ10(SW1〜SW4),コントローラ20及び4つのサーバ装置30(S1〜S4)を備える。また、図15では簡単のため省略しているが、ACLを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
以下、図15を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に「SW1」,「SW2」,「SW3」又は「SW4」と表記する。また、以下、図15を参照しながら説明する際に、特定のサーバ装置30を指す場合には、単に「S1」,「S2」,「S3」又は「S4」と表記する。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLの
エントリ(FDBテーブル300及びACLテーブル200)を各スイッチ10に対して設定(送信)する。具体的には、送信部211は、メモリ130のFDB記憶部131にFDBテーブル300を格納させ、又、TCAM120のACL記憶部121にACLテーブル200を格納させる。なお、図15においては、SW3及びSW4のACLテーブル200の図示を省略したが、送信部211は、SW3及びSW4に対してもACLテーブル200を設定しても良い。
図15においては、始めにS1がS2に対してパケット#1を伝送する例について説明し、次にS1がS3に対してパケット#2を伝送する例について説明する。
符号F1に示すように、パケット#1のDA,SA及びL4sportには、S2,S1及び0がそれぞれ設定されている。
SW1のFDB制御部132は、FDBテーブル300を参照し、DA=S2の場合のアクションが格納されているかを確認する。ここでは、SW1のFDBテーブル300にServer=S2に対してPort=P2が格納されているため、FDB制御部132は、アクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW1のP2ポートを介してS2に対してパケットを伝送させる。
図15に示すパケット#1を伝送する例においては、最初にFDBベースのフロー制御を行なうSW1が折り返し点Aとなる。
次に、S1がS3に対してパケット#2を伝送する例について説明する。
符号F2に示すように、パケット#2のDA,SA及びL4sportには、S3,S1及び0がそれぞれ設定されている。
SW1のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアク
ションが格納されているかを確認する。ここでは、SW1のFDBテーブル300にS3が格納されていないため、SW1のACL制御部122は、ACLテーブル200を参照し、L4sport=0の場合のアクションを確認する。ここでは、SW1のACLテーブル200にL4sport=0に対してPort=P3が格納されているため、SW1のACL制御部122は、符号F2に示すようにアクションとしてP3ポートを選択する。すなわち、ACL制御部122は、SW1のP3ポートを介してSW3に対してパケットを伝送させる。
SW3のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW3のFDBテーブル300にServer=S3に対してPort=P2が格納されているため、FDB制御部132は、符号F3に示すようにアクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW3のP2ポートを介してSW2に対してパケットを伝送させる。
図15に示すパケット#2を伝送する例においては、最初にFDBベースのフロー制御を行なうSW3が折り返し点Aとなる。
SW2のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW2のFDBテーブル300にServer=S3に対してPort=P1が格納されているため、FDB制御部132は、アクションとしてP1ポートからパケットを出力する。すなわち、FDB制御部132は、SW2のP1ポートを介してS3に対してパケットを伝送させる。
図16(a)〜(c)は、実施形態の一例としてのネットワークシステムにおけるハッシュ計算を説明する図である。
図16(a)に示すハッシュ計算の方式においては、ペイロードのInner 5-tupleから第1のハッシュ値を計算し、カプセル化後に第1のハッシュ値を設定されたOuter L4 src portを含めたOuter 5-tuple(IP src, IP dst, IP proto, L4 src及びdst ports)から経路選択用の第2のハッシュ値を計算する。第2のハッシュ値に基づくパス選択は、第2のハッシュ値の計算およびパス選択がスイッチ10で行なわれるため、OpenFlowによるコントローラ20からの詳細な制御が困難である。
図16(b)に示すハッシュ計算方式においては、ペイロードのInner 5-tupleから第1のハッシュ値を計算し、カプセル化時にOuter L4 src portに第1のハッシュ値を設定する。スイッチ10でのパス選択は、マスク適用後の第1のハッシュ値に基づいて行なう。
図16(c)に示すハッシュ計算方式は、図16(b)とほぼ同様であるが、第1のハッシュ値の計算にInner 5-tupleのみでなく、VXLAN Network Identifier(VNI)を含めてハッシュ計算を行なうことで、より詳細なフロー識別を可能とする。
図16(b)及び図16(c)のハッシュ計算方式では、マスク適用後の第1のハッシュ値に基づいてパス選択が行なわれるようOpenFlowによりコントローラ20からスイッチ10に設定が行われるが、この際、符号Gに示すようにOpenFlowのベンダー拡張が必要となる。
図17は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第1の例を説明する図である。
図17に例示するネットワークシステム1は、Fat Tree構成になっており、12個のスイッチ10(SW11〜SW14,SW21〜SW24及びSW31〜SW34),コントローラ20及び8つのサーバ装置30を備える。
以下、図17を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に「SW11」〜「SW14」,「SW21」〜「SW24」又は「SW31」〜「SW34」と表記する。また、以下、図17を参照しながら説明する際に、「SW31」〜「SW34」を「根ノードのスイッチ10」といい、「SW11」〜「SW14」を「葉ノードのスイッチ10という場合がある。更に、以下、「根ノードのスイッチ10側」を「アップリンク側」といい、「葉ノードのスイッチ10側」を「ダウンリンク側」という場合がある。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLのエントリを各スイッチ10に対して設定(送信)する(符号K1参照)。具体的には、送信部211は、リンクの状態を考慮してパス切り替えを行なうようにACLのエントリを各スイッチ10に対して設定する。
図17に示す例においては、SW21とSW31との間でリンク障害が発生する(符号K2参照)。
SW21のリンク状態監視制御部116は、アップリンク(根ノード)側で発生したリンク障害を検知し、SW31への経路を予め設定されている使用可能な他のアップリンクのスイッチ10、すなわち、SW32に切り替える(符号K3参照)。
SW31のリンク状態監視制御部116は、ダウンリンク(葉ノード)側で発生したリンク障害を検知する。そして、スイッチ連携部117は、接続されている全てのスイッチ10、すなわち、SW23にリンク障害IDを送信する(符号K4参照)。
SW23のスイッチ連携部117は、SW31からのリンク障害IDを受信する。そして、リンク状態監視制御部116は、SW31への経路を予め設定されている使用可能な他のアップリンクのスイッチ10、すなわち、SW32に切り替える(符号K5参照)。
図18は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の第2の例を説明する図である。
図18に例示するネットワークシステム1は、図17に示したネットワークシステム1と同様のFat Tree構成になっている。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLのエントリを各スイッチ10に対して設定(送信)する(符号L1参照)。具体的には、送信部211は、リンクの状態を考慮してパス切り替えを行なうようにACLのエントリを各スイッチ10に対して設定する。
図18に示す例においては、SW11とSW21との間でリンク障害が発生する(符号L2参照)。
SW11のリンク状態監視制御部116は、アップリンク(根ノード)側で発生したリンク障害を検知し、SW21への経路を予め設定されている使用可能な他のアップリンクのスイッチ10、すなわち、SW22に切り替える(符号L3参照)。
SW21のリンク状態監視制御部116は、ダウンリンク(葉ノード)側で発生したリンク障害を検知する。そして、スイッチ連携部117は、接続されている全てのスイッチ10、すなわち、SW12,SW31及びSW32にリンク障害IDを送信する(符号L4参照)。
SW12のスイッチ連携部117は、SW21からのリンク障害IDを受信する。そして、リンク状態監視制御部116は、SW21への経路を予め設定されている使用可能な他のアップリンクのスイッチ10、すなわち、SW22に切り替える(符号L5参照)。
SW31及びSW32のスイッチ連携部117は、SW21からのリンク障害IDを受信する。SW31及びSW32はともに根ノードのスイッチ10でありアップリンク側のスイッチ10がないため、SW31及びSW32のスイッチ連携部117は、受信したリンク障害IDを接続されている全てのスイッチ10、すなわち、SW23に転送(中継)する(符号L6参照)。
SW23のスイッチ連携部117は、SW31及びSW32からのリンク障害IDを受信する。SW23のアップリンク(根ノード)側には使用可能な通信経路がないため、SW23のスイッチ連携部117は、受信したリンク障害IDを接続されている全てのスイッチ10、すなわち、SW13及びSW14に転送(中継)する(符号L7参照)。
SW13及びSW14のスイッチ連携部117は、SW23からのリンク障害IDを受信する。そして、SW13及びSW14のリンク状態監視制御部116は、SW23への経路を予め設定されている使用可能な他のアップリンクのスイッチ10、すなわち、SW24に切り替える(符号L8参照)。
図19は、実施形態の一例としてのネットワークシステムにおけるリンク障害発生時のパス切り替え処理の詳細を例示する図である。
図19に例示するネットワークシステム1は、Fat Tree構成になっており、4つのスイッチ10(SW11,SW12,SW21及びSW22),コントローラ20及び4つのサーバ装置30(S1〜S4)を備える。また、図19では簡単のため省略しているが、ACLを検索する際のL4sportの値はマスク値0x0001でマスクされているものとする。
以下、図19を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に
「SW11」,「SW12」,「SW21」又は「SW22」と表記する。また、以下、図19を参照しながら説明する際に、特定のサーバ装置30を指す場合には、単に「S1」,「S2」,「S3」又は「S4」と表記する。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLの
エントリ(FDBテーブル300及びACLテーブル220)を各スイッチ10に対して設定(送信)する(符号M1参照)。具体的には、送信部211は、メモリ130のFDB記憶部131にFDBテーブル300を格納させ、又、TCAM120のACL記憶部121にACLテーブル220を格納させる。つまり、送信部211は、リンクの状態を考慮してパス切り替えを行なうようにACLテーブル220を各スイッチ10に対して設定する。なお、図19においては、SW21及びSW22のACLテーブル220の図示を省略したが、送信部211は、SW21及びSW22に対してもACLテーブル220を設定しても良い。
図19に示すACLテーブル220は、図14及び図15に示したACLテーブル200が格納するL4sport及びPortに加えて、Failure Id(リンク障害ID)を格納する。つまり、ACLテーブル220は、L4sportとFailure IdとPortとを互いに対応づけて格納する。リンク障害IDは、障害が検知されたリンク(通信経路)を示す識別情報である。例えば、SW11のACLテーブル220は、L4sport=0に対して、Failure Id=0の場合及びFailure Id=10の場合について、出力先ポートとしてPort=P3及びPort=P4をそれぞれ対応づけて格納する。なお、Failure Id=0, 10は、障害なし(no failure)及びSW11のP3ポートでリンク障害発生(SW11-P3 down)をそれぞれ示す。更に、SW11のACLテーブル220は、L4sport=1に対して、Failure Id=0の場合及びFailure Id=11の場合について、出力先ポートとしてPort=P4及びPort=P3をそれぞれ対応づけて格納する。なお、Failure Id=11は、SW22のP2ポートでリンク障害発生(SW22-P2 down)を示す。また、SW12のACLテーブル220は、L4sport=0に対して、Failure Id=0の場合及びFailure Id=20の場合について、出力先ポートとしてPort=P3及びPort=P4をそれぞれ対応づけて格納する。なお、Failure Id=20は、SW21のP1ポートでリンク障害発生(SW21-P1 down)を示す。更に、SW21のACLテーブル220は、L4sport=1に対して、Failure Id=0の場合及びFailure Id=21の場合について、出力先ポートとしてPort=P4及びPort=P3をそれぞれ対応づけて格納する。なお、Failure Id=21は、SW12のP4ポートでリンク障害発生(SW12-P4 down)を示す。
ここで、図19を参照しながら、ネットワークシステム1のいずれにおいてもリンク障害が発生していない場合において、図15の符号F2及びF3に示したパケット#2を伝送する例について説明する。
図15の符号F2に示したように、パケット#2のDA,SA及びL4sportには、S3,S1及び0がそれぞれ設定されている。
SW11のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のア
クションが格納されているかを確認する。ここでは、SW1のFDBテーブル300にS3が格納されていないため、SW1のACL制御部122は、ACLテーブル20を参照し、L4sport=0の場合のアクションを確認する。ここでは、ACLテーブル220にリンク障害IDが書き込まれておらず、且つ、SW11のACLテーブル220にL4sport=0に対してPort=P3が格納されている。そこで、SW11のACL制御部122は、図15の符号F2に示したようにアクションとしてP3ポートを選択する。すなわち、ACL制御部122は、SW11のP3ポートを介してSW21に対してパケットを伝送させる。
SW21のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW21のFDBテーブル300にServer=S3に対してPort=P2が格納されているため、FDB制御部132は、図15の符号F3に示したようにアクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW21のP2ポートを介してSW12に対してパケットを伝送させる。
SW12のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW12のFDBテーブル300にServer=S3に対してPort=P1が格納されているため、FDB制御部132は、アクションとしてP1ポートからパケットを出力する。すなわち、FDB制御部132は、SW12のP1ポートを介してS3に対してパケットを伝送させる。
次に、図19を参照しながらリンク障害発生時のパス切り替え処理の詳細を説明する。
上述したように、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLのエントリ(FDBテーブル300及びACLテーブル220)を各スイッチ10に対して設定(送信)する(符号M1参照)。
ここで、SW11のP3ポートとSW21のP1ポートとの間でリンク障害が発生する(符号M2参照)。
SW11のリンク状態監視制御部116は、P3ポートで発生したリンク障害を検知し、P3ポートを経由するSW21への経路を、P4ポートを経由するSW22に切り替える。具体的には、リンク状態監視制御部116は、後述する障害IDテーブルに基づき、SW11のP3ポートでリンク障害発生を示すFailure Id=10をACLテーブル220に入力する。これにより、リンク状態監視制御部116は、L4sport=0のパケットについての出力先ポートをP3ポートからP4ポートに切り替える。
SW21のリンク状態監視制御部116は、P1ポートで発生したリンク障害を検知する。そして、スイッチ連携部117は、図20を用いて後述する障害IDテーブルに基づき、SW21のP1ポートでリンク障害が発生したことを示すFailure Id=20をリンク障害発生通知としてSW12に送信する(符号M3参照)。
SW12のスイッチ連携部117は、SW21からのリンク障害発生通知(Failure Id=20)を受信する。そして、リンク状態監視制御部116は、P3ポートを経由するSW21への経路を、P4ポートを経由するSW22に切り替える。具体的には、リンク状態監視制御部116は、図20を用いて後述する障害IDテーブルに基づき、SW21から受信したFailure Id=20をACLテーブル220に入力する。これにより、リンク状態監視制御部116は、L4sport=0のパケットについての出力先ポートをP3ポートからP4ポートに切り替える。
すなわち、ACLテーブル220は、障害が検知された通信経路を示すリンク障害IDと、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納する。そして、リンク状態監視制御部116は、リンク障害IDをACLテーブル220に書き込むことにより、複数の通信経路の切り替えを行なう。
次に、図19を参照しながら、SW11のP3ポートとSW21のP1ポートとの間でリンク障害が発生した場合(符号M2参照)において、図15の符号F2及びF3に示したパケット#2を伝送する例について説明する。
図15の符号F2に示したように、パケット#2のDA,SA及びL4sportには、S3,S1及び0がそれぞれ設定されている。
SW11のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のア
クションが格納されているかを確認する。ここでは、SW1のFDBテーブル300にS3が格納されていないため、SW11のACL制御部122は、ACLテーブル20を参照し、L4sport=0の場合のアクションを確認する。ここでは、SW11のACLテーブル220には、L4sport=0に対して、Port=P3が格納されているとともに、Failure Id=10が書き込まれている。そこで、SW11のACL制御部122は、Failure Id=0の場合のアクションに優先して、Failure Id=10の場合のアクションを実行することにより、
P4ポートを選択する。すなわち、ACL制御部122は、SW11のP4ポートを介してSW22に対してパケットを伝送させる。
SW22のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW22のFDBテーブル300にServer=S3に対してPort=P2が格納されているため、FDB制御部132は、アクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW22のP2ポートを介してSW12に対してパケットを伝送させる。
SW12のFDB制御部132は、FDBテーブル300を参照し、DA=S3の場合のアクションが格納されているかを確認する。ここでは、SW12のFDBテーブル300にServer=S3に対してPort=P1が格納されているため、FDB制御部132は、アクションとしてP1ポートからパケットを出力する。すなわち、FDB制御部132は、SW12のP1ポートを介してS3に対してパケットを伝送させる。
このようにSW11のP3ポートとSW21のP1ポートとの間でリンク障害が発生した場合(符号M2参照)においては、例えばDA,SA及びL4sportに、S1,S3及び0がそれぞれ設定されたパケットについても、上述したパケット#2と同様に送信することができる。SW12のACLテーブル220には、L4sport=0に対して、Port=P3が格納されているとともに、Failure Id=20が書き込まれている。そこで、SW11のACL制御部122は、Failure Id=0の場合のアクションに優先して、Failure Id=20の場合のアクションを実行することにより、P4ポートを選択する。これにより、SW12は、パケットを、リンク障害が発生したSW21ではなく、使用可能な通信経路のあるSW22に伝送することができる。
すなわち、ACLテーブル220は、リンク障害IDと出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納する。そして、スイッチ10は、マスク適用後のヘッダ情報に基づいて選択したルール情報に従って入力パケットの制御を行なう。言い換えれば、スイッチ10は、ACLテーブル220にリンク障害IDが入力されている場合には、当該リンク障害IDに関連付けられたポートに入力パケットを出力する。
図20は、実施形態の一例としてのネットワークシステムにおける障害IDテーブルを例示する図である。
コントローラ20の送信部211は、FDBテーブル300及びACLテーブル220とともに、Proactive(事前)に図20に示すような障害IDテーブルを各スイッチ10に対して設定(送信)する。
図20には、一例として、図19に示したSW12に対して設定される障害IDテーブルを示す。
障害IDテーブルには、障害内容と、その障害が発生した場合にリンク状態監視制御部116がACLテーブル220に設定すべきリンク障害IDとが互いに対応づけて格納される。例えば、図20に示すように、SW12のP3ポートでリンクダウンが発生した場合には、SW12のリンク状態監視制御部116は、障害IDテーブルを参照して、ACLテーブル220にFailure Id=20を書き込む。また、SW12のP4ポートでリンクダウンが発生した場合には、SW12のリンク状態監視制御部116は、障害IDテーブルを参照して、ACLテーブル220にFailure Id=21を書き込む。
図21(a)は実施形態の一例としてのネットワークシステムにおける制御メッセージを示す図であり、図21(b)はそのRPCパラメタの詳細を例示する図である。
スイッチ連携部117は、リンク障害発生通知,リンク障害復旧通知及びパス切り替え応答(リンク障害発生通知及びリンク障害復旧通知に対する応答)を、図21(a),(b)に示す制御メッセージを用いて行なう。
図21(a)に示すように、制御メッセージは、IPヘッダ,User Datagram Protocol/Transmission Control Protocol(UDP/TCP)ヘッダ,Remote Procedure Call(RPC)ヘッダ及びRPCパラメタを含む。
図21(b)に例示するように、RPCパラメタは、パラメタ数,メッセージ種別,ポート番号,障害ID及びパス切り替え情報を含む。
メッセージ種別は、リンク障害発生通知,リンク障害復旧通知及びパス切り替え応答の別を示す。例えば、スイッチ連携部117は、リンク障害発生通知,リンク障害復旧通知及びパス切り替え応答に対して、10,11及び12をそれぞれ設定する。
ポート番号は、障害が発生し又は復旧したスイッチのID及びポート番号を示す。例えば、スイッチ連携部117は、ポート番号に対して、SW21のP1で障害が発生し又は復旧した場合には21/01を設定する。
障害IDは、障害の内容を示す。例えば、スイッチ連携部117は、障害IDに対して、障害なしの場合には0を設定し、SW21のP1ポートがリンクダウンした場合には20を設定する。
パス切り替え情報は、切り替え後のパスを示す。例えば、スイッチ連携部117は、SW12のパスをP3ポートに切り替えた場合には、パス切り替え情報に対して、12/03を設定する。
〔A−2〕動作
上述の如く構成された実施形態の一例としてのネットワークシステム1が備えるコントローラ20におけるフローリスト100の設定処理を図22に示すフローチャート(ステップS10〜S60)に従って説明する。
始めに、図23を用いて後述するようにして作成したフローリスト100を、例えばコントローラ20の記憶装置23に入力(格納)する(符号H1参照)。入力されるフローリスト100には、例えば、設定対象のスイッチ10を示す対象SW,フローの追加/削除/変更を指定する操作,フローを識別するマッチングルールであるルール及びマッチした場合の動作を示すアクションが互いに関連付けられている。
コントローラ20の送信部211は、フローリスト100が空であるか否かを判定する(ステップS10)。言い換えれば、送信部211は、図22に示すフローテーブル100の1〜Nの内容が全て対象スイッチ10に設定済みであるか否かを判定する。
フローリスト100が空である場合には(ステップS10のYESルート参照)、コントローラ20におけるフローテーブル100の設定処理が完了する。
フローリスト100が空でない場合には(ステップS10のNOルート参照)、送信部211は、フローリスト100から1行取り出す(ステップS20)。フローリスト100から取り出した情報には、例えば、対象スイッチのID,操作(追加/変更/削除),ルール及びアクションが含まれる(符号H2参照)。
送信部211は、対象スイッチ10と通信し、フローリスト100を設定する(ステップS30)。
送信部211は、スイッチ10からの返信を受信する(ステップS40)。
送信部211は、スイッチ10からの返信に基づき、設定が成功したか否かを判定する(ステップS50)。
設定が成功した場合には(ステップS50のYESルート参照)、フローリスト100の次の行に移り、ステップS10に戻る。
設定が成功しなかった場合には(ステップS50のNOルート参照)、送信部211は、例えばコントローラ20の図示しない表示装置にエラーを出力し(ステップS60)、コントローラ20におけるフローテーブル100の設定処理が完了する。
図23は、実施形態の一例としてのネットワークシステムにおけるフローテーブルの作成処理に用いるアルゴリズムを例示する図である。
図23に示すアルゴリズムは、トポロジ情報Tを入力とし、事前設定用フローリストLを出力する。入力するトポロジ情報Tは、コントローラ20が静的に保持しても良いし、動的検出によって与えられても良い。
function Search Tree (n)は、入力としてノード情報nを受け、ノード情報n配下のサーバリストSを返す。また、フローリストLに対して、ノード情報nに設定されるべきエントリ群を追加する。
Search Tree (n)は、ノード情報nがServer(サーバ装置30)の場合には、ノード情報nのnode-idを返すため、ルートノードrから再帰的にサブツリーに対してSearch Tree (v)を実行することで、各スイッチ10のフロー設定情報を事前設定用フローリストLに追加できる。
次に、実施形態の一例としてのネットワークシステム1が備えるスイッチ10におけるフローリスト100の設定処理を図24に示すフローチャート(ステップS110〜S160)に従って説明する。
スイッチ10の設定部110は、コントローラ20からフロー設定情報を受信する(ステップS110)。
設定部110は、フロー設定情報のルールを検査し、マスク無∧MAC dst/IP dst(+ VLAN ID)であるか否かを判定する(ステップS120)。なお、ステップS120における判定条件の“∧”及び“/”は“且つ”及び“又は”をそれぞれ示しており、MAC dst又はIP dst以外にVLAN IDを含んでいても判定結果がYESであることを示している。
マスク無∧MAC dst/IP dst(+ VLAN ID)でない場合には(ステップS120のNOルート参照)、ACL設定部111は、図25を用いて後述するACL操作を実行し(ステップS140)、ステップS160に移行する。
マスク無∧MAC dst/IP dst(+ VLAN ID)である場合には(ステップS120のYESルート参照)、FDB設定部112は、図26を用いて後述するFDB操作を実行する(ステップS130)。
設定部110は、ステップS130のFDB操作で対象フローがデータベースに登録されたかを判定する。つまり、設定部110は、ステップS130のFDB操作でハッシュ衝突によるオーバーフローが発生したかを判定する(ステップS150)。
ステップS130のFDB操作でハッシュ衝突によるオーバーフローが発生した場合には(ステップS150のYESルート参照)、S140に移行する。
一方、ステップS130のFDB操作でハッシュ衝突によるオーバーフローが発生しなかった場合には(ステップS150のNOルート参照)、S160に移行する。
そして、設定部110は、設定結果をコントローラ20に返信し(ステップS160)、スイッチ10におけるフローリスト100の設定処理が完了する。
次に、図24のステップS140に示したACL操作の詳細を図25に示すフローチャート(ステップS141〜S147)に従って説明する。
ACL設定部111は、操作が追加であるか否かを判定する(ステップS141)。
操作が追加である場合には(ステップS141のYESルート参照)、ACL設定部111は、対象フローがデータベース(DB)に未登録、且つ、エントリに空きが有るか否かを判定する(ステップS142)。
対象フローがデータベースに未登録、且つ、エントリに空きが有る場合には(ステップS142のYESルート参照)、ACL設定部111は、データベースにフローを追加し、又、ACLにエントリを追加し(ステップS143)、ACL操作が成功する。
一方、対象フローがデータベースに登録済み、又は、エントリに空きが無い場合には(ステップS142のNOルート参照)、ACL操作はエラーとなる。
また、操作が追加でない場合には(ステップS141のNOルート参照)、ACL設定部111は、対象フローがデータベースに登録済みであるか否かを判定する(ステップS144)。
対象フローがデータベースに登録済みである場合には(ステップS144のYESルート参照)、ACL設定部111は、操作が削除又は変更のどちらであるかを判定する(ステップS145)。
操作が削除である場合には(ステップS145の削除ルート参照)、ACL設定部111は、データベース及びACLから該当フローのエントリを削除し(ステップS146)、ACL操作が成功する。
一方、操作が変更である場合には(ステップS145の変更ルート参照)、ACL設定部111は、データベース及びACLから該当フローの差し替えを行ない(ステップS147)、ACL操作が成功する。
また、対象フローがデータベースに未登録の場合には(ステップS144のNOルート参照)、ACL操作はエラーとなる。
次に、図24のステップS130に示したFDB操作の詳細を図26に示すフローチャート(ステップS131〜S137)に従って説明する。
FDB設定部112は、操作が追加であるか否かを判定する(ステップS131)。
操作が追加である場合には(ステップS131のYESルート参照)、FDB設定部112は、対象フローがデータベースに未登録であり、且つ、FDBに登録可能であるか否かを判定する(ステップS132)。
対象フローがデータベースに未登録であり、且つ、FDBに登録可能である場合には(ステップS132のYESルート参照)、FDB設定部112は、データベースにフローを追加し、又、FDBに静的エントリを登録し(ステップS133)、FDB操作が成功する。
一方、対象フローがデータベースに登録済みであり、又は、FDBに登録可能でない場合には(ステップS132のNOルート参照)、FDB操作はエラーとなる。
また、操作が追加でない場合には(ステップS131のNOルート参照)、FDB設定部112は、対象フローがデータベースに登録済みであるか否かを判定する(ステップS134)。
対象フローがデータベースに登録済みである場合には(ステップS134のYESルート参照)、FDB設定部112は、操作が削除又は変更のどちらであるかを判定する(ステップS135)。
操作が削除である場合には(ステップS135の削除ルート参照)、FDB設定部112は、データベース及びFDBから該当フローのエントリを削除し(ステップS136)、FDB操作が成功する。
一方、操作が変更である場合には(ステップS135の変更ルート参照)、FDB設定部112は、データベース及びFDBから該当フローのエントリを差し替え(ステップS137)、FDB操作が成功する。
また、対象フローがデータベースに未登録の場合には(ステップS134のNOルート参照)、FDB操作がエラーとなる。
次に、実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のリンク障害発生通知の送信処理を図27に示すフローチャート(ステップS211及びS212)に従って説明する。
リンク状態監視制御部116は、ダウンリンク(葉ノード側)の障害発生を検出したかを判定する(ステップS211)。
ダウンリンク(葉ノード側)の障害発生を検出していない場合には(ステップS211のNOルート参照)、ステップS211に戻る。
一方、ダウンリンク(葉ノード側)の障害発生を検出した場合には(ステップS211のYESルート参照)、スイッチ連携部117は、隣接するスイッチ10にリンク障害発生通知(リンク障害ID)を送信し(ステップS212)、ステップS211に戻る。
次に、実施形態の一例としてのスイッチにおけるダウンリンク障害発生時のパス切り替え情報記録処理を図28に示すフローチャート(ステップS221及びS222)に従って示す。
図27のフローチャート(ステップS211及びS212)の処理を実行したスイッチ10のスイッチ連携部117は、他のスイッチ10からパス切り替え応答を受信したかを判定する(ステップS221)。
他のスイッチ10からパス切り替え応答を受信していない場合には(ステップS221のNOルート参照)、ステップS221に戻る。
一方、他のスイッチ10からパス切り替え応答を受信した場合には(ステップS221のYESルート参照)、スイッチ連携部117は、図21を用いて示した制御メッセージに含まれる情報をパス切り替え情報として、例えばメモリ130に記録する(ステップS222)。そして、ステップS221に戻る。
次に、実施形態の一例としてのスイッチにおけるリンク障害通知受信時のパス切り替え処理を図29に示すフローチャート(ステップS311〜S317)に従って説明する。
スイッチ連携部117は、リンク障害発生通知(リンク障害ID)を受信したかを判定する(ステップS311)。
リンク障害発生通知(リンク障害ID)を受信していない場合には(ステップS311のNOルート参照)、ステップS311に戻る。
一方、リンク障害発生通知(リンク障害ID)を受信した場合には(ステップS311のYESルート参照)、リンク状態監視制御部116は、図20を用いて示した障害IDテーブルに基づき、受信したリンク障害IDをACLテーブル220に入力する(ステップS312)。
リンク状態監視制御部116は、パスを切り替えることができるかを判定する(ステップS313)。
パスを切り替えることができない場合には(ステップS313のNOルート参照)、スイッチ連携部117は、リンク障害IDの送信元であるスイッチ10以外の隣接するスイッチ10にリンク障害IDを中継し(ステップS314)、ステップS311に戻る。
一方、パスを切り替えることができる場合には(ステップS313のYESルート参照)、リンク状態監視制御部116は、リンク障害IDの送信元であるスイッチ10へのパスを代替のパスに切り替える(ステップS315)。なお、パスの切り替え手法は、ラウンドロビンであっても良いし、ランダムであっても良い。
リンク状態監視制御部116は、パスを切り替えた旨をコントローラ20に通知する(ステップS316)。
スイッチ連携部117は、リンク障害発生通知の送信元であるスイッチ10に対してパス切り替え応答を送信し(ステップS317)、ステップS311に戻る。
次に、実施形態の一例としてのスイッチにおけるアップリンク障害発生時のパス切り替え処理を図30に示すフローチャート(ステップS411〜S416)に従って説明する。
リンク状態監視制御部116は、アップリンク(根ノード側)の障害発生を検出したかを判定する(ステップS411)。
アップリンク(根ノード側)の障害発生を検出していない場合には(ステップS411のNOルート参照)、ステップS411に戻る。
一方、アップリンク(根ノード側)の障害発生を検出した場合には(ステップS411のYESルート参照)、リンク状態監視制御部116は、検出したリンク障害に関するリンク障害IDを、図20を用いて示した障害IDテーブルに基づき、ACLテーブル220に入力する(ステップS412)。
リンク状態監視制御部116は、パスを切り替えることができるかを判定する(ステップS413)。
パスを切り替えることができない場合には(ステップS413のNOルート参照)、リンク状態監視制御部116は、例えば、コントローラ20にエラーを通知し(ステップS414)、パス切り替え処理が終了する。
一方、パスを切り替えることができる場合には(ステップS413のYESルート参照)、リンク状態監視制御部116は、リンク障害IDの送信元であるスイッチ10へのパスを代替のパスに切り替える(ステップS415)。なお、パスの切り替え手法は、ラウンドロビンであっても良いし、ランダムであっても良い。
リンク状態監視制御部116は、パスを切り替えた旨をコントローラ20に通知し(ステップS416)、ステップS411に戻る。
次に、実施形態の一例としてのスイッチにおけるダウンリンク障害復旧時のリンク障害復旧通知の送信処理を図31に示すフローチャート(ステップS231〜S235)に従って説明する。
リンク状態監視制御部116は、ダウンリンク(葉ノード側)の障害復旧を検出したかを判定する(ステップS231)。
ダウンリンク(葉ノード側)の障害復旧を検出していない場合には(ステップS231のNOルート参照)、ステップS231に戻る。
一方、ダウンリンク(葉ノード側)の障害復旧を検出した場合には(ステップS231のYESルート参照)、スイッチ連携部117は、図28のステップS222で取得したパス切り替え情報に基づき、リンク障害でパスを切り替えたスイッチ10を特定する(ステップS232)。
スイッチ連携部117は、パスを切り替えたスイッチ10にリンク障害復旧通知(リンク障害ID=0)を送信する(ステップS233)。
スイッチ連携部117は、パスを切り替えたスイッチ10から応答を受信し(ステップS234)、パス切り替え情報を更新する。
スイッチ連携部117は、リンク障害復旧通知を送信したスイッチ10の全てから応答を受信したかを判定する(ステップS235)。
リンク障害復旧通知を送信したスイッチ10の全てから応答を受信していない場合には(ステップS235のNOルート参照)、ステップS234に戻る。
一方、リンク障害復旧通知を送信したスイッチ10の全てから応答を受信した場合には(ステップS235のYESルート参照)、ステップS231に戻る。
次に、実施形態の一例としてのスイッチにおけるリンク障害復旧通知受信時のパスを切り替え前の状態に戻す処理を図32に示すフローチャート(ステップS321〜S324)に従って説明する。
スイッチ連携部117は、リンク障害復旧通知(リンク障害ID=0)を受信したかを判定する(ステップS321)。
リンク障害復旧通知(リンク障害ID=0)を受信していない場合には(ステップS321のNOルート参照)、ステップS321に戻る。
一方、リンク障害復旧通知(リンク障害ID=0)を受信した場合には(ステップS321のYESルート参照)、リンク状態監視制御部116は、受信したリンク障害ID=0をACLテーブル220に入力し(ステップS322)、パスをリンク障害発生前の状態に戻す。
リンク状態監視制御部116は、パスをリンク障害発生前の状態に戻した旨をコントローラに通知する(ステップS323)。
スイッチ連携部117は、リンク障害復旧通知を送信したスイッチ10に対してパス切り替え応答を送信し(ステップS324)、ステップS321に戻る。
次に、実施形態の一例としてのスイッチにおけるアップリンク障害復旧時のパスを切り替え前の状態に戻す処理を図33に示すフローチャート(ステップS421〜S423)に従って説明する。
リンク状態監視制御部116は、アップリンク(根ノード側)の障害復旧を検出したかを判定する(ステップS421)。
アップリンク(根ノード側)の障害復旧を検出していない場合には(ステップS421のNOルート参照)、ステップS421に戻る。
一方、アップリンク(根ノード側)の障害復旧を検出した場合には(ステップS421のYESルート参照)、リンク状態監視制御部116は、検出したリンク障害ID=0をACLテーブル220に入力し(ステップS422)、パスをリンク障害発生前の状態に戻す。
リンク状態監視制御部116は、パスをリンク障害発生前の状態に戻した旨をコントローラ20に通知し(ステップS423)、ステップS421に戻る。
〔A−3〕効果
以下、図34〜図37を参照しながら、本実施形態の一例としてのネットワークシステム1により奏することができる効果を説明する。
図34(a)は実施形態の一例としてのネットワークシステムが用いるOpenFlowテーブルを模式的に示す図であり、図34(b)はそのコモディティスイッチを模式的に示す図である。
図34(a),(b)に示すように、FDB制御部132が優先度の高い領域〔2〕においてFDBに従ったフロー制御を行ない、ACL制御部122が優先度の低い領域〔1〕においてIngress Portで修飾されたACLに従ったフロー制御を行なう。
これにより、OpenFlow 1.0 capable switchのセマンティクスにおいて、コモディティスイッチに大容量に存在するFDBを活用したハードウェアへのマッピングが可能となり、ACLの使用量を削減できる。
図35は実施形態の一例としてのネットワークシステムのBack to Back構成を例示する図であり、図36はそのFat Tree構成を例示する図である。また、図37は、従来のネットワークシステムと本実施形態の一例におけるネットワークシステムとにおける使用エントリ数を示す図である。
図35に示すネットワークシステム1は、Back to Back構成になっており、2つのスイッチ(SW)10,2つのサーバ装置30及び図示しないコントローラ20を備える。
サーバ装置30は、仮想環境30aを構成しており、VTEP32及び8つのVM33を展開する。
図37に示すように、図35に例示するBack to Back構成においては、従来のネットワークシステムは、Total #Flow table entries per switchとして1つのスイッチにつき128エントリ消費する。一方、本実施形態の一例におけるネットワークシステム1は、Total #Flow table entries per switchとして1つのスイッチ10につき3エントリ消費する。
図36に示すネットワークシステム1は、Fat Tree構成になっており、12個のスイッチ(SW)10,8つのサーバ装置30及び図示しないコントローラ20を備える。
サーバ装置30は、図35に示したサーバ装置30と同様の仮想環境30aを構成しており、VTEP32及び8つのVM33を展開する。
図37に示すように、図36に例示するFat Tree構成においては、従来のネットワークシステムは、Total #Flow table entries per switchとして1つのスイッチにつき3584エントリ消費する。一方、本実施形態の一例におけるネットワークシステム1は、Total #Flow table entries per switchとして1つのスイッチ10につき12エントリ消費する。
このように、本実施形態の一例におけるネットワークシステム1によれば、各スイッチ10における消費エントリ数を削減することができる。
また、スイッチ10は、入力パケットのヘッダ情報の所定の位置に複数の第1のルール情報200の数に応じたマスクを適用し、マスク適用後のヘッダ情報に基づいて第1の記憶部121から選択した第1のルール情報200に従って入力パケットの制御を行なう。すなわち、各スイッチ10と上流の別のスイッチ10との間の接続数に応じてマスク値を決定することで、VM数やサーバ数に依らず接続数に応じて消費エントリ数が決まる。これにより、各スイッチ10で使用するエントリ数を削減することができる。
更に、入力パケットの宛先に対応する第2のルール情報300が第2の記憶部131に格納されている場合には、第2のパケット伝送制御部は、第2のルール情報300に従って入力パケットの伝送を制御する。また、入力パケットの宛先に対応する第2のルール情報300が第2の記憶部131に格納されていない場合には、第1のパケット伝送制御部は、入力パケットに対応する第1のルール情報200に従って入力パケットの伝送を制御する。これにより、折り返し点Aから送信先装置まではFDBを使用するため、ACLの使用エントリ数を削減することができる。
本実施形態の一例におけるネットワークシステム1によれば、障害発生時における通信経路の切り替えを効率的に行なえる。
リンク状態監視制御部116は、根ノード側の通信経路上で障害を検知した場合に、パケットの伝送先を示すACLテーブル220を書き換えることで、複数の通信経路の切り替えを行なう。これにより、根ノード側でリンク障害を検知したスイッチ10は、コントローラ20に問合せをせずに高速なパス切り替えを行なえ、リンク障害が発生しておらず使用可能な通信経路にパケットを出力できる。
また、スイッチ連携部117は、葉ノード側の通信経路上で障害を検知した場合に、接続されている他のスイッチ10に障害箇所を通知する。そして、リンク状態監視制御部116は、接続されている他のスイッチ10からの通知に基づき、ACLテーブル220を書き換えることで、複数の通信経路の切り替えを行なう。これにより、葉ノード側で障害を検知したスイッチ10からリンク障害発生通知を受信したスイッチ10は、コントローラ20に問合せをせずに高速なパス切り替えを行なえ、リンク障害が発生しておらず使用可能な通信経路にパケットを出力できる。
更に、スイッチ連携部117は、接続されている他のスイッチ10からの通知に基づき、根ノード側に使用可能な通信経路が無い場合に、接続されている他のスイッチ10に通知を転送する。これにより、リンク障害発生通知を受信したスイッチ10の根ノード側に使用可能な通信経路が無い場合でも、パス切り替えを行なえ、パケットを伝送できる。
〔B〕変形例
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
〔B−1〕第1変形例
図38は、実施形態の第1変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
上述した実施形態の一例においてはVXLANのオーバーレイ環境におけるネットワークシステム1について説明したが、本実施形態の第1変形例においてはパケットのカプセル化を行なわずFDBにMACテーブルを使用する場合について説明する。
図38に例示するネットワークシステム1−1は、Fat Tree構成になっており、4つのスイッチ10(SW1〜SW4),コントローラ20及び4つのサーバ装置30(S1〜S4)を備える。
以下、図38を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に「SW1」,「SW2」,「SW3」又は「SW4」と表記する。また、以下、図38を参照しながら説明する際に、特定のサーバ装置30を指す場合には、単に「S1」,「S2」,「S3」又は「S4」と表記する。また、図38では簡単のため省略しているが、DIP(LSB)の値はDIPに対してマスク値0x000000000001でマスクした結果であり、ACL検索の際には前記マスク値によりDIPをマスクしているものとする。
図38に示すようにS1〜S4は、VM33(VM1〜VM4)をそれぞれ展開する。なお、図示する例においては各サーバ装置30が1つのVM33を展開するようになっているが、これに限定されるものではなく、2つ以上のVM33を展開しても良い。
以下、図38を参照しながら説明する際に、特定のVM33を指す場合には、単に「VM1」,「VM2」,「VM3」又は「VM4」と表記する。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLの
エントリ(FDBテーブル310及びACLテーブル210)を各スイッチ10に対して設定(送信)する。具体的には、送信部211は、メモリ130のFDB記憶部131にFDBテーブル310を格納させ、又、TCAM120のACL記憶部121にACLテーブル210を格納させる。なお、図38においては、SW3及びSW4のACLテーブル210の図示を省略したが、送信部211は、SW3及びSW4に対してもACLテーブル210を設定しても良い。
図38においては、始めにVM1(S1)がVM2(S2)に対してパケット#1を伝送する例について説明し、次にVM1(S1)がVM3(S3)に対してパケット#2を伝送する例について説明する。
符号I1に示すように、パケット#1のDA,SA,DIP(LSB)には、VM2,VM1及び0がそれぞれ設定されている。なお、DIP及びLSBはDestination IP address及びLeast Small Bitをそれぞれ示しており、DIP(LSB)はDIPの最下位ビットを示している。
SW1のFDB制御部132は、FDBテーブル310を参照し、DA=VM2の場合のアクションが格納されているかを確認する。ここでは、SW1のFDBテーブル310にVM MAC=VM2に対してPort=P2が格納されているため、FDB制御部132は、アクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW1のP2ポートを介してVM2(S2)に対してパケットを伝送させる。
図38に示すパケット#1を伝送する例においては、最初にFDBベースのフロー制御を行なうSW1が折り返し点Aとなる。
次に、VM1(S1)がVM3(S3)に対してパケット#2を伝送する例について説明する。
符号I2に示すように、パケット#2のDA,SA,DIP(LSB)には、VM3,VM1及び0がそれぞれ設定されている。
SW1のFDB制御部132は、FDBテーブル310を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、SW1のFDBテーブル310にVM3が格納されていないため、SW1のACL制御部122は、ACLテーブル210を参照し、DIP(LSM)=0の場合のアクションを確認する。ここでは、SW1のACLテーブル210にDIP(LSB)=0に対してPort=P3が格納されているため、SW1のACL制御部122は、符号I2に示すようにアクションとしてP3ポートを選択する。すなわち、ACL制御部122は、SW1のP3ポートを介してSW3に対してパケットを伝送させる。
SW3のFDB制御部132は、FDBテーブル310を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、SW3のFDBテーブル310にVM MAC=VM3に対してPort=P2が格納されているため、FDB制御部132は、符号I3に示すようにアクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW3のP2ポートを介してSW2に対してパケットを伝送させる。
図38に示すパケット#2を伝送する例においては、最初にFDBベースのフロー制御を行なうSW3が折り返し点Aとなる。
SW2のFDB制御部132は、FDBテーブル310を参照し、DA=VM3の場合のアクションが格納されているかを確認する。ここでは、SW3のFDBテーブル310にVM MAC=VM3に対してPort=P1が格納されているため、FDB制御部132は、アクションとしてP1ポートからパケットを出力する。すなわち、FDB制御部132は、SW2のP1ポートを介してS3に対してパケットを伝送させる。
〔B−2〕第2変形例
図39は、実施形態の第2変形例としてのネットワークシステムのFat Tree構成におけるフロー制御を説明する図である。
上述した実施形態の一例においてはVXLANのオーバーレイ環境におけるネットワークシステム1について説明したが、本実施形態の第2変形例においてはパケットのカプセル化を行なわずFDBに静的IPルーティングテーブルを使用する場合について説明する。
図39に例示するネットワークシステム1−2は、Fat Tree構成になっており、4つのスイッチ10(SW1〜SW4),コントローラ20及び4つのサーバ装置30(S1〜S4)を備える。
以下、図39を参照しながら説明する際に、特定のスイッチ10を指す場合には、単に「SW1」,「SW2」,「SW3」又は「SW4」と表記する。また、以下、図39を参照しながら説明する際に、特定のサーバ装置30を指す場合には、単に「S1」,「S2」,「S3」又は「S4」と表記する。また、図39では簡単のため省略しているが、DIP(LSB)の値はDIPに対してマスク値0x000000000001でマスクした結果であり、ACL検索の際には前記マスク値によりDIPをマスクしているものとする。
図39に示すようにS1〜S4は、VM33(VM1〜VM4)をそれぞれ展開する。なお、図示する例においては各サーバ装置30が1つのVM33を展開するようになっているが、これに限定されるものではなく、2つ以上のVM33を展開しても良い。
以下、図39を参照しながら説明する際に、特定のVM33を指す場合には、単に「VM1」,「VM2」,「VM3」又は「VM4」と表記する。
まず、コントローラ20の送信部211は、Proactive(事前)にFDB及びACLの
エントリ(FDBテーブル320及びACLテーブル210)を各スイッチ10に対して設定(送信)する。具体的には、送信部211は、メモリ130のFDB記憶部131にFDBテーブル320を格納させ、又、TCAM120のACL記憶部121にACLテーブル210を格納させる。なお、図39においては、SW3及びSW4のACLテーブル210の図示を省略したが、送信部211は、SW3及びSW4に対してもACLテーブル210を設定しても良い。
図39においては、始めにVM1(S1)がVM2(S2)に対してパケット#1を伝送する例について説明し、次にVM1(S1)がVM3(S3)に対してパケット#2を伝送する例について説明する。
符号J1に示すように、パケット#1のDIP,SIP,DIP(LSB)には、VM2IP,VM1IP及び0がそれぞれ設定されている。なお、SIPは、Source IP addressを示している。
SW1のFDB制御部132は、FDBテーブル320を参照し、DIP=VM2IPの場合のアクションが格納されているかを確認する。ここでは、SW1のFDBテーブル320にVM IP=VM2IPに対してPort=P2が格納されているため、FDB制御部132は、アクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW1のP2ポートを介してVM2(S2)に対してパケットを伝送させる。
図39に示すパケット#1を伝送する例においては、最初にFDBベースのフロー制御を行なうSW1が折り返し点Aとなる。
次に、VM1(S1)がVM3(S3)に対してパケット#2を伝送する例について説明する。
符号J2に示すように、パケット#2のDIP,SIP,DIP(LSB)には、VM3IP,VM1IP及び0がそれぞれ設定されている。
SW1のFDB制御部132は、FDBテーブル320を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、SW1のFDBテーブル320にVM3IPが格納されていないため、SW1のACL制御部122は、ACLテーブル210を参照し、DIP(LSM)=0の場合のアクションを確認する。ここでは、SW1のACLテーブル210にDIP(LSB)=0に対してPort=P3が格納されているため、SW1のACL制御部122は、符号J2に示すようにアクションとしてP3ポートを選択する。すなわち、ACL制御部122は、SW1のP3ポートを介してSW3に対してパケットを伝送させる。
SW3のFDB制御部132は、FDBテーブル320を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、SW3のFDBテーブル320にVM IP=VM3IPに対してPort=P2が格納されているため、FDB制御部132は、符号J3に示すようにアクションとしてP2ポートからパケットを出力する。すなわち、FDB制御部132は、SW3のP2ポートを介してSW2に対してパケットを伝送させる。
図39に示すパケット#2を伝送する例においては、最初にFDBベースのフロー制御を行なうSW3が折り返し点Aとなる。
SW2のFDB制御部132は、FDBテーブル320を参照し、DIP=VM3IPの場合のアクションが格納されているかを確認する。ここでは、SW3のFDBテーブル320にVM IP=VM3IPに対してPort=P1が格納されているため、FDB制御部132は、アクションとしてP1ポートからパケットを出力する。すなわち、FDB制御部132は、SW2のP1ポートを介してS3に対してパケットを伝送させる。
〔B−3〕実施形態の第1変形例及び第2変形例による効果
以下、図40を参照しながら、本実施形態の第1変形例及び第2変形例としてのネットワークシステム1−1,1−2により奏することができる効果を説明する。
図40は、従来のネットワークシステムと本実施形態の第1変形例及び第2変形例におけるネットワークシステムとにおける使用エントリ数を示す図である。
図40に示すように、図35に例示したBack to Back構成において、従来のネットワークシステムは、Total #Flow table entries per switchとして1つのスイッチにつき128エントリ消費する。一方、本実施形態の第1変形例及び第2変形例におけるネットワークシステム1−1,1−2は、Total #Flow table entries per switchとして1つのスイッチ10につき18エントリ消費する。
図40に示すように、図36に例示したFat Tree構成において、従来のネットワークシステムは、Total #Flow table entries per switchとして1つのスイッチにつき3584エントリ消費する。一方、本実施形態の第1変形例及び第2変形例におけるネットワークシステム1−1,1−2は、Total #Flow table entries per switchとして1つのスイッチ10につき68エントリ消費する。
このように、本実施形態の第1変形例及び第2変形例におけるネットワークシステム1−1,1−2によっても、上述した実施形態の一例におけるネットワークシステム1と同様に、各スイッチ10における消費エントリ数を削減することができる。
〔B−4〕第3変形例
図41(a)は実施形態の第3変形例としてのスイッチにおけるACLテーブルの書き換え前の状態を例示する図であり、図41(b)はその書き換え後の状態を例示する図である。
本実施形態の第3変形例におけるACLテーブル230は、図41(a),(b)に示すように、図14及び図15に示したACLテーブル200と同様にL4sport及びPortを格納する。
コントローラ20の送信部211は、Proactive(事前)にFDB及びACLのエントリ(図19に示したFDBテーブル300及び図41(a)に示すACLテーブル230)を各スイッチ10に対して設定(送信)する。
例えば、図19に示したSW11のP3ポートとSW21のP1ポートとの間でリンク障害が発生した場合には(図19の符号M2参照)、SW11のリンク状態監視制御部116は、図41(b)に示すように、L4 sport=0についての出力先ポートをPort=P4に書き換える。また、図19の符号M2で示したリンク障害を検知したSW21からリンク障害発生通知を受信したSW12も、図41(b)に示すように、L4 sport=0についての出力先ポートをPort=P4に書き換える。
すなわち、リンク状態監視制御部116は、ACLテーブル230におけるパケットの出力先の通信経路を書き換えることにより、複数の通信経路の切り替えを行なう。
このように、本実施形態の第3変形例におけるネットワークシステム1によっても、上述した実施形態の一例におけるネットワークシステム1と同様に、障害発生時における通信経路の切り替えを効率的に行なえる。
〔C〕付記
(付記1)
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、情報処理システム。
(付記2)
前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記1に記載の情報処理システム。
(付記3)
前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記1又は2に記載の情報処理システム。
(付記4)
当該スイッチ装置は、前記フローテーブルに前記識別情報が登録されている場合には、当該識別情報に対応する出力先ポートに前記パケットを出力する、
ことを特徴とする、付記1〜3のいずれか1項に記載の情報処理システム。
(付記5)
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記1〜4のいずれか1項に記載の情報処理システム。
(付記6)
前記制御部は、前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
ことを特徴とする、付記1〜5のいずれか1項に記載の情報処理システム。
(付記7)
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムが備えるスイッチ装置において、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
を備えることを特徴とする、スイッチ装置。
(付記8)
前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記7に記載のスイッチ装置。
(付記9)
前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記7又は8に記載のスイッチ装置。
(付記10)
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記7〜9のいずれか1項に記載のスイッチ装置。
(付記11)
前記制御部は、前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
ことを特徴とする、付記7〜10のいずれか1項に記載のスイッチ装置。
(付記12)
根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムの制御方法であって、
前記スイッチ装置は、
当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行ない、
当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する、
ことを特徴とする、情報処理システムの制御方法。
(付記13)
当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
ことを特徴とする、付記12に記載の情報処理システムの制御方法。
(付記14)
当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
ことを特徴とする、付記12又は13に記載の情報処理システムの制御方法。
(付記15)
前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
ことを特徴とする、付記12〜14のいずれか1項に記載の情報処理システムの制御方法。
1 ネットワークシステム(情報処理システム)
100 フローリスト
10 スイッチ(スイッチ装置)
11 CPU(コンピュータ)
110 設定部
111 ACL設定部(第1のパケット伝送制御部)
112 FDB設定部(第2のパケット伝送制御部)
115 切り替え制御部
116 リンク状態監視制御部(制御部)
117 スイッチ連携部(通知部)
12 スイッチングモジュール
120 TCAM(第1のパケット伝送制御部)
121 ACL記憶部(第1の記憶部)
122 ACL制御部(第1のパケット伝送制御部)
130 メモリ(第2のパケット伝送制御部)
131 FDB記憶部(第2の記憶部)
132 FDB制御部(第2のパケット伝送制御部)
14 受信ポート
15 送信ポート
16 管理用ポート
2 L2/L3 network
200 ACLテーブル(第1のルール情報)
210 ACLテーブル(第1のルール情報)
220 ACLテーブル(ルール情報)
230 ACLテーブル(ルール情報)
20 コントローラ(ネットワーク制御装置)
21 CPU(コンピュータ)
211 送信部
22 メモリ
23 記憶装置
3 VXLAN network
300 FDBテーブル(第2のルール情報)
310 FDBテーブル(第2のルール情報)
320 FDBテーブル(第2のルール情報)
30 サーバ装置(送受信装置,情報処理装置)
30a 仮想環境
31 APP/OS
32 VTEP
33 VM
40 LAG
50 スイッチ
60 サーバ装置
61 VM
62 VTEP
63 NIC
A 折り返し点

Claims (8)

  1. 根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムにおいて、
    前記スイッチ装置は、
    当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
    当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
    を備えることを特徴とする、情報処理システム。
  2. 前記制御部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、前記フローテーブルを書き換えることで、複数の通信経路の切り替えを行なう、
    ことを特徴とする、請求項1に記載の情報処理システム。
  3. 前記通知部は、当該スイッチ装置に接続されている他のスイッチ装置からの前記通知に基づき、当該スイッチ装置の根ノード側に使用可能な通信経路が無い場合に、当該スイッチ装置に接続されている他のスイッチ装置に前記通知を転送する、
    ことを特徴とする、請求項1又は2に記載の情報処理システム。
  4. 当該スイッチ装置は、前記フローテーブルに前記識別情報が登録されている場合には、当該識別情報に対応する出力先ポートに前記パケットを出力する、
    ことを特徴とする、請求項1〜3のいずれか1項に記載の情報処理システム。
  5. 前記フローテーブルは、前記識別情報と前記出力先ポート情報とを、入力パケットのヘッダ情報の所定の位置に前記出力先ポート情報の数に応じたマスクを適用して得られるマスク適用後のヘッダ情報に対応づけて、ルール情報として格納し、
    当該スイッチ装置は、前記マスク適用後のヘッダ情報に基づいて選択したルール情報に従って前記入力パケットの制御を行なう、
    ことを特徴とする、請求項1〜4のいずれか1項に記載の情報処理システム。
  6. 前記通知部は、前記制御部が前記複数の通信経路の切り替えを行なった場合に、前記複数のスイッチ装置と通信可能に接続されたネットワーク制御装置に、前記切り替えを行なった旨を通知する、
    ことを特徴とする、請求項1〜5のいずれか1項に記載の情報処理システム。
  7. 根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムが備えるスイッチ装置において、
    当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行なう制御部と、
    当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する通知部と、
    を備えることを特徴とする、スイッチ装置。
  8. 根ノードのスイッチ装置と、それぞれ情報処理装置に接続された葉ノードのスイッチ装置とを含む、複数のスイッチ装置がツリー状に接続されたスイッチ装置群を有する情報処理システムの制御方法であって、
    前記スイッチ装置は、
    当該スイッチ装置の前記根ノード側に接続された通信経路上で障害を検知した場合に、前記障害が検知された通信経路を示す識別情報と、パケットの出力先の通信経路を示す出力先ポート情報とを対応づけて格納するフローテーブルに前記識別情報を書き込むことで、複数の通信経路の切り替えを行ない、
    当該スイッチ装置の前記葉ノード側に接続された通信経路上で障害を検知した場合に、当該スイッチ装置に接続されている他のスイッチ装置に障害箇所を通知する、
    ことを特徴とする、情報処理システムの制御方法。
JP2013230394A 2013-11-06 2013-11-06 情報処理システム,スイッチ装置及び情報処理システムの制御方法 Active JP6268943B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013230394A JP6268943B2 (ja) 2013-11-06 2013-11-06 情報処理システム,スイッチ装置及び情報処理システムの制御方法
US14/530,946 US9960955B2 (en) 2013-11-06 2014-11-03 Information processing system, switching device, and method for controlling information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013230394A JP6268943B2 (ja) 2013-11-06 2013-11-06 情報処理システム,スイッチ装置及び情報処理システムの制御方法

Publications (2)

Publication Number Publication Date
JP2015091035A JP2015091035A (ja) 2015-05-11
JP6268943B2 true JP6268943B2 (ja) 2018-01-31

Family

ID=53006946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013230394A Active JP6268943B2 (ja) 2013-11-06 2013-11-06 情報処理システム,スイッチ装置及び情報処理システムの制御方法

Country Status (2)

Country Link
US (1) US9960955B2 (ja)
JP (1) JP6268943B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6434821B2 (ja) * 2015-02-19 2018-12-05 アラクサラネットワークス株式会社 通信装置及び通信方法
US10320568B1 (en) * 2015-06-09 2019-06-11 Google Llc Protocol-independent multi-table packet routing using shared memory resource
CN106330649B (zh) * 2015-06-18 2019-08-02 新华三技术有限公司 一种跨软件定义网络的数据报文转发方法和装置
JP6582723B2 (ja) 2015-08-19 2019-10-02 富士通株式会社 ネットワークシステム、スイッチ装置、及びネットワークシステム制御方法
US10257019B2 (en) * 2015-12-04 2019-04-09 Arista Networks, Inc. Link aggregation split-brain detection and recovery
JP6440640B2 (ja) * 2016-01-07 2018-12-19 三菱電機株式会社 中継装置および経路選択方法
EP3522460B1 (en) * 2016-03-09 2021-12-01 Huawei Technologies Co., Ltd. Flow table processing method and apparatus
CN108075981B (zh) * 2016-11-16 2021-04-09 华为技术有限公司 一种链路状态数据包的传输方法及路由节点
CN109561025B (zh) * 2017-09-27 2022-04-05 华为技术有限公司 一种信息处理方法以及相关设备
JP6778223B2 (ja) * 2018-02-07 2020-10-28 日本電信電話株式会社 機能連携装置、仮想マシン通信システム、および、機能連携方法
JP7119957B2 (ja) * 2018-11-30 2022-08-17 富士通株式会社 スイッチ装置及び障害検知プログラム
CN110784339B (zh) * 2019-10-09 2022-08-26 杭州迪普科技股份有限公司 Lacp报文超时的故障检测方法、装置、电子设备
JPWO2022180666A1 (ja) * 2021-02-24 2022-09-01
WO2022180665A1 (ja) * 2021-02-24 2022-09-01 日本電信電話株式会社 通信システム、通信方法、接続先管理サーバ及びプログラム
CN116866160B (zh) * 2023-09-05 2023-11-21 空间液态金属科技发展(江苏)有限公司 提高航天器网络系统可靠性的设计方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7028098B2 (en) 2001-07-20 2006-04-11 Nokia, Inc. Selective routing of data flows using a TCAM
JP4556761B2 (ja) 2005-05-06 2010-10-06 株式会社日立製作所 パケット転送装置
JP2007208369A (ja) * 2006-01-31 2007-08-16 Fujitsu Ltd ネットワークシステム及びネットワークシステムのノード冗長方法
EP2338258B1 (fr) * 2008-09-16 2013-03-13 France Telecom Technique de protection dans un réseau de communication en mode connecte de noeuds feuilles d'un arbre point à multipoint
JP5621781B2 (ja) 2009-10-06 2014-11-12 日本電気株式会社 ネットワークシステムとコントローラと方法とプログラム
WO2011136807A1 (en) * 2010-04-30 2011-11-03 Hewlett-Packard Development Company, L.P. Method for routing data packets in a fat tree network
US8619546B2 (en) * 2010-08-17 2013-12-31 Alcatel Lucent Method and apparatus for coping with link failures in central control plane architectures
WO2013146808A1 (ja) * 2012-03-28 2013-10-03 日本電気株式会社 コンピュータシステム、及び通信経路変更方法
US20150207675A1 (en) * 2012-08-28 2015-07-23 Nec Corporation Path Control System, Control Apparatus, Edge Node, Path Control Method, And Program

Also Published As

Publication number Publication date
US20150124591A1 (en) 2015-05-07
US9960955B2 (en) 2018-05-01
JP2015091035A (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
JP6268943B2 (ja) 情報処理システム,スイッチ装置及び情報処理システムの制御方法
CN115174470B (zh) 逻辑路由器
JP7462630B2 (ja) 分解されたネットワーク要素を含む論理ルータ
US9363180B2 (en) Service chaining in a cloud environment using Software Defined Networking
JP6221501B2 (ja) ネットワークシステム、その制御方法、ネットワーク制御装置及びその制御プログラム
CN113261240A (zh) 使用可编程客户机进行多租户隔离
US20150030024A1 (en) Systems and methods for a data center architecture facilitating layer 2 over layer 3 communication
EP3210347B1 (en) Pre-built match-action tables
US9716687B2 (en) Distributed gateways for overlay networks
US20180167329A1 (en) System and method for providing a programmable packet classification framework for use in a network device
US20130195113A1 (en) System and Method for Network Switch Data Plane Virtualization
CN106576075A (zh) 虚拟分布式路由环境中的进入ecmp
CN113302898A (zh) 将客户机-设备对等互联的虚拟路由控制器
US10560375B2 (en) Packet flow information invalidation in software-defined networking (SDN) environments
CN106331206A (zh) 域名管理方法及装置
US9258214B2 (en) Optimized distributed routing for stretched data center models through updating route advertisements based on changes to address resolution protocol (ARP) tables
CN109768909B (zh) 报文转发方法和装置
WO2016173196A1 (zh) 地址映射关系的学习方法及装置
US20230113654A1 (en) Managing virtual local area networks (vlans) in multiple data centers
US20240031288A1 (en) Systems and Methods for Stateless Symmetric Forwarding
US11882052B2 (en) Updating flow cache information for packet processing
GB2518020A (en) Method and apparatus providing single-tier routing in a shortest path bridging (SPB) network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170714

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: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171218

R150 Certificate of patent or registration of utility model

Ref document number: 6268943

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150