(57)【特許請求の範囲】
【請求項１】
複数の転送装置と制御装置を備えるネットワーク中で動作する転送装置であって、
パケットを受信する受信部と、
前記制御装置から通知された処理条件に該当しない受信パケットを、前記複数の転送装置のいずれかから受信した場合、前記受信パケットに適用する処理の通知を前記制御装置に要求する要求メッセージを、前記受信パケットの受信から所定の期間が経過するまで送信しないように制御する要求制御部と、
前記所定の期間が経過するまでに、前記受信パケットに適用する処理を表わす情報である処理情報を取得すると、前記受信パケットを前記処理情報に従って処理する処理部
を備えることを特徴とする転送装置。
【請求項２】
複数のポートと
前記複数のポートの各々が前記複数の転送装置のいずれかに接続されているかを示す接続情報を、前記制御装置から受信したパケットから抽出する抽出部
をさらに備え、
前記要求制御部は、前記受信パケットを受信したポートが前記複数の転送装置のいずれかに接続されていることが前記接続情報に含まれている場合、前記受信パケットを前記複数の転送装置のいずれかから受信したと判定する
ことを特徴とする請求項１に記載の転送装置。
【請求項３】
前記要求制御部は、
前記受信パケットを前記複数の転送装置のいずれかから受信したことにより、前記受信パケットに適用される前記処理情報は、前記制御装置から送信されていると判定し、
前記制御装置との間の通信にかかる時間を用いて決定された前記所定の期間を、前記制御装置から送信された前記処理情報を待ち合わせる期間に設定する
ことを特徴とする請求項１または２に記載の転送装置。
【請求項４】
前記要求制御部は、前記所定の期間が経過するまでに、前記処理情報を取得しない場合、前記制御装置に前記処理情報を要求する要求メッセージを送信する
ことを特徴とする請求項１〜３のいずれか１項に記載の転送装置。
【請求項５】
前記要求制御部は、前記複数の転送装置のいずれかに接続されていないポートから受信した前記処理条件に該当しないパケットである対象パケットについて、処理の内容の通知を要求する他の要求メッセージを前記制御装置に送信し、
前記処理部は、前記他の要求メッセージに応答して前記制御装置から通知された情報を、前記対象パケットに対する処理として使用する
ことを特徴とする請求項１〜４のいずれか１項に記載の転送装置。
【請求項６】
制御装置が複数の転送装置でのパケットの処理を決定するネットワークで行われる通信方法であって、
前記制御装置は、第１の転送装置に、前記第１の転送装置中で第２の転送装置に接続されているポートを通知し、
前記第１の転送装置は、
前記ポートを介して前記第２の転送装置から受信した受信パケットに適用する処理を表わす情報を保持していない場合、前記受信パケットに適用する処理の通知を前記制御装置に要求する要求メッセージを、前記受信パケットの受信から所定の期間が経過するまで送信しないように制御し、
前記所定の期間が経過するまでに、前記受信パケットに適用する処理を表わす処理情報を取得すると、前記受信パケットを前記処理情報に従って処理する
ことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送装置と制御装置を含むネットワーク中での通信に関する。
【背景技術】
【０００２】
近年、ソフトウェアを用いた仮想的なネットワークや、仮想的なネットワークの形成に用いられる技術であるSoftware Defined Networking（ＳＤＮ）が注目されてきている。また、仮想的なネットワークを形成するためにＯｐｅｎｆｌｏｗ等のプロトコルも注目されてきている（例えば、非特許文献１など）。ＳＤＮでは、コントローラと呼ばれる制御装置がネットワーク中に含まれている装置を管理する。
【０００３】
図１は、ネットワークの制御処理の例を示す図である。図１中のネットワークは、１台のコントローラ(OpenFlow controller)５と、コントローラ５が管理する４台のスイッチ(OpenFlow Switch)ＳＷ１〜ＳＷ４を含む。また、通信装置２ａがスイッチＳＷ１、通信装置２ｂがスイッチＳＷ４に接続されている。図１中のネットワークでは、Ｏｐｅｎｆｌｏｗプロトコルが用いられているものとする。以下、通信装置２ａが通信装置２ｂにパケットＰ１を送信したが、通信装置２ａと通信装置２ｂとの間の通信に関する処理がスイッチＳＷ１〜ＳＷ４のいずれにも設定されていないとする。
【０００４】
矢印Ａ１において、通信装置２ａから送信されたパケットＰ１は、スイッチＳＷ１に到達する。スイッチＳＷ１は、パケットＰ１を含む制御メッセージをコントローラ５に送信することにより、パケットＰ１の処理をコントローラ５に問合わせる（矢印Ａ２）。コントローラ５は、ネットワークのトポロジーを用いて、パケットＰ１の転送経路を決定し、パケットＰ１を転送するスイッチＳＷ１〜ＳＷ３に、通信装置２ａから通信装置２ｂに宛てたパケットの出力ポートを通知する（矢印Ａ３）。スイッチＳＷ４はパケットＰ１の宛先である通信装置２ｂに接続しているので、コントローラ５は、スイッチＳＷ４に出力ポートを通知する際に、出力対象となるパケットＰ１もスイッチＳＷ４に転送する（矢印Ａ４）。スイッチＳＷ１〜ＳＷ４はコントローラ５から通知された情報を記憶する。さらに、スイッチＳＷ４は、コントローラ５から指定された出力ポートからパケットＰ１を出力することにより、パケットＰ１を通信装置２ｂに送信する（矢印Ａ５）。次に、通信装置２ａが通信装置２ｂ宛のパケットＰ２を送信すると、ＳＷ１〜ＳＷ４は、矢印Ａ３、Ａ４で通知された情報を用いて、パケットＰ２を転送する。このため、パケットＰ２は、スイッチＳＷ１〜ＳＷ４を介して通信装置２ｂに転送される（矢印Ａ６）。
【０００５】
このように、コントローラ５に管理されているスイッチは、コントローラ５から取得した情報を用いてパケットを処理し、処理対象が通知されていないパケットについてはコントローラ５に処理を問合わせる。一方、コントローラ５は、問い合わせの対象となっているパケットを処理するスイッチに、そのパケットに関する処理の内容を通知する。
【０００６】
ネットワークの管理に関連する技術として、ネットワークに含まれている機器の接続関係を特定するために、ＬＬＤＰ（Link Layer Discovery Protocol）などの技術が使用されることもある（例えば、非特許文献２など）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“OpenFlow Switch Specification Version 1.32”、[online]、2013年4月25日、Open Networking Foundation、［平成２６年７月１６日検索］、インターネット、<https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.2.pdf>
【非特許文献２】IEEE Std 802.1AB, IEEE Standard for Local and Metropolitan Area Networks: Station and Media Access Control Connectivity Discovery, [online]、2009年9月11日、IEEE Computer Society、［平成２６年８月４日検索］、インターネット<URL: http://standards.ieee.org/getieee802/download/802.1AB-2009.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
コントローラ（制御装置）は、処理方法の問合せの対象となっているパケットを処理する全てのスイッチに、処理方法を特定するための情報を通知する。しかし、ネットワーク中の輻輳などにより、コントローラと一部のスイッチの間の通信に時間がかかると、一部のスイッチは、コントローラからの情報よりも処理対象のパケットを先に受信することがある。この場合、スイッチは、受信したパケットの処理をコントローラに問合せるため、コントローラは、同じパケットについて再度、転送経路の計算やスイッチへの設定処理を行ってしまい、コントローラの処理負荷が高くなる。なお、背景技術で述べたＯｐｅｎｆｌｏｗ以外のプロトコルが使用される場合でも、コントロールプレーンとデータプレーンが分離されたネットワークでは同様の問題が発生しうる。
【０００９】
本発明は、１つの側面では、制御装置の処理負荷を低減することを目的とする。
【課題を解決するための手段】
【００１０】
ある１つの態様にかかる転送装置は、複数の転送装置と制御装置を備えるネットワーク中で動作し、受信部、要求制御部、処理部を備える。受信部は、パケットを受信する。要求制御部は、制御装置から通知された処理条件に該当しない受信パケットを、複数の転送装置のいずれかから受信した場合、受信パケットの受信から所定の期間が経過するまで、要求メッセージを送信しないように制御する。要求メッセージは、受信パケットに適用する処理の通知を制御装置に要求するメッセージである。処理部は、所定の期間が経過するまでに、受信パケットに適用する処理を表わす情報である処理情報を取得すると、受信パケットを処理情報に従って処理する。
【発明の効果】
【００１１】
制御装置の処理負荷が低減される。
【図面の簡単な説明】
【００１２】
【図１】ネットワークの制御処理の例を示す図である。
【図２】実施形態にかかる転送装置が行う処理の例を説明するフローチャートである。
【図３】制御装置の構成の例を示す図である。
【図４】転送装置の構成の例を示す図である。
【図５】転送装置および制御装置のハードウェア構成の例を示す図である。
【図６】ネットワークの例を示す図である。
【図７】フローテーブルの例を示す図である。
【図８】トポロジーを特定するために制御装置が送信する制御メッセージの例を示す図である。
【図９】転送装置から制御装置に送信される制御メッセージの例を示す図である。
【図１０】トポロジーテーブルの例を示す図である。
【図１１】ポート属性設定メッセージの例を示す図である。
【図１２】ポート情報テーブルの例を示す図である。
【図１３】第１の実施形態で行われる制御の例を説明する図である。
【図１４】フローテーブルの例を示す図である。
【図１５】第１の実施形態で行われる制御の例を説明する図である。
【図１６】フローテーブルの例を示す図である。
【図１７】転送装置が行う処理の例を説明するフローチャートである。
【図１８】転送装置が行う処理の例を説明するフローチャートである。
【図１９】第２の実施形態で行われる制御の例を説明する図である。
【発明を実施するための形態】
【００１３】
図２は、実施形態にかかる転送装置がパケットを受信したときに行う処理の例を示す。なお、転送装置は、ＳＤＮでのスイッチとして動作でき、制御装置から得た情報に従ってパケットを処理する。転送装置は、Ｏｐｅｎｆｌｏｗなどの、ＳＤＮを実現するための任意のプロトコルにより制御されうる。
【００１４】
転送装置は、パケットを受信するまで待機する（ステップＳ１でＮｏ）。パケットを受信すると、転送装置は、すでに制御装置から通知されている情報により、受信パケットに適用する処理を特定できるかを判定する（ステップＳ１でＹｅｓ、ステップＳ２）。受信パケットに適用する処理を特定できない場合、転送装置は、受信パケットの転送元が他の転送装置であるかを判定する（ステップＳ２でＮｏ、ステップＳ３）。受信パケットの転送元が他の転送装置である場合、転送装置は、他の転送装置が受信パケットに対する処理を認識していることから、制御装置が受信パケットに対する処理を既に１回は行っていると判定する（ステップＳ３でＹｅｓ）。また、制御装置は、処理対象のパケットを処理する全ての転送装置に、そのパケットに対する処理を通知していることが予想される。従って、転送装置は、今後、受信パケットに対する処理が制御装置から通知される可能性があると判定し、制御装置への問い合わせを行わずに、所定期間が経過するまで待機する（ステップＳ４）。その後、転送装置は、待機している期間中に、受信パケットに対する処理を示す情報を取得できたかを判定する（ステップＳ４でＹｅｓ、ステップＳ５）。待機している期間中に、受信パケットに対する処理を示す情報を取得した場合、転送装置は、取得した情報を受信パケットに適用することにより、受信パケットを処理する（ステップＳ５でＹｅｓ、ステップＳ６）。
【００１５】
一方、待機している期間中に、受信パケットに対する処理を示す情報を取得していない場合、転送装置は、受信パケットに適用する処理を制御装置に問合わせる（ステップＳ５でＮｏ、ステップＳ７）。
【００１６】
なお、ステップＳ３において、受信パケットを他の転送装置から受信していないと判定した場合、転送装置は、受信パケットに対する処理がいずれの装置からも制御装置に問合わせられてないと判定する。この場合、転送装置は、受信パケットに適用する処理を制御装置に問合わせる（ステップＳ７）。また、ステップＳ２において、転送装置が記憶している情報を用いて、受信パケットに適用する処理が特定されると、転送装置は、受信パケットに特定した処理を適用する（ステップＳ８）。
【００１７】
このように、実施形態にかかる転送装置は、処理内容が通知されていないパケットを他の転送装置から受信した場合、制御装置からの通知を受信する可能性があるため、所定の期間が経過するまでは、制御装置に受信パケットの処理を問合わせない。さらに、受信パケットに対する処理の通知を、待機期間中に取得できれば、転送装置は、制御装置に対する問い合わせを行わずに、受信パケットを処理する。このため、制御装置と転送装置との間の通信経路の輻輳が発生しても、制御装置は、既に経路の計算等を行っているパケットについて、重複して処理を要求される可能性が低い。従って、制御装置の処理負荷が軽減される。
【００１８】
さらに、実施形態にかかる方法では、転送装置が制御装置に処理内容を問合わせないことにより、送受信されるパケット数を削減するので、ネットワーク中の輻輳の悪化も防止できる。つまり、制御装置から転送装置への処理内容の通知の伝送遅延が大きい場合は、ネットワーク中で輻輳が発生しているので、転送装置が制御装置に処理内容を通知する要求を送信すると、ネットワーク中の輻輳を悪化させる恐れがある。また、制御装置は、決定した処理内容を配下の転送装置に通知するための通信を行うので、制御装置からの応答もネットワーク中の輻輳を悪化させる原因となり得る。従って、実施形態にかかる転送装置は、処理内容を含むパケットの受信を待ち合わせ、待機中に受信した情報を用いて処理を行うことにより、ネットワーク中の輻輳を悪化させない。
【００１９】
なお、図２では、理解しやすくするために、ステップＳ４、Ｓ５に示すように、所定期間の待機が終わるまで転送装置での処理が行われない場合を例として示したが、転送装置は、処理を示す情報を受信した時点で待機を中断することもできる。
【００２０】
＜装置構成＞
図３は、制御装置１０の構成の例を示す図である。制御装置１０はＳＤＮでのコントローラとして動作でき、パケットの処理内容の決定やパケットの処理内容の通知を行うものとする。制御装置１０は、通信部１１、制御部２０、記憶部３０を備える。通信部１１は、送信部１２と受信部１３を有する。制御部２０は、トポロジー検出部２１、ポート属性通知部２２、処理ルール決定部２３を有する。記憶部３０は、トポロジーテーブル３１などの情報を記憶する。送信部１２は、ネットワーク中の転送装置に制御メッセージを送信する。受信部１３は、ネットワーク中の転送装置から、パケットの処理の通知を要求する要求メッセージを受信する。
【００２１】
トポロジー検出部２１は、転送装置にＬＬＤＰパケットを送信させるための制御メッセージを、送信部１２を介して送信する。また、トポロジー検出部２１は、受信部１３を介して取得した制御メッセージを用いて、ネットワーク中のトポロジーを特定する。トポロジー検出部２１は、特定したトポロジーを、トポロジーテーブル３１として記憶部３０に格納する。ポート属性通知部２２は、トポロジーテーブル３１を用いて、転送装置の各ポートが他の転送装置に接続されているか（ポート属性）を特定すると共に、特定した結果を転送装置に通知する。
【００２２】
処理ルール決定部２３は、トポロジーテーブル３１などを用いて、転送装置から受信した要求メッセージで問い合わせが行われているパケットについての処理内容を決定する。以下、パケットの処理内容のことを「処理ルール」と記載することがある。「処理ルール」は、パケットの処理方法を表わす任意のデータである。例えば、処理ルールは、パケットの宛先Media Access Control（ＭＡＣ）アドレスに、そのパケットを転送装置が転送するときに使用する出力ポートの番号を対応付けた情報であっても良い。
【００２３】
図４は、転送装置４０の構成の例を示す図である。転送装置４０は、通信部４１、制御部５０、記憶部６０を備え、さらに、任意の数のポートを備える。なお、図４では、一例として、ポートＰｏ１とＰｏ２を備える転送装置４０を図示している。通信部４１は、送信部４２と受信部４３を有する。制御部５０は、抽出部５１、要求制御部５２、検索部５３、振り分け部５４、処理部５５を有する。記憶部６０は、フローテーブル６１、ポート情報テーブル６２などの情報を記憶し、パケット保持部６３を有する。
【００２４】
送信部４２は、他の転送装置や通信装置２にパケットを送信し、さらに、制御装置１０に制御メッセージを送信する。受信部４３は、他の転送装置や通信装置２からパケットを受信し、さらに、制御装置１０から制御メッセージを受信する。受信部４３は、受信したパケットや制御メッセージを振り分け部５４に出力する。振り分け部５４は、パケットや制御メッセージを、種類に応じて振り分ける。
【００２５】
抽出部５１は、制御装置１０から受信した制御メッセージから各ポートが他の転送装置に接続しているかを示す情報を取得し、ポート情報テーブル６２に記録する。要求制御部５２は、処理ルールがフローテーブル６１に含まれていないパケットについての処理ルールを要求するための要求メッセージの生成など、処理ルールを取得するための処理を行う。なお、要求制御部５２は、要求メッセージを生成するかを判定するために、適宜、ポート情報テーブル６２を用いることができるものとする。検索部５３は、制御装置１０以外から受信したパケットに適用する処理ルールをフローテーブル６１から検索する。処理部５５は、検索部５３で特定された処理ルールを用いて、パケットを処理する。
【００２６】
フローテーブル６１は、転送装置４０に転送されてくるパケットの処理ルールを記録する。パケット保持部６３は、処理ルールが検索部５３によって特定されなかったパケットのうち、他の転送装置から受信したパケットを、所定の待機期間以下の時間、保持する。
【００２７】
図５は、制御装置１０および転送装置４０のハードウェア構成の例を示す。制御装置１０および転送装置４０のいずれも、プロセッサ１０１、メモリ１０２、バス１０３、ネットワーク接続装置１０４を備える。バス１０３は、プロセッサ１０１、メモリ１０２、ネットワーク接続装置１０４を、相互にデータの送受信が可能になるように接続する。ネットワーク接続装置１０４は、ネットワーク１０５との通信を行う。
【００２８】
制御装置１０では、プロセッサ１０１は、制御部２０として動作し、メモリ１０２は、記憶部３０として動作する。ネットワーク接続装置１０４は、通信部１１を実現する。転送装置４０では、プロセッサ１０１は、制御部５０を実現する。メモリ１０２は、記憶部６０として動作する。ネットワーク接続装置１０４は、ポートを含み、通信部４１として動作する。
【００２９】
＜第１の実施形態＞
以下、第１の実施形態を、制御装置１０でのネットワークトポロジーの特定、転送装置４０でのポート情報テーブル６２の更新、制御装置１０から通知された処理ルールを用いたパケットの処理に分けて説明する。なお、以下の説明では、処理を行っている装置を区別し易くするために、符号の後に動作を行っている転送装置４０に割り当てられたアルファベットを記載することがある。例えば、要求制御部５２ａは、転送装置４０ａに含まれている要求制御部５２のことを示す。なお、いずれの転送装置４０でも、振り分け部５４は、制御装置１０以外から受信したパケットを検索部５３に出力するものとする。また、処理ルールを含む制御メッセージは要求制御部５２、ポートの属性を通知する制御メッセージは抽出部５１、その他の制御メッセージは処理部５５に出力されるものとする。
【００３０】
（１）制御装置１０でのネットワークトポロジーの特定
図６は、ネットワークの例を示す図である。図６に示すネットワークは、制御装置１０、転送装置４０ａ〜４０ｄ、通信装置２ａ、２ｂが含まれる。ここで、転送装置４０ａ〜４０ｄは、いずれも、制御装置１０に管理されているものとする。また、制御装置１０と転送装置４０ｃとの間の通信経路には、輻輳箇所７が含まれているものとする。図６では、各転送装置４０のポートのポート番号をポートの近傍に示している。
【００３１】
制御装置１０と転送装置４０が接続されると、制御装置１０の処理ルール決定部２３は、トポロジーの検出に使用するパケットを制御装置１０に送信することを表わす処理ルールを含む制御メッセージを、接続先の転送装置４０に送信する。例えば、転送装置４０ｂの要求制御部５２ｂは、受信部４３ｂと振り分け部５４ｂを介して制御メッセージを取得すると、制御メッセージで通知された処理ルールをフローテーブル６１ｂに記録する。
【００３２】
図７は、フローテーブル６１ｂの例を示す。フローテーブル６１には、任意の数の処理ルールが、処理ルールごとに、ｍａｔｃｈ条件とａｃｔｉｏｎの組み合わせとして記録されている。ここで、ｍａｔｃｈ条件は、転送装置４０に入力されるパケットの条件を表わす。一方、ａｃｔｉｏｎは、ｍａｔｃｈ条件を用いて選択されたパケットに対して、処理部５５が行う処理を表わす。従って、ｍａｔｃｈ条件は、処理対象のパケットを選択する条件として制御装置から通知された選択条件であるといえる。
【００３３】
図７に示すフローテーブル６１ｂには、Ｅｔｈｅｒｔｙｐｅ＝８８ＣＣに設定されたパケットを、そのパケットの受信ポート番号を示す情報（受信ポート情報）と共に、制御装置１０に転送することが記録されている。ここで、Ｅｔｈｅｒｔｙｐｅ＝８８ＣＣのパケットは、ＬＬＤＰパケットである。すなわち、フローテーブル６１ｂには、ＬＬＤＰパケットを受信すると、ＬＬＤＰパケットの受信ポート番号とＬＬＤＰパケットを、制御装置１０に送信することが記録されている。このため、例えば、転送装置４０ｂは、ＬＬＤＰパケットを受信すると、Ｐａｃｋｅｔ＿Ｉｎメッセージを用いて、ＬＬＤＰパケットをＬＬＤＰパケットの受信ポートの情報と共に制御装置１０に送信することができる。Ｐａｃｋｅｔ＿Ｉｎメッセージについては後述する（図９）。
【００３４】
転送装置４０ａ、４０ｃ、４０ｄも、転送装置４０ｂと同様の制御メッセージを受信し、制御メッセージ中の処理ルールをフローテーブル６１に記録する。このため、転送装置４０ａ〜４０ｄのいずれでも、制御装置１０と接続を確立した時点でのフローテーブル６１は、図７に示す通りであるものとする。
【００３５】
図８のＰ１１は、トポロジーを特定するために制御装置１０が送信する制御メッセージの例である。制御メッセージは、制御メッセージの宛先の転送装置４０に送信を要求するＬＬＤＰパケットと、ＬＬＤＰパケットの送信ポートの情報を含む。図８の例では、制御メッセージは、ＬＬＤＰパケットを送出することを要求するためのＰａｃｋｅｔ＿Ｏｕｔメッセージである。Ｐａｃｋｅｔ＿Ｏｕｔメッセージには、ＩＰ（Internet Protocol）ヘッダ、ＯｐｅｎＦｌｏｗヘッダ、出力ポート、ＬＬＤＰパケットが含まれる。ＩＰヘッダは、Ｐａｃｋｅｔ＿Ｏｕｔメッセージの送信先の転送装置４０のＩＰアドレスを宛先として含む。ＯｐｅｎＦｌｏｗヘッダ中のメッセージ種別には、制御メッセージがＰａｃｋｅｔ＿Ｏｕｔメッセージであることを示す情報が含まれる。出力ポートは、転送装置４０がＬＬＤＰパケットを送信するときに送信ポートとして使用するポートの番号を示す。
【００３６】
図８のＰ１２は、Ｐ１１に示す制御メッセージに含まれるＬＬＤＰパケットである。ＬＬＤＰパケットには、ＭＡＣ（Media Access Control）ヘッダ、シャーシＩＤ、ポートＩＤが含まれる。ＭＡＣヘッダには、ＬＬＤＰパケットであることを示す情報（ＥｔｈｅｒＴｙｐｅ＝８８ＣＣ）が記録されている。シャーシＩＤは、制御メッセージの宛先の転送装置４０を特定する情報である。ポートＩＤは、制御メッセージの宛先の転送装置４０がＬＬＤＰを送信するときに使用するポートの番号であり、Ｐａｃｋｅｔ＿Ｏｕｔメッセージ中の出力ポートフィールドと同じ値が設定される。例えば、制御装置１０は、転送装置４０ａに対して、以下の情報を含む制御メッセージを送信したとする。
【００３７】
宛先ＩＰアドレス：転送装置４０ａのアドレス
メッセージ種別  ：Ｐａｃｋｅｔ＿Ｏｕｔ
出力ポート情報  ：ポートＢ
ＬＬＤＰパケット中のシャーシＩＤ：転送装置４０ａ
ＬＬＤＰパケット中のポートＩＤ  ：ポートＢ
【００３８】
転送装置４０ａの処理部５５ａは、受信部４３ａと振り分け部５４ａを介して、Ｐａｃｋｅｔ＿Ｏｕｔメッセージを取得する。処理部５５ａは、Ｐａｃｋｅｔ＿Ｏｕｔメッセージに含まれているＬＬＤＰパケットを、出力ポートをポートＢに設定した上で、送信部４２ａに出力する。送信部４２ａは、入力されたＬＬＤＰパケットを、ポートＢから送信する。
【００３９】
図６に示すネットワークにおいて、転送装置４０ａがポートＢからＬＬＤＰパケットを送信すると、ＬＬＤＰパケットは、転送装置４０ｂに送信される。転送装置４０ｂの受信部４３ｂは、ポートＣを介して、シャーシＩＤ＝転送装置４０ａ、ポートＩＤ＝ポートＢに指定されたＬＬＤＰパケットを受信する。振り分け部５４ｂは、ＬＬＤＰパケットを検索部５３ｂに出力する。検索部５３ｂは、入力されたパケットに適用する処理ルールをフローテーブル６１ｂから検索する。ここでは、フローテーブル６１ｂは図７に示すとおりであるので、ＬＬＤＰパケットを、受信ポートを示す情報と共に制御装置１０に通知することが要求されている。そこで、検索部５３ｂは、Ｐａｃｋｅｔ＿Ｉｎメッセージを生成する。
【００４０】
図９は、転送装置から制御装置に送信されるＰａｃｋｅｔ＿Ｉｎメッセージの例を示す。Ｐａｃｋｅｔ＿Ｉｎメッセージには、ＩＰヘッダ、ＯｐｅｎＦｌｏｗヘッダ、パケットの受信ポートの情報、Ｐａｃｋｅｔ＿Ｉｎメッセージの送信元の転送装置４０が受信したパケットが含まれる。ここでは、検索部５３ｂは、ＬＬＤＰパケットを、Ｐａｃｋｅｔ＿Ｉｎメッセージ中に受信パケットとして含める。なお、ＬＬＤＰパケット中の情報は変更されずにＰａｃｋｅｔ＿Ｉｎメッセージに含められる。従って、検索部５３ｂが生成したＰａｃｋｅｔ＿Ｉｎメッセージには、以下の情報が含まれる。
【００４１】
送信元ＩＰアドレス：転送装置４０ｂのアドレス
宛先ＩＰアドレス  ：制御装置１０のアドレス
メッセージ種別    ：Ｐａｃｋｅｔ＿Ｉｎ
受信ポート情報    ：ポートＣ
ＬＬＤＰパケット中のシャーシＩＤ：転送装置４０ａ
ＬＬＤＰパケット中のポートＩＤ  ：ポートＢ
【００４２】
制御装置１０のトポロジー検出部２１は、ＬＬＤＰパケットを含むＰａｃｋｅｔ＿Ｉｎメッセージの送信元が、ＬＬＤＰパケットを受信した転送装置４０であると判定する。さらに、トポロジー検出部２１は、Ｐａｃｋｅｔ＿Ｉｎメッセージ中の受信ポート情報フィールドからＬＬＤＰパケットが受信されたポートを識別する。このため、トポロジー検出部２１は、転送装置４０ｂのポートＣでＬＬＤＰパケットが受信されたことを特定する。また、ＬＬＤＰパケットは、シャーシＩＤで特定される装置から、ポートＩＤにより特定されるポートを介して送信されている。この例では、ＬＬＤＰパケットは、転送装置４０ａのポートＢから送信されている。
【００４３】
すなわち、トポロジー検出部２１は、Ｐａｃｋｅｔ＿Ｉｎメッセージの送信元の装置の受信ポート情報フィールドの値で特定されるポートは、メッセージ中のＬＬＤＰパケット中で特定される装置のポートに接続されていると判定できる。トポロジー検出部２１は、得られた情報を、トポロジーテーブル３１に記録する。
【００４４】
図１０は、トポロジーテーブルの例を示す。図７〜図９を参照しながら説明した例によって得られた情報は、図１０の２番目のエントリに示すように記録される。トポロジー検出部２１は、各転送装置４０のポートについて、同様の処理により、接続先の装置と接続先のポート番号を取得する。このため、転送装置のポートであり、かつ、他の転送装置に接続されているポートから送信されたＬＬＤＰパケットを用いて、トポロジー検出部２１は、ポート間の接続関係を取得できる。
【００４５】
ここで、転送装置のポートのうち、他の転送装置に接続されていないポートからＬＬＤＰパケットが送信されることもある。制御装置１０は、転送装置以外には、処理ルールを通知しないので、この場合、ＬＬＤＰパケットの転送先は、制御装置１０にＬＬＤＰパケットを含む制御メッセージを送信しない。従って、Ｐａｃｋｅｔ＿Ｏｕｔメッセージを送信してから所定の時間内に、Ｐａｃｋｅｔ＿Ｉｎメッセージを受信しない場合、トポロジー検出部２１は、ＬＬＤＰパケットの送信先に指定したポートが転送装置に接続されていないと判定する。例えば、制御装置１０が転送装置４０ａに対して、以下の情報を含む制御メッセージを送信したとする。
【００４６】
宛先ＩＰアドレス：転送装置４０ａのアドレス
メッセージ種別  ：Ｐａｃｋｅｔ＿Ｏｕｔ
出力ポート情報  ：ポートＡ
ＬＬＤＰパケット中のシャーシＩＤ：転送装置４０ａ
ＬＬＤＰパケット中のポートＩＤ  ：ポートＡ
【００４７】
図６に示すように、転送装置４０ａのポートＡは通信装置２ａに接続されている。また、制御装置１０は、通信装置２ａとの間で制御メッセージを送受信しない。このため、トポロジー検出部２１は、シャーシＩＤ＝転送装置４０ａかつポートＩＤ＝ポートＡに対応するＬＬＤＰを含むＰａｃｋｅｔ＿Ｉｎメッセージを受信しない。そこで、トポロジー検出部２１は、転送装置４０ａのポートＡに接続されている装置が転送装置４０ではないと判定して、転送装置４０ａのポートＡの接続先が不明であることをトポロジーテーブル３１に記録する。以上の処理により、図６に示すネットワークでは、トポロジー検出部２１は、図１０に示すトポロジーテーブル３１を得ることができる。
【００４８】
（２）転送装置４０でのポート情報テーブル６２の更新
トポロジーテーブル３１の生成が終わると、ポート属性通知部２２は、接続を確立している転送装置４０に、その転送装置４０が備えるポートの接続先が他の転送装置であるかを通知する。
【００４９】
図１１は、ポート属性設定メッセージの例である。ポート属性設定メッセージには、ＩＰヘッダ、ＯｐｅｎＦｌｏｗヘッダ、ポート番号フィールド、ポート属性フィールドが含まれる。ＩＰヘッダ中の宛先ＩＰアドレスとして、通知対象のポートを含む転送装置４０のアドレスが設定される。ＯｐｅｎＦｌｏｗヘッダには、メッセージ種別がポート属性設定メッセージであることを示す情報が含められる。ポート番号フィールドは、接続先が他の転送装置４０であるかが通知されるポートの情報を格納する。ポート属性フィールドは、ポート場号フィールドの値で識別されるポートが、転送装置４０に接続されているかを示す値が格納される。
【００５０】
例えば、ポート属性通知部２２は、転送装置４０ａにポートＢの属性を通知する場合、図１０の２番目のエントリより、ポートＢが転送装置４０ｂのポートＣに接続されていることを特定する。そこで、ポート属性通知部２２は、以下の情報を含むポート属性設定メッセージを生成する。
【００５１】
宛先ＩＰアドレス：転送装置４０ａ
メッセージ種別  ：ポート属性設定メッセージ
ポート番号      ：ポートＢ
ポート属性      ：転送装置に接続
【００５２】
一方、転送装置４０ａにポートＡの属性を通知する場合、ポート属性通知部２２は、図１０の１番目のエントリより、ポートＡの接続先が不明であることを特定する。そこで、ポート属性通知部２２は、以下の情報を含むポート属性設定メッセージを生成する。
【００５３】
宛先ＩＰアドレス：転送装置４０ａ
メッセージ種別  ：ポート属性設定メッセージ
ポート番号      ：ポートＡ
ポート属性      ：接続先は不明
【００５４】
ポート属性通知部２２は、ポート属性設定メッセージを生成すると、送信部１２を介して、宛先の転送装置４０に送信する。
【００５５】
転送装置４０ａの抽出部５１ａは、受信部４３ａと振り分け部５４ａを介して、ポート属性設定メッセージを取得すると、ポート属性フィールドの情報とポート番号を抽出する。抽出部５１ａは、ポート属性フィールドで指定された接続先を、ポート番号に対応付けて、ポート情報テーブル６２ａに記録する。
【００５６】
図１２は、ポート情報テーブル６２の例を示す。抽出部５１ａにより、ポートＡの接続先は不明であることと、ポートＢが他の転送装置に接続されていることとが、ポート情報テーブル６２ａに記録されている。
【００５７】
制御装置１０は、転送装置４０ａへの通知と同様に、他の転送装置４０に対しても、各ポートの接続先を、ポート属性設定メッセージを用いて通知する。また、転送装置４０ｂ〜４０ｄでは、図１１と図１２を参照しながら説明した転送装置４０ａでの処理と同様の処理が行われる。このため、転送装置４０ｂは図１２のポート情報テーブル６２ｂを保持し、転送装置４０ｃはポート情報テーブル６２ｃを保持する。さらに、転送装置４０ｄでは、図１２のポート情報テーブル６２ｄが生成される。
【００５８】
（３）制御装置１０から通知された処理ルールを用いたパケットの処理
図１３は、第１の実施形態で行われる制御の例を説明する図である。以下、転送装置４０ａ〜４０ｄが保持しているポート情報テーブル６２が図１２に示すとおりであり、かつ、いずれの転送装置４０でもフローテーブル６１が図７に示すとおりである場合に行われる処理を説明する。なお、図１３では、転送装置４０中のポートを、ポート番号を含む四角形で表わしている。
【００５９】
矢印Ａ１１において、通信装置２ａが通信装置２ｂ宛のパケットＰ２１を送信したとする。パケットＰ２１は、転送装置４０ａにおいて、ポートＡを介して受信される。なお、パケットＰ２１は、ＬＬＤＰパケットではないものとする。
【００６０】
転送装置４０ａの検索部５３ａは、受信部４３ａと振り分け部５４ａを介して、受信ポートがポートＡであることを示す情報とともに、パケットＰ２１を取得する。検索部５３ａは、パケットＰ２１に適用可能な処理ルールがフローテーブル６１ａに含まれていないことを特定する。検索部５３ａは、パケットＰ２１を、受信ポートがポートＡであることを示す情報と共に、要求制御部５２ａに出力する。要求制御部５２ａは、検索部５３ａからパケットを入力されると、処理ルールを適用できないパケットが検出されたと判定する。要求制御部５２ａは、受信ポート番号をキーとしてポート情報テーブル６２ａを検索することにより、受信パケットが他の転送装置から転送されてきたかを判定する。ポート情報テーブル６２ａ（図１２）に示すように、ポートＡは転送装置に接続されていないので、要求制御部５２ａは、パケットＰ２１に適用する処理ルールを制御装置１０に問合わせることを決定する。要求制御部５２ａは、パケットＰ２１を含むＰａｃｋｅｔ＿Ｉｎメッセージを生成し、送信部４２ａを介して、制御装置１０に送信する（矢印Ａ１２）。なお、Ｐａｃｋｅｔ＿Ｉｎメッセージのフォーマットは、図９に示すとおりである。
【００６１】
制御装置１０の処理ルール決定部２３は、受信部１３を介してＰａｃｋｅｔ＿Ｉｎメッセージを受信すると、ネットワークのトポロジー情報（図６、図１０）を用いて、パケットＰ２１に対する処理を決定する。処理ルール決定部２３は、パケットＰ２１を転送装置４０ａ、転送装置４０ｂ、転送装置４０ｃ、転送装置４０ｄ、通信装置２ｂの順に転送することを決定したとする。
【００６２】
次に、制御装置１０の処理ルール決定部２３は、転送装置４０ａ〜４０ｄの各々に宛てた処理ルール通知メッセージを生成する。ここで、処理ルール通知メッセージとして、例えば、ＯｐｅｎｆｌｏｗプロトコルのＦｌｏｗ＿Ｍｏｄメッセージが適用され得る。処理ルール通知メッセージには、通信装置２ａから通信装置２ｂに宛てたパケットを特定する条件（ｍａｔｃｈ条件）と、処理ルール通知メッセージの宛先の転送装置４０での、ｍａｔｃｈ条件に当てはまるパケットの出力ポート番号が含められる。例えば、転送装置４０ａには、通信装置２ａから通信装置２ｂに宛てたパケットをポートＢから出力することが、処理ルール通知メッセージによって通知される。
【００６３】
矢印Ａ１３に示すように、処理ルール決定部２３は、生成した処理ルール通知メッセージを、送信部１２を介して送信する。転送装置４０ａ、４０ｂ、４０ｄにおいては、制御装置１０との間の伝送遅延が小さいため、処理ルール通知メッセージが送信されてから比較的短時間で宛先に到達したとする。一方、図６に示すように、転送装置４０ｃと制御装置１０との間の通信経路には、輻輳箇所７が含まれているので、転送装置４０ｃは、制御装置１０から送信された処理ルール通知メッセージを受信するまでに時間がかかるものとする。
【００６４】
図１４は、フローテーブル６１の例を示す図である。図１４は、転送装置４０ａ、４０ｂ、４０ｄが処理ルール通知メッセージを受信し、転送装置４０ｃが処理ルール通知メッセージを受信していない時点での、各転送装置４０が保持しているフローテーブル６１の例である。以下、フローテーブル６１の更新の際に行われる処理について説明する。
【００６５】
転送装置４０ａ宛の処理ルール通知メッセージに、送信元ＭＡＣアドレスが通信装置２ａのアドレス、かつ、宛先ＭＡＣアドレスが通信装置２ｂのアドレスであるパケットを、ポートＢから出力することが記録されているとする。転送装置４０ａの要求制御部５２ａは、受信部４３ａと振り分け部５４ａを介して処理ルール通知メッセージを取得する。そこで、要求制御部５２ａは、送信元ＭＡＣアドレスが通信装置２ａのアドレスであり、かつ、宛先ＭＡＣアドレスが通信装置２ｂのアドレスであるというｍａｔｃｈ条件に、ポートＢへ出力するというａｃｔｉｏｎを対応付けて、フローテーブルに追加する。このため、要求制御部５２ａは、フローテーブル６１ａ（図７）を、フローテーブル６１ａ−１（図１４）に更新する。
【００６６】
同様に、転送装置４０ｂ宛ての処理ルール通知メッセージに以下の情報が含まれているとする。
【００６７】
Ｍａｔｃｈ条件
送信元ＭＡＣアドレス：通信装置２ａ
宛先ＭＡＣアドレス  ：通信装置２ｂ
ａｃｔｉｏｎ          ：ポートＤに出力
【００６８】
転送装置４０ｂにおいても転送装置４０ａと同様に、処理ルール通知メッセージが処理される。このため、要求制御部５２ｂは、フローテーブル６１ｂ（図７）を、フローテーブル６１ｂ−１（図１４）に更新する。
【００６９】
さらに、転送装置４０ｄ宛ての処理ルール通知メッセージに以下の情報が含まれていると、要求制御部５２ｄは、フローテーブル６１（図７）を、フローテーブル６１ｄ−１（図１４）に更新する。
【００７０】
Ｍａｔｃｈ条件
送信元ＭＡＣアドレス：通信装置２ａ
宛先ＭＡＣアドレス  ：通信装置２ｂ
ａｃｔｉｏｎ          ：ポートＨに出力
【００７１】
一方、転送装置４０ｃでは、制御装置１０から送信された処理ルール通知メッセージを受信していないので、フローテーブル６１は更新されない。このため、図１４に示すフローテーブル６１ｃ−１中のデータは、図７に示すフローテーブル６１と同じである。
【００７２】
さらに、制御装置１０の処理ルール決定部２３は、パケットＰ２１を通信装置２ｂに向けて転送するために、パケットＰ２１を転送装置４０ｄに転送する。このとき、処理ルール決定部２３は、転送装置４０ｄに対して、パケットＰ２１をポートＨから出力することを要求する（矢印Ａ１４）。なお、矢印Ａ１４で送信される制御メッセージとして、例えば、図８のＰ１１に示すＰａｃｋｅｔ＿Ｏｕｔメッセージが使用され得る。
【００７３】
矢印Ａ１４の処理により、転送装置４０ｄは、パケットＰ２１を含む制御メッセージを受信すると、制御メッセージに従って、パケットＰ２１をポートＨから出力する（矢印Ａ１５）。このため、パケットＰ２１は、通信装置２ｂに転送される。
【００７４】
次に、矢印Ａ１６に示すように、通信装置２ａが通信装置２ｂ宛のパケットＰ２２を送信したとする。転送装置４０ａは、パケットＰ２２を受信する。この時点では、図１４を参照しながら説明したとおり、転送装置４０ａはフローテーブル６１ａ−１を保持している。そこで、検索部５３ａは、パケットＰ２２のＭＡＣヘッダの情報と、フローテーブル６１ａ−１を用いて、パケットＰ２２をポートＢから出力することを決定する。処理部５５ａは、パケットＰ２２を、送信部４２ａを介して送信する（矢印Ａ１７）。
【００７５】
矢印Ａ１７の処理により、転送装置４０ｂは、パケットＰ２２を受信する。転送装置４０ｂで行われる処理手順は、転送装置４０ａでのパケットＰ２２の転送の際の処理と同様である。このため、フローテーブル６１ｂ−１に基づいて、パケットＰ２２は、転送装置４０ｃに転送される（矢印Ａ１８）。
【００７６】
転送装置４０ｃの振り分け部５４ｃは、受信ポートがポートＥであることを示す情報とともに、パケットＰ２２を検索部５３ｃに出力する。検索部５３ｃは、パケットＰ２２に適用可能な処理ルールがフローテーブル６１ｃ−１に含まれていないことを特定する。検索部５３ｃは、パケットＰ２２を受信ポートがポートＥであることを示す情報と共に、要求制御部５２ｃに出力する。要求制御部５２ｃは、受信ポート番号をキーとしてポート情報テーブル６２ｃ（図１２）を検索することにより、受信パケットが他の転送装置から転送されてきたと判定する。他の転送装置が転送装置４０ｃにパケットを転送したことは、転送元の転送装置は、そのパケットに対する処理ルールを制御装置１０から取得したことを意味する。また、制御装置１０は、１つのパケットが複数の転送装置４０で処理される場合は、処理を行う全ての転送装置に処理ルールを通知している。従って、要求制御部５２ｃは、パケットＰ２２に適用する処理ルールが制御装置１０から送信されたが転送装置４０ｃに到達していない可能性があると判定する。要求制御部５２ｃは、パケットＰ２２の受信から所定の期間が過ぎるまでは、制御装置１０への問合わせを行わないことを決定する。要求制御部５２ｃは、パケットＰ２２を、パケット保持部６３ｃに保持させる。
【００７７】
図１５は、図１３を参照しながら説明した処理の後に行われる処理の例を示す。
矢印Ａ２１に示すように、処理ルール通知メッセージが転送装置４０ｃに到達したとする。なお、矢印Ａ２１で転送装置４０ｃに到達する処理ルール通知メッセージは、図１３の矢印Ａ１３で送信されているが、輻輳箇所７を含む経路で転送されたために、伝送遅延が大きかったものとする。転送装置４０ｃ宛ての処理ルール通知メッセージには、送信元ＭＡＣアドレスが通信装置２ａのアドレス、かつ、宛先ＭＡＣアドレスが通信装置２ｂのアドレスであるパケットを、ポートＦから出力することが記録されているとする。転送装置４０ｃの要求制御部５２ｃは、処理ルール通知メッセージを用いて、フローテーブル６１ｃを更新する。
【００７８】
図１６は、フローテーブルの例を示す図である。要求制御部５２ｃの処理により、フローテーブル６１ｃ−１（図１４）は、図１６中のフローテーブル６１ｃ−２に示すように更新される。なお、転送装置４０ａ、４０ｂ、４０ｄは、図１３の矢印Ａ１３で示した処理以降には新たな処理ルール通知メッセージを受信していないので、転送装置４０ａ、４０ｂ、４０ｄではフローテーブル６１は更新されない。
【００７９】
転送装置４０ｃにおいて、要求制御部５２ｃは、フローテーブル６１ｃを更新したことを処理部５５ｃに通知する。処理部５５ｃは、更新後のフローテーブル６１ｃ−２から、パケット保持部６３ｃに格納されているパケットＰ２２に適用する処理ルールを検索する。図１６に示すように、フローテーブル６１ｃ−２の２番目のエントリは、パケットＰ２２に適用できる。そこで、処理部５５ｃは、送信部４２ｃを用いて、パケットＰ２２をポートＦから送信する（図１５の矢印Ａ２２）。
【００８０】
矢印Ａ２２の処理により、パケットＰ２２は、転送装置４０ｄに到達する。転送装置４０ｄの検索部５３ｄは、フローテーブル６１ｄ−１（図１６）を用いてパケットＰ２２を処理する。このため、フローテーブル６１ｄ−１の２番目のエントリに従って、パケットＰ２２はポートＨから送信される（矢印Ａ２３）。転送装置４０ｄがパケットＰ２２をポートＨから送信することにより、パケットＰ２２は、転送装置４０ｄから通信装置２ｂに転送される。
【００８１】
なお、所定の待機期間中にパケット保持部６３に保持されているパケットに適用する処理ルールが取得できない場合、要求制御部５２ｃは、制御装置１０に対して、処理ルールを要求しても良い。また、処理部５５ｃは、フローテーブル６１ｃの変更を要求制御部５２ｃから通知された後でも、パケット保持部６３ｃ中のパケットに適用する処理ルールを取得できない場合、要求制御部５２ｃに対して、処理ルールの取得に失敗したことを通知する。要求制御部５２ｃは、処理部５５ｃから処理ルールの取得に失敗したことを通知されると、待機期間中に処理ルールを取得できるかのモニタを継続する。
【００８２】
このように、転送装置４０ｃでは、処理内容が通知されていないパケットＰ２２を他の転送装置から受信すると、制御装置１０から処理ルールが通知される可能性があると判定する。要求制御部５２ｃは、所定の期間が経過するまでは、制御装置１０に受信パケットの処理を問合わせないので、制御装置１０において同じ条件のパケットについての処理ルールの決定や通知などの処理が重複して行われる可能性は低い。このため、制御装置１０での処理負担が軽減される。さらに、制御装置１０と転送装置４０ｃとの間の通信が行われないことにより、ネットワークの輻輳の悪化が防止される。
【００８３】
図１７は、転送装置４０が行う処理の例を説明するフローチャートである。転送装置４０はパケットを受信するまで待機する（ステップＳ１１でＮｏ）。転送装置４０がパケットを受信すると、検索部５３は、受信したパケットに適用可能な処理ルールを、フローテーブル６１中で検索する（ステップＳ１１でＹｅｓ、ステップＳ１２）。検索部５３は、フローテーブル６１から、受信パケットに適用可能な処理ルールを取得できたかを判定する（ステップＳ１３）。受信パケットに適用可能な処理ルールを取得できた場合、検索部５３は、得られた処理ルールを処理部５５に通知する（ステップＳ１３でＹｅｓ）。処理部５５は、得られた処理ルールに従って受信パケットを処理する（ステップＳ１４）。一方、受信パケットに適用可能な処理ルールを取得できない場合、検索部５３は、受信パケットを、受信ポートの情報とともに、要求制御部５２に出力する（ステップＳ１３でＮｏ）。要求制御部５２は、通知された受信ポートが他の転送装置４０に接続されているかを、ポート情報テーブル６２を用いて判定する（ステップＳ１５）。
【００８４】
パケットの受信ポートが他の転送装置４０に接続されている場合、要求制御部５２は、受信パケットをパケット保持部６３に保持し、待機期間として適用する時間をタイマーに設定した上で、タイマーを開始させる（ステップＳ１５でＹｅｓ、ステップＳ１６）。ここで、タイマーの設定値は、制御装置１０と転送装置４０の間の通信で発生する転送遅延の長さから決定される値である。例えば、タイマーの設定値として、転送遅延の平均値や、制御装置１０と転送装置４０の間の通信にかかった時間の最大長などが使用され得る。なお、図１７、図１８の例では、タイマーは、設定された値からカウントダウンを行うことによって、転送装置４０の待機時間が満了しているかを示すものとする。
【００８５】
一方、パケットの受信ポートが他の転送装置４０に接続されていない場合、要求制御部５２は、受信パケットに適用する処理ルールを要求するための要求メッセージを制御装置１０に送信する（ステップＳ１５でＮｏ、ステップＳ１７）。
【００８６】
図１８は、転送装置４０が行う処理の例を説明するフローチャートである。要求制御部５２は、タイマーが設定されるまで待機する（ステップＳ２１でＮｏ）。タイマーが設定されている場合、要求制御部５２は、設定値までのカウントダウンが終了したかを判定する（ステップＳ２１でＹｅｓ、ステップＳ２２）。タイマーのカウントダウンが終了していない場合、要求制御部５２は、フローテーブル６１が更新されているかを判定する（ステップＳ２２でＮｏ、ステップＳ２３）。フローテーブル６１が更新されている場合、処理部５５は、パケット保持部６３にパケットが保持されているかを判定する（ステップＳ２３でＹｅｓ、ステップＳ２４）。パケット保持部６３にパケットが保持されている場合、処理部５５は、フローテーブル６１において、パケット保持部６３中のパケットに適用できる処理ルールを検索する（ステップＳ２４でＹｅｓ、ステップＳ２５）。処理部５５は、パケット保持部６３中のパケットに適用できる処理ルールを取得できたかを判定する（ステップＳ２６）。パケット保持部６３に保持されているパケットに適用する処理ルールを取得できた場合、処理部５５は、得られた処理ルールを用いてパケットを処理すると共に、タイマーを初期化する（ステップＳ２６でＹｅｓ、ステップＳ２７）。その後、ステップＳ２１以降の処理が繰り返される。
【００８７】
ステップＳ２３でフローテーブル６１が更新されていないと判定された場合や、ステップＳ２４でパケット保持部６３にパケットが保存されていないと判定された場合、ステップＳ２２以降の処理が繰り返される。また、ステップＳ２６において、処理部５５がパケット保持部６３で保持されているパケットに適用する処理ルールをフローテーブル６１から取得できなかった場合も、ステップＳ２２に戻る。
【００８８】
さらに、ステップＳ２２において、タイマーでのカウントダウンが終了した場合、要求制御部５２は、パケット保持部６３に保持されているパケットに適用する処理ルールを要求する要求メッセージを制御装置１０に送信する（ステップＳ２８）。
【００８９】
＜第２の実施形態＞
第１の実施形態では、ネットワーク中に１つの制御装置１０が存在する場合について説明したが、任意の数の制御装置１０と転送装置４０を含むネットワークでも、制御装置１０の処理負荷を軽減するために要求メッセージの送信を抑制できる。
【００９０】
図１９は、第２の実施形態で行われる制御の例を説明する図である。図１９の例では、ネットワーク中に、制御装置１０ａと制御装置１０ｂが含まれている。制御装置１０ａと制御装置１０ｂの間では、計算によって得られた経路情報や制御メッセージなどを、適宜、送受信できるものとする。また、転送装置４０ａ〜４０ｄは制御装置１０ａに制御される転送装置であり、転送装置４０ｅは制御装置１０ｂに制御される転送装置であるものとする。また、各転送装置４０は、ＬＬＤＰパケットを受信すると、その転送装置４０が通信する制御装置１０に、ＬＬＤＰパケットを含むＰａｃｋｅｔ＿Ｉｎメッセージを送信するように、設定されているものとする。
【００９１】
制御装置１０ａ、１０ｂは、ネットワークのトポロジーを特定するために、第１の実施形態と同様の処理により、配下の転送装置４０にＬＬＤＰパケットの送信を要求するためのＰａｃｋｅｔ＿Ｏｕｔメッセージを送信する。第２の実施形態では、Ｐａｃｋｅｔ＿Ｉｎメッセージが制御装置１０間で送受信することにより、各制御装置１０は、他の制御装置１０の配下の転送装置４０に接続されたポートについてのトポロジーも特定できる。例えば、制御装置１０ａが転送装置４０ａに、ポートＫからＬＬＤＰパケットを送信させるために、以下の情報を含むＰａｃｋｅｔ＿Ｏｕｔメッセージを送信したとする。
【００９２】
宛先ＩＰアドレス：転送装置４０ａのアドレス
メッセージ種別  ：Ｐａｃｋｅｔ＿Ｏｕｔ
出力ポート情報  ：ポートＫ
ＬＬＤＰパケット中のシャーシＩＤ：転送装置４０ａ
ＬＬＤＰパケット中のポートＩＤ  ：ポートＫ
【００９３】
転送装置４０ａは、第１の実施形態と同様の処理により、ＬＬＤＰパケットをポートＫから送信する。このため、転送装置４０ａのポートＫから送信されたＬＬＤＰパケットは、転送装置４０ｅがポートＬを介して受信する。そこで、転送装置４０ｅは、以下の情報を含むＰａｃｋｅｔ＿Ｉｎメッセージを制御装置１０ｂに送信する。
【００９４】
送信元ＩＰアドレス：転送装置４０ｅのアドレス
宛先ＩＰアドレス  ：制御装置１０ｂのアドレス
メッセージ種別    ：Ｐａｃｋｅｔ＿Ｉｎ
受信ポート情報    ：ポートＬ
ＬＬＤＰパケット中のシャーシＩＤ：転送装置４０ａ
ＬＬＤＰパケット中のポートＩＤ  ：ポートＫ
【００９５】
制御装置１０ｂは、受信したＰａｃｋｅｔ＿ＩｎメッセージのＬＬＤＰパケットに含まれているシャーシＩＤが配下の転送装置４０のＩＤではない場合、Ｐａｃｋｅｔ＿Ｉｎメッセージを制御装置１０ａに転送する。このため、制御装置１０ａのトポロジー検出部２１は、転送装置４０ａのポートＫが転送装置４０ｅのポートＬに接続されていることを特定できる。このため、図１９の例では、制御装置１０ａのポート属性通知部２２ａは、転送装置４０ａに対して、ポートＢとポートＫは他の転送装置４０に接続されていることを通知する。
【００９６】
異なる制御装置１０に制御されている転送装置４０を含む経路が設定される場合、パケットの送信元の通信装置２に接続された転送装置４０を制御している制御装置１０が、経路の全体を計算し、計算した経路を他の制御装置１０に通知する。このため、各制御装置１０は、計算により得られた経路と他の制御装置１０から通知された経路のいずれについても、配下の転送装置４０に処理ルールを通知するものとする。
【００９７】
例えば、通信装置２ｃが通信装置２ｂにパケットを送信する場合、通信装置２ｃからパケットを受信した転送装置４０ｅが制御装置１０ｂにパケットを含む要求メッセージを送信することにより、処理ルールを要求する。すると、制御装置１０ｂの処理ルール決定部２３ｂは、パケットを転送装置４０ｅ、転送装置４０ａ、転送装置４０ｂ、転送装置４０ｃ、転送装置４０ｄ、通信装置２ｂの順に転送する経路を計算する。処理ルール決定部２３ｂは、転送装置４０ｅに対して、通信装置２ｃから通信装置２ｂに送信されるパケットをポートＬから送信することを処理ルールとして通知するが、その他の転送装置４０に関する情報を制御装置１０ａに通知する。制御装置１０ａは、制御装置１０ｂからの通知に従って、転送装置４０ａ〜４０ｄに処理ルールを通知する。
【００９８】
ここで、輻輳箇所７ａにより、制御装置１０ａと転送装置４０ａの間の通信に時間がかかったとする。このため、転送装置４０ａは、制御装置１０ａからの処理ルールを受信するより前に、通信装置２ｃから通信装置２ｂに送信されるパケットを受信したとする。
【００９９】
転送装置４０ａの検索部５３ａは、受信パケットに適用する処理ルールをフローテーブル６１ａから取得できないことを、要求制御部５２ａに通知する。要求制御部５２ａは、パケットの受信ポートがポートＫであることと、ポートＫは他の転送装置４０に接続されていることから、要求メッセージを制御装置１０ａに送信しなくても、処理ルールが通知される可能性があると判定する。このため、要求制御部５２ａは、第１の実施形態と同様に、所定期間が経過するまで、制御装置１０ａに要求メッセージを送信しない。また、要求メッセージを送信する前に、受信パケットに適用可能な処理ルールが通知されると、転送装置４０ａの処理部５５ａは、通知された処理ルールを用いて、受信パケットを処理する。
【０１００】
このように、複数の制御装置１０によって管理されているネットワークであっても、第１の実施形態と同様に、各転送装置４０が要求メッセージの送信を行うかを、受信ポートに接続されている装置の種類に応じて決定できる。このため、第１の実施形態と同様に、制御装置１０において同じ条件のパケットについての処理ルールの決定や通知などの処理が重複して行われる可能性を下げることができ、制御装置１０での処理負担を軽減できる。さらに、ネットワークの輻輳の悪化も防止される。
【０１０１】
＜変形例＞
いずれの実施形態においても、転送装置４０が待機中に処理ルールを受信しなかった場合、他の転送装置４０から受信したパケットを廃棄するように変形されても良い。この場合でも、各転送装置４０は、他の転送装置４０から受信したパケット以外については、処理ルールが不明な場合、制御装置１０に処理ルールを問合わせる。転送装置４０が他の転送装置４０から受信したパケットに関する処理ルールが所定の時間に取得できない場合は、処理ルールを問合わせようとしている転送装置４０から制御装置１０に至る経路でひどい輻輳が発生していると考えられる。そこで、所定の時間に処理ルールを取得できない場合、制御装置１０との通信を行わず、受信パケットを廃棄することにより、ネットワークの輻輳の悪化を防ぐことができる。
【０１０２】
なお、ネットワーク中の複数の制御装置１０が異なる管理者によって管理されている場合、制御装置１０間でＰａｃｋｅｔ＿Ｉｎメッセージを共有しなくても良い。図１９の制御装置１０ａと制御装置１０ｂの間でＰａｃｋｅｔ＿Ｉｎメッセージが共有されない場合、制御装置１０ａは転送装置４０ａのポートＫに接続された装置を特定しない。このため、転送装置４０ａは、ポートＫから受信したパケットについての処理ルールがない場合、制御装置１０ａに処理ルールを要求する。
【０１０３】
以上の説明で述べたパケットや制御メッセージのフォーマット、および、テーブルに含まれている情報要素は一例であり、実装に応じて変更され得る。
【符号の説明】
【０１０４】
２  通信装置
５  コントローラ
７  輻輳箇所
１０  制御装置
１１、４１  通信部
１２、４２  送信部
１３、４３  受信部
２０、５０  制御部
２１  トポロジー検出部
２２  ポート属性通知部
２３  処理ルール決定部
３０、６０  記憶部
３１  トポロジーテーブル
４０  転送装置
５１  抽出部
５２  要求制御部
５３  検索部
５４  振り分け部
５５  処理部
６１  フローテーブル
６２  ポート情報テーブル
６３  パケット保持部
１０１  プロセッサ
１０２  メモリ
１０３  バス
１０４  ネットワーク接続装置
１０５  ネットワーク
【図１】
0006347177.tif 000002
【図２】
0006347177.tif 000003
【図３】
0006347177.tif 000004
【図４】
0006347177.tif 000005
【図５】
0006347177.tif 000006
【図６】
0006347177.tif 000007
【図７】
0006347177.tif 000008
【図８】
0006347177.tif 000009
【図９】
0006347177.tif 000010
【図１０】
0006347177.tif 000011
【図１１】
0006347177.tif 000012
【図１２】
0006347177.tif 000013
【図１３】
0006347177.tif 000014
【図１４】
0006347177.tif 000015
【図１５】
0006347177.tif 000016
【図１６】
0006347177.tif 000017
【図１７】
0006347177.tif 000018
【図１８】
0006347177.tif 000019
【図１９】
0006347177.tif 000020