JP2017022530A - ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム - Google Patents

ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム Download PDF

Info

Publication number
JP2017022530A
JP2017022530A JP2015138124A JP2015138124A JP2017022530A JP 2017022530 A JP2017022530 A JP 2017022530A JP 2015138124 A JP2015138124 A JP 2015138124A JP 2015138124 A JP2015138124 A JP 2015138124A JP 2017022530 A JP2017022530 A JP 2017022530A
Authority
JP
Japan
Prior art keywords
packet
update
queue
processing
reprocessing
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.)
Granted
Application number
JP2015138124A
Other languages
English (en)
Other versions
JP6540296B2 (ja
Inventor
金山 靖隆
Yasutaka Kanayama
靖隆 金山
基行 谷所
Motoyuki Yadokoro
基行 谷所
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015138124A priority Critical patent/JP6540296B2/ja
Priority to US15/155,182 priority patent/US10015076B2/en
Publication of JP2017022530A publication Critical patent/JP2017022530A/ja
Application granted granted Critical
Publication of JP6540296B2 publication Critical patent/JP6540296B2/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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history

Abstract

【課題】スループットの低下を軽減するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムを提供する。【解決手段】管理部11は、ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、テーブルの更新が完了すると更新情報を削除する。パケット処理部111は、入力キュー102に入力されたパケットに対してテーブルを用いてパイプライン処理を順番に行い、テーブルのエントリのいずれかに更新情報が付加されている場合、パイプライン処理を中断する。再処理制御部112は、パケット処理部111によるパイプライン処理が中断した場合、パケットを再処理用キュー104へ格納し、更新情報が付加されたテーブルの更新が全て完了した場合、再処理用キュー104に格納されたパケットを入力キュー102へ転送する。【選択図】図1

Description

本発明は、ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムに関する。
近年、ネットワークのトラフィックの増大に伴い、高速パケット処理に特化したネットワークプロセッサと呼ばれる専用プロセッサが大きな発展を遂げている。ネットワークプロセッサとは、ネットワークトラフィックを処理するための専用のプロセッサである。ネットワークプロセッサは、情報処理装置におけるネットワークインタフェースとなり、パケット処理などを行う。
ネットワークプロセッサは、プログラマブルなプロセッサであり、パイプラインのコードやキュー、メモリ及びテーブルを含む周辺リソースの構成を変更することができる。情報処理装置は、一般的にネットワークプロセッサ以外に、CPU(Central Processing Unit)、FPGA(Field Programmable Gate Array)などの周辺ハードウェア及びテーブルなどを有する。そして、フラッシュメモリなどに書き込まれたパイプラインコードやレジスタ設定といった設定用データをCPU経由でネットワークプロセッサへダウンロードすることで、コンフィグレーションが行われる。また、コマンドベースでCPUからAPI(Application Programming Interface)を通してネットワークプロセッサの設定が行われる場合もある。
ネットワークプロセッサは、経路制御などを行うコントロールプレーンとパケット転送処理を行うデータプレーンに分離されたアーキテクチャ構成を有する。データプレーンは、パイプライン構成を有し、テーブルの情報を参照しながら転送先決定などのパケット処理を高速に行う。コントロールプレーンは、APIを通して、データプレーンの動作や構成を制御する。コントロールプレーンが実行する処理の1つにテーブル更新処理がある。
データプレーンにおいて行われるパイプライン処理は、フェーズ毎に行う処理が固定されており、フェーズでどのテーブルへのアクセスを行うかも固定されている。ネットワークプロセッサは、パケットメモリを有しており、パイプライン処理におけるフェーズの移動とともに処理対象のパケットもパケットメモリ内を移動する。
また、パイプライン処理で用いられるテーブルは、TCAM(Ternary Content Addressable Memory)やRAM(Random Access Memory)に格納される。ネットワークプロセッサは、検索キーやアドレスを用いてテーブルの情報を読み出す。検索キーやアドレスは、入力ポート番号、入力パケット内情報、及び前段のテーブルの読出結果などによって決定される。
ここで、ネットワーク管理者は、ネットワーク構成を変更する場合、各種テーブルの更新を行う。場合によっては、ネットワーク管理者は複数のテーブルの更新を行う。
なお、ネットワークプロセッサに関する従来技術として、受信したパケットに対して検索キーを含むヘッダを割り当て、パケット処理部と検索エンジンとの間でパケットの送受信を繰り返しながら処理を段階的に行う技術がある。
特開2007−208963号公報
しかしながら、複数のテーブルを変更する場合、既に更新されたテーブルの情報と未更新のテーブルの情報との間で整合性が保てない状態の発生が考えられる。その場合、既に更新されたテーブルと未更新のテーブルとの間で整合性が保てていない状態で、それらのテーブルを用いてパイプライン処理が行われると誤った処理結果が出てしまうおそれがある。
そこで、従来、複数テーブル変更時の不整合を防止するため、以下の方法で処理が行わる。その方法とは、まず全てのテーブルの更新が完了するまで、ネットワークプロセッサにおける全ての処理を一時的に停止し、デキューを禁止して入力キューに溜めておく。そして、全てのテーブルの更新完了後、デキューを有効にしてパイプライン処理を再開する。このような手順で処理を行うことで、全てのテーブルが更新されて不整合が無い状態で、パケットの処理が行われる。
ただし、蓄積されたキューの数がキューメモリの上限に達した場合、それ以上のパケットは破棄される。破棄されたパケットは再送されることになり、トラフィックの増大やパケットの送信遅延が発生し、情報処理装置のスループットが低下してしまう。そして、全ての処理を停止して全ての入力パケットをキューに溜める方法では、多くのパケットが破棄されることが考えられ、情報処理装置のスループットが低下するおそれがある。
開示の技術は、上記に鑑みてなされたものであって、スループットの低下を軽減するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムを提供することを目的とする。
本願の開示するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムは、一つの態様において、管理部は、ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する。パケット処理部は、入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断する。再処理制御部は、前記パケット処理部によるパイプライン処理が中断した場合、入力されたパケットを再処理用キューへ格納し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する。
本願の開示するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムの一つの態様によれば、スループットの低下を軽減することができるという効果を奏する。
図1は、実施例1に係るスイッチのブロック図である。 図2は、実施例1に係るネットワークプロセッサによるテーブルの更新最中のパイプライン処理の一例を表す図である。 図3は、実施例1においてテーブル更新後の再処理用キューに格納されていたパケットの処理の流れを説明するための図である。 図4は、パイプライン処理の流れをテーブルを用いて表した図である。 図5は、実施例1に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。 図6は、実施例1に係るスイッチのハードウェア構成図である。 図7は、変形例1に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。 図8は、実施例2に係るスイッチのブロック図である。 図9は、実施例2に係るネットワークプロセッサによるテーブルの更新最中のパイプライン処理の一例を表す図である。 図10は、デキュー停止フラグがオンの場合の通し番号が付加されたパケットに対する処理を示す図である。 図11は、実施例2においてテーブル更新後の処理が中断されたパケットに対する処理の流れを説明するための図である。 図12は、実施例2に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。 図13は、パイプラインに入力されたパケットに対する処理を表すフローチャートである。 図14は、変形例2に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。
以下に、本願の開示するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラムが限定されるものではない。
図1は、実施例1に係るスイッチのブロック図である。スイッチ1は、情報処理装置21と22との間の通信を中継する。また、スイッチ1は、制御コマンド入力用の端末装置3が接続されている。さらに、スイッチ1は、ネットワークプロセッサのデータプレーン10、管理部11及びRAM(Random Access Memory)12を有する。ここで、管理部11は、ネットワークプロセッサのコントロールプレーンにあたる。すなわち、データプレーン10及び管理部11を併せたものが、ネットワークプロセッサの一例である。
管理部11は、テーブルの更新指示を含む制御コマンドの入力を端末装置3から受ける。テーブルの更新は、例えば、ネットワーク構成が変更された場合に発生する。テーブルの更新指示を受けた場合、管理部11は、後述するデキュー情報格納部105に格納されるデキュー停止フラグをオン、すなわちデキューの停止を示す値に設定する。さらに、管理部11は、テーブルの更新を行う。ここでは、管理部11が、RAM12に格納されるコンテンツテーブル121及び後述するRAM107に格納されるコンテンツテーブル171を更新する場合で説明する。また、今回は管理部11がコンテンツテーブル121及び171を更新する場合で説明するが、管理部11は、後述するTCAM106のTCAMテーブル161を更新してもよい。このTCAMテーブル161、並びに、コンテンツテーブル121及び171が、「ネットワーク構成の変更に先立って更新されるテーブル」の一例にあたる。
以下に管理部11によるテーブルの更新について詳細に説明する。管理部11は、後述するパイプライン処理部101で行われるパイプライン処理において、フェーズ毎の処理の内容を予め記憶する。そして、管理部11は、コンテンツテーブル121及び171の何れが処理の中で先のフェーズで用いられるか判定する。ここでは、コンテンツテーブル121が、先のフェーズの処理で用いられる場合で説明する。
管理部11は、コンテンツテーブル121における更新するエントリの更新フラグをオンにする。ここで、エントリの更新フラグがオンであるとは、そのエントリが更新されるエントリであることを示す。この更新フラグが、「更新情報」の一例にあたる。以下では、更新対象のエントリを、「更新エントリ」という。
その後、管理部11は、既に更新前のコンテンツテーブル121の更新エントリを用いて処理されたパケット全てがその後のフェーズでコンテンツテーブル171を用いて処理されるのに十分な時間待機する。以下では、この管理部11の待機時間を、「不整合回避時間」という。ここで、コンテンツテーブル121を用いた処理のフェーズと、コンテンツテーブル171を用いた処理のフェーズの間に、既にコンテンツテーブル121を用いて処理されたパケットが存在する可能性がある。そのため、コンテンツテーブル121の更新エントリを更新した直後にコンテンツテーブル171の更新エントリを更新した場合次のような不整合が起こる。すなわち、更新前のコンテンツテーブル121の更新エントリを用いて処理されたパケットが、更新後のコンテンツテーブル171の更新エントリを用いて処理されるおそれがある。この場合、コンテンツテーブル121及び171の各更新エントリの間には不整合が発生するので、パケットに対して正確な処理が行えない。そこで、管理部11は、不整合回避時間の間、コンテンツテーブル171の更新を保留する。これにより、更新前のコンテンツテーブル121の更新エントリを用いて処理されたパケットが、更新後のコンテンツテーブル171の更新エントリを用いて処理されることが回避できる。
不整合回避時間経過後、管理部11は、コンテンツテーブル171における更新エントリの更新フラグをオンにする。その後、管理部11は、コンテンツテーブル171における更新エントリの内容を更新する。そして、管理部11は、コンテンツテーブル171における更新エントリの更新フラグをオフにする。ここで、後述するように入力キュー102から入力されるパケットはコンテンツテーブル121の更新エントリを用いた処理を行うフェーズで処理が中断され、再処理用キュー104に送られる。そのため、更新不整合回避時間経過後は、コンテンツテーブル171の更新エントリを用いた処理のフェーズにパケットが送られることは少ない。そのため、不整合回避時間を十分に取れば、管理部11によるコンテンツテーブル171の更新エントリの更新フラグのオン及びオフを行わなくてもよい。
さらに、管理部11は、コンテンツテーブル171の更新エントリの更新フラグをオフにした後、コンテンツテーブル121の更新エントリの更新フラグをオフにする。すなわち、管理部11は、ネットワーク構成の変更に伴うコンテンツテーブル121及び171の更新が完了した場合、各テーブルの更新エントリの更新フラグをオフにする。ここで、更新エントリの更新フラグをオフにすることが、「更新情報の削除」にあたる。
その後、管理部11は、デキュー情報格納部105のデキュー停止フラグをオフにする。これにより、再処理用キュー104からのデキューが開始できる状態となる。
RAM12は、データプレーン10以外のスイッチ1上に配置された記憶装置である。本実施例では、データプレーン10が使用するコンテンツテーブル121が大きいため、データプレーン10以外の場所にある大きな記憶領域を有するRAM12に、コンテンツテーブル121が格納される。ただし、データプレーン10は、データプレーン10以外の場所に配置されたRAM12のような記憶装置を使用しなくてもよい。
データプレーン10は、パイプライン処理部101、入力キュー102、出力キュー103、再処理用キュー104、デキュー情報格納部105、TCAM106及びRAM107を有する。
TCAM106は、TCAMテーブル161を有する。また、RAM107は、コンテンツテーブル171を有する。
デキュー情報格納部105は、再処理用キュー104のデキューを停止するか否かを示すデキュー停止フラグを有する。デキュー情報格納部105は、コンテンツテーブル121及び171の更新が発生した場合、管理部11からの指示を受けて、デキュー停止フラグをオンにする。また、デキュー情報格納部105は、コンテンツテーブル121及び171の更新が終了した場合、管理部11からの指示を受けて、デキュー停止フラグをオフにする。
再処理用キュー104は、パケットの入力を再処理制御部112から受ける。その後、再処理用キュー104は、パケットの出力指示を再処理制御部112から受けて、古い順にパケットを再処理制御部112へ出力する。
入力キュー102は、パケットの入力を情報処理装置21から受ける。さらに、入力キュー102は、処理が途中で中断したパケットの入力を再処理制御部112から受ける。そして、入力キュー102は、入力が古い順にパケット処理部111へパケットを出力する。
出力キュー103は、パケットの入力をパケット処理部111から受ける。そして、取得したパケットを入力が古い順に情報処理装置22へ出力する。
パイプライン処理部101は、入力キュー102から取得したパケットに対してパイプライン処理を施す。パイプライン処理部101は、パケット処理部111及び再処理制御部112を有する。
パケット処理部111は、パケットを入力キュー102から取得する。そして、パケット処理部111は、フェーズ毎に予め決められた処理をパケットに対して行う。その後、パケット処理部111は、全てのフェーズの処理が完了したパケットを出力キュー103へ出力する。
ここで、パケット処理部111が実行する処理について具体的に説明する。パケット処理部111は、取得したパケットに対してIngress処理を施す。その後、パケット処理部111は、出力するパケットに対してEgress処理を施す。
Ingress処理には、例えば、VID(Virtual Identifier)変換、フィルタリング処理、簡易L(Layer)3機能、Classify、MAC検索、Loop検出、LAG(Link Aggregation) Hash及びPolicer処理が含まれる。Classifyは、パケットの優先度に応じたクラス分類を行う処理である。LAG Hashは、複数の物理回線を1本の論理回線にするリンクアグリゲーション処理である。Policerは、入力ポートのレートを契約レートやピークレートに調整するレート制御の処理である。
Egress処理には、例えば、Multicast処理、フィルタリング処理、VID変換、MAC学習及びShaper処理が含まれる。Multicast処理は、マルチキャストパケットの転送先制御の処理である。VID変換は、VLAN(Virtual Local Area Network)のID(Identifier)を変換する処理である。MAC学習は、MACアドレスと転送先の関連付けの処理である。Shaper処理は、出力ポートのレートを契約レートやピークレートに調整するレート制御の処理である。
パケット処理部111は、以上の処理をパケットに対してパイプライン処理で行う。パイプライン処理とは、処理の段階を表すフェーズ毎に行う処理が固定されている処理である。パケット処理部111は、フェーズに合わせてパケットを移動させる。そして、パケット処理部111は、あるフェーズであるパケットに対する処理が無い場合、そのフェーズ期間はパケットには処理を行わずに、そのままの状態を保持する。
図2は、実施例1に係るネットワークプロセッサによるテーブルの更新最中のパイプライン処理の一例を表す図である。図2では、テーブルを用いる処理を抽出して記載されている。パケットは、矢印に沿って処理されていく。ここで、図2における上段にテーブルと記載され下段に符号が記載された四角で囲われた要素は、その符号を識別情報とするテーブルを用いて処理が行われることを表す。そして、識別情報は、テーブルが用いられるフェーズの番号とそのフェーズ内でのテーブルの識別子との組み合わせで表されている。例えば、処理201は、3番目のフェーズにおいてテーブル3−bを用いて行われる処理である。このように、実際には同じテーブルでも、使用される処理の位置が異なれば、パイプライン処理では、異なるテーブルとして扱われる。また、図2において、あるフェーズにおいて、いずれの処理にも入らずにそのフェーズを通過する線は、そのフェーズでの処理を迂回する、すなわちそのフェーズでの処理をバイパスするパケットを表す。さらに、処理201で使用されるテーブル3−bは、RAM12に格納されたコンテンツテーブル121であり、処理202で使用されるテーブルN−1−aは、RAM107に格納されたコンテンツテーブル171である。
パケット処理部111は、コンテンツテーブル121のエントリを用いて処理201を行う際に、更新フラグが付加されているか否かを判定する。コンテンツテーブル121の更新エントリが更新されていない場合、更新フラグは付加されていないので、パケット処理部111は、パケットに対して処理201を実施し次のフェーズに進む。
これに対して、処理201でパケットがヒットしたエントリが更新エントリであり更新フラグが付加されている場合、パケット処理部111は、更新エントリにヒットしたパケットをフェーズ3の間待機させる。その後、パケット処理部111は、更新エントリにヒットしたパケットにテーブル3−bの識別情報を付加する。そして、パケット処理部111は、更新エントリにヒットしたパケットを再処理制御部112へ出力する。図2における破線矢印203が、更新エントリにヒットしたパケットの再処理制御部112への出力を表す。そして、パケット処理部111は、コンテンツテーブル121の更新エントリの更新フラグがオフになるまで、更新エントリにヒットしたパケットを再処理制御部112へ出力する。
さらに、パケット処理部111は、処理201で更新エントリにヒットしたパケットを再処理制御部112へ送信しつつ、不整合回避時間の間、処理202においてパケットに対してテーブルN−1−aを用いた処理を継続する。その後、不整合回避時間が経過すると、コンテンツテーブル171の更新エントリの更新フラグがオンになる。そこで、パケット処理部111は、処理202の更新エントリにヒットしたパケットを再処理制御部112へ出力する。ただし、不整合回避時間が十分であり、処理201と処理202との間にパケットが残っていなければ、パケット処理部111は、実際には処理202の更新エントリにパケットがヒットすることはない。すなわち、パケット処理部111は、処理202において更新エントリにヒットしたパケットを再処理制御部112へ出力することはない。
その後、コンテンツテーブル171の更新エントリが更新されると、コンテンツテーブル171の更新エントリの更新フラグがオフになる。そこで、パケット処理部111は、処理202に入力されたパケットに対してテーブルN−1−aを用いた処理を行う状態に戻る。
その後、コンテンツテーブル121の更新エントリが更新されると、コンテンツテーブル121の更新エントリの更新フラグがオフになる。そこで、パケット処理部111は、処理201に入力されたパケットに対してテーブル3−bを用いた処理を行う状態に戻る。
その後、パケット処理部111は、入力キュー102から取得したパケットにテーブル3−b又はN−1−aの識別情報が付加されているか否かを判定する。テーブル3−b又はN−1−aの識別情報が付加されていない場合、パケット処理部111は、取得したパケットに対してフェーズ1から順に通常のパイプライン処理を行う。
これに対して、パケットにテーブル3−bの識別情報が付加されている場合、パケット処理部111は、図3の一点鎖線の矢印204が示すように、そのパケットをフェーズ3までバイパスさせる。図3は、実施例1においてテーブル更新後の再処理用キューに格納されていたパケットの処理の流れを説明するための図である。その後、パケット処理部111は、バイパスさせたパケットに対して更新されたテーブル3−bを用いて処理201を行った後、順に後のフェーズの処理を行う。この場合、既にコンテンツテーブル121及び171ともに更新されているため、パケット処理部111が、それらを用いる処理201及び202を行っても不整合は発生しない。
また、パケットにテーブルN−1−aの識別情報が付加されている場合、パケット処理部111は、そのパケットをフェーズN−1までバイパスさせ、処理202からパイプライン処理を再開する。
さらに、図4を参照して、本実施例で実施されるパイプライン処理の流れの概要を説明する。図4は、パイプライン処理の流れをテーブルを用いて表した図である。ここでは、コンテンツテーブル121を用いる前に、TCAMテーブル161を用いた検索が行われる場合で説明する。また、各処理の間には他のフェーズの処理が挟まっているが、説明の都合上、間のフェーズは省いて表示している。
パケット処理部111は、取得したパケット300の決められたアドレスから検索キー301を取得する(ステップS1)。
次に、パケット処理部111は、検索キー301を用いてTCAMテーブル161を検索し、ヒットしたエントリを抽出する(ステップS2)。
その後、パケット処理部111は、TCAMテーブル161でヒットしたエントリでコンテンツテーブル121を検索する(ステップS3)。ここで、コンテンツテーブル121のエントリには、更新フラグ302が付加されている。
そして、パケット処理部111は、コンテンツテーブル121においてヒットしたエントリの内容を取得する(ステップS4)。このコンテンツテーブル121の検索処理が、図2の処理201の一例にあたる。ここで、パケット処理部111は、更新フラグ302がオンになっていれば、検索前に用いた情報を有するパケットにテーブルの識別情報を付加して、再処理用キュー104へ出力する。
これに対して、更新フラグ302がオフの場合、パケット処理部111は、コンテンツテーブル121から取得した内容を用いてコンテンツテーブル171を検索する(ステップS5)。ここで、コンテンツテーブル171のエントリには、更新フラグ303が付加されている。
そして、パケット処理部111は、コンテンツテーブル171においてヒットしたエントリの内容を取得する(ステップS6)。このコンテンツテーブル171の検索処理が、図2の処理202の一例にあたる。ここで、パケット処理部111は、更新フラグ303がオンになっていれば、検索前に用いた情報を有するパケットにテーブルの識別情報を付加して、再処理用キュー104へ出力する。
これに対して、更新フラグ303がオフの場合、パケット処理部111は、コンテンツテーブル171から取得した内容を用いてパイプライン処理を終わらせる。
ここで、パケット処理部111は、コンテンツテーブル121から取得したフローIDでコンテンツテーブル171を検索するものとする。そして、コンテンツテーブル121が更新されて、コンテンツテーブル121から取得されるフローIDが#Aから#Dに変わった場合で説明する。この場合、コンテンツテーブル121が既に更新されているので、パケット処理部111は、コンテンツテーブル121からフローIDとして#Dを取得する。しかし、この状態で、コンテンツテーブル171が更新されていなければ、パケット処理部111は、コンテンツテーブル171から更新前のフローID#Dに対応する情報を取得してしまう。本来であれば、パケット処理部111は、更新前の情報であればフローID#Aに対応する情報をコンテンツテーブル171から取得することが好ましいため、この場合処理に不整合が発生してしまう。
これに対して、本実施例に係るパケット処理部111は、更新前のコンテンツテーブル121で処理されたパケットは、不整合回避時間の間に更新前のコンテンツテーブル171で処理する。また、コンテンツテーブル121の更新後は、コンテンツテーブル171が更新されるまで、パケット処理部111は、コンテンツテーブル121の更新エントリを用いた処理を行わない。すなわち、本実施例に係るパケット処理部111は、更新後のコンテンツテーブル121で処理されたパケットは、更新後のコンテンツテーブル171で処理する。これにより、パケット処理部111は、処理の不整合を回避することができる。
図1に戻って説明を続ける。再処理制御部112は、処理が中断されたパケットの入力をパケット処理部111から受ける。そして、再処理制御部112は、処理が中断されたパケットを再処理用キュー104に順次格納する。
再処理制御部112は、デキュー情報格納部105のデキュー停止フラグを確認する。デキュー停止フラグがオンであれば、再処理制御部112は、再処理用キュー104に格納したパケットをそのまま保持する。これに対して、デキュー停止フラグがオフであればb、再処理制御部112は、再処理用キュー104に格納されたパケットを格納タイミングの古い順に入力キュー102へ転送する。
次に、図5を参照して、本実施例に係るネットワークプロセッサによるテーブル更新時の処理の流れについて説明する。図5は、実施例1に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。図5の左側のフローはコントロールプレーン、すなわち管理部11が実行する処理を表す。また、図5の右側のフローは、データプレーン10が実行する処理を表す。さらに、左側のフローから右側のフローへ延びる点線は、点線の延びる処理が実行されてから次の点線が延びる処理が実行されるまでの間、コントロールプレーンにおいてその点線の間の処理が行われることを表す。
管理部11は、テーブルの更新が発生すると、デキュー情報格納部105のデキュー停止フラグをオンにする(ステップS101)。
次に、管理部11は、使用されるフェーズが早い方のテーブルの更新エントリ(以下では、「フェーズが早い更新エントリ」という。)の更新フラグをオンにする(ステップS102)。
次に、管理部11は、不整合回避時間経過したか否かを判定する(ステップS103)。不整合回避時間を経過していない場合(ステップS103:否定)、管理部11は、ステップS103に戻り待機する。
これに対して、不整合回避時間を経過した場合(ステップS103:肯定)、管理部11は、フェーズが遅いテーブルの更新エントリ(以下では、「フェーズが遅い更新エントリ」という。)の更新フラグをオンにする(ステップS104)。
次に、管理部11は、フェーズが遅い更新エントリの内容を更新し、更新フラグをオフにする(ステップS105)。
次に、管理部11は、フェーズが早い更新エントリの内容を更新し、更新フラグをオフにする(ステップS106)。
その後、管理部11は、デキュー情報格納部105のデキュー停止フラグをオフにする(ステップS107)。
一方データプレーン10では以下の処理が行われる。デキュー情報格納部105のデキュー停止フラグがオンであることを確認して、再処理制御部112は、再処理用キュー104のデキューを停止する(ステップS111)。
パケット処理部111は、フェーズが早い更新エントリの更新フラグがオンであることを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を中断し、テーブルの識別情報を付加する(ステップS112)。
そして、パケット処理部111は、テーブルの識別情報を付加したパケットを再処理制御部112へ出力する。再処理制御部112は、入力されたパケットを再処理用キュー104に格納する(ステップS113)。
さらに、パケット処理部111は、不整合回避時間の間、フェーズが遅い更新エントリにヒットしたパケットに対してパイプライン処理を続行する(ステップS114)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオンになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットを再処理制御部112へ出力する。再処理制御部112は、入力されたパケットを再処理用キュー104に格納する(ステップS115)。
次に、パケット処理部111は、フェーズが遅いエントリの更新フラグがオフになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットに対する処理をパイプライン処理に戻す(ステップS116)。
さらに、パケット処理部111は、フェーズが早い更新エントリの更新フラグがオフになったことを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理をパイプライン処理に戻す(ステップS117)。
再処理制御部112は、デキュー情報格納部105のデキュー停止フラグがオフであることを確認して、再処理用キュー104のデキューを開始する(ステップS118)。
その後、パケット処理部111は、再処理用キュー104からデキューされたパケットを取得すると、そのパケットに付加された識別情報を有するテーブルを用いる処理までそのパケットをバイパスさせパイプライン処理を行う(ステップS119)。
図6は、実施例1に係るスイッチのハードウェア構成図である。図6に示すように、スイッチ1は、図1と同様に、RAM12、TCAM106及びRAM107を有する。さらに、スイッチ1は、CPU901、PCI(Peripheral Component Interconnect)express902、外部メモリインタフェース903、レジスタ904、FIFO(First In First Out)キャッシュ905及びプロセッサ906を有する。さらに、スイッチ1は、FIFOキャッシュ907、パケットメモリ908、FIFOキャッシュ909及びネットワークインタフェース910を有する。
CPU901は、図1に例示した管理部11の機能を含むネットワークプロセッサのコントロールプレーンの機能を実現する。CPU901は、RAM12とバスで接続される。また、CPU901は、PCIexpress902を介してレジスタ904、TCAM106及びRAM107と接続する。レジスタ904は、図1に例示したデキュー情報格納部105の機能を実現する。
プロセッサ906は、レジスタ904、TCAM106及びRAM107とバスで接続される。また、プロセッサ906は、外部メモリインタフェース903を介して、RAM12と接続する。さらに、プロセッサ906は、FIFOキャッシュ905、907及び909及びパケットメモリ908とバスを介して接続する。また、プロセッサ906は、ネットワークインタフェース910を介して、外部の情報処理装置に接続する。
FIFOキャッシュ905は、図1に例示した再処理用キュー104の機能を実現する。また、FIFOキャッシュ907は、図1に例示した入力キュー102の機能を実転する。また、FIFOキャッシュ909は、図1に例示した出力キュー103の機能を実現する。
また、プロセッサ906及びパケットメモリ908は、図1に例示したパケット処理部111及び再処理制御部112を含むパイプライン処理部101の機能を実現する。特に、プロセッサ906は、パケットメモリ908に格納したパケットをフェーズ毎に管理し、パケット処理部111の処理を行う。
以上に説明したように、本実施例に係るネットワークプロセッサは、テーブル更新時に更新エントリに更新フラグを立て、さらに、デキュー停止フラグを立て、フラグが立っているエントリにヒットしたパケットを再処理用キューに格納する。そして、本実施例に係るネットワークプロセッサは、デキュー停止フラグがオフになると、再処理用キューからパケットを入力キューに転送しパケット処理を行う。このように、更新エントリにヒットしたパケットのみを待機させることで、テーブル更新の影響を受けないパケットは遅延を抑えてパケット処理を実行することができる。したがって、スループットの低下を軽減しつつテーブルの更新による不整合の発生を軽減することができる。
特に、エントリサイズで再処理を行うパケットを絞るため、再処理を行うキューを最小限に抑えることができ、再処理用キューが小さくてもキューの廃棄を抑えることができる。
さらに、処理を中断したパケットを再度処理するにあたり、既に処理済のフェーズはバイパスすることができ、パイプラインリソースを有効に使用することができる。
ここで、本実施例では、2つのテーブルを更新する場合で説明したが、3つ以上のテーブルの更新においても本実施例の機能を用いることができる。3つ以上のテーブルの更新の場合、既に最も早いフェーズの更新エントリを用いた処理が行われたパケットに対して、一番後のフェーズの更新エントリで処理が終わるまでを不整合回避時間としてもよい。
(変形例1)
次に、実施例1の変形例1について説明する。本変形例は、更新エントリの更新フラグがオンにされるタイミングで、更新エントリの内容が更新されることが実施例1と異なる。本変形例に係るスイッチ1も図1のブロック図で表される。
ここで、図7を参照して、本変形例に係るネットワークプロセッサによるテーブル更新時の処理の流れについて説明する。図7は、変形例1に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。
スイッチ1における管理部11は、テーブルの更新が発生すると、デキュー情報格納部105のデキュー停止フラグをオンにする(ステップS201)。
次に、管理部11は、フェーズが早い更新エントリの内容を更新し、更新フラグをオンにする(ステップS202)。
次に、管理部11は、不整合回避時間経過したか否かを判定する(ステップS203)。不整合回避時間を経過していない場合(ステップS203:否定)、管理部11は、ステップS203に戻り待機する。
これに対して、不整合回避時間を経過した場合(ステップS203:肯定)、管理部11は、フェーズが遅い更新エントリの内容を更新し、更新フラグをオンにする(ステップS204)。
次に、管理部11は、フェーズが遅い更新エントリの更新フラグをオフにする(ステップS205)。
次に、管理部11は、フェーズが早い更新エントリの更新フラグをオフにする(ステップS206)。
その後、管理部11は、デキュー情報格納部105のデキュー停止フラグをオフにする(ステップS207)。
一方データプレーン10では以下の処理が行われる。デキュー情報格納部105のデキュー停止フラグがオンであることを確認して、再処理制御部112は、再処理用キュー104のデキューを停止する(ステップS211)。
パケット処理部111は、フェーズが早い更新エントリの更新フラグがオンであることを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を中断し、テーブルの識別情報を付加する(ステップS212)。
そして、パケット処理部111は、テーブルの識別情報を付加したパケットを再処理制御部112へ出力する。再処理制御部112は、入力されたパケットを再処理用キュー104に格納する(ステップS213)。
さらに、パケット処理部111は、不整合回避時間の間、フェーズが遅い更新エントリにヒットしたパケットに対してパイプライン処理を続行する(ステップS214)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオンになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットを再処理制御部112へ出力する。再処理制御部112は、入力されたパケットを再処理用キュー104に格納する(ステップS215)。
次に、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオフになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットに対する処理をパイプライン処理に戻す(ステップS216)。
さらに、パケット処理部111は、フェーズが早い更新エントリの更新フラグがオフになったことを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理をパイプライン処理に戻す(ステップS217)。
再処理制御部112は、デキュー情報格納部105のデキュー停止フラグがオフであることを確認して、再処理用キュー104のデキューを開始する(ステップS218)。
その後、パケット処理部111は、再処理用キュー104からデキューされたパケットを取得すると、そのパケットに付加された識別情報を有するテーブルを用いる処理までそのパケットをバイパスさせパイプライン処理を行う(ステップS219)。
以上に説明したように、本変形例に係るネットワークプロセッサは、更新フラグをオンにするタイミングでテーブルの内容を更新する。このように、内容の更新タイミングは更新フラグのオンのタイミング又はオフのタイミングの何れであっても、スループットの低下を軽減しつつテーブルの更新による不整合の発生を軽減することができる。
図8は、実施例2に係るスイッチのブロック図である。本実施例に係るネットワークプロセッサは、更新エントリにヒットしたパケットに通し番号を付与して入力キュー102に直接転送することが実施例1と異なる。以下の説明では、各部の実施例1と同じ機能については説明を省略する。以下では、コンテンツテーブル121を用いた処理が先に行われ、後でコンテンツテーブル171を用いた処理が行われる場合で説明する。
パケット処理部111は、パケットのパイプライン処理においてコンテンツテーブル121の更新エントリにヒットしたか否かを、コンテンツテーブル121のエントリの更新フラグから確認する。
パケットが更新エントリにヒットした場合、パケット処理部111は、更新エントリにヒットしたパケットに通し番号を順次付加する。そして、パケット処理部111は、通し番号を付加したパケットを全てのフェーズが完了するまでバイパスさせ、入力キュー102へ転送する。パケット処理部111は、デキュー情報格納部105のデキュー停止フラグがオフになるまで、更新エントリにヒットしたパケットに対する通し番号の付加及び入力キュー102への転送を行う。
デキュー情報格納部105のデキュー停止フラグがオフになった場合、パケット処理部111は、パケットに付加されたテーブルの識別情報を確認する。そして、パケット処理部111は、通し番号の若い順に、コンテンツテーブル121を用いる処理までパケットをバイパスさせ、コンテンツテーブル121を用いる処理からパイプライン処理を再開する。
次に、図9を参照して、本実施例に係るテーブル更新時の処理について具体的に説明する。図9は、実施例2に係るネットワークプロセッサによるテーブルの更新最中のパイプライン処理の一例を表す図である。ここで、処理211で使用されるテーブル3−bは、RAM12に格納されたコンテンツテーブル121であり、処理212で使用されるテーブルN−1−aは、RAM107に格納されたコンテンツテーブル171である。
パケット処理部111は、コンテンツテーブル121のエントリを用いて処理211を行う際に、更新フラグが付加されているか否かを判定する。コンテンツテーブル121の更新エントリが更新されていない場合、更新フラグは付加されていないので、パケット処理部111は、パケットに対して処理211を実施し次のフェーズに進む。
これに対して、処理211でパケットに用いるエントリが更新エントリであり更新フラグが付加されている場合、パケット処理部111は、そのパケットの処理を中断し、更新エントリにヒットしたパケットをフェーズ3の間待機させる。その後、パケット処理部111は、更新エントリにヒットしたパケット、すなわち処理を中断したパケットにテーブル3−bの識別情報及び通し番号を付加する。そして、パケット処理部111は、処理を中断したパケットを入力キュー102へ転送する。図9における破線矢印213が、処理を中断したパケットの入力キュー102への転送を表す。そして、パケット処理部111は、コンテンツテーブル121の更新エントリの更新フラグがオフになるまで、更新エントリにヒットしたパケットを入力キュー102へ転送する。
パケット処理部111は、処理211の更新エントリにヒットしたパケットを再処理制御部112へ送信しつつ、不整合回避時間の間、テーブルN−1−aを用いたパケットの処理212を継続する。この間、入力キュー102へ回された処理が中断されたパケットは、パイプラインの中に送られてくる。そこで、パケット処理部111は、入力キュー102から取得したパケットに通し番号が付いているか否かを判定する。通し番号が付いていなければ、パケット処理部111は、そのパケットに対して通常のパイプライン処理を行う。これに対して、通し番号が付いている場合、パケット処理部111は、デキュー停止フラグがオンであることを確認する。そして、パケット処理部111は、図10の破線矢印214で示すように、通し番号が付いているパケットを全てのフェーズの処理をバイパスさせて、最終フェーズの後まで待機させる。その後、パケット処理部111は、そのパケットを再度入力キュー102へ転送する。図10は、デキュー停止フラグがオンの場合の通し番号が付加されたパケットに対する処理を示す図である。このように、本実施例では、デキュー停止フラグがオンの間、パケット処理部111は、処理が中断されたパケットをパイプラインの中を処理を行わずに周回させる。
その後、不整合回避時間が経過すると、コンテンツテーブル171の更新エントリの更新フラグがオンになる。そこで、パケット処理部111は、処理212における更新エントリにヒットしたパケットにテーブルの識別情報及び通し番号を付加して入力キュー102へ転送する。ここで、処理211において更新エントリにヒットしたパケットに付加する通し番号と、処理212において更新エントリにヒットしたパケットに付加する通し番号とは、それぞれ独立した通し番号である。この場合も、処理212における更新エントリにヒットしたパケットは、図10で示すように、パイプラインの中を処理が行われずに周回する。ただし、不整合回避時間が十分であり、処理211と処理212との間にパケットが残っていなければ、パケット処理部111は、実際には処理212において更新エントリにパケットがヒットすることはない。そのため、不整合回避時間が十分であれば、パケット処理部111は、処理212において更新エントリにヒットしたパケットを入力キュー102へ転送しなくて済む。
その後、コンテンツテーブル171の更新エントリが更新されると、コンテンツテーブル171の更新エントリの更新フラグがオフになる。そこで、パケット処理部111は、処理212に入力されたパケットに対してテーブルN−1−aを用いた処理を行う状態に戻る。
その後、コンテンツテーブル121の更新エントリが更新されると、コンテンツテーブル121の更新エントリの更新フラグがオフになる。そこで、パケット処理部111は、処理211に入力されたパケットに対してテーブル3−bを用いた処理を行う状態に戻る。
その後、デキュー停止フラグがオフになると、パケット処理部111は、入力キュー102から取得したパケットの中の通し番号が付加されたパケットを特定する。そして、パケット処理部111は、処理211で処理を中断したパケットに付加した通し番号の若い順に、パケットを図11の一点鎖線215で示すように処理211までのフェーズをバイパスさせ、処理211からパイプライン処理を再開する。また、パケット処理部111は、処理212で処理を中断したパケットに付加した通し番号の若い順に、パケットを処理212までのフェーズをバイパスさせ、処理212からパイプライン処理を再開する。図11は、実施例2においてテーブル更新後の処理が中断されたパケットに対する処理の流れを説明するための図である。
次に、図12を参照して、本実施例に係るネットワークプロセッサによるテーブル更新時の処理の流れについて説明する。図12は、実施例2に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。
スイッチ1における管理部11は、テーブルの更新が発生すると、デキュー情報格納部105のデキュー停止フラグをオンにする(ステップS301)。
次に、管理部11は、フェーズが早い更新エントリの更新フラグをオンにする(ステップS302)。
次に、管理部11は、不整合回避時間経過したか否かを判定する(ステップS303)。不整合回避時間を経過していない場合(ステップS303:否定)、管理部11は、ステップS303に戻り待機する。
これに対して、不整合回避時間を経過した場合(ステップS303:肯定)、管理部11は、フェーズが遅い更新エントリの更新フラグをオンにする(ステップS304)。
次に、管理部11は、フェーズが遅い更新エントリの内容を更新し、更新フラグをオフにする(ステップS305)。
次に、管理部11は、フェーズが早い更新エントリの内容を更新し、更新フラグをオフにする(ステップS306)。
その後、管理部11は、デキュー情報格納部105のデキュー停止フラグをオフにする(ステップS307)。
パケット処理部111は、フェーズが早い更新エントリの更新フラグがオンであることを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を中断し、テーブルの識別情報及び通し番号を付加する(ステップS311)。
そして、パケット処理部111は、テーブルの識別情報及び通し番号を付加したパケットを入力キュー102へ転送する(ステップS312)。
さらに、パケット処理部111は、不整合回避時間の間、フェーズが遅い更新エントリにヒットしたパケットに対して通常のパイプライン処理を続行する(ステップS313)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオンになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットにテーブルの識別情報及び通し番号を付加する(ステップS314)。
次に、パケット処理部111は、テーブルの識別情報及び通し番号を付加したパケットを入力キュー102へ転送する(ステップS315)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオフになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットに対する処理を通常のパイプライン処理に戻す(ステップS316)。
さらに、パケット処理部111は、フェーズが早い更新エントリの更新フラグがオフになったことを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を通常のパイプライン処理に戻す(ステップS317)。
その後、パケット処理部111は、自己が発行する通し番号を初期化する(ステップS318)。
その後、パケット処理部111は、パケットの通し番号順に、付加された識別情報を有するテーブルまでパケットをバイパスさせ、その後通常のパイプライン処理を実行する(ステップS319)。
次に、図13を参照して、パイプラインに入力されたパケットに対する処理についてさらに説明する。図13は、パイプラインに入力されたパケットに対する処理を表すフローチャートである。
パケット処理部111は、デキュー情報格納部105を参照し、デキュー停止フラグがオンからオフに遷移したか否かを判定する(ステップS401)。
デキュー停止フラグがオンである又はオフのままの場合(ステップS401:否定)、パケット処理部111は、ステップS403へ進む。これに対して、デキュー停止フラグがオンからオフへ遷移した場合(ステップS401:肯定)、パケット処理部111は、内部カウンタを動作させ、内部カウンタの値を0に設定する(ステップS402)。
パケット処理部111は、入力キュー102から取得したパケットに通し番号が付加されているか否かを判定する(ステップS403)。通し番号が付加されていない場合(ステップS403:否定)、パケット処理部111は、そのパケットに対して通常のパイプライン処理を施す(ステップS404)。
これに対して、通し番号が付加されている場合(ステップS403:肯定)、パケット処理部111は、通し番号が内部カウンタと一致するか否かを判定する(ステップS405)。ここで、パケット処理部111は、通し番号を0からふる場合で説明する。また、ステップS402で内部カウンタが動作されていなければ内部カウンタは値を持たず、その場合、パケット処理部111は、通し番号と内部カウンタとが一致しないと判定する。
通し番号と内部カウンタの値が一致しない場合(ステップS405:否定)、パケット処理部111は、最終フェーズの終わりまでそのパケットをバイパスさせ入力キュー102へ転送する(ステップS406)。
これに対して、通し番号と内部カウンタが一致する場合(ステップS405:肯定)、パケット処理部111は、内部カウンタを1つインクリメントする(ステップS407)。そして、パケット処理部111は、そのパケットに付加された識別情報を有するテーブルの処理までパケットをバイパスさせパイプライン処理を再開する(ステップS408)。
以上に説明したように、本実施例に係るネットワークプロセッサは、パケットに通し番号をつけ、テーブルの更新が終わるまでパイプライン処理を行わずに巡回させ、テーブルの更新完了後、通し番号順に中断した処理からパイプライン処理を再開する。
これにより、再処理用キューを新たに設けなくてもよく、コスト及びサイズを削減できる。また、入力キューサイズを回線がフルな状態に耐えうるように設計することで、通常時は入力キューに余裕ができ、テーブル更新時のパケットの廃棄を抑えることができる。
また、パイプライン内のパケットメモリを最大限に活用することができ、キューの節約及びリソースの有効活用が実現できる。さらに、処理が中断されたパケットに通し番号を振ることで、再処理時に処理されるパケットの順序性を保つことができる。
(変形例2)
次に、実施例2の変形例2について説明する。本変形例は、更新エントリの更新フラグがオンにされるタイミングで、更新エントリの内容が更新されることが実施例2異なる。本変形例に係るスイッチ1も図8のブロック図で表される。
ここで、図14を参照して、本変形例に係るネットワークプロセッサによるテーブル更新時の処理の流れについて説明する。図14は、変形例2に係るネットワークプロセッサによるテーブル更新時の処理のフローチャートである。
スイッチ1における管理部11は、テーブルの更新が発生すると、デキュー情報格納部105のデキュー停止フラグをオンにする(ステップS501)。
次に、管理部11は、フェーズが早い更新エントリの内容を更新し、更新フラグをオンにする(ステップS502)。
次に、管理部11は、不整合回避時間経過したか否かを判定する(ステップS503)。不整合回避時間を経過していない場合(ステップS503:否定)、管理部11は、ステップS503に戻り待機する。
これに対して、不整合回避時間を経過した場合(ステップS503:肯定)、管理部11は、フェーズが遅い更新エントリの内容を更新し、更新フラグをオンにする(ステップS504)。
次に、管理部11は、フェーズが遅い更新エントリの更新フラグをオフにする(ステップS505)。
次に、管理部11は、フェーズが早い更新エントリの更新フラグをオフにする(ステップS506)。
その後、管理部11は、デキュー情報格納部105のデキュー停止フラグをオフにする(ステップS507)。
パケット処理部111は、フェーズが早い更新エントリの更新フラグがオンであることを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を中断し、テーブルの識別情報及び通し番号を付加する(ステップS511)。
そして、パケット処理部111は、テーブルの識別情報及び通し番号を付加したパケットを入力キュー102へ転送する(ステップS512)。
さらに、パケット処理部111は、不整合回避時間の間、フェーズが遅い更新エントリにヒットしたパケットに対して通常のパイプライン処理を続行する(ステップS513)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオンになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットにテーブルの識別情報及び通し番号を付加する(ステップS514)。
次に、パケット処理部111は、テーブルの識別情報及び通し番号を付加したパケットを入力キュー102へ転送する(ステップS515)。
その後、パケット処理部111は、フェーズが遅い更新エントリの更新フラグがオフになったことを確認して、フェーズが遅い更新エントリにヒットしたパケットに対する処理を通常のパイプライン処理に戻す(ステップS516)。
さらに、パケット処理部111は、フェーズが早い更新エントリの更新フラグがオフになったことを確認して、フェーズが早い更新エントリにヒットしたパケットに対する処理を通常のパイプライン処理に戻す(ステップS517)。
その後、パケット処理部111は、自己が発行する通し番号を初期化する(ステップS518)。
その後、パケット処理部111は、パケットの通し番号順に、付加された識別情報を有するテーブルまでパケットをバイパスさせ、その後通常のパイプライン処理を実行する(ステップS519)。
以上に説明したように、本変形例に係るネットワークプロセッサは、更新フラグをオンにするタイミングでテーブルの内容を更新する。このように、内容の更新タイミングは更新フラグのオンのタイミング又はオフのタイミングの何れであっても、スループットの低下を軽減しつつテーブルの更新による不整合の発生を軽減することができる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断するパケット処理部と、
前記パケット処理部によるパイプライン処理が中断した場合、入力されたパケットを再処理用キューへ格納し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する再処理制御部と
を備えたことを特徴とするネットワークプロセッサ。
(付記2)前記管理部は、前記テーブルの更新が行われる場合、前記再処理用キューのデキュー停止を前記再処理制御部へ通知し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューのデキュー開始を前記再処理制御部へ通知し、
前記再処理制御部は、前記管理部から前記デキュー停止の通知を受けた場合、前記再処理用キューに前記パケットを保持し、前記管理部から前記デキュー開始の通知を受けた場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する
ことを特徴とする付記1に記載のネットワークプロセッサ。
(付記3)前記パケット処理部は、前記更新情報が付加された前記テーブルが複数ある場合、前記テーブルの中の前記処理の順番が最も早いテーブルにおいてパイプライン処理を中断することを特徴とする付記1又は2に記載のネットワークプロセッサ。
(付記4)前記パケット処理部は、パイプライン処理の順番が最も早いテーブルの識別情報を前記パケットに付加し、前記再処理用キューから前記入力キューへ転送された前記パケットは、前記識別情報を有するテーブルまでパイプライン処理をバイパスすることを特徴とする付記3に記載のネットワークプロセッサ。
(付記5)前記管理部は、前記テーブルにおいて更新されるエントリ毎に前記更新情報を付加し、
前記パケット処理部は、パイプライン処理で前記テーブル中の前記更新情報が付加されているエントリが用いられる場合に、パイプライン処理を中断し、
前記再処理制御部は、前記テーブル中の前記更新情報が付加されているエントリの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する
ことを特徴とする付記1〜4のいずれか一つに記載のネットワークプロセッサ。
(付記6)ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断し、前記パケットに通し番号を振り、前記入力キューへ転送し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記通し番号順にパケットを処理するパケット処理部と
を備えたことを特徴とするネットワークプロセッサ。
(付記7)ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断するパケット処理部と、
前記パケット処理部によるパイプライン処理が中断した場合、入力されたパケットを再処理用キューへ格納し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する再処理制御部と
を備えたことを特徴とする通信装置。
(付記8)入力キューに入力されたパケットに対して、テーブルを用いてパイプライン処理を順番に行い、
ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、
入力されたパケットに対するパイプライン処理で用いる前記テーブルのエントリに前記更新情報が付加されている場合、パイプライン処理を中断し、
パイプライン処理が中断された場合、入力されたパケットを再処理用キューへ格納し、
前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納されたパケットを前記入力キューへ転送し、
前記再処理用キューから前記入力キューへ転送されたパケットに対してパイプライン処理を再開する
ことを特徴とするパケット転送方法。
(付記9)入力キューに入力されたパケットに対して、テーブルを用いてパイプライン処理を順番に行い、
ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、
入力されたパケットに対するパイプライン処理で用いる前記テーブルのエントリに前記更新情報が付加されている場合、パイプライン処理を中断し、
パイプライン処理が中断された場合、入力されたパケットを再処理用キューへ格納し、
前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納されたパケットを前記入力キューへ転送し、
前記再処理用キューから前記入力キューへ転送されたパケットに対してパイプライン処理を再開する
処理をコンピュータに実行させることを特徴とするパケット転送プログラム。
1 スイッチ
3 端末装置
10 データプレーン
11 管理部
12 RAM
21,22 情報処理装置
101 パイプライン処理部
102 入力キュー
103 出力キュー
104 再処理用キュー
105 デキュー情報格納部
106 TCAM
107 RAM
111 パケット処理部
112 再処理制御部
121,171 コンテンツテーブル
161 TCAMテーブル

Claims (7)

  1. ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
    入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断するパケット処理部と、
    前記パケット処理部によるパイプライン処理が中断した場合、入力されたパケットを再処理用キューへ格納し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する再処理制御部と
    を備えたことを特徴とするネットワークプロセッサ。
  2. 前記管理部は、前記テーブルの更新が行われる場合、前記再処理用キューのデキュー停止を前記再処理制御部へ通知し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューのデキュー開始を前記再処理制御部へ通知し、
    前記再処理制御部は、前記管理部から前記デキュー停止の通知を受けた場合、前記再処理用キューに前記パケットを保持し、前記管理部から前記デキュー開始の通知を受けた場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する
    ことを特徴とする請求項1に記載のネットワークプロセッサ。
  3. 前記パケット処理部は、前記更新情報が付加された前記テーブルが複数ある場合、前記テーブルの中の前記処理の順番が最も早いテーブルにおいてパイプライン処理を中断することを特徴とする請求項1又は2に記載のネットワークプロセッサ。
  4. ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
    入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断し、前記パケットに通し番号を振り、前記入力キューへ転送し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記通し番号順にパケットを処理するパケット処理部と
    を備えたことを特徴とするネットワークプロセッサ。
  5. ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、ネットワーク構成の変更に伴う前記テーブルの更新が完了すると前記更新情報を削除する管理部と、
    入力キューに入力されたパケットに対して、前記テーブルを用いてパイプライン処理を順番に行い、前記テーブルのエントリのいずれかに前記更新情報が付加されている場合、パイプライン処理を中断するパケット処理部と、
    前記パケット処理部によるパイプライン処理が中断した場合、入力されたパケットを再処理用キューへ格納し、前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納された前記パケットを前記入力キューへ転送する再処理制御部と
    を備えたことを特徴とする通信装置。
  6. 入力キューに入力されたパケットに対して、テーブルを用いてパイプライン処理を順番に行い、
    ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、
    入力されたパケットに対するパイプライン処理で用いる前記テーブルのエントリに前記更新情報が付加されている場合、パイプライン処理を中断し、
    パイプライン処理が中断された場合、入力されたパケットを再処理用キューへ格納し、
    前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納されたパケットを前記入力キューへ転送し、
    前記再処理用キューから前記入力キューへ転送されたパケットに対してパイプライン処理を再開する
    ことを特徴とするパケット転送方法。
  7. 入力キューに入力されたパケットに対して、テーブルを用いてパイプライン処理を順番に行い、
    ネットワーク構成の変更に先立って更新されるテーブルの更新されるエントリに更新情報を付加し、
    入力されたパケットに対するパイプライン処理で用いる前記テーブルのエントリに前記更新情報が付加されている場合、パイプライン処理を中断し、
    パイプライン処理が中断された場合、入力されたパケットを再処理用キューへ格納し、
    前記更新情報が付加された前記テーブルの更新が全て完了した場合、前記再処理用キューに格納されたパケットを前記入力キューへ転送し、
    前記再処理用キューから前記入力キューへ転送されたパケットに対してパイプライン処理を再開する
    処理をコンピュータに実行させることを特徴とするパケット転送プログラム。
JP2015138124A 2015-07-09 2015-07-09 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム Expired - Fee Related JP6540296B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015138124A JP6540296B2 (ja) 2015-07-09 2015-07-09 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
US15/155,182 US10015076B2 (en) 2015-07-09 2016-05-16 Network processor, communication device, packet transfer method, and computer-readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015138124A JP6540296B2 (ja) 2015-07-09 2015-07-09 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム

Publications (2)

Publication Number Publication Date
JP2017022530A true JP2017022530A (ja) 2017-01-26
JP6540296B2 JP6540296B2 (ja) 2019-07-10

Family

ID=57731463

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015138124A Expired - Fee Related JP6540296B2 (ja) 2015-07-09 2015-07-09 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム

Country Status (2)

Country Link
US (1) US10015076B2 (ja)
JP (1) JP6540296B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10735331B1 (en) 2016-12-09 2020-08-04 Barefoot Networks, Inc. Buffer space availability for different packet classes
US10412018B1 (en) * 2017-03-21 2019-09-10 Barefoot Networks, Inc. Hierarchical queue scheduler
GB2594478A (en) * 2020-04-28 2021-11-03 Cogniscience Ltd On chip router

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008066947A (ja) * 2006-09-06 2008-03-21 Nippon Telegr & Teleph Corp <Ntt> パケット処理装置
JP2012253671A (ja) * 2011-06-06 2012-12-20 Fujitsu Ltd 通信装置及びパケット振分方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3077677B2 (ja) * 1998-07-14 2000-08-14 日本電気株式会社 品質保証ノード装置
JP3386117B2 (ja) * 2000-01-11 2003-03-17 日本電気株式会社 マルチレイヤクラス識別通信装置と通信装置
EP1548998A4 (en) * 2002-10-03 2008-02-27 In4S Inc BITKETTENPR FISHING PROCEDURE AND EQUIPMENT
US7558890B1 (en) * 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
JP4779955B2 (ja) 2006-01-06 2011-09-28 富士通株式会社 パケット処理装置及びパケット処理方法
JP5812533B2 (ja) * 2012-05-31 2015-11-17 株式会社日立製作所 通信装置、及び、通信方法
WO2015133448A1 (ja) * 2014-03-04 2015-09-11 日本電気株式会社 パケット処理装置、パケット処理方法およびプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008066947A (ja) * 2006-09-06 2008-03-21 Nippon Telegr & Teleph Corp <Ntt> パケット処理装置
JP2012253671A (ja) * 2011-06-06 2012-12-20 Fujitsu Ltd 通信装置及びパケット振分方法

Also Published As

Publication number Publication date
JP6540296B2 (ja) 2019-07-10
US10015076B2 (en) 2018-07-03
US20170012855A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
US11677851B2 (en) Accelerated network packet processing
US10970144B2 (en) Packet processing on a multi-core processor
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
CN111684769B (zh) 包括基于表的动作的匹配处理单元的网络系统
US8799507B2 (en) Longest prefix match searches with variable numbers of prefixes
US20120230341A1 (en) Multi-threaded processing with hardware accelerators
US7836195B2 (en) Preserving packet order when migrating network flows between cores
US8555374B2 (en) High performance packet processing using a general purpose processor
US20130339971A1 (en) System and Method for Improved Job Processing to Reduce Contention for Shared Resources
US10108566B2 (en) Apparatus and method for virtualizing network interface
JP2018185624A (ja) スイッチプログラム、スイッチング方法及び情報処理装置
JP6540296B2 (ja) ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
US9104478B2 (en) System and method for improved job processing of a number of jobs belonging to communication streams within a data processor
US11509750B2 (en) Network switching with co-resident data-plane and network interface controllers
US9148270B2 (en) Method and apparatus for handling data flow in a multi-chip environment using an interchip interface
US10423546B2 (en) Configurable ordering controller for coupling transactions
TWI429230B (zh) 處理資訊系統的方法
TWI609326B (zh) 控制核心之方法
JP2010199643A (ja) パケット処理装置、該処理装置に用いられるパケット処理順序制御方法及びパケット処理順序制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190417

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190527

R150 Certificate of patent or registration of utility model

Ref document number: 6540296

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees