JP2017028539A - 通信装置、制御装置、及び通信システム - Google Patents
通信装置、制御装置、及び通信システム Download PDFInfo
- Publication number
- JP2017028539A JP2017028539A JP2015146010A JP2015146010A JP2017028539A JP 2017028539 A JP2017028539 A JP 2017028539A JP 2015146010 A JP2015146010 A JP 2015146010A JP 2015146010 A JP2015146010 A JP 2015146010A JP 2017028539 A JP2017028539 A JP 2017028539A
- Authority
- JP
- Japan
- Prior art keywords
- assertion
- communication device
- failure
- registered
- information
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
- H04L12/437—Ring fault isolation or reconfiguration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】テストパケットでは検出できない障害を検出できる通信装置を提供できる。
【解決手段】データを送受信する通信装置であって、通常時に受信しないデータを特定可能な情報を含む障害検出条件が登録されたアサーション情報を記憶し、他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出する。
【選択図】図1
【解決手段】データを送受信する通信装置であって、通常時に受信しないデータを特定可能な情報を含む障害検出条件が登録されたアサーション情報を記憶し、他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出する。
【選択図】図1
Description
本発明は、障害を検出する通信装置に関する。
ネットワークの障害を特定するための技術として特開2013−46090号公報(特許文献1)及びITU-T, "G.8032/Y.1344 Ethernet ring protection switching," Feb.2012(非特許文献1)がある。特許文献1の公報には、「ERPにより障害が検出された場合、障害検出結果とトポロジ情報テーブルに登録されているトポロジ情報とに基づいて、障害の種別(装置障害とリンク障害のいずれか)を判別するとともに、装置障害の場合には障害が発生した装置を特定し、特定結果を上位レイヤ(レイヤ3)に通知する」と記載されている(段落[0030]参照)。
また、非特許文献1には、「As an example, the ring links of each Ethernet ring node may be monitored by individually exchanging continuity check messages (CCM)」と記載されている(9頁参照)。
ITU-T, "G.8032/Y.1344 Ethernet ring protection switching," Feb.2012
ネットワークの信頼性を向上させるためにネットワーク障害を検出する必要がある。特許文献1には、ERP(Ethernet Ring Protection(Ethernetは登録商標))を用いて障害を検出する方法が記載されている。また、ERPを規定している非特許文献1には、疎通確認用のメッセージであるCCМ(Continuity Check Message)を定期的に送受信することによって、リンクの障害を検出する方法が記載されている。
しかしながら、特許文献1及び非特許文献1の技術では、CCMのようなテストパケットの送受信によっては検出できない障害を想定していない。例えば、半導体の微細化で顕在化してきている宇宙線によるハードウェア故障が発生している場合、CCM等のテストパケットの送受信には問題がなくても、テストパケットと以外のユーザパケットの送受信で障害が発生し得る。
本発明の目的は、テストパケットでは検出できない障害を検出できる通信装置を提供することである。
上記課題を解決するために、本発明は、データを送受信する通信装置であって、通常時に受信しないデータを特定可能な情報を含む障害検出条件が登録されたアサーション情報を記憶し、他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出することを特徴とする。
本発明によれば、テストパケットでは検出できない障害を検出できる通信装置を提供できる。
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
以下、本発明の実施例を図面に基づいて説明する。各図における同一符号は同一物又は相当物を示す。説明の都合上、符号に添え字を追加して区別することがある。
本発明は以下の実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
本明細書で引用した刊行物、特許および特許出願は、そのまま本明細書の説明の一部を構成する。
実施例1について、図1〜図25を用いて説明する。
図1は、実施例1の通信システムの構成を示すブロック図である。
本実施例の通信システムは、通信装置100及び制御装置200を有する。通信装置100と制御装置200とは制御ネットワーク300を介して互いに接続される。通信装置100は、複数の通信装置100によって構成されるネットワーク310を介して互いに接続される。本実施例の通信装置が有する通信装置100及び制御装置200の数は、図1に示す数に限定されない。
通信装置100は、自身に接続された通信装置との間でデータを通信する。通信装置100は、管理インタフェース(I/F)110、スイッチ部120、アサーション部130、通信インタフェース(I/F)170を有する。管理I/F110は、制御装置200に接続されるネットワーク300に通信装置100を接続するインタフェースである。通信I/F170は、他の通信装置等に接続されるネットワーク310に通信装置100を接続するインタフェースである。管理I/F110及び通信I/F170は、Ethernet又はInfiniband(登録商標)等、同じインタフェース同士を接続する。
スイッチ部120は、フローテーブル制御部121、トラフィック統計計測部122、フローテーブル123、及びグループテーブル124を有する。スイッチ部120は、OpenFlow(登録商標)スイッチの機能を有し、フローテーブル123を参照し、受信したデータを転送する。
また、アサーション部130は、アサーション制御部131、アサーションテーブル132、アサーションメモリ133、及びパケットバッファ134を有する。アサーション部130は、受信したデータとアサーションテーブル132とに基づいて障害が発生していないか否かを判定する。
さらに、通信装置100は、CPU140、TCAM(Ternary Content Addressable Memory)150、及びメモリ160を有する。CPU140は、フローテーブル制御部121、トラフィック統計計測部122、及びアサーション制御部131を有し、TCAM150は、フローテーブル123及びアサーションテーブル132を記憶し、メモリ160は、グループテーブル124、アサーションメモリ133、及びパケットバッファ134を有する。
まず、スイッチ部120の構成について説明する。
フローテーブル制御部121は、制御装置200からの指示に基づいて、フローエントリをフローテーブル123に登録し、制御装置200からの指示に基づいて、フローテーブル123からフローエントリを削除する。トラフィック統計計測部122は、通信装置100が受信したデータの統計情報を計測する。受信したデータの統計情報は、例えば、パケット数及びバイト数等である。フローテーブル制御部121及びトラフィック統計計測部122は、CPU140がプログラムを実行することによって実現されるが、これに限定されず、FPGA(Field Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてもよい。
フローテーブル123には、受信したデータに関する条件と、当該条件と一致するデータに対するアクションと、当該条件と一致するデータの統計情報とを含むフローエントリが登録される。通信装置100は、データを受信した場合、フローテーブル123を参照し、受信したデータと一致するフローエントリを検索し、検索したフローエントリのアクションを実行することによって、受信したデータを他の通信装置等に転送する。なお、フローテーブル123の詳細は図3で説明する。
グループテーブル124には、フローテーブル123に登録されたフローエントリのアクションに関する詳細な情報が登録される。なお、グループテーブル124の詳細は図4で説明する。
次に、アサーション部130の構成について説明する。
アサーション制御部131は、アサーションテーブル132にエントリに登録し、アサーションテーブル132からエントリを削除する。また、アサーション制御部131は、障害を検出した場合、パケットバッファ134を制御する。なお、アサーション制御部131は、CPU140がプログラムを実行することによって実現されるが、これに限定されず、FPGA(Field Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてもよい。
アサーションテーブル132には、受信したデータに関して、障害を検出するための条件(アサーション)が登録される。通信装置100がデータを受信した場合、最初にアサーション部130がアサーションテーブル132を参照し、受信したデータがアサーションテーブル132に登録された条件と一致するか否かを判定して、障害が発生したか否かを判定する。アサーション部130によって障害が発生していないと判定された場合、スイッチ部120がフローテーブル123を参照して、受信したデータを転送する。なお、アサーションテーブル132の詳細は、図5で説明する。
アサーションメモリ133には、アサーションテーブル132に登録され得るアサーションが登録される。
アサーションテーブル132は、受信したデータと一致する条件を検索する処理を高速化するためにTCAM150に記憶される。TCAM150は、一般に価格が高く、消費電力も大きいため、記憶容量が大きなTCAM150を用意することは困難である。本発明では、TCAM150より価格が安く、記憶容量も大きいメモリ160が有するアサーションメモリ133にアサーションを登録しておき、アサーションの優先度に基づいてアサーションテーブル132に登録するアサーションを決定し、決定したアサーションがアサーションテーブル132に書き込む。これによって、従来のTCAM150の記憶容量のままで、優先度の高いアサーションをアサーションテーブル132に書き込むため、通信装置100の製造コストが高くなることを防止できる。
パケットバッファ134には、アサーション部130が障害と疑われるパケットを検出した場合、当該パケットの障害が確定するまでの間、当該パケットが記憶される。
次に、制御装置200について説明する。
制御装置200は、CPU210、メモリ220、管理I/F230、入力デバイス(不図示)及び出力デバイス(不図示)を有する。入力デバイスは例えばキーボード及びマウス等であり、出力デバイスは例えばディスプレイ等である。管理I/F230は、ネットワーク300に接続されるインタフェースである。
CPU210は、アサーション生成部211、アサーション制御部212、コンフィグ制御部213、及び障害特定部214を有する。アサーション生成部211、アサーション制御部212、コンフィグ制御部213、及び障害特定部214は、CPU210がプログラムを実行することによって実現されるが、これに限定されず、FPGA(Field Programmable Gate Array)又はASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてもよい。メモリ220には、アサーションデータベース(DB)221、アサーション優先度データベース(DB)222、コンフィグデータベース(DB)223、及びトポロジデータベース(DB)224が記憶される。
アサーション生成部211は、アサーションの生成対象となる通信装置100に接続された通信装置100のフローテーブル123及びグループテーブル124を参照してアサーションを生成し、生成したアサーションをアサーションDB221に登録する。アサーション生成部211の生成処理の詳細は、図10〜図12で説明する。
アサーション制御部212は、通信装置100のアサーションテーブル132に登録されているアサーションを管理し、通信装置100が受信したデータの統計情報を収集する。また、アサーション制御部212は、アサーションDB221に登録されたアサーションのアサーションメモリ133への登録指示を、管理I/F230を介して通信装置100に送信する。
コンフィグ制御部213は、コンフィグDB223に登録された通信装置100のフローテーブルの内容、及びグループテーブルの内容の通信装置100のフローテーブル123及びグループテーブル124への登録指示を、管理I/F230を介して通信装置100に送信する。
障害特定部214は、通信装置100が障害を検出した場合、トポロジDB224を参照し、障害が発生した箇所を特定する。障害特定部214の障害特定処理の詳細は、図Xで説明する。
アサーションDB221には、各通信装置100のアサーションメモリ133に登録されるアサーションが登録される。アサーションDB221の詳細は図6で説明する。アサーション優先度DB222には、アサーションの種別に対応する優先度の初期値が登録される。アサーション優先度DB222の詳細は図7で説明する。なお、この初期値は、管理者によって任意に設定される。管理者は、一般的には、障害発生時のネットワークに与える影響の大きいアサーションの種別ほど初期値が高くなるように、アサーション優先度DB222を設定する。
コンフィグDB223には、通信装置100のフローテーブル123及びグループテーブル124の内容が登録される。コンフィグDB223の詳細は図8で説明する。トポロジDB224には、通信装置100の接続関係を示すトポロジデータが登録される。トポロジDB224の詳細は図9で説明する。
図2は、実施例1のネットワーク310の構成例の説明図である。
ネットワーク310は、通信装置(SW1)100A〜通信装置(SW5)100Eによって構築される。各通信装置(SW1)100A〜通信装置(SW5)100Eは、ネットワーク300を介して制御装置200に接続される。
図2では、通信装置(SW1)100AのPort1/1と通信装置(SW2)100BのPort1/1とが接続され、通信装置(SW2)100BのPort2/1と通信装置(SW3)100CのPort2/1とが接続され、通信装置(SW3)100CのPort3/1と通信装置(SW4)100DのPort3/1とが接続され、通信装置(SW4)100DのPort4/1と通信装置(SW1)100AのPort4/1とが接続され、通信装置(SW5)100EのPort5/1と通信装置(SW1)のPort5/1とが接続される。
通信装置(SW1)100A〜通信装置(SW5)100Eによって構築されるネットワーク310のトポロジはリングトポロジであり、通信装置(SW1)100AのPort1/1はブロッキングポートとして動作し、通常、通信装置(SW2)100BのPort1/1は、通信装置(SW1)のPort1/1からデータを受信しない。
図3は、実施例1の通信装置(SW1)100Aのフローテーブル123の説明図である。
フローテーブル123は、Match Field301、Action302、及びStatistics303を含む。Match Field301には、条件が登録される。Action302には、通信装置100が受信したデータがMatch Field301に登録された条件と一致した場合の処理内容が登録される。Statistics303には、Match Field301に登録された条件と一致したデータの統計情報が登録される。Statistics303はトラフィック統計計測部122によって更新される。なお、Match Field301、Action302、及びStatistics303の内容は、OpenFlowに基づく。
「#1」のフローエントリでは、入力ポートがPort1/1であって、かつVLANが「100」であるデータを、出力ポート「Blocking」に転送することを定義している。出力ポート「Blocking」は、リングトポロジの特殊のポートとして定義され、正常時においては、受信したデータをパケットの出力を停止し、リング切替時においては、出力ポート「Normal」と同じく、受信したデータをL2スイッチのFDB(Forwarding DataBase)に基づいて転送する。具体的には、FDBが未学習である場合、受信したデータは、同じVLANが入力ポートの条件として定義されているポートにフラッディングされ、FDBが学習済みである場合、受信したデータは、学習した出力ポートへ転送される。
「#2」のフローエントリでは、入力ポートがPort4/1であって、かつVLANが「100」であるデータを、出力ポート「Normal」に転送することを定義している。「Normal」宛ての転送は、通信装置100に依存した転送であることがOpenflowの仕様で規定されている。本実施例では、「Normal」宛ての転送は、受信したデータをL2スイッチのFDBに基づいて転送する。
図4は、実施例1の通信装置(SW1)100Aのグループテーブル124の説明図である。
グループテーブル124は、Group Type401及びAction402を含む。
Group Type401には、グループの種別が登録される。Action402には、グループのアクションが登録される。Group Type401及びAction402の内容は、OpenFlowに基づく。
フローテーブル123に登録されたフローエントリのAction302にグループの種別が登録されている場合、通信装置(SW1)100Aはグループテーブル124を参照し、Group Type401に当該グループの種別が登録されたエントリのAction402に登録されたアクションの処理内容を受信したデータに実行する。
「#1」のエントリでは、グループの種別が「Fast Failover」であるアクションが、通常時においては、Port4/1をウォッチし、出力ポートがPort4/1であり、障害時においては、Port5/1をウォッチし、出力ポートがPort5/1であることを示す。
図5は、実施例1の通信装置(SW2)100Bのアサーションテーブル132の説明図である。
アサーションテーブル132は、Match Field501、Condition502、Time Limit503、Action504、及びPriority505を含む。なお、アサーションテーブル132に登録されたエントリをアサーションという。
Match Field501には、障害を検出するための受信したデータに関する条件が登録される。Condition502には、障害を検出するためのトポロジの状態に関する条件が登録される。例えば、Condition502には、Ring Active、Ring Standby、Redundant Active、Redundant Active、又はRedundant Standby等が登録される。Ring Activeは、リングトポロジが正常状態であることを示し、Ring Standbyは、リングトポロジが冗長系に切り替わったことを示し、Redundant Activeは、冗長化された経路のトポロジが正常状態であることを示し、Redundant Standbyは、冗長化された経路のトポロジが冗長経路に切り替わったことを示す。また、トポロジの状態が障害を検出するための条件として不要である場合、Condition502にはAlwaysが登録される。Condition502にTime Limitが登録された場合、Time Limit503に登録された時間が経過した場合、受信すべきデータが受信していないことが、障害を検出するための条件となる。
Time Limit503には、周期的に送信されるデータの障害を検出するための条件として、当該データの受信間隔等が登録される。なお、Time Limit503に「0」が登録されている場合、障害を検出するための条件として、データの受信間隔等は考慮しないことを示す。
Action504には、Match Field501、Condition502、及びTime Limit503に登録された障害を検出するための条件と一致した場合の障害の種別がアクションとして登録される。例えば、Action504には、Loop Failure、Redundant Failure、Routing Failure、又はLink Failure等が登録される。Loop Failureは、リングトポロジのネットワークにおいてループが発生している障害を示す。Redudant Failureは、冗長化された経路のトポロジのネットワークにおいて、冗長経路において障害な入力があったことを示す。Routing Failureは、不正な転送があったことを示す。Link Failureは、疎通障害があったことを示す。
Priority505には、アサーションの優先度が登録される。Priority505に登録される優先度は、アサーション間の相対的な優先度を示す値を表現できればよい。本実施例では、Priority505に登録される値は、16ビットの符号なし整数0〜65535であるものとし、0は常にアサーションテーブル132に登録することを示す。
図5に示す通信装置(SW2)100Bのアサーションテーブル132には、Loop Failureを検出する条件(障害検出条件)として、通信装置(SW2)100Bが受信したデータの入力ポートがPort1/1であって、当該データのVLANが「100」であって、かつ、当該データの受信時のトポロジの状態がRing Activeであるという条件が登録される。図2で説明したように、通信装置(SW2)100BのPort1/1には、Ring Activeである場合(通常時)、データが入力されない。このように、障害検出条件は、通常時に通信装置100が受信しないデータを特定可能な情報を含み、当該データの特定可能な情報として、通常時にデータが入力されないポートの識別子を含むものである。
通信装置100のアサーションテーブル132に、通常時に受信しないデータを特定可能な情報を含む障害検出条件がアサーションエントリとして登録される。これによって、通信装置100に接続される通信装置100の予期しない障害、及び管理者等の経路の誤設定を検出することができ、テストパケットで検出されない障害が発生した場合であっても、受信したデータが障害検出条件を満たせば、当該障害を検出できる。また、複数の通信フローを個別に検出することで、障害の特定を容易にすることができる。また、障害検出条件はデータが入力されないポートの識別子を含むので、入力されないデータが入力されたというテストパケットで検出されない障害を検出できる。
次に、図6〜図9Bを用いて、制御装置200の各種データベース221〜224について説明する。
図6は、実施例1のアサーションDB221の説明図である。
アサーションDB221は、Flow Entry601、Target Switch602、Match Field603、Condition604、Time Limit605、Action606、及びPriority607を含む。
Flow Entry601には、アサーションの生成に用いたフローエントリが登録されたフローテーブル123が記憶された通信装置100の識別子と、当該フローエントリの識別子とが登録される。Target Switch602には、アサーションを設定する通信装置100の識別子が登録される。Match Field603〜Priotity607は、アサーションテーブル132のMatch Field501〜Priotity505と同じであるので説明を省略する。
アサーション制御部212は、Target Switch602に登録された識別子によって識別される通信装置100に、Match Field603〜Priority607に登録された情報を含むアサーションを設定する。具体的には、アサーション制御部212は、トポロジDB224に含まれる通信装置管理テーブル224Aを参照して、Target Switch602に登録された識別子によって識別される通信装置100のアドレスを取得する。そして、アサーション制御部212は、取得したアドレスを宛先として、Match Field603〜Priority607に登録された情報を含むアサーションを管理I/F230から送信する。
なお、アサーションDB221に登録されるアサーションは、アサーション生成部211によって自動的に生成されてもよいし、管理者等によって、フェールセーフ設定又はデバッグのために手動で生成されてもよい。なお、アサーションが手動で設定される場合、管理者等は、キーボード又はマウス等の入力デバイスを用いてアサーションの内容を制御装置200に入力する。
図7は、実施例1のアサーション優先度DB222の説明図である。
アサーション優先度DB222は、Assertion Action701、及びPriority702を含む。
Assertion Action701には、アサーションテーブル132のCondition502に登録される障害の種別が登録される。Priority702には、各障害の種別の優先度が登録される。Priority702に登録される優先度は、障害による影響又は各障害の発生確率等を考慮して管理者によって登録される。
アサーション優先度DB222は、アサーション生成部211によってアサーションが生成される場合に利用される。
図8Aは、実施例1のコンフィグDB223に含まれるフローテーブル223Aの説明図である。
コンフィグDB223に含まれるフローテーブル223Aには、各通信装置100が保持するフローテーブル123の内容が登録される。
フローテーブル223Aは、Switch801、Match Field802、Action803、Statistics804、及びInterval805を含む。
Switch801には、フローテーブル223Aのエントリに登録されたフローエントリが登録されたフローテーブル123を保持する通信装置100の識別子が登録される。Match Field802〜Statistics804は、フローテーブル123のMatch Field301〜Statistics303と同じであるので、説明を省略する。Interval805には、Match Field802に登録された条件と一致するデータの送信間隔が登録される。
Interval805は、アサーション生成部211がアサーションを生成する場合にのみ利用されるものであるので、通信装置100が保持するフローテーブル123に含まれない。Interval805に登録された送信間隔を考慮してアサーションが生成されることによって、周期的に送信されるデータの検証も可能となる。また、Statistics804は、アサーション制御部212によって更新される。
コンフィグ制御部213は、トポロジDB224に含まれる通信装置管理テーブル224Aを参照して、Switch801に登録された識別子によって識別される通信装置100のアドレスを取得する。そして、アサーション制御部212は、取得したアドレスを宛先として、Match Field802及びAction803に登録された情報を含むフロー情報を管理I/F230から送信して、各通信装置100にフロー情報を設定する。なお、制御装置200は、通信装置100によって更新されたフローテーブル123のStatistics303の値を収集し、収集した値をコンフィグDB223のフローテーブル223AのStatistics804に登録する。Statistics804の値は、フローテーブル223Aの設定時には設定されない。
図8Bは、実施例1のコンフィグDB223に含まれるグループテーブル223Bの説明図である。
コンフィグDB223に含まれるグループテーブル223Bには、各通信装置100が保持するグループテーブル124の内容が登録される。
グループテーブル223Bは、Switch811、Group Type812、及びAction813を含む。
Switch811には、グループテーブル223Bのエントリに登録されたグループテーブル124を保持する通信装置100の識別子が登録される。Group Type812及びAction813は、グループテーブル124のGroup Type401及びAction402と同じであるので、説明を省略する。
コンフィグ制御部213は、トポロジDB224に含まれる通信装置管理テーブル224Aを参照して、Switch811に登録された識別子によって識別される通信装置100のアドレスを取得する。そして、アサーション制御部212は、取得したアドレスを宛先として、Group Type812及びAction813に登録された情報を含むグループ情報を管理I/F230から送信して、通信装置100にグループテーブルを設定する。
コンフィグDB223に含まれるフローテーブル223A及びグループテーブル223Bは、管理者等によって設定される。
図9Aは、実施例1のトポロジDB224に含まれる通信装置管理テーブル224Aの説明図である。
通信装置管理テーブル224Aには、制御装置200が管理する通信装置100の識別子と当該通信装置100のアドレスとの対応付けが登録される。
通信装置管理テーブル224Aは、装置901及び管理アドレス902を含む。装置901には、制御装置200が管理する通信装置100の識別子が登録される。管理アドレス902には、制御装置200が管理する通信装置100の管理用のアドレスが登録される。通信装置100の管理用のアドレスは、アサーション制御部212、コンフィグ制御部213、及び障害特定部214が通信装置100にアクセスする場合に必要となる。
図9Bは、実施例1のトポロジDB224に含まれるトポロジテーブル224Bの説明図である。
トポロジテーブル224Bには、複数の通信装置100間の接続関係が登録される。トポロジテーブル224Bは、装置A911、ポートA912、属性A913、装置B914、ポートB915、及び属性B916を含む。
装置A911には、接続元の通信装置100の識別子が登録される。装置B914には、接続先の通信装置100の識別子が登録される。ポートA912には、接続元の通信装置100の接続先の通信装置100に接続されたポートの識別子が登録される。ポートB915には、接続先の通信装置100の接続元の通信装置100に接続されたポートの識別子が登録される。属性A913及び属性B916には、接続元の通信装置100と接続先と通信装置100との間のネットワークトポロジが登録される。
なお、接続元の通信装置100と接続先の通信装置100とは双方向に接続されるものとする。
トポロジDB224に含まれる通信装置管理テーブル224A及びトポロジテーブル224Bは、管理者等によって設定される。
次に、アサーション生成部211によって実行されるアサーションテーブル生成処理について、図10〜図12を用いて説明する。
図10は、実施例1のアサーション生成処理のフローチャートである。
まず、アサーション生成部211は、アサーションテーブル132を生成する対象となる通信装置100(通信装置X)の識別子の入力を管理者等から受け付ける(1001)。
次に、アサーション生成部211は、トポロジDB224に含まれるトポロジテーブル224Bを参照し、処理対象の通信装置Xの全てのポートの識別子をポートリストLとして取得する(1002)。具体的には、アサーション生成部211は、トポロジテーブル224Bの装置A911に処理対象の通信装置Xの識別子が登録されたエントリのポートA912に登録されたポートの識別子を取得し、装置B914に処理対象の通信装置Xの識別子が登録されたエントリのポートB915に登録されたポートの識別子を取得する。
次に、アサーション生成部211は、ステップ1002の取得したポートリストLに含まれるポートの識別子から処理対象となるポート(ポートP)の識別子を選択し、ステップ1004〜1013の処理を実行する(1003)。なお、ステップ1004〜1013の処理は、ポートリストLに含まれる全てのポートの識別子に実行されるまで繰り返される。
アサーション生成部211は、トポロジDB224に含まれるトポロジテーブル224Bを参照し、処理対象の通信装置Xのステップ1003の処理で選択した処理対象となるポートPに接続された通信装置Uの識別子と当該通信装置UのポートQの識別子とを取得する(1004)。
具体的には、アサーション生成部211は、トポロジテーブル224Bの装置A911に処理対象の通信装置Xの識別子が登録され、かつポートA912に処理対象のポートPの識別子が登録されたエントリが存在する場合、当該エントリの装置B914に登録された識別子を通信装置Uの識別子として取得し、当該エントリのポートB915に登録された識別子をポートQの識別子として取得する。同様に、アサーション生成部211は、トポロジテーブル224Bの装置B914に処理対象の通信装置Xの識別子が登録され、かつポートB915に処理対象のポートPの識別子が登録されたエントリが存在する場合、当該エントリの装置A911に登録された識別子を通信装置Uの識別子として取得し、当該エントリのポートA912に登録された識別子をポートQの識別子として取得する。
次に、アサーション生成部211は、処理対象の通信装置Xのアサーションを格納するためのアサーションリスト(変数A)を初期化する(1005)。
次に、アサーション生成部211は、コンフィグDB223に含まれるフローテーブル223Aから通信装置Uに対応する全てのフローエントリをフローテーブルFとして取得し、グループテーブル223Bから通信装置Uに対応する全てのエントリをグループテーブルGとして取得する(1006)。
具体的には、アサーション生成部211は、フローテーブル223Aを参照し、Switch801に通信装置Uの識別子が登録された全てのエントリをフローテーブルFとして取得する。また、アサーション生成部211は、グループテーブル223Bを参照し、Switch811に通信装置Uの識別子が登録された全てのエントリをグループテーブルGとして取得する。
次に、アサーション生成部211は、ステップ1006の処理で取得したフローテーブルFから処理対象のフローエントリEを選択し、ステップ1008及び1009の処理を実行する(1007)。ステップ1008及び1009の処理は、ステップ1006の処理で取得した全てのフローエントリに実行されるまで繰り返される。
アサーション生成部211は、ステップ1007の処理で選択したフローエントリEを参照して、通信装置UのポートQがブロッキングポートであるか否かを判定するブロッキングポート判定処理を実行する(1008)。ブロッキング判定処理は、フローエントリE及びポートQの識別子が引数として入力される。ブロッキングポート判定処理の詳細は図11で説明する。
ステップ1006の処理で取得した全てのフローエントリにステップ1008の処理が実行されていなければ、アサーション生成部211は、ステップ1007の処理に戻り、新たな処理対象のフローエントリEを選択し、ステップ1006の処理で取得した全てのフローエントリにステップ1008の処理が実行されていれば、アサーション生成部211は、ステップ1010の処理に進む(1009)。
ステップ1007〜1009の処理では、アサーション生成部211は、通信装置Uの各フローエントリに対して、ポートQがブロッキングポートであるか否かを判定する。
ステップ1006の処理で取得した全てのフローエントリにステップ1008の処理が実行された場合、アサーション生成部211は、ステップ1006の処理で取得したフローテーブルFから処理対象のフローエントリEを選択し、ステップ1011及び1012の処理を実行する(1010)。ステップ1011及び1012の処理は、ステップ1006の処理で取得した全てのフローエントリに実行されるまで繰り返される。
アサーション生成部211は、ステップ1010の処理で選択したフローエントリEに基づいて、通信装置Xのアサーションエントリを生成するアサーションエントリ生成処理を実行する(1011)。アサーションエントリ生成処理の詳細は図12で説明する。
次に、ステップ1006の処理で取得した全てのフローエントリにステップ1011の処理が実行されていなければ、アサーション生成部211は、ステップ1010の処理に戻り、新たな処理対象のフローエントリEを選択し、ステップ1006の処理で取得した全てのフローエントリにステップ1010の処理が実行されていれば、アサーション生成部211は、ステップ1013の処理に進む(1012)。
ステップ1013の処理では、アサーション生成部211は、ステップ1002の処理で取得したポートリストLに含まれるポートの識別子に対してステップ1004〜1012の処理が実行されていれば、アサーションテーブル生成処理を終了し、ステップ1002の処理で取得したポートリストLに含まれるポートの識別子に対してステップ1004〜1012の処理が実行されていなければ、ステップ1003の処理に戻り、ポートリストLに含まれるポートの識別子から新たな処理対象となるポート(ポートP)の識別子を選択する(1013)。
図11は、実施例1のブロッキングポート判定処理のフローチャートである。ブロッキングポート判定処理は、アサーションテーブル132を生成する対象となる通信装置XのポートPに接続された通信装置UのポートQがブロッキングポートであるか否かを判定する処理であり、フローエントリE及びポートQの識別子を引数とする。
まず、アサーション生成部211は、フローエントリEのMatch Field802の入力ポートがポートQの識別子であるか否かを判定する(1101)。
ステップ1101の処理で、フローエントリEのMatch Field802の入力ポートがポートQの識別子でないと判定された場合(1101:No)、当該フローエントリEはポートQに関するものでないので、アサーション生成部211は、ブロッキングポート判定処理を終了する。
一方、ステップ1101の処理で、フローエントリEのMatch Field802の入力ポートがポートQの識別子であると判定された場合(1101:Yes)、アサーション生成部211は、フローエントリEのAction803にOutputが登録され、かつAction803に出力ポート「Blocking」が登録されているか否かを判定する(1102)。
ステップ1102の処理で、フローエントリEのAction803にOutputが登録され、かつAction803に出力ポート「Blocking」が登録されていない場合、ポートQはブロッキングポートでないので、アサーション生成部211は、ブロッキングポート判定処理を終了する。
一方、ステップ1102の処理で、フローエントリEのAction803にOutputが登録され、かつAction803に出力ポート「Blocking」が登録されている場合、ポートQがブロッキングポートであるので、アサーション生成部211は、ポートQをブロッキングポートとしてマークして(1103)、ブロッキングポート判定処理を終了する。
図12は、実施例1のアサーションエントリ生成処理のフローチャートである。アサーションエントリ生成処理は、アサーションテーブル132を生成する対象となる通信装置XについてポートPのアサーションエントリを、当該ポートPに接続された通信装置UのフローエントリEに基づいて生成する処理である。アサーションエントリ生成処理は、アサーションリストA、通信装置XのポートPの識別子、通信装置UのポートQの識別子、フローエントリE、及びグループテーブルGを引数とする。
まず、アサーション生成部211は、フローエントリEを参照し、第1条件〜第5条件で処理を分岐させる(1201)。
第1条件について説明する。第1条件は、フローエントリEのAction803にグループテーブルを参照する旨が登録され、グループテーブルGのGroup Type812にFast Failoverが登録され、Action813のBucket2の出力ポートがポートQと一致するという条件である。フローエントリEが第1条件を満たす場合、通信装置XのポートPと通信装置UのポートQとの接続は、障害時にデータが通信される冗長接続である。正常時においては冗長接続を介してデータが通信されないので、正常時に通信装置XのポートPにデータが入力されると、冗長化に関する障害が発生したことになる。したがって、フローエントリEが第1条件を満たす場合、アサーション生成部211は、冗長化に関する障害を検出するためのアサーションエントリaを生成し(1202)、ステップ1206の処理に進む。
ステップ1202の処理で生成されるアサーションエントリaでは、ConditionにRedundant Activeが登録され、Time Llimitに0が登録され、ActionにRedundant Failureが登録される。
第2条件について説明する。第2条件は、フローエントリEのAction803にOutputが登録され、かつ、ポートQがブロッキングポートであるという条件である。フローエントリEが第2条件を満たす場合、通信装置XのポートPと接続された通信装置UのポートQがブロッキングポートであるという条件である。正常時においてポートPにポートQからデータが入力されることはなく、正常時にポートPにデータが入力された場合、リングトポロジにおいてループ障害が発生したことになる。したがって、フローエントリEが第2条件を満たす場合、アサーション生成部211は、リングトポロジにおけるループ障害を検出するためのアサーションエントリaを生成し(1203)、ステップ1206の処理に進む。
ステップ1203の処理で生成されるアサーションエントリaでは、ConditionにRing Activeが登録され、Time Llimitに0が登録され、ActionにLoop Failureが登録される。
なお、第1条件及び第2条件を満たす場合に生成されるアサーションエントリaは、どちらも正常時に待機系経路にデータが入力されたことによる冗長ネットワークの障害を検出するものである。
第3条件について説明する。第3条件は、フローエントリEのAction803にOutputが登録され、かつ、出力ポートがNormal以外であってポートQと異なるという条件である。フローエントリEが第3条件を満たす場合、通信装置UのポートQからデータが出力されないため、通信装置XのポートPにはポートQからデータが入力されない。このため、通信装置XのポートPにデータが入力された場合、通信装置Uでルーティング障害が発生したことになる。したがって、フローエントリEが第3条件を満たす場合、アサーション生成部211は、ルーティング障害を検出するためのアサーションaを生成し(1204)、ステップ1206の処理に進む。
ステップ1204の処理では、アサーション生成部211は、アサーションエントリaのConditionにAlwaysを登録し、Time Llimitに0を登録し、ActionにRouting Failureを登録する。
第4条件について説明する。第4条件は、フローエントリEのMatch Field802の入力ポートがControllerであって、Interval805に0以外の値が登録され、かつ出力ポートがポートQであるという条件である。フローエントリEが第4条件を満たす場合、通信装置XのポートPには、ポートQからInterval805に登録された値が示す時間間隔でデータが入力されることになる。このため、ポートPが当該時間間隔でポートQからデータが入力されない場合、リンク障害が発生したことになる。したがって、フローエントリEが第4条件を満たす場合、アサーション生成部211は、リンク障害を検出するためのアサーションエントリaを生成し(1205)、ステップ1206の処理に進む。
ステップ1205の処理で生成されるアサーションエントリaでは、ConditionにTime Limitが登録され、Time LlimitにフローエントリのInterval805に登録された値が登録され、ActionにLink Failureが登録される。
第5条件について説明する。第5条件は、フローエントリEが第1条件〜第4条件を満たさないという条件である。フローエントリEが第5条件を満たす場合、アサーション生成部211は、アサーションエントリ生成処理を終了する。
ステップ1202〜1205の処理を実行した場合、アサーション生成部211は、生成したアサーションエントリaのMatch Fieldの入力ポートにポートQの識別子を登録し、フローエントリEのMatch Field802に登録された入力ポート以外の値をアサーションエントリaのMatch Fieldに登録する(1206)。
次に、アサーション生成部211は、アサーション優先度DB222を参照し、アサーションaのActionに登録された障害の種別がAssertion Action701に登録されたエントリのPriority702に登録された優先度を取得する(1207)。そして、アサーション生成部211は、ステップ1207の処理で取得した優先度をアサーションエントリaのPriorityに登録する。また、アサーション生成部211は、アサーションエントリaのFlow Entryに通信装置Uの識別子とフローエントリEの識別子とを登録し、Target Switchには通信装置Xの識別子を登録する。
次に、アサーション生成部211は、アサーションリストAに生成したアサーションエントリaを追加し(1208)、アサーション生成処理を終了する。
以上によって、制御装置200は、通信装置Xのアサーションを生成する場合、当該通信装置XのあるポートPに接続された通信装置UのフローテーブルFのフローエントリEが所定の条件を満たす場合、アサーションエントリを生成する。そして、制御装置200は、生成したアサーションエントリのMatch Fieldに障害を検出するための条件として、通信装置XのポートPの識別子を登録する。これによって、管理者がアサーションテーブル132を生成する処理対象の通信装置100を指定するだけで、アサーションエントリが自動的に生成されるので、管理者の負担を軽減できる。また、人手によって生成されたアサーションエントリと比較して、正確に障害を検出することができ、ネットワークの信頼性を向上させることができる。また、生成したアサーションエントリには障害の種別に対応する優先度が付与されるので、通信装置100は、優先度に基づいてアサーションエントリをアサーションテーブル132に書き込むことができる。
次に、図10に示すアサーション生成処理について図2を用いて具体的に説明する。
ステップ1001の処理で、アサーションテーブル132を生成する通信装置Xとして、通信装置(SW2)100Bの識別子が入力される。
ステップ1002の処理では、ポートリストLとして、通信装置(SW2)100Bのポートの識別子(Port1/1、及びPort2/1)が取得される。
ステップ1003の処理では、ポートPの識別子としてPort1/1が選択され、ステップ1004の処理では、通信装置(SW2)100BのPort1/1に接続される通信装置(SW1)100Aが通信装置Uとして取得され、当該通信装置(SW1)100AのPort1/1がポートQの識別子として取得される。
ステップ1005の処理では、アサーションリストAが初期化され、ステップ1006の処理では、通信装置(SW1)100AのフローテーブルFとして、図8Aに示すフローテーブル223Aの「#1」のフローエントリが取得され、及び図8Bに示すグループテーブルGの「#1」のエントリが取得される。
ステップ1007の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリがフローエントリEとして選択され、ステップ1008の処理では、当該フローエントリEを参照して、通信装置(SW1)のPort1/1がブロッキングポートであるか否かが判定される。
ステップ1008の処理について図11を用いて説明する。ステップ1101の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリのMatch Field802の入力ポートはPort1/1であるので、Yesと判定される。ステップ1102の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリのAction803にはOutputが登録され、出力ポートが「Blocking」であるので、Yesと判定され、ステップ1103の処理では、Port1/1がブロッキングポートとしてマークされる。
ステップ1009の処理では、ステップ1006の処理で取得した全てのフローエントリにステップ1008の処理を実行したので、ステップ1010の処理に進む。
ステップ1010の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリがフローエントリEとして選択される。ステップ1011の処理について図12を用いて説明する。ステップ1201の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリは、Action803にOutputが登録され、Port1/1がブロッキングポートであるので、当該フローエントリは第2条件を満たすので、ステップ1203の処理に進む。ステップ1203の処理では、ConditionにRing Activeが登録され、Time Limitに0が登録され、Action803にLoop Failureが登録されるアサーションエントリaが生成される。
次に、ステップ1206の処理では、図8Aに示すフローテーブル223Aの「#1」のフローエントリのMatch Field802の入力ポートをポートQ(Port1/1)であるので変更の必要はなく、当該Match Field802に登録された情報(Inport=Port1/1、VLAN=100)をアサーションエントリaのMatch Fieldに登録する。
次に、ステップ1207の処理では、アサーション優先度DB222のAssertion Action701にLoop Failureが登録されたエントリのPriority702に登録された優先度「3」が取得される。そして、アサーションエントリaのPriorityに優先度「3」が登録され、Flow Entryに通信装置(SW1)100Aの識別子及び「#1」を登録し、Target Switchに通信装置(SW2)100Bの識別子を登録し、アサーションエントリ生成処理を終了し、図10に示すステップ1012の処理に進む。
ステップ1012の処理では、ステップ1006の処理で取得した全てのフローエントリにステップ1011の処理を実行したので、ステップ1013の処理に進む。
ステップ1013の処理では、ポートリストLに含まれるPort2/1に対してステップ1004〜1012の処理が実行されていないので、ステップ1003の処理に戻り、Port2/1をポートPとして選択する。
ステップ1004の処理では、通信装置(SW2)100BのPort2/1に接続される通信装置(SW3)100Cが通信装置Uとして取得され、当該通信装置(SW3)100CのPort2/1がポートQの識別子として取得される。なお、以降の処理では、通信装置(SW3)100Cのフローエントリ(図8Aに示すフローテーブル223Aの「#4」及び「#5」のフローエントリ)に基づいて処理が実行される。この処理では、通信装置(SW3)100CのPort2/1はブロッキングポートではなく、「#4」及び「#5」のフローエントリは第1条件〜第4条件を満たさず、第5条件を満たすので、アサーションエントリaが生成されることなく、アサーションエントリ生成処理が終了する。
以上のアサーショ生成処理によって、図6に示すアサーションDB221の「#1」のアサーションエントリが生成される。
図13は、実施例1のアサーションDB優先度更新処理のフローチャートである。
アサーションDB優先度更新処理は、アサーションDB221に登録されたアサーションの優先度をパケット数に応じて更新する処理であり、アサーション制御部212によって所定時間ごとに実行される。
まず、アサーション制御部212は、トポロジDB224の通信装置管理テーブル224Aに登録された通信装置100の識別子のリスト(通信装置リストL)を取得する(1301)。
次に、アサーション制御部212は、ステップ1301の処理で取得した通信装置リストLに含まれる通信装置100の識別子を選択し、選択した通信装置100(通信装置U)の識別子に対してステップ1303〜1305の処理を実行する(1302)。なお、ステップ1303及び1304の処理は、通信装置リストLに含まれる全ての通信装置100の識別子に対して繰り返し実行される。
アサーション制御部212は、通信装置管理テーブル224Aを参照し、通信装置Uのアドレスを取得し、取得したアドレスの通信装置Uにアクセスし、通信装置Uのフローテーブル123のStatistics303に登録された統計情報を取得する(1303)。
次に、アサーション制御部212は、ステップ1303の処理で取得した通信装置Uの統計情報をコンフィグDB223のフローテーブル223AのStatistics804に登録する(1304)。
ステップ1301の処理で取得した全ての通信装置100の識別子に対してステップ1303及び1304の処理が実行されていなければ、アサーション制御部212は、ステップ1302の処理に戻り、新たな通信装置100の識別子を選択し、ステップ1301の処理で取得した全ての通信装置100の識別子に対してステップ1303及び1304の処理が実行されていれば、アサーション制御部212は、ステップ1306の処理に進む(1305)。
ステップ1302〜1305の処理では、制御装置200が管理する全ての通信装置100の統計情報が取得され、取得された統計情報がコンフィグDB223に含まれるフローテーブル223Aに登録される。
次に、アサーション制御部212は、ステップ1301の処理で取得した通信装置リストLに含まれる通信装置100の識別子を選択し、選択した通信装置100(通信装置U)の識別子に対してステップ1307〜1310の処理を実行する(1306)。なお、ステップ1307〜1310の処理は、通信装置リストLに含まれる全ての通信装置100の識別子に対して実行される。
アサーション制御部212は、アサーションDB221から通信装置UのアサーションテーブルTを取得する(1307)。具体的には、アサーション制御部212は、アサーションDB221のTarget Switch602に通信装置Uの識別子が登録されたアサーションエントリをアサーションテーブルTとして取得する。
次に、アサーション制御部212は、ステップ1307の処理で取得した通信装置UのアサーションテーブルTに関連する全てのフローエントリEをコンフィグDB223に含まれるフローテーブル223Aから取得する(1308)。具体的には、アサーション制御部212は、通信装置UのアサーションテーブルTのFlow Entry601に登録された識別子によって識別されるフローエントリをフローテーブル223Aから取得する。なお、通信装置UのアサーションテーブルTのFlow Entry601に登録された識別子によって識別されるフローエントリが複数ある場合、全てのフローエントリがフローテーブル223Aから取得される。
次に、アサーション制御部212は、ステップ1308の処理で取得したフローエントリEのStatistics804に登録された統計情報に含まれるパケット数の合計値を算出し、算出した合計値をスケーリングして当該アサーションテーブルTであるアサーションエントリの優先度を決定し、決定した優先度をアサーションテーブルTのPriority607に登録する(1309)。制御装置200は、パケット数の合計値と優先度とが対応付けられた優先度算出用テーブル(不図示)を有しており、アサーション制御部212は、優先度算出用テーブルを参照して、パケット数の合計値に対応する優先度を算出する。なお、優先度算出用テーブルでは、パケット数の合計値が大きいほど、優先度が高くなるように、パケット数の合計値と優先度とが対応付けられている。
ステップ1301の処理で取得した全ての通信装置100の識別子に対してステップ1307〜1309の処理が実行されていなければ、アサーション制御部212は、ステップ1306の処理に戻り、新たな通信装置100の識別子を選択し、ステップ1301の処理で取得した全ての通信装置100の識別子に対してステップ1307〜1309の処理が実行されていれば、アサーションDB優先度更新処理を終了する(1310)。
アサーションDB優先度更新処理において、アサーションDB221のPriority607が更新された場合、アサーション制御部212は、各通信装置100のアサーションメモリ133に登録された優先度を各通信装置100に更新させるように指示する。
なお、アサーション制御部212は、ステップ1304の処理で、取得した通信装置Uの統計情報を、当該統計情報の日付、曜日、又は時間帯等ごとにフローテーブル223Aに登録しておき、ステップ1309の処理で、日付、曜日、又は時間帯等ごとにパケット数の合計値を算出し、日付、曜日、又は時間帯等ごとに優先度を決定してもよい。通信装置100のトラフィックには日付、曜日、又は時間帯等で一定のパターンがあり、当該パターンに応じた優先度を決定することができる。
アサーションDB優先度更新処理によって、所定時間ごとに、アサーションの生成に用いたフローエントリに登録されたパケット数に基づいて、アサーションの優先度が更新される。これによって、アサーションの生成に用いたフローエントリと一致するデータの受信回数が多いほど、当該アサーションの優先度を高くすることができ、当該アサーションが通信装置100のアサーションテーブル132に登録される可能性を高くすることができる。フローエントリと一致するデータの受信回数が多ければ多いほど、障害が発生する可能性も高くなり、障害が与える影響も大きくなる。アサーションエントリDB優先度更新処理によって、障害が発生する可能性及び障害が与える影響をリアルタイムに反映させた優先度をアサーションに付与することができる。
図14は、実施例1のアサーションテーブル更新処理のフローチャートである。
アサーションテーブル更新処理は、通信装置100のアサーションメモリ133に登録されたアサーションエントリを、優先度に基づいて、アサーションテーブル132に登録する処理であり、通信装置100のアサーション制御部131によって実行される。
まず、アサーション制御部131は、配列ActiveEntiries[]の全ての要素をFalseに初期化する(1401)。配列ActiveEntries[]は、アサーションテーブル132の各エントリに対応する。配列ActiveEntriesにFalseが登録されている要素は、当該要素に対応するアサーションテーブル132のエントリが書込可能であることを意味し、配列ActiveEntriesにTrueが登録されている要素は、当該要素に対応するアサーションテーブル132のエントリが書込不可であることを意味する。
次に、アサーション制御部131は、ステップ1403〜1413の処理を、アサーションメモリ133が更新されるまで繰り返し実行する(1402)。なお、アサーションメモリ133は、制御装置200からの指示によって更新される。アサーションメモリ133が更新された場合、アサーションテーブル更新処理はステップ1401の処理から再度実行される。
アサーション制御部131は、アサーションメモリ133に登録されたアサーションエントリの優先度を配列Counters[]の各要素に登録することによって、配列Counters[]を初期化する(1403)。
次に、アサーション制御部131は、ステップ1405〜1412の処理を無限ループする(1404)。
まず、アサーション制御部は、配列ActiveEntries[]でFalseが登録されているi番目の要素が存在するか否かを判定する(1405)。
ステップ1405の処理で、配列ActiveEntries[]でFalseが登録されているi番目の要素が存在しないと判定された場合(1405:No)、すなわち、アサーションテーブル132の全てのエントリが書込不可である場合、アサーション制御部131はステップ1409の処理に進む。
一方、ステップ1405の処理で、配列ActiveEntries[]でFalseが登録されているi番目の要素が存在すると判定された場合(1405:Yes)、アサーション制御部131は、2以上の値が登録されたn番目の要素が配列Counters[]に存在するか否かを判定する(1406)。
ステップ1406の処理で、2以上の値が登録されたn番目の要素が配列Counters[]に存在しないと判定された場合(1406:No)、アサーションテーブル132に登録すべき優先度のアサーションエントリがアサーションメモリ133に存在しないので、アサーション制御部131は、ステップ1402の処理に戻り、ステップ1403の処理で配列Countersを初期化する。
一方、ステップ1406の処理で、2以上の値が登録されたn番目の要素が配列Counters[]に存在すると判定された場合(1406:Yes)、アサーション制御部131は、アサーションメモリ133のアサーションエントリのうちアサーションテーブル132に登録されていないアサーションエントリを選択し、選択したアサーションエントリのうち配列Counters[]に登録された優先度が最大のアサーションエントリを、配列ActiveEntries[]にFalseが登録されたi番目の要素に対応するアサーションテーブル132のエントリに登録する(1407)。
次に、アサーション制御部131は、配列ActiveEntries[]のi番目の要素にTrueを登録する(1408)。
次に、アサーション制御部131は、配列ActiveEntries[]のTrueが登録された要素に対応する配列Counters[]の要素に登録された値から1を減算する(1409)。ステップ1409の処理では、アサーション制御部131は、Fixedが登録された配列Counters[]の要素に登録された値からは1を減算しない。
次に、アサーション制御部131は、配列Counters[]の要素のうち1が登録された要素に対応する配列ActiveEntries[]の要素にFalseを登録する(1410)。
次に、アサーション制御部131は、所定時間(T時間)だけ処理を停止し、ステップ1412の処理に進む。なお、このT時間には、管理者等によって任意の値が設定される。T時間は、ネットワークのトラフィック特性に合わせて設定されることによって、障害検出精度及び通信装置100の消費電力を調整できる。T時間が短く設定されれば、検出精度が上がる一方、アサーションテーブル132への読み書き回数が増えるので、消費電力が大きくなる。一方、T時間が長く設定されれば、検出精度が下がる一方、アサーションテーブル132への読み書き回数が減るので、消費電力が小さくなる。例えば、多様なトラフィックが混在する状況では、T時間が短くされることが望ましい。また、同種類のトラフィックがバースト的に続く状況では、T時間が長く設定されることが望ましい。
ステップ1412の処理では、アサーション制御部131は、ステップ1405〜1411の繰り返し処理が終了していれば、ステップ1413の処理に進み、繰り返し処理が終了していなければ、ステップ1404の処理に戻る(1412)。
ステップ1413の処理では、アサーション制御部131は、ステップ1403〜1412の繰り返し処理が終了していれば、アサーションテーブル更新処理を終了し、ステップ1403〜1412の繰り返し処理が終了していなければ、ステップ1402の処理に戻る。
アサーションテーブル更新処理では、T時間ごとにステップ1705〜1712の処理が実行される。ステップ1705〜1712の処理では、優先度が最大のアサーションエントリをアサーションテーブル132の書込可能なエントリに書き込み、アサーションテーブル132の書き込まれているアサーションエントリの優先度を1減算していき、優先度が1となったアサーションエントリが書き込まれているアサーションテーブル132のエントリを書き込み可能なエントリに設定する処理をT時間ごとに繰り返す。これによって、優先度が「3」のアサーションエントリは、3T時間だけアサーションテーブル132に書き込まれる。このように、アサーションメモリ133に登録されたアサーションエントリを、優先度に基づいて、アサーションテーブル132に時分割で書き込むので、優先度が高いアサーションエントリほど、アサーションテーブル132に書き込まれている時間を長くすることができ、アサーションテーブル132の容量を大きくしなくとも、アサーションエントリの優先度に基づいて障害を検出できる。
一般に、アサーションテーブル132は、メモリ160と比較して消費電力及び回路規模が大きいTCAM150等に格納されるため、アサーションテーブル132には、アサーションメモリ133に登録された全てのアサーションエントリを格納できない可能性がある。したがって、アサーションテーブル更新処理により、アサーションテーブル132の容量を大きくなしなくとも、障害の検出精度を維持できることが重要となる。
通信装置100におけるアサーションテーブル132に基づく障害検出の動作について、図15〜図18を用いて説明する。
図15は、実施例1の通信装置100の状態遷移図である。
通信装置100は、Normal状態1501、Pseudo Redundant Failure状態1502、Pseudo Loop Failure状態1503、及びFailure Detection状態1504に遷移し得る。Normal状態1501は、通信装置100が正常である状態である。Pseudo Redundant Failure状態1502は、冗長系の障害の被疑状態である。Pseudo Loop Failure状態1503は、ループ障害の被疑状態である。Failure Detection状態1504は、障害が検出された状態である。図15で検出される障害には、経路障害(Routing Failure)、リンク障害(Link Failure)、冗長系障害(Redundant Failure)、及びループ障害(Loop Failure)がある。
アサーション制御部131は、通信装置100の状態を管理し、所定の条件が満たす場合、通信装置100の状態を遷移させる。
通信装置100が起動されると、通信装置100の状態はNormal状態1501に初期化される。
Normal状態1501で、アサーションテーブル132に基づいてRedundant Failureが検出されると、アサーション制御部131は、通信装置100の状態をPseudo Redundant Failure状態1502に遷移させる。
Normal状態1501で、アサーションテーブル132に基づいてLoop Failureが検出されると、アサーション制御部131は、通信装置100の状態をPseudo Loop Failure状態1503に遷移させる。
Normal状態1501で、アサーションテーブル132に基づいてRouting Failure又はLink Failureが検出されると、アサーション制御部131は、通信装置100の状態をFailure Detection状態1504に遷移させる。
Pseudo Redundant Failure状態1502で、通信装置100が制御装置200からPath Failover(Active経路の切替)を検出した旨を受信すると、Active経路が切り替えられたことによってRedundant Failureが検出されたので、アサーション制御部131は、通信装置100の状態をNormal状態1501に遷移させる。
また、Pseudo Redundant Failure状態1502で、通信装置100が制御装置200からPath Failover(Active経路の切替)を検出していない旨を受信すると、アサーション制御部131は、通信装置100の状態をFailure Detection状態1504に遷移させる。
Pseudo Loop Failure状態1503で、通信装置100が制御装置200からRing Failover(リング切替)を検出した旨を受信すると、リングが切り替えられたことによってLoop Failureが検出されたので、アサーション制御部131は、通信装置100の状態をNormal状態1501に遷移させる。
また、Pseudo Loop Failure状態1503で、通信装置100が制御装置200からRing Failover(リング切替)を検出していない旨を受信すると、アサーション制御部131は、通信装置100の状態をFailure Detection状態1504に遷移させる。
Failure Detection状態1504で、検出された障害が復旧すると、アサーション制御部131は、通信装置100の状態をNormal状態1501に遷移させる。
図16は、実施例1の通信装置100の障害検出処理のフローチャートである。
障害検出処理は、受信したデータと一致するアサーションエントリがアサーションテーブル132に存在するか否かを判定して、各種障害を検出する処理であり、通信装置100がデータを受信した場合にアサーション制御部131によって実行される。
まず、アサーション制御部131は、パケットXを受信し(1601)、受信したパケットXがアサーションテーブル132に登録されたアサーションエントリに一致するかを確認する(1602)。
アサーション制御部131は、ステップ1602の処理における確認結果に基づいて、受信したパケットXと一致するアサーションエントリが存在するか否かを判定する(1603)。
ステップ1603の処理で、受信したパケットXと一致するアサーションエントリが存在しないと判定された場合(1603:No)、アサーション制御部131は、受信したパケットXを通常転送すると判断し(1604)、スイッチ部120によって通常の転送処理を実行して、障害検出処理を終了する。
一方、ステップ1603の処理で、受信したパケットXと一致するアサーションエントリが存在すると判定された場合(1603:Yes)、アサーション制御部131は、受信したパケットXと一致するアサーションエントリ(アサーションA)を被疑アサーションPAとして自身に保存する(1605)。
次に、アサーション制御部131は、アサーションAのActionに登録された障害の種別に基づいて処理を分岐する(1606)。
まず、アサーションAのActionに登録された障害の種別がRedudant Failureである場合、アサーション制御部131は、通信装置100の状態をPseudo Redundant Failure状態1502に遷移させ(1607)、ステップ1609の処理に進む。
アサーションAのActionに登録された障害の種別がLoop Failureである場合、アサーション制御部131は、通信装置100の状態をPseudo Loop Failure状態1503に遷移させ(1608)、ステップ1609の処理に進む。
ステップ1609の処理では、アサーション制御部131は、アサーションAの優先度をFixedに変更する(1609)。アサーションAの優先度をFixedに変更することによって、障害が疑われるアサーションエントリについては、常にアサーションテーブル132に書き込まれた状態となり、アサーション制御部131は、パケットを受信するたびに当該アサーションエントリの障害が発生しているか否かを判定できる。
次に、アサーション制御部131は、受信したパケットXをパケットバッファ134に格納し(1610)、アサーションAを制御装置200に通知し(1613)、障害検出処理を終了する。
また、アサーションAのActionに登録された障害の種別がRouting Failure又はLink Failureである場合、アサーション制御部131は、通信装置100の状態をFailure Detection状態1504に遷移させる(1611)。次に、アサーション制御部131は、受信したパケットXを破棄し(1612)、ステップ1613の処理でアサーションAを制御装置200に通知し、障害検出処理を終了する。
障害検出処理では、障害が発生した即座に確定できない冗長系ネットワークに関する障害(Redundant Failure又はLoop Failure)である場合、障害が確定するまで、受信したパケットをパケットバッファ134に格納しておく。これによって、障害の可能性があるパケットの転送を防止できるとともに、障害でなかった場合には、当該パケットを転送でき、パケットロスを防止できる。
図17は、実施例1の障害確定処理のフローチャートである。
障害確定処理は、通信装置100がPseudo Redundant Failure状態1502又はPseudo Loop Failure状態1503である場合に、制御装置200からの経路切替があったか否かを示す情報に基づいて、障害が発生したか否か確定させる処理であり、アサーション制御部131によって実行される。
まず、アサーション制御部131は、通信装置100の状態に基づいて処理を分岐する(1701)。
通信装置100がPseudo Redundant Failure状態1502である場合、通信装置100は、制御装置200から障害検出結果Rを受信する(1702)。障害検出結果Rは、Pseudo Redundant Failure状態1502又はPseudo Loop Failure状態1503に遷移した場合の図16に示すステップ1613の処理で制御装置200に通知したアサーションAに対する応答であり、Pseudo Redundant Failure状態1502のアサーションAに対する応答である場合、Active経路の切替があったか否かを示す情報を含みPseudo Loop Failure状態1503のアサーションAに対する応答である場合、リング切替があったか否かを示す情報を含む。
次に、アサーション制御部131は、ステップ1702の処理で受信した障害検出結果RがActive経路切替があったことを示すか否かを判定する(1703)。
ステップ1703の処理において、障害検出結果RがActive経路切替があったことを示すと判定された場合(1703:Yes)、アサーション制御部131は、パケットバッファ134に格納されたパケットXを通常転送すると判断し(1706)、スイッチ部120によって通常の転送処理を実行する。そして、アサーション制御部131は、通信装置100の状態をNormal状態1501に遷移させ、障害確定処理を終了する。
一方、ステップ1703の処理において、障害検出結果RがActive経路切替がなかったことを示すと判定された場合(1703:No)、アサーション制御部131は、パケットバッファ134に格納されたパケットXを破棄し(1708)、通信装置100の状態をFailure Detection状態1504に遷移させ(1709)、障害確定処理を終了する。
通信装置100がPseudo Loop Failure状態1503である場合、通信装置100は、制御装置200から障害検出結果Rを受信する(1704)。アサーション制御部131は、ステップ1704の処理で受信した障害検出結果Rがリング切替があったことを示すか否かを判定する(1705)。
ステップ1705の処理において、障害検出結果Rがリング切替があったことを示すと判定された場合(1705:Yes)、アサーション制御部131は、ステップ1706の処理で、パケットバッファ134に格納されたパケットXを通常転送し、ステップ1707の処理で、通信装置100の状態をNormal状態1501に遷移させ、障害確定処理を終了する。
一方、ステップ1705の処理において、障害検出結果Rがリング切替がなかったことを示すと判定された場合(1705:No)、アサーション制御部131は、ステップ1708の処理で、パケットバッファ134に格納されたパケットXを破棄し、ステップ1709の処理で、通信装置100の状態をFailure Detection状態1504に遷移させ、障害確定処理を終了する。
通信装置100が、Pseudo Redundant Failure状態1502又はPseudo Loop Failure状態1503以外である場合、アサーション制御部131は、障害確定処理を終了する。
このように、本実施例によれば、通信装置100は、受信したデータとアサーションテーブル132に登録されたアサーションエントリとをマッチングすることによって、通常時と異なるデータを受信したことを検出し、経路切替及びリング切替を考慮した上で、障害を確定することができる。
特許文献1に記載された技術では、CCMに基づいて障害を検出する。例えば、宇宙線などによるソフトエラーで特定の回路に障害が発生した場合等、CCMに障害が発生しなくても、その他のパケットに障害が発生する場合がある。CCMに基づいて障害を検出する技術では、このような障害を検出できないという問題があった。
このような障害を検出するために、通信装置100に設定された全てのフローエントリに障害が発生していないかを検証することも考えられる。この場合には、フローエントリ数分のテストパケットが必要となり、通信装置100の負荷が高くなり、ネットワークの帯域がテストパケットで消費されてしまうという問題が起きる。
また、CCMに基づいて障害を検出する場合、CCMの送受信の設定が適切でないと障害を正しく検出できない。例えば、300ms以下の精度で障害の検出を望む場合にCCMの送信タイミングが1秒間隔で設定されると、所望の精度で障害を検出できないという問題がある。
本実施例によれば、アサーションテーブル132に障害を検出するための条件を登録し、アサーションテーブル132を参照することによって、CCM等のテストパケットに障害が発生しなくてもその他のパケットに発生する障害を検出できる。また、アサーションテーブル132には、管理者が、予めフェールセーフ用又はデバッグ用のアサーションエントリが登録されることによって、通信装置100の設定ミスも検出でき、ネットワークの信頼性を向上させることができる。
図18は、実施例1の障害回避処理のフローチャートである。
障害回避処理は、障害が確定した場合に障害の元になったアサーションエントリに対応するフローエントリをフローテーブル123から削除し、障害を回避する処理であり、フローテーブル制御部121及びアサーション制御部131によって実行される。
まず、フローテーブル制御部121は、フローテーブル123のMatch Field301に登録された情報が、図16に示すステップ1605の処理で保存された被疑アサーションPAのMatch Fieldに登録された情報と一致するフローエントリをフローテーブル123から削除する(1801)。このように、障害が発生したフローエントリがフローテーブル123から削除されることによって、フロー単位で障害を回避することができる。
次に、フローテーブル制御部121は、ステップ1801の処理で削除したフローエントリを制御装置200に通知する(1802)。なお、制御装置200がフローエントリの削除の通知を受信すると、コンフィグDB223のフローテーブル223Aから当該フローエントリを削除する。
次に、アサーション制御部131は、ステップ1609の処理でアサーションAの優先度がFixedに変更されていれば、当該アサーションAの優先度を元の優先度に変更する(1803)。
次に、アサーション制御部131は、通信装置100の状態をNormal状態1501に遷移させる(1804)。
次に、アサーション制御部131は、通信装置100の状態がNormal状態1501に遷移した旨を制御装置200に通知し(1805)、障害回避処理を終了する。
障害回避処理によれば、障害が確定した場合に、障害が発生したフローエントリをフローテーブル123から削除することによって、フローエントリ単位で障害を回避することができる。
例えば、特許文献1に記載されたERPでは、リング単位で疎通障害が検出され、フロー単位で障害を検出できない。特許文献1では、リング単位で障害が検出されるので、障害が検出されたリングに属する複数のフロー全てが影響を受けるという問題がある。また、リングに障害が発生してリング切替があると、通信装置100のFDBの内容が削除される。このため、通信装置100は、FDBを再度学習しなければならず、処理負荷が高くなる。さらに、通信装置100は、FDBを学習するまでの間、受信したパケットをフラッディングするので、ネットワークの帯域を圧迫してしまう。
本実施例では、障害回避処理によってフローエントリ単位で障害を回避し、リングを切り替えないので、障害回避による影響を最小限にすることができ、FDBの学習による通信装置100の処理負荷の増大及びネットワークの帯域の圧迫を防止できる。
次に、通信装置100が障害を検出した旨が通知された制御装置200によって実行される障害特定処理について図19〜図25を用いて説明する。
図19は、実施例1の障害特定処理のフローチャートである。
障害特定処理は、通信装置100が検出した障害の種別に応じて障害原因等を特定する処理であり、通信装置100から障害を検出したアサーションAが通知された場合に制御装置200の障害特定部214によって実行される。
まず、障害特定部214は、障害を検出した通信装置XからアサーションAを受信する(1901)。なお、通信装置Xは、図16に示すステップ1613の処理でアサーションAを制御装置200に送信する。
次に、障害特定部214は、受信したアサーションAのMatch Fieldから入力ポートPを抽出する(1902)。
次に、障害特定部214は、トポロジDB224のトポロジテーブル224Bを参照して、通信装置XのポートPに接続されている通信装置Uを検索する(1903)。
次に、障害特定部214は、アサーションAのActionに登録された障害の種別に応じて処理を分岐する(1904)。
アサーションAのActionにRedudant Failureが登録されている場合、障害特定部214は、通信装置X及び通信装置Uの識別子を引数としてRedudant Failure処理を呼び出し、当該処理を実行し(1905)、障害特定処理を終了する。Redudant Failure処理の詳細は図20で説明する。
アサーションAのActionにLoop Failureが登録されている場合、障害特定部214は、通信装置X及び通信装置Uの識別子、並びにポートPの識別子を引数としてLoop Failure処理を呼び出し、当該処理を実行し(1906)、障害特定処理を終了する。Loop Failure処理の詳細は図21で説明する。
アサーションAのActionにRouting Failureが登録されている場合、障害特定部214は、通信装置Uの識別子を引数としてRouting Failure処理を呼び出し、当該処理を実行し(1907)、障害特定処理を終了する。Routing Failure処理の詳細は図23で説明する。
アサーションAのActionにLink Failureが登録されている場合、障害特定部214は、通信装置Xの識別子及びポートPの識別子を引数としてLink Failure処理を呼び出し、当該処理を実行し(1908)、障害特定処理を終了する。Routing Failure処理の詳細は図24で説明する。
図20は、実施例1のRedundant Failure処理のフローチャートである。
Redundant Failure処理は、通信装置100がRedudant Failureを検出した場合の障害原因を特定する処理であり、障害特定部214によって実行される。
障害特定部214は、通信装置UにActive経路の切替があったか否かを確認する(2001)。例えば、冗長経路は、LAG(Link Aggregation Group)等を用いて構成されているものとする。また、例えば、障害特定部214は、トポロジDB224の通信装置管理テーブル224Aを参照して通信装置Uのアドレスを取得し、管理I/F230を介して通信装置Uにアクセスして、通信装置UにActive経路の切替があったか否かを確認する。
障害特定部214は、ステップ2001の処理の確認結果を障害検出結果Rとして通信装置Xに通知する(2002)。
次に、障害特定部214は、ステップ2001の処理の確認結果を参照し、通信装置UにActive経路切替があったか否かを判定する(2003)。
ステップ2003の処理で、通信装置UにActive経路切替があったと判定された場合(2003:Yes)、通信装置UのActive経路に障害が発生したことが原因でActive経路が切り替えられたので、障害特定部214は、Redundant Failureの原因は通信装置UのActive経路に障害が発生したことであると判断し(2004)、Redundant Failure処理を終了する。
一方、ステップ2003の処理で、通信装置UにActive経路切替がなかったと判定された場合(2003:No)、障害特定部214は、通信装置Uにハードウェア障害があったか否かを確認する(2005)。なお、障害特定部214が通信装置Uにハードウェア障害があったか否かを確認する方法は、ステップ2001の処理と同じ方法を用いることができる。
次に、障害特定部214は、ステップ2005の処理の確認結果を参照し、通信装置Uにハードウェア障害があったか否かを判定する(2006)。
ステップ2006の処理で、通信装置Uにハードウェア障害があったと判定された場合(2006:Yes)、障害特定部214は、Redundant Failureの原因は通信装置Uにハードウェア障害が発生したことであると判断し(2007)、Redundant Failure処理を終了する。
一方、ステップ2006の処理で、通信装置Uにハードウェア障害がなかったと判定された場合(2006:No)、障害特定部214は、Redundant Failureの原因が不明であると判断し(2008)、Redundant Failure処理を終了する。
図21は、実施例1のLoop Failure処理のフローチャートである。
Loop Failure処理は、通信装置100がLoop Failureを検出した場合の障害原因を特定する処理であり、障害特定部214によって実行される。
まず、障害特定部214は、通信装置Uにリング切替があったか否かを判定する(2101)。なお、障害特定部214が通信装置Uにリング切替があったか否かを確認する方法は、ステップ2001の処理と同じ方法を用いることができる。
次に、障害特定部214は、ステップ2101の処理の確認結果を障害検出結果Rとして通信装置Xに通知する(2102)。
次に、障害特定部214は、ステップ2101の処理の確認結果を参照し、通信装置Uにリング切替があったか否かを判定する(2103)。
ステップ2103の処理で、通信装置Uにリング切替があったと判定された場合(2103:Yes)、障害特定部214は、通信装置Xの識別子及びポートPの識別子を引数としてリング障害ポイント特定処理を呼び出し、当該処理を実行する(2104)。リング障害ポイント特定処理の詳細は図22で説明する。
次に、障害特定部214は、リング障害ポイント特定処理で障害ポイントVが特定されたか否かを判定する(2105)。
ステップ2105の処理で、リング障害ポイント特定処理で障害ポイントVが特定されたと判定された場合(2105:Yes)、障害特定部214は、Loop Failureの原因が障害ポイントVで障害が発生したことであると判断し(2106)、Loop Failure処理を終了する。
一方、ステップ2105の処理で、リング障害ポイント特定処理で障害ポイントVが特定されないと判定された場合(2105:No)、障害特定部214は、Loop Failureの原因が不明であると判断し(2109)、Loop Faliure処理を終了する。
一方、ステップ2103の処理で、通信装置Uにリング切替がなかったと判定された場合(2103:No)、障害特定部214は、通信装置Uにハードウェア障害があったか否かを確認する(2107)。なお、障害特定部214が通信装置Uにハードウェア障害があったか否かを確認する方法は、ステップ2001の処理と同じ方法を用いることができる。
次に、障害特定部214は、ステップ2107の処理の確認結果を参照し、通信装置Uにハードウェア障害があったか否かを判定する(2108)。
ステップ2108の処理で、通信装置Uにハードウェア障害がなかったと判定された場合、障害特定部214は、ステップ2109の処理で、Loop Failureの原因が不明であると判断し、Loop Faliure処理を終了する。
ステップ2108の処理で、通信装置Uにハードウェア障害があったと判定された場合、障害特定部214は、Loop Failureの原因が通信装置Uのハードウェア障害であると判断し(2110)、Loop Failure処理を終了する。
図22は、実施例1のリング障害ポイント特定処理のフローチャートである。
リング障害ポイント特定処理は、通信装置XのポートPにリングトポロジで接続された上流側の通信装置に障害が発生しているか否かを判定していく処理であり、障害特定部214によって実行される。
まず、障害特定部214は、トポロジDB224のトポロジテーブル224Bを参照し、通信装置XのポートPにリングトポロジで接続された通信装置UのポートQの識別子と当該通信装置Uの識別子とを検索する(2201)。
次に、障害特定部214は、通信装置Uにハードウェア障害があったか否かを確認する(2202)。なお、障害特定部214が通信装置Uにハードウェア障害があったか否かを確認する方法は、ステップ2001の処理と同じ方法を用いることができる。
次に、障害特定部214は、ステップ2202の処理の確認結果を参照し、通信装置Uにハードウェア障害があったか否かを判定する(2303)。
ステップ2303の処理で、通信装置Uにハードウェア障害があったと判定された場合(2303:Yes)、障害特定部214は、障害ポイントVを通信装置Uに特定し(2216)、リング障害ポイント特定処理を終了する。
一方、ステップ2303の処理で、通信装置Uにハードウェア障害がなかったと判定された場合(2303:No)、障害特定部214は、コンフィグDB223のフローテーブル223Aを参照し、通信装置UのフローテーブルFを取得する(2204)。
次に、障害特定部214は、ステップ2204の処理で取得した通信装置UのフローテーブルFのフローエントリEを選択し、選択したフローエントリEに対してステップ2206〜2213の処理を実行する(2205)。ステップ2206〜2213の処理は、フローテーブルFの全てのフローエントリに実行される。
障害特定部214は、フローエントリEが(1)の条件又は(2)の条件を満たすか否かを確認する(2206)。(1)の条件は、フローエントリEのActionにOutputが登録され、かつ当該フローエントリEのActionに登録されたOutportがポートQであることである。すなわち、(1)の条件は、通信装置UのフローエントリEの出力ポートが通信装置XのポートPにリングトポロジで接続される通信装置UのポートQであることを条件とする。
(2)の条件は、フローエントリEのActionにOutputが登録され、当該フローエントリEのActionに登録されたOutportがNormalであり、かつ当該フローエントリEのMatch Fieldに登録されたVLANがポートQのVLANと同じであることである。すなわち、(2)の条件は、通信装置UのフローエントリEの出力ポートから出力されたデータが通信装置XのポートPに入力されることを条件とする。
次に、障害特定部214は、ステップ2206の処理の確認結果を参照し、フローエントリEが(1)の条件又は(2)の条件を満たすか否かを判定する(2207)。
ステップ2207の処理で、フローエントリEが(1)の条件又は(2)の条件を満たすと判定された場合(2207:Yes)、障害特定部214は、フローエントリEのMatch Fieldの入力ポートをポートpに設定する(2208)。
次に、障害特定部214は、トポロジDB224のトポロジテーブル224Bを参照し、通信装置Uのポートpの属性を検索する(2209)。そして、障害特定部214は、ステップ2209の処理で検索された通信装置Uのポートpの属性がリングトポロジであるか否かを判定する(2210)。
ステップ2210の処理で、通信装置Uのポートpの属性がリングトポロジであると判定された場合(2210:Yes)、障害特定部214は、通信装置Uの識別子及びポートpの識別子を引数として、リング障害ポイント特定処理を再帰的に実行する(2211)。
次に、障害特定部214は、ステップ2211の処理で実行されたリング障害ポイント特定処理で障害が検出されたか否かを判定する(2212)。
ステップ2212の処理で、リング障害ポイント特定処理で障害が検出されたと判定された場合(2212:Yes)、障害特定部214は、障害が検出された通信装置Vを障害ポイントVとして特定し(2215)、リング障害ポイント特定処理を終了する。
一方、ステップ2212の処理で、リング障害ポイント特定処理で障害が検出されていないと判定された場合(2212:No)、フローテーブルFの全てのフローエントリEにステップ2206〜2213の処理が実行されていなければ、障害特定部214は、ステップ2203の処理に戻り、フローテーブルFのフローエントリを新たなフローエントリEに選択する。一方、フローテーブルFの全てのフローエントリEにステップ2206〜2213の処理が実行されていれば、障害特定部214は、障害が検出されなかったと判断し(2214)、リング障害ポイント特定処理を終了する。
ステップ2207の処理で、フローエントリEが(1)の条件又は(2)の条件を満たさないと判定された場合(2207:No)、及びステップ2210の処理で、通信装置Uのポートpの属性がリングトポロジでないと判定された場合(2210:No)、障害特定部214は、ステップ2214の処理に進む。
図23は、実施例1のRouting Failure処理のフローチャートである。
Routing Failure処理は、通信装置100がRouting Failureを検出した場合の障害原因を特定する処理であり、障害特定部214によって実行される。
まず、障害特定部214は、通信装置Uにハードウェア障害があったか否かを確認する(2301)。なお、障害特定部214が通信装置Uにハードウェア障害があったか否かを確認する方法は、ステップ2001の処理と同じ方法を用いることができる。
次に、障害特定部214は、ステップ2301の処理の確認結果を参照し、通信装置Uにハードウェア障害があったか否かを判定する(2302)。
ステップ2302の処理で、通信装置Uにハードウェア障害があったと判定された場合(2302:Yes)、障害特定部214は、Routing Failureの原因が通信装置Uのハードウェア障害であると判断し(2303)、Routing Failure処理を終了する。
ステップ2302の処理で、通信装置Uにハードウェア障害がなかったと判定された場合(2302:No)、障害特定部214は、Routing Failureの原因が不明であると判断し(2304)、Routing Failure処理を終了する。
図24は、実施例1のLink Failure処理のフローチャートである。
Link Failure処理は、通信装置100がLink Failureを検出した場合の障害原因を特定する処理であり、障害特定部214によって実行される。
まず、障害特定部214は、通信装置Xの識別子及びポートPの識別子を引数として経路障害ポイント特定処理を呼び出し、当該処理を実行する(2401)。経路障害ポイント特定処理の詳細は図22で説明する。
次に、障害特定部214は、経路障害ポイント特定処理で障害ポイントVが特定されたか否かを判定する(2402)。
ステップ2402の処理で、経路障害ポイント特定処理で障害ポイントVが特定されたと判定された場合(2402:Yes)、障害特定部214は、Link Failureの原因が障害ポイントVで障害が発生したことであると判断し(2403)、Link Failure処理を終了する。
一方、ステップ2105の処理で、経路障害ポイント特定処理で障害ポイントVが特定されないと判定された場合(2402:No)、障害特定部214は、Link Failureの原因が不明であると判断し(2404)、Link Faliure処理を終了する。
図25は、実施例1の経路障害ポイント特定処理のフローチャートである。
経路障害ポイント特定処理は、通信装置XのポートPに接続された上流側の通信装置に障害が発生しているか否かを判定していく処理であり、障害特定部214によって実行される。図25に示す処理のうち、図22に示すリング障害ポイント特定処理と同じ処理は同じ符号を付与し、説明を省略する。
経路障害ポイント特定処理は、通信装置UのフローエントリEのMatch Fieldの入力ポートの属性がリングトポロジであるか否かを判定する処理(図22に示すステップ2210の処理)を実行しない点でリング障害ポイント特定処理と相違する。
本実施例によって、通信装置100が検出した障害に基づいて制御装置200が障害の位置を特定できる。特許文献1に記載された技術では、リングトポロジを想定した特定方法であるので、他のトポロジでは障害の位置を特定できない。障害の位置が特定できれば、管理者等は、特定結果を参照して早期に障害復旧作業を実施できるので、ネットワークの信頼性を向上させることができる。
実施例1では、制御装置200がアサーションテーブル生成処理(図10)を実行して通信装置100のアサーションエントリを生成し、アサーションDB優先度更新処理(図13)を実行し、アサーションエントリの優先度を更新したが、本実施例では、通信装置100がアサーションエントリを生成し、アサーションエントリの優先度を更新する。これによって、制御装置200の処理負荷を通信装置100に分散させることができる。
本実施例について図26〜図28を用いて説明する。
図26は、実施例2の通信システムの構成を示すブロック図である。図26では、図1と同じ構成は同じ符号を付与して説明を省略する。
本実施例の通信装置100のスイッチ部120は、実施例1の構成に加えてトポロジDB125を有する。トポロジDB125は、メモリ160に格納される。また、本実施例の通信装置100のアサーション部10は、実施例1の構成に加えてアサーション生成部211、アサーションDB221、及びアサーション優先度DB222を有する。アサーション生成部211は、CPU140に実装され、アサーションDB221及びアサーション優先度DB222はメモリ160に格納される。
また、本実施例の制御装置200は、アサーション生成部211、アサーション制御部212、アサーションDB221、アサーション優先度DB222を有さない点で実施例1の制御装置200と相違する。
実施例1のアサーション生成部211は、通信装置100のアサーションテーブル132に登録され得る全てのアサーションエントリを生成したが、本実施例のアサーション生成部211は、隣接する通信装置100のアサーションテーブル132に登録され得る一部のアサーションエントリを生成する。
また、本実施例のアサーション制御部131は、実施例1の制御装置200のアサーション制御部212の機能も有する。具体的には、図27に示すアサーションテーブル生成処理によって隣接する通信装置100のアサーションエントリが生成された場合、アサーション制御部131は、生成されたアサーションエントリの登録を隣接する通信装置100に管理I/F110を介して指示する。また、図28に示すアサーションエントリ優先度更新処理によって隣接する通信装置100のアサーションエントリの優先度が更新された場合、アサーション制御部131は、アサーションエントリの優先度の更新を隣接する通信装置100に管理I/F110を介して指示する。
通信装置100のトポロジDB125は、制御装置200のトポロジDB224と同じ内容である。制御装置200のコンフィグ制御部213が、トポロジDB224の内容の複製指示を、管理I/F230を介して通信装置100に指示する。
図27は、実施例2のアサーションテーブル生成処理のフローチャートである。
アサーションテーブル生成処理は、隣接する通信装置100のアサーションテーブル132に登録され得る一部のアサーションエントリを生成する処理であり、通信装置100のアサーション生成部211によって実行される。
まず、アサーション生成部211は、生成したアサーションエントリを格納するためのアサーションリスト(変数A)を初期化する(2701)。
次に、アサーション生成部211は、自身を有する通信装置Uのフローテーブル123及びグループテーブル124をそれぞれフローテーブルF及びグループテーブルGとして取得する(2702)。
アサーション生成部211は、ステップ2702の処理で取得したフローテーブルFから処理対象のフローエントリEを選択し、ステップ2704〜2706の処理を実行する(2703)。なお、ステップ2704〜2706の処理は、フローテーブルFの全てのフローエントリに実行されるまで繰り返される。
アサーション生成部211は、ステップ2703の処理で選択したフローエントリEのActionに登録された出力ポートQを抽出する(2704)。例えばフローエントリEのActionの出力ポートがNormalである場合、アサーション生成部211は、FDBを参照して出力ポートQを特定する。
次に、アサーション生成部211は、出力ポートQがブロッキングポートであるか否かを判定するブロッキングポート判定処理を実行する(2705)。ブロッキング判定処理は、フローエントリE及びポートQの識別子が引数として入力され、図11と同じであるので、説明を省略する。
通信装置UのフローテーブルUの全てのフローエントリにステップ2704及び2705の処理が実行されていなければ、アサーション生成部211は、ステップ2703の処理に戻り、新たな処理対象のフローエントリEを選択し、通信装置UのフローテーブルUの全てのフローエントリにステップ2704及び2705の処理が実行されていれば、アサーション生成部211は、ステップ2707の処理に進む(2706)。
アサーション生成部211は、フローテーブルFのフローエントリから処理対象のフローエントリEを選択し、ステップ2708〜2712の処理を実行する(2707)。なお、ステップ2708〜2712の処理は、フローテーブルFの全てのフローエントリに実行されるまで繰り返される。
アサーション生成部211は、ステップ2704の処理と同じく、ステップ2707の処理で選択したフローエントリEのActionに登録された出力ポートQを抽出する(2708)。
次に、アサーション生成部211は、トポロジDB125のトポロジテーブル224Bを参照し、出力ポートQに接続されている通信装置XのポートPの識別子と通信装置Xの識別子とを取得する(2709)。
次に、アサーション生成部211は、アサーションリストA、ポートP及びポートQの識別子、フローエントリE並びにグループテーブルGを引数として、アサーションエントリ生成処理を呼び出し、当該処理を実行する(2710)。なお、アサーションエントリ生成処理は、通信装置Uに隣接する通信装置Xのアサーションテーブル132に登録され得るアサーションエントリを生成する処理であり、図12と同じであるので説明を省略する。また、アサーションエントリ生成処理で生成されたアサーションエントリは、アサーションリストAの最終エントリに格納される。
次に、アサーション生成部211は、アサーションリストAの最終エントリに格納されたアサーションエントリ(ステップ3011の処理で生成されたアサーションエントリ)を、通信装置Xに設定する(2711)。具体的には、アサーション生成部211は、トポロジDB125の通信装置管理テーブル224Aを参照し、通信装置Xのアドレスを取得し、管理I/F110を介して通信装置Xに生成したアサーションエントリを送信する。なお、通信装置Xは、受信したアサーションエントリをアサーションメモリ133に登録する。
通信装置UのフローテーブルFの全てのフローエントリにステップ2708〜2711の処理が実行されていなければ、アサーション生成部211は、ステップ2707の処理に戻り、新たな処理対象のフローエントリEを選択し、通信装置UのフローテーブルFの全てのフローエントリにステップ2708〜2711の処理が実行されていれば、アサーション生成部211は、ステップ2713の処理に進む(2712)。
ステップ2713の処理では、アサーション生成部211は、アサーションリストAに登録された全てのアサーションエントリをアサーションDB221に登録し(2713)、アサーションテーブル生成処理を終了する。
本実施例のアサーションテーブル生成処理では、ある通信装置100が、自身のフローテーブルを参照し、隣接する通信装置100のアサーションエントリを生成したが、ある通信装置100が、隣接する通信装置100のフローテーブルを参照し、自身のアサーションエントリを生成してもよい。
図28は、実施例2のアサーションエントリ優先度更新処理のフローチャートである。
アサーションエントリ優先度更新処理は、隣接する通信装置100のアサーションエントリの優先度を更新する処理であり、アサーション制御部131によって実行される。
アサーション制御部131は、アサーション制御部131を有する通信装置100(自装置)のフローテーブル123をフローテーブルFとして取得する(2801)。
次に、アサーション制御部131は、ステップ2801の処理で取得したフローテーブルFから処理対象のフローエントリEを選択し、ステップ2803及び2804の処理を実行する(2802)。なお、ステップ2803及び2804の処理は、フローテーブルFの全てのフローエントリに実行されるまで繰り返される。
アサーション制御部131は、アサーションDB221を参照し、フローエントリEに対応するアサーションエントリを取得し、フローエントリEのStatisticsに登録されたパケット数に対応する優先度に更新する(2803)。具体的には、アサーション制御部131は、アサーションDB221のFlow Entry601に自装置の識別子及びフローエントリEの識別子が登録されたアサーションエントリを取得する。そして、アサーション制御部131は、フローエントリEのStatisticsに登録されたパケット数に対応する優先度を決定し、取得したアサーションエントリのPriorityに決定した優先度を登録する。
次に、アサーション制御部131は、ステップ2803の処理で更新されたアサーションエントリの優先度を、当該アサーションエントリが登録され得る通信装置100に設定する(2804)。具体的には、アサーション制御部131は、ステップ2803の処理で更新されたアサーションDB221のアサーションエントリのTarget Fielidに登録された通信装置100の識別子を取得する。そして、アサーション制御部131は、トポロジDB125の通信装置管理テーブル224Aを参照し、当該通信装置100のアドレスを取得し、管理I/F110を介して通信装置100に優先度が更新されたアサーションエントリを送信する。
自装置のフローテーブルFの全てのフローエントリにステップ2803及び2804の処理が実行されていなければ、アサーション生成部211は、ステップ2802の処理に戻り、新たな処理対象のフローエントリEを選択し、自装置のフローテーブルFの全てのフローエントリにステップ2803及び2804の処理が実行されていれば、アサーション生成部211は、アサーションエントリ優先度更新処理を終了する。
本実施例のアサーションエントリ優先度更新処理では、ある通信装置100が、自身のフローテーブルを参照し、隣接する通信装置100のアサーションエントリの優先度を更新したが、ある通信装置100が、隣接する通信装置100のフローテーブルを参照し、自身のアサーションエントリの優先度を更新してもよい。
本実施例によれば、アサーションテーブルの生成及びアサーションエントリの優先度の更新を通信装置100が実施するので、制御装置200の処理負荷を低減できる。特に、制御装置200が全ての通信装置100の統計情報を周期的に収集する処理は、処理負荷及びネットワーク負荷が高いので、本実施例のように制御装置200の処理負荷を通信装置100に分散することによって、制御装置200の処理負荷を低減できる。これによって、本実施例は、性能の低い安価な制御装置200でも実現可能である。また、通信装置100が自律分散的にアサーションを設定することによって、制御装置200が集中的にアサーションを設定する場合と比較して、ネットワーク全体のアサーション設定の耐障害性が向上する。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。
また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
また、前記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
100 通信装置
110 管理I/F
120 スイッチ部
121 フローテーブル制御部
122 トラフィック統計計測部
123 フローテーブル
124 グループテーブル
125 トポロジDB
130 アサーション部
131 アサーション制御部
132 アサーションテーブル
133 アサーションメモリ
134 パケットバッファ
140 CPU
150 TCAM
160 メモリ
170 通信I/F
200 制御装置
210 CPU
211 アサーション生成部
212 アサーション制御部
213 コンフィグ制御部
214 障害特定部
220 メモリ
221 アサーションDB
222 アサーション優先度DB
223 コンフィグDB
224 トポロジDB
230 管理I/F
110 管理I/F
120 スイッチ部
121 フローテーブル制御部
122 トラフィック統計計測部
123 フローテーブル
124 グループテーブル
125 トポロジDB
130 アサーション部
131 アサーション制御部
132 アサーションテーブル
133 アサーションメモリ
134 パケットバッファ
140 CPU
150 TCAM
160 メモリ
170 通信I/F
200 制御装置
210 CPU
211 アサーション生成部
212 アサーション制御部
213 コンフィグ制御部
214 障害特定部
220 メモリ
221 アサーションDB
222 アサーション優先度DB
223 コンフィグDB
224 トポロジDB
230 管理I/F
Claims (14)
- データを送受信する通信装置であって、
通常時に受信しないデータを特定可能な情報を含む障害検出条件が登録されたアサーション情報を記憶し、
他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、
前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出することを特徴とする通信装置。 - 請求項1に記載の通信装置であって、
少なくとも一つの他の通信装置に接続されたポートを備え、
前記アサーション情報に登録された障害検出条件に含まれる前記通常時に受信しないデータを特定可能な情報は、前記ポートのうち通常時に自身にデータを転送しない通信装置に接続されたポートの識別子を含むことを特徴とする通信装置。 - 請求項2に記載の通信装置であって、
前記受信したデータに関する条件と当該条件と一致するデータに対するアクションとが対応付けられたフローエントリが登録されたフロー情報と、
前記通信装置のポートと他の通信装置のポートとの接続関係が登録されたトポロジ情報と、を記憶し、
前記フロー情報の前記アクションが所定の条件を満たす場合、当該アクションに対応する条件と一致するデータの出力ポートを特定し、
前記トポロジ情報を参照し、前記特定した出力ポートに接続された他の通信装置のポートを特定し、
前記他の通信装置のポートの識別子を前記障害検出条件として含むアサーション情報を生成し、
前記生成したアサーション情報を前記他の通信装置に設定することを特徴とする通信装置。 - 請求項2に記載の通信装置であって、
前記受信したデータに関する条件と当該条件と一致するデータに対するアクションとが対応付けられたフローエントリが登録されたフロー情報と、前記アサーション情報と、が記憶された検索用メモリと、
前記アサーション情報に登録され得る障害検出条件が登録されたアサーション候補情報が記憶されたメモリと、を備え、
前記検索用メモリの記憶容量は前記メモリより小さく、前記検索用メモリに記憶されるアサーション情報に登録可能な障害検出条件の数は、前記メモリに記憶されるアサーション候補情報に登録可能な障害検出条件の数より小さいものであって、
前記アサーション候補情報に登録された障害検出条件には優先度が付与され、
前記優先度に基づいて、前記アサーション候補情報に登録された障害検出条件を前記アサーション情報に登録することを特徴とする通信装置。 - 請求項4に記載の通信装置であって、
隣接する通信装置のアサーション候補情報に登録された障害検出条件を管理し、
前記受信したデータに関する条件と、当該条件と一致するデータに対するアクションと、当該条件と一致するデータの受信回数とが対応付けられたフローエントリを含むフロー情報と、
前記通信装置のポートと他の通信装置のポートとの接続関係が登録されたトポロジ情報と、を記憶し、
前記フロー情報の前記アクションが所定の条件を満たす場合、当該アクションに対応する条件と一致するデータの出力ポートを特定し、
前記トポロジ情報を参照し、前記特定した出力ポートに接続された他の通信装置のポートを特定し、
前記他の通信装置のポートの識別子を前記障害検出条件を生成し、
前記生成した障害検出条件を前記他の通信装置に設定し、
前記生成した障害検出条件と、前記障害検出条件の生成に用いたフローエントリの識別子とを対応付けたアサーション管理情報を記憶し、
前記フロー情報に含まれるフローエントリに登録された受信回数に基づいて、当該フローエントリの識別子に対応付けられた障害検出条件の優先度を更新し、
前記更新した障害検出条件の優先度を前記他の通信装置に設定することを特徴とする通信装置。 - 請求項1に記載の通信装置であって、
前記アサーション情報には、異なる種別の障害を検出する複数の障害検出条件が登録され、
少なくとも一つの障害検出条件は、通常時にデータが通信される現用系経路と障害時にデータが通信される待機系経路とがある冗長ネットワーク構成において前記待機系経路でデータが通信されたことを示す冗長ネットワークに関する障害を検出する条件であり、
前記受信したデータが前記冗長ネットワークに関する障害を検出する障害検出条件を満たすと判定された場合、前記受信したデータを一時的に記憶し、
前記現用系経路から前記待機系経路への切り替えがあった場合、前記冗長ネットワークに関する障害でないと判断し、前記一時的に記憶したデータを転送し、
前記現用系経路から前記待機系経路への切り替えがなかった場合、前記冗長ネットワークに関する障害を検出し、前記一時的に記憶したデータを破棄することを特徴とする通信装置。 - データを送受信する複数の通信装置によって構築されるネットワークを制御する制御装置であって、
前記制御装置は、
前記通信装置が通常時に受信しないデータを特定可能な情報を含む障害検出条件を前記通信装置に設定し、
前記通信装置に設定した障害検出条件を管理し、
前記通信装置は、
前記制御装置から設定された障害検出条件をアサーション情報に登録して、記憶し、
他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、
前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出することを特徴とする制御装置。 - 請求項7に記載の制御装置であって、
前記通信装置は、少なくとも一つの他の通信装置に接続されたポートを有し、
前記アサーション情報に登録された障害検出条件に含まれる前記通常時に受信しないデータを特定可能な情報は、前記ポートのうち通常時に自身にデータを転送しない通信装置に接続されたポートの識別子を含むことを特徴とする制御装置。 - 請求項8に記載の制御装置であって、
前記通信装置は、前記受信したデータに関する条件と当該条件と一致するデータに対するアクションとが対応付けられたフローエントリが登録されたフロー情報を記憶し、
前記制御装置は、
前記複数の通信装置に記憶されたフロー情報と、
前記複数の通信装置のポート間の接続関係が登録されたトポロジ情報と、を記憶し、
ある通信装置のアサーション情報を生成する場合、前記トポロジ情報を参照し、前記ある通信装置のあるポートに接続されたポートを有する通信装置を特定し、
前記特定した通信装置のフロー情報を取得し、
前記取得したフロー情報の前記アクションが所定の条件を満たす場合、前記ある通信装置のあるポートの識別子を含む前記障害検出条件を生成し、
前記生成した障害検出条件を前記ある通信装置に設定することを特徴とする制御装置。 - 請求項9に記載の制御装置であって、
前記制御装置は、
前記障害検出条件によって検出される障害の種別に対応する優先度が登録されたアサーション優先度情報を記憶し、
前記障害検出条件を生成した場合、前記アサーション優先度情報を参照し、前記生成した障害検出条件によって検出される障害の種別に対応する優先度を取得し、
前記取得した優先度を前記生成した障害検出条件に付与し、前記優先度が付与され障害検出条件を前記通信装置に設定し、
前記通信装置は、
前記フロー情報と、前記アサーション情報と、が記憶された検索用メモリと、
前記アサーション情報に登録され得る障害検出条件が登録されたアサーション候補情報が記憶されたメモリと、を有し、
前記検索用メモリの記憶容量は前記メモリより小さく、前記検索用メモリに記憶されるアサーション情報に登録可能な障害検出条件の数は、前記メモリに記憶されるアサーション候補情報に登録可能な障害検出条件の数より小さいものであって、
前記通信装置から設定された障害検出条件をアサーション候補情報に登録して、記憶し、
前記アサーション候補情報に登録された障害検出条件に付与された優先度に基づいて、前記アサーション候補情報に登録された障害検出条件を前記アサーション情報に登録することを特徴とする制御装置。 - 請求項10に記載の制御装置であって、
前記フロー情報のフローエントリには、当該フローエントリの条件と一致するデータの受信回数も登録され、
前記制御装置は、
前記生成した障害条件出条件と、当該障害検出条件の生成に用いたフローエントリの識別子とを対応付けて記憶し、
前記フロー情報に含まれるフローエントリに登録されたデータの受信回数に基づいて、当該フローエントリの識別子に対応付けられた障害検出条件の優先度を更新し、
前記更新した障害検出条件の優先度を前記通信装置に設定することを特徴とする制御装置。 - 請求項7に記載の制御装置であって、
前記アサーション情報には、異なる種別の障害を検出する複数の障害検出条件が登録され、
少なくとも一つの障害検出条件は、通常時にデータが通信される現用系経路と障害時にデータが通信される待機系経路とがある冗長ネットワーク構成において前記待機系経路でデータが通信されたことを示す冗長ネットワークに関する障害を検出する条件であり、
前記通信装置は、前記受信したデータが前記冗長ネットワークに関する障害を検出する障害検出条件を満たすと判定された場合、前記受信したデータを一時的に記憶して、前記現用系経路から前記待機系経路への切り替えの有無を前記制御装置に問合せ、
前記制御装置は、前記通信装置からの問合せに対して、前記現用系経路から前記待機系経路への切り替えの有無を示す情報を前記通信装置に送信し、
前記通信装置は、
前記現用系経路から前記待機系経路への切り替えがあった場合、前記冗長ネットワークに関する障害でないと判断し、前記一時的に記憶したデータを転送し、
前記現用系経路から前記待機系経路への切り替えがなかった場合、前記冗長ネットワークに関する障害を検出し、前記一時的に記憶したデータを破棄することを特徴とする制御装置。 - 請求項8に記載の制御装置であって、
前記複数の通信装置のポート間の接続関係が登録されたトポロジ情報を記憶し、
前記通信装置は、受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、当該障害を検出した旨に通知し、
前記制御装置は、前記通信装置から障害を検出した旨が通知された場合、前記トポロジ情報を参照し、前記障害を検出した障害検出情報に含まれるポートの識別子によって識別されるポートに接続される通信装置を特定し、
前記特定した通信装置で障害が検出されているか否かを判定することによって、前記障害の箇所を特定することを特徴とする制御装置。 - データを送受信する複数の通信装置と、前記複数の通信装置によって構築されるネットワークを制御する制御装置とを備える通信システムであって、
前記通信装置は、
通常時に受信しないデータを特定可能な情報を含む障害検出条件が登録されたアサーション情報を記憶し、
他の通信装置からデータを受信した場合、前記アサーション情報を参照し、前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすか否かを判定し、
前記受信したデータが前記アサーション情報に登録された障害検出条件を満たすと判定された場合、障害を検出し、
前記制御装置は、
前記複数の通信装置に記憶されたアサーション情報を管理し、
前記複数の通信装置に前記アサーション情報を設定することを特徴とする通信システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015146010A JP2017028539A (ja) | 2015-07-23 | 2015-07-23 | 通信装置、制御装置、及び通信システム |
US15/161,347 US20170026278A1 (en) | 2015-07-23 | 2016-05-23 | Communication apparatus, control apparatus, and communication system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015146010A JP2017028539A (ja) | 2015-07-23 | 2015-07-23 | 通信装置、制御装置、及び通信システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017028539A true JP2017028539A (ja) | 2017-02-02 |
Family
ID=57837635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015146010A Pending JP2017028539A (ja) | 2015-07-23 | 2015-07-23 | 通信装置、制御装置、及び通信システム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170026278A1 (ja) |
JP (1) | JP2017028539A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10459791B2 (en) * | 2015-02-26 | 2019-10-29 | Hitachi, Ltd. | Storage device having error communication logical ports |
JP7238535B2 (ja) * | 2019-03-27 | 2023-03-14 | オムロン株式会社 | ネットワーク管理装置、管理方法、管理プログラムおよび記録媒体 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8074103B2 (en) * | 2007-10-19 | 2011-12-06 | Oracle International Corporation | Data corruption diagnostic engine |
US8386841B1 (en) * | 2010-07-21 | 2013-02-26 | Symantec Corporation | Systems and methods for improving redundant storage fault tolerance |
US9448877B2 (en) * | 2013-03-15 | 2016-09-20 | Cisco Technology, Inc. | Methods and apparatus for error detection and correction in data storage systems using hash value comparisons |
US9792179B1 (en) * | 2015-07-06 | 2017-10-17 | Amazon Technologies, Inc. | Eventually durable redundancy encoded data storage |
-
2015
- 2015-07-23 JP JP2015146010A patent/JP2017028539A/ja active Pending
-
2016
- 2016-05-23 US US15/161,347 patent/US20170026278A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170026278A1 (en) | 2017-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10389639B1 (en) | Dynamic weighted cost multipathing | |
US8347143B2 (en) | Facilitating event management and analysis within a communications environment | |
US11082282B2 (en) | Method and system for sharing state between network elements | |
US20150103642A1 (en) | Diagnosing connectivity in a network | |
US10007629B2 (en) | Inter-processor bus link and switch chip failure recovery | |
CN113973042B (zh) | 用于网络问题的根本原因分析的方法和系统 | |
US11159435B2 (en) | Time-sensitive networking for industrial automation | |
US9203740B2 (en) | Automated network fault location | |
US9729389B2 (en) | Methods and systems for switching network traffic in a communications network | |
US11818044B2 (en) | Path signatures for data flows | |
US20110141914A1 (en) | Systems and Methods for Providing Ethernet Service Circuit Management | |
US11296982B2 (en) | Initiator-based data-plane validation for segment routed, multiprotocol label switched (MPLS) networks | |
CN111989899B (zh) | 监视装置、网络系统、拓扑管理方法以及计算机可读取记录介质 | |
WO2019079961A1 (zh) | 一种确定共享风险链路组的方法及装置 | |
JP2017028539A (ja) | 通信装置、制御装置、及び通信システム | |
US10666553B2 (en) | Method for quick reconfiguration of routing in the event of a fault in a port of a switch | |
US20230103056A1 (en) | Tracking and reporting faults detected on different priority levels | |
EP4156628A1 (en) | Tracking and reporting faults detected on different priority levels | |
CN115022157B (zh) | 一种集群内节点故障转移的方法、装置、设备及介质 | |
US20240031237A1 (en) | Systems and methods to detecting the source of a topology change notice (tcn) | |
CN117714325A (zh) | 服务器集群的网络监测方法、装置、电子设备及存储介质 | |
CN111917637A (zh) | 数据报文发送方法及装置 | |
JP2017207992A (ja) | 情報処理装置及び情報処理装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170512 |