JP2005295268A - 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム - Google Patents

階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム Download PDF

Info

Publication number
JP2005295268A
JP2005295268A JP2004108239A JP2004108239A JP2005295268A JP 2005295268 A JP2005295268 A JP 2005295268A JP 2004108239 A JP2004108239 A JP 2004108239A JP 2004108239 A JP2004108239 A JP 2004108239A JP 2005295268 A JP2005295268 A JP 2005295268A
Authority
JP
Japan
Prior art keywords
unit
service processing
packet
server
received packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004108239A
Other languages
English (en)
Other versions
JP4348227B2 (ja
Inventor
Naoki Oguchi
直樹 小口
Tetsuaki Tsuruoka
哲明 鶴岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2004108239A priority Critical patent/JP4348227B2/ja
Priority to US10/981,102 priority patent/US7613825B2/en
Publication of JP2005295268A publication Critical patent/JP2005295268A/ja
Application granted granted Critical
Publication of JP4348227B2 publication Critical patent/JP4348227B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer

Landscapes

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

Abstract

【課題】 本発明は、サービス処理を行なうサーバの追加・変更等において好適で且つ高速中継処理を実現する階層型パケット処理技術を提供することを目的とする。
【解決手段】 本発明は、受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部(1)とサーバ(2)からなるシステムを前提とし、上記中継部は、上記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部(1−1)と、上記受信パケットにパケットbyパケット処理を行なう第一のサービス処理部(1−2)と、上記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部(1−3)と、を有し、上記サーバは、上記第二のサービス処理部が上記呼出部から呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに任意のサービス処理を行なう外部サービス処理部(2−2)を、有するように構成する。
【選択図】図1

Description

本発明は、パケットを中継する際にフィルタ処理するパケット中継技術に関する。
近年、パケット中継装置は不用意な通信をシャットアウトするため高度なフィルタ処理を備える。
なかでもステートフルインスペクションと呼ばれる技術は、IP層よりも上位の通信セッションの状態を監視することで、パケットの通過許可/不許可をよりきめ細かく制御することができる。
ステートフルインスペクションは、パケット受信の度に、コネクションを認識し、各コネクションの状態を更新し、フィルタ条件とつき合わせてパケットの通過可否を判断する。上記処理はほぼ全てのパケットに対し処理が必要になる反面、パケットの上位レイヤヘッダやペイロード部分の監視、状態管理、パケットのデフラグメント/リフラグメント等、単純なパケット処理に留まらない。このため、ハードウエア化すると装置規模が大きくなってしまう。
そこで、ネットワークプロセッサを用いるという方法も考えられる。しかし、この方法では十分な性能がでない、プログラム可能なメモリにも制限があるなど、事実上の実装が困難であることが証明されている。
一方、サーバとネットワーク接続装置からなる系で、ネットワーク接続装置の中継処理においてパケットの詳細解析を行なう場合、そのパケットをサーバへ振り分けて詳細解析させる技術がある。この技術では先ず始めに、振分先であるサーバを予めポリシーテーブルに認識させておく必要がある。サービス処理部に対してパケットを振り分ける処理振分部は、パケットを受信すると上記ポリシーテーブルに基づき、当該パケットをサービス処理部または所定のサーバへ転送する。この転送により、処理が外部に分散され、ネットワーク接続装置での処理の負担を軽減できる(特許文献1参照)。
特開2002−359637号公報
上述したように上記パケットをサーバへ振り分ける技術では、その振分先をポリシーテーブルに指定する。これにより上記処理振分部は、各サービス処理部或いは外部のサーバへ処理を振り分けることが可能になる。
しかし、振り分け先であるサーバが頻繁に移動されたり、該サーバによって提供されるサービスが変えられるなどすると、上記ポリシーテーブルに指定した振り分け先のサーバを指定し直さなければならない。
このため、サーバの追加や変更等に基づく中継装置の調整に多大な手間を生じ、問題であった。
そこで本発明は、サービス処理を行なうサーバの追加・変更等において好適で且つ高速中継処理を実現する階層型パケット処理技術を提供することを目的とする。
本発明は上記課題を解決するために以下のように構成する。
本発明の階層型パケット処理システムの態様一つは、受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバからなることを前提とし、上記中継部は、上記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、上記呼出部の呼び出しにより、上記受信パケットにサービス処理を行なう第一のサービス処理部と、上記呼出部の呼び出しにより、上記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、を有し、上記サーバは、上記第二のサービス処理部が上記呼出部から呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して任意のサービス処理を行なう外部サービス処理部を、有するように構成する。
なお、上記呼出部の呼び出しにより上記第二のサービス処理部が呼び出されると、上記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が上記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ように構成してもよい。
また、上記外部サービス処理部は、中継部における受信パケットの中継処理で使用されてるCPUが空いた時間を利用して上記サービス処理を行なう、ように構成してもよい。
また、受信パケットに対するコネクション状態を管理するコネクション状態管理部を更に有し、上記外部サービス処理部は、上記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新し、上記中継部で受信された同一のコネクションパケットは、上記外部サービス処理部によって更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理される、ように構成することが望ましい。
また、上記仮想サービス処理部は、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有し、上記サーバは、上記サービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、ように構成することが望ましい。
本発明の中継装置の態様一つは、受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理することを前提とし、上記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、上記呼出部の呼び出しにより、上記受信パケットにサービス処理を行なう第一のサービス処理部と、上記呼出部の呼び出しにより、上記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、上記受信パケットの上位レイヤの状態の検出に基づく情報を管理するコネクション状態管理部と、上記第二のサービス処理部が上記呼出部から呼び出されると、受信パケットの内の所定の情報を所定のサーバへ送信する送信部と、上記サーバから送信された情報を受信する受信部と、上記受信した結果を上記受信パケットまたは上記コネクション状態管理部で管理される上記情報に反映する反映部と、同一のコネクションパケットに対し、上記コネクション状態管理部で管理される上記反映後の情報に基づいてフィルタ処理するフィルタ処理部と、を有するように構成する。
なお、上記呼出部の呼び出しにより上記第二のサービス処理部が呼び出されると、上記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が上記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ように構成してもよい。
また、上記第二のサービス処理部は、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有する、ことが望ましい。
本発明のサーバの態様一つは、中継装置で受信されたパケットの内の所定の情報を上記中継装置から受信することを前提とし、コネクションの状態を管理するコネクション状態管理部と、上記パケットの上位レイヤの状態を検出してサービス処理する上位レイヤ検出部と、上記上位レイヤ検出部によって検出された上記パケットの上位レイヤの状態を基に、上記コネクション状態管理部によって管理される上記パケットのコネクション状態を更新するコネクション状態更新部と、上記サービス処理の結果及び上記コネクション状態の更新情報を上記中継装置に送信する送信部と、を有するように構成する。
なお、上記サーバは、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理する上記中継装置のサービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、ように構成することが望ましい。
本発明の方法の態様一つは、受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバからなる階層型パケット処理システムで行なわれることを前提とし、上記中継部は、上記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出し、上記呼び出しにより第一のサービス処理部が呼び出された場合は、上記受信パケットにサービス処理を行ない、上記呼び出しにより第二のサービス処理部が呼び出された場合は、上記受信パケットに仮想的にサービス処理を行ない、上記サーバは、上記第二のサービス処理部が上記呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して実際にサービス処理を行なう、ようにする。
なお、受信パケットに対するコネクション状態をコネクション状態管理部で管理し、上記サーバは、上記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新し、上記中継部は、同一のコネクション受信パケットを、上記更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理する、ことが望ましい。
本発明のプログラムの態様一つは、受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバで実行可能なプログラムであって、上記中継部において、上記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出す機能と、上記呼び出しにより第一のサービス処理部が呼び出された場合は、上記受信パケットにサービス処理を行なう機能と、上記呼び出しにより第二のサービス処理部が呼び出された場合は、上記受信パケットに仮想的にサービス処理を行なう機能と、を実現し、上記サーバにおいて、上記第二のサービス処理部が上記呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して実際にサービス処理を行なう機能と、を実現する。
なお、受信パケットに対するコネクション状態をコネクション状態管理部で管理する機能と、上記サーバにおいて、上記受信パケットの上位レイヤの状態を検出する機能と、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新する機能と、上記中継部において、同一のコネクション受信パケットを、上記更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理する機能と、を実現することが望ましい。
本発明では、呼出部の呼び出しに応じて、サービス処理をサーバの外部サービス処理部で行なわせる。そしてこの際に、呼出部に対し、中継部で処理を行なっているように見せかけて、実際に処理を行なっているサーバ及びサービス処理の存在を隠蔽する。
このため、上記呼出部からは、上記第二のサービス処理部が何れのサーバで何れのサービス処理を行なわせているか認識できない。よって、仮にサーバや外部サービス処理部のサービス処理に追加・変更等があったとしても、該追加・変更等に基づく呼出部の設定変更は不要となる。
また本発明では、サーバでサービス処理を行なわせる場合、受信パケットを処理依頼キューに一時的に保管し、この間、同一のコネクションの受信パケットを処理するようにしている。
このため、例えば複雑な処理をサーバに行なわせた場合であっても、上記複雑な処理が終わるまで同一のコネクション受信パケットの処理を止める必要がなくなり、同一のコネクション受信パケットを次々と処理できる。
また、サーバで行なわれるサービス処理を、中継部における受信パケットの中継処理で使用されてるCPUが空いた時間を利用して行なうようにする。
このため、サーバで行なうサービス処理よりも中継部で行なう中継処理を優先することが可能になる。
また、本発明では、サーバで行なうサービス処理において、上記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基にコネクション状態管理部に管理される上記受信パケットのコネクション状態を更新する。そして、上記中継部で受信された同一のコネクション受信パケットを、上記更新後のコネクション状態に基づいてフィルタ処理させる。
このため、上位レイヤの状態検出に基づくコネクション状態の更新をサーバで行なわせることが可能になり、中継部では単に、上記更新後のコネクション状態を参照するだけでフィルタ処理が行なえる。
また、本発明では、上記受信パケットに対するサービス処理を中継部からサーバへ振り分けるための、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをサーバからサービスリストに登録させる。
このため、サーバから、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを中継部のサービスリストへ転送することで、中継部によるパケットの振り分け先のサーバを変更できる。
以上より本発明においては、サービス処理を行なうサーバの追加・変更等を行なう場合であってもその変更を容易に行なうことが可能になる。また、中継処理を高速に行なわせることが可能になる。
以下、本発明を実施するための最良の形態を、図面を参照しながら詳細に説明する。
図1は、本発明に適用される階層型パケット処理技術の原理を説明するための図である。本階層型パケット処理技術は、異種または同種のネットワーク間に接続される中継システムにおいて好適に適用される技術であり、受信パケットに対するパケットサービス処理を中継部とサーバとに振り分けて行なわせることによりパケットの高速中継処理を実現させる。
同図は、上記中継部及び上記サーバの、上記パケットサービス処理を行なう処理系の論理ブロック図である。
同図の中継部1には、呼出部1−1、サービス処理部1−2、及び仮想サービス処理部1−3が構成される。また同図のサーバ2には、仮想呼出部2−1、外部サービス処理部2−2が構成される。
上記中継部1の呼出部1−1は、受信パケットに応じてサービス処理部1−2または仮想サービス処理部1−3を呼び出し、サービス処理部1−2または仮想サービス処理部1−3に対し、当該受信パケットに対する各自のサービス処理を互いに独立して実行させる。
上記サービス処理部1−2は、例えばタイマー更新処理やパケット通過/廃棄処理などのパケットbyパケット処理を、受信パケットに該当のコネクション状態を管理する後述のコネクション状態管理部を参照しながら当該受信パケットに実行する。
また上記仮想サービス処理部1−3は、当該受信パケットに対するサービス処理の実行を上記サーバ2の仮想呼出部2−1に委託し、更に該仮想呼出部2−1から当該サービス処理の実行結果を受け取ることにより、上記サーバ2で実行されたサービス処理(以下、外部サービス処理と呼ぶ)を、当該仮想サービス処理部2−1であたかも実行したかのうように上記呼出部1−1に見せかける。上記外部サービス処理の好適な例としては、受信パケットの上位レイヤを分析して上記コネクション状態管理部の対応コネクションの状態を更新するステートフル処理が挙げられる。
一方、上記サーバ2の外部サービス処理部2−2は、上記仮想呼出部2−1によって仮想的に呼び出され、上記中継部1の仮想サービス処理部1−3から上記仮想呼出部2−1に委託された外部サービス処理を実際に実行し、その実行結果を仮想呼出部2−1に与える。そして仮想呼出部2−1は、上記中継部1の仮想サービス処理部1−3に対してその実行結果を返す。このとき、上記外部サービス処理として上記ステートフル処理が適用される場合は、上記コネクション状態管理部をサーバ2から更新可能なように構成し、上記コネクション状態管理部の対応個所の更新も行なう。
なお、中継部1から如何なる種類のサービス処理をサーバ2に委託するか、当該サービス処理を如何なるサーバ2へ振り分けるかについての情報登録や登録情報の変更は、サーバ2及び仮想サービス処理部1−3が行なう。
このように本階層型パケット処理の技術によれば、受信パケットに対するサービス処理を中継部1だけでなく、サーバ2に実行させることができる。この場合、特に、中継部1においてパケットbyパケット処理を行なわせ、サーバ2においてコネクション状態管理部を更新する複雑で重たい処理(ステートフル処理)を行なわせれば、中継部1でコネクション状態管理部を更新するための上記複雑で重たい処理を行なう必要はなくなる。このため中継部1では、上記コネクション状態管理部を参照して受信パケットの通過/廃棄を決定する、或いはタイマーを更新するなど、単純で軽い処理を行なわせることが可能になる。そして更に、中継部1とサーバ2のサービス処理を互いに独立して行なわせるため、処理時間のかかるサーバ2のサービス処理が終わるのを待つことなく中継部1のサービス処理を次々に受信パケットに対して行なえ、パケット中継が高速になる。また、如何なるサーバ2で如何なる外部サービス処理が実行されようとも、中継部1の呼出部1−1からはある所定のサービス処理に見える仮想サービス処理を呼び出すだけなので、各種サービス処理を呼び出す呼出部1−1の呼び出し設定やパケットbyパケット処理を行なう各部や設定を変更することなく、受信パケットに対して実行させる外部サービス処理の種類や当該外部サービス処理を行なうサーバの転送先を変更できる。また、中継部1の呼出部1−1による外部サービスの呼び出しが、あたかもサーバ2の仮想呼出部2−1から行なわれているかのように仮想化させているため、サーバ2の外部サービス処理部2−2も、相対する中継部1の設定変更を意識する必要がない。
そして、特に、上記仮想サービス処理部1−3及びサーバ2の各部の機能をソフトウエアで実現し、パケットbyパケット処理を行なう各部をハードウエアで実現することで、パケット中継処理の高速化と、外部サービス処理の設定変更に対する柔軟性とを享受できる。
続いて、上記論理ブロックの実装例を示す。
なお本例では、Linux(登録商標)において本メカニズムを実装した場合の例を示すこととする。
図2(a)は、図1の中継部1の実装例である。
同図によると、上記中継部1は、「NF_HOOK」10−1、パケットbyパケット処理カーネル関数を提供するサービス処理部10−2、及び仮想ボトムハーフ処理部10−3によって構成することができる。
同図の「NF_FOOK」10−1はカーネル内の機能である。当該「NF_FOOK」10−1は、受信パケットのヘッダ情報或いは、当該受信パケットに対するコネクションの状態が記述された不図示のコネクション状態管理テーブルを参照し、当該受信パケットは、上記サービス処理部10−2が提供するサービス処理を実行させるものであるか、または上記仮想ボトムハーフ処理部10−3が提供するサービス処理を実行させるものであるか判定する。
当該判定により、上記サービス処理部10−2が提供するサービス処理を当該パケットに対して実行させるものである場合は、該当するパケットbyパケット処理カーネル関数によって提供される処理を実行させ、その処理結果を得る。また、上記判定結果が、上記仮想ボトムハーフ処理部10−3が提供するサービス処理(すなわち外部サービス処理)を当該パケットに対して実行させるものである場合は、当該パケットを仮想ボトムハーフ処理部10−3に渡し、該仮想ボトムハーフ処理部10−3からサービス処理後のパケットを得る。
サービス処理部10−2は、パケットbyパケット処理カーネル関数が呼び出されると、受信パケットに対し、カーネルに実装された対応処理(例えばタイマー更新やコネクション状態管理テーブルの参照に基づくフィルタリング処理など)を実行する。
仮想ボトムハーフ処理部10−3は、上記「NF_FOOK」10−1に対し該「NF_FOOK」10−1から渡されたパケットを自身で処理しているかのように見せかけ、その実際の処理をサーバ2に行なわせる。本例では、当該仮想ボトムハーフ処理部10−3はユーザプロセスとして記述する。従って、仮想ボトムハーフ処理部10−3には、カーネル内の機能である上記「NF_FOOK」10−1と上記ユーザプロセス間で処理の交換ができるように、カーネルから提供される処理依頼キュー(ip queue)10−3−1が使用される。また、当該仮想ボトムハーフ処理部10−3には、更に、上記処理依頼キュー10−3−1との間で処理を交換するための処理取り出し/書き込み機能10−3−2と、当該処理(パケットに対する外部サービス処理)の処理依頼を図1のサーバ2に転送するための転送機能10−3−3とをプロキシスレッドFPの形態で備える。
転送機能10−3−3は、受信パケットに対して実行する外部サービス処理の識別情報や当該外部サービス処理を実行させるサーバ2の情報を書き替え自在に記録したサービスリストを備え、当該サービスリストに基づいて、受信パケットに対する所定の外部サービス処理を所定のサーバ2へ委託する。また、サーバ2から送信された情報(例えばサービスリストの更新情報、外部サービス処理の結果情報など)を受信する。
上記処理取り出し/書き込み機能10−3−2は、上記処理依頼キュー10−3−1から処理情報を取り出し、サーバ2で外部サービス処理ができるように処理情報を編集したり、サーバ2から送信された結果情報をこれに対応するパケットに反映させ、反映パケットを上記処理依頼キュー10−3−1に書き込んだりする。
図2(b)は、図1のサーバ2の実装例である。
同図によると、上記サーバ2は、仮想「NF_FOOK」20−1、「フックボトムハーフ実行カーネル関数」20−2によって構成することができる。
同図の仮想「NF_FOOK」20−1は、中継部1に対して処理応答(例えば外部サービス処理の処理結果など)を返すための転送機能20−1−1と、「フックボトムハーフ実行カーネル関数」20−2によって提供されるサーバ2のカーネル内の処理を呼び出す処理呼出機能PとをプロキシスレッドSPの態様で備える。そして更に、当該仮想「NF_FOOK」20−1では、上記処理呼出機能Pの一部(すなわち同図の処理呼出機能K)をカーネル内に配置させる。なお、本例では「フックボトムハーフ実行カーネル関数」20−2においてフックボトムハーフ機能が適用されているが、これは、優先して行なわなければならない処理を優先的にCPU(中央処理装置)に実行させる機能であり、当該「フックボトムハーフ実行カーネル関数」として登録されている処理は、上記優先処理の終わったタイミング(例えばCPUの空き時間等)に実行される。
上記転送機能20−1−1は、中継部1から送信された処理依頼を受け付けたり、該処理依頼に対して実行した外部サービス処理の結果を該当する中継部1へ転送する。また、中継部1の転送機能10−3−3に備えられるサービスリストの更新(外部サービスの種類の追加・削除・変更や当該外部サービスを提供するサーバ情報の追加・削除・変更など)を行なう。
上記処理呼び出し機能Pは、システムコールにより、カーネル内の処理呼び出し機能Kを介して上記「フックボトムハーフ実行カーネル関数」20−2を呼び出し、転送機能20−1−1によって受信した処理依頼に基づく処理を実行させる。そして、その実行結果を受け取ると転送機能20−1−1に渡す。
なお、上記処理では、適宜、不図示のコネクション状態管理テーブルが更新される。仮に、上記コネクション状態管理テーブルがサーバ2と中継部1にそれぞれ装備されているとすると、上記サーバ2のコネクション状態管理テーブルの更新を基に、サーバ2の転送機能20−1−1及び中継部1の転送機能10−3−3を介して中継部1のコネクション状態管理テーブルの同期をとることができる。このように中継部1及びサーバ2のそれぞれにコネクション状態管理テーブルを装備すれば、サーバ2のコネクション状態管理テーブルを状態の書き替え対象とし、中継部1のコネクション管理テーブルを参照やタイマーの更新を対象とする使い分けができる。
また、「フックボトムハーフ実行カーネル関数」20−2側には、自己のカーネル内の「NF_FOOK」から呼ばれたように見せかけることができる。
言うまでもないことだが、上記中継部1及びサーバ2は、それらの独立した処理を共通のCPUで実行させる中継システム(以下、階層型パケット処理システムと呼ぶ)、並びに、異なるCPUで実行させる階層型パケット処理システムに実装できる。特に共通のCPUを持つ階層型パケット処理システムに実装した場合は、上記フックボトムハーフ機能により、中継部1のパケットbyパケット処理を優先的にCPUで実行させ、サーバ1の外部サービス処理は上記CPUの空き時間などを利用して行なわせることができる。
図3は、通信ケーブルを介して接続される異なる装置(中継装置及びサーバ)に上記中継部1とサーバ2を別々に実装した場合の上記階層型パケット処理システムの機能ブロック図である。
本例の継装置300とサーバ350によって構成され、互いに通信ケーブルを介して接続されている。
同図に示される階層型パケット処理システム30の機能ブロック図では、上記中継装置300とサーバ350が備えている機能を装置300、350毎に分けて示している。同図に示されるように、上記中継装置300にはカーネル部301と同図に破線で囲まれる常駐型プログラム(以下、デーモンと呼ぶこととする)302が備えられ、上記サーバ350にはカーネル部351と同図に破線で囲まれるデーモン352が備えられている。
上記デーモン302は、同図に示されるように、マウントスレッド303、シグナリングスレッド304、プロキシスレッド305、及び、後述する例えば受信表、振分表、テーブルIDなどのサービスリストを備えている。また、上記デーモン352も同様な機能を有するスレッド(マウントスレッド353、シグナリングスレッド354、及びプロキシスレッド355)及び、後述の例えば送信表、受信表、テーブルIDなどの転送情報(上記サービスリストに対応する情報を含む)を備えている。
上記各マウントスレッド303、353は、中継装置300に設定されているパケット取り込み用のネットワークインタフェース(同図のIF1及びIF2)と、サーバ350に仮想的に設定させるネットワークインタフェース(同図の仮想IF1及び仮想IF2)とのマッピング情報を両装置300、350上に作成するプロセス(マウントプロセス)である。
管理者がサーバ350においてマウントコマンド356を実行することにより、サーバ350のマウント情報357の中からIFが指定され、そのIFに対するマウント要求が中継装置300に送信される。中継装置300では管理者が予め中継装置300においてマウント許可リスト設定コマンド306を実行しており、マウント許可リスト307にマウントを許可するIFを設定している。このため、サーバ350から送信されたマウント要求は、上記マウント許可リスト307の設定内容(当該IFに対してマウントを許可する、または、許可しないの設定)に基づき、上記マウント要求のあったIFに対するマウント許可の応答をサーバ350に返信する。このマウントプロセスにより、IFトンネル対応情報が中継装置300の受信表308及びサーバ350の送信表358に設定され、サーバ350上に中継装置300の実IFが仮想的に作成される。
なお、管理者により上記マウント許可リスト設定コマンド306が実行されると、例えば、中継装置300上のネットワークインタフェースの中で、サーバ350の外部サービス処理対象に指定するネットワークインタフェース(同図におけるIF1、IF2)を後述するフックハンドラに登録しておくことができる。
また、サーバ350が複数存在する場合には上記サービスの提供対象とする上記中継装置300上のネットワークインタフェースを複数のサーバ350上の仮想IFへ対応づける必要があるため、上記マウントプロセスでは、上記中継装置300のネットワークフェースと複数のサーバ350の仮想IFとのマッピング情報を、プロセスの持つポート番号を用いて上記中継装置300の受信表308及びサーバ350の送信表358に設定する。
上記各シグナリングスレッド304、354は、サーバ350で提供する外部サービス処理を中継装置300から利用できるように設定するためのプロセス(シグナリングプロセス)である。当該シグナリングプロセスでは、中継装置300上で外部サービス処理が呼び出された時にその処理依頼メッセージを中継装置300から所定のサーバ350へ転送できるようにするために、両装置300、350間にその転送表を設定する。このシグナリングプロセスでは、例えば、管理者が同図のサーバ350上でサービス起動コマンド359を実行して、サーバ350が備える所定のサービスモジュールを中継装置300から呼びだしできるように起動し、中継装置300と該中継装置が呼び出すサーバ350のサービスモジュールとの対応表を中継装置300の振分表309及びサーバ350の受信表359に設定する。なお、この処理については後に詳しく説明することにする。
また、デーモン302及びデーモン352は、それぞれ、テーブルID310及びテーブルID360を備える。これらには、中継装置300のカーネル部301及びサーバ350のカーネル部351に共に備えられている後述のステートテーブル(上記コネクション状態管理テーブルに一部が対応)の場所が指定されている。
上記プロキシスレッド305、355は、中継装置300において後述のコネクショントラッキング処理により検出された特定のパケットをサーバ350で処理させたり、中継装置300及びサーバ350の各カーネル部301、351に実装された後述のステートテーブルを同期させるためのプロセス(プロキシプロセス)である。
上記プロキシスレッド305は、カーネル部301から上記特定のパケットを受信し、パケットの全てまたは該パケットの内で外部サービス処理に必要な情報(以下、必要情報とする)のみ抽出し、上記マウントプロセス及びシグナリングプロセスにより設定された送信表308及び振分表309に従って該当サーバ350のプロキシスレッド355に上記パケットまたは上記必要情報を含む処理依頼メッセージを送信する。一方、上記プロキシスレッド355は上記処理依頼メッセージを受け取るとカーネル部351にその処理を渡して該当のサービス処理を実行させ、該カーネル部351からその処理結果を受け取る。プロキシスレッド355は、上記マウントプロセス及びシグナリングプロセスにより設定された送信表358及び受信表359に従って、その処理結果(例えば、変更情報や、パケットの通過や廃棄を知らせる情報など)を処理応答メッセージとして上記プロキシスレッド305に送信する。そして、プロキシスレッド305は、カーネル部301にその処理結果を返す。また更に、プロキシスレッド355は、カーネル部351に実装されたステートテーブルの更新を検出すると、上記テーブルIDに指定されたプロキシスレッド305に対し、テーブル同期メッセージとしてその更新情報を送信し、プロキシスレッド305はカーネル301内に実装されたステートテーブルの更新を行なう。
次にカーネル部について説明する。
中継装置300のカーネル部301には、パケットの処理経路が太い矢印で示されている。本例の処理経路には5つのフック処理部311〜315と二つのルーティング処理部316(316−1、316−2)とが実装されている。また更に、フック情報テーブル317、フックハンドラ318、ステートテーブル319、及びフィルタルール320が実装されている。
上記フック情報テーブル317は、例えばタイマー更新処理やパケットの通過・パケットの廃棄を行なうフィルタ処理など、簡易処理を行なうパケットbyパケット処理、或いは複雑な処理をサーバに委託するコネクショントラッキング(またはコントラック)処理(以下では、一部にパケットbyパケット処理を含んでいる場合もコネクショントラッキング処理と呼ぶこととする)など、複数の処理を登録することができるテーブルである。同図には、上記処理経路のパケットの取り込み口(同図のIF1)に最も近い位置に示されるフック処理部311のフック情報テーブル317のみが示されているが、その他の各フック処理部312〜315に対してもそれぞれフック情報テーブルが備えられている。各フック処理部311〜315は、各フック処理部311〜315に対応するフック情報テーブルに登録された処理を受信パケットに対して順じ実行する。
本例では、フック処理部311及びフック処理部314においてコネクショントラッキング処理を実行するようにフック情報テーブルが設定され、その他のフック処理部312、313、315ではフィルタ処理(同図のルール設定部321によって書き替え自由にフィルタリングのポリシーが定義づけされる上記フィルタルール320や、セッション状態を管理する後述のステートテーブル319を参照し、受信パケットの通過・廃棄を判断する処理)を実行するようにフック情報テーブルが設定されている。
上記フックハンドラ318は、上記フック情報テーブル317に設定されているコネクショントラッキング処理の際に呼び出される機能であり、当該フックハンドラ318に基づいて受信パケットに対するコネクショントラッキング処理を行なう。このコネクショントラッキング処理が実行されると、適宜、上記ステートテーブル319が参照される。
なお、特に示されていないが、フック情報テーブルにコネクショントラッキング処理が設定されているフック処理部314においても、上記フック処理部311と同様な構成をとっている。
また、フック情報テーブルにフィルタ処理が設定されているその他のフック処理部からも、上記ステートテーブル319及びフィルタルール320を参照できるように構成されている。
上記フック処理部311(同様にフック処理部314)において上記コネクショントラッキング処理が実行されると、例えば上記パケットbyパケット処理が行なわれる場合はタイマ更新を行なったら直ちに先の処理部に当該パケットを渡し、外部委託処理が行なわれる場合は、同図に示される処理依頼キュー(ip queue)322に当該パケットをキューイングして処理をサーバ350に委託して、当該フック処理部311(同様にフック処理部314)で次のパケットを受信する。この処理依頼キュー311は、カーネル部301の機能であり、カーネル部301からパケットを借りてきて当該パケットをユーザ空間で取り扱えるようになる仕組みを提供する。
なお、カーネル部301の処理依頼キュー322とデーモン302との通信は、同図のカーネルソケット(NETLINK)323を介して行なわせる。
また上記にも述べたが、上記ステートテーブル319と対になるステートテーブルがサーバ350のカーネル部351に実装されている。本例では、互いのステートテーブルの同期を実現する仕組みとして、中継装置300のカーネル部301及びサーバ350のカーネル部351に示されるソケット(CT−NETLINK)324によって提供している。
一方、サーバ350のカーネル部351には、フックボトムハーフ361、サービス呼出モジュール362、及び、中継装置300のカーネル部351に実装されているステートテーブル319と対となるステートテーブル363が実装されている。
上記フックボトムハーフ361は、ボトムハーフハンドラ(カーネル内で待ち行列に登録されたルーチンを処理する仕組み)を備え、上記サービス呼出モジュール362の呼びだしに応じて、該当するサービスモジュールをCPUの空き時間に実行し、その処理結果をサービスモジュールに返す。
また、該実行結果に応じて上記ステートテーブル363を更新する。
上記サービス呼出モジュール362は、デーモン351との通信を同図に示されるカーネルソケット364を介して行なう。
なお、同図に示されるソケット(CT−NETLINK)365は、先程も説明したが、サーバ350のカーネル351に実装されるステートテーブル363と中継装置300のカーネル部301に実装されるステートテーブル319との同期をとるための仕組みである。
上記ステートテーブル363は、現在認識されているコネクションの状態を管理するテーブルであり、本例においては、今後コネクション作成が期待されるコネクションの情報を管理する不図示のexpectテーブルと共に用いる。なお、ステートテーブル319は単独で用いる。
図4は、上記ステートテーブル319、363及び、該ステートテーブル363と共に用いる図3に不図示の上記expectテーブルのテーブル例である。
図4(a)は、上記ステートテーブル363(または319)の一例である。
同図に示されるステートテーブル400には、コネクションを識別するための「上りtuple」欄401に現在認識されているコネクションの識別記号「T1」が登録され、当該「T1」のコネクションの属性情報が、「SRC IP」欄402、「SRC PORT」欄403、「DST IP」欄404、「DST PORT」欄405、「プロトコル種別」欄406、「L3status」欄407、「L4status」欄408、「helper」欄409、「expecting」欄410、「master」欄411、及び「timeout」欄412に設定されている。
図4(b)は、上記expectテーブルの一例である。
同図に示されるexpectテーブル450には、当該コネクションを期待した対象が「expecting」欄451に登録され、該期待したコネクションの情報が「SRC IP」欄452、「SRC PORT」欄453、「DST IP」欄454、「DST PORT」欄455、及び「プロトコル種別」欄456に設定される。
このexpectテーブル450に設定された期待コネクションは、ステートテーブル400に新たに設定される候補として利用される。
続いて、上記構成の下で行なわれる各処理の流れを図3を参照しながら以下に説明する。
図5は、図3の中継装置300のカーネル部301に示されるパケットの処理経路の処理フローである。以下の説明において図3と対応する個所には、図3の符号を用いて説明する。
IF1からパケットを受信すると、先ず最初にフック処理部311が当該パケットに対し、フック情報テーブル317に登録してある処理を順じ実行する(S500)。本例ではフック情報テーブル#1(図3のフック情報テーブル317)」にコネクショントラッキング処理が登録されているので、フック処理部311は、不図示のフックハンドラ(図3のフックハンドラ318)によりコネクショントラッキング処理を実行する。
このコネクショントラッキング処理では、例えば受信パケットの状態や、その受信パケットに対応するセッションの状態に応じて、パケットbyパケット処理や外部委託処理が行なわれる。そして、上記パケットbyパケット処理や外部委託処理が終了すると続く処理部に送られ、次の受信パケットに対して上記コネクショントラッキング処理を行なう。特に上記外部委託処理が実行された場合は、当該パケットを一時的に処理依頼キュー322に渡し、サーバ350にその処理を依頼できるので、その間、当該フック処理部311は次のパケットを受信して処理を実行できる。よって、続くパケットが外部委託処理を要するものであれば、当該パケットを上記処理依頼キュー322に更に保持させることができるので、続く受信パケットの中継処理を円滑に行なえる。なお、外部委託処理が反映されたパケットは、当該外部委託処理の結果が廃棄でなければ当該フック処理部311において、フック情報テーブル#1に登録された残りの処理が実行される。
続いて当該パケットに対する処理はルーティング処理部316−1に引き継がれ、該ルーティング処理部316−1はルーティングテーブルを検索し(S502)、当該パケットが自局宛てのパケットであるか否かを判定する(S504)。
当該パケットが自局宛てであった場合、当該パケットに対する処理はフック処理部312に引き継がれ、該フック処理部312は当該パケットに対し、フック情報テーブル317に登録してある処理を順じ実行する(S506)。本例では、該フック処理部312は、フック情報テーブル#2に登録されているフィルタ処理を順じ実行する。そして最終的に、許諾されたパケットのみをアプリケーションで受信する(S508)。
一方、ステップS504で当該パケットが自局宛てでないと判定された場合、当該パケットに対する処理はフック処理部313に引き継がれ、該フック処理部313は当該パケットに対し、フック情報テーブル317に登録してある処理を順じ実行する(S510)。本例では、該フック処理部313は、フック情報テーブル#5に登録されているフィルタ処理を順じ実行する。そして更に、当該パケットに対する処理はフック処理部315に引き継がれ、該フック処理部315は当該パケットに対し、フック情報テーブル317に登録してある処理を順じ実行する(S512)。本例では、該フック処理部315は、フック情報テーブル#4に登録されているフィルタ処理を順じ実行する。そして最終的に、許諾されたパケットのみをIF2へ送信する(S514)。
また、アプリケーションからパケットが送信されると、先ず最初にフック処理部314が、当該パケットに対し、フック情報テーブルに登録してある処理を順じ実行する。本例では、フック処理部314は、フック情報テーブル#3に登録されているコネクショントラッキング処理を順じ実行する(S516)。なお、当該コネクショントラッキング処理についてはフック処理部311と同等の処理を行なうものであるため、ここでの詳しい説明は省略する。
続いてルーティング処理部316−2においてルーティング処理が実行され(S518)、更に、当該パケットに対する処理はフック処理部315に引き継がれ、該フック処理部315は当該パケットに対し、フック情報テーブル317に登録してある処理を順じ実行する(S512)。本例では、該フック処理部315は、フック情報テーブル#4に登録されているフィルタ処理を順じ実行する。そして最終的に、許諾されたパケットのみをIF2へ送信する(S514)。
図6は、シグナリングシーケンスの一例である。
当該シグナリングシーケンスは、サーバ350で提供しているサービス処理を中継装置300側から利用可能なように設定する処理である。
先ず、サーバ350でサービス起動コマンド359の受付処理を行なう(SS600)。
続いて、上記受付処理に基づいてカーネル351のサービス呼出モジュール362を起動する(SS602)。
更に続いて、カーネル351のフックボトムハーフ361で提供するサービスモジュールを起動する(SS604)。この処理では、外部サービス処理用としてサービスモジュールをカーネル部351に組み込む。
そして、サービスとトンネル番号とを対応付けてから、払い出しを行ない(SS606)、当該サービスの開始を通知するサービス開始通知を中継装置300に送信する(SS608)。
中継装置300では、サーバ350から上記サービス開始通知を受信すると当該外部サービス処理に対するサービス情報(例えば、外部サービス処理の識別子/当該外部サービス処理が適用されるパケットの種類(例えは送信元アドレスや送信先アドレスなど)/当該外部サービス処理を中継装置300から委託するサーバ350のIPアドレスやトンネル番号など)を振分表309に登録する(SF600)。
更に、例えば外部委託処理の実行の有無を上記フックハンドラ318で切り替え設定できるようにしている場合には、該当のパケットを処理依頼キュー322に転送するように上記フックハンドラ318を設定する(SF602)。
そして、中継装置350は、上記サービス開始通知の受け付けをした旨をサービス開始応答としてサーバ350に返信する(SF604)。
サーバ350では、中継装置300から上記サービス開始応答を受信すると、当該外部サービス処理の登録結果をコマンドラインに表示する(SS610)。
図7は、上記シグナリングシーケンスにおいてサーバ350と中継装置300間で取り交わされるメッセージの例である。
図7(a)はメッセージフォーマットであり、図7(b)は上記サービス開始通知のメッセージ内容の例であり、図7(c)は上記サービス開始応答のメッセージ内容の例である。
図7(a)のメッセージフォーマット700は、「共通ヘッダ」701に、各メッセージの送信元機器のIPアドレスを格納する「送信元IPアドレス」の欄702と、各メッセージの送信先機器のIPアドレスを格納する「送信先IPアドレス」の欄703と、各メッセージの種別を格納する「種別」の欄704と、メッセージ長を格納する「メッセージ長」の欄705が構成されている。また、「メッセージ固有部」の欄706に、サービスの開始や停止を示す情報を格納する「詳細コード」707と、サーバ350から中継装置300に提供する外部サービスの識別情報を格納する「サービスID」の欄708と、サーバ350から提供される外部サービスに対する中継装置300の受け入れ結果を示す情報を格納する「処理結果」709の欄が構成されている。
図7(b)に示されるように、サービス開始通知のメッセージ710には、上記メッセージフォーマット700に従って以下の内容を格納する。
上記「送信元IPアドレス」の欄702に、当該サービス開始通知メッセージ710の送信元機器である「サーバ350のIPアドレス」を格納し、上記「送信先IPアドレス」の欄703に、当該サービス開始通知メッセージ710の送信先機器である「中継装置300のIPアドレス」を格納し、上記「種別」の欄704に、サービス開始通知を知らせる情報を格納し、上記「メッセージ長」の欄705にメッセージ長を格納する。また更に、上記「詳細コード」707の欄に、サービスの開始や停止を示す情報を格納し、上記「サービスID」の欄708に、サーバ350から中継装置300に提供する外部サービスの識別情報(外部サービスの識別子や当該外部サービスを適用するパケットの種類)を格納する。なお、上記「処理結果」709の欄はサービス開始通知においては未使用である。
図7(c)に示されるように、サービス開始応答のメッセージ720には、上記メッセージフォーマット700に従って以下の内容を格納する。
上記「送信元IPアドレス」の欄702に、当該サービス応答通知メッセージ720を送信する送信元機器である「中継装置300のIPアドレス」を格納し、上記「送信先IPアドレス」の欄703に、当該サービス開始通知メッセージ710の送信先機器である「サーバ350のIPアドレス」を格納し、上記「種別」の欄704に、サービス開始の応答を示す情報を格納し、上記「メッセージ長」の欄705にメッセージ長を格納する。また更に、上記「詳細コード」707の欄に、サービスの開始や停止を示す情報を格納し、上記「サービスID」の欄708に、中継装置300で利用するサーバ350の外部サービスの識別情報を格納し、上記「処理結果」709の欄に正常に処理されたかどうかを示す情報を格納する。
図8は、中継装置300のフック処理部311(またはフック処理部314)におけるコネクショントラッキング処理の実行時に外部委託処理を行なった場合の、中継装置300とサーバ350におけるパケット処理シーケンスである。
先ず、中継装置300のフック処理部311(またはフック処理部314)でパケットを受信する(S800)。
続いて、上記フック処理部311(またはフック処理部314)でのコネクショントラッキング処理の実行により、当該パケットが外部委託処理を行なうべきパケットであるか否かチェックし(S802)、更に、サービス対象IFから受信したパケットであるか否かチェックする(S804)。
何れもYESである場合、当該パケットを処理依頼キュー322に渡し、処理依頼キュー322からプロキシスレッド305に当該パケットが引き渡される。プロキシスレッド305では当該パケットにおいて外部サービス処理に必要な情報(部分パケット情報)を抽出し、当該部分パケット情報及び、受信表308及び振分表309に登録された情報を基に、処理依頼メッセージを作成する(S806)。この際、送信先となるサーバ350のIPアドレスが共に同じである場合は、複数の処理依頼をまとめて一つの処理依頼メッセージに格納することもできる。
そして、上記処理依頼メッセージをサーバ350へ送信する(S808)。
サーバ350では、中継装置300から送信された上記処理依頼メッセージをプロキシスレッド355で受け取ると、当該処理依頼メッセージによって指定されている処理に該当するサービスモジュールをサービス呼出モジュール362を介してフックボトムハーフ361から呼び出し、例えばCPUの空き時間などを利用して処理を実行させる(S810)。このフックボトムハーフ361における処理は、他の処理を優先的に実行させて、それらの処理の空き時間などにフックボトムハーフに登録されるサービスモジュールを実行させる。
続いて、フックボトムハーフ361における当該サービスモジュールの処理結果を上記サービス呼出モジュール362を介してプロキシスレッド355に渡し、その処理結果がステートテーブルを更新するものであればステートテーブル363を更新する(S812)。
そして、プロキシスレッド355では、当該処理結果及び、送信表358及び受信表359に登録された情報を基に、処理応答メッセージを作成し、該処理応答メッセージの処理依頼を行なった中継装置300へ送信する(S814)。この送信により、中継装置300の処理依頼キュー322では、当該処理結果に応じて当該パケットが破棄されたり、当該処理結果が当該パケットに反映されて、元のフック処理部311(またはフック処理部314)に当該反映後のパケットが返されたりする。
更に、ステートテーブル363の更新が行なわれた場合は、当該更新情報を含むテーブル同期メッセージがサーバ350で作成され(S816)、該テーブル同期メッセージが中継装置300へ送信される(818)。
中継装置300は、上記テーブル同期メッセージをサーバ350から受け取ると、中継装置300のステートテーブル319に当該更新情報を反映し(S820)、テーブル同期応答メッセージをサーバ350に返す(S822)。こうして、互いのステートテーブルの同期をとることができる。
そして、中継装置300は、パケット中継処理を行なう(S824)。
図9及び図10に、上記各種のメッセージの例を示す。
図9(a)は、上記処理依頼メッセージの例である。
図6のメッセージフォーマットと比較すると、本処理依頼メッセージ900は、「種別」901の欄に処理依頼メッセージを示す情報が格納され、「シーケンス番号」の欄902に本処理依頼のシーケンス番号が格納され、「MARK値」の欄903にサービス呼出元識別子が格納される。そして、一つの処理依頼メッセージに対し処理依頼を複数まとめて格納させることができる。
図9(b)は、上記処理応答メッセージの例である。
図6のメッセージフォーマットと比較すると、本処理応答メッセージ950は、「種別」951の欄に処理応答メッセージを示す情報が格納され、「シーケンス番号」の欄952に本処理依頼のシーケンス番号が格納され、「MARK値」の欄953にサービス呼出元識別子が格納される。そして、これまた一つの処理応答メッセージに対し処理応答を複数まとめて格納させることができる。
図10(a)は、上記テーブル同期メッセージの例である。
本テーブル同期メッセージ1000は、「種別」の欄1001にテーブル同期メッセージを示す情報が格納され、「サービスID」の欄1002に、同期するテーブルを認識するために使用する対象サービスの識別子が格納され、「メッセージタイプ」の欄1003に更新や削除等のメッセージタイプが格納される。そして、実際の更新情報が「オプション属性」の欄1004に格納される。
図10(b)は、上記テーブル同期応答メッセージの例である。
本テーブル同期メッセージ1050は、「種別」の欄1051にテーブル同期応答メッセージを示す情報が格納され、「サービスID」の欄1052に、同期するテーブルを認識するために使用する対象サービスの識別子が格納され、「処理結果」の欄1053に更新の結果(正常や異常など)が格納される。
図11は、中継装置350のフックハンドラ318によって実行されるコネクショントラッキング処理の一例である。
フック処理部311(またはフック処理部314)でパケットを受信し、フック情報テーブル317に指定されたコネクショントラッキング処理が呼び出されると、フックハンドラ318により以下の処理が実行される。
先ず、当該パケットがフラグメントパケットであるか否かパケットヘッダから判定される(S1100)。
当該パケットがフラグメントパケットであると判定された場合、仮想サービス処理部が呼び出され、該仮想サービス処理部に当該パケットに対する処理が引き継がれる(S1102)。上記仮想サービス処理部に対する当該パケット処理の引き継ぎは、当該パケットが処理依頼キュー322に渡される事によって行なわれる。
ステップS1100において、当該パケットがフラグメントパケットでないと判定された場合、続いて当該パケットの状態を見るために、先ず、パケットヘッダの「送信元IPアドレス(SRC IP)」、「送信元ポート番号(SRC PORT)」、「送信先IPアドレス(DST IP)」、及び「送信先ポート番号(DST PORT)」をキーにステートテーブル319が検索される(S1104)。
そして、当該パケットが中継装置300内で処理できるパケットであるか否かが、当該パケット及び上記ステートテーブル319の検索によりヒットした属性情報を基に判定される(S1106)。
本例では、L3コネクションの状態が「IPS_ASSURED」であり、L4コネクションの状態が「eES」であり、且つTCP(Transmission Control Protocol)フラグがSYN/FIN/RSTの何れかでない場合を、中継装置内で処理可能なパケットとする判定基準にしている。よって、これからコネクションを確立しようとするパケット(TCPフラグがSYNであるパケット)やコネクションを切るパケット(TCPフラグがFINであるパケット)などは上記判定基準を満たさないので、このような場合は、仮想サービス処理部が呼び出され、該仮想サービス処理部に当該パケットに対する処理が引き継がれる(S1108)。
一方、上記判定基準を満たすパケットであった場合は、ステートテーブル319のセッションをタイマリフレッシュ(タイムアウト値の更新)する(S1110)。
そして当該コネクショントラッキング処理の呼出元へ処理が戻され(S1112)、フック情報テーブルに続く処理があれば当該パケットに対してその処理が実行される。
なお、上記仮想サービス処理部に対して処理が引き継がれた場合は、次のパケットがステップS1100から実行される。
図12は、上記コネクショントラッキング処理において処理を引き継いだサーバ350の、上記コネクショントラキング処理の引継ぎ処理例である。
中継装置300から処理依頼メッセージを受信すると、先ず、デフラグメント処理の依頼であるか否かを判定する(S1200)。
デフラグメント処理であると判定した場合は、上記処理依頼メッセージに格納されている必要情報(フラグメントパケットの全体とすることも可能であるが、本例ではパケット全体またはフラグメントパケットから取り出した必要情報が処理依頼メッセージに格納されているものとする)に対してデフラグメント処理を実行する(S1202)。
そして、当該必要情報に対するデフラグメント処理を終えると、当該必要情報に関する全ての情報のデフラグメント処理が完了したか否か判定し(S1204)、完了していないと判定した場合は、当該必要情報をサーバ350で保持し、当該必要情報をサーバ350で保持している旨を中継装置300に対して送信する(S1206)。この処理により、サーバ350に保持されている上記必要情報に関連するフラグメントパケットが中継装置300で受信されると、中継装置350から当該サーバ350に対してその受信パケットの必要情報が送信され、当該サーバ350ではこれらの必要情報に対してデフラグメント処理を繰り返し実行する。そして、例えば予め決めた所定時間内に当該デフラグメント処理対象の全ての必要情報が当該サーバ350で受信されることにより、デフラグメント処理が完了する。
そして、ステップS1200においてデフラグメント処理ではないと判定した場合、またはステップS1204においてデフラグメントが完了したと判定した場合、当該必要情報の属するコネクションを、ステートテーブル363から検索する(S1208)。この検索は、当該必要情報に付加された「送信元IPアドレス(SRC IP)」、「送信元ポート番号(SRC PORT)」、「送信先IPアドレス(DST IP)」、及び「送信先ポート番号(DST PORT)」をキーに検索できる。
ここでステートテーブル363に当該コネクションが登録されているか否かを判定し(S1210)、ない場合は、当該必要情報に含まれているコネクションの属性情報をステートテーブル363に新規登録する(S1212)。
ステップS1210において登録があると判定された場合、或いはステップS1212においてステートテーブル363に新規登録されると、図4(a)のステートテーブル400の「L3status」欄407の設定情報を参考に、当該必要情報のパケットのセッションにおけるイベント特性を決定する(S1214)。例えば、「当該パケットがオリジナル方向であるか」、「当該パケットがリプライ方向であるか」、「パケットが両方向に流れたか」、「期待しているコネクションであるか」、または「速くエクスパイアしてしまわないようにセットしたか」などの設定情報に応じてイベント特性を決め、当該イベント特性をテーブルに設定する。
そして、ICMP(Internet Control Message Protocol)の場合、上記イベント特性が「パケットがリプライ方向の場合に設定される(IP_CT_DIR_REPLY)」であれば当該パケットのコネクションの登録情報をステートテーブル363から削除し、それ以外のイベント特性の場合はステートテーブル363の当該コネクションのタイマを更新する(S1216)。
また、UDP(User Datagram Protocol)の場合、上記「L3status」欄407の設定情報が「パケットが両方向に流れた状態(IPS_SEEN_REPLY)」であれば「IPS_ASSURED」を上記「L3status」欄407に設定し、更に当該コネクションのタイマをリフレッシュする。それ以外の場合はステートテーブル363の当該コネクションのタイマをリフレッシュする(S1218)。
また、TCPの場合、TCPプロトコルの状態遷移表を基に「L4status」の状態を更新する。
図13は、「L4status」の状態変化を示す図である。
図13(a)は、上記イベント特性がオリジナル方向の場合であり、図13(b)は、上記イベント特性がリプライ方向の場合である。
なお、図13(c)は、TCPプロトコルの状態と上図に用いられている略号の対応表である。
図13(a)、図13(b)は、横軸に「L4status」の状態変化を示し、縦軸に受信パケットのTCPヘッダのフラグの種類を示している。但し、noneは何れのフラグもセットされていない場合である。
例えば本受信パケットイベント特性がオリジナルであり且つフラグがsynである場合の「L4status」の以前の状態が「ssS」であったならば、「sES」に更新される。
また、正しい手順の場合はIPS_ASSUREDを設定し、それ以外はタイマをリフレッシュする(S1220)。
続いて、ステートテーブル400の「helper」欄409に上位アプリケーションを更新する処理方法が定義してあるか否か判定する(S1222)。
Yesの場合、上位アプリケーションの状態を更新する(S1224)。図4(a)のステートテーブル400の例では、「helper」欄409に「ftp conntrack」が設定されている。この処理は、FTPパケットのデータ部分を参照してFTPのデータセッションを検出し、このデータセッションの情報をexpectテーブル450に登録する。
ステップS1222の判定結果がNoの場合、またはステップS1224の処理を終えると、パケットが「reply」の場合はステートテーブル400の「L3status」の欄407に「パケットが両方向に流れた状態(IPS_SEEN_REPLY)」を示すフラグを追加する(S1226)。
そして、ステートテーブル400を修正したか否か判定し(S1228)、修正していると判定された場合、当該修正個所の情報を含むテーブル同期メッセージを中継装置へ送信する(S1230)。また修正されていないと判定された場合、処理応答を中継装置へ送信する(S1232)。
以上説明してきた各処理はプログラムの形態で配布することもできる。
その場合、フロッピー(登録商標)ディスク、CD−ROM、DVDなどの記録媒体に上記プログラムやファイルを記録させて配布したり、或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムやファイルの一部、若しくは全部を配信するようにしたりすることができる。この場合、それを受け取ったユーザは、CD−ROM装置などの読み取り装置(入出力部の一部)を利用してフロッピー(登録商標)ディスクやCD−ROMやDVDなどの可搬型記録媒体から上記プログラムやファイルを外部記録部にコピーしたり、コンピュータの通信部を介してインターネットから上記プログラムやファイルを外部記録部にコピーしたりすることができる。そして、CPUで実行することにより、ユーザのコンピュータ上でも上述した機能を実現できる。
以上より、本発明の実施形態においては、サービス処理を行なうサーバの追加・変更等を行なう場合であってもその変更を容易に行なうことが可能になる。また、中継処理を高速に行なわせることが可能になる。
(付記1) 受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバからなる階層型パケット処理システムであって、上記中継部は、上記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、上記呼出部の呼び出しにより、上記受信パケットにサービス処理を行なう第一のサービス処理部と、上記呼出部の呼び出しにより、上記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、を有し、上記サーバは、上記第二のサービス処理部が上記呼出部から呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して任意のサービス処理を行なう外部サービス処理部を、有する、ことを特徴とする階層型パケット処理システム。
(付記2) 上記呼出部の呼び出しにより上記第二のサービス処理部が呼び出されると、上記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が上記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ことを特徴とする付記1に記載の階層型パケット処理システム。
(付記3) 上記外部サービス処理部は、中継部における受信パケットの中継処理で使用されてるCPUが空いた時間を利用して上記サービス処理を行なう、ことを特徴とする付記1または2に記載の階層型パケット処理システム。
(付記4) 受信パケットに対するコネクション状態を管理するコネクション状態管理部を更に有し、上記外部サービス処理部は、上記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新し、上記中継部で受信された同一のコネクション受信パケットは、上記外部サービス処理部によって更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理される、ことを特徴とする付記1乃至3の何れか一つに記載の階層型パケット処理システム。
(付記5) 上記第一のサービス処理部で行なうサービス処理をパケットbyパケット処理に限定してハードウエアで構成し、上記外部サービス処理部で行なうサービス処理をソフトウエアで構成する、ことを特徴とする付記1乃至4の何れか一つに記載の階層型パケット処理システム。
(付記6) 上記仮想サービス処理部は、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有し、上記サーバは、上記サービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、ことを特徴とする付記1乃至5の何れか一つに記載の階層型パケット処理システム。
(付記7) 上記中継部及び上記サーバはそれぞれ、受信パケットに対するコネクション状態を管理するコネクション状態管理部と、上記相互のコネクション状態管理部によって管理される上記コネクション状態を同期する同期部と、を有し、上記サーバは、上記外部サービス処理部に上記受信パケットの上位レイヤの状態を検出させ、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新し、上記中継部で受信された同一のコネクション受信パケットは、上記サーバのコネクション状態管理部の更新後の上記コネクション状態を基に上記同期部によって同期されてなる、上記中継部のコネクション状態管理部の更新後の上記コネクション状態に基づいてフィルタ処理される、ことを特徴とする付記1乃至6の何れか一つに記載の階層型パケット処理システム。
(付記8) 上記中継部は外部サービス処理部で必要な情報のみを受信パケットから取り出して上記サーバへ送信する、ことを特徴とする付記1乃至7の何れか一つに記載の階層型パケット処理システム。
(付記9) 上記中継部は上記サーバへ受信パケットを送信する際に、送信先が同一のサーバである受信パケットを複数まとめて一度に送信する、ことを特徴とする付記1乃至8の何れか一つに記載の階層型パケット処理システム。
(付記10) 受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する中継装置であって、上記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、上記呼出部の呼び出しにより、上記受信パケットにサービス処理を行なう第一のサービス処理部と、上記呼出部の呼び出しにより、上記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、上記受信パケットの上位レイヤの状態の検出に基づく情報を管理するコネクション状態管理部と、上記第二のサービス処理部が上記呼出部から呼び出されると、受信パケットの内の所定の情報を所定のサーバへ送信する送信部と、上記サーバから送信された情報を受信する受信部と、上記受信した結果を上記受信パケットまたは上記コネクション状態管理部で管理される上記情報に反映する反映部と、同一のコネクションパケットに対し、上記コネクション状態管理部で管理される上記反映後の情報に基づいてフィルタ処理するフィルタ処理部と、を有することを特徴とする中継装置。
(付記11) 上記呼出部の呼び出しにより上記第二のサービス処理部が呼び出されると、上記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が上記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ことを特徴とする付記10に記載の中継装置。
(付記12) 上記仮想サービス処理部は、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有する、
ことを特徴とする付記10または11に記載の中継装置。
(付記13) 中継装置で受信されたパケットの内の所定の情報を上記中継装置から受信するサーバであって、コネクションの状態を管理するコネクション状態管理部と、上記パケットの上位レイヤの状態を検出してサービス処理する上位レイヤ検出部と、上記上位レイヤ検出部によって検出された上記パケットの上位レイヤの状態を基に、上記コネクション状態管理部によって管理される上記パケットのコネクション状態を更新するコネクション状態更新部と、上記サービス処理の結果及び上記コネクション状態の更新情報を上記中継装置に送信する送信部と、を有することを特徴とするサーバ。
(付記14) 上記サーバは、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理する上記中継装置のサービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、ことを特徴とする付記13に記載のサーバ。
(付記15) 受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバからなる階層型パケット処理システムで行なわれる方法であって、上記中継部は、上記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出し、上記呼び出しにより第一のサービス処理部が呼び出された場合は、上記受信パケットにサービス処理を行ない、上記呼び出しにより第二のサービス処理部が呼び出された場合は、上記受信パケットに仮想的にサービス処理を行ない、上記サーバは、上記第二のサービス処理部が上記呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して実際にサービス処理を行なう、ことを特徴とする方法。
(付記16) 上記呼び出しにより上記第二のサービス処理部が呼び出されると、上記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が、続いて呼び出されたサービス処理部によって行なわれる、ことを特徴とする付記15に記載の方法。
(付記17) 上記サーバは、上記中継部における受信パケットの中継処理で使用されてるCPUが空いた時間を利用して上記サービス処理を行なう、ことを特徴とする付記15または16に記載の方法。
(付記18) 受信パケットに対するコネクション状態をコネクション状態管理部で管理し、上記サーバは、上記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新し、上記中継部は、同一のコネクション受信パケットを、上記更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理する、ことを特徴とする付記15乃至17の何れか一つに記載の方法。
(付記19) 上記中継部は、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じてサービスリスト管理部で管理し、上記サーバは、上記サービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する、ことを特徴とする付記15乃至18の何れか一つに記載の方法。
(付記20) 受信パケットを対象にサービス処理を行なって上記受信パケットを中継処理する、中継部とサーバで実行可能なプログラムであって、上記中継部において、上記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出す機能と、上記呼び出しにより第一のサービス処理部が呼び出された場合は、上記受信パケットにサービス処理を行なう機能と、上記呼び出しにより第二のサービス処理部が呼び出された場合は、上記受信パケットに仮想的にサービス処理を行なう機能と、を実現し、上記サーバにおいて、上記第二のサービス処理部が上記呼び出されると、上記第二のサービス処理部の代わりに上記受信パケットに対して実際にサービス処理を行なう機能と、を実現するプログラム。
(付記21) 上記中継部において、上記呼び出しにより上記第二のサービス処理部が呼び出されると上記受信パケットを処理依頼キューに一時的にキューイングする機能と、同一のコネクション受信パケットに対するサービス処理を上記サービス処理部で行なう機能と、を実現する付記20に記載のプログラム。
(付記22) 上記サーバにおいて、上記中継部における受信パケットの中継処理で使用されてるCPUが空いた時間を利用して上記サービス処理を行なう機能を実現する付記20または21に記載のプログラム。
(付記23) 受信パケットに対するコネクション状態をコネクション状態管理部で管理する機能と、上記サーバにおいて、上記受信パケットの上位レイヤの状態を検出する機能と、該上位レイヤの状態の検出結果を基に、上記コネクション状態管理部に管理される上記受信パケットの上記コネクション状態を更新する機能と、上記中継部において、同一のコネクション受信パケットを、上記更新された上記コネクション状態管理部の上記コネクション状態に基づいてフィルタ処理する機能と、を実現する付記20乃至22の何れか一つに記載のプログラム。
(付記24) 上記中継部において、上記受信パケットに対するサービス処理を上記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じてサービスリスト管理部で管理する機能と、上記サーバにおいて、上記サービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する機能と、を実現する付記20乃至23の何れか一つに記載のプログラム。
(付記25) 上記第一のサービス処理部はパケットbyパケットの処理を行ない、
上記外部サービス処理部は、ステートフル処理を行なう、
ことを特徴とする付記1乃至9の何れか一つに記載の階層型パケット処理システム。
(付記26) 上記第一のサービス処理部はパケットbyパケットの処理を行なう、ことを特徴とする付記10乃至12の何れか一つに記載の中継装置。
(付記27)上記サーバが上記第二のサービス処理部の代わりに上記受信パケットに対して実際に行なうサービス処理はステートフル処理である、ことを特徴とする付記15乃至19の何れか一つに記載の方法。
(付記28)上記サーバが上記第二のサービス処理部の代わりに上記受信パケットに対して実際に行なうサービス処理はステートフル処理である、ことを特徴とする付記20乃至24の何れか一つに記載のプログラム。
本発明に適用される階層型パケット処理技術の原理を説明するための図である。 本発明に適用される階層型パケット処理技術の実装例である。 階層型パケット処理システムの機能ブロック図である。 ステートテーブル319、363及び、expectテーブルのテーブル例である。 中継装置300のカーネル部301に示されるパケット処理経路の処理フローである。 シグナリングシーケンスの一例である。 メッセージの例である。 中継装置300とサーバ350におけるパケット処理シーケンスである。 メッセージの例を示す。 メッセージの例を示す。 中継装置350のフックハンドラ318によって実行されるコネクショントラッキング処理の一例である。 上記コネクショントラッキング処理において処理を引き継いだサーバ350の、上記コネクショントラキング処理の引継ぎ処理例である。 「L4status」の状態変化を示す図である。
符号の説明
1 中継部
1−1 呼出部
1−2 サービス処理部
1−3 仮想サービス処理部
2 サーバ
2−1 仮想呼出部
2−2 外部サービス処理部

Claims (14)

  1. 受信パケットを対象にサービス処理を行なって前記受信パケットを中継処理する、中継部とサーバからなる階層型パケット処理システムであって、
    前記中継部は、
    前記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、
    前記呼出部の呼び出しにより、前記受信パケットにサービス処理を行なう第一のサービス処理部と、
    前記呼出部の呼び出しにより、前記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、
    を有し、
    前記サーバは、
    前記第二のサービス処理部が前記呼出部から呼び出されると、前記第二のサービス処理部の代わりに前記受信パケットに対して任意のサービス処理を行なう外部サービス処理部を、
    有する、
    ことを特徴とする階層型パケット処理システム。
  2. 前記呼出部の呼び出しにより前記第二のサービス処理部が呼び出されると、前記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が前記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ことを特徴とする請求項1に記載の階層型パケット処理システム。
  3. 前記外部サービス処理部は、中継部における受信パケットの中継処理で使用されているCPUが空いた時間を利用して前記サービス処理を行なう、ことを特徴とする請求項1または2に記載の階層型パケット処理システム。
  4. 受信パケットに対するコネクション状態を管理するコネクション状態管理部を更に有し、
    前記外部サービス処理部は、前記受信パケットの上位レイヤの状態を検出し、該上位レイヤの状態の検出結果を基に、前記コネクション状態管理部に管理される前記受信パケットの前記コネクション状態を更新し、
    前記中継部で受信された同一のコネクションパケットは、前記外部サービス処理部によって更新された前記コネクション状態管理部の前記コネクション状態に基づいてフィルタ処理される、
    ことを特徴とする請求項1乃至3の何れか一つに記載の階層型パケット処理システム。
  5. 前記仮想サービス処理部は、前記受信パケットに対するサービス処理を前記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有し、
    前記サーバは、前記サービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、
    ことを特徴とする請求項1乃至4の何れか一つに記載の階層型パケット処理システム。
  6. 受信パケットを対象にサービス処理を行なって前記受信パケットを中継処理する中継装置であって、
    前記受信パケットを対象にサービス処理を行なう所定のサービス処理部を呼び出す呼出部と、
    前記呼出部の呼び出しにより、前記受信パケットにサービス処理を行なう第一のサービス処理部と、
    前記呼出部の呼び出しにより、前記受信パケットに仮想的にサービス処理を行なう第二のサービス処理部と、
    前記受信パケットの上位レイヤの状態の検出に基づく情報を管理するコネクション状態管理部と、
    前記第二のサービス処理部が前記呼出部から呼び出されると、受信パケットの内の所定の情報を所定のサーバへ送信する送信部と、
    前記サーバから送信された情報を受信する受信部と、
    前記受信した結果を前記受信パケットまたは前記コネクション状態管理部で管理される前記情報に反映する反映部と、
    同一のコネクションパケットに対し、前記コネクション状態管理部で管理される前記反映後の情報に基づいてフィルタ処理するフィルタ処理部と、
    を有することを特徴とする中継装置。
  7. 前記呼出部の呼び出しにより前記第二のサービス処理部が呼び出されると、前記受信パケットは処理依頼キューに一時的にキューイングされ、続く受信パケットに対するサービス処理が前記呼出部によって続いて呼び出されたサービス処理部によって行なわれる、ことを特徴とする請求項6に記載の中継装置。
  8. 前記第二のサービス処理部は、前記受信パケットに対するサービス処理を前記サーバへ振り分けるため、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理するサービスリスト管理部を有する、
    ことを特徴とする請求項6または7に記載の中継装置。
  9. 中継装置で受信されたパケットの内の所定の情報を前記中継装置から受信するサーバであって、
    コネクションの状態を管理するコネクション状態管理部と、
    前記パケットの上位レイヤの状態を検出してサービス処理する上位レイヤ検出部と、
    前記上位レイヤ検出部によって検出された前記パケットの上位レイヤの状態を基に、前記コネクション状態管理部によって管理される前記パケットのコネクション状態を更新するコネクション状態更新部と、
    前記サービス処理の結果及び前記コネクション状態の更新情報を前記中継装置に送信する送信部と、
    を有することを特徴とするサーバ。
  10. 前記サーバは、サービス処理を行なうサーバの情報及び該サーバが提供するサービス処理の識別情報とをパケットの種類に応じて管理する前記中継装置のサービスリスト管理部に対し、自己サーバの情報及び該自己サーバが提供するサービス処理の識別子とを転送する転送部を有する、
    ことを特徴とする請求項9に記載のサーバ。
  11. 受信パケットを対象にサービス処理を行なって前記受信パケットを中継処理する、中継部とサーバからなる階層型パケット処理システムで行なわれる方法であって、
    前記中継部は、
    前記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出し、
    前記呼び出しにより第一のサービス処理部が呼び出された場合は、前記受信パケットにサービス処理を行ない、
    前記呼び出しにより第二のサービス処理部が呼び出された場合は、前記受信パケットに仮想的にサービス処理を行ない、
    前記サーバは、
    前記第二のサービス処理部が前記呼び出されると、前記第二のサービス処理部の代わりに前記受信パケットに対して実際にサービス処理を行なう、
    ことを特徴とする方法。
  12. 受信パケットに対するコネクション状態をコネクション状態管理部で管理し、
    前記サーバは、
    前記受信パケットの上位レイヤの状態を検出し、
    該上位レイヤの状態の検出結果を基に、前記コネクション状態管理部に管理される前記受信パケットの前記コネクション状態を更新し、
    前記中継部は、
    同一のコネクション受信パケットを、前記更新された前記コネクション状態管理部の前記コネクション状態に基づいてフィルタ処理する、
    ことを特徴とする請求項11に記載の方法。
  13. 受信パケットを対象にサービス処理を行なって前記受信パケットを中継処理する、中継部とサーバで実行可能なプログラムであって、
    前記中継部において、
    前記受信パケットを対象にサービス処理を行なう第一または第二のサービス処理部を呼び出す機能と、
    前記呼び出しにより第一のサービス処理部が呼び出された場合は、前記受信パケットにサービス処理を行なう機能と、
    前記呼び出しにより第二のサービス処理部が呼び出された場合は、前記受信パケットに仮想的にサービス処理を行なう機能と、
    を実現し、
    前記サーバにおいて、
    前記第二のサービス処理部が前記呼び出されると、前記第二のサービス処理部の代わりに前記受信パケットに対して実際にサービス処理を行なう機能と、
    を実現するプログラム。
  14. 受信パケットに対するコネクション状態をコネクション状態管理部で管理する機能と、
    前記サーバにおいて、
    前記受信パケットの上位レイヤの状態を検出する機能と、
    該上位レイヤの状態の検出結果を基に、前記コネクション状態管理部に管理される前記受信パケットの前記コネクション状態を更新する機能と、
    前記中継部において、
    同一のコネクション受信パケットを、前記更新された前記コネクション状態管理部の前記コネクション状態に基づいてフィルタ処理する機能と、
    を実現する請求項13に記載のプログラム。
JP2004108239A 2004-03-31 2004-03-31 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム Expired - Fee Related JP4348227B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004108239A JP4348227B2 (ja) 2004-03-31 2004-03-31 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム
US10/981,102 US7613825B2 (en) 2004-03-31 2004-11-04 Hierarchical packet processing system and method, relay device and server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004108239A JP4348227B2 (ja) 2004-03-31 2004-03-31 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム

Publications (2)

Publication Number Publication Date
JP2005295268A true JP2005295268A (ja) 2005-10-20
JP4348227B2 JP4348227B2 (ja) 2009-10-21

Family

ID=35054196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004108239A Expired - Fee Related JP4348227B2 (ja) 2004-03-31 2004-03-31 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム

Country Status (2)

Country Link
US (1) US7613825B2 (ja)
JP (1) JP4348227B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007173925A (ja) * 2005-12-19 2007-07-05 Fujitsu Ltd パケット中継システム
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874789B1 (en) * 2007-09-28 2014-10-28 Trend Micro Incorporated Application based routing arrangements and method thereof
US11533255B2 (en) 2014-11-14 2022-12-20 Nicira, Inc. Stateful services on stateless clustered edge
US11570092B2 (en) * 2017-07-31 2023-01-31 Nicira, Inc. Methods for active-active stateful network service cluster
US10951584B2 (en) 2017-07-31 2021-03-16 Nicira, Inc. Methods for active-active stateful network service cluster
US11296984B2 (en) 2017-07-31 2022-04-05 Nicira, Inc. Use of hypervisor for active-active stateful network service cluster
US11153122B2 (en) 2018-02-19 2021-10-19 Nicira, Inc. Providing stateful services deployed in redundant gateways connected to asymmetric network
US11799761B2 (en) 2022-01-07 2023-10-24 Vmware, Inc. Scaling edge services with minimal disruption
US11962564B2 (en) 2022-02-15 2024-04-16 VMware LLC Anycast address for network address translation at edge

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
JP3963690B2 (ja) 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
US7305492B2 (en) * 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7200144B2 (en) * 2001-10-18 2007-04-03 Qlogic, Corp. Router and methods using network addresses for virtualization
US20050060365A1 (en) * 2002-01-24 2005-03-17 Robinson Scott L. Context-based information processing
US7340535B1 (en) * 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007173925A (ja) * 2005-12-19 2007-07-05 Fujitsu Ltd パケット中継システム
JP4648182B2 (ja) * 2005-12-19 2011-03-09 富士通株式会社 パケット中継システム
WO2011096307A1 (ja) * 2010-02-03 2011-08-11 日本電気株式会社 プロキシ装置とその動作方法
US8612611B2 (en) 2010-02-03 2013-12-17 Nec Corporation Proxy apparatus and operation method thereof

Also Published As

Publication number Publication date
US7613825B2 (en) 2009-11-03
US20050220098A1 (en) 2005-10-06
JP4348227B2 (ja) 2009-10-21

Similar Documents

Publication Publication Date Title
US7487284B2 (en) Transaction flow and ordering for a packet processing engine, located within an input-output hub
US20190303204A1 (en) Methods and apparatus for single entity buffer pool management
US9311230B2 (en) Local direct storage class memory access
US6917987B2 (en) Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
AU2016382952B2 (en) Networking technologies
US11159439B1 (en) Agent message delivery fairness
US20070041383A1 (en) Third party node initiated remote direct memory access
US7596634B2 (en) Networked application request servicing offloaded from host
US6831916B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
CN110149388A (zh) Httpdns服务器的连接方法、装置及设备
US20060247057A1 (en) Logic Interface Engine System and Method
US7181541B1 (en) Host-fabric adapter having hardware assist architecture and method of connecting a host system to a channel-based switched fabric in a data network
US9432449B2 (en) Managing connection failover in a load balancer
JP2014525204A (ja) 仮想ネットワーク内のパケットロスを最小化する仮想マシンマイグレーション
JP4348227B2 (ja) 階層型パケット処理システム、中継装置、サーバ、その方法、及びそのプログラム
US8976789B2 (en) Communication transport protocol for distributed information technology architectures
US7536468B2 (en) Interface method, system, and program product for facilitating layering of a data communications protocol over an active message layer protocol
EP1589424A2 (en) Vertical perimeter framework for providing application services in multi-CPU environments
CN110351233A (zh) 一种基于安全隔离网闸的双向透明传输技术
US8566833B1 (en) Combined network and application processing in a multiprocessing environment
US11032398B1 (en) Kernel multiplexing system of communications
US20220210086A1 (en) Managing network state for high flow availability within distributed network platform
EP1988473B1 (en) A server with a core using a virtual file system and a method for securely redirecting a persistent storage device operation to a middleware infrastructure
US8527664B2 (en) Direct memory access with minimal host interruption
KR100597405B1 (ko) 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090421

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4348227

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees