JP2009199433A - ネットワーク処理装置およびネットワーク処理プログラム - Google Patents

ネットワーク処理装置およびネットワーク処理プログラム Download PDF

Info

Publication number
JP2009199433A
JP2009199433A JP2008041550A JP2008041550A JP2009199433A JP 2009199433 A JP2009199433 A JP 2009199433A JP 2008041550 A JP2008041550 A JP 2008041550A JP 2008041550 A JP2008041550 A JP 2008041550A JP 2009199433 A JP2009199433 A JP 2009199433A
Authority
JP
Japan
Prior art keywords
stage
processing
cpu
information
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008041550A
Other languages
English (en)
Inventor
Yasunori Terasaki
泰範 寺崎
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 JP2008041550A priority Critical patent/JP2009199433A/ja
Priority to US12/388,310 priority patent/US20090216829A1/en
Publication of JP2009199433A publication Critical patent/JP2009199433A/ja
Pending legal-status Critical Current

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/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/111Switch interfaces, e.g. port details
    • 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/1546Non-blocking multistage, e.g. Clos using pipelined operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation

Landscapes

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

Abstract

【課題】処理を安定して高速化すること。
【解決手段】ネットワーク処理装置100は、CPU選択部130aが制御データを受信した場合に、演算器群140aのいずれかのCPUに第1段階の処理を振り分ける。そして、第1段階の処理を振り分けられたCPUは、第1段階の処理を実行すると共に、CPU選択部130bの利用する付加情報を生成し、生成した付加情報を制御データに格納してCPU選択部130bに出力し、CPU選択部130bが付加情報に基づいて演算器群140bのいずれかのCPUに第2段階の処理を振り分ける。
【選択図】 図2

Description

この発明は、ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置等に関するものである。
IT(Information Technology)システムの多様化に伴い、昨今のネットワーク処理装置(ルータ、スイッチ等)に求められる機能もますます高性能化、多機能化を要求されている。それに伴い、ネットワーク処理装置は、処理を高速化すると共に、複数種類の処理を同時に実行する場合であっても処理性能を一定水準に維持する必要がある。
上述した課題に対応するために、ネットワーク処理装置での処理はCPU(Central Processing Unit)でのソフトウェア処理に依存する部分が多くなりつつある。また、近年のCPUのトレンドとして、CPUのクロックアップによる性能向上は望めないため、マルチコアCPUや複数のCPUを利用した並列処理を実行し、ネットワーク処理装置の高速化を実現させている。
従来の並列処理での高速化実現方式として、例えば、同一機能を全CPUにマッピングして並列処理を行う第1の方式、機能単位に異なるCPUにマッピングして機能間をパイプライン処理する第2の方式がある。
図12は、第1の方式を説明するための図である。同図に示すように、この第1の方式では、CPU選択部10がパケットを受信した場合に、CPU11〜13の処理負荷が均等になるように、パケットの処理をCPU11〜13に割り振る。なお、CPU11〜13の機能は同一である(ここでは一例として、CPU11〜13のみを示すが、その他にもCPUが存在しているものとする)。
図13は、第2の方式を説明するための図である。同図に示すように、この第2の方式では、異なる機能をCPU21〜23に割り振り、各CPUが、割り振られた機能に対応する処理を実行することで、パイプライン処理を実現させている。
例えば、パケットを受信した場合には、CPU21が、パケットに対して機能aに対応する処理を実行し、CPU22が、パケットに対して機能bに対応する処理を実行し、CPU23が、パケットに対して機能cに対応する処理を実行する(ここでは一例として、CPU21〜23のみを示すが、その他にもCPUが存在しているものとする)。
なお、特許文献1には、前段のプロセッサで行ったデータを後段のプロセッサに送信して処理をさせるのに代えて、メモリを接続することで、処理のオーバーヘッドを軽減するという技術が公開されている。
特開平04−181362号公報
しかしながら、上述した従来の技術では、必ずしもネットワーク処理装置の高速化を実現することが出来ないという問題があった。例えば、第1の方式では、共有資源に対するCPU間の排他制御処理による性能劣化が発生する場合があり、第2の方式では、機能単位に処理負荷・処理時間が異なるために、CPU間での均等な負荷分配が行えず、またパイプライン処理による性能向上の効果が薄いという問題があった。
具体的に、第1の方式では、並列処理するCPU間で共有し、各CPUが参照・更新する資源(テーブル等)があった場合に、CPU間で排他制御を行って各エンジンが処理を行うことになってしまうために、CPUの並列度を増やすたびに排他制御の発生する確率が増加し、結果として処理向上の効果が望めない。
一方、第2の方式では、ネットワーク機能が高度化するにつれて、各機能の処理負荷、処理時間が、処理するパケットに応じて全く変ってしまう。従って、外部から入力されるパケットに応じて、各CPUの処理負荷・処理時間が大幅に変化し、単純なパイプライン処理では、ネットワーク処理装置の性能を向上させることが出来ない。
例えば、第2の方式において、ネットワーク処理装置の性能を向上させるためには、パケットを受信するたびに、パケットごとに変化するCPUの処理時間・処理負荷に応じて、各CPUの処理順序を最適化する必要があるが、かかる処理は、ネットワーク処理装置にかかる負荷が重く、現実的ではない。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、処理を安定して高速化することが出来るネットワーク処理装置およびネットワーク処理プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、このネットワーク処理装置は、ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、前記ネットワーク処理装置は、前記パケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを有し、前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手段と、前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手段と、を備えたことを要件とする。
また、このネットワーク処理装置は、上記のネットワーク処理装置において、前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを要件とする。
また、このネットワーク処理装置は、上記のネットワーク処理装置において、前記演算器は、当該演算器の機能によって前記第1段階演算器群あるいは前記第2段階演算器群に割り当てられていることを要件とする。
また、このネットワーク処理プログラムは、受信したパケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを備えたコンピュータに、前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手順と、前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手順と、を実行させることを要件とする。
また、このネットワーク処理プログラムは、上記のネットワーク処理プログラムにおいて、前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを要件とする。
このネットワーク処理装置によれば、第1段階演算器群のいずれかの演算器にパケットに対する第1段階の処理を振り分け、第1段階演算器群のいずれかの演算器が第1段階の処理を実行した場合に、第2段階の処理を第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成し、制御情報に基づいて、第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定するので、第2段階演算器群に処理を割り振る装置が、再度、パケットを参照する必要がなくなるので、処理を高速化することが出来る。
また、このネットワーク処理装置によれば、パケットの各レイヤに対応したヘッダの情報を制御データとして抽出するので、容易に制御データを生成することが出来る。
また、このネットワーク処理装置によれば、演算器の機能によって第1段階演算器群あるいは第2段階演算器群を割り当てるので、処理の振り分けを容易に実行することができる。
以下に添付図面を参照して、この発明に係るネットワーク処理装置およびネットワーク処理プログラムの好適な実施の形態を詳細に説明する。
まず、本実施例にかかるネットワーク処理装置の概要および特徴について説明する。図1は、本実施例にかかるネットワーク処理装置の概要および特徴を説明するための図である。同図に示すように、このネットワーク処理装置は、第1段階の処理を行うCPU(Central Processing Unit)41,42からなる第1段階演算器群40と、第1段階の処理に続いて行われる第2段階の処理を行うCPU51〜53からなる第2段階演算器群50と、第1段階演算器群40のいずれかのCPUに第1段階の処理を振り分けるCPU選択部60aと、第2段階演算器群50のいずれかのCPUに第2段階の処理を振り分けるCPU選択部60bとを有する。
なお、ここでは一例として、第1段階演算器群40がCPU41,42を有し、第2段階演算器群50がCPU51,52,53を有しているが、第1,2段階演算器群40,50は、その他にもCPUを有しているものとする。
ネットワーク処理装置は、パケットを受信した場合に、パケットに対する第1段階の処理を第1段階演算器群40のいずれかのCPUに振り分ける。そして、第1段階の処理を振り分けられたCPUは、第1段階の処理を実行すると共に、制御情報を生成してCPU選択部60bに出力する。CPU選択部60bは、第1段階演算器群40から出力される制御情報を参照して、第2段階演算器群50のいずれかのCPUに第2段階の処理を振り分ける。
ここで、制御情報は、CPU選択部60bが第2段階の処理を第2段階演算器群50のCPUに振り分ける際に参照するデータである。なお、この制御情報は、パケットに含まれる各レイヤのヘッダの情報を含む。
このように、本実施例にかかるネットワーク処理装置は、第1段階の処理を実行するCPUが、CPU選択部60bの参照する制御情報を前もって生成し、CPU選択部60bに出力するので、CPU選択部60bが第2段階の処理をCPU51〜53に振り分ける際に、再度、単体で、パケットから必要な情報を抽出する処理を省くことができ、CPU選択部60bの処理負荷を軽減することで、ネットワーク処理装置の処理を高速化することが出来る。
なお、ここでは、説明の便宜上、第1段階演算器群40、第2段階演算器群50および各段階の演算器群に対応したCPU選択部60a、60bのみを示したが、上記のネットワーク処理装置は、その他にも第3〜n(n>3)段階演算器群および、各段階の演算器群に対応したCPU選択部を備えているものとする。
次に、本実施例にかかるネットワーク処理装置について具体的に説明する。図2は、本実施例にかかるネットワーク処理装置の構成を示す機能ブロック図である。同図に示すように、このネットワーク処理装置100は、パケット格納部110と、通信制御IF部120と、CPU選択部130a、130b、130c、第1振分管理テーブル135aと、第2振分管理テーブル格納部135bと、第3振分管理テーブル格納部135cと、演算器群140a,140b,140cとを備える。なお、その他の構成は、周知のスイッチ、ルータ等と同一であるため、ここでは説明を省略する。
このうち、パケット格納部110は、通信制御IF部120から出力されるパケットを格納する記憶手段である。図3は、パケットのデータ構造の一例を示す図である。同図に示すように、このパケットは、L(layer)2/L3ヘッダ情報と、L4ヘッダ情報と、L5〜L7ヘッダ情報と、コンテンツ情報等を備える。
ここで、L2/L3ヘッダ情報は、データリンク層あるいはネットワーク層で用いられる送信先のアドレス(DA<destination address>)および送信元のアドレス(SA<source address>)等を有する情報である。L4ヘッダ情報は、トランスポート層でも用いられるポート番号(ネットワーク処理装置100がパケットを受信したポートの番号)の情報等を有する情報である。
L5〜L7ヘッダ情報は、セッション層、プレゼンテーション層、アプリケーション層で用いられる情報であり、例えば、Cookie等の情報を含む。なお、コンテンツ情報は、各種のコンテンツ(例えば、文書、音声、画像等)の情報である。
通信制御IF部120は、ネットワークを介して、外部の通信装置との間におけるデータ通信を制御する手段である。通信制御IF部120は、パケットを受信した場合に、受信したパケットをパケット格納部110に格納すると共に、パケットから制御データを生成して、生成した制御データをCPU選択部130aに出力する。
図4は、制御データのデータ構造の一例を示す図である。同図に示すように、この制御データは、付加情報、L2/L3ヘッダ情報、L4ヘッダ情報、L5〜L7ヘッダ情報、コンテンツ情報を備える。
ここで、付加情報は、後述する演算器群140a〜140cのCPUが生成する情報を記憶するものである。従って、通信制御IF部120が、制御データを生成した時点では、付加情報は情報を保持していない。なお、制御データに含まれるL2/L3ヘッダ情報、L4ヘッダ情報、L5〜L7ヘッダ情報、コンテンツ情報の説明は、パケットのL2/L3ヘッダ情報、L4ヘッダ情報、L5〜L7ヘッダ情報、コンテンツ情報と同様であるため説明を省略する。
CPU選択部130aは、通信制御IF部120から制御データを取得した場合に、制御データに含まれるL3/L4ヘッダ情報(L3ヘッダの情報と、L4ヘッダの情報)を基にして、第1振分管理テーブルを生成し、第1振分管理テーブル格納部135aに第1振分管理テーブルを格納すると共に、第1振分管理テーブルに基づいて、第1段階の処理をCPU141a,142aのいずれかに振り分ける(振り分けたCPUに制御データを出力する)手段である。
本実施例では、第1段階の処理をコネクション単位の処理とする。ここで、コネクション単位の処理とは、FW(Firewall)等に対応する処理(パケットの通過を許可する処理、パケットの破棄指示を行う処理等)とする。
図5は、第1振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第1振分管理テーブルは、L3/L4ヘッダ情報と、CPU識別番号とを備える。L3/L4ヘッダ情報は、ネットワーク層あるいはトランスポート層で用いられる情報(DA/SA、ポート番号等)であり、CPU識別番号は、CPUを識別する情報である。例えば、CPU識別番号「C10001」はCPU141aに対応し、CPU識別番号「C10002」はCPU142aに対応する。
図5によれば、CPU選択部130aは、制御データにDA=「アドレス1」、SA=「アドレス2」の情報が含まれていれば、第1段階の処理をCPU141aに振り分け、制御データにポート番号=「ポート番号1」の情報が含まれていれば、第1段階の処理をCPU142aに振り分ける。
なお、第1振分管理テーブルによって振り分けられる第1段階の処理は、演算器群140aのCPU141a、142a間で排他制御が行われないように、設定されているものとする。例えば、CPU選択部130aは、L3/L4ヘッダ情報と、かかるL3/L4ヘッダ情報によってCPUが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各CPU間で排他制御が行われないように、第1振分管理テーブルを生成する。
すなわち、図5において、L3/L4ヘッダ情報(DA=「アドレス1」、SA=「アドレス2」)によって処理を実行するCPUが利用する共有資源と、L3/L4ヘッダ情報(ポート番号=「ポート番号1」)によって処理を実行するCPUが利用する共有資源はそれぞれ異なる。
演算器群140aは、CPU141a,142aと、コネクションポリシー管理テーブル格納部143aとを備え、第1段階の処理(コネクション単位の処理)を実行する。このうち、コネクションポリシー管理テーブル格納部143aは、コネクションポリシー管理テーブルを格納する記憶手段である。
コネクションポリシー管理テーブルは、L3/L4ヘッダ情報とポリシー(処理内容)とを対応付けて記憶するテーブルである。図6は、コネクションポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図6に示す例では、DA=「アドレス1」SA=「アドレス2」を有する制御データを取得したCPUは、ポリシー「ポリシーA1」に従って処理を実行する。
CPU141a、142aは、CPU選択部130aから制御データを取得した場合に、取得した制御データに含まれるL3/L4ヘッダ情報と、コネクションポリシー管理テーブル(図6参照)とを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
また、CPU141a、142aは、処理結果を付加情報(図4参照)に格納すると共に、L5〜L7ヘッダ情報に含まれる情報(Cookie等)をCPU選択部130bの代わりに抽出し、抽出した情報を付加情報に格納する。そして、CPU141a、142aは、付加情報に処理結果、Cookie等を格納した制御データをCPU選択部130bに出力する。
CPU選択部130bは、演算器群140a(CPU141aまたはCPU142a)から制御データを取得した場合に、制御データの付加情報に含まれるCookieを基にして、第2振分管理テーブルを生成し、第2振分管理テーブル格納部135bに第2振分管理テーブルを格納すると共に、第2振分管理テーブルに基づいて、第2段階の処理をCPU141b〜145bのいずれかに振り分ける(振り分けたCPUに制御データを出力する)手段である。
本実施例では、第2段階の処理をコンテンツ単位の処理とする。ここで、コンテンツ単位の処理とは、例えば、SLB(Server Load Balancing;負荷分散)等に対応する処理とする。
図7は、第2振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第2振分管理テーブルは、L5〜L7ヘッダ情報と、CPU識別情報とを備える。L5〜L7ヘッダ情報は、セッション層、プレゼンテーション層、アプリケーション層で用いられる情報(例えば、Cookie等)であり、CPU識別番号は、CPUを識別する情報である。例えば、CPU識別番号「C20001」は、CPU141bに対応し、CPU識別番号「C20002」は、CPU142bに対応し、CPU識別番号「C20003」は、CPU143bに対応する。
図7によれば、CPU選択部130bは、制御データの付加情報にCookie=「Cookie1」の情報が含まれていれば、第2段階の処理をCPU141bに振り分け、制御データの付加情報にCookie=「Cookie2」の情報が含まれていれば、第2段階の処理をCPU142bに振り分け、制御データの付加情報にCookie=「Cookie3」の情報が含まれていれば、第2段階の処理をCPU143bに振り分ける。
このように、CPU選択部130bは、制御データの付加情報のみを参照することによって、第2段階の処理をどのCPUに振り分けるのかを判定することが出来るので、再度制御データの各ヘッダ情報から必要な情報を抽出する必要がなくなり、振分処理にかかる負荷が大幅に低減される。
なお、第2振分管理テーブルによって振り分けられる第2段階の処理は、演算器群140bのCPU141b〜145b間で排他制御が行われないように、設定されているものとする。例えば、CPU選択部130bは、L5〜L7ヘッダ情報と、かかるL5〜L7ヘッダ情報によってCPUが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各CPU間で排他制御が行われないように、第2振分管理テーブルを生成する。
すなわち、図7において、L5〜L7ヘッダ情報(Cookie=「Cookie1」)によって処理を実行するCPUが利用する共有資源と、L5〜L7ヘッダ情報(Cookie=「Cookie2」)によって処理を実行するCPUが利用する共有資源と、L5〜L7ヘッダ情報(Cookie=「Cookie3」)によって処理を実行するCPUが利用する共有資源はそれぞれ異なる。
演算器群140bは、CPU141b〜145bと、コンテンツポリシー管理テーブル格納部146bとを備え、第2段階の処理(コンテンツ単位の処理)を実行する。このうち、コンテンツポリシー管理テーブル格納部146bは、コンテンツポリシー管理テーブルを格納する記憶手段である。
コンテンツポリシー管理テーブルは、L5〜L7ヘッダ情報とポリシーとを対応付けて記憶するテーブルである。図8は、コンテンツポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図8に示す例では、Cookie=「Cookie1」を付加情報に有する制御データを受信したCPUは、ポリシー「ポリシーB1」にしたがって処理を実行する。
CPU141b〜145bは、CPU選択部130bから制御データを取得した場合に、取得した制御データに含まれるL5〜L7ヘッダ情報と、コンテンツポリシー管理テーブル(図8参照)とを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
また、CPU141b〜145bは、処理結果を付加情報(図4参照)に格納すると共に、L5〜L7ヘッダ情報に含まれる情報(Cookie等)をCPU選択部130cの代わりに抽出し、抽出した情報を付加情報に格納する。そして、CPU141b〜145bは、付加情報に処理結果、L5〜L7ヘッダ情報を格納した制御データをCPU選択部130cに出力する。
CPU選択部130cは、演算器群140b(141b〜145bのいずれか)から制御データを取得した場合に、制御データの付加情報に含まれる処理結果(演算器群140aのCPU141a,142aのいずれかの処理結果、演算器群140bのCPU141b〜145bのいずれかの処理結果)、L5〜L7ヘッダ情報を基にして、第3振分管理テーブルを生成し、第3振分管理テーブル格納部135cに第3振分管理テーブルを格納すると共に、第3振分管理テーブルに基づいて、第3段階の処理をCPU141c〜143cのいずれかに振り分ける(振り分けたCPUに制御データを出力する)手段である。
本実施例では、第3段階の処理をキュー単位の処理とする。ここで、キュー単位の処理とは、例えば、QoS(Quality of Service)等に対応する処理とする。
図9は、第3振分管理テーブルのデータ構造の一例を示す図である。同図に示すように、この第3振分管理テーブルは、振分参照情報と、CPUを識別するCPU識別番号とを備える。ここで、振分参照情報は、L5〜L7ヘッダ情報(Cookie等)と、演算器群140aのCPU141a〜142aのいずれかの処理結果あるいは演算器群140bのCPU141b〜145bのいずれかの処理結果とを含んだ情報である。
なお、CPU識別番号「C30001」は、CPU141cに対応し、CPU識別番号「C30002」は、CPU142cに対応し、CPU識別番号「C30003」は、CPU143cに対応する。
図9によれば、CPU選択部130cは、制御データの付加情報にCookie=「Cookie1」、処理結果=「処理結果A」の情報が含まれていれば、第3段階の処理をCPU141cに振り分け、制御データの付加情報にCookie=「Cookie2」、処理結果=「処理結果B」の情報が含まれていれば、第3段階の処理をCPU142cに振り分け、制御データの付加情報にCookie=「Cookie3」、処理結果=「処理結果C」の情報が含まれていれば、第3段階の処理をCPU143cに振り分ける。
このように、CPU選択部130cは、制御データの付加情報のみを参照することによって、第3段階の処理をどのCPUに振り分けるのかを判定することが出来るので、再度制御データの各ヘッダ情報から必要な情報を抽出する(または、演算器群140a、140bから処理結果を取得する処理を実行する)必要がなくなり、振分処理にかかる負荷が大幅に低減される。
なお、第3振分管理テーブルによって振り分けられる第3段階の処理は、演算器群140cのCPU141c〜143c間で排他制御が行われないように、設定されているものとする。例えば、CPU選択部130cは、L5〜L7ヘッダ情報および処理結果と、かかるL5〜L7ヘッダ情報および処理結果によってCPUが利用する共有資源の情報との組み合わせの情報を予め保持しており、かかる組み合わせの情報を基にして、各CPU間で排他制御が行われないように、第3振分管理テーブルを生成する。
すなわち、図9において、振分参照情報(Cookie=「Cookie1」、処理結果=「処理結果A」)によって処理を実行するCPUが利用する共有資源と、振分参照情報(Cookie=「Cookie2」、処理結果=「処理結果B」)によって処理を実行するCPUが利用する共有資源と、振分参照情報(Cookie=「Cookie3」、処理結果=「処理結果C」)によって処理を実行するCPUが利用する共有資源はそれぞれ異なる。
演算器群140cは、CPU141c〜143cと、キューポリシー管理テーブル格納部144cとを備え、第3段階の処理(キュー単位の処理)を実行する。このうち、キューポリシー管理テーブル格納部144cは、キューポリシー管理テーブルを格納する記憶手段である。
キューポリシー管理テーブルは、振分参照情報とポリシーとを対応付けて記憶するテーブルである。図10は、キューポリシー管理テーブルのデータ構造の一例を示す図である。例えば、図10に示す例では、Cookie=「Cookie1」、処理結果=「処理結果A」を付加情報に有する制御データを受信したCPUは、ポリシー「ポリシーC1」にしたがって処理を実行する。
CPU141c〜143cは、CPU選択部130cから制御データを取得した場合に、取得した制御データに含まれるL5〜L7ヘッダ情報および処理結果と、キューポリシー管理テーブルとを比較してポリシーを判定し、判定したポリシーにしたがって、処理を実行する手段である。
なお、CPU141c〜143cは、演算器群140cの後段に、CPU選択部(図示略)が接続されている場合には、後段のCPU選択部がCPU選択に必要となる情報を制御データから抽出し、抽出したデータを付加情報に格納した後に、CPU選択部に出力する。
上述してきたように、本実施例にかかるネットワーク処理装置100は、CPU選択部130aが制御データを受信した場合に、演算器群140aのいずれかのCPUに第1段階の処理を振り分ける。そして、第1段階の処理を振り分けられたCPUは、第1段階の処理を実行すると共に、CPU選択部130bの利用する付加情報を生成し、生成した付加情報を制御データに格納してCPU選択部130bに出力し、CPU選択部130bが付加情報に基づいて演算器群140bのいずれかのCPUに第2段階の処理を振り分けるので、CPU選択部130bは、再度、単体で、パケットの各ヘッダ情報から必要な情報を抽出する必要がなくなり、振分処理にかかる負荷が大幅に低減されるので、ネットワーク処理装置100の性能を向上させることができる。
ますます多機能化、高機能化するネットワーク処理装置において、処理性能向上を実現するためには、マルチコアCPUや複数のCPUを使用して並列処理を行うことが現実的な解決策ではあるが、単純に並列処理を行うだけでは性能向上を望めない。それに対して、本アーキテクチャを使用したネットワーク処理装置100においては、各機能を機能ベース単位に機能群として分類し、機能群毎に多段に振り分け、必要性能にあわせて並列処理を実行することで、CPU間の排他制御の問題を解決し、かつ並列処理において性能ネックとなる振り分け処理の問題も、前段の並列処理段階で分散して識別処理を行うことで、性能ネックを解決可能である。
さらに、新たな機能拡張に対しても、機能ベース(ポリシー)を意識して該当するCPUにマッピングし、かつ必要性能に合わせてCPUの並列度を上げれば性能拡張まで可能であり、従って今後の高機能・高性能化に対しても問題なく対応できるアーキテクチャとなっている。
ところで、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図2に示したネットワーク処理装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部がCPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
図11は、本実施例にかかるネットワーク処理装置100を構成するコンピュータ200のハードウェア構成を示す図(一例)である。図11に示すように、このコンピュータ(L2スイッチ)200は、入力装置201、モニタ202、RAM(Random Access Memory)203、ROM(Read Only Memory)204、記憶媒体からデータを読み取る媒体読取装置205、他の装置との間でデータの送受信を行う通信装置206、CPU(Central Processing Unit)207,208、CPU選択装置(CPU)209、HDD(Hard Disk Drive)210をバス211で接続して構成される。なお、ここでは、一例として、CPU207,208のみを示すが、コンピュータ200は、その他のCPUも保持しているものとする。
そして、HDD210には、上記したネットワーク処理装置100の機能と同様の機能を発揮する選択プログラム210b、制御データ生成プログラム210cが記憶されている。CPU選択装置209が、選択プログラム210bを読み出して実行することにより、選択プロセス209aが起動される。ここで、選択プロセス209aは、図2に示した、CPU選択部130a,130b,130cに対応する。
また、CPU207が、制御データ生成プログラム210cを読み出して実行することにより、制御データ生成プロセス207aが起動される。ここで、制御データ生成プロセス207aは、演算器群140a,140b,140cのCPUが実行する処理に対応する。同様に、CPU208が、制御データ生成プログラム210cを読み出して実行することにより、制御データ生成プロセス208aが起動される。ここで、制御データ生成プロセス208aは、演算器群140a,140b,140cのCPUが実行する処理に対応する。
また、HDD210は、第1振分管理テーブル、第2振分管理テーブル、第3振分管理テーブル、コネクションポリシー管理テーブル、コンテンツポリシー管理テーブル、キューポリシー管理テーブルに対応する各種データ210aを記憶する。CPU207,208、CPU選択装置209は、HDD210に格納された各種データ210aを読み出して、RAM203に格納し、RAM203に格納された各種データ203aを利用して、CPU選択装置209は、CPU207,208に処理を振り分け、CPU207,208は、付加情報を生成して、各種データ203aに格納する。
ところで、図11に示した選択プログラム210b、制御データ生成プログラム210cは、必ずしも最初からHDD210に記憶させておく必要はない。たとえば、コンピュータに挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータの内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される「他のコンピュータ(またはサーバ)」などに選択プログラム210b、制御データ生成プログラム210cを記憶しておき、コンピュータがこれらから選択プログラム210b、制御データ生成プログラム210cを読み出して実行するようにしてもよい。
上記の実施例を含む実施形態に関し、以下の付記を開示する。
(付記1)ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、
前記ネットワーク処理装置は、前記パケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを有し、
前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手段と、
前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、
前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手段と、
を備えたことを特徴とするネットワーク処理装置。
(付記2)前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする付記1に記載のネットワーク処理装置。
(付記3)前記演算器は、当該演算器の機能によって前記第1段階演算器群あるいは前記第2段階演算器群に割り当てられていることを特徴とする付記1または2に記載のネットワーク処理装置。
(付記4)受信したパケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを備えたコンピュータに、
前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手順と、
前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、
前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手順と、
を実行させることを特徴とするネットワーク処理プログラム。
(付記5)前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする付記4に記載のネットワーク処理プログラム。
(付記6)前記演算器は、当該演算器の機能によって前記第1段階演算器群あるいは前記第2段階演算器群に割り当てられていることを特徴とする付記4または5に記載のネットワーク処理プログラム。
以上のように、本発明にかかるネットワーク処理装置およびネットワーク処理プログラムは、ネットワーク上でデータを伝送するネットワーク処理装置等に有用であり、特に、処理を安定して高速化する必要がある場合に適している。
本実施例にかかるネットワーク処理装置の概要および特徴を説明するための図である。 本実施例にかかるネットワーク処理装置の構成を示す機能ブロック図である。 パケットのデータ構造の一例を示す図である。 制御データのデータ構造の一例を示す図である。 第1振分管理テーブルのデータ構造の一例を示す図である。 コネクションポリシー管理テーブルのデータ構造の一例を示す図である。 第2振分管理テーブルのデータ構造の一例を示す図である。 コンテンツポリシー管理テーブルのデータ構造の一例を示す図である。 第3振分管理テーブルのデータ構造の一例を示す図である。 キューポリシー管理テーブルのデータ構造の一例を示す図である。 本実施例にかかるネットワーク処理装置を構成するコンピュータのハードウェア構成を示す図である。 第1の方式を説明するための図である。 第2の方式を説明するための図である。
符号の説明
41,42,51,52,53,141a,142a,141b,142b,143b,144b,145b,141c,142c,143c,207,208 CPU
40 第1段階演算器群
50 第2段階演算器群
60a,60b,130a,130b,130c CPU選択部
100 ネットワーク処理装置
110 パケット格納部
120 通信制御IF部
135a 第1振分管理テーブル格納部
135b 第2振分管理テーブル格納部
135c 第3振分管理テーブル格納部
140a,140b,140c 演算器群
143a コネクションポリシー管理テーブル格納部
146b コンテンツポリシー管理テーブル格納部
144c キューポリシー管理テーブル格納部
200 コンピュータ
201 入力装置
202 モニタ
203 ROM
203a,210a 各種データ
204 RAM
205 媒体読取装置
206 通信装置
207a,208a 制御データ生成プロセス
209 CPU選択装置
209a 選択プロセス
210 HDD
210b 選択プログラム
210c 制御データ生成プログラム
211 バス

Claims (5)

  1. ネットワークを介してパケットを受信した場合に、複数の演算器によって処理を行うネットワーク処理装置であって、
    前記ネットワーク処理装置は、前記パケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを有し、
    前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手段と、
    前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手段と、
    前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手段と、
    を備えたことを特徴とするネットワーク処理装置。
  2. 前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする請求項1に記載のネットワーク処理装置。
  3. 前記演算器は、当該演算器の機能によって前記第1段階演算器群あるいは前記第2段階演算器群に割り当てられていることを特徴とする請求項1または2に記載のネットワーク処理装置。
  4. 受信したパケットに対して第1段階の処理を行う演算器を複数備えた第1段階演算器群と、前記第1段階の処理に続いて行われる第2段階の処理を行う演算器を複数備えた第2段階演算器群とを備えたコンピュータに、
    前記第1段階演算器群のいずれかの演算器に前記パケットに対する第1段階の処理を振り分ける第1振分手順と、
    前記第1段階演算器群のいずれかの演算器が前記第1段階の処理を実行した場合に、前記第2段階の処理を前記第2段階演算器群のいずれの演算器に振り分けるのかを判定するための制御情報を生成する制御情報生成手順と、
    前記制御情報に基づいて、前記第2段階演算器群のいずれの演算器に前記パケットに対する第2段階の処理を振り分けるのかを判定する第2振分手順と、
    を実行させることを特徴とするネットワーク処理プログラム。
  5. 前記制御情報は、前記パケットの各レイヤに対応したヘッダの情報であることを特徴とする請求項4に記載のネットワーク処理プログラム。
JP2008041550A 2008-02-22 2008-02-22 ネットワーク処理装置およびネットワーク処理プログラム Pending JP2009199433A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008041550A JP2009199433A (ja) 2008-02-22 2008-02-22 ネットワーク処理装置およびネットワーク処理プログラム
US12/388,310 US20090216829A1 (en) 2008-02-22 2009-02-18 Network equipment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008041550A JP2009199433A (ja) 2008-02-22 2008-02-22 ネットワーク処理装置およびネットワーク処理プログラム

Publications (1)

Publication Number Publication Date
JP2009199433A true JP2009199433A (ja) 2009-09-03

Family

ID=40999364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008041550A Pending JP2009199433A (ja) 2008-02-22 2008-02-22 ネットワーク処理装置およびネットワーク処理プログラム

Country Status (2)

Country Link
US (1) US20090216829A1 (ja)
JP (1) JP2009199433A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612611B2 (en) 2010-02-03 2013-12-17 Nec Corporation Proxy apparatus and operation method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628333B2 (en) * 2013-12-04 2017-04-18 International Business Machines Corporation Operating a dual chipset network interface controller (‘NIC’) that includes a high performance media access control chipset and a low performance media access control chipset
JP7512780B2 (ja) * 2020-09-07 2024-07-09 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04129399A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd マルチプロセッサの負荷分散制御方式
JP2001136534A (ja) * 1999-11-10 2001-05-18 Victor Co Of Japan Ltd ディジタル画像信号処理方法及びディジタル画像信号処理装置
JP2004112159A (ja) * 2002-09-17 2004-04-08 Oki Electric Ind Co Ltd ルーティング処理装置及びパケット種類識別装置
JP2004282729A (ja) * 2003-02-25 2004-10-07 Hitachi Ltd ネットワーク中継装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0329005B1 (de) * 1988-02-19 1993-11-03 Siemens Aktiengesellschaft Verfahren zum Einrichten von über Koppelvielfache einer mehrstufigen Koppelanordnung verlaufenden virtuellen Verbindungen
JP2002259352A (ja) * 2001-03-01 2002-09-13 Handotai Rikougaku Kenkyu Center:Kk マルチプロセッサシステム装置
US7483374B2 (en) * 2003-08-05 2009-01-27 Scalent Systems, Inc. Method and apparatus for achieving dynamic capacity and high availability in multi-stage data networks using adaptive flow-based routing
US7809009B2 (en) * 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US7813337B2 (en) * 2007-01-19 2010-10-12 Broadcom Corporation Network packet processing using multi-stage classification
US7715428B2 (en) * 2007-01-31 2010-05-11 International Business Machines Corporation Multicore communication processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04129399A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd マルチプロセッサの負荷分散制御方式
JP2001136534A (ja) * 1999-11-10 2001-05-18 Victor Co Of Japan Ltd ディジタル画像信号処理方法及びディジタル画像信号処理装置
JP2004112159A (ja) * 2002-09-17 2004-04-08 Oki Electric Ind Co Ltd ルーティング処理装置及びパケット種類識別装置
JP2004282729A (ja) * 2003-02-25 2004-10-07 Hitachi Ltd ネットワーク中継装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612611B2 (en) 2010-02-03 2013-12-17 Nec Corporation Proxy apparatus and operation method thereof

Also Published As

Publication number Publication date
US20090216829A1 (en) 2009-08-27

Similar Documents

Publication Publication Date Title
EP2676411B1 (en) Method and system for classification and management of inter-blade network traffic in a blade server
JP5601601B2 (ja) 通信制御システム、スイッチノード、及び通信制御方法
US10754686B2 (en) Method and electronic device for application migration
US20100036903A1 (en) Distributed load balancer
US9350825B2 (en) Optimizing network communications
US20140321462A1 (en) Scalable and efficient flow-aware packet distribution
US9110694B2 (en) Data flow affinity for heterogenous virtual machines
US11838206B2 (en) Edge node with datapath split between pods
US8121120B2 (en) Packet relay apparatus
US20250097102A1 (en) Scaling for split-networking datapath
US11343176B2 (en) Interconnect address based QoS regulation
US10742559B2 (en) Eliminating data traffic redirection in scalable clusters
US20050169309A1 (en) System and method for vertical perimeter protection
EP2568690A1 (en) Method for binding physical network ports, network card and communication system
US20170310583A1 (en) Segment routing for load balancing
US20190044799A1 (en) Technologies for hot-swapping a legacy appliance with a network functions virtualization appliance
US11811685B1 (en) Selective packet processing including a run-to-completion packet processing data plane
CN118301055A (zh) 一种报文转发方法、装置、电子设备及存储介质
US20190044871A1 (en) Technologies for managing single-producer and single consumer rings
JP2009199433A (ja) ネットワーク処理装置およびネットワーク処理プログラム
US20160191457A1 (en) Overprovisioning floating ip addresses to provide stateful ecmp for traffic groups
US20180159775A1 (en) Offloading at a virtual switch in a load-balanced group
JP2011091711A (ja) ノード及び送信フレーム振り分け方法並びにプログラム
US20070294707A1 (en) Enhancing or replacing host operating system functionality by leveraging guest operating system functionality
EP3343879A1 (en) A system and method of managing flow state in stateful applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120319

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121030

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121106

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130111