(57)【要約】本発明による方法は、検出された接続によって伝送されるデータの中から、付与された名前によって決定的なデータを認識するプロトコル自己識別メカニズムと、親プロトコルと呼ばれるそれぞれの使用可能なプロトコル名と関連付けられた子プロトコルと呼ばれるプロトコル使用可能名の空の（又は、空ではない）リストと、が提供された情報ネットワークを使用する。情報システムのカーネルが、それぞれの検出された接続に対して、使用プロトコル名の順序付けされたシーケンスを有するように構成されたデータ構造を関連付ける。カーネルは、順序付けされたシーケンスの最後の名前に関連付けられたリスト内において子プロトコル名を取得することにより（２００１、２００６）、データ構造を構築し（２０００）、この子プロトコル名について、関連付けられている自己識別メカニズムが、この取得した子プロトコル名を、順序付けされたシーケンスの末尾に追加し（２００３）、且つ、関連付けられている自己識別メカニズムが伝送されたデータの中から決定的なデータを認識する子プロトコル名の取得を可能な限り再開（２０００）することにより、伝送されたデータの中から決定的なデータを認識する（２００２、２００７）。
2005537705.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが使用可能なプロトコル名によって命名されたプロトコルを使用する通信ネットワーク内の送信者と受信者間において検出される接続を演算システムによって分類する方法であって、前記演算システム内において、
検出された接続によって伝達された情報の中から前記名前によって命名された前記プロトコルの決定的な情報を認識するべく構成されたプロトコル自己識別メカニズムを、それぞれの使用可能なプロトコル名と関連付け、
所謂子プロトコル使用可能プロトコル名の空ではない（又は、空の）リストを、それぞれの所謂親プロトコル使用可能プロトコル名と関連付け、
検出されたそれぞれの接続に、演算カーネルが、所謂ベースプロトコル名によって初期化された使用プロトコル名の順序付けされたシーケンスを格納するべく構成された第１データ構造を関連付け（１００２、１００３）、
検出されたそれぞれの接続ごとに、前記関連付けられている自己識別メカニズムが、前記伝達された情報の中から決定的な情報を認識する（２００２、２００７）子プロトコル名について、前記順序付けされたシーケンスの最後の名前に関連付けられている前記子プロトコル名のリストをサーチし（２０００）、次いで、これが検出された場合には、前記子プロトコル名を前記順序付けされたシーケンスの末尾に追加し（２００３）、且つ、前記順序付けされたシーケンスの最後の名前に関連付けられた前記子プロトコル名のリスト内において、前記関連付けられている自己識別メカニズムが、前記伝達された情報の中から決定的な情報を認識する子プロトコル名を検出可能な限り（２００９）、再度サーチを開始することにより、前記演算カーネルは、前記第１データ構造を構築し（１００４）、
前記演算カーネルは、前記順序付けされたシーケンスの最後の名前に関連付けられた前記子プロトコル名のリスト内において、前記関連付けられた自己識別メカニズムが、前記伝達された情報の中から決定的な情報を認識する子プロトコル名を、もはや検出できなくなった場合に、前記検出された接続が分類されたことを宣言する（２０１０）、
ことを特徴とする接続を分類する方法。
【請求項２】
子プロトコル名をサーチするべく、前記演算カーネルは、前記自己識別メカニズムの中の１つが決定的な情報の認識を宣言するか（２００７）、或いは、いずれの自己識別メカニズムも決定的な情報の認識を宣言できない（２０１２）時点まで、前記子プロトコル名のリストの名前に関連付けられているそれぞれの自己識別メカニズムに対して、前記伝達された情報を提出する（２００６）ことを特徴とする請求項１に記載の接続を分類する方法。
【請求項３】
子プロトコル名をサーチするべく、前記演算カーネルは、前記自己識別メカニズムが、前記親プロトコルの前記決定的な情報の中から前記子プロトコルの名前を検出するように、前記順序付けされたシーケンスの最後の名前に関連付けられている前記自己識別メカニズムに対して、前記伝達された情報を提出する（２００２）ことを特徴とする請求項１に記載の接続を分類する方法。
【請求項４】
前記演算カーネルは、前記順序付けされたシーケンス内の低ランクの名前の中の１つに関連付けられた少なくとも１つの自己識別メカニズムに対して、前記伝達された情報のすべて又は一部を提出することにより、前記自己識別メカニズムが、前記決定的な情報から、前記演算カーネルによって現在の署名内に内蔵された発信元及び宛先インジケータを検出するように、それぞれの検出された接続ごとに、前記現在の署名を生成する（１００１）ことを特徴とする請求項１〜３のいずれか１項に記載の接続を分類する方法。
【請求項５】
前記演算カーネルは、それぞれの第１データ構造と、前記関連付けられている接続用の生成された（１００１）前記現在の署名間に、第１の結合対応関係を確立することにより、第１テーブル（１）内に、それぞれの第１データ構造を収録することを特徴とする請求項４に記載の接続を分類する方法。
【請求項６】
前記演算カーネルは、それぞれの現在の署名と、その発信元インジケータが前記現在の署名の宛先インジケータであると共にその宛先インジケータが前記現在の署名の発信元インジケータであるピア署名間における第２の結合対応関係を、前記第１テーブル（１）内に確立する（１００３、２０１１）ことを特徴とする請求項５に記載の接続を分類する方法。
【請求項７】
前記演算カーネルは、検出対象の接続内の前記演算システムを通過するデータパケット内において、前記伝達された有用な情報を収集し（１０００）、前記伝達された有用な情報が十分なものである場合には、常に前記現在の署名を生成する（１００１）方式で署名を生成し、
前記演算カーネルは、このように生成された前記現在の署名をリアルタイムで使用して接続を検出し、前記第１テーブル（１）内において、前記現在の署名に対応する前記第１データ構造をサーチし（１００２）、前記現在の署名に対応する第１データ構造が存在していない場合には、新しい第１データ構造を前記検出された接続と関連付け（１００３）、前記現在の署名に対応する（１００２）第１データ構造が存在している場合には、第１データ構造を構築するべく前記伝達された有用な情報を前記データパケット内において収集する（１０００）ことにより、前記第１データ構造の構築を開始又は継続する（２０００）する、
ことを特徴とする請求項５〜６のいずれか１項に記載の接続を分類する方法。
【請求項８】
データパケット内において収集された前記有用な情報が、署名を生成するために十分なものではない場合に、前記演算カーネルは、前記有用な情報が前記現在の署名を生成するのに十分なものになるまで、１つの同一の接続に対するメンバーシップのリンクを有する前記有用な情報間における結合対応関係を確立することにより、前記有用な情報を第２テーブル内に収録することを特徴とする請求項７に記載の接続を分類する方法。
【請求項９】
前記演算カーネルは、自身が構築した前記データ構造内の前記順序付けされたシーケンスの前記使用プロトコル名を詳しく検討して（１００６）、それぞれの動的な接続プロトコル名を検出し（１００７）、
このように検出されたそれぞれの動的な接続プロトコル名ごとに、前記演算カーネルは、検出された前記名前に関連付けられている前記自己識別メカニズムに対して、前記伝達された情報を提出し（１００８）、次の動的な接続が存在しているかどうかを判定して、次の接続が存在している場合には、前記所謂ベースプロトコル名から始まる潜在的なプロトコル名の順序付けされたシーケンスを格納するべく構成された第２データ構造と関連付ける（１００９）、
ことを特徴とする請求項１〜８のいずれか１項に記載の接続を分類する方法。
【請求項１０】
前記演算カーネルは、それぞれの第２データ構造と、前記検出された名前と関連付けられている前記自己識別メカニズムによって生成された潜在的な署名間に結合対応関係を確立することにより、第２テーブル（２）内に、それぞれの第２データ構造を収録する（１００９）ことを特徴とする請求項５及び９に記載の接続を分類する方法。
【請求項１１】
前記演算カーネルは、更に、
前記使用プロトコル名の順序付けされたシーケンスが含まれている前記潜在的なプロトコル名の順序付けされたシーケンスをサーチするステップ（２００４）と、
その潜在的な署名が前記現在の署名に対応している潜在的なプロトコル名の順序付けされたシーケンスが存在している場合に（２００５）、前記第２データ構造により、前記第１データ構造を完成させるステップ（２００３）と、
によって前記第１データ構造を構築する請求項１０に記載の接続を分析する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、データネットワークの制御に関する。
【背景技術】
【０００２】
データネットワークを伝播するトラフィックを分類することにより、その分類の関数として、それぞれのトラフィックフローごとに選択するべき動作を決定することができる。
【０００３】
例えば、ファイヤウォール内のセキュリティシステムセットアップにおいては、通常、プロトコル特性の認識に基づいて特定の転送を防止している。
【０００４】
又、例えば、ＱｏＳ（Ｑｕａｌｉｔｙ  Ｏｆ  Ｓｅｒｖｉｃｅ）の管理機器の場合には、シナリオを記述する複雑な規則の関数として、データに対して優先順位を割り当てている。そして、これらのシナリオと、接続によって伝達されるデータパケット間の対応関係において、接続を分類するための技法が使用されている。
【０００５】
更には、例えば、ネットワーク監視機器の場合には、特定の地点においてネットワークの状態を計測及び制御するための統計情報を生成しているが、これには、その地点を流れる様々なストリームの分類と認識が必要である。
【０００６】
更には、例えば、そのサービスが、オーディオ、ビデオ、電子メッセージング、又はデータベース問合せタイプのものであるかどうかに応じて費用が異なってくるため、様々なストリームの分類は、課金サービスにとって有用である。又、多くの場合、課金を保証するためには、そのサービスのユーザーを正しく識別することが極めて重要である。
【０００７】
従って、ネットワークの制御及び管理業務には、そのネットワーク上でデジタルデータストリームを生成する様々な送信者と受信者間における接続を分類することが必要であり、これには、強力且つ信頼性の高い分類法が必要とされる。
【０００８】
現在、当技術分野においては、データパケットの監視タスクは、例えば、そのデータパケットを生成する接続が通過するプロキシサーバーなどのネットワークノードに対して割り当てられている。
【０００９】
国際特許出願第０１０１２７２号（ＷＯ  ０１０１２７２）明細書には、ネットワーク内のトラフィックを監視する手順及び装置について開示されている。即ち、以前識別したプロトコルによって、その内部の認識対象のフィールド及びパターン又は値を判定することにより、後続の１つ又は複数のプロトコルを識別可能であるということを前提として、分析対象のデータパケットの所定のフィールドに対してパターン認識法（これは、パターンマッチングとも呼ばれる）を適用することにより、接続プロトコルスタック内において以前識別されたプロトコルの後続のプロトコルを識別することができる。
【００１０】
このような明示的なプロトコルの１つが、Ｅｔｈｅｒｎｅｔ（登録商標）プロトコルであり、この場合には、プロトコルスタック内における後続のプロトコルが、例えば、ＬＬＣプロトコル又はＩＰプロトコルであるかどうかが、（場合によっては、そのバージョンと共に）パケットヘッダによって指定されている。同様に、ＩＰプロトコルの場合にも、プロトコルスタックにおける後続のプロトコルが、例えば、ＴＣＰ、ＵＤＰ、又はＩＣＭＰプロトコルであるかどうかが、パケットヘッダによって指定されている。
【００１１】
問題となるのは、黙示的なプロトコルを認識する場合である。プロトコルスタック内の先行するプロトコルヘッダによって明確な方式で明示的に識別できないプロトコルを「黙示的」なプロトコルと呼ぶ。これには、ＰｏｉｎｔｃａｓｔやＫａｚａａなどの多数のアプリケーションレベルのプロトコルが該当し、この場合には、通常、事前のネゴシエーションによって確立される接続の状況により、接続のプロトコルスタック内におけるその使用法が左右されることになる（接続を伝播するパケットフローのリアルタイムスキャニングにより、これを収集することは困難である）。
【００１２】
現在、ＨＴＴＰ、Ｔｅｌｎｅｔ、ＦＴＰプロトコルなどの特定の既存のプロトコルは、明示的プロトコルと黙示的プロトコルの境界に位置している。即ち、これらのプロトコルの場合には、ＴＣＰプロトコルヘッダ内に含まれる予約ポート番号により、搬送プロトコルを明確な方式で識別可能な宛先インジケータが付与されている場合には、明示的と見なすことができる（例：ＨＴＴＰプロトコルに対応する番号８０、Ｔｅｌｎｅｔプロトコルに対応する番号２３、ＦＴＰプロトコルに対応する番号２１）。例えば、クライアントステーションは、ＴＣＰ環境においては、サーバーステーションによるクライアントステーションへの応答を実現するピア接続に対して動的なポート番号を割り当てることにより、ポート番号８０を使用してサーバーステーションとのＨＴＴＰ問合せ接続を確立するが、この場合には、サーバーステーションの応答をクライアントステーションに伝達するピア接続上におけるＨＴＴＰプロトコルの明示的な特性が、問合せ接続の関連するポート番号の動的な割り当てにより、低下していることに留意されたい。更には、現在、クライアントステーションが、番号８０とは異なるポート番号を、ＨＴＴＰ問合せ接続用にサーバーステーションと予めネゴシエートすることを妨げるものはなにも存在しておらず、従って、この場合には、ＨＴＴＰプロトコルは、明示的ではなく、黙示的なものになってしまうことになる。これは、その他のプロトコルについても当てはまる。即ち、ＦＴＰプロトコル環境における問合せ接続の場合にも、既知の方式で、ファイルの実際の転送用のその他の動的な接続、問合せ接続、及び制御の転送に使用するピア接続が生成される。そして、生成された１つ又は複数の動的な接続においては、ポート番号によってＦＴＰプロトコルを明示的に認識することはできない。ＴＣＰのポート番号フィールドに対してフィルタを適用することにより、明確な方式で搬送プロトコルを識別することができないのである。
【００１３】
更なる問題は、使用アーキテクチャと、新しいプロトコルの絶え間ない生成の両方によって実装が変化するプロトコルの認識問題である。
【００１４】
例えば、Ｅｔｈｅｒｎｅｔ、ＩＰ、ＴＣＰ、Ｔｅｌｎｅｔというプロトコルの順序付けされたシーケンスをスタックすることによるＴｅｌｎｅｔプロトコルを使用するための従来のアーキテクチャが周知である。又、Ｅｔｈｅｒｎｅｔ、ＩＰ、ＴＣＰ、ＨＴＴＰ、Ｔｅｌｎｅｔというプロトコルの順序付けされたシーケンスのスタックによる別のアーキテクチャも可能であり、或いは、ローミングを管理するべく、Ｅｔｈｅｒｎｅｔ、ＩＰ、ＩＰ、ＴＣＰ、ＨＴＴＰ、Ｔｅｌｎｅｔというプロトコルの順序付けされたシーケンスのスタックによる別のアーキテクチャも可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
従来技術によるシステムの場合には、既存又は新しいプロトコル間における依存性リンクによって決定されるフィールド内のパターン認識に基づいた使用プロトコルの識別により、これら依存性リンクの変化によるアーキテクチャのプロトコルの変化に対処することは困難である。この欠点は、スケジュールされていないプロトコルアーキテクチャによって確立された接続との競合に起因して、効率のために再構築が必要とされるハードウェアシステムの場合に、特に明らかである。
【課題を解決するための手段】
【００１６】
本発明の主題は、それぞれが使用可能なプロトコル名によって命名されたプロトコルを使用する通信ネットワーク内の送信者と受信者間において検出される接続を演算システムによって分類するための方法である。この方法は、演算システム内において、検出された接続によって伝達される情報の中から名前によって命名されたプロトコルの決定的な情報を認識するべく構成されたプロトコル自己識別メカニズムに、それぞれの使用可能なプロトコル名を関連付け；所謂子プロトコル使用可能プロトコル名の空ではない（又は、空の）リストに、それぞれの所謂親プロトコル使用可能プロトコル名を関連付け；検出されたそれぞれの接続ごとに、演算カーネルが、所謂ベースプロトコル名によって初期化された使用プロトコル名の順序付けられたシーケンスを格納するべく構成された第１データ構造を関連付け；関連付けられている自己識別メカニズムが、伝達された情報の中から決定的な情報を認識する子プロトコル名用の順序付けられたシーケンスの最後の名前に関連する子プロトコル名のリストをサーチし、次いで、これが検出された場合に、その子プロトコル名を、順序付けられたシーケンスの末尾に追加し、且つ、関連付けられている自己識別メカニズムが、伝達された情報の中から決定的な情報を認識する子プロトコル名を、順序付けされたシーケンスの最後の名前と関連付けられた子プロトコル名のリストの中において検出可能な限り、再度サーチを開始することにより、検出されたそれぞれの接続ごとに、演算カーネルが第１データ構造を構築し；順序付けられたシーケンスの最後の名前と関連付けられた子プロトコル名のリスト内において、関連付けられている自己識別メカニズムが、伝達された情報の中から決定的な情報を認識する子プロトコル名を、もはや検出できない場合に、その検出された接続の分類の完了を演算カーネルが宣言する；という点が注目に値する。
【００１７】
使用可能なプロトコル名と関連付けられている自己識別メカニズムと、それぞれが使用可能なプロトコルと関連付けられている使用可能なプロトコルリストにより、アーキテクチャのどのような変更にも本方法を適合させることができるモジュール性が提供される。親プロトコルと子プロトコル間に新しい可能な依存性リンクを生成するアーキテクチャが存在する場合には、親プロトコル名に関連付けられたリストに対して、子プロトコル名を追加するだけで十分である。新しい使用可能なプロトコルが存在する場合には、新しい使用可能なプロトコルの名前に関連付けられた新しい自己識別メカニズムをシステムに追加するだけで十分である。この場合には、それぞれの段階において、最後のプロトコルが親プロトコルを構成している使用プロトコルの順序付けられたシーケンスを連続的に構築することにより、接続の分類を実行可能であり、この分類は、順序付けされたシーケンスのプロトコルの最後である親プロトコル用の使用子プロトコルを検出できなくなった場合に、終了する。
【００１８】
好都合なことに、その特性が黙示的である子プロトコル名をサーチするべく、自己識別メカニズムの中の１つが決定的な情報の認識を宣言するか、又はいずれの自己識別メカニズムも決定的な情報の認識を宣言できなくなるまで、演算カーネルは、伝達された情報を、子プロトコル名のリストの名前に関連付けられているそれぞれの自己識別メカニズムに対して提出する。
【００１９】
関連付けられている子プロトコルの言語の規則が提供されているため、自己識別メカニズムは、提出された情報が、その言語に属しているかどうかを容易に検証可能である。
【００２０】
又、好都合なことに、その特性が明示的である子プロトコル名をサーチするべく、演算カーネルは、伝達された情報を、順序付けされたシーケンスの最後の名前と関連付けられている自己識別メカニズムに対して提出し、自己識別メカニズムは、親プロトコルの決定的な情報の中から子プロトコルの名前を検出する。
【００２１】
関連付けられている親プロトコルの言語の規則が提供されており、自己識別メカニズムは、提出された情報の中から、子プロトコルを指定する情報を容易に検出可能である。
【００２２】
順序付けされたシーケンスがアプリケーションレベルまで完成している場合には、関連付けられている接続が、アプリケーションレベルのタイプごとに分類される。この結果、、例えば、ファイヤウォールは、ファイル転送タイプの接続を遮断することが可能であり、ネットワーク管理者は、ウェブベースのブラウザタイプの接続の量を計測することができる（ＷＷＷは、ワールド・ワイド・ウェブ：World Wide Web の略号である）。
【００２３】
特定の方式においては、演算カーネルは、伝達された情報のすべて又は一部を、順序付けされたシーケンス内の低ランクの名前の中の１つに関連付けられている少なくとも１つの自己識別メカニズムに対して提出することにより、検出されたそれぞれの接続ごとに現在の署名を生成し、これにより、この自己識別メカニズムが、決定的な情報の中から、演算カーネルによって現在の署名内に内蔵されている発信元及び宛先インジケータを検出する。
【００２４】
プロトコルスタックイメージを構成する順序付けされたシーケンス内において、これらの低ランクは、一般に、物理、ネットワーク、及びトランスポートレベルのレイヤに対応している。署名により、それぞれの接続を区別することが可能になる。１つの同一アプリケーションタイプの接続の中におけるこのような区別により、例えば、ファイヤウォールは、特定の演算機器との間のファイル転送タイプの接続を遮断することができる。更には、これにより、例えば、ネットワーク管理者は、クライアント機器によって起動されたウェブベースのブラウザタイプの（又は、特定のサーバー機器宛ての）接続の量を計測することができる。
【００２５】
更に具体的には、演算カーネルは、それぞれの第１データ構造と、関連付けられている接続用に生成された現在の署名間における第１の結合対応関係を確立することにより、第１テーブル内に、それぞれの第１データ構造を収録する。
【００２６】
この場合に、署名によって提供される更なる技術的な効果は、伝達された情報が、付属メカニズムによって１つにグループ化されることなく、ばらばらである場合にも、データ構造の構築の際に、演算カーネルが１つの同一の接続を参照可能であるという点にある。
【００２７】
別個の接続が、実際には、１つの同一の意味のフローに属する場合がある。例えば、ピア接続及び／又は動的な接続が、これに該当する。
【００２８】
特に有利な方式においては、演算カーネルは、それぞれの署名と、その発信元インジケータが現在の署名の宛先インジケータであると共にその宛先インジケータが現在の署名の発信元インジケータであるピア署名間における第２の結合対応関係を第１テーブル内に確立する。
【００２９】
又、特に有利な方式においては、演算カーネルは、自身が構築したデータ構造内の順序付けされたシーケンスの使用プロトコル名を詳細に検討することにより、それぞれの動的な接続プロトコル名を検出し；検出されたそれぞれの動的な接続プロトコル名ごとに、演算カーネルは、伝達された情報を、検出された名前に関連付けられている自己識別メカニズムに対して提出することにより、後続の動的な接続が存在するかどうかを判定し、後続の接続が存在している場合には、所謂ベースプロトコル名から始まる潜在的なプロトコル名の順序付けされたシーケンスを格納するべく構成された第２データ構造をそれに関連付ける。
【００３０】
この第２の結合対応関係及び／又は第２データ構造により、１つの同一の意味フローの接続を検出する以前の段階で、それらの接続について通知し、次いで、この同一の意味フローの検出された接続の中の１つによって伝達される情報に基づいて、この１つの同一の意味フローのいくつかの接続の分類を遂行することができる。
【００３１】
更に特に有利な方式においては、演算カーネルは、それぞれの第２データ構造と、検出された名前に関連付けられている自己識別メカニズムによって生成される潜在的な署名間における結合対応関係を確立することにより、第２テーブル内に、それぞれの第２データ構造を収録する。
【００３２】
更に特に有利な方式においては、演算カーネルは、使用プロトコル名の順序付けされたシーケンスが含まれている潜在的なプロトコル名の順序付けされたシーケンスをサーチし、その潜在的な署名が現在の署名に対応している潜在的なプロトコル名の順序付けされたシーケンスが存在する場合に、第２データ構造によって第１データ構造を完成させることにより、第１データ構造を更に構築する。
【００３３】
生成された分類を使用するその他のシステムの良好な反応性を実現すると共に／又は、この方法を実行する演算システムのメモリリソースの所要量を削減するためにリアルタイムで実行可能にするべく、この接続を分類する方法に対して；演算カーネルは、検出対象の接続内の演算システムを通過するデータパケット内において、伝達された有用な情報を収集し、これにより、伝達された有用な情報が十分である場合に現在の署名を生成するように署名を生成し；演算カーネルは、このように生成された署名をリアルタイムで使用して接続を検出し、これにより、第１テーブル内において、現在の署名に対応する第１データ構造をサーチし、現在の署名に対応する第１データ構造が存在していない場合には、新しい第１データ構造を、検出された接続と関連付け、一方、現在の署名に対応する第１データ構造が存在している場合には、第１データ構造を構築するべく伝達された有用な情報をデータパケット内において収集することにより、第１データ構造の構築を開始又は継続する；という改善を加える。
【００３４】
大きなサイズのパケットを小さなサイズのパケットに断片化している場合には、データパケット内において収集される有用な情報が、署名を生成するのに十分なものではない場合がある。
【００３５】
本方法の更なる改善によれば、演算カーネルは、有用な情報が現在の署名を生成するのに十分なものになるまで、１つの同一の接続に対するメンバーシップのリンクを有する有用な情報間に結合対応関係を確立することにより、第２テーブル内に、有用な情報を収録する。
【発明を実施するための最良の形態】
【００３６】
本発明については、添付の図面との関連で、以下の好適な模範的な実施例に関する説明を参照することにより、十分に理解することができよう。
【実施例】
【００３７】
図１を参照すれば、配列１０１は、列１０２の００１〜０２１というラベルが付加されたそれぞれの行内に（この行数は、制限されてはいない）、使用可能なプロトコル名を格納している。そして、列１０２のそれぞれの使用可能なプロトコル名に対して、対応する行内において、１つのリストが関連付けられており、これらのプロトコルを親プロトコルと呼ぶ。そして、それぞれのリストは、列１０５〜１１０内において（この列数は制限されていない）、列１０２内にそのプロトコル名が出現している配列の行に対するポインタによって設定されており、これらのプロトコルを子プロトコルと呼ぶ。
【００３８】
例えば、００１というラベルが付加された行には、所謂ベースプロトコルを識別する名前であるＢａｓｅが格納されているが、これは、例外的に、実際に接続によって使用可能なプロトコルではなく、子プロトコルのすべてのリストの段階的な連結物から構成されるプロトコル図の詳細な検討を開始するのに使用可能なルートプロトコルである。そして、このＢａｓｅという名前と関連付けられた子プロトコル名のリストには、この場合には、Ｅｔｈｅｒｎｅｔ、ＡＴＭ、ＰＰＰというプロトコル名が格納されており、これらは、物理レイヤプロトコルであって、接続に実際に使用可能な最初のものである。即ち、列１０５内のポインタは、行００２をポイントし、列１０６内のポインタは、行００３をポイントし、列１０７内のポインタは行００４をポイントしている。
【００３９】
そして、００２というラベルが付加された行内において、Ｅｔｈｅｒｎｅｔという名前と関連付けられた子プロトコル名のリストには、列１０５、１０６、１０７内に個々に位置するポインタによって個々にそれぞれポイントされている行００５、００７、００８内のＬＬＣ、Ｉｐｖ６、Ｉｐｖ４というプロトコル名が格納されている。
【００４０】
００５というラベルが付加された行内においては、ＬＬＣという名前と関連付けられた子プロトコル名のリストに、列１０５、１０６内に個々に位置するポインタによって個々にそれぞれポイントされている行００６、００８内のＳＴＰ、Ｉｐｖ４というプロトコル名が格納されている。
【００４１】
一方、００６というラベルが付加された行内においては、ＳＴＰという名前と関連する子プロトコル名のリストは空になっている。ＳＴＰというプロトコル名は、プロトコル図の末端に位置しており、従って、これを親プロトコルとする子プロトコルは存在しない。
【００４２】
００７というラベルが付加された行内においては、Ｉｐｖ６という名前と関連付けられた子プロトコル名のリストに、列１０５、１０６、１０７、１０８、１０９内に個々に位置するポインタによって個々にそれぞれポイントされている行００７、００８、００９、０１０、０１１内のＩｐｖ６、Ｉｐｖ４、ＴＣＰ、ＵＤＰ、及びＩＣＭＰというプロトコル名が格納されている。尚、このＩｐｖ６という名前は、親プロトコル名と子プロトコル名の両方を兼ねていることに留意されたい。これは、同一プロトコルのネットワークレイヤ上にネットワークレイヤを配置してネットワークトンネルを生成することにより、周知の方式でローミングを処理可能であることを明示するものである。又、例えば、互換性のあるＩｐｖ４ネットワーク上においてＩｐｖ６接続を通過させるなど、異なるプロトコルのネットワークレイヤをネットワークレイヤ上に配置し、ネットワーク間の互換性の違いに対処することも可能である。
【００４３】
列１０３には、それぞれのプロトコル名ごとに、そのプロトコルが明示的であるか黙示的であるか（即ち、それが子プロトコルである場合に、そのプロトコルが親プロトコルによって指定されるかどうか）を示すインジケータが格納されている。例外として、Ｂａｓｅという名前のプロトコルは、親プロトコルを具備していないため、列１０３内のインジケータには、これがルートタイプであることが示されている。
【００４４】
列１０４には、それぞれのプロトコル名ごとに、そのプロトコルが動的な接続を生成可能かどうかを示す更なるインジケータが格納されている。例えば、行０１２内のＦＴＰプロトコルや行０１３内のｈｔｔｐプロトコルが、これに該当する。
【００４５】
列１０２内に示されているそれぞれの使用可能なプロトコル名には、自己識別メカニズムが関連付けられている。それぞれの自己識別メカニズムは、そのメカニズムが関連付けられているプロトコル名により、演算カーネルによって起動されるべく構成されている。それぞれの自己識別メカニズムは、その自己識別メカニズムが関連付けられている名前を有するプロトコルの言語に準拠した規則の形態の適切な方式によって構成されたフィルタを有している。この自己識別メカニズムは、演算カーネルからの要求に応答するべく、推論エンジンにより、演算カーネルから提出されたデータのパケットから、規則を満足するものを取得するべく構成されている。周知の方式によれば、規則は、前提部分とアクション部分を有しており、アクション部分は、その規則が起動され、前提部分が満足された場合に、応答を生成する。自己識別メカニズムの推論エンジンは、前提部分の不満足、或いは部分的又は全体的な満足に個々に応じて、それぞれの提出ごとに、アクション部分が、否定的、推定的、又は肯定的なタイプの応答を生成できるように、演算カーネルからのデータパケットの連続的な提出に歩調を合わせて規則の前提を連続的に満足させるべく構成されている。
【００４６】
図２を参照すれば、演算システムがネットワークから物理レベルにおいて転送するそれぞれのデータパケットごとに、本方法は、ステップ１０００において、起動される。物理レベルにおいては、検出対象のすべての接続は、例えば、Ｅｔｈｅｒｎｅｔタイプ（ＩＥＥＥ８０２規格）、ＡＴＭタイプ（非同期転送モード）、ＰＰＰタイプ（ポイントツーポイントプロトコル）、又はその他の物理レベルのタイプなどの演算システムのカプラを物理的に通過する。そして、このレベルにおいては、パケットを物理的に構成するビットのストリングが演算システムに提供される。
【００４７】
次いで、ステップ１００１において、演算カーネルは、パケットを受信する物理カプラが使用するプロトコルに関連付けられている自己識別メカニズムに対して、パケットのコンテンツを提出することにより、パケットから署名を抽出する。演算カーネルは、自己識別メカニズムに対して、発信元インジケータ、宛先インジケータ、及び搬送プロトコル名を返すように要求する。自己識別メカニズムには、例えば、Ｅｔｈｅｒｎｅｔタイプの物理カプラの場合には、ＭＡＣアドレス、ＡＴＭタイプの物理カプラの場合には、ＶＣＩ（Ｖｉｒｔｕａｌ  Ｃｉｒｃｕｉｔ  Ｉｄｅｎｔｉｆｉｅｒ）及びＶＰＩ（Ｖｉｒｔｕａｌ  Ｐａｔｈ  Ｉｄｅｎｔｉｆｉｅｒ）、ＰＰＰタイプの物理カプラの場合には、発呼及び着呼電話番号などの発信元及び宛先インジケータをパケット内において認識するべく構成されたフィルタが提供されている。尚、物理レベルにおいては、宛先インジケータは、演算システムのカプラの物理アドレスに対応していることに留意されたい。又、物理レイヤプロトコルは、一般に、明示的な特性を有しており、自己識別メカニズムには、この搬送プロトコルを認識するべく構成されたフィルタも提供されている。
【００４８】
自己識別メカニズムから発信元及び宛先インジケータを受信すると、演算カーネルは、発信元識別子及び宛先識別子を格納する物理レベルの署名を生成する。
【００４９】
物理レベルの自己識別メカニズムによって返された搬送プロトコル名により、演算カーネルは、その関連する自己識別メカニズムに対してパケットのデータを提出し、発信元インジケータ、宛先インジケータ、及び、可能な場合には、搬送プロトコル名を返すように要求する。この自己識別メカニズムには、例えば、ＩＰプロトコルの場合には、ＩＰアドレスなどの発信元及び宛先インジケータをパケット内において認識するべく構成されたフィルタが提供されている。ネットワークレイヤプロトコルは、一般に、明示的な特性を有しており、自己識別メカニズムには、この搬送プロトコルを認識するべく構成されたフィルタも提供されている。
【００５０】
自己識別メカニズムから発信元及び宛先インジケータを受信すると、演算カーネルは、発信元及び宛先識別子を格納するネットワークレベルの署名を生成する。
【００５１】
ネットワークレベルの自己識別メカニズムから返された搬送プロトコル名により、演算ネットワークは、その関連する自己識別メカニズムに対して、パケットのデータを提出し、以前と同様に、対応するレベルの署名を生成し、自己識別メカニズムが搬送プロトコル名を付与できないと通知するまで、前述の操作を反復する。
【００５２】
そして、演算カーネルは、それぞれのレベルごとに生成された署名を連結することにより、そのパケットを搬送する接続に固有のグローバルな署名を取得する。
【００５３】
特定のプロトコルは、断片化を実装している（即ち、下位レイヤプロトコルと互換性を有するサイズの複数のパケットに、パケットを分割する）。これには、例えば、高位レベルのプロトコルが、物理フレーム内に格納可能なデータの最大サイズを上回るサイズのパケットを操作する場合が該当する（ＭＴＵは、「Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ」の略号である）。１つの同一パケットの各断片においては、オリジナルのヘッダが、すべての断片において完全に再生されないことに留意されたい。従って、出現するパケットが、実際にパケットの断片のみを構成している場合には、接続に固有の署名を生成可能なすべての情報を必ずしも格納していない。例えば、ＩＰプロトコル上のＵＤＰの場合には、ＵＤＰ断片は、ＵＤＰヘッダ（特に、署名の算出を可能にする発信元及び宛先ポート）を格納することなしに、出現する可能性がある。
【００５４】
断片化を実装可能なプロトコル名と関連付けられているそれぞれの自己識別メカニズムには、現在のパケットのサイズを上回る完全なパケットのサイズの標識を識別すると共に／又は、完全なパケットの回復識別子を認識するべく構成された少なくとも１つのフィルタが提供されている。この回復識別子は、一般には、発信元によってそれぞれのパケット断片に割り当てられた連番である。この場合には、自己識別メカニズムは、断片化及び回復識別子について演算カーネルに通知する。演算カーネルは、断片化レベルまで算出可能なそれぞれの署名を、完全なパケット用のグローバル署名とマッチングする結合テーブルを使用する。そして、結合テーブルの条件を満足するパケット又はパケット断片が出現した場合に、演算カーネルは、対応するグローバル署名をこのパケット又はパケット断片と関連付ける。
【００５５】
本方法のこの実施例においては、続いて、演算カーネルは、このステップ１００１において抽出された署名を使用し、ステップ１０００におけるパケットの到来によって検出された接続用の第１データ構造を構築する。
【００５６】
即ち、ステップ１００２において、演算カーネルは、ステップ１００１において抽出されたグローバル署名との対応が存在しているかどうかに関し、現在の接続について、結合テーブル１をサーチする。このサーチを円滑に実行するべく、演算カーネルは、グローバル署名に対してハッシュ関数を適用し、ハッシュテーブルにより、周知の方式によって結合テーブル１の行を１：１で参照するハッシュキーを算出する。
【００５７】
そして、結合テーブル１内において、対応を検出した場合には、演算カーネルは、ステップ１００５を起動し、そうでなければ、ステップ１００３を起動する。このようにして、演算カーネルは、ステップ１００２において、署名が抽出されたパケットが、現在の接続の結合テーブル内に既に収録されている既存の接続に属しているかどうかを検証する。
【００５８】
ステップ１００３においては、演算カーネルは、ステップ１００１において抽出されたグローバル署名によって検出された接続の対応を確立することにより、結合テーブル１内に、１つの行を生成する。そして、その検出された接続に関し、演算カーネルは、その生成された行内において、プロトコル名Ｂａｓｅから始まる使用プロトコル名の順序付けられたシーケンスを有する第１データ構造を初期化する。この第１データ構造は、配列１０１の列１０５の前の列にそれぞれが割り当てられている２値変数のストリングをも有している。この２値変数のストリングを初期化するべく、演算カーネルは、列１０５の前の列と、順序付けされたシーケンスの最後のプロトコル名を列１０２内に格納する配列１０１の行の交差点に位置する配列１０１のそれぞれのセルを読み取る。そして、空ではないセルの場合には、演算カーネルは、対応するランクの２値変数を１に設定し、このセルが参照するプロトコル名を使用する確率がゼロではないことを示す。一方、空のセルの場合には、演算カーネルは、対応するランクの２値変数をゼロに設定し、このセルが参照するプロトコル名を使用する確率がゼロであることを示す。同時に、演算カーネルは、ピア接続署名の発信元のそれぞれのインジケータがグローバル署名に出現する対応するレベルの宛先インジケータであると共にピア接続署名の宛先のそれぞれのインジケータがグローバル署名内に出現する対応するレベルの発信元インジケータとなるように、ピア接続署名を算出する。次いで、演算カーネルは、結合テーブル１をサーチし、そのピア接続署名との対応関係が存在しているかどうかを検出する。
【００５９】
そして、結合テーブル１内において、ピア接続署名との対応関係を検出した場合には、演算カーネルは、現在のグローバル署名との対応関係を格納する行と、ピア接続署名との対応関係を格納する行間における相互参照を確立する。一方、結合テーブル１内において、ピア接続署名との対応関係が検出されない場合には、演算カーネルは、ピア接続署名とのピア接続の対応関係を確立することにより、結合テーブル１内に１つの行を生成し、次いで、演算カーネルは、現在のグローバル署名との対応関係を格納する行と、ピア接続署名との対応関係を格納する行との間の相互参照を確立する。
【００６０】
ステップ１００３に続いて、演算カーネルは、ステップ１００４を起動する。
【００６１】
一方、ステップ１００５においては、演算カーネルは、検出されたグローバル署名との接続の対応関係を格納する結合テーブル１の行を調べ、その接続が分類された状態にあるとマーキングされているかどうかを確認する。
【００６２】
そして、検出された接続が、分類された状態にあるとマーキングされている場合には、演算カーネルは、ステップ１００６を起動し、そうでなければ、ステップ１００４を起動することになる。
【００６３】
ステップ１００４においては、演算カーネルは、図３を参照して次に説明するステップを実行することにより、第１データ構造の構築を継続する。
【００６４】
まず、ステップ２０００において、演算カーネルは、一方においては、ステップ１００２において検出された（又は、ステップ１００３において生成された）結合テーブル１の行をポイントし、他方においては、ステップ１０００において受信されたパケットをポイントする。そして、演算カーネルは、ポイントされている行の使用プロトコルの順序付けされたシーケンスの末尾に配置されている使用プロトコル名を親プロトコル名として読み取る。
【００６５】
演算カーネルは、第１データ構造をサーチし、２値変数のストリングが非ゼロの値の２値変数を格納しているかどうかを検出する。そして、すべての２値変数がゼロである場合には、演算カーネルは、ステップ２０１０を起動する。一方、少なくとも１つの非ゼロの２値変数が存在している場合には、演算カーネルは、ステップ２００１を起動する。
【００６６】
ステップ２００１においては、演算カーネルは、配列１０１の列１０３を調べ、親プロトコルが黙示的なタイプであるかどうかを確認する。そして、親プロトコルが黙示的なタイプである場合には、演算カーネルは、ステップ２００４を起動する。さもなければ（即ち、親プロトコルが明示的なタイプである場合には）、演算カーネルはステップ２００２を起動する。
【００６７】
ステップ２００２において、演算カーネルは、その親プロトコル名と関連付けられている自己識別メカニズムに対して、パケットのコンテンツを伝送し、その自己識別メカニズムに対して、子プロトコル名を返すように要求する。親プロトコルの自己識別メカニズムは、この提出されたパケット内に格納されているデータに対して、子プロトコルを認識するための規則を適用し、そのデータが、前提のすべてを満足させるのに十分なものである場合には、演算カーネルに対して、子プロトコル名を格納する応答を返し、データが前提のすべてを満足させるのに不十分なものであった場合には、補完データを待つ旨のスタンバイ応答を返す。
【００６８】
この自己識別メカニズムの応答を受信すると、演算カーネルは、その応答が、補完データを待つ旨のスタンバイタイプのものである場合には、ステップ１００４を終了させる。一方、その応答が子プロトコル名を格納している場合には、演算カーネルは、ステップ２００３を起動する。
【００６９】
ステップ２００３において、演算カーネルは、その子プロトコル名を使用プロトコル名の順序付けされたシーケンスに追加し、このステップ２００３において追加された最後の子プロトコル名が親プロトコル名を構成している状態でステップ２０００を再起動する。前述のように、第１データ構造は、列１０５の前の配列１０１の列にそれぞれ割り当てられた２値変数のストリングを有している。ステップ２０００を再起動する前に、演算カーネルは、列１０５の前の列と、順序付けされたシーケンスの最後のプロトコル名を列１０２内に格納する配列１０１の行との交差点に配置されている配列１０１のそれぞれのセルを読み取る。そして、空ではないセルの場合には、演算カーネルは、対応するランクの２値変数を１に設定し、このセルが参照するプロトコル名を使用する確率がゼロではないことを示す。一方、空のセルの場合には、演算カーネルは、対応するランクの２値変数を０に設定し、このセルが参照するプロトコル名を使用する確率がゼロであることを示す。
【００７０】
前述のように、ステップ２００４は、親プロトコルが黙示的なタイプである（即ち、これによって搬送プロトコルが明確な方式で識別されない）場合に、起動される。ステップ２００４において、演算カーネルは、第２結合テーブル２をサーチし、現在の署名と、第１結合テーブル内に収録されたシーケンスであるプロトコル名の第１の順序付けされたシーケンスを格納するプロトコル名の第２の順序付けされたシーケンス間に、対応関係が存在しているかどうかを検出する。そして、テーブル２内において、このような第２の順序付けられたシーケンスを検出した場合には、演算カーネルは、ステップ２００５を起動する。そうでなければ、演算カーネルは、ステップ２００６を起動する。
【００７１】
ステップ２００５においては、演算カーネルは、第２の順序付けされたシーケンスから、その順序を保持しつつ、親プロトコル名に続く１つ又は複数のプロトコル名を取得する。次いで、演算カーネルは、結合テーブル２から第２の順序付けされたシーケンスを削除した後に、ステップ２００３を起動する。
【００７２】
ステップ２００３においては、演算カーネルは、この１つ又は複数の子プロトコル名を、その順序を保持しつつ、使用プロトコル名の第１の順序付けされたシーケンスに追加する。そして、ステップ２０００を再起動する前に、演算カーネルは、使用プロトコル名の順序付けされたシーケンスに追加された最後のプロトコル名用の２値変数のストリングの変数を設定する。
【００７３】
一方、ステップ２００６においては、演算カーネルは、第１の非ゼロの２値変数から始めて、第１データ構造から、２値変数のストリングの非ゼロの変数を連続的に読み取る。そして、非ゼロの２値変数に対応するランクを有する配列１０１のセルから、演算カーネルは、所謂推定子プロトコル名を推論する。そして、演算カーネルは、その推定子プロトコル名に関連付けられている自己識別メカニズムに対して、データパケットを提出し、その提出したパケットにより、その子プロトコルが使用プロトコルであることを明確な方式で識別できるかどうかを問い合わせる。そして、自己識別メカニズムからの応答を受信すると、演算カーネルは、ステップ２００７を起動する。
【００７４】
ステップ２００７において、演算カーネルは、その子プロトコルが使用されていると自己識別メカニズムが応答してきた場合には、ステップ２００３を起動し、その子プロトコルが使用されてはいないと応答してきた場合には、ステップ２００８を起動し、その子プロトコルが使用されている可能性が高いと応答してきた場合には、ステップ２０１２を起動する。
【００７５】
ステップ２００８において、演算カーネルは、現在の２値変数をゼロに設定し、その子プロトコル名が使用プロトコルの名前ではないことを示す。次いで、演算カーネルは、ステップ２０１２を起動する。
【００７６】
ステップ２０１２において、演算カーネルは、２値変数のストリングを調べ、ステップ２００６の以前の起動に結び付いた非ゼロの２値変数がその後に存在しているかどうかを確認する。そして、非ゼロの２値変数が存在している場合には、演算カーネルは、このステップ２０１２において検出された新しい非ゼロの２値変数について、ステップ２００６を起動する。一方、非ゼロの２値変数が存在していない場合には、演算カーネルは、ステップ２００９を起動する。
【００７７】
ステップ２００９において、演算カーネルは、２値変数のストリングがゼロ値のみを格納しているかどうかを調べる。そして、２値変数のストリングがゼロ値のみを格納している場合には、演算カーネルは、ステップ２０１０を起動する。さもなければ（即ち、２値変数のストリングが少なくとも１つの非ゼロ値を格納している場合には）、演算カーネルは、ステップ２０１１を起動する。
【００７８】
ステップ２０１０において、演算カーネルは、第１データ構造内において、接続が分類された状態であることをマーキングし、次いで、ステップ２０１１を起動する。
【００７９】
ステップ２０１１において、演算カーネルは、使用プロトコル名の順序付けされたシーケンスと現在の接続に関連付けられている第１データ構造内に含まれている２値変数のストリングによってピア接続に関連付けられている第１データ構造を完成させることにより、ピア接続を更新する。そして、演算カーネルは、ステップ１００４を終了させる。
【００８０】
ステップ１００４の後に、演算カーネルは、図２を参照して次に説明するステップ１００６を起動する。
【００８１】
ステップ１００６において、演算カーネルは、Ｂａｓｅという名前に続くプロトコル名によって始まる使用プロトコル名の順序付けされたシーケンスのプロトコル名を連続的に検討する。演算カーネルは、列１０４を調べ、その検討対象のプロトコル名が、動的な接続を生成するプロトコルに対応しているかどうかを確認する。そして、検討対象のプロトコル名が、動的な接続を生成するプロトコルに対応していない場合には、演算カーネルは、ステップ１０１０を起動する。一方、検討対象のプロトコル名が、動的な接続を生成するプロトコルに対応している場合には、演算カーネルは、ステップ１００８を起動する。
【００８２】
ステップ１００８において、演算カーネルは、検討対象のプロトコル名に関連付けられている自己識別メカニズムに対してデータパケットを提出し、その提出したデータパケット内において動的な接続の生成が検出されるかどうかを自己識別メカニズムに対して問い合わせ、これが検出された場合には、スケジュールされたプロトコル名と、生成された動的な接続の発信元及び宛先識別子を返すように供給する。そして、自己識別メカニズムが、スケジュールされたプロトコル名と、動的接続の発信元及び宛先識別子を返してきた場合には、演算カーネルは、ステップ１００９を起動する。そうでなければ（即ち、動的接続の生成が検出されないと自己識別メカニズムが応答してきた場合には）、演算カーネルは、ステップ１０１０を起動する。
【００８３】
ステップ１００９において、演算カーネルは、現在の接続と関連付けられている第１データ構造を使用すると共に、ステップ１００８において自己識別メカニズムから返された応答を使用することにより、第２結合テーブル２に、将来の接続と関連付けられた第２データ構造を追加する。
【００８４】
一方、ステップ１０１０においては、演算カーネルは、使用プロトコル名の順序付けされたシーケンス内に、次のプロトコル名が存在しているかどうかを調べる。そして、使用プロトコル名の順序付けされたシーケンス内に次のプロトコル名が存在している場合には、演算カーネルは、その次のプロトコル名について、ステップ１００６を再起動する。そうでない場合には（即ち、使用プロトコル名の順序付けされたシーケンス内に、次のプロトコル名が存在していない場合には）、演算カーネルは、ステップ１０００において受信したパケットを放出し、この結果、パケットは、その次の宛先まで、その伝播を継続することになる。
【００８５】
尚、以上において説明した方法は、ステップ１０００においてパケットを受信するごとに反復される。
【図面の簡単な説明】
【００８６】
【図１】メモリ内におけるプロトコル図の実現可能な一表現を示す図である。
【図２】本発明に係る方法のフローチャートである。
【図３】本発明に係る方法のフローチャートである。
【図１】
2005537705.tif 000003
【図２】
2005537705.tif 000004
【図３】
2005537705.tif 000005
【国際調査報告】
2005537705.tif 000006
2005537705.tif 000007
2005537705.tif 000008
2005537705.tif 000009
2005537705.tif 000010
2005537705.tif 000011