(57)【要約】【課題】通信処理の効率を改善する。【解決手段】複数の制御装置を備えるネットワーク中の転送装置は、受信部、記憶部、判定部、送信部を備える。受信部は、転送処理の対象である対象パケットを受信する。記憶部は、転送装置が行う処理の方法を表す転送ルールを決定する制御装置である決定装置から、受信部が受信した転送ルールを記憶する。判定部は、対象パケットに適用できる転送ルールが記憶部に記憶されていない場合、決定装置から転送ルールを取得できないことを示す不可情報が、対象パケット中に含まれているかを判定する。送信部は、対象パケットに不可情報が含まれている場合、対象パケットに適用される転送ルールを決定装置に要求せずに、対象パケットを他の転送装置に送信する。【選択図】図１
2015082742.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御装置を備えるネットワーク中の転送装置であって、
転送処理の対象である対象パケットを受信する受信部と、
前記転送装置が行う処理の方法を表す転送ルールを決定する制御装置である決定装置から、前記受信部が受信した転送ルールを記憶する記憶部と、
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されていない場合、前記決定装置から前記転送ルールを取得できないことを示す不可情報が、前記対象パケット中に含まれているかを判定する判定部と、
前記対象パケットに前記不可情報が含まれている場合、前記対象パケットに適用される転送ルールを前記決定装置に要求せずに、前記対象パケットを、他の転送装置に送信する送信部
を備えることを特徴とする転送装置。
【請求項２】
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されておらず、かつ、前記対象パケットに前記不可情報が含まれていない場合、前記対象パケットに適用される転送ルールを前記決定装置から取得するための処理を行う取得部と、
前記対象パケットに適用される転送ルールを所定の時間以内に前記決定装置から取得できない場合、前記対象パケットに前記不可情報を付加する付加処理部、
を備え、
前記送信部は、前記不可情報を付加した後の対象パケットを、前記他の転送装置に送信する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されておらず、かつ、前記対象パケットに前記不可情報が含まれていない場合、前記対象パケットに適用される転送ルールを前記決定装置から取得するための処理を行う取得部と、
前記対象パケットに適用される転送ルールを前記決定装置から取得すると、取得した転送ルールに基づいて前記対象パケットの転送先を特定する特定部と、
前記複数の制御装置のうちの前記決定装置以外のいずれかからの転送ルールの取得に障害が発生したことを通知する障害情報が前記対象パケットに含まれており、かつ、前記対象パケットの転送先が特定された場合、前記対象パケットから前記障害情報を削除することにより、前記対象パケットを転送パケットに変換する変換部、
を備え、
前記送信部は、前記転送パケットを、前記転送先に送信する
ことを特徴とする請求項１に記載の転送装置。
【請求項４】
複数のポートを備え、
前記取得部は、前記対象パケットに適用される転送ルールを前記決定装置に要求するための要求メッセージを生成し、
前記送信部は、前記要求メッセージを前記決定装置に送信し、
前記対象パケットの宛先に至る経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた出力ポート情報が、前記要求メッセージに応答する応答メッセージに含まれている場合、前記特定部は、前記出力ポート情報中で当該転送装置の識別子に対応付けられたポートを特定し、
前記送信部は、前記複数のポートのうちで、前記特定部により特定されたポートを、転送処理に使用する
ことを特徴とする請求項３に記載の転送装置。
【請求項５】
前記取得部は、前記対象パケットに適用される転送ルールを前記決定装置に要求するための要求メッセージを生成し、
前記送信部は、前記要求メッセージを前記決定装置に送信し、
前記特定部は、
前記対象パケットの宛先に至る経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置で使用される転送ルールを対応付けた転送ルール変更情報が、前記要求メッセージに応答する応答メッセージに含まれている場合、前記転送ルール変更情報中で当該転送装置の識別子に対応付けられた転送ルールを用いて前記記憶部の情報を変更し、
前記記憶部の変更後の情報を用いて、前記転送先を特定する
ことを特徴とする請求項３に記載の転送装置。
【請求項６】
複数の制御装置と複数の転送装置を備えるネットワーク中の制御装置であって、
パケットの転送処理の方法を表す転送ルールを要求する要求メッセージを受信する受信部と、
前記転送ルールを決定する決定部と、
前記転送ルールでの処理対象のパケットである対象パケットに、前記複数の制御装置のいずれかから転送ルールを取得できないことを示す不可情報が含まれている場合、前記対象パケットを前記要求メッセージから抽出すると共に、前記要求メッセージの送信元から前記対象パケットの宛先までの経路の情報を、前記対象パケットに付加する経路付加部と、
前記経路の情報を付加した対象パケットを、前記要求メッセージの送信元に送信する送信部
を備えることを特徴とする制御装置。
【請求項７】
前記複数の転送装置のそれぞれについて、前記転送装置が備えるポートの番号に、前記ポートを介して接続された装置を対応付けたネットワーク情報を記憶する記憶部と、
前記経路を決定するための計算処理を行う計算部、
をさらに備え、
前記経路付加部は、前記計算部の計算結果と前記ネットワーク情報を用いて、前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた情報を、前記対象パケットに付加する
ことを特徴とする請求項６に記載の制御装置。
【請求項８】
前記複数の転送装置のそれぞれについて、前記転送装置が備えるポートの番号に、前記ポートを介して接続された装置を対応付けたネットワーク情報を記憶する記憶部と、
前記ネットワーク情報を用いて前記経路を決定するための計算処理を行う計算部、
をさらに備え、
前記決定部は、前記経路に含まれる転送装置ごとの転送ルールをさらに決定し、
前記経路付加部は、前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置で使用される転送ルールを対応付けた情報を、前記対象パケットに含める
ことを特徴とする請求項６に記載の制御装置。
【請求項９】
前記決定部は、
前記複数の転送装置のうちの第１の転送装置と前記制御装置の間の接続が確立されると、前記制御装置とは異なる他の制御装置から前記転送ルールを通知されている転送装置のうちで、前記第１の転送装置からのホップ数が相対的に小さい転送装置である第２の転送装置を、前記ネットワーク情報を用いて検索し、
前記第１の転送装置から前記第２の転送装置に至る経路を使用する場合の前記第１の転送装置での出力ポートを、前記第１の転送装置が前記制御装置から前記転送ルールを取得できない場合の前記対象パケットの出力ポートに指定する
ことを特徴とする請求項７または８に記載の制御装置。
【請求項１０】
第１の制御装置、第２の制御装置、および、複数の転送装置を備え、前記第１の制御装置が第１および第２の転送装置が行う処理の方法を表す転送ルールを決定するネットワークで行われる転送方法であって、
前記第１の転送装置は、
処理対象である第１のパケットに適用する転送ルールの前記第１の制御装置からの取得に失敗した場合、前記第１の制御装置から前記転送ルールを取得できないことを示す不可情報を、前記第１のパケットに付加して、第２のパケットを生成し、
前記第２のパケットを、前記第２の転送装置に送信し、
前記第２の転送装置は、前記第２のパケット中の前記不可情報を検出すると、前記第２のパケットに適用する転送ルールを保持していなくても、前記第１の制御装置に転送ルールを要求せずに、第３の転送装置に、前記第２のパケットを転送する
ことを特徴とする転送方法。
【請求項１１】
前記第２の制御装置は、前記第３の転送装置が行う処理を決定し、
前記第３の転送装置は、
前記第２のパケットに適用する処理を保持していない場合、前記第２のパケットに適用する処理を示す情報を要求する要求メッセージを、前記第２の制御装置に送信し、
前記第２の制御装置から前記第２のパケットに適用する処理が通知されると、前記第２のパケットから前記不可情報を削除することにより、前記第２のパケットを前記第１のパケットに変換し、
前記第１のパケットを、前記第２の制御装置から取得した情報を用いて処理する
ことを特徴とする請求項１０に記載の転送方法。
【請求項１２】
前記要求メッセージは、前記第２のパケットを含み、
前記第２の制御装置は、
前記要求メッセージを受信すると、前記第３の転送装置から前記第１のパケットの宛先に至る経路を決定し、
前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた出力ポート情報を、前記第１のパケットに付加して、前記第３の転送装置に送信し、
前記第３の転送装置は、前記出力ポート情報を含むパケットを、前記出力ポート情報中の前記第３の転送装置の識別子に対応付けられたポートから出力する
ことを特徴とする請求項１１に記載の転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の装置を含むネットワーク中でのパケットの転送方法に関する。
【背景技術】
【０００２】
近年、ソフトウェアを用いた仮想的なネットワークや、仮想的なネットワークの形成に用いられる技術であるSoftware Defined Networking（ＳＤＮ）が注目されてきている。ＳＤＮでは、コントローラと呼ばれる装置がネットワーク中に含まれている装置を管理する。例えば、ネットワーク中のスイッチは、コントローラから取得した転送ルールを使用して、受信したパケットの転送処理を行う。転送ルールを使用しても処理できないパケットを受信した場合、スイッチは受信したパケットの情報をコントローラに通知することにより、コントローラからそのパケットの処理方法を特定するための情報を取得する。スイッチは、コントローラから取得した情報に基づいて、パケットの転送処理を行う。このように、コントローラが他の装置での処理に影響を与えることから、耐障害性やシステムの拡張性を向上させるために、ネットワーク中に複数のコントローラを設置することが考えられている。
【０００３】
関連する技術として、それぞれが通信経路を算出する複数のコントローラと、複数のコントローラのうちの経路決定者が設定した経路に従って、受信パケットの中継処理を行う複数のスイッチを含むシステムが考案されている（例えば、特許文献１など）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１６０３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のコントローラが含まれているネットワークであっても、あるコントローラに障害が発生した場合や、あるコントローラに過剰な負荷がかかっている場合には、コントローラからスイッチへの転送ルールの通知ができなくなる場合があり得る。このような場合でも、受信パケットを処理できないスイッチは、そのパケットの転送に使用する情報（すなわち、転送ルール）を接続先のコントローラに要求する。この場合、スイッチは転送ルールが得られないにもかかわらずコントローラに転送ルールを要求することになるので、無駄な通信処理を行ってしまい、効率が悪い。
【０００６】
本発明は、１つの側面では、通信処理の効率を改善することを目的とする。
【課題を解決するための手段】
【０００７】
複数の制御装置を備えるネットワーク中の転送装置は、受信部、記憶部、判定部、送信部を備える。受信部は、転送処理の対象である対象パケットを受信する。記憶部は、前記転送装置が行う処理の方法を表す転送ルールを決定する制御装置である決定装置から、前記受信部が受信した転送ルールを記憶する。判定部は、前記対象パケットに適用できる転送ルールが前記記憶部に記憶されていない場合、前記決定装置から前記転送ルールを取得できないことを示す不可情報が、前記対象パケット中に含まれているかを判定する。送信部は、前記対象パケットに前記不可情報が含まれている場合、前記対象パケットに適用される転送ルールを前記決定装置に要求せずに、前記対象パケットを、他の転送装置に送信する。
【発明の効果】
【０００８】
通信処理の効率が改善できる。
【図面の簡単な説明】
【０００９】
【図１】実施形態にかかる通信方法の例を示す図である。
【図２】転送装置の構成の例を示す図である。
【図３】制御装置の構成の例を示す図である。
【図４】制御装置の通信方法の例を説明する図である。
【図５】転送装置および制御装置のハードウェア構成の例を示す。
【図６】ネットワークの例を示す図である。
【図７】転送ルールテーブルとデフォルト転送ルールの例を示す図である。
【図８】障害情報を含むパケットのフォーマットの例を示す図である。
【図９】第１の実施形態で行われる通信処理の例を説明する図である。
【図１０】第１の実施形態で行われる通信処理の例を説明する図である。
【図１１】転送装置の動作の例を説明するフローチャートである。
【図１２】第２の実施形態で使用される制御装置の構成の例を示す。
【図１３】出力ポートの情報を含むパケットのフォーマットの例を示す図である。
【図１４】第２の実施形態で行われる通信処理の例を説明する図である。
【図１５】制御装置の動作の例を説明するフローチャートである。
【図１６】転送装置の動作の例を説明するフローチャートである。
【図１７】転送ルールを含むパケットのフォーマットの例を示す図である。
【図１８】転送ルールを用いた処理方法の例を説明する図である。
【図１９】転送ルールテーブルの変更例を説明する図である。
【図２０】転送装置の動作の例を説明するフローチャートである。
【図２１】デフォルト転送ルールの決定方法の例を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
図１は、実施形態にかかる通信方法の例を示す。図１に示すネットワークは、複数の転送装置１０（１０ｘ〜１０ｚ）、および、複数の制御装置３０（３０ｘ、３０ｙ）を含む。制御装置３０はＳＤＮでのコントローラとして動作でき、パケットの転送経路の決定や転送ルールの通知を行うものとする。転送装置１０ｘと転送装置１０ｙは制御装置３０ｘに接続している。転送装置１０ｚは制御装置３０ｙに接続している。ここで、転送装置は、ＳＤＮでのスイッチとして動作でき、制御装置から得た情報（転送ルール）に従ってパケットを転送する。転送装置１０ｘには端末５ｗ、端末５ｕが接続しており、転送装置１０ｙには、端末５ｘと端末５ｙが接続している。さらに、転送装置１０ｚに端末５ｚが接続されている。
【００１１】
「転送ルール」は、転送処理の方法を表わす任意のデータである。例えば、転送ルールは、パケットの宛先Media Access Control（ＭＡＣ）アドレスに、そのパケットを転送装置１０が転送するときに使用する出力ポートの番号を対応付けた情報であっても良い。転送装置１０ｘは、制御装置３０ｘから通知された転送ルールに従って転送できないパケットを受信すると、制御装置３０ｘに新たな転送ルールを要求し、得られた転送ルールを用いて、パケットの転送処理を行う。転送装置１０ｙも転送装置１０ｘと同様の処理を行う。さらに、転送装置１０ｚは、制御装置３０ｙから転送ルールを取得して、パケットの転送処理を行うものとする。図１の例では、転送装置１０ｘと転送装置１０ｙは、制御装置３０ｘから取得した転送ルールに従ってパケットを転送するが、制御装置３０ｘに障害が発生した場合、制御装置３０ｙとの接続を確立し、制御装置３０ｙから転送ルールを取得するものとする。
【００１２】
以下、制御装置３０ｘに障害が発生した後で、転送装置１０ｘ、１０ｙが制御装置３０ｙとの通信を確立する前に、端末５ｗが端末５ｚ宛のパケットＰ０を送信した場合を例として、実施形態に係る通信方法を説明する。ここでは、転送装置１０ｘ〜１０ｚのいずれも、端末５ｚ宛てのパケットの転送ルールを保持していないものとする。
【００１３】
（Ａ）端末５ｗは、端末５ｚ宛てのパケットＰ０を生成し、端末５ｚに向けて送信する。このため、パケットＰ０は、転送装置１０ｘに送信される。
【００１４】
（Ｂ）転送装置１０ｘは、パケットＰ０を受信すると、予め記憶している転送ルールを用いて、パケットＰ０を転送できるかを判定する。ここでは、転送装置１０ｘは、保持している転送ルールを用いても、パケットＰ０の転送はできないと判定する。
【００１５】
（Ｃ）転送装置１０ｘは制御装置３０ｙと接続を確立していないので、転送装置１０ｘにとっての転送ルールの問い合わせ先は、制御装置３０ｘである。そこで、転送装置１０ｘは制御装置３０ｘに転送ルールを要求するが、制御装置３０ｘに障害が発生しているので、転送装置１０ｘは転送ルールを取得できない。
【００１６】
所定時間内に制御装置３０ｘから転送ルールを取得できない場合、転送装置１０ｘは、パケットＰ０に、制御装置３０ｘから転送ルールを取得できないことを表す情報を付すことにより、パケットＰ０をパケットＰ１に変換する。以下、制御装置から転送ルールを取得できないことを通知するために使用される情報を「不可情報」と記載することがある。なお、不可情報には、転送ルールを通知できない制御装置３０を識別する識別子が含まれている。図１の例では、不可情報はパケットＰ１中の「３０ｘ：ＮＧ」という情報である。転送装置１０ｘは、転送装置１０ｘに接続されている他の転送装置１０に、パケットＰ１を転送する。転送装置１０ｘがパケットＰ１の転送先を選択する方法については後述する。ここでは、パケットＰ１が転送装置１０ｙに送信されるものとする。
【００１７】
（Ｄ）転送装置１０ｙは、まず、保持している転送ルールを用いてパケットＰ１を転送できるかを判定する。ここでは、転送装置１０ｙは、保持している転送ルールを用いても、パケットＰ１を転送できないと判定する。次に、転送装置１０ｙは、制御装置３０ｘから転送ルールを取得できるかを判定するために、パケットＰ１中の不可情報を抽出する。パケットＰ１の不可情報は、制御装置３０ｘから転送ルールを取得できないことを表している。そこで、転送装置１０ｙは、制御装置３０ｘに転送ルールを要求せずに、パケットＰ１を転送装置１０ｚに転送する。なお、転送装置１０ｙも転送装置１０ｘと同様に、後述する方法でパケットＰ１を転送する転送装置を選択するものとする。
【００１８】
（Ｅ）転送装置１０ｚは、転送装置１０ｙと同様に、保持している転送ルールを用いてもパケットＰ１を転送できないと判定する。次に、転送装置１０ｚは、制御装置３０ｙから転送ルールを取得できるかを判定するために、パケットＰ１中の不可情報を抽出する。パケットＰ１の不可情報は、制御装置３０ｘから転送ルールを取得できないことを表しているが、制御装置３０ｙについての情報は含まれていない。そこで、転送装置１０ｚは、制御装置３０ｙに転送ルールを要求する。
【００１９】
（Ｆ）制御装置３０ｙは、転送装置１０ｚからの要求に応じて、端末５ｚ宛てのパケットの転送先を含む転送ルールを、転送装置１０ｚに送信する。
【００２０】
（Ｇ）転送装置１０ｚは、転送ルールを用いて、パケットＰ１の送信先を特定する。さらに、転送装置１０ｚは、転送ルールから、転送装置１０ｚから端末５ｚに直接、パケットを送信できることを認識する。そこで、転送装置１０ｚは、パケットＰ１から不可情報を削除することにより、パケットＰ１をパケットＰ０に変換した後で、パケットＰ０を端末５ｚに送信する。端末５ｚは、パケットＰ０を転送装置１０ｚから受信する。
【００２１】
このように、実施形態にかかる通信方法によると、転送装置１０は、転送ルールを取得できない制御装置３０を他の転送装置１０から通知されると、通知された制御装置３０には転送ルールを要求しない。このため、転送装置１０は、無駄な問合せ処理を制御装置３０に行わなくてすむ。さらに、転送装置１０は、転送ルールが無いために転送先を特定できない場合は、処理対象のパケットを、他の転送装置１０に転送する。すると、転送ルールを要求する制御装置３０の変更中で転送装置１０が転送ルールを得られない場合でも、転送装置１０はパケットを廃棄しないことになるので、転送装置１０でのパケットの廃棄によるパケットロスも防止できる。
【００２２】
図１を参照しながら制御装置３０ｘに障害が発生した場合について説明したが、他の原因により、制御装置３０ｘから転送ルールを取得できないケースでも実施形態にかかる通信方法は適用され得る。例えば、制御装置３０ｘの負荷が高すぎて処理が行われない場合などでも図１と同様の処理が可能である。一方、制御装置３０ｘと転送装置１０ｘの間の接続が切れた場合には、転送装置１０ｘは転送ルールを取得できないが、転送装置１０ｙは制御装置３０ｘから転送ルールを取得できる可能性がある。このように、転送装置１０ｘ以外の他の転送装置１０では転送ルールが取得できる可能性がある場合、転送装置１０ｘは、不可情報をパケットに付加しない。このため、転送装置１０ｘでの接続が切断されても、転送装置１０ｙは転送ルールの取得を行うことが可能である。
【００２３】
図１はあるネットワークでの通信例を示しており、例えば、制御装置３０に接続している転送装置１０の数や転送装置１０に接続している端末５の数などは任意に変更され得る。また、図１に示すネットワークは、論理ネットワークであっても良く、ネットワークが１台のコンピュータや物理回線で接続された複数のコンピュータによって実現されていても良い。さらに、論理ネットワークは、Ｏｐｅｎｆｌｏｗなど、転送装置１０が制御装置３０で決定された転送ルールに従ってパケットを転送する任意の技術で実現され得るものとする。なお、本明細書中では、読みやすくするための便宜上、ネットワーク中で送受信される情報の単位を表現する際に使用する文言を「パケット」に統一しているにすぎない。このため、実装に応じて、適宜、「パケット」という文言を「フレーム」に読み替えることができるものとする。
【００２４】
＜装置構成＞
図２は、転送装置１０の構成の例を示す。転送装置１０は、受信部１１、送信部１２、転送先特定部１４、記憶部１５、接続管理部１８、制御部２０、ポートＰｏ１〜Ｐｏ５を備える。さらに、転送装置１０は、外部インタフェース１３を備えても良い。制御部２０は、判定部２１、取得部２２、付加処理部２３、変換部２４を有する。なお、図２はポート数が５つの転送装置１０の例であるが、１台の転送装置１０が有するポートの数は実装に応じて変更され得る。
【００２５】
受信部１１は、ポートＰｏ１〜Ｐｏ５を介して、他の転送装置１０、制御装置３０、端末５などからパケットを受信する。送信部１２は、他の転送装置１０、制御装置３０、端末５などにパケットを送信する。例えば、送信部１２は、付加処理部２３、変換部２４などから入力されたパケットの送信処理を行う。
【００２６】
転送先特定部１４は、受信部１１で受信したパケットの出力先のポートを決定する。転送先特定部１４は、パケットの転送先などの条件をキーとして、適用できる転送ルールを特定する。転送先特定部１４は、適用可能な転送ルールを特定できた場合、パケットを出力するポートを転送ルールに基づいて決定し、ポート番号と共に、転送対象のパケットを変換部２４に出力する。一方、適用可能な転送ルールを特定できない場合、転送先特定部１４は、パケットを判定部２１に出力する。
【００２７】
記憶部１５は、転送ルールテーブル１６を保持する。転送ルールテーブル１６には、これまでに転送装置１０が取得した転送ルールが記録されている。記憶部１５は、デフォルト転送ルール１７も保持している。以下、デフォルト転送ルール１７は、転送ルールテーブル１６を用いて処理できないパケットの転送先を特定するための情報のことを表すものとする。デフォルト転送ルール１７は、制御装置３０で生成されてもよく、ネットワークに含まれていない装置やオペレータにより決定されても良い。ネットワークに含まれていない装置やオペレータによりデフォルト転送ルール１７が決定される場合、転送装置１０は、外部インタフェース１３を介して、デフォルト転送ルール１７を取得する。一方、制御装置３０がデフォルト転送ルール１７を生成する場合、転送装置１０は、受信部１１を介して、デフォルト転送ルール１７を取得する。転送ルールテーブル１６とデフォルト転送ルール１７の例については、後述する。さらに、記憶部１５は、制御部２０での処理に用いられるデータや、制御部２０での処理で生成されたデータも保持する。
【００２８】
接続管理部１８は、転送装置１０と制御装置３０との間のセッション、転送装置１０同士の通信に使用されるセッション、転送装置１０と端末５との間のセッションの状態をモニタする。例えば、接続管理部１８は、通信中の制御装置３０ａとの間のセッションが切断されると、制御装置３０ａとの間のセッションの再確立や、他の制御装置３０ｂとのセッションの確立のための処理も行う。接続管理部１８は、セッションの確立に成功している制御装置３０を、転送ルールの要求先として取得部２２に通知する。例えば、接続管理部１８は、転送ルールの要求先と確立しているセッションの識別子や、転送ルールの要求先とする制御装置３０の識別子などを取得部２２に通知できる。
【００２９】
判定部２１は、転送先特定部１４から入力されたパケットに不可情報が含まれているかを判定する。ここで、不可情報には、転送ルールの取得ができない制御装置３０の識別子が含まれている。判定部２１は、パケットに不可情報が含まれている場合、転送ルールの要求先となっている制御装置３０の識別子が不可情報に含まれているかを判定する。転送ルールの要求先の識別子が不可情報に含まれている場合、判定部２１は、制御装置３０へ転送ルールを要求しないことを決定する。転送ルールを要求しない場合、判定部２１は、転送先特定部１４から入力されたパケットを付加処理部２３に出力する。
【００３０】
一方、転送ルールの問い合わせ先の識別子が不可情報に含まれていない場合、判定部２１は、処理対象のパケットを取得部２２に出力する。転送先特定部１４から入力されたパケットに不可情報が含まれていない場合も、判定部２１は、パケットを取得部２２に出力する。
【００３１】
取得部２２は、制御装置３０に転送ルールを要求するためのメッセージを生成し、送信部１２に出力する。このとき、取得部２２は、パケットの宛先の情報、パケット中に不可情報が含まれているかなどの情報を制御装置３０宛てのメッセージに含める。以下、転送ルールを制御装置３０に要求するために使用されるメッセージを「要求メッセージ」と記載することがある。また、取得部２２は、転送ルールの要求の契機となったパケットを、要求メッセージに含めても良い。取得部２２は、要求メッセージを制御装置３０に送信した時刻を記憶する。要求メッセージが送信された時刻から経過した時間が、予め記憶している閾値を超えても、転送ルールが得られない場合、取得部２２は、通信中の制御装置３０からは転送ルールを取得できないと判定する。すると、取得部２２は、転送ルールの要求処理の契機となったパケットを、付加処理部２３に出力する。
【００３２】
付加処理部２３は、入力されたパケットに不可情報を付加する。不可情報には、不可情報を付している転送装置１０が転送ルールの取得に失敗したときの通信先の制御装置３０（要求先）の識別子が含まれる。付加処理部２３は、不可情報の付加後、デフォルト転送ルール１７を用いてパケットの出力ポートを特定し、処理後のパケットを送信部１２に出力する。不可情報の詳細や付加処理部２３の動作については、後述する。
【００３３】
取得部２２は、要求メッセージの送信時刻から転送ルールの受信までの時間が閾値以下である場合、転送ルールの要求処理の契機となったパケットを、変換部２４に出力する。変換部２４は、転送ルールが取得できたパケットに含まれている不可情報を削除することにより、取得部２２から入力されたパケットを端末５が処理できるパケット（転送パケット）に変換する。変換部２４は、転送先特定部１４から入力されたパケットについても、不可情報が含まれている場合は、不可情報を削除した後のパケットを、転送先特定部１４から通知されたポート番号と共に、送信部１２に出力する。
【００３４】
図３は、制御装置３０の構成の例を示す。制御装置３０は、受信部３１、送信部３２、接続管理部３３、アプリケーション処理部４５、経路計算制御部５０、記憶部６０を備える。経路計算制御部５０は、転送ルール決定部５１を有する。
【００３５】
受信部３１は、転送装置１０、他の制御装置３０などからパケットを受信する。受信部３１は、転送ルールの要求メッセージであることを示す情報を含むパケットを、転送ルール決定部５１に出力する。受信部３１は、要求メッセージ以外のパケットをアプリケーション処理部４５に出力する。要求メッセージであることを表す情報として、例えば、Ｐａｃｋｅｔ-Ｉｎメッセージであることを示すＯｐｅｎｆｌｏｗヘッダなどが用いられる。送信部３２は、転送装置１０、他の制御装置３０などにパケットを送信する。例えば、送信部３２は、転送ルール決定部５１などから入力されたパケットの送信処理を行う。
【００３６】
接続管理部３３は、転送装置１０と制御装置３０との間のセッションや、制御装置３０間でのデータの共有に使用するセッションの状態をモニタする。接続管理部３３は、転送装置１０からセッションの確立が要求されると、適宜、転送装置１０との間のセッションの確立のための処理を行う。
【００３７】
転送ルール決定部５１は、ネットワークのトポロジーを表すトポロジー情報などを用いて、転送ルールを決定する。転送ルール決定部５１は、転送ルールを含む応答メッセージを生成する。ここで、応答メッセージの宛先は、要求メッセージの送信元の転送装置１０である。転送ルール決定部５１は、応答メッセージを送信部３２に出力する。さらに、転送ルール決定部５１は、単位時間当たりに受信する要求メッセージの数が予め記憶している閾値を超えると、負荷が高いと判定する。転送ルール決定部５１は、負荷が高いと判定した場合、新たな問合せの中止を要求するための中止メッセージを生成し、接続している転送装置１０に送信できる。
【００３８】
記憶部６０は、ネットワーク情報６１などのデータを保持する。ここで、ネットワーク情報６１は、ネットワークのトポロジー情報や、各接続で転送装置１０が使用しているポート番号などの情報を含む。さらに、記憶部６０は、アプリケーション処理部４５、経路計算制御部５０での処理に用いられるデータや、これらの処理によって生成されたデータも保持する。
【００３９】
各制御装置３０は、ネットワーク中の他の制御装置３０の情報と、他の制御装置３０に接続されている転送装置１０や端末５の情報を共有する。制御装置３０の間での情報の共有のために、図４に示すネットワークＮ１またはＮ２が使用される。なお、図４は、３台の制御装置３０（３０ａ〜３０ｃ）が使用される場合の例であり、制御装置３０の数は任意に変更され得る。
【００４０】
ネットワークＮ１では、制御装置３０ａ〜３０ｃの各々が、調整装置７０に接続されている。制御装置３０ａは、制御装置３０ａと接続している転送装置１０の識別子や、転送装置１０を介して接続している端末５の情報を、定期的に、調整装置７０に通知する。制御装置３０ｂと制御装置３０ｃも、同様に、接続している転送装置１０や端末５の情報を調整装置７０に通知する。調整装置７０は、各制御装置３０について、転送装置１０との接続関係や、端末５の接続関係を記憶している。さらに、調整装置７０は、制御装置３０ａ〜３０ｃがそれぞれ正常に動作しているかをモニタする。制御装置３０ａ〜３０ｃは、適宜、調整装置７０からデータを取得し、得られたデータを記憶部６０に記憶する。
【００４１】
一方、ネットワークＮ２が使用される場合、制御装置３０ａ〜３０ｃの間で互いに、接続関係を表す情報を送受信する。また、制御装置３０ａ〜３０ｃの間で互いに、正常に動作しているかの確認処理も行う。例えば、ネットワークＮ２では、制御装置３０ａは、制御装置３０ｂに、制御装置３０ａが保持している接続関係の情報を通知し、制御装置３０ｂとの間で正常に通信できるかを判定する。また、制御装置３０ａは、制御装置３０ａが制御装置３０ｃから通知された接続情報も、制御装置３０ｂに通知する。制御装置３０ｂも、制御装置３０ｃとの間で接続関係の情報の交換と、正常に動作しているかの監視を行う。このとき、制御装置３０ｂは、制御装置３０ｂに接続している転送装置１０や端末５の情報の他に、転送装置１０ａから通知された接続関係の情報も、転送装置１０ｃに通知する。転送装置１０ｃは、制御装置３０ａとの間で接続関係の情報の交換と、正常に動作しているかの監視を行う。制御装置３０ｃは、制御装置３０ｃに接続している転送装置１０や端末５の情報の他に、転送装置１０ｂから通知された接続関係の情報も、転送装置１０ａに通知する。このように、ネットワークＮ２が使用される場合、制御装置３０ａ〜３０ｃの間の通信により、全ての制御装置３０で接続関係の情報を共有することができる。
【００４２】
図５は、転送装置１０および制御装置３０のハードウェア構成の例を示す。なお、ネットワーク中に調整装置７０が設置されている場合、調整装置７０のハードウェア構成も、図５に示すとおりである。転送装置１０と制御装置３０のいずれも、プロセッサ１０１、メモリ１０２、バス１０３、ネットワーク接続装置１０４を備える。バス１０３は、プロセッサ１０１、メモリ１０２、ネットワーク接続装置１０４を、相互にデータの送受信が可能になるように接続する。転送装置１０では、プロセッサ１０１は、転送先特定部１４、接続管理部１８、制御部２０を実現する。メモリ１０２は、例えば、記憶部１５として動作する。ネットワーク接続装置１０４は、受信部１１と送信部１２を実現し、ポートも含む。ネットワーク接続装置１０４は、ネットワーク１０５との通信を行う。
【００４３】
制御装置３０では、プロセッサ１０１は、接続管理部３３、アプリケーション処理部４５、経路計算制御部５０を実現する。メモリ１０２は、例えば、記憶部６０として動作する。ネットワーク接続装置１０４は、受信部３１と送信部３２を実現する。調整装置７０は、各制御装置３０から取得した情報を、メモリ１０２に保持する。さらに、調整装置７０は、ネットワーク接続装置１０４を用いて、制御装置３０と通信する。調整装置７０において、メモリ１０２に記録されるデータの更新処理や、制御装置３０との通信に関する制御などは、プロセッサ１０１が行う。
【００４４】
＜第１の実施形態＞
図６は、ネットワークの例を示す。図６は、論理ネットワークの例を示しており、図６の実線は、セッションが確立されていることを意味するものとする。さらに、図６に含まれている１つ以上の装置が、物理的な１台のコンピュータによって実装されることもあり得る。
【００４５】
図６の例では、制御装置３０ａと制御装置３０ｂは、調整装置７０に接続している。制御装置３０ａは、転送装置１０ａ〜１０ｃと接続しており、制御装置３０ｂは転送装置１０ｄと接続している。さらに、図６の例では、転送装置１０ａ〜１０ｄが、転送装置１０ａ、１０ｂ、１０ｃ、１０ｄの順に環状に接続されている。さらに、各転送装置１０には任意の数の端末５が接続しているが、図６では、図を見やすくするために、一部の端末５だけを図示している。図６の例では、転送装置１０ａ〜１０ｃは、制御装置３０ａから取得した転送ルールを用いてパケットを転送し、転送装置１０ｄは、制御装置３０ｂから取得した転送ルールを用いてパケットを転送するものとする。なお、各転送装置１０中の数字を含む四角形はポートを表わしており、四角形の中に書かれた数字はポート番号を表わしているものとする。
【００４６】
図７は、転送ルールテーブル１６とデフォルト転送ルール１７の例を示す。図７の転送ルールテーブル１６ａは、転送装置１０ａが保持する転送ルールテーブル１６の例である。転送ルールは、転送装置１０に入力されるパケットの条件と、そのパケットに対する処理を対応付けた任意のルールである。また、ルールごとに優先度が対応付けられており、優先度が高い（優先度の値が小さい）ルールが優先的に適用される。パケットの条件を特定するための項目は、パケットに含まれる任意のレイヤの情報を使用することができる。例えば、転送ルールは、スイッチの入力ポートなどの物理レイヤの条件や、宛先ＴＣＰポート番号などのトランスポートレイヤの情報を含んでも良い。アクションは、各条件の組合せに対応付けた転送装置１０の処理を示す。
【００４７】
例えば、宛先ＭＡＣアドレスが端末５ａのアドレスである場合、転送装置１０ａは、転送ルールテーブル１６ａ中の優先度＝１のルールを用いて、処理対象のパケットをポートＰｏ４から出力する。同様に、宛先ＭＡＣアドレスが端末５ｂのアドレスである場合、転送装置１０ａは、転送ルールテーブル１６ａ中の優先度＝２のルールを用いて、処理対象のパケットをポートＰｏ２から出力する。
【００４８】
一方、転送装置１０は、転送ルールテーブル１６に含まれている転送ルールを適用することができず、さらに、新たな転送ルールを取得できない場合、デフォルト転送ルール１７を用いて転送処理を行う。例えば、転送装置１０ａは、転送ルールテーブル１６ａを保持しているので、端末５ｃ宛てのパケットについての転送ルールを保持していない。このため、転送装置１０ａの取得部２２ａは、制御装置３０ａに端末５ｃ宛てのパケットに適用するための転送ルールを要求するが、制御装置３０ａに障害が発生しているなどの理由により、転送ルールを取得できない場合がある。すると、転送装置１０ａは、図７に示すデフォルト転送ルール１７ａを用いて、不可情報を付加した後のパケットの出力ポートを特定する。図７の例では、転送装置１０ａは、不可情報の付加後のパケットをポートＰｏ３から出力する。さらに、デフォルト転送ルール１７は、他の転送装置１０によって不可情報が付加されたパケットについても適用され得る。例えば、転送装置１０ａは、他の転送装置１０から受信したパケットに、制御装置３０ａから転送ルールを取得できないことを表す不可情報が含まれていると、デフォルト転送ルール１７ａに従って、出力ポートを決定する。
【００４９】
前述のとおり、図６は、論理ネットワークの例を示している。このため、図６に示す時点では、転送装置１０ａ〜１０ｃは制御装置３０ａに接続しているが、制御装置３０ａに障害が発生した場合や、制御装置３０ａの負荷が大きくなった場合、転送装置１０ａ〜１０ｃは制御装置３０ｂとの間でセッションを確立する。しかし、制御装置３０ａが転送ルールを通知できない状態になった時点から、転送装置１０ａ〜１０ｃが制御装置３０ｂとの間でセッションを確立するまでは、転送装置１０ａ〜１０ｃは新たな転送ルールを取得できない。以下、転送装置１０ａ〜１０ｃが新たな転送ルールを取得できない期間中に行われる通信処理の例を説明する。
【００５０】
なお、以下では、転送装置１０は、デフォルト転送ルール１７を使用してパケットを転送している場合、転送ルールの取得に際して障害が発生したことを通知する情報（障害情報）をパケットに付加するものとする。このため、以下の説明では、不可情報は、障害情報のうちで、転送ルールが取得できない原因が制御装置３０にあることが特定できる情報とする。障害情報については後で詳しく説明する。
【００５１】
〔ケース１〕
以下、図６のネットワークで、制御装置３０ａに障害が発生しているときに、端末５ａが端末５ｄにパケットを送信する場合の処理の例を説明する。ここで、転送装置１０ａ〜１０ｃのいずれも、制御装置３０ａで障害が発生していることを認識していないものとする。また、転送装置１０ａは、転送ルールテーブル１６ａとデフォルト転送ルール１７ａを保持しており、転送装置１０ｂは、転送ルールテーブル１６ｂとデフォルト転送ルール１７ｂを保持しているものとする。さらに、転送装置１０ｃは、デフォルト転送ルール１７ｃ、転送装置１０ｄはデフォルト転送ルール１７ｄを保持しているものとする。
【００５２】
なお、以下の説明では、処理を行っている装置を区別し易くするために、符号の後に動作を行っている転送装置１０や制御装置３０に割り当てられたアルファベットを記載する。例えば、判定部２１ａは、転送装置１０ａに含まれている判定部２１のことを示す。同様に、例えば、転送ルール決定部５１ａは、制御装置３０ａ中の転送ルール決定部５１のことを表す。
【００５３】
（１）端末５ａは、端末５ｄ宛てのパケットＰ１を生成する。パケットＰ１は、転送装置１０ａに送信される。
【００５４】
（２）転送装置１０ａの受信部１１ａは、ポートＰｏ４から端末５ｄ宛のパケットＰ１を受信する。受信部１１ａは、受信したパケットＰ１を、転送先特定部１４ａに出力する。転送先特定部１４ａは、転送ルールテーブル１６ａを参照して、パケットＰ１の出力先のポート番号が得られるかを判定する。転送ルールテーブル１６ａには、宛先ＭＡＣアドレスが端末５ｄのパケットに適用できる転送ルールは含まれていない。そこで、転送先特定部１４ａは、パケットＰ１を判定部２１ａに出力する。
【００５５】
判定部２１ａは、パケットＰ１に障害情報が含まれているかを判定する。ここでは、パケットＰ１には障害情報が含まれていないので、判定部２１ａは、パケットＰ１を取得部２２ａに出力する。取得部２２ａは、パケットＰ１の宛先ＭＡＣアドレスなどの情報を含む要求メッセージ９１ａを生成する。取得部２２ａは、送信部１２ａを介して要求メッセージ９１ａを制御装置３０ａに送信し、さらに、要求メッセージ９１ａの送信時刻を記憶する。
【００５６】
（３）ここでは、制御装置３０ａで障害が発生しているため、転送装置１０ａは、要求メッセージ９１ａの送信時刻から所定の時間以内に、制御装置３０ａから転送ルールを得ることができないとする。このため、取得部２２ａは、要求メッセージ９１ａの送信時刻から所定の時間が経過すると、パケットＰ１を付加処理部２３ａに出力する。付加処理部２３ａは、パケットＰ１に障害情報を付加する。
【００５７】
図８は、障害情報を含むパケットのフォーマットの例である。付加処理部２３は、取得部２２から入力されたパケットのペイロードとＥｔｈｅｒｎｅｔ（登録商標）ヘッダの間に、障害情報を付加する。なお、他の転送装置１０によって既に障害情報が付加されているパケットに障害情報を付加する場合、付加処理部２３は、パケットの先頭側の障害情報とＥｔｈｅｒｎｅｔヘッダの間に、新たな障害情報を付加する。図８の例では、１つの障害情報には、障害原因、転送装置１０の識別子、制御装置３０の識別子、終了フラグが含まれる。
【００５８】
障害原因フィールドには、制御装置３０からの転送ルールの取得に際して発生した障害の原因を示す値が記録される。例えば、図８の例では、障害原因フィールドの値＝１は、転送装置１０と制御装置３０との間のセッションが切断されたために、転送装置１０が転送ルールを取得できないことを表す。障害原因フィールドの値＝２は、要求メッセージの送信から所定の時間内に制御装置３０から転送ルールを取得できないことを表す。障害原因フィールドの値＝３は、制御装置３０での負荷の上昇により、制御装置３０から転送ルールを取得できないことを表す。このため、図８に示す障害情報が使用される場合、障害原因フィールドの値が２または３の障害情報は、不可情報である。一方、障害原因フィールドの値が１の障害情報は、不可情報としては扱われない。換言すると、障害原因フィールドの値が１の障害情報は、デフォルト転送ルール１７を用いてパケットを転送しているが、制御装置３０には障害が無い可能性があることを示す情報である。
【００５９】
障害情報中の転送装置１０の識別子は、障害情報を付加する転送装置１０を識別する値である。障害情報中の制御装置３０の識別子は、転送ルールの取得において障害が発生したときに、転送ルールの要求先となった制御装置３０を識別する値である。終了フラグは、パケットの先頭から処理している装置が障害情報の終了を特定するために使用する。最初に障害情報を付加する転送装置１０は、終了フラグ＝ＴＲＵＥを含む障害情報を付加し、その他の転送装置１０は、終了フラグ＝ＦＡＬＳＥを含む障害情報を付加する。このため、終了フラグ＝ＴＲＵＥの障害情報の後にパケットのペイロードが続いている。
【００６０】
例えば、付加処理部２３ａは、パケットＰ１に障害情報ヘッダが含まれていないので、終了フラグ＝ＴＲＵＥの障害情報を生成する。また、要求メッセージ９１ａの送信時刻から所定の時間以内に、制御装置３０ａから転送ルールを得られなかったので、付加処理部２３ａは、障害原因フラグを２に設定する。このため、付加処理部２３ａは、以下の情報を含む障害情報をパケットＰ１に付加する。
障害情報１
障害原因フィールドの値：２
転送装置１０の識別子  ：転送装置１０ａ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＴＲＵＥ
以下、付加処理部２３ａによる障害情報の付加後のパケットを、パケットＰ２とする。付加処理部２３は、パケットＰ２の出力ポートを、デフォルト転送ルール１７ａ（図７）を用いて特定する。デフォルト転送ルール１７ａ中のアクションの欄では、パケットをポートＰｏ３から出力することが指定されている。そこで、付加処理部２３ａは、パケットＰ２を、出力ポートがポートＰｏ３であることを表わす情報と共に、送信部１２ａに出力する。
【００６１】
（４）送信部１２ａは、パケットＰ２を、ポートＰｏ３から出力する。このため、パケットＰ２は、転送装置１０ｂに転送される。
【００６２】
（５）転送装置１０ｂの受信部１１ｂは、ポートＰｏ４から端末５ｄ宛のパケットＰ２を受信する。受信部１１ｂは、パケットＰ２を、転送先特定部１４ｂに出力する。転送先特定部１４ｂは、転送ルールテーブル１６ｂ（図７）を参照して、パケットＰ２の出力先のポート番号を検索するが、宛先ＭＡＣアドレスが端末５ｄである場合の転送ルールを取得できない。そこで、転送先特定部１４ｂは、パケットＰ２を判定部２１ｂに出力する。
【００６３】
判定部２１ｂは、パケットＰ２に障害情報ヘッダが含まれているかを判定する。ここでは、パケットＰ２には障害情報ヘッダが含まれているので、判定部２１ｂは、障害情報を解析することにより、不可情報が通知されたかを判定する。判定部２１ｂは、制御装置３０ａから転送ルールを取得しようとした転送装置１０ａがタイムアウトにより転送ルールを得られなかったことを特定する。制御装置３０ａからの応答のタイムアウトが発生していることは、制御装置３０ａでの障害の発生を意味するので、パケットＰ２は制御装置３０ａに関する不可情報を含んでいる。そこで、判定部２１ｂは、制御装置３０ａから転送ルールを取得できないと判定する。判定部２１ｂは、転送ルールの要求先が制御装置３０ａであることから、転送ルールの要求を行わないことを決定し、パケットＰ２を付加処理部２３ｂに出力する。
【００６４】
（６）付加処理部２３ｂは、制御装置３０ａの識別子を含む障害情報中の障害原因フィールドの値が２に設定されているので、付加処理部２３ｂが付加する障害情報でも、障害原因フィールドの値を２とする。さらに、パケットＰ２に障害情報が含まれているので、終了フラグ＝ＦＡＬＳＥに設定する。このため、付加処理部２３ｂは、以下の情報を含む障害情報をパケットＰ２に付加する。
障害情報２
障害原因フィールドの値：２
転送装置１０の識別子  ：転送装置１０ｂ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＦＡＬＳＥ
付加処理部２３ｂによる障害情報の付加後のパケットを、パケットＰ３とする。付加処理部２３ｂは、パケットＰ３の出力ポートを、デフォルト転送ルール１７ｂ（図７）を用いて特定する。このため、付加処理部２３ｂは、パケットＰ３を、出力ポートがポートＰｏ２であることを表わす情報と共に、送信部１２ｂに出力する。
【００６５】
（７）送信部１２ｂは、パケットＰ３を、ポートＰｏ２から出力する。このため、パケットＰ３は、転送装置１０ｃに送信される。
【００６６】
（８）転送装置１０ｃでは、手順（５）〜（７）と同様の処理が行われる。そこで、付加処理部２３ｃは、以下の情報を含む障害情報をパケットＰ３に付加する。
障害情報３
障害原因フィールドの値：２
転送装置１０の識別子  ：転送装置１０ｃ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＦＡＬＳＥ
付加処理部２３ｃによる障害情報の付加後のパケットを、パケットＰ４とする。付加処理部２３ｃは、パケットＰ４の出力ポートを、デフォルト転送ルール１７ｃ（図７）を用いて特定する。このため、付加処理部２３ｃは、パケットＰ３を、出力ポートがポートＰｏ３であることを表わす情報と共に、送信部１２ｃに出力する。送信部１２ｃでの処理により、パケットＰ４は、転送装置１０ｄに送信される。
【００６７】
（９）転送装置１０ｄの受信部１１ｄは、パケットＰ４を、転送先特定部１４ｄに出力する。転送先特定部１４ｄは、転送ルールテーブル１６ｄを参照する。ここで、転送ルールテーブル１６ｄにはパケットＰ４に適用できる転送ルールが含まれていないものとする。転送先特定部１４ｄは、パケットＰ４を判定部２１ｄに出力する。
【００６８】
判定部２１ｄは、パケットＰ４に含まれている障害情報を解析することにより、制御装置３０ａで障害が発生していると判定する。しかし、判定部２１ｄは、転送ルールの問い合わせ先が制御装置３０ｂであるので、転送ルールを制御装置３０ｂに要求できると判定し、パケットＰ４を取得部２２ｄに出力する。
【００６９】
（１０）取得部２２ｄは、パケットＰ４の宛先ＭＡＣアドレスなどの情報を含む要求メッセージ９１ｄを生成する。取得部２２ｄは、送信部１２ｄを介して要求メッセージ９１ｄを制御装置３０ｂに送信し、さらに、要求メッセージ９１ｄの送信時刻を記憶する。
【００７０】
（１１）制御装置３０ｂの受信部３１ｂは、要求メッセージ９１ｄを取得すると、転送ルール決定部５１ｂに出力する。転送ルール決定部５１ｂは、ネットワーク中のトポロジー情報などを用いて、転送ルールを決定する。ここでは、転送ルール決定部５１ｂは、端末５ｄ宛てのパケットを転送装置１０ｄのポートＰｏ３から出力することを転送装置１０ｄに通知するための応答メッセージ９２ｂを生成する。転送ルール決定部５１ｂは、応答メッセージ９２ｂを送信部３２ｂに出力する。送信部３２ｂは、応答メッセージ９２ｂを転送装置１０ｄに送信する。
【００７１】
（１２）転送装置１０ｄの取得部２２ｄは、端末５ｄ宛てのパケットを転送装置１０ｄのポートＰｏ３から出力することを、転送ルールテーブル１６ｄに追加する。さらに、取得部２２ｄは、パケットＰ４の出力ポートがポートＰｏ３であることを通知する情報と、パケットＰ４を、変換部２４ｄに出力する。
【００７２】
（１３）変換部２４ｄは、パケットＰ４と共にパケットＰ４の出力ポートを特定する情報が入力されたことにより、パケットＰ４から障害情報を削除する。言い換えると、変換部２４ｄは、パケットＰ４をパケットＰ１に変換している。なお、変換部２４ｄは、変換後のパケットの出力ポートとして、取得部２２ｄから通知されたポートの情報を用いる。このため、変換部２４ｄは、パケットＰ１を、パケットＰ１の出力ポートがポートＰｏ３であることを表わす情報と共に、送信部１２ｄに出力する。
【００７３】
（１４）送信部１２ｄは、パケットＰ１をポートＰｏ３から出力する。このため、パケットＰ１が端末５ｄに送信される。
【００７４】
ケース１では、転送装置１０ａが制御装置３０ａに障害が起こっていることを意味する障害情報をパケットに付加するので、転送装置１０ｂと転送装置１０ｃは、障害が発生している制御装置３０に無駄に問合せを行わなくてすむ。このため、転送装置１０ｂ、転送装置１０ｃでの処理負荷が軽減される。
【００７５】
〔ケース２〕
以下、図９を参照しながら、制御装置３０ａの負荷が所定の値よりも高くなったときに、端末５ａがパケットを端末５ｄに送信する場合の処理の例を説明する。なお、図９を参照しながら説明する例でも、端末５、転送装置１０、制御装置３０の間の接続関係や、各転送装置１０で使用される転送ルールテーブル１６とデフォルト転送ルール１７は、ケース１と同様であるものとする。
【００７６】
（２１）制御装置３０ａの転送ルール決定部５１ａは、単位時間当たりに受信する要求メッセージの数が予め記憶している閾値を超えると、負荷が高くなったと判定する。そこで、新たな要求メッセージの送信の中止を要求するための中止メッセージ９３ａを生成し、接続している転送装置１０に送信する。中止メッセージ９３ａは、新たな要求メッセージを処理しないことを意味する情報と、制御装置３０ａの識別子を含む任意のフォーマットのメッセージであるものとする。制御装置３０ａは、転送装置１０ａ〜１０ｃに、中止メッセージ９３ａを送信する。
【００７７】
（２２）転送装置１０ａの受信部１１ａは、受信した中止メッセージ９３ａを、取得部２２ａに出力する。取得部２２ａは、制御装置３０ａへの要求メッセージの送信が許可されるまで制御装置３０ａへの転送ルールの要求を中止する。
【００７８】
（２３）転送装置１０ｂ、転送装置１０ｃでも、手順（２２）と同様の処理が行われる。
【００７９】
（２４）その後、端末５ａは、端末５ｄ宛てのパケットＰ１を生成したとする。パケットＰ１は、転送装置１０ａに送信される。
【００８０】
（２５）転送装置１０ａの受信部１１ａは、受信したパケットＰ１を、転送先特定部１４ａに出力する。転送先特定部１４ａは、パケットＰ１に適用できる転送ルールが転送ルールテーブル１６ａに含まれていないと判定すると、パケットＰ１を判定部２１ａに出力する。判定部２１ａは、パケットＰ１に障害情報が含まれていないので、パケットＰ１を取得部２２ａに出力する。
【００８１】
取得部２２ａは、制御装置３０ａへの要求メッセージの送信を中止しているので、制御装置３０ａの負荷が高いことを表わす情報と共に、パケットＰ１を付加処理部２３ａに出力する。付加処理部２３ａは、取得部２２ａから入力された情報を用いて、以下の情報を含む障害情報をパケットＰ１に付加する。
障害情報１
障害原因フィールドの値：３
転送装置１０の識別子  ：転送装置１０ａ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＴＲＵＥ
ここで、障害情報１では障害原因フィールドの値＝３であるので、障害情報１は制御装置３０ａに対する不可情報として扱われる。付加処理部２３ａは、障害情報を付加したパケットＰ５の出力ポートがポートＰｏ３であることを、デフォルト転送ルール１７ａ（図７）を用いて特定する。さらに、手順（４）と同様に、パケットＰ５を転送装置１０ｂに転送する。
【００８２】
（２６）転送装置１０ｂの転送先特定部１４ｂは、受信部１１ｂを介してパケットＰ５を取得する。パケットＰ５に適用できる転送ルールが転送ルールテーブル１６ｂに含まれていないので、転送先特定部１４ｂは、パケットＰ５を判定部２１ｂに出力する。判定部２１ｂは、パケットＰ５に含まれている障害情報を解析することにより、転送装置１０ａは、制御装置３０ａの負荷が高いために転送ルールを取得できなかったことを特定する。そこで、判定部２１ｂは、制御装置３０ａから転送ルールを取得できないと判定する。判定部２１ｂは、転送ルールの要求先が制御装置３０ａであることから、転送ルールの要求を行わないことを決定し、パケットＰ５を付加処理部２３ｂに出力する。付加処理部２３ｂは、パケットＰ５に以下の障害情報を付加したパケットＰ６を生成する。
障害情報２
障害原因フィールドの値：３
転送装置１０の識別子  ：転送装置１０ｂ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＦＡＬＳＥ
パケットＰ６は、手順（６）、（７）で述べたように、デフォルト転送ルール１７ｂ（図７）を用いて、ポートＰｏ２から出力されるため、転送装置１０ｃで受信される。
【００８３】
（２７）転送装置１０ｃでは、手順（２６）と同様の処理が行われる。そこで、付加処理部２３ｃは、以下の情報を含む障害情報をパケットＰ６に付加する。
障害情報３
障害原因フィールドの値：３
転送装置１０の識別子  ：転送装置１０ｃ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＦＡＬＳＥ
付加処理部２３ｃによる障害情報の付加後のパケットＰ７は、デフォルト転送ルール１７ｃ（図７）を用いて処理されるため、転送装置１０ｄに送信される。
【００８４】
転送装置１０ｄでの受信後の処理は、ケース１で述べた手順（９）〜（１４）と同様である。
【００８５】
ケース２では、制御装置３０ａの負荷が所定の値よりも高くなっていることが制御装置３０ａから通知された転送装置１０ａ〜１０ｃは、制御装置３０ａに転送ルールを要求しない。このため、転送装置１０ａ〜１０ｃのいずれも、制御装置３０ａに無駄に問合せを行わなくてすむため、転送装置１０ａ〜１０ｃでの処理負荷が軽減される。さらに、制御装置３０ａは負荷が高い間に新たな要求メッセージの受信や処理を行わないので、制御装置３０ａの復旧も早められる。
【００８６】
〔ケース３〕
以下、図１０を参照しながら、制御装置３０ａで障害が発生した上、転送装置１０ａと制御装置３０ａの間のセッションが切断されている場合に、端末５ａがパケットを端末５ｄに送信する場合の処理の例を説明する。なお、図１０を参照しながら説明する例でも、端末５、転送装置１０、制御装置３０の間の接続関係や、各転送装置１０で使用される転送ルールテーブル１６とデフォルト転送ルール１７は、ケース１と同様である。また、転送装置１０ｂと制御装置３０ａの間のセッションと、転送装置１０ｃと制御装置３０ａの間のセッションは切断されていないものとする。
【００８７】
（３１）転送装置１０ａの接続管理部１８ａは、転送装置１０ａと制御装置３０ａの間でのセッションの状態をモニタする。接続管理部１８ａは、転送装置１０ａと制御装置３０ａとの間のセッションが切断されたことを検出すると、取得部２２ａにセッションの切断を通知する。すると、取得部２２ａは、転送装置１０ａと制御装置３０ａの間で通信ができないため、制御装置３０ａへの転送ルールの要求を中止する。
【００８８】
（３２）端末５ａは、端末５ｄ宛てのパケットＰ１を生成したとする。パケットＰ１は、転送装置１０ａに送信される。
【００８９】
（３３）転送装置１０ａの転送先特定部１４ａは、受信部１１ａを介してパケットＰ１を取得し、パケットＰ１に適用できる転送ルールが転送ルールテーブル１６ａ（図７）に含まれているかを判定する。パケットＰ１に適用できる転送ルールが無いので、転送先特定部１４ａは、パケットＰ１を判定部２１ａに出力する。判定部２１ａは、パケットＰ１に障害情報が含まれていないので、パケットＰ１を取得部２２ａに出力する。
【００９０】
取得部２２ａは、制御装置３０ａへの要求メッセージの送信を中止しているので、転送装置１０ａと制御装置３０ａの間のセッションが切断されていることを表わす情報と共に、パケットＰ１を付加処理部２３ａに出力する。付加処理部２３ａは、取得部２２ａから入力された情報を用いて、以下の情報を含む障害情報をパケットＰ１に付加する。
障害情報１
障害原因フィールドの値：１
転送装置１０の識別子  ：転送装置１０ａ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＴＲＵＥ
ここで、付加処理部２３ａが生成した障害情報は、障害原因フィールドの値＝１に設定されているので、転送ルールの取得に際しての障害は、制御装置３０ａの状態ではないことを意味する。すなわち、障害情報１は、制御装置３０ａについての不可情報ではない。付加処理部２３ａは、障害情報を付加したパケットＰ８の出力ポートがポートＰｏ３であることを、デフォルト転送ルール１７ａ（図７）を用いて特定する。さらに、手順（４）と同様に、パケットＰ８を転送装置１０ｂに転送する。
【００９１】
（３４）転送装置１０ｂの転送先特定部１４ｂは、受信部１１ｂを介してパケットＰ８を取得する。パケットＰ８に適用できる転送ルールが転送ルールテーブル１６ｂに含まれていないので、転送先特定部１４ｂは、パケットＰ８を判定部２１ｂに出力する。判定部２１ｂは、パケットＰ８に含まれている障害情報を解析することにより、パケットＰ８には、不可情報が含まれていないと判定する。つまり、判定部２１ｂは、転送装置１０ａにおいて制御装置３０ａとの間のセッションが切断されたために転送装置１０ａが転送ルールを取得できなかったことを特定する。この結果、判定部２１ｂは、転送装置１０ｂと制御装置３０ａのセッションが接続されていれば、転送装置１０ｂが制御装置３０ａから転送ルールを取得できる可能性があると判定する。そこで、判定部２１ｂは、パケットＰ８を取得部２２ｂに出力する。
【００９２】
（３５）取得部２２ｂは、パケットＰ８の宛先ＭＡＣアドレスなどの情報を含む要求メッセージ９１ｂを生成する。取得部２２ｂは、送信部１２ｂを介して要求メッセージ９１ｂを制御装置３０ａに送信し、要求メッセージ９１ｂの送信時刻を記憶する。しかし、制御装置３０ａで障害が発生しているため、転送装置１０ｂは、要求メッセージ９１ｂの送信時刻から所定の時間以内に、制御装置３０ａから転送ルールを得ることができない。このため、取得部２２ｂは、要求メッセージ９１ｂの送信時刻から所定の時間が経過すると、パケットＰ８を付加処理部２３ｂに出力する。付加処理部２３ｂは、パケットＰ８に以下の障害情報を付加する。
障害情報２
障害原因フィールドの値：２
転送装置１０の識別子  ：転送装置１０ｂ
制御装置３０の識別子  ：制御装置３０ａ
終了フラグ            ：ＦＡＬＳＥ
ここで、付加処理部２３ｂが生成した障害情報は、障害原因フィールドの値＝２に設定されているので、制御装置３０ａの状態が原因で転送ルールが取得できないことを意味する。すなわち、障害情報２は、制御装置３０ａについての不可情報である。付加処理部２３ｂは、障害情報の付加後のパケットＰ９の出力ポートを、デフォルト転送ルール１７ｂ（図７）を用いて特定する。付加処理部２３ｂは、パケットＰ９を、出力ポートがポートＰｏ２であることを表わす情報と共に、送信部１２ｂに出力する。送信部１２ｂの処理により、パケットＰ９は、転送装置１０ｃに送信される。
【００９３】
（３６）転送装置１０ｃがパケットＰ９を受信すると、判定部２１ｃは、パケットＰ９中の障害情報を解析する。パケットＰ９には障害情報１と障害情報２が含まれており、障害情報１は不可情報ではないが、と障害情報２は不可情報である。このように、不可情報と、不可情報ではない情報が障害情報ヘッダに含まれており、両者が同じ制御装置３０に関する情報である場合、判定部２１は、不可情報を優先する。ここでは、判定部２１ｃは、障害情報１と障害情報２のうち、不可情報として使用できる障害情報２の情報を、転送ルールの取得の際に発生した原因として使用する。そこで、判定部２１ｃは、制御装置３０ａから転送ルールを取得しようとした転送装置１０ｂがタイムアウトにより転送ルールを得られなかったことから、制御装置３０ａで障害が発生したと判定する。このため、判定部２１ｃは、転送装置１０ｃも制御装置３０ａから転送ルールを取得できないと判定し、転送ルールの問合せを行わないことを決定する。判定部２１ｃは、パケットＰ９を付加処理部２３ｃに出力する。付加処理部２３ｃは、手順（８）と同様の処理により、パケットＰ１０を生成する。パケットＰ１０は、手順（８）と同様の処理により、転送装置１０ｄに送信される。
【００９４】
転送装置１０ｄがパケットＰ１０を受信した後の処理は、ケース１で述べた手順（９）〜（１４）と同様である。
【００９５】
ケース３では、転送装置１０ｂが制御装置３０ａに障害が起こっていることを意味する障害情報をパケットに付加するので、転送装置１０ｃは、障害が発生している制御装置３０に無駄に問合せを行わなくてすむ。なお、ここでは、制御装置３０ａで障害が発生している場合を例として説明したが、制御装置３０ａでの障害が発生していない場合、手順（３４）、（３５）の処理により、転送装置１０ｂは制御装置３０ａから転送ルールを取得することもできる。つまり、転送装置１０は、転送ルールの問い合わせを行うかを判断するときに、障害の発生だけでなく、障害の原因も使用するので、転送ルールの問い合わせを行うかを適切に判断でき、無駄な問い合わせを削減できる。
【００９６】
図１１は、転送装置１０の動作の例を説明するフローチャートである。なお、図１１は、転送装置１０の動作の例であり、ステップＳ３〜Ｓ５の順序を任意に変更することができる。転送装置１０はパケットを受信するまで待機する（ステップＳ１）。転送先特定部１４は、受信したパケットに適用可能な転送ルールが転送ルールテーブル１６に含まれているかを判定する（ステップＳ２）。適用可能な転送ルールが転送ルールテーブル１６に含まれていない場合、転送先特定部１４は、パケットを判定部２１に出力する（ステップＳ２でＮｏ）。判定部２１は、パケット中の障害情報を解析することにより、転送ルールを要求する制御装置３０で障害が発生したことが通知されたかを判定する（ステップＳ３）。パケット中の障害情報により、制御装置３０での障害の発生が通知されている場合、判定部２１は、要求メッセージの送信を行わないことを決定し、パケットを付加処理部２３に出力する（ステップＳ３でＹｅｓ）。付加処理部２３は、入力されたパケットに障害情報を付加し、デフォルト転送ルール１７を用いて出力ポートを特定する（ステップＳ９、Ｓ１０）。その後、転送装置１０は、出力ポートからパケットを送信する（ステップＳ１４）。
【００９７】
制御装置３０での障害の発生が通知されていない場合、判定部２１は、制御装置３０での負荷が高いことが通知されたかを判定する（ステップＳ３でＮｏ、ステップＳ４）。制御装置３０での負荷が高いことが通知されている場合、判定部２１は、要求メッセージの送信を行わないことを決定し、パケットを付加処理部２３に出力する（ステップＳ４でＹｅｓ）。以後、ステップＳ９、Ｓ１０、Ｓ１４の処理が行われる。
【００９８】
制御装置３０での負荷が高いことが通知されていない場合、判定部２１は、パケットを取得部２２に出力する（ステップＳ４でＮｏ）。取得部２２は、転送装置１０と制御装置３０の間のセッションは接続中であるかを判定する（ステップＳ５）。転送装置１０と制御装置３０の間のセッションが切断されている場合、取得部２２は、要求メッセージの送信を行わないことを決定し、パケットを付加処理部２３に出力する（ステップＳ５で切断）。以後、ステップＳ９、Ｓ１０、Ｓ１４の処理が行われる。
【００９９】
転送装置１０と制御装置３０の間のセッションが接続中である場合、取得部２２は、送信部１２を介して、制御装置３０に要求メッセージを送信する（ステップＳ５で接続中、ステップＳ６）。取得部２２は、要求メッセージの送信時刻から所定の時間内に転送ルールを受信できない場合、タイムアウトが発生したと判定し、パケットを付加処理部２３に出力する（ステップＳ７でＹｅｓ）。付加処理部２３は、取得部２２からパケットが入力されると、タイムアウトが発生したと判定し、制御装置３０での障害の発生を障害の原因として通知する障害情報を、パケットに付加する（ステップＳ９）。以後、ステップＳ１０、Ｓ１４の処理が行われる。
【０１００】
取得部２２は、要求メッセージの送信時刻から所定の時間内に転送ルールを受信できた場合、受信した転送ルールを用いて、パケットの出力ポートを特定する（ステップＳ７でＮｏ、ステップＳ８）。取得部２２は、パケットの出力ポートを特定する情報と共に、パケットを変換部２４に出力する。変換部２４は、取得部２２から入力されたパケットに障害情報が含まれているかを判定する（ステップＳ１２）。パケットに障害情報が含まれている場合、変換部２４は、障害情報を削除する（ステップＳ１２でＹｅｓ、ステップＳ１３）。変換部２４は、障害情報を削除した後のパケットを、取得部２２から通知されたポート番号と共に送信部１２に出力する。送信部１２は、変換部２４から通知されたポートからパケットを送信する（ステップＳ１４）。
【０１０１】
ステップＳ２において、パケットに適用可能な転送ルールが転送ルールテーブル１６に含まれていると判定された場合、転送先特定部１４は、転送ルールを用いて出力ポートを特定する（ステップＳ１１）。その後、転送先特定部１４は、パケットの出力ポートを特定する情報と共に、パケットを変換部２４に出力する。その後、ステップＳ１２〜Ｓ１４の処理が行われる。
【０１０２】
第１の実施形態によると、制御装置３０での障害の発生や、制御装置３０の処理負荷が大きいことが障害情報により通知されるので、転送装置１０は、障害情報による通知の対象となった制御装置３０に対する問合せを行わない。このため、転送装置１０の無駄な処理を削減することができる。さらに、制御装置３０での処理負荷が高くなっている場合に、転送装置１０からの問合せが中止されることにより、制御装置３０の負荷をさらに大きくしなくてすむので、制御装置３０の復旧を早めることにも資するといえる。
【０１０３】
図６〜図１１を用いて説明した例では、パケットの宛先は、障害を起こしていない制御装置３０ｂと通信可能な転送装置１０ｄに接続された端末５ｄであったが、以上の説明は一例に過ぎない。例えば、パケットの宛先は、端末５ｃなど、送信元の端末５と同じ制御装置３０の配下の端末５であっても良い。いずれの転送装置１０も端末５ｃ宛のパケットの転送ルールを保持していない場合、以上の説明と同様に、端末５ｃ宛のパケットは転送装置１０ｄに転送される。
【０１０４】
転送装置１０ｄは、手順（９）、（１０）と同様の処理により、制御装置３０ｂに転送ルールを問い合わせる。制御装置３０ｂは調整装置７０との通信により、制御装置３０ａに接続されている転送装置１０と端末５との間の接続関係を取得する。そこで、制御装置３０ｂは、転送装置１０ｂに端末５ｃが接続されていることを特定し、端末５ｃ宛のパケットについての転送装置１０ｄでの転送ルールを決定する。例えば、制御装置３０ｂは、転送装置１０ｄに端末５ｃ宛のパケットをポートＰｏ２から出力することを転送ルールとして通知したとする。すると、手順（１２）、（１３）と同様の処理により、転送装置１０ｄは、端末５ｃ宛てのパケットを、転送装置１０ａに転送する。転送装置１０ａが転送装置１０ｄからパケットを受信するまでの間に制御装置３０ｂとの間で通信を確立している場合、転送装置１０ａは、制御装置３０ｂから新たな転送ルールを取得できる。このため、転送装置１０ａは、転送ルールを用いて、パケットを転送装置１０ｂに送信する。さらに、転送装置１０ｂも転送装置１０ａからパケットを受信するまでに、制御装置３０ｂとの間で通信を確立している場合、転送装置１０ｂも、制御装置３０ｂから新たな転送ルールを取得できる。このため、転送装置１０ｂは、転送ルールを用いて、パケットを端末５ｃに送信できる。
【０１０５】
＜第２の実施形態＞
第２の実施形態では、要求メッセージを受信した制御装置８０が、転送ルールの問合せの対象となっているパケットの宛先までの経路を通知する場合の例を説明する。第２の実施形態では、新たな転送ルールを取得できない転送装置１０にパケットが転送されても、パケット中の経路情報により、宛先の端末５への転送が行われる。
【０１０６】
図１２は、第２の実施形態で使用される制御装置８０の構成の例を示す。制御装置８０は、受信部３１、送信部３２、接続管理部３３、経路付加部４０、アプリケーション処理部４５、経路計算制御部５５、記憶部６０を備える。経路計算制御部５５は、転送ルール決定部５１と経路計算部５２を有する。なお、受信部３１、送信部３２、接続管理部３３、アプリケーション処理部４５、記憶部６０の動作は、制御装置３０と同様である。
【０１０７】
転送ルール決定部５１は、転送ルールの要求メッセージを解析することにより、転送ルールの問合せの契機となったパケットに障害情報が含まれているかを判定する。なお、第２の実施形態では、転送装置１０は、要求メッセージに、転送ルールの問合せの対象となっているパケットを含めるものとする。転送ルール決定部５１は、要求メッセージ中のパケットを解析することにより、障害情報がパケットに含まれているかを判定する。転送ルールの問い合わせの対象となっているパケットに障害情報が含まれている場合、転送ルール決定部５１は、要求メッセージを経路計算部５２と経路付加部４０に出力する。一方、転送ルールの問い合わせの対象となっているパケットに障害情報が含まれていない場合、転送ルール決定部５１は、要求メッセージを第１の実施形態と同様に処理する。
【０１０８】
経路計算部５２は、ネットワーク中のトポロジー情報などを用いて、要求メッセージの送信元の転送装置１０から、転送ルールの問い合わせの対象のパケットの宛先に至る経路を計算する。経路計算部５２は、計算結果を経路付加部４０に出力する。経路付加部４０は、経路計算部５２から通知された計算結果と、ネットワーク情報６１を用いて、経路に含まれている各転送装置１０での出力ポートを特定する。さらに、経路付加部４０は、要求メッセージから、転送ルールの問い合わせの対象のパケットを抽出する。経路付加部４０は、抽出したパケットに、転送装置１０ごとの出力ポートを特定するための情報を含める。経路付加部４０は、出力ポートを特定するための情報を含むパケットを、送信部３２に出力する。
【０１０９】
なお、制御装置８０のハードウェア構成も、図５に示すとおりである。制御装置８０では、プロセッサ１０１は、接続管理部３３、経路付加部４０、アプリケーション処理部４５、経路計算制御部５５として動作する。メモリ１０２は、例えば、記憶部６０として動作する。ネットワーク接続装置１０４は、受信部３１と送信部３２を実現する。
【０１１０】
図１３は、出力ポートの情報を含むパケットのフォーマットの例を示す。図１３のペイロードとＥｔｈｅｒｎｅｔヘッダは、経路付加部４０が抽出したパケットのペイロードとＥｔｈｅｒｎｅｔヘッダである。経路付加部４０は、要求メッセージから抽出したパケットから障害情報ヘッダを削除し、出力ポート情報ヘッダを付加する。例えば、図１３に示すように、経路付加部４０は、ペイロードとＥｔｈｅｒｎｅｔヘッダの間に、出力ポート情報ヘッダを付加することができる。出力ポート情報ヘッダには、１つ以上のポート情報が含まれている。以下の説明では、ポート情報は、制御装置８０からのホップ数が大きくなる順に並べられており、最もペイロードに近いポート情報は、パケットの宛先の端末５が接続している転送装置１０で使用される情報であるものとする。図１３の例では、ポート情報１は、パケットの宛先の端末５が接続している転送装置１０での出力ポートを表わす。図１３の例では、１つのポート情報には、転送装置１０の識別子、出力ポート番号、終了フラグが含まれる。
【０１１１】
終了フラグは、パケットの先頭から処理している装置が出力ポート情報ヘッダの終了を特定するために使用する。終了フラグ＝ＴＲＵＥは、そのポート情報が出力ポート情報ヘッダの末尾の情報であることを示す。一方、終了フラグ＝ＦＡＬＳＥは、そのポート情報の後に、他のポート情報が含まれていることを示す。以下の説明では、パケットの宛先の端末５が接続している転送装置１０での出力ポートについての情報では、終了フラグ＝ＴＲＵＥに設定され、その他の転送装置１０では終了フラグ＝ＦＡＬＳＥに設定される。なお、出力ポート情報ヘッダの末尾の情報は、対象パケットの宛先に接続している転送装置１０の情報である。このため、終了フラグ＝ＴＲＵＥは、そのポート情報が適用される転送装置１０が対象パケットの宛先の端末５に接続していることを示す情報でもある。
【０１１２】
図１４は、第２の実施形態で行われる通信処理の例を示す。図１４でも、図６などを用いて説明したネットワークを例としており、端末５、転送装置１０、制御装置、調整装置７０の接続関係は、第１の実施形態と同様である。以下、制御装置８０ａに障害が発生したため、転送装置１０ａ〜１０ｃが新たな転送ルールを取得できない期間中に、端末５ａから端末５ｃにパケットが送信された場合を例として、通信処理の例を説明する。なお、以下の説明では、いずれの転送装置１０も端末５ｃ宛てのパケットに適用できる転送ルールを保持していないものとする。
【０１１３】
端末５ａで端末５ｃ宛のパケットＰ２０が生成され、転送装置１０ａに転送された場合、第１の実施形態の手順（１）〜（１０）で述べた処理と同様の処理が行われる。なお、転送装置１０ｄが転送装置１０ｃから受信したパケットを、パケットＰ２１と記載する。取得部２２ｄは、パケットＰ２１を要求メッセージ９１ｄに含めている。従って、要求メッセージ９１ｄに含まれているパケットＰ２１には、転送装置１０ａ〜１０ｃで付加された障害情報が含まれている。さらに、パケットＰ２１の障害情報ヘッダ以外の情報は、端末５ａで生成されたパケットＰ２０と同じである。
【０１１４】
（４１）制御装置８０ｂの受信部３１ｂは、要求メッセージ９１ｄを転送ルール決定部５１ｂに出力する。転送ルール決定部５１ｂは、要求メッセージ中に含まれているパケットＰ２１に障害情報が含まれているかを判定する。ここでは、パケットＰ２１に障害情報が含まれているので、要求メッセージ９１ｄを経路計算部５２ｂに出力する。
【０１１５】
（４２）経路計算部５２ｂは、ネットワーク中の接続関係を用いて、転送装置１０ｄから端末５ｃに至るまでの経路を計算する。なお、ネットワーク中の接続関係は、記憶部６０ｂに記憶されている情報であっても良く、調整装置７０から取得した情報であっても良い。経路計算部５２ｂは、得られた経路の情報を経路付加部４０に出力する。
【０１１６】
（４３）経路付加部４０ｂは、記憶部６０ｂに記憶されているネットワーク情報６１ｂと、経路計算部５２ｂから通知された経路情報を用いて、各転送装置１０での出力ポートを特定する。さらに、経路付加部４０ｂは、要求メッセージ９１ｄからパケットＰ２０を取得し、以下のような情報を含む出力ポート情報ヘッダを、パケットＰ２０に含める。
ポート情報３
転送装置１０の識別子：転送装置１０ｄ
出力ポート          ：ポートＰｏ４
終了フラグ          ：ＦＡＬＳＥ
ポート情報２
転送装置１０の識別子：転送装置１０ｃ
出力ポート          ：ポートＰｏ１
終了フラグ          ：ＦＡＬＳＥ
ポート情報１
転送装置１０の識別子：転送装置１０ｂ
出力ポート          ：ポートＰｏ３
終了フラグ          ：ＴＲＵＥ
以下、パケットＰ２０に出力ポート情報ヘッダが付加されたパケットをパケットＰ２２と記載する。経路付加部４０ｂは、パケットＰ２２を送信部３２ｂに出力する。送信部３２ｂは、パケットＰ２２を転送装置１０ｄに送信する。
【０１１７】
（４４）転送装置１０ｄの受信部１１ｄは、パケットＰ２２を取得部２２ｄに出力する。取得部２２ｄは、パケットＰ２２に出力ポート情報ヘッダが含まれているかを判定する。パケットＰ２２に出力ポート情報ヘッダが含まれているので、取得部２２ｄは、パケットＰ２２を転送先特定部１４ｄに出力する。転送先特定部１４ｄは、出力ポート情報ヘッダから、転送装置１０ｄでの出力ポートが記録されているポート情報（ポート情報３）を抽出する。抽出したポート情報では、出力ポートがポートＰｏ４に設定されている。そこで、転送先特定部１４は、出力ポートがポートＰｏ４であることを表わす情報と共に、パケットＰ２２を送信部１２ｄに出力する。送信部１２ｄがパケットＰ２２をポートＰｏ４から出力することにより、パケットＰ２２は、転送装置１０ｃに送信される。
【０１１８】
（４５）転送装置１０ｃの転送先特定部１４ｃは、受信部１１ｄを介してパケットＰ２２を取得する。この時点では、転送装置１０ｃは、制御装置８０ｂとの接続を確立しておらず、さらに、制御装置８０ａも障害から復旧していないものとする。従って、転送装置１０ｃは、新たな転送ルールを取得することはできない。転送先特定部１４ｃは、パケットＰ２２に出力ポート情報ヘッダが含まれていると判定すると、手順（４４）と同様に出力ポート情報ヘッダの処理を行う。このため、転送先特定部１４ｃは、転送ルールを使用する代わりに、ポート情報２を用いて、転送装置１０ｃからの出力ポートがポートＰｏ１であると特定する。そこで、転送先特定部１４ｃは、出力ポートがポートＰｏ１であることを表わす情報と共に、パケットＰ２２を送信部１２ｃに出力する。送信部１２ｃがパケットＰ２２をポートＰｏ１から出力することにより、パケットＰ２２は、転送装置１０ｂに送信される。
【０１１９】
（４６）転送装置１０ｂの転送先特定部１４ｂは、手順（４５）と同様の処理を行うので、ポート情報１を用いて、転送装置１０ｂからの出力ポートがポートＰｏ３であると特定する。さらに、転送先特定部１４ｂは、ポート情報１では終了フラグ＝ＴＲＵＥに設定されているので、パケットＰ２２から出力ポート情報ヘッダを削除する。この処理により、転送装置１０ｂは、パケットＰ２２をパケットＰ２０に変換する。転送先特定部１４ｂは、出力ポートがポートＰｏ３であることを表わす情報と共に、パケットＰ２０を送信部１２ｂに出力する。送信部１２ｂがパケットＰ２０をポートＰｏ３から出力することにより、パケットＰ２０は、端末５ｃに送信される。
【０１２０】
なお、図１４を参照しながら、ネットワーク中の制御装置が制御装置８０である場合を例として説明したが、ネットワーク中には、制御装置８０と制御装置３０の両者が混じっていてもよい。
【０１２１】
図１５は、制御装置８０の動作の例を説明するフローチャートである。転送ルール決定部５１は、受信部３１を介して、要求メッセージを取得する。なお、図１５は、図４のネットワークＮ２に示すように、制御装置８０同士が直接通信するネットワークで行われる動作の例を示す。転送ルール決定部５１は、制御装置８０が単位時間当たりに受信する要求メッセージの数と閾値との比較結果を用いて、制御装置８０の処理負荷が高いかを判定する（ステップＳ２１）。制御装置８０の処理負荷が高い場合、転送ルール決定部５１は、要求メッセージの処理を終了する（ステップＳ２１でＹｅｓ）。一方、処理負荷が高くない場合、接続管理部３３は、他の制御装置８０との間の通信が可能であるかを判定する（ステップＳ２１でＮｏ、ステップＳ２２）。他の制御装置８０との通信ができない場合、制御装置８０は処理を終了する（ステップＳ２２でＹｅｓ）。他の制御装置８０と通信できる場合、転送ルール決定部５１は、要求メッセージ中に障害情報が含まれているかを判定する（ステップＳ２２でＮｏ、ステップＳ２３）。要求メッセージ中に障害情報が含まれていない場合、転送ルール決定部５１は、転送ルールを生成し、送信部３２を介して、要求メッセージの送信元に送信する（ステップＳ２３でＮｏ、ステップＳ２４）。
【０１２２】
一方、要求メッセージ中に障害情報が含まれている場合、転送ルール決定部５１は、他の制御装置８０で障害が発生していることを検知する（ステップＳ２３でＹｅｓ、ステップＳ２５）。転送ルール決定部５１は、要求メッセージを経路計算部５２に出力する。経路計算部５２は、要求メッセージの送信元から、要求メッセージに含まれているパケットの宛先までの経路を計算する（ステップＳ２６）。経路付加部４０は、経路計算部５２での計算結果を用いて、各転送装置１０での出力ポートを特定し、要求メッセージに含まれているパケットに出力ポート情報ヘッダを含める（ステップＳ２７）。経路付加部４０は、送信部３２を介して、出力ポート情報ヘッダを含むパケットを送信する（ステップＳ２８）。その後、転送ルール決定部５１は、要求メッセージの送信元に、経路計算部５２が計算した経路を用いるための転送ルールを通知する（ステップＳ２９）。
【０１２３】
なお、制御装置８０は、制御装置３０と制御装置８０が混じっているネットワーク中でも図１５を用いて説明したように動作することができる。
【０１２４】
図１６は、転送装置１０の動作の例を説明するフローチャートである。図１６は、パケットの転送処理を行うときの動作の例を示している。転送装置１０は、パケットを受信する。転送先特定部１４は、受信したパケットに出力ポート情報ヘッダが含まれているかを判定する（ステップＳ４１）。受信したパケットに出力ポート情報ヘッダが含まれていない場合、転送先特定部１４は、経路情報を含んでいないパケットを受信したと判定して、転送処理を行う（ステップＳ４１でＮｏ、ステップＳ４２）。なお、ステップＳ４２での処理は、図１１を参照しながら説明したとおりである。一方、出力ポート情報ヘッダを含むパケットを受信した場合、転送先特定部１４は、変数ｎを１に設定する（ステップＳ４１でＹｅｓ、ステップＳ４３）。ここで、ｎは、出力ポート情報ヘッダ中のポート情報を識別するために使用される変数である。転送先特定部１４は、パケットの先頭側からｎ番目のポート情報を読み込み、自装置の識別子が含まれているかを判定する（ステップＳ４４、Ｓ４５）。自装置の識別子が含まれていない場合、転送先特定部１４は、読み込んだポート情報の終了フラグがＴＲＵＥに設定されているかを判定する（ステップＳ４５でＮｏ、ステップＳ４６）。ポート情報の終了フラグがＴＲＵＥに設定されている場合、転送先特定部１４は処理を終了する（ステップＳ４６でＹｅｓ）。ポート情報の終了フラグがＴＲＵＥに設定されていない場合、転送先特定部１４は、ｎを１つインクリメントして、ステップＳ４４以降の処理を行う（ステップＳ４６でＮｏ、ステップＳ４７）。
【０１２５】
一方、読み込んだポート情報に自装置の識別子が含まれている場合、転送先特定部１４は、出力ポートを特定する（ステップＳ４５でＹｅｓ、ステップＳ４８）。さらに、転送先特定部１４は、読み込んだポート情報の終了フラグがＴＲＵＥに設定されているかを判定する（ステップＳ４９）。読み込んだポート情報の終了フラグがＴＲＵＥに設定されている場合、転送先特定部１４は、処理対象のパケットから出力ポート情報ヘッダを削除し、パケットを送信部１２に出力する（ステップＳ４９でＹｅｓ、ステップＳ５０）。その後、送信部１２は、特定された出力ポートからパケットを送信する（ステップＳ５１）。
【０１２６】
第２の実施形態では、制御装置８０は、転送ルールの問合せを受けると、処理対象のパケットに、そのパケットの宛先までの経路中の転送装置１０での出力ポートの情報を、出力ポート情報ヘッダとして挿入する。このため、各転送装置１０は、出力ポート情報ヘッダを参照することにより、そのパケットについての出力ポートを特定することができる。換言すると、転送装置１０は、新たな転送ルールを取得できない状況でも、パケットを宛先に向けて転送することができる。例えば、図１４のケースでは、転送装置１０ｂと転送装置１０ｃのいずれも制御装置８０から転送ルールを取得できない場合であっても、転送装置１０ｂと転送装置１０ｃは、出力ポート情報ヘッダを用いて転送処理を行うことができる。
【０１２７】
従って、第２の実施形態を用いると、転送ルールを取得できなくなっている転送装置１０に接続されている端末５へのパケットの転送であっても、転送装置１０が転送ルールを取得できるようになる前に転送処理を行うことができる。
【０１２８】
＜第３の実施形態＞
要求メッセージを受信した制御装置８０は、転送ルールの問合せの対象となっているパケットの宛先までの経路の代わりに、各転送装置１０で使用される転送ルールを通知することもできる。この場合、経路付加部４０は、得られた経路に含まれている各転送装置１０が使用可能な転送ルールを含むパケットを、要求メッセージの送信元に送信する。
【０１２９】
図１７は、転送ルールを含むパケットのフォーマットの例を示す。図１７のペイロードとＥｔｈｅｒｎｅｔヘッダは、経路付加部４０が要求メッセージから抽出したパケットのペイロードとＥｔｈｅｒｎｅｔヘッダである。経路付加部４０は、取得したパケットから障害情報ヘッダを削除し、転送ルール変更ヘッダを付加する。図１７の例では、経路付加部４０は、ペイロードとＥｔｈｅｒｎｅｔヘッダの間に、転送ルール変更ヘッダを付加している。転送ルール変更ヘッダには、１つ以上の転送ルールが含まれている。以下の説明では、転送ルールは、制御装置８０からのホップ数が大きくなる順に並べられており、最もペイロードに近いポート情報は、パケットの宛先の端末５が接続している転送装置１０で使用される情報であるものとする。図１７の例では、転送ルール１は、パケットの宛先の端末５が接続している転送装置１０での出力ポートを表わす情報である。図１７の例では、転送装置１０の識別子、パケットの選択条件、選択されたパケットに対するアクション、終了フラグが、１つの転送ルールに含まれている。終了フラグは、図１３を参照しながら説明した出力ポート情報ヘッダを含むパケットと同様である。従って、終了フラグ＝ＴＲＵＥは、その転送ルールを使用する転送装置１０が処理対象のパケットの宛先の端末５に接続していることを示す情報でもある。
【０１３０】
図１８は、転送ルールを用いた処理方法の例を説明する図である。図１８の例では、制御装置８０ｃと制御装置８０ｄの間で、ネットワーク中の接続情報が共有されているものとする。なお、制御装置８０ｃと制御装置８０ｄの間で情報を共有するための方法は、図４を参照しながら述べたいずれかの方法であるものとする。制御装置８０ｃは、転送装置１０ｅ、１０ｆと接続しており、制御装置８０ｄは転送装置１０ｇと接続している。さらに、転送装置１０ｆは、転送装置１０ｅと転送装置１０ｇのいずれともパケットの送受信が可能である。転送装置１０ｅには端末５Ｂが接続しており、転送装置１０ｆには端末５Ａが接続している。なお、図１８はネットワークの一例であり、ネットワーク中の制御装置８０、転送装置１０、端末５の数は任意に変更されうる。
【０１３１】
図１８のネットワークにおいて、制御装置８０ｃに障害が発生したことにより、転送装置１０ｆと転送装置１０ｅが新たな転送ルールを制御装置８０ｃから取得できないときに、端末５Ａが端末５Ｂにパケットを送信したとする。ここで、転送装置１０ｆは、端末５Ａから端末５Ｂ宛のパケットが送信された時点では、図１９の転送ルールテーブル１６ｆ＿１を保持しているものとする。同様に、転送装置１０ｅは、転送ルールテーブル１６ｅ＿１（図１９）、転送装置１０ｇは、転送ルールテーブル１６ｇ＿１（図１９）を保持しているものとする。
【０１３２】
（５１）転送装置１０ｆは、端末５Ａから端末５Ｂ宛のパケットＰ３０を受信する。転送先特定部１４ｆは、転送ルールテーブル１６ｆ＿１には、端末５Ｂ宛のパケットＰ３０に適用できる転送ルールが含まれていないと判定する。その後、第１の実施形態の手順（２）、（３）で説明した処理と同様の処理により、パケットＰ３０に障害情報を付加したパケットＰ３１が生成される。さらに、パケットＰ３１は、デフォルト転送ルール１７ｅ（図示せず）を用いて、転送装置１０ｇに転送されたとする。
【０１３３】
（５２）転送装置１０ｇの転送先特定部１４ｇは、転送ルールテーブル１６ｇ＿１には、端末５Ｂ宛のパケットＰ３１に適用できる転送ルールが含まれていないと判定する。そこで、取得部２２ｇは、制御装置８０ｄに要求メッセージ９１ｇを送信する。ここで、取得部２２ｇは、パケットＰ３１を要求メッセージ９１ｇに含めている。
【０１３４】
（５３）第２の実施形態の手順（４１）、（４２）と同様の処理により、転送装置１０ｇから端末５Ｂに至る経路が計算される。ここで、転送装置１０ｇから転送装置１０ｆ、転送装置１０ｅを介し、端末５Ｂに至る経路が計算される。
【０１３５】
（５４）経路付加部４０ｄは、経路計算部５２ｄから得られた経路と、ネットワーク情報６１を用い、転送装置ごとの出力ポートを特定する。次に、経路付加部４０は、各転送装置１０について求めた出力ポートを、パケットＰ３１の宛先に対応付けた転送ルールを生成する。例えば、転送装置１０ｇでの出力ポートがポートＰｏ１である場合、パケットの宛先に対応付けて、以下の転送ルールを生成する。
転送ルールＴ３
転送装置１０の識別子：転送装置１０ｇ
選択条件            ：宛先ＭＡＣアドレスが端末５Ｂのアドレス
アクション          ：ポートＰｏ１から出力
さらに、転送装置１０ｇは要求メッセージ９１ｇの送信元であるので、終了フラグをＦＡＬＳＥに設定する。同様に、経路付加部４０ｄは、転送装置１０ｆで使用される転送ルールＴ２と、転送装置１０ｅで使用される転送ルールＴ１を以下のように生成する。
転送ルールＴ２
転送装置１０の識別子：転送装置１０ｆ
選択条件            ：宛先ＭＡＣアドレスが端末５Ｂのアドレス
アクション          ：ポートＰｏ２から出力
終了フラグ          ：ＦＡＬＳＥ
転送ルールＴ１
転送装置１０の識別子：転送装置１０ｅ
選択条件            ：宛先ＭＡＣアドレスが端末５Ｂのアドレス
アクション          ：ポートＰｏ１から出力
終了フラグ          ：ＴＲＵＥ
【０１３６】
経路付加部４０ｄは、得られた転送ルールＴ１〜Ｔ３を転送ルールヘッダに記録し、パケットＰ３１のペイロードとＥｔｈｅｒｎｅｔの間に転送ルールヘッダを付加する。さらに、パケットＰ３１中の障害情報ヘッダを削除する。図１８に、転送ルール変更ヘッダを含むパケットＰ３２を示す。制御装置８０ｄは、パケットＰ３２を転送装置１０ｄに送信する。
【０１３７】
（５５）転送装置１０ｇの取得部２２ｇは、受信部１１ｇを介してパケットＰ３２を取得する。取得部２２ｇは、パケットＰ３２に転送ルール変更ヘッダが含まれているかを判定する。パケットＰ３２に転送ルール変更ヘッダが含まれているので、取得部２２ｇは、パケットＰ３２を転送先特定部１４ｇに出力する。転送先特定部１４ｇは、転送ルール変更ヘッダから、転送装置１０ｇで使用する転送ルールＴ３を抽出する。転送先特定部１４ｇは、得られた転送ルールを用いて、転送ルールテーブル１６ｇ＿１（図１９）を、転送ルールテーブル１６ｇ＿２（図１９）に更新する。さらに、転送先特定部１４ｇは、パケットＰ３２が端末５Ｂ宛のパケットであるので、転送ルールテーブル１６ｇ＿２に従って、パケットＰ３２をポートＰｏ１から出力することにより、パケットＰ３２を転送装置１０ｆに送信する。
【０１３８】
（５６）転送装置１０ｆの転送先特定部１４ｆは、受信部１１ｆを介してパケットＰ３２を取得する。転送先特定部１４ｆは、パケットＰ３２に転送ルール変更ヘッダが含まれているかを判定する。パケットＰ３２に転送ルール変更ヘッダが含まれているので、転送先特定部１４ｆは、転送ルール変更ヘッダから、転送装置１０ｆで使用する転送ルールＴ２を抽出する。転送先特定部１４ｆは、得られた転送ルールを用いて、転送ルールテーブル１６ｆ＿１（図１９）を、転送ルールテーブル１６ｆ＿２（図１９）に更新する。さらに、転送先特定部１４ｆは、パケットＰ３２が端末５Ｂ宛のパケットであるので、転送ルールテーブル１６ｆ＿２に従って、パケットＰ３２をポートＰｏ２から出力することにより、パケットＰ３２を転送装置１０ｅに送信する。
【０１３９】
（５７）転送装置１０ｅの転送先特定部１４ｅは、手順（５６）と同様の処理により、転送ルールテーブル１６ｅ＿１（図１９）を、転送ルールＴ１により、転送ルールテーブル１６ｅ＿２（図１９）に更新する。さらに、転送ルールＴ１に含まれている終了フラグがＴＲＵＥに設定されていることから、転送先特定部１４ｅは、パケットＰ３２から転送ルール変更ヘッダを削除し、パケットＰ３２をパケットＰ３０に変換する。転送装置１０ｅは、転送ルールテーブル１６ｅ＿２を用いて、パケットＰ３０を処理することにより、パケットＰ３０を端末５Ｂに送信する。
【０１４０】
図２０は、第３の実施形態での転送装置の動作の例を説明するフローチャートである。図２０は、パケットの転送処理を行うときの動作の例を示している。転送先特定部１４は、受信部１１を介して、制御装置８０からパケットを受信する。転送先特定部１４は、受信したパケットに転送ルール変更ヘッダが含まれているかを判定する（ステップＳ６１）。受信パケットに転送ルール変更ヘッダが含まれていない場合、転送先特定部１４は、経路情報を含んでいないパケットを受信したと判定して、転送処理を行う（ステップＳ６１でＮｏ、ステップＳ６２）。なお、ステップＳ６２での処理は、図１１を参照しながら説明した通りである。ステップＳ６３〜ステップＳ６７の処理は、図１６を参照しながら説明したステップＳ４３〜Ｓ４７と同様である。
【０１４１】
読み込んだ転送ルールに自装置の識別子が含まれている場合、転送先特定部１４は、転送ルールテーブル１６を更新する（ステップＳ６５でＹｅｓ、ステップＳ６８）。さらに、転送先特定部１４は出力ポートを特定する（ステップＳ６９）。転送先特定部１４は、読み込んだポート情報の終了フラグがＴＲＵＥに設定されているかを判定する（ステップＳ７０）。読み込んだポート情報の終了フラグがＴＲＵＥに設定されている場合、転送先特定部１４は、処理対象のパケットから転送ルール変更ヘッダを削除し、パケットを送信部１２に出力する（ステップＳ７０でＹｅｓ、ステップＳ７１）。その後、送信部１２は、更新後の転送ルールテーブル１６を用いて特定された出力ポートからパケットを送信する（ステップＳ７２）。
【０１４２】
このように、第３の実施形態を用いると、パケットの出力先のポートの特定と、転送ルールテーブル１６の更新が１つのパケットを用いて行われるため、効率的に通信処理が行われる。
【０１４３】
＜第４の実施形態＞
第４の実施形態では、デフォルト転送ルール１７を制御装置３０で生成する場合について説明する。なお、制御装置８０も制御装置３０と同様の処理により、転送装置１０ごとにデフォルト転送ルール１７を求めることができる。
【０１４４】
制御装置３０は、他の制御装置３０との間で、転送装置１０や端末５との間の接続関係を表わす情報を交換すると、自装置と接続を確立している転送装置１０に対して、デフォルト転送ルール１７の計算を行う。このとき、制御装置３０は、各転送装置１０について、最小のホップ数で他の制御装置３０と接続を確立している転送装置１０に到達する経路を求め、求めた経路を使用するための出力ポートを各転送装置１０に対して計算する。
【０１４５】
図２１は、デフォルト転送ルールの決定方法の例を説明するフローチャートである。転送ルール決定部５１は、自装置と接続を確立している転送装置１０のうちでデフォルト転送ルール１７を決定する対象を選択する。例えば、制御装置３０は、新たにセッションを確立した転送装置１０に対してデフォルト転送ルール１７を計算し、計算結果を通知することができる。この場合、接続管理部３３は、新たにセッションを確立した転送装置１０を転送ルール決定部５１に通知する。以下、デフォルト転送ルール１７を決定する対象を転送装置１０ｔと記載する。
【０１４６】
転送ルール決定部５１は、接続管理部３３から転送装置１０ｔの情報を通知されると、転送装置１０ｔをデフォルト転送ルール１７を求める対象とし、変数ｍを０に設定する（ステップＳ８１）。ここで、変数ｍは、転送装置１０ｔからのホップ数を特定するために使用される。転送ルール決定部５１は、これまでにネットワーク中の全ての転送装置１０を調査対象としているかを判定する（ステップＳ８２）。ネットワーク中の全ての転送装置１０について調査を行っていない場合、転送ルール決定部５１は、転送装置１０ｔからｍホップにある全ての転送装置１０を調査対象に設定する（ステップＳ８２でＮｏ、ステップＳ８３）。さらに、転送ルール決定部５１は、調査対象とした転送装置１０について、通信中の制御装置を特定する（ステップＳ８４）。転送ルール決定部５１は、調査対象としている転送装置１０の中に、転送装置１０ｔとは異なる制御装置３０と通信中の転送装置１０があるかを判定する（ステップＳ８５）。転送装置１０ｔとは異なる制御装置３０と通信中の転送装置１０が無い場合、転送ルール決定部５１は、ｍの値を１つインクリメントして、ステップＳ８２以降の処理を繰り返す（ステップＳ８５でＮｏ、ステップＳ８６）。
【０１４７】
一方、転送装置１０ｔとは異なる制御装置３０と通信中の転送装置１０がある場合、転送ルール決定部５１は、転送装置１０ｔとは異なる制御装置３０と通信中の転送装置１０を、経路計算部５２に通知する（ステップＳ８５でＹｅｓ）。経路計算部５２は、転送ルール決定部５１から通知された転送装置１０を終点としたときの、転送装置１０ｔからの最短経路を計算する（ステップＳ８８）。転送ルール決定部５１は、経路計算部５２で得られた経路を使用するための、転送装置１０ｔでの出力ポートを求める（ステップＳ８９）。
【０１４８】
例えば、図６に示すネットワーク中で制御装置３０ａが故障する前に、制御装置３０ｂが転送装置１０ｄとセッションを確立したとする。すると、転送ルール決定部５１ｂは、転送装置１０ｄから１ホップ目に転送装置１０ｃと転送装置１０ａがあることを特定する。さらに、転送装置１０ｃと転送装置１０ａのいずれも制御装置３０ａと通信している。そこで、経路計算部５２ｂは、経路の状況なども勘案して、転送装置１０ｄから転送装置１０ｃに至る経路を、デフォルト転送ルール１７の算出に用いることにしたとする。すると、転送ルール決定部５１ｂは、ポートＰｏ４から出力することを、転送装置１０ｄで使用するデフォルト転送ルール１７として決定する。転送ルール決定部５１ｂは、デフォルト転送ルール１７を転送装置１０ｄに通知する。
【０１４９】
ステップＳ８２で全ての転送装置１０を調査対象にしたと判定された場合、転送ルール決定部５１は、ネットワーク中に、自装置以外の制御装置３０に接続されている転送装置１０が無いと判定する（ステップＳ８２でＹｅｓ）。そこで、転送ルール決定部５１は、転送装置１０ｔのポートのうちで他の転送装置１０に接続されているポートのうちの１つをランダムに選択する（ステップＳ８７）。転送ルール決定部５１は、選択したポートからパケットを出力することをデフォルト転送ルール１７として、転送装置１０ｔに通知する。
【０１５０】
このように、制御装置３０でデフォルト転送ルール１７が決定されると、転送装置１０は、転送ルールが得られない場合に、なるべく少ないホップ数で転送ルールを提供可能な制御装置３０と通信できる転送装置１０に、パケットを転送できる。そのため、効率的に通信処理が行われる。
【０１５１】
なお、第４の実施形態は、第１〜第３の実施形態を含む任意の他の実施形態と組み合わせて使用される。
【０１５２】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１５３】
第１の実施形態のケース２では、制御装置３０中の転送ルール決定部５１が、処理負荷の大きさを閾値と比較した結果、転送ルールの問い合わせを受け付けるかを決定しているが、制御装置３０での負荷の大きさは、転送装置１０で推定しても良い。例えば、転送装置１０ａの取得部２２ａは、単位時間当たりに制御装置３０ａに送信した要求メッセージの数を、予め記憶している閾値と比較することができる。取得部２２ａは、単位時間当たりに制御装置３０ａに送信した要求メッセージの数が閾値を越えると、制御装置３０ａの処理負荷が高いと判定し、制御装置３０ａへの要求メッセージの送信を中止する。このため、転送装置１０ａは、手順（２５）の処理を行う。転送装置１０ｂは、転送装置１０ａから受信したパケットＰ５に、障害原因フィールドの値＝３の障害情報が含まれていることから、制御装置３０ａでの負荷が高いと推定する。そこで、転送装置１０ｂも、制御装置３０ａへの要求メッセージの送信を中止し、手順（２６）の処理を行う。転送装置１０ｃも、転送装置１０ｂと同様に動作する。このように変形すると、制御装置３０ａが中止メッセージ９３ａを送信しなくても、制御装置３０ａの負荷が高いと判断されると制御装置３０ａへの要求メッセージの送信が中止される。このため、制御装置３０ａの処理負荷が、中止メッセージ９３ａの生成が困難なほどに高くなっても、制御装置３０ａへの要求メッセージの送信を中止できる。
【０１５４】
第２の実施形態では、出力ポート情報ヘッダを含むパケットを生成するときに、制御装置８０が障害情報ヘッダを削除する場合について述べたが、制御装置８０は障害情報ヘッダを残したまま、出力ポート情報ヘッダを付加したパケットを生成しても良い。この場合、出力ポート情報ヘッダ中の終了フラグがＴＲＵＥに設定されているエントリの処理を行った転送装置１０は、出力ポート情報ヘッダと障害情報ヘッダの両方をパケットから削除した後、転送処理を行う。第３の実施形態についても同様に、転送ルール変更ヘッダを含むパケットを生成するときに、制御装置８０が障害情報ヘッダを削除しなくてもよい。この場合も、終了フラグがＴＲＵＥに設定されているエントリの処理を行った転送装置１０は、転送ルール変更ヘッダと障害情報ヘッダの両方をパケットから削除した後、転送処理を行う。
【０１５５】
以上の説明では、理解しやすくするために、各転送装置１０が１つの制御装置３０とセッションを確立している場合を例として説明したが、転送装置１０は、複数の制御装置３０と同時にセッションを確立しても良い。この場合、セッションを確立している制御装置３０のうちの１台が転送ルールを提供し、他の制御装置３０は、転送ルールを提供しない。ここで、転送ルールを通知する制御装置３０をマスタコントローラ、転送ルールを通知しない制御装置３０をスレーブコントローラと記載する。制御装置３０間での通信や制御装置３０と調整装置７０の通信により、各制御装置３０は、各転送装置１０について、マスタコントローラとスレーブコントローラを特定できるものとする。また、マスタコントローラで障害が発生した場合や、マスタコントローラの負荷が高い場合などは、転送装置１０は、スレーブコントローラをマスタコントローラに設定し直し、新たなマスタコントローラから転送ルールを取得できるものとする。制御装置８０についても同様である。
【０１５６】
なお、第４の実施形態では、転送装置１０が複数の制御装置３０、８０とセッションを確立している場合、転送装置１０がマスタコントローラを変更した場合にも、新たにデフォルト転送ルール１７が計算される。転送装置１０は、新たなマスタコントローラからデフォルト転送ルール１７を通知されるとデフォルト転送ルール１７を更新するので、転送装置１０は、マスタコントローラの変更に応じてデフォルト転送ルール１７も変更できる。
【０１５７】
さらに、いずれの実施形態においても、制御装置３０、８０は、図４に示すネットワークＮ１、Ｎ２のいずれかを用いてネットワーク中の転送装置１０や端末５の接続関係などの情報を共有することができる。
【０１５８】
第１〜第４の実施形態では、転送装置１０はデフォルト転送ルール１７を用いた転送をする場合に、パケットに障害情報を付加する場合を例として説明したが、転送装置１０は不可情報以外の情報をパケットに付加しないように変形されても良い。例えば、第１の実施形態のケース１やケース２のように、制御装置３０に障害が発生した場合か、制御装置３０の負荷が閾値を超えた場合であって、かつ、適用可能な転送ルールがない場合に、転送装置１０は、パケットに不可情報を付加する。一方、第１の実施形態のケース３のように、転送装置１０と制御装置３０の間のセッションが切断されたために転送ルールを取得できない場合、転送装置１０は、不可情報も障害情報もパケットに付加しない。
【０１５９】
さらに、制御装置３０は、転送ルールの要求メッセージの受信以外の要因により、制御装置３０での負荷が高くなった場合でも、中止メッセージを生成することができる。この場合も、第１の実施形態で述べたように、転送装置１０は、中止メッセージの送信元の制御装置３０に転送ルールを要求しない。制御装置８０についても制御装置３０と同様に中止メッセージを生成できるものとする。
【０１６０】
第２の実施形態では、各転送装置１０で使用する出力ポートの情報が出力ポート情報ヘッダに含まれているケースを例として説明したが、出力ポートの情報は、ヘッダ以外の部分に記録されても良いものとする。同様に、第３の実施形態で説明した転送ルール変更ヘッダに含まれている情報は、パケットのヘッダ以外の領域に含まれていても良い。
【０１６１】
第１〜第４の実施形態でも、図１を参照しながら説明したように、不可情報がすでに付加されているパケットに対しては、付加処理部２３が不可情報を付加しないように変形されても良い。この場合、判定部２１は、転送先特定部１４から入力されたパケット中に転送ルールの要求先の制御装置３０についての不可情報が含まれている場合、デフォルト転送ルール１７を用いてパケットの出力ポートを特定する。さらに、判定部２１は、特定したポートの情報と共に、パケットを送信部１２に出力する。送信部１２は、入力されたパケットを、通知された出力ポートから送信する。
【０１６２】
上述の第１〜第４の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
複数の制御装置を備えるネットワーク中の転送装置であって、
転送処理の対象である対象パケットを受信する受信部と、
前記転送装置が行う処理の方法を表す転送ルールを決定する制御装置である決定装置から、前記受信部が受信した転送ルールを記憶する記憶部と、
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されていない場合、前記決定装置から前記転送ルールを取得できないことを示す不可情報が、前記対象パケット中に含まれているかを判定する判定部と、
前記対象パケットに前記不可情報が含まれている場合、前記対象パケットに適用される転送ルールを前記決定装置に要求せずに、前記対象パケットを、他の転送装置に送信する送信部
を備えることを特徴とする転送装置。
（付記２）
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されておらず、かつ、前記対象パケットに前記不可情報が含まれていない場合、前記対象パケットに適用される転送ルールを前記決定装置から取得するための処理を行う取得部と、
前記対象パケットに適用される転送ルールを所定の時間以内に前記決定装置から取得できない場合、前記対象パケットに前記不可情報を付加する付加処理部、
を備え、
前記送信部は、前記不可情報を付加した後の対象パケットを、前記他の転送装置に送信する
ことを特徴とする付記１に記載の転送装置。
（付記３）
前記対象パケットに適用できる転送ルールが前記記憶部に記憶されておらず、かつ、前記対象パケットに前記不可情報が含まれていない場合、前記対象パケットに適用される転送ルールを前記決定装置から取得するための処理を行う取得部と、
前記対象パケットに適用される転送ルールを前記決定装置から取得すると、取得した転送ルールに基づいて前記対象パケットの転送先を特定する特定部と、
前記複数の制御装置のうちの前記決定装置以外のいずれかからの転送ルールの取得に障害が発生したことを通知する障害情報が前記対象パケットに含まれており、かつ、前記対象パケットの転送先が特定された場合、前記対象パケットから前記障害情報を削除することにより、前記対象パケットを転送パケットに変換する変換部、
を備え、
前記送信部は、前記転送パケットを、前記転送先に送信する
ことを特徴とする付記１に記載の転送装置。
（付記４）
前記対象パケットに適用される転送ルールを前記決定装置から取得すると、取得した転送ルールに基づいて前記対象パケットの転送先を特定する特定部と、
前記複数の制御装置のうちの前記決定装置以外のいずれかからの転送ルールの取得に障害が発生したことを通知する障害情報が前記対象パケットに含まれており、かつ、前記対象パケットの転送先が特定された場合、前記対象パケットから前記障害情報を削除することにより、前記対象パケットを転送パケットに変換する変換部、
を備え、
前記送信部は、前記転送パケットを、前記転送先に送信する
ことを特徴とする付記２に記載の転送装置。
（付記５）
複数のポートを備え、
前記取得部は、前記対象パケットに適用される転送ルールを前記決定装置に要求するための要求メッセージを生成し、
前記送信部は、前記要求メッセージを前記決定装置に送信し、
前記対象パケットの宛先に至る経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた出力ポート情報が、前記要求メッセージに応答する応答メッセージに含まれている場合、前記特定部は、前記出力ポート情報中で当該転送装置の識別子に対応付けられたポートを特定し、
前記送信部は、前記複数のポートのうちで、前記特定部により特定されたポートを、転送処理に使用する
ことを特徴とする付記３または４に記載の転送装置。
（付記６）
前記取得部は、前記対象パケットに適用される転送ルールを前記決定装置に要求するための要求メッセージを生成し、
前記送信部は、前記要求メッセージを前記決定装置に送信し、
前記特定部は、
前記対象パケットの宛先に至る経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置で使用される転送ルールを対応付けた転送ルール変更情報が、前記要求メッセージに応答する応答メッセージに含まれている場合、前記転送ルール変更情報中で当該転送装置の識別子に対応付けられた転送ルールを用いて前記記憶部の情報を変更し、
前記記憶部の変更後の情報を用いて、前記転送先を特定する
ことを特徴とする付記３または４に記載の転送装置。
（付記７）
前記不可情報は、前記決定装置での障害が発生したことを通知する情報か、前記決定装置での処理負荷が所定の閾値を超えたことを通知する情報である
ことを特徴とする付記１〜６のいずれか１項に記載の転送装置。
（付記８）
複数の制御装置を備えるネットワーク中の転送装置であって、
転送処理の対象である対象パケットの送受信を行うネットワーク接続装置と、
前記転送装置が行う処理の方法を表す転送ルールを決定する制御装置である決定装置から、前記ネットワーク接続装置が受信した転送ルールを記憶するメモリと、
プロセッサ、
を備え、
前記プロセッサは、
前記対象パケットに適用できる転送ルールが前記メモリに記憶されていない場合、前記決定装置から前記転送ルールを取得できないことを示す不可情報が、前記対象パケット中に含まれているかを判定し、
前記不可情報が含まれている場合、前記対象パケットに適用される転送ルールを前記決定装置に要求せずに、前記対象パケットを、前記ネットワーク接続装置に出力し、
前記ネットワーク接続装置は、前記対象パケットを他の転送装置に送信する
ことを特徴とする転送装置。
（付記９）
複数の制御装置と複数の転送装置を備えるネットワーク中の制御装置であって、
パケットの転送処理の方法を表す転送ルールを要求する要求メッセージを受信する受信部と、
前記転送ルールを決定する決定部と、
前記転送ルールでの処理対象のパケットである対象パケットに、前記複数の制御装置のいずれかから転送ルールを取得できないことを示す不可情報が含まれている場合、前記対象パケットを前記要求メッセージから抽出すると共に、前記要求メッセージの送信元から前記対象パケットの宛先までの経路の情報を、前記対象パケットに付加する経路付加部と、
前記経路の情報を付加した対象パケットを、前記要求メッセージの送信元に送信する送信部
を備えることを特徴とする制御装置。
（付記１０）
前記複数の転送装置のそれぞれについて、前記転送装置が備えるポートの番号に、前記ポートを介して接続された装置を対応付けたネットワーク情報を記憶する記憶部と、
前記経路を決定するための計算処理を行う計算部、
をさらに備え、
前記経路付加部は、前記計算部の計算結果と前記ネットワーク情報を用いて、前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた情報を、前記対象パケットに付加する
ことを特徴とする付記９に記載の制御装置。
（付記１１）
前記複数の転送装置のそれぞれについて、前記転送装置が備えるポートの番号に、前記ポートを介して接続された装置を対応付けたネットワーク情報を記憶する記憶部と、
前記ネットワーク情報を用いて前記経路を決定するための計算処理を行う計算部、
をさらに備え、
前記決定部は、前記経路に含まれる転送装置ごとの転送ルールをさらに決定し、
前記経路付加部は、前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置で使用される転送ルールを対応付けた情報を、前記対象パケットに含める
ことを特徴とする付記９に記載の制御装置。
（付記１２）
前記決定部は、
前記複数の転送装置のうちの第１の転送装置と前記制御装置の間の接続が確立されると、前記制御装置とは異なる他の制御装置から前記転送ルールを通知されている転送装置のうちで、前記第１の転送装置からのホップ数が相対的に小さい転送装置である第２の転送装置を、前記ネットワーク情報を用いて検索し、
前記第１の転送装置から前記第２の転送装置に至る経路を使用する場合の前記第１の転送装置での出力ポートを、前記第１の転送装置が前記制御装置から前記転送ルールを取得できない場合の前記対象パケットの出力ポートに指定する
ことを特徴とする付記１０または１１に記載の制御装置。
（付記１３）
複数の制御装置と複数の転送装置を備えるネットワーク中の制御装置であって、
パケットの転送処理の方法を表す転送ルールを要求する要求メッセージを受信するネットワーク接続装置と、
前記転送ルールを決定するプロセッサ、
を備え、
前記プロセッサは、前記転送ルールでの処理対象のパケットである対象パケットを前記要求メッセージから抽出すると共に、前記対象パケットに前記複数の制御装置のいずれかからの転送ルールを取得できないことを示す不可情報が含まれている場合、前記要求メッセージの送信元から前記対象パケットの宛先までの経路の情報を、前記対象パケットに付加し、
前記ネットワーク接続装置は、前記経路の情報を付加した対象パケットを、前記要求メッセージの送信元に送信する
ことを特徴とする制御装置。
（付記１４）
第１の制御装置、第２の制御装置、および、複数の転送装置を備え、前記第１の制御装置は、第１および第２の転送装置が行う処理の方法を表す転送ルールを決定するネットワークで行われる転送方法であって、
前記第１の転送装置は、
処理対象である第１のパケットに適用する転送ルールの前記第１の制御装置からの取得に失敗した場合、前記第１の制御装置から前記転送ルールを取得できないことを示す不可情報を、前記第１のパケットに付加して、第２のパケットを生成し、
前記第２のパケットを、前記第２の転送装置に送信し、
前記第２の転送装置は、前記第２のパケット中の前記不可情報を検出すると、前記第２のパケットに適用する転送ルールを保持していなくても、前記第１の制御装置に転送ルールを要求せずに、第３の転送装置に、前記第２のパケットを転送する
ことを特徴とする転送方法。
（付記１５）
前記第２の制御装置は、前記第３の転送装置が行う処理を決定し、
前記第３の転送装置は、
前記第２のパケットに適用する処理を保持していない場合、前記第２のパケットに適用する処理を示す情報を要求する要求メッセージを、前記第２の制御装置に送信し、
前記第２の制御装置から前記第２のパケットに適用する処理が通知されると、前記第２のパケットから前記不可情報を削除することにより、前記第２のパケットを前記第１のパケットに変換し、
前記第１のパケットを、前記第２の制御装置から取得した情報を用いて処理する
ことを特徴とする付記１４に記載の転送方法。
（付記１６）
前記要求メッセージは、前記第２のパケットを含み、
前記第２の制御装置は、
前記要求メッセージを受信すると、前記第３の転送装置から前記第１のパケットの宛先に至る経路を決定し、
前記経路に含まれる各転送装置の識別子に、前記識別子で識別される転送装置での出力ポートを対応付けた出力ポート情報を、前記第１のパケットに付加して、前記第３の転送装置に送信し、
前記第３の転送装置は、前記出力ポート情報を含むパケットを、前記出力ポート情報中の前記第３の転送装置の識別子に対応付けられたポートから出力する
ことを特徴とする付記１５に記載の転送方法。
【符号の説明】
【０１６３】
５  端末
１０  転送装置
１１、３１  受信部
１２、３２  送信部
１３  外部インタフェース
１４  転送先特定部
１５、６０  記憶部
１６  転送ルールテーブル
１７  デフォルト転送ルール
１８、３３  接続管理部
２０  制御部
２１  判定部
２２  取得部
２３  付加処理部
２４  変換部
３０、８０  制御装置
４０  経路付加部
４５  アプリケーション処理部
５０、５５  経路計算制御部
５１  転送ルール決定部
５２  経路計算部
６１  ネットワーク情報
７０  調整装置
９１  要求メッセージ
９２  応答メッセージ
９３  中止メッセージ
１０１  プロセッサ
１０２  メモリ
１０３  バス
１０４  ネットワーク接続装置
１０５  ネットワーク
【図１】
2015082742.tif 000003
【図２】
2015082742.tif 000004
【図３】
2015082742.tif 000005
【図４】
2015082742.tif 000006
【図５】
2015082742.tif 000007
【図６】
2015082742.tif 000008
【図７】
2015082742.tif 000009
【図８】
2015082742.tif 000010
【図９】
2015082742.tif 000011
【図１０】
2015082742.tif 000012
【図１１】
2015082742.tif 000013
【図１２】
2015082742.tif 000014
【図１３】
2015082742.tif 000015
【図１４】
2015082742.tif 000016
【図１５】
2015082742.tif 000017
【図１６】
2015082742.tif 000018
【図１７】
2015082742.tif 000019
【図１８】
2015082742.tif 000020
【図１９】
2015082742.tif 000021
【図２０】
2015082742.tif 000022
【図２１】
2015082742.tif 000023