JPWO2003103233A1 - パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム - Google Patents
パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム Download PDFInfo
- Publication number
- JPWO2003103233A1 JPWO2003103233A1 JP2004510189A JP2004510189A JPWO2003103233A1 JP WO2003103233 A1 JPWO2003103233 A1 JP WO2003103233A1 JP 2004510189 A JP2004510189 A JP 2004510189A JP 2004510189 A JP2004510189 A JP 2004510189A JP WO2003103233 A1 JPWO2003103233 A1 JP WO2003103233A1
- Authority
- JP
- Japan
- Prior art keywords
- session
- packet relay
- relay processing
- packet
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title description 55
- 238000012545 processing Methods 0.000 claims abstract description 111
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 25
- 230000005540 biological transmission Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000007616 round robin method Methods 0.000 description 7
- 238000001914 filtration Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/165—Combined use of TCP and UDP protocols; selection criteria therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/167—Adaptation for transition between two IP versions, e.g. between IPv4 and IPv6
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
ネットワーク(1,2)を接続するネットワーク接続部(12a,12b)と、各々が独立してパケット中継処理を行う複数のパケット中継処理部(11a〜11n)と、セッション管理を行うセッション管理部(13)と、前記セッション管理部(13)によるセッション管理に基づいて、新規セッション登録毎に前記セッションを前記複数のパケット中継処理部(11a〜11n)の何れかに振り分けるセッション振り分け部(14)と、を有することを特徴とするパケット中継装置(10)。
Description
技術分野
本発明は、パケット中継装置等に関する。
背景技術
従来より、例えばプロキシー・サーバやファイアウォールのような高機能のパケット中継装置を構築する場合、図15に示すように、サーバ200に、各ネットワーク230、240との接続を行う各ネットワークインタフェースカード(NIC)210、220を装備し、サーバ200上のパケット中継処理部201においてパケットフィルタリングやNAT(Network Address Translation)、プロトコル変換などを伴うパケット中継処理を行う構成のパケット中継装置が一般的である。各NIC210,220は、各々、ネットワーク接続部211、221を有する。尚、上記ネットワーク230、240は、例えば、一方が外部ネットワーク(インターネット等)、他方が内部ネットワーク(社内LAN等)である。
ここで、最近の急激なインターネットの大規模化のため、ネットワークを流れるパケットの量は指数関数的な伸びを示している。このため、従来のパケット中継装置では、高速化するためにCPUの性能を向上させたり、CPUを複数搭載して処理性能を上げることが行われている。
しかし、従来のパケット中継装置では、CPUを複数搭載しても、複数のCPUを効率的に扱うことができないため、CPUの数に応じた処理性能を出せないことが知られている。
本発明の課題は、複数のCPUを載せたパケット中継処理装置において、CPU数に応じた性能を引き出すことにより、処理を高速化させることである。
発明の開示
本発明のパケット中継装置は、各々が独立してパケット中継処理を行う複数のパケット中継処理手段と、セッション管理を行うセッション管理手段と、該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段とを有するように構成する。
上記構成のパケット中継装置によれば、複数のパケット中継処理部が並列して動作することが可能になるため、CPU数に応じたパケット中継処理性能を得ることができる。
上記パケット中継装置は、例えば、前記複数のパケット中継処理手段をサーバに備え、前記セッション管理手段、及びセッション振り分け手段を、前記サーバに接続するネットワーク接続デバイスに備えるように構成する。
この場合、複数のCPUを備えるサーバに対して、上記構成のネットワーク接続デバイスを接続するだけで、上記本発明のパケット中継装置を実現できる。
あるいは、このような構成例に限らず、例えば、前記複数のパケット中継処理手段、セッション管理手段、及びセッション振り分け手段を、サーバに接続するネットワーク接続デバイスに備えるように構成してもよい。
また、上記セッション振り分け手段によるセッション振り分け方法は、具体的には、例えば、新規セッション登録毎に順番に振り分け先を変えて行く方法や、パケット内の情報に対してハッシュ関数を適用することで得られるハッシュ値に基づいて決定する方法や、各パケット中継処理手段の負荷情報に基づいてセッションを振り分ける方法等である。
また、本発明は、上記構成のネットワーク接続デバイス自体として構成することもできるし、パケット中継方法として構成することもできるし、上記パケット中継装置の各種手段をコンピュータにより実現させる為のプログラムや、このプログラムを記録した記録媒体として構成することもできる。
発明を実施するための最良の形態
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本実施の形態によるパケット中継装置の原理構成ブロック図である。
同図に示すパケット中継装置10は、複数のパケット中継処理部11a、11b、・・・11nと、2つのネットワーク接続部12a、12bとを有する構成となっている。各パケット中継処理部11a、11b、・・・11nは、各々、別々のCPUにより実現している。すなわち、本例によるパケット中継装置20は、複数のCPUを搭載した構成であることを前提としている。
また、パケット中継処理部11、ネットワーク接続部12の機能自体は、上記従来のパケット中継装置におけるパケット中継処理部201、ネットワーク接続部211(221)と同様であり、例えばパケット中継処理部11では、パケットフィルタリングやNAT(Network Address Translation)、プロトコル変換処理などを伴うパケット中継処理が行われる。
そして、本実施の形態によるパケット中継装置10では、上記のような構成に対して、セッション管理部13とセッション振り分け部14が追加されていることを特徴とする。
セッション管理部13は、パケットのヘッダ情報を解析することにより、同じセッションのパケットには同じセッションIDが割り当てられるように管理する。この管理には、不図示のセッションテーブルを用いる。セッションテーブルについては、後に詳述する。
セッション振り分け部14は、複数のパケット中継処理部11に対して、各セッションを適切に振り分けるように制御する機能部であり、例えば後述するラウンドロビン方式やハッシュ方式、動的負荷分散などが具体的な方式としてある。これら各方式については後に詳しく説明する。
セッション振り分け部14は、同じセッションのパケットは必ず同じパケット中継処理部11に送る。プロキシー・サーバやファイアウォールのような高機能のパケット中継処理を行う装置においては、同じセッションのパケットは同じパケット中継処理部11で処理させるようにしないと、現実上、処理できなくなるからである(パケット中継処理部11間でやりとりすれば処理可能ではあるが、余計な処理負荷が掛かり、現実的ではない)。
このように、本例によるパケット中継装置では、複数のCPUを備えるパケット中継装置において、CPUを効率的に使うことができるため、CPU数に応じたパケット中継処理性能を得ることが可能となる。
以下、まず、図2〜図5を参照して、第1の実施例について説明する。
図2は、第1の実施例によるパケット中継装置の機能ブロック図である。
図2に示すパケット中継装置20は、複数のパケット中継処理部21a、21b、・・・21n、複数のネットワーク接続部22a、22b、・・・22m、セッション管理部23、セッション振り分け部24、及びセッションテーブル25を有する。
上記構成において、まず、不図示のネットワークからネットワーク接続部22a〜22mの何れかを介して入力されたパケットは、セッション管理部23に送られる。ネットワーク接続部22a〜22mは、例えば、イーサネット(登録商標)コントローラである。尚、パケットの構成は、一般的なものであるので、特に図示しないが、例えばイーサネットヘッダ、IPヘッダ、TCP/UDPヘッダより成るヘッダ部と、データ部とを有する構成である。
上記パケットを受けたセッション管理部23、及びセッション振り分け部24の処理について、以下、図3、図4を参照して説明する。
まず、セッション管理部23では、図4のフローに示すようにまずセッションテーブル25を検索し(ステップS11)、入力されたパケットのセッションが登録されているかどうかを判定する(ステップS12)。セッションテーブルは例えば、図3に示すような構成をとる。
図3に示すセッションテーブル30は、セッションを管理する為のセッション情報を格納するテーブルであり、ID(セッションID)31、送信元IPアドレス32、送信元ポート33、送信先IPアドレス34、送信先ポート35、セッション状態36、及びセッション振り分け先37の各データ項目より成る。
セッションは、上記パケットのIPヘッダ内の送信元/送信先IPアドレスおよびTCPヘッダ内の送信元/送信先ポートの組で一意に決定することができるので、この組をセッション検索キーとして、セッションテーブル30の検索を行う。そして、セッションテーブル30における送信元IPアドレス32/送信先IPアドレス34、及び送信元ポート33/送信先ポート35の組が、上記セッション検索キーと一致するレコードが存在するか否かにより、上記ステップS12の判定を行う。
ID(セッションID)31は、各セッションを識別する識別番号である。セッション振り分け先37については、後にセッション振り分け部24の説明の際に説明する。
再び図4を参照した説明に戻る。
上記ステップS12の判定において、もし、入力されたパケットのセッションが、セッションテーブル30に登録されていないと判定された場合には(ステップS12,NO)、このパケットは新規のセッションとしてID31が割り当てられ、セッションテーブル30に上記セッション検索キーとしての各データが新規登録される(ステップS17)。新規登録されたパケットは、セッション振り分け部24に送られる。
一方、セッションテーブル30を検索した結果、セッションテーブル30に既に登録されていた場合には(ステップS12、YES)、そのパケットのヘッダ内情報からセッション状態遷移を検査して、状態が遷移しているかどうかを判定する(ステップS13)。
状態が遷移している場合は(ステップS13、YES)、セッションテーブル30のセッション状態36を書き換える。セッション状態36の書き換えについては、本出願人が既に提案している特願2000−308387号「パケット中継処理装置」と同様であってよく、ここでは詳細には説明しないが、例えばTCPプロトコルの場合、セッションが登録されていない状態でSYNパケットを受信すると、このパケットのセッションを登録すると共にセッション状態は’SYN_RECV’とし、続いて、セッション状態は’ESTAB’(Established)に遷移し、この状態でパケット送受信が行われていく。そして、FINパケットを受信すると(ステップS15、YES)、セッションテーブル30から当該セッションのエントリを削除してから(ステップS16)、当該パケットをセッション振り分け部24に送る。セッション状態が遷移していない場合は(ステップS13、NO)、当該パケットは、そのまま、セッション振り分け部24に送る。
セッション振り分け部24は、送られてきたパケットが、セッション管理部23が上記ステップS17の処理を行ってから送ってきたパケットである場合、つまりそのセッションがセッションテーブル30に新規登録されたパケットである場合には、セッション振り分け先を決定する(ステップS22)。つまり、このセッションのパケットの処理を、どのパケット中継処理部21に行わせるかを決定する。そして、決定した内容をセッションテーブル30のセッション振り分け先37に登録する(ステップS23)。
一方、セッション管理部23から上記ステップS13〜S16の処理を経て送られてきたパケットは、既にセッションテーブル30にセッション振り分け先37が登録されているので、これを参照することで、当該パケットをどのパケット中継処理部21に送るべきかを判別することができる(ステップS21)。
そして、セッション振り分け部24は、上述したステップS21の処理により判別したパケット中継処理部21、又はステップS22の処理により決定したパケット中継処理部21に、当該パケットを転送する。
パケット中継処理部21では、パケットのフィルタリング、NAT(Network Address Translation)、プロトコル変換などのパケット中継処理が行われる。また、ルーティング処理(どのネットワーク(ネットワーク接続部22)に送るかを決定する処理)も行われる。
上記パケット中継処理部21により中継・出力されるパケットは、図5のフローに示す処理によって、ルーティング先となるネットワーク接続部22に送られる。
まず、上記パケットは、パケット中継処理部21からセッション管理部23に渡される。
セッション管理部23は、このパケットを受け取ると、上記図4に示す処理と同様に、まずセッションテーブル30を検索し(ステップS31)、セッション登録済みである場合(ステップS32、YES)、更に、セッション状態遷移がある場合には(ステップS33,YES)セッション状態36の書き換え処理を実行し(ステップS34)、セッションクローズである場合には(ステップS35,YES)セッション削除処理を実行する(ステップS36)。そして、当該パケットを上記ルーティング先となるネットワーク接続部22に渡す。
一方、セッション未登録である場合には(ステップS32、NO)、セッション新規登録処理を実行する(ステップS37)。そして、セッション振り分け先37をセッションテーブル30に登録する(ステップS38)。つまり、この場合、既にどのパケット中継処理部21から送られてきているかは決定しているので、セッション振り分け部24で振り分け先を決定する必要はない。
セッション管理部23で処理されたパケットは、上記ルーティング先となるネットワーク接続部22に送られる。
尚、図2において、パケット中継装置20により中継されるパケットは、パケット中継装置20に入力する方向と、パケット中継装置20により中継・出力される方向とでは、異なるセッションとして管理される。例えば、図2に示す例では、パケット中継処理部21aが振り分け先となった任意のパケットは、ネットワーク接続部22aを介して入力される方向ではセッション1(ID=1)として管理され、ネットワーク接続部22bを介して出力される方向ではセッション2(ID=2)として管理される。同様に、例えばパケット中継処理部21bが振り分け先となった任意のパケットは、ネットワーク接続部22aを介して入力される方向ではセッション3(ID=3)として管理され、ネットワーク接続部22bを介して出力される方向ではセッション4(ID=4)として管理される。
よって、あるパケットを中継するとき、上記図4の処理と図5の処理とでは、異なるセッションとして処理することになる。
セッション振り分け部24によるセッション振り分け方法は、CPU数に応じた性能を出せるようにできるものであれば何でもよいが、ここでは3つの手法を提案する。すなわち、ラウンドロビン方式、ハッシュ方式、動的負荷分散方式について、以下、説明する。
まず、ラウンドロビン方式について説明する。
図6は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、ラウンドロビン方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、ラウンドロビン方式によって振り分け先を決定し(ステップS41)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
上記ラウンドロビン方式によるセッション振り分け処理では、セッション新規登録毎に、振り分けるパケット中継処理部21を順番に替えていく。
例えば、最初にセッション1が新規登録された場合、パケット中継処理部21aをセッション振り分け先とし、次にセッション2が新規登録された場合、パケット中継処理部21bをセッション振り分け先とする、という様にセッションが新規登録される毎に、振り分け先のパケット中継処理部21を順次変えていき、最後のパケット中継処理部21nまで振り分けたら、次のセッションの振り分け先はパケット中継処理部21aに戻る。
このようにして、各パケット中継処理部21に平均してセッションが割り当てられるようにすることで、複数のCPUを効率的に使用でき、CPU数に応じた処理性能を出すことが可能になる。
次に、以下、ハッシュ方式について説明する。
図7は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、ハッシュ方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、ハッシュ方式によって振り分け先を決定し(ステップS42)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
上記ハッシュ方式による振り分け先決定処理では、受信したパケットに含まれる特定の情報に、ハッシュ関数を適用して得たハッシュ値に基づいて、振り分け先を決定する。例えば、振り分け先がパケット中継処理部21aとパケット中継処理部21bの2つであるとした場合、例えばハッシュ値が″0000″〜″7FFF″の範囲であった場合にはパケット中継処理部21aに振り分け、ハッシュ値が″8000″〜″FFFF″の範囲であった場合にはパケット中継処理部21bに振り分ける、などというように、生成されたハッシュ値を、予め設定されている所定の範囲(又は閾値等)と比較することにより、振り分け先を決定する。
ハッシュ関数に入力する情報としては、例えば送信元IPアドレスなどを用いる。送信元IPアドレスを用いた場合、そのIPアドレスの情報処理端末から送られてくるパケットは、必ず同じパケット中継処理部21に送られるようになる。このように、何らかの理由で特定のパケット中継処理部21で処理を行いたい場合、このハッシュ方式が有効である。
図8(a)、(b)は、動的負荷分散方式を説明する図である。
本方式では、図8(a)に示すように、各パケット中継処理部21に負荷情報取得部40を設けて、セッション振り分け部24が、各パケット中継処理部21の負荷情報を参照できるようにする。負荷情報としては、例えばCPUの使用率やセッションの処理数などを用いることができる。
図8(b)は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、動的負荷分散方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、動的負荷分散方式によって振り分け先を決定し(ステップS43)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
動的負荷分散方式によるセッション振り分け決定処理では、上記負荷情報取得部40から負荷情報を参照し、例えばCPUの使用率が比較的低いパケット中継処理部21、または現在のセッション処理数が比較的少ないパケット中継処理部21を、振り分け先として決定する。あるいは、CPUの使用率とセッション処理数の両方を考慮して、振り分け先を決定してもよい。
このようにして、各パケット中継処理部21の処理負荷が略平均化するようにセッションを割り当てられることで、複数のCPUを効率的に使用でき、CPU数に応じた処理性能を出すことが可能になる。
上記第1の実施例によるパケット中継装置20では、図2に示す各機能部(パケット中継処理部21〜セッション振り分け部24)を、各々、どの様なハードウェアに実装するかは自由であり、特に限定するものではなかった。
これに対して、以下、第2の実施例、第3の実施例について説明する。
図9は、第2の実施例を説明するための図である。
図9に示す第2の実施例の構成では、サーバ50は複数のパケット中継処理部51a〜51nを備え、ネットワークインタフェースカード(NIC)60が、複数のネットワーク接続部61a〜61m、セッション管理部62、セッションテーブル63、セッション振り分け部64を有する。NIC60は、サーバ50のバス52(例えばPCI(Peripheral Components Interconnect)バス)のスロットに装着する。NIC60は、1枚でもいいが、複数枚をサーバ50に装着することにより、性能を上げることができる。また、NIC60は、ネットワーク接続デバイスの一例を示しているのであり、これに限るわけではない。
上述したように、従来より、サーバに複数のCPU(複数のパケット中継処理部)を設けることが行われており、第2の実施例ではこの様な既存のサーバの構成を変更する必要なく、上記NIC60を装着することで、複数のCPUを効率的に扱うことができるようになり、CPUの数に応じた処理性能が得られるようになる。
尚、上記パケット中継処理部51a〜51n、ネットワーク接続部61a〜61m、セッション管理部62、セッションテーブル63、セッション振り分け部64による処理の流れ自体は、第1の実施例とほぼ同様であるので、その説明は省略する。第1の実施例と異なる点は、セッション振り分け部64とパケット中継処理部51との間のパケットの送受信が、サーバ50のバス52を介して行われる点等であり、処理の流れ自体には特に影響しないので、上記の通り、説明は省略するものとする。
図10は、第3の実施例を説明する為の図である。
図10に示す通り、第3の実施例では、ネットワークインタフェースカード(NIC)70が、複数のパケット中継処理部71a〜71n、複数のネットワーク接続部72a〜72m、セッション管理部73、セッションテーブル74、セッション振り分け部75を有する。この第3実施例も、処理の流れ自体は、第1の実施例と同様であるので、その説明は省略する。
上記第2の実施例は、複数のパケット中継処理部を有するサーバ50に、NIC60を装着することで、本例によるパケット中継装置を実現できるものであったが、第3の実施例では、パケット中継機能を有しないサーバ80であっても、NIC70を装着することで、本例によるパケット中継装置を実現できるものである。
第3の実施例では、サーバ80のCPUは、パケット処理には使われないで、他の何らかの処理に使用されることになる。
尚、第3の実施例においても、上記他の実施例と同様、複数のCPUを効率的に扱うことができるようになり、CPUの数に応じた処理性能が得られるようになる。
図11は、本例によるパケット中継装置の具体的な使用例を説明する為の図である。
上述してあるように、本例によるパケット中継装置は、複数のネットワーク間でパケットを中継する装置である。よって、当然、この複数のネットワーク各々のプロトコルが異なる場合がある。ここでは、一方のネットワークのプロトコルがTCP/IPv6で、他方がTCP/IPv4である場合を例にして、これに対応して、パケット中継処理部においてプロトコル変換する構成を示す。
図11に示す構成では、各パケット中継処理部90において、TCP/IPv6(Internet Protocol Version 6)のプロトコルスタック92と、TCP/IPv4(Internet Protocol Version 4)のプロトコルスタック93を用意し、パケットを終端する。一旦終端することにより、2つのコネクション各々を別々に制御できる。また、一旦終端することにより、パケット内のデータをキャッシュすることができるようになる。
そして、プロトコル変換部91においてプロトコルの変換を行う。例えば、セッション1をIPv6ネットワークで終端し、セッション2をIPv4ネットワークで終端することにより、IPv4/v6のプロトコル変換を行う。
勿論、プロトコル変換は、IPv4/v6のプロトコル変換に限るものではない。
図12は、上記サーバ(コンピュータ)のハードウェア構成の一例を示す図である。
同図に示すコンピュータ110は、CPU111、メモリ112、入力装置113、出力装置114、外部記憶装置115、媒体駆動装置116、ネットワーク接続装置117等を有し、これらがバス118に接続された構成となっている。同図に示す構成は一例であり、これに限るものではない。
CPU111は、当該コンピュータ110全体を制御する中央処理装置である。
メモリ112は、プログラム実行、データ更新等の際に、外部記憶装置115(あるいは可搬記録媒体119)に記憶されているプログラムあるいはデータを一時的に格納するRAM等のメモリである。CPU111は、メモリ112に読み出したプログラム/データを用いて、上述してある各種処理を実行する。
入力装置113は、例えばキーボード、マウス、タッチパネル等である。
出力装置114は、例えばディスプレイ、プリンタ等である。
尚、入力装置113、出力装置114は、無くてもよい。
外部記憶装置115は、例えばハードディスク装置等であり、上記各種機能を実現させる為のプログラム/データ等が格納されている。
媒体駆動装置116は、可搬型記録媒体119に記録されているプログラム/データ等を読み出す(又は書き込む)。可搬型記録媒体は、例えばFD(フレキシブルディスク)、CD−ROM、DVD,光磁気ディスク等、持ち運び可能であって、ある程度以上の記憶容量を有する記録媒体であれば、何でも良い。
ネットワーク接続装置117は、ネットワーク(インターネット等)に接続して、外部の情報処理装置とプログラム/データ等の送受信を可能にする構成である。
図13は、上記プログラムを記録した記録媒体又はプログラムのダウンロードの一例を示す図である。
図示のように、上記本発明の機能を実現するプログラム/データが記憶されている可搬型記録媒体119をコンピュータ110の本体に挿入する等して、当該プログラム/データを読み出してメモリ112に格納し実行するものであってもよいし、また、上記プログラム/データは、ネットワーク接続装置117により接続しているネットワーク130(インターネット等)を介して、外部のプログラム/データ提供者側のサーバ120に記憶されているプログラム(データ)121をダウンロードするものであってもよい。
また、本発明は、装置/方法に限らず、上記プログラム/データを格納した記録媒体(可搬型記録媒体119等)自体として構成することもできるし、これらプログラム自体として構成することもできるし、これらプログラムが有線/無線を介して伝送される伝送信号として構成することもできる。
図14は、ネットワークインタフェースカード(NIC)のハードウェア構成の一例を示す図である。
図示の例のネットワークインタフェースカード(NIC)140は、ネットワークプロセッサ141、メモリ142、ギガビット・イーサネットコントローラ143、144を有する。
ネットワークプロセッサ141は、一般的な構成でよく、特に説明しないが、メモリ142に格納されているプログラム/データを読み出して、処理を実行する。メモリ142に格納されているプログラム/データは、上述した各種処理(図4〜図8に示す処理)を実現させるプログラムや、図3に示すテーブル等である。
ネットワークプロセッサ141は、サーバ50(80)の内部バス(PCI150)に接続している。各ギガビット・イーサネットコントローラ143、144は、各々、上記ネットワーク1,2の一例である光テーブル160、170に接続している。勿論、これは一例であり、ネットワークは光ケーブルに限るものではなく、またイーサネットコントローラも、ギガビットタイプに限るものではない。
産業上の利用の可能性
以上、詳細に説明したように、本発明のパケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラムによれば、セッション管理部とセッション振り分け部とによって、複数のパケット中継処理部に対してセッション毎に適切にパケットを振り分けることにより、複数のCPUを効率的に扱うことができるようになり、CPU数に応じたパケット中継処理性能が得られるようになる。
【図面の簡単な説明】
本発明は、後述する詳細な説明を、下記の添付図面と共に参照すればより明らかになるであろう。
図1は、本実施の形態によるパケット中継装置の原理構成ブロック図である。
図2は、第1の実施例によるパケット中継装置の機能ブロック図である。
図3は、セッションテーブルの一例を示す図である。
図4は、中継するパケットの入力時の処理を説明する為のフローチャート図である。
図5は、中継するパケットの中継・出力時の処理を説明する為のフローチャート図である。
図6は、セッション振り分け先決定処理を、ラウンドロビン方式により行うことを示す図である。
図7は、セッション振り分け先決定処理を、ハッシュ方式により行うことを示す図である。
図8(a)、(b)は、動的負荷分散方式によるセッション振り分け先決定処理を説明する為の図である。
図9は、第2の実施例を説明するための図である。
図10は、第3の実施例を説明する為の図である。
図11は、本例によるパケット中継装置の具体的な使用例を説明する為の図である。
図12は、サーバ(コンピュータ)のハードウェア構成の一例を示す図である。
図13は、プログラムを記録した記録媒体又はプログラムのダウンロードの一例を示す図である。
図14は、ネットワーク・インタフェースカード(NIC)のハードウェア構成の一例を示す図である。
図15は、従来のパケット中継装置の構成図である。
本発明は、パケット中継装置等に関する。
背景技術
従来より、例えばプロキシー・サーバやファイアウォールのような高機能のパケット中継装置を構築する場合、図15に示すように、サーバ200に、各ネットワーク230、240との接続を行う各ネットワークインタフェースカード(NIC)210、220を装備し、サーバ200上のパケット中継処理部201においてパケットフィルタリングやNAT(Network Address Translation)、プロトコル変換などを伴うパケット中継処理を行う構成のパケット中継装置が一般的である。各NIC210,220は、各々、ネットワーク接続部211、221を有する。尚、上記ネットワーク230、240は、例えば、一方が外部ネットワーク(インターネット等)、他方が内部ネットワーク(社内LAN等)である。
ここで、最近の急激なインターネットの大規模化のため、ネットワークを流れるパケットの量は指数関数的な伸びを示している。このため、従来のパケット中継装置では、高速化するためにCPUの性能を向上させたり、CPUを複数搭載して処理性能を上げることが行われている。
しかし、従来のパケット中継装置では、CPUを複数搭載しても、複数のCPUを効率的に扱うことができないため、CPUの数に応じた処理性能を出せないことが知られている。
本発明の課題は、複数のCPUを載せたパケット中継処理装置において、CPU数に応じた性能を引き出すことにより、処理を高速化させることである。
発明の開示
本発明のパケット中継装置は、各々が独立してパケット中継処理を行う複数のパケット中継処理手段と、セッション管理を行うセッション管理手段と、該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段とを有するように構成する。
上記構成のパケット中継装置によれば、複数のパケット中継処理部が並列して動作することが可能になるため、CPU数に応じたパケット中継処理性能を得ることができる。
上記パケット中継装置は、例えば、前記複数のパケット中継処理手段をサーバに備え、前記セッション管理手段、及びセッション振り分け手段を、前記サーバに接続するネットワーク接続デバイスに備えるように構成する。
この場合、複数のCPUを備えるサーバに対して、上記構成のネットワーク接続デバイスを接続するだけで、上記本発明のパケット中継装置を実現できる。
あるいは、このような構成例に限らず、例えば、前記複数のパケット中継処理手段、セッション管理手段、及びセッション振り分け手段を、サーバに接続するネットワーク接続デバイスに備えるように構成してもよい。
また、上記セッション振り分け手段によるセッション振り分け方法は、具体的には、例えば、新規セッション登録毎に順番に振り分け先を変えて行く方法や、パケット内の情報に対してハッシュ関数を適用することで得られるハッシュ値に基づいて決定する方法や、各パケット中継処理手段の負荷情報に基づいてセッションを振り分ける方法等である。
また、本発明は、上記構成のネットワーク接続デバイス自体として構成することもできるし、パケット中継方法として構成することもできるし、上記パケット中継装置の各種手段をコンピュータにより実現させる為のプログラムや、このプログラムを記録した記録媒体として構成することもできる。
発明を実施するための最良の形態
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本実施の形態によるパケット中継装置の原理構成ブロック図である。
同図に示すパケット中継装置10は、複数のパケット中継処理部11a、11b、・・・11nと、2つのネットワーク接続部12a、12bとを有する構成となっている。各パケット中継処理部11a、11b、・・・11nは、各々、別々のCPUにより実現している。すなわち、本例によるパケット中継装置20は、複数のCPUを搭載した構成であることを前提としている。
また、パケット中継処理部11、ネットワーク接続部12の機能自体は、上記従来のパケット中継装置におけるパケット中継処理部201、ネットワーク接続部211(221)と同様であり、例えばパケット中継処理部11では、パケットフィルタリングやNAT(Network Address Translation)、プロトコル変換処理などを伴うパケット中継処理が行われる。
そして、本実施の形態によるパケット中継装置10では、上記のような構成に対して、セッション管理部13とセッション振り分け部14が追加されていることを特徴とする。
セッション管理部13は、パケットのヘッダ情報を解析することにより、同じセッションのパケットには同じセッションIDが割り当てられるように管理する。この管理には、不図示のセッションテーブルを用いる。セッションテーブルについては、後に詳述する。
セッション振り分け部14は、複数のパケット中継処理部11に対して、各セッションを適切に振り分けるように制御する機能部であり、例えば後述するラウンドロビン方式やハッシュ方式、動的負荷分散などが具体的な方式としてある。これら各方式については後に詳しく説明する。
セッション振り分け部14は、同じセッションのパケットは必ず同じパケット中継処理部11に送る。プロキシー・サーバやファイアウォールのような高機能のパケット中継処理を行う装置においては、同じセッションのパケットは同じパケット中継処理部11で処理させるようにしないと、現実上、処理できなくなるからである(パケット中継処理部11間でやりとりすれば処理可能ではあるが、余計な処理負荷が掛かり、現実的ではない)。
このように、本例によるパケット中継装置では、複数のCPUを備えるパケット中継装置において、CPUを効率的に使うことができるため、CPU数に応じたパケット中継処理性能を得ることが可能となる。
以下、まず、図2〜図5を参照して、第1の実施例について説明する。
図2は、第1の実施例によるパケット中継装置の機能ブロック図である。
図2に示すパケット中継装置20は、複数のパケット中継処理部21a、21b、・・・21n、複数のネットワーク接続部22a、22b、・・・22m、セッション管理部23、セッション振り分け部24、及びセッションテーブル25を有する。
上記構成において、まず、不図示のネットワークからネットワーク接続部22a〜22mの何れかを介して入力されたパケットは、セッション管理部23に送られる。ネットワーク接続部22a〜22mは、例えば、イーサネット(登録商標)コントローラである。尚、パケットの構成は、一般的なものであるので、特に図示しないが、例えばイーサネットヘッダ、IPヘッダ、TCP/UDPヘッダより成るヘッダ部と、データ部とを有する構成である。
上記パケットを受けたセッション管理部23、及びセッション振り分け部24の処理について、以下、図3、図4を参照して説明する。
まず、セッション管理部23では、図4のフローに示すようにまずセッションテーブル25を検索し(ステップS11)、入力されたパケットのセッションが登録されているかどうかを判定する(ステップS12)。セッションテーブルは例えば、図3に示すような構成をとる。
図3に示すセッションテーブル30は、セッションを管理する為のセッション情報を格納するテーブルであり、ID(セッションID)31、送信元IPアドレス32、送信元ポート33、送信先IPアドレス34、送信先ポート35、セッション状態36、及びセッション振り分け先37の各データ項目より成る。
セッションは、上記パケットのIPヘッダ内の送信元/送信先IPアドレスおよびTCPヘッダ内の送信元/送信先ポートの組で一意に決定することができるので、この組をセッション検索キーとして、セッションテーブル30の検索を行う。そして、セッションテーブル30における送信元IPアドレス32/送信先IPアドレス34、及び送信元ポート33/送信先ポート35の組が、上記セッション検索キーと一致するレコードが存在するか否かにより、上記ステップS12の判定を行う。
ID(セッションID)31は、各セッションを識別する識別番号である。セッション振り分け先37については、後にセッション振り分け部24の説明の際に説明する。
再び図4を参照した説明に戻る。
上記ステップS12の判定において、もし、入力されたパケットのセッションが、セッションテーブル30に登録されていないと判定された場合には(ステップS12,NO)、このパケットは新規のセッションとしてID31が割り当てられ、セッションテーブル30に上記セッション検索キーとしての各データが新規登録される(ステップS17)。新規登録されたパケットは、セッション振り分け部24に送られる。
一方、セッションテーブル30を検索した結果、セッションテーブル30に既に登録されていた場合には(ステップS12、YES)、そのパケットのヘッダ内情報からセッション状態遷移を検査して、状態が遷移しているかどうかを判定する(ステップS13)。
状態が遷移している場合は(ステップS13、YES)、セッションテーブル30のセッション状態36を書き換える。セッション状態36の書き換えについては、本出願人が既に提案している特願2000−308387号「パケット中継処理装置」と同様であってよく、ここでは詳細には説明しないが、例えばTCPプロトコルの場合、セッションが登録されていない状態でSYNパケットを受信すると、このパケットのセッションを登録すると共にセッション状態は’SYN_RECV’とし、続いて、セッション状態は’ESTAB’(Established)に遷移し、この状態でパケット送受信が行われていく。そして、FINパケットを受信すると(ステップS15、YES)、セッションテーブル30から当該セッションのエントリを削除してから(ステップS16)、当該パケットをセッション振り分け部24に送る。セッション状態が遷移していない場合は(ステップS13、NO)、当該パケットは、そのまま、セッション振り分け部24に送る。
セッション振り分け部24は、送られてきたパケットが、セッション管理部23が上記ステップS17の処理を行ってから送ってきたパケットである場合、つまりそのセッションがセッションテーブル30に新規登録されたパケットである場合には、セッション振り分け先を決定する(ステップS22)。つまり、このセッションのパケットの処理を、どのパケット中継処理部21に行わせるかを決定する。そして、決定した内容をセッションテーブル30のセッション振り分け先37に登録する(ステップS23)。
一方、セッション管理部23から上記ステップS13〜S16の処理を経て送られてきたパケットは、既にセッションテーブル30にセッション振り分け先37が登録されているので、これを参照することで、当該パケットをどのパケット中継処理部21に送るべきかを判別することができる(ステップS21)。
そして、セッション振り分け部24は、上述したステップS21の処理により判別したパケット中継処理部21、又はステップS22の処理により決定したパケット中継処理部21に、当該パケットを転送する。
パケット中継処理部21では、パケットのフィルタリング、NAT(Network Address Translation)、プロトコル変換などのパケット中継処理が行われる。また、ルーティング処理(どのネットワーク(ネットワーク接続部22)に送るかを決定する処理)も行われる。
上記パケット中継処理部21により中継・出力されるパケットは、図5のフローに示す処理によって、ルーティング先となるネットワーク接続部22に送られる。
まず、上記パケットは、パケット中継処理部21からセッション管理部23に渡される。
セッション管理部23は、このパケットを受け取ると、上記図4に示す処理と同様に、まずセッションテーブル30を検索し(ステップS31)、セッション登録済みである場合(ステップS32、YES)、更に、セッション状態遷移がある場合には(ステップS33,YES)セッション状態36の書き換え処理を実行し(ステップS34)、セッションクローズである場合には(ステップS35,YES)セッション削除処理を実行する(ステップS36)。そして、当該パケットを上記ルーティング先となるネットワーク接続部22に渡す。
一方、セッション未登録である場合には(ステップS32、NO)、セッション新規登録処理を実行する(ステップS37)。そして、セッション振り分け先37をセッションテーブル30に登録する(ステップS38)。つまり、この場合、既にどのパケット中継処理部21から送られてきているかは決定しているので、セッション振り分け部24で振り分け先を決定する必要はない。
セッション管理部23で処理されたパケットは、上記ルーティング先となるネットワーク接続部22に送られる。
尚、図2において、パケット中継装置20により中継されるパケットは、パケット中継装置20に入力する方向と、パケット中継装置20により中継・出力される方向とでは、異なるセッションとして管理される。例えば、図2に示す例では、パケット中継処理部21aが振り分け先となった任意のパケットは、ネットワーク接続部22aを介して入力される方向ではセッション1(ID=1)として管理され、ネットワーク接続部22bを介して出力される方向ではセッション2(ID=2)として管理される。同様に、例えばパケット中継処理部21bが振り分け先となった任意のパケットは、ネットワーク接続部22aを介して入力される方向ではセッション3(ID=3)として管理され、ネットワーク接続部22bを介して出力される方向ではセッション4(ID=4)として管理される。
よって、あるパケットを中継するとき、上記図4の処理と図5の処理とでは、異なるセッションとして処理することになる。
セッション振り分け部24によるセッション振り分け方法は、CPU数に応じた性能を出せるようにできるものであれば何でもよいが、ここでは3つの手法を提案する。すなわち、ラウンドロビン方式、ハッシュ方式、動的負荷分散方式について、以下、説明する。
まず、ラウンドロビン方式について説明する。
図6は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、ラウンドロビン方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、ラウンドロビン方式によって振り分け先を決定し(ステップS41)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
上記ラウンドロビン方式によるセッション振り分け処理では、セッション新規登録毎に、振り分けるパケット中継処理部21を順番に替えていく。
例えば、最初にセッション1が新規登録された場合、パケット中継処理部21aをセッション振り分け先とし、次にセッション2が新規登録された場合、パケット中継処理部21bをセッション振り分け先とする、という様にセッションが新規登録される毎に、振り分け先のパケット中継処理部21を順次変えていき、最後のパケット中継処理部21nまで振り分けたら、次のセッションの振り分け先はパケット中継処理部21aに戻る。
このようにして、各パケット中継処理部21に平均してセッションが割り当てられるようにすることで、複数のCPUを効率的に使用でき、CPU数に応じた処理性能を出すことが可能になる。
次に、以下、ハッシュ方式について説明する。
図7は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、ハッシュ方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、ハッシュ方式によって振り分け先を決定し(ステップS42)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
上記ハッシュ方式による振り分け先決定処理では、受信したパケットに含まれる特定の情報に、ハッシュ関数を適用して得たハッシュ値に基づいて、振り分け先を決定する。例えば、振り分け先がパケット中継処理部21aとパケット中継処理部21bの2つであるとした場合、例えばハッシュ値が″0000″〜″7FFF″の範囲であった場合にはパケット中継処理部21aに振り分け、ハッシュ値が″8000″〜″FFFF″の範囲であった場合にはパケット中継処理部21bに振り分ける、などというように、生成されたハッシュ値を、予め設定されている所定の範囲(又は閾値等)と比較することにより、振り分け先を決定する。
ハッシュ関数に入力する情報としては、例えば送信元IPアドレスなどを用いる。送信元IPアドレスを用いた場合、そのIPアドレスの情報処理端末から送られてくるパケットは、必ず同じパケット中継処理部21に送られるようになる。このように、何らかの理由で特定のパケット中継処理部21で処理を行いたい場合、このハッシュ方式が有効である。
図8(a)、(b)は、動的負荷分散方式を説明する図である。
本方式では、図8(a)に示すように、各パケット中継処理部21に負荷情報取得部40を設けて、セッション振り分け部24が、各パケット中継処理部21の負荷情報を参照できるようにする。負荷情報としては、例えばCPUの使用率やセッションの処理数などを用いることができる。
図8(b)は、上記図4のステップS17、S22、S23の処理において、ステップS22のセッション振り分け先決定処理を、動的負荷分散方式により行うことを示す図である。すなわち、セッション管理部23においてステップS17のセッション新規登録処理が行われた場合、セッション振り分け部24は、動的負荷分散方式によって振り分け先を決定し(ステップS43)、決定したセッション振り分け先をセッションテーブル25に登録する(ステップS23)。
動的負荷分散方式によるセッション振り分け決定処理では、上記負荷情報取得部40から負荷情報を参照し、例えばCPUの使用率が比較的低いパケット中継処理部21、または現在のセッション処理数が比較的少ないパケット中継処理部21を、振り分け先として決定する。あるいは、CPUの使用率とセッション処理数の両方を考慮して、振り分け先を決定してもよい。
このようにして、各パケット中継処理部21の処理負荷が略平均化するようにセッションを割り当てられることで、複数のCPUを効率的に使用でき、CPU数に応じた処理性能を出すことが可能になる。
上記第1の実施例によるパケット中継装置20では、図2に示す各機能部(パケット中継処理部21〜セッション振り分け部24)を、各々、どの様なハードウェアに実装するかは自由であり、特に限定するものではなかった。
これに対して、以下、第2の実施例、第3の実施例について説明する。
図9は、第2の実施例を説明するための図である。
図9に示す第2の実施例の構成では、サーバ50は複数のパケット中継処理部51a〜51nを備え、ネットワークインタフェースカード(NIC)60が、複数のネットワーク接続部61a〜61m、セッション管理部62、セッションテーブル63、セッション振り分け部64を有する。NIC60は、サーバ50のバス52(例えばPCI(Peripheral Components Interconnect)バス)のスロットに装着する。NIC60は、1枚でもいいが、複数枚をサーバ50に装着することにより、性能を上げることができる。また、NIC60は、ネットワーク接続デバイスの一例を示しているのであり、これに限るわけではない。
上述したように、従来より、サーバに複数のCPU(複数のパケット中継処理部)を設けることが行われており、第2の実施例ではこの様な既存のサーバの構成を変更する必要なく、上記NIC60を装着することで、複数のCPUを効率的に扱うことができるようになり、CPUの数に応じた処理性能が得られるようになる。
尚、上記パケット中継処理部51a〜51n、ネットワーク接続部61a〜61m、セッション管理部62、セッションテーブル63、セッション振り分け部64による処理の流れ自体は、第1の実施例とほぼ同様であるので、その説明は省略する。第1の実施例と異なる点は、セッション振り分け部64とパケット中継処理部51との間のパケットの送受信が、サーバ50のバス52を介して行われる点等であり、処理の流れ自体には特に影響しないので、上記の通り、説明は省略するものとする。
図10は、第3の実施例を説明する為の図である。
図10に示す通り、第3の実施例では、ネットワークインタフェースカード(NIC)70が、複数のパケット中継処理部71a〜71n、複数のネットワーク接続部72a〜72m、セッション管理部73、セッションテーブル74、セッション振り分け部75を有する。この第3実施例も、処理の流れ自体は、第1の実施例と同様であるので、その説明は省略する。
上記第2の実施例は、複数のパケット中継処理部を有するサーバ50に、NIC60を装着することで、本例によるパケット中継装置を実現できるものであったが、第3の実施例では、パケット中継機能を有しないサーバ80であっても、NIC70を装着することで、本例によるパケット中継装置を実現できるものである。
第3の実施例では、サーバ80のCPUは、パケット処理には使われないで、他の何らかの処理に使用されることになる。
尚、第3の実施例においても、上記他の実施例と同様、複数のCPUを効率的に扱うことができるようになり、CPUの数に応じた処理性能が得られるようになる。
図11は、本例によるパケット中継装置の具体的な使用例を説明する為の図である。
上述してあるように、本例によるパケット中継装置は、複数のネットワーク間でパケットを中継する装置である。よって、当然、この複数のネットワーク各々のプロトコルが異なる場合がある。ここでは、一方のネットワークのプロトコルがTCP/IPv6で、他方がTCP/IPv4である場合を例にして、これに対応して、パケット中継処理部においてプロトコル変換する構成を示す。
図11に示す構成では、各パケット中継処理部90において、TCP/IPv6(Internet Protocol Version 6)のプロトコルスタック92と、TCP/IPv4(Internet Protocol Version 4)のプロトコルスタック93を用意し、パケットを終端する。一旦終端することにより、2つのコネクション各々を別々に制御できる。また、一旦終端することにより、パケット内のデータをキャッシュすることができるようになる。
そして、プロトコル変換部91においてプロトコルの変換を行う。例えば、セッション1をIPv6ネットワークで終端し、セッション2をIPv4ネットワークで終端することにより、IPv4/v6のプロトコル変換を行う。
勿論、プロトコル変換は、IPv4/v6のプロトコル変換に限るものではない。
図12は、上記サーバ(コンピュータ)のハードウェア構成の一例を示す図である。
同図に示すコンピュータ110は、CPU111、メモリ112、入力装置113、出力装置114、外部記憶装置115、媒体駆動装置116、ネットワーク接続装置117等を有し、これらがバス118に接続された構成となっている。同図に示す構成は一例であり、これに限るものではない。
CPU111は、当該コンピュータ110全体を制御する中央処理装置である。
メモリ112は、プログラム実行、データ更新等の際に、外部記憶装置115(あるいは可搬記録媒体119)に記憶されているプログラムあるいはデータを一時的に格納するRAM等のメモリである。CPU111は、メモリ112に読み出したプログラム/データを用いて、上述してある各種処理を実行する。
入力装置113は、例えばキーボード、マウス、タッチパネル等である。
出力装置114は、例えばディスプレイ、プリンタ等である。
尚、入力装置113、出力装置114は、無くてもよい。
外部記憶装置115は、例えばハードディスク装置等であり、上記各種機能を実現させる為のプログラム/データ等が格納されている。
媒体駆動装置116は、可搬型記録媒体119に記録されているプログラム/データ等を読み出す(又は書き込む)。可搬型記録媒体は、例えばFD(フレキシブルディスク)、CD−ROM、DVD,光磁気ディスク等、持ち運び可能であって、ある程度以上の記憶容量を有する記録媒体であれば、何でも良い。
ネットワーク接続装置117は、ネットワーク(インターネット等)に接続して、外部の情報処理装置とプログラム/データ等の送受信を可能にする構成である。
図13は、上記プログラムを記録した記録媒体又はプログラムのダウンロードの一例を示す図である。
図示のように、上記本発明の機能を実現するプログラム/データが記憶されている可搬型記録媒体119をコンピュータ110の本体に挿入する等して、当該プログラム/データを読み出してメモリ112に格納し実行するものであってもよいし、また、上記プログラム/データは、ネットワーク接続装置117により接続しているネットワーク130(インターネット等)を介して、外部のプログラム/データ提供者側のサーバ120に記憶されているプログラム(データ)121をダウンロードするものであってもよい。
また、本発明は、装置/方法に限らず、上記プログラム/データを格納した記録媒体(可搬型記録媒体119等)自体として構成することもできるし、これらプログラム自体として構成することもできるし、これらプログラムが有線/無線を介して伝送される伝送信号として構成することもできる。
図14は、ネットワークインタフェースカード(NIC)のハードウェア構成の一例を示す図である。
図示の例のネットワークインタフェースカード(NIC)140は、ネットワークプロセッサ141、メモリ142、ギガビット・イーサネットコントローラ143、144を有する。
ネットワークプロセッサ141は、一般的な構成でよく、特に説明しないが、メモリ142に格納されているプログラム/データを読み出して、処理を実行する。メモリ142に格納されているプログラム/データは、上述した各種処理(図4〜図8に示す処理)を実現させるプログラムや、図3に示すテーブル等である。
ネットワークプロセッサ141は、サーバ50(80)の内部バス(PCI150)に接続している。各ギガビット・イーサネットコントローラ143、144は、各々、上記ネットワーク1,2の一例である光テーブル160、170に接続している。勿論、これは一例であり、ネットワークは光ケーブルに限るものではなく、またイーサネットコントローラも、ギガビットタイプに限るものではない。
産業上の利用の可能性
以上、詳細に説明したように、本発明のパケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラムによれば、セッション管理部とセッション振り分け部とによって、複数のパケット中継処理部に対してセッション毎に適切にパケットを振り分けることにより、複数のCPUを効率的に扱うことができるようになり、CPU数に応じたパケット中継処理性能が得られるようになる。
【図面の簡単な説明】
本発明は、後述する詳細な説明を、下記の添付図面と共に参照すればより明らかになるであろう。
図1は、本実施の形態によるパケット中継装置の原理構成ブロック図である。
図2は、第1の実施例によるパケット中継装置の機能ブロック図である。
図3は、セッションテーブルの一例を示す図である。
図4は、中継するパケットの入力時の処理を説明する為のフローチャート図である。
図5は、中継するパケットの中継・出力時の処理を説明する為のフローチャート図である。
図6は、セッション振り分け先決定処理を、ラウンドロビン方式により行うことを示す図である。
図7は、セッション振り分け先決定処理を、ハッシュ方式により行うことを示す図である。
図8(a)、(b)は、動的負荷分散方式によるセッション振り分け先決定処理を説明する為の図である。
図9は、第2の実施例を説明するための図である。
図10は、第3の実施例を説明する為の図である。
図11は、本例によるパケット中継装置の具体的な使用例を説明する為の図である。
図12は、サーバ(コンピュータ)のハードウェア構成の一例を示す図である。
図13は、プログラムを記録した記録媒体又はプログラムのダウンロードの一例を示す図である。
図14は、ネットワーク・インタフェースカード(NIC)のハードウェア構成の一例を示す図である。
図15は、従来のパケット中継装置の構成図である。
Claims (11)
- 各々が独立してパケット中継処理を行う複数のパケット中継処理手段と、
セッション管理を行うセッション管理手段と、
該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段と、
を有することを特徴とするパケット中継装置。 - 前記複数のパケット中継処理手段をサーバに備え、
前記セッション管理手段、及びセッション振り分け手段を、前記サーバに接続するネットワーク接続デバイスに備えることを特徴とする請求項1記載のパケット中継装置。 - 前記複数のパケット中継処理手段、セッション管理手段、及びセッション振り分け手段を、サーバに接続するネットワーク接続デバイスに備えることを特徴とする請求項1記載のパケット中継装置。
- 前記パケット中継処理手段は、パケットを終端することにより、プロトコルの変換を行うことを特徴とする請求項1記載のパケット中継装置。
- 前記セッション振り分け手段は、セッションを振り分けるパケット中継処理手段を、新規セッション登録毎に順番に変えて行くことを特徴とする請求項1記載のパケット中継装置。
- 前記セッション振り分け手段は、セッションを振り分けるパケット中継処理手段を、パケット内の情報に対してハッシュ関数を適用することで得られるハッシュ値に基づいて決定することを特徴とする請求項1記載のパケット中継装置。
- 前記パケット中継処理手段は、更に負荷情報取得手段を有し、
前記セッション振り分け手段は、該負荷情報取得手段より取得した負荷情報に基づいて、セッションを振り分けることを特徴とする請求項1記載のパケット中継装置。 - 複数のパケット中継処理手段を有するサーバに接続する1または複数のネットワーク接続デバイスであって、
セッション管理を行うセッション管理手段と、
該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段と、
を有することを特徴とするネットワーク接続デバイス。 - 新規セッション登録毎に該セッションを複数のパケット中継処理部の何れかに振り分け、該セッションのパケットは該振り分けたパケット中継処理部に渡してパケット中継処理を行わせることを特徴とするパケット中継装置。
- コンピュータに、
各々が独立してパケット中継処理を行う複数のパケット中継処理手段と、
セッション管理を行うセッション管理手段と、
該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段と、
を実現させるプログラムを記録した前記コンピュータ読取り可能な記録媒体。 - コンピュータに、
各々が独立してパケット中継処理を行う複数のパケット中継処理手段と、
セッション管理を行うセッション管理手段と、
該セッション管理手段によるセッション管理に基づいて、新規セッション登録毎に該セッションを前記複数のパケット中継処理部の何れかに振り分けるセッション振り分け手段と、
を実現させる為のプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/005374 WO2003103233A1 (ja) | 2002-05-31 | 2002-05-31 | パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2003103233A1 true JPWO2003103233A1 (ja) | 2005-10-06 |
Family
ID=29606646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004510189A Pending JPWO2003103233A1 (ja) | 2002-05-31 | 2002-05-31 | パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050074000A1 (ja) |
EP (1) | EP1511229A4 (ja) |
JP (1) | JPWO2003103233A1 (ja) |
WO (1) | WO2003103233A1 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7400624B2 (en) * | 2003-05-27 | 2008-07-15 | Sun Microsystems, Inc. | Hashing based messaging approach to a cluster |
WO2004107683A1 (ja) * | 2003-05-29 | 2004-12-09 | Nec Corporation | パケット中継装置及びパケット中継方法並びにプログラム |
JP4641794B2 (ja) * | 2004-12-28 | 2011-03-02 | 富士通株式会社 | パケットフィルタ同期方法及びパケット中継システム |
JP4919608B2 (ja) | 2005-03-02 | 2012-04-18 | 株式会社日立製作所 | パケット転送装置 |
JP4619943B2 (ja) * | 2005-12-28 | 2011-01-26 | 富士通株式会社 | パケット通信方法、パケット通信システム |
FI119311B (fi) * | 2006-07-04 | 2008-09-30 | Tellabs Oy | Menetelmä ja järjestely valvonta- ja hallintaviestien käsittelemiseksi |
US8332925B2 (en) | 2006-08-08 | 2012-12-11 | A10 Networks, Inc. | System and method for distributed multi-processing security gateway |
US8079077B2 (en) | 2006-08-08 | 2011-12-13 | A10 Networks, Inc. | System and method for distributed multi-processing security gateway |
CN1946062A (zh) * | 2006-10-10 | 2007-04-11 | 华为数字技术有限公司 | 保活nat设备中会话表项的方法和系统 |
WO2008152992A1 (ja) * | 2007-06-11 | 2008-12-18 | Nec Corporation | パケット転送方法及びパケット交換機 |
JP5275673B2 (ja) * | 2008-04-23 | 2013-08-28 | トヨタ自動車株式会社 | マルチコアシステム、車両用ゲートウェイ装置 |
JP5617108B2 (ja) * | 2011-07-14 | 2014-11-05 | 岩▲崎▼ 哲夫 | 静的nat形成装置、リバースプロキシサーバ及び仮想接続制御装置 |
JP5672504B2 (ja) * | 2012-02-28 | 2015-02-18 | 日本電信電話株式会社 | 振分先を切り替える並列パケット処理方法および装置 |
ES2429396B1 (es) * | 2012-03-20 | 2014-11-18 | Telefónica, S.A. | Método y sistema para monitorización de tráfico de red |
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 |
US10021174B2 (en) | 2012-09-25 | 2018-07-10 | A10 Networks, Inc. | Distributing service sessions |
WO2014052099A2 (en) | 2012-09-25 | 2014-04-03 | A10 Networks, Inc. | Load distribution in data networks |
JP5926164B2 (ja) * | 2012-11-02 | 2016-05-25 | 日本電信電話株式会社 | セッションボーダーコントローラに対する高速振り分け方法及び接続システム |
US10027761B2 (en) | 2013-05-03 | 2018-07-17 | A10 Networks, Inc. | Facilitating a secure 3 party network session by a network device |
US9781075B1 (en) * | 2013-07-23 | 2017-10-03 | Avi Networks | Increased port address space |
US20170063979A1 (en) * | 2014-03-19 | 2017-03-02 | Nec Corporation | Reception packet distribution method, queue selector, packet processing device, and recording medium |
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 |
BR112017016460A2 (pt) * | 2015-01-31 | 2018-06-19 | Huawei Technologies Co., Ltd. | método de processamento para pacote de fluxo de serviço, e dispositivo |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10198642A (ja) * | 1997-01-09 | 1998-07-31 | Fujitsu Ltd | サーバ装置 |
JPH1188373A (ja) * | 1997-09-12 | 1999-03-30 | Nec Corp | コネクション振り分けによる負荷分散方式 |
JP2000244573A (ja) * | 1999-02-24 | 2000-09-08 | Hitachi Ltd | ネットワーク中継装置及びネットワーク中継方法 |
JP2001211203A (ja) * | 2000-01-26 | 2001-08-03 | Hitachi Ltd | ネットワーク中継装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2561022B2 (ja) * | 1994-05-25 | 1996-12-04 | 日本電気株式会社 | 宛先アドレスによる送信チャネル選択システム |
US6711162B1 (en) * | 1995-09-08 | 2004-03-23 | 3Com Corporation | Method and apparatus for providing proxy service, route selection, and protocol conversion for service endpoints within data networks |
US6178505B1 (en) * | 1997-03-10 | 2001-01-23 | Internet Dynamics, Inc. | Secure delivery of information in a network |
US6131163A (en) * | 1998-02-17 | 2000-10-10 | Cisco Technology, Inc. | Network gateway mechanism having a protocol stack proxy |
US6272522B1 (en) * | 1998-11-17 | 2001-08-07 | Sun Microsystems, Incorporated | Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture |
US6006259A (en) * | 1998-11-20 | 1999-12-21 | Network Alchemy, Inc. | Method and apparatus for an internet protocol (IP) network clustering system |
US6078957A (en) * | 1998-11-20 | 2000-06-20 | Network Alchemy, Inc. | Method and apparatus for a TCP/IP load balancing and failover process in an internet protocol (IP) network clustering system |
US7600131B1 (en) * | 1999-07-08 | 2009-10-06 | Broadcom Corporation | Distributed processing in a cryptography acceleration chip |
US6801948B2 (en) * | 2000-12-15 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | System and method for a streams based network access control for a computer |
US7280540B2 (en) * | 2001-01-09 | 2007-10-09 | Stonesoft Oy | Processing of data packets within a network element cluster |
WO2004014041A1 (en) * | 2002-08-06 | 2004-02-12 | Matsushita Electric Industrial Co., Ltd. | Packet routing device and packet routing method |
-
2002
- 2002-05-31 JP JP2004510189A patent/JPWO2003103233A1/ja active Pending
- 2002-05-31 WO PCT/JP2002/005374 patent/WO2003103233A1/ja active Application Filing
- 2002-05-31 EP EP02730845A patent/EP1511229A4/en not_active Withdrawn
-
2004
- 2004-11-30 US US10/998,553 patent/US20050074000A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10198642A (ja) * | 1997-01-09 | 1998-07-31 | Fujitsu Ltd | サーバ装置 |
JPH1188373A (ja) * | 1997-09-12 | 1999-03-30 | Nec Corp | コネクション振り分けによる負荷分散方式 |
JP2000244573A (ja) * | 1999-02-24 | 2000-09-08 | Hitachi Ltd | ネットワーク中継装置及びネットワーク中継方法 |
JP2001211203A (ja) * | 2000-01-26 | 2001-08-03 | Hitachi Ltd | ネットワーク中継装置 |
Non-Patent Citations (1)
Title |
---|
菊池隆裕: "台頭する「レイヤー4スイッチ」 LAN上のサービス品質の保証狙う", 日経コミュニケーション, vol. 第266号, CSND199800509009, 16 March 1998 (1998-03-16), pages 126 - 129, ISSN: 0000757473 * |
Also Published As
Publication number | Publication date |
---|---|
EP1511229A4 (en) | 2007-03-21 |
EP1511229A1 (en) | 2005-03-02 |
US20050074000A1 (en) | 2005-04-07 |
WO2003103233A1 (ja) | 2003-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2003103233A1 (ja) | パケット中継装置、ネットワーク接続デバイス、パケット中継方法、記録媒体、プログラム | |
US7433958B2 (en) | Packet relay processing apparatus | |
US7804785B2 (en) | Network system having an instructional sequence for performing packet processing and optimizing the packet processing | |
Nordström et al. | Serval: An {End-Host} stack for {Service-Centric} networking | |
US8526467B2 (en) | Facilitating transition of network operations from IP version 4 to IP version 6 | |
US7882251B2 (en) | Routing hints | |
US20040152439A1 (en) | Mobile device communications system and method | |
JP4828619B2 (ja) | ルーティングヒント | |
WO2005109785A1 (ja) | 情報処理装置、バブルパケット送信方法およびプログラム | |
US20090043889A1 (en) | Communication system, data processing apparatus, server, data processing method, program that executes the data processing method, and recording medium to record the program | |
US20080270626A1 (en) | Network address translation type for flexible neighbor selection in overlay networks | |
US7716368B2 (en) | Network system and communication method, information processing apparatus and method, and program | |
ZA200600237B (en) | Routing hints | |
CN111131539B (zh) | 报文转发方法及装置 | |
US20120082089A1 (en) | Method and apparatus for processing gtp triggered messages | |
Nadeem et al. | An ns-3 mptcp implementation | |
US8509235B2 (en) | Layer-2 packet return in proxy-router communication protocol environments | |
JP6096464B2 (ja) | プロキシ装置及び中継装置 | |
WO2022206667A1 (zh) | 一种路由方法及设备 | |
JP5229109B2 (ja) | パケット中継処理装置 | |
JP4365397B2 (ja) | パケット中継処理装置 | |
JP6279970B2 (ja) | プロセッサ、通信装置、通信システム、通信方法およびコンピュータプログラム | |
JP2001230806A (ja) | アドレス変換装置 | |
CN113542108A (zh) | 一种基于IPv6的分布式隧道互联网关 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060925 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061107 |