JP5152201B2 - パケット処理装置およびパケット処理プログラム - Google Patents

パケット処理装置およびパケット処理プログラム Download PDF

Info

Publication number
JP5152201B2
JP5152201B2 JP2009550385A JP2009550385A JP5152201B2 JP 5152201 B2 JP5152201 B2 JP 5152201B2 JP 2009550385 A JP2009550385 A JP 2009550385A JP 2009550385 A JP2009550385 A JP 2009550385A JP 5152201 B2 JP5152201 B2 JP 5152201B2
Authority
JP
Japan
Prior art keywords
processing
packet
cpu
queue
qos
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
JP2009550385A
Other languages
English (en)
Other versions
JPWO2009093299A1 (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.)
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
Publication of JPWO2009093299A1 publication Critical patent/JPWO2009093299A1/ja
Application granted granted Critical
Publication of JP5152201B2 publication Critical patent/JP5152201B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority

Landscapes

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

Description

本発明は、パケット処理装置およびパケット処理プログラムに関し、特に、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度を低減して処理性能を向上することができるパケット処理装置およびパケット処理プログラムに関する。
通常、コンピュータネットワークにおいては、サーバとクライアントの間にスイッチやルータなどの中継装置が設けられ、パケットの中継処理が行われる。従来の中継装置は、OSI(Open Systems Interconnection)参照モデルにおけるレイヤ2(データリンク層)およびレイヤ3(ネットワーク層)の処理を実施するのみであったが、近年は、より高位レイヤの処理が中継装置によって実施されることがある。具体的には、サーバに対する負荷を分散させる負荷分散処理、外部からの攻撃に対するファイアウォールなどの処理、またはクライアントとサーバの間の通信を秘匿するIPsec(Security Architecture for Internet Protocol)やSSL−VPN(Secure Socket Layer-Virtual Private Network)などのVPN処理のような高位レイヤ処理を行う中継装置が登場している。さらに、中継装置によって高位レイヤの解析も実施可能であることから、高位レイヤの情報を基にしたQoS(Quality of Service)処理などが実施されることもある。
また、一般にネットワークサーバと呼ばれ、高位レイヤ処理とレイヤ2およびレイヤ3の処理との双方の処理を実施する装置も登場し、コンピュータネットワークに配置されるようになっている。このようなネットワークサーバには、多機能であることに起因してネットワーク内の負荷が集中することがあり、基本的な性能についても高度なものが求められている。このため、ネットワークサーバにおける中継処理に関しては、それほど複雑な処理を含まないため、ハードウェア化による高速化が図られることがある。一方、ネットワークサーバにおける高位レイヤ処理に関しては、複雑な処理を含むことや新規サービスに対応する柔軟な機能拡張が必要とされることなどの要因から、単純なハードウェア化による高速化は困難となっている。したがって、ネットワークサーバにおける高位レイヤ処理を高速化するためには、ソフトウェア処理の高速化、換言すればCPU(Central Processing Unit)の処理性能の向上が不可欠となる。
近年では、CPU単体の処理性能がほぼ限界に近づいているため、複数のCPUやCPUコア(以下、これらをまとめて「CPU」という)を単一の装置に搭載することでソフトウェア処理の高速化が図られることがある。このとき、単に複数のCPUそれぞれに同一の処理をさせるのではソフトウェア処理の高速化が図られないため、処理対象の複数のパケットがネットワークサーバに到着すると、各パケットは複数のCPUに振り分けられ、それぞれのCPUによって並列に処理が実行される。
図1は、上述した並列処理の基本アーキテクチャを示す図である。同図に示すように、処理対象のパケットは、振分処理部10によって、並列に配置されたCPU20−1〜20−n(nは2以上の整数)に振り分けられ、振り分け先のCPUによって処理される。振分処理部10によるパケットの振分方式には様々なものがあるが、例えば特許文献1においては、レイヤ3以下の情報とハッシュ値とを用いて振り分け先のCPUを決定することが開示されている。このような並列処理では、複数のCPU間における依存性に留意することが重要となる。すなわち、複数のCPUが共有する情報については、同一の情報が複数のCPUによって参照・更新される可能性があるが、複数のCPUによる参照・更新が同時に行われると、誤動作が発生する虞がある。したがって、このような共有情報に対して1つのCPUがアクセスしている間は、同一の情報に対する他のCPUによるアクセスを禁ずる排他処理が必要となる。
特開2005−64882号公報
ところで、高位レイヤ処理のような複雑な処理では、複数のCPUが共有する共有情報へのアクセス頻度が高く、これに伴って排他処理の頻度も高くなる。そして、排他処理の頻度が高くなると、並列処理による処理向上の度合いが劣化してしまうことになる。具体的には、CPUの数を2倍にすれば理論的には処理性能が2倍になると考えられるが、実際にはCPU間の排他処理が発生するため、処理性能が2倍に到達することはない。極端な場合には、CPUの数を2倍にする前と比べて処理性能が低下することもある。したがって、処理性能を向上するためには、排他処理の頻度を低減することが非常に重要となる。
そこで、高位レイヤ処理を実行する場合は、例えばTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)などのコネクションごとに異なるCPUへパケットを振り分け、同一のコネクションによって伝送されたパケットは、同一のCPUによって処理させることが考えられる。これにより、コネクションごとのコネクション情報それぞれは、単一のCPUのみからアクセスされることになり、高位レイヤ処理の基本情報となるコネクション情報へのアクセスに伴う排他処理が不要となる。
しかしながら、QoS処理を実行する場合は、たとえコネクションごとにパケットを振り分けても、異なるCPUから同一のQoS処理用のキューへの同時アクセスが発生することがあり、排他処理を解消することができないという問題がある。すなわち、QoS処理においては、通常、物理ポート単位でキューがマッピングされ、ポリシーの設定に従ってキューが割り振られるため、異なるコネクションによって伝送されたパケットが同一のキューにマッピングされることも定常的に発生する。
具体的には、例えば図2に示すように、TCP#1のコネクションに対応するCPU20−1によって処理されるパケットとTCP#2のコネクションに対応するCPU20−2によって処理されるパケットとがいずれもQoS処理用キュー群30内の同一のキュー(図2においては最上段のキュー)にマッピングされる可能性がある。そして、これらのマッピングが同時に発生することを防止するために、CPU20−1およびCPU20−2の間での排他処理が必要となってしまう。
本発明はかかる点に鑑みてなされたものであり、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度を低減して処理性能を向上することができるパケット処理装置およびパケット処理プログラムを提供することを目的とする。
本願が開示するパケット処理装置は、1つの態様において、受信したパケットについて、該パケットの伝送に用いられた通信の種別を識別する識別手段と、前記通信の種別ごとに設けられ、前記識別手段によって対応する種別の通信により伝送されたことが識別された前記パケットについて、該パケットの要求品質を識別する複数の処理手段と、前記要求品質ごとに設けられ、前記各処理手段によって対応する要求品質であることが識別された前記パケットについて、キュー処理を実行する複数のキュー処理手段とを有する
本明細書に開示されたパケット処理装置およびパケット処理プログラムによれば、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度を低減して処理性能を向上することができる。
図1は、並列処理の基本アーキテクチャを示す図である。 図2は、QoS処理の競合の一例を示す図である。 図3は、実施の形態1に係るパケット処理装置の概要構成を示すブロック図である。 図4は、実施の形態1に係るCPU部の内部構成を示すブロック図である。 図5は、実施の形態1に係るメモリの内部構成を示すブロック図である。 図6は、実施の形態1に係る受信コネクション情報テーブルの一例を示す図である。 図7は、実施の形態1に係るルーティングテーブルの一例を示す図である。 図8は、実施の形態1に係るパケット中継時の動作を示すフロー図である。 図9は、コネクション情報に対する競合の一例を示す図である。 図10は、実施の形態2に係るCPU部の内部構成を示すブロック図である。 図11は、実施の形態2に係るメモリの内部構成を示すブロック図である。 図12は、実施の形態2に係るパケット中継時の動作を示すフロー図である。
符号の説明
100 CPU部
101 受信振分CPU
102−1〜102−4 並列処理CPU
103−1〜103−4 QoS処理CPU
104 中継処理CPU
105 上位処理CPU
151 送信振分CPU
200 メモリ
201 パケット情報格納バッファ
202 受信コネクション情報テーブル
203 ルーティングテーブル
204−1〜204−4 QoS処理用キュー群
251 送信コネクション情報テーブル
本発明の骨子は、パケットの要求品質に応じた複数のキューそれぞれに対してパケットのエンキュー処理およびデキュー処理を実行するQoS処理専用のプロセッサを設け、パケット入出力時のQoS処理については、専用のプロセッサが実行することである。以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
図3は、本発明の実施の形態1に係るパケット処理装置の概要構成を示すブロック図である。同図に示すパケット処理装置は、例えばネットワークサーバなどの中継装置に搭載されているものとする。なお、このパケット処理装置は、サーバやクライアントなどの端末装置に搭載されていても良い。図3に示すパケット処理装置は、CPU部100、メモリ200、メモリ制御部300、MAC(Media Access Control)部400−1〜400−n(nは1以上の整数)、PHY(PHYsical)部500−1〜500−n、および内部バス600を有している。
CPU部100は、複数のCPUを備え、各CPUがメモリ200に格納された情報を用いた処理を実行する。このとき、CPU部100内の各CPUは、それぞれが異なる処理を並列に実行する。
メモリ200は、CPU部100内の各CPUが処理に用いる情報を格納する。具体的には、メモリ200は、外部から入力されたパケットに含まれる情報(以下「パケット情報」という)やパケットの伝送に用いられるコネクションの情報などを格納する。
メモリ制御部300は、CPU部100がメモリ200に格納された情報を用いて処理を実行する際に、CPU部100とメモリ200の間の情報のやり取りを制御する。すなわち、メモリ制御部300は、CPU部100による処理が実行される際に、内部バス600を介してメモリ200から必要な情報を取得し、CPU部100へ提供する。
MAC部400−1〜400−nは、パケットの送受信方法や誤り検出方法などを設定するレイヤ2の一部に属する処理を実行する。同様に、PHY部500−1〜500−nは、それぞれ外部のインタフェース1〜nに接続し、レイヤ1(物理層)に属する処理を実行する。これらのMAC部400−1〜400−nとPHY部500−1〜500−nとは、対応する2つの処理部の組み合わせ(例えばMAC部400−1とPHY部500−1の組み合わせ)ごとに例えばネットワークカード上に一体的に形成されている。そして、MAC部400−1〜400−nおよびPHY部500−1〜500−nを介して各インタフェース1〜nからパケット処理装置内部へパケットが入力されたり、パケット処理装置内部から各インタフェース1〜nへパケットが出力されたりする。
内部バス600は、パケット処理装置内の各処理部を接続し、情報を伝達する。具体的には、内部バス600は、例えば各インタフェース1〜nから入力されたパケットのパケット情報をMAC部400−1〜400−nからメモリ200へ伝達したり、このパケット情報をメモリ200からメモリ制御部300へ伝達したりする。
図4および図5は、それぞれ本実施の形態に係るCPU部100およびメモリ200の内部構成を示すブロック図である。図4に示すCPU部100は、受信振分CPU101、並列処理CPU102−1〜102−4、QoS処理CPU103−1〜103−4、中継処理CPU104、および上位処理CPU105を有している。また、図5に示すメモリ200は、パケット情報格納バッファ201、受信コネクション情報テーブル202、ルーティングテーブル203、およびQoS処理用キュー群204−1〜204−4を有している。
図4において、受信振分CPU101は、メモリ200に記憶された受信コネクション情報テーブル202を参照し、同一のコネクションから受信されるパケットが同一の並列処理CPUによって受信処理されるように、パケットを並列処理CPU102−1〜102−4に振り分ける。すなわち、例えばあるTCPコネクションから受信されたパケットが並列処理CPU102−1によって受信処理された場合、受信振分CPU101は、同一のTCPコネクションから受信されるパケットは、すべて並列処理CPU102−1によって受信処理されるようにパケットを振り分ける。
並列処理CPU102−1〜102−4は、受信振分CPU101によってパケットが振り分けられると、このパケットのパケット情報をメモリ200のパケット情報格納バッファ201から取得し、所定の受信処理を実行する。そして、並列処理CPU102−1〜102−4は、パケットの入力QoSを識別し、識別された入力QoSに対応するQoS処理CPU103−1〜103−4へパケットの入力QoSを通知する。
また、並列処理CPU102−1〜102−4は、上位処理CPU105における高位レイヤ処理が終了したパケットのパケット情報をメモリ200のパケット情報格納バッファ201から取得し、所定の送信処理を実行する。このとき、並列処理CPU102−1〜102−4のそれぞれは、自身が受信処理を実行したパケットのパケット情報を取得して、送信処理も実行する。そして、並列処理CPU102−1〜102−4は、パケットの出力QoSを識別子、識別された出力QoSに対応するQoS処理CPU103−1〜103−4へパケットの出力QoSを通知する。
なお、ここでは、CPU部100に4つの並列処理CPU102−1〜102−4が配置されるものとしたが、並列処理CPUの数は4つに限定されず、2つ以上の任意の数で良い。
QoS処理CPU103−1〜103−4は、それぞれメモリ200のQoS処理用キュー群204−1〜204−4に対応して設けられ、対応するQoS処理用キュー群204−1〜204−4を用いたQoS処理を実行する。具体的には、QoS処理CPU103−1〜103−4は、並列処理CPU102−1〜102−4からパケットの入力QoSまたは出力QoSが通知されると、対応するQoS処理用キュー群204−1〜204−4のうち通知された入力QoSまたは出力QoSに対応するキューにパケットのエンキュー処理を実行し、それぞれのキューに応じたタイミングでパケットのデキュー処理を実行する。
すなわち、QoS処理CPU103−1〜103−4は、並列処理CPU102−1〜102−4が実行する受信処理および送信処理とは別にパケットのQoS処理を実行する。したがって、並列処理CPU102−1〜102−4からQoS処理用キュー群204−1〜204−4に対するアクセスが行われることはなく、並列処理CPU102−1〜102−4の間での排他処理が不要となる。また、QoS処理用キュー群204−1〜204−4に含まれる各キューにはQoS処理CPU103−1〜103−4のいずれか1つのみが対応しているため、QoS処理CPU103−1〜103−4の間での排他処理も不要である。
なお、ここでは、CPU部100に4つのQoS処理用キュー群204−1〜204−4が配置されるものとしたが、QoS処理用キュー群の数は4つに限定されない。また、QoS処理用キュー群の数は、並列処理CPUと同数でなくても良く、QoS処理用キュー群204−1〜204−4に含まれる各キューがいずれか1つのQoS処理CPUに対応していれば良い。
中継処理CPU104は、メモリ200に記憶されたルーティングテーブル203を参照し、並列処理CPU102−1〜102−4による受信処理後のパケットの送信先を設定する。本実施の形態においては、単一の中継処理CPU104がパケットの中継処理を実行するため、頻繁に更新され、比較的サイズが大きくなるルーティングテーブル203はメモリ200に1つだけ保持されていれば良い。このため、複数のCPUがそれぞれ固有のルーティングテーブルを参照しながら中継処理を実行する場合と比べて、メモリ200の記憶容量を節約することができるとともに、複数のルーティングテーブルの同期などによる処理負荷を軽減することができる。
なお、中継処理CPU104が実行する中継処理はレイヤ2およびレイヤ3に属する処理であり、処理負荷は比較的小さい。したがって、単一の中継処理CPU104のみでも中継処理の実行が可能であるが、たとえ中継処理CPU104の処理性能が不足した場合でも、レイヤ2およびレイヤ3に属する処理をハードウェア化することにより、容易に中継処理を高速化することができる。
上位処理CPU105は、並列処理CPU102−1〜102−4においては実行が困難である高位レイヤ処理をパケットに対して実行する。また、上位処理CPU105は、例えばパケット処理装置に新規の機能を実装するにあたって、一時的に新規の機能を実装し、パケットに対する処理を実行するようにしても良い。
一方、図5において、パケット情報格納バッファ201は、各インタフェース1〜nからパケット処理装置に入力されたパケットのパケット情報を格納する。すなわち、パケット情報格納バッファ201は、MAC部およびPHY部を備えたネットワークカードを介して入力されたパケットのパケット情報を内部バス600を経由して取得し、パケットごとのパケット情報を格納する。
受信コネクション情報テーブル202は、パケット処理装置に入力されたパケットが伝送された受信コネクションと振り分け先の並列処理CPU102−1〜102−4との対応関係を記憶している。具体的には、受信コネクション情報テーブル202は、例えば図6に示すように、受信コネクションに応じたIPアドレスおよびポートと振り分け先の並列処理CPU102−1〜102−4とを対応付けて記憶する。図6に示した例では、例えばIPアドレスが「IPa」でポートが「Pa」のパケットは、並列処理CPU102−1へ振り分けられることになる。
ここで、受信コネクション情報テーブル202におけるIPアドレスおよびポートと振分先CPUとの対応関係は、新たな受信コネクションが確立されるたびに受信振分CPU101によって決定され登録される。そして、既存の受信コネクションからパケットが入力された場合には、受信振分CPU101によって受信コネクション情報テーブル202が参照されることにより、同一の受信コネクションから以前に入力されたパケットの振り分け先となっている並列処理CPU102−1〜102−4へパケットが振り分けられることになる。したがって、同一の受信コネクションから入力されるパケットは、すべて同一の並列処理CPU102−1〜102−4によって受信処理が施されることになる。これにより、それぞれの受信コネクションに関する情報に対しては、並列処理CPU102−1〜102−4のいずれか1つのみがアクセスすることになり、排他処理が不要となる。
ルーティングテーブル203は、中継処理におけるパケットの送信先を記憶している。具体的には、ルーティングテーブル203は、例えば図7に示すように、パケットの送信先のIPアドレスとパケットを出力すべき宛先インタフェースとの対応関係を記憶している。図7に示した例では、例えば送信先のIPアドレスが「IPa」のパケットは、インタフェース1へ出力されることになる。
QoS処理用キュー群204−1〜204−4は、パケットの要求品質ごとに設けられた複数のキューがQoS処理CPU103−1〜103−4に対応づけてグループ分けされたキュー群であり、それぞれ1つ以上のキューを備えている。そして、QoS処理用キュー群204−1〜204−4は、対応するQoS処理CPU103−1〜103−4からの指示に従って、パケットの要求品質に応じたキューにパケットをエンキューしたりデキューしたりする。
次いで、上記のように構成されたパケット処理装置のパケット中継時の動作について、図8に示すフロー図を参照しながら説明する。なお、以下においては、主にCPU部100内の各CPUの動作について説明するものとし、メモリ制御部300、MAC部400−1〜400−n、およびPHY部500−1〜500−nの詳細な動作については説明を省略する。
まず、受信コネクションから受信されたパケットがパケット処理装置に入力されると(ステップS101)、このパケットのパケット情報は、パケット情報格納バッファ201に格納される(ステップS102)。そして、受信振分CPU101によってパケットが入力されたことが検知されると、受信振分CPU101によって、パケット情報からIPアドレスおよびポートが確認され、受信コネクション情報テーブル202が参照されることにより、パケットが伝送された受信コネクションが既存のコネクションであるか否かが判断される(ステップS103)。すなわち、パケットのIPアドレスおよびポートが受信コネクション情報テーブル202に登録済みであれば、受信振分CPU101によって、パケットの受信コネクションが既存のコネクションであると判断され、パケットのIPアドレスおよびポートが受信コネクション情報テーブル202に未登録であれば、受信振分CPU101によって、パケットの受信コネクションが新規のコネクションであると判断される。
この判断の結果、受信コネクションが既存のコネクションである場合は(ステップS103Yes)、受信振分CPU101によって、パケットのIPアドレスおよびポートに対応する振分先CPUが受信コネクション情報テーブル202から読み出され、振り分け先の並列処理CPUへパケットの処理が振り分けられる。換言すれば、以前に同一の受信コネクションから入力されたパケットの処理を実行した並列処理CPUへパケットの処理が振り分けられる(ステップS104)。
反対に、受信コネクションが新規のコネクションである場合は(ステップS103No)、受信振分CPU101によって、空いている並列処理CPUが1つ選択され、パケットの振り分け先に決定されるとともに、パケットのIPアドレスおよびポートと振り分け先の並列処理CPUとの対応関係が受信コネクション情報テーブル202に登録される。換言すれば、パケットに対する処理を実行中でない新規の並列処理CPUへパケットの処理が振り分けられる(ステップS105)。
こうして、パケット処理装置へ入力されたパケットに対する処理は、受信コネクションごとに同一の並列処理CPUへ振り分けられるが、ここでは、並列処理CPU102−1に処理が振り分けられたものとして説明を進める。
並列処理CPU102−1に対して処理が振り分けられると、並列処理CPU102−1によって、パケットに対する所定の受信処理が実行される。また、並列処理CPU102−1によって、パケットの要求品質に相当する入力QoSが識別され(ステップS106)、識別された入力QoSに対応するQoS処理CPUへ入力QoSが通知される。すなわち、メモリ200のQoS処理用キュー群204−1〜204−4のうち入力QoSに対応するキューを含むQoS処理用キュー群を管理するQoS処理CPUに対して、パケットの入力QoSが通知される。このように、QoS処理CPU103−1〜103−4のそれぞれに対しては、パケットが伝送された受信コネクションとは無関係に、同一のQoS処理用キュー群を使用するパケットの入力QoSが通知されることになる。ここでは、パケットの入力QoSに対応するキューが例えばQoS処理用キュー群204−1に含まれるものとすると、入力QoSは、QoS処理用キュー群204−1を管理するQoS処理CPU103−1へ通知される。
QoS処理CPU103−1へ入力QoSが通知されると、QoS処理CPU103−1によって、QoS処理用キュー群204−1内の入力QoSに対応するキューにおけるQoS処理が実行される(ステップS107)。すなわち、QoS処理CPU103−1によって、入力QoSに対応するキューへパケットがエンキュー処理され、このキューに応じたタイミングでパケットがデキュー処理される。このとき、それぞれのキューにおけるQoS処理は、QoS処理CPU103−1〜103−4のうちいずれか1つ(ここではQoS処理CPU103−1)のみが担当しているため、いずれのキューにおけるエンキュー処理およびデキュー処理にも競合が発生することはなく、QoS処理CPU103−1〜103−4の間の排他処理は不要である。結果として、CPU部100における排他処理を低減することができ、CPU部100の処理性能を向上することができる。
QoS処理が完了すると、中継処理CPU104によって、パケットの送信先を設定する中継処理が実行される(ステップS108)。すなわち、中継処理CPU104によって、ルーティングテーブル203が参照され、パケットの送信先IPアドレスに対応するインタフェースへパケットが出力されるように設定される。また、並列処理CPU102−1〜102−4において実行が困難な高位レイヤ処理を実行する場合には、上位処理CPU105によって、高位レイヤ処理が実行される。
そして、中継処理CPU104および上位処理CPU105による処理が完了すると、並列処理CPU102−1〜102−4による所定の送信処理が実行される。このとき、パケットの受信処理を実行した並列処理CPUは、同一のパケットに対する送信処理も実行する。したがって、ここでは、並列処理CPU102−1によって、パケットの送信処理が実行される。また、並列処理CPU102−1によって、パケットの出力QoSが識別され(ステップS109)、識別された出力QoSに対応するQoS処理CPUへ出力QoSが通知される。パケットの出力QoSは、受信処理時の入力QoSと異なっていても良い。ここでは、パケットの出力QoSに対応するキューが例えばQoS処理用キュー群204−2に含まれるものとすると、出力QoSは、QoS処理用キュー群204−2を管理するQoS処理CPU103−2へ通知される。
QoS処理CPU103−2へ出力QoSが通知されると、QoS処理CPU103−2によって、QoS処理用キュー群204−2内の出力QoSに対応するキューにおけるQoS処理が実行される(ステップS110)。すなわち、QoS処理CPU103−2によって、出力QoSに対応するキューへパケットがエンキュー処理され、このキューに応じたタイミングでパケットがデキュー処理される。このときも受信処理時のQoS処理と同様に、それぞれのキューにおけるQoS処理は、QoS処理CPU103−1〜103−4のうちいずれか1つ(ここではQoS処理CPU103−2)のみが担当しているため、いずれのキューにおけるエンキュー処理およびデキュー処理にも競合が発生することはなく、QoS処理CPU103−1〜103−4の間の排他処理は不要である。結果として、CPU部100における排他処理を低減することができ、CPU部100の処理性能を向上することができる。
QoS処理が完了すると、パケットは、中継処理CPU104によって設定されたインタフェースから出力される(ステップS111)。このとき、パケット情報格納バッファ201のうち、出力されたパケットのパケット情報を格納するバッファ領域が解放される。また、パケットの出力後、受信コネクションが切断された場合は、受信コネクション情報テーブル202において、受信コネクションに対応するIPアドレスおよびポートと振分先CPUとの対応関係が削除される。
以上のように、本実施の形態によれば、受信コネクションごとの複数の並列処理CPUとは別に複数のQoS処理CPUを設け、パケットの要求品質ごとの複数のキューそれぞれをいずれかのQoS処理CPUが管理し、パケット入力時および出力時におけるQoS処理をQoS処理CPUによって実行する。このため、それぞれのキューに対しては、単一のQoS処理CPUがエンキュー処理およびデキュー処理を実行することになり、キューにおける複数のCPUの競合が発生せず、排他処理が不要となる。結果として、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度を低減して処理性能を向上することができる。
(実施の形態2)
ところで、ネットワークサーバにおける高位レイヤ処理においては、クライアント側のコネクションおよびサーバ側のコネクションが終端されることが多い。すなわち、クライアントおよびネットワークサーバ間のコネクションとネットワークサーバおよびサーバ間のコネクションとが異なることがある。このため、実施の形態1における1つの並列処理CPUをパケットの入力時と出力時とで異なるコネクションに対応させる必要が生じることがある。
具体的には、例えば図9に示すように、受信コネクション「TCP#1」からのパケットが並列処理CPU102−1に振り分けられた場合、この受信コネクション「TCP#1」が終端され、パケットは、並列処理CPU102−2に対応する送信コネクション「TCP#2」によって送信されることがある。しかし、実施の形態1においては、パケットの受信処理を実行した並列処理CPU102−1がパケットの送信処理も実行するため、並列処理CPU102−1は、並列処理CPU102−2に対応する送信コネクション「TCP#2」の情報を参照して、送信コネクション「TCP#2」によるパケットの送信処理を実行することになる。したがって、パケットの出力時には、送信コネクション「TCP#2」の情報に対して並列処理CPU102−1、102−2の双方が同時にアクセスする可能性があり、排他処理が必要となってしまう。
そこで、本発明の実施の形態2の特徴は、送信されるパケットの処理を改めて並列処理CPUに振り分け、受信コネクションと送信コネクションのそれぞれに適した並列処理CPUがパケットに対する処理を実行することである。
本実施の形態に係るパケット処理装置の概要構成は、実施の形態1(図3)と同様であるため、その説明を省略する。ただし、本実施の形態においては、CPU部100およびメモリ200の内部構成が実施の形態1とは異なっている。
図10および図11は、それぞれ本実施の形態に係るCPU部100およびメモリ200の内部構成を示すブロック図である。これらの図において、図4および図5と同じ部分には同じ符号を付し、その説明を省略する。図10に示すCPU部100は、図4に示すCPU部100に送信振分CPU151を追加した構成を有している。また、図11に示すメモリ200は、図5に示すメモリ200に送信コネクション情報テーブル251を追加した構成を有している。
図10において、送信振分CPU151は、メモリ200に記憶された送信コネクション情報テーブル251を参照し、同一のコネクションによって送信されるパケットが同一の並列処理CPUによって送信処理されるように、パケットを並列処理CPU102−1〜102−4に振り分ける。すなわち、例えばあるTCPコネクションによって送信されたパケットが並列処理CPU102−2によって送信処理された場合、送信振分CPU151は、同一のTCPコネクションによって送信されるパケットは、すべて並列処理CPU102−2によって送信処理されるようにパケットを振り分ける。
このとき、送信振分CPU151は、パケットに対する受信処理を実行した並列処理CPUとは無関係に送信処理を実行する並列処理CPUを決定する。したがって、例えば図9に示したように、受信コネクション「TCP#1」に対応する並列処理CPU102−1によって受信処理されたパケットであっても、このパケットが送信コネクション「TCP#2」によって送信される場合には、送信振分CPU151は、パケットの処理を送信コネクション「TCP#2」に対応する並列処理CPU102−2へ振り分ける。ただし、パケットの受信コネクションがパケット処理装置において終端されていない場合には、受信コネクションと送信コネクションが同一となるため、送信振分CPU151は、パケットに対する受信処理を実行した並列処理CPUへパケットの処理を振り分ける。
このように、本実施の形態においては、パケット処理装置がパケットを中継する際、同一パケットの受信コネクションと送信コネクションが異なっていれば、それぞれのコネクションに対応する並列処理CPUへパケットに対する処理を振り分ける。このため、例えば図9に示したように、パケット処理装置においてコネクションの終端が行われる場合でも、並列処理CPU102−1〜102−4の間での排他処理が不要となる。
一方、図11において、送信コネクション情報テーブル251は、パケット処理装置から出力されるパケットが送信される送信コネクションと振り分け先の並列処理CPU102−1〜102−4との対応関係を記憶している。具体的には、送信コネクション情報テーブル251は、例えば図6に示した受信コネクション情報テーブル202と同様に、送信コネクションに応じたIPアドレスおよびポートと振り分け先の並列処理CPU102−1〜102−4とを対応付けて記憶する。
ここで、送信コネクション情報テーブル251におけるIPアドレスおよびポートと振分先CPUとの対応関係は、新たな送信コネクションが確立されるたびに送信振分CPU151によって決定され登録される。そして、既存の送信コネクションへパケットが出力される場合には、送信振分CPU151によって送信コネクション情報テーブル251が参照されることにより、同一の送信コネクションへ以前に出力されたパケットの振り分け先となっている並列処理CPU102−1〜102−4へパケットが振り分けられることになる。したがって、同一の送信コネクションへ出力されるパケットは、すべて同一の並列処理CPU102−1〜102−4によって送信処理が施されることになる。これにより、それぞれの送信コネクションに関する情報に対しては、並列処理CPU102−1〜102−4のいずれか1つのみがアクセスすることになり、排他処理が不要となる。
次いで、上記のように構成されたパケット処理装置のパケット中継時の動作について、図12に示すフロー図を参照しながら説明する。同図において、図8と同じ部分には同じ符号を付し、その詳しい説明を省略する。したがって、以下においては、主にCPU部100内の送信振分CPU151の動作について詳しく説明する。
まず、実施の形態1と同様に、受信コネクションから受信されたパケットがパケット処理装置に入力され(ステップS101)、パケット情報がパケット情報格納バッファ201に格納される(ステップS102)。そして、受信振分CPU101によって、受信コネクション情報テーブル202が参照されることにより、受信コネクションが既存のコネクションであるか否かが判断される(ステップS103)。この判断の結果に従って、受信振分CPU101により振り分け先の並列処理CPUへパケットの処理が振り分けられる(ステップS104、S105)。ここでは、並列処理CPU102−1に処理が振り分けられたものとして説明を進める。
並列処理CPU102−1に対して処理が振り分けられると、並列処理CPU102−1によって、パケットに対する所定の受信処理が実行される。また、並列処理CPU102−1によって、パケットの要求品質に相当する入力QoSが識別され(ステップS106)、識別された入力QoSに対応するQoS処理CPUへ入力QoSが通知される。ここでは、パケットの入力QoSに対応するキューが例えばQoS処理用キュー群204−1に含まれるものとすると、入力QoSは、QoS処理用キュー群204−1を管理するQoS処理CPU103−1へ通知される。QoS処理CPU103−1へ入力QoSが通知されると、QoS処理CPU103−1によって、QoS処理用キュー群204−1内の入力QoSに対応するキューにおけるQoS処理が実行される(ステップS107)。
QoS処理が完了すると、中継処理CPU104によって、パケットの送信先を設定する中継処理が実行される(ステップS108)。また、並列処理CPU102−1〜102−4において実行が困難な高位レイヤ処理を実行する場合には、上位処理CPU105によって、高位レイヤ処理が実行される。
これらの中継処理および高位レイヤ処理が完了すると、送信振分CPU151によって、パケット情報からIPアドレスおよびポートが確認され、送信コネクション情報テーブル251が参照されることにより、パケットを伝送する送信コネクションが既存のコネクションであるか否かが判断される(ステップS201)。すなわち、パケットのIPアドレスおよびポートが送信コネクション情報テーブル251に登録済みであれば、送信振分CPU151によって、パケットの送信コネクションが既存のコネクションであると判断され、パケットのIPアドレスおよびポートが送信コネクション情報テーブル251に未登録であれば、送信振分CPU151によって、パケットの送信コネクションが新規のコネクションであると判断される。
この判断の結果、送信コネクションが既存のコネクションである場合は(ステップS201Yes)、送信振分CPU151によって、パケットのIPアドレスおよびポートに対応する振分先CPUが送信コネクション情報テーブル251から読み出され、振り分け先の並列処理CPUへパケットの処理が振り分けられる。換言すれば、以前に同一の送信コネクションへ出力されたパケットの処理を実行した並列処理CPUへパケットの処理が振り分けられる(ステップS202)。このため、たとえパケットの受信コネクションがパケット処理装置において終端されており、受信コネクションと送信コネクションが異なる場合でも、パケットの送信コネクションに応じた並列処理CPUへパケットの処理が振り分けられることになる。
反対に、送信コネクションが新規のコネクションである場合は(ステップS201No)、送信振分CPU151によって、空いている並列処理CPUが1つ選択され、パケットの振り分け先に決定されるとともに、パケットのIPアドレスおよびポートと振り分け先の並列処理CPUとの対応関係が送信コネクション情報テーブル251に登録される。換言すれば、パケットに対する処理を実行中でない新規の並列処理CPUへパケットの処理が振り分けられる(ステップS203)。このため、たとえパケットの受信コネクションがパケット処理装置において終端されており、送信コネクションが新たに確立される場合でも、新たな送信コネクションに対応する並列処理CPUへパケットの処理が振り分けられることになる。
こうして、パケット処理装置から出力されるパケットに対する処理は、送信コネクションごとに同一の並列処理CPUへ振り分けられるが、ここでは、並列処理CPU102−2に処理が振り分けられたものとして説明を進める。
並列処理CPU102−2に対して処理が振り分けられると、並列処理CPU102−2によって、パケットに対する所定の送信処理が実行される。また、並列処理CPU102−2によって、パケットの要求品質に相当する出力QoSが識別され(ステップS109)、識別された出力QoSに対応するQoS処理CPUへ出力QoSが通知される。そして、QoS処理CPUによって、出力QoSに対応するキューにおけるQoS処理が実行され(ステップS110)、パケットは、中継処理CPU104によって設定されたインタフェースから出力される(ステップS111)。
以上のように、本実施の形態によれば、パケット入力時に受信コネクションに応じた並列処理CPUへ処理を振り分けるだけではなく、パケット出力時にも送信コネクションに応じた並列処理CPUへ処理を振り分ける。このため、例えば受信コネクションがパケット処理装置において終端されており、パケットの受信コネクションと送信コネクションとが異なる場合にも、それぞれのコネクションに応じた並列処理CPUへ処理を振り分けることができ、複数の並列処理CPUから1つのコネクションに関する情報に対するアクセスの競合が発生せず、排他処理が不要となる。結果として、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度をさらに確実に低減して処理性能を向上することができる。
なお、上記各実施の形態においては、パケット処理装置に受信振分CPU101、QoS処理CPU103−1〜103−4、および送信振分CPU151などの専用のCPUが備えられるものとして説明したが、本発明はこれに限定されず、一般のコンピュータに汎用のCPUが複数備えられる場合に、上記各実施の形態と同様の処理を各CPUに実行させるプログラムをコンピュータに導入し、コンピュータを上記各実施の形態と同様に動作させることも可能である。
本発明は、パケットに対する処理を複数のCPUが並列して実行する場合に、複数のCPUの間における排他処理の頻度を低減して処理性能を向上する際などに適用することができる。

Claims (5)

  1. 受信したパケットについて、該パケットの伝送に用いられた通信の種別を識別する識別手段と、
    前記通信の種別ごとに設けられ、前記識別手段によって対応する種別の通信により伝送されたことが識別された前記パケットについて、該パケットの要求品質を識別する複数の処理手段と、
    前記パケットの要求品質ごとに設けられたキューと、
    前記キューそれぞれに対応して設けられ、前記識別手段により識別された通信の種別に対応する前記処理手段によって対応する要求品質であることが識別され、該要求品質を通知された前記パケットについて、前記キューのうち識別され、通知された要求品質に対応するキューを用いてキュー処理を実行するキュー処理手段
    を有することを特徴とするパケット処理装置。
  2. 前記パケットが自装置へ入力された際に、前記処理手段のうち、該パケットの自装置への伝送に用いられた通信の種別に対応する処理手段へ前記パケットを振り分ける受信振分手段と、
    前記パケットが自装置から出力される際に、前記処理手段のうち、該パケットの自装置からの伝送に用いられる通信の種別に対応する処理手段へ前記パケットを振り分ける送信振分手段と
    をさらに有することを特徴とする請求項1記載のパケット処理装置。
  3. 前記処理手段とは別体として設けられ、前記処理手段による処理後のパケットの送信先を設定する中継処理手段をさらに有する
    ことを特徴とする請求項1記載のパケット処理装置。
  4. パケットに対してそれぞれ同時に処理を実行する複数のプロセッサを備えたコンピュータによって実行されるパケット処理プログラムであって、
    前記コンピュータに、
    受信したパケットについて、該パケットの伝送に用いられた通信の種別を識別する第1識別ステップと、
    前記通信の種別ごとに設けられた前記複数のプロセッサのうち前記第1識別ステップにて識別された通信の種別に対応するプロセッサが、前記第1識別ステップにて通信の種別が識別された前記パケットについて、該パケットの要求品質を識別する第2識別ステップと、
    前記パケットの要求品質ごとに設けられたキューそれぞれに対応して設けられたキュー処理手段のうち、前記第1識別ステップにて識別された通信の種別に対応する前記プロセッサによって前記第2識別ステップにて識別された要求品質に対応する前記キュー処理手段が、前記第2識別ステップにて要求品質が識別され、該プロセッサから該要求品質を通知された前記パケットについて、前記キューのうち前記第2識別ステップにて識別され、通知された要求品質に対応するキューを用いてキュー処理を実行するキュー処理ステップと
    を実行させることを特徴とするパケット処理プログラム。
  5. パケットに対してそれぞれ同時に処理を実行する複数のプロセッサを備えたパケット処理装置におけるパケット処理方法であって、
    受信したパケットについて、該パケットの伝送に用いられた通信の種別を識別する第1識別ステップと、
    前記通信の種別ごとに設けられた前記複数のプロセッサのうち前記第1識別ステップにて識別された通信の種別に対応するプロセッサが、前記第1識別ステップにて通信の種別が識別された前記パケットについて、該パケットの要求品質を識別する第2識別ステップと、
    前記パケットの要求品質ごとに設けられたキューそれぞれに対応して設けられたキュー処理手段のうち、前記第1識別ステップにて識別された通信の種別に対応する前記プロセッサによって前記第2識別ステップにて識別された要求品質に対応する前記キュー処理手段が、前記第2識別ステップにて要求品質が識別され、該プロセッサから該要求品質を通知された前記パケットについて、前記キューのうち前記第2識別ステップにて識別され、通知された要求品質に対応するキューを用いてキュー処理を実行するキュー処理ステップと
    を有することを特徴とするパケット処理方法。
JP2009550385A 2008-01-21 2008-01-21 パケット処理装置およびパケット処理プログラム Expired - Fee Related JP5152201B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/050700 WO2009093299A1 (ja) 2008-01-21 2008-01-21 パケット処理装置およびパケット処理プログラム

Publications (2)

Publication Number Publication Date
JPWO2009093299A1 JPWO2009093299A1 (ja) 2011-05-26
JP5152201B2 true JP5152201B2 (ja) 2013-02-27

Family

ID=40900818

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009550385A Expired - Fee Related JP5152201B2 (ja) 2008-01-21 2008-01-21 パケット処理装置およびパケット処理プログラム

Country Status (3)

Country Link
US (1) US8832332B2 (ja)
JP (1) JP5152201B2 (ja)
WO (1) WO2009093299A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8934341B2 (en) 2009-12-04 2015-01-13 Napatech A/S Apparatus and a method of receiving and storing data packets controlled by a central controller
US9407581B2 (en) 2009-12-04 2016-08-02 Napatech A/S Distributed processing of data frames by multiple adapters using time stamping and a central controller
JP5749732B2 (ja) * 2009-12-04 2015-07-15 ナパテック アクティーゼルスカブ キューの充填レベルの更新を制御することにより帯域幅を節約しながらデータを受信し記憶するアセンブリおよび方法
US9300570B2 (en) 2012-05-22 2016-03-29 Harris Corporation Multi-tunnel virtual private network
US11054884B2 (en) * 2016-12-12 2021-07-06 Intel Corporation Using network interface controller (NIC) queue depth for power state management

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000031974A (ja) * 1998-07-09 2000-01-28 Hitachi Ltd 通信装置
JP2000083055A (ja) * 1998-09-04 2000-03-21 Hitachi Ltd ルータ
JP2000132411A (ja) * 1998-10-27 2000-05-12 Nec Corp ディスパッチ装置及びcpuの割り当て方法ならびにディスパッチ・プログラムを格納した記憶媒体
JP2001268082A (ja) * 2000-03-22 2001-09-28 Nec Corp 同一宛先セルの優先制御装置及びその方法
JP2002094556A (ja) * 2000-09-14 2002-03-29 Ntt Docomo Inc 業務支援装置、業務支援システムおよび業務支援方法
JP2006080936A (ja) * 2004-09-10 2006-03-23 Japan Radio Co Ltd 通信端末及び通信方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941959A (en) * 1995-12-20 1999-08-24 Tandem Computers Incorporated System for transferring a data stream to a requestor without copying data segments to each one of multiple data source/sinks during data stream building
US6920112B1 (en) * 1998-06-29 2005-07-19 Cisco Technology, Inc. Sampling packets for network monitoring
US6370605B1 (en) * 1999-03-04 2002-04-09 Sun Microsystems, Inc. Switch based scalable performance storage architecture
JP4041038B2 (ja) 2003-08-13 2008-01-30 富士通株式会社 高位レイヤ処理方法及びシステム
US6981074B2 (en) * 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing
US7957379B2 (en) * 2004-10-19 2011-06-07 Nvidia Corporation System and method for processing RX packets in high speed network applications using an RX FIFO buffer
US7647436B1 (en) * 2005-04-29 2010-01-12 Sun Microsystems, Inc. Method and apparatus to interface an offload engine network interface with a host machine
US20060277330A1 (en) * 2005-06-01 2006-12-07 Wilhelmus Diepstraten Techniques for managing priority queues and escalation considerations in USB wireless communication systems
US7610330B1 (en) * 2006-03-30 2009-10-27 Packeteer, Inc. Multi-dimensional computation distribution in a packet processing device having multiple processing architecture

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000031974A (ja) * 1998-07-09 2000-01-28 Hitachi Ltd 通信装置
JP2000083055A (ja) * 1998-09-04 2000-03-21 Hitachi Ltd ルータ
JP2000132411A (ja) * 1998-10-27 2000-05-12 Nec Corp ディスパッチ装置及びcpuの割り当て方法ならびにディスパッチ・プログラムを格納した記憶媒体
JP2001268082A (ja) * 2000-03-22 2001-09-28 Nec Corp 同一宛先セルの優先制御装置及びその方法
JP2002094556A (ja) * 2000-09-14 2002-03-29 Ntt Docomo Inc 業務支援装置、業務支援システムおよび業務支援方法
JP2006080936A (ja) * 2004-09-10 2006-03-23 Japan Radio Co Ltd 通信端末及び通信方法

Also Published As

Publication number Publication date
WO2009093299A1 (ja) 2009-07-30
US8832332B2 (en) 2014-09-09
US20100281190A1 (en) 2010-11-04
JPWO2009093299A1 (ja) 2011-05-26

Similar Documents

Publication Publication Date Title
US20220103661A1 (en) Fabric control protocol for data center networks with packet spraying over multiple alternate data paths
US20210320820A1 (en) Fabric control protocol for large-scale multi-stage data center networks
US9450780B2 (en) Packet processing approach to improve performance and energy efficiency for software routers
US9069722B2 (en) NUMA-aware scaling for network devices
US8904028B2 (en) Scalable cluster router
US8005022B2 (en) Host operating system bypass for packets destined for a virtual machine
JP6188093B2 (ja) 通信トラフィック処理アーキテクチャおよび方法
US10749805B2 (en) Statistical collection in a network switch natively configured as a load balancer
US7788411B2 (en) Method and system for automatically reflecting hardware resource allocation modifications
WO2012127886A1 (ja) ネットワークシステム、及びポリシー経路設定方法
EP2316206A2 (en) Distributed load balancer
KR20080092908A (ko) 가상화된 네트워크 환경에서 입력/출력 공유를 가지는프로토콜 오프로드 및 다이렉트 입력/출력을 위한 방법 및시스템
JP5136564B2 (ja) パケット処理装置およびパケット処理プログラム
JP2008295041A (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
CN111756565B (zh) 管理分支网络内的卫星设备
JP5152201B2 (ja) パケット処理装置およびパケット処理プログラム
US20190173790A1 (en) Method and system for forwarding data, virtual load balancer, and readable storage medium
US9491098B1 (en) Transparent network multipath utilization through encapsulation
US9015438B2 (en) System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
US7480733B2 (en) Routing incoming call requests
WO2022146466A1 (en) Class-based queueing for scalable multi-tenant rdma traffic
US7672299B2 (en) Network interface card virtualization based on hardware resources and software rings
US11394663B1 (en) Selective packet processing including a run-to-completion packet processing data plane
CN115442183B (zh) 一种数据转发方法及装置
JP2011166312A (ja) 仮想プライベートネットワークシステム、通信方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

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

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5152201

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees