JP5812533B2 - 通信装置、及び、通信方法 - Google Patents

通信装置、及び、通信方法 Download PDF

Info

Publication number
JP5812533B2
JP5812533B2 JP2012124938A JP2012124938A JP5812533B2 JP 5812533 B2 JP5812533 B2 JP 5812533B2 JP 2012124938 A JP2012124938 A JP 2012124938A JP 2012124938 A JP2012124938 A JP 2012124938A JP 5812533 B2 JP5812533 B2 JP 5812533B2
Authority
JP
Japan
Prior art keywords
packet
parallel processing
processing unit
unit
flow
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
JP2012124938A
Other languages
English (en)
Other versions
JP2013251719A (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 JP2012124938A priority Critical patent/JP5812533B2/ja
Priority to CN2013102064094A priority patent/CN103457847A/zh
Priority to EP20130169810 priority patent/EP2670099A1/en
Priority to US13/905,791 priority patent/US9137158B2/en
Publication of JP2013251719A publication Critical patent/JP2013251719A/ja
Application granted granted Critical
Publication of JP5812533B2 publication Critical patent/JP5812533B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/1523Parallel switch fabric planes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、通信装置に関し、特に、パケットに対して処理を行う通信装置に関する。
近年、テレビコンテンツのデジタル化又はWebによる動画配信サービスの普及等によりネットワークシステムにおけるトラヒックが大容量化している。そして、これにより、100Gbps超の回線の需要が高まっている。
トラヒックの大容量化に伴いパケット通信装置に備えられる論理デバイスにおける動作周波数は上昇しているが、一方で、例えば、FPGA(Field−Programmable Gate Array)などの論理デバイスの動作周波数は、最大でも300MHz程度の限界がある。このため、FPGAを用いて100Gbps回線を収容する場合、FPGAは1パケットあたり2clk程度でパケットを処理する必要がある。
帯域制御機能又は統計カウント機能などのパケット管理機能を、論理デバイスに実装する場合、論理デバイスは、フロー毎のパケットの情報を一つの情報記憶媒体(以後、テーブルと記載)に格納し、到着したパケットに対応するフロー毎のテーブルの値を、パケット到着毎に更新する。
例えば、帯域制御機能を実現する場合、論理デバイスは、各フローの消費帯域をテーブルによって管理する。具体的には、論理デバイスはパケット到着毎にテーブルから各フローに設定された帯域(設定帯域)、及び、各フローにおいて消費される帯域(消費帯域)を読み出し(a.テーブルRD)、消費帯域の更新及び更新結果と設定帯域との比較(b.データ演算)、及び、消費帯域の更新結果のテーブルへの書込み(c.テーブルWR)を実行する。
以後、前述のa〜cのように、パケットに関する情報によってテーブルを更新する処理をテーブル更新処理と記載する。
テーブルを更新する方法として、一つの論理デバイスが、パケット到着毎に1パケット単位でテーブルを更新する一般的な方法(シーケンシャル処理方法)がある。一般的に、シーケンシャル処理方法において、論理デバイスは、一つのパケットに関するテーブル更新処理に所定の時間(例えば、10clk程度)を要する。
また、本技術分野の背景技術として、特開2000−358066号公報(特許文献1)がある。この公報には、「到着パケットごとに、同じソースからの前のパケットが処理エレメントに係属中であるかどうかをチェックし、チェックにより、そのようなパケットが係属中であることが明らかになった場合に、この到着パケットを前のパケットと同じ処理エレメントに転送する」ことが記載されている(要約参照)。すなわち、特許文献1には、複数の並列処理部によって、複数のフローのパケットを処理する並列処理技術が提案されている。
特開2000−358066号公報
シーケンシャル処理方法を用いる論理デバイスにおいて、パケット到着間隔が、1パケットあたりのテーブル更新処理に必要な時間以上である場合、論理デバイスは、パケット到着毎にテーブル更新処理を実行可能である。
しかし、回線の量が大容量化し、パケット到着間隔が1パケットあたりのテーブル更新処理に必要な時間よりも短い場合、前に到着したパケットのテーブル更新処理が終了しないうちに、次に処理すべきパケットが到着する。このため、論理デバイスは、連続で到着するパケットのテーブル更新処理を正常に実行できない。
また、特許文献1に記載された技術によれば、複数の並列処理部にフロー毎にパケットを振り分け、各並列処理部によってテーブル更新処理が実行されるため、連続でパケットが到着する頻度が少ない。しかし、テーブル更新処理に必要な時間よりも短い時間間隔において同じフローの二つのパケットが連続して到着した場合、同じ並列処理部に同じフローのパケットが転送される。
このため、前述のシーケンシャル処理方法と同じく、並列処理部を用いた場合の論理デバイスは、連続で到着した同じフローの複数のパケットに関するテーブル更新処理を正常に実行できない場合がある。そして、連続で到着した同じフローの複数のパケットに関するテーブル更新処理が終了するまで、他のフローのパケットに関するテーブル更新処理も実行されないため、パケット全体のテーブル更新処理が正常に実行されないという問題がある。
また、フロー毎に分割されたテーブルを各並列処理部に保持させることによって、各フローに対する各並列処理部のテーブル更新処理を独立させることができる。しかし、ネットワークシステムにおけるフローIDの数は固定値ではなく、論理デバイスにフロー毎のテーブル及び並列処理部をあらかじめ設置する場合、設備のための費用が増大し、さらに、論理デバイスの汎用性が失われるという問題がある。
本発明は、前述の問題を鑑みてなされたものであり、情報記憶媒体が保持する情報を更新する時間と比較してパケット到着間隔が短いパケット処理において、統計カウント機能などパケット到着毎に同じフローの情報を更新する必要がある場合でも、連続で到着するパケットを処理することができる方法の提供を目的とする。
本発明の代表的な一例を示せば以下のとおりである。すなわち、ネットワークに接続される通信装置であって、前記通信装置は、前記ネットワークから送信されるパケットを受信する入力インタフェースと、前記パケットに関する処理を実行する複数の並列処理部と、前記パケットに関する処理を前記各並列処理部へ振り分ける並列処理振分部と、前記パケットに関する処理の実行結果を示す値と、前記パケットに割り当てられるフローIDと含む演算用テーブルと、を有し、前記各並列処理部は、当該並列処理部において実行された前記パケットに関する処理を実行した実行結果を保持し、前記並列処理振分部は、前記各並列処理部が処理を実行する前記パケットに割り当てられたフローIDと、前記各並列処理部における前記パケットに関する処理の状況を示す値と、を含む利用フロー管理リストを保持し、第1のパケットを受信した場合、前記利用フロー管理リストと、前記第1のパケットに割り当てられたフローIDとに基づいて、前記第1のパケットに対応する前記フローIDが割り当てられた第2のパケットに関する処理が実行中であるか否かを判定し、前記判定の結果に従って、前記第1のパケットに関する処理を実行する並列処理部と、当該並列処理部に送信する振分け通知に含まれるパラメータと、を決定し、前記振分け通知に、前記第1のパケットに関する情報を含めて、前記決定された並列処理部に送信し、前記決定された並列処理部は、前記振分け通知を受信した場合、前記演算用テーブル、又は、当該並列処理部に保持された実行結果から、前記受信した振分け通知に従って前記第2のパケットに関する処理の実行結果を取得し、前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記第1のパケットに関する処理を実行し、前記第1のパケットに関する処理が実行された実行結果によって、前記演算用テーブルを更新する。
本発明の一実施形態によれば、情報記憶媒体が保持する情報を更新する時間と比較してパケット到着間隔が短い場合にも、連続で到着するパケットを処理することができる。
本実施例1のパケット到着間隔がテーブル更新時間以上である場合のテーブル更新処理を示す説明図である。 本実施例1のパケット到着間隔がテーブル更新時間よりも短い場合のパケットの受信状況を示す説明図である。 本実施例1のパケット通信装置の物理的な構成及び論理回路を示すブロック図である。 本実施例1の通信において用いられるパケットのフォーマットを示す説明図である。 本実施例1のパケットに付加される装置内ヘッダのフォーマットを示す説明図である。 本実施例1の入力パケット制御部の論理的な構成を示すブロック図である。 本実施例1の利用フロー管理リストを示す説明図である。 本実施例1の設定用テーブルを示す説明図である。 本実施例1の演算用テーブルを示す説明図である。 本実施例1の並列処理振分部が実行する振分け処理を示すフローチャートである。 本実施例1の並列処理振分部が実行する利用フロー管理処理を示すフローチャートである。 本実施例1の並列処理部が実行するテーブル更新処理を示すフローチャートである。 本実施例1の出力判定部が実行する出力判定処理を示すフローチャートである。 本実施例1の一つの並列処理部が連続してテーブル更新処理を実行する際の演算結果を示す説明図である。 本実施例1の二つの並列処理部がテーブル更新処理を実行する際の演算結果を示す説明図である。 本実施例2のパケット通信装置の物理的な構成及び論理回路を示すブロック図である。 本実施例2の入力パケット制御部の論理的な構成を示すブロック図である。 本実施例2の帯域設定テーブル情報を示す説明図である。 本実施例2の演算結果保持テーブル情報を示す説明図である。 本実施例2の並列処理部が実行するテーブル更新処理のうち、入力パケットを受信するまでに蓄積されるべきトークン量を算出する処理を示すフローチャートである。 本実施例2の並列処理部が実行するテーブル更新処理のうち、入力パケットが保証内であるか否かを判定する処理を示すフローチャートである。 本実施例2の出力判定部が実行する出力判定処理を示すフローチャートである。 本実施例2のテーブル更新処理による前回パケット到着時刻及び保持トークン値の変化を示す説明図である。 本実施例3のパケット通信装置の物理的な構成及び論理回路を示すブロック図である。 本実施例3の入力パケット制御部の物理的な構成を示すブロック図である。 本実施例3の統計情報テーブルを示す説明図である。 本実施例3の並列処理部が実行するテーブル更新処理を示すフローチャートである。 本実施例3の並列処理部が実行するテーブル更新処理による、受信パケット数、及び、受信バイト数の変化を示す説明図である。
以下、本発明の実施例について、図面を参照して説明する。
本実施例におけるパケット到着間隔とテーブル更新処理に必要な時間(テーブル更新時間)との関係の具体例を以下に示す。
図1Aは、本実施例1のパケット到着間隔がテーブル更新時間以上である場合のテーブル更新処理を示す説明図である。
例えば、パケット到着間隔が10clk以上であり、かつ、テーブル更新時間が10clkである場合、本実施例のパケット通信装置は、パケット到着毎にテーブル更新処理を実施できる。これは、例えば、1Gbps回線におけるパケット到着間隔が40clkであり、また、10Gbps回線におけるパケット到着間隔が10clkであり、テーブル更新時間が10clkである場合に相当する。
図1Bは、本実施例1のパケット到着間隔がテーブル更新時間よりも短い場合のパケットの受信状況を示す説明図である。
例えば、100Gbps回線におけるパケット到着間隔が2clkであり、テーブル更新時間10clkである場合、パケット通信装置に一つ目のパケットが到着した後、テーブル更新処理が終了する前に、二つ目のパケットが到着する。この場合、パケットが廃棄されるため、二つ目のパケットに関するテーブル更新処理は実行されない。
以下、本実施例1について図2から図13を用いて説明する。なお、以下に述べる実施例1は本発明の実施例の一つであって、本発明を制限するものではない。
本実施例におけるパケット通信装置は、以下で説明する並列処理方法を実装し、各フローのパケットが到着した際に各フローの情報記憶媒体(テーブル)情報を更新する。
図2は、本実施例1のパケット通信装置2の物理的な構成及び論理回路210を示すブロック図である。
本実施例のパケット通信装置2は、パケットを他のパケット通信装置へ転送する装置である。パケット通信装置2は、複数のネットワークインタフェースボード(NIF)(200−1〜200−M)、及び、スイッチ部206を備える。
NIF200は、ネットワークからパケットを受信し、ネットワークへパケットを送信するためのインタフェースである。スイッチ部206は、各NIF200に接続される装置であり、NIF200から受信したパケットを、パケットを送信すべきNIF200に振り分ける装置である。
各NIF200は、入出力回線インタフェース201、SWインタフェース205、論理回路210、及びNIF管理部211を備える。
入出力回線インタフェース201は、通信ポートである。パケット通信装置2は、入出力回線インタフェース201及びネットワークを介して、他のパケット通信装置と接続する。実施例1における入出力回線インタフェース201は、イーサネット(登録商標、以下同じ)用の回線インタフェースである。
SWインタフェース205は、スイッチ部206に接続するための装置である。
NIF管理部211は、例えば、CPU等のプロセッサである。NIF管理部211は、論理回路210における処理を制御する。
論理回路210は、本実施例のパケットに対する処理を行う回路である。論理回路210は、少なくとも一つのメモリ及び少なくとも一つの演算装置(例えば、プロセッサ)を備える。
論理回路210は、入力ヘッダ処理部202、入力パケット制御部203、出力ヘッダ処理部207、出力パケット制御部208等の処理部を有し、設定レジスタ212を備える。また、論理回路210が備えるメモリは、設定用テーブル213、演算用テーブル214、入力パケットバッファ204、及び、出力パケットバッファ209を保持する。
パケット通信装置2が受信したパケットは、入出力回線インタフェース201、入力ヘッダ処理部202、SWインタフェース205、スイッチ部206、SWインタフェース205、入力パケット制御部203、出力ヘッダ処理部207、出力パケット制御部208、及び、入出力回線インタフェース201の順に送信される。
論理回路210が有する各処理部は、集積回路等の物理的な装置によって実装されてもよいし、少なくとも一つのプロセッサによって実行されるプログラムによって実装されてもよい。また、複数の処理部(例えば、入力パケット制御部203及び入力ヘッダ処理部202)が一つの装置又はプログラムによって実装されてもよいし、一つの処理部が複数の装置又は複数のプログラムによって実装されてもよい。
NIF管理部211は、設定レジスタ212を制御する。設定レジスタ212は、データを一時的に格納する記憶領域を有し、論理回路210に備わる各処理部のレジスタ値を保持する。
図2には、設定レジスタ212と入力パケット制御部203との接続のみが図示されるが、設定レジスタ212は論理回路210を介して論理回路210に備わる全ての処理部と接続する。なお、以下において、設定レジスタ212の処理内容についての説明を省略するが、論理回路210が有する全ての処理部は、設定レジスタ212を用いて処理を実行する。
入出力回線インタフェース201は、受信したパケット4に後述する装置内ヘッダ3を付加する。
図3は、本実施例1の通信において用いられるパケット4のフォーマットを示す説明図である。
図3に示すパケット4のフォーマットは一例であり、本実施例において用いられるパケットは、いかなる情報を含んでもよい。例えば、MACアドレスの代わりに、IPアドレスを含んでもよい。
パケット4は、宛先MACアドレス401、送信元MACアドレス402、VLANヘッダ403、イーサタイプ値404、ペイロード405、及び、フレームチェックシーケンス(FCS)406を含む。
宛先MACアドレス401、又は、送信元MACアドレス402には、パケット通信装置2のMACアドレスが設定される。VLANヘッダ403には、フローの識別子となるVLAN IDが設定される。
なお、ペイロード405にMPLSヘッダ又は他のプロトコルのヘッダが設定され、VLAN IDには、MPLSラベル値などがフローの識別子として設定されてもよい。フレームチェックシーケンス(FCS)406には、フレームの誤りを検出するための値が設定される。
図4は、本実施例1のパケット4に付加される装置内ヘッダ3のフォーマットを示す説明図である。
入出力回線インタフェース201は、受信したパケット4をパケット通信装置2において処理するため、受信したパケット4に装置内ヘッダ3を付加する。装置内ヘッダ3が付加され、入出力回線インタフェース201からスイッチ部206に向けて送信されるパケット4を、以降において、入力パケットと記載する。
装置内ヘッダ3は、出力ネットワークインタフェースボード識別子(出力NIF ID)301、フローID302、及び、フレーム長303を含む。
出力NIF ID301は、内部ルーティング情報である。本実施例の内部ルーティング情報とは、パケット通信装置2が受信したパケット4を、パケット通信装置2のいずれのNIF200のポートから出力するかを示す情報である。スイッチ部206は、内部ルーティング情報に従い、スイッチ部206に送信された入力パケットを特定のNIF200の特定のSWインタフェース205に転送する。
入出力回線インタフェース201は、受信したパケット4に装置内ヘッダ3を付加する際、出力NIF ID301、及び、フローID302にnull値等の値を格納する。すなわち、入出力回線インタフェース201は、出力NIF ID301、及び、フローID302に格納される値を決定しない。出力NIF ID301、及び、フローID302には、入力ヘッダ処理部202によって値が格納される。
入出力回線インタフェース201は、受信したパケット4のフレーム長を取得し、装置内ヘッダ3のフレーム長303に、取得されたフレーム長を格納する。その後、入出力回線インタフェース201は、パケット4を入力ヘッダ処理部202に送信する。
入力ヘッダ処理部202は、入出力回線インタフェース201から受信した入力パケットの403に基づいて、パケット4のフローを識別する。そして、入力ヘッダ処理部202は、識別されたフローに従ってVLANタグの処理を実行し、これによって、入力パケットの出力NIF ID301、及び、フローID302に値を格納する。
VLANタグの処理とは、例えば、VLANタグの透過、変換、付与及び削除である。すなわち、VLANタグの処理とは、入力パケットのVLANヘッダを、パケット通信装置2から出力されるパケットのVLANヘッダに変換する処理である。
入力ヘッダ処理部202は、VLANタグの処理において、宛先MACアドレス401及び送信元MACアドレス402を、入出力回線インタフェース201に設定される値によって上書きしてもよいし、あらかじめ登録されていたフロー毎の値によって上書きしてもよい。
VLANタグを処理し、装置内ヘッダ3に出力NIF ID301及びフローID302を追加した後、入力ヘッダ処理部202は、入力パケットを入力パケット制御部203に送信する。
入力パケット制御部203は、入力ヘッダ処理部202から受信した入力パケットを、入力パケットバッファ204に格納する。この際、入力パケット制御部203は、設定用テーブル213、及び、演算用テーブル214を用いて受信した入力パケットに関して、後述するパケット処理を実行する。
パケット処理後、入力パケット制御部203は、入力パケットバッファ204に格納された入力パケットを読み出し、SWインタフェース205に送信する。SWインタフェース205は、受信した入力パケットをスイッチ部206に転送する。
スイッチ部206は、各NIF200のSWインタフェース205から入力パケットを受信した後、入力パケットの出力NIF ID301を参照することによって、受信した入力パケットの転送先であるNIF200を特定する。次に、スイッチ部206は、特定されたNIF200に対応するSWインタフェース205に、受信した入力パケットを、出力パケットとして転送する。
なお、本実施例において、スイッチ部206から入出力回線インタフェース201へ送信されるパケット4を出力パケットと記載する。
SWインタフェース205は、受信した出力パケットを出力ヘッダ処理部207に転送する。
前述の例では、入力ヘッダ処理部202が、入力パケットのヘッダ(フォーマット)を、パケット通信装置2から出力されるパケットのヘッダ(フォーマット)に変換した。しかし、本実施例の出力ヘッダ処理部207は、入力ヘッダ処理部202の代わりに、出力パケットのヘッダ変換を実行してもよい。
なお、入力ヘッダ処理部202においてヘッダ変換(フォーマット変換)が既になされている場合、出力ヘッダ処理部207は、SWインタフェース205から受信した出力パケットをそのまま出力パケット制御部208に転送する。
また、前述の例では、入力パケット制御部203がパケット処理を実行した。しかし、出力パケット制御部208が、入力パケット制御部203の代わりに、出力パケットバッファ209に出力パケットを格納し、さらに、パケット処理を実行してもよい。
出力パケット制御部208がパケット処理を実行する場合、パケット処理後、出力パケット制御部208は、出力パケットバッファ209に格納された出力パケットを読み出す。そして、読み出された出力パケットを入出力回線インタフェース201に送信する。
出力パケット制御部208がパケット処理を実施しない場合、出力パケット制御部208は、出力ヘッダ処理部207から受信した出力パケットを、そのまま入出力回線インタフェース201に転送する。
入出力回線インタフェース201は、受信した出力パケットから装置内ヘッダ3を除去する。その後、入出力回線インタフェース201は、図3に示すパケット4のフォーマットによって、出力パケットを他の装置へ転送する。
図5は、本実施例1の入力パケット制御部203の論理的な構成を示すブロック図である。
入力パケット制御部203は、並列処理振分部501、利用フロー管理リスト502、複数の並列処理部503(503−1〜503−N)、出力判定部504、及び、アクセス調停部505を備える。
並列処理振分部501は、入力パケット制御部203が入力ヘッダ処理部202から入力パケットを受信した場合、後述する振分け処理S950を実行する処理部である。並列処理振分部501は、振分け処理S950において、入力パケットの装置内ヘッダ3のフローID302に基づいてフローを識別し、さらに、利用フロー管理リスト502を参照する。そして、これによって、入力パケットに関するテーブル更新処理を実行する並列処理部503を、並列処理部503−1〜並列処理部503−Nから決定する。
また、並列処理振分部501は、利用フロー管理リスト502を、論理回路210に備わるメモリ等に保持する。そして、並列処理振分部501は、後述する振分け処理S950及び利用フロー管理処理S1050において、利用フロー管理リスト502を更新する。また、並列処理振分部501は、入力パケットを受信すると、受信した入力パケットを入力パケットバッファ204に格納する。
利用フロー管理リスト502は、並列処理部503が処理する入力パケットのフローIDと、並列処理部503の処理状況とを示す。
並列処理部503は、後述するテーブル更新処理S1150において、演算用テーブル214に含まれる各フローの情報を更新する。また、並列処理部503は、テーブル更新処理S1150の処理判定結果を、出力判定部504に送信する。並列処理部503は、入力パケット制御部203にN個(Nは任意の自然数)備わる。
本実施例において、並列処理部503がテーブル更新処理S1150に要するテーブル更新時間はあらかじめ定められる。また、本実施例の入力パケットバッファ204(又は出力パケットバッファ209)は、シフトレジスタとして、並列処理振分部501及び出力判定部504によって使用される。
さらに、本実施例において、並列処理部503の数Nは、テーブル更新時間と最短パケット到着間隔とに基づいて決定される。なお、最短パケット到着間隔は、パケット通信装置2が接続される回線に従って、あらかじめ定められる値である。
例えば、テーブル更新時間が10clkであり、最短パケット到着間隔が2clkである場合、テーブル更新時間から最短パケット到着間隔を除算(余りは繰上げ)した結果は“5”である。このため、並列処理部503の数Nは“5”にあらかじめ決定される。
出力判定部504は、後述する出力判定処理S1250を実行し、各並列処理部503(503−1〜503−N)から演算終了及び処理判定結果を受信する。出力判定部504は、入力パケットバッファ204から入力パケットを読み出し、読み出された入力パケットのヘッダ又はペイロードを、処理判定結果に基づいて変換する。その後、出力判定部504は、入力パケットをSWインタフェース205に送信する。
アクセス調停部505は、並列処理部503−1〜並列処理部503−Nによる設定用テーブル213及び演算用テーブル214へのアクセス(読み出し及び書き戻し)を調停する。アクセス調停部505の処理の詳細は、以降において省略するが、各並列処理部503が設定用テーブル213及び演算用テーブル214へアクセスする場合、アクセス調停部505がアクセスを調停する。
図6は、本実施例1の利用フロー管理リスト502を示す説明図である。
利用フロー管理リスト502は、並列処理部601、フローID602、及び、処理状況カウンタ603を含む。
並列処理部601は、並列処理部503−1〜503−Nを一意に示す識別子を含む。本実施例の並列処理部601は、並列処理部503を数値によって識別する値を含む。並列処理部601に格納される値は、管理者等によってあらかじめ設定される。
フローID602は、並列処理部503が処理する入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID602に格納される値は、並列処理振分部501によって更新される。また、フローID602に格納される値は、入力ヘッダ処理部202において装置内ヘッダ3のフローID302に格納された値に対応する。
処理状況カウンタ603は、並列処理部503におけるテーブル更新処理の状況を示す値を含む。本実施例の処理状況カウンタ603は、テーブル更新処理が開始されてから経過した実行時間に関する値を含む。
以下に示す処理状況カウンタ603は、減算カウンタによって、テーブル更新処理が終了するまでの残り時間を示す。具体的には、テーブル更新処理が開始された場合、処理状況カウンタ603にはテーブル更新時間が格納される。そして、並列処理振分部501が単位時間(本実施例において1clk)毎に処理状況カウンタ603の値を減算する。
処理状況カウンタ603に“0”が格納されるエントリは、並列処理部601が示す並列処理部503はテーブル更新処理を終了したことを示す。また、処理状況カウンタ603に“0”以外の正の数が格納されるエントリは、並列処理部601が示す並列処理部503はテーブル更新処理中であることを示す。
以下において、処理状況カウンタ603が減算カウンタである場合の処理を記載するが、処理状況カウンタ603は加算カウンタによって、テーブル更新処理が開始されてから経過した時間を示してもよい。この場合、並列処理振分部501は、所定のテーブル更新時間と処理状況カウンタ603とを比較することによって、テーブル更新処理の状況を取得してもよい。
図7は、本実施例1の設定用テーブル213を示す説明図である。
設定用テーブル213に格納される値は、並列処理部503がテーブル更新処理を実行するために用いる設定値であり、管理者等によってあらかじめ定められる設定値である。設定用テーブル213は、フローID701、及び、設定情報702を含む。
フローID701は、入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID701に格納される値は、入力ヘッダ処理部202において装置内ヘッダ3のフローID302に格納された値に対応する。
設定情報702は、テーブル更新処理において用いられる情報を示す。具体的には、設定情報702は、テーブル更新処理において、並列処理部503が演算結果を更新する際に使用する設定値を示す。
図8は、本実施例1の演算用テーブル214を示す説明図である。
演算用テーブル214は、フローID801、及び、演算結果802を含む。
フローID801は、入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID801に格納される値は、入力ヘッダ処理部202において装置内ヘッダ3のフローID302に格納された値に対応する。
演算結果802は、フロー毎のパケット処理の結果、すなわち、フロー毎のテーブル更新処理の結果を示す。演算結果802に格納される値は、並列処理部503によるテーブル更新処理によって更新される。
以下に、並列処理振分部501が実行する振分け処理S950について説明する。
図9は、本実施例1の並列処理振分部が実行する振分け処理S950を示すフローチャートである。
並列処理振分部501は、入力ヘッダ処理部202から入力パケットを受信した場合(S900)、受信した入力パケットに含まれる装置内ヘッダ3からフローID302、及び、フレーム長303の値を取得する(S901)。
S901の後、並列処理振分部501は、利用フロー管理リスト502の全てのエントリの処理状況カウンタ603の値が“0”と異なるか否かを判定する(S902)。
S902において、利用フロー管理リスト502の全てのエントリの処理状況カウンタが“0”と異なると判定された場合、全ての並列処理部503は、テーブル更新処理を実行中である。このため、並列処理振分部501は、入力パケットを廃棄し(S903)、図9に示す振分け処理S950を終了する(S909)。
また、S902において、利用フロー管理リスト502のエントリのうち、処理状況カウンタ603が“0”ではないエントリがある場合、全ての並列処理部503のうち少なくとも一つの並列処理部503は、テーブル更新処理を実行していない。このため、並列処理振分部501は、S901において取得されたフローID302の値が、処理状況カウンタ603が“0”と異なるエントリのフローID602の値と一致するか否かを判定する(S904)。
なお、S904において、並列処理振分部501は、S901において取得されたフローID302の値に対応する値が、処理状況カウンタ603が“0”と異なるエントリのフローID602の値と一致する場合、取得されたフローID302の値に対応する値と処理状況カウンタ603が“0”と異なるエントリのフローID602の値とが一致していると判定してもよい。
S901において取得されたフローID302の値が、処理状況カウンタ603が“0”と異なるエントリのフローID602の値と一致しないと、S904において判定された場合、並列処理振分部501は、テーブル更新処理を実行していない並列処理部に、入力パケットに関するテーブル更新処理を新規に実行させるため、ステップ907を実行する。
S901において取得されたフローID302の値が、処理状況カウンタ603が“0”と異なるエントリのフローID602の値と一致すると、S904において判定された場合、入力パケットのフローに対応する並列処理部503は、入力パケットに関するテーブル更新処理を継続して実行できる。このため、並列処理振分部501は、取得されたフローID302の値とフローID602とが一致したエントリの並列処理部601が示す並列処理部503を、入力パケットに関するテーブル更新処理を継続して実行する並列処理部503に決定する。
そして、並列処理振分部501は、取得されたフローID302の値とフローID602とが一致したエントリの処理状況カウンタ603を、テーブル更新時間を示す値に更新する(S905)。例えば、並列処理振分部501は、テーブル更新時間が10clkの場合、取得されたフローID302の値とフローID602とが一致したエントリの処理状況カウンタ603を、“10”に更新する。
S905において処理状況カウンタ603を更新することによって、並列処理振分部501は、各並列処理部503がテーブル更新処理を終了しているか否かを示す値を処理状況カウンタ603に格納できる。
ステップ905の後、並列処理振分部501は、取得されたフローID302の値とフローID602の値とが一致した利用フロー管理リスト502のエントリの並列処理部601が示す並列処理部503へ、処理開始トリガ、新規/継続パラメータ、取得フローID、及び、取得フレーム長を含む振分け通知を出力する(S906)。
S906において並列処理振分部501は、新規/継続パラメータを継続を示す値に決定し、継続を示す新規/継続パラメータ(本実施例において“1”)を、振分け通知に含める。本実施例における新規/継続パラメータとは、各並列処理部503にどのようなテーブル更新処理を実行するかを通知するための値である。
S906の後、図9に示す振分け処理S950を終了する(S909)。
S901において取得されたフローID302の値が、処理状況カウンタ603が0と異なるエントリのフローID602の値と一致しないと、S904において判定された場合、並列処理振分部501は、処理状況カウンタ603が“0”である利用フロー管理リスト502のエントリのうち、並列処理部601の値が最も若い番号のエントリを抽出する。並列処理振分部501は、抽出されたエントリの並列処理部601が示す並列処理部503を、入力パケットに関するテーブル更新処理を新規に実行する並列処理部503に決定する。
そして、並列処理振分部501は、抽出されたエントリのフローID602を、ステップ901において取得されたフローID302の値によって更新する。また、並列処理振分部501は、抽出されたエントリの処理状況カウンタ603を、テーブル更新時間によって更新する(S907)。
なお、前述のS907において、並列処理振分部501は、処理状況カウンタ603が“0”である利用フロー管理リスト502のエントリのうち、並列処理部601の値が最も若い番号(小さい番号)のエントリを抽出したが、並列処理振分部501は、処理状況カウンタ603が“0”である利用フロー管理リスト502のエントリのうちの一つであれば、いかなる規則に従ってエントリを抽出してもよい。例えば、並列処理振分部501は、最も値が大きい番号のエントリを抽出してもよいし、管理者によってあらかじめ抽出するエントリの順番を定められていてもよい。
S907の後、並列処理振分部501は、決定された並列処理部503へ、処理開始トリガ、新規/継続パラメータ、フローID、及び、フレーム長を含む振分け通知を出力する(S908)。S908において並列処理振分部501は、新規/継続パラメータを新規を示す値に決定し、新規を示す新規/継続パラメータ(本実施例において“0”)を、振分け通知に含める。
S906及びS908において出力される振分け通知に含まれる処理開始トリガは、テーブル更新処理を開始することを示す値である。また、振分け通知に含まれるフローIDは、S901において取得されたフローID、すなわち、入力パケットのフローIDである。また、振分け通知に含まれるフレーム長は、S901において取得されたフレーム長、すなわち、入力パケットのフレーム長である。
S908の後、並列処理振分部501は、図9に示す振分け処理S950を終了する(S909)。
以下に、並列処理振分部501が実行する利用フロー管理処理S1050について説明する。
図10は、本実施例1の並列処理振分部501が実行する利用フロー管理処理S1050を示すフローチャートである。
並列処理振分部501は、1クロック毎に(S1000)、利用フロー管理リスト502の全てのエントリの処理状況カウンタ603が“0”であるか否かを判定する(S1001)。
利用フロー管理リスト502の全てのエントリの処理状況カウンタ603が0であると、S1001において判定された場合、並列処理振分部501は、利用フロー管理処理S1050を終了する(S1003)。
また、利用フロー管理リスト502のエントリに処理状況カウンタ603が0でないエントリがあるとS1001において判定された場合、並列処理振分部501は、処理状況カウンタ603の列に含まれる0以外の値から1を減算する(S1002)。S1002の後、並列処理振分部501は、利用フロー管理処理S1050を終了する(S1003)。
以下に、並列処理部503−1〜503−Nが実行するテーブル更新処理S1150について説明する。
図11は、本実施例1の並列処理部503が実行するテーブル更新処理S1150を示すフローチャートである。
並列処理部503は、並列処理振分部501から処理開始トリガを含む振分け通知を受信した場合(S1100)、受信した振分け通知に含まれる新規/継続パラメータ、フローID、及び、フレーム長を取得する(S1101)。
S1101の後、並列処理部503は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S1102)。
新規/継続パラメータが“0”である場合、すなわち、新規/継続パラメータが新規を示すとS1102において判定された場合、並列処理部503は、S1101において取得されたフローID、すなわち、入力パケットのフローIDを検索キーとして設定用テーブル213を検索する。そして、検索の結果、並列処理部503は、入力パケットのフローIDをフローID701に含む設定用テーブル213のエントリの設定情報702の値を取得する(S1103)。これによって、並列処理部503は、入力パケットに対応する設定情報702の値を取得する。
S1103の後、並列処理部503は、入力パケットのフローIDを検索キーとして、演算用テーブル214を検索する。そして、検索の結果、並列処理部503は、入力パケットのフローIDをフローID701に含む設定用テーブル213のエントリの演算結果802の値を取得する(S1104)。S1104の後、並列処理部503は、S1107の処理を実行する。
S1102において、新規/継続パラメータが“0”ではない場合、すなわち、新規/継続パラメータが継続を示すと判定された場合、並列処理部503は、S1103と同じく、入力パケットのフローIDを検索キーとして設定用テーブル213を検索することによって、入力パケットに対応する設定情報702の値を取得する(S1105)。
S1105の後、並列処理部503は、並列処理部503が継続処理用に内部保持する前回演算結果を取得する(S1106)。継続処理用に内部保持される前回演算結果とは、テーブル更新処理が全て終了する前に次のテーブル更新処理を継続して実行するために、並列処理部503が、設定レジスタ212等の論理回路210のメモリに保持する演算結果である。
S1106において、内部保持される前回演算結果を取得することによって、並列処理部503は、演算用テーブル214にアクセスする必要がなく、最新の演算結果に基づいてテーブル更新処理が可能である。そして、これによって、同じフローの入力パケットを連続して受信しても、正常にテーブル更新処理を実行可能である。
S1106の後、並列処理部503は、S1107の処理に進む。
S1102〜S1106の処理において、図11に示す並列処理部503は、テーブル更新処理におけるデータ演算のための情報の取得のみを行ったが、実施例1の並列処理部503は、新規/継続パラメータの値に従って、異なる処理を行ってもよい。例えば、新規/継続パラメータが新規を示す場合、並列処理部503は、S1104の後、設定用テーブル213から取得された設定情報702の値に、ユーザによってあらかじめ与えられた値を加算してもよい。
これによって、入力パケットが連続して受信する場合と、入力パケットが連続して受信されない場合とにおいて、更新される演算結果の値をユーザの要求に従って、変更することができる。
S1104又はS1106の後、並列処理部503は、受信した振分け通知に含まれるフレーム長、及び、設定用テーブル213から取得された設定情報702を用い、S1104又はS1106において取得された演算結果を更新する(S1107)。
S1107における演算結果の更新方法は、管理者等によってあらかじめ定められた方法を用いる。例えば、演算結果の更新方法には、受信した振分け通知に含まれるフレーム長を演算結果に加算することによって、演算結果を更新する方法がある。
また、並列処理部503は、S1107において、更新された演算結果と、設定情報702に格納される閾値とを比較し、比較結果に基づいて、入力パケットに対する処理(例えば、入力パケットのヘッダに含まれる値の変換等)を決定する。そして、決定された処理を、処理判定結果として取得する。
S1107の後、並列処理部503は、入力パケットのフローIDをフローID801に含む演算用テーブル214のエントリの演算結果802に、更新された演算結果を書き戻す。
また、S1107において、並列処理部503は、次に受信する振分け通知がパケットの継続処理を示す場合のため(次パケットの継続処理用に)、更新された演算結果を前回演算結果として内部保持する(S1108)。具体的には、並列処理部503が、更新された演算結果を、論理回路210が備える設定レジスタ212等のメモリに格納する。
S1108において前回演算結果を内部保持することによって、並列処理部503は、入力パケットを次に受信する際に行われるテーブル更新処理に、速やかに実行結果を引き継ぐことができる。
S1108の後、並列処理部503は、出力判定部504へ、演算終了を示す値、及び、S1107において取得された処理判定結果を示す値を含む演算終了通知を送信する(S1109)。S1109の後、並列処理部503は、テーブル更新処理S1150を終了する(S1110)。
以下に、出力判定部504が実行する出力判定処理S1250について説明する。
図12は、本実施例1の出力判定部504が実行する出力判定処理S1250を示すフローチャートである。
出力判定部504は、並列処理部503−1〜並列処理部503−Nのいずれかから演算終了通知を受信する(S1200)。
S1200の後、出力判定部504は、受信した演算終了通知から取得された処理判定結果に従って、入力パケットバッファ204から読み出された入力パケットのVLANヘッダ403の値又はペイロード405の値を変換する。その後、VLANヘッダ403の値又はペイロード405の値を変換された入力パケットを、SWインタフェース205に送信する(S1201)。
S1201の後、出力判定部504は、出力判定処理S1250を終了する(S1202)。
図12に示す処理によって、出力判定部504は、並列処理部503におけるテーブル更新処理の結果に従ったヘッダ変換等の処理を、入力パケットに行うことが可能である。
図13A及び図13Bは、図11に示すテーブル更新処理S1150によって変化する演算結果の二つの例を示す。
図13Aは、本実施例1の並列処理部503−1が連続してテーブル更新処理S1150を実行する際の演算結果を示す説明図である。
テーブル更新時間が10clkであり、かつ、最短パケット到着間隔が2clkである場合において、並列処理部503−1が、同一フローID“100”の入力パケットを2clk間隔で連続受信する例を、図13A及び図13Bに示す。
本実施例において、並列処理振分部501が最初に受信する入力パケットを第1のパケット、第1のパケットよりも2clk後に受信する入力パケットを第2のパケット、第2のパケットよりも2clk後に受信する入力パケットを第3のパケットと記載する。図13Aにおいて、第1のパケット、第2のパケット、及び第3のパケットのフローID302の値は、いずれも“100”である。
また、図13A及び図13Bにおいて、設定情報702−1は、フローID701に“100”を含む設定用テーブル213のエントリの設定情報702の値であり、演算結果802−1は、フローID701に“100”を含む演算用テーブル214のエントリの演算結果802の値である。また、前回演算結果1302−1は、並列処理部503−1が内部保持する前回演算結果である。
第1のパケットは、並列処理振分部501の処理(S904)によって、並列処理部503−1にテーブル更新処理を新規に実行させると決定された、入力パケットである。
実施例1の並列処理部503−1は、新規を示す新規/継続パラメータと、第1のパケットのフローIDと、第1のパケットのフレーム長と、処理開始トリガとを含む振分け通知を並列処理振分部501から受信したタイミング(T1311)から、第1のパケットのフローID“100”を検索キーとして、設定用テーブル213、及び、演算用テーブル214を検索する。そして、並列処理部503−1は、検索の結果、設定情報X1、及び、演算結果A1を取得する(テーブルRD)。
第1のパケットに関するテーブルRDは、図11に示すS1100〜S1104に相当する。
並列処理部503−1は、設定情報X1及び第1のパケットのフレーム長を用いて、演算結果A1を演算結果B1に更新する(データ演算)。第1のパケットに関するデータ演算は、図11のS1107に相当する。
そして、並列処理部503−1は、第1のパケットに関するデータ演算が終了したタイミング(T1314)から、演算結果B1による演算用テーブル214への書き戻しを開始する(テーブルWR)。第1のパケットに関するテーブルWRは、S1108に相当する。
一般的に、テーブルにアクセスするためには時間が必要であるため、演算結果B1による演算用テーブル214への書き戻しは、T1316に終了する。また、並列処理部503−1は、テーブルWRにおいて、演算結果B1を前回演算結果1302−1として、次に受信する入力パケットの継続処理用に内部保持する(図11に示すS1108に相当)。
第2のパケットは、第1のパケットに関するテーブル更新処理が終了する前に並列処理振分部501によって受信される。このため、第2のパケットは、並列処理振分部501の処理(S904)において並列処理部503−1にテーブル更新処理を継続して実行させると決定された、入力パケットである。
並列処理部503−1は、継続を示す新規/継続パラメータと、第2のパケットのフローIDと、第2のパケットのフロー長と、処理開始トリガと振分け通知を並列処理振分部501から受信したタイミング(T1312)から、第2のパケットのフローID“100”を検索キーとして、設定用テーブル213を検索する。並列処理部503−1は、検索の結果、設定情報X1を取得する(ダミーRD)。
第2のパケットに関するダミーRDは、S1100〜S1102、及び、S1105に相当する。
T1312において、第1のパケットに関するテーブル更新処理の演算結果の更新が終了していないため、演算結果802−1は、演算結果A1のままである。このため、並列処理部503−1は、第2のパケットに関するテーブル更新処理において、演算用テーブル214から演算結果を取得しない。
そして、並列処理部503−1は、新規/継続パラメータが継続を示す振分け通知を受信したタイミングから、ダミーRDを実行する。本実施例におけるテーブル処理において、演算用テーブル214を参照せず、設定用テーブル213から設定情報のみを取得する処理を、ダミーRDと記載する。
ダミーRDの後、並列処理部503−1は、第1のパケットのテーブル演算によって内部保持された前回演算結果1302−1を読み出すことによって、前に実行されたテーブル更新処理の演算結果B1を引き継ぐ(T1314)。第1のパケットのテーブル演算によって内部保持された演算結果B1を引き継ぐ処理は、図11のS1106に相当する。
そして、並列処理部503−1は、設定情報X1及び第2のパケットのフレーム長を用いて、引き継がれた演算結果B1を演算結果C1に更新する(データ演算)。第2のパケットに関するデータ演算は、図11に示すS1107に相当する。
第2のパケットに関するデータ演算の後、並列処理部503−1は、T1315から、演算結果C1による演算用テーブル214への書き戻しを開始する(テーブルWR)。第2のパケットに関するテーブルWRは、図11に示すS1108に相当に相当する。
テーブルにアクセスするためには時間が必要であるため、演算結果C1による演算用テーブル214への書き戻しは、T1318に終了する。また、テーブルWRにおいて、並列処理部503−1は、演算結果C1を前回演算結果1302−1として、次に受信する入力パケットの継続処理用に内部保持する。
第2のパケットが第1のパケットに関するテーブル更新処理の終了前に受信されたパケットであることと同じく、第3のパケットは、第2のパケットに関するテーブル更新処理が終了する前に、並列処理振分部501によって受信されるパケットである。このため、第2のパケットに関するテーブル更新処理と、第3のパケットに関するテーブル更新処理とは同様である。
ただし、図13Aにおける設定情報702−1は、T1312と、第3のパケットに関するテーブル更新処理が開始されるT1313との間で、管理者等によって更新されている。具体的には、設定情報702−1に格納された値は、設定情報X1から設定情報Y1に更新される。このため、並列処理部503−1がT1313からのダミーRDにおいて取得する設定情報702−1は、設定情報Y1である。
また、並列処理部503−1は、T1317からのテーブルWRにおいて、前回演算結果1302−1として演算結果D1を保持する。また、第3のパケットに関するテーブル更新処理が終了するT1319以後、演算結果802−1は、演算結果D1を格納する。
前述の処理によれば、T1314の後、演算結果B1が前回演算結果1302−1として保持されるため、並列処理部503−1は、第2のパケットに関するテーブル更新処理におけるデータ演算に、演算結果B1を引き継ぐことができる。また、T1315の後、演算結果C1が前回演算結果1302−1として保持されるため、並列処理部503−1は、第3のパケットに関するテーブル更新処理における演算処理に、演算結果C1を引き継ぐことができる。
図13Bは、本実施例1の二つの並列処理部503がテーブル更新処理S1150を実行する際の演算結果を示す説明図である。
図13Bは、並列処理部503−1と並列処理部503−2との二つがテーブル更新処理を実行する場合の演算結果の変化を示す図である。すなわち、並列処理振分部501が異なるフローの入力パケットを受信した場合、図13Bに示す演算結果が求められる。
図13Bにおいて、並列処理振分部501は、フローID“100”の第1のパケット及び第3のパケットを受信し、フローID“200”の第2のパケットを、連続して受信する。また、フローID701に“200”を含む設定用テーブル213のエントリの設定情報702の値を、設定情報702−2と記載する。また、フローID801に“200”を含む演算用テーブル214のエントリの演算結果802の値を、演算結果802−2と記載する。また、前回演算結果1302−2は、並列処理部503−2が保持する前回演算結果である。
並列処理部503−1は、図13Bにおける第1のパケットに関するテーブル更新処理を、図13Aにおける第1のパケットに関するテーブル更新処理と同じく実行する。
図13Bにおける第2のパケットは、第1のパケットと異なるフローIDである。このため、並列処理振分部501は、並列処理部503−2に、新規を示す新規/継続パラメータと、フローID“200”と、第2のパケットのフロー長と、処理開始トリガとを含む振分け通知を送信する。
そして、並列処理部503−2は、並列処理部503−1における第1のパケットのテーブル更新処理と同じく、第2のパケットのテーブル更新処理を実行する。並列処理部503−2は、T1312から第2のパケットに関するテーブル更新処理を開始し、T1318までに第2のパケットに関するテーブル更新処理を終了する。
並列処理部503−2は、T1312において設定用テーブル213から設定情報702−2(設定情報X2)を取得する。また、並列処理部503−2は、T1312において、演算用テーブル214から演算結果802−2(演算結果A2)を取得する。また、並列処理部503−2は、第2のパケットに関するテーブル更新処理において、演算結果A2を演算結果B2に更新する。
並列処理部503−1が演算用テーブル214に演算結果B1を書き戻す間に、並列処理部503−2は、演算結果B2を演算用テーブル214に書き戻す(T1315)。これは、第1のパケットと第2のパケットとのフローIDが異なり、設定用テーブル213、及び、演算用テーブル214の異なるエントリに第1のパケット及び第2のパケットに関する情報が格納されているためである。並列処理部503−1と並列処理部503−2との両方が同時に演算用テーブル214に書き戻すことができる。
また、第3のパケットは、第1のパケットと同じフローIDであり、第1のパケットに関するテーブル更新処理が終了する前に並列処理振分部501によって受信されるパケットである。並列処理振分部501は、第3のパケットに関するテーブル更新処理を、第1のパケットに関するテーブル更新処理を実行する並列処理部503−1に、継続して実行させる。
並列処理部503−1による第3のパケットに関するテーブル更新処理は、図13Aに示す第3のパケットに関するテーブル更新処理と同様である。ただし、並列処理部503−1は、前回演算結果1302−1から演算結果B1を取得し、演算結果B1を演算結果C1に更新する。
なお、本実施例において、最短パケット到着間隔は全て2clkであるため、並列処理部による継続パケット処理のデータ演算は2clk以内に実行される必要がある。本実施例における並列処理振分部501は、データ演算に必要な時刻を保持し、データ演算に必要な時間よりも短い時間間隔で入力パケットを受信した場合、連続して受信した入力パケットを廃棄してもよい。
前述のとおり、実施例1によれば、パケット通信装置2は、各並列処理部503において前回の演算結果が保持され、連続して受信する入力パケットに関するデータ演算を、保持される演算結果によって行う。このため、実施例1の並列処理部503は、演算用テーブル214をテーブル更新処理の都度アクセスする必要がなく、テーブル更新処理を連続して実行することが可能である。
また、演算用テーブル214へのアクセス頻度を下げ、パケット通信装置の消費電力を低減することができる。
さらに、実施例1によれば、設定用テーブル213を用いて入力パケットに関するテーブル更新処理を実行し、かつ、出力判定部504において入力パケットの変換等を実行するため、より複雑なテーブル更新処理を実行することが可能である。
以下、本実施例2について図14から図20を用いて説明する。
実施例1におけるパケット通信装置2は、各入力パケットに一般的なテーブル更新処理を実行したが、実施例2におけるパケット通信装置は、各入力パケットに基づいて帯域制御を行う。実施例2において、帯域制御機能を実現するため、パケット通信装置は、トークンバケツアルゴリズムを使用する。
トークンバケツアルゴリズムを使用する場合、パケット通信装置は、設定された帯域に対応する速度でトークンバケツ(メモリに保持された所定の領域)にトークンを加算する。そして、パケット通信装置が送信する予定のパケットのフレーム長分のトークンがトークンバケツに蓄積されている場合、保証帯域内と判定し、フレーム長のパケットを送信し、かつ、フレーム長分のトークンをトークンバケツから減算する。また、パケット通信装置が送信する予定のパケットのフレーム長分のトークンがトークンバケツに蓄積されていない場合、保証帯域外であると判定し、フレーム長のパケットを送信する。トークンは保持し、フレーム長分のトークンをトークンバケツから減算しない。
図14は、本実施例2のパケット通信装置2の物理的な構成及び論理回路2210を示すブロック図である。
実施例2のパケット通信装置22は、図2に示す実施例1のパケット通信装置2と同じ物理的な構成を備える。具体的には、パケット通信装置22は、図2に示すパケット通信装置2と同じく、複数のネットワークインタフェースボード(NIF)(200−1〜200−M)、及び、スイッチ部206を備える。また、実施例2におけるNIF200も、実施例1におけるNIF200と同じく、入出力回線インタフェース201、SWインタフェース205、及びNIF管理部211を備える。
しかし、実施例2におけるNIF200は、実施例1の論理回路210の代わりに、論理回路2210を備える。論理回路2210と論理回路210との相違点は、論理回路2210に備わるメモリが、帯域設定テーブル2213、及び、演算結果保持テーブル2214を保持する点である。
また、論理回路2210が有する入力パケット制御部2203は、実施例1の論理回路210が有する入力パケット制御部203と異なる処理を実行する。
論理回路2210に備わる設定レジスタ2212は、実施例1の設定レジスタ212と同様に、一時的にデータを格納する記憶領域を有し、論理回路2210が有する全ての処理部に接続される。しかし、設定レジスタ2212は、入力パケット制御部2203の処理に伴い、設定レジスタ212とは異なるデータを格納する。以下において、設定レジスタ2212の処理の説明は省略する。
実施例2における、入力ヘッダ処理部202、入力パケットバッファ204、出力ヘッダ処理部207、出力パケット制御部208、及び、出力パケットバッファ209は、実施例1における、入力ヘッダ処理部202、入力パケットバッファ204、出力ヘッダ処理部207、出力パケット制御部208、及び、出力パケットバッファ209と同じである。
帯域設定テーブル2213は、実施例1の設定用テーブル213に相当し、入力パケット制御部2203において実行されるテーブル更新処理に用いられる設定値を格納する。また、演算結果保持テーブル2214は、実施例1の演算用テーブル214に相当し、入力パケット制御部2203において実行されるテーブル更新処理の結果を格納する。実施例2は、設定用テーブル213及び演算用テーブル214に格納されるデータが実施例1とは異なる場合の実施例である。
入力パケット制御部2203は、入力ヘッダ処理部202から入力パケットを受信すると、入力パケットバッファ204に格納する。この際、入力パケット制御部2203は、帯域設定テーブル2213、及び、演算結果保持テーブル2214を用いてパケット処理、すなわち、帯域制御処理を実行する。帯域制御処理後、入力パケットバッファ204に格納されたパケットを読み出し、SWインタフェース205に送信する。
図15は、本実施例2の入力パケット制御部2203の論理的な構成を示すブロック図である。
入力パケット制御部2203は、図5に示す入力パケット制御部203と同様の構成を有する。しかし、入力パケット制御部2203と実施例1の入力パケット制御部203とが異なる点は、入力パケット制御部2203が、複数の並列処理部2503(並列処理部2503−1〜2503−N)、出力判定部2504、及び、アクセス調停部2505を有する点である。また、並列処理部2503、出力判定部2504、及び、アクセス調停部2505は、実施例1の並列処理部503、出力判定部504、及び、アクセス調停部505と異なる処理を行う。
また、実施例2の利用フロー管理リスト502の並列処理部601が、並列処理部2503−1〜2503−Nを示す点が、実施例2の利用フロー管理リスト502と実施例1の利用フロー管理リスト502との異なる点である。
実施例2における並列処理振分部501は、実施例1における並列処理振分部501と同じ振分け処理S950を実行する。
並列処理部2503は、後述するテーブル更新処理S1850を実行し、演算結果保持テーブル2214に含まれる各フローの情報を更新する。また、並列処理部2503は、処理判定結果(保証内、又は、保証外)を出力判定部2504に送信する。
実施例1と同じく実施例2においても、並列処理部2503がテーブル更新処理S1850に要する時間はあらかじめ定められる。また、入力パケットバッファ204は、並列処理振分部501及び出力判定部2504によってシフトレジスタとして使用される。また、並列処理部2503の数Nは、実施例1と同じく、テーブル更新時間と最短パケット到着間隔とに基づいてあらかじめ決定される。
出力判定部2504は、後述する出力判定処理S1950を実行し、各並列処理部2503から演算終了及び処理判定結果(保証内、又は、保証外)を受信する。出力判定部2504は、処理判定結果に基づき、入力パケットバッファ204から受信した入力パケットのヘッダを変換し、ヘッダを変換された入力パケットをSWインタフェース205に送信する。
アクセス調停部2505は、実施例1のアクセス調停部505と同様に、各並列処理部2503から帯域設定テーブル2213及び演算結果保持テーブル2214へのアクセス(読み出し及び書き戻し)を調停する。
図16は、本実施例2の帯域設定テーブル2213を示す説明図である。
帯域設定テーブル2213に格納される値は、並列処理部2503がトークンアルゴリズムを実行するために用いる設定値であり、管理者等によってあらかじめ定められる値である。帯域設定テーブル2213は、フローID2701、周期加算トークン値2702、及び、トークンバケツの深さ2703を含む。
フローID2701は、入力パケットに割り当てられたフローを一意に示す識別子を含む。フローID2701に格納される値は、入力ヘッダ処理部202において装置内ヘッダ3のフローID302に格納された値に対応する。
周期加算トークン値2702は、単位時間あたりにトークンバケツに追加されるトークン量(単位時間あたりに蓄積される保証帯域に相当)を示す。
トークンバケツの深さ2703は、トークンバケツが保持できる最大のトークン量を示す。
図17は、本実施例2の演算結果保持テーブル2214を示す説明図である。
演算結果保持テーブル2214は、パケットを保証帯域によって送信できるか否かを判定するためのテーブルである。演算結果保持テーブル2214は、フローID2801、前回パケット到着時刻2802、及び、保持トークン値2803を含む。
フローID2801は、入力パケットに割り当てられたフローを一意に示すフローIDを含む。フローID2801に格納される値は、入力ヘッダ処理部202において装置内ヘッダ3のフローID302に格納された値に対応する。
前回パケット到着時刻2802は、並列処理部2503において前回実行されたテーブル更新処理が実行された時刻を示す。保持トークン値2803は、前回実行されたテーブル更新処理によって算出された、トークンバケツに蓄積されるトークン量を示す。すなわち、前回パケット到着時刻2802は、保持トークン値2803に格納される値を算出した時刻を示す。
図18A及び図18Bによって、並列処理部2503が実行するテーブル更新処理S1850について説明する。
図18Aは、本実施例2の並列処理部2503が実行するテーブル更新処理S1850のうち、入力パケットを受信するまでに蓄積されたトークン量を算出する処理を示すフローチャートである。
並列処理部2503は、並列処理振分部501から処理開始トリガを含む振分け通知を受信した場合(S1800)、振分け通知に含まれる新規/継続パラメータ、フローID、及び、フレーム長を取得する(S1801)。
S1801の後、並列処理部2503は、新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S1802)。
新規/継続パラメータが“0”である場合、すなわち、新規/継続パラメータが新規を示すとS1802において判定された場合、並列処理部2503は、S1801において取得されたフローID、すなわち、入力パケットのフローIDを検索キーとして帯域設定テーブル2213を検索する。そして、検索の結果、並列処理部2503は、入力パケットのフローIDをフローID2701に含む帯域設定テーブル2213のエントリの周期加算トークン値2702の値、及び、トークンバケツの深さ2703の値を取得する(S1803)。
なお、並列処理部2503は、S1803において帯域設定テーブル2213を検索した時刻を、論理回路2210のメモリに保持する。
S1803の後、並列処理部2503は、入力パケットのフローIDを検索キーとして演算結果保持テーブル2214を検索する。そして、検索の結果、並列処理部2503は、入力パケットのフローIDをフローID2801に含む演算結果保持テーブル2214のエントリの前回パケット到着時刻2802の値、及び、保持トークン値2803の値を取得する(S1804)。
S1804の後、並列処理部2503は、S1803において帯域設定テーブル2213を検索した時刻を、前回テーブル更新時刻として、次に受信する入力パケットの継続処理用に内部保持する(S1805)。
S1805の後、並列処理部2503は、S1804において内部保持された帯域設定テーブル2213を検索した時刻と、S1804において取得された前回パケット到着時刻2802との差を、パケット到着間隔として算出する。そして、並列処理部2503は、算出されたパケット到着間隔と、S1804において取得された周期加算トークン値2702とを乗算することによって、加算トークン量を算出する(S1806)。
S1806の後、並列処理部2503は、S1806において算出された加算トークン量を、S1804において取得された保持トークン値2803の値に加算する(S1807)。S1807の後、図18Bに示すS1813の処理に進む。
S1802において新規/継続パラメータが“0”ではないと判定された場合、すなわち、新規/継続パラメータが継続を示すと判定された場合、並列処理部2503は、S1803と同じ処理を行う(S1808)。並列処理部2503は、S1808によって、入力パケットに対応する周期加算トークン値2702の値、及び、トークンバケツの深さ2703の値を取得する。
また、並列処理部2503は、S1808において帯域設定テーブル2213を検索した時刻を、論理回路2210のメモリに保持する。
S1808の後、並列処理部2503は、継続処理用に内部保持する前回テーブル更新時刻を、前回パケット到着時刻として取得する(S1809)。
S1809の後、並列処理部2503は、S1805と同じ処理を行う(S1810)。具体的には、S1810において、並列処理部2503は、S1808において帯域設定テーブル2213を検索した時刻を前回テーブル更新時刻として、次に受信する入力パケットの継続処理用に内部保持する。
S1810の後、並列処理部2503は、S1809において取得された前回パケット到着時刻と、S1808において保持された帯域設定テーブル2213を検索した時刻との差を、パケット到着間隔として算出する。そして、並列処理部2503は、算出されたパケット到着間隔と、S1809において取得された周期加算トークン値2702とを乗算することによって、加算トークン量を算出する(S1811)。
S1811の後、並列処理部2503は、継続処理用に内部保持している前回保持トークン値を取得し、取得された前回保持トークン値に、S1811において算出された加算トークン量を加算し(S1812)、S1813の処理に進む。なお、S1811において取得される前回保持トークン値は、図18Bに示すS1822において保持される値である。
S1807又はS1812における加算結果は、入力パケットを受信するまでにトークンバケツに蓄積されていたトークン量である。
S1802〜S1812の処理に他に、実施例2の並列処理部2503は、新規/継続パラメータの値に従って、異なる処理を行ってもよい。例えば、新規/継続パラメータが新規を示す場合、並列処理部2503は、S1807の結果である加算結果に、ユーザによってあらかじめ与えられた値を加算してもよい。
これによって、入力パケットが連続して受信する場合と、入力パケットが連続して受信されない場合とにおいて、更新される演算結果の値をユーザの要求に従って、変更することができる。
図18Bは、本実施例2の並列処理部2503が実行するテーブル更新処理S1850のうち、入力パケットが帯域保証内であるか否かを判定する処理を示すフローチャートである。
S1807又はS1812の後、並列処理部2503は、S1807又はS1812における加算結果が、S1803又はS1808において取得されたトークンバケツの深さ2703の値を超過するか否かを判定する(1813)。
S1807又はS1812における加算結果がトークンバケツの深さ2703の値以下であるとS1813において判定された場合、並列処理部2503は、S1807又はS1812における加算結果を、現在トークン量として保持する(S1814)。S1814の後、並列処理部2503は、S1816の処理に進む。
また、S1807又はS1812における加算結果がトークンバケツの深さ2703の値を超過しているとS1813において判定された場合、並列処理部2503は、トークンバケツの深さ2703の値を、現在トークン量として保持する(S1815)。S1815の後、並列処理部2503は、S1816に進む。
S1814又はS1815の後、並列処理部2503は、S1801において取得された入力パケットのフレーム長が、S1814又はS1815において保持された現在トークン量以内であるか否かを判定する(S1816)。
入力パケットのフレーム長が現在トークン量以内であると、S1816において判定された場合、並列処理部2503は、現在トークン量から入力パケットのフレーム長分を減算した値を、更新保持トークン値として算出する(S1817)。更新保持トークン値は、入力パケットを送信した後のトークンバケツに残るトークン量を示す。
S1817の後、並列処理部2503は、帯域制御結果が保証内であることを示す処理判定結果を生成し、生成された処理判定結果を出力判定部2504へ送信する(S1818)。S1818の後、並列処理部2503は、S1821に進む。
入力パケットのフレーム長が現在トークン量を超過するとS1816において判定された場合、並列処理部2503は、現在トークン量と同じ値を、更新保持トークン値として保持する(S1819)。
S1819の後、並列処理部2503は、帯域制御結果が保証外であることを示す通知を生成し、生成された通知を出力判定部2504へ送信する(S1820)。S1820の後、並列処理部2503は、S1821に進む。
なお、並列処理部2503は、S1818又はS1820において、帯域制御結果が保証内又は保証外であることを示す処理判定結果を生成し、後述するS1823において、生成された処理判定結果と演算終了を示す通知とを、出力判定部2504へ送信してもよい。
S1818及びS1820において、帯域制御結果を送信又は生成することによって、並列処理部2503は、帯域制御結果に従った処理を入力パケットに行わせることが可能である。
S1818又はS1820の後、並列処理部2503は、S1803又はS1808において保持された帯域設定テーブル2213を検索した時刻によって、演算結果保持テーブル2214の前回パケット到着時刻2802を更新する。また、並列処理部2503は、演算結果保持テーブル2214の保持トークン値2803に、更新保持トークン値を書き戻す(S1821)。
S1821の後、並列処理部2503は、更新保持トークン値を前回保持トークン値として、次に受信する入力パケットの継続処理用に内部保持する(S1822)。
S1822の後、並列処理部2503は、入力パケットを示すフローID等を含み、かつ、演算終了を示す通知を生成し、生成された通知を出力判定部2504へ送信する(S1823)。S1823の後、図18A及び図18Bに示す処理を終了する(S1824)。
以下に、出力判定部2504が実行する出力判定処理S1950について説明する。
図19は、本実施例2の出力判定部2504が実行する出力判定処理S1950を示すフローチャートである。
出力判定部2504は、並列処理部2503から演算終了を示す通知を受信した場合(S1900)、入力パケットバッファ204から、受信した通知が示す入力パケットを読み出す。そして、出力判定部2504は、演算終了を示す通知を送信した並列処理部2503と同じ並列処理部2503から送信された処理判定結果(保証内、又は、保証外)を特定する。
そして、出力判定部2504は、読み出された入力パケットに含まれるCoS値等を、特定された処理結果を示す通知に従って更新する(S1901)。そして、出力判定部2504は、CoS値等を更新された入力パケットをSWインタフェース205に送信する。
そして、出力判定部2504は、S1901の後、図19に示す出力判定処理S1950を終了する(S1902)。
図20は、本実施例2のテーブル更新処理S1850による前回パケット到着時刻及び保持トークン値の変化を示す説明図である。
テーブル更新時間が10clkであり、最短パケット到着間隔が2clkである場合において、並列処理部2503−1が同一フローID“100”の入力パケットを連続受信する例を図20に示す。また、図20において、第1のパケット、第2のパケット、及び、第3のパケットのフレーム長は“80”である。
実施例2の第1のパケットは、実施例1の第1のパケットと同じく、並列処理振分部501の処理(S904)によって、並列処理部2503−1にテーブル更新処理を新規に実行させると決定された、入力パケットである。
実施例2の並列処理部2503−1は、新規を示す新規/継続パラメータと、第1のパケットのフローIDと、処理開始トリガとを含む並列処理振分部501から受信したタイミング(T2011)から、第1のパケットのフローID“100”を検索キーとして、帯域設定テーブル2213、及び、演算結果保持テーブル2214を検索する。そして、並列処理部2503−1は、検索の結果、周期加算トークン値、トークンバケツの深さ、前回パケット到着時刻、及び、保持トークン値を取得する(テーブルRD)。
第1のパケットに関するテーブルRDは、図18Aに示すS1800〜S1805に相当する。
また、並列処理部2503−1は、第1のパケットに関するテーブルRDにおいて、帯域設定テーブル2213を検索した時刻を前回テーブル更新時刻2002として、次に受信する入力パケットの継続処理用に内部保持する(S1805に相当)。なお、図20に示す第1のパケットに関するテーブルRDにおいて、帯域設定テーブル2213を検索した時刻は、“2020”である。
図20に示す第1のパケットに関するテーブルRDにおいて、帯域設定テーブル2213及び演算結果保持テーブル2214を検索した結果、並列処理部2503−1は、周期加算トークン値2702の値として“10”を取得し、トークンバケツの深さ2703の値として“1000”を取得し、前回パケット到着時刻2802の値として“2000”を取得し、保持トークン値2803の値として“100”を取得する。また、並列処理部2503−1が、第1のパケットに関するテーブルRDにおいて内部保持する前回テーブル更新時刻2002の値は、“2020”である。
第1のパケットに関するテーブルRDの後、並列処理部2503−1は、第1のパケットに関するテーブルRDにおいて取得された、帯域設定テーブル2213を検索した時刻“2020”、周期加算トークン値2702の値“10”、トークンバケツの深さ2703の値“1000”、前回パケット到着時刻2802の値“2000”、及び、保持トークン値2803の値“100”を用いて、保持トークン値2803の値“220”を算出する(データ演算)。ここで、算出される保持トークン値は、{(2020−2000)×10+100−80=220}によって算出される。
また、並列処理部2503−1は、第1のパケットに関するデータ演算において、帯域設定テーブル2213を検索した時刻を、前回パケット到着時刻として取得する。すなわち、データ演算において取得される前回パケット到着時刻と、テーブルRDにおいて前回テーブル更新時刻2002とは、同じ値である。
前述の第1のパケットに関するデータ演算は、図18AのS1806、S1807、S1813、S1814、S1816〜S1818に相当する。
第1のパケットに関するデータ演算が終了したタイミング(T2014)から、並列処理部2503−1は、取得された前回パケット到着時刻の値“2020”、及び、算出された保持トークン値の値“220”を演算結果保持テーブル2214の前回パケット到着時刻2802及び保持トークン値2803に書き戻し始める(テーブルWR)。第1のパケットに関するテーブルWRは、図18BのS1821に相当する。
演算結果保持テーブル2214を更新するために所定の時間が必要であるため、取得された前回パケット到着時刻2802の値“2020”、及び、算出された保持トークン値2803の値“220”は、演算結果保持テーブル2214にT2016のタイミングにおいて反映される。
また、第1のパケットに関するテーブルWRにおいて、並列処理部2503−1は、算出された保持トークン値の値“220”を前回保持トークン値2003として、次に受信する入力パケットの継続処理用に内部保持する。この処理は、図18のS1822に相当する。
第2のパケットは、第1のパケットのテーブル更新処理が終了する前に並列処理振分部501によって受信される。このため、第2のパケットは、並列処理振分部501の処理(S904)において並列処理部2503−1にテーブル更新処理を継続して実行させると決定された、入力パケットである。
並列処理部2503−1は、継続を示す新規/継続パラメータと、第2のパケットのフローIDと、処理開始トリガとを含む振分け通知を、並列処理振分部501から受信したタイミング(T2012)から、第2のパケットのフローIDを検索キーとして、帯域設定テーブル2213を検索する。
並列処理部2503−1は、検索の結果、帯域設定テーブル2213から、周期加算トークン値2702の値“10”、及び、トークンバケツの深さ2703の値“1000”を取得する(ダミーRD)。前述の第2のパケットに関するダミーRDは、S1800〜S1802、及び、S1808に相当する。
第2のパケットは、第1のパケットに関するテーブル更新処理が終了する前に受信されたパケットであるため、第2のパケットに関するダミーRDにおいて、並列処理部2503−1は、演算結果保持テーブル2214へアクセスしない。実施例2におけるダミーRDは、帯域設定テーブル2213のみを参照し、演算結果保持テーブル2214から値を取得しない処理を示す。
また、第2のパケットに関するダミーRDにおいて、並列処理部2503−1は、第1のパケットに関するテーブル更新処理において内部保持された前回テーブル更新時刻2002の値“2020”を、前回パケット到着時刻として取得する(S1809に相当)。
さらに、第2のパケットに関するダミーRDにおいて、並列処理部2503−1は、前述の帯域設定テーブル2213を検索した時刻“2022”を前回テーブル更新時刻2002として、次に受信する入力パケットの継続処理用に内部保持する(S1810に相当)。
ここで、並列処理部2503−1は、第2のパケットに関するダミーRDにおいて、後述する前回保持トークン値を引き継ぐ前に、帯域設定テーブル2213を検索した時刻“2022”、周期加算トークン値2702の値“10”、及び、前回パケット到着時刻2802の値“2020”を用いて、加算トークン量を算出する(データ演算)。第2のパケットのデータ演算は、図18AのS1811に相当する。ここで算出される加算トークン量は、(2022−2020)×10=20によって算出される。
並列処理部2503−1は、第2のパケットのデータ演算において、第1のパケットに関するテーブル更新処理時に内部保持した前回保持トークン値2003の値“220”を、第2のパケットに関するテーブル更新処理に引き継ぐ(図18AのS1812に相当)。
そして、第2のパケットに関するデータ演算において、並列処理部2503−1は、更新された前回テーブル更新時刻と更新された保持トークン値を算出する。図18AのS1812、図18BのS1813、S1814、S1816〜S1818に相当する。ここで算出される更新された保持トークン値は、20+220−80=160によって算出される。
並列処理部2503−1は、第2のパケットに関するデータ演算が終了したタイミングT2015から、取得された前回パケット到着時刻“2022”、及び、算出された保持トークン値“160”を演算結果保持テーブル2214に書き戻し始める(テーブルWR)。第2のパケットに関するデータ演算は、図18BのS1821に相当する。
演算結果保持テーブル2214を更新するために所定の時間が必要であるため、T2018のタイミングにおいて、取得された前回パケット到着時刻“2022”、及び、算出された保持トークン値“160”が演算結果保持テーブル2214に反映される。
また、並列処理部2503−1は、第2のパケットに関するデータ演算において、算出された保持トークン値“160”を前回保持トークン値2003として次に受信する入力パケットの継続処理用に内部保持する(S1822に相当)。
第3のパケットは、第2のパケットが第1のパケットに関するテーブル更新処理の終了前に受信された入力パケットであることと同じく、第2のパケットに関するテーブル更新処理が終了する前に、並列処理振分部501によって受信される入力パケットである。このため、第2のパケットに関するテーブル更新処理と、第3のパケットに関するテーブル更新処理とは同様である。
ただし、図20における周期加算トークン値2702の値は、T2012と、第3のパケットに関するテーブル更新処理が開始されるT2013との間で、管理者等によって更新される。具体的には、周期加算トークン値2702に格納された値は、“10”から“30”に更新される。このため、並列処理部2503−1がT2013からのダミーRDにおいて取得する周期加算トークン値2702の値は、“30”である。
また、並列処理部2503−1は、T2017からのテーブルWRにおいて、前回保持トークン値2003として“140”{=(2024−2022)×30+160−80}を保持する。また、第3のパケットに関するテーブル更新処理が終了するT2019以後の演算結果保持テーブル2214において、前回パケット到着時刻2802は、“2024”を格納し、保持トークン値2803は、“140”を格納する。
前述の処理によれば、T2014の後、並列処理部2503−1は、第1のパケットに関するテーブル更新処理による前回テーブル更新時刻2002及び前回保持トークン値2003を保持するため、第2のパケットに関するテーブル更新処理における演算処理において、前回テーブル更新時刻2002及び前回保持トークン値2003を引き継ぐことができる。また、T2015の後、並列処理部2503−1は、第2のパケットに関するテーブル更新処理による前回テーブル更新時刻2002及び前回保持トークン値2003を保持するため、第2のパケットに関するテーブル更新処理における演算処理において、前回テーブル更新時刻2002及び前回保持トークン値2003を引き継ぐことができる。
以上により、実施例2によれば、実施例1の効果と同様に、実施例2の並列処理部2503は、演算結果保持テーブル2214をテーブル更新処理の都度アクセスする必要がなく、帯域制御機能を実行するためのテーブル更新処理を連続して実行することが可能である。
また、演算結果保持テーブル2214へのアクセス頻度を下げ、パケット通信装置の消費電力を低減することができる。
さらに、実施例2によれば、トークンバケツのアルゴリズムを用いたテーブル更新処理を実行し、かつ、テーブル更新処理の実行結果に従って、出力判定部504において入力パケットの変換等を実行するため、より適切な帯域制御を行うことができる。
以下、本実施例3について図21から図25を用いて説明する。
実施例3では、統計カウント機能に本発明を適用する。実施例3では、パケット管理機能の統計情報として、受信パケット数、及び、受信バイト数をカウントする。
図21は、本実施例3のパケット通信装置32の物理的な構成及び論理回路3210を示すブロック図である。
実施例3のパケット通信装置32は、図2に示す実施例1のパケット通信装置2と同じ物理的な構成を備える。具体的には、パケット通信装置32は、図2に示すパケット通信装置2と同じく、複数のネットワークインタフェースボード(NIF)200(200−1〜200−M)、及び、スイッチ部206を備える。また、実施例3におけるNIF200も、実施例1におけるNIF200と同じく、入出力回線インタフェース201、SWインタフェース205、及びNIF管理部211を備える。
しかし、実施例3におけるNIF200は、実施例1の論理回路210の代わりに、論理回路3210を備える。論理回路3210と論理回路210との相違点は、論理回路3210に備わるメモリが、設定用テーブル213、入力パケットバッファ204、及び、出力パケットバッファ209を保持せず、統計情報テーブル3213を保持する点である。
また、論理回路3210が有する入力パケット制御部3203及び出力パケット制御部3208は、論理回路210が有する入力パケット制御部203及び出力パケット制御部208と異なる処理を実行する。
論理回路3210に備わる設定レジスタ3212は、実施例1の設定レジスタ212と同様に、一時的にデータを格納する記憶領域を有し、論理回路3210が有する全ての処理部に接続される。しかし、設定レジスタ3212は、入力パケット制御部3203の処理に伴い、設定レジスタ212とは異なるデータを格納する。以下において、設定レジスタ2212の処理の説明は省略する。
実施例3における、入力ヘッダ処理部202、及び、出力ヘッダ処理部207は、実施例1における、入力ヘッダ処理部202、及び、出力ヘッダ処理部207と同じである。
統計情報テーブル3213は、実施例1の演算用テーブル214に相当し、入力パケット制御部3203において実行されるテーブル更新処理の結果を格納する。実施例3は、本実施例の通信装置が、実施例1の設定用テーブル213を用いない場合の実施例である。
入力パケット制御部3203は、入力ヘッダ処理部202から入力パケットを受信した場合、統計情報テーブル3213を用いてパケット処理、すなわち、統計カウント処理を実行する。入力パケット制御部3203は、入力パケットバッファにパケットを格納せず、統計カウント処理を実行すると同時に、SWインタフェース205にパケットを送信する。
図22は、本実施例3の入力パケット制御部3203の物理的な構成を示すブロック図である。
入力パケット制御部3203は、図5に示す入力パケット制御部203と同様な構成を有する。しかし、入力パケット制御部3203と実施例1の入力パケット制御部203とが異なる点は、入力パケット制御部3203が、並列処理部3503(3503−1〜3503−N)、及び、アクセス調停部3505を有し、出力判定部及び入力パケットバッファを有さない点である。また、並列処理部3503、及び、アクセス調停部505の処理は、実施例1の並列処理部503、及び、アクセス調停部505の処理と異なる。
また、実施例3の利用フロー管理リスト502の並列処理部601が、並列処理部3503−1〜3503−Nを示す点が、実施例3の利用フロー管理リスト502と実施例1の利用フロー管理リスト502との異なる点である。
実施例3における並列処理振分部501は、実施例1における並列処理振分部501と同じ振分け処理S950を実行する。しかし、実施例3における並列処理振分部501は、入力パケットを受信した場合、振分け処理S950を開始し、かつ、受信した入力パケットをSWインタフェース205に送信する。
並列処理部3503は、後述するテーブル更新処理S2450を実行し、統計情報テーブル3213に含まれる各フローの情報を更新する。
実施例1と同じく実施例3においても、並列処理部3503がテーブル更新処理S2450に要する時間は、あらかじめ定められる。また、並列処理部3503の数Nは、実施例1と同じく、テーブル更新時間と最短パケット到着間隔とに基づいてあらかじめ決定される。
アクセス調停部3505は、実施例1のアクセス調停部505と同様に、各並列処理部3503の統計情報テーブル3213へのアクセス(読み出し及び書き戻し)を調停する。
図23は、本実施例3の統計情報テーブル3213を示す説明図である。
統計情報テーブル3213は、パケット通信装置32が受信したパケットについての情報を有するテーブルである。統計情報テーブル3213は、フローID3701、受信パケット数3702、及び、受信バイト数3703を含む。
フローID3701は、入力パケットのフローIDを含む。受信パケット数3702は、並列処理振分部501が受信した入力パケットの数を含む。受信バイト数3703は、並列処理振分部501が受信した入力パケットのバイト数の合計値を示す。
以下に、並列処理部3503−1〜3503−Nが実行するテーブル更新処理S2450について説明する。
図24は、本実施例3の並列処理部3503が実行するテーブル更新処理S2450を示すフローチャートである。
並列処理部3503は、並列処理振分部501から処理開始トリガを含む振分け通知を受信した場合(S2400)、振分け通知に含まれる新規/継続パラメータ、フローID、及び、フレーム長を取得する(S2401)。
S2401の後、並列処理部3503は、振分け通知に含まれる新規/継続パラメータが“0”であるか否か、すなわち、新規/継続パラメータが新規を示すか否かを判定する(S2402)。
新規/継続パラメータが“0”である場合、すなわち、新規/継続パラメータが新規を示すとS2402において判定された場合、並列処理部3503は、S2401において取得されたフローID、すなわち、入力パケットのフローIDを検索キーとして統計情報テーブル3213を検索する。そして、検索の結果、並列処理部3503は、受信パケット数3702、及び、受信バイト数3703を取得する(S2403)。S2403の後、S2405の処理へ進む。
新規/継続パラメータが“0”を示さない、すなわち、新規/継続パラメータが継続を示すとS2402において判定された場合、並列処理部3503は、並列処理部3503が継続処理用に内部保持する前回受信パケット数、及び、前回受信バイト数を取得する(S2404)。S2404の後、S2405の処理に進む。
S2403又はS2404の後、並列処理部3503は、受信パケット数(S2403において取得された受信パケット数3702、又は、S2404において取得された前回受信パケット数)に“1”を加算する。そして、並列処理部3503は、加算結果を、更新された受信パケット数として取得する。
また、並列処理部3503は、受信バイト数(S2403において取得された受信バイト数3703、又は、S2404において取得された前回受信バイト数)に、S2401において取得されたフレーム長分を加算する。そして、並列処理部3503は、加算結果を、更新された受信バイト数として取得する(S2405)。
S2405の後、並列処理部3503は、更新された受信パケット数を、統計情報テーブル3213の受信パケット数3702に書き戻し、更新された受信バイト数を、統計情報テーブル3213の受信バイト数3703に書き戻す。
そして、S2405において、並列処理部3503は、更新された受信パケット数及び更新された受信バイト数を、前回受信パケット数及び前回受信バイト数として次パケットの継続処理用に内部保持する(S2406)。S2406の後、並列処理部3503は、テーブル更新処理S2450を終了する(S2407)。
図25は、本実施例3の並列処理部3503が実行するテーブル更新処理による、受信パケット数、及び、受信バイト数の変化を示す説明図である。
テーブル更新時間が10clkであり、かつ、最短パケット到着間隔が2clkである場合において、並列処理部3503−1が、同一フローID“100”の入力パケットを2clk間隔で連続受信する例を、図25に示す。また、図25において、入力パケットのフレーム長は“80”である。
第1のパケットは、並列処理振分部501の処理(S904)によって、並列処理部3503−1にテーブル更新処理を新規に実行させると決定された、入力パケットである。
実施例3の並列処理部3503−1は、新規を示す新規/継続パラメータと、第1のパケットのフローIDと、第1のパケットのフレーム長と、処理開始トリガとを含む振分け通知を並列処理振分部501から受信したタイミング(T2511)から、第1のパケットのフローIDを検索キーとして、統計情報テーブル3213を検索する。そして、並列処理部3503−1は、検索の結果、第1のパケットのフローIDに対応する受信パケット数3702、及び、受信バイト数3703を取得する(テーブルRD)。
第1のパケットに関するテーブルRDは、図24に示すS2400〜S2403に相当する。図25に示す第1のパケットに関するテーブルRDにおいて取得される、受信パケット数3702の値は“10”であり、受信バイト数3703の値は“1000”である。
並列処理部3503−1は、取得された受信パケット数の値“10”に“1”を加算し、読み出された受信バイト数の値“1000”に第1のパケットのフレーム長“80”を加算する。そして、並列処理部3503−1は、加算結果を更新された受信パケット数“11”及び更新された受信バイト数“1080”として取得する(データ演算)。
データ演算が終了したタイミング(T2514)から、並列処理部3503−1は、更新された受信パケット数“11”及び更新された受信バイト数“1080”を統計情報テーブル3213に書き戻す(テーブルWR)。第1のパケットに関するテーブルWRはS2405に相当する。
テーブルにアクセスするためには時間が必要であるため、T2516のタイミングにおいて、更新された受信パケット数“11”及び更新された受信バイト数“1080”が統計情報テーブル3213に反映される。
また、並列処理部3503−1は、T2514からのテーブルWRにおいて、更新された受信パケット数“11”及び更新された受信バイト数“1080”を、前回受信パケット数3512及び前回受信バイト数3513として、次パケットの継続処理用に内部保持する。更新された受信パケット数“11”及び更新された受信バイト数“1080”を内部保持する処理は、S2406に相当する。
第2のパケットは、第1のパケットのテーブル更新処理が終了する前に並列処理振分部501によって受信される。並列処理振分部501は、第2のパケットを、並列処理部3503−1に継続して実行させると決定する。
並列処理部3503−1は、継続を示す新規/継続パラメータと、第2のパケットのフローIDと、第2のパケットのフロー長と、処理開始トリガとを含む振分け通知を並列処理振分部501から受信したタイミング(T2512)においても、第1のパケットに関するテーブル更新処理によるテーブルWRが終了していないため、統計情報テーブル3213へアクセスしない。
このため、実施例3の第2のパケットに関するテーブル更新処理において、テーブルRD又はダミーRDは実行されない。
並列処理部3503−1は、T2514の後、第1のパケットに関するテーブル更新処理時に内部保持された前回受信パケット数3512“11”及び前回受信バイト数3513“1080”を引き継ぎ、第2のパケットに関するデータ演算を開始する。T2514までの処理は、図24に示すS2400〜S2402、及び、S2404に相当する。
なお、パケット到着間隔は2clkであるため、並列処理部3503−1は、前回受信パケット数3512、及び、前回受信バイト数3513を引き継いだ後のデータ演算を、2clk以内に実施する。並列処理部3503−1が、データ演算を実行するために、パケット到着間隔以上の時間を必要とする場合、並列処理振分部501において入力パケットは廃棄されてもよい。
並列処理部3503−1は、第2のパケットに関するデータ演算において、引き継がれた前回受信パケット数3512“11”に“1”を加算し、前回受信バイト数3513“1080”にフレーム長分“80”を加算する。そして、並列処理部3503−1は、加算結果を、更新された受信パケット数“12”及び更新された受信バイト数“1160”として取得する。
データ演算が終了したタイミングT2515から、並列処理部3503−1は、更新された受信パケット数“12”及び更新された受信バイト数“1160”を統計情報テーブル3213に書き戻す(テーブルWR)。T2515からのテーブルWRは、図24のS2405に相当する。
テーブルにアクセスするためには時間が必要であるため、T2518のタイミングにおいて、更新された受信パケット数“12”及び更新された受信バイト数“1160”が統計情報テーブル3213に反映される。
また、並列処理部3503−1は、T2515からのテーブルWRにおいて、更新された受信パケット数“12”及び更新された受信バイト数“1160”を、前回受信パケット数3512及び前回受信バイト数3513として次パケットの継続処理用に内部保持する。更新された受信パケット数“12”及び更新された受信バイト数“1160”を内部保持する処理は、図11のS2406に相当する。
また、実施例3の第3のパケットは、実施例1又は実施例2の第2のパケットと同様、第2のパケットに関するテーブル更新処理が終了する前に並列処理振分部501に受信されるため、第2のパケットに関するテーブル更新処理と、第3のパケットに関するテーブル更新処理とは同様である。
並列処理部3503−1は、T2517からのテーブルWRにおいて、前回受信パケット数3512及び前回受信バイト数3513として“13”及び“1240”を保持する。また、第3のパケットに関するテーブル更新処理が終了するT2519以降、受信パケット数3702−1は、“13”を格納し、受信バイト数3703−1は、“1240”を格納する。
以上により、実施例3によれば、実施例1の効果と同様に、パケット通信装置2は、各並列処理部3503において前回の演算結果が保持され、連続して受信する入力パケットに関するデータ演算を、保持される演算結果によって行う。このため、実施例3の並列処理部3503は、統計情報テーブル3213をテーブル更新処理の都度アクセスする必要がなく、パケット管理機能を実行するためのテーブル更新処理を連続して実行することが可能である。
また、演算用テーブル214へのアクセス頻度を下げ、パケット通信装置の消費電力を低減することができる。
なお、本実施例における並列処理部は、新規/継続パラメータの値に従って、異なる処理を行ってもよい。具体的には、図11に示すS1102〜S1106において、図18Aに示すS1802〜S1812において、又は、図24に示すS2402〜S2402において、新規/継続パラメータが継続を示す場合と、新規/継続パラメータが新規を示す場合とに従って、並列処理部は、ユーザによってあらかじめ与えられた異なる処理を実行してもよい。
これによって、本実施例の並列処理部は、入力パケットが連続して受信する場合と、入力パケットが連続して受信されない場合とにおいて、更新される演算結果の値をユーザの要求に従って、変更することができる。
2 パケット通信装置
200 ネットワークインタフェースボード
201 入出力回線インタフェース
202 入力ヘッダ処理部
203 入力パケット制御部
204 入力パケットバッファ
205 SWインタフェース
206 スイッチ部
207 出力ヘッダ処理部
208 出力パケット制御部
209 出力パケットバッファ
210 論理回路
211 NIF管理部
212 設定レジスタ
213 設定用テーブル
214 演算用テーブル
501 並列処理振分部
502 利用フロー管理リスト
503 並列処理部
504 出力判定部
505 アクセス調停部
2203 入力パケット制御部
2210 論理回路
2212 設定レジスタ
2213 帯域設定テーブル
2214 演算結果保持テーブル
2503 並列処理部
2504 出力判定部
2505 アクセス調停部
3203 入力パケット制御部
3208 出力パケット制御部
3210 論理回路
3212 設定レジスタ
3213 統計情報テーブル

Claims (14)

  1. ネットワークに接続される通信装置であって、
    前記通信装置は、
    前記ネットワークから送信されるパケットを受信する入力インタフェースと、
    前記パケットに関する処理を実行する複数の並列処理部と、
    前記パケットに関する処理を前記各並列処理部へ振り分ける並列処理振分部と、
    前記パケットに関する処理の実行結果を示す値と、前記パケットに割り当てられるフローIDと含む演算用テーブルと、を有し、
    前記各並列処理部は、当該並列処理部において実行された前記パケットに関する処理を実行した実行結果を保持し、
    前記並列処理振分部は、
    前記各並列処理部が処理を実行する前記パケットに割り当てられたフローIDと、前記各並列処理部における前記パケットに関する処理の状況を示す値と、を含む利用フロー管理リストを保持し、
    第1のパケットを受信した場合、前記利用フロー管理リストと、前記第1のパケットに割り当てられたフローIDとに基づいて、前記第1のパケットに対応する前記フローIDが割り当てられた第2のパケットに関する処理が実行中であるか否かを判定し、
    前記判定の結果に従って、前記第1のパケットに関する処理を実行する並列処理部と、当該並列処理部に送信する振分け通知に含まれるパラメータと、を決定し、
    前記振分け通知に、前記第1のパケットに関する情報を含めて、前記決定された並列処理部に送信し、
    前記決定された並列処理部は、
    前記振分け通知を受信した場合、前記演算用テーブル、又は、当該並列処理部に保持された実行結果から、前記受信した振分け通知に従って前記第2のパケットに関する処理の実行結果を取得し、
    前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記第1のパケットに関する処理を実行し、
    前記第1のパケットに関する処理が実行された実行結果によって、前記演算用テーブルを更新することを特徴とする通信装置。
  2. 請求項1に記載の通信装置であって、
    前記利用フロー管理リストに含まれる処理の状況を示す値は、前記各並列処理部が前記パケットに関する処理を開始してから経過した実行時間を示す値であり、
    前記並列処理振分部は、
    前記第1のパケットを受信した場合、前記第1のパケットに割り当てられたフローIDと、前記利用フロー管理リストとに基づいて、前記第2のパケットに関する処理を実行する並列処理部が前記第2のパケットに関する処理を開始してから経過した実行時間を示す値を取得し、
    前記取得された実行時間を示す値に基づいて、前記第2のパケットに関する処理が実行中であるか否かを判定し、
    前記判定の結果、前記第2のパケットに関する処理が実行中である場合、前記第2のパケットに関する処理を実行する前記並列処理部を、前記第1のパケットに関する処理を実行する並列処理部に決定し、かつ、前記パラメータを継続を示す値に決定し、
    前記決定された並列処理部は、前記受信した振分け通知に継続を示す前記パラメータが含まれる場合、当該並列処理部に保持された実行結果から、前記第2のパケットに関する処理の実行結果を取得することを特徴とする通信装置。
  3. 請求項1又は2に記載の通信装置であって、
    前記通信装置は、前記パケットに関する処理に用いる所定の設定値と、前記パケットに割り当てられたフローIDとを含む設定用テーブルを有し、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットに割り当てられたフローIDを含み、
    前記決定された並列処理部は、
    前記振分け通知を受信した場合、前記受信した振分け通知に従って、前記設定用テーブルから前記第1のパケットに関する処理に用いる所定の設定値を読み出し、
    前記取得された第2のパケットに関する処理の実行結果と、前記振分け通知に含まれる第1のパケットに関する情報と、前記読み出された所定の設定値と、を用いて、前記第1のパケットに関する処理を実行することを特徴とする通信装置。
  4. 請求項3に記載の通信装置であって、
    前記設定用テーブルに含まれる所定の設定値は、前記フローIDに対応するトークンバケツに追加される単位時間あたりのトークン量と、前記トークンバケツに蓄積されるトークンの最大量と、を含み、
    前記パケットに関する処理の実行結果は、前記トークンバケツに蓄積されるトークン量と、前記トークンバケツに蓄積されるトークン量を算出した最新の時刻と、を含み、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットのフレーム長を含み、
    前記決定された並列処理部が前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのフレーム長を下回ると判定された場合、前記決定された並列処理部は、前記第1のパケットの送信が保証外であることを示す情報を出力し、
    前記決定された並列処理部が前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのフレーム長以上と判定された場合、前記決定された並列処理部は、前記第1のパケットの送信が保証内であることを示す情報を出力することを特徴とする通信装置。
  5. 請求項3に記載の通信装置であって、
    前記通信装置は、
    前記入力インタフェースを介して受信した前記パケットを保持するパケットバッファと、
    前記パケットのヘッダを書き換える出力判定部と、をさらに有し、
    前記並列処理振分部は、前記第1のパケットを受信した場合、前記第1のパケットをパケットバッファに格納し、
    前記決定された並列処理部は、前記第1のパケットに関する処理を実行した結果に従って、前記第1のパケットのヘッダを書き換える指示を、前記出力判定部に送信し、
    前記出力判定部は、
    前記第1のパケットのヘッダを書き換える指示に従って、前記パケットバッファから前記第1のパケットを取得し、
    前記取得された第1のパケットのヘッダを書き換えることを特徴とする通信装置。
  6. 請求項1又は2に記載の通信装置であって、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットのフレーム長を含み、
    前記パケットに関する処理の実行結果は、前記通信装置が受信した前記パケットの数と、前記通信装置が受信した前記パケットのバイト数と、を含み、
    前記決定された並列処理部は、
    前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記通信装置が受信した前記第2のパケットの数に1を加算し、前記通信装置が受信した前記第2のパケットのバイト数に、前記第1のパケットのフレーム長を加算することによって、前記第1のパケットに関する処理を実行することを特徴とする通信装置。
  7. 請求項1又は2に記載の通信装置であって、
    前記並列処理部は、前記パラメータが示す値に従った処理方法を保持し、
    前記決定された並列処理部は、前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記パラメータが示す値に従った処理方法によって、前記第1のパケットに関する処理を実行することを特徴とする通信装置。
  8. ネットワークに接続される通信装置による通信方法であって、
    前記通信装置は、
    前記ネットワークから送信されるパケットを受信する入力インタフェースと、
    前記パケットに関する処理を実行する複数の並列処理部と、
    前記パケットに関する処理を前記各並列処理部へ振り分ける並列処理振分部と、
    前記パケットに関する処理の実行結果を示す値と、前記パケットに割り当てられるフローIDと含む演算用テーブルと、を有し、
    前記各並列処理部は、当該並列処理部において実行された前記パケットに関する処理を実行した実行結果を保持し、
    前記並列処理振分部は、前記各並列処理部が処理を実行する前記パケットに割り当てられたフローIDと、前記各並列処理部における前記パケットに関する処理の状況を示す値と、を含む利用フロー管理リストを保持し、
    前記方法は、
    前記並列処理振分部が、第1のパケットを受信した場合、前記利用フロー管理リストと、前記第1のパケットに割り当てられたフローIDとに基づいて、前記第1のパケットに対応する前記フローIDが割り当てられた第2のパケットに関する処理が実行中であるか否かを判定し、
    前記並列処理振分部が、前記判定の結果に従って、前記第1のパケットに関する処理を実行する並列処理部と、当該並列処理部に送信する振分け通知に含まれるパラメータと、を決定し、
    前記並列処理振分部が、前記振分け通知に、前記第1のパケットに関する情報を含めて、前記決定された並列処理部に送信し、
    前記決定された並列処理部が、前記振分け通知を受信した場合、前記演算用テーブル、又は、当該並列処理部に保持された実行結果から、前記受信した振分け通知に従って前記第2のパケットに関する処理の実行結果を取得し、
    前記決定された並列処理部が、前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記第1のパケットに関する処理を実行し、
    前記決定された並列処理部が、前記第1のパケットに関する処理が実行された実行結果によって、前記演算用テーブルを更新することを特徴とする通信方法。
  9. 請求項8に記載の通信方法であって、
    前記利用フロー管理リストに含まれる処理の状況を示す値は、前記各並列処理部が前記パケットに関する処理を開始してから経過した実行時間を示す値であり、
    前記方法は、
    前記並列処理振分部が、前記第1のパケットを受信した場合、前記第1のパケットに割り当てられたフローIDと、前記利用フロー管理リストとに基づいて、前記第2のパケットに関する処理を実行する並列処理部が前記第2のパケットに関する処理を開始してから経過した実行時間を示す値を取得し、
    前記並列処理振分部が、前記取得された実行時間を示す値に基づいて、前記第2のパケットに関する処理が実行中であるか否かを判定し、
    前記並列処理振分部が、前記判定の結果、前記第2のパケットに関する処理が実行中である場合、前記第2のパケットに関する処理を実行する前記並列処理部を、前記第1のパケットに関する処理を実行する並列処理部に決定し、かつ、前記パラメータを継続を示す値に決定し、
    前記決定された並列処理部が、前記受信した振分け通知に継続を示す前記パラメータが含まれる場合、当該並列処理部に保持された実行結果から、前記第2のパケットに関する処理の実行結果を取得することを特徴とする通信方法。
  10. 請求項8又は9に記載の通信方法であって、
    前記通信装置は、前記パケットに関する処理に用いる所定の設定値と、前記パケットに割り当てられたフローIDとを含む設定用テーブルを有し、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットに割り当てられたフローIDを含み、
    前記方法は、
    前記決定された並列処理部が、前記振分け通知を受信した場合、前記受信した振分け通知に従って、前記設定用テーブルから前記第1のパケットに関する処理に用いる所定の設定値を読み出し、
    前記決定された並列処理部が、前記取得された第2のパケットに関する処理の実行結果と、前記振分け通知に含まれる第1のパケットに関する情報と、前記読み出された所定の設定値と、を用いて、前記第1のパケットに関する処理を実行することを特徴とする通信方法。
  11. 請求項10に記載の通信方法であって、
    前記設定用テーブルに含まれる所定の設定値は、前記フローIDに対応するトークンバケツに追加される単位時間あたりのトークン量と、前記トークンバケツに蓄積されるトークンの最大量と、を含み、
    前記パケットに関する処理の実行結果は、前記トークンバケツに蓄積されるトークン量と、前記トークンバケツに蓄積されるトークン量を算出した最新の時刻と、を含み、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットのフレーム長を含み、
    前記方法は、
    前記決定された並列処理部が前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのフレーム長を下回ると判定された場合、前記決定された並列処理部が、前記第1のパケットの送信が保証外であることを示す情報を出力し、
    前記決定された並列処理部が前記第1のパケットに関する処理を実行した結果、前記第1のパケットを受信するまでに前記トークンバケツに蓄積されたトークン量が、前記第1のパケットのフレーム長以上と判定された場合、前記決定された並列処理部が、前記第1のパケットの送信が保証内であることを示す情報を出力することを特徴とする通信方法。
  12. 請求項10に記載の通信方法であって、
    前記通信装置は、
    前記入力インタフェースを介して受信した前記パケットを保持するパケットバッファと、
    前記パケットのヘッダを書き換える出力判定部と、をさらに有し、
    前記方法は、
    前記並列処理振分部が、前記第1のパケットを受信した場合、前記第1のパケットをパケットバッファに格納し、
    前記決定された並列処理部が、前記第1のパケットに関する処理を実行した結果に従って、前記第1のパケットのヘッダを書き換える指示を、前記出力判定部に送信し、
    前記出力判定部が、前記第1のパケットのヘッダを書き換える指示に従って、前記パケットバッファから前記第1のパケットを取得し、
    前記出力判定部が、前記取得された第1のパケットのヘッダを書き換えることを特徴とする通信方法。
  13. 請求項8又は9に記載の通信方法であって、
    前記振分け通知に含まれる前記第1のパケットに関する情報は、前記第1のパケットのフレーム長を含み、
    前記パケットに関する処理の実行結果は、前記通信装置が受信した前記パケットの数と、前記通信装置が受信した前記パケットのバイト数と、を含み、
    前記方法は、
    前記決定された並列処理部が、前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記通信装置が受信した前記第2のパケットの数に1を加算し、前記通信装置が受信した前記第2のパケットのバイト数に、前記第1のパケットのフレーム長を加算することによって、前記第1のパケットに関する処理を実行することを特徴とする通信方法。
  14. 請求項8又は9に記載の通信方法であって、
    前記並列処理部は、前記パラメータが示す値に従った処理方法を保持し、
    前記方法は、
    前記決定された並列処理部が、前記取得された前記第2のパケットに関する実行結果と、前記振分け通知に含まれる情報とを用いて、前記パラメータが示す値に従った処理方法によって、前記第1のパケットに関する処理を実行することを特徴とする通信方法。
JP2012124938A 2012-05-31 2012-05-31 通信装置、及び、通信方法 Expired - Fee Related JP5812533B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012124938A JP5812533B2 (ja) 2012-05-31 2012-05-31 通信装置、及び、通信方法
CN2013102064094A CN103457847A (zh) 2012-05-31 2013-05-29 通信装置及通信方法
EP20130169810 EP2670099A1 (en) 2012-05-31 2013-05-29 Communication apparatus and communication method
US13/905,791 US9137158B2 (en) 2012-05-31 2013-05-30 Communication apparatus and communication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012124938A JP5812533B2 (ja) 2012-05-31 2012-05-31 通信装置、及び、通信方法

Publications (2)

Publication Number Publication Date
JP2013251719A JP2013251719A (ja) 2013-12-12
JP5812533B2 true JP5812533B2 (ja) 2015-11-17

Family

ID=48651881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012124938A Expired - Fee Related JP5812533B2 (ja) 2012-05-31 2012-05-31 通信装置、及び、通信方法

Country Status (4)

Country Link
US (1) US9137158B2 (ja)
EP (1) EP2670099A1 (ja)
JP (1) JP5812533B2 (ja)
CN (1) CN103457847A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016010017A (ja) * 2014-06-25 2016-01-18 株式会社日立製作所 通信装置、及び、通信方法
WO2016200390A1 (en) * 2015-06-11 2016-12-15 Hewlett Packard Enterprise Development Lp Network frame hold time parameter
JP6540296B2 (ja) * 2015-07-09 2019-07-10 富士通株式会社 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
CN106789695B (zh) * 2016-11-24 2020-04-03 杭州迪普科技股份有限公司 报文处理方法及装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0447228A3 (en) * 1990-03-16 1993-01-07 Hewlett-Packard Company Data stream concentrator providing attribute data storage and graphics pipeline access
US5864679A (en) * 1993-09-06 1999-01-26 Kabushiki Kaisha Toshiba Transaction routing in a multiple processor system using an extracted transaction feature parameter and transaction historical data
US6173386B1 (en) * 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6721309B1 (en) 1999-05-18 2004-04-13 Alcatel Method and apparatus for maintaining packet order integrity in parallel switching engine
US8762581B2 (en) * 2000-12-22 2014-06-24 Avaya Inc. Multi-thread packet processor
US8189591B2 (en) * 2001-10-30 2012-05-29 Exar Corporation Methods, systems and computer program products for packet ordering for parallel packet transform processing
US7280477B2 (en) * 2002-09-27 2007-10-09 International Business Machines Corporation Token-based active queue management
JP4483535B2 (ja) * 2004-11-05 2010-06-16 株式会社日立製作所 ネットワーク装置
JP3961000B2 (ja) * 2005-05-26 2007-08-15 株式会社日立コミュニケーションテクノロジー パケット転送装置及びネットワークシステム
JP2008234059A (ja) * 2007-03-16 2008-10-02 Fujitsu Ltd データ転送装置および情報処理システム
US8072894B2 (en) * 2007-11-07 2011-12-06 Juniper Networks, Inc. Systems and methods for flow monitoring
JP5094482B2 (ja) * 2008-03-07 2012-12-12 キヤノン株式会社 処理装置及びその処理方法
US8072974B1 (en) * 2008-07-18 2011-12-06 Tellabs San Jose Inc Method and apparatus for improving packet processing performance using multiple contexts
US7990974B1 (en) * 2008-09-29 2011-08-02 Sonicwall, Inc. Packet processing on a multi-core processor
US8255644B2 (en) * 2009-05-18 2012-08-28 Lsi Corporation Network communications processor architecture with memory load balancing
JP2011114444A (ja) * 2009-11-25 2011-06-09 Fujitsu Ltd 情報処理装置,情報生成方法,およびプログラム
US8842675B2 (en) * 2012-08-23 2014-09-23 L-3 Communications Corporation Systems and methods for multicore processing of data with in-sequence delivery

Also Published As

Publication number Publication date
US9137158B2 (en) 2015-09-15
JP2013251719A (ja) 2013-12-12
US20130322450A1 (en) 2013-12-05
CN103457847A (zh) 2013-12-18
EP2670099A1 (en) 2013-12-04

Similar Documents

Publication Publication Date Title
US8385354B2 (en) Scalable hardware mechanism to implement time outs for pending POP requests to blocking work queues
CN110545241B (zh) 一种报文处理方法和装置
JP5812533B2 (ja) 通信装置、及び、通信方法
CN107360268B (zh) 一种数据包处理方法、装置及设备
JP6340481B2 (ja) データキャッシング方法、装置及び記憶媒体
CN113498106A (zh) 一种时间敏感网络tsn流的调度方法及装置
WO2015096636A1 (zh) 一种丢包测量的方法及网络设备
CN113542043B (zh) 网络设备的数据采样方法、装置、设备及介质
US20160373346A1 (en) Data processing system, data processing method and computer readable medium
WO2016082367A1 (zh) 一种基于网络处理器实现硬件表遍历的方法及装置
JP2022518631A (ja) パケット交換ネットワークにおいて通信エンティティのコンピューター手段によって実施される方法、並びにそのコンピュータープログラム及びコンピューター可読非一時的記録媒体、並びにパケット交換ネットワークの通信エンティティ
US8117356B1 (en) Direct memory access (DMA) transfer of network interface statistics
US20140225896A1 (en) Resource oriented dependency graph for network configuration
CN104052831A (zh) 一种基于队列的数据传输方法、装置及通信***
Carvajal et al. Atacama: An open FPGA-based platform for mixed-criticality communication in multi-segmented Ethernet networks
JP6266445B2 (ja) パケット中継装置及びパケット中継方法
US8559430B2 (en) Network connection device, switching circuit device, and method for learning address
JP6060050B2 (ja) 通信装置、及び、パケット処理方法
JP5618912B2 (ja) 中継装置、通信システムおよび中継方法
CN107592677B (zh) 一种数据传输方法及装置
EP3036665B1 (en) A method of transmitting data structures from one computer to another computer
US9380006B2 (en) Packet processing method, and packet transmission apparatus
US11960943B2 (en) Event log management
JP5702268B2 (ja) 光加入者装置およびフレーム送信量特定方法
US11314711B2 (en) Network switch with network analysis data producer-consumer shared memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150806

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: 20150818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150914

R150 Certificate of patent or registration of utility model

Ref document number: 5812533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees