(57)【要約】【課題】スイッチ装置の挙動を再現させる検証パケットを生成する方法を提供する。【解決手段】検証パケット生成プログラムは、スイッチ装置のフローテーブルに登録されているフロー毎に、各フローを識別するために前記フローテーブルに記録されている識別情報に基づいて検証パケットを作成する処理、フロー毎に、スイッチ装置に到着したパケットの数を表す、フローテーブルに記録されているカウント値に基づいて検証パケットの数を決定する処理、フロー毎に、カウント値に基づいて決定した数の検証パケットを生成する処理、各フローのパケットがスイッチ装置に最後に到着した時刻を表す、フローテーブルに記録されている時間情報および各フローについてのカウント値に基づいて、生成された検証パケットの送信順序を決定する処理、生成された検証パケットを送信順序に従う順番に並べて出力する処理、をプロセッサに実行させる。【選択図】図１５
2019201342.tif 000002
【特許請求の範囲】
【請求項１】
フローテーブルを用いてパケットを処理するスイッチ装置から前記フローテーブルを取得し、
前記フローテーブルに登録されているフロー毎に、各フローを識別するために前記フローテーブルに記録されている識別情報に基づいて検証パケットを作成し、
前記フロー毎に、前記スイッチ装置に到着したパケットの数を表す、前記フローテーブルに記録されているカウント値に基づいて検証パケットの数を決定し、
前記フロー毎に、前記カウント値に基づいて決定した数の検証パケットを生成し、
各フローのパケットが前記スイッチ装置に最後に到着した時刻を表す、前記フローテーブルに記録されている時間情報、および各フローについての前記カウント値に基づいて、生成された前記検証パケットの送信順序を決定し、
生成された前記検証パケットを前記送信順序に従う順番に並べて出力する
処理をプロセッサに実行させる検証パケット生成プログラム。
【請求項２】
前記スイッチ装置は、複数の入力ポートを備え、
検証パケットを生成する処理は、前記入力ポート毎に実行される
ことを特徴とする請求項１に記載の検証パケット生成プログラム。
【請求項３】
各入力ポートに到着したパケットの数および各入力ポートに到着したパケットの情報量を表す統計情報を前記スイッチ装置から取得し、
前記入力ポート毎に、前記統計情報に基づいて、到着したパケットの平均パケット長を計算し、
前記入力ポート毎に、各検証パケットの長さが前記平均パケット長と一致するように各検証パケットのデータ領域の長さを調整する
処理をプロセッサにさらに実行させる請求項２に記載の検証パケット生成プログラム。
【請求項４】
前記識別情報は、パケットの宛先アドレスを含み、
検証パケットを作成する処理は、対応するフローの識別情報に含まれる宛先アドレスを検証パケットのヘッダに設定する処理を含む
ことを特徴とする請求項１に記載の検証パケット生成プログラム。
【請求項５】
前記検証パケットの送信順序を決定する処理は、
前記フロー毎に、前記時間情報および前記カウント値に基づいて、前記スイッチ装置に実際に到着した各パケットの到着時刻を推定し、
各パケットの到着時刻に基づいて、前記スイッチ装置に実際に到着したパケットの到着順序を判定し、
前記スイッチ装置に実際に到着したパケットの到着順序に従って、前記スイッチ装置に実際に到着したパケットに対応して生成される検証パケットの送信順序を決定する、処理を含む
ことを特徴とする請求項１に記載の検証パケット生成プログラム。
【請求項６】
フローテーブルを用いてパケットを処理するスイッチ装置の挙動を検証するための検証パケットを生成する検証パケット生成装置であって、
前記フローテーブルを取得する取得部と、
前記フローテーブルに登録されているフロー毎に、各フローを識別するために前記フローテーブルに記録されている識別情報に基づいて検証パケットを作成する作成部と、
前記フロー毎に、前記スイッチ装置に到着したパケットの数を表す、前記フローテーブルに記録されているカウント値に基づいて検証パケットの数を決定し、前記カウント値に基づいて決定した数の検証パケットを生成する生成部と、
各フローのパケットが前記スイッチ装置に最後に到着した時刻を表す、前記フローテーブルに記録されている時間情報、および各フローについての前記カウント値に基づいて、前記生成部により生成された検証パケットの送信順序を決定する決定部と、
前記生成部により生成された検証パケットを前記送信順序に従って並べて出力する出力部と、
を備える検証パケット生成装置。
【請求項７】
フローテーブルを用いてパケットを処理するスイッチ装置の挙動を検証する検証システムであって、
検証パケット生成装置と、
測定装置と、を備え、
前記検証パケット生成装置は、
前記フローテーブルを取得する取得部と、
前記フローテーブルに登録されているフロー毎に、各フローを識別するために前記フローテーブルに記録されている識別情報に基づいて検証パケットを作成する作成部と、
前記フロー毎に、前記スイッチ装置に到着したパケットの数を表す、前記フローテーブルに記録されているカウント値に基づいて検証パケットの数を決定し、前記カウント値に基づいて決定した数の検証パケットを生成する生成部と、
各フローのパケットが前記スイッチ装置に最後に到着した時刻を表す、前記フローテーブルに記録されている時間情報、および各フローについての前記カウント値に基づいて、前記生成部により生成された検証パケットの送信順序を決定する決定部と、を備え、
前記測定装置は、前記送信順序に従って前記検証パケット生成装置により生成された検証パケットを前記スイッチ装置に送信する
ことを特徴とする検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信機器を検証するための検証パケットを生成する装置、および検証パケットを用いて通信機器を検証するシステムに係わる。
【背景技術】
【０００２】
ネットワークで障害が発生した場合、システム管理者は、その原因を調査する。このとき、例えば、通信機器の設定の変更（経路の切替え、ソフトウェアの更新など）に起因して障害が発生した場合には、システム管理者は、通信ログを取得することにより、比較的容易に原因を特定できる。
【０００３】
ところが、通信機器の設定が変更されていないにもかかわらず障害が発生したときは、その原因がパケットのプロトコル種別またはパケットの転送量に起因する可能性がある。この場合、現象を再現するためには、障害が発生したときに流れていたパケットと同等の検証パケットを生成することが好ましい。そして、障害の原因と考えられる通信機器に検証パケットを与えることにより、障害の原因が調査される。検証パケットは、例えば、通信機器において転送パケットをキャプチャすることにより得られる。
【０００４】
なお、転送装置内に設定されているフローエントリ情報を利用して障害発生時の障害箇所を特定する方法が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１５２４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
転送パケットをキャプチャすることで検証パケットを取得する方法においては、長い期間にわたって転送パケットをストレージに保存し続けることが要求される。このため、高速ネットワークにおいては、転送パケットを保存するために巨大なストレージが必要になる。例えば、数１０〜数１００Ｇｂｐｓの処理能力を有するスイッチ装置においてパケットをキャプチャするケースでは、最小のパケットサイズで見積もった場合であっても、毎秒、数Ｇバイトのパケットが蓄積される。よって、この方法で検証パケットを用意する方法は、実現が困難である。加えて、ストレージに膨大な量のパケットが保存される場合、障害の発生に係わるパケットが保存されている記憶領域を特定することは容易でない。したがって、従来の技術では、検証パケットを生成して通信機器のパケット処理を再現させることは困難である。
【０００７】
本発明の１つの側面に係わる目的は、スイッチ装置が過去に行ったパケット処理を再現させる検証パケットを生成する装置および方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の１つの態様の検証パケット生成プログラムは、フローテーブルを用いてパケットを処理するスイッチ装置から前記フローテーブルを取得し、前記フローテーブルに登録されているフロー毎に、各フローを識別するために前記フローテーブルに記録されている識別情報に基づいて検証パケットを作成し、前記フロー毎に、前記スイッチ装置に到着したパケットの数を表す、前記フローテーブルに記録されているカウント値に基づいて検証パケットの数を決定し、前記フロー毎に、前記カウント値に基づいて決定した数の検証パケットを生成し、各フローのパケットが前記スイッチ装置に最後に到着した時刻を表す、前記フローテーブルに記録されている時間情報、および各フローについての前記カウント値に基づいて、生成された前記検証パケットの送信順序を決定し、生成された前記検証パケットを前記送信順序に従う順番に並べて出力する処理をプロセッサに実行させる。
【発明の効果】
【０００９】
上述の態様によれば、スイッチ装置が過去に行ったパケット処理を再現させる検証パケットを生成できる。
【図面の簡単な説明】
【００１０】
【図１】オープンフローネットワークおよびオープンフロースイッチの一例を示す図である。
【図２】フローテーブルの一例を示す図である。
【図３】フローテーブルおよび統計情報の保存について説明する図である。
【図４】フロー毎に検証パケットを作成する方法の一例を示す図である。
【図５】検証パケットを入力ポートに割り当てる処理の一例を示す図である。
【図６】カウント値に対応する数の検証パケットを生成する処理の一例を示す図である。
【図７】フローテーブルの一例を示す図である。
【図８】統計情報の一例を示す図である。
【図９】パケットが伝送された時間領域を推定する方法の一例を示す図である。
【図１０】パケットの到着時刻を推定する方法の一例を示す図である。
【図１１】検証パケットの送信順序を決定する方法の一例を示す図である。
【図１２】検証パケットのパケット長を調整する方法の一例を示す図である。
【図１３】生成した検証パケットを用いてスイッチ装置を検証する方法の一例を示す図である。
【図１４】スイッチ装置の動作を検証する手順の一例を示すフローチャートである。
【図１５】検証パケットを生成する処理の一例を示すフローチャートである。
【図１６】検証パケット生成装置の一例を示す図である。
【図１７】検証パケット生成装置ハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
柔軟なネットワークを構築するための技術の１つとしてOpenFlowが提案され、実用化されている。OpenFlowにより実現されるネットワークは、図１（ａ）に示すように、複数のオープンフロースイッチ（ＯＦ−ＳＷ：OpenFlow Switch）１００およびオープンフローコントローラ（OpenFlow Controller）２００を備える。そして、各オープンフロースイッチ１００は、オープンフローコントローラ２００による設定に従ってパケットを処理する。
【００１２】
オープンフロースイッチ１００は、図１（ｂ）に示すように、ＣＰＵ１１０、メモリ１２０、スイッチ１３０を備える。また、オープンフロースイッチ１００は、複数の入力ポートＰ１〜Ｐｍおよび複数の出力ポートＰ１〜Ｐｎを備える。なお、入力ポートＰ１〜Ｐｍの数および出力ポートＰ１〜Ｐｎの数は、互いに同じであってもよいし、互いに異なっていてもよい。
【００１３】
ＣＰＵ１１０は、オープンフローコントローラ２００から与えられる指示に従ってフローテーブル１２１を作成する。メモリ１２０は、フローテーブル１２１および統計情報１２２を格納する。統計情報１２２は、オープンフロースイッチ１００により実行されたパケット処理を表す。例えば、統計情報１２２は、入力ポート毎に、オープンフロースイッチ１００に到着したパケットの数およびオープンフロースイッチ１００に到着したパケットの総情報量を表す。スイッチ１３０は、フローテーブル１２１に従って受信パケットを処理する。
【００１４】
フローテーブル１２１は、１または複数のフローエントリにより構成される。各フローエントリには、対応するフローに対する処理が記述されている。具体的には、各フローエントリは、「マッチ条件」および「指示（Instructions）」を含む。マッチ条件は、受信パケットが属するフローを識別する識別情報に相当する。指示は、マッチ条件に適合する受信パケットに対する処理を記述する。そして、スイッチ１３０は、受信パケットのヘッダ情報でフローテーブル１２１のマッチ条件をサーチし、対応する処理を実行する。
【００１５】
オープンフローコントローラ２００は、各オープンフロースイッチ１００のフローテーブル１２１を一元的に管理する。また、オープンフローコントローラ２００は、各オープンフロースイッチ１００のフローテーブル１２１の内容を更新できる。したがって、オープンフローコントローラ２００は、ネットワークの構成および動作を制御することができる。
【００１６】
検証システム１は、各オープンフロースイッチ１００に接続される。或いは、検証システム１は、ユーザまたはシステム管理者により指定される１または複数のオープンフロースイッチ１００に接続されるようにしてもよい。
【００１７】
検証システム１は、検証パケット生成装置２および測定装置３を備える。検証パケット生成装置２は、検証パケットを生成する。検証パケットは、オープンフロースイッチ１００の挙動を検証するために使用される。具体的には、検証パケットは、オープンフロースイッチ１００の過去の挙動を再現するために使用される。したがって、検証パケットは、過去にオープンフロースイッチ１００に入力されたパケットと同等の内容を有するように生成される。なお、検証パケット生成装置２は、オープンフロースイッチ１００の入力ポート毎に検証パケットを生成してもよい。測定装置３は、検証パケット生成装置２により生成される検証パケットをオープンフロースイッチ１００に与える。このとき、測定装置３は、検証パケット生成装置２により入力ポート毎に生成された検証パケットを対応する入力ポートに与える。
【００１８】
上述のネットワークにおいて障害が発生したときは、検証パケット生成装置２は、ユーザまたはシステム管理者から与えられる指示に応じて、検証パケットを生成する。この場合、ユーザまたはシステム管理者は、たとえば、障害発生時の直前の所定の期間を指定する。そうすると、検証パケット生成装置２は、指定された所定の期間にオープンフロースイッチ１００に入力されたパケットと同等の内容を有する検証パケットを生成する。そして、測定装置３は、検証パケット生成装置２により生成された検証パケットをオープンフロースイッチ１００に与える。これにより、障害発生時のオープンフロースイッチ１００の挙動が再現される。
【００１９】
図２は、フローテーブル１２１の一例を示す。なお、フローテーブル１２１は、各オープンフロースイッチ１００内に実装される。また、フローテーブル１２１は、オープンフローコントローラ２００から与えられる指示に基づいて作成および更新される。
【００２０】
フローテーブル１２１は、１または複数のフローエントリにより構成される。各フローエントリには、対応するフローに対して実行すべき処理が記述されている。具体的には、各フローエントリは、「マッチ条件」「優先度」「カウント値」「指示」「タイムアウト値」「クッキー」を含む。
【００２１】
マッチ条件は、受信パケットが属するフローを識別する識別情報に相当する。この例では、マッチ条件は、入力ポートを識別する情報および宛先ＩＰアドレスから構成される。優先度は、各フローの優先度を表す。カウント値は、マッチ条件に適合する受信パケットの数を表す。すなわち、カウント値は、フロー毎に、オープンフロースイッチ１００に到着したパケットの数を表す、指示は、マッチ条件に適合する受信パケットに対してオープンフロースイッチ１００が実行すべき処理を記述する。タイムアウト値は、マッチ条件に適合するパケットがオープンフロースイッチ１００に到着したときに所定の値に設定される。また、タイムアウト値は、時間経過に応じてデクリメントされる。したがって、タイムアウト値は、マッチ条件に適合するパケットがオープンフロースイッチ１００に最後に到着した時刻を表す時間情報に相当する。クッキーは、対応するフローのクッキー情報を表す。
【００２２】
オープンフロースイッチ１００にパケットが到着すると、スイッチ１３０は、フローテーブル１２１に従ってそのパケットを処理する。例えば、オープンフロースイッチ１００に入力ポートＰ１に宛先ＩＰアドレスが「192.168.247.0」であるパケットが到着したときは、そのパケットは、フローテーブル１２１のフローエントリ１のマッチ条件に適合する。この場合、スイッチ１３０は、フローエントリ１の「指示」に従って受信パケットを処理する。すなわち、受信パケットは、出力ポートＰ１００を介して出力される。このとき、フローエントリ１の「カウント値」がインクリメントされ、また、フローエントリ１の「タイムアウト値」が所定の値に設定される。更に、統計情報１２１が更新される。
【００２３】
なお、フローテーブル１２１および統計情報１２２は、図３に示すように、定期的にメモリに保存される。すなわち、定期的に（例えば、１秒間隔）、フローテーブル１２１および統計情報１２２のバックアップファイルが作成される。この場合、各バックアップファイルには、フローテーブル１２１および統計情報１２２が作成された日時を表す時刻情報が付与される。なお、バックアップファイルは、オープンフロースイッチ１００内に実装されるメモリに保存されてもよいし、オープンフロースイッチ１００の外部に設けられるメモリに保存されてもよい。
【００２４】
次に、検証パケット生成装置２が検証パケットを生成する方法について記載する。以下の記載では、検証パケット生成装置２は、ユーザまたはシステム管理者から与えられる指示に応じて、検証対象のオープンフロースイッチ１００を検証するための検証パケットを生成するものとする。この場合、検証パケット生成装置２は、検証対象のオープンフロースイッチ１００からフローテーブル１２１および統計情報１２２を取得する。なお、「オープンフロースイッチ１００から取得」は、図３を参照しながら説明したバックアップファイルを取得する動作を含むものとする。
【００２５】
検証パケットは、上述したように、指定された時間帯（以下、目的時間帯）におけるオープンフロースイッチ１００の挙動を再現するために生成される。よって、検証パケット生成装置２は、目的時間帯においてオープンフロースイッチ１００にどのようなパケットが入力していたのかを検出する。ここで、フロースイッチ１２１および統計状態１２２は、オープンフロースイッチ１００がどのようなパケット処理を実行したのかを表す。したがって、検証パケット生成装置２は、フロースイッチ１２１および統計状態１２２を取得する。
【００２６】
なお、フロースイッチ１２１および統計状態１２２は、図３を参照しながら説明したように、定期的に収集され、バックアップファイルとして保存される。ここで、各バックアップファイルには、フローテーブル１２１および統計情報１２２が作成された日時を表す時刻情報が付与されている。よって、検証パケット生成装置２は、目的時間帯におけるオープンフロースイッチ１００のパケット処理を表すフロースイッチ１２１および統計状態１２２を容易に取得できる。
【００２７】
Ｓ１：検証パケットの作成
検証パケット生成装置２は、図４に示すように、フローテーブル１２１の各フローエントリに対応する検証パケットを作成する。ここで、オープンフロースイッチ１００は、フローテーブル１２１に記録されているマッチ条件に従って受信パケットを処理する。したがって、検証パケット生成装置２は、各フローに対して、マッチ条件の内容に基づく検証パケットを作成する。たとえば、フローエントリ１のマッチ条件は、宛先ＩＰアドレス「192.168.247.0」を含んでいる。よって、フローエントリ１に対応する検証パケット１の宛先ＩＰアドレスフィールドには「192.168.247.0」が設定される。同様に、フローエントリ２に対応する検証パケット２の宛先ＩＰアドレスフィールドには「192.168.247.0」が設定される。なお、検証パケット内の他のフィールドは、オープンフロースイッチ１００において参照されないので、どのような値が設定されてもよい。
【００２８】
上述の例では、検証パケット１の宛先ＩＰアドレスは「192.168.247.0」である。よって、検証パケット１が入力ポートＰ１に与えられると、オープンフロースイッチ１００において、フローエントリ１のマッチ条件が適合する。そうすると、オープンフロースイッチ１００は、フローエントリ１の「指示」に従って、出力ポートＰ１００を介して検証パケット１を出力する。
【００２９】
Ｓ２：入力ポートへの割当て
検証パケット生成装置２は、フローテーブル１２１に記録されているマッチ条件に従って、Ｓ１で作成した検証パケットをそれぞれオープンフロースイッチ１００の対応する入力ポートに割り当てる。例えば、図５に示すように、フローエントリ１、２のマッチ条件は、それぞれ入力ポートＰ１に到着するパケットを識別する。したがって、フローエントリ１、２のマッチ条件に基づいてそれぞれ作成される検証パケット１、２は、いずれも入力ポートＰ１に割り当てられる。また、フローエントリ３のマッチ条件は、入力ポートＰ２に到着するパケットを識別する。よって、フローエントリ３のマッチ条件に基づいて作成される検証パケット３は、入力ポートＰ２に割り当てられる。
【００３０】
Ｓ３：検証パケットの生成
検証パケット生成装置２は、フロー毎に、フローテーブル１２１に記録されているカウント値に従って、生成すべき検証パケットの数を決定する。そして、検証パケット生成装置２は、フロー毎に、カウント値に基づいて決定した数の検証パケットを生成する。図６に示す例では、例えば、フローエントリ１のカウント値は２５０である。このカウント値は、フロー１に属する２５０個のパケットがオープンフロースイッチ１００に入力されたことを意味する。よって、この場合、フロー１に対して２５０個の検証パケット１が生成される。検証パケット１は、図６では、入力ポートＰ１に割り当てられている検証パケット「No.1」に相当する。また、フローエントリ２のカウント値は４１である。この場合、フロー２に対して４１個の検証パケット２が生成される。検証パケット２は、図６では、入力ポートＰ１に割り当てられている検証パケット「No.2」に相当する。
【００３１】
このように、検証パケット生成装置２は、フローテーブル１２１に記録されているカウント値と同じ数の検証パケットを生成する。ここで、このカウント値は、オープンフロースイッチ１００に実際に到着して処理されたパケットの個数を表す。よって、カウント値と同じ数の検証パケットを生成して対応する入力ポートに与えると、オープンフロースイッチ１００が過去に実際に行ったパケット処理が再現される。
【００３２】
ただし、オープンフロースイッチ１００が過去に処理したパケットと同数の検証パケットを生成するだけでは、オープンフロースイッチ１００が過去に行ったパケット処理を精度よく再現することはできない。すなわち、オープンフロースイッチ１００の挙動は「どのような種別のパケットが、どのような順番でオープンフロースイッチ１００に到着したのか」に依存する。よって、検証パケット生成装置２は、過去に、どのような種別のパケットが、どのような順番でオープンフロースイッチ１００に到着したのかを推定する。そして、検証パケット生成装置２は、その推定結果に基づいて、検証パケットの送信順を決定する。
【００３３】
Ｓ４：到着時刻の推定
検証パケット生成装置２は、フローテーブル１２１および統計情報１２２に基づいて、過去にオープンフロースイッチ１００に到着したパケットの到着時刻を推定する。以下の記載では、図７に示すフローテーブル１２１および図８に示す統計情報１２２がメモリに保存されているものとする。図７に示すフローテーブル１２１および図８に示す統計情報１２２は、ユーザまたはシステム管理者により指定されたモニタ期間における、オープンフロースイッチ１００によるパケット処理を表す。ここで、フローテーブル１２１および統計情報１２２は、モニタ期間（例えば、１秒）ごとに収集され、メモリに保存される。すなわち、検証パケット生成装置２は、指定されたモニタ期間における、オープンフロースイッチ１００に到着した各パケットの到着時刻を推定する。
【００３４】
図７に示す例では、フローテーブル１２１には、５個のフローが登録されている。すなわち、フローテーブル１２１は、フローエントリ１〜５を含む。なお、この実施例では、説明を簡単にするために、１個の入力ポート（例えば、入力ポートＰ１）について記載するが、検証パケット生成装置２は、各入力ポートについてＳ４の処理を実行する。
【００３５】
フローテーブル１２１に記録されるタイムアウト値は、上述したように、マッチ条件に適合するパケットがオープンフロースイッチ１００に到着したときに所定の初期値に設定される。この例では、初期値は１００００００である。また、タイムアウト値は、１μ秒ごとにデクリメントされる。
【００３６】
図８に示す例では、統計情報１２２は、モニタ期間内にオープンフロースイッチ１００の入力ポートＰ１に２１０００００個のパケットが到着したことを表している。なお、この値は、図７に示すフローテーブル１２１のカウント値の合計と一致する。また、統計情報１２２は、モニタ期間内にオープンフロースイッチ１００の入力ポートＰ１に到着したパケットの総情報量が１２５０００００００バイトであることを表している。
【００３７】
検証パケット生成装置２は、フローテーブル１２１に記録されているタイムアウト値に基づいて、フロー毎に、モニタ期間内でパケットが伝送された時間領域を特定する。例えば、図９に示すように、モニタ期間は１秒であるものとする。また、タイムアウト値の初期値は１００００００であり、タイムアウト値は１μ秒ごとにデクリメントされる。この場合、オープンフロースイッチ１００にパケットが到着するごとに、タイムアウト値は１００００００に初期化される。そして、時刻「０．６」に最後のパケットがオープンフロースイッチ１００に到着した後は、タイムアウト値は１μ秒ごとにデクリメントされる。この場合、モニタ期間の終了時刻において、タイムアウト値は６０００００である。すなわち、モニタ期間の終了時刻におけるタイムアウト値は、オープンフロースイッチ１００に最後のパケットが到着した時刻を表す。よって、「モニタ期間の開始時刻（０）」から「モニタ期間の終了時におけるタイムアウト値が表す時刻（０．６）」までの期間は、パケットが伝送されていたと推定される。
【００３８】
例えば、図７に示すフローテーブルでは、フローエントリ３のタイムアウト値は５０００００である。この値は、モニタ期間の開始時刻から５０００００μ秒（即ち、０．５００秒）が経過したときに、フロー３のマッチ条件に適合する最後のパケットがオープンスイッチ１００に到着したことを表している。すなわち、検証パケット生成装置２は、図１０に示すように、時間領域０．０００〜０．５００秒においてフロー３のパケットが伝送されていたと推定する。
【００３９】
また、検証パケット生成装置２は、フローテーブル１２１に記録されているカウント値に基づいて、オープンスイッチ１００に到着したパケットの個数を検出する。例えば、フローエントリ３に記録されているカウント値は７０００００である。この場合、フロー３において、０．０００〜０．５００秒に７０００００個のパケットがオープンスイッチ１００に到着したと推定される。ここで、各フローにおいて、パケットが等間隔で伝送されるものと仮定する。そうすると、フロー３において、０．０００〜０．５００秒における平均パケットレートは、図１０に示すように、１４０００００パケット／秒である。
【００４０】
同様に、各フローについて、オープンスイッチ１００にパケットが到着する時間領域およびその時間領域における平均パケットレートが計算される。各フローについての計算結果は下記の通りである。
フロー１：0.000〜1.000秒において900000パケット／秒でパケットが到着
フロー２：0.000〜0.600秒において333333パケット／秒でパケットが到着
フロー３：0.000〜0.500秒において1400000パケット／秒でパケットが到着
フロー４：0.000〜0.200秒において250000パケット／秒でパケットが到着
フロー５：0.000〜0.100秒において2500000パケット／秒でパケットが到着
【００４１】
検証パケット生成装置２は、各パケットがオープンスイッチ１００に到着した時刻を推定する。すなわち、各パケットの推定到着時刻が計算される。例えば、フロー４においては、250000パケット／秒でパケットがオープンスイッチ１００に到着する。したがって、フロー４において、１個目、２個目、３個目、．．．のパケットの推定到着時刻は、それぞれ4.000μ秒、8.000μ秒、12.000μ秒、．．．である。
【００４２】
同様に、各フローについて、各パケットの推定到着時刻が計算される。各フローについての計算結果は、図１１（ａ）に示す通りである。この実施例では、フロー毎に、モニタ期間内の各パケットの推定到着時刻が記録される。なお、推定到着時刻は、モニタ期間の開始時刻を基準として表される。
【００４３】
Ｓ５：送信順序の決定
検証パケット生成装置２は、各パケットの推定到着時刻に基づいて、各パケットの到着順序を判定する。図１１（ａ）に示す例では、モニタ期間内にオープンフロースイッチ１００に最初に到着したパケットが、フロー５の１番目のパケットであると判定される。また、２番目に到着したパケットがフロー３の１番目のパケットであると判定される。３番目に到着したパケットがフロー５の２番目のパケットであると判定される。４番目に到着したパケットがフロー１の１番目のパケットであると判定される。同様に、後続のパケットについて到着順序が判定される。なお、図１１（ａ）に示す括弧付きの数字は、オープンフロースイッチ１００に到着した順番を表す。この実施例では、１〜２０番目のパケットについて判定結果が表記されている。
【００４４】
検証パケットは、オープンフロースイッチ１００に実際に到着したパケットの代わりに生成される。即ち、モニタ時間内にＫ個のパケットがオープンフロースイッチ１００に実際に到着したときには、Ｋ個の検証パケットが生成される。このとき、フローｉ（ｉ＝１、２、３、．．．）に属するＫｉ個のパケットがオープンフロースイッチ１００に実際に到着したときには、フローｉに対してＫｉ個の検証パケットが生成される。そして、検証パケットの送信順序は、オープンフロースイッチ１００に実際に到着したパケットの到着順序と同じになるように決定される。
【００４５】
図１１（ｂ）は、検証パケットの送信順序を表す検証パケットパターンの一例を示す。なお、検証パケットパターンは、検証パケットを送信する順序を表す。
【００４６】
この実施例では、図１１（ａ）に示すように、モニタ期間内にオープンフロースイッチ１００に最初に到着したパケットはフロー５に属する。よって、図１１（ｂ）に示すように、フローエントリ５のマッチ条件に基づいて生成される検証パケット５が検証パケットパターンの１番目に設定される。また、オープンフロースイッチ１００に２番目に到着したパケットはフロー３に属する。よって、フローエントリ３のマッチ条件に基づいて生成される検証パケット３が検証パケットパターンの２番目に設定される。さらに、オープンフロースイッチ１００に３番目に到着したパケットはフロー５に属する。よって、フローエントリ５のマッチ条件に基づいて生成された検証パケット５が検証パケットパターンの３番目に設定される。以下、同様に、検証パケットを並べることにより検証パケットパターンが作成される。
【００４７】
このように、検証パケット生成装置２は、フローテーブル１２１に記録されているタイムアウト値およびカウント値に基づいて、検証パケットの送信順序を決定する。
【００４８】
Ｓ６：パケット長の決定
検証パケット生成装置２は、統計情報１２２に基づいて、オープンフロースイッチ１００の入力ポート毎に転送レートを計算する。ここで、統計情報１２２は、図１２に示すように、所定のモニタ期間（例えば、１秒）においてオープンフロースイッチ１００の各入力ポートに到着したパケットの総情報量を記録している。したがって、検証パケット生成装置２は、統計情報１２２に基づいて、入力ポート毎に転送レートを計算できる。この実施例では、入力ポートＰ１、Ｐ２の転送レートは、それぞれ１０Ｇｂｐｓ、２Ｇｂｐｓである。
【００４９】
加えて、検証パケット生成装置２は、統計情報１２２に基づいて、入力ポート毎に平均パケット長を計算する。ここで、図１２に示すように、統計情報１２２には、入力ポート毎に、総情報量に加えてパケット数が記録されている。ここで、パケット数は、オープンフロースイッチ１００に到着したパケットの数を表す。したがって、検証パケット生成装置２は、統計情報１２２に基づいて、入力ポート毎に平均パケット長を計算できる。例えば、総情報量を表すカウント値を、パケット数を表すカウント値で割算することにより、平均パケット長が計算される。この実施例では、入力ポートＰ１、Ｐ２に到着するパケットの平均パケット長は、それぞれ６００バイト、３００バイトである。
【００５０】
この後、検証パケット生成装置２は、入力ポート毎に、各検証パケットの長さが対応する平均パケット長と一致するように各検証パケットのデータ領域の長さを調整する。データ領域は、任意のデータパターンで実現することができる。
【００５１】
Ｓ７：検証パケットの出力
検証パケット生成装置２は、検証パケットを上述した送信順序に従う順番で出力する。すなわち、検証パケット生成装置２は、入力ポート毎に、Ｓ５において決定した送信順序に従ってＳ１〜Ｓ３において生成した検証パケットを並べる。図１２に示す例では、フロー５に対応する検証パケット、フロー３に対応する検証パケット、．．．が順番に入力ポートＰ１に与えられるように、検証パケットが並べられる。ここで、検証パケットのデータ領域は、パケット長が統計情報１２２に基づいて計算された平均パケット長と一致するように作成される。例えば、入力ポートＰ１に与えられる各検証パケットのパケット長は６００バイトである。
【００５２】
検証パケット生成装置２により生成された検証パケットは、図１３に示すように、測定装置３に送られる。そうすると、測定装置３は、検証パケットをオープンフロースイッチ１００に送信する。ここで、検証パケットは、オープンフロースイッチ１００に過去に実際に入力されたパケットと等価となるように生成されている。よって、測定装置３は、障害発生時のオープンフロースイッチ１００の挙動を再現させるテストを実行できる。
【００５３】
このように、本発明の実施形態に係わる検証パケット生成方法においては、フローテーブル１２１および統計情報１２２に基づいて検証パケットが生成される。ここで、フローテーブル１２１および統計情報１２２は、オープンフロースイッチ１００において実際に行われたパケット処理を表す。よって、検証パケット生成装置２は、フローテーブル１２１および統計情報１２２を使用することにより、オープンフロースイッチ１００に実際に入力されたパケットと等価な検証パケットを生成できる。また、モニタ期間ごとのフローテーブル１２１および統計情報１２２の情報量は、数Ｍバイト程度である。よって、オープンフロースイッチ１００に実際に到着したパケットを蓄積する構成と比較すると、検証パケットを生成するために必要なストレージの容量を大幅に小さくできる。
【００５４】
図１４は、スイッチ装置の動作を検証する手順の一例を示すフローチャートである。ここで、オープンフロースイッチ１００を含むネットワークにおいて障害が発生したものとする。
【００５５】
Ｓ１１において、検証パケット生成装置２に測定指示が与えられる。測定指示は、例えば、オープンフロースイッチ１００の挙動を再現すべき期間を指定する。この場合、例えば、障害が発生した時刻の直前の所定の期間が指定される。
【００５６】
Ｓ１２において、検証パケット生成装置２は、検証パケットを生成する。このとき、測定指示により指定された期間にオープンフロースイッチ１００に実際に到着したパケットと等価な検証パケットが生成される。そして、生成された検証パケットは、測定装置３に与えられる。
【００５７】
Ｓ１３において、測定装置３は、検証パケットをオープンフロースイッチ１００に送信する。ここで、検証パケットは、オープンフロースイッチ１００に実際に入力されたパケットと等価となるように生成されている。よって、オープンフロースイッチ１００は、障害が発生した時刻の直前に行った処理と実質的に同じ処理を行う。すなわち、オープンフロースイッチ１００の挙動が再現される。
【００５８】
Ｓ１４において、測定装置３は、オープンフロースイッチ１００の状態をモニタする。これにより、障害発生時のオープンフロースイッチ１００の処理が検証される。
【００５９】
なお、検証パケット生成装置２は、上述したＳ４でフロー毎に計算した転送レートを測定装置３に通知してもよい。この場合、測定装置３は、通知された転送レートに従って、オープンフロースイッチ１００に検証パケットを送信する。この方法によれば、オープンフロースイッチ１００の挙動がより精度よく再現される。
【００６０】
図１５は、検証パケットを生成する処理の一例を示すフローチャートである。図１４の示すフローチャートの処理は、図１４に示すＳ１２に相当する。
【００６１】
Ｓ２１において、検証パケット生成装置２は、フローテーブル１２１および統計情報１２２を取得する。このとき、検証パケット生成装置２は、ユーザまたはシステム管理者により指定されるモニタ期間に対応するフローテーブル１２１および統計情報１２２を取得する。Ｓ１〜Ｓ７は、図４〜図１２を参照しながら説明した通りである。
【００６２】
なお、図１５に示すフローチャートにおいて、各ステップの順番を変更して実行してもよい。例えば、検証パケット生成装置２は、Ｓ１〜Ｓ３の前にＳ４〜Ｓ６の処理を実行してもよい。この場合、Ｓ４〜Ｓ６において、指定されたモニタ期間に、どのような種別のパケットが、どのような順番でオープンフロースイッチ１００に到着したのかが検出される。続いて、Ｓ１〜Ｓ３において、Ｓ４〜Ｓ６において検出されたパケットと等価な検証パケットが生成される。そして、検証パケットは、Ｓ４〜Ｓ６において検出された順番に従って出力される。
【００６３】
図１６は、検証パケット生成装置２の一例を示す。検証パケット生成装置２は、取得部１１、作成部１２、生成部１３、決定部１４、出力部１５を備える。なお、検証パケット生成装置２は、図１６に示していない他の機能を備えていてもよい。
【００６４】
取得部１１は、フローテーブル１２１を取得する。作成部１２は、フローテーブル１２１に登録されているフロー毎に、マッチ条件に基づいて検証パケットを作成する。図４は作成部１２の処理の一例を示す。生成部１３は、フロー毎に、フローテーブル１２１に記録されているカウント値に基づいて検証パケットの数を決定し、カウント値に基づいて決定した数の検証パケットを生成する。図６は生成部１３の処理の一例を示す。決定部１４は、フローテーブル１２１に記録されているタイムアウト値およびカウント値に基づいて、生成部１３により生成された検証パケットの送信順序を決定する。図７〜図１１は決定部１４の処理の一例を示す。出力部１５は、生成部１３により生成された検証パケットを決定部１４により決定された送信順序に従って並べて出力する。図１２〜図１３は出力部１５の処理の一例を示す。
【００６５】
図１７は、検証パケット生成装置２のハードウェア構成の一例を示す図である。検証パケット生成装置２は、図１７に示すように、プロセッサ２１、メモリ２２、入力デバイス２３、インタフェースデバイス２４を備える。プロセッサ２１、メモリ２２、入力デバイス２３、インタフェースデバイス２４は、例えば、１または複数のバス２５により互いに接続される。
【００６６】
プロセッサ２１は、メモリ２２に格納されている検証パケット生成プログラムを実行することにより、図１５に示すフローチャートの処理を提供する。すなわち、取得部１１、作成部１２、生成部１３、決定部１４、出力部１５の機能は、プロセッサ２１により実現される。メモリ２２は、検証パケット生成プログラムを格納する。すなわち、メモリ２２は、検証パケット生成プログラムが記録されるコンピュータ読取り可能記録媒体の一例である。また、メモリ２２は、フローテーブル１２１および統計情報１２２を一時的に保存するために使用してもよい。入力デバイス２３は、キーボード、マウス、タッチパネル等により実現される。ユーザまたはシステム管理者は、入力デバイス２３を利用して、検証パケットの生成に係わる指示を検証パケット生成装置２に入力することができる。インタフェースデバイス２４は、検証パケット生成装置２とオープンフロースイッチ１００との間の通信、及び、検証パケット生成装置２と測定装置３との間の通信を提供する。
【００６７】
検証パケット生成装置２は、図１７に示していない他の回路またはデバイスを備えていてもよい。例えば、検証パケット生成装置２は、着脱可能記録媒体からデジタル情報を読み出すデバイスを備えていてもよい。この場合、検証パケット生成装置２は、着脱可能記録媒体に記録されている検証パケット生成プログラムを実行してもよい。
【符号の説明】
【００６８】
１  検証システム
２  検証パケット生成装置
３  測定装置
１１  取得部
１２  作成部
１３  生成部
１４  決定部
１５  出力部
２１  プロセッサ
２２  メモリ
１００  オープンフロースイッチ
１２１  フローテーブル
１２２  統計情報
【図１】
2019201342.tif 000003
【図２】
2019201342.tif 000004
【図３】
2019201342.tif 000005
【図４】
2019201342.tif 000006
【図５】
2019201342.tif 000007
【図６】
2019201342.tif 000008
【図７】
2019201342.tif 000009
【図８】
2019201342.tif 000010
【図９】
2019201342.tif 000011
【図１０】
2019201342.tif 000012
【図１１】
2019201342.tif 000013
【図１２】
2019201342.tif 000014
【図１３】
2019201342.tif 000015
【図１４】
2019201342.tif 000016
【図１５】
2019201342.tif 000017
【図１６】
2019201342.tif 000018
【図１７】
2019201342.tif 000019