IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-172750パケット処理装置、パケット処理方法およびプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172750
(43)【公開日】2024-12-12
(54)【発明の名称】パケット処理装置、パケット処理方法およびプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241205BHJP
   H04L 49/118 20220101ALI20241205BHJP
【FI】
G06F9/50 150C
H04L49/118
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023090681
(22)【出願日】2023-06-01
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】田村 亮子
(72)【発明者】
【氏名】豊田 瞳
(72)【発明者】
【氏名】森 健司郎
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030KA01
5K030LE01
(57)【要約】
【課題】ネットワーク機能の動的な変更を可能にする。
【解決手段】コア10Aは、パケットに対して処理を実行して当該処理に対応する機能を提供する。割り当て部22Aは、機能毎に、機能を提供するコア10Aを割り当てる。付加部22Bは、割り当て部22Aにより割り当てられたコア10Aの識別情報を含むデータ列をパケットに付加する。但し、機能追加の指示を取得するまでは、付加部22Bは、識別情報とは区別される特定の情報を更に含むデータ列をパケットに付加する。機能追加の指示を取得したときは、付加部22Bは、取得した指示の対象である機能を提供することが割り当て部22Aにより割り当てられたコア10Aの識別情報を更に含むデータ列をパケットに付加する。コア10Aは、自身の識別情報を含むデータ列が付加されているパケットに対して、自身での提供が割り当てられた機能に対応する処理を実行する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
パケットを受信する受信部と、
それぞれが前記パケットに対して処理を実行して前記処理に対応する機能を提供する複数の実行部と、
前記機能毎に、前記機能を提供する前記実行部を割り当てる割り当て部と、
前記複数の実行部を個々に識別する識別情報であって前記割り当て部により割り当てられた前記実行部の前記識別情報を含むデータ列を前記パケットに付加する付加部であって、
機能追加の指示を取得するまでは、前記識別情報とは区別される特定の情報を更に含む前記データ列を前記パケットに付加し、
前記機能追加の指示を取得したときは、取得した前記指示の対象である前記機能を提供することが前記割り当て部により割り当てられた前記実行部の前記識別情報を更に含む前記データ列を前記パケットに付加する
前記付加部と、
を備え、
前記実行部は、自身の前記識別情報を含む前記データ列が付加されている前記パケットに対して、自身での提供が割り当てられた前記機能に対応する前記処理を実行する
ことを特徴とするパケット処理装置。
【請求項2】
前記付加部は、
前記機能追加の指示を取得するまでは、前記機能毎に割り当てられた前記実行部についての前記識別情報に前記特定の情報を1つずつ対応付けて該識別情報に続けて配置した該識別情報と該特定の情報との組み合わせを、前記機能に対応する前記処理についての前記パケットに対する実行順序に従った順番で先頭から並べた前記データ列を前記パケットに付加し、
前記機能追加の指示を取得したときは、割り当てられた前記機能の提供のために前記パケットに対して実行する前記処理の実行順序が、取得した前記指示の対象である前記機能に対応する前記処理の直前である前記実行部についての前記識別情報が含まれている前記組み合わせにおける前記特定の情報を、取得した前記指示の対象である前記機能の提供が割り当てられた前記実行部の前記識別情報に置き換えた前記データ列を前記パケットに付加する
ことを特徴とする請求項1に記載のパケット処理装置。
【請求項3】
前記実行部は、
前記パケットに付加されている前記データ列の先頭に配置されている先頭情報の判別を行い、
前記先頭情報が前記特定の情報であると判別した場合には、前記パケットに付加されている前記データ列において前記先頭情報の次に配置されている情報を前記先頭情報として前記判別を改めて行い、
前記先頭情報が自身の前記識別情報であると判別した場合には、前記データ列が付加されている前記パケットに対して、自身に割り当てられた前記機能に対応する前記処理を実行すると共に、先頭の配置位置から自身の前記識別情報の配置位置までの各情報の配置領域を削除した前記データ列が付加された該処理後の前記パケットを他の前記実行部に送付し、
前記先頭情報が、前記特定の情報ではなく、且つ、自身の前記識別情報でもない情報であると判別した場合には、前記データ列が付加されている前記パケットを他の前記実行部に送付する
ことを特徴とする請求項2に記載のパケット処理装置。
【請求項4】
前記機能のうちの1つを提供する実行部として前記複数の実行部のうちの2以上の実行部が割り当てられていたときに、取得した前記指示の対象である前記機能を前記2以上の実行部のうちの1つに割り当てる場合には、前記割り当て部は、前記2以上の実行部のうちの前記1つを、前記機能のうちの前記1つを提供する実行部としての割り当てから除外し、該除外から所定時間の経過後に、取得した前記指示の対象である前記機能を、前記2以上の実行部のうちの前記1つに割り当て、
前記所定時間は、1つの前記パケットに対しての前記複数の実行部による処理が開始されてから完了するまでに要する処理時間の最大値である、
ことを特徴とする請求項1に記載のパケット処理装置。
【請求項5】
前記割り当て部は、取得した前記指示の対象である前記機能を前記2以上の実行部のうちの前記1つに割り当てる場合には、前記機能のうちの前記1つを提供する実行部を、前記2以上の実行部のうちの前記1つ以外の残余の実行部から改めて割り当てることを特徴とする請求項4に記載のパケット処理装置。
【請求項6】
パケットを受信する受信部と、それぞれが前記パケットに対して処理を実行して前記処理に対応する機能を提供する複数の実行部と、コンピュータとを備えるパケット処理装置において、
前記機能毎に、前記機能を提供する前記実行部が割り当てられており、
前記複数の実行部を個々に識別する識別情報であって前記割り当てにより割り当てられた前記実行部の前記識別情報を含むデータ列を前記パケットに付加するときに、
機能追加の指示を取得するまでは、前記識別情報とは区別される特定の情報を更に含む前記データ列を前記パケットに付加し、
前記機能追加の指示を取得したときは、取得した前記指示の対象である前記機能を提供することが前記割り当てにより割り当てられた前記実行部の前記識別情報を更に含む前記データ列を前記パケットに付加する
処理を前記コンピュータが実行し、
前記実行部は、自身の前記識別情報を含む前記データ列が付加されている前記パケットに対して、自身での提供が割り当てられた前記機能に対応する前記処理を実行する
ことを特徴とするパケット処理方法。
【請求項7】
パケットを受信する受信部と、それぞれが前記パケットに対して処理を実行して前記処理に対応する機能を提供する複数の実行部と、コンピュータとを備えるパケット処理装置における前記コンピュータによって実行されるプログラムであって、
前記機能毎に、前記機能を提供する前記実行部を割り当てられており、
前記複数の実行部を個々に識別する識別情報であって前記割り当てにより割り当てられた前記実行部の前記識別情報を含むデータ列を前記パケットに付加するときに、
機能追加の指示を取得するまでは、前記識別情報とは区別される特定の情報を更に含む前記データ列を前記パケットに付加し、
前記機能追加の指示を取得したときは、取得した前記指示の対象である前記機能を提供することが前記割り当てにより割り当てられた前記実行部の前記識別情報を更に含む前記データ列を前記パケットに付加する
処理を前記コンピュータに実行させ、
前記実行部は、自身の前記識別情報を含む前記データ列が付加されている前記パケットに対して、自身での提供が割り当てられた前記機能に対応する前記処理を実行する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケット処理装置、パケット処理方法およびプログラムに関する。
【背景技術】
【0002】
パケットのルーティングに関して、幾つかの技術が知られている(例えば、特許文献1~4参照)。
例えば、バケットに対する受信処理の各機能についての、マルチコアプロセッサが備える各コアへの割り当てを動的に変更することによって、機能の処理負荷を分散する技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2018-136782号公報
【特許文献2】特表2009-503933号公報
【特許文献3】特開2002-354018号公報
【特許文献4】特開2006-203403号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
パケット処理において、フィルタ機能や不正侵入検知機能などといった機能を追加するようなネットワーク機能の動的な変更、すなわち、パケットに対する処理を停止させずに継続しながらネットワーク機能の変更を行えるようにすることが望まれている。
【0005】
1つの側面において、本発明は、ネットワーク機能の動的な変更を可能にすることを目的とする。
【課題を解決するための手段】
【0006】
1つの案では、パケット処理装置が、受信部と、複数の実行部と、割り当て部と、付加部とを備える。受信部はパケットを受信する。複数の実行部は、それぞれがパケットに対して処理を実行して当該処理に対応する機能を提供する。割り当て部は、当該機能毎に、当該機能を提供する実行部を割り当てる。付加部は、複数の実行部を個々に識別する識別情報であって割り当て部により割り当てられた実行部の識別情報を含むデータ列をパケットに付加する。但し、機能追加の指示を取得するまでは、付加部は、識別情報とは区別される特定の情報を更に含む当該データ列をパケットに付加する。一方、機能追加の指示を取得したときは、付加部は、取得した指示の対象である機能を提供することが割り当て部により割り当てられた実行部の識別情報を更に含む当該データ列をパケットに付加する。なお、実行部は、自身の識別情報を含むデータ列が付加されているパケットに対して、自身での提供が割り当てられた機能に対応する処理を実行する。
【発明の効果】
【0007】
1つの側面によれば、マルチコアプロセッサを用いて提供するネットワーク機能の動的な変更が可能になる。
【図面の簡単な説明】
【0008】
図1】パケット処理装置のハードウェア構成例を示した図である。
図2】割り当てテーブルの第1の例を示した図である。
図3】ルーティングテーブルの第1の例を示した図である。
図4】ルーティングヘッダが付加されたパケットの構造の第1の例を示した図である。
図5】各コアでのパケットに対する処理の実行の様子の第1の例を示した図である。
図6】各コアでのパケットに対する処理の実行の様子の第2の例を示した図である。
図7】ルーティングヘッダが付加されたパケットの構造の第2の例を示した図である。
図8】割り当てテーブルの第2の例を示した図である。
図9】ルーティングテーブルの第2の例を示した図である。
図10】割り当てテーブル更新処理の一例の処理内容を示したフローチャートである。
図11】ルーティングテーブル更新処理の一例の処理内容を示したフローチャートである。
図12】ルーティングヘッダ付加処理の一例の処理内容を示したフローチャートである。
図13A】制御部が行う処理の流れを示したシーケンス図(その1)である。
図13B】制御部が行う処理の流れを示したシーケンス図(その2)である。
図14】ルーティングテーブルの更新例とルーティングヘッダの作成例とを示した図である。
図15】ルーティングヘッダに応じたパケット処理の一例の処理内容を示したフローチャートである。
図16】割り当てテーブルとルーティングテーブルとの組み合わせの例を示した図である。
図17A】各コアでのパケットに対する処理の実行の様子の第3の例を示した図である。
図17B】各コアでのパケットに対する処理の実行の様子の第4の例を示した図である。
図17C】各コアでのパケットに対する処理の実行の様子の第5の例を示した図である。
図18】コンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0010】
まず、図1について説明する。図1は、パケット処理装置1のハードウェア構成例を示している。
【0011】
パケット処理装置1は、パケットに対して各種の処理を実行して、当該処理に対応する各種の機能を提供する装置である。
【0012】
図1において、入力I/F2は、不図示の通信ネットワークとパケット処理装置1とを接続するインタフェースを提供する。なお、「I/F」とはInterfaceの略語である。
【0013】
MAC/PHY3は、OSI参照モデルにおけるレイヤ1の物理層とレイヤ2のMAC層との間のインタフェースである。なお、「MAC」及び「PHY」は、それぞれ、Media Access Control及びPhysicalの略語であり、「OSI」はOpen Systems Interconnectionの略語である。
【0014】
なお、以下の説明では、特に断らない限り、OSI参照モデルにおける各レイヤを単に「レイヤ」若しくは「L」と表記することとする。従って、例えば、OSI参照モデルにおけるレイヤ1の物理層及びレイヤ2のMAC層は、それぞれ、「L1」及び「L2」と表記することもある。
【0015】
出力I/F4は、不図示の通信ネットワークとパケット処理装置1とを接続するインタフェースを提供する。
【0016】
入力I/F2が通信ネットワークから受け取ったパケットは、MAC/PHY3を経由してパケット処理装置1に入力される。また、パケット処理装置1から出力されるバケットは、出力I/F4を経由して通信ネットワークに送り出される。
【0017】
パケット処理装置1は、マルチコア10、アクセラレータ20、及び受信部30を備えている。
【0018】
受信部30は、パケット処理装置1に入力されたパケットを受信する。
【0019】
マルチコア10は、コア10Aを複数備えている。コア10Aは、パケットに対して処理を実行して当該処理に対応する機能を提供する実行部の一例である。コア10Aには、それぞれ、マルチコア10が備える他のコア10Aとは異なる個別のコア番号が予め付与されている。このコア番号は、複数の実行部を個々に識別する識別情報の一例である。
【0020】
アクセラレータ20は、マルチコア10による処理の実行を支援して処理能力を向上させるものである。アクセラレータ20は、監視部21、制御部22、割り当てテーブル23、及びルーティングテーブル24を備えている。
【0021】
監視部21は、マルチコア10が備えている複数のコア10Aがそれぞれ実行する処理の状況を個別に監視する。
【0022】
制御部22は、アクセラレータ20の各構成要素の動作制御を行う。制御部22は、例えば、監視部21による監視結果に応じて、割り当てテーブル23及びルーティングテーブル24の更新を行う。制御部22は、機能ブロックとして、割り当て部22Aと付加部22Bとを備えている。
【0023】
割り当て部22Aは、パケット処理装置1が提供する各種の機能毎に、当該機能に対応する処理を実行するコア10Aの割り当てを行う。マルチコア10が備えている複数のコア10Aに各種の機能の提供を割り当てる。
【0024】
付加部22Bは、割り当て部22Aにより各機能の提供が割り当てられたコア10Aのコア番号(識別情報)を含むデータ列を、ヘッダ情報として、当該パケットに付加する。
【0025】
制御部22は、付加部22Bによりヘッダ情報が付加されたパケットをマルチコア10に転送する。マルチコア10が備える複数のコア10Aのそれぞれは、自身のコア番号を含むヘッダ情報が付加されているパケットに対して、自身での提供が割り当て部22Aにより割り当てられた機能に対応する処理を実行する。
【0026】
以上の各構成要素を備えるパケット処理装置1によるパケット処理動作について、更に詳細に説明する。
【0027】
なお、以下の説明では、パケット処理装置1は、入力されるパケットを処理することによって、L2の処理である機能Aと、L3の処理である機能Bと、L4の処理である機能Cとを提供するものとする。また、機能A、機能B、及び機能Cは、いずれも、マルチコア10が備えている複数のコア10Aのうちの1つがパケットに対して処理を実行することによって提供されるものとする。
【0028】
図2は割り当てテーブル23の第1の例を示しており、図3はルーティングテーブル24の第1の例を示している。
【0029】
割り当てテーブル23は、機能毎に、コア番号で特定されるコア10Aに対する機能の割り当てを示したテーブルである。
【0030】
なお、図2に示した割り当てテーブル23の第1の例では、更に、各コア番号に処理時間が対応付けられており、各機能にコア単位時間と閾値とが対応づけられている。処理時間は、コア番号で特定されるコア10Aが、割り当てられた機能に対応する処理に要する時間である。また、コア単位時間は、対応付けられている機能のためにマルチコア10が見かけ上費やす時間であって、当該機能の提供が割り当てられている各コア10Aについての処理時間の平均を、機能の提供が割り当てられている各コア10Aの個数で除算した値である。なお、閾値は、対応付けられている機能に許容されるコア単位時間の上限値として予め定められている値である。
【0031】
なお、処理時間は、監視部21による各コア10Aの監視によって得られる値である。また、コア単位時間は、監視部21により得られた処理時間に基づいて算出される。
【0032】
ルーティングテーブル24は、受信部30により受信されたパケットの到着順を示しており当該パケットの識別を可能にするパケット到着番号と、機能の提供が割り当てられたコア10Aについてのコア番号とを機能毎に対応付けたテーブルである。
【0033】
図2に例示した割り当てテーブル23では、例えば、機能Aの提供がコア「1」とコア「4」とに割り当てられている。このとき、割り当て部22Aは、パケット到着番号順の各パケットに対して処理を実行して機能Aを提供するコア10Aとして、コア「1」とコア「4」とを交互に割り当てる。割り当て部22Aは、この割り当ての状況をルーティングテーブル24に示す。
【0034】
なお、図3に示したルーティングテーブル24の第1の例では、コア番号に括弧付きで数字が付されている。この数字は、コア番号で特定されるコア10Aが、割り当てられた機能に対応する処理に要する時間(前述した処理時間)である。
【0035】
付加部22Bは、ルーティングテーブル24を参照して、パケット到着番号に対応付けられているコア番号を、ルーティングヘッダとして、パケット到着番号により特定されるパケットに付加する。ルーティングヘッダは、ルーティングの情報を有しているヘッダ情報であるデータ列の一例である。
【0036】
図4は、ルーティングヘッダが付加されたパケットの構造の第1の例を示している。
【0037】
図4で表されているように、受信部30により受信されるパケットは、ペイロードの領域と、当該ペイロードに付加されているヘッダの領域とを有している。付加部22Bは、このような構造を有するパケットにルーティングヘッダを付加する。
【0038】
図4の第1の例に示されているルーティングヘッダは、「L2」、「L3」、及び「L4」の各領域が、レイヤ順(パケットに対する処理の実行順)に従った順序で並べられた構造を有している。そして、この各領域に、L2の処理である機能Aの提供、L3の処理である機能Bの提供、及び、L4の処理である機能Cの提供がそれぞれ割り当てられたコア10Aのコア番号が配置される。従って、図3のルーティングテーブル24の第1の例に従うと、例えば、パケット到着番号がN+1であるパケットには、「L2」、「L3」、及び「L4」の各領域に「4」、「5」、及び「6」がそれぞれ配置されたルーティングヘッダが付加される。
【0039】
前述したように、コア10Aは、自身のコア番号を含むヘッダ情報が付加されているパケットに対して、自身での提供が割り当て部22Aにより割り当てられた機能に対応する処理を実行する。
【0040】
なお、以下の説明では、コア番号で特定されるコア10Aを、単にコア番号のみで表記することとする。例えば、コア番号が「1」であるコア10Aを、単に、コア「1」と表記することとする。
【0041】
また、以下の説明では、各パケットを区別する必要がある場合には、パケット到着番号を付して表すこととする。例えば、パケット到着番号がN+1であるパケットをパケット「N+1」と表すこととする。
【0042】
次に、パケット処理装置1において行われる、パケットに対する処理の実行を複数のコア10Aに分散させる動作について説明する。
【0043】
図2に示した割り当てテーブル23の第1の例の状況において、例えば、機能Aについてのコア「1」の処理時間が10μs(マイクロ秒)から30μsに延びたとする。この場合、機能Aについてのコア単位時間αは5μsから10μsに変化して閾値「8」μsを上回る。割り当て部22Aは、この変化を検知すると、機能Aを割り当てる新たなコア10Aを決定するための処理を開始する。
【0044】
この決定の処理において、機能の提供の割り当てがされていない残余のコア10Aがある場合には、割り当て部22Aは、当該残余のコア10Aに機能Aを割り当てる決定を下す。一方、このような残余のコア10Aが無い場合、割り当て部22Aは、まず、機能A以外の残余の機能のうちで、コア単位時間がγ=4[μs]と最も短い機能Cを選択する。そして、選択した機能Cの提供が割り当てられているコア10Aのうちでコア番号が最大であるコア「9」を、機能Aの新たな割り当て対象として決定する。
【0045】
コア「9」を、機能Aの新たな割り当て対象として決定した場合、割り当て部22Aは、割り当てテーブル23における機能Cについての割り当てからコア「9」を削除する。また、このとき、割り当て部22Aは、パケット到着番号順の各パケットに対して処理を実行して機能Cを提供するコア10Aの割り当てからコア「9」を除外する。つまり、割り当て部22Aは、機能Cを提供するコア10Aの割り当てを、コア「3」、コア「6」、及びコア「8」の順による割り当てに変更してルーティングテーブル24に示す。
【0046】
更に、割り当て部22Aは、この削除に応じて、割り当てテーブル23における機能Cのコア単位時間γを、4μsから5.33μsに変更し、その上で機能Aにコア「9」を新たに対応付ける。このとき、機能Aについてのコア「9」の処理時間が例えば15μsであることが監視部21により得られると、割り当て部22Aは、機能Aについてのコア単位時間αを10μsから6.11μsに変更する。
【0047】
次に、パケット処理装置1における、ネットワーク機能の動的な変更の動作について説明する。
【0048】
これまでに説明したパケット処理動作を行うパケット処理装置1に対して、機能を追加する変更を行うことを考える。この場合、パケット処理装置1では、パケットの受け入れを一旦停止し、それまでに受け入れたパケットに対する処理を全て完了させてから、割り当てテーブル23及びルーティングテーブル24の再構築を行う必要があり、相当の時間を要することになる。
【0049】
例えば、前述した機能A、機能B、及び機能Cを提供するパケット処理装置1に、L2.5の処理である追加機能を追加することを想定する。
【0050】
まず、図5について説明する。図5は、各コアでのパケットに対する処理の実行の様子の第1の例を示したものであって、機能追加前の様子を模式的に表したものである。
【0051】
各パケットには、付加部22Bによってルーティングヘッダが付加されているものとする。図5における上側の図は、図3に例示したルーティングテーブル24に従ってルーティングヘッダが付加されたパケットの例を表している。例えば、パケット「N」には、「L2」、「L3」、及び「L4」の各領域に「1」、「2」、及び「3」がそれぞれ配置されたルーティングヘッダが付加されている。また、例えば、パケット「N+3」には、「L2」、「L3」、及び「L4」の各領域に「4」、「2」、及び「9」がそれぞれ配置されたルーティングヘッダが付加されている。また、例えば、パケット「N+6」には、「L2」、「L3」、及び「L4」の各領域に「1」、「2」、及び「8」がそれぞれ配置されたルーティングヘッダが付加されている。
【0052】
図5における下側の図で表されている時点において、パケット「N」、「N+1」、及び「N+2」に対しては、第1番目に行われるL2の処理(機能Aの提供)、及び、第2番目に行われるL3の処理(機能Bの提供)は既に実行済みである。この図では、これらのパケット「N」、「N+1」、及び「N+2」に対する、第3番目に行われるL4の処理(機能Cの提供)が、それぞれコア「3」、「6」、及び「8」によって実行されていることが表されている。例えば、機能Cの提供が割り当てられているコア「3」は、パケット「N」に付加されているルーティングヘッダにおける「L4」の領域にコア番号「3」が配置されていることから、パケット「N」が処理の実行対象であると判断する。また、コア「6」及び「8」も同様に、ルーティングヘッダにおける「L4」の領域にコア番号「6」及び「8」がそれぞれ配置されていることから、それぞれパケット「N+1」及び「N+2」が処理の実行対象であると判断する。
【0053】
また、この下側の図で表されている時点において、パケット「N+3」、「N+4」、及び「N+5」に対しては、第1番目に行われるL2の処理(機能Aの提供)は既に実行済みである。この図では、これらのパケット「N+3」、「N+4」、及び「N+5」に対する、第2番目に行われるL3の処理(機能Bの提供)が、それぞれコア「2」、「5」、及び「7」によって実行されていることが表されている。例えば、機能Bの提供が割り当てられているコア「2」は、パケット「N+3」に付加されているルーティングヘッダにおける「L3」の領域にコア番号「2」が配置されていることから、パケット「N+3」が処理の実行対象であると判断する。また、コア「5」及び「7」も同様に、ルーティングヘッダにおける「L3」の領域にコア番号「5」及び「7」がそれぞれ配置されていることから、それぞれパケット「N+4」及び「N+5」が処理の実行対象であると判断する。
【0054】
また、この図では、パケット「N+6」及び「N+7」に対する、第1番目に行われるL2の処理(機能Aの提供)が、それぞれコア「1」及び「4」によって実行されていることが表されている。例えば、機能Aの提供が割り当てられているコア「1」は、パケット「N+6」に付加されているルーティングヘッダにおける「L2」の領域にコア番号「1」が配置されていることから、パケット「N+6」が処理の実行対象であると判断する。また、コア「4」も同様に、ルーティングヘッダにおける「L2」の領域にコア番号「4」が配置されていることから、パケット「N+7」が処理の実行対象であると判断する。
【0055】
次に、図6について説明する。図6は、各コアでのパケットに対する処理の実行の様子の第2の例を示したものである。この第2の例は、図5に示した第1の例において、追加機能を追加することを想定したものである。
【0056】
前述したように、この追加機能はL2.5の処理であるので、処理の順序は、L2の処理である機能AとL3の処理である機能Bとの間となる。ところが、図4に示したルーティングヘッダが付加されたパケットの構造の第1の例では、ルーティングヘッダにおける「L2」と「L3」の両領域が続けて配置されている。このため、追加機能の提供の割り当てを割り当て部22Aが新たに行ったとしても、新たに割り当てがなされたコア10Aのコア番号を配置する余地がない。このコア番号をルーティングヘッダに配置しなければ、新たに割り当てられたコア10Aは、自身での提供が割り当てられた追加機能に対応する処理を実行するパケットを特定することができない。
【0057】
そこで、パケット処理装置1に対して機能の追加を行うことを前提とする場合には、パケットに付加されるヘッダ情報の構造として、図4に示した第1の例の構造に代えて、図7に示す第2の例の構造を用いるようにする。
【0058】
図7には、ルーティングヘッダが付加されたパケットが2つ示されている。
【0059】
このうち、上側に示されているパケットに付加されているルーティングヘッダでは、機能追加の指示をパケット処理装置1が取得する前の様子が表されている。このルーティングヘッダには、レイヤ毎の「正」の領域と「補」の領域との組み合わせが、レイヤ順に並べられている。
【0060】
この組み合わせのうちの「正」の領域には、各レイヤの処理である機能の提供が割り当てられたコア10Aのコア番号が、図4に示した第1の例と同様に配置される。
【0061】
一方、この組み合わせのうちの「補」の領域には、機能追加の指示の取得前においては、コア10Aのコア番号とは区別される特定の情報が配置される。つまり、図7における上側のルーティングヘッダでは、コア番号と当該特定の情報との組み合わせ、すなわち、機能の提供が割り当てられたコア10Aのコア番号に当該特定の情報を1つずつ対応付けて当該コア番号に続けて配置した組み合わせが並べられている。
【0062】
このように、図7の上側に示されているパケットに付加されているルーティングヘッダでは、上述の組み合わせが、レイヤ順に従った順番で、すなわち、当該機能に対応する処理についてのパケットに対する実行順序に従った順番で、先頭から並べられている。
【0063】
なお、本実施形態では、ルーティングヘッダに並べられる各組み合わせにおける特定の情報を、コア番号としては使用されていない数字である「0」(ゼロ)とする。
【0064】
一方、下側に示されているパケットに付加されているルーティングヘッダには、「L2.5」の処理である追加機能を追加する指示をパケット処理装置1が取得した後の様子が表されている。このルーティングヘッダでは、「L2」の処理(機能Aの提供)を実行するコア10Aのコア番号と前述の特定の情報との組み合わせにおける当該特定の情報が変更されて、追加機能の提供が割り当てられたコア10Aのコア番号が配置される。このコア番号のルーティングヘッダ内での配置位置は、「L2」の処理(機能A)と「L3」の処理(機能B)とをそれぞれ実行するコア10Aのコア番号の配置位置の間である。従って、機能に対応する処理についてのパケットに対する実行順序に従った順番で各コア10Aのコア番号が並べられることになる。
【0065】
なお、図7に示されているルーティングヘッダの末尾には、「end」領域が設けられている。「end」領域には他の領域に配置されるデータに対してユニークであって識別可能なデータが配置される。
【0066】
前述したように、コア10Aは、自身のコア番号を含むルーティングヘッダが付加されているパケットに対して、自身での提供が割り当てられた機能に対応する処理を実行する。このことは、図7に示した構造を有するルーティングヘッダが付加されたパケットに対しても同様である。但し、図7に示した構造を有するルーティングヘッダを使用する場合には、コア10Aは、ルーティングヘッダの先頭に配置されている情報である先頭情報の判別を行い、この判別の結果に応じた処理を行うようにする。
【0067】
具体的には、先頭情報が前述した特定の情報であると判別した場合には、コア10Aは、当該先頭情報に続く次の位置に配置されている情報を新たな先頭情報として、先頭情報の判別を改めて行う。
【0068】
また、先頭情報がコア10A自身のコア番号(自身の識別情報)であると判別した場合には、コア10Aは、ルーティングヘッダが付加されているパケットに対して、自身に割り当てられた機能に対応する処理を実行する。コア10Aは、更に、ルーティングヘッダにおける先頭の配置位置からコア10A自身のコア番号配置位置までの各情報の配置領域を削除し、当該削除後のルーティングヘッダを付加した当該処理後のパケットを他のコア10Aに送付する。
【0069】
一方、先頭情報が、前述した特定の情報ではなく、且つ、コア10A自身のコア番号でもない情報であると判別した場合には、コア10Aは、パケットに対する処理は行わず、ルーティングヘッダが付加されている当該パケットをそのまま他のコア10Aに送付する。なお、先頭情報が、前述した特定の情報ではなく、且つ、コア10A自身のコア番号でもない情報である場合とは、マルチコア10のうちの他のコア10Aコア番号が先頭情報とされている場合である。
【0070】
複数のコア10Aのそれぞれが、上述したようにしてパケットの処理と転送とを行うようにすることで、パケット処理装置1において、パケットに対する処理を停止させずに継続しながら機能を追加する変更を行うことが可能になる。
【0071】
次に、図7に示した第2の例の構造を有するパケットを使用する場合における、割り当てテーブル23及びルーティングテーブル24の構造について説明する。図8は割り当てテーブル23の第2の例を示しており、図9はルーティングテーブル24の第2の例を示している。
【0072】
図8に示した第2の例の割り当てテーブル23は、図2に示した第1の例と同様に、機能毎に、コア番号で特定されるコア10Aに対する機能の割り当てを示したテーブルであるが、第2の例では、各機能に続けて「補助」の行が更に設けられている。この行では、追加機能の提供が割り当てられたコア10Aのコア番号が示される。
【0073】
なお、図8に示した割り当てテーブル23の第2の例では、図2に示した第1の例から、各コア番号に対応付けられていた処理時間と、各機能に対応付けられていたコア単位時間及び閾値とを省略している。
【0074】
図9に示した第2の例のルーティングテーブル24は、図2に示した第1の例と同様に、パケット到着番号と、機能の提供に割り当てられたコア10Aについてのコア番号とを機能毎に対応付けたテーブルである。但し、第2の例では、各機能に続けて「補助」のフィールドが更に設けられている。この「補助」のフィールドには、機能追加の指示の取得前においては、コア10Aのコア番号とは区別される、前述した特定の情報(例えば「0」)が配置される。ここで、例えば、「L2.5」の処理である追加機能の追加が指示された場合には、「L2」の処理(機能A)を実行するコア10Aのコア番号に続く「補助」のフィールドの情報が、追加機能の提供が割り当てられたコア10Aのコア番号に置き換えられる。
【0075】
付加部22Bが、このルーティングテーブル24を参照して、パケット到着番号に対応付けられているコア番号を、ルーティングヘッダとして、パケット到着番号により特定されるパケットに付加すると、図7に示した第2の例の構造のパケットが得られる。
【0076】
次に、パケット処理装置1において、機能を追加する変更を行うときに制御部22により行われる制御処理である、割り当てテーブル更新処理、ルーティングテーブル更新処理、及び、ルーティングヘッダ付加処理について説明する。
【0077】
図10は、割り当てテーブル更新処理の一例の処理内容を示したフローチャートである。
【0078】
制御部22は、まず、更新中フラグを「0」に設定する(S101)。更新中フラグは、割り当てテーブル23が更新作業中かどうかを示すフラグであり、作業中の場合には「1」が設定され、作業中ではない場合には「0」が設定される。
【0079】
次に、制御部22は、更新中フラグが「0」に設定されているかどうかを判定する(S102)。
【0080】
更新中フラグが「0」に設定されている場合(S102がYES)、制御部22は、パケット処理装置1に機能を追加する指示を、例えばパケット処理装置1の使用者から取得したかどうかを判定する(S103)。ここで、機能を追加する指示が取得されていない場合(S103がNO)、S102に処理を戻して上述した処理を改めて行う。
【0081】
一方、機能を追加する指示が取得された場合(S103がYES)、制御部22は、割り当てテーブル23において、コア単位時間が最も短い機能に複数割り当てられているコア10Aのコア番号のうちで最小の番号を削除する(S104)。このときにコア番号が削除されるコア10Aを、以下の説明では「コアX」と称することとする。このコアXに対して、指示された追加機能の提供が割り当てられる。
【0082】
なお、機能の提供が割り当てられていないコア10Aがマルチコア10に存在する場合には、コア番号の削除は行わずに、当該コア10AをコアXとしてもよい。
【0083】
この後、制御部22は、後述するルーティングテーブル更新処理へ、割り当てテーブル23の変更発生を通知すると共に(S105)、更新中フラグを「1」に設定し(S106)、その上でS102に処理を戻して上述した処理を改めて行う。
【0084】
更新中フラグが「1」に設定されている場合(S102がNO)、制御部22は、この処理時点での不図示のタイマーの計時が、予め定めておいた所定時間である経過時間閾値Tを経過したかどうかを判定する(S107)。ここで、タイマーの計時が経過時間閾値Tを経過していない場合(S107がNO)、S102に処理を戻して上述した処理を改めて行う。
【0085】
タイマーは、ルーティングヘッダが付加されたパケットのマルチコア10への転送からの経過時間を計時するものであって、後述するルーティングヘッダ付加処理において、ある1つのパケットがマルチコア10に転送されたときに計時が開始される。また、経過時間閾値Tには、マルチコア10内でのパケットの滞留時間の最大値、すなわち、機能A、機能B、及び機能Cにそれぞれ対応するL2、L3、及びL4のそれぞれの処理に要する最大の処理時間の総和が設定される。つまり、このS107の判定処理により、当該1つのパケットがマルチコア10に入力されてからの経過時間が、マルチコア10によるパケットに対する処理が開始されてから完了するまでに要する処理時間の最大値よりも長くなったかどうかが判定される。
【0086】
タイマーの計時が経過時間閾値Tを経過した場合(S107がYES)、制御部22は、更新中フラグを「0」に設定すると共に(S108)、タイマーの計時をクリアする(S109)。
【0087】
その後、制御部22は、追加機能を提供する処理を実行させる機能プログラムをコアXにロードすると共に(S110)、割り当てテーブル23を更新して、追加機能の提供にコアXが割り当てられたことを割り当てテーブル23に示す(S111)。
【0088】
この後、制御部22は、後述するルーティングテーブル更新処理へ、割り当てテーブル23の変更発生を通知し(S112)、その後はS102に処理を戻して上述した処理を改めて行う。
【0089】
以上までの処理が割り当てテーブル更新処理である。制御部22は、テーブル更新処理を実行することによって、割り当て部22Aとしての機能を提供する。
【0090】
図11は、ルーティングテーブル更新処理の一例の処理内容を示したフローチャートである。
【0091】
制御部22は、まず、前述した図10のテーブル更新処理におけるS105若しくはS112の処理によって、割り当てテーブル23の変更発生が通知されたかどうかを判定する(S121)。この変更発生が通知されていない場合(S121がNO)、制御部22は、変更発生が通知されるまでS121の処理を繰り返す。
【0092】
割り当てテーブル23の変更発生が通知された場合(S121がYES)、制御部22は、割り当てテーブル23を参照し(S122)、変更された割り当てテーブル23の情報に従ってルーティングテーブル24を更新する(S123)。
【0093】
この後、制御部22は、ルーティングテーブル24における先頭(第1行目)のレコードのパケット到着番号を取得して変数Mに代入する(S124)。この変数Mに代入されるパケット到着番号で特定されるパケットは、更新後のルーティングテーブル24の情報が反映される最初のパケットである。
【0094】
その後、制御部22は、S121に処理を戻して、割り当てテーブル23の変更発生が通知されるまでS121の処理を繰り返す。
【0095】
以上までの処理がルーティングテーブル更新処理である。
【0096】
図12は、ルーティングヘッダ付加処理の一例の処理内容を示したフローチャートである。制御部22は、前述したルーティングテーブル更新処理と、このルーティングヘッダ付加処理とを実行することによって、付加部22Bとしての機能を提供する。
【0097】
制御部22は、まず、受信部30が新たなパケットを受信したかどうかを判定する(S141)。新たなパケットが受信されていない場合(S141がNO)、制御部22は、新たなパケットが受信されるまでS141の処理を繰り返す。
【0098】
新たなパケットが受信された場合(S141がYES)、制御部22は、ルーティングテーブル24を参照し(S142)、ルーティングテーブル24の情報に従って、当該新たなパケットに付加するルーティングヘッダのヘッダデータを作成する(S143)。
【0099】
その後、制御部22は、作成したルーティングヘッダを当該新たなパケットに付加し(S144)、ルーティングヘッダが付加されたパケットをマルチコア10に転送する(S145)。また、制御部22は、ルーティングヘッダのヘッダデータの作成に用いたレコードをルーティングテーブル24から削除する(S146)。
【0100】
その後、制御部22は、この処理時点において、更新中フラグが「1」に設定されており、且つ、マルチコア10に転送したパケットについてのパケット到着番号が変数Mから1を減じた番号よりも後のものかどうかを判定する(S147)。
【0101】
変数Mには、前述した図11のルーティングテーブル更新処理におけるS124の処理により、更新後のルーティングテーブル24の情報が反映される最初のパケットについてのパケット到着番号が代入されている。従って、変数Mから1を減じた番号がパケット到着番号であるパケットとは、更新前のルーティングテーブル24の情報によりルーティングヘッダが作成された最後のパケットである。
【0102】
S147の判定結果がYESの場合、制御部22は、前述したタイマーの計時を開始する指示を行い(S148)、その後は、S141に処理を戻して、新たなパケットが受信されるまでS141の処理を繰り返す。一方、S147の判定結果がNOの場合、制御部22は、S148の処理を行わずにS141に処理を戻して、新たなパケットが受信されるまでS141の処理を繰り返す。
【0103】
以上までの処理がルーティングヘッダ付加処理である。
【0104】
制御部22は、以上までに説明した割り当てテーブル更新処理、ルーティングテーブル更新処理、及びルーティングヘッダ付加処理を並行して実行する。次に、これらの処理の相互関係について説明する。
【0105】
図13A及び図13Bは、制御部22が行う処理の流れを示したシーケンス図である。また、図14は、ルーティングテーブル24の更新例とルーティングヘッダの作成例とを示した図である。
【0106】
なお、図13A及び図13Bでは、パケット到着番号の表示のうちの“N+”の表示を省略している。従って、例えば、パケット「N+1」は“パケット「1」”と表されている。但し、パケット「N」は“パケット「0」”と表されている。
【0107】
図13A及び図13Bは、機能追加の指示をパケット処理装置1が取得する前からのシーケンスが表されており、パケット「N+7」の受信後であってパケット「N+8」の受信前に機能追加の指示が取得された場合のシーケンスが表されている。
【0108】
以下の図13A及び図13Bの説明では、図10の割り当てテーブル更新処理、図11のルーティングテーブル更新処理、及び図12のルーティングヘッダ付加処理を、それぞれ、「図10の処理」、「図11の処理」、及び「図12の処理」と称することとする。
【0109】
図13A及び図13Bには、パケット「N」が受信部30により受信された時点からのシーケンスが表されている。
【0110】
図13Aにおいて、制御部22は、パケット「N」の受信を認識すると図12の処理を進め(S141がYES)、図14における[状態1]のルーティングテーブル24を参照する(S142)。
【0111】
[状態1]のルーティングテーブル24は、図9に例示したものと同一ものものであって、機能を追加する指示をパケット処理装置1が取得する前の状態におけるデータ例を表している。但し、パケット「N+3」以降の各パケットについてのレコードは表示を略している。
【0112】
制御部22は、この[状態1]のルーティングテーブル24におけるパケット「N」についてのレコードに示されている情報に従って作成したルーティングヘッダを付加したパケットをマルチコア10に転送する(S145)。図14における右側に示されている、[状態1]のパケットが、このときに転送される、ルーティングヘッダが付加されたパケットである。
【0113】
この後、制御部22は、パケット「N」についてのレコードを[状態1]のルーティングテーブル24から削除する(S146)。
【0114】
この後のパケット「N+1」からパケット「N+6」の各パケットの受信に応じた制御部22の処理シーケンスは上述したパケット「N」の受信時のシーケンスと同様である。なお、図13Aでは、パケット「N+1」からパケット「N+6」の各パケットの受信に応じた制御部22の処理シーケンスの表示を省略している。
【0115】
また、この後のパケット「N+7」の受信に応じた制御部22の処理シーケンスも上述したパケット「N」の受信時のシーケンスと同様である。但し、このときに、機能追加の指示がパケット処理装置1により取得される。
【0116】
制御部22は、機能追加の指示の取得を認識すると図10の処理を進め(S103がYES)、割り当てテーブル23から、コアXについてのコア番号を削除する(S104)。なお、ここでは、コア「3」がコアXとして選ばれたものとする。
【0117】
その後、制御部22は、割り当てテーブル23の変更発生を図11の処理に通知する(S105)。制御部22は、この変更発生の通知を認識すると図11の処理を進め(S121がYES)、割り当てテーブル23を参照し(S122)、変更された割り当てテーブル23の情報に従ってルーティングテーブル24を更新する(S123)。
【0118】
図14における[状態2]のルーティングテーブル24は、この更新の様子を表したものであって、パケット「N+8」以降の各パケットについて、L4処理である機能Cの提供の割り当てが更新される様子を表している。このときには、コア「3」が機能Cの提供の割り当てから外されたので、各パケットに対する機能Cの提供を、残りのコア「6」、コア「8」、及びコア「9」のいずれかにより割り当てる変更が行われる。
【0119】
この後、制御部22は、ルーティングテーブル24における先頭のレコードのパケット到着番号である「N+8」を取得して変数Mに代入する(S124)。
【0120】
この後、パケット「N+8」が受信部30により受信される。制御部22は、パケット「N+8」の受信を認識すると図12の処理を進め(S141がYES)、図14における[状態2]の更新後のルーティングテーブル24を参照する(S142)。
【0121】
制御部22は、この[状態2]の更新後のルーティングテーブル24におけるパケット「N+8」についてのレコードに示されている情報に従って作成したルーティングヘッダを付加したパケットをマルチコア10に転送する(S145)。図14における右側に示されている、[状態2]のパケットが、このときに転送される、ルーティングヘッダが付加されたパケットである。
【0122】
この後、制御部22は、パケット「N+8」についてのレコードを[状態2]のルーティングテーブル24から削除する(S146)。
【0123】
なお、このとき、更新中フラグは「1」に設定されている(図10のS106)。また、このときの変数Mの値は「N+8」であるから(図11のS124)、変数Mから1を減じた番号は「N+7」である。これに対し、制御部22が直近にマルチコア10に転送したパケットのパケット到着番号は「N+8」であり、この番号は「N+7」よりも後である。従って、制御部22は、タイマーの計時の開始の指示を行う(S147がYES、S148)。
【0124】
この後、図13Bにシーケンスが進む。パケット「N+9」が受信部30により受信され、制御部22は、パケット「N+9」の受信を認識すると図12の処理を進め(S141がYES)、図14における[状態2]の更新後のルーティングテーブル24を参照する(S142)。
【0125】
制御部22は、この[状態2]の更新後のルーティングテーブル24におけるパケット「N+9」についてのレコードに示されている情報に従って作成したルーティングヘッダを付加したパケットをマルチコア10に転送する(S145)。この後、制御部22は、パケット「N+9」についてのレコードを[状態2]のルーティングテーブル24から削除する(S146)。
【0126】
この後のパケット「N+10」からパケット「N+12」の各パケットの受信に応じた制御部22の処理シーケンスは、上述したパケット「N+9」の受信時のシーケンスと同様である。なお、図13Bでは、パケット「N+9」からパケット「N+12」の各パケットの受信に応じた制御部22の処理シーケンスの表示を省略している。
【0127】
この後のパケット「N+13」の受信に応じた制御部22の処理シーケンスも、上述したパケット「N+9」の受信時のシーケンスと同様である。但し、このパケット「N+13」の受信に応じた制御部22の処理が完了した時点で、タイマーの計時が前述した経過時間閾値Tを経過する。
【0128】
制御部22は、タイマーの計時が経過時間閾値Tを経過したことを認識すると図10の処理を進め(S107がYES)、タイマーの計時をクリアする(S109)。続いて、制御部22は、追加機能を提供する処理を実行させる機能プログラムをコア「3」にロードすると共に(S110)、割り当てテーブル23を更新して、追加機能の提供にコア「3」が割り当てられたことを割り当てテーブル23に示す(S111)。この後、制御部22は、割り当てテーブル23の変更発生を図11の処理に通知する(S112)。
【0129】
制御部22は、この変更発生の通知を認識すると図11の処理を進め(S121がYES)、割り当てテーブル23を参照し(S122)、変更された割り当てテーブル23の情報に従ってルーティングテーブル24を更新する(S123)。
【0130】
図14における[状態3]のルーティングテーブル24は、この更新の様子を表したものである。この[状態3]のルーティングテーブル24では、「補助」のフィールドを利用して、パケット「N+14」以降の各パケットについて、L2.5処理である追加機能によるコア「3」による提供が追加された様子が表されている。
【0131】
この後、パケット「N+14」が受信部30により受信される。制御部22は、パケット「N+14」の受信を認識すると図12の処理を進め(S141がYES)、図14における[状態3]の更新後のルーティングテーブル24を参照する(S142)。
【0132】
制御部22は、この[状態3]の更新後のルーティングテーブル24におけるパケット「N+14」についてのレコードに示されている情報に従って作成したルーティングヘッダを付加したパケットをマルチコア10に転送する(S145)。図14における右側に示されている、[状態3]のパケットが、このときに転送される、ルーティングヘッダが付加されたパケットである。
【0133】
制御部22では、以上のような相互関係の下で、割り当てテーブル更新処理、ルーティングテーブル更新処理、及びルーティングヘッダ付加処理が並行して実行される。
【0134】
次に、マルチコア10が備える複数のコア10Aのそれぞれにおいて実行される、ルーティングヘッダに応じたパケット処理について説明する。図15は、ルーティングヘッダに応じたパケット処理の一例の処理内容を示したフローチャートである。
【0135】
コア10Aは、まず、制御部22によってルーティングヘッダが付加されているパケットを受信したかどうかを判定する(S201)。パケットが受信されていない場合(S201がNO)、制御部22は、パケットが受信されるまでS201の処理を繰り返す。
【0136】
パケットが受信された場合(S201がYES)、コア10Aは、パケットに付加されていたルーティングヘッダから先頭情報を読み出す(S202)。そして、コア10Aは、読み出した先頭情報が「0」以外であるかどうか、すなわち、当該先頭情報が複数のコア10Aのいずれかについてのコア番号であるかどうかを判定する(S203)。
【0137】
先頭情報が「0」である場合(S203がNO)、コア10Aは、ルーティングヘッダにおいて当該先頭情報の次に配置されている情報を新たな先頭情報として読み出す(S204)。そして、コア10Aは、当該新たな先頭情報が自身のコア番号であるかどうか、すなわち、受信したパケットの宛先として自身が設定されていたかどうかを判定する(S205)。
【0138】
一方、先頭情報が「0」ではない場合(S203がYES)、コア10Aは、当該先頭情報が自身のコア番号であるかどうか、すなわち、受信したパケットの宛先として自身が設定されていたかどうかを判定する(S205)。
【0139】
先頭情報が自身のコア番号ではない場合(S205がNO)、コア10Aは、ルーティングヘッダが付加されているパケットを、マルチコア10の他のコア10Aに転送する(S206)。
【0140】
一方、先頭情報が自身のコア番号である場合(S205がYES)、コア10Aは、ルーティングヘッダの先頭から自身のコア番号の配置位置までの領域を削除する(S207)。更に、コア10Aは、パケットに対し、自身での提供が割り当てられた機能に対応する処理(パケット処理)を実行する(S208)。
【0141】
その後、コア10Aは、当該削除後のルーティングヘッダが付加されている、パケット処理後のパケットを、マルチコア10のうちの他のコア10Aに転送する(S209)。
【0142】
上述したS206若しくはS209の処理の完了後、コア10Aは、S201に処理を戻して、新たなパケットが受信されるまでS201の処理を繰り返す。
【0143】
各コア10Aでは、図15に示した上述の処理が行われる。
【0144】
次に、各パケットが各コア10Aにおいて処理される流れについて説明する。
【0145】
図16は、割り当てテーブル23とルーティングテーブル24との組み合わせの例を示したものである。これらの図に示されている[A]、[B]、及び[C]の各組み合わせは、割り当てテーブル23と、当該割り当てテーブル23の情報に従って制御部22により作成されるルーティングテーブル24とを組み合わせたものである。このうち、[A]の組み合わせは、図13A及び図13Bに示したシーケンス図のうちの[状態1]におけるものである。また、[B]の組み合わせは、当該シーケンス図のうちの[状態2]におけるテーブル更新の様子を表している。更に、[C]の組み合わせは、当該シーケンス図のうちの[状態3]におけるテーブル更新の様子を表している。
【0146】
また、図17A図17B、及び図17Cは、各コア10Aでのパケットに対する処理の実行の様子の第3、第4、及び第5の例をそれぞれ示したものである。図17A図17B、及び図17Cに示されている各例は、それぞれ、図16に示した割り当てテーブル23とルーティングテーブル24との3組の組み合わせに基づいて行われるパケットのコアルーティングの様子を表している。
【0147】
図17Aは、ルーティングヘッダが付加されたパケット「N+7」がマルチコア10に転送された時点において、「N」から「N+6」までの各パケットが、図16の[A]のルーティングテーブル24に従って各コア10Aに転送された様子を表している。
【0148】
各コア10Aは、図15に示した前述の処理を実行する。
【0149】
例えば、「L2」の処理である機能Aの提供が割り当てられているコア「1」は、パケット「N+6」を受信すると(S201がYES)、パケット「N+6」に付加されているルーティングヘッダの先頭情報を調べる。この先頭情報は「1」であるので(S203がYES、S205がYES)、コア「1」は、ルーティングヘッダの先頭からコア番号「1」の配置位置までの領域を削除する(S207)。また、コア「1」は、パケット「N+6」に対して、機能Aに対応する「L2」の処理を実行する(S208)。その後、コア「1」は、当該削除後のルーティングヘッダが付加されている、「L2」の処理後のパケットを、他のコア10Aに転送する(S209)。
【0150】
また、例えば、「L3」の処理である機能Bの提供が割り当てられているコア「2」は、パケット「N+3」を受信すると(S201がYES)、パケット「N+3」に付加されているルーティングヘッダの先頭情報を調べる。このときの先頭情報は「0」であるので(S203がNO)、コア「2」は、ルーティングヘッダにおいて当該先頭情報の次に配置されている情報を新たな先頭情報として読み出す(S204)。当該新たな先頭情報が「2」であるので(S205がYES)、コア「2」は、ルーティングヘッダの先頭からコア番号「2」の配置位置までの領域を削除する(S207)。また、コア「2」は、パケット「N+3」に対して、機能Bに対応する「L3」の処理を実行する(S208)。その後、コア「2」は、当該削除後のルーティングヘッダが付加されている、「L3」の処理後のパケットを、他のコア10Aに転送する(S209)。
【0151】
また、例えば、「L4」の処理である機能Cの提供が割り当てられているコア「3」は、パケット「N」を受信すると(S201がYES)、パケット「N」に付加されているルーティングヘッダの先頭情報を調べる。このときの先頭情報は「0」であるので(S203がNO)、コア「3」は、ルーティングヘッダにおいて当該先頭情報の次に配置されている情報を新たな先頭情報として読み出す(S204)。当該新たな先頭情報が「3」であるので(S205がYES)、コア「3」は、ルーティングヘッダの先頭からコア番号「3」の配置位置までの領域を削除する(S207)。また、コア「3」は、パケット「N」に対して、機能Cに対応する「L4」の処理を実行する(S208)。その後、コア「3」は、当該削除後のルーティングヘッダが付加されている、「L4」の処理後のパケットを、他のコア10Aに転送する(S209)。
【0152】
図17Bにおいて、[1]の図は、図17Aと同一時点の様子を表している。一方、[2]の図は、[1]の図の時点から経過時間閾値Tが経過して、マルチコア10での処理が完了したパケット「N+7」がマルチコア10から出力された時点の様子を表している。
【0153】
前述したように、図16の[B]のルーティングテーブル24は、図13A及び図13Bに示したシーケンス図における[状態2]の更新後のものである。従って、パケット「N+8」以降のパケットには、この[B]のルーティングテーブル24の情報に従ったルーティングヘッダが付加される。図17Bの[2]の図は、「N+8」から「N+12」までの各パケットが、図16の[B]のルーティングテーブル24に従って各コア10Aに転送された様子を表している。
【0154】
図17Bの[2]の図の時点では、既に、図16の[B]のルーティングテーブル24に従ったルーティングヘッダが各パケットに付加されているので、L4処理である機能Cの提供をコア「3」が行うパケットは存在しない。このときに、コア「3」に対して、L2.5処理である追加機能を提供する処理を実行させる機能プログラムのロードが制御部22により行われる。図17Bの[3]の図は、当該機能プログラムがコア「3」に対してロードされた状態を表している。このとき、図16の[B]のルーティングテーブル24に従ったルーティングヘッダが付加されているパケット「N+13」は、コア「4」において処理されている。
【0155】
コア「3」に対する機能プログラムのロードが完了すると、図13A及び図13Bに示したシーケンス図における[状態3]の更新が行われる。前述したように、図16の[C]のルーティングテーブル24は、この[状態3]の更新後のものである。従って、「N+14」以降のパケットには、図16の[C]のルーティングテーブル24の情報に従って作成されたルーティングヘッダが付加される。
【0156】
図17Cにおいて、[1]の図は、図16の[C]のルーティングテーブル24の情報に従って作成されたルーティングヘッダが付加されたパケット「N+14」がマルチコア10に転送された時点の様子を表している。
【0157】
このとき、図15の処理を実行しているコア「4」は、パケット「N+13」を受信すると(S201がYES)、パケット「N+13」に付加されているルーティングヘッダの先頭情報を調べる。この先頭情報は「4」であるので(S203がYES、S205がYES)、コア「4」は、ルーティングヘッダの先頭からコア番号「4」の配置位置までの領域を削除する(S207)。また、コア「4」は、パケット「N+13」に対して、機能Aに対応する「L2」の処理を実行する(S208)。その後、コア「4」は、当該削除後のルーティングヘッダが付加されている、「L2」の処理後のパケットを、他のコア10Aに転送する(S209)。
【0158】
図17Cにおいて、[2]の図は、[1]の図におけるパケット「N+13」がコア「3」に転送された時点の様子を表している。この時点において、「N+14」はコア「1」に転送されている。
【0159】
図17Cの[2]の図の時点において、コア「3」には前述した機能プログラムがロード済みであり、L2.5処理である追加機能を提供する処理の実行は可能である。しかしながら、コア「3」は、パケット「N+13」を受信すると(S201がYES)、パケット「N+13」に付加されているルーティングヘッダの先頭情報を調べる。このときの先頭情報は「0」であるので(S203がNO)、コア「3」は、ルーティングヘッダにおいて当該先頭情報の次に配置されている情報を新たな先頭情報として読み出す(S204)。当該新たな先頭情報が「5」であるので(S205がNO)、パケット「N+13」を他のコア10Aに転送する(S206)。
【0160】
以上のように、パケット「N+13」に対しては、機能Aに対応する「L2」の処理がコア「4」により実行されるが、追加機能に対応する「L2.5」の処理は実行されない。
【0161】
また、図17Cにおいて、[3]の図は、[2]の図におけるパケット「N+14」がコア「3」に転送された時点の様子を表している。この時点において、「N+13」はコア「5」に転送されている。
【0162】
このとき、コア「3」は、パケット「N+14」を受信すると(S201がYES)、パケット「N+14」に付加されているルーティングヘッダの先頭情報を調べる。このときの先頭情報は「3」であるので(S203がYES、S205がYES)、コア「3」は、ルーティングヘッダの先頭からコア番号「3」の配置位置までの領域を削除する(S207)。また、コア「3」は、パケット「N+14」に対して、追加機能に対応する「L2.5」の処理を実行する(S208)。その後、コア「3」は、当該削除後のルーティングヘッダが付加されている、「L2.5」の処理後のパケットを、他のコア10Aに転送する(S209)。
【0163】
以上のように、パケット「N+14」に対しては、機能Aに対応する「L2」の処理がコア「4」により実行され、更に、追加機能に対応する「L2.5」の処理がコア「3」により実行される。
【0164】
以上のように、図1のパケット処理装置1では、パケットに対する処理を停止させずに継続しながらネットワーク機能を追加する変更を行うことが可能である。
【0165】
なお、図1のパケット処理装置1におけるアクセラレータ20を、コンピュータとソフトウェアとの組合せにより構成するようにしてもよい。
【0166】
図18はコンピュータ40のハードウェア構成例を示している。
【0167】
コンピュータ40は、構成要素として、例えば、プロセッサ41、メモリ42、記憶装置43、読取装置44、通信インタフェース46、及び入出力インタフェース47の各ハードウェアを備えている。これらの構成要素はバス48を介して接続されており、構成要素間で相互にデータの授受を行える。
【0168】
プロセッサ41は、メモリ42を利用して、例えば、図10図11、及び図12にそれぞれ示した各種の処理の手順を記述したプログラムを実行する。
【0169】
メモリ42は、例えば半導体メモリであり、RAM領域及びROM領域を含む。なお、RAMは、Random Access Memoryの略称である。また、ROMは、Read Only Memoryの略称である。コンピュータ40を用いてパケット処理装置1を構成する場合には、例えばメモリ42が、割り当てテーブル23及びルーティングテーブル24を保持する。
【0170】
記憶装置43は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、または外部記憶装置である。
【0171】
読取装置44は、プロセッサ41の指示に従って着脱可能記憶媒体45にアクセスする。着脱可能記憶媒体45は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD-ROM、DVD等)などにより実現される。なお、USBは、Universal Serial Busの略称である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
【0172】
通信インタフェース46は、例えば、プロセッサ41の指示に従って各種のデータを送受信する。コンピュータ40を用いてパケット処理装置1を構成する場合には、通信インタフェース46が受信部30の機能を提供する。
【0173】
入出力インタフェース47は、例えばキーボードやマウス装置等の入力デバイスやディスプレイ装置等の出力デバイスとのインタフェースを提供する。
【0174】
このコンピュータ40のプロセッサ41により実行されるプログラムは、例えば、下記の形態で提供される。
【0175】
(1)記憶装置43に予めインストールされている。
(2)着脱可能記憶媒体45により提供される。
(3)プログラムサーバなどから通信網を介して通信インタフェース46へ提供される。
【0176】
なお、コンピュータ40のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の機能部の一部または全部の機能がFPGA及びSoCなどによるハードウェアとして実装されてもよい。なお、FPGAは、Field Programmable Gate Arrayの略称である。SoCは、System-on-a-chipの略称である。
【0177】
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【0178】
1 パケット処理装置
2 入力I/F
3 MAC/PHY
4 出力I/F
10 マルチコア
10A コア
20 アクセラレータ
21 監視部
22 制御部
22A 割り当て部
22B 付加部
23 割り当てテーブル
24 ルーティングテーブル
30 受信部
40 コンピュータ
41 プロセッサ
42 メモリ
43 記憶装置
44 読取装置
45 着脱可能記憶媒体
46 通信インタフェース
47 入出力インタフェース
48 バス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13A
図13B
図14
図15
図16
図17A
図17B
図17C
図18