JP5081847B2 - マルチプロセッサによるパケット処理装置およびパケット処理方法 - Google Patents

マルチプロセッサによるパケット処理装置およびパケット処理方法 Download PDF

Info

Publication number
JP5081847B2
JP5081847B2 JP2009037933A JP2009037933A JP5081847B2 JP 5081847 B2 JP5081847 B2 JP 5081847B2 JP 2009037933 A JP2009037933 A JP 2009037933A JP 2009037933 A JP2009037933 A JP 2009037933A JP 5081847 B2 JP5081847 B2 JP 5081847B2
Authority
JP
Japan
Prior art keywords
packet
information
network
packet processing
program
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.)
Expired - Fee Related
Application number
JP2009037933A
Other languages
English (en)
Other versions
JP2010193366A (ja
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009037933A priority Critical patent/JP5081847B2/ja
Priority to CN2010101178200A priority patent/CN101847106B/zh
Priority to EP20100001536 priority patent/EP2221721A1/en
Priority to US12/708,136 priority patent/US8199675B2/en
Publication of JP2010193366A publication Critical patent/JP2010193366A/ja
Application granted granted Critical
Publication of JP5081847B2 publication Critical patent/JP5081847B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Description

本発明は、ネットワークにおけるパケット・ストリームなどのデータ・ストリーム処理に関する。
ネットワークにおけるデータ・ストリーム処理のひとつの課題は、複数のユーザに対してネットワーク・ノード上で共存することができない複数の高度なサービスを提供し、さらに、ネットワークの運用中にサービスの追加・削除及びサービス内容の変更ができるようにすることである。このようなサービスをひとつの物理的なネットワークによって提供するためには、ネットワークの仮想化、すなわち、ユーザまたはユーザ・グループごとに独立したネットワークを使用しているかのようにみせることが必要である。しかも、各ネットワーク・ノードにおいて、高度なサービスの処理のために、通信線から入力され通信線に出力されるパケット・ストリームをできるだけその通信線の最大転送速度(ワイヤ・スピード)にちかい速度で処理する必要がある。
ネットワークにおけるデータ・ストリーム処理に使用できる従来技術として、つぎの4つがある。
第1の従来技術として、複数のユーザのプログラムを並列に、または、時分割すなわちタイムシェアリングによって並行的に実行することができるコンピュータをあげることができる。タイムシェアリング・システムに関する文献として非特許文献1がある。
Linux(登録商標)またはMicrosoft Windows(登録商標)など、タイムシェアリング・システムにもとづく汎用オペレーティング・システム(OS)を搭載したコンピュータにおいては、プロセッサおよびメモリなどの共有資源が仮想化され、各ユーザはそれらを占有しているかのように使用することができる。プロセッサ資源はタスクスイッチにもとづいて共有される。すなわち、複数のプロセスおよびスレッドが存在するとき、OSがそれらのあいだのタスクスイッチをおこなう。このようなコンピュータを使用してネットワーク・ノード(いわゆるソフトウェア・ルータ)を構成したり、ストリーム・データ処理をおこなうことができる。
しかし、タスクスイッチの際にはレジスタ・ファイルおよびキャッシュがパージされるため、タスクスイッチの直後にはデータおよびプログラムをDRAM(ダイナミック・ランダム・アクセス・メモリ)から再ロードする必要がある。このスイッチングによる遅延、データおよびプログラムの再ロードに要する遅延、および、膨大な処理ステップ数のため、ワイヤ・スピードにちかい処理は不可能である。
第2の従来技術として、1個のハードウェア上でユーザごとにことなるオペレーティング・システムを時分割によって動作させることによって、ユーザごとの仮想環境を構築する仮想化ソフトウェア技術がある。非特許文献2は、仮想化ソフトウェアXen(登録商標)を使用してネットワーク・インタフェースなどのハードウェア資源を仮想化し、仮想化されたノードを実現する方法を記述している。
仮想化ソフトウェア技術においてもタイムシェアリング・システムと同様にプロセッサを時分割で使用するため、上記のようなタスクスイッチによって発生する問題は解決することができない。また、ネットワークにおいては通信に使用されるパケットに送信者と受信者の3層(IP層)のアドレスがふくまれるが、スイッチが2層の情報にもとづいてパケットを転送する際には、パケットを中継するスイッチのアドレスはパケットにふくまれない。ところが、仮想化ソフトウェア技術においては通信のためにネットワーク・インタフェースにアドレスをつける必要があり、パケットの宛先としてこのアドレスを指定する必要があるという問題がある。
第3の従来技術として、特許文献1に記載された物理デバイス仮想化技術がある。特許文献1は、単一の物理デバイスを仮想的に多重化することによって、入力または出力されるデータを複数のユーザのプログラムにふりわけて処理するための技術を開示している。その物理デバイスの一例がネットワーク・インタフェースである。
物理デバイス仮想化技術においてもタイムシェアリング・システムと同様にプロセッサを時分割で使用するため、上記のようなタスクスイッチによって発生する問題は解決することができない。また、パケットの宛先として仮想的に多重化されたネットワーク・インタフェースのアドレスを指定する必要がある点も同様に問題である。
第4の従来技術として、プログラマブルなルータおよびスイッチがある。従来のルータおよびスイッチがユーザによってプログラムすることができなかったのに対して、プログラマブルなルータ及びスイッチは、ネットワーク・プロセッサまたはFPGA(Field Programmable Gate Array)を搭載することによって、外部からプログラムをあたえることができる。
特許文献2においては、入力されたパケットをこのようなプログラムが動作する複数のプロセッサ・コアにふりわける方法が記述されている。
しかし、この方法においてはプロセッサ・コアが実行するプログラムはあらかじめ固定され、パケットをふりわける先も固定されているため、ネットワークの運用中にサービスの追加・削除及びサービス内容の変更をおこなうことはできない。
特表2008−503015号公報 特表2008−523729号公報
John McCarthy, "REMINISCENCES ON THE HISTORY OF TIME SHARING", Stanford University, 1983 Winter or Spring, http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html Egi, N., Greenhalgh, A., Handley, M., Hoerdt, M., Mathy, L., and Schooley, T., "Evaluating Xen for Router Virtualization", 16th Int’l Conference on Computer Communications and Networks (ICCCN 2007), pp. 1256-1261, August 2007.
ネットワーク・サービスの高度化にともなって、ネットワーク・プロバイダは、ユーザ・グループごとにことなる多様なビジネス指向の高速なサービスを短期に開発することがもとめられるようになっている。また、あたらしいネットワーク・アーキテクチャの研究開発のために、ユーザ(とくに研究者)ごとにことなるプロトコルまたはデータ処理を実現することがもとめられる。このようなサービスまたは開発環境を提供するためには、各ネットワーク・ノードにおいて、ユーザ・グループごとまたはサービスごとに仮想化された環境のもとで、仮想環境ごと(すなわちユーザ・グループごと)にことなるネットワーク・サービスを実現する柔軟なプログラムが動作するとともに、そのプログラムによってパケット・ストリームをワイヤ・スピードで処理することがつよくのぞまれる。
前記のように1台のハードウェアで複数の処理をおこなうときにはOSによるタスクスイッチが発生し、ワイヤ・スピードの処理が不可能になる。ワイヤ・スピードの処理を実現し、かつ柔軟なプログラミングを実現するためには、ユーザまたはサービスごとに仮想環境を構築することが必要である。
すなわち、第1に、ユーザまたはサービスからプログラムのロードが要求された際に、ネットワークの動作を停止させることも、動作遅延などによってパケットが損失することもなく、そのユーザまたはサービスが属するべき仮想環境に属するプロセッサにおいてそのプログラムが実行されるように設定(すなわちプログラムをロード)する必要がある。
第2に、ユーザまたはサービスからプログラムのアンロードが要求された際に、ネットワークの動作停止または遅延によるパケット損失なしに、そのユーザまたはサービスが属するべき仮想環境に属するプロセッサにロードされたプログラムを削除(すなわちプログラムをアンロード)する必要がある。
第3に、プログラムがロードされた仮想環境ごとにわりあてられたプロセッサにおいて、ソフトウェアによるタスクスイッチなしにプログラムが実行される必要がある。
第4に、当該のユーザまたはサービスに属するパケットが入力されたときに、そのユーザまたはサービスが属するべき仮想環境の識別子をもとめ、そのパケットがその仮想環境にわりあてられたプロセッサに、ワイヤ・スピードでかつ遅延なく、転送される必要がある。
この発明の目的は、上記の4つの課題を解決し、ユーザごとまたはサービスごとにことなる仮想環境を構築するとともに、高速にデータ・ストリーム処理をおこなうことができるネットワーク・ノード装置および方法を提供することである。
本願で開示する代表的な発明は、ネットワークに接続されるパケット処理装置であって、前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、属性情報に対応するパケットのアドレスの変換または削除を定める情報を保持し、プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、前記選択されたプロセッサ・コアに前記プログラムをロードし、前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除した後、前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送することを特徴とする。
本発明の一実施形態によれば、ユーザまたはサービスごとに仮想環境を構築され、ユーザのパケットはそのユーザのプログラムが動作しているコアに高速に転送される。このため、ワイヤ・スピードの処理が実現され、かつ柔軟なプログラミングが実現される。
本発明の第1の実施形態のパケット処理装置の全体構成を示すブロック図である。 本発明の第1の実施形態のネットワーク処理ユニットの構成を示すブロック図である。 本発明の第1の実施形態のネットワーク処理ユニットの構成の別の例を示すブロック図である。 本発明の第1の実施形態のコアわりあて表の説明図である。 本発明の第1の実施形態の制御ボードがユーザからのプログラム・ロード要求を受信した際に実行される処理を示すフローチャートである。 本発明の第1の実施形態の制御ボードがユーザからのプログラム・アンロード要求を受信した際に実行される処理を示すフローチャートである。 本発明の第1の実施形態のネットワーク・インタフェースが内蔵するユーザ/サービス識別情報と仮想環境識別子との第1の対応表の説明図である。 本発明の第1の実施形態のネットワーク・インタフェースが内蔵するユーザ/サービス識別情報と仮想環境識別子との第2の対応表の説明図である。 本発明の第1の実施形態のネットワーク・インタフェースが内蔵するユーザ/サービス識別情報と仮想環境識別子との第3の対応表の説明図である。 本発明の第1の実施形態において、パケットがネットワーク・インタフェースに到着した際の、パケットのコアへの転送処理を示す説明図である。 本発明の第1の実施形態の出力ディスパッチ表の説明図である。 本発明の第2の実施形態のパケット処理システムの全体構成を示すブロック図である。
最初に、本発明の実施形態の概要を説明する。
上記の課題を解決するため、本発明の実施形態のパケット処理装置は、ユーザ/サービス識別情報と仮想環境識別子との対応表と、プログラム・ロード用およびパケット転送用の仮想環境識別子とボード、NPU、コアとの対応表とを使用する。
仮想環境は、ユーザまたはサービスなどと対応づけられる。ユーザは、一つの仮想環境を、一つの独立したネットワークとして認識する。仮想環境は、仮想環境識別子によって識別される。すなわち、仮想環境識別子は、ユーザ識別情報またはサービス識別情報などと対応づけられる属性情報である。
たとえば、各ユーザが、互いに異なる処理をパケット処理装置に要求する場合がある。この場合、各ユーザが各仮想環境と対応づけられる。そして、各ユーザに要求される処理を実行するためのプログラムが、パケット処理装置内のプロセッサにロードされる。
あるいは、パケット処理装置が実行すべき処理が、ユーザに利用されるサービスごとに異なる場合がある。たとえば,各ユーザが同一のパケットに対して異なるプロトコル処理を要求する場合があるが,それは単一の環境においては実現することができない。この場合、各サービスが各仮想環境と対応付けられる。そして、各サービスにおいて要求される処理を実行するためのプログラムが、パケット処理装置内のプロセッサにロードされる。
パケット処理装置が実行する処理の概要はつぎのとおりである。
まず、パケット処理装置は、ユーザからのプログラム・ロード要求が発生するよりまえにユーザ/サービス識別情報と仮想環境識別子との対応表の内容を決定する。つぎに、ロード要求が発生すると、パケット処理装置は、第1に、プログラム・ロード用の仮想環境識別子とボード、NPU(プロセッサ)、コア(プロセッサ・コア)との対応表にもとづいて、未わりあての1個または複数個のコア(およびそのコアが存在するボードおよびNPU)をその仮想環境(ユーザ/サービス)にわりあてる(すなわちそのようにわりあてたことをこの対応表に記入する)。第2に、パケット処理装置は、わりあてたコアにおいてプログラムが実行されるようにユーザ・プログラムをロードする。第3に、パケット処理装置は、パケット転送用の仮想環境識別子とボード、NPU、コアとの対応表におけるその仮想環境に対応するエントリに、上記のボード、NPU、およびコアの識別子を、前記の対応表と整合するように記入する。
そのユーザのパケットが処理装置に到着したとき、パケット処理装置は、まず、パケットの内容に基づいてユーザまたはサービスを識別し、ユーザ/サービス識別情報と仮想環境識別子との対応表を使用して仮想環境識別子をもとめる。つぎに、パケット処理装置は、その仮想環境識別子とパケット転送用の仮想環境識別子とボード、NPU、コアとの対応表を使用して、当該コアにパケットを転送する。
アンロード要求時に、パケット処理装置は、要求情報にふくまれるユーザ/サービス識別情報をもとに、ユーザ/サービス識別情報と仮想環境識別子との対応表を使用して仮想環境識別子をもとめる。そして、パケット処理装置は、プログラム・ロード用およびパケット転送用の仮想環境識別子とボード、NPU、コアとの対応表から、アンロードされるプログラムに関するエントリの内容を削除する。
次に、上記の処理を実現するための詳細な実施形態について説明する。
最初に、本発明の第1の実施形態について説明する。
図1は、本発明の第1の実施形態のパケット処理装置101の全体構成を示すブロック図である。
パケット処理装置101は、1個または複数個のパケット処理ボード(PPB)111と、各々がネットワークに接続される1個または複数個のネットワーク・インタフェース(NIF)151と、制御ボード(CB)141と、それらを接続するスイッチ・ファブリック181とによって構成される。
図1には、例として、n個のパケット処理ボード111およびm個のネットワーク・インタフェース151を備えるパケット処理装置101を示す。ただし、図1には、n個のパケット処理ボード111のうち3個のみを、パケット処理ボード111A、111Bおよび111Cとして示し、m個のネットワーク・インタフェース151のうち3個のみを、ネットワーク・インタフェース151A、151Bおよび151Cとして示す。本実施形態において、パケット処理ボード111A〜111Cのいずれにも共通する説明をする場合、これらを総称してパケット処理ボード111とも記載する。同様に、ネットワーク・インタフェース151A、151Bおよび151Cのいずれにも共通する説明をする場合、これらを総称してネットワーク・インタフェース151とも記載する。
パケット処理ボード111は、1個または複数個のネットワーク処理ユニット(NPU)112、および、仮想環境−NPUディスパッチ表(NDT)113をふくむ。仮想環境−NPUディスパッチ表113は、仮想環境識別子と、NPU識別子との組を要素としてふくむ表である。
図1には、例として、各パケット処理ボード111が2個のネットワーク処理ユニット112を含む例を示す。パケット処理ボード111Aがネットワーク処理ユニット112A及び112Bを、パケット処理ボード111Bがネットワーク処理ユニット112C及び112Dを、パケット処理ボード111Cがネットワーク処理ユニット112E及び112Fを、それぞれ備える。本実施形態において、ネットワーク処理ユニット112A〜112Fのいずれにも共通する説明をする場合、これらを総称してネットワーク処理ユニット112とも記載する。
図1の例において、パケット処理ボード111Aが仮想環境−NPUディスパッチ表113Aを、パケット処理ボード111Bが仮想環境−NPUディスパッチ表113Bを、パケット処理ボード111Bが仮想環境−NPUディスパッチ表113Bを、それぞれふくむ。本実施形態において、仮想環境−NPUディスパッチ表113A〜113Cのいずれにも共通する説明をする場合、これらを総称して仮想環境−NPUディスパッチ表113とも記載する。
各パケット処理ボード111には整数値による識別子があたえられ、各ネットワーク処理ユニット112にも整数値による識別子があたえられている。たとえば、図1のパケット処理ボード111Aに表示されている「PPB #0」は、パケット処理ボード(PPB)111Aに識別子(この場合は識別番号)「0」があたえられていることを示す。
図1では省略されているが、各パケット処理ボード111は、さらに、各ネットワーク処理ユニット112に接続されたメモリをふくむ(後述する図2及び図3参照)。
図1には、各パケット処理ボード111が独立したボードとして実装される例を示す。しかし、各パケット処理ボード111は、それと同等の機能を有するいかなる形態のパケット処理モジュールとして実装されてもよい。
ネットワーク・インタフェース151は、仮想環境−ボード・ディスパッチ表(BDT)152をふくむ。仮想環境−ボード・ディスパッチ表152は、仮想環境識別子とボード識別子との組を要素としてふくむ。
図1の例において、ネットワーク・インタフェース151Aが仮想環境−ボード・ディスパッチ表152Aを、ネットワーク・インタフェース151Bが仮想環境−ボード・ディスパッチ表152Bを、ネットワーク・インタフェース151Cが仮想環境−ボード・ディスパッチ表152Cを、それぞれ含む。本実施形態において、仮想環境−ボード・ディスパッチ表152A〜152Cのいずれにも共通する説明をする場合、これらを総称して仮想環境−ボード・ディスパッチ表152とも記載する。
制御ボード141は、汎用CPU142と、汎用CPU142に接続される主記憶装置(メモリ)143とをふくむ。
図1において、仮想環境−NPUディスパッチ表113は、仮想環境識別子(EID)とNPUとを1対1に対応づけ、仮想環境−ボード・ディスパッチ表152は、仮想環境識別子とボードとを1対1に対応づけている。たとえば、仮想環境−NPUディスパッチ表113Aは、仮想環境識別子「800」とNPU識別子「1」とを1対1に対応づけ、仮想環境−ボード・ディスパッチ表152Aは、仮想環境識別子「800」とボード識別子「0」とを1対1に対応づけている。しかし、仮想環境−NPUディスパッチ表113は、1個の仮想環境識別子に複数個のNPUを対応づけることもできる。同様に、仮想環境−ボード・ディスパッチ表152は、1個の仮想環境識別子に複数個のボードを対応づけることもできる。
図1においては、パケット処理ボード111に入力されたパケットを複数個のネットワーク処理ユニット112にふりわける必要があるために、仮想環境−NPUディスパッチ表113が必要である。しかし、1個のパケット処理ボード111がただ1個のネットワーク処理ユニット112をふくむ場合、または、各パケット処理ボード111がネットワーク処理ユニット112の数だけのインタフェースによってスイッチ・ファブリック181と接続されている場合には、パケットのふりわけが不要であるため、仮想環境−NPUディスパッチ表113は不要である。
ネットワークから入力されるパケットは、ネットワーク・インタフェース151およびスイッチ・ファブリック181経由でパケット処理ボード111に転送されて処理される。その後、パケットは、スイッチ・ファブリック181経由で他のパケット処理ボード111に転送されるか、または、ネットワーク・インタフェース151経由でネットワークに出力される。ネットワーク・インタフェース151において入力されたパケットが複数個のパケット処理ボード111のうちのいずれに転送されるかは、ネットワーク・インタフェース151がふくむ仮想環境−ボード・ディスパッチ表152にもとづいて決定される。また、パケット処理ボード111において処理されるべきパケットが複数個のネットワーク処理ユニット112のうちのいずれに転送されるかは、仮想環境−NPUディスパッチ表113にもとづいて決定される。
なお、ネットワーク・インタフェース識別子が「0」のネットワーク・インタフェース151A(NIF #0)の仮想環境−ボード・ディスパッチ表152Aは、仮想環境識別子「617」とボード識別子「1」との対、および、仮想環境識別子「800」とボード識別子「0」との対をふくんでいる。以下の説明において、たとえば、識別子「617」と識別子「1」との対を、「617−1」のように記載する。
ボード識別子が「0」のパケット処理ボード111A(PPB #0)の仮想環境−NPUディスパッチ表113Aは、仮想環境識別子とそれに対応するNPU識別子との対として、「800−1」という対をふくんでいる。ボード識別子が「1」のパケット処理ボード111B(PPB #1)の仮想環境−NPUディスパッチ表113Bは、「617−2」という対をふくんでいる。
図1においては各パケット処理ボード111上に複数個のネットワーク処理ユニット112が存在するため、仮想環境−NPUディスパッチ表113を使用してネットワーク処理ユニット112を選択する必要があるが、1個のパケット処理ボード111が1個のネットワーク処理ユニット112だけをふくむ場合は仮想環境−NPUディスパッチ表113を省略することができる。
パケット処理ボード111上に複数個のネットワーク処理ユニット112が存在する場合であっても、パケット処理ボード111がネットワーク処理ユニット112ごとに独立にパケットを入出力することができる場合、すなわち、スイッチ・ファブリック181から各ネットワーク処理ユニット112への配線が独立である場合は、やはり仮想環境−NPUディスパッチ表113を省略することができる。
図2は、本発明の第1の実施形態のネットワーク処理ユニット(NPU)112の構成を示すブロック図である。
図2に示すネットワーク処理ユニット112は、1個の汎用処理コア(GPC)211、複数個のパケット処理コア(PPC)221、I/O制御装置(I/O Controller)202、SRAM(スタティック・ランダム・アクセス・メモリ)231、メモリ制御装置(Memory Controller)241、および、これらを接続するバス251によって構成される。各パケット処理コア221には整数値による識別子があたえられている。
汎用処理コア211はおもに制御処理(たとえばプログラムのロード・アンロード処理)に使用され、データ処理はおもに複数のパケット処理コア221において並列に実行される。I/O制御装置202はネットワーク処理ユニット112の外部すなわちパケット処理ボード111上にあるスイッチ261に接続されている。また、I/O制御装置202は仮想環境識別子とコア識別子との対を要素とする表である仮想環境−コア・ディスパッチ表(CDT)203をふくむ。
ネットワーク処理ユニット112が図2のように複数個のパケット処理コア221をふくむ場合、仮想環境−コア・ディスパッチ表203は、コア識別子としてパケット処理コア221の識別子を格納する。一方、ネットワーク処理ユニット112が図3のように複数個の汎用処理コア211をふくむ場合、仮想環境−コア・ディスパッチ表203は、コア識別子として汎用処理コア211の識別子を格納する。
SRAM231は、小容量だが遅延がちいさい主記憶装置である。メモリ制御装置241は、ネットワーク処理ユニット112の外部すなわちパケット処理ボード111上にあるDRAM(ダイナミック・ランダム・アクセス・メモリ)242に接続されている。DRAM242は大容量だが遅延がややおおきい主記憶装置である。
図2において、仮想環境−コア・ディスパッチ表203は、仮想環境識別子とコアとを1対1に対応づけている。しかし、仮想環境−コア・ディスパッチ表203は、1個の仮想環境識別子を複数個のコアに対応づけることもできる。
スイッチ261は、スイッチ・ファブリック181を経由してパケット処理ボード111に到達するパケット・データをI/O制御装置202に転送する。I/O制御装置202は、バス251経由でパケット・データをSRAM231に、または、メモリ制御装置241を経由してDRAM242に転送する。SRAM231またはDRAM242に格納されたデータは、パケット処理コア221において処理されて、再度SRAM231またはDRAM242に格納されるか、または、I/O制御装置202経由でネットワーク処理ユニット112の外部に出力される。
たとえば、図2に示すNPU112が、ボード識別子が「0」のパケット処理ボード111A(PPB #0)におけるNPU識別子「1」のNPU112である場合、I/O制御装置202の仮想環境−コア・ディスパッチ表203は、仮想環境識別子とそれに対応するコア識別子との対として、「800−2」という対をふくんでいる。
図3は、本発明の第1の実施形態のネットワーク処理ユニット(NPU)112の構成の別の例を示すブロック図である。
図3に示すネットワーク処理ユニット112は、複数個の汎用処理コア(GPC)211、I/O制御装置(I/O Controller)202、キャッシュ271、および、これらを接続するバス251によって構成される。
データ処理は、汎用処理コア211において並列に実行される。さらに、汎用処理コア211は制御処理(たとえばプログラムのロード・アンロード処理)もおこなう。キャッシュ271は、小容量だが遅延がちいさい記憶装置(たとえばSRAM)であり、汎用処理コア211またはI/O制御装置202から主記憶に格納されたデータのうち最近アクセスされたものだけを格納する。それ以外のデータはメモリ制御装置241経由でDRAM242に格納される。メモリ制御装置241は、通常、データのキャッシュ271からDRAM242への転送およびキャッシュ271からの削除を自動的に制御するが、主記憶装置の特定のアドレス範囲についてこの操作を禁止する機能ももっている。
たとえば、図3に示すNPU112が、ボード識別子が「1」のパケット処理ボード111B(PPB #1)におけるNPU識別子「2」のNPU112である場合、I/O制御装置202の仮想環境−コア・ディスパッチ表203は、仮想環境識別子とそれに対応するコア識別子との対として、「617−1」という対をふくんでいる。
図4は、本発明の第1の実施形態のコアわりあて表401の説明図である。
コアわりあて表401は、制御ボード141上のメモリ143に格納され、プログラム・ロード用の仮想環境識別子と、ボード、NPU及びコアとを対応づける。具体的には、コアわりあて表401は、仮想環境識別子(EID)414と、その環境にわりあてられるコアを識別するためのボード識別子(BID)411、NPU識別子(NID)412及びコア識別子(CID)413と、を対応づける情報をふくむ。
コア(すなわちパケット処理コア221または汎用処理コア211)をネットワーク処理ユニット112内で一意に識別するコア識別子413、ネットワーク処理ユニット112をパケット処理ボード111内で一意に識別するNPU識別子412、及び、パケット処理ボード111をパケット処理装置101内で一意に識別するボード識別子411の組によって、各コアをパケット処理装置101内で一意に識別することができる。
コア割り当て表401においてはボード識別子「0」、NPU識別子「1」およびコア識別子「2」によって識別されるコアに仮想環境識別子「800」が対応し(行423)、ボード識別子「1」、NPU識別子「2」およびコア識別子「1」によって識別されるコアに仮想環境識別子「617」が対応している(行414)。これは、ボード識別子「0」、NPU識別子「1」及びコア識別子「2」によって識別されるコアが、仮想環境識別子「800」によって識別される仮想環境にわりあてられていること、および、ボード識別子「1」、NPU識別子「2」及びコア識別子「1」によって識別されるコアが、仮想環境識別子「617」によって識別される仮想環境にわりあてられていることを表現している。
一方、ボード識別子「0」、NPU識別子「1」およびコア識別子「0」によって識別されるコア、ならびに、ボード識別子「0」、NPU識別子「1」およびコア識別子「1」によって識別されるコアに対応する仮想環境識別子414は記入されていない(行421および行422)。これは、これらのコアが未使用である(すなわち、いずれの仮想環境にもわりあてられていない)ことを表現している。
コアわりあて表401は、ネットワーク処理ユニット112が図2のように複数個のパケット処理コア221をふくむ場合、コア識別子としてパケット処理コア221の識別子を格納する。一方、図3のようにネットワーク処理ユニット112が複数個の汎用処理コア211をふくむ場合、コアわりあて表401は、コア識別子として汎用処理コア211の識別子を格納する。
ユーザによるプログラム・ロード要求およびプログラム・アンロード要求は、パケット処理装置101の外部からネットワーク・インタフェース151を経由して制御ボード141に到着する。プログラム・ロード要求は、ユーザ/サービス識別情報または仮想環境識別子と、要求するコア数と、ロードするべきプログラムまたはその識別情報(URLなど)をふくむ。プログラム・アンロード要求は、ユーザ/サービス識別情報または仮想環境識別子と、要求するコア数とをふくむ。ただし、要求コア数が「1」の場合は要求コア数を省略することができる。
図5は、本発明の第1の実施形態の制御ボード141がユーザからのプログラム・ロード要求を受信した際に実行される処理501を示すフローチャートである。
処理501の実行が開始されると、まずステップ511において、制御ボード141は、コアわりあて表401にもとづいて要求元仮想環境にコアをわりあて、そのわりあて結果をコアわりあて表401に記入する。すなわち、制御ボード141は、コアわりあて表401において仮想環境識別子(EID)414の欄が空欄になっている行を、要求されたコア数と同数特定し、特定された行の仮想環境識別子414に要求元の仮想環境識別子を記入する。この行の選択によって、ボード識別子411、NPU識別子412及びコア識別子413の各値が選択される。
つぎに、ステップ512において、汎用処理コア211は、わりあてられたコア(すなわち、ステップ511において特定された行に対応する汎用処理コア211またはパケット処理コア221)にプログラムをロードして、わりあてられたコアを起動する。プログラムは通常、DRAM242およびメモリ制御装置241(図3の例ではさらにキャッシュ271)によって構成される主記憶、または、コアが内蔵する命令キャッシュに格納されるが、SRAM231に格納されてもよい。主記憶またはコアが複数のコアに共有されている場合、それらにプログラムを格納した後、対象のコアのレジスタに、プログラムが格納された領域の先頭アドレスをロードする。
図2の構成において、パケット処理コア221は、パケット処理に専用化されているため、プログラムのロードおよび起動をおこなうことができない場合がある。その場合、ネットワーク処理ユニット112にふくまれる汎用処理コア211がロードおよび起動処理をおこなえばよい。
つぎに、ステップ513において、仮想環境−コア・ディスパッチ表203、仮想環境−NPUディスパッチ表113、仮想環境−ボード・ディスパッチ表152にわりあて結果が記入される。すなわち、処理501において特定されたボード識別子、NPU識別子およびコア識別子と仮想環境識別子との組に整合するように、これらの表のなかの1行の内容が決定される。この記入は、制御ボード141からの指示にもとづいて、I/O制御装置202、パケット処理ボード111およびネットワーク・インタフェース151によって実行される。
ここで、図4の行423の仮想環境識別子414として「800」がまだ格納されていない時点において、仮想環境識別子「800」および要求コア数「1」を指定するプログラム・ロード要求を受信した場合を例として、図5の処理を説明する。
この場合、ステップ511において、制御ボード141は、仮想環境識別子414の欄が空欄となっている1行、たとえば行423を特定し、その行423の仮想環境識別子414として「800」を記入する。
上記のように行423が特定された場合、ステップ512において、制御ボード141は、行423に対応するコアにプログラムをロードする要求を、そのコアをふくむパケット処理ボード111に送信する。この場合、プログラムは、ボード識別子「0」によって識別されるパケット処理ボード111内の、NPU識別子「1」によって識別されるネットワーク処理ユニット112がふくむ、コア識別子「2」によって識別されるコアにロードされる。そのコアが汎用処理コア211である場合、その汎用処理コア211自身がプログラムのロードを実行してもよい。そのコアがパケット処理コア221である場合、そのパケット処理コア221に接続された汎用処理コア211がプログラムのロードを実行する。
ステップ513において、制御ボード141は、行423の内容に整合するように各テーブルを更新する要求を、パケット処理装置101内の各部に送信する。ネットワーク・インタフェース151は、要求にしたがって、仮想環境識別子「800」とボード識別子「0」とを対応づける行を仮想環境−ボード・ディスパッチ表152に追加する(図1の仮想環境−ボード・ディスパッチ表152A〜152C参照)。ボード識別子「0」によって識別されるパケット処理ボード111(図1の例ではパケット処理ボード111A)は、仮想環境識別子「800」とNPU識別子「1」とを対応づける行を仮想環境−NPUディスパッチ表113に追加する。NPU識別子「1」によって識別されるネットワーク処理ユニット112(図1の例ではネットワーク処理ユニット112B)内のI/O制御装置202は、仮想環境識別子「800」とコア識別子「2」とを対応づける行を仮想環境−コア・ディスパッチ表203に追加する。その結果、各ディスパッチ表には、コアわりあて表401の少なくとも一部と同一の内容が格納される。
図6は、本発明の第1の実施形態の制御ボード141がユーザからのプログラム・アンロード要求を受信した際に実行される処理601を示すフローチャートである。
処理601の実行が開始されると、まずステップ611において、制御ボード141は、コアわりあて表401から、プログラム・アンロード要求によって指定された仮想環境のわりあて結果を削除する。
つぎにステップ612において、仮想環境−ボード・ディスパッチ表152、仮想環境−NPUディスパッチ表113、仮想環境−コア・ディスパッチ表203から当該仮想環境のわりあて結果が削除される。
最後にステップ613において、汎用処理コア211は、わりあてられたコア(すなわち汎用処理コア211またはパケット処理コア221)においてプログラムを停止してアンロードする。
図7Aから図7Cは、本発明の第1の実施形態のネットワーク・インタフェース151が内蔵するユーザ/サービス識別情報と仮想環境識別子との対応表の説明図である。
ネットワーク・インタフェース151は、パケットを受信すると、図7に示す対応表に基づいて、そのパケットに対応する仮想環境識別子を特定する。既に説明したように、仮想環境は、ユーザ(たとえばパケットを送信したユーザまたはパケットを要求したユーザ)またはサービス(たとえばパケットを送信または要求したユーザが利用するサービス)と対応づけられる。このため、仮想環境識別子は、パケットに含まれるユーザ識別情報またはサービス識別情報と直接に対応づけられてもよい。あるいは、ユーザまたはサービスとパケットに含まれるアドレスとが対応する場合、仮想環境識別子は、パケットに含まれるアドレスと対応づけられてもよい。
図7Aに示す対応表は仮想環境識別子とアドレスとを対応づける情報を、図7Bに示す対応表は仮想環境識別子とユーザ識別情報とを対応づける情報を、図7Cに示す対応表は仮想環境識別子とサービス識別情報とを対応づける情報を、それぞれ含む。以下、各対応表の詳細を説明する。
図7Aに示す対応表701は、IPアドレス、IPプロトコル(TCP、UDPなど)、およびポート(TCPポートまたはUDPポート)の3つからなる組によってユーザまたはサービスが識別される(すなわち、上記の3つからなる組からユーザまたはサービスへの多対1の写像が存在する)ことを仮定している。パケットが制御ボード141に到着した際に、パケットにふくまれるIPアドレス、IPプロトコルおよびポートを検索キーに使用して対応表701を検索することによって、仮想環境識別子欄(EID)に格納されている、対応する仮想環境識別子をもとめることができる。
なお、対応表701はつぎの内容をふくんでいる。IPアドレス「192.168.1.2」、IPプロトコル「TCP」およびポート「80」に対応する仮想環境識別子は「800」である。また、IPアドレス「192.168.2.3」、IPプロトコル「UDP」およびポート「4052」に対応する仮想環境識別子は「617」である。たとえば、到着したパケットにIPアドレス「192.168.1.2」、IPプロトコル「TCP」およびポート「80」がふくまれる場合、仮想環境識別子「800」が特定される。
図7Bに示す対応表702は、パケットにふくまれるユーザIDによってユーザが識別されることを仮定している。パケットが制御ボード141に到着した際に、パケットにふくまれるユーザIDを検索キーに使用して表711を検索することによって、仮想環境識別子欄(EID)に格納されている、対応する仮想環境識別子をもとめることができる。
パケットがGRE(Generic Routing Encapsulation)プロトコルによってカプセル化されている場合、GREヘッダのKey欄にユーザ識別子を格納することができる。このようなパケットが到着した際には、Key欄からユーザIDをとりだすことによって、そのパケットが属するべき仮想環境の識別子をもとめることができる。パケットがMPLSまたは他のトンネリング・プロトコルによってコーディングされている場合にも、同様にしてトンネリング・プロトコルがふくむ情報からユーザやサービスを識別し、その情報を使用して仮想環境識別子をもとめることができる。
なお、対応表702はつぎの内容をふくんでいる。ユーザID「500」に対応する仮想環境識別子は「800」である。また、ユーザID「501」に対応する仮想環境識別子は「617」である。
図7Cに示す対応表703は、パケットにふくまれるサービスIDによってサービスが識別されることを仮定している。パケットが制御ボード141に到着した際に、パケットにふくまれるサービスIDを検索キーに使用して表721を検索することによって、仮想環境識別子欄(EID)に格納されている、対応する仮想環境識別子をもとめることができる。この場合も、パケットがGREプロトコルによってカプセル化されている場合、GREヘッダのKey欄にサービス識別子を格納することができる。このようなパケットが到着した際には、Key欄からサービスIDをとりだすことによって、そのパケットが属するべき仮想環境の識別子をもとめることができる。
なお、対応表703はつぎの内容をふくんでいる。サービスID「Intranet001」に対応する仮想環境識別子は「800」である。また、サービスID「Web101」に対応する仮想環境識別子は「617」である。
以下、対応表701、702および703におけるユーザ/サービス識別情報と、プログラム・ロード要求およびプログラム・アンロード要求におけるユーザ/サービス識別情報との関係について補足する。両者はかならずしも同一である必要はなく、両者の対応関係があらかじめテーブル等によってあたえられていれば、処理501および処理601の際に両者を対応づけることによって、プログラムがロードされたコアにパケットをディスパッチすることができる。
図8は、本発明の第1の実施形態において、パケットがネットワーク・インタフェース151に到着した際の、パケットのコアへの転送処理を示す説明図である。
パケットがネットワーク・インタフェース151に到着すると、まず、ネットワーク・インタフェース151が、対応表701、711、または721を使用して、パケットにふくまれるユーザ/サービス識別情報に対応する仮想環境識別子をもとめる(ステップ801)。たとえば、ユーザIDが「500」の場合、図7Bにもとづいて、仮想環境識別子「800」がもとめられる。
つぎに、ネットワーク・インタフェース151は、ステップ801で特定された仮想環境識別子をキーとして仮想環境−ボード・ディスパッチ表(BDT)152を検索することによって、仮想環境識別子に対応するボード識別子をもとめる。そして、ネットワーク・インタフェース151は、スイッチ・ファブリック181を制御することによって、特定されたボード識別子をもつパケット処理ボード(PPB)111にパケットを転送する(ステップ802)。仮想環境識別子が「800」の場合、ボード識別子として「0」がもとめられ、ボード識別子「0」のパケット処理ボード111(図1および図8の例では、「PPB #0」と表示されたパケット処理ボード111A)にパケットが転送される。
つぎに、パケット転送先のパケット処理ボード111が、仮想環境識別子をキーとしてそのパケット処理ボード111内の仮想環境−NPUディスパッチ表(NDT)113を検索することによって、対応するNPU識別子をもとめ、そのNPU識別子をもつネットワーク処理ユニット(NPU)112にパケットを転送する(ステップ803)。図8の例では仮想環境−NPUディスパッチ表113Aが検索される。仮想環境識別子が「800」の場合、NPU識別子として「1」がもとめられ、NPU識別子「1」のネットワーク処理ユニット112にパケットが転送される。
さらに、パケット転送先のネットワーク処理ユニット(NPU)112内のI/O制御装置202が、仮想環境識別子をキーとして仮想環境−コア・ディスパッチ表(CDT)203を検索することによって、対応するコア識別子をもとめ、そのコア識別子をもつコアにパケットを転送する(ステップ804)。仮想環境識別子が「800」の場合、コア識別子として「2」がもとめられ、コア識別子「2」のコアにパケットが転送される。
転送先のコアにおいては、ユーザのロード要求にしたがってロードされたプログラムが動作している。このプログラムはSRAM231またはキャッシュ271を使用することによって、すくない遅延で処理を実行することができるため、ワイヤ・スピードでの処理が可能になる。
キャッシュ271にふくまれるデータおよびプログラムは自動的に削除されることがあり、そのためにワイヤ・スピードでの処理が阻害されることがある。この問題を防止するためには、前記のデータおよびプログラムのアドレス範囲を指定してキャッシュ271からの自動削除を禁止する設定をおこなえばよい。
このプログラムは、パケットの処理を実行した後、そのパケットを他の特定のパケット処理ボード111に転送するか、または、特定のネットワーク・インタフェース151に転送することができる。転送先のパケット処理ボード111においても図8に示す処理が実行され、それによって、仮想環境識別子をキーとしてネットワーク処理ユニット112およびコアが決定される。
なお、ボード選択、NPU選択およびコア選択の際に、1個の仮想環境識別子に対応する複数のボード識別子、NPU識別子またはコア識別子が存在する場合、それらのうちの任意の1個を選択し、選択されたボード、NPU、またはコアにパケットを転送すればよい。その際に乱数を使用してパケットをふりわけてもよい。あるいは、そのボード、NPU、またはコアの使用状況を検知して、それらが現在使用されていないか、またはそれらがもつ未処理のパケット数(入力キューにふくまれるパケット数など)がすくないものを選択してパケットをふりわけてもよい。
また、1個のパケット処理ボード111がただ1個のネットワーク処理ユニット112をふくむ場合、または、各パケット処理ボード111がネットワーク処理ユニット112の数だけのインタフェースによってスイッチ・ファブリック181と接続されている場合には、パケットのふりわけが不要であるため、仮想環境−NPUディスパッチ表113は不要である。この場合、パケットがネットワーク・インタフェース151に到着すると、パケットのコアへの転送処理はつぎのように実行される。
パケットがネットワーク・インタフェース151に到着すると、まず、ネットワーク・インタフェース151が、対応表701、711、または721を使用して、パケットにふくまれるユーザ/サービス識別情報に対応する仮想環境識別子をもとめる。
つぎに、ネットワーク・インタフェース151は、ステップ801で特定された仮想環境識別子をキーとして仮想環境−ボード・ディスパッチ表(BDT)152を検索することによって、仮想環境識別子に対応するボード識別子をもとめる。
そして、ネットワーク・インタフェース151は、スイッチ・ファブリック181を制御することによって、特定されたボード識別子に対応するパケット処理ボード(PPB)111にパケットを転送する。つぎに、転送されたパケット処理ボード(PPB)111のネットワーク処理ユニット(NPU)112にパケットを転送する。
さらに、パケット転送先のネットワーク処理ユニット(NPU)112内のI/O制御装置202が、仮想環境識別子をキーとして仮想環境−コア・ディスパッチ表(CDT)203を検索することによって、対応するコア識別子をもとめ、そのコア識別子をもつコアにパケットを転送する。
このように、第1の実施形態によれば、1個の仮想環境識別子に複数のボード識別子、NPU識別子またはコア識別子を対応させることによって、ユーザごと、あるいはサービスごとに処理能力を自由に決定することができる。さらに、ボード、NPU、またはコアの使用状況にもとづいてパケットの転送先を決定することによって、コアおよびそれに付随する計算資源をより有効に利用することができる。
以上で本発明の第1の実施形態の基本部分の説明をおわり、以下、第1の実施形態に関する補足説明をおこなう。
第1の補足説明はマイグレーション処理に関する。第1の実施形態においては1個のネットワーク処理ユニット112において複数のユーザ・グループまたは複数のサービスが同時に動作する場合がある。ところが、ネットワーク処理ユニット112の設計によっては、複数のコアのうちの一部を動作させたまま他の一部にプログラムをロードすることができない場合がある。このような場合には、プログラム・ロード要求時の処理501のかわりに、つぎのようなマイグレーション処理をおこなえばよい。
たとえば、ネットワーク処理ユニット112Aに含まれる複数のコアの一部にプログラムがロードされており、残りのコアにプログラムがまだロードされておらず、ネットワーク処理ユニット112Bのいずれのコアにもプログラムがまだロードされていない時点において、あらたなプログラムのロード要求を処理する場合について説明する。
この場合、制御ボード141は、ネットワーク処理ユニット112Aにおいて動作しているすべてのプログラムを、ネットワーク処理ユニット112Bにもロードする。ただし、すでに主記憶等にロードしたプログラムをネットワーク処理ユニット112Bがそのまま使用することができる場合は、あらたにロードする必要はない。
なお、ネットワーク処理ユニット112Bのいずれのコアにもプログラムがまだロードされていないことは、コアわりあて表401にもとづいて確認することができる。すなわち、ネットワーク処理ユニット112Bは、コアわりあて表401にもとづいて選択される。
上記のネットワーク処理ユニット112Bの選択が、図5のステップ511において説明したコアのわりあてのかわりに実行される。選択されたネットワーク処理ユニット112Bのコアへのプログラムのロードは、ステップ512同様の方法によって実行される。
その後、ステップ513と同様に、各表が設定される。ただし、この時点で、ステップ513における仮想環境−ボード・ディスパッチ表(BDT)152の設定だけはまだ実行されない。すなわち、ネットワーク処理ユニット112Bの各コアにプログラムがロードされたのちも、ネットワーク・インタフェース151に入力されたパケットはネットワーク処理ユニット112Aにおいて処理されつづける。
制御ボード141は、さらに、ロード要求されたプログラムを、ネットワーク処理ユニット112Bのまだプログラムがロードされていないコアにロードする。このロードは、ステップ512と同様に実行される。この処理ののちにネットワーク・インタフェース151に入力された当該仮想環境に属するパケットは、ネットワーク処理ユニット112Bにおいて処理される。
ここで、遅延されていた仮想環境−ボード・ディスパッチ表152の設定をすべてのプログラムに関して実行することによって、これまでネットワーク処理ユニット112Aにおいて処理されていたパケットは、すべてネットワーク処理ユニット112Bにおいて処理されるようになる。すなわち、これによってマイグレーションが実現する。
マイグレーションが終了したのち、ネットワーク処理ユニット112Aは使用されなくなる。このため、制御ボード141は、ネットワーク処理ユニット112A内のすべてのコアを未使用状態に変更し、ロードされていたプログラムを処理601にしたがってアンロードする。この処理によってコアわりあて表401からもネットワーク処理ユニット112Aのための設定が削除される。ただし、そのプログラムが第2のネットワーク処理ユニット112においても使用されている場合はアンロードしない。
上記のマイグレーション処理によって、マルチコアのネットワーク処理ユニット112において、コアの動作中にプログラムをいれかえることができない場合であっても、プログラムの動作を継続したまま1個のネットワーク処理ユニット112を複数のユーザにわりあてることができる。
第2の補足説明は仮想環境ごとにことなるネットワークへのパケット出力処理に関する。
図9を使用して、第2の補足説明をする。
図9は、本発明の第1の実施形態の出力ディスパッチ表の説明図である。
パケット処理ボード111からネットワーク・インタフェース151を経由してネットワークに出力されるパケットに関して、ネットワーク・インタフェース151内に出力ディスパッチ表911を保持することによって、つぎのような処理が可能になる。
出力ディスパッチ表911は、仮想環境と、その仮想環境において実行されるパケットのアドレスの削除または変換と、の対応を定める。具体的には、出力ディスパッチ表911は、仮想環境識別子(EID)、ネットワーク・インタフェースのポート番号(Port)、パケット出力処理タイプ(TYPE)、および、アドレス変換テーブル(CNV)の組をふくんでいる。
図9の例において、仮想環境識別子「617」及びポート番号「0」に対応するパケット出力処理タイプは「1」である。この例において、ネットワーク・インタフェース151は、仮想環境識別子が「617」であるパケットをポート「0」に出力する場合、パケットがもつすべてのアドレス情報を削除して出力する。すなわち、ネットワーク・インタフェース151は、これから出力しようとするパケットがIPアドレスを含む場合、それを削除し、MACアドレスを含む場合、それも削除する。
たとえば、当該仮想環境識別子「617」に関しては、当該ポート「0」からただ1個の通信相手しか接続されていないため、アドレスづけが不要である場合、それらに対応するパケット出力処理タイプとして「1」が設定される。なお、上記の例では宛先および送信元のアドレスがともに削除されるが、パケット処理タイプを変更することによって、送信元のアドレスだけのこしてもよい。
出力ディスパッチ表911において仮想環境識別子が「617」かつポート番号が「1」の場合、パケット出力処理タイプは「2」である。この例において、ネットワーク・インタフェース151は、仮想環境識別子が「617」であるパケットをポート「1」に出力する場合、パケットがもつ3層のアドレス情報を削除して出力する。3層がIP層であれば、IPヘッダが削除される。パケットが3層のアドレス情報をもっていない場合、そのまま出力される。
パケット出力処理タイプが「1」の場合と同様に送信元アドレスだけをのこすことも可能だが、その場合はインターネット・プロトコルを使用することはできないので、送信元アドレスだけが指定できる、かわりのプロトコルが使用される。仮想環境識別子が「617」かつポート番号が「1」の場合、アドレス変換テーブルは指定されていないため、ネットワーク・インタフェース151はアドレス変換をおこなわない。
出力ディスパッチ表911において仮想環境識別子が「800」である場合、パケット出力処理タイプは「3」である。この場合、ポート番号が指定されていないので、すべてのポートに対しておなじパケット出力処理タイプが適用される。出力されるパケットの仮想環境識別子が「800」である場合、ネットワーク・インタフェース151は、パケットがもつアドレス情報を削除せずに出力する。ネットワーク・インタフェース151は、パケットが3層のアドレス情報をもっていればそのまま出力するが、それをもっていない場合、2層のアドレス情報にもとづいて3層のアドレス情報をもとめて、3層ヘッダをパケットに挿入する。3層スイッチ(たとえば後述する3層スイッチ1012)においてARP(Address Resolution Protocol)パケットの受信時に、ネットワーク・インタフェース151ごとに存在するARPテーブル(図示省略)にMACアドレスとIPアドレスとの対応を保持すれば、パケット出力時にMACアドレスに対応するIPアドレスをもとめて3層ヘッダを挿入することができる。仮想環境識別子が「800」である場合、アドレス変換テーブルは指定されていないため、アドレス変換はおこなわれない。
出力ディスパッチ表911において仮想環境識別子が「452」である場合、パケット出力処理タイプは「3」である。すなわち、ネットワーク・インタフェース151は、仮想環境識別子が「452」であるパケットを出力する場合、パケットにふくまれるアドレス情報を削除しない。
出力ディスパッチ表911において、仮想環境識別子「452」に対応するアドレス変換テーブル912が指定されている。パケット処理タイプが「3」であるため、ネットワーク・インタフェース151は、3層のアドレスをつぎのように変換する。
ネットワーク・インタフェース151は、まず、パケットがふくむアドレスをIAddr欄において検索する。
パケットが含むアドレスが「192.168.1.2」である場合、このアドレスに、IAddrの値「192.168.1.*」がマッチする(“*”はワイルドカードである)。したがって、ネットワーク・インタフェース151は、パケットが含むアドレスを、上記の検索されたIAddrに対応するOAddrすなわち「192.168.3.2」にかきかえる。ただし、OPort欄に“*”が指定されているため、ネットワーク・インタフェース151は、アドレスの下8ビットの内容にしたがって、ポートを変更する。すなわち、NAPT変換(Network Address Port Translation)が実行される。
パケットが含むアドレスが「192.168.2.3」である場合、検索の結果、IAddrとして「192.168.2/24」がマッチする(「24」は有効なビット数である)。したがって、ネットワーク・インタフェース151は、検索されたIAddrの先頭24ビットをそれに対応するOAddrすなわち「192.168.4」にかきかえる。OPort欄は指定されていないので、ポートのかきかえはおこなわれない。
パケットが含むアドレスが「192.168.3.255」である場合、検索の結果、IAddrとして「192.168.*.255」がマッチする。したがって、ネットワーク・インタフェース151は、アドレスの上位16ビットを「10.1」にかきかえ、アドレスの下位8ビットを「255」にかきかえる。のこりの8ビットはもとのままとする。この場合もOPort欄は指定されていないので、ポートのかきかえはおこなわれない。
なお、パケットの高速転送のためにはアドレス変換テーブル912を高速メモリ上におく必要があるため、その総記憶量をおさえる必要がある。出力ディスパッチ表911の複数の欄から同一内容のアドレス変換テーブル912が指示されるときは、同一の出力ディスパッチ表911を指示することによって、記憶量をおさえることができる。ネットワーク・インタフェース151ごとにアドレス変換テーブル912をもつかわりに、複数のネットワーク・インタフェース151がアドレス変換テーブル912を共有することによって、さらに記憶量をおさえることができる。
パケット処理タイプが「1」の場合、出力パケットにアドレスがふくまれないため、アドレス変換テーブルを指定することはできない。パケット処理タイプが2の場合、出力パケットに2層のアドレスがふくまれるため、アドレス変換テーブルは2層のアドレスを変換する。イーサネット(登録商標、以下同じ)において、MACアドレスは1個ずつ独立にあつかわれるため、範囲指定はおこなわず、アドレス変換テーブルにおいては1個ずつアドレスの対が指定される。
なお、パケット処理装置101においてはパケット処理ボード111とネットワーク・インタフェース151とが分離されていたが、パケット処理ボード111上にネットワーク・インタフェースが搭載されてもよい。この場合、パケット処理ボード111における処理において出力されたパケットを、ネットワーク・インタフェース151に送信することなく、パケット処理ボード111上のネットワーク・インタフェースからネットワークに送信することができる。この送信の際に、パケット処理ボード111上の出力ディスパッチ表911およびアドレス変換テーブル912を使用して、仮想環境ごとにことなるネットワークへのパケット出力処理をおこなうことができる。
パケット処理ボード111からネットワーク・インタフェース151を経由してパケットを出力する場合には、ネットワーク・インタフェース151からは他のパケット処理ボード111または他のネットワーク・インタフェース151からのパケットもあわせて出力される可能性がある。しかし、上記のような構成を使用することによって、パケット処理ボード111において処理されたパケットだけをパケット処理ボード111上のネットワーク・インタフェースから出力することができる。そのため、パケット処理ボード111においては、パケット処理ボード111において処理されたトラフィック量を計測し、それにもとづいてシェイピングなどのトラフィック制御をおこなうことができる。
以下、本発明の第2の実施形態について説明する。
図10は、本発明の第2の実施形態のパケット処理システムの全体構成を示すブロック図である。
図10に示すシステムは、第1の実施形態におけるパケット処理装置101と等価な機能を実現する。
具体的には、図10に示すシステムは、複数個のパケット処理装置(PPE)1011、3層スイッチ1012および制御装置1013を備える。複数個のパケット処理装置(PPE)1011は、3層スイッチ1012と10Gbitイーサネットによって接続されている。3層スイッチ1012はさらに10Gbitイーサネット・インタフェース(図示省略)を搭載し、それによって他の装置と接続されている。
制御装置1013は、3層スイッチ1012と直接または間接に接続されている。制御装置1013は制御ボード141をふくみ、制御ボード141は汎用CPU142および主記憶装置143をふくむ。
パケット処理装置1011は、パケット処理ボード111と同様、1個または複数個のネットワーク処理ユニット(NPU)112および仮想環境−NPUディスパッチ表(NDT)113をふくむ。仮想環境−NPUディスパッチ表(NDT)113は、仮想環境識別子と、NPU識別子との組を要素とする表である。
なお、パケット処理装置1011は、パケット処理ボード111と同様、いかなる形態の処理モジュールとして実装されてもよい。たとえば、第1の実施形態に示したパケット処理ボード111がパケット処理装置1011として使用されてもよい。
図10には、例として、n個のパケット処理装置1011を示す。ただし、図10には、n個のパケット処理装置1011のうち3個のみを、パケット処理装置1011A、1011Bおよび1011Cとして示す。本実施形態において、パケット処理装置1011A〜1011Cのいずれにも共通する説明をする場合、これらを総称してパケット処理装置1011とも記載する。
各パケット処理装置1011には整数値による識別子があたえられている。たとえば、図10のパケット処理装置1011Aに表示されている「PPE #0」は、パケット処理装置(PPE)1011Aに識別子「0」があたえられていることを示す。
パケット処理装置1011Aは、ネットワーク処理ユニット112A、112Bおよび仮想環境−NPUディスパッチ表113Aを、パケット処理装置1011Bは、ネットワーク処理ユニット112C、112Dおよび仮想環境−NPUディスパッチ表113Bを、パケット処理装置1011Cは、ネットワーク処理ユニット112E、112Fおよび仮想環境−NPUディスパッチ表113Cを、それぞれ備える。第1の実施形態と同様、ネットワーク処理ユニット112A〜112Fは、ネットワーク処理ユニット112とも記載される。仮想環境−NPUディスパッチ表113A〜113Cは、仮想環境−NPUディスパッチ表113とも記載される。ネットワーク処理ユニット112および仮想環境−NPUディスパッチ表113は、第1の実施形態において説明したものと同様である。
3層スイッチ1012は、ポリシーベース・ルーティング機能をもつ。
ネットワークから入力されるパケットは、3層スイッチ1012経由でパケット処理装置1011に転送されて処理され、さらに3層スイッチ1012経由で他のパケット処理装置1011に転送されるか、または、ネットワークに出力される。3層スイッチ1012に入力されたパケットが複数個のパケット処理装置1011のうちのいずれに転送されるかは、3層スイッチ1012がもつポリシーベース・ルーティングの設定内容によって決定される。すなわち、第1の実施形態では、プログラム・ロード要求を受信した際の処理501およびプログラム・アンロード要求を受信した際の処理601において、制御ボード141が仮想環境−ボード・ディスパッチ表152を設定していた。これにたいして、第2の実施形態では、制御ボード141が下記のようなポリシーベース・ルーティングの設定をおこなう。パケット処理装置1011において処理されるべきパケットが複数個のネットワーク処理ユニット112のうちのいずれに転送されるかは、第1の実施形態と同様、仮想環境−NPUディスパッチ表113によって決定される。
ポリシーベース・ルーティングによるパケット処理装置1011の決定はつぎのようにおこなわれる。3層スイッチ1012は、ポリシーベース・ルーティングの設定のためにつぎのようなコマンドを使用する(このコマンドはAlaxala(登録商標)社の3層スイッチAX7800Sに対するものとひとしい)。
policy-list 10 ppe1 192.168.10.2 ………(1)
policy-group to_ppe1 list 10 ………(2)
flow filter user617 in list 100 any any action policy_group to_ppe1 ………(3)
コマンド(1)は、パケット処理装置1011B(PPE #1)が3層スイッチ1012のネットワーク・インタフェース「ppe1」に接続されていること、パケット処理装置1011B(PPE #1)にIPアドレス「192.168.10.2」があたえられていること、および、識別番号として「10」があたえられることを表現している。
コマンド(2)は、ポリシーベース・ルーティングの設定が識別番号「10」である1個の要素だけで構成され、その設定に対して「to_ppe1」という名称があたえられることを表現している。
コマンド(3)は、特定のユーザ・グループだけが使用するように設定されたVLANインタフェース(VLANごとに仮想化されたネットワーク・インタフェース)「user617」に達したパケットに対して「to_ppe1」のポリシーベース・ルーティングを適用することを表現している。
結局、コマンド(1)〜(3)によって、VLAN番号「617」と、識別子「1」によって識別されるパケット処理装置1011B(PPE #1)とが対応づけられる。「user617」に対してVLAN番号「617」がわりあてられている場合、VLAN番号617をもつパケットが入力されると、そのパケットはパケット処理装置1011B(PPE #1)に転送され、処理される。
なお、本実施形態では、VLANが仮想環境と対応付けられる。
当該のユーザ・グループに属するユーザのパケットにVLAN番号「617」を設定するには、そのユーザの機器と3層スイッチ1012とのあいだのいずれかスイッチにVLAN機能をもたせ、そのスイッチのタグVLAN機能を使用してVLAN番号「617」を設定すればよい。そのスイッチの特定のポートを当該のユーザ・グループだけが使用する場合は、そのポートに入力されたパケットのユーザまたはサービスを識別する必要はなく、すべてのパケットにVLAN番号617を設定すればよい。
3層スイッチ1012がコマンド(1)によって設定されると、VLAN番号「617」をもつパケットの転送先として、ネットワーク・インタフェース「ppe1」に接続されたIPアドレス「192.168.10.2」が選択される。すなわち、そのパケットの宛先MACアドレスとして、3層スイッチ1012がARP(Address Resolution Protocol)によって受信したIPアドレス「192.168.10.2」に対応するMACアドレスを設定する。ネットワーク・インタフェース「ppe1」に複数のパケット処理装置1011が接続されている場合、コマンド(1)においてIPアドレスを指定することが必須である。しかし、ネットワーク・インタフェース「ppe1」に接続されたパケット処理装置1011が1個だけであれば、IPアドレスを指定する必要はない。すなわち、コマンド(1)のかわりにつぎのコマンドを使用することができる。
policy-list 10 ppe1 ………(1’)
この場合3層スイッチ1012は、パケット処理装置1011からネットワーク・インタフェース「ppe1」にパケットが到着した際に、その送信元のMACアドレスを「ppe1」と対応づけて保持することによって、VLAN番号「617」をもつパケットの転送先MACアドレスを一意に決定することができる。
この方法によれば、パケット処理装置1011にIPアドレスを付与する必要がなくなり、IPアドレスを節約することができる。さらに、場合によってはパケット処理装置1011にインターネット・プロトコルのスタックを搭載する必要がなくなるため、プログラムを軽量化できる。
また、パケット処理装置1011が到着するパケットをその宛先アドレスによらずに受信するように設定されている場合(たとえばLinuxにおけるpromiscuous modeに相当する設定がなされている場合)、3層スイッチ1012は、パケットをネットワーク・インタフェース「ppe1」から出力する際にその宛先アドレスおよび送信元アドレスを変更することなしに送出しても、そのパケットをパケット処理装置1011にとどけることができる。この方法は特定の仮想環境識別子をもつパケットだけに適用することができる。すなわち、他の仮想環境識別子をもつパケットに関しては宛先アドレスをかきかえて、「ppe1」以外のネットワーク・インタフェースから送出することができる。なお、この方法によれば、パケット処理装置1011はそのパケットにもともとつけられていた宛先アドレスおよび送信元アドレスを利用して処理をおこなうことができる。
さらに、パケット処理装置1011が到着するパケットをその宛先アドレスによらずに受信するように設定されている場合、3層スイッチ1012が出力するパケットに宛先アドレスがふくまれていなくてもそのパケットをパケット処理装置1011にとどけることができる。このため、そのパケットの宛先アドレス欄を削除することができる。さらに、送信元アドレスが不要であれば、それも削除することができる。ただし、これらのアドレスを削除されたパケットは、イーサネット標準(IEEE標準)には準拠していない。この方法も、特定の仮想環境識別子をもつパケットだけに適用することができる。この方法によれば、アドレスのぶんだけ転送データ量をおさえることができる。
以上の第2の実施形態によれば、すべての装置をあらたに開発するかわりにAX7800Sのような既存の3層スイッチを使用した場合にも、本発明の主要な効果をえることができる。
101、1011 パケット処理装置
111A〜111C パケット処理ボード(PPB)
112A〜112F ネットワーク処理ユニット(NPU)
113A〜113C 仮想環境−NPUディスパッチ表(NDT)
141、1013 制御ボード(CB)
142 CPU
143 メモリ
151A〜151C ネットワーク・インタフェース(NIF)
152A〜152C 仮想環境−ボード・ディスパッチ表(BDT)
181、1012 スイッチ・ファブリック
202 I/O制御装置
203 仮想環境−コア・ディスパッチ表(CDT)
211 汎用処理コア(GPC)
221 パケット処理コア(PPC)
231 スタティック・ランダム・アクセス・メモリ(SRAM)
241 メモリ制御装置
242 ダイナミック・ランダム・アクセス・メモリ(DRAM)
251 バス
261 スイッチ
271 キャッシュ
401 コアわりあて表

Claims (16)

  1. ネットワークに接続されるパケット処理装置であって、
    前記パケット処理装置は、
    複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、
    属性情報に対応するパケットのアドレスの変換または削除を定める情報を保持し、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
    前記選択されたプロセッサ・コアに前記プログラムをロードし、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
    前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除した後、前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送することを特徴とするパケット処理装置。
  2. 前記パケット処理装置は、前記第1の対応付け情報に基づいて、前記まだプログラムがロードされていないプロセッサ・コアを選択することを特徴とする請求項1に記載のパケット処理装置。
  3. 前記パケット処理装置は、
    アドレス、ユーザの識別子およびサービスの識別子の少なくとも一つと、前記属性情報と、を対応付ける第2の対応付け情報を保持し、
    前記パケットを受信すると、前記第2の対応付け情報に基づいて、前記受信したパケットに含まれるアドレス、ユーザの識別子およびサービスの識別子の少なくとも一つに対応する前記属性情報を特定することを特徴とする請求項1に記載のパケット処理装置。
  4. ネットワークに接続されるパケット処理装置であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理装置は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
    前記選択されたプロセッサ・コアに前記プログラムをロードし、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報、第5の対応付け情報および第6の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
    前記第6の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
    前記各ネットワーク・インタフェースは、
    前記第6の対応付け情報を保持し、
    前記ネットワークから前記パケットを受信すると、前記第6の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
    前記各パケット処理モジュールは、
    前記第5の対応付け情報を保持し、
    前記パケットを受信すると、前記第5の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
    前記各ネットワーク処理ユニットは、
    前記第4の対応付け情報を保持し、
    前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とするパケット処理装置
  5. 前記各ネットワーク・インタフェースは、
    属性情報に対応する前記パケットのアドレスの変換または削除を定める情報をさらに保持し、
    前記ネットワークから前記パケットを受信すると、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除し、
    前記変換されたアドレスを含むパケットまたは前記アドレスを削除されたパケットを前記パケット処理モジュールに転送することを特徴とする請求項4に記載のパケット処理装置。
  6. ネットワークに接続されるパケット処理装置であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、前記ネットワークに接続され、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理装置は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
    前記選択されたプロセッサ・コアに前記プログラムをロードし、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報および第5の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
    前記制御部は、前記第3の対応付け情報に基づいて、前記特定された属性情報と、前記パケット処理モジュールとを対応付けるコマンドを前記スイッチに転送し、
    前記スイッチは、前記ネットワークから前記パケットを受信すると、前記コマンドに基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
    前記各パケット処理モジュールは、
    前記第5の対応付け情報を保持し、
    前記パケットを受信すると、前記第5の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
    前記各ネットワーク処理ユニットは、
    前記第4の対応付け情報を保持し、
    前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とするパケット処理装置
  7. ネットワークに接続されるパケット処理装置であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、第1のネットワーク処理ユニットと、第2のネットワーク処理ユニットと、を備え、
    第1のネットワーク処理ユニット及び第2のネットワーク処理ユニットは、それぞれ、複数の前記プロセッサ・コアを備え、
    前記パケット処理装置は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
    前記第1のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つに既にプログラムがロードされ、別の少なくとも一つにまだプログラムがロードされておらず、前記第2のネットワーク処理ユニットが備えるいずれの前記プロセッサ・コアにもまだプログラムがロードされていない時点で、プログラムのロード要求を受信すると、前記第1のネットワーク処理ユニットが備える複数の前記プロセッサ・コアの少なくとも一つにロードされているプログラムを、前記第2のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つにロードし、
    さらに、前記受信したロード要求によって指定されたプログラムを、前記第2のネットワーク処理ユニットが備える前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアにロードし、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送することを特徴とするパケット処理装置
  8. ネットワークに接続されるパケット処理装置であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、ネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理装置は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択し、
    前記選択されたプロセッサ・コアに前記プログラムをロードし、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持し、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定し、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報、及び第5の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
    前記各ネットワーク・インタフェースは、
    前記第5の対応付け情報を保持し、
    前記ネットワークから前記パケットを受信すると、前記第5の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送し、
    前記各パケット処理モジュールは、
    前記ネットワーク処理ユニットに、前記受信したパケットを転送し、
    前記ネットワーク処理ユニットは、
    前記第4の対応付け情報を保持し、
    前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送することを特徴とするパケット処理装置
  9. ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
    前記パケット処理装置は、
    複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、を備え、
    属性情報に対応するパケットのアドレスの変換または削除を定める情報を保持し、
    前記パケット処理方法は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第1手順と、
    前記選択されたプロセッサ・コアに前記プログラムをロードする第2手順と、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持する第3手順と、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第4手順と、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第5手順と、を含み、
    前記第5手順は、前記受信したパケットを前記特定された属性情報に対応するプロセッサ・コアに転送する前に、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除する手順を含むことを特徴とするパケット処理方法。
  10. 前記第1手順は、前記第1の対応付け情報に基づいて、前記まだプログラムがロードされていないプロセッサ・コアを選択する手順を含むことを特徴とする請求項9に記載のパケット処理方法。
  11. 前記パケット処理装置は、アドレス、ユーザの識別子およびサービスの識別子の少なくとも一つと、前記属性情報と、を対応付ける第2の対応付け情報を保持し、
    前記第4手順は、前記第2の対応付け情報に基づいて、前記受信したパケットに含まれるアドレス、ユーザの識別子およびサービスの識別子の少なくとも一つに対応する前記属性情報を特定する手順を含むことを特徴とする請求項9に記載のパケット処理方法。
  12. ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理方法は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第1手順と、
    前記選択されたプロセッサ・コアに前記プログラムをロードする第2手順と、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持する第3手順と、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第4手順と、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第5手順と、を含み、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報、第5の対応付け情報および第6の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
    前記第6の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
    前記各ネットワーク処理ユニットは、前記第4の対応付け情報を保持し、
    前記各パケット処理モジュールは、前記第5の対応付け情報を保持し、
    前記各ネットワーク・インタフェースは、前記第6の対応付け情報を保持し、
    前記第5手順は、
    前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記第6の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する第6手順と、
    前記各パケット処理モジュールが、前記パケットを受信すると、前記第5の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送する第7手順と、
    前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する第8手順と、を含むことを特徴とするパケット処理方法
  13. 前記各ネットワーク・インタフェースは、属性情報に対応する前記パケットのアドレスの変換または削除を定める情報をさらに保持し、
    前記第6手順は、前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記特定された属性情報および前記アドレスの変換または削除を定める情報に基づいて、前記受信したパケットのアドレスを変換または削除し、前記変換されたアドレスを含むパケットまたは前記アドレスを削除されたパケットを前記パケット処理モジュールに転送する手順を含むことを特徴とする請求項12に記載のパケット処理方法
  14. ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、前記ネットワークに接続され、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、複数のネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理方法は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第1手順と、
    前記選択されたプロセッサ・コアに前記プログラムをロードする第2手順と、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持する第3手順と、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第4手順と、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第5手順と、を含み、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報および第5の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記ネットワーク処理ユニットの識別情報とを対応付ける情報と同一の情報を含み、
    前記各ネットワーク処理ユニットは、前記第4の対応付け情報を保持し、
    前記各パケット処理モジュールは、前記第5の対応付け情報を保持し、
    前記方法は、さらに、前記制御部が、前記第3の対応付け情報に基づいて、前記特定された属性情報と、前記パケット処理モジュールとを対応付けるコマンドを前記スイッチに転送する手順を含み、
    前記第5手順は、
    前記スイッチが、前記ネットワークから前記パケットを受信すると、前記コマンドに基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する手順と、
    前記各パケット処理モジュールが、前記パケットを受信すると、前記第5の対応情報に基づいて、前記特定された属性情報に対応する前記ネットワーク処理ユニットに、前記受信したパケットを転送する手順と、
    前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する手順と、を含むことを特徴とするパケット処理方法
  15. ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、第1のネットワーク処理ユニットと、第2のネットワーク処理ユニットと、を備え、
    第1のネットワーク処理ユニット及び第2のネットワーク処理ユニットは、それぞれ、複数の前記プロセッサ・コアを備え、
    前記パケット処理方法は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第1手順と、
    前記選択されたプロセッサ・コアに前記プログラムをロードする第2手順と、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持する第3手順と、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第4手順と、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第5手順と、を含み、
    前記第2手順は、
    前記第1のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つに既にプログラムがロードされ、別の少なくとも一つにまだプログラムがロードされておらず、前記第2のネットワーク処理ユニットが備えるいずれの前記プロセッサ・コアにもまだプログラムがロードされていない場合、前記第1のネットワーク処理ユニットが備える複数の前記プロセッサ・コアの少なくとも一つにロードされているプログラムを、前記第2のネットワーク処理ユニットが備える前記複数のプロセッサ・コアの少なくとも一つにロードする手順と、
    前記受信したロード要求によって指定されたプログラムを、前記第2のネットワーク処理ユニットが備える前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアにロードする手順と、を含むことを特徴とするパケット処理方法
  16. ネットワークに接続されるパケット処理装置が実行するパケット処理方法であって、
    前記パケット処理装置は、複数のプロセッサ・コアと、前記複数のプロセッサ・コアに接続されるメモリと、パケットを転送するスイッチと、前記スイッチに接続される複数のパケット処理モジュールと、前記スイッチおよび前記ネットワークに接続される複数のネットワーク・インタフェースと、前記パケット処理装置を制御する制御部と、を備え、
    前記各パケット処理モジュールは、ネットワーク処理ユニットを備え、
    前記各ネットワーク処理ユニットは、複数の前記プロセッサ・コアを備え、
    前記パケット処理方法は、
    プログラムのロード要求を受信すると、前記複数のプロセッサ・コアのうち、まだプログラムがロードされていないプロセッサ・コアを選択する第1手順と、
    前記選択されたプロセッサ・コアに前記プログラムをロードする第2手順と、
    前記ロード要求によって指定された属性情報と、前記プログラムがロードされたプロセッサ・コアと、を対応付ける第1の対応付け情報を保持する第3手順と、
    パケットを受信すると、前記受信したパケットに対応する属性情報を特定する第4手順と、
    前記受信したパケットを、前記特定された属性情報に対応するプロセッサ・コアに転送する第5手順と、を含み、
    前記第1の対応付け情報は、第3の対応付け情報、第4の対応付け情報、および第5の対応付け情報を含み、
    前記第3の対応付け情報は、前記制御部によって保持され、前記属性情報と、前記プロセッサ・コアの識別情報と、前記プロセッサ・コアを含む前記ネットワーク処理ユニットの識別情報と、前記ネットワーク処理ユニットを含む前記パケット処理モジュールの識別情報と、を対応付け、
    前記第4の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記プロセッサ・コアの識別情報とを対応付ける情報と同一の情報を含み、
    前記第5の対応付け情報は、前記第3の対応付け情報のうち、少なくとも、前記属性情報と、前記パケット処理モジュールの識別情報とを対応付ける情報と同一の情報を含み、
    前記各ネットワーク処理ユニットは、前記第4の対応付け情報を保持し、
    前記各ネットワーク・インタフェースは、前記第5の対応付け情報を保持し、
    前記第5手順は、
    前記各ネットワーク・インタフェースが、前記ネットワークから前記パケットを受信すると、前記第5の対応付け情報に基づいて、前記特定された属性情報に対応する前記パケット処理モジュールに、前記受信したパケットを転送する第6手順と、
    前記各パケット処理モジュールが、前記パケットを受信すると、前記ネットワーク処理ユニットに、前記受信したパケットを転送する第7手順と、
    前記各ネットワーク処理ユニットが、前記パケットを受信すると、前記第4の対応情報に基づいて、前記特定された属性情報に対応する前記プロセッサ・コアに、前記受信したパケットを転送する第8手順と、を含むことを特徴とするパケット処理方法
JP2009037933A 2009-02-20 2009-02-20 マルチプロセッサによるパケット処理装置およびパケット処理方法 Expired - Fee Related JP5081847B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2009037933A JP5081847B2 (ja) 2009-02-20 2009-02-20 マルチプロセッサによるパケット処理装置およびパケット処理方法
CN2010101178200A CN101847106B (zh) 2009-02-20 2010-02-12 基于多处理器的数据包处理装置以及数据包处理方法
EP20100001536 EP2221721A1 (en) 2009-02-20 2010-02-15 Packet processing by multiple processor cores
US12/708,136 US8199675B2 (en) 2009-02-20 2010-02-18 Packet processing device by multiple processor cores and packet processing method by the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009037933A JP5081847B2 (ja) 2009-02-20 2009-02-20 マルチプロセッサによるパケット処理装置およびパケット処理方法

Publications (2)

Publication Number Publication Date
JP2010193366A JP2010193366A (ja) 2010-09-02
JP5081847B2 true JP5081847B2 (ja) 2012-11-28

Family

ID=42226659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009037933A Expired - Fee Related JP5081847B2 (ja) 2009-02-20 2009-02-20 マルチプロセッサによるパケット処理装置およびパケット処理方法

Country Status (4)

Country Link
US (1) US8199675B2 (ja)
EP (1) EP2221721A1 (ja)
JP (1) JP5081847B2 (ja)
CN (1) CN101847106B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
JP5704567B2 (ja) * 2011-09-13 2015-04-22 株式会社日立製作所 ノード装置、システム、及び、パケット処理方法
US8958293B1 (en) * 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
CN104040966B (zh) * 2012-11-09 2017-04-26 华为技术有限公司 处理报文的方法、转发面装置及网络设备
CN104168199B (zh) * 2013-05-15 2019-07-16 中兴通讯股份有限公司 包处理方法及装置
JP2016010017A (ja) * 2014-06-25 2016-01-18 株式会社日立製作所 通信装置、及び、通信方法
GB2527798A (en) * 2014-07-02 2016-01-06 Ibm Synchronizing operations between regions when a network connection fails
CN105959161B (zh) * 2016-07-08 2019-04-26 中国人民解放军国防科学技术大学 一种高速数据包构造和分发控制方法及设备
CN109271267B (zh) * 2018-08-27 2022-11-22 北京达佳互联信息技术有限公司 路由数据处理方法、装置、电子设备及存储介质
CN112667554A (zh) * 2019-10-16 2021-04-16 中兴通讯股份有限公司 数据包处理方法、装置、通信设备及存储介质
CN113312605A (zh) * 2021-04-15 2021-08-27 北京交通大学 一种数据传输方法、装置、电子设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351775B1 (en) * 1997-05-30 2002-02-26 International Business Machines Corporation Loading balancing across servers in a computer network
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
GB2362064A (en) * 2000-05-04 2001-11-07 Marconi Comm Ltd Switching of software in a communications system
US7283538B2 (en) * 2001-10-12 2007-10-16 Vormetric, Inc. Load balanced scalable network gateway processor architecture
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
JP3809873B2 (ja) * 2002-03-05 2006-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワーク処理手段によるパケット・フローの順序付き動的分散のための方法およびシステム
US7088718B1 (en) * 2002-03-19 2006-08-08 Cisco Technology, Inc. Server load balancing using IP option field approach to identify route to selected server
US7254639B1 (en) * 2002-05-20 2007-08-07 Cisco Technology, Inc. Methods and apparatus for directing packets among a group of processors
US20030235194A1 (en) * 2002-06-04 2003-12-25 Mike Morrison Network processor with multiple multi-threaded packet-type specific engines
US7039914B2 (en) * 2003-03-07 2006-05-02 Cisco Technology, Inc. Message processing in network forwarding engine by tracking order of assigned thread in order group
US20060069828A1 (en) 2004-06-30 2006-03-30 Goldsmith Michael A Sharing a physical device among multiple clients
US7564847B2 (en) * 2004-12-13 2009-07-21 Intel Corporation Flow assignment
US7672236B1 (en) * 2005-12-16 2010-03-02 Nortel Networks Limited Method and architecture for a scalable application and security switch using multi-level load balancing
JP2007288711A (ja) * 2006-04-20 2007-11-01 Nec Corp ゲートウェイ装置、設定コントローラ、ゲートウェイ装置の負荷分散方法及びプログラム
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions

Also Published As

Publication number Publication date
US20100215050A1 (en) 2010-08-26
US8199675B2 (en) 2012-06-12
CN101847106A (zh) 2010-09-29
CN101847106B (zh) 2013-09-18
EP2221721A1 (en) 2010-08-25
JP2010193366A (ja) 2010-09-02

Similar Documents

Publication Publication Date Title
JP5081847B2 (ja) マルチプロセッサによるパケット処理装置およびパケット処理方法
CN111885075B (zh) 容器通信方法、装置、网络设备及存储介质
US10171567B2 (en) Load balancing computer device, system, and method
US20170353394A1 (en) Resource placement templates for virtual networks
KR100992050B1 (ko) 가상화된 네트워크 환경에서 입력/출력 공유를 가지는프로토콜 오프로드 및 다이렉트 입력/출력을 위한 방법 및시스템
JP6129928B2 (ja) アジャイルデータセンタネットワークアーキテクチャ
US8725898B1 (en) Scalable port address translations
US10063470B2 (en) Data center network system based on software-defined network and packet forwarding method, address resolution method, routing controller thereof
CN109937401B (zh) 经由业务旁路进行的负载均衡虚拟机的实时迁移
KR101912073B1 (ko) 가상화된 네트워크와 비-가상화된 네트워크 간 가상화 게이트웨이
CN101442493B (zh) Ip报文分发方法、集群系统和负载均衡器
CN109937400A (zh) 用于虚拟机的实时迁移的流状态传送
US11509581B2 (en) Flow-based local egress in a multisite datacenter
KR20130060291A (ko) 컴퓨터 시스템 및 컴퓨터 시스템에 있어서의 통신 방법
JP6574054B2 (ja) パケット転送
JP6437692B2 (ja) パケット転送
CN115686729A (zh) 容器集群网络系统、数据处理方法、设备及计算机程序产品
CN107547247B (zh) 智能弹性架构中的三层管理网ip地址分配方法和装置
JP2018515053A (ja) パケット転送
KR101794719B1 (ko) Sdn 기반 네트워크 가상화 플랫폼에서의 ip 주소 가상화 방법 및 시스템
CN111294316B (zh) 基于用户态协议栈虚拟路由器的网络隔离方法和装置
US9413654B2 (en) System, relay device, method, and medium
US11347597B2 (en) I/O to unpinned memory supporting memory overcommit and live migration of virtual machines
Koerner et al. Optimizing openflow load-balancing with l2 direct server return
JP6162831B2 (ja) パケット通信システム、sdn制御装置、パケット通信方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110502

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120801

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120821

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120903

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees