JPWO2015092973A1 - 情報処理装置及びトラフィック制御方法 - Google Patents

情報処理装置及びトラフィック制御方法 Download PDF

Info

Publication number
JPWO2015092973A1
JPWO2015092973A1 JP2015553350A JP2015553350A JPWO2015092973A1 JP WO2015092973 A1 JPWO2015092973 A1 JP WO2015092973A1 JP 2015553350 A JP2015553350 A JP 2015553350A JP 2015553350 A JP2015553350 A JP 2015553350A JP WO2015092973 A1 JPWO2015092973 A1 JP WO2015092973A1
Authority
JP
Japan
Prior art keywords
packet
flow
information
network interface
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015553350A
Other languages
English (en)
Inventor
聡 辻
聡 辻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2015092973A1 publication Critical patent/JPWO2015092973A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Abstract

本発明は、キャッシュヒット率の悪化を防止或いは低減する情報処理装置を提供する。その情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、そのフロー情報記憶手段に記憶された情報に基づいて、パケットの送信先である宛先コンピュータがそのパケットを適切に処理するために利用する示唆情報を、そのパケットに付与する第1のネットワークインタフェース及びそのパケットに付与しない第2のネットワークインタフェース、のいずれか一方へそのパケットを転送する切替手段と、を備える。

Description

本発明は、トラフィック制御技術に関し、特にパケット転送のトラフィック制御技術に関する。
パケット転送に関する様々な関連技術が知られている。そのような関連技術の1つとして、ネットワークから受信したパケットを効率よく処理する技術が開示されている。
特許文献1は、キャッシュ制御装置の一例を開示する。特許文献1に記載のキャッシュ制御装置は、以下の構成を含む。
領域設定手段は、書き込み領域をキャッシュメモリに設定する。ここで、その書き込み領域は、予め定められた量の受信データを書き込み可能な領域である。
領域削除手段は、書き込み領域に書き込まれた一部または全部の受信データに対する処理ごとに、その処理の対象になった受信データが書き込まれた領域を削除する。
領域設定手段は、受信データに対する処理ごとに、後続の受信データを書き込む位置に、その後続の受信データを書き込み可能な領域として、削除された領域に相当する量の領域を新たに設定する。ここで、その後続の受信データは、予め定められた量の受信データを受信した後に受信するデータである。
受信データ判定手段は、書き込み領域に書き込むことが可能な量を超えるデータを受信したか否かを判定する。
受信データ書き込み手段は、受信データを書き込み領域に書き込む。また、受信データ書き込み手段は、書き込み領域に書き込むことが可能な量を超えた受信データをメインメモリに書き込む。
データ読取手段は、その受信データをメインメモリからプリフェッチする。
特許文献1は、そのキャッシュ制御装置が、上述の構成を備えることで、キャッシュメモリの使用量を一定に保ちつつ、かつパケットを欠落させることなく、メモリアクセスに伴う処理遅延が解消し、処理性能を向上させることができる、としている。
そのメモリアクセスに伴う処理遅延が解消される理由は、以下のメモリアクセスの処理が削減されるためであるとしている。
第1の削減されるメモリアクセスの処理は、NIC(Network Interface Card)からメモリへの書き込み処理である。第2の削減されるメモリアクセスの処理は、CPU(Central Processing Unit)からメモリへの読み出し処理である。第3の削減されるメモリアクセスの処理は、第2の処理に伴ってキャッシュに記憶されたデータが追い出される際に、そのデータがメモリへ書き出される処理である。
上述の「受信データをメインメモリからプリフェッチする」技術に関し、非特許文献1及び非特許文献2が開示する技術を、以下に図を用いて順を追って説明する。
図1は、関連技術におけるコンピュータ107の一般的な構成を示す。図1を参照すると、コンピュータ107は、CPU200と、メインメモリ(Main Memory)300とを備える。更に、コンピュータ107は、I/O(Input/Output)コントローラ(I/O Controller)407を備える。更に、コンピュータ107は、PCI(Peripheral Component Interconnect)−Express(登録商標)デバイス(PCI−Express Devices)650を備える。更に、コンピュータ107は、ストレージデバイス(Storage Devices)660を備える。
I/Oコントローラ407は、様々なI/Oデバイスに対する、様々なインタフェースを制御するコントローラである。I/Oコントローラ407は、PCI−Expressルートコンプレックス(PCI−Express Root Complex)440を備える。また、I/Oコントローラ407は、シリアルATA(Advanced Technology Attachment)インタフェース(SATA interface)441を備える。更に、I/Oコントローラ407は、その他I/Oインタフェース(Other I/O interfaces)442を備える。I/Oコントローラ407は、CPU200に対して、これらのインタフェースによって接続されるI/Oデバイスに対する、アクセス機能を提供する。
比較的旧タイプのコンピュータでは、例えば、I/Oコントローラにメモリコントローラが内蔵され、メインメモリがI/Oコントローラに接続されていた。しかし、近年のコンピュータ107では、メモリコントローラ(不図示)の機能はCPU200に統合されているのが一般的である。
PCI−Expressルートコンプレックス440は、PCI−Expressで構成されるI/Oファブリックの最上位階層に位置し、CPU200とPCI−Expressデバイス650とを接続するためのインタフェースである。
シリアルATAインタフェース441は、HDD(Hard Disk Drive)やSSD(Solid State Drive)といったストレージデバイスを接続するためのインタフェースである。
その他I/Oインタフェース442は、例えばUSB(Universal Serial Bus)インタフェースや、PS(Personal System)/2インタフェース、シリアルポートインタフェース、パラレルポートインタフェース、などである。また、その他I/Oインタフェース442は、コンピュータ107に様々な周辺機器を接続するための様々なインタフェースである。
PCI−Expressデバイス650は、PCI−Expressで構成されるI/Oファブリックに接続されるデバイスであり、PCI−Expressの仕様ではエンドポイントと呼ばれる。このようなデバイスの例として、NICのようなネットワーク接続用のデバイスが挙げられる。また、他の例として、RAID(Redundant Arrays of Independent Disks)などのストレージ装置接続用のデバイスが挙げられる。更に、他の例として、サウンドカードやビデオキャプチャカードなどのAV(Audio Visual)機能を備えたデバイス、などが挙げられる。
ストレージデバイス660は、ATA規格に従ったストレージデバイスであり、例として、HDDやSSD、Blu−ray(登録商標)ドライブなどが挙げられる。
図2は、コンピュータ107とは異なる形態の、コンピュータ108の構成を示す。図2を参照すると、コンピュータ108はCPU200にPCI−Expressルートコンプレックス440が内蔵され、PCI−Expressデバイス650がCPU200に直接接続されている点が、コンピュータ107と異なる。更に、コンピュータ108はCPU200同士が直接接続されている点が、コンピュータ107と異なる。
図3は、CPU200の構造の一例を示す。CPU200は、大きく分けて演算コア220と、キャッシュメモリ223(ローカルキャッシュ222及び共有キャッシュ224)と、キャッシュコントローラ221と、メモリコントローラ225とから構成される。尚、図3では、図2に示すCPU200に内蔵されるPCI−Expressルートコンプレックス440の記載が省略されている。
図3に示すようにCPU200は、演算コア220を複数備えているのが一般的であり、各演算コア220にキャッシュコントローラ221と、ローカルキャッシュ222が備えられる。
演算コア220は、様々な命令を実行する。
キャッシュメモリ223は、演算コア220が使用するデータを格納する。
ローカルキャッシュ222は、各演算コア220が占有して使用することができるキャッシュメモリである。
共有キャッシュ224は、演算コア220間で共有されるキャッシュメモリである。この共有キャッシュ224は、一般的にキャッシュメモリ階層の最下層に位置するため、ラストレベルキャッシュとも呼ばれる。
メモリコントローラ225は、図1及び図2に示すメインメモリ300を制御する。
キャッシュコントローラ221は、キャッシュメモリ223に対するアクセスを制御する。一般的なコンピュータにおいて、キャッシュメモリの容量は、メインメモリの100分の1程度のサイズであり、ある処理に必要なデータや命令などを部分的にしか格納できない場合が多い。そこで、キャッシュメモリ223にはメインメモリ300から読み出すデータのうち、その時点で演算コア220が必要とするデータのみが格納される。そのため、キャッシュコントローラ221は、キャッシュメモリ223に格納されるデータの入れ替えや、メインメモリ300へのデータの書き戻しなどを制御する。
ところで、イーサネット(登録商標)などのコンピュータネットワーク(以降、ネットワーク)において、コンピュータ107及びコンピュータ108がパケットを受信する場合、以下のように動作する。第1に、NIC(PCI−Expressデバイス650)が受信したパケットのデータは、メインメモリ300などのコンピュータ107及びコンピュータ108が備えるメインメモリ300に、ストアされる。第2に、CPU200がその受信したパケットの処理をする際に、メインメモリ300からそのパケットのデータが読み出される。
キャッシュコントローラ221は、メインメモリ300へアクセスする前に、キャッシュメモリ223のいずれかに、処理対象のパケットのデータが格納されているかどうかを確認する。キャッシュメモリ223に必要なデータが格納されていない場合(キャッシュミス時)、キャッシュコントローラ221は、メモリコントローラ225を経由して、メインメモリ300からパケットのデータを読み出す。
続けて、キャッシュコントローラ221は、読み出したそのパケットのデータをキャッシュメモリ223のいずれかに格納する。どの階層のキャッシュメモリ223に格納するかは、キャッシュコントローラ221の仕様に依存する。仮に、CPU200があるパケットを処理する際に、既に処理対象のそのパケットがキャッシュメモリ223に格納されている場合(ヒット時)、CPU200はメインメモリ300にアクセスすることなく、そのパケットを処理することができる。
キャッシュメモリ223に対するアクセスのヒット時とキャッシュミス時との違いは、メインメモリ300へのアクセスが行われるかどうかという点である。しかしながら、近年のCPU200における、キャッシュメモリ223に対するアクセスと、メインメモリ300に対するアクセス遅延の差は、数10倍から100倍程度に広がっている。従って、なるべくキャッシュメモリ223に、CPU200が処理するデータが格納されていることが望ましい。
そのため、CPU200には、CPU200が処理対象のデータを必要とする前に、メインメモリ300からキャッシュメモリ223に、必要なデータを読み出しておくプリフェッチの機能が備わっている。このプリフェッチの機能には、CPU200が自動的に行うハードウェアプリフェッチと、OS(Operating System)やアプリケーションが指示するソフトウェアプリフェッチとが存在する。メインメモリ300からキャッシュメモリ223にデータをプリフェッチしておくことで、CPUがデータを必要とする前に、キャッシュメモリ223にそのデータを格納しておくことが可能となる。
現在、PCI−Expressデバイスから送信されるデータに対して、ヒントを与える機能がPCI−Expressの仕様で定義されている。ヒントとは、CPU200が受信したパケットのデータを適切に処理するために、利用される情報である。この機能はTLP(Transaction Layer Protocol) Processing Hints(TPH)と呼ばれる。この機能は、PCI−Express 2.1から仕様に取り込まれた。TPHの仕様については非特許文献1に詳しく記載されている。
TPHは、PCI−Expressファブリックを流れるTLPパケットのヘッダの特定のフィールドに、そのTLPパケットの転送先のメモリアドレスなどに基づいて、ヒント(例えば、ステアリングタグと呼ばれるタグ)を書き込む機能である。このステアリングタグ(ヒント)をどのように扱うかは、TLPパケットを受信する側のデバイス(CPU200やI/Oコントローラ407、I/Oコントローラ408)次第である。
例えば、Intel(登録商標)社は、DCA(Direct Cache Access)と呼ばれる機能を、CPU200やI/Oコントローラ407、I/Oコントローラ408に搭載している。その機能は、そのヒントに基づいてPCI−Expressデバイスからのデータを、CPU200がハードウェアプリフェッチするための機能である。
DCAに対応するNICは、TLPパケットにヒントとしてステアリングタグを付加し、CPU200やI/Oコントローラ407、I/Oコントローラ408に向けて、このTLPパケットを送信する。非特許文献2(特に、7.5項)によると、DCAの場合、ステアリングタグには、以下の(1)或いは(2)のいずれかが格納される。(1)DCAが有効か無効かを示すフラグとターゲットとなるキャッシュを示すID。(2)APIC(Advanced Programmable Interrupt Controller) IDに基づくターゲットコアID。
また、非特許文献2によると、Intel 82599 10Gigabit Ethernet(登録商標) Controllerでは、以下の、(1)、(2)及び(3)のモードが存在する。(1)メインメモリ300に書き戻す受信ディスクリプタのTLPパケット(非特許文献2では、“PCIe TLP”と呼ばれる)に対してヒント(ステアリングタグ:APIC IDに基づくターゲットコアID)を書き込むモード。(2)受信したイーサネットパケットのヘッダバッファへのTLPパケットに対してヒントを書き込むモード。(3)受信したイーサネットパケットのペイロードに対してヒントを書き込むモード。
このTLPパケットのペイロード部は、一旦メインメモリ300に格納される。その後、CPU200やI/Oコントローラ407、I/Oコントローラ408が、ステアリングタグの情報に基づいて、このペイロード部をキャッシュメモリ223にハードウェアプリフェッチする。このハードウェアプリフェッチによって、ネットワークから受信したパケットが効率よく処理される。
特開2012−164209号公報
Mahesh Wagh、 Intel Corporation、「PCI-SIG PCIe(登録商標)3.0/2.1 Protocol Update」、2011年、2013年12月13日検索、インターネット<url: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」、2013年6月、2013年12月13日検索、インターネット<url:http://www.intel.co.JP/content/www/JP/ja/ethernet-controllers/82599-10-gbe-Controller-datasheet.html>
以下の分析は、本発明によって与えられたものである。
しかしながら、上述した先行技術文献に記載された技術においては、キャッシュヒット率が悪化する場合があるという問題点がある。
その理由は、上述した先行技術文献に記載された技術においては、ネットワークのトラフィック状況や、受信パケットの処理装置の負荷状況などを考慮することなく、プリフェッチを実行するからである。ここで、受信パケットの処理装置は、特許文献1におけるキャッシュ制御装置、上述のコンピュータ107及びコンピュータ108などである。
例えば、キャッシュヒット率が悪化する場合は、CPUがパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合である。以下に、この場合について、より詳細に説明する。
図3において、一般的にキャッシュメモリ223は、キャッシュラインという小規模な領域に分けられている。各キャッシュラインは、インデックス番号が割り付けられる。メインメモリ300から読み出されたデータは、特定のインデックス番号を持つキャッシュラインに格納される。その特定のインデックス番号は、そのデータが格納されていたメインメモリ300の、メモリアドレスの特定のフィールドの値と一致するインデックス番号である。
このようなキャッシュラインの使い方は、ダイレクトマップ方式或いはセットアソシアティブ方式と呼ばれるキャッシュメモリ223で用いられる。これらの方式に基づいて動作するキャッシュメモリ223では、メインメモリ300から読み出されたデータを、キャッシュメモリ223の任意の場所(キャッシュライン)に格納することはできない。
ここで、特許文献1に開示されるキャッシュ制御装置のキャッシュメモリの使用方法は、メインメモリ300のメモリアドレスとは関係なく使用される方法である。従って、特許文献1に開示される技術は、ダイレクトマップ方式或いはセットアソシアティブ方式のキャッシュメモリ223には適用することができない。
キャッシュメモリ223がダイレクトマップ方式或いはセットアソシアティブ方式である場合、次のような動作が行われる。メインメモリ300からデータがプリフェッチされた際に、プリフェッチされたデータの格納先となるキャッシュラインが既に使用されていた場合、そのキャッシュラインに格納されていたデータは、メインメモリ300に書き戻される。
また、上述したように、非特許文献1及び非特許文献2は、DCAと呼ばれる技術を開示している。ここで、CPU200がパケットの受信処理を行う速度よりも、ネットワークからパケットを受信する速度の方が高い場合、DCAのような技術が使用されていると、以下のような問題が発生する可能性がある。
例えば、CPU200がキャッシュメモリに格納されたN番目のパケットを処理する前に、N+1番目以降のパケットのデータがプリフェッチされる。そのN+1番目以降のパケットのデータがプリフェッチされることによって、N番目のパケットがキャッシュから追い出される場合がある。そうすると、CPU200がキャッシュメモリ223をアクセスした場合にキャッシュミスが発生する。このため、CPU200は、再びN番目のパケットをメインメモリ300から読み出す必要が発生する。こうして、メインメモリ300へのアクセスの分だけ性能が低下する。
換言すると、DCA技術を用いたプリフェッチによりCPU200におけるキャッシュヒット率が悪化し、スループット及びCPU使用率の点でコンピュータ107及びコンピュータ108の性能が悪化する。
また、キャッシュヒット率が悪化する場合は、CPU200のキャッシュヒット率が既に悪化している場合である。以下に、このキャッシュヒット率が悪化する場合について、より詳細に説明する。
関連技術は、トラフィックパターンやトラフィックの優先度、CPU200のキャッシュヒット率など、状況に応じて、プリフェッチをするかどうか使い分けることができない。
即ち、関連技術ではTLPパケットにTPHを書き込むかどうかの設定は、受信パケットの転送先となるメインメモリ300のアドレスなど、静的な情報に基づいて行われる。
従って、CPU200のキャッシュヒット率が悪化しているときに、DCAのような技術を用いると、キャッシュメモリ223に格納されているデータの入れ替えが発生し、よりキャッシュヒット率が悪化する可能性がある。
本発明の目的は、上述した課題を解決する情報処理装置、トラフィック制御方法、及び、そのためのプログラム或いはそのプログラムを記録したコンピュータ読み取り可能な非一時的記録媒体を提供することにある。
本発明の一様態における第1の情報処理装置は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む。
本発明の一様態におけるトラフィック制御方法は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。
本発明の一様態におけるコンピュータ読み取り可能な不揮発性非一時的記録媒体は、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録する。
本発明の一様態における第2の情報処理装置は、プロセッサと、プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する。
本発明は、キャッシュヒット率の悪化を防止或いは低減することが可能になるという効果がある。
図1は、関連技術に係るコンピュータの構成を示すブロック図である。 図2は、関連技術に係るコンピュータの構成を示すブロック図である。 図3は、関連技術に係るCPUの構造の一例を示すブロック図である。 図4は、本発明の第1の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図5は、第1の実施形態におけるポリシーテーブルの一例を示す図である。 図6は、第1の実施形態におけるインタフェーステーブルの一例を示す図である。 図7は、第1の実施形態におけるフローテーブルの一例を示す図である。 図8は、第1の実施形態におけるフローテーブルにフローエントリが登録されているフローについて、登録内容を変更する処理の流れを示すシーケンス図である。 図9は、第1の実施形態におけるフローテーブルにフローエントリが存在しないフローについて、新規フローエントリを登録する処理の流れを示すシーケンス図である。 図10は、第1の実施形態におけるフローマネージャが登録内容を変更する動作を示すフローチャートである。 図11は、第1の実施形態におけるフローマネージャが新規フローエントリを登録する動作を示すフローチャートである。 図12は、本発明の第2の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図13は、本発明の第3の実施形態に係る、トラフィック制御システムの構成を示すブロック図である。 図14は、本発明の第4の実施形態に係る、情報処理装置の構成を示すブロック図である。 図15は、第4の実施形態におけるフローテーブルの一例を示す図である。 図16は、第4の実施形態に係る情報処理装置を実現するコンピュータのハードウェア構成を示すブロック図である。 図17は、第4の実施形態における動作を示すフローチャートである。 図18は、本発明の第5の実施形態に係る、情報処理装置の構成を示すブロック図である。
本発明を実施するための形態について図面を参照して詳細に説明する。尚、図面参照符号は、理解を助けるための一例として各構成要素に便宜上付与したものであり、本発明を図示の態様に限定するものではない。また、各図面及び明細書記載の各実施形態において、同様の構成要素には同様の図面参照符号を付与し、適宜説明を省略する。
[第1の実施形態]
本発明の第1の実施形態について、図面を参照して詳細に説明する。
[構成の説明]
図4は、本発明の第1の実施形態に係るトラフィック制御システム801の構成を示すブロック図である。
図4を参照すると、トラフィック制御システム801は、コンピュータ101と、フローマネージャ(Flow Manager、フロー情報更新手段とも呼ばれる)701と、パケットスイッチ901とを含む。更に、トラフィック制御システム801は、パフォーマンスモニタ(Performance Monitor)700と、ポリシーテーブル(Policy Table)71と、フロー統計情報テーブル(Flow Stat Table)72と、を含む。更に、トラフィック制御システム801は、CPU統計情報テーブル(CPU Stat Table)73と、インタフェーステーブル(I/F TABLE)74と、を含む。
===コンピュータ101===
コンピュータ101は、CPU200と、メインメモリ300(Main Memory)と、I/Oコントローラ(I/O Controller)400と、ネットワークインタフェース(NW I/F)501と、を含む。
また、コンピュータ101は、図1に示すコンピュータ107のように、ネットワークインタフェース501をI/Oコントローラ400の配下に実装する構成としている。しかし、このことは、コンピュータ101の構成を限定するものではなく、図2に示すコンピュータ108のように、CPU200にネットワークインタフェース501が直接接続される構成としてもよい。こうすることによる本実施形態の差異は、発生しない。
本実施形態では、I/Oコントローラ400に接続されるネットワークインタフェース501は、例えば、PCI−Expressを介して接続されるものとする。尚、図4のI/Oコントローラ400には、PCI−Expressルートコンプレックス440が図示されていない。しかし、ネットワークインタフェース501は、I/Oコントローラ400に内蔵されるPCI−Expressルートコンプレックス440(不図示)に接続されるものとする。尚、このことは、本実施形態を、PCI−Expressを備えるシステムに、限定するものではない。
ネットワークインタフェース501は、パケット受信部510と、I/Oインタフェース(I/O I/F)540と、を含む。尚、図4には、ネットワークインタフェース501のパケット受信側の構成のみが示されており、送信側の構成は省略されている。
パケット受信部510は、ネットワーク(不図示)から受信したパケットの受信処理を実行するモジュールである。本実施形態では、ネットワークをイーサネットとし、IP(Internet Protocol)パケットが流れるものとしているが、このことは、本実施形態をイーサネット、或いはIPネットワークに限定するものではない。
パケット受信部510は、一般的なネットワークカードの受信処理部が備える機能を備える。その機能の例として、受信パケットチェック機能や、フィルタリング機能など、が挙げられる。受信パケットチェック機能は、受信したパケットのチェックサムを計算し、パケットにデータ破損が起きていないかどうかを確認する機能である。フィルタリング機能は、パケットヘッダに含まれるMAC(Media Access Control)アドレスやVLAN(Virtual Local Area Network)タグ、IPアドレスの情報を元にパケットをフィルタリングする機能である。
I/Oインタフェース540は、ネットワークインタフェース501の、I/Oコントローラ400に対するインタフェースである。I/Oインタフェース540は、受信したパケットをTLPパケットのペイロード部に収め、I/Oコントローラ400に向けてTLPパケットを送出する。
本実施形態では、コンピュータ101は、2つ以上のネットワークインタフェース501を含む。各ネットワークインタフェース501に含まれる各I/Oインタフェース540のうち、少なくとも1つのI/Oインタフェース540は、TLPパケットに対してヒント(示唆情報とも呼ばれる)を付与する。即ち、そのI/Oインタフェース540は、TPHが有効である。そして、少なくとも他の1つのI/Oインタフェース540は、TLPパケットに対してヒントを付与しない。即ち、そのI/Oインタフェース540は、TPHが無効である。
図4に示すように、ヒントを付与する(TPHが有効な)I/Oインタフェース540をI/Oインタフェース(on)540と呼ぶ。また、ヒントを付与しない(TPHが無効な)I/Oインタフェース540をI/Oインタフェース(off)540と呼ぶ。
ヒントは、例えば、CPU200が受信したパケットのデータを適切に処理するために、利用される情報である。
具体的には、本実施形態において、ヒントは、CPU200がDCA機能を用いて、メインメモリ300に格納されたデータをハードウェアプリフェッチするために利用される情報である。ここで、そのデータは、ネットワークインタフェース501から受け取ったパケットのデータ(ペイロード)である。そのヒントは、DCAが有効か無効かを示すフラグとターゲットとなるキャッシュを示すIDとを含む。
換言すると、CPU200は、I/Oインタフェース(on)540から受け取ったTLPパケットに付与されたそのヒントに基づいて、メインメモリ300に格納されたそのTLPパケットのペイロードをキャッシュメモリ223にプリフェッチする。
===パフォーマンスモニタ700===
パフォーマンスモニタ700は、CPU200の統計情報を取得する。次に、パフォーマンスモニタ700は、取得した統計情報を、CPU統計情報テーブル73に格納する。例えば、コンピュータ101が管理インタフェースを備え、パフォーマンスモニタ700は、CPU200の統計情報を、その管理インタフェース経由で取得する。尚、その統計情報は、コンピュータ101の性能に係る性能情報であり、パケットに係る環境状況情報とも呼ばれる。
CPU200の統計情報の例として、キャッシュヒット率やCPU使用率が挙げられる。例えば、Intel製のCPUであれば、パフォーマンスカウンタの値を読むことで、キャッシュヒット率を取得することができる。また、OSが備えるリソースモニタからCPU使用率を取得することができる。リソースモニタの例として、OSがLinux(登録商標)であれば、topコマンドやmpstatコマンドが挙げられる。
===CPU統計情報テーブル73===
CPU統計情報テーブル73は、パフォーマンスモニタ700が取得したCPU200の統計情報を保持するテーブルである。コンピュータ101は、複数のCPU200、或いは単一のCPU200が複数の演算コア220を備えるのが一般的である。そのため、CPU統計情報テーブル73は、例えば、演算コア220或いはCPU200の識別子をキーとし、演算コア220或いはCPU200の統計情報をバリューとする。
===フローマネージャ701===
フローマネージャ701は、ポリシーテーブル71、フロー統計情報テーブル72、インタフェーステーブル74、フローテーブル(フロー情報記憶手段とも呼ばれる)91及びパフォーマンスモニタ700と接続されている。フローマネージャ701は、ネットワークトラフィックの統計情報を取得し、フロー統計情報テーブル72に格納する。また、フローマネージャ701は、ポリシーテーブル71の内容、インタフェーステーブル74の内容、フローID(後述)、ネットワークトラフィックの統計情報、及びCPU200の統計情報に基づいて、フローテーブル91を更新する。尚、フローIDは、フロー識別子とも呼ばれる。尚、フローマネージャ701は、CPU200の統計情報を、例えばパフォーマンスモニタ700から取得する。
ネットワークトラフィックの統計情報は、パケットが流れるネットワークのトラフィック情報であり、環境状況情報とも呼ばれる。
ネットワークトラフィックの統計情報の例として、パケット群単位で算出される、単位時間当たりのトラフィック量、通過パケット数、パケット到着間隔、などが挙げられる。そのパケット群単位は、IPアドレスと、TCP(Transmission Control Protocol)或いはUDP(User Datagram Protocol)のポート番号との組などで識別されるパケット群の単位である。
フローマネージャ701は、これらの統計情報の値を、例えばパケットスイッチ901から取得する。また、コンピュータ101内において、フロー単位でトラフィックを管理可能なソフトウェアが稼動させられてもよい。この場合、フローマネージャ701は、そのソフトウェアから、これらの統計情報の値を取得してもよい。そのようなソフトウェアの例として、Open vSwitchと呼ばれるソフトウェアが挙げられる。
尚、「フロー」は、トラフィックをIPアドレス等の特定の値(フローID)によって識別される各パケット群のことを示す。フローの粒度は様々である。例えば、先に述べたIPアドレスやポート番号を使うほか、MACアドレスとVLAN IDの組など利用し、様々な粒度で識別されたパケット群をフローとすることが考えられる。例えば、OpenFlow1.0の仕様においては、パケットヘッダに含まれる情報と、スイッチへの入力ポートの情報とを組み合わせ、最大で12個の情報に基づいて、フローを識別することができる。
尚、フローマネージャ701は、コンピュータ101上で動くプログラムの形態をとることも、コンピュータ101とは別の装置として実現することも可能である。
===ポリシーテーブル71===
図5は、本実施形態におけるポリシーテーブル71の一例を示す図である。
ポリシーテーブル71は、どのような状況の時に、どのフローにヒントを付与するかを示すポリシーを保持するテーブルである。
ポリシーは、例えば以下の(1)から(4)のような、パフォーマンスモニタ700が取得した統計情報を利用したものが考えられる。(1)ある時点での平均パケットサイズがN(Nは、正の整数)バイトを超えたフローに属するパケットは、ヒントを付与される。(2)CPU200のキャッシュヒット率がM(Mは、100以下の正の実数)%を下回った場合、いずれのパケットにもヒントは付与されない。(3)CPU200のキャッシュヒット率がM%を下回った場合、平均パケットサイズがNバイト以下のフローに属するパケットは、ヒントを付与されない。ここで、平均パケットサイズは、フローマネージャ701が取得した統計情報のうち、単位時間当たりの通過バイト数と通過パケット数とから計算され得る。
ポリシーテーブル71に、あるフローにヒントを付与するポリシーと、ヒントを付与しないポリシーの両方が設定される可能性がある。そして、そのフローがそれらのポリシーの両方を、同時に満たす状況の場合、どちらのポリシーを適用するかを判断する必要がある。例えば、それらのポリシーの1つは、「CPU200のキャッシュヒット率がM%を下回った場合に、全てのパケットにヒントを付与しないこと」である。そして他の1つは、「ある時点での平均パケットサイズがNバイトを超えたフローに属するパケットにヒントを付与すること」である。
そこで、ポリシーテーブル71に含まれる各ポリシーのそれぞれは、それらの各ポリシー相互間における優先度を有してよい。その優先度は、例えば、ポリシーテーブル71の先頭に近いポリシーほど、高いと定義される。また、ポリシーテーブル71にアクセスすることによって取得されるバリューが、優先度の情報を含んでもよい。
図5に示すように、ポリシーテーブル71は、ポリシーID(Policy ID)列710、フローID(Flow ID)列711及びスループット(Throughput)列712を含む。更に、ポリシーテーブル71は、平均パケットサイズ(Average packet size)列713、CPU使用率(CPU Utilization)列714及びキャッシュヒット率(Cache Hit Rate)列715を含む。更に、ポリシーテーブル71は、TPH設定値(TPH Setting)列716を含む。
ポリシーテーブル71は、テーブルの上位の行のエントリほど優先度が高い、つまり、ポリシーID列710の値が小さいほど優先度が高いものとする。ポリシーテーブル71において、例えば、フローID列711からキャッシュヒット率列715までがキーの列であり、TPH設定値列716がバリューの列である。
ポリシーID列710には、ポリシーの識別子が登録(格納)される。
図5において、例えばポリシーID=0のポリシーは、以下を示す。MACアドレスがX1であり、VLAN IDがY1であるフローについて、スループットが1Gbps以上、平均パケットサイズが500バイト以上、CPU使用率が30%以下、キャッシュヒット率が50%以上の場合に、TLPパケットはヒントを付与される。この「TLPパケットにヒントを付与すること」は、TPH設定値列716の値が「ON」であることにより示される。
また、ポリシーID=1のポリシーは、以下を示す。全てのフローについて、スループットが1Gbps以上、平均パケットサイズに依存せず、CPU使用率が90%以上、キャッシュヒット率が30%以下の場合に、TLPパケットはヒントを付与されない。この「TLPパケットにヒントを付与しないこと」は、TPH設定値列716の値が「OFF」であることにより示される。
フローID列711には、フローの識別子が登録される。フローの識別子は、例えば、MACアドレスやVLAN ID、IPアドレスなどである。
スループット列712は、ネットワークのスループットに関する条件が格納される。平均パケットサイズ列713は、ネットワークの平均パケットサイズに関する条件が格納される。CPU使用率列714は、CPU200の使用率に関する条件が格納される。キャッシュヒット率列715は、CPU200のキャッシュヒット率に関する条件が格納される。
フローマネージャ701は、以下のようにポリシーテーブル71を参照する。フローマネージャ701は、ポリシーテーブル71を検索し、受信パケットから得られるフローIDを含み、かつネットワークトラフィックの統計情報及びCPU200の統計情報を満たすレコードを検出する。ここで、そのネットワークトラフィックの統計情報及びCPU200の統計情報は、フローマネージャ701がコンピュータ101或いはパケットスイッチ901から取得する情報である。次に、フローマネージャ701は、検出されたそのレコードのTPH設定値列716の値を得る。
尚、ポリシーテーブル71において、フローID列711のみがキーの列であり、スループット列712からTPH設定値列716までがバリューの列であってもよい。即ち、フローマネージャ701は、以下のように、ポリシーテーブル71を参照してもよい。まず、フローマネージャ701は、特定の値だけがヒットするフローIDでポリシーテーブル71を検索し、スループット列712からTPH設定値列716までの任意の列の値を取得する。次に、フローマネージャ701は、取得されたその列の値について、現状の値との比較処理を実行し、全ての条件を満たすポリシーに含まれるTPH設定値列716の値を取得する。
===フロー統計情報テーブル72===
フロー統計情報テーブル72は、フローマネージャ701が取得したフローの統計情報を保持するテーブルである。そのため、フロー統計情報テーブル72は、フローIDをキーとし、フローの統計情報(そのフローに対応する、ネットワークトラフィックの統計情報)と、現在ヒントを付与しているかどうかを示すフラグとをバリューとする。
===インタフェーステーブル74===
インタフェーステーブル74は、各コンピュータ101の各ネットワークインタフェース501について、TPHが有効か無効かを管理するテーブルである。
図6は、本実施形態におけるインタフェーステーブル74の一例を示す図である。インタフェーステーブル74は、スイッチID(Switch ID)列740と、ポートID(Port ID)列741と、コンピュータID(Computer ID)列742と、TPH設定値(TPH Setting)列743と、を少なくとも含む。
スイッチID列740には、パケットスイッチ901の識別子が格納される。ポートID列741には、ネットワークインタフェース501に接続されるパケットスイッチ901のポートの識別子が格納される。コンピュータID列742には、そのネットワークインタフェース501が収容されているコンピュータ101の識別子が格納される。TPH設定値列743には、そのネットワークインタフェース501においてTPHが有効か無効かを示す値が格納される。
フローマネージャ701は、フローテーブル91にフローエントリ919(後述)を設定する際に、パケットの出力先の情報を得るために、インタフェーステーブル74を参照する。ここで、パケットの出力先の情報は、ポートID列741の値、即ちネットワークインタフェース501を特定する情報である。例えば、インタフェーステーブル74の値は、外部から静的に与えられる。また、フローマネージャ701が、各パケットスイッチ901、各コンピュータ101からその値を得たり、プローブパケットを投げることでその値を得たりし、得られたその値をインタフェーステーブル74に設定するようにしてもよい。
===パケットスイッチ901===
パケットスイッチ901は、スイッチング制御部990と、フローテーブル91と、を含む。
スイッチング制御部990は、フローテーブル91に格納される情報に基づいて、パケットをどのネットワークインタフェース501に転送するかを判断する。次に、スイッチング制御部990は、判断されたネットワークインタフェース501へ、そのパケットを送出する。
図7は、フローテーブル91の一例を示す図である。フローテーブル91は、各パケットの転送先に関する情報を保持するテーブルである。
図7に示すように、フローテーブル91は、フローエントリ919を含む。フローエントリ919は、フローID(Flow ID)列910をキーの列とし、出力先となるネットワークインタフェース501を特定するポートID(Port ID)列911及びその出力先のTPH設定値列912をバリューの列とする。尚、フローテーブル91は、更にフローの統計情報を含んでもよい。
フローID列910には、フローIDが格納される。ポートID列911には、パケットスイッチ901のポートIDが格納される。TPH設定値列912には、TPHが有効か無効かを示す値が格納される。
[動作の説明]
次に、図面を参照して、本実施形態の動作について詳細に説明する。
図8は、フローテーブル91にフローエントリ919が登録されているフローについて、登録内容(フローエントリ919の内容)を変更する処理の流れを示すシーケンス図である。例えば、フローマネージャ701は、所定の(例えば、定期的な)タイミングを契機として、その登録内容を変更する処理の実行を開始してよい。
まず、フローマネージャ701は、パケットスイッチ901から、フローテーブル91のフローエントリ919を読み出す(ステップS700)。
具体的には、フローマネージャ701は、パケットスイッチ901にフローエントリ919の読み取りを要求する。パケットスイッチ901は、その要求に応答して、フローエントリ919をフローマネージャ701へ送信する。
次に、フローマネージャ701は、ポリシーテーブル71とフロー統計情報テーブル72とCPU統計情報テーブル73とを参照し、受信されたフローエントリ919の登録内容がポリシーに合っているか否かをチェックする(ステップS710)。尚、フローマネージャ701は、CPU統計情報テーブル73を、パフォーマンスモニタ700を経由して参照する。
次に、フローマネージャ701は、ポリシーに合っていないフローエントリ919が検出された場合、そのフローエントリ919を更新する(ステップS720)。
具体的には、フローマネージャ701は、そのフローエントリ919の更新を指示する変更リクエストをパケットスイッチ901に送信する。パケットスイッチ901は、受信された変更リクエストに基づいて、そのフローエントリ919を更新する。
この変更リクエストは、少なくともフローID列910の値と、更新後の値としてのポートID列911の値及びTPH設定値列912の値と、を含む。
フローマネージャ701は、そのポートID列911の値を、インタフェーステーブル74から取得する。例えば、フローマネージャ701は、パケットスイッチ901の識別子に基づいて、インタフェーステーブル74から、該当するエントリを取得する。ここで、そのパケットスイッチ901は、ステップS700において、フローマネージャ701が、そこからフローエントリ919を読み出したパケットスイッチ901である。
次に、フローマネージャ701は、そのポリシーに含まれるTPH設定値列716の値に一致するTPH設定値列743の値を含む、インタフェーステーブル74のエントリを検出する。ここで、そのポリシーは、ステップS720において、ポリシーに合っていないフローエントリ919が検出された場合の、そのポリシーである。続けて、フローマネージャ701は、検出されたそのエントリのポートID列741の値を取得する。このポートID列741の値は、すなわち、パケットの出力先のネットワークインタフェース501を特定する情報である。
また、フローマネージャ701は、そのTPH設定値列912の値として、そのポリシーに含まれるTPH設定値列716の値を取得する。
図9は、フローテーブル91にフローエントリ919が登録されていないフローについて、フローテーブル91に新規にフローエントリ919を登録する処理の流れを示すシーケンス図である。例えば、パケットスイッチ901は、受信パケットに対応するフローのエントリがフローテーブル91に登録されていないことを検出した場合に、フローテーブル91に新規にフローエントリ919を登録する処理の実行を開始する。
まず、パケットスイッチ901は、パケットの転送先の問い合わせを、フローマネージャ701に送信する(ステップS900)。ここで、そのパケットは、フローテーブル91にフローエントリ919が登録されていないフローに属するパケットである。その問い合わせには、少なくともフローIDが含まれる。
次に、フローマネージャ701は、パケットスイッチ901からの問い合わせに対し、そのフローIDと、CPU統計情報テーブル73に含まれる情報とに基づいて、ポリシーテーブル71からエントリを取得する(ステップS910)。ここで、ポリシーテーブル71を参照する際には、フローの統計情報が必要となるが、新規フローの場合、フローの統計情報は存在しない。このため、フローマネージャ701は、例えば、フローの統計情報として所定の初期値を用いて、ポリシーテーブル71を参照する。
次に、フローマネージャ701は、パケットスイッチ901から問い合わせのあったパケットに対応するフローエントリ919を、フローテーブル91に追加する(ステップS920)。
具体的には、フローマネージャ701は、取得されたポリシーテーブル71のエントリに登録されているTPH設定値列716の値に対応する、ポートID列741の値をインタフェーステーブル74から取得する。続けて、フローマネージャ701は、取得されたそのポートID列741の値とそのTPH設定値列716の値と、その問い合わせに含まれるフローIDの情報とを含むフローエントリ919の登録リクエストを、パケットスイッチ901に送信する。その登録リクエストを受信したパケットスイッチ901は、その登録リクエストに基づいて、フローエントリ919を登録する。
ここで、フローマネージャ701は、以下の手順で、そのポートID列741の値を取得する。第1に、フローマネージャ701は、インタフェーステーブル74から、スイッチID列740の値としてそのパケットスイッチ901の識別子を含む、エントリを取得する。第2に、フローマネージャ701は、取得されたそのエントリの中から、そのTPH設定値列716の値に一致するTPH設定値列743の値を含むエントリの、ポートID列741の値を取得する。
図10は、図8に示すシーケンス図における、フローマネージャ701の動作を示すフローチャートである。尚、このフローチャートによる処理は、CPU200によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、F700のように、記号で記載する。
まず、フローマネージャ701は、パケットスイッチ901からフローテーブル91のフローエントリ919を読み出す(ステップF700)。
次に、フローマネージャ701は、フローテーブル91から取得されたフローエントリ919のフローID列910の値を用いて、フロー統計情報テーブル72を参照し、フローの統計情報を取得する(ステップF701)。
次に、フローマネージャ701は、パフォーマンスモニタ700を経由してCPU統計情報テーブル73からCPU200の統計情報を取得する(ステップF702)。
次に、フローマネージャ701は、そのフローID列910の値、フローの統計情報及びCPU200の統計情報に基づいて、ポリシーテーブル71を参照し、TPH設定値列716の値を取得する(ステップF703)。ここで、そのフローの統計情報は、ステップF701で取得されたフローの統計情報である。また、そのCPU200の統計情報は、ステップF702で取得されたCPU200の統計情報である。
次に、フローマネージャ701は、ステップF703で取得されたTPH設定値列716の値と、ステップF700で取得されたフローエントリ919に含まれるTPH設定値列912の値とを比較する(ステップF704)。
次に、フローマネージャ701は、そのTPH設定値列716の値と、そのTPH設定値列912の値とが同じであった場合(ステップF704の「一致」)、フローエントリ919の変更は必要ないため、処理は完了する。
一方、これらの値が一致しない場合(ステップF704の「不一致」)、処理はステップF705へ進む。
次に、フローマネージャ701は、パケットスイッチ901のスイッチIDとステップF703で取得されたTPH設定値列716の値とに基づいて、インタフェーステーブル74を参照し、ポートID列741の値を取得する(ステップF705)。
次に、フローマネージャ701は、変更リクエストをパケットスイッチ901に送信する(ステップF706)。その変更リクエストは、その変更リクエストに変更後の値として含まれる、ポートID列911の値及びTPH設定値列912の値を用いて、フローテーブル91の該当するフローエントリ919のバリューを更新することを要求するものである。
その変更リクエストに変更後の値として含まれる、ポートID列911の値及びTPH設定値列912の値のそれぞれは、ステップF705で取得されたポートID列741の値及びステップF703で取得されたTPH設定値列716の値である。
上述のようにして、フローマネージャ701は、フローテーブル91のフローエントリ919を変更する。
図11は、図9に示すシーケンス図における、フローマネージャ701の動作を示すフローチャートである。尚、このフローチャートによる処理は、CPU200によるプログラム制御に基づいて、実行されても良い。また、処理のステップ名については、F711のように、記号で記載する。
まず、フローマネージャ701は、フロー統計情報テーブル72に、パケットスイッチ901から問い合わせのあったフローのエントリを作成し、そのエントリのフローの統計情報を初期化する(ステップF711)。
次に、フローマネージャ701は、パフォーマンスモニタ700を経由して、CPU統計情報テーブル73から、CPU200の統計情報を取得する(ステップF712)。
次に、フローマネージャ701は、そのフローのフローIDと、CPU200の統計情報と、フローの統計情報とに基づいて、ポリシーテーブル71を参照し、TPH設定値列716の値を取得する(ステップF713)。ここで、そのフローIDは、パケットスイッチ901から問い合わせのあったフローのフローIDである。そのCPU200の統計情報は、ステップF712で取得されたCPU200の統計情報である。また、そのフローの統計情報は、ステップF712で初期化されたフローの統計情報である。
次に、フローマネージャ701は、パケットスイッチ901のスイッチIDとステップF713で取得されたTPH設定値列716の値とに基づいて、インタフェーステーブル74を参照し、ポートID列741の値を取得する(ステップF715)。
次に、フローマネージャ701は、登録リクエストを、パケットスイッチ901に送信する(ステップF716)。その登録リクエストは、フローエントリ919を、フローテーブル91に登録することを要求するものである。その登録リクエストは、パケットスイッチ901から問い合わせのあったフローのフローID、ステップF713で取得されたTPH設定値列716の値及びステップF715で取得されたポートID列741の値を含む。
上述のようにして、フローマネージャ701は、フローテーブル91に新規のフローエントリ919を追加する。
本実施形態の変形として、パケットスイッチ901が、新規フロー(フローテーブル91にフローエントリ919が登録されていないフロー)に対するフローエントリ919を生成してもよい。
例えば、パケットスイッチ901は、その新規フローに属するパケットを、予め定められたデフォルトのパケット出力先ネットワークインタフェース501に出力するフローエントリ919を、生成・登録する。尚、この場合、図9に示すような、フローマネージャ701とパケットスイッチ901とのデータのやりとりは発生しない。
上述した本実施形態における第1の効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1にフローテーブル91がフローID列910とポートID列911との対応を記憶する。第2に、スイッチング制御部990が、フローテーブル91の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェース501のいずれかにパケットを転送する。
上述した本実施形態における第2の効果は、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
その理由は、フローマネージャ701が、コンピュータ101のCPU200に係る性能情報と、その性能情報を条件に含むポリシーテーブル71とに基づいて、フローテーブル91を更新するからである。換言すると、スイッチング制御部990は、更新されたフローテーブル91に基づいて、その時々のCPU200の状況に応じて動的に、TPHを利用する(ヒントを与える)か否かを決定するからである。
上述した本実施形態における第3の効果は、よりパケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
その理由は、フローマネージャ701が、パケットが流れるネットワークに係るトラフィック情報と、そのトラフィック情報を条件に含むポリシーテーブル71とに基づいて、フローテーブル91を更新するからである。換言すると、スイッチング制御部990は、更新されたフローテーブル91に基づいて、その時々のトラフィックの状況に応じて動的に、TPHを利用する(ヒントを与える)か否かを決定するからである。
上述した本実施形態における第4の効果は、ヒントを与える条件が複雑であっても、比較的容易に、その条件をポリシーテーブル71に設定することが可能になる点である。
その理由は、ポリシーテーブル71に含まれる各ポリシーのそれぞれが、前記ポリシー相互間における優先度を有するからである。
<<<第2の実施形態>>>
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
図12は、本実施形態に係るトラフィック制御システム802の構成を示すブロック図である。トラフィック制御システム802は、オープンフロー(OpenFlow(登録商標))に対応するシステムである。
オープンフローについては、以下の文献などに詳しく記載されているため、詳細な説明を省略する。「OpenFlow Switch Specification Version 1.3.1 (Wire Protocol 0x04) September 6,2012」、インターネット<url:https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.1.PDF>。
図12に示すように、トラフィック制御システム802は、コンピュータ101と、パフォーマンスモニタ700と、オープンフローコントローラ(OpenFlow Controller)702と、オープンフロースイッチ902とを含む。更に、トラフィック制御システム802は、ポリシーテーブル71と、CPU統計情報テーブル73と、インタフェーステーブル74とを含む。
オープンフローコントローラ702は、オープンフロー仕様に対応したスイッチ(例えばオープンフロースイッチ902)を、オープンフロー仕様に基づいたAPI(Application Programming Interface)を用いて制御する。
オープンフローコントローラ702は、ポリシーテーブル71とインタフェーステーブル74とを利用し、図8〜図11に示される処理と同等の処理を行う。こうすることによって、オープンフローコントローラ702は、オープンフロースイッチ902のフローテーブル91を制御する。その際、オープンフローコントローラ702は、フロー統計情報を、フロー統計情報テーブル72からではなく、オープンフロースイッチ902に含まれるフローテーブル92から取得する。
オープンフロー仕様では、各オープンフロースイッチ902に備えられるフローテーブル92の各フローエントリに、フローIDと、フローの統計情報と、そのフローに属するパケットに対する処理(アクション)と、が登録される。つまり、フロー統計情報テーブル72相当の機能が、フローテーブル92に含まれる。これにより、オープンフローコントローラ702は、図4に示されるフローマネージャ701から、フロー統計情報テーブル72を除いた構成をとることができる。
上述した本実施形態における第1の効果は、オープンフローに対応するシステムにおいても、第1の実施形態と同様の効果を得ることが可能になる点である。
その理由は、オープンフローにフローシステムにおいて、フローマネージャ701及びパケットスイッチ901と同等の機能を有する、オープンフローコントローラ702及びオープンフロースイッチ902とを含むからである。
上述した本実施形態における第2の効果は、フロー統計情報テーブル72を削減することが可能になる点である。
その理由は、オープンフロースイッチ902のフローテーブル92が、フロー統計情報テーブル72相当の機能を含むからである。
<<<第3の実施形態>>>
次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
図13は、本発明の第3の実施形態に係るトラフィック制御システム803の構成を示す図である。トラフィック制御システム803は、パケットスイッチの機能を含むネットワークインタフェース503を用いた、システムである。
図13に示すように、トラフィック制御システム803は、コンピュータ103と、フローマネージャ703と、ポリシーテーブル71と、フロー統計情報テーブル72と、CPU統計情報テーブル73と、インタフェーステーブル74とを含む。
コンピュータ103は、ネットワークインタフェース501の替わりにネットワークインタフェース503を含む点が、図4に示すコンピュータ101と異なる。そして、ネットワークインタフェース503は、複数のI/Oインタフェース540及びパケット受信部510と、更にスイッチング制御部990及びフローテーブル91とを含む点が、図4に示すネットワークインタフェース501と異なる。
フローマネージャ703は、例えばコンピュータ103の管理インタフェース(不図示)を経由して、フローテーブル91を更新する。
上述した本実施形態における効果は、第1の実施形態の効果と同様である。
その理由は、ネットワークインタフェース503がスイッチング制御部990及びフローテーブル91を含み、フローマネージャ703がコンピュータ103に含まれるネットワークインタフェース503のフローテーブル91を更新するからである。
<<<第4の実施形態>>>
次に、本発明の第4の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
図14は、本発明の第4の実施形態に係る情報処理装置904の構成を示すブロック図である。
図14に示すように、本実施形態における情報処理装置904は、フローテーブル94及びスイッチング制御部990を含む。尚、図14に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図14に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
図15は、本実施形態におけるフローテーブル94の一例を示す図である。
図15に示すように、フローテーブル94は、パケットに含まれる情報であるフローID列910と、ポートID列911との対応を記憶する。ポートID列911の値は、スイッチング制御部990のポート(不図示)を特定する識別子である。従って、ポートID列911の値は、スイッチング制御部990のポートに接続されるネットワークインタフェース(不図示)を特定する。換言すると、フローテーブル94は、パケットに含まれる情報であるフローID列910の値と、ネットワークインタフェースとの対応を記憶する。
スイッチング制御部990は、フローテーブル94に記憶された情報に基づいて、第1のネットワークインタフェース及び第2の前記ネットワークインタフェースのいずれか一方へ、パケットを転送する。ここで、第1のネットワークインタフェースは、ヒントを、そのパケットに付与する。第2のネットワークインタフェースは、そのヒントをそのパケットに付与しない。そのヒントは、そのパケットの送信先である宛先コンピュータがそのパケットを適切に処理するために、その宛先コンピュータによって利用される。
以上が、情報処理装置904の機能単位の各構成要素についての説明である。
次に、情報処理装置904のハードウェア単位の構成要素について説明する。
図16は、本実施形態における情報処理装置904を実現するコンピュータ970のハードウェア構成を示す図である。
図16に示すように、コンピュータ970は、CPU(Central Processing Unit)971、記憶部972、記憶装置973、入力部974、出力部975及び通信部976を含む。更に、コンピュータ970は、外部から供給される記録媒体(または記憶媒体)977を含む。例えば、記録媒体977は、情報を非一時的に記憶する不揮発性記録媒体(非一時的記録媒体)である。また、記録媒体977は、情報を信号として保持する、一時的記録媒体であってもよい。
CPU971は、オペレーティングシステム(不図示)を動作させて、コンピュータ970の全体の動作を制御する。例えば、CPU971は、記憶装置973に装着された記録媒体977から、そのプログラムやデータを読み込み、読み込んだそのプログラムやそのデータを記憶部972に書き込む。ここで、そのプログラムは、例えば、後述の図17に示すフローチャートの動作をコンピュータ970に実行させるためのプログラムである。
そして、CPU971は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図14に示す情報処理装置904として各種の処理を実行する。
尚、CPU971は、通信網(不図示)に接続されている外部コンピュータ(不図示)から、記憶部972にそのプログラムやそのデータをダウンロードしてもよい。
記憶部972は、そのプログラムやそのデータを記憶する。記憶部972は、フローテーブル94を含んでよい。
記憶装置973は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、記録媒体977を含む。記憶装置973(記録媒体977)は、そのプログラムをコンピュータ読み取り可能に記憶する。また、記憶装置973は、そのデータを記憶してもよい。記憶装置973は、フローテーブル94を含んでよい。
入力部974は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。
出力部975は、例えばディスプレイで実現される。出力部975は、例えばGUI(Graphical User Interface)による入力要求や出力などの確認をするために用いられる。
通信部976は、外部(例えば、図4に示すコンピュータ101やフローマネージャ701など)とのインタフェースを実現する。通信部976は、スイッチング制御部990の一部として含まれる。
以上説明したように、図14に示す情報処理装置904の機能単位のブロックは、図16に示すハードウェア構成のコンピュータ970によって実現される。但し、コンピュータ970が備える各部の実現手段は、上記に限定されない。すなわち、コンピュータ970は、物理的に結合した1つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
尚、上述のプログラムのコードを記録した記録媒体977が、コンピュータ970に供給される場合、CPU971は、記録媒体977に格納されたそのプログラムのコードを読み出して実行してもよい。或いは、CPU971は、記録媒体977に格納されたそのプログラムのコードを、記憶部972、記憶装置973またはその両方に格納してもよい。すなわち、本実施形態は、コンピュータ970(CPU971)が実行するそのプログラム(ソフトウェア)を、一時的にまたは非一時的に、記憶する記録媒体977の実施形態を含む。尚、情報を非一時的に記憶する記憶媒体は、不揮発性記憶媒体とも呼ばれる。
以上が、本実施形態における情報処理装置904を実現するコンピュータ970の、ハードウェア単位の各構成要素についての説明である。
次に、本実施形態の動作について図面を参照して詳細に説明する。
図17は、本実施形態の動作を示すフローチャートである。尚、このフローチャートによる処理は、前述したCPU971によるプログラム制御に基づいて、実行されてよい。また、処理のステップ名については、F780のように、記号で記載する。
スイッチング制御部990は、パケットを受信する(ステップF780)。
次に、スイッチング制御部990は、受信したそのパケットに含まれるフローIDをキーにしてフローテーブル94を検索し、そのフローIDに対応するポートID列911の値を取得する(ステップF781)。換言すると、スイッチング制御部990は、フローテーブル94に記憶された情報に基づいて、パケットの転送先とするネットワークインタフェースを決定する。
次に、スイッチング制御部990は、取得したポートID列911の値で特定されるポートから、ステップF780で受信したそのパケットを送信する(ステップF782)。
上述した本実施形態における効果は、キャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
その理由は、以下のような構成を含むからである。即ち、第1にフローテーブル94がフローID列910とポートID列911との対応を記憶する。第2に、スイッチング制御部990が、フローテーブル94の内容に基づいて、パケットにヒントを付与する及び付与しないネットワークインタフェースのいずれかにパケットを転送する。
<<<第5の実施形態>>>
次に、本発明の第5の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
図18は、本発明の第4の実施形態に係る情報処理装置905の構成を示すブロック図である。
図18に示すように、本実施形態における情報処理装置905は、図14に示す情報処理装置904と比べて、フローマネージャ704を更に含む点が異なる。また、本実施形態における情報処理装置905は、図14に示す情報処理装置904と比べて、フローテーブル94の替わりに、図7に示すフローテーブル91を含む点が異なる。尚、図18に示す各構成要素は、ハードウェア単位の回路でも、コンピュータ装置の機能単位に分割された構成要素でもよい。ここでは、図18に示す構成要素は、コンピュータ装置の機能単位に分割された構成要素として説明する。
フローマネージャ704は、受信したパケットに含まれるフローID、そのパケットに係る環境状況情報、及び、ポリシーに基づいて、そのフローIDとネットワークインタフェースとの対応を決定し、フローテーブル91の内容を更新する。
そのパケットに係る環境状況情報は、例えば、そのパケットの宛先である、コンピュータの性能に係る性能情報である。そのパケットに係る環境状況情報は、そのパケットが流れるネットワークのトラフィック情報であってもよい。また、そのパケットに係る環境状況情報は、その性能情報及びそのトラフィック情報の両方であってもよい。
そのポリシーは、そのフローIDとその環境状況情報とヒントを与えるか否かを示す情報との対応を示す。
以上が、情報処理装置905の機能単位の各構成要素についての説明である。
次に、情報処理装置905のハードウェア単位の構成要素について説明する。本実施形態における情報処理装置905を実現するハードウェア単位の構成要素は、図16に示すコンピュータ970の構成要素であってよい。
この場合、記憶部972に書き込まれるプログラムは、例えば、図10及び図11に示すフローチャートの動作と同等の動作をコンピュータ970に実行させるためのプログラムである。
そして、CPU971は、その読み込んだプログラムに従って、またその読み込んだデータに基づいて、図18に示す情報処理装置905として各種の処理を実行する。
記憶部972及び記憶装置973は、フローマネージャ704の一部として、ポリシーを記憶してもよい。
入力部974は、オペレータによる操作の入力や外部からの情報の入力を受け付ける。入力操作に用いられるデバイスは、例えば、マウスやキーボード、内蔵のキーボタン及びタッチパネルなどである。入力部974は、フローマネージャ704の一部として、オペレータが入力するポリシーを受け付けてよい。
通信部976は、スイッチング制御部990の一部として、外部から、ポリシー及びそのパケットに係る環境状況情報を受信してもよい。
フローマネージャ704の動作は、図10及び図11に示す動作と同等である。
上述した本実施形態における効果は、第4の実施形態の効果に加えて、パケットに係る環境状況に即して、より効果的にキャッシュヒット率の悪化を防止或いは低減することを可能にする点である。
その理由は、フローマネージャ704が、フローIDと、環境状況情報と、そのフローID及びその環境状況情報を含むポリシーとに基づいて、フローテーブル91を更新するからである。
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されてよい。また、各構成要素は、1つの構成要素が複数のモジュールで実現されてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であるような構成であってよい。また、各構成要素は、ある構成要素の一部と他の構成要素の一部とが重複するような構成であってもよい。
以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ、可能であれば、ハードウェア的に実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、コンピュータ及びプログラムで実現されてよい。また、各構成要素及び各構成要素を実現するモジュールは、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されてもよい。
そのプログラムは、例えば、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障のない範囲で変更することができる。
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作との全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されてよい。
以上、各実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
この出願は、2013年12月17日に出願された日本出願特願2013−260131を基礎とする優先権を主張し、その開示の全てをここに取り込む。
101 コンピュータ
103 コンピュータ
107 コンピュータ
108 コンピュータ
200 CPU
220 演算コア
221 キャッシュコントローラ
222 ローカルキャッシュ
223 キャッシュメモリ
224 共有キャッシュ
225 メモリコントローラ
300 メインメモリ(Main Memory)
400 I/Oコントローラ(I/O Controller)
407 I/Oコントローラ(I/O Controller)
408 I/Oコントローラ(I/O Controller)
440 PCI−Expressルートコンプレックス(Root Complex)
441 シリアルATAインタフェース(SATA interface)
442 その他I/Oインタフェース(Other I/O interface)
501 ネットワークインタフェース(NW I/F)
503 ネットワークインタフェース
510 パケット受信部
540 I/Oインタフェース(I/O I/F)
650 PCI−Expressデバイス(Devices)
660 ストレージデバイス(Storage Devices)
700 パフォーマンスモニタ(Performance Monitor)
701 フローマネージャ(Flow Manager)
702 オープンフローコントローラ(OpenFlow Controller)
703 フローマネージャ(Flow Manager)
704 フローマネージャ(Flow Manager)
71 ポリシーテーブル(Policy Table)
710 ポリシー(Policy)ID列
711 フロー(Flow)ID列
712 スループット(Throughput)列
713 平均パケットサイズ(Average paket size)列
714 CPU使用率(Utilization)列
715 キャッシュヒット率(Cache Hit Rate)列
716 TPH設定値(Setting)列
72 フロー統計情報テーブル(Flow Stat Table)
73 CPU統計情報テーブル(CPU Stat Table)
74 インタフェーステーブル(I/F Table)
740 スイッチ(Switch)ID列
741 ポート(Port)ID列
742 コンピュータ(Computer)ID列
743 TPH設定値(Setting)列
801 トラフィック制御システム
802 トラフィック制御システム
803 トラフィック制御システム
901 パケットスイッチ
902 オープンフロースイッチ
904 情報処理装置
905 情報処理装置
990 スイッチング制御部
91 フローテーブル
910 フロー(Flow)ID列
911 ポート(Port)ID列
912 TPH設定値(Setting)列
919 フローエントリ
94 フローテーブル
970 コンピュータ
971 CPU
972 記憶部
973 記憶装置
974 入力部
975 出力部
976 通信部
977 記録媒体

Claims (10)

  1. パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を記憶するフロー情報記憶手段と、
    前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する切替手段と、を含む
    情報処理装置。
  2. 前記フロー識別子、前記パケットに係る環境状況情報、及び、前記フロー識別子と前記環境状況情報と前記示唆情報を与えるか否かを示す情報との対応を示すポリシーに基づいて、前記フロー識別子と前記ネットワークインタフェースとの対応を決定し、前記フロー情報記憶手段の内容を更新するフロー情報更新手段を更に含む、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記フロー情報更新手段は、前記宛先コンピュータの性能に係る性能情報を取得し、
    前記環境状況情報は、前記性能情報を含む
    ことを特徴とする請求項2記載の情報処理装置。
  4. 前記性能情報は、前記宛先コンピュータに係るCPU使用率及びキャッシュヒット率である
    ことを特徴とする請求項3記載の情報処理装置。
  5. 前記フロー情報更新手段は、更に、前記パケットが流れるネットワークのトラフィック情報を取得し、
    前記環境状況情報は、前記トラフィック情報を含む
    ことを特徴とする請求項2乃至4のいずれか1項に記載の情報処理装置。
  6. 前記ポリシーのそれぞれは、前記ポリシー相互間における優先度を有する
    ことを特徴とする請求項2乃至5のいずれか1項に記載の情報処理装置。
  7. 前記切替手段及び前記フロー情報更新手段のそれぞれは、オープンフローに対応する
    ことを特徴とする請求項2乃至6のいずれか1項に記載の情報処理装置。
  8. パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータが、
    前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
    トラフィック制御方法。
  9. パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を保持するフロー情報記憶手段を含むコンピュータに、
    前記フロー情報記憶手段に記憶された情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する処理を実行させるプログラムを記録した
    コンピュータ読み取り可能な非一時的記録媒体。
  10. プロセッサと、
    プロセッサが切替手段として動作するための、プロセッサによって実行される命令と、パケットに含まれる情報であるフロー識別子と、ネットワークインタフェースとの対応を示すフロー情報とを保持する記憶部とを含み、
    前記切替手段は、前記フロー情報に基づいて、前記パケットの送信先である宛先コンピュータが前記パケットを適切に処理するために利用する示唆情報を、前記パケットに付与する第1の前記ネットワークインタフェース及び前記パケットに付与しない第2の前記ネットワークインタフェース、のいずれか一方へ前記パケットを転送する
    情報処理装置。
JP2015553350A 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法 Pending JPWO2015092973A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013260131 2013-12-17
JP2013260131 2013-12-17
PCT/JP2014/005785 WO2015092973A1 (ja) 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法

Publications (1)

Publication Number Publication Date
JPWO2015092973A1 true JPWO2015092973A1 (ja) 2017-03-16

Family

ID=53402355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015553350A Pending JPWO2015092973A1 (ja) 2013-12-17 2014-11-18 情報処理装置及びトラフィック制御方法

Country Status (3)

Country Link
US (1) US10097658B2 (ja)
JP (1) JPWO2015092973A1 (ja)
WO (1) WO2015092973A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721161B2 (en) * 2015-08-28 2020-07-21 Vmware, Inc. Data center WAN aggregation to optimize hybrid cloud connectivity
US10721098B2 (en) 2015-08-28 2020-07-21 Vmware, Inc. Optimizing connectivity between data centers in a hybrid cloud computing system
US11593134B2 (en) * 2018-01-26 2023-02-28 Nicira, Inc. Throttling CPU utilization by implementing a rate limiter
US11082338B1 (en) * 2018-04-17 2021-08-03 Amazon Technologies, Inc. Distributed connection state tracking for large-volume network flows
CN114780501A (zh) * 2021-01-22 2022-07-22 伊姆西Ip控股有限责任公司 数据处理方法、电子设备和计算机程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7949794B2 (en) 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
JP4780333B2 (ja) 2007-04-06 2011-09-28 日本電気株式会社 データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム
JP5310175B2 (ja) 2009-03-25 2013-10-09 富士通株式会社 スイッチシステム、及びスイッチシステムの制御方法
JP2012164209A (ja) 2011-02-08 2012-08-30 Nec Corp キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム
US9450870B2 (en) * 2011-11-10 2016-09-20 Brocade Communications Systems, Inc. System and method for flow management in software-defined networks
US20130173834A1 (en) * 2011-12-30 2013-07-04 Advanced Micro Devices, Inc. Methods and apparatus for injecting pci express traffic into host cache memory using a bit mask in the transaction layer steering tag

Also Published As

Publication number Publication date
US20160323406A1 (en) 2016-11-03
WO2015092973A1 (ja) 2015-06-25
US10097658B2 (en) 2018-10-09

Similar Documents

Publication Publication Date Title
US20200210069A1 (en) Methods and systems for data storage using solid state drives
US8843706B2 (en) Memory management among levels of cache in a memory hierarchy
US7496698B2 (en) System and method for efficient implementation of a shared receive queue
TWI570563B (zh) 後置中斷架構
JP5285375B2 (ja) ネットワークオンチップ、およびネットワークオンチップで以ってデータを処理する方法
JP6381541B2 (ja) データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令)
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
US7653773B2 (en) Dynamically balancing bus bandwidth
US8473667B2 (en) Network on chip that maintains cache coherency with invalidation messages
US8495265B2 (en) Avoiding non-posted request deadlocks in devices by holding the sending of requests
US20090187716A1 (en) Network On Chip that Maintains Cache Coherency with Invalidate Commands
US20060288129A1 (en) DMA descriptor queue read and cache write pointer arrangement
WO2015092973A1 (ja) 情報処理装置及びトラフィック制御方法
US20090157976A1 (en) Network on Chip That Maintains Cache Coherency With Invalidate Commands
JP2007207007A (ja) ストレージシステム、ストレージコントローラ及び計算機システム
EP4220419B1 (en) Modifying nvme physical region page list pointers and data pointers to facilitate routing of pcie memory requests
JP2014130420A (ja) 計算機システム及び計算機の制御方法
JP6068676B2 (ja) 計算機システム及び計算機システムの制御方法
US11531636B2 (en) Storage system, method, and apparatus for fast IO on PCIE devices
JP2007087059A (ja) 記憶制御システム
KR20220035242A (ko) 호스트 컴퓨팅 디바이스와 네트워크 인터페이스 디바이스를 포함하는 프로그래머블 네트워크 인터페이스 디바이스
JP2007072521A (ja) 記憶制御システム及び記憶制御装置
US9921753B2 (en) Data replication across host systems via storage controller
JP2007004710A (ja) ストレージアクセス方式、データ転送装置、ストレージアクセス方法、及びプログラム
JP2005293478A (ja) 記憶制御システム、記憶制御システムに備えられるチャネル制御装置、データ転送装置