(57)【要約】  本発明は、キャッシュヒット率の悪化を防止或いは低減する情報処理装置を提供する。その情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、そのフロー情報記憶手段に記憶された情報に基づいて、パケットの送信先である宛先コンピュータがそのパケットを適切に処理するために利用する示唆情報を、そのパケットに付与する第１のネットワークインタフェース及びそのパケットに付与しない第２のネットワークインタフェース、のいずれか一方へそのパケットを転送する切替手段と、を備える。
2015092973.tif 000002
【特許請求の範囲】
【請求項１】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、
前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第１の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む
情報処理装置。
【請求項２】
前記フロー識別子、前記パケットに係る環境状況情報、及び、前記フロー識別子と前記環境状況情報と前記示唆情報を与えるか否かを示す情報との対応を示すポリシーに基づいて、前記フロー識別子と前記ネットワークインタフェースとの対応を決定し、前記フロー情報記憶手段の内容を更新するフロー情報更新手段を更に含む、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記フロー情報更新手段は、前記宛先コンピュータの性能に係る性能情報を取得し、
前記環境状況情報は、前記性能情報を含む
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記性能情報は、前記宛先コンピュータに係るＣＰＵ使用率及びキャッシュヒット率である
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記フロー情報更新手段は、更に、前記パケットが流れるネットワークのトラフィック情報を取得し、
前記環境状況情報は、前記トラフィック情報を含む
ことを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記ポリシーのそれぞれは、前記ポリシー相互間における優先度を有する
ことを特徴とする請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記切替手段及び前記フロー情報更新手段のそれぞれは、オープンフローに対応する
ことを特徴とする請求項２乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、
前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
トラフィック制御方法。
【請求項９】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、
前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録した
コンピュータ読み取り可能な非一時的記録媒体。
【請求項１０】
プロセッサと、
プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、
前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トラフィック制御技術に関し、特にパケット転送のトラフィック制御技術に関する。
【背景技術】
【０００２】
パケット転送に関する様々な関連技術が知られている。そのような関連技術の１つとして、ネットワークから受信したパケットを効率よく処理する技術が開示されている。【０００３】
特許文献１は、キャッシュ制御装置の一例を開示する。特許文献１に記載のキャッシュ制御装置は、以下の構成を含む。【０００４】
領域設定手段は、書き込み領域をキャッシュメモリに設定する。ここで、その書き込み領域は、予め定められた量の受信データを書き込み可能な領域である。【０００５】
領域削除手段は、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する。【０００６】
領域設定手段は、受信データに対する処理ごとに、後続の受信データを書き込む位置に、その後続の受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する。ここで、その後続の受信データは、予め定められた量の受信データを受信した後に受信するデータである。【０００７】
受信データ判定手段は、書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する。【０００８】
受信データ書き込み手段は、受信データを書き込み領域に書き込む。また、受信データ書き込み手段は、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込む。【０００９】
データ読取手段は、その受信データをメインメモリからプリフェッチする。【００１０】
特許文献１は、そのキャッシュ制御装置が、上述の構成を備えることで、キャッシュメモリの使用量を一定に保ちつつ、かつパケットを欠落させることなく、メモリアクセスに伴う処理遅延が解消し、処理性能を向上させることができる、としている。【００１１】
そのメモリアクセスに伴う処理遅延が解消される理由は、以下のメモリアクセスの処理が削減されるためであるとしている。【００１２】
第１の削減されるメモリアクセスの処理は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）からメモリへの書き込み処理である。第２の削減されるメモリアクセスの処理は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からメモリへの読み出し処理である。第３の削減されるメモリアクセスの処理は、第２の処理に伴ってキャッシュに記憶されたデータが追い出される際に、そのデータがメモリへ書き出される処理である。【００１３】
上述の「受信データをメインメモリからプリフェッチする」技術に関し、非特許文献１及び非特許文献２が開示する技術を、以下に図を用いて順を追って説明する。【００１４】
図１は、関連技術におけるコンピュータ１０７の一般的な構成を示す。図１を参照すると、コンピュータ１０７は、ＣＰＵ２００と、メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）３００とを備える。更に、コンピュータ１０７は、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）コントローラ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）４０７を備える。更に、コンピュータ１０７は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）−Ｅｘｐｒｅｓｓ（登録商標）デバイス（ＰＣＩ−Ｅｘｐｒｅｓｓ  Ｄｅｖｉｃｅｓ）６５０を備える。更に、コンピュータ１０７は、ストレージデバイス（Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅｓ）６６０を備える。【００１５】
Ｉ／Ｏコントローラ４０７は、様々なＩ／Ｏデバイスに対する、様々なインタフェースを制御するコントローラである。Ｉ／Ｏコントローラ４０７は、ＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス（ＰＣＩ−Ｅｘｐｒｅｓｓ  Ｒｏｏｔ  Ｃｏｍｐｌｅｘ）４４０を備える。また、Ｉ／Ｏコントローラ４０７は、シリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）インタフェース（ＳＡＴＡ  ｉｎｔｅｒｆａｃｅ）４４１を備える。更に、Ｉ／Ｏコントローラ４０７は、その他Ｉ／Ｏインタフェース（Ｏｔｈｅｒ  Ｉ／Ｏ  ｉｎｔｅｒｆａｃｅｓ）４４２を備える。Ｉ／Ｏコントローラ４０７は、ＣＰＵ２００に対して、これらのインタフェースによって接続されるＩ／Ｏデバイスに対する、アクセス機能を提供する。【００１６】
比較的旧タイプのコンピュータでは、例えば、Ｉ／Ｏコントローラにメモリコントローラが内蔵され、メインメモリがＩ／Ｏコントローラに接続されていた。しかし、近年のコンピュータ１０７では、メモリコントローラ（不図示）の機能はＣＰＵ２００に統合されているのが一般的である。【００１７】
ＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス４４０は、ＰＣＩ−Ｅｘｐｒｅｓｓで構成されるＩ／Ｏファブリックの最上位階層に位置し、ＣＰＵ２００とＰＣＩ−Ｅｘｐｒｅｓｓデバイス６５０とを接続するためのインタフェースである。【００１８】
シリアルＡＴＡインタフェース４４１は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）といったストレージデバイスを接続するためのインタフェースである。【００１９】
その他Ｉ／Ｏインタフェース４４２は、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェースや、ＰＳ（Ｐｅｒｓｏｎａｌ  Ｓｙｓｔｅｍ）／２インタフェース、シリアルポートインタフェース、パラレルポートインタフェース、などである。また、その他Ｉ／Ｏインタフェース４４２は、コンピュータ１０７に様々な周辺機器を接続するための様々なインタフェースである。【００２０】
ＰＣＩ−Ｅｘｐｒｅｓｓデバイス６５０は、ＰＣＩ−Ｅｘｐｒｅｓｓで構成されるＩ／Ｏファブリックに接続されるデバイスであり、ＰＣＩ−Ｅｘｐｒｅｓｓの仕様ではエンドポイントと呼ばれる。このようなデバイスの例として、ＮＩＣのようなネットワーク接続用のデバイスが挙げられる。また、他の例として、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）などのストレージ装置接続用のデバイスが挙げられる。更に、他の例として、サウンドカードやビデオキャプチャカードなどのＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機能を備えたデバイス、などが挙げられる。【００２１】
ストレージデバイス６６０は、ＡＴＡ規格に従ったストレージデバイスであり、例として、ＨＤＤやＳＳＤ、Ｂｌｕ−ｒａｙ（登録商標）ドライブなどが挙げられる。【００２２】
図２は、コンピュータ１０７とは異なる形態の、コンピュータ１０８の構成を示す。図２を参照すると、コンピュータ１０８はＣＰＵ２００にＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス４４０が内蔵され、ＰＣＩ−Ｅｘｐｒｅｓｓデバイス６５０がＣＰＵ２００に直接接続されている点が、コンピュータ１０７と異なる。更に、コンピュータ１０８はＣＰＵ２００同士が直接接続されている点が、コンピュータ１０７と異なる。【００２３】
図３は、ＣＰＵ２００の構造の一例を示す。ＣＰＵ２００は、大きく分けて演算コア２２０と、キャッシュメモリ２２３（ローカルキャッシュ２２２及び共有キャッシュ２２４）と、キャッシュコントローラ２２１と、メモリコントローラ２２５とから構成される。尚、図３では、図２に示すＣＰＵ２００に内蔵されるＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス４４０の記載が省略されている。【００２４】
図３に示すようにＣＰＵ２００は、演算コア２２０を複数備えているのが一般的であり、各演算コア２２０にキャッシュコントローラ２２１と、ローカルキャッシュ２２２が備えられる。【００２５】
演算コア２２０は、様々な命令を実行する。【００２６】
キャッシュメモリ２２３は、演算コア２２０が使用するデータを格納する。【００２７】
ローカルキャッシュ２２２は、各演算コア２２０が占有して使用することができるキャッシュメモリである。【００２８】
共有キャッシュ２２４は、演算コア２２０間で共有されるキャッシュメモリである。この共有キャッシュ２２４は、一般的にキャッシュメモリ階層の最下層に位置するため、ラストレベルキャッシュとも呼ばれる。【００２９】
メモリコントローラ２２５は、図１及び図２に示すメインメモリ３００を制御する。【００３０】
キャッシュコントローラ２２１は、キャッシュメモリ２２３に対するアクセスを制御する。一般的なコンピュータにおいて、キャッシュメモリの容量は、メインメモリの１００分の１程度のサイズであり、ある処理に必要なデータや命令などを部分的にしか格納できない場合が多い。そこで、キャッシュメモリ２２３にはメインメモリ３００から読み出すデータのうち、その時点で演算コア２２０が必要とするデータのみが格納される。そのため、キャッシュコントローラ２２１は、キャッシュメモリ２２３に格納されるデータの入れ替えや、メインメモリ３００へのデータの書き戻しなどを制御する。【００３１】
ところで、イーサネット（登録商標）などのコンピュータネットワーク（以降、ネットワーク）において、コンピュータ１０７及びコンピュータ１０８がパケットを受信する場合、以下のように動作する。第１に、ＮＩＣ（ＰＣＩ−Ｅｘｐｒｅｓｓデバイス６５０）が受信したパケットのデータは、メインメモリ３００などのコンピュータ１０７及びコンピュータ１０８が備えるメインメモリ３００に、ストアされる。第２に、ＣＰＵ２００がその受信したパケットの処理をする際に、メインメモリ３００からそのパケットのデータが読み出される。【００３２】
キャッシュコントローラ２２１は、メインメモリ３００へアクセスする前に、キャッシュメモリ２２３のいずれかに、処理対象のパケットのデータが格納されているかどうかを確認する。キャッシュメモリ２２３に必要なデータが格納されていない場合（キャッシュミス時）、キャッシュコントローラ２２１は、メモリコントローラ２２５を経由して、メインメモリ３００からパケットのデータを読み出す。【００３３】
続けて、キャッシュコントローラ２２１は、読み出したそのパケットのデータをキャッシュメモリ２２３のいずれかに格納する。どの階層のキャッシュメモリ２２３に格納するかは、キャッシュコントローラ２２１の仕様に依存する。仮に、ＣＰＵ２００があるパケットを処理する際に、既に処理対象のそのパケットがキャッシュメモリ２２３に格納されている場合（ヒット時）、ＣＰＵ２００はメインメモリ３００にアクセスすることなく、そのパケットを処理することができる。【００３４】
キャッシュメモリ２２３に対するアクセスのヒット時とキャッシュミス時との違いは、メインメモリ３００へのアクセスが行われるかどうかという点である。しかしながら、近年のＣＰＵ２００における、キャッシュメモリ２２３に対するアクセスと、メインメモリ３００に対するアクセス遅延の差は、数１０倍から１００倍程度に広がっている。従って、なるべくキャッシュメモリ２２３に、ＣＰＵ２００が処理するデータが格納されていることが望ましい。【００３５】
そのため、ＣＰＵ２００には、ＣＰＵ２００が処理対象のデータを必要とする前に、メインメモリ３００からキャッシュメモリ２２３に、必要なデータを読み出しておくプリフェッチの機能が備わっている。このプリフェッチの機能には、ＣＰＵ２００が自動的に行うハードウェアプリフェッチと、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーションが指示するソフトウェアプリフェッチとが存在する。メインメモリ３００からキャッシュメモリ２２３にデータをプリフェッチしておくことで、ＣＰＵがデータを必要とする前に、キャッシュメモリ２２３にそのデータを格納しておくことが可能となる。【００３６】
現在、ＰＣＩ−Ｅｘｐｒｅｓｓデバイスから送信されるデータに対して、ヒントを与える機能がＰＣＩ−Ｅｘｐｒｅｓｓの仕様で定義されている。ヒントとは、ＣＰＵ２００が受信したパケットのデータを適切に処理するために、利用される情報である。この機能はＴＬＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｌａｙｅｒ  Ｐｒｏｔｏｃｏｌ）  Ｐｒｏｃｅｓｓｉｎｇ  Ｈｉｎｔｓ（ＴＰＨ）と呼ばれる。この機能は、ＰＣＩ−Ｅｘｐｒｅｓｓ  ２．１から仕様に取り込まれた。ＴＰＨの仕様については非特許文献１に詳しく記載されている。【００３７】
ＴＰＨは、ＰＣＩ−Ｅｘｐｒｅｓｓファブリックを流れるＴＬＰパケットのヘッダの特定のフィールドに、そのＴＬＰパケットの転送先のメモリアドレスなどに基づいて、ヒント（例えば、ステアリングタグと呼ばれるタグ）を書き込む機能である。このステアリングタグ（ヒント）をどのように扱うかは、ＴＬＰパケットを受信する側のデバイス（ＣＰＵ２００やＩ／Ｏコントローラ４０７、Ｉ／Ｏコントローラ４０８）次第である。【００３８】
例えば、Ｉｎｔｅｌ（登録商標）社は、ＤＣＡ（Ｄｉｒｅｃｔ  Ｃａｃｈｅ  Ａｃｃｅｓｓ）と呼ばれる機能を、ＣＰＵ２００やＩ／Ｏコントローラ４０７、Ｉ／Ｏコントローラ４０８に搭載している。その機能は、そのヒントに基づいてＰＣＩ−Ｅｘｐｒｅｓｓデバイスからのデータを、ＣＰＵ２００がハードウェアプリフェッチするための機能である。【００３９】
ＤＣＡに対応するＮＩＣは、ＴＬＰパケットにヒントとしてステアリングタグを付加し、ＣＰＵ２００やＩ／Ｏコントローラ４０７、Ｉ／Ｏコントローラ４０８に向けて、このＴＬＰパケットを送信する。非特許文献２（特に、７．５項）によると、ＤＣＡの場合、ステアリングタグには、以下の（１）或いは（２）のいずれかが格納される。（１）ＤＣＡが有効か無効かを示すフラグとターゲットとなるキャッシュを示すＩＤ。（２）ＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）  ＩＤに基づくターゲットコアＩＤ。【００４０】
また、非特許文献２によると、Ｉｎｔｅｌ  ８２５９９  １０Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ（登録商標）  Ｃｏｎｔｒｏｌｌｅｒでは、以下の、（１）、（２)及び（３）のモードが存在する。（１）メインメモリ３００に書き戻す受信ディスクリプタのＴＬＰパケット（非特許文献２では、“ＰＣＩｅ  ＴＬＰ”と呼ばれる）に対してヒント（ステアリングタグ：ＡＰＩＣ  ＩＤに基づくターゲットコアＩＤ）を書き込むモード。（２）受信したイーサネットパケットのヘッダバッファへのＴＬＰパケットに対してヒントを書き込むモード。（３）受信したイーサネットパケットのペイロードに対してヒントを書き込むモード。【００４１】
このＴＬＰパケットのペイロード部は、一旦メインメモリ３００に格納される。その後、ＣＰＵ２００やＩ／Ｏコントローラ４０７、Ｉ／Ｏコントローラ４０８が、ステアリングタグの情報に基づいて、このペイロード部をキャッシュメモリ２２３にハードウェアプリフェッチする。このハードウェアプリフェッチによって、ネットワークから受信したパケットが効率よく処理される。
【先行技術文献】
【特許文献】
【００４２】
【特許文献１】特開２０１２−１６４２０９号公報
【非特許文献】
【００４３】
【非特許文献１】Mahesh Wagh、 Intel Corporation、「PCI-SIG PCIe(登録商標)3.0/2.1 Protocol Update」、２０１１年、２０１３年１２月１３日検索、インターネット＜ｕｒｌ：http://www.pcisig.com/developers/main/training_materials/get_DOCUMENT?doc_id=86f9463d9783d8662793b3d69e49a02a6917b324＞
【非特許文献２】Intel Corporation、「Intel 82599 10 GbE Controller Datasheet、 Networking Division」、Revision 2.8」、２０１３年６月、２０１３年１２月１３日検索、インターネット＜ｕｒｌ：http://www.intel.co.JP/content/www/JP/ja/ethernet-controllers/82599-10-gbe-Controller-datasheet.html＞
【発明の概要】
【発明が解決しようとする課題】
【００４４】
以下の分析は、本発明によって与えられたものである。【００４５】
しかしながら、上述した先行技術文献に記載された技術においては、キャッシュヒット率が悪化する場合があるという問題点がある。【００４６】
その理由は、上述した先行技術文献に記載された技術においては、ネットワークのトラフィック状況や、受信パケットの処理装置の負荷状況などを考慮することなく、プリフェッチを実行するからである。ここで、受信パケットの処理装置は、特許文献１におけるキャッシュ制御装置、上述のコンピュータ１０７及びコンピュータ１０８などである。【００４７】
例えば、キャッシュヒット率が悪化する場合は、ＣＰＵがパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合である。以下に、この場合について、より詳細に説明する。【００４８】
図３において、一般的にキャッシュメモリ２２３は、キャッシュラインという小規模な領域に分けられている。各キャッシュラインは、インデックス番号が割り付けられる。メインメモリ３００から読み出されたデータは、特定のインデックス番号を持つキャッシュラインに格納される。その特定のインデックス番号は、そのデータが格納されていたメインメモリ３００の、メモリアドレスの特定のフィールドの値と一致するインデックス番号である。【００４９】
このようなキャッシュラインの使い方は、ダイレクトマップ方式或いはセットアソシアティブ方式と呼ばれるキャッシュメモリ２２３で用いられる。これらの方式に基づいて動作するキャッシュメモリ２２３では、メインメモリ３００から読み出されたデータを、キャッシュメモリ２２３の任意の場所（キャッシュライン）に格納することはできない。【００５０】
ここで、特許文献１に開示されるキャッシュ制御装置のキャッシュメモリの使用方法は、メインメモリ３００のメモリアドレスとは関係なく使用される方法である。従って、特許文献１に開示される技術は、ダイレクトマップ方式或いはセットアソシアティブ方式のキャッシュメモリ２２３には適用することができない。【００５１】
キャッシュメモリ２２３がダイレクトマップ方式或いはセットアソシアティブ方式である場合、次のような動作が行われる。メインメモリ３００からデータがプリフェッチされた際に、プリフェッチされたデータの格納先となるキャッシュラインが既に使用されていた場合、そのキャッシュラインに格納されていたデータは、メインメモリ３００に書き戻される。【００５２】
また、上述したように、非特許文献１及び非特許文献２は、ＤＣＡと呼ばれる技術を開示している。ここで、ＣＰＵ２００がパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合、ＤＣＡのような技術が使用されていると、以下のような問題が発生する可能性がある。【００５３】
例えば、ＣＰＵ２００がキャッシュメモリに格納されたＮ番目のパケットを処理する前に、Ｎ＋１番目以降のパケットのデータがプリフェッチされる。そのＮ＋１番目以降のパケットのデータがプリフェッチされることによって、Ｎ番目のパケットがキャッシュから追い出される場合がある。そうすると、ＣＰＵ２００がキャッシュメモリ２２３をアクセスした場合にキャッシュミスが発生する。このため、ＣＰＵ２００は、再びＮ番目のパケットをメインメモリ３００から読み出す必要が発生する。こうして、メインメモリ３００へのアクセスの分だけ性能が低下する。【００５４】
換言すると、ＤＣＡ技術を用いたプリフェッチによりＣＰＵ２００におけるキャッシュヒット率が悪化し、スループット及びＣＰＵ使用率の点でコンピュータ１０７及びコンピュータ１０８の性能が悪化する。【００５５】
また、キャッシュヒット率が悪化する場合は、ＣＰＵ２００のキャッシュヒット率が既に悪化している場合である。以下に、このキャッシュヒット率が悪化する場合について、より詳細に説明する。【００５６】
関連技術は、トラフィックパターンやトラフィックの優先度、ＣＰＵ２００のキャッシュヒット率など、状況に応じて、プリフェッチをするかどうか使い分けることができない。【００５７】
即ち、関連技術ではＴＬＰパケットにＴＰＨを書き込むかどうかの設定は、受信パケットの転送先となるメインメモリ３００のアドレスなど、静的な情報に基づいて行われる。【００５８】
従って、ＣＰＵ２００のキャッシュヒット率が悪化しているときに、ＤＣＡのような技術を用いると、キャッシュメモリ２２３に格納されているデータの入れ替えが発生し、よりキャッシュヒット率が悪化する可能性がある。【００５９】
本発明の目的は、上述した課題を解決する情報処理装置、トラフィック制御方法、及び、そのためのプログラム或いはそのプログラムを記録したコンピュータ読み取り可能な非一時的記録媒体を提供することにある。
【課題を解決するための手段】
【００６０】
本発明の一様態における第１の情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第１の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む。【００６１】
本発明の一様態におけるトラフィック制御方法は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。【００６２】
本発明の一様態におけるコンピュータ読み取り可能な不揮発性非一時的記録媒体は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録する。【００６３】
本発明の一様態における第２の情報処理装置は、プロセッサと、プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。
【発明の効果】
【００６４】
本発明は、キャッシュヒット率の悪化を防止或いは低減することが可能になるという効果がある。
【図面の簡単な説明】
【００６５】
【図１】図１は、関連技術に係るコンピュータの構成を示すブロック図である。
【図２】図２は、関連技術に係るコンピュータの構成を示すブロック図である。
【図３】図３は、関連技術に係るＣＰＵの構造の一例を示すブロック図である。
【図４】図４は、本発明の第１の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。
【図５】図５は、第１の実施形態におけるポリシーテーブルの一例を示す図である。
【図６】図６は、第１の実施形態におけるインタフェーステーブルの一例を示す図である。
【図７】図７は、第１の実施形態におけるフローテーブルの一例を示す図である。
【図８】図８は、第１の実施形態におけるフローテーブルにフローエントリが登録されているフローについて、登録内容を変更する処理の流れを示すシーケンス図である。
【図９】図９は、第１の実施形態におけるフローテーブルにフローエントリが存在しないフローについて、新規フローエントリを登録する処理の流れを示すシーケンス図である。
【図１０】図１０は、第１の実施形態におけるフローマネージャが登録内容を変更する動作を示すフローチャートである。
【図１１】図１１は、第１の実施形態におけるフローマネージャが新規フローエントリを登録する動作を示すフローチャートである。
【図１２】図１２は、本発明の第２の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。
【図１３】図１３は、本発明の第３の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。
【図１４】図１４は、本発明の第４の実施形態に係る、情報処理装置の構成を示すブロック図である。
【図１５】図１５は、第４の実施形態におけるフローテーブルの一例を示す図である。
【図１６】図１６は、第４の実施形態に係る情報処理装置を実現するコンピュータのハードウェア構成を示すブロック図である。
【図１７】図１７は、第４の実施形態における動作を示すフローチャートである。
【図１８】図１８は、本発明の第５の実施形態に係る、情報処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００６６】
本発明を実施するための形態について図面を参照して詳細に説明する。尚、図面参照符号は、理解を助けるための一例として各構成要素に便宜上付与したものであり、本発明を図示の態様に限定するものではない。また、各図面及び明細書記載の各実施形態において、同様の構成要素には同様の図面参照符号を付与し、適宜説明を省略する。
【００６７】
［第1の実施形態］
本発明の第１の実施形態について、図面を参照して詳細に説明する。
【００６８】
［構成の説明］
図４は、本発明の第１の実施形態に係るトラフィック制御システム８０１の構成を示すブロック図である。
【００６９】
図４を参照すると、トラフィック制御システム８０１は、コンピュータ１０１と、フローマネージャ（Ｆｌｏｗ  Ｍａｎａｇｅｒ、フロー情報更新手段とも呼ばれる）７０１と、パケットスイッチ９０１とを含む。更に、トラフィック制御システム８０１は、パフォーマンスモニタ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｏｎｉｔｏｒ）７００と、ポリシーテーブル（Ｐｏｌｉｃｙ  Ｔａｂｌｅ）７１と、フロー統計情報テーブル（Ｆｌｏｗ  Ｓｔａｔ  Ｔａｂｌｅ）７２と、を含む。更に、トラフィック制御システム８０１は、ＣＰＵ統計情報テーブル（ＣＰＵ  Ｓｔａｔ  Ｔａｂｌｅ）７３と、インタフェーステーブル（Ｉ／Ｆ  ＴＡＢＬＥ）７４と、を含む。
【００７０】
＝＝＝コンピュータ１０１＝＝＝
コンピュータ１０１は、ＣＰＵ２００と、メインメモリ３００（Ｍａｉｎ  Ｍｅｍｏｒｙ）と、Ｉ／Ｏコントローラ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）４００と、ネットワークインタフェース（ＮＷ  Ｉ／Ｆ）５０１と、を含む。
【００７１】
また、コンピュータ１０１は、図１に示すコンピュータ１０７のように、ネットワークインタフェース５０１をＩ／Ｏコントローラ４００の配下に実装する構成としている。しかし、このことは、コンピュータ１０１の構成を限定するものではなく、図２に示すコンピュータ１０８のように、ＣＰＵ２００にネットワークインタフェース５０１が直接接続される構成としてもよい。こうすることによる本実施形態の差異は、発生しない。
【００７２】
本実施形態では、Ｉ／Ｏコントローラ４００に接続されるネットワークインタフェース５０１は、例えば、ＰＣＩ−Ｅｘｐｒｅｓｓを介して接続されるものとする。尚、図４のＩ／Ｏコントローラ４００には、ＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス４４０が図示されていない。しかし、ネットワークインタフェース５０１は、Ｉ／Ｏコントローラ４００に内蔵されるＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス４４０（不図示）に接続されるものとする。尚、このことは、本実施形態を、ＰＣＩ−Ｅｘｐｒｅｓｓを備えるシステムに、限定するものではない。
【００７３】
ネットワークインタフェース５０１は、パケット受信部５１０と、Ｉ／Ｏインタフェース（Ｉ／Ｏ  Ｉ／Ｆ）５４０と、を含む。尚、図４には、ネットワークインタフェース５０１のパケット受信側の構成のみが示されており、送信側の構成は省略されている。
【００７４】
パケット受信部５１０は、ネットワーク（不図示）から受信したパケットの受信処理を実行するモジュールである。本実施形態では、ネットワークをイーサネットとし、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットが流れるものとしているが、このことは、本実施形態をイーサネット、或いはＩＰネットワークに限定するものではない。
【００７５】
パケット受信部５１０は、一般的なネットワークカードの受信処理部が備える機能を備える。その機能の例として、受信パケットチェック機能や、フィルタリング機能など、が挙げられる。受信パケットチェック機能は、受信したパケットのチェックサムを計算し、パケットにデータ破損が起きていないかどうかを確認する機能である。フィルタリング機能は、パケットヘッダに含まれるＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスやＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）タグ、ＩＰアドレスの情報を元にパケットをフィルタリングする機能である。
【００７６】
Ｉ／Ｏインタフェース５４０は、ネットワークインタフェース５０１の、Ｉ／Ｏコントローラ４００に対するインタフェースである。Ｉ／Ｏインタフェース５４０は、受信したパケットをＴＬＰパケットのペイロード部に収め、Ｉ／Ｏコントローラ４００に向けてＴＬＰパケットを送出する。
【００７７】
本実施形態では、コンピュータ１０１は、２つ以上のネットワークインタフェース５０１を含む。各ネットワークインタフェース５０１に含まれる各Ｉ／Ｏインタフェース５４０のうち、少なくとも１つのＩ／Ｏインタフェース５４０は、ＴＬＰパケットに対してヒント（示唆情報とも呼ばれる）を付与する。即ち、そのＩ／Ｏインタフェース５４０は、ＴＰＨが有効である。そして、少なくとも他の１つのＩ／Ｏインタフェース５４０は、ＴＬＰパケットに対してヒントを付与しない。即ち、そのＩ／Ｏインタフェース５４０は、ＴＰＨが無効である。
【００７８】
図４に示すように、ヒントを付与する（ＴＰＨが有効な）Ｉ／Ｏインタフェース５４０をＩ／Ｏインタフェース（ｏｎ）５４０と呼ぶ。また、ヒントを付与しない（ＴＰＨが無効な）Ｉ／Ｏインタフェース５４０をＩ／Ｏインタフェース（ｏｆｆ）５４０と呼ぶ。
【００７９】
ヒントは、例えば、ＣＰＵ２００が受信したパケットのデータを適切に処理するために、利用される情報である。
【００８０】
具体的には、本実施形態において、ヒントは、ＣＰＵ２００がＤＣＡ機能を用いて、メインメモリ３００に格納されたデータをハードウェアプリフェッチするために利用される情報である。ここで、そのデータは、ネットワークインタフェース５０１から受け取ったパケットのデータ（ペイロード）である。そのヒントは、ＤＣＡが有効か無効かを示すフラグとターゲットとなるキャッシュを示すＩＤとを含む。
【００８１】
換言すると、ＣＰＵ２００は、Ｉ／Ｏインタフェース（ｏｎ）５４０から受け取ったＴＬＰパケットに付与されたそのヒントに基づいて、メインメモリ３００に格納されたそのＴＬＰパケットのペイロードをキャッシュメモリ２２３にプリフェッチする。
【００８２】
＝＝＝パフォーマンスモニタ７００＝＝＝
パフォーマンスモニタ７００は、ＣＰＵ２００の統計情報を取得する。次に、パフォーマンスモニタ７００は、取得した統計情報を、ＣＰＵ統計情報テーブル７３に格納する。例えば、コンピュータ１０１が管理インタフェースを備え、パフォーマンスモニタ７００は、ＣＰＵ２００の統計情報を、その管理インタフェース経由で取得する。尚、その統計情報は、コンピュータ１０１の性能に係る性能情報であり、パケットに係る環境状況情報とも呼ばれる。
【００８３】
ＣＰＵ２００の統計情報の例として、キャッシュヒット率やＣＰＵ使用率が挙げられる。例えば、Ｉｎｔｅｌ製のＣＰＵであれば、パフォーマンスカウンタの値を読むことで、キャッシュヒット率を取得することができる。また、ＯＳが備えるリソースモニタからＣＰＵ使用率を取得することができる。リソースモニタの例として、ＯＳがＬｉｎｕｘ（登録商標）であれば、ｔｏｐコマンドやｍｐｓｔａｔコマンドが挙げられる。
【００８４】
＝＝＝ＣＰＵ統計情報テーブル７３＝＝＝
ＣＰＵ統計情報テーブル７３は、パフォーマンスモニタ７００が取得したＣＰＵ２００の統計情報を保持するテーブルである。コンピュータ１０１は、複数のＣＰＵ２００、或いは単一のＣＰＵ２００が複数の演算コア２２０を備えるのが一般的である。そのため、ＣＰＵ統計情報テーブル７３は、例えば、演算コア２２０或いはＣＰＵ２００の識別子をキーとし、演算コア２２０或いはＣＰＵ２００の統計情報をバリューとする。
【００８５】
＝＝＝フローマネージャ７０１＝＝＝
フローマネージャ７０１は、ポリシーテーブル７１、フロー統計情報テーブル７２、インタフェーステーブル７４、フローテーブル（フロー情報記憶手段とも呼ばれる）９１及びパフォーマンスモニタ７００と接続されている。フローマネージャ７０１は、ネットワークトラフィックの統計情報を取得し、フロー統計情報テーブル７２に格納する。また、フローマネージャ７０１は、ポリシーテーブル７１の内容、インタフェーステーブル７４の内容、フローＩＤ（後述）、ネットワークトラフィックの統計情報、及びＣＰＵ２００の統計情報に基づいて、フローテーブル９１を更新する。尚、フローＩＤは、フロー識別子とも呼ばれる。尚、フローマネージャ７０１は、ＣＰＵ２００の統計情報を、例えばパフォーマンスモニタ７００から取得する。
【００８６】
ネットワークトラフィックの統計情報は、パケットが流れるネットワークのトラフィック情報であり、環境状況情報とも呼ばれる。
【００８７】
ネットワークトラフィックの統計情報の例として、パケット群単位で算出される、単位時間当たりのトラフィック量、通過パケット数、パケット到着間隔、などが挙げられる。そのパケット群単位は、ＩＰアドレスと、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）或いはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のポート番号との組などで識別されるパケット群の単位である。
【００８８】
フローマネージャ７０１は、これらの統計情報の値を、例えばパケットスイッチ９０１から取得する。また、コンピュータ１０１内において、フロー単位でトラフィックを管理可能なソフトウェアが稼動させられてもよい。この場合、フローマネージャ７０１は、そのソフトウェアから、これらの統計情報の値を取得してもよい。そのようなソフトウェアの例として、Ｏｐｅｎ  ｖＳｗｉｔｃｈと呼ばれるソフトウェアが挙げられる。
【００８９】
尚、「フロー」は、トラフィックをＩＰアドレス等の特定の値（フローＩＤ）によって識別される各パケット群のことを示す。フローの粒度は様々である。例えば、先に述べたＩＰアドレスやポート番号を使うほか、ＭＡＣアドレスとＶＬＡＮ  ＩＤの組など利用し、様々な粒度で識別されたパケット群をフローとすることが考えられる。例えば、ＯｐｅｎＦｌｏｗ１．０の仕様においては、パケットヘッダに含まれる情報と、スイッチへの入力ポートの情報とを組み合わせ、最大で１２個の情報に基づいて、フローを識別することができる。
【００９０】
尚、フローマネージャ７０１は、コンピュータ１０１上で動くプログラムの形態をとることも、コンピュータ１０１とは別の装置として実現することも可能である。
【００９１】
＝＝＝ポリシーテーブル７１＝＝＝
図５は、本実施形態におけるポリシーテーブル７１の一例を示す図である。
【００９２】
ポリシーテーブル７１は、どのような状況の時に、どのフローにヒントを付与するかを示すポリシーを保持するテーブルである。
【００９３】
ポリシーは、例えば以下の（１）から（４）のような、パフォーマンスモニタ７００が取得した統計情報を利用したものが考えられる。（１）ある時点での平均パケットサイズがＮ（Ｎは、正の整数）バイトを超えたフローに属するパケットは、ヒントを付与される。（２）ＣＰＵ２００のキャッシュヒット率がＭ（Ｍは、１００以下の正の実数）％を下回った場合、いずれのパケットにもヒントは付与されない。（３）ＣＰＵ２００のキャッシュヒット率がＭ％を下回った場合、平均パケットサイズがＮバイト以下のフローに属するパケットは、ヒントを付与されない。ここで、平均パケットサイズは、フローマネージャ７０１が取得した統計情報のうち、単位時間当たりの通過バイト数と通過パケット数とから計算され得る。
【００９４】
ポリシーテーブル７１に、あるフローにヒントを付与するポリシーと、ヒントを付与しないポリシーの両方が設定される可能性がある。そして、そのフローがそれらのポリシーの両方を、同時に満たす状況の場合、どちらのポリシーを適用するかを判断する必要がある。例えば、それらのポリシーの１つは、「ＣＰＵ２００のキャッシュヒット率がＭ％を下回った場合に、全てのパケットにヒントを付与しないこと」である。そして他の１つは、「ある時点での平均パケットサイズがＮバイトを超えたフローに属するパケットにヒントを付与すること」である。
【００９５】
そこで、ポリシーテーブル７１に含まれる各ポリシーのそれぞれは、それらの各ポリシー相互間における優先度を有してよい。その優先度は、例えば、ポリシーテーブル７１の先頭に近いポリシーほど、高いと定義される。また、ポリシーテーブル７１にアクセスすることによって取得されるバリューが、優先度の情報を含んでもよい。
【００９６】
図５に示すように、ポリシーテーブル７１は、ポリシーＩＤ（Ｐｏｌｉｃｙ  ＩＤ）列７１０、フローＩＤ（Ｆｌｏｗ  ＩＤ）列７１１及びスループット（Ｔｈｒｏｕｇｈｐｕｔ）列７１２を含む。更に、ポリシーテーブル７１は、平均パケットサイズ（Ａｖｅｒａｇｅ  ｐａｃｋｅｔ  ｓｉｚｅ）列７１３、ＣＰＵ使用率（ＣＰＵ  Ｕｔｉｌｉｚａｔｉｏｎ）列７１４及びキャッシュヒット率（Ｃａｃｈｅ  Ｈｉｔ  Ｒａｔｅ）列７１５を含む。更に、ポリシーテーブル７１は、ＴＰＨ設定値（ＴＰＨ  Ｓｅｔｔｉｎｇ）列７１６を含む。
【００９７】
ポリシーテーブル７１は、テーブルの上位の行のエントリほど優先度が高い、つまり、ポリシーＩＤ列７１０の値が小さいほど優先度が高いものとする。ポリシーテーブル７１において、例えば、フローＩＤ列７１１からキャッシュヒット率列７１５までがキーの列であり、ＴＰＨ設定値列７１６がバリューの列である。
【００９８】
ポリシーＩＤ列７１０には、ポリシーの識別子が登録（格納）される。
【００９９】
図５において、例えばポリシーＩＤ＝０のポリシーは、以下を示す。ＭＡＣアドレスがＸ１であり、ＶＬＡＮ  ＩＤがＹ１であるフローについて、スループットが１Ｇｂｐｓ以上、平均パケットサイズが５００バイト以上、ＣＰＵ使用率が３０％以下、キャッシュヒット率が５０％以上の場合に、ＴＬＰパケットはヒントを付与される。この「ＴＬＰパケットにヒントを付与すること」は、ＴＰＨ設定値列７１６の値が「ＯＮ」であることにより示される。
【０１００】
また、ポリシーＩＤ＝１のポリシーは、以下を示す。全てのフローについて、スループットが１Ｇｂｐｓ以上、平均パケットサイズに依存せず、ＣＰＵ使用率が９０％以上、キャッシュヒット率が３０％以下の場合に、ＴＬＰパケットはヒントを付与されない。この「ＴＬＰパケットにヒントを付与しないこと」は、ＴＰＨ設定値列７１６の値が「ＯＦＦ」であることにより示される。
【０１０１】
フローＩＤ列７１１には、フローの識別子が登録される。フローの識別子は、例えば、ＭＡＣアドレスやＶＬＡＮ  ＩＤ、ＩＰアドレスなどである。
【０１０２】
スループット列７１２は、ネットワークのスループットに関する条件が格納される。平均パケットサイズ列７１３は、ネットワークの平均パケットサイズに関する条件が格納される。ＣＰＵ使用率列７１４は、ＣＰＵ２００の使用率に関する条件が格納される。キャッシュヒット率列７１５は、ＣＰＵ２００のキャッシュヒット率に関する条件が格納される。
【０１０３】
フローマネージャ７０１は、以下のようにポリシーテーブル７１を参照する。フローマネージャ７０１は、ポリシーテーブル７１を検索し、受信パケットから得られるフローＩＤを含み、かつネットワークトラフィックの統計情報及びＣＰＵ２００の統計情報を満たすレコードを検出する。ここで、そのネットワークトラフィックの統計情報及びＣＰＵ２００の統計情報は、フローマネージャ７０１がコンピュータ１０１或いはパケットスイッチ９０１から取得する情報である。次に、フローマネージャ７０１は、検出されたそのレコードのＴＰＨ設定値列７１６の値を得る。
【０１０４】
尚、ポリシーテーブル７１において、フローＩＤ列７１１のみがキーの列であり、スループット列７１２からＴＰＨ設定値列７１６までがバリューの列であってもよい。即ち、フローマネージャ７０１は、以下のように、ポリシーテーブル７１を参照してもよい。まず、フローマネージャ７０１は、特定の値だけがヒットするフローＩＤでポリシーテーブル７１を検索し、スループット列７１２からＴＰＨ設定値列７１６までの任意の列の値を取得する。次に、フローマネージャ７０１は、取得されたその列の値について、現状の値との比較処理を実行し、全ての条件を満たすポリシーに含まれるＴＰＨ設定値列７１６の値を取得する。
【０１０５】
＝＝＝フロー統計情報テーブル７２＝＝＝
フロー統計情報テーブル７２は、フローマネージャ７０１が取得したフローの統計情報を保持するテーブルである。そのため、フロー統計情報テーブル７２は、フローＩＤをキーとし、フローの統計情報（そのフローに対応する、ネットワークトラフィックの統計情報）と、現在ヒントを付与しているかどうかを示すフラグとをバリューとする。
【０１０６】
＝＝＝インタフェーステーブル７４＝＝＝
インタフェーステーブル７４は、各コンピュータ１０１の各ネットワークインタフェース５０１について、ＴＰＨが有効か無効かを管理するテーブルである。
【０１０７】
図６は、本実施形態におけるインタフェーステーブル７４の一例を示す図である。インタフェーステーブル７４は、スイッチＩＤ（Ｓｗｉｔｃｈ  ＩＤ）列７４０と、ポートＩＤ（Ｐｏｒｔ  ＩＤ）列７４１と、コンピュータＩＤ（Ｃｏｍｐｕｔｅｒ  ＩＤ）列７４２と、ＴＰＨ設定値（ＴＰＨ  Ｓｅｔｔｉｎｇ）列７４３と、を少なくとも含む。
【０１０８】
スイッチＩＤ列７４０には、パケットスイッチ９０１の識別子が格納される。ポートＩＤ列７４１には、ネットワークインタフェース５０１に接続されるパケットスイッチ９０１のポートの識別子が格納される。コンピュータＩＤ列７４２には、そのネットワークインタフェース５０１が収容されているコンピュータ１０１の識別子が格納される。ＴＰＨ設定値列７４３には、そのネットワークインタフェース５０１においてＴＰＨが有効か無効かを示す値が格納される。
【０１０９】
フローマネージャ７０１は、フローテーブル９１にフローエントリ９１９（後述）を設定する際に、パケットの出力先の情報を得るために、インタフェーステーブル７４を参照する。ここで、パケットの出力先の情報は、ポートＩＤ列７４１の値、即ちネットワークインタフェース５０１を特定する情報である。例えば、インタフェーステーブル７４の値は、外部から静的に与えられる。また、フローマネージャ７０１が、各パケットスイッチ９０１、各コンピュータ１０１からその値を得たり、プローブパケットを投げることでその値を得たりし、得られたその値をインタフェーステーブル７４に設定するようにしてもよい。
【０１１０】
＝＝＝パケットスイッチ９０１＝＝＝
パケットスイッチ９０１は、スイッチング制御部９９０と、フローテーブル９１と、を含む。
【０１１１】
スイッチング制御部９９０は、フローテーブル９１に格納される情報に基づいて、パケットをどのネットワークインタフェース５０１に転送するかを判断する。次に、スイッチング制御部９９０は、判断されたネットワークインタフェース５０１へ、そのパケットを送出する。
【０１１２】
図７は、フローテーブル９１の一例を示す図である。フローテーブル９１は、各パケットの転送先に関する情報を保持するテーブルである。
【０１１３】
図７に示すように、フローテーブル９１は、フローエントリ９１９を含む。フローエントリ９１９は、フローＩＤ（Ｆｌｏｗ  ＩＤ）列９１０をキーの列とし、出力先となるネットワークインタフェース５０１を特定するポートＩＤ（Ｐｏｒｔ  ＩＤ）列９１１及びその出力先のＴＰＨ設定値列９１２をバリューの列とする。尚、フローテーブル９１は、更にフローの統計情報を含んでもよい。
【０１１４】
フローＩＤ列９１０には、フローＩＤが格納される。ポートＩＤ列９１１には、パケットスイッチ９０１のポートＩＤが格納される。ＴＰＨ設定値列９１２には、ＴＰＨが有効か無効かを示す値が格納される。
【０１１５】
［動作の説明]
次に、図面を参照して、本実施形態の動作について詳細に説明する。
【０１１６】
図８は、フローテーブル９１にフローエントリ９１９が登録されているフローについて、登録内容（フローエントリ９１９の内容）を変更する処理の流れを示すシーケンス図である。例えば、フローマネージャ７０１は、所定の（例えば、定期的な）タイミングを契機として、その登録内容を変更する処理の実行を開始してよい。
【０１１７】
まず、フローマネージャ７０１は、パケットスイッチ９０１から、フローテーブル９１のフローエントリ９１９を読み出す（ステップＳ７００）。
【０１１８】
具体的には、フローマネージャ７０１は、パケットスイッチ９０１にフローエントリ９１９の読み取りを要求する。パケットスイッチ９０１は、その要求に応答して、フローエントリ９１９をフローマネージャ７０１へ送信する。
【０１１９】
次に、フローマネージャ７０１は、ポリシーテーブル７１とフロー統計情報テーブル７２とＣＰＵ統計情報テーブル７３とを参照し、受信されたフローエントリ９１９の登録内容がポリシーに合っているか否かをチェックする（ステップＳ７１０）。尚、フローマネージャ７０１は、ＣＰＵ統計情報テーブル７３を、パフォーマンスモニタ７００を経由して参照する。
【０１２０】
次に、フローマネージャ７０１は、ポリシーに合っていないフローエントリ９１９が検出された場合、そのフローエントリ９１９を更新する（ステップＳ７２０）。
【０１２１】
具体的には、フローマネージャ７０１は、そのフローエントリ９１９の更新を指示する変更リクエストをパケットスイッチ９０１に送信する。パケットスイッチ９０１は、受信された変更リクエストに基づいて、そのフローエントリ９１９を更新する。
【０１２２】
この変更リクエストは、少なくともフローＩＤ列９１０の値と、更新後の値としてのポートＩＤ列９１１の値及びＴＰＨ設定値列９１２の値と、を含む。
【０１２３】
フローマネージャ７０１は、そのポートＩＤ列９１１の値を、インタフェーステーブル７４から取得する。例えば、フローマネージャ７０１は、パケットスイッチ９０１の識別子に基づいて、インタフェーステーブル７４から、該当するエントリを取得する。ここで、そのパケットスイッチ９０１は、ステップＳ７００において、フローマネージャ７０１が、そこからフローエントリ９１９を読み出したパケットスイッチ９０１である。
【０１２４】
次に、フローマネージャ７０１は、そのポリシーに含まれるＴＰＨ設定値列７１６の値に一致するＴＰＨ設定値列７４３の値を含む、インタフェーステーブル７４のエントリを検出する。ここで、そのポリシーは、ステップＳ７２０において、ポリシーに合っていないフローエントリ９１９が検出された場合の、そのポリシーである。続けて、フローマネージャ７０１は、検出されたそのエントリのポートＩＤ列７４１の値を取得する。このポートＩＤ列７４１の値は、すなわち、パケットの出力先のネットワークインタフェース５０１を特定する情報である。
【０１２５】
また、フローマネージャ７０１は、そのＴＰＨ設定値列９１２の値として、そのポリシーに含まれるＴＰＨ設定値列７１６の値を取得する。
【０１２６】
図９は、フローテーブル９１にフローエントリ９１９が登録されていないフローについて、フローテーブル９１に新規にフローエントリ９１９を登録する処理の流れを示すシーケンス図である。例えば、パケットスイッチ９０１は、受信パケットに対応するフローのエントリがフローテーブル９１に登録されていないことを検出した場合に、フローテーブル９１に新規にフローエントリ９１９を登録する処理の実行を開始する。
【０１２７】
まず、パケットスイッチ９０１は、パケットの転送先の問い合わせを、フローマネージャ７０１に送信する（ステップＳ９００）。ここで、そのパケットは、フローテーブル９１にフローエントリ９１９が登録されていないフローに属するパケットである。その問い合わせには、少なくともフローＩＤが含まれる。
【０１２８】
次に、フローマネージャ７０１は、パケットスイッチ９０１からの問い合わせに対し、そのフローＩＤと、ＣＰＵ統計情報テーブル７３に含まれる情報とに基づいて、ポリシーテーブル７１からエントリを取得する（ステップＳ９１０）。ここで、ポリシーテーブル７１を参照する際には、フローの統計情報が必要となるが、新規フローの場合、フローの統計情報は存在しない。このため、フローマネージャ７０１は、例えば、フローの統計情報として所定の初期値を用いて、ポリシーテーブル７１を参照する。
【０１２９】
次に、フローマネージャ７０１は、パケットスイッチ９０１から問い合わせのあったパケットに対応するフローエントリ９１９を、フローテーブル９１に追加する（ステップＳ９２０）。
【０１３０】
具体的には、フローマネージャ７０１は、取得されたポリシーテーブル７１のエントリに登録されているＴＰＨ設定値列７１６の値に対応する、ポートＩＤ列７４１の値をインタフェーステーブル７４から取得する。続けて、フローマネージャ７０１は、取得されたそのポートＩＤ列７４１の値とそのＴＰＨ設定値列７１６の値と、その問い合わせに含まれるフローＩＤの情報とを含むフローエントリ９１９の登録リクエストを、パケットスイッチ９０１に送信する。その登録リクエストを受信したパケットスイッチ９０１は、その登録リクエストに基づいて、フローエントリ９１９を登録する。
【０１３１】
ここで、フローマネージャ７０１は、以下の手順で、そのポートＩＤ列７４１の値を取得する。第１に、フローマネージャ７０１は、インタフェーステーブル７４から、スイッチＩＤ列７４０の値としてそのパケットスイッチ９０１の識別子を含む、エントリを取得する。第２に、フローマネージャ７０１は、取得されたそのエントリの中から、そのＴＰＨ設定値列７１６の値に一致するＴＰＨ設定値列７４３の値を含むエントリの、ポートＩＤ列７４１の値を取得する。
【０１３２】
図１０は、図８に示すシーケンス図における、フローマネージャ７０１の動作を示すフローチャートである。尚、このフローチャートによる処理は、ＣＰＵ２００によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、Ｆ７００のように、記号で記載する。
【０１３３】
まず、フローマネージャ７０１は、パケットスイッチ９０１からフローテーブル９１のフローエントリ９１９を読み出す（ステップＦ７００）。
【０１３４】
次に、フローマネージャ７０１は、フローテーブル９１から取得されたフローエントリ９１９のフローＩＤ列９１０の値を用いて、フロー統計情報テーブル７２を参照し、フローの統計情報を取得する（ステップＦ７０１）。
【０１３５】
次に、フローマネージャ７０１は、パフォーマンスモニタ７００を経由してＣＰＵ統計情報テーブル７３からＣＰＵ２００の統計情報を取得する（ステップＦ７０２）。
【０１３６】
次に、フローマネージャ７０１は、そのフローＩＤ列９１０の値、フローの統計情報及びＣＰＵ２００の統計情報に基づいて、ポリシーテーブル７１を参照し、ＴＰＨ設定値列７１６の値を取得する（ステップＦ７０３）。ここで、そのフローの統計情報は、ステップＦ７０１で取得されたフローの統計情報である。また、そのＣＰＵ２００の統計情報は、ステップＦ７０２で取得されたＣＰＵ２００の統計情報である。
【０１３７】
次に、フローマネージャ７０１は、ステップＦ７０３で取得されたＴＰＨ設定値列７１６の値と、ステップＦ７００で取得されたフローエントリ９１９に含まれるＴＰＨ設定値列９１２の値とを比較する（ステップＦ７０４）。
【０１３８】
次に、フローマネージャ７０１は、そのＴＰＨ設定値列７１６の値と、そのＴＰＨ設定値列９１２の値とが同じであった場合（ステップＦ７０４の「一致」）、フローエントリ９１９の変更は必要ないため、処理は完了する。
【０１３９】
一方、これらの値が一致しない場合（ステップＦ７０４の「不一致」）、処理はステップＦ７０５へ進む。
【０１４０】
次に、フローマネージャ７０１は、パケットスイッチ９０１のスイッチＩＤとステップＦ７０３で取得されたＴＰＨ設定値列７１６の値とに基づいて、インタフェーステーブル７４を参照し、ポートＩＤ列７４１の値を取得する（ステップＦ７０５）。
【０１４１】
次に、フローマネージャ７０１は、変更リクエストをパケットスイッチ９０１に送信する（ステップＦ７０６）。その変更リクエストは、その変更リクエストに変更後の値として含まれる、ポートＩＤ列９１１の値及びＴＰＨ設定値列９１２の値を用いて、フローテーブル９１の該当するフローエントリ９１９のバリューを更新することを要求するものである。
【０１４２】
その変更リクエストに変更後の値として含まれる、ポートＩＤ列９１１の値及びＴＰＨ設定値列９１２の値のそれぞれは、ステップＦ７０５で取得されたポートＩＤ列７４１の値及びステップＦ７０３で取得されたＴＰＨ設定値列７１６の値である。
【０１４３】
上述のようにして、フローマネージャ７０１は、フローテーブル９１のフローエントリ９１９を変更する。
【０１４４】
図１１は、図９に示すシーケンス図における、フローマネージャ７０１の動作を示すフローチャートである。尚、このフローチャートによる処理は、ＣＰＵ２００によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、Ｆ７１１のように、記号で記載する。
【０１４５】
まず、フローマネージャ７０１は、フロー統計情報テーブル７２に、パケットスイッチ９０１から問い合わせのあったフローのエントリを作成し、そのエントリのフローの統計情報を初期化する（ステップＦ７１１）。
【０１４６】
次に、フローマネージャ７０１は、パフォーマンスモニタ７００を経由して、ＣＰＵ統計情報テーブル７３から、ＣＰＵ２００の統計情報を取得する（ステップＦ７１２）。
【０１４７】
次に、フローマネージャ７０１は、そのフローのフローＩＤと、ＣＰＵ２００の統計情報と、フローの統計情報とに基づいて、ポリシーテーブル７１を参照し、ＴＰＨ設定値列７１６の値を取得する（ステップＦ７１３）。ここで、そのフローＩＤは、パケットスイッチ９０１から問い合わせのあったフローのフローＩＤである。そのＣＰＵ２００の統計情報は、ステップＦ７１２で取得されたＣＰＵ２００の統計情報である。また、そのフローの統計情報は、ステップＦ７１２で初期化されたフローの統計情報である。
【０１４８】
次に、フローマネージャ７０１は、パケットスイッチ９０１のスイッチＩＤとステップＦ７１３で取得されたＴＰＨ設定値列７１６の値とに基づいて、インタフェーステーブル７４を参照し、ポートＩＤ列７４１の値を取得する（ステップＦ７１５）。
【０１４９】
次に、フローマネージャ７０１は、登録リクエストを、パケットスイッチ９０１に送信する（ステップＦ７１６）。その登録リクエストは、フローエントリ９１９を、フローテーブル９１に登録することを要求するものである。その登録リクエストは、パケットスイッチ９０１から問い合わせのあったフローのフローＩＤ、ステップＦ７１３で取得されたＴＰＨ設定値列７１６の値及びステップＦ７１５で取得されたポートＩＤ列７４１の値を含む。
【０１５０】
上述のようにして、フローマネージャ７０１は、フローテーブル９１に新規のフローエントリ９１９を追加する。
【０１５１】
本実施形態の変形として、パケットスイッチ９０１が、新規フロー（フローテーブル９１にフローエントリ９１９が登録されていないフロー）に対するフローエントリ９１９を生成してもよい。
【０１５２】
例えば、パケットスイッチ９０１は、その新規フローに属するパケットを、予め定められたデフォルトのパケット出力先ネットワークインタフェース５０１に出力するフローエントリ９１９を、生成・登録する。尚、この場合、図９に示すような、フローマネージャ７０１とパケットスイッチ９０１とのデータのやりとりは発生しない。
【０１５３】
上述した本実施形態における第１の効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
【０１５４】
その理由は、以下のような構成を含むからである。即ち、第１にフローテーブル９１がフローＩＤ列９１０とポートＩＤ列９１１との対応を記憶する。第２に、スイッチング制御部９９０が、フローテーブル９１の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェース５０１のいずれかにパケットを転送する。
【０１５５】
上述した本実施形態における第２の効果は、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
【０１５６】
その理由は、フローマネージャ７０１が、コンピュータ１０１のＣＰＵ２００に係る性能情報と、その性能情報を条件に含むポリシーテーブル７１とに基づいて、フローテーブル９１を更新するからである。換言すると、スイッチング制御部９９０は、更新されたフローテーブル９１に基づいて、その時々のＣＰＵ２００の状況に応じて動的に、ＴＰＨを利用する（ヒントを与える）か否かを決定するからである。
【０１５７】
上述した本実施形態における第３の効果は、よりパケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
【０１５８】
その理由は、フローマネージャ７０１が、パケットが流れるネットワークに係るトラフィック情報と、そのトラフィック情報を条件に含むポリシーテーブル７１とに基づいて、フローテーブル９１を更新するからである。換言すると、スイッチング制御部９９０は、更新されたフローテーブル９１に基づいて、その時々のトラフィックの状況に応じて動的に、ＴＰＨを利用する（ヒントを与える）か否かを決定するからである。
【０１５９】
上述した本実施形態における第４の効果は、ヒントを与える条件が複雑であっても、比較的容易に、その条件をポリシーテーブル７１に設定することが可能になる点である。
【０１６０】
その理由は、ポリシーテーブル７１に含まれる各ポリシーのそれぞれが、前記ポリシー相互間における優先度を有するからである。
【０１６１】
＜＜＜第２の実施形態＞＞＞
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【０１６２】
図１２は、本実施形態に係るトラフィック制御システム８０２の構成を示すブロック図である。トラフィック制御システム８０２は、オープンフロー（ＯｐｅｎＦｌｏｗ（登録商標））に対応するシステムである。
【０１６３】
オープンフローについては、以下の文献などに詳しく記載されているため、詳細な説明を省略する。「OpenFlow Switch Specification Version 1.3.1 (Wire Protocol 0x04) September 6,2012」、インターネット＜ｕｒｌ：https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.1.PDF＞。
【０１６４】
図１２に示すように、トラフィック制御システム８０２は、コンピュータ１０１と、パフォーマンスモニタ７００と、オープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）７０２と、オープンフロースイッチ９０２とを含む。更に、トラフィック制御システム８０２は、ポリシーテーブル７１と、ＣＰＵ統計情報テーブル７３と、インタフェーステーブル７４とを含む。
【０１６５】
オープンフローコントローラ７０２は、オープンフロー仕様に対応したスイッチ（例えばオープンフロースイッチ９０２）を、オープンフロー仕様に基づいたＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を用いて制御する。
【０１６６】
オープンフローコントローラ７０２は、ポリシーテーブル７１とインタフェーステーブル７４とを利用し、図８〜図１１に示される処理と同等の処理を行う。こうすることによって、オープンフローコントローラ７０２は、オープンフロースイッチ９０２のフローテーブル９１を制御する。その際、オープンフローコントローラ７０２は、フロー統計情報を、フロー統計情報テーブル７２からではなく、オープンフロースイッチ９０２に含まれるフローテーブル９２から取得する。
【０１６７】
オープンフロー仕様では、各オープンフロースイッチ９０２に備えられるフローテーブル９２の各フローエントリに、フローＩＤと、フローの統計情報と、そのフローに属するパケットに対する処理（アクション）と、が登録される。つまり、フロー統計情報テーブル７２相当の機能が、フローテーブル９２に含まれる。これにより、オープンフローコントローラ７０２は、図４に示されるフローマネージャ７０１から、フロー統計情報テーブル７２を除いた構成をとることができる。
【０１６８】
上述した本実施形態における第１の効果は、オープンフローに対応するシステムにおいても、第１の実施形態と同様の効果を得ることが可能になる点である。
【０１６９】
その理由は、オープンフローにフローシステムにおいて、フローマネージャ７０１及びパケットスイッチ９０１と同等の機能を有する、オープンフローコントローラ７０２及びオープンフロースイッチ９０２とを含むからである。
【０１７０】
上述した本実施形態における第２の効果は、フロー統計情報テーブル７２を削減することが可能になる点である。
【０１７１】
その理由は、オープンフロースイッチ９０２のフローテーブル９２が、フロー統計情報テーブル７２相当の機能を含むからである。
【０１７２】
＜＜＜第３の実施形態＞＞＞
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【０１７３】
図１３は、本発明の第３の実施形態に係るトラフィック制御システム８０３の構成を示す図である。トラフィック制御システム８０３は、パケットスイッチの機能を含むネットワークインタフェース５０３を用いた、システムである。
【０１７４】
図１３に示すように、トラフィック制御システム８０３は、コンピュータ１０３と、フローマネージャ７０３と、ポリシーテーブル７１と、フロー統計情報テーブル７２と、ＣＰＵ統計情報テーブル７３と、インタフェーステーブル７４とを含む。
【０１７５】
コンピュータ１０３は、ネットワークインタフェース５０１の替わりにネットワークインタフェース５０３を含む点が、図４に示すコンピュータ１０１と異なる。そして、ネットワークインタフェース５０３は、複数のＩ／Ｏインタフェース５４０及びパケット受信部５１０と、更にスイッチング制御部９９０及びフローテーブル９１とを含む点が、図４に示すネットワークインタフェース５０１と異なる。
【０１７６】
フローマネージャ７０３は、例えばコンピュータ１０３の管理インタフェース（不図示）を経由して、フローテーブル９１を更新する。
【０１７７】
上述した本実施形態における効果は、第１の実施形態の効果と同様である。
【０１７８】
その理由は、ネットワークインタフェース５０３がスイッチング制御部９９０及びフローテーブル９１を含み、フローマネージャ７０３がコンピュータ１０３に含まれるネットワークインタフェース５０３のフローテーブル９１を更新するからである。
【０１７９】
＜＜＜第４の実施形態＞＞＞
次に、本発明の第４の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【０１８０】
図１４は、本発明の第４の実施形態に係る情報処理装置９０４の構成を示すブロック図である。
【０１８１】
図１４に示すように、本実施形態における情報処理装置９０４は、フローテーブル９４及びスイッチング制御部９９０を含む。尚、図１４に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図１４に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
【０１８２】
図１５は、本実施形態におけるフローテーブル９４の一例を示す図である。
【０１８３】
図１５に示すように、フローテーブル９４は、パケットに含まれる情報であるフローＩＤ列９１０と、ポートＩＤ列９１１との対応を記憶する。ポートＩＤ列９１１の値は、スイッチング制御部９９０のポート（不図示）を特定する識別子である。従って、ポートＩＤ列９１１の値は、スイッチング制御部９９０のポートに接続されるネットワークインタフェース（不図示）を特定する。換言すると、フローテーブル９４は、パケットに含まれる情報であるフローＩＤ列９１０の値と、ネットワークインタフェースとの対応を記憶する。
【０１８４】
スイッチング制御部９９０は、フローテーブル９４に記憶された情報に基づいて、第１のネットワークインタフェース及び第２の前記ネットワークインタフェースのいずれか一方へ、パケットを転送する。ここで、第1のネットワークインタフェースは、ヒントを、そのパケットに付与する。第２のネットワークインタフェースは、そのヒントをそのパケットに付与しない。そのヒントは、そのパケットの送信先である宛先コンピュータがそのパケットを適切に処理するために、その宛先コンピュータによって利用される。
【０１８５】
以上が、情報処理装置９０４の機能単位の各構成要素についての説明である。
【０１８６】
次に、情報処理装置９０４のハードウェア単位の構成要素について説明する。
【０１８７】
図１６は、本実施形態における情報処理装置９０４を実現するコンピュータ９７０のハードウェア構成を示す図である。
【０１８８】
図１６に示すように、コンピュータ９７０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９７１、記憶部９７２、記憶装置９７３、入力部９７４、出力部９７５及び通信部９７６を含む。更に、コンピュータ９７０は、外部から供給される記録媒体（または記憶媒体）９７７を含む。例えば、記録媒体９７７は、情報を非一時的に記憶する不揮発性記録媒体（非一時的記録媒体）である。また、記録媒体９７７は、情報を信号として保持する、一時的記録媒体であってもよい。
【０１８９】
ＣＰＵ９７１は、オペレーティングシステム（不図示）を動作させて、コンピュータ９７０の全体の動作を制御する。例えば、ＣＰＵ９７１は、記憶装置９７３に装着された記録媒体９７７から、そのプログラムやデータを読み込み、読み込んだそのプログラムやそのデータを記憶部９７２に書き込む。ここで、そのプログラムは、例えば、後述の図１７に示すフローチャートの動作をコンピュータ９７０に実行させるためのプログラムである。
【０１９０】
そして、ＣＰＵ９７１は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図１４に示す情報処理装置９０４として各種の処理を実行する。
【０１９１】
尚、ＣＰＵ９７１は、通信網（不図示）に接続されている外部コンピュータ（不図示）から、記憶部９７２にそのプログラムやそのデータをダウンロードしてもよい。
【０１９２】
記憶部９７２は、そのプログラムやそのデータを記憶する。記憶部９７２は、フローテーブル９４を含んでよい。
【０１９３】
記憶装置９７３は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、記録媒体９７７を含む。記憶装置９７３（記録媒体９７７）は、そのプログラムをコンピュータ読み取り可能に記憶する。また、記憶装置９７３は、そのデータを記憶してもよい。記憶装置９７３は、フローテーブル９４を含んでよい。
【０１９４】
入力部９７４は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。
【０１９５】
出力部９７５は、例えばディスプレイで実現される。出力部９７５は、例えばＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）による入力要求や出力などの確認をするために用いられる。
【０１９６】
通信部９７６は、外部（例えば、図４に示すコンピュータ１０１やフローマネージャ７０１など）とのインタフェースを実現する。通信部９７６は、スイッチング制御部９９０の一部として含まれる。
【０１９７】
以上説明したように、図１４に示す情報処理装置９０４の機能単位のブロックは、図１６に示すハードウェア構成のコンピュータ９７０によって実現される。但し、コンピュータ９７０が備える各部の実現手段は、上記に限定されない。すなわち、コンピュータ９７０は、物理的に結合した１つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
【０１９８】
尚、上述のプログラムのコードを記録した記録媒体９７７が、コンピュータ９７０に供給される場合、ＣＰＵ９７１は、記録媒体９７７に格納されたそのプログラムのコードを読み出して実行してもよい。或いは、ＣＰＵ９７１は、記録媒体９７７に格納されたそのプログラムのコードを、記憶部９７２、記憶装置９７３またはその両方に格納してもよい。すなわち、本実施形態は、コンピュータ９７０（ＣＰＵ９７１）が実行するそのプログラム（ソフトウェア）を、一時的にまたは非一時的に、記憶する記録媒体９７７の実施形態を含む。尚、情報を非一時的に記憶する記憶媒体は、不揮発性記憶媒体とも呼ばれる。
【０１９９】
以上が、本実施形態における情報処理装置９０４を実現するコンピュータ９７０の、ハードウェア単位の各構成要素についての説明である。
【０２００】
次に、本実施形態の動作について図面を参照して詳細に説明する。
【０２０１】
図１７は、本実施形態の動作を示すフローチャートである。尚、このフローチャートによる処理は、前述したＣＰＵ９７１によるプログラム制御に基づいて、実行されてよい。また、処理のステップ名については、Ｆ７８０のように、記号で記載する。
【０２０２】
スイッチング制御部９９０は、パケットを受信する（ステップＦ７８０）。
【０２０３】
次に、スイッチング制御部９９０は、受信したそのパケットに含まれるフローＩＤをキーにしてフローテーブル９４を検索し、そのフローＩＤに対応するポートＩＤ列９１１の値を取得する（ステップＦ７８１）。換言すると、スイッチング制御部９９０は、フローテーブル９４に記憶された情報に基づいて、パケットの転送先とするネットワークインタフェースを決定する。
【０２０４】
次に、スイッチング制御部９９０は、取得したポートＩＤ列９１１の値で特定されるポートから、ステップＦ７８０で受信したそのパケットを送信する（ステップＦ７８２）。
【０２０５】
上述した本実施形態における効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
【０２０６】
その理由は、以下のような構成を含むからである。即ち、第１にフローテーブル９４がフローＩＤ列９１０とポートＩＤ列９１１との対応を記憶する。第２に、スイッチング制御部９９０が、フローテーブル９４の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェースのいずれかにパケットを転送する。
【０２０７】
＜＜＜第５の実施形態＞＞＞
次に、本発明の第５の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【０２０８】
図１８は、本発明の第４の実施形態に係る情報処理装置９０５の構成を示すブロック図である。
【０２０９】
図１８に示すように、本実施形態における情報処理装置９０５は、図１４に示す情報処理装置９０４と比べて、フローマネージャ７０４を更に含む点が異なる。また、本実施形態における情報処理装置９０５は、図１４に示す情報処理装置９０４と比べて、フローテーブル９４の替わりに、図７に示すフローテーブル９１を含む点が異なる。尚、図１８に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図１８に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
【０２１０】
フローマネージャ７０４は、受信したパケットに含まれるフローＩＤ、そのパケットに係る環境状況情報、及び、ポリシーに基づいて、そのフローＩＤとネットワークインタフェースとの対応を決定し、フローテーブル９１の内容を更新する。
【０２１１】
そのパケットに係る環境状況情報は、例えば、そのパケットの宛先である、コンピュータの性能に係る性能情報である。そのパケットに係る環境状況情報は、そのパケットが流れるネットワークのトラフィック情報であってもよい。また、そのパケットに係る環境状況情報は、その性能情報及びそのトラフィック情報の両方であってもよい。
【０２１２】
そのポリシーは、そのフローＩＤとその環境状況情報とヒントを与えるか否かを示す情報との対応を示す。
【０２１３】
以上が、情報処理装置９０５の機能単位の各構成要素についての説明である。
【０２１４】
次に、情報処理装置９０５のハードウェア単位の構成要素について説明する。本実施形態における情報処理装置９０５を実現するハードウェア単位の構成要素は、図１６に示すコンピュータ９７０の構成要素であってよい。
【０２１５】
この場合、記憶部９７２に書き込まれるプログラムは、例えば、図１０及び図１１に示すフローチャートの動作と同等の動作をコンピュータ９７０に実行させるためのプログラムである。
【０２１６】
そして、ＣＰＵ９７１は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図１８に示す情報処理装置９０５として各種の処理を実行する。
【０２１７】
記憶部９７２及び記憶装置９７３は、フローマネージャ７０４の一部として、ポリシーを記憶してもよい。
【０２１８】
入力部９７４は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。入力部９７４は、フローマネージャ７０４の一部として、オペレータが入力するポリシーを受け付けてよい。
【０２１９】
通信部９７６は、スイッチング制御部９９０の一部として、外部から、ポリシー及びそのパケットに係る環境状況情報を受信してもよい。
【０２２０】
フローマネージャ７０４の動作は、図１０及び図１１に示す動作と同等である。
【０２２１】
上述した本実施形態における効果は、第４の実施形態の効果に加えて、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
【０２２２】
その理由は、フローマネージャ７０４が、フローＩＤと、環境状況情報と、そのフローＩＤ及びその環境状況情報を含むポリシーとに基づいて、フローテーブル９１を更新するからである。
【０２２３】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が１個のモジュールとして実現されてよい。また、各構成要素は、１つの構成要素が複数のモジュールで実現されてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であるような構成であってよい。また、各構成要素は、ある構成要素の一部と他の構成要素の一部とが重複するような構成であってもよい。
【０２２４】
以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ、可能であれば、ハードウェア的に実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、コンピュータ及びプログラムで実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されてもよい。
【０２２５】
そのプログラムは、例えば、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
【０２２６】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障のない範囲で変更することができる。
【０２２７】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【０２２８】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作との全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されてよい。
【０２２９】
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
【０２３０】
この出願は、２０１３年１２月１７日に出願された日本出願特願２０１３−２６０１３１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０２３１】
１０１    コンピュータ
１０３    コンピュータ
１０７    コンピュータ
１０８    コンピュータ
２００    ＣＰＵ
２２０    演算コア
２２１    キャッシュコントローラ
２２２    ローカルキャッシュ
２２３    キャッシュメモリ
２２４    共有キャッシュ
２２５    メモリコントローラ
３００    メインメモリ（Ｍａｉｎ  Ｍｅｍｏｒｙ）
４００    Ｉ／Ｏコントローラ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）
４０７    Ｉ／Ｏコントローラ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）
４０８    Ｉ／Ｏコントローラ（Ｉ／Ｏ  Ｃｏｎｔｒｏｌｌｅｒ）
４４０    ＰＣＩ−Ｅｘｐｒｅｓｓルートコンプレックス（Ｒｏｏｔ  Ｃｏｍｐｌｅｘ）
４４１    シリアルＡＴＡインタフェース（ＳＡＴＡ  ｉｎｔｅｒｆａｃｅ）
４４２    その他Ｉ／Ｏインタフェース（Ｏｔｈｅｒ  Ｉ／Ｏ  ｉｎｔｅｒｆａｃｅ）
５０１    ネットワークインタフェース（ＮＷ  Ｉ／Ｆ）
５０３    ネットワークインタフェース
５１０    パケット受信部
５４０    Ｉ／Ｏインタフェース（Ｉ／Ｏ  Ｉ／Ｆ）
６５０    ＰＣＩ−Ｅｘｐｒｅｓｓデバイス（Ｄｅｖｉｃｅｓ）
６６０    ストレージデバイス（Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅｓ）
７００    パフォーマンスモニタ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｍｏｎｉｔｏｒ）
７０１    フローマネージャ（Ｆｌｏｗ  Ｍａｎａｇｅｒ）
７０２    オープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ）
７０３    フローマネージャ（Ｆｌｏｗ  Ｍａｎａｇｅｒ）
７０４    フローマネージャ（Ｆｌｏｗ  Ｍａｎａｇｅｒ）
７１    ポリシーテーブル（Ｐｏｌｉｃｙ  Ｔａｂｌｅ）
７１０    ポリシー（Ｐｏｌｉｃｙ）ＩＤ列
７１１    フロー（Ｆｌｏｗ）ＩＤ列
７１２    スループット（Ｔｈｒｏｕｇｈｐｕｔ）列
７１３    平均パケットサイズ（Ａｖｅｒａｇｅ  ｐａｋｅｔ  ｓｉｚｅ）列
７１４    ＣＰＵ使用率（Ｕｔｉｌｉｚａｔｉｏｎ）列
７１５    キャッシュヒット率（Ｃａｃｈｅ  Ｈｉｔ  Ｒａｔｅ）列
７１６    ＴＰＨ設定値（Ｓｅｔｔｉｎｇ）列
７２    フロー統計情報テーブル（Ｆｌｏｗ  Ｓｔａｔ  Ｔａｂｌｅ）
７３    ＣＰＵ統計情報テーブル（ＣＰＵ  Ｓｔａｔ  Ｔａｂｌｅ）
７４    インタフェーステーブル（Ｉ／Ｆ  Ｔａｂｌｅ）
７４０    スイッチ（Ｓｗｉｔｃｈ）ＩＤ列
７４１    ポート（Ｐｏｒｔ）ＩＤ列
７４２    コンピュータ（Ｃｏｍｐｕｔｅｒ）ＩＤ列
７４３    ＴＰＨ設定値（Ｓｅｔｔｉｎｇ）列
８０１    トラフィック制御システム
８０２    トラフィック制御システム
８０３    トラフィック制御システム
９０１    パケットスイッチ
９０２    オープンフロースイッチ
９０４    情報処理装置
９０５    情報処理装置
９９０    スイッチング制御部
９１    フローテーブル
９１０    フロー（Ｆｌｏｗ）ＩＤ列
９１１    ポート（Ｐｏｒｔ）ＩＤ列
９１２    ＴＰＨ設定値（Ｓｅｔｔｉｎｇ）列
９１９    フローエントリ
９４    フローテーブル
９７０    コンピュータ
９７１    ＣＰＵ
９７２    記憶部
９７３    記憶装置
９７４    入力部
９７５    出力部
９７６    通信部
９７７    記録媒体
【図１】
2015092973.tif 000003
【図２】
2015092973.tif 000004
【図３】
2015092973.tif 000005
【図４】
2015092973.tif 000006
【図５】
2015092973.tif 000007
【図６】
2015092973.tif 000008
【図７】
2015092973.tif 000009
【図８】
2015092973.tif 000010
【図９】
2015092973.tif 000011
【図１０】
2015092973.tif 000012
【図１１】
2015092973.tif 000013
【図１２】
2015092973.tif 000014
【図１３】
2015092973.tif 000015
【図１４】
2015092973.tif 000016
【図１５】
2015092973.tif 000017
【図１６】
2015092973.tif 000018
【図１７】
2015092973.tif 000019
【図１８】
2015092973.tif 000020
【手続補正書】
【提出日】平成28年5月24日(2016.5.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第１の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む情報処理装置。
【請求項２】
前記フロー識別子、前記パケットに係る環境状況情報、及び、前記フロー識別子と前記環境状況情報と前記示唆情報を与えるか否かを示す情報との対応を示すポリシーに基づいて、前記フロー識別子と前記ネットワークインタフェースとの対応を決定し、前記フロー情報記憶手段の内容を更新するフロー情報更新手段を更に含む、ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記フロー情報更新手段は、前記宛先コンピュータの性能に係る性能情報を取得し、前記環境状況情報は、前記性能情報を含むことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記性能情報は、前記宛先コンピュータに係るＣＰＵ使用率及びキャッシュヒット率であることを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記フロー情報更新手段は、更に、前記パケットが流れるネットワークのトラフィック情報を取得し、前記環境状況情報は、前記トラフィック情報を含むことを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記ポリシーのそれぞれは、前記ポリシー相互間における優先度を有することを特徴とする請求項２乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記切替手段及び前記フロー情報更新手段のそれぞれは、オープンフローに対応することを特徴とする請求項２乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送するトラフィック制御方法。
【請求項９】
パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラム。
【請求項１０】
プロセッサと、プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第２の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する情報処理装置。
【国際調査報告】
2015092973.tif 000021
2015092973.tif 000022
2015092973.tif 000023
2015092973.tif 000024