JP2004350188A - データ転送装置及びプログラム - Google Patents
データ転送装置及びプログラム Download PDFInfo
- Publication number
- JP2004350188A JP2004350188A JP2003147438A JP2003147438A JP2004350188A JP 2004350188 A JP2004350188 A JP 2004350188A JP 2003147438 A JP2003147438 A JP 2003147438A JP 2003147438 A JP2003147438 A JP 2003147438A JP 2004350188 A JP2004350188 A JP 2004350188A
- Authority
- JP
- Japan
- Prior art keywords
- general
- session
- packet
- purpose processor
- session management
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/06—Deflection routing, e.g. hot-potato routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/58—Association of routers
- H04L45/586—Association of routers of virtual routers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【解決手段】任意のCPUに引き渡すパケットを受信した時、受信側セッション管理部3−4は、セッション管理テーブル3−5に、上記パケットが属するセッションのセッション特定情報と対応付けて引き渡し先にするCPUの識別子が登録されていなければ、汎用プロセッサ選択部3−6が選択したCPUの識別子を上記セッション特定情報と対応付けて登録すると共に、上記CPUにパケットを引き渡す。その後、上記セッションに属するパケットを受信した場合は、セッション管理テーブル3−5に、上記セッションのセッション特定情報と対応付けて引き渡し先にするCPUの識別子が登録されているので、上記識別子のCPUにパケットが引き渡される。
【選択図】 図3
Description
【発明の属する技術分野】
本発明は、パケットを中継、終端するデータ転送装置に関し、特に、ネットワークプロセッサと複数の汎用プロセッサとを備えたデータ転送装置において、同じセッションに属するパケットは常に同じ汎用プロセッサで処理されるようにするセッション管理技術に関する。
【0002】
【従来の技術】
従来から、データ転送装置においては、セッション管理テーブルの内容に基づいて同一セッションに属するパケットを同一出力先に出力する等のセッション管理を行なっている(例えば、特許文献1参照)。ところで、このようなデータ転送装置の実現方法としては種々の方法が考えられるが、例えば、ネットワークプロセッサと汎用プロセッサの2種類のプロセッサを使用する方法が考えられる。
ネットワークプロセッサ、汎用プロセッサはそれぞれ次のような特徴を有する。
【0003】
ネットワークプロセッサは、高速なパケット転送処理をソフトウェアによって実装できるため、ASIC等の専用のハードウェアと比較して高い柔軟性を持つ。しかし、プログラムメモリの容量が少ないことや低級言語によるプログラミングのため、複雑な処理の実装が困難である。例えば以下のような処理が問題となる。
【0004】
(a)レイヤー3のパケット転送においてパケットヘッダの中にオプション情報を含む場合、オプションの解析および処理の実装が必要となる。これらを実装することはプログラムメモリを圧迫する。
【0005】
(b)セッション単位のフィルタリングを必要とする場合、各パケットに対する処理が過去に受信したパケットの処理結果に依存する。これを実装するためにはセッションごとの状態管理が必要となり、ネットワークプロセッサのプログラムメモリ、検索用メモリ、処理時間を圧迫する。
【0006】
(c)本装置においてアプリケーションレイヤによる処理を必要とする場合、一連のパケットをレイヤー4(セッション層)のプロトコルで終端する必要がある。これらの処理を実装することはプログラムメモリ及びデータメモリを圧迫する。
【0007】
一方、汎用プロセッサは、ネットワークプロセッサに比べて処理速度が大きく劣るが、十分なメモリ容量を持ち、また、汎用のオペレーティングシステムが動作することから、高級言語を用いて複雑な機能を実装することが容易である。また、汎用プロセッサ上で動作する多くのオペレーティングシステムは、TCP/IPのプロトコル処理を実装し、更に、フィルタリング、アドレス変換、暗号化等の機能を実装するものも存在する。また、各種オペレーティングシステム上で動作する多くのアプリケーションソフトウェアが利用できる。
【0008】
そこで、TCP/IPを処理するデータ転送装置の構成として、レイヤ3以下の単純なパケット転送処理をネットワークプロセッサ上に実装し、オプション処理及びレイヤ4(セッション層)以上の複雑な処理を汎用プロセッサ上に実装することが考えられる。但し、ネットワークプロセッサに比べて汎用プロセッサの処理速度は大きく劣るため、1つの装置内に複数の汎用プロセッサを搭載し、負荷分散を行なうことで性能を向上させる。
【0009】
【特許文献1】
特開2002−359637号公報
【0010】
【発明が解決しようとする課題】
上記したように、1つのデータ転送装置内に複数の汎用プロセッサを搭載し、負荷分散を行なうことで性能を向上させると、以下の課題が発生する。
【0011】
IPパケット転送では、同じセッションに属するパケットの追い越しを防ぐことが望ましい。そのため、同じセッションに属するパケットは常に同じ汎用プロセッサで処理させる必要がある。同じセッションに属するパケットを複数の汎用プロセッサで別々に処理すれば、パケットの追い越しが頻繁に発生する。
【0012】
セッション単位のフィルタリングでは、セッションの状態管理を伴うため、同じセッションに属するパケットは同じ汎用プロセッサで処理させる必要がある。
【0013】
1つの汎用プロセッサが終端するセッションに属するパケットは全て、同じ汎用プロセッサで処理させる必要がある。アプリケーションゲートウェイ機能はTCPのセッションを終端するため、この課題を解決する必要がある。
【0014】
そこで、本発明は、TCP/IPに関するデータ転送装置において、複数の汎用プロセッサを用いて負荷分散する場合に、ネットワークプロセッサによって、同じセッションに属するパケットを常に同じ汎用プロセッサへ転送することを可能とする。
【0015】
【課題を解決するための手段】
本発明のデータ転送装置は、上記目的を達成するため、
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段を備えたことを特徴とする。
【0016】
より具体的には、本発明のデータ転送装置は、
複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブルと、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部とを備えたことを特徴とする。
【0017】
また、本発明のデータ転送装置は、セッション管理テーブルのエントリ数を少なくするため、
複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置において、
前記各ネットワークプロセッサが、それぞれ、
複数のセッション管理エントリを有するセッション管理テーブルと、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部と、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部とを備えたことを特徴とする。
【0018】
また、本発明のデータ転送装置は、特定の汎用プロセッサでの処理が必要になるパケットを該当する汎用プロセッサに引き渡すため、
前記複数の汎用プロセッサの内の特定の汎用プロセッサによる処理が必要なパケットを受信したとき、該受信したパケットを前記特定の汎用プロセッサに引き渡す受信側パケット処理部を備えたことを特徴とする。
【0019】
また、本発明のデータ転送装置は、セッション管理エントリの有効、無効を管理するため、
前記セッション管理テーブルの各セッション管理エントリは、エージカウンタを備え、且つ、
前記各セッション管理エントリのエージカウンタを、一定時間毎に一定値ずつ更新するエージング部を備え、且つ、
前記受信側セッション管理部が、エージカウンタの値に基づいてセッション管理エントリが有効であるか否かを判定する構成を有すると共に、セッション管理エントリに引き渡し先情報を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有し、
前記送信側セッション管理部が、セッション管理エントリに引き渡し先情報を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有することを特徴とする。
【0020】
また、本発明のデータ転送装置における汎用プロセッサ選択部としては、
前記複数の汎用プロセッサの内の最も負荷の低い汎用プロセッサを選択する構成、予め定められている順番に従って前記複数の汎用プロセッサの内の1つを選択する構成、もしくは、自ネットワークプロセッサと同一ボード上の汎用プロセッサを優先的に選択する構成を有するものを採用することができる。
【0021】
【作用】
任意の汎用プロセッサによる処理を必要とするパケットを受信したとき、受信側セッション管理部は、セッション管理テーブルに、上記パケットが属するセッションのセッション特定情報と対応付けてパケットの引き渡し先にする汎用プロセッサの識別子が登録されていなければ、汎用プロセッサ選択部によって選択された汎用プロセッサの識別子を、上記セッション特定情報と対応付けてセッション管理テーブルに登録すると共に、選択された汎用プロセッサにパケットを引き渡す。このような処理は、セッションに属する最初のパケットの受信時等において行われる。その後、上記セッションに属するパケットを受信した場合には、セッション管理テーブルに、上記セッションのセッション特定情報と対応付けてパケットの引き渡し先にする汎用プロセッサの識別子が登録されているので、受信側セッション管理部は、登録されている識別子によって示される汎用プロセッサにパケットを引き渡す。従って、同一セッションに属するパケットは、常に同一汎用プロセッサに引き渡すことが可能になる。
【0022】
また、本発明では、セッション管理テーブルのエントリ数を少なくするため、ハッシュ関数を利用している。即ち、パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号(ハッシュ値)に、上記パケットの送信側あるいは受信側ネットワークプロセッサの識別子を付加することにより得られるエントリ番号を、上記パケットが属するセッション用のセッション番号としているので、セッション管理テーブルのエントリ数を少なくすることができる。また、ハッシュ値をそのままエントリ番号とするのではなく、ハッシュ値に送信側あるいは受信側ネットワークプロセッサの識別子を付加したものをエントリ番号としているので、異なるセッションに同一エントリ番号が付与される危険性を極めて低くすることができる。
【0023】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【0024】
・全体構成
本発明が対象とするTCP/IPに関するデータ転送装置は、IPパケット転送、フィルタリング、アドレス変換、アプリケーションゲートウェイ等のデータ転送機能を有し、ネットワークプロセッサと、同一のソフトウェアを実装する複数の汎用プロセッサから構成される。
【0025】
図1は本発明の実施例のブロック図であり、本発明が対象とするデータ転送装置1の全体構成と、本装置1を用いて構成されたネットワークの接続例を示す。データ転送装置1は、複数の汎用プロセッサCPU1、CPU2、CPU3と、複数のネットワーウプロセッサNP4、NP5、NP6と、物理回線インタフェースIF41、IF42、IF51、IF52、IF61、IF62とから構成される。
【0026】
データ転送装置1内の全ての汎用プロセッサCPU1〜CPU3及びネットワークプロセッサNP4〜NP6には、データ転送装置1内で固有のデバイス番号が割り当てられる。本実施例では、汎用プロセッサCPU1、CPU2、CPU3にそれぞれデバイス番号1、2、3を割り当て、ネットワークプロセッサNP4、NP5、NP6にそれぞれデバイス番号4、5、6を割り当てるものとする。
【0027】
同様に、ネットワークプロセッサNP4、NP5、NP6が収容する物理回線インタフェースIF41〜IF62には、データ転送装置1内で固有の回線番号が割り当てられる。本実施例では、物理回線インタフェースIF41、IF42、IF51、IF52、IF61、IF62にそれぞれ回線番号41、42、51、52、61、62を割り当てるものとする。また、各物理回線インタフェースIF41〜IF62には、汎用プロセッサの個数+1個(図1では4個)のIPアドレスを割り当てる。
【0028】
ネットワークプロセッサNP4は、ネットワークN1、N2を介してホストコンピュータ(ホスト)H41、H42と接続され、ネットワークプロセッサNP5は、ネットワークN3、N4を介してホストH51、H52と接続され、ネットワークプロセッサNP6は、ネットワークN5、N6を介してホストH61、H62と接続されている。
【0029】
・汎用プロセッサ
汎用プロセッサCPU1、CPU2、CPU3は、TCP/IPに関する各種データ転送機能を有する。具体的には、IPパケットルーティング、セッションフィルタリング、アドレス変換、各種アプリケーションゲートウェイ等が挙げられる。これらの機能はソフトウェアによって実装されるものとする。これらの機能を提供するために汎用プロセッサCPU1〜CPU3上に実装されるソフトウェアの構成例を図2に示す。
【0030】
本実施例では、アプリケーション処理部2−1−1〜2−1−3とプロトコル処理部2−2は既存のソフトウェアモジュールを流用し、装置内インタフェース処理部2−4のみ新規に実装する。
【0031】
アプリケーション処理部2−1−1、2−1−2、2−1−3は、IPネットワークに接続された他のホストとの間でTCPまたはUDPのセッションを用いて双方向のデータ通信を行なう。アプリケーションゲートウェイ機能は、アプリケーション処理部2−1−1、2−1−2、2−1−3に実装される。
【0032】
プロトコル処理部2−2は、アプリケーション処理部2−1−1、2−1−2、2−1−3に対してTCP、UDPセッションの終端機能を提供する。また、本データ転送装置1が終端しないIPパケットに対してはルーティングテーブル2−3の設定に従いIPパケット転送を行なう。これらの機能に加え、セッション単位のフィルタリング機能、アドレス変換機能、IPSecVPNなどを提供する場合もある。
【0033】
ルーティングテーブル2−3は、複数のルーティングエントリから構成され、1つのルーティングエントリは、宛先IPアドレスの集合に対して、送信側回線の識別子(回線番号)、次の転送先ノードのIPアドレス等を格納する。ルーティングテーブル2−3の内容は、ユーザまたはアプリケーション処理部2−1−1、2−1−2、2−1−3から設定される。
【0034】
装置内インタフェース処理部2−4は、プロトコル処理部2−2に対し物理回線へのパケットの送受信機能を提供する。具体的には、プロトコル処理部2−2と装置内インタフェースとの間でデータ構造の変換等を行なう。
【0035】
・ネットワークプロセッサ
ネットワークプロセッサNP4、NP5、NP6は、複数の物理回線インタフェースを収容し、物理回線へのパケットの送受信、及び、ルーティングテーブルの設定に基づくIPパケット転送機能を持つ。これに加え、汎用プロセッサCPU1〜CPU3の処理を必要とするパケットに対し、同一のセッションに属するパケットを常に同一の汎用プロセッサへ転送するよう、セッションの管理を行なう。これらの機能は、主にソフトウェアによって実装される。
【0036】
図3は、本実施例においてネットワークプロセッサNP4〜NP6上に実装されるソフトウェア構成を示す。
【0037】
ネットワークプロセッサNP4〜NP6のソフトゥエアは、回線インタフェース処理部3−1、受信側パケット処理部3−2、ルーティングテーブル3−3、受信側セッション管理部3−4、セッション管理テーブル3−5、汎用プロセッサ選択部3−6、装置内インタフェース処理部3−7、送信側セッション管理部3−8、送信側パケット処理部3−9、及び、エージング部3−10から構成される。言い換えれば、ネットワークプロセッサNP4〜NP6は、記録媒体(ディスク、半導体メモリ、その他のメモリ)に記録された、上記各部3−1〜3−10を実現するためのプログラムを読み込み、読み込んだプログラムに従って自ネットワークプロセッサNP4〜NP6の動作を制御することにより、自ネットワークプロセッサNP4〜NP6に上記各部3−1〜3−10を実現する。
【0038】
回線インタフェース処理部3−1は、物理回線インタフェースに対しパケットの送受信を行なう。即ち、物理回線から受信した信号からパケットを抽出し、パケットと受信回線番号を受信側パケット処理部3−2へ引き渡す。また、送信側パケット処理部3−9から引き渡されたパケットを送信回線番号で指定された物理回線へ送出する。
【0039】
受信側パケット処理部3−2は、図4のフローチャートに従い、回線インタフェース処理部3−1からパケットを引き取り、各種パケット処理を行ない、ルーティングテーブル3−3から宛て先IPアドレスに対応する送信側デバイス番号と送信回線番号を転送情報として取得し、それらの結果に基づいて装置内インタフェース処理部3−7または受信側セッション管理部3−4へパケットとその転送情報を引き渡す。
【0040】
ルーティングテーブル3−3は、複数のルーティングエントリから構成される。各ルーティングエントリには、宛先IPアドレスの集合、送信側デバイス番号、送信回線番号が格納される。送信側デバイス番号には、特定のネットワークプロセッサまたは汎用プロセッサを示すデバイス番号、または、任意の汎用プロセッサを示す値として0が格納される。図11は、ルーティングテーブル3−3の設定例を示す。
【0041】
受信側セッション管理部3−4は、図5のフローチャートに従い、任意の汎用プロセッサへ転送する必要のあるパケットとその転送情報とを受信側パケット処理部3−2からを引き取り、セッション管理テーブル3−5、汎用プロセッサ選択部3−6を用いて転送先の汎用プロセッサを決定し、セッション管理テーブル3−5のエントリを更新し、装置内インタフェース処理部3−7へパケットとその転送情報を引き渡す。その処理において、図7のフローチャートに示す計算方法により、パケットヘッダの各種情報からセッション番号を計算する。図7の計算方法は、同一セッションに属するパケットを常に同一のセッション番号に対応付ける。セッション番号と送信側デバイス番号から、セッション管理テーブル3−5のエントリ番号を決定する。
【0042】
セッション管理テーブル3−5は、エントリ番号をアドレスとする複数のセッション管理エントリから構成される。セッション管理エントリは、転送先デバイス番号、及び、エージカウンタから構成される。転送先デバイス番号には、パケットの転送先となる汎用プロセッサのデバイス番号が格納される。エージカウンタが0のとき、そのエントリは無効であることを示す。エージカウンタが0以外のとき、そのエントリは有効であることを示す。エージカウンタは、受信側セッション管理部3−4または送信側セッション管理部3−8によって最大値(全ビットを1)に設定され、エージング部3−10によって、一定時間ごとに1ずつ減少され、0になったらそのエントリに格納されたデバイス番号が無効になる。図11に、セッション管理テーブル3−5の内容例を示す。
【0043】
汎用プロセッサ選択部3−6は、新しいセッションに次に割り当てるべき汎用プロセッサを選択し、そのデバイス番号を受信側セッション管理部3−4へ通知する。例えば、その時点で最も負荷の低い汎用プロセッサを選択する方式、複数の汎用プロセッサを順に選択する方式などがある。また、装置内の構成により、受信側ネットワークプロセッサまたは送信側ネットワークプロセッサと同じボード上に実装された汎用プロセッサの中から選択する方式も考えられる。
【0044】
装置内インタフェース処理部3−7は、図8のフローチャートに従い、受信側パケット処理部3−2または受信側セッション管理部3−4からパケットとその転送情報を引き取り、転送先デバイス番号に基づき、送信側パケット処理部3−9、または、他のネットワークプロセッサの装置内インタフェース処理部3−7、または、汎用プロセッサの装置内インタフェース処理部2−4へパケットとその転送情報を引き渡す。
【0045】
また、装置内インタフェース処理部3−7は、図9のフローチャートに従い、他のネットワークプロセッサまたは汎用プロセッサからパケットとその転送情報を引き取り、転送元デバイス番号に基づき、送信側セッション管理部3−8、または、送信側パケット処理部3−9へパケットと転送情報を引き渡す。
【0046】
送信側セッション管理部3−8は、図6のフローチャートに従い、装置内インタフェース部3−7からパケットとその転送情報を引き取り、セッション管理テーブル3−5を更新し、パケットと送信回線番号を送信側パケット処理部3−9へ引き渡す。受信側セッション管理部3−4と同様に、図7のフローチャートの計算により、パケットヘッダ情報からセッション番号を計算し、セッション番号と受信側デバイス番号からセッション管理テーブル3−5のエントリ番号を決定する。
【0047】
送信側パケット処理部3−9は、装置内インタフェース処理部3−7または送信側セッション管理部3−8からパケットと送信回線番号を引き取り、パケット転送情報の内容に従い必要な処理を行ない、それらを回線インタフェース処理部3−1へ引き渡す。
【0048】
・設定内容
図1のネットワーク構成例において、汎用プロセッサCPU1〜CPU3のプロトコル処理部2−2に設定するIPアドレスを図10に示す。
【0049】
汎用プロセッサCPU1、CPU2、CPU3は、各物理回線インタフェースに対して同一のサブネットに属する2種類のIPアドレスを割り当てる。プライマリIPアドレスは、データ転送装置1が要求元ホストとなるセッションにおいて使用される。セカンダリIPアドレスは、データ転送装置1が要求先ホストとなるセッションにおいて本装置1の代表IPアドレスとして使用される。プライマリIPアドレスは、汎用プロセッサごとに異なる値を設定し、セカンダリIPアドレスは、全ての汎用プロセッサで同じ値を設定する。従って、各物理回線インタフェースには、汎用プロセッサの個数+1個のIPアドレスを割り当てることになる。
【0050】
図1のネットワーク構成例において、ネットワークプロセッサNP4〜NP6のルーティングテーブル3−3に設定される内容を図11に示す。
【0051】
宛先IPアドレスが192.41.*.*〜192.62.*.*のエントリは、IPパケット転送のためのルーティングエントリであり、送信側デバイス番号は、ネットワークプロセッサを示す値(4、5、6)となる。これらのルーティングエントリは、汎用プロセッサCPU1、CPU2、CPU3のルーティングテーブル2−3に設定される内容と同一である。それ以外のエントリは、本データ転送装置1宛てのパケットを汎用プロセッサへ転送するためのルーティングエントリである。
【0052】
送信側デバイス番号が1、2、3のエントリは、特定の汎用プロセッサへ転送することを示しており、このルーティングエントリの宛先IPアドレスは、汎用プロセッサに設定したプライマリIPアドレスに一致する。
【0053】
送信側デバイス番号が0のエントリは、任意の汎用プロセッサへ転送することを示しており、これらのルーティングエントリの宛先IPアドレスは、汎用プロセッサに設定したセカンダリIPアドレスに一致する。また、これらの送信側デバイス番号が0のエントリにマッチしたパケットは、ネットワークプロセッサの受信側セッション管理部3−4及び汎用プロセッサ選択部3−6の処理によって転送先の汎用プロセッサが決定される。
【0054】
【実施例の動作の説明】
次に本実施例の動作について詳細に説明する。以下の説明では、次のことを仮定する。
【0055】
図7のフローチャートの中のハッシュ関数は、引数A1、A2、A3、A4の和の下位8ビットを返すものとする。セッション管理テーブル3−5のエントリ番号は12ビット幅とし、図5、図6のフローチャートにおいて、エントリ番号の上位8ビットにセッション番号を設定し、下位4ビットに送信側デバイス番号または受信側デバイス番号を設定するものとする。ネットワークプロセッサNP4、NP5、NP6の受信側パケット処理部3−2は、ここで説明する全ての受信パケットについて、汎用プロセッサによる処理が必要であると判定し、全てのパケットを受信側セッション管理部3−4へ引き渡すものとする。
【0056】
・セッションS1順方向
図12は、図1のネットワークにおいて、ホストH41とホストH51の間で確立されたTCPセッションS1(セッションS1)、及び、ホストH42とホストH61の間で確立されたTCPセッションS2(セッションS2)を示す。
【0057】
最初に、セッションS1について、動作を説明する。セッションS1では、要求元ホストH41、要求先ホストH51の間で、要求元IPアドレス192.41.1.1、要求元ポート5632、要求先IPアドレス192.51.1.1、要求先ポート25を用いてTCPによるデータ転送が行なわれるものとする。
【0058】
最初に、ホストH41は、ホストH51へ向けて、送信元IPアドレス192.41.1.1、宛先IPアドレス192.51.1.1、送信元ポート5632、宛先ポート25を持つIPパケットを送信する。このパケットは、ネットワークN1を経由してデータ転送装置1のネットワークプロセッサNP4へ配送される。
【0059】
ネットワークプロセッサNP4の回線インタフェース処理部3−1は、物理回線インタフェースIF41からこのパケットを受信し、このパケットと受信回線番号41を受信側パケット処理部3−2へ引き渡す。
【0060】
受信側パケット処理部3−2は、図4のフローチャートに示すように、パケットと受信回線番号41を引き取ると、各種パケット処理を行う(A1、A2)。その後、受信側パケット処理部3−2は、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.51.1.1に対応する送信側デバイス番号5と送信回線番号51を取得する(A3)。受信側パケット処理部3−2は、ステップA3で取得したのが送信側デバイス番号5であることから、引き取ったパケットを特定のネットワークプロセッサNP5に引き渡す必要があると判定する(A4)。更に、ステップA5においては、パケットヘッダ部のオプションフィールドの内容に基づいて、汎用プロセッサによる処理が必要であるか否かを判断する。この例の場合、上述の仮定から汎用プロセッサによる処理が必要であると判定し、このパケットと受信回線番号41、送信側デバイス番号5を受信側セッション管理部3−4へ引き渡す(A5、A8)。なお、汎用プロセッサによる処理が不要であると判定した場合は、ステップA6、A7の処理を行なう。
【0061】
受信側セッション管理部3−4は、このパケットの送信元IPアドレス192.41.1.1、宛先IPアドレス192.51.1.1、送信元ポート5632、宛先ポート25から図7のフローチャートに従いセッション番号を計算する(図5のB1、B2)。上述の仮定により、ハッシュ関数が各引数の和の下位8ビットを返すものとすると、セッション番号0x1Bが計算から得られる。更に、上述の仮定により、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを送信側デバイス番号とすると、エントリ番号0x1B5が得られる(B3)。ここで、図7のフローチャートについて説明しておく。先ず、引数A1〜A4を次のように決定する(D1)。引数A1を送信元IPアドレス、宛先IPアドレスの内の小さい方とし、引数A2を送信元IPアドレス、宛先IPアドレスの内の大きい方とする。また、引数A3,A4を0とする。その後、パケット種別を判定し(D2、D3、…)、パケット種別に応じた引数A3、A4を決定する(D4、D5、…)。この例の場合、パケット種別はTCPであるので、ステップD4の処理が行われ、送信元ポート、宛先ポートの内の小さい方が引数A3とされ、大きい方が引数A4とされる。そして、最後に、ハッシュ関数と引数A1〜A4とを用いてセッション番号を計算する(D6)。
【0062】
再び図5に戻り、受信側セッション管理部3−4は、エントリ番号0x1B5を求めると、セッション管理エントリへのアクセス権を獲得した後、セッション管理テーブル3−5の0x1B5のエントリからエージカウンタを読み出す(B4、B5)。エージカウンタは初期値0であることから、本エントリは無効である(B6)。そこで、汎用プロセッサ選択部3−6を利用して転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号1、即ち汎用プロセッサCPU1が選択されるものとする。次に、このデバイス番号1をセッション管理テーブル3−5の0x1B5番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする(B7、B9)。エージカウンタの値は、エージング部3−10によって、一定時間ごとに1ずつ減少される。
【0063】
その後、受信側セッション管理部3−4は、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号41、転送先デバイス番号1を装置内インタフェース処理部3−7へ引き渡す(B10、B11)。
【0064】
装置内インタフェース処理部3−7は、パケットと受信回線番号41、受信側デバイス番号としてこのネットワークプロセッサNP4のデバイス番号4を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU1の装置内インタフェース処理部2−4へ引き渡す(図8のE1〜E3、E5)。なお、この例では、転送先デバイス番号1が汎用プロセッサを示すものであるので、ステップE5の処理が行なわれるが、もし、転送先デバイス番号が自ネットワークプロセッサNP4を示すものである場合には、ステップE4の処理を行い、他のネットワークプロセッサを示すものである場合は、ステップE6、E7の処理を行なう。ステップE4では、送信側パケット処理部3−9へパケットと送信回線番号を引き渡す処理を行なう。ステップE6では、受信側デバイス番号を転送元デバイス番号とする処理を行い、次のステップE7では、転送先デバイス番号で示されるネットワークプロセッサの装置内インタフェース部3−7へ、パケット、送信回線番号、転送元デバイス番号、受信側デバイス番号を引き渡す処理を行なう。
【0065】
汎用プロセッサCPU1の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号4、受信回線番号41をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0066】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.51.1.1に対応する送信回線IF51の識別子51及びデバイス番号5を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0067】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、受信側デバイス番号4、送信回線番号51を取得し、自汎用プロセッサCPU1のデバイス番号1を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP5の装置内インタフェース処理部3−7へ引き渡す。
【0068】
ネットワークプロセッサNP5の装置内インタフェース処理部3−7は、図9のフローチャートに示すように、引き取ったパケットと送信回線番号51、受信側デバイス番号4、転送元デバイス番号1を送信側セッション管理部3−8へ引き渡す(F1〜F4)。即ち、転送元デバイス番号1が汎用プロセッサCPU1に対応し(F2)、受信側デバイス番号4が0でないので(F3)、装置内インタフェース処理部3−7は、ステップF4の処理を行うことになる。
【0069】
送信側セッション管理部3−8は、図6のフローチャートに示すように、装置内インタフェース処理部3−7からパケット、受信側デバイス番号4及び転送元デバイス番号1を引き取ると、図7のフローチャートに従い、パケットの送信元IPアドレス192.41.1.1、宛先IPアドレス192.51.1.1、送信元ポート5632、宛先ポート25からセッション番号0x1Bを求める(C1、C2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを受信側デバイス番号とし、エントリ番号0x1B4を求める(C3)。
【0070】
次に、送信側セッション管理部3−8は、セッション管理エントリへのアクセス権を取得し、装置内インタフェース処理部3−7から引き取った転送元デバイス番号1を、セッション管理テーブル3−5の0x1B4番目のエントリの転送先デバイス番号へ書き込む(C4、C5)。同時に、同エントリのエージカウンタに最大値を設定し、このエントリを有効にする(C6)。
【0071】
その後、送信側セッション管理部3−8は、セッション管理エントリへのアクセス権を返却し、最後に、パケットと送信回線番号51を送信側パケット処理部3−9へ引き渡す(C7、C8)。
【0072】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号51を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF51へ送信する。物理回線インタフェースIF51から送信されたパケットは、ネットワークN3を経由して、ホストH51へ配送される。
【0073】
・セッションS1逆方向
次に、ホストH51は、ホストH41へ向けて、送信元IPアドレス192.51.1.1、宛先IPアドレス192.41.1.1、送信元ポート25、宛先ポート5632を持つIPパケットを送信する。このパケットは、ネットワークN3を経由してデータ転送装置1のネットワークプロセッサNP5へ配送される。
【0074】
ネットワークプロセッサNP5の回線インタフェース処理部3−1は、物理回線インタフェースIF51からこのパケットを受信し、このパケットと受信回線番号51を受信側パケット処理部3−2へ引き渡す。
【0075】
受信側パケット処理部3−2は、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.41.1.1に対応する送信側デバイス番号4と送信回線番号41を取得する(図4のA1〜A3)。受信側パケット処理部3−2は、このパケットは特定のネットワークプロセッサNP4に引き渡すことが必要であり、且つ汎用プロセッサによる処理が必要であると判定し(A4、A5)、このパケットと受信回線番号51、送信側デバイス番号4を受信側セッション管理部3−4へ引き渡す(A8)。
【0076】
受信側セッション管理部3−4は、このパケットの送信元IPアドレス192.51.1.1、宛先IPアドレス192.41.1.1、送信元ポート25、宛先ポート5632から図7のフローチャートに従いセッション番号0x1Bを求める(図5のB1、B2)。このセッション番号0x1Bは、前述したセッションS1順方向時に求めたセッション番号と同一値となる。即ち、図7のステップD1において、送信元IPアドレス、宛先IPアドレスの内の小さい方、大きい方をそれぞれ引数A1、A2とし、ステップD4において送信元ポート、宛先ポートの内の小さい方、大きい方をそれぞれ引数A3、A4としているので、セッションS1順方向時とでは送信元、宛先が入れ代わったセッションS1逆方向時においても、同一のセッション番号0x1Bが得られる。その後、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを送信側デバイス番号とし、エントリ番号0x1B4が得られる(B3)。
【0077】
次に、受信側セッション管理部3−4は、セッション管理テーブル3−5の0x1B4番目のエントリを読み出す(B4、B5)。先にホストH41からホストH51へ転送されたパケットにより、このエントリには転送先デバイス番号1が書き込まれており、エージカウンタには0以外の値が格納されているため、この転送先デバイス番号1を使用する(B6、B8)。
【0078】
その後、受信側セッション管理部3−4は、エージカウンタに最大値を設定し、セッション管理エントリへのアクセス権を返却する(B9、B10)。そして、最後に受信側セッション管理部3−4は、このパケットと受信回線番号51、転送先デバイス番号1を装置内インタフェース処理部3−7へ引き渡す(B11)。
【0079】
装置内インタフェース処理部3−7は、パケットと受信回線番号51、受信側デバイス番号としてこのネットワークプロセッサNP5のデバイス番号5を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU1の装置内インタフェース処理部2−4へ引き渡す(図8、E1〜E3、E5)。
【0080】
汎用プロセッサCPU1の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号5、受信回線番号51をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0081】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.41.1.1に対応する送信回線IF41の識別子41及びデバイス番号4を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0082】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、受信側デバイス番号5、送信回線番号41を取得し、自汎用プロセッサCPU1のデバイス番号1を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP4の装置内インタフェース処理部3−7へ引き渡す。
【0083】
ネットワークプロセッサNP4の装置内インタフェース処理部3−7は、図9のフローチャートに示すように、引き取ったパケットと送信回線番号41、受信側デバイス番号5、転送元デバイス番号1を送信側セッション管理部3−8へ引き渡す(F1〜F4)。
【0084】
送信側セッション管理部3−8は、図6のフローチャートに示すように、パケットの送信元IPアドレス192.51.1.1、宛先IPアドレス192.41.1.1、送信元ポート25、宛先ポート5632からセッション番号0x1Bを求める(C1、C2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを受信側デバイス番号とし、エントリ番号0x1B5を求める(C3)。
【0085】
次に、送信側セッション管理部3−8は、装置内インタフェース処理部3−7から引き取った転送元デバイス番号1を、セッション管理テーブル3−5の0x1B5番目のエントリの転送先デバイス番号へ書き込み(C4、C5)、同時に、同エントリのエージカウンタに最大値を設定する(C6)。そして、最後に、パケットと送信回線番号41を送信側パケット処理部3−9へ引き渡す(C7、C8)。
【0086】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号41を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF41へ送信する。物理回線インタフェースIF41から送信されたパケットは、ネットワークN1を経由して、ホストH41へ配送される。
【0087】
この時点で、ネットワークプロセッサNP4のセッション管理テーブルの0x1B5番目のエントリと、ネットワークプロセッサNP5のセッション管理テーブルの0x1B4番目のエントリには、共に、転送先デバイス番号1が書き込まれている。これらのエントリが有効の間(即ちエージカウンタが0以外の間)、ホストH41とホストH51の間で転送されるセッションS1に属するパケットは全て、汎用プロセッサCPU1を経由する。なお、本セッションのパケットの転送が一定時間停止すると、エージング部3−10によってセッション管理テーブル3−5のエージングカウンタが0にされ、エントリが無効になる。この場合、再び同一セッションのパケットが転送されても、受信側セッション管理部3−4によって新たに転送先の汎用プロセッサが選択される。
【0088】
次に、セッションS2について、本発明の動作を説明する。
【0089】
・セッションS2順方向
セッションS2では、要求元ホストH42と要求先ホストH61の間で、要求元IPアドレス192.42.1.1、要求元ポート1753、要求先IPアドレス192.61.1.1、要求先ポート110を用いてTCPによるデータ転送が行なわれるものとする。
【0090】
最初に、ホストH42は、ホストH61へ向けて、送信元IPアドレス192.42.1.1、宛先IPアドレス192.61.1.1、送信元ポート1753、宛先ポート110を持つIPパケットを送信する。このパケットは、ネットワークN2を経由してデータ転送装置1のネットワークプロセッサNP4へ配送される。
【0091】
ネットワークプロセッサNP4の回線インタフェース処理部3−1は、物理回線インタフェースIF42からこのパケットを受信し、このパケットと受信回線番号42を受信側パケット処理部3−2へ引き渡す。
【0092】
受信側パケット処理部3−2は、図4のフローチャートに示すように、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.61.1.1に対応する送信側デバイス番号6と送信回線番号61を取得する。(A1〜A3)。
受信側パケット処理部3−2は、このパケットは特定のネットワークプロセッサNP6に引き渡すことが必要であり、且つ汎用プロセッサによる処理が必要であると判定し(A4、A5)、このパケットと受信回線番号42、送信側デバイス番号6を受信側セッション管理部3−4へ引き渡す(A8)。
【0093】
受信側セッション管理部3−4は、図5のフローチャートに示すように、このパケットの送信元IPアドレス192.42.1.1、宛先IPアドレス192.61.1.1、送信元ポート1753、宛先ポート110からセッション番号0x49を求める(B1、B2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを送信側デバイス番号とし、エントリ番号0x496を求める(B3)。
【0094】
次に、受信側セッション管理部3−4は、セッション管理テーブル3−5の0x496番目のエントリを読み出す(B4、B5)。エージカウンタは初期値0であることから、本エントリは無効である(B6)。そこで、汎用プロセッサ選択部3−6から転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号3、即ち汎用プロセッサCPU3が選択されるものとする。次に、このデバイス番号3をセッション管理テーブル3−6の0x496番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする(B7、B9)。その後、受信側セッション管理部3−4は、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号42、転送先デバイス番号3を装置内インタフェース処理部3−7へ引き渡す(B10、B11)。
【0095】
装置内インタフェース処理部3−7は、図8のフローチャートに示すように、パケットと受信回線番号42、受信側デバイス番号として自ネットワークプロセッサNP4のデバイス番号4を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU3の装置内インタフェース処理部2−4へ引き渡す(E1〜E3、E5)。
【0096】
汎用プロセッサCPU3の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号4、受信回線番号42をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0097】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.61.1.1に対応する送信回線IF61の識別子61及びデバイス番号6を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0098】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、受信側デバイス番号4、送信回線番号61を取得し、自汎用プロセッサCPU3のデバイス番号3を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP6の装置内インタフェース処理部3−7へ引き渡す。
【0099】
ネットワークプロセッサNP6の装置内インタフェース処理部3−7は、図9のフローチャートに示すように、引き取ったパケットと送信回線番号61、受信側デバイス番号4、転送元デバイス番号3を送信側セッション管理部3−8へ引き渡す(F1〜F4)。
【0100】
送信側セッション管理部3−8は、図6のフローチャートに示すように、図7のフローチャートに従い、パケットの送信元IPアドレス192.42.1.1、宛先IPアドレス192.61.1.1、送信元ポート1753、宛先ポート110からセッション番号0x49を求める(C1、C2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを受信側デバイス番号とし、エントリ番号0x494を求める(C3)。
【0101】
次に、送信側セッション管理部3−8は、装置内インタフェース処理部3−7から引き取った転送元デバイス番号3を、セッション管理テーブル3−5の0x494番目のエントリの転送先デバイス番号へ書き込む(C4、C5)。同時に、同エントリのエージカウンタに最大値を設定し、このエントリを有効にする(C6)。そして、最後に、パケットと送信回線番号61を送信側パケット処理部3−9へ引き渡す(C7、C8)。
【0102】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号61を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF61へ送信する。物理回線インタフェースIF61から送信されたパケットは、ネットワークN5を経由して、ホストH61へ配送される。
【0103】
・セッションS2逆方向
次に、ホストH61は、ホストH42へ向けて、送信元IPアドレス192.61.1.1、宛先IPアドレス192.42.1.1、送信元ポート110、宛先ポート1753を持つIPパケットを送信する。このパケットは、ネットワークN5を経由してデータ転送装置1のネットワークプロセッサNP6へ配送される。
【0104】
ネットワークプロセッサNP6の回線インタフェース処理部3−1は、物理回線インタフェースIF61からこのパケットを受信し、このパケットと受信回線番号61を受信側パケット処理部3−2へ引き渡す。
【0105】
受信側パケット処理部3−2は、図4のフローチャートに示すように、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.42.1.1に対応する送信側デバイス番号4と送信回線番号42を取得する(A1〜A3)。受信側パケット処理部3−2は、このパケットは特定のネットワークプロセッサNP4に受け渡す必要があり、且つ汎用プロセッサによる処理が必要であると判定し(A4、A5)、このパケットと受信回線番号61、送信側デバイス番号4を受信側セッション管理部3−4へ引き渡す(A8)。
【0106】
受信側セッション管理部3−4は、図5のフローチャートに示すように、このパケットの送信元IPアドレス192.61.1.1、宛先IPアドレス192.42.1.1、送信元ポート110、宛先ポート1753から図7のフローチャートに従いセッション番号0x49を求める(B1、B2)。セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを送信側デバイス番号とし、エントリ番号0x494が得られる(B3)。
【0107】
次に、受信側セッション管理部3−4は、セッション管理テーブル3−5の0x494番目のエントリを読み出す(B4、B5)。先にホストH42からホストH61へ転送されたパケットにより、このエントリには転送先デバイス番号3が書き込まれており、エージカウンタは0以外の値が格納されているため、この転送先デバイス番号3を取得する(B6、B8)。その後、セッション管理エントリへのアクセス権を返却し、最後に、このパケットと受信回線番号61、転送先デバイス番号3を装置内インタフェース処理部3−7へ引き渡す。
【0108】
装置内インタフェース処理部3−7は、パケットと受信回線番号61、受信側デバイス番号としてこのネットワークプロセッサNP6のデバイス番号6を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU3の装置内インタフェース処理部2−4へ引き渡す(図8のE1〜E3、E5)。
【0109】
汎用プロセッサCPU3の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号6、受信回線番号61をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0110】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.42.1.1に対応する送信回線IF42の識別子42及びデバイス番号4を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0111】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、受信側デバイス番号6、送信回線番号42を取得し、自汎用プロセッサCPU3のデバイス番号3を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP4の装置内インタフェース処理部3−7へ引き渡す。
【0112】
ネットワークプロセッサNP4の装置内インタフェース処理部3−7は、引き取ったパケットと送信回線番号42、受信側デバイス番号6、転送元デバイス番号3を送信側セッション管理部3−8へ引き渡す(図9のF1〜F4)。
【0113】
送信側セッション管理部3−8は、図7のフローチャートに従い、パケットの送信元IPアドレス192.61.1.1、宛先IPアドレス192.42.1.1、送信元ポート110、宛先ポート1753からセッション番号0x49を求める(図6のC1、C2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを受信側デバイス番号とし、エントリ番号0x496を求める(C3)。
【0114】
次に、送信側セッション管理部3−8は、装置内インタフェース処理部3−7から引き取った転送元デバイス番号3を、セッション管理テーブル3−5の0x496番目のエントリの転送先デバイス番号へ書き込み、同時に、同エントリのエージカウンタに最大値を設定する(C4〜C6)。そして、最後に、送信側セッション管理部3−8は、パケットと送信回線番号42を送信側パケット処理部3−9へ引き渡す(C7、C8)。
【0115】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号42を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF42へ送信する。物理回線インタフェースIF42から送信されたパケットは、ネットワークN2を経由して、ホストH42へ配送される。
【0116】
この時点で、ネットワークプロセッサNP4のセッション管理テーブル3−5の0x496番目のエントリと、ネットワークプロセッサNP6のセッション管理テーブル3−5の0x494番目のエントリには、共に、転送先デバイス番号3が書き込まれている。これらのエントリが有効の間(即ちエージカウンタが0以外の間)、ホストH42とホストH61の間で転送されるセッションS2に属するパケットは全て、汎用プロセッサCPU3を経由する。なお、本セッションのパケットの転送が一定時間停止すると、エージング部3−10によってセッション管理テーブルのエージングカウンタが0にされ、エントリが無効になる。この場合、再び同一セッションのパケットが転送されても、受信側セッション管理部3−4によって新たに転送先の汎用プロセッサが選択される。
【0117】
・セッションS3順方向
図13は、図1のネットワークにおいて、ホストH52と汎用プロセッサCPU2の間で確立されたTCPセッションS3、及び、汎用プロセッサCPU2とホストH62の間で確立されたTCPセッションS4を示す。これらのセッションは、データ転送装置1をアプリケーションゲートウェイとして使用し、ホストH52とホストH62の間でデータ転送を行なった場合を想定している。
【0118】
最初に、セッションS3について、動作を説明する。
【0119】
セッションS3では、要求元ホストH52とデータ転送装置1の間で、要求元IPアドレス192.52.1.1、要求元ポート1959、要求先IPアドレス192.52.0.4、要求先ポート8080を用いてTCPによるデータ転送が行なわれるものとする。
【0120】
最初に、ホストH52は、データ転送装置1へ向けて、送信元IPアドレス192.52.1.1、宛先IPアドレス192.52.0.4、送信元ポート1959、宛先ポート8080を持つIPパケットを送信する。このパケットは、ネットワークN4を経由してデータ転送装置1のネットワークプロセッサNP5へ配送される。なお、上記宛先IPアドレス192.52.0.4は、セカンダリIPアドレスである。
【0121】
ネットワークプロセッサNP5の回線インタフェース処理部3−1は、物理回線インタフェースIF52からこのパケットを受信し、このパケットと受信回線番号52を受信側パケット処理部3−2へ引き渡す。
【0122】
受信側パケット処理部3−2は、図4のフローチャートに示すように、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.52.0.4に対応する送信側デバイス番号0を取得する(A1〜A3)。送信側デバイス番号0は、任意の汎用プロセッサ宛てのパケットであることをから、このパケットと、受信回線番号52及び送信側デバイス番号0とを受信側セッション管理部3−4へ引き渡す(A4、A8)。
【0123】
受信側セッション管理部3−4は、このパケットの送信元IPアドレス192.52.1.1、宛先IPアドレス192.52.0.4、送信元ポート1959、宛先ポート8080から図7のフローチャートに従いセッション番号0x3Cを求める(図5のB1、B2)。次に、セッション管理テーブル3−5のエントリ番号の上位8ビットをセッション番号、下位4ビットを送信側デバイス番号とし、エントリ番号0x3C0を求める(B2)。
【0124】
次に、受信側セッション管理部3−4は、セッション管理テーブル3−5の0x3C0番目のエントリを読み出す(B4、B5)。エージカウンタは初期値0であることから、本エントリは無効である。そこで、汎用プロセッサ選択部3−6から転送先となる汎用プロセッサのデバイス番号を取得する。ここでは、デバイス番号2、即ち汎用プロセッサCPU2が選択されるものとする。次に、このデバイス番号2をセッション管理テーブル3−6の0x3C0番目のエントリに書き込み、同時に、エージカウンタを最大値に設定し、このエントリを有効にする(B6〜B9)。そして、最後に、受信側セッション管理部3−4は、このパケットと受信回線番号52、転送先デバイス番号2を装置内インタフェース処理部3−7へ引き渡す(B10、B11)。
【0125】
装置内インタフェース処理部3−7は、図8のフローチャートに示すように、パケットと受信回線番号52、受信側デバイス番号としてこのネットワークプロセッサNP5のデバイス番号5を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU2の装置内インタフェース処理部2−4へ引き渡す(E1〜E3、E5)。
【0126】
汎用プロセッサCPU2の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号5、受信回線番号52をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0127】
プロトコル処理部2−2は、このパケットの宛先IPアドレス192.52.0.4がこの汎用プロセッサCPU2に設定された物理回線インタフェースIF52のセカンダリIPアドレスに一致することから、TCPを終端し、宛先ポート番号8080に対応するアプリケーション処理部(例えば、アプリケーション処理部2−1−1)へデータを引き渡す。
【0128】
・セッションS3逆方向
次に、汎用プロセッサCPU2のアプリケーション処理部2−1−1は、セッションS1順方向で、ホストH52から送られてきたパケットに対する応答として、送信元IPアドレス192.52.0.4、宛先IPアドレス192.52.1.1、送信元ポート8080、宛先ポート1959を用いてホストH52へ向けてデータを送信する。
【0129】
プロトコル処理部2−2は、アプリケーション処理部2−1−1から受け渡されたデータから、送信元IPアドレス192.52.0.4、宛先IPアドレス192.52.1.1、送信元ポート8080、宛先ポート1959を持つTCP/IPパケットを生成する。
【0130】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.52.1.1に対応する送信回線IF52の識別子52及びデバイス番号5を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0131】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、送信回線番号52を取得し、受信側デバイス番号を0とし、この汎用プロセッサCPU2のデバイス番号2を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP5の装置内インタフェース処理部3−7へ引き渡す。
【0132】
ネットワークプロセッサNP5の装置内インタフェース処理部3−7は、受信側デバイス番号が0であることから、引き取ったパケットと送信回線番号52を送信側パケット処理部3−9へ引き渡す(図9のF1〜F3、F5)。
【0133】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号52を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF52へ送信する。物理回線インタフェースIF52から送信されたパケットは、ネットワークN4を経由して、ホストH52へ配送される。
【0134】
この時点で、ネットワークプロセッサNP5のセッション管理テーブル3−5の0x3C0番目のエントリには、転送先デバイス番号2が書き込まれている。このエントリが有効の間(即ちエージカウンタが0以外の間)、ホストH52から送信されるセッションS3に属するパケットは全て、汎用プロセッサCPU2へ配送される。
【0135】
・セッションS4順方向
次に、セッションS4について、動作を説明する。
【0136】
汎用プロセッサCPU2のアプリケーション処理部(例えば、アプリケーション処理部2−1−1)は、送信元IPアドレス192.62.0.2、宛先IPアドレス192.62.1.1、送信元ポート6709、宛先ポート80を用いてホストH62へ向けてデータを送信する。
ここで、送信元IPアドレス192.62.0.2は、この汎用プロセッサCPU2において物理回線インタフェースIF62に設定されたプライマリIPアドレスである。
【0137】
プロトコル処理部2−2は、アプリケーション処理部2−1−1から受け渡されたデータから、送信元IPアドレス192.62.0.2、宛先IPアドレス192.62.1.1、送信元ポート6709、宛先ポート80を持つTCP/IPパケットを生成する。
【0138】
プロトコル処理部2−2は、このパケットに対し各種処理を行ない、ルーティングテーブル2−3より宛先IPアドレス192.62.1.1に対応する送信回線IF62の識別子62及びデバイス番号6を取得し、これらの情報を装置内インタフェース処理部2−4へ引き渡す。
【0139】
装置内インタフェース処理部2−4は、プロトコル処理部2−2から渡されたデータ構造から、送信回線番号62を取得し、受信側デバイス番号を0とし、この汎用プロセッサCPU2のデバイス番号2を転送元デバイス番号とし、これらの情報とともにパケットをネットワークプロセッサNP6の装置内インタフェース処理部3−7へ引き渡す。
【0140】
ネットワークプロセッサNP6の装置内インタフェース処理部3−7は、受信側デバイス番号が0であることから、引き取ったパケットと送信回線番号62を送信側パケット処理部3−9へ引き渡す(図9のF1〜F3、F5)。
【0141】
送信側パケット処理部3−9は、パケット転送に関する処理を行なった後、回線インタフェース処理部3−1へパケットと送信回線番号62を引き渡す。回線インタフェース処理部3−1は、このパケットを物理回線インタフェースIF62へ送信する。物理回線インタフェースIF62から送信されたパケットは、ネットワークN6を経由して、ホストH62へ配送される。
【0142】
・セッションS4逆方向
次に、ホストH62は、セッションS4順方向で、データ転送装置1から送られてきたパケットに対する応答として、データ転送装置1へ向けて、送信元IPアドレス192.62.1.1、宛先IPアドレス192.62.0.2、送信元ポート80、宛先ポート6709を持つIPパケットを送信する。このパケットは、ネットワークN6を経由してデータ転送装置1のネットワークプロセッサNP6へ配送される。
【0143】
ネットワークプロセッサNP6の回線インタフェース処理部3−1は、物理回線インタフェースIF62からこのパケットを受信し、このパケットと受信回線番号62を受信側パケット処理部3−2へ引き渡す。
【0144】
受信側パケット処理部3−2は、ルーティングテーブル3−3(図11参照)から、パケットの宛先IPアドレス192.62.0.2に対応する送信側デバイス番号2を取得する(図4のA1〜A3)。これは、特定の汎用プロセッサCPU2へ転送するパケットであることから、転送先デバイス番号に送信側デバイス番号2を設定し、パケットと受信回線番号62、転送先デバイス番号2を装置内インタフェース処理部3−7へ引き渡す(A4、A6、A7)。
【0145】
装置内インタフェース処理部3−7は、パケットと受信回線番号62、受信側デバイス番号として自ネットワークプロセッサNP6のデバイス番号6を、装置内インタフェースを介して、転送先デバイスである汎用プロセッサCPU2の装置内インタフェース処理部2−4へ引き渡す(図8、E1〜E3、E5)。
【0146】
汎用プロセッサCPU2の装置内インタフェース処理部2−4は、引き取ったパケットと受信側デバイス番号6、受信回線番号62をプロトコル処理部2−2で規定されるデータ構造へ格納し、プロトコル処理部2−2へ引き渡す。
【0147】
プロトコル処理部2−2は、このパケットの宛先IPアドレス192.62.0.2がこの汎用プロセッサCPU2に設定された物理回線インタフェースIF62のプライマリIPアドレスに一致することから、TCPを終端し、宛先ポート番号6709対応するアプリケーション処理部へデータを引き渡す。
【0148】
セッションS4では、セッション管理テーブル3−5を使用しないが、IPアドレスが特定の汎用プロセッサCPU2を示すことから、ホストH62から送信される本セッションに属するパケットは全て、汎用プロセッサCPU2へ配送される。
【0149】
以上で説明したセッションS1、S2、S3、S4が全てが使用されているとき、ネットワークプロセッサNP4、NP5、NP6におけるセッション管理テーブル3−3の内容を図14に示す。但し、エージカウンタの値は常時変動するため、この限りではない。
【0150】
なお、上述した実施例においては、セッションを特定するセッション特定情報として、パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号(ハッシュ値)に、上記パケットの送信側あるいは受信側ネットワークプロセッサのデバイス番号を付加することにより得られるエントリ番号を使用するようにしたが、これに限られるものではない。
【0151】
また、上述した実施例では、ネットワークプロセッサの台数を複数台としたが、1台であっても良い。なお、ネットワークプロセッサの台数を1台とした場合には、受信側セッション管理部3−4が行なう処理、送信側セッション管理部3−8が行なう処理を次のように変更しても良い。
【0152】
(受信側セッション管理部3−4側の変更点)
・図5のステップB3において、ステップB2で計算したセッション番号をそのままエントリ番号とする。
【0153】
(送信側セッション管理部3−8側の変更点)
・図6のステップC3において、ステップC2で計算したセッション番号をそのままエントリ番号とする。
・図6のステップC5の処理を削除する。
【0154】
【発明の効果】
第1の効果は、同じセッションに属するパケットを同じ汎用プロセッサで処理させるので、パケットの追い越しを防止することが可能になるという点である。
【0155】
第2の効果は、セッション単位のフィルタリングにおいて、同じセッションに属するパケットを常に同じ汎用プロセッサで処理させるので、フィルタリングルールの動的な変更を行なうための状態管理を正しく機能させることが可能になるという点である。例えば、或るセッションに属する第1番目のパケット(開始フラグを含むパケット)が第1の汎用プロセッサに引き渡され、上記第1番目のパケットに対する応答パケットが第2の汎用プロセッサに引き渡され、第2の汎用プロセッサにおいて第2番目のパケットを破棄してしまうという事態の発生を防ぐことができる。
【0156】
第3の効果は、アプリケーションゲートウェイにおいて、本発明のデータ転送装置が終端する同じセッションに属するパケットを常に同じ汎用プロセッサで処理させるので、セッションを正しく機能させることが可能になるという点である。
【0157】
第4の効果は、パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とから求まるセッション番号(ハッシュ値)に、上記パケットの送信側あるいは受信側ネットワークプロセッサの識別子を付加することにより得られるエントリ番号を、上記パケットが属するセッション用のセッション番号としているので、エントリ管理テーブルのエントリ数を少なくすることができ、且つ、異なるセッションに同一エントリ番号が付与される危険性を極めて少なくできるという点である。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】汎用プロセッサCPU1〜CPU3の構成例を示すブロック図である。
【図3】ネットワークプロセッサNP4〜NP6の構成例を示すブロック図である。
【図4】受信側パケット処理部3−2の処理例を示すフローチャートである。
【図5】受信側セッション管理部3−4の処理例を示すフローチャートである。
【図6】送信側セッション管理部3−8の処理例を示すフローチャートである。
【図7】セッション番号の計算方法の一例を示すフローチャートである。
【図8】受信側パケット処理部3−2、受信側セッション管理部3−4からパケットが渡されたときの装置内インタフェース処理部3−7の処理例を示すフローチャートである。
【図9】汎用プロセッサCPU1〜CPU3からパケットが渡されたときの装置内インタフェース処理部3−7の処理例を示すフローチャートである。
【図10】汎用プロセッサCPU1〜CPU3におけるIPアドレスの設定内容の一例を示す図である。
【図11】ネットワークプロセッサNP4〜NP6内のルーティングテーブル3−3の内容例を示す図である。
【図12】動作を説明するために、セッションの具体例を挙げた図である。
【図13】動作を説明するために、セッションの他の具体例を挙げた図である。
【図14】ネットワークプロセッサNP4〜NP6内のセッション管理テーブル3−5の内容例を示す図である。
【符号の説明】
1…データ転送装置
CPU1〜CPU3…汎用プロセッサ
2−1−1〜2−1−3…アプリケーション処理部
2−2…プロトコル処理部
2−3…ルーティングテーブル
2−4…装置内インタフェース処理部
NP4〜NP6…ネットワークプロセッサ
3−1…回線インタフェース処理部
3−2…受信側パケット処理部
3−3…ルーティングテーブル
3−4…受信側セッション管理部
3−5…セッション管理テーブル
3−6…汎用プロセッサ選択部
3−7…装置内インタフェース処理部
3−8…送信側セッション管理部
3−9…送信側パケット処理部
N1〜N6…ネットワーク
H41〜H62…ホストコンピュータ
IF41〜IF62…物理回線インタフェース
Claims (9)
- 複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段を備えたことを特徴とするデータ転送装置。 - 複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置において、
前記ネットワークプロセッサが、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブルと、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部とを備えたことを特徴とするデータ転送装置。 - 複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置において、
前記各ネットワークプロセッサが、それぞれ、
複数のセッション管理エントリを有するセッション管理テーブルと、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部と、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部と、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部とを備えたことを特徴とするデータ転送装置。 - 請求項2または3記載のデータ転送装置において、
前記複数の汎用プロセッサの内の特定の汎用プロセッサによる処理が必要なパケットを受信したとき、該受信したパケットを前記特定の汎用プロセッサに引き渡す受信側パケット処理部を備えたことを特徴とするデータ転送装置。 - 請求項3記載のデータ転送装置において、
前記セッション管理テーブルの各セッション管理エントリは、エージカウンタを備え、且つ、
前記各セッション管理エントリのエージカウンタを、一定時間毎に一定値ずつ更新するエージング部を備え、且つ、
前記受信側セッション管理部が、エージカウンタの値に基づいてセッション管理エントリが有効であるか否かを判定する構成を有すると共に、セッション管理エントリに汎用プロセッサの識別子を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有し、
前記送信側セッション管理部が、セッション管理エントリに汎用プロセッサの識別子を登録する際、該セッション管理エントリのエージカウンタに所定値を設定する構成を有することを特徴とするデータ転送装置。 - 請求項2または3記載のデータ転送装置において、
前記汎用プロセッサ選択部が、
前記複数の汎用プロセッサの内の最も負荷の低い汎用プロセッサを選択する構成、予め定められている順番に従って前記複数の汎用プロセッサの内の1つを選択する構成、もしくは、自ネットワークプロセッサと同一ボード上の汎用プロセッサを優先的に選択する構成を有することを特徴とするデータ転送装置。 - 複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
受信したパケットの内の汎用プロセッサによる処理を必要とするパケットに関し、同一セッションに属するパケットは、同一汎用プロセッサに引き渡す手段として機能させるためのプログラム。 - 複数の汎用プロセッサと、ネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
セッションを特定するセッション特定情報に対応付けて、そのセッションに属するパケットの引き渡し先にする汎用プロセッサの識別子が登録されるセッション管理テーブル、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信した時、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されていない場合は、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を、前記パケットが属するセッションのセッション特定情報と対応付けて前記セッション管理テーブルに登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記セッション管理テーブルに、前記パケットが属するセッションのセッション特定情報と対応付けて汎用プロセッサの識別子が登録されている場合は、該登録されている識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部として機能させるためのプログラム。 - 複数の汎用プロセッサと、複数のネットワークプロセッサとを備えたデータ転送装置の構成要素であるネットワークプロセッサを、
複数のセッション管理エントリを有するセッション管理テーブル、
前記複数の汎用プロセッサの内の1つを選択する汎用プロセッサ選択部、
前記複数の汎用プロセッサの内の任意の汎用プロセッサによる処理が必要なパケットを受信したとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの送信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号に対応するセッション管理エントリが無効になっている場合は、該セッション管理エントリに、前記汎用プロセッサ選択部が選択した汎用プロセッサの識別子を登録すると共に、前記汎用プロセッサ選択部が選択した汎用プロセッサに前記パケットを引き渡し、前記求めたエントリ番号に対応するセッション管理エントリが有効になっている場合は、該セッション管理エントリに登録されている汎用プロセッサの識別子が示す汎用プロセッサに前記パケットを引き渡す受信側セッション管理部、
汎用プロセッサからパケットが引き渡されたとき、該パケットの送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポートとハッシュ関数とからセッション番号を求め、該求めたセッション番号に前記パケットの受信側ネットワークプロセッサの識別子を付加することによりエントリ番号を求め、前記セッション管理テーブル中の前記求めたエントリ番号と対応するセッション管理エントリに、前記汎用プロセッサの識別子を登録する送信側セッション管理部として機能させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003147438A JP4196732B2 (ja) | 2003-05-26 | 2003-05-26 | データ転送装置及びプログラム |
US10/852,238 US7532619B2 (en) | 2003-05-26 | 2004-05-25 | Packet transfer apparatus with multiple general-purpose processors |
EP20040012502 EP1482685A1 (en) | 2003-05-26 | 2004-05-26 | Packet transfer apparatus with multiple general-purpose processors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003147438A JP4196732B2 (ja) | 2003-05-26 | 2003-05-26 | データ転送装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004350188A true JP2004350188A (ja) | 2004-12-09 |
JP4196732B2 JP4196732B2 (ja) | 2008-12-17 |
Family
ID=33128194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003147438A Expired - Fee Related JP4196732B2 (ja) | 2003-05-26 | 2003-05-26 | データ転送装置及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US7532619B2 (ja) |
EP (1) | EP1482685A1 (ja) |
JP (1) | JP4196732B2 (ja) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007116405A (ja) * | 2005-10-20 | 2007-05-10 | Alaxala Networks Corp | 異常トラヒックの検出方法およびパケット中継装置 |
JP2008017160A (ja) * | 2006-07-06 | 2008-01-24 | Alaxala Networks Corp | パケット転送装置 |
JP2008131350A (ja) * | 2006-11-21 | 2008-06-05 | Nippon Telegr & Teleph Corp <Ntt> | パケット転送装置、パケット分配方法、パケットソート方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム |
US7509424B2 (en) | 2006-02-14 | 2009-03-24 | Fujitsu Limited | Load-balancing device and computer-readable recording medium in which load-balancing program is recorded |
JP2010166189A (ja) * | 2009-01-14 | 2010-07-29 | Nec Corp | Ip中継装置、通信システム及びそれらに用いるtcpフロー制御方法 |
WO2012132010A1 (ja) | 2011-03-31 | 2012-10-04 | 富士通株式会社 | ゲートウェイ装置、及びゲートウェイ選択方法 |
JP2013070423A (ja) * | 2007-11-29 | 2013-04-18 | A10 Networks Inc | 分散多重処理セキュリティゲートウエイのためのシステム及び方法 |
JP2013514691A (ja) * | 2009-12-17 | 2013-04-25 | アルカテル−ルーセント | 複数のデータを処理するための方法および通信パケットをスイッチングするためのスイッチングデバイス |
JP2013179429A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 振分先を切り替える並列パケット処理方法および装置 |
JP2014158143A (ja) * | 2013-02-15 | 2014-08-28 | Nippon Telegr & Teleph Corp <Ntt> | 負荷分散システム、負荷分散方法 |
JP2014179844A (ja) * | 2013-03-15 | 2014-09-25 | Nec Corp | パケット伝送装置、パケット伝送方法及びパケット伝送システム |
US9032502B1 (en) | 2006-08-08 | 2015-05-12 | A10 Networks, Inc. | System and method for distributed multi-processing security gateway |
US9118618B2 (en) | 2012-03-29 | 2015-08-25 | A10 Networks, Inc. | Hardware-based packet editor |
US9596286B2 (en) | 2012-05-25 | 2017-03-14 | A10 Networks, Inc. | Method to process HTTP header with hardware assistance |
US9806943B2 (en) | 2014-04-24 | 2017-10-31 | A10 Networks, Inc. | Enabling planned upgrade/downgrade of network devices without impacting network sessions |
US10021174B2 (en) | 2012-09-25 | 2018-07-10 | A10 Networks, Inc. | Distributing service sessions |
US10020979B1 (en) | 2014-03-25 | 2018-07-10 | A10 Networks, Inc. | Allocating resources in multi-core computing environments |
US10027761B2 (en) | 2013-05-03 | 2018-07-17 | A10 Networks, Inc. | Facilitating a secure 3 party network session by a network device |
US10491523B2 (en) | 2012-09-25 | 2019-11-26 | A10 Networks, Inc. | Load distribution in data networks |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984149B1 (en) * | 2004-08-04 | 2011-07-19 | Cisco Technology, Inc. | Method and apparatus for identifying a policy server |
US7840731B2 (en) | 2004-08-25 | 2010-11-23 | Cisco Technology, Inc. | Accelerated data switching on symmetric multiprocessor systems using port affinity |
WO2006117013A1 (en) * | 2005-05-04 | 2006-11-09 | Telecom Italia S.P.A. | Method and system for processing packet flows, and computer program product therefor |
US7584286B2 (en) | 2006-06-28 | 2009-09-01 | Intel Corporation | Flexible and extensible receive side scaling |
US7881297B2 (en) * | 2006-09-01 | 2011-02-01 | Avaya Inc. | Providing communications including an extended protocol header |
JP4880442B2 (ja) | 2006-12-26 | 2012-02-22 | Necインフロンティア株式会社 | 通信システム |
US8615008B2 (en) | 2007-07-11 | 2013-12-24 | Foundry Networks Llc | Duplicating network traffic through transparent VLAN flooding |
ES2434168T3 (es) * | 2007-12-17 | 2013-12-13 | Telefonaktiebolaget L M Ericsson (Publ) | Redundancia de nodo de red troncal móvil |
JP5516405B2 (ja) * | 2008-08-28 | 2014-06-11 | 日本電気株式会社 | サービス移動方法、移動管理サーバ、端末、サービスサーバ、サービス移動プログラム、サービス移動システム |
US8402084B2 (en) * | 2008-09-11 | 2013-03-19 | Intel Corporation | Host embedded controller interface bridge |
US9565138B2 (en) | 2013-12-20 | 2017-02-07 | Brocade Communications Systems, Inc. | Rule-based network traffic interception and distribution scheme |
US9648542B2 (en) * | 2014-01-28 | 2017-05-09 | Brocade Communications Systems, Inc. | Session-based packet routing for facilitating analytics |
EP3503479B1 (en) * | 2014-04-16 | 2020-09-23 | Huawei Technologies Co., Ltd. | Flow entry management method and device |
US10771475B2 (en) | 2015-03-23 | 2020-09-08 | Extreme Networks, Inc. | Techniques for exchanging control and configuration information in a network visibility system |
US10129088B2 (en) | 2015-06-17 | 2018-11-13 | Extreme Networks, Inc. | Configuration of rules in a network visibility system |
US10911353B2 (en) | 2015-06-17 | 2021-02-02 | Extreme Networks, Inc. | Architecture for a network visibility system |
US9866478B2 (en) | 2015-03-23 | 2018-01-09 | Extreme Networks, Inc. | Techniques for user-defined tagging of traffic in a network visibility system |
US10057126B2 (en) | 2015-06-17 | 2018-08-21 | Extreme Networks, Inc. | Configuration of a network visibility system |
US10530688B2 (en) | 2015-06-17 | 2020-01-07 | Extreme Networks, Inc. | Configuration of load-sharing components of a network visibility router in a network visibility system |
US10091075B2 (en) | 2016-02-12 | 2018-10-02 | Extreme Networks, Inc. | Traffic deduplication in a visibility network |
US10999200B2 (en) | 2016-03-24 | 2021-05-04 | Extreme Networks, Inc. | Offline, intelligent load balancing of SCTP traffic |
US10567259B2 (en) | 2016-10-19 | 2020-02-18 | Extreme Networks, Inc. | Smart filter generator |
CN108366001B (zh) * | 2018-03-05 | 2020-08-21 | 东软集团股份有限公司 | 一种转发测试方法及装置 |
US11621914B2 (en) * | 2020-11-25 | 2023-04-04 | Juniper Networks, Inc. | Maintaining processing core affinity for fragmented packets in network devices |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001345854A (ja) | 2000-03-27 | 2001-12-14 | Matsushita Electric Ind Co Ltd | ネットワーク間のパケット通信方法及びシステム並びに装置 |
JP3403971B2 (ja) | 1999-06-02 | 2003-05-06 | 富士通株式会社 | パケット転送装置 |
US7693976B2 (en) * | 2000-07-11 | 2010-04-06 | Ciena Corporation | Granular management of network resources |
US20030035430A1 (en) | 2000-10-03 | 2003-02-20 | Junaid Islam | Programmable network device |
JP3963690B2 (ja) | 2001-03-27 | 2007-08-22 | 富士通株式会社 | パケット中継処理装置 |
US6816455B2 (en) | 2001-05-09 | 2004-11-09 | Telecom Italia S.P.A. | Dynamic packet filter utilizing session tracking |
JP2002351760A (ja) | 2001-05-30 | 2002-12-06 | Mitsubishi Electric Corp | サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム |
JP2002354009A (ja) | 2001-05-30 | 2002-12-06 | Nippon Telegr & Teleph Corp <Ntt> | ネットワークノード装置とパケット処理方法およびプログラム |
US6909713B2 (en) | 2001-09-05 | 2005-06-21 | Intel Corporation | Hash-based data frame distribution for web switches |
SE523862C2 (sv) | 2001-10-19 | 2004-05-25 | Operax Ab | Ett förfarande och en apparat för att överföra datapaket i IP-routrar |
US7535913B2 (en) * | 2002-03-06 | 2009-05-19 | Nvidia Corporation | Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols |
WO2004049669A2 (en) * | 2002-11-27 | 2004-06-10 | Fujitsu Siemens Computers, Inc. | Method and appliance for distributing data packets sent by a computer to a cluster system |
US20040185845A1 (en) * | 2003-02-28 | 2004-09-23 | Microsoft Corporation | Access point to access point range extension |
-
2003
- 2003-05-26 JP JP2003147438A patent/JP4196732B2/ja not_active Expired - Fee Related
-
2004
- 2004-05-25 US US10/852,238 patent/US7532619B2/en not_active Expired - Fee Related
- 2004-05-26 EP EP20040012502 patent/EP1482685A1/en not_active Withdrawn
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4512196B2 (ja) * | 2005-10-20 | 2010-07-28 | アラクサラネットワークス株式会社 | 異常トラヒックの検出方法およびパケット中継装置 |
JP2007116405A (ja) * | 2005-10-20 | 2007-05-10 | Alaxala Networks Corp | 異常トラヒックの検出方法およびパケット中継装置 |
US7509424B2 (en) | 2006-02-14 | 2009-03-24 | Fujitsu Limited | Load-balancing device and computer-readable recording medium in which load-balancing program is recorded |
US8259714B2 (en) | 2006-07-06 | 2012-09-04 | Alaxala Networks Corporation | Packet transferring node |
JP2008017160A (ja) * | 2006-07-06 | 2008-01-24 | Alaxala Networks Corp | パケット転送装置 |
US8953591B2 (en) | 2006-07-06 | 2015-02-10 | Alaxala Networks Corporation | Packet transferring node |
US9032502B1 (en) | 2006-08-08 | 2015-05-12 | A10 Networks, Inc. | System and method for distributed multi-processing security gateway |
US9258332B2 (en) | 2006-08-08 | 2016-02-09 | A10 Networks, Inc. | Distributed multi-processing security gateway |
US9344456B2 (en) | 2006-08-08 | 2016-05-17 | A10 Networks, Inc. | Distributed multi-processing security gateway |
US9124550B1 (en) | 2006-08-08 | 2015-09-01 | A10 Networks, Inc. | Distributed multi-processing security gateway |
US8914871B1 (en) | 2006-08-08 | 2014-12-16 | A10 Networks, Inc. | Distributed multi-processing security gateway |
JP4648290B2 (ja) * | 2006-11-21 | 2011-03-09 | 日本電信電話株式会社 | パケット転送装置、パケット分配方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム |
JP2008131350A (ja) * | 2006-11-21 | 2008-06-05 | Nippon Telegr & Teleph Corp <Ntt> | パケット転送装置、パケット分配方法、パケットソート方法、グループ所属プロセッサ変更方法、およびコンピュータプログラム |
JP2013078134A (ja) * | 2007-11-29 | 2013-04-25 | A10 Networks Inc | 分散多重処理セキュリティゲートウエイのためのシステム及び方法 |
JP2013070423A (ja) * | 2007-11-29 | 2013-04-18 | A10 Networks Inc | 分散多重処理セキュリティゲートウエイのためのシステム及び方法 |
JP2010166189A (ja) * | 2009-01-14 | 2010-07-29 | Nec Corp | Ip中継装置、通信システム及びそれらに用いるtcpフロー制御方法 |
JP2013514691A (ja) * | 2009-12-17 | 2013-04-25 | アルカテル−ルーセント | 複数のデータを処理するための方法および通信パケットをスイッチングするためのスイッチングデバイス |
US9326229B2 (en) | 2011-03-31 | 2016-04-26 | Fujitsu Limited | Gateway device and gateway selection method |
WO2012132010A1 (ja) | 2011-03-31 | 2012-10-04 | 富士通株式会社 | ゲートウェイ装置、及びゲートウェイ選択方法 |
JP2013179429A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 振分先を切り替える並列パケット処理方法および装置 |
US9118618B2 (en) | 2012-03-29 | 2015-08-25 | A10 Networks, Inc. | Hardware-based packet editor |
US9742879B2 (en) | 2012-03-29 | 2017-08-22 | A10 Networks, Inc. | Hardware-based packet editor |
US9118620B1 (en) | 2012-03-29 | 2015-08-25 | A10 Networks, Inc. | Hardware-based packet editor |
US10069946B2 (en) | 2012-03-29 | 2018-09-04 | A10 Networks, Inc. | Hardware-based packet editor |
US10348631B2 (en) | 2012-05-25 | 2019-07-09 | A10 Networks, Inc. | Processing packet header with hardware assistance |
US9596286B2 (en) | 2012-05-25 | 2017-03-14 | A10 Networks, Inc. | Method to process HTTP header with hardware assistance |
US9843521B2 (en) | 2012-05-25 | 2017-12-12 | A10 Networks, Inc. | Processing packet header with hardware assistance |
US10021174B2 (en) | 2012-09-25 | 2018-07-10 | A10 Networks, Inc. | Distributing service sessions |
US10491523B2 (en) | 2012-09-25 | 2019-11-26 | A10 Networks, Inc. | Load distribution in data networks |
US10862955B2 (en) | 2012-09-25 | 2020-12-08 | A10 Networks, Inc. | Distributing service sessions |
JP2014158143A (ja) * | 2013-02-15 | 2014-08-28 | Nippon Telegr & Teleph Corp <Ntt> | 負荷分散システム、負荷分散方法 |
JP2014179844A (ja) * | 2013-03-15 | 2014-09-25 | Nec Corp | パケット伝送装置、パケット伝送方法及びパケット伝送システム |
US10027761B2 (en) | 2013-05-03 | 2018-07-17 | A10 Networks, Inc. | Facilitating a secure 3 party network session by a network device |
US10020979B1 (en) | 2014-03-25 | 2018-07-10 | A10 Networks, Inc. | Allocating resources in multi-core computing environments |
US9806943B2 (en) | 2014-04-24 | 2017-10-31 | A10 Networks, Inc. | Enabling planned upgrade/downgrade of network devices without impacting network sessions |
US10110429B2 (en) | 2014-04-24 | 2018-10-23 | A10 Networks, Inc. | Enabling planned upgrade/downgrade of network devices without impacting network sessions |
US10411956B2 (en) | 2014-04-24 | 2019-09-10 | A10 Networks, Inc. | Enabling planned upgrade/downgrade of network devices without impacting network sessions |
Also Published As
Publication number | Publication date |
---|---|
US20040243718A1 (en) | 2004-12-02 |
US7532619B2 (en) | 2009-05-12 |
EP1482685A1 (en) | 2004-12-01 |
JP4196732B2 (ja) | 2008-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004350188A (ja) | データ転送装置及びプログラム | |
US20240121182A1 (en) | System and method for facilitating efficient address translation in a network interface controller (nic) | |
US20220070095A1 (en) | Data transmission method and apparatus, network adapter, and storage medium | |
US5884313A (en) | System and method for efficient remote disk I/O | |
US8005022B2 (en) | Host operating system bypass for packets destined for a virtual machine | |
US7461160B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
JP3746785B2 (ja) | 多重ネットワーク・アドレスを備えたネットワーク・ステーション | |
US7089335B2 (en) | Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device | |
US6895590B2 (en) | Method and system enabling both legacy and new applications to access an InfiniBand fabric via a socket API | |
US20080279188A1 (en) | Method And Apparatus For Performing Network Processing Functions | |
US7320071B1 (en) | Secure universal serial bus | |
US20070070904A1 (en) | Feedback mechanism for flexible load balancing in a flow-based processor affinity scheme | |
US20070192515A1 (en) | Transferring data between a memory and peripheral units employing direct memory access control | |
US20100020818A1 (en) | Sharing buffer space in link aggregation configurations | |
JPH03250946A (ja) | 通信装置 | |
US7269661B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
US7362772B1 (en) | Network processing pipeline chipset for routing and host packet processing | |
US7159111B1 (en) | Isolation of communication contexts to facilitate communication of data | |
US8885673B2 (en) | Interleaving data packets in a packet-based communication system | |
US7363383B2 (en) | Running a communication protocol state machine through a packet classifier | |
US7536479B2 (en) | Local and remote network based management of an operating system-independent processor | |
JP2001036581A (ja) | 通信帯域設定システムと方法 | |
JP2006121699A (ja) | 第1のデータネットワークから第2のデータネットワークへのデータパケットのカーネルレベルの通過のための方法及び装置 | |
CN115442183A (zh) | 一种数据转发方法及装置 | |
CN112751946A (zh) | 一种隧道建立方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060414 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080122 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080319 |
|
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: 20080909 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080922 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111010 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121010 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131010 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |