(57)【要約】【課題】コントロール装置がパケットの処理規則を生成してノード（転送装置）に送信し、ノードが処理規則に従ってパケットを転送するネットワークシステムにおいて、ノードまたはノード間のリンクに故障が発生したときに、パケットの転送が中断する時間を短くすること。【解決手段】コントロール装置は、複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する経路計算部と、第１のパスに沿ってパケットを転送する第１の規則、および、第２のパスに沿ってパケットを転送する第２の規則を生成する規則生成部と、第１の規則および第２の規則を複数のノードの少なくとも１つに送出して、複数のノードの少なくとも１つに対して、第１の規則および第２の規則のいずれかに従ってパケットを転送させる規則送出部と、を備える。【選択図】図１
2015508950.tif 000002
【特許請求の範囲】
【請求項１】
コントロール装置が、複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する工程と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する工程と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出する工程と、
前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる工程と、を含む、コントロール方法。
【請求項２】
前記第１の規則は、前記パケットに対する照合ルールとして、前記第１のパスを識別する第１の識別子を含み、
前記第２の規則は、前記パケットに対する照合ルールとして、前記第２のパスを識別する第２の識別子を含む、請求項１に記載のコントロール方法。
【請求項３】
前記コントロール装置が、前記パケットのパケットヘッダに含まれるフィールドを、前記第１の識別子から前記第２識別子に書き換える第３の規則を生成して、前記複数のノードのうちの前記始点ノードに送出する工程をさらに含む、請求項２に記載のコントロール方法。
【請求項４】
前記第３の規則は、前記パケットに対する照合ルールとして、前記第１の識別子を含む、請求項３に記載のコントロール方法。
【請求項５】
前記パケットは、ユニキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記ユニキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記ユニキャストパケットに含まれる宛先アドレスに基づいて決定されたノードである、請求項１ないし４のいずれか１項に記載のコントロール方法。
【請求項６】
前記パケットは、マルチキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記マルチキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記マルチキャストパケットの宛先アドレスが示すグループへ参加するマルチキャスト受信端末が接続するノードである、請求項１ないし４のいずれか１項に記載のコントロール方法。
【請求項７】
前記コントロール装置が、マルチキャスト受信端末から送信されるマルチキャストグループへの参加を通知する参加通知パケットを受信したノードと、前記マルチキャスト受信端末との対応関係を記憶する工程をさらに含む、請求項６に記載のコントロール方法。
【請求項８】
前記コントロール装置が、前記複数のノードまたは前記複数のノード間のリンクの故障を検知する工程をさらに含む、請求項３ないし７のいずれか１項に記載のコントロール方法。
【請求項９】
前記コントロール装置は、前記故障が前記第１のパスにおいて検知された場合に、前記第３の規則を生成して、前記複数のノードのうちの前記始点ノードに相当するノードへ送出する、請求項８に記載のコントロール方法。
【請求項１０】
前記コントロール装置は、前記第１の規則のタイムアウトに基づいて、前記故障を検知する、請求項８または９に記載のコントロール方法。
【請求項１１】
前記第３の規則に従って書き換えられるフィールドは、送信元のレイヤ２アドレスのフィールドである、請求項３ないし１０のいずれか１項に記載のコントロール方法。
【請求項１２】
前記コントロール装置が、前記パケットのパケットヘッダに含まれるフィールドを、前記第２の識別子から前記第１識別子に書き換える第４の規則を生成して、前記複数のノードのうちの前記終点ノードに相当するノードへ送出する工程をさらに含む、請求項３ないし１１のいずれか１項に記載のコントロール方法。
【請求項１３】
前記第４の規則は、前記パケットに対する照合ルールとして、前記第２の識別子を含む、請求項１２に記載のコントロール方法。
【請求項１４】
複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する経路計算部と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する規則生成部と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出して、前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる規則送出部と、を備える、コントロール装置。
【請求項１５】
前記第１の規則は、前記パケットに対する照合ルールとして、前記第１のパスを識別する第１の識別子を含み、
前記第２の規則は、前記パケットに対する照合ルールとして、前記第２のパスを識別する第２の識別子を含む、請求項１４に記載のコントロール装置。
【請求項１６】
前記コントロール装置が、前記パケットのパケットヘッダに含まれるフィールドを、前記第１の識別子から前記第２識別子に書き換える第３の規則を生成する切替規則生成部をさらに備え、
前記規則送出部は、前記第３の規則を、前記複数のノードのうちの前記始点ノードに相当するノードへ送出する、請求項１５に記載のコントロール装置。
【請求項１７】
前記第３の規則は、前記パケットに対する照合ルールとして、前記第１の識別子を含む、請求項１６に記載のコントロール装置。
【請求項１８】
前記パケットは、ユニキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記ユニキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記ユニキャストパケットに含まれる宛先アドレスに基づいて決定されたノードである、請求項１４ないし１７のいずれか１項に記載のコントロール装置。
【請求項１９】
前記パケットは、マルチキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記マルチキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記マルチキャストパケットの宛先アドレスが示すグループへ参加するマルチキャスト受信端末が接続されたノードである、請求項１４ないし１７のいずれか１項に記載のコントロール装置。
【請求項２０】
マルチキャスト受信端末から送信されるマルチキャストグループへの参加を通知する参加通知パケットを受信したノードと、前記マルチキャスト受信端末との対応関係を記憶する記憶部をさらに備える、請求項１９に記載のコントロール装置。
【請求項２１】
前記複数のノードまたは前記複数のノード間のリンクの故障を検知する故障通知受信部をさらに備える、請求項１６ないし２０のいずれか１項に記載のコントロール装置。
【請求項２２】
前記切替用規則生成部は、前記故障が前記第１のパスにおいて検知された場合に、前記第３の規則を生成する、請求項２１に記載のコントロール装置。
【請求項２３】
前記パケットのパケットヘッダに含まれるフィールドを、前記第２の識別子から前記第１識別子に書き換える第４の規則を生成する書戻規則生成部をさらに備え、
前記規則送出部は、前記第４の規則を前記複数のノードのうちの前記終点ノードに相当するノードへ送出する、請求項１６ないし２２のいずれか１項に記載のコントロール装置。
【請求項２４】
前記第４の規則は、前記パケットに対する照合ルールとして、前記第２の識別子を含む、請求項２３に記載のコントロール装置。
【請求項２５】
複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する処理と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する処理と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出して、前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる処理と、をコンピュータに実行させる、プログラム。
【請求項２６】
前記第１の規則は、前記パケットに対する照合ルールとして、前記第１のパスを識別する第１の識別子を含み、
前記第２の規則は、前記パケットに対する照合ルールとして、前記第２のパスを識別する第２の識別子を含む、請求項２５に記載のプログラム。
【請求項２７】
前記パケットのパケットヘッダに含まれるフィールドを、前記第１の識別子から前記第２識別子に書き換える第３の規則を生成して、前記複数のノードのうちの前記始点ノードに相当するノードへ送出する処理を、前記コンピュータにさらに実行させる、請求項２６に記載のプログラム。
【請求項２８】
前記第３の規則は、前記パケットに対する照合ルールとして、前記第１の識別子を含む、請求項２７に記載のプログラム。
【請求項２９】
前記パケットは、ユニキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記ユニキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記ユニキャストパケットに含まれる宛先アドレスに基づいて決定されたノードである、請求項２５ないし２８のいずれか１項に記載のプログラム。
【請求項３０】
前記パケットは、マルチキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記マルチキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記マルチキャストパケットの宛先アドレスが示すグループへ参加するマルチキャスト受信端末が接続するノードである、請求項２５ないし２８のいずれか１項に記載のプログラム。
【請求項３１】
マルチキャスト受信端末から送信されるマルチキャストグループへの参加を通知する参加通知パケットを受信したノードと、前記マルチキャスト受信端末との対応関係を記憶する処理を、前記コンピュータにさらに実行させる、請求項３０に記載のプログラム。
【請求項３２】
前記複数のノードまたは前記複数のノード間のリンクの故障を検知する処理を、前記コンピュータにさらに実行させる、請求項２７ないし３１のいずれか１項に記載のプログラム。
【請求項３３】
前記故障が前記第１のパスにおいて検知された場合に、前記第３の規則を生成して、前記複数のノードのうちの前記始点ノードに相当するノードへ転送する処理を、前記コンピュータに実行させる、請求項３２に記載のプログラム。
【請求項３４】
前記コントロール装置が、前記パケットのパケットヘッダに含まれるフィールドを、前記第２の識別子から前記第１識別子に書き換える第４の規則を生成して、前記複数のノードのうちの前記終点ノードに相当するノードへ送出する処理を、前記コンピュータにさらに実行させる、請求項２７ないし３３のいずれか１項に記載のプログラム。
【請求項３５】
前記第４の規則は、前記パケットに対する照合ルールとして、前記第２の識別子を含む、請求項３４に記載のプログラム。
【請求項３６】
複数のノードを含む通信システムであって、
前記複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する経路計算手段と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する規則生成手段と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出する規則送出手段とを含むコントロール装置を備え、
前記複数のノードの少なくとも１つが、前記第１の規則および前記第２の規則のいずれかに従って前記パケットを転送する、通信システム。
【請求項３７】
前記第１の規則は、前記パケットに対する照合ルールとして、前記第１のパスを識別する第１の識別子を含み、
前記第２の規則は、前記パケットに対する照合ルールとして、前記第２のパスを識別する第２の識別子を含む、請求項３６に記載の通信システム。
【請求項３８】
前記コントロール装置は、前記パケットのパケットヘッダに含まれるフィールドを、前記第１の識別子から前記第２識別子に書き換える第３の規則を生成する切替規則生成手段をさらに含み、
前記規則送出手段は、前記第３の規則を、前記複数のノードのうちの前記始点ノードに相当するノードに送出する、請求項３７に記載の通信システム。
【請求項３９】
前記第３の規則は、前記パケットに対する照合ルールとして、前記第１の識別子を含む、請求項３８に記載の通信システム。
【請求項４０】
前記パケットは、ユニキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記ユニキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記ユニキャストパケットに含まれる宛先アドレスに基づいて決定されたノードである、請求項３６ないし３９のいずれか１項に記載の通信システム。
【請求項４１】
前記パケットは、マルチキャストパケットであり、
前記始点ノードは、前記複数のノードのうちの、前記マルチキャストパケットを最初に受信したノードであり、
前記終点ノードは、前記複数のノードのうちの、前記マルチキャストパケットの宛先アドレスが示すグループへ参加するマルチキャスト受信端末が接続するノードである、請求項３６ないし３９のいずれか１項に記載の通信システム。
【請求項４２】
前記コントロール装置は、マルチキャスト受信端末から送信されるマルチキャストグループへの参加を通知する参加通知パケットを受信したノードと、前記マルチキャスト受信端末との対応関係を記憶する記憶手段をさらに含む、請求項４１に記載の通信システム。
【請求項４３】
前記コントロール装置は、前記複数のノードまたは前記複数のノード間のリンクの故障を検知する故障検知手段をさらに含む、請求項３８ないし４２のいずれか１項に記載の通信システム。
【請求項４４】
前記切替用規則生成手段は、前記故障が前記第１のパスにおいて検知された場合に、前記第３の規則を生成する、請求項４３に記載の通信システム。
【請求項４５】
前記故障検知手段は、前記第１の規則のタイムアウトに基づいて、前記故障を検知する、請求項４３または４４に記載の通信システム。
【請求項４６】
前記第３の規則に従って書き換えられるフィールドは、送信元のレイヤ２アドレスのフィールドである、請求項３８ないし４５のいずれか１項に記載の通信システム。
【請求項４７】
前記コントロール装置は、前記パケットのパケットヘッダに含まれるフィールドを、前記第２の識別子から前記第１識別子に書き換える第４の規則を生成する書戻規則生成部をさらに含み、
前記規則送出手段は、前記第３の規則を、前記複数のノードのうちの前記始点ノードに相当するノードに送出する、請求項３８ないし４６のいずれか１項に記載の通信システム。
【請求項４８】
前記第４の規則は、前記パケットに対する照合ルールとして、前記第２の識別子を含む、請求項４７に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１２−０１６１０９号（２０１２年１月３０日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、コントロール方法、コントロール装置、通信システムおよびプログラムに関し、特に、転送規則に従ってパケットを転送する転送装置に対し、生成した転送規則を送信することで転送装置の動作を制御するコントロール方法、コントロール装置、通信システムおよびプログラムに関する。
【背景技術】
【０００２】
近年、集中管理型のネットワークアーキテクチャが提案されている。集中処理型のネットワークアーキテクチャの一例として、オープンフロー（ＯｐｅｎＦｌｏｗ）という技術がある。
【０００３】
オープンフローでは、ネットワークシステムにおいて、処理規則に従ってパケットを処理するノード（転送装置）と、該ノードに対して生成した処理規則を送出することで該パケットの処理を制御するコントロール装置とを設け、パケット転送を実現する（非特許文献１、２）。オープンフローにおいては、ノードおよびコントロール装置は、それぞれ、オープンフロースイッチ（ＯＦＳ：ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ）およびオープンフローコントローラ（ＯＦＣ：ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）と呼ばれる。ＯＦＳとＯＦＣの詳細については、例えば、非特許文献１、２に記載されている。以下では、ＯＦＳおよびＯＦＣの概略を述べる。
【０００４】
ＯＦＳは、パケットのルックアップとフォアワーディングを行うフローテーブルと、ＯＦＣとの通信用のセキュアチャネルとを備えている。ＯＦＣは、オープンフロープロトコルを用いてセキュアチャネル上でＯＦＳと通信し、例えば、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）レベルでフローを制御する。一例として、ＯＦＳにパケットが到着すると、該ＯＦＳは、該パケットのヘッダ情報に基づいて、フローテーブルを検索する。検索の結果、該パケットに適合する処理規則（エントリ）が見つかった場合、ＯＦＳは、該パケットをマッチした処理規則に基づいて処理する。一方、該パケットに適合する処理規則が見つからない場合、ＯＦＳは、ＯＦＣに対して、当該パケットを処理するための処理規則を要求する。
【０００５】
ＯＦＣは、ＯＦＳからの該要求に応じて、該パケットを処理するための処理規則を生成する。例えば、ＯＦＣは、該パケットを転送するためのパス（経路）を決定し、決定したパスに基づいて該パケットを転送するための処理規則を生成する。ＯＦＣは、生成した処理規則を、少なくとも１つのＯＦＳに送出する。例えば、ＯＦＣは、決定したパスに関連するＯＦＳに対して、該パケットを転送するための処理規則を送出する。
【０００６】
ＯＦＳのフローテーブルは、例えば図１３に示すように、パケットヘッダと照合するルール（Ｒｕｌｅ）と、フロー対する処理を定義したアクション（Ａｃｔｉｏｎ）と、フロー統計情報（Ｓｔａｔｉｓｔｉｃｓ）とを、各フロー毎に有する。
【０００７】
パケットヘッダと照合されるルール（Ｒｕｌｅ）には、正確な値（Ｅｘａｃｔ）またはワイルドカード（Ｗｉｌｄｃａｒｄ）が用いられる。アクション（Ａｃｔｉｏｎ）は、ルールとマッチしたパケットに適用される処理内容である。フロー統計情報は、アクティビティカウンタともいい、例えば、アクティブエントリ数、パケットルックアップ数、パケットマッチ数、フロー単位に、受信パケット数、受信バイト数、フローがアクティブな期間、ポート単位で受信パケット、送信パケット、受信バイト、送信バイト、受信ドロップ、送信ドロップ、受信エラー、送信エラー、受信フレームアラインメントエラー、受信オーバーランエラー、受信ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）エラー、コリジョン数を含む。
【０００８】
ＯＦＳが受信したパケットは、フローテーブルのルールとの照合（マッチ）が行われ、ルールにマッチするエントリが見つかった場合、マッチしたエントリのアクションが当該パケットに施される。マッチするエントリが見つからなかった場合、当該パケットはＦｉｒｓｔ  Ｐａｃｋｅｔとして取り扱われ、セキュアチャネルを介してＯＦＣに転送される。ＯＦＣは、パケット経路を決定したフローエントリをＯＦＳへ送信する。ＯＦＳは、自身のフローエントリに対して、フローエントリの追加、変更および削除を行う。
【０００９】
ＯＦＳのフローテーブルのルールとの照合には、パケットのヘッダの所定のフィールドが用いられる。マッチ対象の情報として、例えば、ＭＡＣ  ＤＡ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、ＭＡＣ  ＳＡ（ＭＡＣ  Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、Ｅｔｈｅｒｎｅｔ（登録商標）タイプ（ＴＰＩＤ）、ＶＬＡＮ  ＩＤ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  ＩＤ）、ＶＬＡＮ  ＴＹＰＥ（優先度）、ＩＰ  ＳＡ（ＩＰ  Ｓｏｕｒｃｅ  Ａｄｄｒｅｓｓ）、ＩＰ  ＤＡ（ＩＰ  Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）、ＩＰプロトコル、Ｓｏｕｒｃｅ  Ｐｏｒｔ（ＴＣＰ／ＵＤＰソースポート、または、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）  Ｔｙｐｅ）、Ｄｅｓｔｉｎａｔｉｏｎ  Ｐｏｒｔ（ＴＣＰ／ＵＤＰディスティネーションポート、または、ＩＣＭＰ  Ｃｏｄｅ）が含まれる（図１４参照）。
【００１０】
図１５は、アクション名とアクションの内容を例示する。ＯＵＴＰＵＴは、指定ポート（インタフェース）に出力する。また、ＳＥＴ＿ＶＬＡＮ＿ＶＩＤからＳＥＴ＿ＴＰ＿ＤＳＴは、パケットヘッダのフィールドを修正するアクションである。
【００１１】
ＯＦＳは、例えば、物理ポートと仮想ポートへパケットを転送する。図１６は、仮想ポートを例示する。ＩＮ＿ＰＯＲＴは、パケットを入力ポートに出力するアクションである。ＮＯＲＭＡＬは、ＯＦＳがサポートする既存の転送パスを用いて処理するアクションである。ＦＬＯＯＤは、パケットが入来したポートを除く通信可能状態（Ｆｏｒｗａｒｄｉｎｇ状態）のすべてのポートに転送するアクションである。ＡＬＬは、パケットが入来したポートを除くポートに転送するアクションである。ＣＯＮＴＲＯＬＬＥＲは、パケットをカプセル化してＯＦＣに送信するアクションである。ＬＯＣＡＬは、パケットをＯＦＳ自身のローカルネットワークスタックに送信するアクションである。アクションが指定されないフローエントリにマッチしたパケットは、ドロップ（廃棄）される。
【００１２】
図１７は、セキュアチャネルを介してやり取りされるメッセージを例示する。Ｆｌｏｗ−ｍｏｄは、ＯＦＣからＯＦＳに対して、フローエントリの追加、変更、削除を行うためのメッセージである。Ｐａｃｋｅｔ−ｉｎは、ＯＦＳからＯＦＣに対して送られるメッセージで、フローエントリにマッチしなかったパケットを送るために用いられる。Ｐａｃｋｅｔ−ｏｕｔは、ＯＦＣからＯＦＳに対して送られるメッセージで、ＯＦＣが生成したパケットをＯＦＳの任意のポートから出力するために用いられる。Ｐｏｒｔ−ｓｔａｔｕｓは、ＯＦＳからＯＦＣに対して送られるメッセージで、ポートの状態が変化したことを通知するために用いられる。例えば、ポートに接続するリンクに故障が発生した場合、リンクダウン状態になったことを示す通知が送られる。Ｆｌｏｗ−Ｒｅｍｏｖｅｄは、ＯＦＳからＯＦＣに対して送られるメッセージで、フローエントリが一定時間使用されず、タイムアウトでＯＦＳ上から消されるときに、その旨をＯＦＣに通知されるために使用される。
【００１３】
以上が、ＯＦＳおよびＯＦＣの動作例の概要である。なお、関連技術として、ノード間でパケット転送を行うためのマルチキャストツリーを計算する方法が特許文献１に記載されている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１１−１６６３６０号公報
【非特許文献】
【００１５】
【非特許文献１】Ｎｉｃｋ  ＭｃＫｅｏｗｎ  ｅｔ  ａｌ．，“ＯｐｅｎＦｌｏｗ：Ｅｎａｂｌｉｎｇ  Ｉｎｎｏｖａｔｉｏｎ  ｉｎ  Ｃａｍｐｕｓ  Ｎｅｔｗｏｒｋｓ，”［ｏｎｌｉｎｅ］、Ｍａｒｃｈ  １４，２００８，［平成２４年１月２０日検索］，インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗｓｗｉｔｃｈ．ｏｒｇ／／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｗｐ−ｌａｔｅｓｔ．ｐｄｆ＞
【非特許文献２】“ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．１．０  Ｉｍｐｌｅｍｅｎｔｅｄ（Ｗｉｒｅ  Ｐｒｏｔｏｃｏｌ  ０ｘ０２），”［ｏｎｌｉｎｅ］、Ｆｅｂｒｕａｒｙ  ２８，２０１１、［平成２４年１月２０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｏｐｅｎｆｌｏｗ．ｏｒｇ／ｄｏｃｕｍｅｎｔｓ／ｏｐｅｎｆｌｏｗ−ｓｐｅｃ−ｖ１．１．０．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【００１６】
以下の分析は、本発明者によってなされたものである。
【００１７】
特許文献１、非特許文献１および非特許文献２に記載のコントロール装置は、パケットを処理するための処理規則の要求に応じて、該パケットを転送する１つのパス（経路）を決定し、該パスによるパケットの転送を実現するための処理規則をノードに送出している。
【００１８】
そのため、例えば、パス上のノードまたはノード間のリンクに故障が発生し、そのパスによってパケットの転送ができなくなった場合、コントロール装置は、該パケットを転送する新たなパスを決定し、該新たなパスによるパケットの転送を実現する新たな処理規則をノードに送出する必要がある。
【００１９】
したがって、利用していたパスによってパケットの転送ができなくなってから、コントロール装置が新たなパスに応じた新たな処理規則をノードに送出するまでの間、パケットの転送が中断するという問題が生じる。
【００２０】
そこで、集中管理型のネットワークアーキテクチャにおいて、例えば、ノードまたはノード間のリンクに故障が発生し、利用していたパスによってパケットの転送ができなくなった場合に、パケットの転送が中断する時間を短くすることが課題となる。本発明の目的は、かかる課題を解決するコントロール方法、コントロール装置、通信システムおよびプログラムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明の第１の視点に係るコントロール方法は、
コントロール装置が、複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する工程と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する工程と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出する工程と、
前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる工程と、を含む。
【００２２】
本発明の第２の視点に係るコントロール装置は、
複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する経路計算部と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する規則生成部と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出して、前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる規則送出部と、を備える。
【００２３】
本発明の第３の視点に係るプログラムは、
複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する処理と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する処理と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出して、前記複数のノードの少なくとも１つに対して、前記第１の規則および前記第２の規則のいずれかに従ってパケットを転送させる処理と、をコンピュータに実行させる。なお、プログラムは、非トランジエントなコンピュータ読み取り可能な記録媒体に記録されたプログラム製品として提供することができる。
【００２４】
本発明の第４の視点に係る通信システムは、
複数のノードを含む通信システムであって、
前記複数のノードのうちの始点ノードおよび終点ノードを共有する第１のパスおよび第２のパスを計算する経路計算手段と、
前記第１のパスに沿ってパケットを転送する第１の規則、および、前記第２のパスに沿ってパケットを転送する第２の規則を生成する規則生成手段と、
前記第１の規則および前記第２の規則を前記複数のノードの少なくとも１つに送出する規則送出手段とを含むコントロール装置を備え、
前記複数のノードの少なくとも１つが、前記第１の規則および前記第２の規則のいずれかに従って前記パケットを転送する。
【発明の効果】
【００２５】
本発明に係るコントロール方法、コントロール装置、通信システムおよびプログラムによると、集中管理型のネットワークアーキテクチャにおいて、例えば、ノードまたはノード間のリンクに故障が発生したときに、パケットの転送が中断する時間を短くすることができる。
【図面の簡単な説明】
【００２６】
【図１】本発明に係るコントロール装置の概略構成を一例として示すブロック図である。
【図２】第１の実施形態に係るコントロール装置の構成を一例として示すブロック図である。
【図３】ノードにより冗長ツリーを構成したネットワークを一例として示す図である。
【図４】図３のネットワークに対する、正常系ツリー用および予備系ツリー用の照合ルールを一例として示す図である。
【図５】第１の実施形態に係るコントロール装置の入力パケット処理の動作を一例として示すフローチャートである。
【図６】受信パケットが一般のマルチキャストパケットである場合における、第１の実施形態に係るコントロール装置の動作を一例として示すフローチャートである。
【図７】受信パケットがマルチキャストグループへの参加を示すパケットである場合における、第１の実施形態に係るコントロール装置の動作を一例として示すフローチャートである。
【図８】第１の実施形態に係るコントロール装置の故障検知時の動作を一例として示すフローチャートである。
【図９】ノードにより冗長ツリーを構成したネットワークを一例として示す図である。
【図１０】第２の実施形態に係るコントロール装置の構成を一例として示すブロック図である。
【図１１】第２の実施形態に係るコントロール装置における経路表の構成を一例として示す図である。
【図１２】第２の実施形態に係るコントロール装置のパケット受信の動作を一例として示すフローチャートである。
【図１３】オープンフロースイッチ（ＯＦＳ）におけるフローテーブルを示す図である。
【図１４】Ｅｔｈｅｒｎｅｔ／ＩＰ／ＴＣＰパケットのヘッダを示す図である。
【図１５】オープンフローのフローテーブル中に指定可能なアクションとその説明を示す図である。
【図１６】オープンフローのアクションで送出先として指定可能な仮想ポートとその説明を示す図である。
【図１７】オープンフローのメッセージとその説明を示す図である。
【発明を実施するための形態】
【００２７】
はじめに、本発明の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２８】
図１は、本発明に係るコントロール装置（４）の構成を概略的に示すブロック図である。図１を参照すると、コントロール装置（４）は、経路計算部（４３）、規則生成部（３５）および規則送出部（２３）を備えている。
【００２９】
図３は、送信元ノード（１０）と、コントロール装置（４）によってパケット転送が制御されるノード（１１−１５）を例示している。ここでは、一例として、送信元ノード（１０）から送出されたパケットが、ノード（１５）に接続された受信ノード（非図示）に転送される場合について説明する。
【００３０】
経路計算部（４３）は、複数のノード（１１−１５）のうちの始点ノード（ノード１１）および終点ノード（ノード１５）を共有する第１のパスおよび第２のパスを計算する。図３において、第１のパスは、ノード１２を経由してノード１１からノード１５に至る正常系ツリーに含まれるパスである。一方、第２のパスは、ノード１４経由してノード１１からノード１５に至る予備系ツリーに含まれるパスである。
【００３１】
規則生成部（３５）は、第１のパスに沿ってパケットを転送する第１の規則、および、第２のパスに沿ってパケットを転送する第２の規則を生成する。規則送出部（２３）は、第１の規則および第２の規則を複数のノード（１１−１５）の少なくとも１つに送出して、該複数のノード（１１−１５）の少なくとも１つに対して、第１の規則および第２の規則の少なくともいずれかに従ってパケットを転送させる。
【００３２】
図４（ａ）を参照すると、第１の規則は、パケットに対する照合ルールとして、第１のパスを識別する第１の識別子（例えば、送信元ＭＡＣアドレスＷＷ：ＷＷ：ＷＷ：１１：１１：１１）を含んでいる。また、図４（ｂ）を参照すると、第２の規則は、パケットに対する照合ルールとして、第２のパスを識別する第２の識別子（例えば、送信元ＭＡＣアドレスＶＶ：ＶＶ：ＶＶ：００：００：０１）を含んでいる。
【００３３】
このとき、パケットヘッダに第１の識別子を含むパケットは第１の規則に従って、第１のパスを経由して始点ノードから終点ノードまで転送される。一方、パケットヘッダに第２の識別子を含むパケットは第２の規則に従って、第２のパスを経由して始点ノードから終点ノードまで転送される。
【００３４】
例えば、ノード（１２）、または、ノード（１１）とノード（１２）との間のリンクに故障が生じた場合には、パケットの転送経路を、第１のパスから第２のパスに切り替えることで、パケットの転送を継続することができる。本発明に係るコントロール装置によると第１のパスに沿ってパケットを転送するための第１の規則と、第２のパスに沿ってパケットを転送するための第２の規則とが、事前にそれぞれのパスに関連するノードに設定されている。したがって、コントロール装置（４）は、例えば、ノード（１１−１５）において、パケット転送に用いられる規則を、第１の規則から第２の規則に切り替えるだけでよい。すなわち、本発明によると、コントロール装置（４）は、例えば、故障が発生した際に、代替となる新たなパスを計算し、その新たなパスに沿ってパケットを転送するための規則を生成し、ノード（１１−１５）の少なくとも１つに設定する工程を行う必要がない。このとき、ノードまたはノード間のリンクに故障が発生したときに、パケット転送が中断する時間を短くすることができる。
【００３５】
図２および図１０を参照すると、コントロール装置（４）は、切替規則生成部（３６）をさらに備えていてもよい。切替規則生成部（３６）は、パケットのパケットヘッダに含まれるフィールドを、第１の識別子（送信元ＭＡＣアドレスＷＷ：ＷＷ：ＷＷ：１１：１１：１１）から第２識別子（送信元ＭＡＣアドレスＶＶ：ＶＶ：ＶＶ：００：００：０１）に書き換える第３の規則を生成する。ここで、第３の規則は、パケットに対する照合ルールとして、第１の識別子（送信元ＭＡＣアドレスＷＷ：ＷＷ：ＷＷ：１１：１１：１１）を含む。図３を参照すると、規則送出部（２３）は、切替規則生成部（３６）が生成した第３の規則を、複数のノードのうちの始点ノードに相当するノード（１１）へ送出するようにしてもよい。
【００３６】
このとき、ノード（１１）は、パケットのパケットヘッダに含まれるフィールドを、第１の識別子から第２の識別子に書き換える。パケットヘッダに第２の識別子を含むパケットは、第２の規則の照合ルールにマッチするため、第２の規則に従って第２のパスを経由して転送されることになる。このように、本発明によると、第３の規則を始点ノードに相当するノードに送出するだけで、パケットの転送経路を第１の転送経路から第２の転送経路に容易に変更することができる。
【００３７】
図２および図１０を参照すると、コントロール装置（４）は、故障通知受信部（２２）をさらに備えていてもよい。故障通知受信部（２２）は、複数のノードまたは複数のノード間のリンクの故障を検知する。切替規則生成部（３６）は、故障が第１のパスにおいて検知された場合に、上記第３の規則を生成するようにしてもよい。
【００３８】
図２および図１０を参照すると、コントロール装置（４）は、書戻規則生成部（３７）をさらに備えていてもよい。書戻規則生成部（３７）は、パケットのパケットヘッダに含まれるフィールドを、第２の識別子（送信元ＭＡＣアドレスＶＶ：ＶＶ：ＶＶ：００：００：０１）から第１識別子（送信元ＭＡＣアドレスＷＷ：ＷＷ：ＷＷ：１１：１１：１１）に書き換える第４の規則を生成する。ここで、第４の規則は、パケットに対する照合ルールとして、第２の識別子（例えば、送信元ＭＡＣアドレスＶＶ：ＶＶ：ＶＶ：００：００：０１）を含む。規則送出部（２３）は、第４の規則を複数のノードのうちの終点ノードに相当するノード（１５）へ送出するようにしてもよい。
【００３９】
このとき、パケットヘッダに含まれるフィールドの値がノード（１１）により第１の識別子から第２の識別子に書き換えられたパケットについて、ノード（１５）において、当該フィールドの値を第２の識別子から第１の識別子に書き戻すことが可能となる。
【００４０】
本発明に係るコントロール装置は、故障発生後に使用するパスを計算して、計算したパスに沿ったパケット転送を実現する規則を事前にノードに設定しておく。このとき、故障発生時のパスの切替を高速に行うことができ、コントロール装置が故障発生後に規則を生成してノードに設定する場合と比較して、パケットロスを大幅に削減することが可能となる。
【００４１】
（実施形態１）
第１の実施形態に係るコントロール装置について、図面を参照して説明する。
【００４２】
図２は、本実施形態に係るコントロール装置４の構成を一例として示すブロック図である。図２を参照すると、コントロール装置４は、ネットワーク中の各ノード（スイッチ）と通信を行うセキュアチャネル１と、スイッチ管理部２と、ツリー管理部３とを備えている。また、スイッチ管理部２は、入力パケット処理部２１、故障通知受信部２２、および、規則送出部２３を有する。さらに、ツリー管理部３は、受信者管理部３１、送信者管理部３２、冗長ツリー計算部３３、トポロジー管理部３４、規則生成部３５、切替規則生成部３６、書戻規則生成部３７、および、アドレス管理部３８を有する。
【００４３】
入力パケット処理部２１は、ノードへの入力パケットがセキュアチャネル１を通してコントロール装置４へ送られてきたときに動作する。入力パケット処理部２１は、パケットの種別を判別する。パケットが通常のマルチキャストパケットである場合には、入力パケット処理部２１は、パケットを送信者管理部３２へ送信する。一方、パケットがマルチキャスト受信者（マルチキャスト受信端末）から送信されるマルチキャストグループへの参加を示すパケットである場合には、入力パケット処理部２１は、パケットを受信者管理部３１へ送信する。
【００４４】
マルチキャスト受信者（マルチキャスト受信端末）から送信されるマルチキャストグループへの参加を示すパケットは、ＩＰｖ４（ＩＰ  ｖｅｒｓｉｏｎ  ４）においては、例えば、ＩＧＭＰ（Ｉｎｔｅｒｎｅｔ  Ｇｒｏｕｐ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）と呼ばれるプロトコルのパケットであり、ＩＰｖ６（ＩＰ  ｖｅｒｓｉｏｎ  ６）においては、例えば、ＭＬＤ（Ｍｕｌｔｉｃａｓｔ  Ｌｉｓｔｅｎｅｒ  Ｄｉｓｃｏｖｅｒｙ）と呼ばれるプロトコルのパケットである。
【００４５】
故障通知受信部２２は、ノードからの故障通知がセキュアチャネル１を通してコントロール装置４へ送られてきたときに、通知された故障の内容を切替規則生成部３６へ送る。
【００４６】
規則送出部２３は、規則生成部３５、切替規則生成部３６および書戻規則生成部３７のいずれかから送られてきた規則を、セキュアチャネル１を介して各ノードへ送信する。
【００４７】
受信者管理部３１は、入力パケット処理部２１から送られてきたＩＧＭＰまたはＭＬＤパケット中のグループアドレスと、パケットを受信したノードのＩＤおよび受信ポートのＩＤを、書戻規則生成部３７および規則生成部３５へ送る。
【００４８】
送信者管理部３２は、入力パケット処理部２１から送られてきた情報のうち、パケットの送信元アドレス、グループアドレス、パケットを受信したノードのＩＤおよび受信ポートのＩＤを、冗長ツリー計算部３３へ送る。また、送信者管理部３２は、入力パケット処理部２１から送られてきた情報のうち、パケットの送信元アドレス、グループアドレス、および、送信元ＭＡＣアドレスをアドレス管理部３８へ送る。
【００４９】
冗長ツリー計算部３３は、パケットの送信元アドレス、グループアドレスの組ごとに、正常系、予備系からの組から成る冗長ツリーを計算し、規則生成部３５へ送る。
【００５０】
図３は、ノード１１−１５を含むネットワークに、正常系ツリー（点線）と予備系ツリー（破線）とを含む冗長ツリーが構成されている様子を例示する。ノード１１に接続されている送信元ノード１０は、１９２．１６８．ＹＹ．１という送信元アドレスを有する。冗長ツリーは、送信元ノード１０からグループアドレス２２４．ＺＺ．ＺＺ．ＺＺとして送出されるマルチキャストに対して構成されている。
【００５１】
トポロジー管理部３４は、コントロール装置４が管理するノード群にて構成されるネットワークのトポロジー情報を管理し、冗長ツリー計算部３３に対してトポロジー情報を提供する。トポロジー情報とは、ネットワーク中に含まれるノードに関する情報と、ノード同士がどのように接続されているかを示す情報である。これらの情報は、管理者が事前に手動でトポロジー管理部３４に格納してもよい。また、コントロール装置４が、何らかの方法で自律的に収集した上で、トポロジー管理部３４に格納するようにしてもよい。
【００５２】
規則生成部３５は、受信者管理部３１から送られてくるマルチキャストのグループアドレス毎のメンバーに対し、冗長ツリー計算部３３が計算した冗長ツリーに沿って送信元からパケットが届くように規則を生成し、規則生成部２３へ送る。
【００５３】
図４は、図３の冗長ツリーに対する規則における照合ルールを例示する。図３の送信元ノードが出すマルチキャストパケットは、送信元ＭＡＣアドレスがＷＷ：ＷＷ：ＷＷ：１１：１１：１１、宛先ＭＡＣアドレスが０１：００：５ｅ：ＸＸ：ＸＸ：ＸＸ、送信元ＩＰアドレスが１９２．１６８．ＹＹ．１、グループアドレスが２２４．ＺＺ．ＺＺ．ＺＺである。したがって、正常系ツリー用の照合ルールとして、これらの値がそのまま使用される。一方、予備系ツリー用照合ルールには、コントロール装置４が予備系のツリー用に割り当てたＶＶ：ＶＶ：ＶＶ：００：００：０１を送信元ＭＡＣアドレスの照合ルールに用いている点で、正常系ツリー用の照合ルールと相違する。
【００５４】
図３に示したノード１１に対する、正常系ツリーおよび予備系ツリーにおける次ノードは、それぞれ、ノード１２、１４である。すなわち、規則生成部３５は、ノード１１に対して、図４（ａ）の照合ルールにマッチしたパケットを、ノード１２と接続しているポートから出力するというアクションを含む規則を生成する。同様に、規則生成部３５は、ノード１１に対して、図４（ｂ）の照合ルールにマッチしたパケットをノード１４と接続しているポートから出力するというアクションを含む規則を生成する。規則生成部３５は、他のノード１２−１５に対しても、同様に、規則を生成する。
【００５５】
切替規則生成部３６は、故障通知受信部２２が故障通知を受け取ったときに、正常系から予備系に転送を切り換えるための、送信元ＭＡＣアドレス書換用の規則を生成し、規則送出部２３へ送る。
【００５６】
図３に示したネットワークの場合、この書換用の規則の照合ルールは、図４（ａ）に示す照合ルールと同一である。また、この照合ルールにマッチ（適合）したパケットに対するアクションは、「送信元ＭＡＣアドレスのＶＶ：ＶＶ：ＶＶ：００：００：０１への書換」である。この規則を図３におけるノード１１へ送ることで、送信元ＭＡＣアドレスがＷＷ：ＷＷ：ＷＷ：１１：１１：１１からＶＶ：ＶＶ：ＶＶ：００：００：０１に書き換えられる。送信元ＭＡＣアドレスを書き換えられたパケットは図４（ｂ）の照合ルールにマッチするため、規則生成部３５が事前に設定した予備系ツリーを用いて転送される。
【００５７】
書戻規則生成部３７は、受信者管理部３１から送られてくるマルチキャストのグループアドレス毎のメンバーに対し、冗長ツリー計算部３３が計算した冗長ツリーのうち、予備系ツリーのエッジにおいて、オリジナルの送信元ＭＡＣアドレスに書き戻す規則を生成し、規則送出部２３へ送る。
【００５８】
アドレス管理部３８は、送信者管理部３２から送られるパケットの送信元アドレス、宛先アドレス（グループアドレス）、および、送信元ＭＡＣアドレスの組を保持し、書戻規則生成部３７からの問い合わせに対して、送信元ＭＡＣアドレスを返す。
【００５９】
次に、本実施形態のコントロール装置４の動作について、図面を参照して説明する。
【００６０】
まず、パケット受信時の動作について、図５に示すフローチャートを参照して説明する。ノードは、受信したパケットをＰａｃｋｅｔ−ｉｎメッセージとして、セキュアチャネルを介してコントロール装置へ送る（ステップＡ１）。
【００６１】
コントロール装置４中の入力パケット処理部２１は、ノードからＰａｃｋｅｔ−ｉｎメッセージとして送られたパケットが、マルチキャストグループへの参加を示すパケットであるかどうかを調べる（ステップＡ２）。具体的には、入力パケット処理部２１は、パケットがＩＰｖ４である場合にはＩＧＭＰであるかどうかを調べ、ＩＰｖ６である場合にはＭＬＤであるかどうかを調べる。マルチキャストグループへの参加を示すパケットである場合には（ステップＡ２のＹｅｓ）、入力パケット処理部２１は、このパケットとパケットを受信したノードおよびポート番号を受信者管理部３１へ送る（ステップＡ３）。
【００６２】
一方、マルチキャストグループへの参加を示すパケットでない場合には（ステップＡ２のＮｏ）、入力パケット処理部２１は、このパケットとパケットを受信したノードのＩＤおよび受信ポートのＩＤを送信者管理部３２へ送る（ステップＡ４）。
【００６３】
次に、送信者管理部３２が入力パケット処理部２１からパケットを受け取ったときの動作について、図６に示すフローチャートを参照して説明する。
【００６４】
送信者管理部３２は、パケットの送信元アドレス、グループアドレス、および、送信元ＭＡＣアドレスをアドレス管理部３８へ送る（ステップＢ１）。次に、アドレス管理部３８は、送信者管理部３２から送られてきたパケットの送信元アドレス、グループアドレス、および、送信元ＭＡＣアドレスから成る一組の情報を記憶する（ステップＢ２）。次に、送信者管理部３２は、パケットの送信元アドレス、グループアドレス、パケットを受信したノードのＩＤおよび受信ポートのＩＤを冗長ツリー計算部３３へ送る（ステップＢ３）。
【００６５】
冗長ツリー計算部３３は、送信者管理部３２から送られてきたパケットを受信したノードのＩＤをルートとする正常系ツリーを計算する（ステップＢ４）。一例として、冗長ツリー計算部３３は、トポロジー管理部３４に格納されているトポロジー情報を元に、ダイクストラ法を適用することで、ルートとなるノードから他のすべてのノードまでの最短木を求める。このとき、冗長ツリー計算部３３は、一例として、各リンクのコストをすべて１とする。
【００６６】
次に、冗長ツリー計算部３３は、送信者管理部３２から送られてきたパケットを受信したノードのＩＤをルートとする予備系ツリーを計算する（ステップＢ５）。冗長ツリー計算部３３は、予備系ツリーを計算する際にも、正常系ツリーを計算する場合と同様に、ダイクストラ法を用いるようにしてもよい。ただし、冗長ツリー計算部３３は、正常系ツリーで用いたリンクに対しては、ペナルティとして１よりも大きいコストを設定する。
【００６７】
ペナルティとしてどのようなコスト値を使うかには、いくつか方法が考えられる。一例として、コストを無限大とした場合には、正常系ツリーで用いたリンクは予備系ツリーでは使用されない。しかし、この場合、トポロジーによってはすべてのノードを含む予備系ツリーを構築できない可能性がある。そこで、予備系ツリーで用いるコスト値として、全リンクの重みの合計を用いる方法が考えられる。この場合、予備系ツリーは、正常系ツリーで用いたリンクを極力避けるようにして構築されるが、他に選択肢がない場合には、正常系ツリーで用いたリンクも使用されることになる。
【００６８】
次に、冗長ツリー計算部３３は、計算した正常系ツリーおよび予備系ツリーと、送信者管理部３２から送られてきたパケットの送信元アドレスおよびグループアドレスを合わせて、規則生成部３５および書戻規則生成部３７へ送る（ステップＢ６）。
【００６９】
ここでは、冗長ツリーの計算方法として、一例として、ダイクストラ法をベースとした計算方法について説明した。ただし、ダイクストラ法以外のアルゴリズムとして、例えば、特許文献１に記載されたアルゴリズムを用いてもよい。
【００７０】
次に、受信者管理部３１が入力パケット処理部２１からパケットを受け取ったときの動作について、図７に示すフローチャートを参照して説明する。受信者管理部３１は、入力パケット処理部２１から送られてきたＩＧＭＰまたはＭＬＤパケット中のグループアドレス、ならびに、パケットを受信したノードのＩＤおよび受信ポートのＩＤを、書戻規則生成部３７および規則生成部３５へ送る（ステップＣ１）。
【００７１】
規則生成部３５は、受信者管理部３１から送られたグループアドレスを参照し、冗長ツリー計算部３３から送られてきた冗長ツリーのうち、該当する正常系、予備系のツリーの組があるかどうかを検索する（ステップＣ２）。該当する冗長ツリーが存在しない場合には（ステップＣ２のＮｏ）、規則生成部３５は処理を終了する。
【００７２】
一方、該当する冗長ツリーが存在する場合には（ステップＣ２のＹｅｓ）、規則生成部３５は、受信者管理部３１から送られてきた、パケットを受信したノード（受信ノード）に至るパスを、冗長ツリー計算部３３から送られてきた正常系ツリー中から抽出する（ステップＣ３）。
【００７３】
図３のネットワークにおいて、例えば、ノード１５が受信ノードである場合を考える。このとき、ノード１１からノード１２を経由してノード１５と至る正常系ツリー（点線）上のパスが抽出される。次に、規則生成部３５は、ステップＣ３で抽出したパスに沿ってパケットが転送されるよう規則を生成し、規則送出部２３へ送る（ステップＣ４）。
【００７４】
図３に示した例では、ノード１１に対して、図４（ａ）の照合ルールにマッチしたパケットをノード１２へ転送するように規則が生成される。一方、ノード１２に対して、当該パケットをノード１５へ転送するように規則が生成される。
【００７５】
次に、規則生成部３５は、ステップＣ３と同様に、受信ノードに至るパスを予備系ツリー中から抽出する（ステップＣ５）。また、規則生成部３５は、送信元ＭＡＣアドレスが書き換えられたパケットがステップＣ５で抽出したパスに沿って転送されるように規則を生成し、規則送出部２３へ送る（ステップＣ６）。
【００７６】
図３のネットワークにおいては、ノード１１からノード１４を経由してノード１５に至るパス（破線）が抽出される。このとき、ノード１１に対して、図４（ｂ）の照合ルールにマッチしたパケットをノード１４へ転送するように規則が生成される。一方、ノード１４に対して、当該パケットをノード１５へ転送するように規則が生成される。
【００７７】
次に、規則生成部３５は、受信者管理部３１から送られてきた、ノードのＩＤの受信ポートに対し、正常系ツリーから送られてきたパケットを送出するように規則を生成し、規則送出部２３へ送る（ステップＣ７）。
【００７８】
次に、規則生成部３５は、受信者管理部３１から送られてきた、ノードのＩＤの受信ポートに対し、予備系ツリーから送られてきたパケットを、送信元ＭＡＣアドレスを書き換えた上で送出するように規則を生成し、規則送出部２３へ送る（ステップＣ８）。
【００７９】
図３のネットワークにおいては、規則生成部３５は、図４（ａ）の照合ルールにマッチするパケットはそのまま、図４（ｂ）の照合ルールにマッチするパケットは送信元ＭＡＣアドレスをＷＷ：ＷＷ：ＷＷ：１１：１１：１１に書き換えた上で、受信者が接続されているポートへパケットを出力する規則を生成する。
【００８０】
次に、規則送出部２３は、各ステップで生成された規則を各ノードへ転送する（ステップＣ９）。
【００８１】
故障発生時の動作について、図８に示すフローチャートを参照して説明する。故障を検知した故障通知受信部２２は、切替規則生成部３６に故障箇所を通知する（ステップＤ１）。
【００８２】
例えば、ノードからＰｏｒｔ−ｓｔａｔｕｓメッセージにおいてリンクダウン状態に変化したとの通知を受けた場合、当該ポートに接続しているリンクに故障が発生したものと判断する。また、セキュアチャネルが切断された場合、当該ノード自体に故障が発生したものと判断する。これら以外にも、Ｆｌｏｗ−Ｒｅｍｏｖｅｄメッセージを用いることができる。故障が発生すると、故障箇所よりも下流側のノードにはパケットが届かなくなる。このとき、正常系ツリーに沿ってパケットを転送するためのフローエントリにタイムアウトが発生し、コントロール装置４へとＦｌｏｗ−Ｒｅｍｏｖｅｄメッセージが送信される。各ノードから送信されるＦｌｏｗ−Ｒｅｍｏｖｅｄメッセージを集め、Ｆｌｏｗ−Ｒｅｍｏｖｅｄメッセージが送られてきたノードと、それ以外のノードとの間が故障箇所であると判定してもよい。また、これら以外の手段に基づいて、故障検知を行うようにしてもよい。
【００８３】
次に、切替規則生成部３６は、故障箇所が正常系ツリーに含まれるかどうかを判定する（ステップＤ２）。
【００８４】
例えば、図３のネットワークでノード１４、１５間のリンクに故障が発生した場合、このリンクは正常系ツリーにおいて使用されていないため、故障箇所は正常系ツリーに含まれない（ステップＤ２のＮｏ）。このときには、パスを切り替える必要がないため、一連の処理を終了する。
【００８５】
一方、ノード１２、１３間のリンクに故障が発生した場合、このリンクは正常系ツリーにおいて使用されており、故障箇所は正常系ツリーに含まれる（ステップＤ２のＹｅｓ）。故障箇所が正常系ツリーに含まれている場合（ステップＤ２のＹｅｓ）、切替規則生成部３６は予備系ツリーへ切り換えるための書換用の規則を生成し、規則送出部２３へ送る（ステップＤ３）。
【００８６】
図３に例示したネットワークにおいては、この書換用の規則のアクションは、「ＷＷ：ＷＷ：ＷＷ：１１：１１：１１からＶＶ：ＶＶ：ＶＶ：００：００：０１への書換」である。
【００８７】
規則送出部２３は、切替規則生成部３６が生成した書換用の規則を、マルチキャストの送信元ホストが接続しているノードに送出する（ステップＤ４）。
【００８８】
図３に例示したネットワークにおいては、規則送出部２３は、マルチキャストの送信元ホストが接続しているノード１１に、書換用の規則を送出する。
【００８９】
なお、ステップＤ４では、規則送出部２３は、切替規則生成部３６が生成した書換用の規則を、マルチキャストの送信元ホストが接続しているノードへ送出するものとしたが、他のノードに送出してもよい。例えば、図９のネットワークでは、ノード１１とノード１２間のリンクを正常系ツリーと予備系ツリーとで共有している。このような構成の場合には、規則送出部２３は、マルチキャストの送信元ホストが接続しているノードであるノード１１の代わりに、ノード１２へ書換用の規則を送出してもよい。
【００９０】
（実施形態２）
第２の実施形態に係るコントロール装置について、図面を参照して説明する。
【００９１】
第１の実施形態のコントロール装置４は、マルチキャストパケット転送におけるパス切替動作を行う。一方、本実施形態のコントロール装置４は、ユニキャストパケット転送におけるパス切替動作を行う。
【００９２】
図１０は、本実施形態に係るコントロール装置４の構成を一例として示すブロック図である。図１０を参照すると、本実施形態のコントロール装置４は、第１の実施形態のコントロール装置４（図２）における送信者管理部３２、受信者管理部３１および冗長ツリー計算部３３の代わりに、パケット送出部２４、パケット解析部３９、経路表４０および冗長パス計算部４１を備えている。
【００９３】
マルチキャストとは異なり、ユニキャストでは、受信したパケットのヘッダ中に宛先アドレスが記述されている。したがって、受信者を別途管理する必要がなく、どのノードのどのポートから出力すべきかを、経路表４０中の情報を元に決定すればよい。
【００９４】
パケット解析部３９は、入力パケット処理部２１から送られてきたパケットの宛先アドレスを参照し、経路表４０から出口となる出力ノードおよびポートを決定し、これらの情報とともにパケット本体をパケット送出部２４へ送る。また、パケット解析部３９は、出力ノード、ポート番号に加え、パケットを受信した入力ノード、ポート番号、パケットのヘッダを冗長パス計算部４１へ送る。さらに、パケット解析部３９は、パケットの送信元ＩＰアドレスおよび送信元ＭＡＣアドレスの組をアドレス管理部３８へ送る。
【００９５】
経路表４０は、宛先、マスク長、出力ノードのＩＤ、および、出力ポート番号で一組となる情報を管理するためのテーブルである。経路表４０に含まれるこれらの情報は、何らかの手段で予め設定されているものとする。
【００９６】
図１１は、経路表４０の構成を一例として示す。例えば、宛先プレフィックスが１９２．１６８．１．１である場合には、１番目のエントリに該当するため、出力ノードは１１、出力ポートは１番目のポートとなる。
【００９７】
ノードは、一連のフローを構成するパケット群のうちの２番目以降のパケットを、規則生成部３５により生成された規則に従って転送する。しかし、先頭のパケットはＰａｃｋｅｔ−ｉｎによりコントロール装置４へ送られるため、先頭のパケットを、コントロール装置４から出口となる出力ノードへ送る処理が必要となる。そこで、パケット送出部２４は、パケット解析部３９から送られてきたパケットを指定のポートから出力するように、指定の出力ノードに対しＰａｃｋｅｔ−ｏｕｔメッセージを送る。これにより、フローの先頭のパケットも、宛先に届けることが可能となる。
【００９８】
冗長パス計算部４１は、パケット解析部３９から送られてきた入力ノードから出力ノードに至る冗長パス（正常系パスおよび予備系パスの組み合わせ）を計算する。ここで冗長パスの計算は、第１の実施形態で示した方法で冗長ツリーを計算して、冗長ツリーの中から特定の出力ノードに至るパスを抽出すればよい。
【００９９】
次に、パケット受信時の動作について、図１２のフローチャートを参照して説明する。
【０１００】
ノードが受信したパケットは、Ｐａｃｋｅｔ−ｉｎメッセージとして、セキュアチャネルを介してコントロール装置４へ送られる（ステップＥ１）。
【０１０１】
コントロール装置４へ送られたメッセージを受け取った入力パケット処理部２１は、このパケットとパケットを受信した入力ノードおよびポート番号をパケット解析部３９へ送る（ステップＥ２）。
【０１０２】
パケット解析部３９は、パケットの宛先アドレスを参照し、経路表４０から出口となる出力ノードおよびポートを決定する（ステップＥ３）。
【０１０３】
パケット解析部３９は、ステップＥ３の結果とパケットをパケット送出部２４へ送る（ステップＥ４）。パケット送出部２４は、パケットを指定のポートから出力するように、指定の出力ノードに対してＰａｃｋｅｔ−ｏｕｔメッセージを送る（ステップＥ５）。
【０１０４】
パケット解析部３９は、送信元ＩＰアドレス、および、送信元ＭＡＣアドレスの組をアドレス管理部３８へ送る（ステップＥ６）。アドレス管理部３８は、パケット解析部３９から送られてきた、パケットの送信元アドレスおよび送信元ＭＡＣアドレスから成る一組の情報を記憶する（ステップＥ７）。
【０１０５】
パケット解析部３９は、出力ノード、ポート番号に加え、パケットを受信した入力ノード、ポート番号、および、パケットのヘッダを冗長パス計算部４１へ送る（ステップＥ８）。冗長パス計算部４１は、パケット解析部３９から送られてきた、入力ノードから出力ノードに至る冗長パスを計算し、その結果を、パケットとともに規則生成部３５、切替規則生成部３６、および、書戻規則生成部３７へ送る（ステップＥ９）。
【０１０６】
規則生成部３５は、送られてきたパケットから照合ルールを生成し、冗長パス計算部４１から送られてきた正常系パスに沿ってパケットが転送されるように規則を生成し、規則送出部２３へ送る（ステップＥ１０）。また、規則生成部３５は、送られてきたパケットのうちの送信元ＭＡＣアドレスが予備系パス用に転送用に書き換えられた照合ルールを生成し、冗長パス計算部４１から送られてきた予備系パスに沿ってパケットが転送されるように規則を生成し、規則送出部２３へ送る（ステップＥ１１）。
【０１０７】
規則に含まれる照合ルールは、マルチキャストかユニキャストかの違いを除いて、図４に示す照合ルールと同一である。
【０１０８】
次に、規則生成部３５は、出口ノードの指定のポートに対し、正常系ツリーから送られてきたパケットを送出するように規則を生成し、規則送出部２３へ送る（ステップＥ１２）。また、規則生成部３５は、出口ノードの指定のポートに対し、予備系ツリーから送られてきたパケットを、送信元ＭＡＣアドレスを書き換えた上で送出するように規則を生成し、規則送出部２３へ送る（ステップＥ１３）。
【０１０９】
次に、規則送出部２３は、各ステップで生成された規則を各ノードへ転送する（ステップＥ１４）。
【０１１０】
故障発生時の切替動作は、第１の実施形態におけるマルチキャストの場合とほぼ同様である。マルチキャストの場合には、故障箇所が正常系ツリー上にあるかどうかを判定していた。一方、本実施形態のユニキャストの場合には、故障箇所が正常系パス上にあるかどうかを判定する。
【０１１１】
本発明に係るコントロール装置は、一例として、オープンフロー（ＯｐｅｎＦｌｏｗ）を用いた高信頼ネットワークを構築する際のオープンフローコントローラ（ＯＦＣ）として利用することができる。
【０１１２】
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１１３】
１    セキュアチャネル
２    スイッチ管理部
３    ツリー管理部
４    コントロール装置
１０    送信元ノード
１１−１５    ノード
２１    入力パケット処理部
２２    故障通知受信部
２３    規則送出部
２４    パケット送出部
３１    受信者管理部
３２    送信者管理部
３３    冗長ツリー計算部
３４    トポロジー管理部
３５    規則生成部
３６    切替規則生成部
３７    書戻規則生成部
３８    アドレス管理部
３９    パケット解析部
４０    経路表
４１    冗長パス計算部
４３    経路計算部
【図１】
2015508950.tif 000003
【図２】
2015508950.tif 000004
【図３】
2015508950.tif 000005
【図４】
2015508950.tif 000006
【図５】
2015508950.tif 000007
【図６】
2015508950.tif 000008
【図７】
2015508950.tif 000009
【図８】
2015508950.tif 000010
【図９】
2015508950.tif 000011
【図１０】
2015508950.tif 000012
【図１１】
2015508950.tif 000013
【図１２】
2015508950.tif 000014
【図１３】
2015508950.tif 000015
【図１４】
2015508950.tif 000016
【図１５】
2015508950.tif 000017
【図１６】
2015508950.tif 000018
【図１７】
2015508950.tif 000019
【国際調査報告】
2015508950.tif 000020
2015508950.tif 000021