JP2015104045A - 通信装置、通信方法、および、記録媒体 - Google Patents

通信装置、通信方法、および、記録媒体 Download PDF

Info

Publication number
JP2015104045A
JP2015104045A JP2013244853A JP2013244853A JP2015104045A JP 2015104045 A JP2015104045 A JP 2015104045A JP 2013244853 A JP2013244853 A JP 2013244853A JP 2013244853 A JP2013244853 A JP 2013244853A JP 2015104045 A JP2015104045 A JP 2015104045A
Authority
JP
Japan
Prior art keywords
access
access destination
flow
write
request
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
JP2013244853A
Other languages
English (en)
Inventor
泰輔 植田
Yasusuke Ueda
泰輔 植田
遠藤 英樹
Hideki Endo
英樹 遠藤
誠由 高瀬
Masayoshi Takase
誠由 高瀬
祐輔 矢島
Yusuke Yajima
祐輔 矢島
小林 正伸
Masanobu Kobayashi
正伸 小林
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 JP2013244853A priority Critical patent/JP2015104045A/ja
Priority to US14/551,815 priority patent/US20150146649A1/en
Publication of JP2015104045A publication Critical patent/JP2015104045A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering

Abstract

【課題】1クロック内に複数の読出し要求および書き込み要求が到着した場合にテーブル更新処理の高速化が可能な装置を提供する。【解決手段】通信装置は、1RD(読み出し)/1WR(書込み)構成である複数の演算テーブル504を有する演算テーブルセット505が複数組存在する演算テーブルセット群と、フローごとに最新のアクセス先となる演算テーブルセットを指定する最新アクセス保持テーブル502と、同時に受信された複数のWR要求について最新アクセス保持テーブルを参照した結果、各WR要求に含まれるフローのアクセス先が同一演算テーブルセットである場合、各WR要求に含まれるフローごとに異なる演算テーブルセットを選択して、選択された演算テーブルセットの各演算テーブルに書込み処理を実行し、各WR要求に含まれるフローごとのアクセス先が書込み処理後のアクセス先となるように最新アクセス保持テーブルを更新する更新部とを有する。【選択図】図5

Description

本発明は、パケットを通信する通信装置、通信方法、および、記録媒体に関する。
近年、テレビコンテンツのデジタル化又はスマートフォンの普及等によりネットワークシステムにおけるトラヒックが大容量化している。これにより、キャリアバックボーンの通信帯域は急増しており、100[Gbps]を超えるパケット処理回路の需要が高まっている。
FPGA(Field−Programmable Gate Array)は、高速性、柔軟性、及び、短期開発の実現性を兼ね備えることから幅広い通信装置のパケット処理回路に利用されている。これまでのFPGA開発では、通信帯域増加に対応するためにはFPGA内部の動作周波数を高くし、並列展開ビット数を増加することでパケット処理を高速化してきた。しかし、動作周波数の向上が鈍化しており、同FPGAで100Gbpsを超えてパケット処理を実現するには並列展開ビット数をEthernet(商標登録、以下同じ)の最少サイズ64バイト(512ビット)以上に展開する必要があり、最小サイズであれば1clk内に複数のパケットが到着する。
帯域制御機能又は統計カウント機能などのパケット管理機能を、FPGAに実装する場合、FPGAは、通信装置が論理多重して収容するフロー毎のパケットの情報を一つの情報記憶媒体(以後、テーブルと記載)に格納し、到着したパケットに対応するフロー毎のテーブルの値を、パケットが到着する毎に更新する。
帯域制御機能を実現する場合、FPGAは、各フローの消費帯域をテーブルで管理する。具体的には、FPGAは、パケット到着毎に該当フローのテーブルから設定帯域及び消費帯域を読出し(以降、RDと記載)、設定帯域との比較、及び、消費帯域の演算をした後、消費帯域更新結果のテーブルへの書込み(以降、WRと記載)を実行する。以後、前述のRDからWRまでの処理ように、パケットに関する情報によってテーブルを更新する処理をテーブル更新処理と記載する。
例えば400[Gbps]など、100[Gbps]を超えたパケット処理速度で帯域制御をFPGAで実施する場合には、1clkに2パケット以上のパケット情報が到着し、RD、及び、WRを1clk内に少なくとも2個ずつ同時に処理する必要がある。
本技術分野の背景技術として、特開2000−216883号公報(特許文献1)がある。特許文献1には、「マルチポートRAMスイッチユニットは、複数の書き込み回路と複数の読み出し回路を有し、各々が、マルチポートRAM式クロスコネクト切替構造の入力/出力ポートの入力/出力クロック速度の指定分数のタイミング速度で動作する」ことが記載されている(要約参照)。すなわち、特許文献1には、パケット処理の1clk内にテーブルへ複数個のRD及びWRを実施可能なマルチポートRAMを使用した技術が提案されている。
特開2000−216883号公報
しかしながら、近年の高速パケット処理向けのFPGAを使用する場合、動作周波数が高く、1clk内にRD及びWRは、それぞれ1個ずつ処理することしかできない。具体的には、FPGAは、2つのアクセスポートを持つdual port RAMまでしか備えておらず、このdual port RAMは、1clk内にRD及びWRをそれぞれ1個ずつの処理を可能とする(2個のRDのみ、あるいは、2個のWRのみも可)。従って、FPGAでは、特許文献1に記載された技術のように、1clk内にテーブルへ2個以上のRD、及び、2個以上のWRを同時に実施することができず、1clkに2パケット以上のパケットが到着した場合には、帯域制御機能や統計カウント機能のテーブル更新処理を実現できないという問題がある。
本発明は、前述の問題を鑑みてなされたものであり、1clk内の複数パケット到着に対応するテーブル更新処理の高速化を目的とする。
本発明の代表的な一例を示せば以下のとおりである。ネットワークに接続される通信装置は、前記ネットワークからの1つの読出し要求および1つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持する複数のテーブルを有するテーブルセットが、複数組存在するテーブルセット群と、前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行し、前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する更新部と、を有する。
本発明の一実施形態によれば、1clk内に複数の読出し要求および書き込み要求が到着した場合にテーブル更新処理の高速化を図ることができる。
2clkに1パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。 1clkに2パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。 本実施例における複数RD/複数WRのRDアクセス処理例を示す説明図である。 本実施例における複数RD/複数WRのWRアクセス処理例を示す説明図である。 実施例1の通信装置の物理的な構成及び論理回路を示すブロック図である。 実施例1の入力パケット制御部の論理的な構成を示すブロック図である。 実施例1の入力テーブル更新部の論理的な構成を示すブロック図である。 実施例1の最新アクセス保持テーブルを示す説明図である。 実施例1の演算テーブルを示す説明図である。 実施例1のアクセスフロー管理リストを示す説明図である。 実施例1のアクセステーブル検索部が実行するRDアクセステーブル検索処理を示すフローチャートである。 実施例1のアクセステーブル検索部が実行するWRアクセステーブル検索処理を示すフローチャートである。 実施例1のアクセステーブル選択部が実行するRDアクセステーブル選択処理を示すフローチャートである。 実施例1のアクセステーブル選択部が実行するWRアクセステーブル選択処理の詳細な処理手順例を示すフローチャート(前半)である。 実施例1のアクセステーブル選択部が実行するWRアクセステーブル選択処理の詳細な処理手順例を示すフローチャート(後半)である。 実施例1の入力テーブル更新部が実行するアクセスフロー管理処理を示すフローチャートである。 実施例1のテーブル更新処理を実行する際の演算結果を示す説明図である。 実施例2のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。 実施例2の入力パケット制御部の論理的な構成を示すブロック図である。 図16に示した実施例2の入力テーブル更新部の論理的な構成を示すブロック図である。 実施例2の最新アクセス保持テーブルセットを示す説明図である。 実施例2のアクセスフロー管理リストを示す説明図である。 実施例2のアクセステーブル選択部が実行するRDアクセステーブル選択処理を示すフローチャートである。 実施例2のアクセステーブル選択部が実行するWRアクセステーブル選択処理の詳細な処理手順例を示すフローチャート(前半)である。 実施例2のアクセステーブル選択部が実行するWRアクセステーブル選択処理の詳細な処理手順例を示すフローチャート(後半)である。 実施例2のアクセステーブル選択部が実行するWRアクセステーブル選択処理における最新アクセス先情報の変更処理例を示す説明図である。 実施例3のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。 実施例3の入力テーブル更新部の論理的な構成を示すブロック図である。 実施例3の統計テーブルを示す説明図である。 実施例3の統計合算部が実行する統計通知処理を示すフローチャートである。 FPGA動作周波数と回線インタフェース速度のトレンドを示す説明図である。
以下、本発明の実施例について、図面を参照して説明する。以下に述べる実施例は本発明の一例であって、本発明を制限するものではない。本実施例におけるFPGA動作周波数と回線インタフェース速度のトレンドを示す。
<FPGA動作周波数と回線IF速度のトレンド>
図27は、FPGA動作周波数と回線インタフェース速度のトレンドを示す説明図である。FPGAは、動作周波数を高くし、並列展開ビット数を増加することで回線インタフェース速度のパケット処理を実現する。パケットは8ビット単位の2進数処理のため、並列展開ビット数は2のべき乗単位が一般的である。FPGA動作周波数は高速化しているが、そのスピードは鈍化している。一方、回線インタフェース速度は急激なスピードで高速化している。そのため、FPGA内部の並列展開ビット数は大きくなる傾向にあり、例えば400[Gbps]の回線インタフェース速度を満たすためには、FPGAは並列展開ビット数を2048とする必要がある。
従って、本FPGAでは、例えば400[Gbps]のパケット処理を実現するためには、並列展開ビット数をEthernetの最小サイズ64バイト(512ビット)以上に展開する必要があり、最小サイズであれば1clk内に複数のパケットが到着することになる。
<パケット到着間隔とテーブル更新処理タイミング例>
図1Aは、2clkに1パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。図1Aでは、例えば、100[Gbps]回線におけるパケット到着間隔を2clk、テーブル更新時間を5clk(RD:1clk、演算:3clk、WR:1clk)(具体的にはRDやWRに数clk要する場合もあるが本図では説明を簡略化するために1clkとする)とする。この場合、パケット通信装置に2clkで連続してパケットが到着すると、一つ目のパケット到着によるWRと、三つ目のパケット到着によるRDは同じタイミングとなる。テーブルは1個のRDと1個のWRを同時に処理(以降、1個のRDと1個のWRを同時に処理することを1RD/1WRと記載)するのみであり、パケット通信装置は、パケット到着毎にテーブル更新処理を実施することができる。
図1Bは、1clkに2パケットが到着する場合のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、1clkに2パケットが到着し、図2Aと同様にテーブル更新時間が5clkである場合、パケット通信装置に毎clkに2パケットが到着すると、一つ目及び二つ目のパケット到着によるWRと、九つ目及び十個目のパケット到着によるRDは同じタイミングとなる。
この場合、テーブルは毎clkに2個のRDと2個のWRを同時に処理(以降、2個のRDと2個のWRを同時に処理することを2RD/2WRと記載)する必要があるが、パケット通信装置が備えるテーブルは1RD/1WRであり、1clkにRD及びWRをそれぞれ2個ずつ処理することはできない。
<仮想マルチポートテーブルによる処理例>
本実施例では、図1Bに示したように、同時に到着した複数のRD要求、複数のWR要求があった場合にでもテーブル更新を可能にする。このため、本実施例では、1RD/1WRのdual port RAMである演算テーブルを複数組み合わせた仮想マルチポートRAM(仮想マルチポートテーブル)により、複数RD/複数WRを実現する。
図2Aおよび図2Bは、本実施例における複数RD/複数WRのRDアクセス処理例およびWRアクセス処理例を示す説明図である。図2Aでは、説明を簡単にするため、2RD/2WRの場合を例に挙げて説明する。また、図2Aでは、あるフロー(例としてフローID:#1)のRD要求と、他のフロー(例としてフローID:#2)のRD要求とを、同一サイクルで受け付けた場合を例に挙げて説明する。
2RD/2WRの場合、仮想マルチポートテーブル1は、2つの演算テーブルを2組有する構成である。一方の組を第1の演算テーブルセット10とし、他方の組を第2の演算テーブルセット20とする。各演算テーブルセット10,20は、2つの演算テーブルを有する。各演算テーブルセット10,20内の両演算テーブル(11,12)、(21,22)は、同期させることで同一内容のデータを保持する。なお、本例では、演算テーブル11,12,21,22においてデータA1、B1が格納されている領域のアドレスは、フローID:#1により指定される。同様に、データA2、B2が格納されている領域のアドレスは、フローID:#2により指定される。
フローID:#1のRD要求は、第1の演算テーブルセット10を指定し、フローID:#2のRD要求も、第1の演算テーブルセット10を指定した場合について説明する。フローID:#1のRD要求は、フローID:#1により、演算テーブル11のデータA1を指定する。これに対し、フローID:#2のRD要求は、フローID:#2により、演算テーブル11のデータA1と演算テーブル12のデータA1のうち、フローID:#1のRD要求と競合しない演算テーブル12のデータA1を指定する。これにより、アクセス競合を回避して、同一タイミングでの2RDを実現することができる。
図2Bを用いて、フローID:#1のWR要求と、フローID:#2のWR要求とを、同一サイクルで受け付けた場合を例に挙げて説明する。図2Bは、図2Aの2つのRD要求と同時に2つのWR要求が受信された場合の例である。フローID:#9のWR要求は、フローID:#9のRD要求(不図示)により読み出されたデータA9を用いた演算結果A9’をWRするためのリクエストである。同様に、フローID:#10のWR要求は、フローID:#10のRD要求(不図示)により読み出されたデータA10を用いた演算結果A10’をWRするためのリクエストである。
WR要求では、各演算テーブルセットにおける両演算テーブルを同期させるため、両演算テーブルにWRをおこなう。フローID:#9のWR要求は、フローID:#9のRD要求により演算テーブル11のデータA9を読み出した領域に演算結果A9’を上書きするとともに、演算テーブル12のデータA9が格納されている領域にも演算結果A9’を上書きする。これにより、このあとに受信されるフローID:#9のRD要求は、演算テーブル11,12のいずれの演算テーブルに対しRDすることができる。
これに対し、フローID:#10のWR要求は、第1の演算テーブルセット10ではなく、フローID:#9のWR要求と競合しない第2の演算テーブルセット20の両演算テーブル21、22のデータB10が格納されている領域に、演算結果A10’を上書きする。これにより、このあとに受信されるフローID:#10のRD要求は、演算テーブル21、22のいずれの演算テーブルに対しRDすることができる。また、第1の演算テーブルセット10にアクセスしないことにより、フローID:#1のWR要求とのアクセス競合を回避して、同一サイクルでの2WRを実現することができる。なお、フローID:#10のアクセス先が第1の演算テーブルセット10から第2の演算テーブルセット20に変更されたため、フローID:#10のRD要求およびWR要求によるアクセス先は、第2の演算テーブルセット20となるように制御される。
これにより、仮想マルチポートテーブル1は、複数のRD要求および複数のWR要求を同一クロックで受け付けた場合でも、複数のRDおよび複数のWRを実行することができる。
(実施例1)
以下、実施例1について図3〜図14を用いて説明する。実施例1では、帯域制御機能のような演算機能が適用される例である。実施例1では、帯域制御方法の説明は省略し、一般的な演算機能として説明する。通信装置は、演算情報として演算結果をテーブルに保持し、パケット到着毎に演算結果を更新する。通信装置は、以下で説明する仮想マルチポートRAM(仮想マルチポートテーブル)を構成し、毎clkに2パケットが到着した際にテーブル更新処理を実施する。仮想マルチポートテーブルは、複数の1RD/1WRのテーブルから構成され、仮想的な1つの2RD/2WRテーブルを実現する。
<通信装置の構成例>
図3は、実施例1の通信装置の物理的な構成及び論理回路302を示すブロック図である。通信装置3は、パケットを他の通信装置へ転送する装置である。通信装置3は、複数のネットワークインタフェースボード(NIF)(300−1〜300−M)(Mは任意の自然数)、及び、スイッチ部306を備える。
NIF300(300−1〜300−M)は、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部306は、各NIF300に接続される装置であり、NIF300から受信したパケットを、パケットを送信すべきNIF300に振り分ける装置である。
各NIF300は、入出力回線インタフェース301、論理回路302、SWインタフェース305、及びNIF管理部308を備える。
入出力回線インタフェース301は、通信ポートである。通信装置3は、入出力回線インタフェース301及びネットワークを介して、他の通信装置と接続する。実施例1における入出力回線インタフェース301は、たとえば、イーサネット(登録商標)用の回線インタフェースである。
SWインタフェース305は、スイッチ部306に接続するための装置である。NIF管理部308は、例えば、CPU等のプロセッサである。NIF管理部308は、論理回路302における処理を制御する。論理回路302は、実施例のパケットに対する処理を行う回路である。論理回路302は、少なくとも一つのメモリ及び少なくとも一つの演算装置(例えば、プロセッサ)を備える。
論理回路302は、入力パケット制御部303、出力パケット制御部304、入力テーブル更新部309、出力テーブル更新部310等のパケット処理部を有し、設定レジスタ307を備える。
通信装置3が受信したパケットは、入出力回線インタフェース301、入力パケット制御部303、SWインタフェース305、スイッチ部306、SWインタフェース305、出力パケット制御部304、及び、入出力回線インタフェース301の順に送信される。入力テーブル更新部309は、入力パケット制御部303の処理の一環として経由され、同様に、出力テーブル更新部310は、出力パケット制御部304の処理の一環として経由される。
論理回路302が有する各処理部は、集積回路等の物理的な装置によって実装されてもよいし、少なくとも一つのプロセッサによって実行されるプログラムによって実装されてもよい。また、複数の処理部(例えば、入力パケット制御部303、入力テーブル更新部309、出力パケット制御部304、及び、出力テーブル更新部310)が一つの装置又はプログラムによって実装されてもよいし、一つの処理部が複数の装置又は複数のプログラムによって実装されてもよい。
NIF管理部308は、設定レジスタ307を制御する。設定レジスタ307は、データを一時的に格納する記憶領域を有し、論理回路302に備わる各処理部のレジスタ値を保持する。
設定レジスタ307は論理回路302を介して論理回路302に備わる処理部と接続する。なお、以下において、設定レジスタ307の処理内容についての説明を省略するが、論理回路302が有する処理部は、設定レジスタ307を用いて処理を実行する。入出力回線インタフェース301は、受信したパケットに後述する装置内ヘッダを付加する。
ここで、パケットのフォーマットについて説明する。パケットは、宛先MACアドレス、送信元MACアドレス、VLANヘッダ、イーサタイプ値、ペイロード、及び、フレームチェックシーケンス(FCS)を含む。宛先MACアドレス、又は、送信元MACアドレスには、通信装置3のMACアドレスが設定される。VLANヘッダには、フローの識別子となるVLAN IDが設定される。
なお、ペイロードにMPLS(Multi−Protocol Label Switching)ヘッダ又は他のプロトコルのヘッダが設定され、MPLSラベル値などをフローの識別子として設定されてもよい。フレームチェックシーケンス(FCS)には、フレームの誤りを検出するための値が設定される。
つぎに、パケットに付加される装置内ヘッダのフォーマットについて説明する。装置内ヘッダは、出力ネットワークインタフェースボード識別子(出力NIF ID)、フローID、及び、パケット長を含む。出力NIF IDは、内部ルーティング情報である。内部ルーティング情報とは、通信装置3が受信したパケットを、通信装置3のいずれのNIF300のポートから出力するかを示す情報である。スイッチ部306は、内部ルーティング情報に従い、スイッチ部306に送信された入力パケットを特定のNIF300の特定のSWインタフェース305に転送する。
装置内ヘッダは、受信したパケットを通信装置3において処理するため、受信したパケットに入出力回線インタフェース301付加される。装置内ヘッダが付加され、入出力回線インタフェース301からスイッチ部306に向けて送信されるパケットを、以降において、入力パケットと記載する。
入出力回線インタフェース301は、受信したパケットに装置内ヘッダを付加する際、出力NIF ID、及び、フローIDにnull値等の値を格納する。すなわち、入出力回線インタフェース301は、出力NIF ID、及び、フローIDに格納される値を決定しない。出力NIF ID、及び、フローIDには、入力パケット制御部303によって値が格納される。
入出力回線インタフェース301は、受信したパケットのパケット長を取得し、装置内ヘッダのフレーム長に、取得されたパケット長を格納する。その後、入出力回線インタフェース301は、パケットを入力パケット制御部303に送信する。
入力パケット制御部303は、入出力回線インタフェース301から受信したパケットに関して、後述するパケット処理を実行する。本パケット処理時に、装置内ヘッダの出力NIF ID及びフローIDを追加する。
また、入力パケット制御部303は、本パケット処理時に、入力テーブル更新部309がテーブルを用いて管理するフロー毎のパケット情報を更新する。パケット処理後、入力パケット制御部303は、入力パケットをSWインタフェース305に送信する。SWインタフェース305は、受信した入力パケットをスイッチ部306に転送する。
スイッチ部306は、各NIF300のSWインタフェース305から入力パケットを受信した後、入力パケットの出力NIF IDを参照することによって、受信した入力パケットの転送先であるNIF300を特定する。次に、スイッチ部306は、特定されたNIF300に対応するSWインタフェース305に、受信した入力パケットを、出力パケットとして転送する。なお、実施例1において、スイッチ部306から入出力回線インタフェース301へ送信されるパケットを出力パケットと記載する。
SWインタフェース305は、受信した出力パケットを出力パケット制御部304に転送する。前述の例では、入力パケット制御部303がパケット処理を実行したが、出力パケット制御部304が、入力パケット制御部303の代わりにパケット処理を実行してもよい。出力パケット制御部304がパケット処理を実行する場合、パケット処理後、出力パケット制御部304は、出力パケットを入出力回線インタフェース301に送信する。本パケット処理時に、出力テーブル更新部310がテーブルを用いて管理するフロー毎のパケット情報を更新する。
出力パケット制御部304がパケット処理を実施しない場合、出力パケット制御部304は、SWインタフェース305から受信した出力パケットを、そのまま入出力回線インタフェース301に転送し、出力テーブル更新部310が管理するフロー毎のパケット情報は更新しない。
入出力回線インタフェース301は、受信した出力パケットから装置内ヘッダを除去する。その後、入出力回線インタフェース301は、上述したパケットのフォーマットにしたがって出力パケットを他の装置へ転送する。
<入力パケット制御部303の構成例>
図4は、実施例1の入力パケット制御部303の論理的な構成を示すブロック図である。図4では、実施例1におけるRD及びWRの処理要求の流れを明確化するため、破線でRD要求、長二点鎖線でWR要求の流れを示す(以降の図5、図16、図17、及び、図24においても破線と長二点鎖線は同様に扱う)。
入力パケット制御部303は、振分部401、2つのパケット処理部402(402−1〜402−2)、多重部403、及び、調停部404を備える。
振分部401は、入力パケット制御部303が入出力回線インタフェース301から入力パケットを受信した場合、パケット処理を実行するパケット処理部402を、パケット処理部402−1あるいはパケット処理部402−2から決定し、決定したパケット処理部402にパケットを振分ける。
振分部401は、受信した入力パケットのVLANヘッダに基づいて、パケットのフローを識別し、これによって、出力NIF IDを決定する。また、振分部401は、入力パケットの装置内ヘッダの出力NIF ID及びフローIDに値を格納し、入力パケットを受信した順番に、パケット処理部402(402−1〜402−2)へパケットを転送する。
なお、実施例1では、振分部401は、入力パケットを受信した順番にパケット処理部402へパケットを転送したが、識別したフローに応じて転送するパケット処理部402を決定しても良い。また、振分部401は、受信した入力パケットが1つの場合は、一方のパケット処理部402(例えば402−1)に転送し、受信した入力パケットが2つの場合は、それぞれのパケット処理部402(402−1及び402−2)に転送しても良い。
また、振分部401は、入力パケット単位でパケット処理部402へパケットを転送したが、入力パケットを断片化して転送し、多重部403が入力パケットを再構築しても良い。また、振分部401は、入力パケットのヘッダ部分(例えば、宛先MACアドレスからイーサタイプ値まで)のみをパケット処理部402へ振分け、残りのペイロード部分は多重部403へ転送し、パケット処理部402の処理が終了するまで待ち合せておいても良い。
パケット処理部402は、パケット処理時に、調停部404にRD要求及びWR要求を転送し、後述する入力テーブル更新部309が保持する演算テーブルを更新する。パケット処理部402は、演算テーブルから情報を取得するためにRD要求を入力テーブル更新部309に転送する。なお、フローに対応したRDアドレスも転送する。また、パケット処理部402は、情報の取得後、例えば帯域制御機能のための消費帯域計算などの演算処理を実施して、演算テーブルの情報を更新するためにWR要求を入力テーブル更新部309に転送する。なお、フローに対応したWRアドレス、及び、更新するWRデータも転送する。パケット処理後、パケット処理部402は、入力パケットを多重部403に送信する。
また、パケット処理部402は、演算処理結果に基づいてパケットの内容を変更して多重部403に送信しても良い。また、実施例1では、振分部401においてフローを識別したが、パケット処理部402がフローを識別し、装置内ヘッダの出力NIF ID、及び、フローIDに値を格納しても良い。
調停部404は、パケット処理部402(402−1及び402−2)から転送されるRD要求やWR要求を、パケット処理部402−1用とパケット処理部402−2用でそれぞれ別に入力テーブル更新部309に転送する。また、調停部404は、上記と同様に、パケット処理部402−1用とパケット処理部402−2用にそれぞれ別に入力テーブル更新部309から受信したRD結果をパケット処理部402(402−1及び402−2)に通知する。
なお、実施例1では、パケット処理部402において、帯域制御機能などの演算処理を実施したが、パケット処理部402は調停部404にフローIDやパケット長などのパケット情報を転送し、調停部404において演算処理を実施しても良い。この際、調停部404は、演算テーブル504から情報を取得し、演算処理を実施して演算テーブル504の情報を更新する。また、調停部404は、パケット処理部402−1及びパケット処理部402−2から受信したフローIDが同じであった場合には、演算結果を集約して演算テーブル504の情報を更新しても良い。
さらに、調停部404は、連続して同じフローのパケット情報を受信した場合には、演算テーブル504の情報の更新が完了していない可能性があるため、この場合に受信したパケット情報については演算テーブルから取得した情報を使用せず、前のパケット情報の処理時に内部保持していた演算結果を用いて演算テーブルの情報を更新しても良い。
多重部403は、各パケット処理部402から受信したパケットを多重し、到着順にSWインタフェース305に送信する。実施例1において、入力パケット制御部303がパケット処理に要する時間はあらかじめ定められる。なお、実施例1において、パケット処理部402の数を、通信装置3が接続される回線速度(同時到着パケット数)に従って「2」としたが、N(Nは任意の自然数)としても良い。この際、調停部404は、パケット処理部402から転送されるRD要求やWR要求をNから2に調停して入力テーブル更新部309に転送する。
<入力テーブル更新部309の構成例>
図5は、実施例1の入力テーブル更新部309の論理的な構成を示すブロック図である。入力テーブル更新部309は、アクセステーブル検索部501(501−1及び501−2)、最新アクセス保持テーブル502(502−1及び502−2)、アクセステーブル選択部503、演算テーブル504(504−1a、504−1b、504−2a、及び、504−2b)、及び、アクセスフロー管理リスト510を備える。
ここで、演算テーブルセット505−1は、演算テーブル504−1a及び504−1bの総称であり、演算テーブルセット505−2は、演算テーブル504−2a及び504−2bの総称である。実施例1においては、この4つの演算テーブル504(504−1a、504−1b、504−2a、及び、504−2b)(1つ1つは1RD/1WRのテーブル)によって仮想マルチポートテーブルを構成し、仮想的な1つの2RD/2WRの演算テーブルを実現する。
アクセステーブル検索部501(501−1R、501−2R)は、入力パケット制御部303からRD要求を受信した場合、最新アクセス保持テーブル502(502−1R、502−2R)を参照して、後述するRDアクセステーブル検索処理S950(図9を参照)を実行する処理部である。また、アクセステーブル検索部501(501−1W、501−2W)は、入力パケット制御部303からWR要求を受信した場合、最新アクセス保持テーブル502(502−1W、502−2W)を参照して、後述するWRアクセステーブル検索処理S1050(図10を参照)を実行する処理部である。アクセステーブル検索部501は、最新アクセス保持テーブル502から検索した最新アクセス先情報を、アクセステーブル選択部503へ通知する。
アクセステーブル選択部503は、アクセステーブル検索部501からRD要求を受信した場合、後述するRDアクセステーブル選択処理S1150(図11を参照)を実行し、演算テーブル504から情報を読み出す処理部である。また、アクセステーブル選択部503は、アクセステーブル検索部501からWR要求を受信した場合、後述するWRアクセステーブル選択処理S1250(図12を参照)を実行し、演算テーブル504に情報を書き込む処理部である。
アクセステーブル選択部503は、アクセステーブル検索部501からRD要求やWR要求と同時に受信する最新アクセス先情報を用いて、データを読み出す演算テーブル504や、データを書き込む演算テーブル504を選択する。さらに、アクセステーブル選択部503は、WR要求と同時に受信した最新アクセス先情報が示す演算テーブルセットから、書き込む演算テーブル504(演算テーブルセット505)を変更した場合、その変更結果を最新アクセス保持テーブル502−1(501−1R、501−1W)及び最新アクセス保持テーブル502−2(501−2R、501−2W)の両方に書き戻す。
アクセスフロー管理リスト510は、アクセステーブル選択部503がWRアクセステーブル選択処理S1250を実施している入力パケットのWRアドレスと、アクセステーブル選択部503の処理状況と、継続処理用の最新アクセス先情報を示す。
入力テーブル更新部309は、アクセスフロー管理リスト510を、論理回路302に備わるメモリ等に保持し、アクセスフロー管理処理S1350において、アクセスフロー管理リスト510を管理する。そして、アクセステーブル選択部503は、WRアクセステーブル選択処理S1250において、アクセスフロー管理リスト510を更新する。
<最新アクセス保持テーブル502の記憶内容例>
図6は、実施例1の最新アクセス保持テーブル502を示す説明図である。最新アクセス保持テーブル502は、通信装置3が受信したパケットに関して、フロー毎の最新情報を書き込んでいる演算テーブル504(504−1a、504−1b、504−2a、及び、504−2b)の情報(ここでは演算テーブルセット505として管理)を有するテーブルである。最新アクセス保持テーブル502は、フローIDフィールド601、及び、最新アクセス先情報フィールド602を含み、フローごとに、各フィールド601,602の値を記憶する。
フローIDフィールド601は、入力パケットのフローIDを含む。最新アクセス先情報フィールド602は、パケットのフロー毎の演算結果の最新情報を保持する演算テーブルセットを指定する情報を含む。最新アクセス先情報フィールド602の値「0」が演算テーブルセット505−1を示し、「1」が演算テーブルセット505−2を示す。なお、最新アクセス保持テーブル502は、図12BのS1213において更新される。
<演算テーブル504の記憶内容例>
図7は、実施例1の演算テーブル504を示す説明図である。演算テーブル504は、フローIDフィールド701、及び、演算結果フィールド702を含み、フローごとに各フィールド701,702の値を記憶する。フローIDフィールド701は、入力パケットのフローIDを含む。演算結果フィールド702は、入力パケット制御部303における帯域制御機能などの演算処理におけるフロー毎の演算結果を含む。
<アクセスフロー管理リスト510の記憶内容例>
図8は、実施例1のアクセスフロー管理リスト510を示す説明図である。アクセスフロー管理リスト510は、管理エントリフィールド801、WRアドレスフィールド802、処理状況カウンタフィールド803、及び、継続処理用最新アクセス先情報フィールド804を含み、管理エントリごとに各フィールド801〜804の値を記憶する。
管理エントリフィールド801は、演算テーブル504を更新中であるフローを管理する内部論理回路のエントリ(1〜N)を一意に示す識別子(以下、管理エントリ)を含む。管理エントリは、たとえば、この内部論理回路を数値によって識別する値である。管理エントリフィールド801に格納される値は、管理者等によってあらかじめ設定される。
WRアドレスフィールド802は、入力パケットに割り当てられたフローを一意に示すアドレスを含む。WRアドレスフィールド802に格納される値は、入力パケット制御部303において識別したフローIDの値に対応するアドレスである。また、WRアドレスフィールド802に格納される値は、アクセステーブル選択部503によって更新される。
処理状況カウンタフィールド803は、処理状況カウンタを記憶する。処理状況カウンタは、最新アクセス保持テーブル502−1及び502−2への書込み状況を示す値を含む。アクセステーブル選択部503のWRアクセステーブル選択処理S1250において、例えばアクセステーブル検索部(2)側から受信したWR要求を基に、最新アクセス先情報を変更する場合の最新アクセス保持テーブル502−1及び502−2への書込み状況を示す値を含む。
より具体的には、たとえば、処理状況カウンタフィールド803は、最新アクセス保持テーブル502−1及び502−2への書込み処理が開始されてから、実際に最新アクセス保持テーブル502−1及び502−2の最新アクセス先情報フィールド602に書込みが反映されるまでの実行時間に関する値を含む。
以下に示す処理状況カウンタは、減算カウンタによって、最新アクセス保持テーブル502−1及び502−2への書込み処理が開始されてから最新アクセス先情報フィールド602に書込みが反映されるまでの残り時間を示す。具体的には、書込み処理が開始された場合、処理状況カウンタフィールド803には処理時間が格納される。
そして、入力テーブル更新部309が単位時間(実施例1においては1clk)毎に処理状況カウンタフィールド803の値を減算する。処理状況カウンタフィールド803に“0”が格納される管理エントリは、アクセステーブル選択部503が上記書込み処理を終了し、最新アクセス先情報フィールド602に書込みが反映されたことを示す。また、処理状況カウンタフィールド803に“0”以外の正の数が格納される管理エントリは、そのフローIDに対応するWRアドレスに書込み処理を実行中であり、最新アクセス先情報フィールド602に書込みが反映されていないことを示す。
以下において、処理状況カウンタが減算カウンタである場合の処理を記載するが、処理状況カウンタは加算カウンタによって、書込み処理が開始されてから経過した時間を示してもよい。この場合、アクセステーブル選択部503は、所定の時間と処理状況カウンタとを比較することによって、書込み処理の状況を取得しても良い。
以下に、アクセステーブル検索部501が実行するRDアクセステーブル検索処理S950について説明する。
<RDアクセステーブル検索処理S950>
図9は、実施例1のアクセステーブル検索部501が実行するRDアクセステーブル検索処理S950を示すフローチャートである。アクセステーブル検索部501(501−1R、501−2R)は、入力パケット制御部303からRD要求を受信した場合(S900)、入力パケット制御部303からRD要求と同時に受信するRDアドレスを取得する(S901)。S901の後、アクセステーブル検索部501(501−1R、501−2R)は、取得したRDアドレスで最新アクセス保持テーブル502(502−1R、502−2R)を検索し、最新アクセス先情報を取得する(S902)。S902の後、アクセステーブル検索部501(501−1R、501−2R)は、RD要求、S901において取得したRDアドレス、及び、S902において取得した最新アクセス先情報をアクセステーブル選択部503へ通知し、RDアクセステーブル検索処理S950を終了する(S904)。
実施例1では、アクセステーブル検索部501−1R、501−2Rは、入力パケット制御部303から受信したそれぞれのRD要求をトリガとしてRDアクセステーブル検索処理S950を開始し、各アクセステーブル検索部501−1R、501−2Rが備える最新アクセス保持テーブル502−1R、502−2Rから取得した最新アクセス先情報をそれぞれアクセステーブル選択部503へ通知する。
以下に、アクセステーブル検索部501が実行するWRアクセステーブル検索処理S1050について説明する。
<WRアクセステーブル検索処理S1050>
図10は、実施例1のアクセステーブル検索部501が実行するWRアクセステーブル検索処理S1050を示すフローチャートである。アクセステーブル検索部501(501−1W、501−2W)は、入力パケット制御部303からWR要求を受信した場合(S1000)、入力パケット制御部303からWR要求と同時に受信するWRアドレス及びWRデータを取得する(S1001)。S1001の後、アクセステーブル検索部501(501−1W、501−2W)は、取得したWRアドレスで最新アクセス保持テーブル502(502−1W、502−2W)を検索し、最新アクセス先情報を取得する(S1002)。
S1002の後、アクセステーブル検索部501(501−1W、501−2W)は、WR要求、S1001において取得したWRアドレス、WRデータ、及び、S1002において取得した最新アクセス先情報をアクセステーブル選択部503へ通知し、WRアクセステーブル検索処理S1050を終了する(S1004)。
実施例1では、アクセステーブル検索部501−1W、501−2Wは、入力パケット制御部303から受信したそれぞれのWR要求をトリガとしてWRアクセステーブル検索処理S1050を開始し、各アクセステーブル検索部501−1W、501−2Wが備える最新アクセス保持テーブル502(502−1W、502−2W)から取得した最新アクセス先情報をそれぞれアクセステーブル選択部503へ通知する。
以下に、実施例1のアクセステーブル選択部503が実行するRDアクセステーブル選択処理S1150について説明する。
<RDアクセステーブル選択処理S1150>
図11は、実施例1のアクセステーブル選択部503が実行するRDアクセステーブル選択処理S1150を示すフローチャートである。アクセステーブル選択部503は、アクセステーブル検索部501(501−1R、501−2R)からRD要求を受信した場合(S1100)、アクセステーブル検索部501(501−1R、501−2R)からRD要求と同時に受信するRDアドレス、及び、最新アクセス先情報を取得する(S1101)。
S1101の後、アクセステーブル選択部503は、S1101において取得したRDアドレスで、S1101において取得した最新アクセス先情報が示す演算テーブル504(504−1a、504−1b、504−2a、あるいは、504−2bのいずれか)を検索し、演算結果を取得する(S1102)。
ここで、実施例1では、アクセステーブル選択部503は、S1100においてアクセステーブル検索部501−1からRD要求を取得した場合、S1101において取得した最新アクセス先情報が示す演算テーブルセット505−Xのa側の演算テーブル(X−a)504−Xaを検索する。なお、Xは1又は2であり、演算テーブルセット505−1又は演算テーブルセット505−2を示す。
また、アクセステーブル選択部503は、S1100においてアクセステーブル検索部501−2からRD要求を取得した場合、S1101において取得した最新アクセス先情報が示す演算テーブルセット505−Xのb側の演算テーブル(X−b)504−Xbを検索する。
S1102において、アクセステーブル検索部501−1Rとアクセステーブル検索部501−2Rから同時に受信するRD要求に対して、アクセステーブル選択部503は、別々の演算テーブル504を検索する。これによって、仮想的な1つの2RD/2WRの演算テーブルを構成する実施例1の仮想マルチポートテーブルは、2つのRD要求を同時に処理可能とする。
なお、実施例1において、アクセステーブル検索部501−1RのRD要求と演算テーブル504−Xa、及び、アクセステーブル検索部501−2RのRD要求と演算テーブル504−Xbを対応付けたが、この対応付けを逆にし、アクセステーブル検索部501−1RのRD要求と演算テーブル504−Xb、及び、アクセステーブル検索部501−2RのRD要求と演算テーブル504−Xaを対応付けても良い。
また、実施例1において、アクセステーブル検索部501−1Rとアクセステーブル検索部501−2Rから同時にRD要求を受信していない(RD要求はひとつ)場合、あるいは、アクセステーブル検索部501−1Rとアクセステーブル検索部501−2Rから同時にRD要求を受信したが最新アクセス先情報が示す演算テーブルセット505−Xが異なる場合は、アクセステーブル選択部503は、RD要求に対して、演算テーブル504−Xa、あるいは、演算テーブル504−Xbのどちらを検索しても良い。
S1102の後、S1102において取得した演算結果をRD要求の送信元であるアクセステーブル検索部501(501−1R、501−2R)に通知し(S1103)、RDアクセステーブル選択処理S1150を終了する(S1104)。ここで、アクセステーブル検索部501(501−1R、501−2R)が、S1103において通知された演算結果をRDデータとして入力パケット制御部303に通知することで、入力パケット制御部303における演算テーブル504へのRDは完了する。
以下に、図12A及び図12Bによって、実施例1のアクセステーブル選択部503が実行するWRアクセステーブル選択処理S1250について説明する。
<WRアクセステーブル選択処理S1250>
図12Aは、実施例1のアクセステーブル選択部503が実行するWRアクセステーブル選択処理S1250の詳細な処理手順例を示すフローチャート(前半)である。図12Aは、受信したWR要求が1つであった場合の処理、及び、受信したWR要求が2つであり、その2つのWR要求が示す最新アクセス先情報が異なる場合の処理を示す。
アクセステーブル選択部503は、アクセステーブル検索部501(501−1W、501−2W)からWR要求を受信した場合(S1200)、アクセステーブル検索部501(501−1W、501−2W)からWR要求と同時に受信するWRアドレス、WRデータ、及び、最新アクセス先情報を取得する(S1201)。
S1201の後、アクセステーブル選択部503は、アクセスフロー管理リスト510の全ての管理エントリフィールド801の処理状況カウンタフィールド803の値が“0”と異なるか否かを判定する(S1202)。
S1202において、アクセスフロー管理リスト510の全ての管理エントリの処理状況カウンタが“0”と異なると判定された場合(ステップS1202:Yes)、全ての管理エントリ(1〜N)は、最新アクセス保持テーブル502−1W及び502−2Wへの書込み処理を実行中である。新規WR要求の場合の書込み処理を受け付けることができないため、アクセステーブル選択部503は、図12Bに示す処理に進み、WRアクセステーブル選択処理S1250を終了する(S1214)。
また、S1202において、アクセスフロー管理リスト510の管理エントリのうち、処理状況カウンタが“0”である管理エントリが少なくとも1つ以上ある場合(ステップS1202:No)、全ての管理エントリ(1〜N)のうち少なくとも1つの管理エントリは、最新アクセス保持テーブル502−1W及び502−2Wへの書込み処理を実行していない。新規WR要求の場合の書込み処理を受け付けることができるため、アクセステーブル選択部503は、S1203の処理に進む。
なお、S1202において、S1200でアクセステーブル検索部501−1Wとアクセステーブル検索部501−2Wから同時にWR要求を受信した場合は、アクセステーブル選択部503は、管理エントリにおいて、複数エントリ(2エントリ)分の処理が可能かどうかを確認する。
そして、アクセステーブル選択部503は、アクセスフロー管理リスト510の管理エントリのうち、処理状況カウンタが“0”である管理エントリがS1200で受信した複数エントリ分の処理が可能である場合、S1203の処理に進む。アクセステーブル選択部503は、処理状況カウンタが“0”である管理エントリが、S1200で受信した複数エントリ分の処理が可能でない場合、図12Bに示す処理に進み、図12A及び図12Bに示すWRアクセステーブル選択処理S1250を終了する。
また、アクセステーブル選択部503は、処理状況カウンタが“0”である管理エントリが、S1200で受信した複数エントリ分の処理が可能でない場合は、処理状況カウンタが“0”である管理エントリ分のWR要求についての処理はS1203の処理に進み、残りのWR要求についての処理は図12Bに示す処理に進み、図12A及び図12Bに示すWRアクセステーブル選択処理S1250を終了しても良い。
S1203において、アクセステーブル選択部503は、S1201において取得したWRアドレスの値と処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致するか否かを判定する(S1203)。
なお、S1203において、アクセステーブル選択部503は、S1201において取得したWRアドレスの値に対応する値が、処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致する場合、取得したWRアドレスの値に対応する値と処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値とが一致していると判定してもよい。
S1203において、S1201において取得したWRアドレスの値と処理状況カウンタフィールド803が“0”と異なる管理エントリのWRアドレスの値と一致しないと判定された場合(ステップS1203:No)、アクセステーブル選択部503は、最新アクセス保持テーブル502−1及び502−2への書込み処理を実行していないフローのWR要求であるため、S1201において取得した最新アクセス先情報を用いて、S1205の処理に進む。
一方、S1203において、S1201において取得したWRアドレスの値と処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致すると判定された場合(ステップS1203:Yes)、取得したWRアドレスは、最新アクセス保持テーブル502−1及び502−2への書込み処理を実行しているフローのWR要求であることを示す。このため、アクセステーブル選択部503は、S1201において取得した最新アクセス先情報を、取得したWRアドレスが一致した管理エントリフィールド801の継続処理用最新アクセス先情報フィールド804で上書きして保持し(S1204)、S1205の処理に進む。
そして、アクセステーブル選択部503は、S1200においてWR要求を2つ受信したか否かを判定する(S1205)。S1205において、S1200においてWR要求を2つ受信していないと判定された場合(ステップS1205:No)、アクセステーブル選択部503が受信したWR要求は1つである。このため、アクセステーブル選択部503は、S1201において取得した最新アクセス先情報、あるいは、S1204において上書きした最新アクセス先情報が示す演算テーブルセット505−Xが備えるa側及びb側の演算テーブル504(504−Xa及び504−Xb)の、S1201において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む(S1206)。なお、Xは1又は2であり、演算テーブルセット505−1又は演算テーブルセット505−2を示す。
実施例1では、アクセステーブル選択部503が、演算テーブルセット505が備えるa側及びb側の演算テーブル504(504−Xa及び504−Xb)に同じWRデータを更新することで、演算テーブルセット505の情報を同期する。これにより、前述したRDアクセステーブル選択処理S1150のS1102において、演算テーブルセット505の演算テーブル504は同期されているため、a側及びb側の演算テーブル504のどちらのテーブルを検索しても同じ情報を取得することができる。
S1206の後、図12Bに示す処理に進み、図12A及び図12Bに示すWRアクセステーブル選択処理S1250を終了する(S1214)。
一方、S1205において、S1200においてWR要求を2つ受信していると判定された場合(ステップS1205:Yes)、アクセステーブル選択部503が受信したWR要求は2つである。アクセステーブル選択部503は、アクセステーブル検索部(1)501−1Wから受信したWR要求に対応する最新アクセス先情報(S1201において取得、あるいは、S1204において上書き)と、アクセステーブル検索部(2)501−2Wから受信したWR要求に対応する最新アクセス先情報(S1201において取得、あるいは、S1204において上書き)が同じか否かを判定する(S1207)。
S1207において、アクセステーブル検索部(1)501−1Wから受信したWR要求に対応する最新アクセス先情報と、アクセステーブル検索部(2)501−2Wから受信したWR要求に対応する最新アクセス先情報が同じでないと判定された場合(ステップS1207:No)、2つのWR要求に対して更新しようとする演算テーブルセット505が異なることを示す。このため、アクセステーブル選択部503は、それぞれの最新アクセス先情報が示す演算テーブルセット505−Xが備えるa側及びb側の演算テーブル504(504−Xa及び504−Xb)の、S1201において取得したそれぞれのWRアドレスが示すエントリに、取得したそれぞれのWRデータを書き込む(S1208)。
一方、S1207において、アクセステーブル検索部(1)501−1Wから受信したWR要求に対応する最新アクセス先情報と、アクセステーブル検索部(2)501−2Wから受信したWR要求に対応する最新アクセス先情報が同じと判定された場合(ステップS1207:Yes)、2つのWR要求に対して更新しようとする演算テーブルセット505が同じであることを示す。アクセステーブル選択部503は、図12Bに示すS1209の処理に進み、2つのWR要求に対して更新しようとする演算テーブルセット505が競合しないよう選択する。
図12Bは、実施例1のアクセステーブル選択部503が実行するWRアクセステーブル選択処理S1250の詳細な処理手順例を示すフローチャート(後半)である。図12Bは、実施例1のアクセステーブル選択部503が実行するWRアクセステーブル選択処理S1250のうち、受信したWR要求が2つであり、その2つのWR要求が示す最新アクセス先情報が同じ場合の処理を示す。
S1209において、アクセステーブル選択部503は、アクセステーブル検索部(1)501−1Wから受信したWR要求に対しては、最新アクセス先情報が示す演算テーブルセット505−Xが備えるa側及びb側の演算テーブル504(504−Xa及び504−Xb)の、S1201において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む。
一方、アクセステーブル選択部503は、アクセステーブル検索部(2)501−2Wから受信したWR要求に対しては、最新アクセス先情報が示す演算テーブルセット505−Xと異なる、演算テーブルセット505−Yが備えるa側及びb側の演算テーブル504(504−Ya及び504−Yb)の、S1201において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む(S1209)。なお、Yは1又は2であり、演算テーブルセット505−1又は演算テーブルセット505−2を示す。また、YはXと異なる値とする。
S1209において、アクセステーブル検索部501−1Wとアクセステーブル検索部501−2Wから同時に受信するWR要求に対して、アクセステーブル選択部503は、別々の演算テーブルセット505が備える演算テーブル504をそれぞれ更新することで、各WR要求のWRデータを1つの演算テーブルセット505に保持することができる。これによって、仮想的な1つの2RD/2WRの演算テーブルを構成する実施例1の仮想マルチポートテーブルは、2つのWR要求を同時に処理可能とする。
S1209の後、アクセステーブル選択部503は、アクセステーブル検索部(2)501−2Wから受信したWRアドレスが、処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致したか否かを判定する(S1210)。
S1210において、アクセステーブル検索部(2)501−2Wから受信したWRアドレスが、処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致した場合(ステップS1210:Yes)、アクセステーブル選択部503は、一致した管理エントリの処理状況カウンタの値を、書込み時間を示す値に更新する。例えば、アクセステーブル選択部503は、書込み時間が5clkの場合、一致した管理エントリの処理状況カウンタの値を“5”に更新する。また、アクセステーブル選択部503は、一致した管理エントリフィールド801の継続処理用最新アクセス先情報の値を、S1209で選択したYの値に更新する(S1211)。
ここで、処理状況カウンタを更新することによって、アクセステーブル選択部503は、各管理エントリが最新アクセス保持テーブル502−1及び502−2への書込み処理を終了するまで実行していることを示す。また、継続処理用最新アクセス先情報を更新することによって、アクセステーブル選択部503は、各管理エントリが最新アクセス保持テーブル502−1及び502−2への書込み処理を終了するまでに同一WRアドレスのWR要求が到着した場合でも、図12Aに示すS1204の処理において最新アクセス先情報を継続し、WRアクセスを実施する演算テーブルセット505を選択することができる。S1211の後、アクセステーブル選択部503は、S1213の処理に進む。
一方、S1210において、アクセステーブル検索部(2)501−2Wから受信したWRアドレスが、処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致しなかった場合(ステップS1210:No)、アクセステーブル選択部503は、処理状況カウンタの値が“0”であるアクセスフロー管理リスト510の管理エントリのうち、値が最も若い番号(小さい番号)のエントリを抽出する。アクセステーブル選択部503は、抽出された管理エントリを、WR要求に関する処理を新規に実行する内部論理回路に決定する。
そして、アクセステーブル選択部503は、抽出された管理エントリのWRアドレスを、S1201でアクセステーブル検索部(2)501−2Wから取得したWRアドレスの値によって更新する。また、アクセステーブル選択部503は、抽出された管理エントリの処理状況カウンタを、書込み時間を示す値に更新する。また、アクセステーブル選択部503は、抽出された管理エントリの継続処理用最新アクセス先情報の値を、S1209で選択したYの値に更新する(S1212)。
なお、S1212において、アクセステーブル選択部503は、処理状況カウンタの値が“0”であるアクセスフロー管理リスト510の管理エントリのうち、値が最も若い番号のエントリを抽出したが、アクセステーブル選択部503は、処理状況カウンタが“0”であるアクセスフロー管理リスト510の管理エントリのうちのいずれかであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、アクセステーブル選択部503は、値が最も老いた番号(大きい番号)のエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
S1212の後、アクセステーブル選択部503は、S1213の処理に進む。そして、S1213において、アクセステーブル選択部503は、最新アクセス保持テーブル502−1R、502−1W、502−2R、および502−2Wの、S1201でアクセステーブル検索部(2)501−2Wから取得したWRアドレスの値が示すエントリ(フローID)に、S1209で選択したYの値を書き込む。
これによって、アクセステーブル選択部503は、最新アクセス先情報の変更をアクセステーブル検索部501に通知することができる。最新アクセス先情報の変更とは、アクセステーブル検索部(2)501−2Wから受信したWR要求に対して、演算テーブルセット505−Yが備える演算テーブル504(504−Ya及び504−Yb)へWRデータを書き込んだことである。また、アクセステーブル検索部501は、後続するRD要求あるいはWR要求を受信した際に、RDアクセステーブル検索処理S950及びWRアクセステーブル検索処理S1050において、その変更情報を取得して処理することができる。
なお、実施例1において、アクセステーブル検索部(1)501−1Wから受信したWR要求に対応する最新アクセス先情報と、アクセステーブル検索部(2)501−2Wから受信したWR要求に対応する最新アクセス先情報が同じと判定された場合、(S1209からS1213において)アクセステーブル検索部(2)501−2Wから受信したWR要求に対応する最新アクセス先情報を変更(演算テーブルセット505−Xから505−Yに変更)したが、アクセステーブル検索部(1)501−1Wから受信したWR要求に対応する最新アクセス先情報を変更し、演算テーブルセット505が競合しないように処理しても良い。
S1213の後、アクセステーブル選択部503は、図12A及び図12Bに示すWRアクセステーブル選択処理S1250を終了する(S1214)。
以下に、入力テーブル更新部309が実行するアクセスフロー管理処理S1350について説明する。
<アクセスフロー管理処理S1350>
図13は、実施例1の入力テーブル更新部309が実行するアクセスフロー管理処理S1350を示すフローチャートである。入力テーブル更新部309は、1クロック毎に(S1300)、アクセスフロー管理リスト510の全てのエントリの処理状況カウンタフィールド803が0であるか否かを判定する(S1301)。
アクセスフロー管理リスト510の全てのエントリの処理状況カウンタフィールド803が0であると、S1301において判定された場合(ステップS1301:Yes)、入力テーブル更新部309は、アクセスフロー管理処理S1350を終了する(S1303)。
一方、アクセスフロー管理リスト510のエントリに処理状況カウンタフィールド803が0でないエントリがあるとS1301において判定された場合(ステップS1301:No)、入力テーブル更新部309は、処理状況カウンタフィールド803の列に含まれる0以外の値から1を減算する(S1302)。S1302の後、入力テーブル更新部309は、アクセスフロー管理処理S1350を終了する(S1303)。
以下に、実施例のテーブル更新処理によって変化する演算結果の例を示す。
<テーブル更新処理例>
図14は、実施例1のテーブル更新処理を実行する際の演算結果を示す説明図である。図14は、1clkに2パケットが到着し、その2つパケットに関する情報が同じ演算テーブルセット505に格納されていた場合において、テーブル更新処理を実施した際の演算結果の変化例を示す。実施例1において、入力パケット制御部303が受信する2つの入力パケットを、第1のパケット(フローIDは#1)及び第2のパケット(フローIDは#2)と記載する。
また、図14において、最新アクセス先情報602−11は、フローIDに“#1”を含む最新アクセス保持テーブル502−1(502−1R、502−1W)のエントリの最新アクセス先情報の値である。また、最新アクセス先情報602−12は、フローIDに“#2”を含む最新アクセス保持テーブル502−1(502−1R、502−1W)のエントリの最新アクセス先情報の値である。
また、最新アクセス先情報602−21は、フローIDフィールド601に“#1”を含む最新アクセス保持テーブル502−2(502−2R、502−2W)のエントリの最新アクセス先情報の値である。最新アクセス先情報602−22は、フローIDに“#2”を含む最新アクセス保持テーブル502−2(502−2R、502−2W)のエントリの最新アクセス先情報の値である。
また、図14において、演算結果702−111は、フローIDに“#1”を含む演算テーブル504−1aの演算結果の値である。また、演算結果702−112は、フローIDに“#2”を含む演算テーブル504−1aの演算結果の値である。また、演算結果702−121は、フローIDに“#1”を含む演算テーブル504−1bの演算結果の値である。また、演算結果702−122は、フローIDに“#2”を含む演算テーブル504−1bの演算結果の値である。また、演算結果702−211は、フローIDに“#1”を含む演算テーブル504−2aの演算結果の値である。また、演算結果702−212は、フローIDに“#2”を含む演算テーブル504−2aの演算結果の値である。また、演算結果702−221は、フローIDに“#1”を含む演算テーブル504−2bの演算結の値である。また、演算結果702−222は、フローIDに“#2”を含む演算テーブル504−2bの演算結果の値である。
また、図14において、演算結果702−301、及び、演算結果702−302は、実施例1において仮想マルチポートテーブルを演算テーブル504(504−1a、504−1b、504−2a、及び、504−2b)により構成した場合における、フローIDに“#1”を含む仮想マルチポートテーブルの演算結果の値、及び、フローIDに“#2”を含む仮想マルチポートテーブルの演算結果の値である。
実施例1では、入力パケット制御部303に2つのパケットが到着すると(T1311)、入力パケット制御部303は、入力テーブル更新部309にRD要求を送信する。ここでは、第1のパケットに関するRD要求がアクセステーブル検索部501−1Rに送信され、第2のパケットに関するRD要求がアクセステーブル検索部501−2Rに送信されたとする。
T1311において、アクセステーブル検索部501−1R及びアクセステーブル検索部501−2Rは、それぞれRDアクセステーブル検索処理S950を実施し、検索の結果、それぞれ最新アクセス先情報0(演算テーブルセット505−1)を取得する。そして、アクセステーブル選択部503は、RDアクセステーブル選択処理S1150を実施し、演算テーブル504−1aから演算結果A1、及び、演算テーブル504−1bから演算結果A2を取得する。
演算結果の取得後、入力パケット制御部303は、第1のパケット及び第2のパケットについてそれぞれ演算処理を実施し、演算結果A1及びA2を、それぞれ演算結果A1’及びA2’に更新する。
演算結果の更新後、入力パケット制御部303は、入力テーブル更新部309にWR要求を送信する。ここでは、第1のパケットに関するWR要求(演算結果A1’含む)がアクセステーブル検索部501−1Wに送信され、第2のパケットに関するWR要求(演算結果A2’含む)がアクセステーブル検索部501−2Wに送信されたとする。
アクセステーブル検索部501−1W及びアクセステーブル検索部501−2Wは、それぞれWRアクセステーブル検索処理S1050を実施し、検索の結果、それぞれ最新アクセス先情報0(演算テーブルセット505−1)を取得する。そして、アクセステーブル選択部503は、WRアクセステーブル選択処理S1250を実施し、演算テーブル504−1a及び演算テーブル504−1bのフローID“#1”を含むエントリの演算結果フィールド702へ演算結果A1’を、演算テーブル504−2a及び演算テーブル504−2bのフローID“#2”を含むエントリの演算結果へ演算結果A2’を更新する。
さらに、アクセステーブル選択部503は、最新アクセス保持テーブル502−1及び最新アクセス保持テーブル502−2のフローIDに“#2”を含むエントリの最新アクセス先情報へ“1”(演算テーブルセット505−2)の値を更新する。
前述の処理によれば、仮想マルチポートテーブルの演算結果702−301及び演算結果702−302は、T1311ではそれぞれA1及びA2であったが、T1312では、A1’及びA2’に更新されたように仮想的に処理することができる。
前述のとおり、実施例1によれば、通信装置3は、入力テーブル更新部309において、複数の1RD/1WRの演算テーブル504(504−1a、504−1b、504−2a、及び、504−2b)により仮想マルチポートテーブルを構成する。そして、通信装置3は、最新アクセス保持テーブル502(502−1、及び、502−2)によりフロー毎の最新の演算結果を保持する演算テーブルセット505の情報を管理する。これによって、通信装置3は、毎clkに2パケットが到着した場合でもテーブル更新処理を実施することが可能である。
従って、実施例1によれば、1clk内に複数のパケットが到着するような高速パケット処理において、1つのテーブルは1clk内にRD及びWRがそれぞれ1個ずつ処理することしかできない場合でも、仮想的な1つのテーブルを構成して1clk内に複数個のRD、及び、複数個のWRを同時に実施することで、帯域制御機能のような演算機能のテーブル更新処理を実現することができる。
(実施例2)
実施例1における通信装置3は、仮想マルチポートテーブルにより、1つの仮想的な2RD/2WRテーブルを構成し、毎clkに2パケットが到着した際のテーブル更新処理を実施した。実施例2における通信装置は、さらに、仮想的な1つの3RD/3WRテーブルを構成し、毎clkに3パケットが到着した際のテーブル更新処理を実施する。実施例2では、実施例1と同様に、帯域制御機能のような演算機能に本発明を適用する。実施例におけるパケット到着間隔とテーブル更新処理タイミングの関係の概要を以下に示す。
<パケット到着間隔とテーブル更新処理タイミング例>
図15は、実施例2のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、1clkに3パケットが到着し、実施例1の図2A及び図2Bと同様に、テーブル更新時間が5clkである場合、通信装置3に毎clkに3パケットが到着すると、一つ目、二つ目、及び三つ目のパケット到着によるWRと、十三個目、十四個目、及び十五個目のパケット到着によるRDは同じタイミングとなる。この場合、テーブルは毎clkに3個のRDと3個のWRを同時に処理(以降、3個のRDと3個のWRを同時に処理することを3RD/3WRと記載)する必要があるが、通信装置が備えるテーブルは1RD/1WRであり、1clkにRD及びWRをそれぞれ3個ずつ処理することはできない。
そこで、実施例2における通信装置3は、以下で説明する仮想マルチポートRAM(仮想マルチポートテーブル)を構成し、毎clkに3パケットが到着した際にテーブル更新処理を実施する。実施例2における仮想マルチポートテーブルは、複数の1RD/1WRのテーブルから構成され、仮想的な1つの3RD/3WRテーブルを実現する。以下、実施例2について図16から図22を用いて説明する。
<入力パケット制御部の構成例>
図16は、実施例2の入力パケット制御部の論理的な構成を示すブロック図である。入力パケット制御部1600は、振分部1601、3つのパケット処理部402(402−1〜402−3)、多重部1603、及び、調停部1604を備える。実施例2におけるパケット処理部402は、実施例1におけるパケット処理部402と同じである。
振分部1601は、入力パケット制御部1600が入出力回線インタフェース301から入力パケットを受信した場合、パケット処理を実行するパケット処理部402を、パケット処理部402−1〜パケット処理部402−3の中から決定し、決定したパケット処理部402にパケットを振分ける。振分部1601は、パケットの振分け先の数の差を除き、実施例1における振分部401と同じである。
調停部1604は、パケット処理部402(402−1〜402−3)から転送されるRD要求やWR要求を、パケット処理部402−1用、パケット処理部402−2用、パケット処理部402−3用でそれぞれ別に入力テーブル更新部1809に転送する。また、調停部1604は、上記と同様に、パケット処理部402−1用、パケット処理部402−2用、パケット処理部402−3用にそれぞれ別に入力テーブル更新部1809から受信したRD結果をパケット処理部402(402−1〜402−3)に通知する。調停部1604は、パケット処理部402(402−1〜402−3)や入力テーブル更新部1809への転送先の数の差を除き、実施例1における調停部404と同じである。
多重部1603は、各パケット処理部402から受信したパケットを多重し、到着順にSWインタフェース305に送信する。実施例2において、入力パケット制御部1600がパケット処理に要する時間はあらかじめ定められる。
なお、実施例2において、パケット処理部402の数を通信装置3が接続される回線速度(同時到着パケット数)に従って「3」としたが、実施例1と同様に、Nとしても良い。この際、調停部1604は、パケット処理部402から転送されるRD要求やWR要求をNから3に調停して入力テーブル更新部1809に転送する。
図17は、図16に示した実施例2の入力テーブル更新部1709の論理的な構成を示すブロック図である。入力テーブル更新部1709は、アクセステーブル検索部1701(1701−1〜1701−3)、最新アクセス保持テーブルセット1800(1800−1〜1800−3)、アクセステーブル選択部1703、演算テーブル504(504−1a〜504−1c、504−2a〜504−2c、及び、504−3a〜504−3c)、及び、アクセスフロー管理リスト1710を備える。
ここで、各最新アクセス保持テーブルセット1800−1、1800−2、および1800−3はそれぞれ、最新アクセス保持テーブル1800A−1〜1800C−1、1800A−2〜1800C−2および1800A−3〜1800C−3を備える。また、演算テーブルセット1705−1は、演算テーブル504−1a〜504−1cの総称、演算テーブルセット1705−2は、演算テーブル504−2a〜504−2cの総称、演算テーブルセット1705−3は、演算テーブル504−3a〜504−3cの総称である。
実施例2においては、この9つの演算テーブル504(504−1a〜504−1c、504−2a〜504−2c、及び、504−3a〜504−3c)(1つ1つは1RD/1WRのテーブル)によって仮想マルチポートテーブルを構成し、仮想的な1つの3RD/3WRの演算テーブルを実現する。
アクセステーブル検索部1701(1701−1〜1701−3)は、参照するテーブルが最新アクセス保持テーブルセット1800であることを除き、実施例1におけるアクセステーブル検索部501と処理は同じである。アクセステーブル検索部1701(1701−1〜1701−3)は、対応する最新アクセス保持テーブルセット1800(1800−1、1800−2、および1800−3)を参照し、後述する最新アクセス先情報をアクセステーブル選択部1703へ通知する。
なお、実施例2においても、実施例1と同様、各アクセステーブル検索部1701−1、1701−2および1701−3については、RD要求用とWR要求用が存在するが、ここでは、便宜上、RD要求用もWR要求用もまとめて、アクセステーブル検索部1701−1、1701−2および1701−3として説明する。
同様に、最新アクセス保持テーブルセット1800−1、1800−2、1800−3についても、実施例1と同様、RD要求用とWR要求用が存在するが、ここでは、便宜上、RD要求用もWR要求用も、まとめて、最新アクセス保持テーブルセット1800−1、1800−2、1800−3として説明する。
アクセステーブル選択部1703は、アクセステーブル検索部1701からRD要求を受信した場合、後述するRDアクセステーブル選択処理S2050を実行し、演算テーブル504から情報を読み出す処理部である。また、アクセステーブル選択部1703は、アクセステーブル検索部1701からWR要求を受信した場合、後述するWRアクセステーブル選択処理S2250を実行し、演算テーブル504に情報を書き込む処理部である。
アクセステーブル選択部1703は、アクセステーブル検索部1701からRD要求やWR要求と同時に受信する最新アクセス先情報を用いて、データを読み出す演算テーブル504や、データを書き込む演算テーブル504を選択する。さらに、アクセステーブル選択部1703は、WR要求と同時に受信した最新アクセス先情報が示す演算テーブルセットから、書き込む演算テーブル504(演算テーブルセット1705)を変更した場合、その変更結果を最新アクセス保持テーブルセット1800−1〜1800−3の全てに書き戻す。
アクセスフロー管理リスト1710は、アクセステーブル選択部1703がWRアクセステーブル選択処理S2250を実施している入力パケットのWRアドレスと、アクセステーブル選択部1703の処理状況と、継続処理用の最新アクセス先情報を示す。
入力テーブル更新部1709は、アクセスフロー管理リスト1710を、論理回路302に備わるメモリ等に保持し、実施例1と同じアクセスフロー管理処理S1350において、アクセスフロー管理リスト1710を管理する。そして、アクセステーブル選択部1703は、WRアクセステーブル選択処理S2150(図21A、図21Bを参照)において、アクセスフロー管理リスト1710を更新する。
<最新アクセス保持テーブルセットの記憶内容例>
図18は、実施例2の最新アクセス保持テーブルセットを示す説明図である。最新アクセス保持テーブルセット1800−1、1800−2、および1800−3を総称して、最新アクセス保持テーブルセット1800とする。また、最新アクセス保持テーブル1800A−1、1800A−2、および1800A−3を総称して、最新アクセス保持テーブル1800Aとする。また、最新アクセス保持テーブル1800B−1、1800B−2、および1800B−3を総称して、最新アクセス保持テーブル1800Bとする。また、最新アクセス保持テーブル1800C−1、1800C−2、および1800C−3を総称して、最新アクセス保持テーブル1800Cとする。
最新アクセス保持テーブルセット1800は、通信装置3が受信したパケットに関して、フロー毎の最新情報を書き込んでいる演算テーブル504(504−1a〜504−1c、504−2a〜504−2c、504−3a〜504−3c)の情報(ここでは演算テーブルセット1705として管理)を有するテーブルセットである。最新アクセス保持テーブルセット1800は、最新アクセス保持テーブル1800A〜1800Cで構成される。
最新アクセス保持テーブル1800A〜1800Cは、それぞれ、フローIDフィールド1801A〜C、及び、最新アクセス先情報フィールド1802A〜Cを含み、フローごとに各フィールド1801A〜C、1802A〜Cの値を記憶する。フローIDフィールド1801A〜Cは、入力パケットのフローIDを含む。最新アクセス先情報フィールド1802A〜Cは、パケットのフロー毎の演算結果の最新情報を保持する演算テーブルセットに関する値を含む。
実施例2においては、最新アクセス先情報フィールド1802A〜Cの値の組み合わせで演算テーブルセット1705を決定する。例えば、実施例2では、最新アクセス先情報フィールド1802A〜Cの値の組み合わせ(A、B、C)が、(0、0、0)、(0、0、1)、(0、1、0)、(0、1、1)、(1、0、0)、(1、0、1)、(1、1、0)、あるいは、(1、1、1)の時に、それぞれ、演算テーブルセット1705−1、演算テーブルセット1705−2、演算テーブルセット1705−3、演算テーブルセット1705−3(予備)、演算テーブルセット1705−1(予備)、演算テーブルセット1705−3、演算テーブルセット1705−2、あるいは、演算テーブルセット1705−1を示す。なお、最新アクセス保持テーブルセット1800は、図21BのS2113において更新される。
<アクセスフロー管理リスト1710の記憶内容例>
図19は、実施例2のアクセスフロー管理リスト1710を示す説明図である。アクセスフロー管理リスト1710は、管理エントリフィールド1901、WRアドレスフィールド1902、処理状況カウンタフィールド1903、及び、継続処理用最新アクセス先情報フィールド1904を含み、管理エントリごとに、各フィールド1901〜1904の値を記憶する。管理エントリフィールド1901は、エントリ数を除き、実施例1における管理エントリフィールド801と同じである。WRアドレスフィールド1902は、実施例1におけるWRアドレスフィールド802と同じである。
処理状況カウンタフィールド1903は、実施例1における処理状況カウンタフィールド803と同じである。テーブルへの書込み時間(実施例1における最新アクセス保持テーブル502と、実施例2における最新アクセス保持テーブルセット1800)に差がある場合は、その差を除く。
継続処理用最新アクセス先情報フィールド1904は、継続処理するための最新アクセス先情報を記憶する。後述するWRアクセステーブル選択処理S2150において、アクセステーブル選択部1703が、最新アクセス保持テーブルセット1800への書込み処理を終了するまでに同一WRアドレスのWR要求が到着した場合でも、継続してWR要求を処理できるように保持する演算テーブルセット1705に関する値が格納される。
以下に、実施例2のアクセステーブル選択部1703が実行するRDアクセステーブル選択処理S2050について説明する。
<RDアクセステーブル選択処理S2050>
図20は、実施例2のアクセステーブル選択部1703が実行するRDアクセステーブル選択処理S2050を示すフローチャートである。アクセステーブル選択部1703は、アクセステーブル検索部1701(1701−1〜1701−3)からRD要求を受信した場合(アクセステーブル検索部1701−1、アクセステーブル検索部1701−2、及び、アクセステーブル検索部1701−3からそれぞれのRD要求を同時に受信する場合もある)(S2000)、アクセステーブル検索部1701からRD要求と同時に受信するRDアドレス、及び、最新アクセス先情報を取得する(S2001)。
S2001の後、アクセステーブル選択部1703は、S2001において取得したRDアドレスで、S2001において取得した最新アクセス先情報が示す演算テーブル504(504−1a〜504−1c、504−2a〜504−2c、504−3a〜504−3cのいずれか)を検索し、演算結果を取得する(S2002)。ここで、実施例2では、アクセステーブル選択部1703は、S2000においてアクセステーブル検索部1701−1からRD要求を取得した場合、S2001において取得した最新アクセス先情報が示す演算テーブルセット1705−X(Xは1〜3であり、演算テーブルセット1705−1〜演算テーブルセット1705−3のいずれかを示す)のa側の演算テーブル(X−a)504−Xaを検索する。
また、アクセステーブル選択部1703は、S2000においてアクセステーブル検索部1701−2からRD要求を取得した場合、S2001において取得した最新アクセス先情報が示す演算テーブルセット1705−Xのb側の演算テーブル(X−b)504−Xbを検索する。さらに、アクセステーブル選択部1703は、S2000においてアクセステーブル検索部1701−3からRD要求を取得した場合、S2001において取得した最新アクセス先情報が示す演算テーブルセット1705−Xのc側の演算テーブル(X−c)504−Xcを検索する。
S2002において、アクセステーブル検索部1701−1〜アクセステーブル検索部1701−3から同時に受信するRD要求に対して、アクセステーブル選択部1703は、別々の演算テーブル504を検索する。これによって、仮想的な1つの3RD/3WRの演算テーブルを構成する実施例2の仮想マルチポートテーブルは、3つのRD要求を同時に処理可能とする。
なお、実施例2において、アクセステーブル検索部1701−1のRD要求と演算テーブル504−Xa、アクセステーブル検索部1701−2のRD要求と演算テーブル504−Xb、及び、アクセステーブル検索部1701−3のRD要求と演算テーブル504−Xcを対応付けたが、このアクセステーブル検索部1701と演算テーブル504の対応付けは、如何なる組み合わせでも良い。
また、実施例2において、アクセステーブル検索部1701−1〜アクセステーブル検索部1701−3から同時にRD要求を受信していない(RD要求はひとつ)場合、あるいは、アクセステーブル検索部1701−1〜アクセステーブル検索部1701−3から同時にRD要求を受信したが最新アクセス先情報が示す演算テーブルセット1705−Xが異なる場合は、アクセステーブル選択部1703は、RD要求に対して、演算テーブル504−Xa、演算テーブル504−Xb、あるいは、演算テーブル504−Xcのいずれを検索しても良い。
S2002の後、S2002において取得した演算結果をRD要求の送信元であるアクセステーブル検索部1701に通知し(S2003)、図20に示すRDアクセステーブル選択処理S2050を終了する(S2004)。ここで、アクセステーブル検索部1701が、S2003において通知された演算結果をRDデータとして入力パケット制御部1600に通知することで、入力パケット制御部1600における演算テーブル504へのRDは完了する。
以下に、図21A及び図21Bによって、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150について説明する。
<WRアクセステーブル選択処理S2150>
図21Aは、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150の詳細な処理手順例を示すフローチャート(前半)である。図21Aは、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150のうち、受信したWR要求が1つであった場合の処理、及び、受信したWR要求が2つ又は3つであり、その2つ又は3つのWR要求が示す最新アクセス先情報がそれぞれ異なる場合の処理を示す。
アクセステーブル選択部1703は、アクセステーブル検索部1701(1701−1〜1701−3)からWR要求を受信した場合(アクセステーブル検索部1701−1〜アクセステーブル検索部1701−3からそれぞれのWR要求を同時に受信する場合もある)(S2100)、アクセステーブル検索部1701からWR要求と同時に受信するWRアドレス、WRデータ、及び、最新アクセス先情報を取得する(S2101)。
S2101の後、アクセステーブル選択部1703は、アクセスフロー管理リスト1710の全ての管理エントリの処理状況カウンタの値が“0”と異なるか否かを判定する(S2102)。
S2102において、アクセスフロー管理リスト1710の全ての管理エントリ2001の処理状況カウンタが“0”と異なると判定された場合(ステップS2102:Yes)、アクセステーブル選択部1703は、図21Bに示す処理に進み、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了する(S2114)。
一方、S2102において、アクセスフロー管理リスト1710の管理エントリのうち、処理状況カウンタが“0”である管理エントリが少なくとも1つ以上ある場合(ステップS2102:No)、アクセステーブル選択部1703は、S2103の処理に進む。
なお、S2102において、S2100でアクセステーブル検索部1701−1〜アクセステーブル検索部1701−3から同時にWR要求を受信した場合は、アクセステーブル選択部1703は、管理エントリにおいて、複数エントリ(2エントリ又は3エントリ)分の処理が可能かどうかを確認する。アクセステーブル選択部1703は、アクセスフロー管理リスト1710の管理エントリのうち、処理状況カウンタが“0”である管理エントリがS2100で受信した複数エントリ分の処理が可能である場合、S2103の処理に進む。
アクセステーブル選択部1703は、処理状況カウンタが“0”である管理エントリが、S2100で受信した複数エントリ分の処理が可能でない場合、図21Bに示す処理に進み、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了する。また、アクセステーブル選択部1703は、処理状況カウンタが“0”である管理エントリが、S2100で受信した複数エントリ分の処理が可能でない場合は、処理状況カウンタが“0”である管理エントリ分のWR要求についての処理はS2103の処理に進み、残りのWR要求についての処理は図21Bに示す処理に進み、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了しても良い。
S2103において、アクセステーブル選択部1703は、S2101において取得したWRアドレスの値と処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致するか否かを判定する(S2103)。S2103において、S2101において取得したWRアドレスの値と処理状況カウンタ2003が“0”と異なる管理エントリ2001のWRアドレスの値と一致しないと判定された場合(ステップS2103:No)、アクセステーブル選択部1703は、S2101において取得した最新アクセス先情報を用いて、S2105の処理に進む。
一方、S2103において、S2101において取得したWRアドレスの値と処理状況カウンタ2003が“0”と異なる管理エントリのWRアドレスの値と一致すると判定された場合(ステップS2103:Yes)、アクセステーブル選択部1703は、S2101において取得した最新アクセス先情報を、取得したWRアドレスが一致した管理エントリの継続処理用最新アクセス先情報2004で上書きして保持し(S2104)、S2105の処理に進む。
そして、アクセステーブル選択部1703は、S2100において複数のWR要求を受信したか否かを判定する(S2105)。S2105において、S2100において複数のWR要求を受信していないと判定された場合(ステップS2105:No)、アクセステーブル選択部1703が受信したWR要求は1つである。このため、アクセステーブル選択部1703は、S2101において取得した最新アクセス先情報、あるいは、S2104において上書きした最新アクセス先情報が示す演算テーブルセット1705−Xが備えるa側〜c側の演算テーブル504(504−Xa〜504−Xc)の、S2101において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む(S2106)。なお、Xは1〜3であり、演算テーブルセット1705−1〜演算テーブルセット1705−3のいずれかを示す。
実施例2では、アクセステーブル選択部1703が、演算テーブルセット1705が備えるa側〜c側の演算テーブル504(504−Xa〜504−Xc)に同じWRデータを更新することで、演算テーブルセット1705の情報を同期する。これにより、前述したRDアクセステーブル選択処理S2050のS2002において、演算テーブルセット1705内の演算テーブル504は同期されているため、a側〜c側の演算テーブル504のいずれのテーブルを検索しても同じ情報を取得することができる。
S2106の後、図21Bに示す処理に進み、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了する(S2114)。
一方、S2105において、S2100において複数のWR要求を受信していると判定された場合(ステップS2105:Yes)、アクセステーブル選択部1703が受信したWR要求は2つ又は3つである。アクセステーブル選択部1703は、アクセステーブル検索部1701(1701−1〜1701−3)から受信したWR要求に対応する最新アクセス先情報(S2101において取得、あるいは、S2104において上書き)のうち、同じ値のペアがあるか否かを判定する(S2107)。
S2107において、同じ値のペアがないと判定された場合(ステップS2107:No)、受信した複数のWR要求に対して更新しようとする演算テーブルセット1705がそれぞれ異なることを示す。このため、アクセステーブル選択部1703は、それぞれの最新アクセス先情報が示す演算テーブルセット1705−Xが備えるa側〜c側の演算テーブル504(504−Xa〜504−Xc)の、S2101において取得したそれぞれのWRアドレスが示すエントリに、取得したそれぞれのWRデータを書き込む(S2108)。
S2108の後、図21Bに示す処理に進み、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了する(S2114)。
一方、S2107において、同じ値のペアがあると判定された場合(ステップS2107:Yes)、2つ又は3つのWR要求に対して更新しようとする演算テーブルセット1705が同じであることを示す。アクセステーブル選択部1703は、図21Bに示すS2109の処理に進み、2つ又は3つのWR要求に対して更新しようとする演算テーブルセット1705が競合しないよう選択する。
図21Bは、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150の詳細な処理手順例を示すフローチャート(後半)である。図21Bは、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150のうち、受信したWR要求が2つ又は3つであり、その2つ又は3つのWR要求が示す最新アクセス先情報が同じ場合の処理を示す。
S2109において、アクセステーブル選択部1703は、最新アクセス先情報が同じ値のペアを構成したWR要求のうち、最も若い番号のアクセステーブル検索部1701から受信したWR要求に対しては、最新アクセス先情報が示す演算テーブルセット1705−Xが備えるa側〜c側の演算テーブル504(504−Xa〜504−Xc)の、S2101において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む。
また、アクセステーブル選択部1703は、最新アクセス先情報が同じ値のペアを構成したWR要求のうち、老いた番号(老番1)のアクセステーブル検索部1701から受信したWR要求に対しては、最新アクセス先情報が示す演算テーブルセット1705−Xと異なる、演算テーブルセット1705−Yが備えるa側〜c側の演算テーブル504(504−Ya〜504−Yc)の、S2101において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む。なお、Yは1〜3であり、演算テーブルセット1705−1〜演算テーブルセット1705−3のいずれかを示す。また、YはXと異なる値をとる。
ここで、アクセステーブル選択部1703が3つのWR要求を受信し、最新アクセス先情報が同じ値のペアを構成したWR要求が2つであった場合、ペアを構成しなかったWR要求の最新アクセス先情報の値とYの値が競合しないように、アクセステーブル選択部1703は、Yの値を決定する。
さらに、アクセステーブル選択部1703が3つのWR要求を受信し、最新アクセス先情報が同じ値のペアを構成したWR要求が3つであった場合、アクセステーブル選択部1703は、最新アクセス先情報が同じ値のペアを構成したWR要求のうち、最も老いた番号(老番2)のアクセステーブル検索部1701から受信したWR要求に対しては、最新アクセス先情報が示す演算テーブルセット1705−Xと異なる、演算テーブルセット1705−Zが備えるa側〜c側の演算テーブル504(504−Za〜504−Zc)の、S2101において取得したWRアドレスが示すエントリに、取得したWRデータを書き込む(S2109)。なお、Zは1〜3であり、演算テーブルセット1705−1〜演算テーブルセット1705−3のいずれかを示す。また、Zは、X及びYと異なる値をとる。
S2109において、アクセステーブル検索部1701−1〜アクセステーブル検索部1701−3から同時に受信するWR要求に対して、アクセステーブル選択部1703は、別々の演算テーブルセット1705が備える演算テーブル504をそれぞれ更新することで、各WR要求のWRデータを1つの演算テーブルセット1705に保持することができる。これによって、仮想的な1つの3RD/3WRの演算テーブルを構成する実施例2の仮想マルチポートテーブルは、3つのWR要求を同時に処理可能とする。
S2109の後、アクセステーブル選択部1703は、老番1あるいは老番2のアクセステーブル検索部1701から受信したWRアドレスが、処理状況カウンタが“0”と異なる管理エントリのWRアドレスの値と一致したか否かを判定する(S2110)。
S2110において、一致したと判定された場合(ステップS2110:Yes)、アクセステーブル選択部1703は、一致した管理エントリの処理状況カウンタの値を、書込み時間を示す値に更新する。また、アクセステーブル選択部1703は、一致した管理エントリの継続処理用最新アクセス先情報の値を、S2109で選択したYあるいはZの値にそれぞれ更新する(S2111)。S2111の後、アクセステーブル選択部1703は、S2113の処理に進む。
一方、S2110において、一致しなかったと判定された場合(ステップS2110:No)、アクセステーブル選択部1703は、処理状況カウンタの値が“0”であるアクセスフロー管理リスト1710の管理エントリのうち、値が最も若い番号(小さい番号)のエントリを抽出する。アクセステーブル選択部1703は、抽出された管理エントリを、WR要求に関する処理を新規に実行する内部論理回路に決定する。
そして、アクセステーブル選択部1703は、抽出された管理エントリのWRアドレスを、S2101でアクセステーブル検索部1701から取得したWRアドレスの値によって更新する。また、アクセステーブル選択部1703は、抽出された管理エントリの処理状況カウンタを、書込み時間を示す値に更新する。また、アクセステーブル選択部1703は、抽出された管理エントリの継続処理用最新アクセス先情報の値を、S2109で選択したYあるいはZの値にそれぞれ更新する(S2112)。
S2112の後、アクセステーブル選択部1703は、S2113の処理に進む。そして、S2113において、アクセステーブル選択部1703は、最新アクセス保持テーブルセット1800−1〜1800−3の、S2101で老番1のアクセステーブル検索部1701から取得したWRアドレスの値が示すエントリ(フローID)に、S2109で選択したYの値を書き込む。
また、最新アクセス先情報が同じ値のペアを構成したWR要求が3つであった場合は、最新アクセス保持テーブルセット1800−1〜1800−3の、S2101で老番2のアクセステーブル検索部1701から取得したWRアドレスの値が示すエントリ(フローID)に、S2109で選択したZの値を書き込む。
これによって、アクセステーブル選択部1703は、最新アクセス先情報の変更をアクセステーブル検索部1701(1701−1〜1701−3)に通知し、アクセステーブル検索部1701は、後続するRD要求あるいはWR要求を受信した際に、その変更情報を取得して処理することができる。
S2113の後、アクセステーブル選択部1703は、図21A及び図21Bに示すWRアクセステーブル選択処理S2150を終了する(S2114)。ここで、アクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150における最新アクセス先情報の変更処理(S2113)について説明する。
図21BのS2113の処理では、最新アクセス保持テーブルセット1800−1〜1800−3の2つのエントリの値を更新する場合がある。最新アクセス保持テーブルセット1800は、図18に示したとおり、最新アクセス保持テーブル1800A〜1800Cで構成されるが、最新アクセス保持テーブル1800A〜1800Cのそれぞれのテーブルは、1RD/1WRのテーブルである。このため、実施例2では、1つのエントリの値の更新について、最新アクセス保持テーブル1800A〜1800Cのいずれか1つのテーブルを更新する。
<WRアクセステーブル選択処理S2150における最新アクセス先情報の変更処理例>
図22は、実施例2のアクセステーブル選択部1703が実行するWRアクセステーブル選択処理S2150における最新アクセス先情報の変更処理例を示す説明図である。図22は、到着したパケットのフローの最新アクセス先情報が示すテーブルセットが全て1であった場合から、各フローの最新アクセス先情報を更新する例を示す。
具体的には、図22は、フローID#1、フローID#2、及び、フローID#3の最新アクセス先情報1902A〜Cの組み合わせ(A、B、C)が、(0、0、0)(演算テーブルセット1)であった場合から、フローID#1とフローID#2の2つのパケットが同時に到着した場合の最新アクセス先情報の更新例、及び、フローID#1〜フローID#3との3つのパケットが同時に到着した場合の最新アクセス先情報の更新例を示す。
フローID#1とフローID#2の2つのパケットが同時に到着した場合、例えば、アクセステーブル選択部1703は、最新アクセス保持テーブル1800CのフローID#2のエントリに保持する最新アクセス先情報の値を0から1に変更し、最新アクセス先情報1902A〜Cの組み合わせ(A、B、C)を(0、0、1)とする(演算テーブルセット2)。さらに、フローID#1とフローID#2とフローID#3の3つのパケットが同時に到着した場合、例えば、アクセステーブル選択部1703は、最新アクセス保持テーブル1800BのフローID#3のエントリに保持する最新アクセス先情報の値を0から1に変更し、最新アクセス先情報1902A〜Cの組み合わせ(A、B、C)を(0、1、0)とする(演算テーブルセット3)。
実施例2では、上記のように、1つのエントリの最新アクセス先情報の更新について、最新アクセス保持テーブル1800A〜1800Cのいずれか1つのテーブルを更新することにより、複数パケットに対する最新アクセス先情報の変更を実現する。
前述のとおり、実施例2によれば、通信装置3は、入力テーブル更新部1709において、複数の1RD/1WRの演算テーブル504(504−1a〜504−1c、504−2a〜504−2c、504−3a〜504−3c)により仮想マルチポートテーブルを構成し、最新アクセス保持テーブルセット1800(1800−1〜1800−3)によりフロー毎の最新の演算結果を保持する演算テーブルセット1705の情報を管理する。これによって、実施例2の通信装置3は、毎clkに3パケットが到着した場合でもテーブル更新処理を実施することが可能である。
さらに、実施例2においては、毎clkに3パケットが到着した場合を示したが、入力テーブル更新部1709において、演算テーブルセット1705の数を例えばK個(Kは任意の自然数)とし、(K−1)個の最新アクセス先情報の変更に対応する最新アクセス保持テーブルセット1800を構成することで、通信装置3は、毎clkにKパケットが到着した場合でもテーブル更新処理を実施することも可能である。
従って、実施例2によれば、実施例1と同様に、1clk内に複数のパケットが到着するような高速パケット処理において、1つのテーブルは1clk内にRD及びWRがそれぞれ1個ずつ処理することしかできない場合でも、仮想的な1つのテーブルを構成して1clk内に複数個のRD、及び、複数個のWRを同時に実施することで、帯域制御機能のような演算機能のテーブル更新処理を実現することができる。
(実施例3)
実施例1における通信装置3は、仮想マルチポートテーブルにより、1つの仮想的な2RD/2WRテーブルを構成し、毎clkに2パケットが到着した際のテーブル更新処理を実施した。実施例1では、帯域制御機能のような演算機能に本発明を適用したが、実施例3では、統計カウント機能のような演算機能に仮想マルチポートテーブルを適用する。
実施例3では、統計カウント機能の統計情報として、受信パケット数、及び、受信バイト数をカウントする。統計カウント機能では、到着パケットによるテーブル更新処理に加え、NIF管理部308(CPU)が統計情報を取得するためのRDがある。実施例3における通信装置は、仮想的な1つの3RD/2WRテーブルを構成し、毎clkに2パケットが到着した際のテーブル更新処理を実施する。
実施例3におけるパケット到着間隔とテーブル更新処理タイミングの関係の概要を以下に示す。
<パケット到着間隔とテーブル更新処理タイミング例>
図23は、実施例3のパケット到着間隔とテーブル更新処理タイミングの概要を示す説明図である。例えば、1clkに2パケットが到着し、図1A、図1B、図15と同様にテーブル更新時間が5clkである場合、通信装置に毎clkに2パケットが到着すると、一つ目及び二つ目のパケット到着によるWRと、九つ目及び十個目のパケット到着によるRDは同じタイミングとなる。
さらに、このタイミングにCPUからの統計情報のRDがある場合、テーブルは1clkに3個のRDと2個のWRを同時に処理(以降、3個のRDと2個のWRを同時に処理することを3RD/2WRと記載)する必要があるが、通信装置が備えるテーブルは1RD/1WRであり、1clkに3個のRDと2個のWRを同時に処理することはできない。
そこで、実施例3における通信装置は、以下で説明する仮想マルチポートRAM(仮想マルチポートテーブル)を構成し、毎clkに2パケットが到着、かつ、CPUからの統計情報のRDがあった際にテーブル更新処理を実施する。実施例3における仮想マルチポートテーブルは、複数の1RD/1WRのテーブルから構成され、仮想的な1つの3RD/2WRテーブルを実現する。
実施例3において、入力パケット制御部は、実施例1及び実施例2における演算処理の代わりにカウント処理を実施して情報を更新する点が異なるのみである。また、実施例3において、CPUに統計情報を通知するため、通信装置の入力テーブル更新部は、統計合算部を備える。一方、統計カウント機能は、パケット到着毎に受信パケット数、及び、受信バイト数をカウントし、CPUに通知する際に合算していれば良いのみであるため、入力テーブル更新部は、実施例1及び実施例2のように、アクセステーブル検索部501、最新アクセス保持テーブル502、アクセステーブル選択部503、及び、アクセスフロー管理リスト510を備えない。以下、実施例3について図24から図26を用いて説明する。
<入力テーブル更新部の構成例>
図24は、実施例3の入力テーブル更新部2409の論理的な構成を示すブロック図である。入力テーブル更新部2409は、統計合算部2401、及び、統計テーブル2404(2404−1a、2404−1b、2404−2a、及び、2404−2b)を備える。ここで、統計テーブルセット2405−1は、統計テーブル2404−1a及び2404−1bの総称であり、統計テーブルセット2405−2は、統計テーブル2404−2a及び2404−2bの総称である。
実施例3においては、この4つの統計テーブル2404(2404−1a、2404−1b、2404−2a、及び、2404−2b)(1つ1つは1RD/1WRのテーブル)によって仮想マルチポートテーブルを構成し、仮想的な1つの3RD/2WRの統計テーブルを実現する。
実施例3において、入力テーブル更新部2409は、入力パケット制御部303から受信する2つのRD要求、あるいは、2つのWR要求に対して、それぞれ統計テーブルセット2405(2405−1、あるいは、2405−2)を備える。入力テーブル更新部2409は、入力パケット制御部303からRD要求を受信すると、その受信したRD要求に対応する統計テーブルセット2405−Xの統計テーブル2404−Xaを参照し、統計情報を取得する。なお、Xは1又は2であり、統計テーブルセット2405−1又は統計テーブルセット2405−2を示す。
また、入力テーブル更新部2409は、入力パケット制御部303からWR要求を受信すると、その受信したWR要求に対応する統計テーブルセット2405−Xの統計テーブル2404−Xa及び統計テーブル2404−XbへWRデータを書き込み、統計情報を更新する。これにより、統計テーブルセット2405が備える統計テーブル2404の情報は同期される。
また、実施例3において、入力テーブル更新部2409は設定レジスタ2407に接続され、NIF管理部308がこの設定レジスタ2407を制御することで、統計情報を取得する。統計合算部2401は、設定レジスタ2407からRD要求を受信した場合、後述する統計通知処理S2450を実行する処理部である。統計合算部2401は、統計テーブル2404を参照し、統計情報を設定レジスタ2407へ通知する。
これにより、入力パケット制御部303からの2つのRD要求と、設定レジスタ2407からの1つのRD要求と、入力パケット制御部303からの2つのWR要求と、が同一クロックで入力されても、それぞれのRD、WRを処理(2RD/2WR)することができる。
<統計テーブルの記憶内容例>
図25は、実施例3の統計テーブル2404を示す説明図である。統計テーブル2404は、通信装置3が受信したパケットについての情報を有するテーブルである。統計テーブル2404は、フローIDフィールド2501、受信パケット数フィールド2502、及び、受信バイト数フィールド2503を含み、フローごとに各フィールド2501〜2503の値を記憶する。
フローIDフィールド2501は、入力パケットのフローIDを含む。受信パケット数フィールド2502は、入力パケット制御部303が受信した入力パケットの数を含む。受信バイト数フィールド2503は、入力パケット制御部303が受信した入力パケットのバイト数の合計値を示す。なお、具体的には、受信パケット数フィールド2502及び受信バイト数フィールド2503は、各統計テーブルセット2405にテーブル更新の要求があったパケット分のみの情報を有する。各統計テーブルセット2405における、同じフローIDのエントリの受信パケット数、及び、受信バイト数をそれぞれ合算することで、入力パケット制御部303が受信した全ての入力パケットの数、及び、入力パケットのバイト数の合計値を示す。
なお、統計テーブルセット2405−1と統計テーブルセット2405−2では、扱うフローが異なる。また、同一の統計テーブルセット内の各テーブルは、書き込み処理により同期されるため、同一フローの同一情報が格納される。具体的には、たとえば、統計テーブル2404−1aと統計テーブル2404−1bとは、同一の情報を記憶し、統計テーブル2404−2aと統計テーブル2404−2bとは、同一の情報を記憶する。
以下に、統計合算部2401が実行する統計通知処理S2650について説明する。
<統計通知処理S2650>
図26は、実施例3の統計合算部2401が実行する統計通知処理S2650を示すフローチャートである。統計合算部2401は、設定レジスタ2407からRD要求を受信した場合(S2600)、設定レジスタ2407からRD要求と同時に受信するRDアドレスを取得する(S2601)。
S2601の後、統計合算部2401は、S2601において取得したRDアドレスに対応するフローIDで、統計テーブル2404−1b及び統計テーブル2404−2bを検索し、それぞれの受信パケット数及び受信バイト数を取得する(S2602)。S2602の後、統計合算部2401は、S2602において取得した2つの受信パケット数及び受信バイト数をそれぞれ合算し、設定レジスタ2407に通知する(S2603)。S2603の後、統計合算部2401は、図26に示す統計通知処理S2650を終了する(S2604)。
前述のとおり、実施例3によれば、通信装置3は、入力テーブル更新部2409において、複数の1RD/1WRの統計テーブル2404(2404−1a、2404−1b、2404−2a、及び、2404−2b)により仮想マルチポートテーブルを構成する。これによって、実施例3の通信装置3は、毎clkに2パケットが到着し、かつ、CPUからの統計情報のRDがあった場合でもテーブル更新処理を実施することが可能である。
さらに、実施例3においては、毎clkに2パケットが到着し、かつ、CPUからの統計情報のRDがあった場合を示したが、入力テーブル更新部2409において、統計テーブルセット2405の数を例えばK個(Kは任意の自然数)とし、統計合算部2401がK個の統計テーブルから情報を取得して合算する場合、通信装置3は、毎clkにKパケットが到着し、かつ、CPUからの統計情報のRDがあった場合でもテーブル更新処理を実施することも可能である。
従って、実施例3によれば、1clk内に複数のパケットが到着するような高速パケット処理において、1つのテーブルは1clk内にRD及びWRがそれぞれ1個ずつ処理することしかできない場合でも、仮想的な1つのテーブルを構成して1clk内に複数個のRD、及び、複数個のWRを同時に実施することで、統計カウント機能のような演算機能のテーブル更新処理を実現することができる。
なお、実施例1及び実施例2の通信装置は、帯域制御のような演算機能に仮想マルチポートテーブルを、実施例3の通信装置は、統計カウント機能の演算機能に仮想マルチポートテーブルをそれぞれ適用したが、上記2つの機能を1つの通信装置に備えて仮想マルチポートテーブルを適用しても良い。例えば1clkに2パケットが到着する時は、実施例1と実施例3を組み合わせ、通信装置3は、帯域制御機能用の入力パケット制御部303及び入力テーブル更新部309、及び、統計カウント機能用の入力パケット制御部303及び入力テーブル更新部2409をそれぞれ備えても良い。
また、通信装置3は、パケット処理部402に帯域制御機能及び統計カウント機能の処理をさせることで入力パケット制御部303を共用し、帯域制御機能用の入力テーブル更新部309、及び、統計カウント機能用の入力テーブル更新部2409をそれぞれ備えても良い。
また、実施例3では、統計カウント機能の演算機能における本発明の一実施形態を示したが、実施例1及び実施例2に示すテーブル更新処理を用いて統計カウント機能を実施しても良い。例えば1clkに2パケットが到着する時は、通信装置3は、実施例1に示した2つの演算テーブルセット505(505−1及び505−2)をそれぞれ3つの演算テーブル504から構成し、CPUからの統計情報のRDとパケット到着による2つのRD(合計3つのRD)が競合しないように各演算テーブルセット505の演算テーブル504にアクセスしても良い。
以上説明したように、本実施例によれば、1clk内に複数のパケットが到着するような高速パケット処理において、1つのテーブルは1clk内にRD及びWRがそれぞれ1個ずつ処理することしかできない場合でも、仮想マルチポートテーブルを構成して1clk内に複数個のRD、及び、複数個のWRを同時に実施する。これにより、帯域制御機能や統計カウント機能のテーブル更新処理を実現することができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
(付記1)ネットワークに接続される通信装置であって、
前記ネットワークからの1つの読出し要求と1つの書き込み要求を同一クロックで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
前記ネットワークから同時に受信された複数の読出し要求について、前記各読出し要求に対応するテーブルセット内のいずれかのテーブルにアクセスして読出し処理を実行するとともに、前記複数の読出し要求と同時に受信された複数の書き込み要求があった場合、前記各書き込み要求に対応するテーブルセット内のすべてのテーブルにアクセスして書き込み処理を実行する更新部と、
前記複数の読出し要求と同時に受信された特定の処理に関する読出し要求があった場合、前記各テーブルセットにおいて、前記いずれかのテーブルとは異なる特定のテーブルに読出し処理を実行する実行部と、
を有することを特徴とする通信装置。
(付記2)前記テーブルセットの各テーブルには、前記書き込み要求により前記ネットワークから受信したパケットに関する演算結果が書き込まれており、
前記実行部は、前記各特定のテーブルから読み出された演算結果を合算する統計合算部であることを特徴とする付記1に記載の通信装置。
1 仮想マルチポートテーブル
10,20 演算テーブルセット
11,12,21,22 演算テーブル
3 通信装置
303 入力パケット制御部
309 入力テーブル更新部
501 アクセステーブル検索部
502 最新アクセス保持テーブル
503 アクセステーブル選択部
504 演算テーブル
505演算テーブルセット
510 アクセスフロー管理リスト
1600 入力パケット制御部
1701 アクセステーブル検索部
1703 アクセステーブル選択部
1705 演算テーブルセット
1709 入力テーブル更新部
1710 アクセスフロー管理リスト
1800 最新アクセス保持テーブルセット
1800A〜1800C 最新アクセス保持テーブル
2401 統計合算部
2404 統計テーブル
2405 統計テーブルセット
2409 入力テーブル更新部

Claims (15)

  1. ネットワークに接続される通信装置であって、
    前記ネットワークからの1つの読出し要求および1つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持する複数のテーブルを有するテーブルセットが、複数組存在するテーブルセット群と、
    前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、
    前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行し、前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する更新部と、
    を有することを特徴とする通信装置。
  2. 前記更新部は、前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行することを特徴とする請求項1に記載の通信装置。
  3. 前記更新部は、前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項1に記載の通信装置。
  4. 前記更新部は、前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項1に記載の通信装置。
  5. 前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
    前記更新部は、前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項1に記載の通信装置。
  6. ネットワークに接続される通信装置による通信方法であって、
    前記通信装置は、
    前記ネットワークからの1つの読出し要求および1つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
    前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、
    前記テーブルセット群と前記最新アクセス先保持テーブルとを更新する更新部と、を有し、
    前記通信方法は、
    前記更新部が、
    同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理と、
    前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する処理と、
    を実行することを特徴とする通信方法。
  7. 前記更新部が、
    前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行することを特徴とする請求項6に記載の通信方法。
  8. 前記更新部が、
    前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項6に記載の通信方法。
  9. 前記更新部が、
    前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項6に記載の通信方法。
  10. 前記通信装置は、前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
    前記通信方法は、
    前記更新部が、前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項6に記載の通信方法。
  11. ネットワークに接続される通信装置のプロセッサが実行するプログラムを格納する、前記プロセッサにより読み取り可能な非一時的な記録媒体であって、
    前記通信装置は、
    前記ネットワークからの1つの読出し要求および1つの書き込み要求を同一タイミングで処理可能でありフローごとの情報を同期させて保持するテーブルを複数有するテーブルセットが、複数組存在するテーブルセット群と、
    前記フローごとに最新のアクセス先となるテーブルセットを指定する最新アクセス先保持テーブルと、を有し、
    前記プロセッサに、
    前記ネットワークから同時に受信された複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各書き込み要求に含まれるフローごとに異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込む処理と、
    前記各書き込み要求に含まれるフローごとのアクセス先が前記書き込み処理の実行後のアクセス先となるように前記最新アクセス保持テーブルを更新する処理と、
    を実行させることを特徴とする前記プロセッサにより読み取り可能な非一時的な記録媒体。
  12. 前記プロセッサに、
    前記複数の書き込み要求について前記最新アクセス先保持テーブルを参照した結果、前記各書き込み要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各書き込み要求に含まれるフローごとに前記異なるテーブルセットをアクセス先として選択して、当該選択されたアクセス先となるテーブルセットの各テーブルに書き込み処理を実行させることを特徴とする請求項11に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
  13. 前記プロセッサに、
    前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が同一のテーブルセットである場合、前記各読出し要求に含まれるフローごとに前記同一のテーブルセット内の異なるテーブルをアクセス先として選択して、当該選択されたアクセス先となる各テーブルに読出し処理を実行することを特徴とする請求項11に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
  14. 前記プロセッサに、
    前記複数の書き込み要求と同時に受信された複数の読出し要求について前記最新アクセス先保持テーブルを参照した結果、前記各読出し要求に含まれるフローのアクセス先が異なるテーブルセットである場合、前記各読出し要求に含まれるフローごとに、アクセス先となるテーブルセット内のいずれかのテーブルに読出し処理を実行することを特徴とする請求項11に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
  15. 前記通信装置は、前記フローごとに書き込み処理中であるか否かを規定する情報と、前記書き込み処理中のテーブルセットを指定する情報と、を関連付けて記憶する管理テーブルを有し、
    前記プロセッサに、
    前記管理テーブルを参照して、前記最新アクセス保持テーブルによって指定された前記書き込み要求に含まれるフローの書き込み先が、前記管理テーブルにより前記書き込み処理中のテーブルセットであると特定された場合、前記フローの書き込み先を、前記書き込み処理中の書き込み処理が実行されているテーブルセットに変更することを特徴とする請求項11に記載の前記プロセッサにより読み取り可能な非一時的な記録媒体。
JP2013244853A 2013-11-27 2013-11-27 通信装置、通信方法、および、記録媒体 Pending JP2015104045A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013244853A JP2015104045A (ja) 2013-11-27 2013-11-27 通信装置、通信方法、および、記録媒体
US14/551,815 US20150146649A1 (en) 2013-11-27 2014-11-24 Communication apparatus, communication method, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013244853A JP2015104045A (ja) 2013-11-27 2013-11-27 通信装置、通信方法、および、記録媒体

Publications (1)

Publication Number Publication Date
JP2015104045A true JP2015104045A (ja) 2015-06-04

Family

ID=53182615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013244853A Pending JP2015104045A (ja) 2013-11-27 2013-11-27 通信装置、通信方法、および、記録媒体

Country Status (2)

Country Link
US (1) US20150146649A1 (ja)
JP (1) JP2015104045A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9819585B1 (en) * 2015-05-29 2017-11-14 Netronome Systems, Inc. Making a flow ID for an exact-match flow table using a programmable reduce table circuit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1367493A1 (en) * 2002-05-30 2003-12-03 STMicroelectronics Limited Prefetch buffer
US7073026B2 (en) * 2002-11-26 2006-07-04 Advanced Micro Devices, Inc. Microprocessor including cache memory supporting multiple accesses per cycle
US7743184B2 (en) * 2006-08-25 2010-06-22 Freescale Semiconductor, Inc. Coherent access register data transfer device and methods thereof
US8266408B2 (en) * 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8433880B2 (en) * 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system

Also Published As

Publication number Publication date
US20150146649A1 (en) 2015-05-28

Similar Documents

Publication Publication Date Title
JP6913669B2 (ja) 高性能コンピューティング環境においてファブリックレベルグループメンバーシップをサブネットレベルパーティションメンバーシップに関連付けるためのシステムおよび方法
CN103856406B (zh) 用于在分布式网络交换机中的路由表管理的系统和方法
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
KR102445870B1 (ko) 고성능 클라우드 컴퓨팅 환경을 위한 인피니밴드 SR-IOV vSWITCH 아키텍쳐를 제공하는 시스템 및 방법
JP6881861B2 (ja) パケット処理方法および装置
EP1654819B1 (en) A data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network
WO2021254500A1 (zh) 一种转发报文的方法、设备和系统
JP5892500B2 (ja) メッセージ処理方法及び装置
US10348603B1 (en) Adaptive forwarding tables
CN104468401A (zh) 一种报文处理方法和装置
US20140064090A1 (en) Cached routing table management
US20140079061A1 (en) Facilitating insertion of device mac addresses into a forwarding database
WO2016175768A1 (en) Map tables for hardware tables
JP2016116184A (ja) 網監視装置および仮想ネットワーク管理方法
CN109474518A (zh) 转发报文的方法及装置
JP2017509055A (ja) 並列プロトコル・スタック・インスタンスに基づいてデータパケットを処理する方法および装置
US9021098B1 (en) Allocation of interface identifiers within network device having multiple forwarding components
US11121946B2 (en) Capturing packets in a virtual switch
US10003555B1 (en) Power management of routing tables using vertical scaling
JP2015104045A (ja) 通信装置、通信方法、および、記録媒体
CN112804276B (zh) 虚拟化宽带远程接入服务器及其控制方法、通信系统
JP2012244364A (ja) 計算機及び識別子管理方法
JP2019503597A (ja) 高性能コンピューティング環境においてスイッチポートステータスのスケーラブルな表現をサポートするためのシステムおよび方法
WO2020060775A9 (en) Scalable cell based packet processing service using client provided decision metadata
JP6060050B2 (ja) 通信装置、及び、パケット処理方法