(57)【要約】      （修正有）【課題】フローエントリ削除による通信遅延を抑制するシステムを提供する。【解決手段】オープンフローを用いてデータ転送を行うシステムにおいて、オープンフロースイッチはフローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリをフローテーブルから削除する。そこで、フローエントリ削除による通信遅延を抑制する目的で、フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成処理と、生成した前記疑似パケットを前記スイッチに送信する送信処理を実行させる。【選択図】図６
2020005051.tif 000002
【特許請求の範囲】
【請求項１】
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置が実行するプログラムであって、
前記スイッチから前記フローテーブルを取得する取得処理と、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成処理と、
生成した前記疑似パケットを前記スイッチに送信する送信処理と、
を実行させる制御プログラム。
【請求項２】
前記取得処理は、周期時間ごとに実行される
請求項１記載の制御プログラム。
【請求項３】
前記生成処理は、第１時間の間、前記スイッチが、前記疑似パケット以外のパケットを受信していないと判定した場合、前記疑似パケットを生成しない
請求項２記載の制御プログラム。
【請求項４】
前記フローテーブルは、前記フローエントリが前回実行されてから経過した経過時間を含み、
前記生成処理は、前記一致したフローエントリの経過時間が第２時間以上である場合、カウンタをインクリメントし、前記一致したフローエントリの経過時間が前記第２時間未満である場合、前記カウンタをリセットし、
前記カウンタが第３値以上である場合、前記第１時間の間、前記スイッチが、前記疑似パケット以外のパケットを受信していないと判定する
請求項３記載の制御プログラム。
【請求項５】
前記周期時間は、前記スイッチにおける前記所定時間に基づき決定される
請求項２記載の制御プログラム。
【請求項６】
前記第２時間は、前記周期時間に基づき決定される
請求項４記載の制御プログラム。
【請求項７】
前記通信システムはオープンフロープロトコルに準拠し、前記スイッチはオープンフロースイッチを含み、前記制御装置はオープンフローコントローラを含む
請求項１記載の制御プログラム。
【請求項８】
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置であって、
前記スイッチから前記フローテーブルを取得する取得部と、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成部と、
生成した前記疑似パケットを前記スイッチに送信する送信部とを、
有する制御装置。
【請求項９】
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置の制御方法であって、
前記スイッチから前記フローテーブルを取得し、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成し、
生成した前記疑似パケットを前記スイッチに送信する
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム、制御装置、及び制御方法に関する。
【背景技術】
【０００２】
近年、ＳＤＮ（Software Defined Network）の一つとして、オープンフロー（OF：Open Flow）が注目されている。オープンフローは、ネットワークのデータ転送を行うオープンフロースイッチ（OFS：Open Flow Switch）や、ネットワーク経路制御を行うオープンフローコントローラ（OFC：Open Flow Controller）で構成される。オープンフローに準拠した通信システムにおいて、ＯＦＳ及びＯＦＣは、オープンフロープロトコルを用いて通信を行う。
【０００３】
ＯＦＳは、データパケット（以下、パケットと呼ぶ）を受信すると、受信したパケットに対する処理をＯＦＣに問い合わせる。ＯＦＣは、受信したパケットに対応する処理をＯＦＣに指示する。ＯＦＳは、ＯＦＣの指示に従い、受信したパケットに対する処理（例えば、転送、破棄など）を行う。以降、ある条件のパケットを受信した場合に所定の処理を行うことを規定したエントリを、フローエントリと呼ぶ場合がある。
【０００４】
ＯＦＳは、ＯＦＣからフローエントリを受信すると、自装置のメモリにフローエントリの情報をフローテーブルとして保持（記憶）する場合がある。ＯＦＳは、フローテーブルにフローエントリを記憶することで、記憶するフローエントリに該当するパケットを受信した場合、ＯＦＣに問い合わせずに、受信したパケットに対して処理を行うことができる。
【０００５】
フローテーブルに関する技術は、以下の特許文献１及び２に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第2013/133400号
【特許文献２】特開2007-208818号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、ＯＦＳは、フローテーブルに記憶したフローエントリに該当する（一致する）パケットを一定時間受信しない場合、当該フローエントリをフローテーブルから削除する。ＯＦＳは、フローエントリを削除すると、当該フローエントリに該当するパケットを受信しても、フローエントリを保持していないため、ＯＦＣに問い合わせを行う。ＯＦＳはＯＦＣからの応答を待ってからパケットを処理するため、パケットの送信が遅延する場合がある。この場合、パケットの許容遅延時間が小さいと、通信が適切に行われなくなる。
【０００８】
一方、ＯＦＳがフローエントリを削除しないようにすると、ＯＦＳは膨大な量のメモリが必要となる。また、ＯＦＳは、フローエントリを削除しないことで、ＯＦＣが有する最新のフローエントリと異なる処理をしてしまう場合がある。
【０００９】
そこで、開示する技術は、フローエントリ削除による通信遅延を抑制する制御プログラム、制御装置、及び制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置が実行するプログラムであって、前記スイッチから前記フローテーブルを取得する取得処理と、取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成処理と、生成した前記疑似パケットを前記スイッチに送信する送信処理と、を実行させる。
【発明の効果】
【００１１】
開示する技術は、フローエントリ削除による通信遅延を抑制する制御プログラム、制御装置、及び制御方法を提供する。
【図面の簡単な説明】
【００１２】
【図１】図１は、通信システム１０の構成例を示す図である。
【図２】図２は、パケット制御処理のシーケンスの例を示す図である。
【図３】図３は、スイッチ２００が有するフローテーブルの例を示す図である。
【図４】図４は、制御装置３００の構成例を示す図である。
【図５】図５は、マッチング情報テーブル３２３の例を示す図である。
【図６】図６は、フローテーブル制御処理Ｓ１００の処理フローチャートの例を示す図である。
【図７】図７は、フローテーブル取得処理Ｓ２００の処理フローチャートの例を示す図である。
【図８】図８は、フローテーブル取得処理Ｓ２００のシーケンスの例を示す図である。
【図９】図９は、マッチング判定処理Ｓ３００の処理フローチャートの例を示す図である。
【図１０】図１０は、マッチング判定処理Ｓ３００において抽出されたフローエントリの例を示す図である。
【図１１】図１１は、疑似パケット生成処理Ｓ４００の処理フローチャートの例を示す図である。
【図１２】図１２は、疑似パケット生成処理Ｓ４００のシーケンスの例を示す図である。
【図１３】図１３は、制御装置３００の構成例を示す図である。
【図１４】図１４は、継続判定テーブル３２４の例を示す図である。
【図１５】図１５は、第２の実施の形態におけるフローテーブル制御処理Ｓ１００の処理フローチャートの例を示す図である。
【図１６】図１６は、継続判定処理Ｓ５００の処理フローチャートの例を示す図である。
【図１７】図１７は、継続判定処理Ｓ５００実行後の継続判定テーブル３２４の例を示す図である。
【発明を実施するための形態】
【００１３】
［第１の実施の形態］
第１の実施の形態について説明する。
【００１４】
＜通信システムの構成例＞
図１は、通信システム１０の構成例を示す図である。通信システム１０は、通信装置１００−１，２、スイッチ２００−１〜３、及び制御装置３００を有する。通信システム１０は、例えば、送信ノードである通信装置１００−１から、受信ノードである通信装置１００−２にデータを含むパケットを転送する通信システムである。
【００１５】
通信装置１００−１，２及びスイッチ２００−１〜３は、それぞれ通信ケーブルを介して接続されている。通信ケーブルは、例えば、光ケーブルである。また、制御装置３００は、スイッチ２００−１〜３と、それぞれ通信ケーブルＬ１〜Ｌ３を介して接続される。通信装置１００−１，２、スイッチ２００−１〜３、及び制御装置３００は、それぞれ通信ケーブルを介してパケットを送受信することで通信を行う。
【００１６】
さらに、制御装置３００は、スイッチ２００−１〜３を制御するため、コンソールケーブルＣ１〜Ｃ３を介して、スイッチ２００−１〜３と接続する。制御装置３００は、コンソールケーブルＣ１〜Ｃ３を介して、スイッチ２００−１〜３に制御用のコマンドの送信や、スイッチ２００−１〜３から制御用コマンドの応答の受信などを行う。制御装置３００及びスイッチ２００−１〜３は、コンソールケーブルＣ１〜Ｃ３を介して行う制御コマンドや応答の送受信を、例えば、オープンフロープロトコルを用いて実行する。
【００１７】
通信装置１００−１，２（以降、通信装置１００と呼ぶ場合がある）は、例えば、コンピュータやサーバなどの通信装置である。通信装置１００は、通信ケーブルを介して、データを含むパケットを送受信することで、互いに通信を行う。また、通信装置１００は、スイッチ２００−１〜３を介して、他の通信装置１００と通信を行う。
【００１８】
スイッチ２００−１〜３（以降、スイッチ２００と呼ぶ場合がある）は、通信ケーブルを介して受信したパケットに対して処理を行う中継装置であり、例えば、ＯＦＳである。スイッチ２００は、例えば、通信ケーブルを介してパケットを受信すると、コンソールケーブルを介して制御装置３００に当該パケットに対する処理を問い合わせる。そして、スイッチ２００は、コンソールケーブルを介して受信した問い合わせに対する応答に従い、当該パケットを処理する。なお、問い合わせに対する応答には、例えば、フローエントリを含む。
【００１９】
制御装置３００は、コンソールケーブルを介して受信したスイッチ２００からのパケットに対する処理の問い合わせに応答し、当該パケットの処理を、コンソールケーブルを介してスイッチ２００に指示（通知）する装置であり、例えば、ＯＦＣである。制御装置３００は、パケットに関する情報（例えば、パケットの種別、送信元、送信先など）に応じたフローエントリを決定し、スイッチ２００に指示（通知）する。
【００２０】
また、スイッチ２００は、自装置内のメモリに、フローテーブルを有する。スイッチ２００は、フローエントリを制御装置３００から受信すると、受信したフローエントリをフローテーブルに記憶する。そして、スイッチ２００は、通信ケーブルを介して受信したパケットがフローテーブルのフローエントリと一致する場合、一致したフローエントリに従って処理を行う。一方、スイッチ２００は、受信したパケットがフローテーブルのフローエントリと一致しない場合、制御装置３００に問い合わせを行う。
【００２１】
また、スイッチ２００は、フローテーブルのフローエントリを、所定時間が経過した場合に削除する。フローエントリの削除方式は、所定時間内にフローエントリに一致するパケットを受信した場合、所定時間の測定を最初からやり直すアイドルタイムアウト方式がある。また、フローエントリの削除方式は、フローエントリに一致するパケットの受信の有無に関わらず、フローエントリをフローテーブルに記憶した時から所定時間が経過したときに当該フローエントリを削除するハードタイムアウト方式がある。以下、スイッチ２００は、フローエントリの削除方式として、アイドルタイムアウト方式を採用するものとする。
【００２２】
第１の実施の形態における制御装置３００は、所定条件に合致したとき、疑似パケットを生成し、ネットワーク上に送信する。スイッチ２００は、フローエントリに一致する疑似パケットを受信することで、当該フローエントリを削除するまでの所定時間を測定するタイマを再起動する。これにより、当該フローエントリに一致するパケットに対する問い合わせが抑制され、当該フローエントリに該当するパケットの通信遅延が抑制される。
【００２３】
＜パケット制御処理＞
図２は、パケット制御処理のシーケンスの例を示す図である。通信装置１００−１は、例えば、通信装置１００−２に送信するパケットを、中継装置であるスイッチ２００−１に送信する（Ｓ１０）。
【００２４】
スイッチ２００−１は、受信したパケットが自装置のフローテーブルのフローエントリと一致した場合、一致したフローエントリの処理を行う。ここでは、受信したパケットが自装置のフローテーブルのフローエントリと一致しない場合について説明する。
【００２５】
スイッチ２００−１は、受信したパケットが自装置のフローテーブルのフローエントリと一致しない場合、当該パケットに対する処理を、コンソールケーブルＣ１を介して制御装置３００に問い合わせる（Ｓ１１）。例えば、この問い合わせは、オープンフローの通信システムにおけるパケットインである。
【００２６】
制御装置３００は、問い合わせを受信すると、当該パケットに対するフローエントリを、例えば、自装置が有するフローテーブルから検出し、問い合わせ元のスイッチ２００−１に、コンソールケーブルＣ１を介して応答する（Ｓ１２）。例えば、この応答は、オープンフローの通信システムにおけるパケットアウトである。
【００２７】
スイッチ２００−１は、受信したフローエントリを、自装置のフローテーブルに記憶し、フローエントリに従った処理を行う。フローエントリに従った処理とは、例えば、スイッチ２００−１は、スイッチ２００−３に接続する通信ポートに、受信したパケットを送信する（Ｓ１３）処理のことを言う。
【００２８】
図３（１）は、スイッチ２００が有するフローテーブルの例を示す図である。「フローエントリ識別子」は、フローエントリの番号であり、以降番号がｎ（ｎは整数）であるフローエントリを、フローエントリｎと呼ぶ場合がある。
【００２９】
「Match Field」は、マッチフィールドであり、当該フローエントリの処理を行うパケットの条件を示す。例えば、フローエントリ１の条件は、「vlan_vid = xx」であるパケット、すなわち、VLAN（Virtual LAN（Local Area Network））の識別子がｘｘであるパケットを処理の対象とすることを示す。また、例えば、フローエントリ２の条件は、「eth_dst = yy」であるパケット、すなわち、イーサネット(登録商標)（ethernet）の宛先ＭＡＣ（Media Access Control）アドレスがｙｙであるパケットを処理の対象とすることを示す。また、例えば、フローエントリ３の条件は、「eth_src = aa and ipv4_dst = bb」であるパケット、すなわち、イーサネットの送信元ＭＡＣアドレスがａａであり、かつ、ＩＰｖ４（Internet Protocol version 4）の宛先ＩＰアドレスがｂｂであるパケットを処理の対象とすることを示す。
【００３０】
なお、マッチングフィールドは、図３（２）に示すように、記憶されてもよい。図３（２）に示すMatch Field（マッチフィールド）は、図３（１）に示すマッチフィールドと同様である。図３（２）に示すマッチフィールドは、フローエントリ３のように複数の情報要素に条件が記憶されている場合、例えば、ａｎｄ条件であることを示す。なお、図３（２）に示すマッチフィールドは、フローエントリ３のように複数の情報要素に条件が記憶されている場合、ｏｒ条件であることを示してもよい。
【００３１】
「Priority」は、パケットが複数のフローエントリのマッチフィールドと一致する場合、どのフローエントリの処理を行うかを示す優先順位である。図３の場合、フローエントリ１の優先順位が１、フローエントリ２の優先順位が２、フローエントリ３が優先順位３であるため、フローエントリ１の処理が最優先で実行される。
【００３２】
「Counters」は、当該フローエントリを実行した回数をカウントするカウンタである。カウンタは、通信システム内に流通するパケットの傾向などを解析するために使用される場合がある。
【００３３】
「Instructions」は、当該フローエントリのマッチングフィールドと一致するパケットに対する処理を示す。例えば、フローエントリ１における処理は、「ポート１  送信」であり、ポート番号が１であるポートに対して、受信したパケットを送信することを示す。また、例えば、フローエントリ２は、「破棄」であり、受信したパケットを送信することなく破棄することを示す。
【００３４】
「Timeouts」は、当該フローエントリがフローテーブルに記憶されてからの経過時間を示す。例えば、「Timeouts」の単位が秒である場合、フローエントリ１は、フローテーブルに記憶されてから３００秒経過している。また、「Timeouts」は、当該フローエントリの処理が前回実施されてから（当該フローエントリのマッチフィールドに一致するパケットを前回受信してから）経過した経過時間を示す。
【００３５】
なお、「Timeouts」は当該フローエントリが削除されるまでの所定時間を示してもよい。スイッチ２００は、例えば、当該フローエントリが、前回の実行時又はフローテーブルに記憶されてから所定時間実行されない場合、当該フローエントリを削除する。
【００３６】
「Cookies」は、例えば、制御装置３００やスイッチ２００が使用する情報を示す。「Cookies」は、例えば、通信プロトコルやセッションに関する情報が含まれる。
【００３７】
＜制御装置の構成例＞
図４は、制御装置３００の構成例を示す図である。制御装置３００は、例えば、ＯＦＣであり、ＣＰＵ３１０、ストレージ３２０、メモリ３３０、及びＮＩＣ（Network Interface Card）３４０を有する。
【００３８】
ストレージ３２０は、プログラムやデータを記憶する、フラッシュメモリ、ＨＤＤ（Hard Disk Drive）、又はＳＳＤ（Solid State Drive）などの補助記憶装置である。ストレージ３２０は、パケット制御プログラム３２１、フローテーブル制御プログラム３２２、及びマッチング情報テーブル３２３を有する。
【００３９】
メモリ３３０は、ストレージ３２０に記憶されているプログラムをロードする領域である。また、メモリ３３０、プログラムがデータを記憶する領域としても使用される。
【００４０】
ＮＩＣ３４０は、スイッチ２００と接続するインターフェースである。制御装置３００は、ＮＩＣ３４０をスイッチ２００に接続することで、スイッチ２００と通信を行う。なお、ＮＩＣ３４０は、例えば、通信ケーブル及びコンソールケーブルの接続が可能である。また、制御装置３００は、例えば、接続する装置の台数に応じた数のＮＩＣ３４０を有してもよい。
【００４１】
ＣＰＵ３１０は、ストレージ３２０に記憶されているプログラムを、メモリ３３０にロードし、ロードしたプログラムを実行し、各処理を実現するプロセッサである。
【００４２】
ＣＰＵ３１０は、パケット制御プログラム３２１を実行することで、パケット制御処理を行う。パケット制御処理は、スイッチ２００からの問い合わせ（パケットイン）に応答し、例えば、制御装置３００が有するマスタのフローテーブルから一致するフローエントリを検出し、検出したフローエントリをスイッチ２００に送信する処理である。
【００４３】
ＣＰＵ３１０は、フローテーブル制御プログラム３２２を実行することで、取得部、解析部、及び生成部を論理的に構築し、フローテーブル制御処理を行う。フローテーブル制御処理は、スイッチ２００が有するフローテーブルを制御する処理である。制御装置３００は、フローテーブル制御処理において、フローテーブル取得処理、マッチング判定処理、及び疑似パケット生成処理を行う。
【００４４】
また、ＣＰＵ３１０は、フローテーブル制御プログラム３２２が有するフローテーブル取得モジュール３２２１を実行することで、取得部を論理的に構築し、フローテーブル取得処理を行う。フローテーブル取得処理は、スイッチ２００からフローテーブルを取得する処理である。制御装置３００は、フローテーブル取得処理において、スイッチ２００にフローテーブルを送信するよう要求し、スイッチ２００からフローテーブルが送信されるのを待ち受ける。制御装置３００は、フローテーブル取得処理において、スイッチ２００からフローテーブルが送信されると、例えば、内部メモリに取得したフローテーブルをスイッチ２００の識別子と関連付けて記憶する。
【００４５】
また、ＣＰＵ３１０は、フローテーブル制御プログラム３２２が有するマッチング判定モジュール３２２２を実行することで、生成部を構築し、マッチング判定処理を行う。マッチング判定処理は、スイッチ２００から取得したフローテーブルとマッチング情報テーブル３２３を比較し、マッチング情報テーブル３２３と一致したフローエントリを抽出する処理である。
【００４６】
図５は、マッチング情報テーブル３２３の例を示す図である。マッチング情報テーブル３２３は、「マッチング番号」及び「Match Field」を有する。「マッチング番号」は、マッチフィールドの番号を示す識別子である。「Match Field」は、後述するマッチング判定処理において、フローテーブルのフローエントリのマッチフィールドと一致するか否かの照合に用いる情報要素である。「Match Field」に記憶される情報は、図３（２）に示す情報と同様である。
【００４７】
マッチング情報テーブル３２３は、例えば、通信システム１０の管理者やユーザによって設定される。管理者は、例えば、許容される遅延時間が短時間である通信のフローエントリを特定し、マッチング情報テーブル３２３に設定する。管理者は、許容される遅延時間が短時間である通信のフローエントリをマッチング情報テーブル３２３に設定することで、当該フローエントリがフローテーブルから削除するのを防止し、当該フローエントリの対象となる通信が遅延するのを抑制することができる。
【００４８】
また、ＣＰＵ３１０は、フローテーブル制御プログラム３２２が有する疑似パケット生成モジュール３２２３を実行することで、生成部及び送信部を論理的に構築し、疑似パケット生成処理を行う。疑似パケット生成処理は、マッチング判定処理で、フローテーブルと一致したフローエントリに対応する疑似パケットを生成し、コンソールケーブルを介してスイッチ２００に送信する処理である。
【００４９】
＜フローテーブル制御処理＞
制御装置３００は、フローテーブル制御処理を行う。フローテーブル制御処理は、スイッチ２００が有するフローテーブルの所定のフローエントリが削除されないよう、当該フローエントリに対応する疑似パケットを生成し、スイッチ２００に送信する処理である。
【００５０】
図６は、フローテーブル制御処理Ｓ１００の処理フローチャートの例を示す図である。制御装置３００は、フローテーブル制御処理Ｓ１００において、周期タイマを起動する（Ｓ１００−１）。周期タイマは、フローテーブル制御を行う周期を測定するタイマである。周期タイマは、例えば、スイッチ２００がフローテーブルからフローエントリを削除する削除周期に基づき決定される。削除周期は、スイッチ２００が、削除時間以上実行されないフローエントリをフローテーブルから削除する時間である。周期タイマのタイマ値は、例えば、削除周期や、削除周期より少し短い時間（例えば、削除周期の９５％程度）である。制御装置３００は、周期タイマのタイマ値を削除周期より少し短い時間とすることで、スイッチ２００が当該フローエントリを削除する前に、疑似パケットを送信することができる。
【００５１】
制御装置３００は、周期タイマが満了（タイムアウト）するのを待ち受ける（Ｓ１００−２のＮｏ）。制御装置３００は、周期タイマがタイムアウトすると（Ｓ１００−２のＹｅｓ）、フローテーブル取得処理を行う（Ｓ２００）。フローテーブル取得処理Ｓ２００は、スイッチ２００からフローテーブルを取得する処理であり、詳細は後述する。
【００５２】
制御装置３００は、フローテーブル取得処理Ｓ２００でフローテーブルを取得すると、マッチング判定処理を行う（Ｓ３００）。マッチング判定処理Ｓ３００は、フローテーブルのフローエントリのうち、マッチング情報テーブルに一致するフローエントリを抽出する処理であり、詳細は後述する。
【００５３】
制御装置３００は、マッチング判定処理Ｓ３００で一致したフローエントリがある場合（Ｓ１００−３のＹｅｓ）、疑似パケット生成処理を行う（Ｓ４００）。疑似パケット生成処理Ｓ４００は、マッチング判定処理Ｓ３００で一致したフローエントリに対応する疑似パケットを生成し、スイッチ２００に送信する処理であり、詳細は後述する。そして、制御装置３００は、再度周期タイマを起動し（Ｓ１００−１）、周期タイマの満了を待ち受ける（Ｓ１００−２のＮｏ）。
【００５４】
一方、制御装置３００は、マッチング判定処理Ｓ３００で一致したフローエントリがない場合（Ｓ１００−３のＮｏ）、再度周期タイマを起動し（Ｓ１００−１）、周期タイマの満了を待ち受ける（Ｓ１００−２のＮｏ）。
【００５５】
図７は、フローテーブル取得処理Ｓ２００の処理フローチャートの例を示す図である。制御装置３００は、フローテーブル取得処理Ｓ２００において、対象のスイッチ２００にフローテーブル取得要求を送信する（Ｓ２００−１）。フローテーブル取得要求は、スイッチ２００に対して、スイッチ２００が有するフローテーブルを制御装置３００に送信するよう要求するメッセージである。
【００５６】
制御装置３００は、スイッチ２００からのフローテーブル応答を受信するのを待ち受ける（Ｓ２００−２のＮｏ）。フローテーブル応答は、フローテーブル取得要求に応答してスイッチ２００が送信するメッセージで、フローテーブルが含まれる。
【００５７】
制御装置３００は、フローテーブル応答を受信すると（Ｓ２００−２のＹｅｓ）、受信したフローテーブルを内部メモリに記憶し（Ｓ２００−３）、フローテーブル取得処理Ｓ２００を終了する。
【００５８】
図８は、フローテーブル取得処理Ｓ２００のシーケンスの例を示す図である。制御装置３００は、制御装置３００は、フローテーブル取得処理Ｓ２００において、コンソールケーブルＣ１を介して、スイッチ２００−１にフローテーブル取得要求を送信する（Ｓ２１、図７のＳ２００−１）。
【００５９】
スイッチ２００−１は、フローテーブル取得要求に応答し、例えば、内部メモリに記憶しているフローテーブルを読み出し、読み出したフローテーブルを含むフローテーブル応答を、コンソールケーブルＣ１を介して制御装置３００に送信する（Ｓ２２）。
【００６０】
制御装置３００は、コンソールケーブルＣ１を介して、スイッチ２００−１からフローテーブル応答を受信すると（Ｓ２２、図７のＳ２００−２のＹｅｓ）、受信したフローテーブルを内部メモリに記憶し（図７のＳ２００−３）、フローテーブル取得処理Ｓ２００を終了する。
【００６１】
図９は、マッチング判定処理Ｓ３００の処理フローチャートの例を示す図である。制御装置３００は、マッチング判定処理Ｓ３００において、取得したフローテーブルのフローエントリのマッチフィールドと、マッチング情報テーブル３２３のマッチフィールドを比較する（Ｓ３００−１）。
【００６２】
制御装置３００は、マッチング情報テーブル３２３のマッチフィールドと一致するフローエントリが存在する場合（Ｓ３００−２のＹｅｓ）、一致したフローエントリを抽出し（Ｓ３００−３）、マッチング判定処理Ｓ３００を終了する。
【００６３】
一方、制御装置３００は、マッチング情報テーブル３２３のマッチフィールドと一致するフローエントリが存在しない場合（Ｓ３００−２のＮｏ）、マッチング判定処理Ｓ３００を終了する。
【００６４】
図１０は、マッチング判定処理Ｓ３００において抽出されたフローエントリの例を示す図である。制御装置３００は、マッチング判定処理Ｓ３００において、取得したフローテーブルのフローエントリのマッチフィールド（例えば、図３（２））と、マッチング情報テーブル３２３のマッチフィールド（例えば、図５）を比較する（図９のＳ３００−１）。
【００６５】
制御装置３００は、マッチング情報テーブル３２３のマッチフィールドと一致するフローエントリが存在するので（図９のＳ３００−２のＹｅｓ）、一致したフローエントリを抽出する（図９のＳ３００−３）。図５のマッチング番号２のマッチフィールドが、図３（２）のフローエントリ２のマッチフィールドと一致し、図５のマッチング番号３のマッチフィールドが、図３（２）のフローエントリ３のマッチフィールドと一致する。そこで、制御装置３００は、一致したフローエントリ２及び３を抽出する。
【００６６】
図１１は、疑似パケット生成処理Ｓ４００の処理フローチャートの例を示す図である。制御装置３００は、疑似パケット生成処理Ｓ４００において、抽出したフローエントリに該当する疑似パケットを生成する（Ｓ４００−１）。
【００６７】
制御装置３００は、疑似パケットを生成するとき、マッチフィールドで指定されていない情報要素については、適宜値を決定する。そして、制御装置３００は、生成した疑似パケットを、対象のスイッチに送信し（Ｓ４００−２）、処理を終了する。
【００６８】
図１２は、疑似パケット生成処理Ｓ４００のシーケンスの例を示す図である。制御装置３００は、疑似パケット生成処理Ｓ４００において、抽出したフローエントリに該当する疑似パケットを生成する（図１１のＳ４００−１）。制御装置３００は、図１０に示すフローエントリを抽出した場合、フローエントリ２に該当（対応）する疑似パケットと、フローエントリ３に該当（対応）する疑似パケットを、それぞれ生成する。
【００６９】
制御装置３００は、例えば、フローエントリ１に該当する疑似パケットを生成するとき、マッチフィールドで指定されているイーサネットの宛先ＭＡＣアドレス以外の情報要素であるイーサネットの送信元ＭＡＣアドレス、ＶＬＡＮの識別子、ＩＰｖ４の送信元ＩＰアドレス、及びＩＰｖ４の宛先ＩＰアドレスを適宜設定する。制御装置３００は、例えば、イーサネットの送信元ＭＡＣアドレスに、自装置のＭＡＣアドレスを設定する。また、制御装置３００は、例えば、ＩＰｖ４の送信元ＩＰアドレスに、自装置のＩＰアドレスを設定する。さらに、制御装置３００は、ＩＰｖ４の宛先ＩＰアドレスに、存在しないＩＰアドレスを設定したり、疑似パケットを受信しても破棄する疑似パケットを受信するための通信装置のＩＰアドレスに設定したりする。
【００７０】
なお、疑似パケットは、宛先でドロップするパケットであることが好ましく、例えば、マッチフィールドで指定され情報要素以外のペイロードを全て０に設定されてもよい。
【００７１】
そして、制御装置３００は、生成したフローエントリ２及び３に対応する２つの疑似パケットを、通信ケーブルＬ１を介して、スイッチ２００−１に送信する（Ｓ３１、図１１のＳ４００−２）。
【００７２】
上述した例においては、制御装置３００がスイッチ２００−１のフローテーブルを制御する場合について説明した。しかし、制御装置３００は、スイッチ２００−１以外のスイッチ２００−２，３のフローテーブルについても、フローテーブル制御処理を行う。この場合、スイッチ２００−１以外の周期タイマのタイマ値は、スイッチ２００−１のフローテーブル制御処理の周期タイマのタイマ値と同じであってもよいし、異なるタイマ値であってもよい。また、マッチング判定処理に使用されるマッチング情報テーブルは、スイッチ２００ごとに用意され、スイッチ２００ごとに異なるマッチング情報テーブルが使用されてもよい。
【００７３】
第１の実施の形態において、制御装置３００は、マッチング情報テーブルと一致するフローエントリに対応する疑似パケットを生成し、スイッチ２００に送信する。これにより、スイッチ２００は、当該フローエントリを削除せずに維持し、当該フローエントリに該当するパケットを受信したときに、制御装置３００に問い合わせることなく処理することができる。スイッチ２００は、制御装置３００に問い合わせることなく処理することで、当該フローエントリに該当するパケットの送信遅延を抑制することができる。
【００７４】
［第２の実施の形態］
次に、第２の実施の形態について説明する。第２の実施の形態において、制御装置３００は、さらに、継続判定を行う。制御装置３００は、継続判定において、所定時間実行されていないフローエントリは、疑似パケットを生成しない。
【００７５】
＜制御装置の構成例＞
図１３は、制御装置３００の構成例を示す図である。制御装置３００は、ＣＰＵ３１０、ストレージ３２０、メモリ３３０、及びＮＩＣ３４０を有する。
【００７６】
ストレージ３２０は、プログラムやデータを記憶する、フラッシュメモリ、ＨＤＤ、又はＳＳＤなどの補助記憶装置である。ストレージ３２０は、パケット制御プログラム３２１、フローテーブル制御プログラム３２２、マッチング情報テーブル３２３、及び継続判定テーブル３２４を有する。
【００７７】
図１４は、継続判定テーブル３２４の例を示す図である。継続判定テーブル３２４は、「マッチング番号」及び「カウンタ」を有する。「マッチング番号」は、例えば、マッチング情報テーブル３２３のマッチング番号を示す。なお、継続判定テーブル３２４は、マッチング番号に代替し、フローエントリの番号であってもよい。
【００７８】
「カウンタ」は、疑似パケット生成の連続実行回数を示し、例えば、初期値は０である。カウンタは、例えば、当該マッチング番号に該当するフローエントリが前回実行されてから、又は当該マッチング番号に該当するフローエントリがフローテーブルに記憶されてからの、疑似パケット生成回数を示す。
【００７９】
ＣＰＵ３１０は、フローテーブル制御プログラム３２２を実行することで、フローテーブル制御処理を行う。フローテーブル制御処理は、スイッチ２００が有するフローテーブルを制御する処理である。制御装置３００は、フローテーブル制御処理において、フローテーブル取得処理、マッチング判定処理、疑似パケット生成処理、及び継続判定処理を行う。
【００８０】
また、ＣＰＵ３１０は、フローテーブル制御プログラム３２２が有する継続判定モジュール３２２４を実行することで、継続判定処理を行う。継続判定処理は、当該フローエントリをフローテーブルに記憶し続けるか否か、すなわち、当該フローエントリの疑似パケットを生成するか否かを判定する処理である。制御装置３００は、継続判定処理において、継続判定テーブル３２４を参照し、当該フローエントリが、疑似パケット以外で所定期間実行されていないこと判定した場合、当該フローエントリの疑似パケット生成を行わない。
【００８１】
なお、その他のＣＰＵ３１０の処理、メモリ３３０、及びＮＩＣ３４０については、図４に示すＣＰＵ３１０の処理、メモリ３３０、及びＮＩＣ３４０と同様である。
【００８２】
＜フローテーブル制御処理＞
図１５は、第２の実施の形態におけるフローテーブル制御処理Ｓ１００の処理フローチャートの例を示す図である。図１５における処理Ｓ１００−１〜３、フローテーブル取得処理Ｓ２００、マッチング判定処理Ｓ３００、及び疑似パケット生成処理Ｓ４００は、図６における処理Ｓ１００−１〜３、フローテーブル取得処理Ｓ２００、マッチング判定処理Ｓ３００、及び疑似パケット生成処理Ｓ４００と同様である。
【００８３】
制御装置３００は、マッチング判定処理Ｓ３００で一致したフローエントリがある場合（Ｓ１００−３のＹｅｓ）、継続判定処理を行う（Ｓ５００）。継続判定処理Ｓ５００は、マッチング判定処理Ｓ３００で一致したフローエントリについて、疑似パケットを生成するか否かを判定する処理であり、詳細は後述する。
【００８４】
制御装置３００は、継続ありのフローエントリが存在する場合（Ｓ１００−４のＹｅｓ）、疑似パケット生成処理Ｓ４００を行い、フローテーブル制御処理Ｓ１００を終了する。一方、制御装置３００は、継続ありのフローエントリが存在しない場合（Ｓ１００−４のＮｏ）、フローテーブル制御処理Ｓ１００を終了する。
【００８５】
図１６は、継続判定処理Ｓ５００の処理フローチャートの例を示す図である。制御装置３００は、一致したマッチング判定処理Ｓ３００で一致したフローエントリに対応するマッチング番号が、継続判定テーブルに存在するか否かを確認する（Ｓ５００−１）。制御装置３００は、当該マッチング番号が継続判定テーブル３２４に存在しない場合（Ｓ５００−１のＮｏ）、当該マッチング番号を継続判定テーブル３２４に追加する（Ｓ５００−２）。制御装置３００は、処理Ｓ５００−２において、当該マッチング番号のカウンタを、初期値である０に設定する。一方、制御装置３００は、当該マッチング番号が継続判定テーブル３２４に存在する場合（Ｓ５００−１のＹｅｓ）、処理Ｓ５００−２を行わずに、次の処理Ｓ５００−３を行う。
【００８６】
そして、制御装置３００は、当該フローエントリの経過時間を確認する（Ｓ５００−３）。経過時間は、例えば、フローエントリの「Timeouts」である。制御装置３００は、当該フローエントリの経過時間が時間閾値以上である場合（Ｓ５００−３のＹｅｓ）、当該マッチング番号のカウンタをインクリメントする（Ｓ５００−４）。一方、制御装置３００は、当該フローエントリの経過時間が時間閾値未満である場合（Ｓ５００−３のＮｏ）、当該マッチング番号のカウンタを初期値（例えば、０）にする（Ｓ５００−５）。
【００８７】
時間閾値（第２時間）は、例えば、周期タイマのタイマ値に基づき決定される。時間閾値は、例えば、周期タイマのタイマ値である。また、時間閾値は、周期タイマのタイマ値に近似した値（例えば、タイマ値の９５％から１０５％の値）であってもよい。制御装置３００は時間閾値を周期タイマのタイマ値に基づいて決定することで、疑似パケット以外によって当該フローエントリが実行されているか否かを確認することができる。
【００８８】
そして、制御装置３００は、当該マッチング番号のカウンタが回数閾値以上か否かを確認する（Ｓ５００−６）。制御装置３００は、当該マッチング番号のカウンタが回数閾値未満であれば（Ｓ５００−６のＮｏ）、当該フローエントリを継続ありと判定し（Ｓ５００−９）、処理を終了する。一方、制御装置３００は、当該マッチング番号のカウンタが回数閾値以上であれば（Ｓ５００−６のＹｅｓ）、当該マッチング番号を継続判定テーブル３２４から削除し（Ｓ５００−７）、当該フローエントリは継続なしと判定し（Ｓ５００−８）、処理を終了する。制御装置３００は、回数閾値（例えば、第３値）を適切に設定することで、スイッチ２００が、第１時間の間、疑似パケット以外のパケットで、当該フローエントリに該当するパケットを受信していないと判定することができる。そして、スイッチ２００は、当該フローエントリを削除することができる。
【００８９】
図１４は、継続判定テーブル３２４の例を示す図である。以下、継続判定処理Ｓ５００を実行する前の継続判定テーブル３２４が、図１４に示す状態である場合について説明する。なお、フローテーブルは図３、制御装置３００が抽出したフローエントリは図１０であるものとする。また、時間閾値は、３００秒とする。さらに、回数閾値は、６回とする。
【００９０】
まず、抽出したフローエントリのフローエントリ２（マッチング番号２）について説明する。制御装置３００は、継続判定テーブル３２４に、マッチング番号２が存在しないので（図１６のＳ５００−１のＮｏ）、マッチング番号２及びカウンタの初期値０を継続判定テーブル３２４に追加する（図１６のＳ５００−２）。制御装置３００は、フローエントリ２の経過時間が、図１３より２００であるので、時間閾値（３００）未満であり（図１６のＳ５００−３のＮｏ）、マッチング番号２のカウンタを初期値０にする（図１６のＳ５００−５）。そして、制御装置３００は、マッチング番号２のカウンタが０であり、回数閾値（６）未満であると判定し（図１６のＳ５００−６のＮｏ）、フローエントリ２を継続ありと判定する（図１６のＳ５００−９）。
【００９１】
制御装置３００は、フローエントリ２が継続ありと判定しているため（図１５のＳ１００−４のＹｅｓ）、フローエントリ２の疑似パケットを生成し、スイッチ２００−１に送信する（図１５のＳ４００）。
【００９２】
次に、抽出したフローエントリのフローエントリ３（マッチング番号３）について説明する。制御装置３００は、継続判定テーブル３２４に、マッチング番号３が存在する（図１６のＳ５００−１のＹｅｓ）と判定する。そして、制御装置３００は、フローエントリ３の経過時間が、図１３より３００であるので、時間閾値（３００）以上であり（図１６のＳ５００−３のＹｅｓ）、マッチング番号３のカウンタをインクリメントし、６とする（図１６のＳ５００−４）。そして、制御装置３００は、マッチング番号３のカウンタが６であり、回数閾値（６）以上であると判定し（図１６のＳ５００−６のＹｅｓ）、マッチング番号３を継続判定テーブル３２４から削除し（図１６のＳ５００−７）、フローエントリ３を継続なしと判定する（図１６のＳ５００−８）。
【００９３】
制御装置３００は、フローエントリ３が継続なしと判定しているため（図１５のＳ１００−４のＮｏ）、フローエントリ３の疑似パケットを生成せずに、フローテーブル制御処理Ｓ１００を終了する。
【００９４】
図１７は、継続判定処理Ｓ５００実行後の継続判定テーブル３２４の例を示す図である。上述したように、継続判定テーブル３２４は、マッチング番号２が追加され、カウンタが初期値である０となっている。また、継続判定テーブル３２４は、マッチング番号３が削除されている。
【００９５】
第２の実施の形態において、制御装置３００は、所定の時間実行されないフローエントリに対して、疑似パケットを生成しないことで、フローテーブルから削除されるように制御する。これにより、所定時間実行されないような実行頻度の低いフローエントリが、フローテーブルに長時間記憶されることが抑制され、スイッチ２００のメモリが効率的に使用できる。
【００９６】
以上の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
【００９７】
（付記１）
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置が実行するプログラムであって、
前記スイッチから前記フローテーブルを取得する取得処理と、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成処理と、
生成した前記疑似パケットを前記スイッチに送信する送信処理と、
を実行させる制御プログラム。
【００９８】
（付記２）
前記取得処理は、周期時間ごとに実行される
付記１記載の制御プログラム。
【００９９】
（付記３）
前記生成処理は、第１時間の間、前記スイッチが、前記疑似パケット以外のパケットを受信していないと判定した場合、前記疑似パケットを生成しない
付記２記載の制御プログラム。
【０１００】
（付記４）
前記フローテーブルは、前記フローエントリが前回実行されてから経過した経過時間を含み、
前記生成処理は、前記一致したフローエントリの経過時間が第２時間以上である場合、カウンタをインクリメントし、前記一致したフローエントリの経過時間が前記第２時間未満である場合、前記カウンタをリセットし、
前記カウンタが第３値以上である場合、前記第１時間の間、前記スイッチが、前記疑似パケット以外のパケットを受信していないと判定する
付記３記載の制御プログラム。
【０１０１】
（付記５）
前記周期時間は、前記スイッチにおける前記所定時間に基づき決定される
付記２記載の制御プログラム。
【０１０２】
（付記６）
前記第２時間は、前記周期時間に基づき決定される
付記４記載の制御プログラム。
【０１０３】
（付記７）
前記通信システムはオープンフロープロトコルに準拠し、前記スイッチはオープンフロースイッチを含み、前記制御装置はオープンフローコントローラを含む
付記１記載の制御プログラム。
【０１０４】
（付記８）  
前記取得処理は、前記スイッチに前記フローテーブルを送信するよう要求し、前記要求に応答した前記スイッチからの前記フローテーブルを含む応答を受信する
付記１記載の制御プログラム。
【０１０５】
（付記９）
前記制御装置は、前記スイッチを制御する制御接続と、前記スイッチが他のスイッチ及び通信装置と通信を行う通信接続とを有し、
前記生成処理は、前記通信接続を用いて前記生成した疑似パケットを送信する
付記１記載の制御プログラム。
【０１０６】
（付記１０）
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置であって、
前記スイッチから前記フローテーブルを取得する取得部と、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成する生成部と、
生成した前記疑似パケットを前記スイッチに送信する送信部とを、
有する制御装置。
【０１０７】
（付記１１）
パケットに対する処理を定義するフローエントリで構成され少なくとも宛先アドレスを含むマッチフィールドを含むフローテーブルを有し、前記フローテーブルに従い受信したパケットの処理を行い、所定時間以上実行されないフローエントリを前記フローテーブルから削除するスイッチと、前記スイッチを制御し、少なくとも宛先アドレスを含むマッチフィールドを含むエントリで構成されたマッチング情報を記憶する制御装置と、を有する通信システムにおける前記制御装置の制御方法であって、
前記スイッチから前記フローテーブルを取得し、
取得した前記フローテーブルのフローエントリのマッチフィールドと、前記マッチング情報のエントリのマッチフィールドとが一致したとき、マッチフィールドが一致したフローエントリに対応する疑似パケットを生成し、
生成した前記疑似パケットを前記スイッチに送信する
制御方法。
【符号の説明】
【０１０８】
１０          ：通信システム
１００        ：通信装置
２００        ：スイッチ
３００        ：制御装置
３１０        ：ＣＰＵ
３２０        ：ストレージ
３２１        ：パケット制御プログラム
３２２        ：フローテーブル制御プログラム
３２３        ：マッチング情報テーブル
３２４        ：継続判定テーブル
３３０        ：メモリ
３２２１      ：フローテーブル取得モジュール
３２２２      ：マッチング判定モジュール
３２２３      ：疑似パケット生成モジュール
３２２４      ：継続判定モジュール
Ｃ１          ：コンソールケーブル
Ｃ２          ：コンソールケーブル
Ｃ３          ：コンソールケーブル
Ｌ１          ：通信ケーブル
Ｌ２          ：通信ケーブル
Ｌ３          ：通信ケーブル
【図１】
2020005051.tif 000003
【図２】
2020005051.tif 000004
【図３】
2020005051.tif 000005
【図４】
2020005051.tif 000006
【図５】
2020005051.tif 000007
【図６】
2020005051.tif 000008
【図７】
2020005051.tif 000009
【図８】
2020005051.tif 000010
【図９】
2020005051.tif 000011
【図１０】
2020005051.tif 000012
【図１１】
2020005051.tif 000013
【図１２】
2020005051.tif 000014
【図１３】
2020005051.tif 000015
【図１４】
2020005051.tif 000016
【図１５】
2020005051.tif 000017
【図１６】
2020005051.tif 000018
【図１７】
2020005051.tif 000019