(57)【特許請求の範囲】
【請求項１】
パケットを受信して該パケットに対して実行すべく操作種別を識別し、該パケットからキーバリューを抽出してＨａｓｈ演算を行うことと、
前記Ｈａｓｈ演算による演算結果をＨａｓｈエントランスとし、機器のＨａｓｈインデックステーブルから少なくとも一つのＨａｓｈインデックスエントリをサーチすることと、
識別された操作種別を前記少なくとも一つのＨａｓｈインデックスエントリへマッチングを行うことと、
一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって該パケットを処理することを含む
ことを特徴とするパケット処理方法である。
【請求項２】
ＨａｓｈインデックステーブルがＨａｓｈテーブルであり、
識別された操作種別を前記少なくとも一つのＨａｓｈインデックスエントリへマッチングを行うことは、識別された操作種別を少なくとも一つのＨａｓｈエントリへマッチングを行うことを含み、
一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって該パケットを処理することは、一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている処理モードによって該パケットを処理することを含む
ことを特徴とする請求項１に記載の方法である。
【請求項３】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれており、
識別された操作種別を前記少なくとも一つのＨａｓｈインデックスエントリへマッチングを行うことは、各Ｈａｓｈエントリに対して、該Ｈａｓｈエントリに含まれている結果テーブルポインターによってインデックスして対応する結果テーブルをサーチすることと、識別された操作種別を得られた結果テーブルにおいて結果エントリへマッチングを行うことを含み、
一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって該パケットを処理することは、一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって該パケットを処理することを含む
ことを特徴とする請求項１に記載の方法である。
【請求項４】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれており、
識別された操作種別を前記少なくとも一つのＨａｓｈインデックスエントリへマッチングを行うことは、識別された操作種別を少なくとも一つのＨａｓｈエントリへマッチングを行うことと、一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている結果テーブルポインターによってインデックスして対応する結果テーブルをサーチすることと、識別された操作種別を得られた結果テーブルにおいて結果エントリへマッチングを行うことを含み、
一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって該パケットを処理することは、一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって該パケットを処理することを含む
ことを特徴とする請求項１に記載の方法である。
【請求項５】
識別された操作種別を前記少なくとも一つのＨａｓｈインデックスエントリへマッチングを行った後は、
一つのＨａｓｈインデックスエントリもヒットされていない場合は、該パケットに基づいてＨａｓｈインデックスエントリを生成すると確定した時に、前記演算結果をＨａｓｈエントランスとし、Ｈａｓｈインデックステーブルに識別された前記操作種別を含むＨａｓｈインデックスエントリを追加することと、該パケットを破棄すると確定した時に、該パケットを破棄すること、をさらに含む
ことを特徴とする請求項１に記載の方法である。
【請求項６】
インターフェースに少なくとも一つのＡＣＬルールが配置された場合に、プリセットした分類ルールによって前記少なくとも一つのＡＣＬルールを少なくとも一つのＡＣＬマッチサービスサブクラスに仕切ることと、
該インターフェースと、前記少なくとも一つのＡＣＬマッチサービスサブクラスとの対応関係をインターフェーステーブルに配置することと、
パケットを受信して該パケットに対して実行すべく操作種別を識別することと、をさらに含み、
パケットを受信して該パケットに対して実行すべく操作種別を識別することは、
パケットを受信して前記インターフェーステーブルに基づいて該受信したパケットのイングレスインターフェースと対応する少なくとも一つのＡＣＬマッチサービスサブクラスをサーチすることと、
得られた少なくとも一つのＡＣＬマッチサービスサブクラスから、前記受信したパケットとマッチしているＡＣＬマッチサービスサブクラスを該パケットに対して実行すべく操作種別として確定することと、を含む
ことを特徴とする請求項１に記載の方法である。
【請求項７】
前記少なくとも一つのＡＣＬマッチサービスサブクラスには、レイヤ２のＡＣＬマッチサービスサブクラスと、レイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスと、レイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとが含まれており、
前記受信したパケットとマッチしているＡＣＬマッチサービスサブクラスを確定することは、
該パケットがレイヤ２のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ２のＡＣＬマッチサービスサブクラスとして確定することと、
該パケットがレイヤ３かつＩＰｖ４のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスとして確定することと、
該パケットがレイヤ３かつＩＰｖ６のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとして確定することを含む
ことを特徴とする請求項６に記載の方法である。
【請求項８】
パケットを受信する受信モジュールと、
前記受信モジュールによりパケットを受信して該パケットに対して実行すべく操作種別を識別し、該パケットからキーバリューを抽出してＨａｓｈ演算を行う識別演算モジュールと、
前記識別演算モジュールによる演算結果をＨａｓｈエントランスとし、機器のＨａｓｈインデックステーブルから少なくとも一つのＨａｓｈインデックスエントリをサーチするエントリサーチモジュールと、
前記識別演算モジュールにより識別された操作種別を前記エントリサーチモジュールにより得られた少なくとも一つのＨａｓｈインデックスエントリへマッチングを行うマッチングモジュールと、
前記マッチングモジュールにより一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって前記受信モジュールにより受信したパケットを処理するパケット処理モジュールと、を含む
ことを特徴とするパケット処理装置である。
【請求項９】
ＨａｓｈインデックステーブルがＨａｓｈテーブルであり、
前記マッチングモジュールは、前記識別演算モジュールにより識別された操作種別を前記エントリサーチモジュールにより得られた少なくとも一つのＨａｓｈエントリへマッチングを行い、
前記パケット処理モジュールは、前記マッチングモジュールにより一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている処理モードによって前記受信モジュールにより受信したパケットを処理する
ことを特徴とする請求項８に記載の装置である。
【請求項１０】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれており、
前記マッチングモジュールは、
前記エントリサーチモジュールによって得られた各Ｈａｓｈエントリに対して、該Ｈａｓｈエントリに含まれている結果テーブルポインターによってインデックスして、対応する結果テーブルをサーチするサーチユニットと、
前記識別演算モジュールにより識別された操作種別を前記サーチユニットにより得られた結果テーブルにおいて結果エントリへマッチングを行う結果エントリマッチングユニットと、を含み、
前記パケット処理モジュールは、前記結果エントリマッチングユニットにより一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって前記受信モジュールにより受信したパケットを処理する
ことを特徴とする請求項８に記載の装置である。
【請求項１１】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれており、
前記マッチングモジュールは、
前記識別演算モジュールにより識別された操作種別を前記エントリサーチモジュールにより得られた少なくとも一つのＨａｓｈエントリへマッチングを行うＨａｓｈエントリマッチングユニットと、
前記Ｈａｓｈエントリマッチングユニットにより一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている結果テーブルポインターによってインデックスして、対応する結果テーブルをサーチするサーチユニットと、
前記識別演算モジュールにより識別された操作種別を前記サーチユニットにより得られた結果テーブルにおいて結果エントリへマッチングを行う結果エントリマッチングユニットと、を含み、
前記パケット処理モジュールは、前記結果エントリマッチングユニットにより一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって前記受信モジュールにより受信したパケットを処理する
ことを特徴とする請求項８に記載の装置である。
【請求項１２】
前記マッチングモジュールにより一つのＨａｓｈインデックスエントリもヒットされていない場合に、前記受信モジュールにより受信したパケットに基づいてＨａｓｈインデックスエントリを生成すると確定した時に、前記識別演算モジュールによる演算結果をＨａｓｈエントランスとし、Ｈａｓｈインデックステーブルに前記識別演算モジュールにより識別された操作種別を含むＨａｓｈインデックスエントリを追加する追加モジュールと、
前記マッチングモジュールにより一つのＨａｓｈインデックスエントリもヒットされていない場合に、前記受信モジュールにより受信したパケットを破棄すると確定した時に、該パケットを破棄するパケット破棄モジュールと、をさらに含む
ことを特徴とする請求項８に記載の装置である。
【請求項１３】
仕切るモジュールとインターフェーステーブル配置モジュールをさらに含み、
前記識別演算モジュールは、サブクラスサーチユニットと操作種別確定ユニットとをさらに含み、
前記仕切るモジュールは、インターフェースに少なくとも一つのＡＣＬルールが配置された場合に、プリセットした分類ルールによって前記少なくとも一つのＡＣＬルールを少なくとも一つのＡＣＬマッチサービスサブクラスに仕切り、
前記インターフェーステーブル配置モジュールは、該インターフェースと、前記仕切るモジュールに仕切されてなる少なくとも一つのＡＣＬマッチサービスサブクラスとの対応関係をインターフェーステーブルに配置し、
前記サブクラスサーチユニットは、前記受信モジュールによりパケットを受信して、前記インターフェーステーブルに基づいて該パケットのイングレスインターフェースと対応する少なくとも一つのＡＣＬマッチサービスサブクラスをサーチし、
前記操作種別確定ユニットは、前記サブクラスサーチユニットにより得られた少なくとも一つのＡＣＬマッチサービスサブクラスから、前記受信モジュールにより受信したパケットとマッチしているＡＣＬマッチサービスサブクラスを該パケットに対して実行すべく操作種別として確定する
ことを特徴とする請求項８に記載の装置である。
【請求項１４】
前記少なくとも一つのＡＣＬマッチサービスサブクラスは、レイヤ２のＡＣＬマッチサービスサブクラスと、レイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスと、レイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとを含み、
前記操作種別確定ユニットは、
前記受信モジュールにより受信したパケットがレイヤ２のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ２のＡＣＬマッチサービスサブクラスとして確定し、
前記受信モジュールにより受信したパケットがレイヤ３かつＩＰｖ４のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスとして確定し、
前記受信モジュールにより受信したパケットがレイヤ３かつＩＰｖ６のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとして確定する
ことを特徴とする請求項１３に記載の装置である。
【発明の詳細な説明】
【背景技術】
【０００１】
パケットを処理する時には、ネットワーク機器はインターフェースの構成情報やパケットの種類などの情報によってパケットに対して各種の操作を実行し、転送やトラフィック処理などの目的を果たす。例えば、レイヤ２転送、レイヤ３転送、ユニキャスト転送、マルチキャスト転送およびＡＣＬ（アクセスコントロールリスト）マッチサービスなどが挙げられる。そして、一般的には、同一のパケットに対する種類の異なる処理が排他的である。例えば、あるパケットに対してレイヤ２転送を実行したら、多くの場合は該パケットに対してさらにレイヤ３転送を実行しないことになる。あるパケットに対してユニキャスト転送を実行したら、多くの場合は該パケットに対してさらにマルチキャスト転送を実行しないことになる。
【図面の簡単な説明】
【０００２】
【図１】図１は本願の実施例のパケット処理方法のフローチャートである。
【図２】図２は本願の実施例のパケット処理方法のフローチャートである。
【図３】図３は本願の実施例のＨａｓｈテーブルと結果テーブルを示す図である。
【図４】図４は本願の実施例のパケット処理装置の一つの構造模式図である。
【図５】図５は本願の実施例のパケット処理装置のもう一つの構造模式図である。
【図６】図６は本願の実施例のパケット処理装置のもう一つの構造模式図である。
【図７】図７は本願の実施例のパケット処理装置のハードウェアアーキテクチャの模式図である。
【発明を実施するための形態】
【０００３】
本願は以下の実施例においてパケット処理方法と、該方法を適用できるパケット処理装置とを提供している。
【０００４】
本願の以下の実施例はＨａｓｈサーチモードによってパケットを処理するネットワーク機器に適用できる。
【０００５】
説明の便利上、本明細書にはＨａｓｈインデックステーブルを取り入れている。Ｈａｓｈインデックステーブルは二つの形がある。一方のＨａｓｈインデックステーブルはＨａｓｈテーブルであり、該Ｈａｓｈテーブルは有効識別子と、操作種別と、処理モードとを含んでいる。該Ｈａｓｈテーブルの構造は表１に示されている。
【０００６】
【表１】
0006498356.tif 000002
【０００７】
表１において、Ｖａｌｉｄは有効識別子であり、対応するエントリが有効であるかどうかを示すためのものであり、
Ｔｙｐｅは操作種別であり、レイヤ２転送や、レイヤ３のＩＰｖ４転送や、レイヤ３のＩＰｖ６転送や、マルチキャスト転送や、ＡＣＬマッチサービスなどが可能であり、
処理情報はＨａｓｈエントリとマッチしているパケットに対する処理モードであり、処理モードは、パケットを制御プレーンに送信してＨａｓｈエントリを生成することと、パケットを制御プレーンに送信してＡＲＰ学習することと、パケットを破棄することとを含むことが可能である。この場合は、パケットに対して実行すべく処理モードを該ＨａｓｈテーブルのＨａｓｈエントリに直接に格納する。
【０００８】
他方のＨａｓｈインデックステーブルはＨａｓｈテーブルと、結果テーブルとを含み、Ｈａｓｈテーブルは少なくとも有効識別子と、結果テーブルポインターとを含み、該Ｈａｓｈテーブルは、表２や、表３に示すように、さらに操作種別を含んでもよい。
【０００９】
【表２】
0006498356.tif 000003
【００１０】
【表３】
0006498356.tif 000004
【００１１】
表２および表３において、Ｖａｌｉｄは有効識別子であり、対応するエントリが有効であるかどうかを示すためのものであり、
Ｔｙｐｅは操作種別であり、レイヤ２転送や、レイヤ３のＩＰｖ４転送や、レイヤ３のＩＰｖ６転送や、マルチキャスト転送やＡＣＬマッチサービスなどが可能であり、
処理情報は結果テーブルポインターであり、該結果テーブルポインターによって、ＨａｓｈテーブルにおけるＨａｓｈエントリを結果テーブルにおける結果エントリへマッピングし、該結果テーブルポインターによって一つの結果エントリへマッピングしてもよく、複数の結果エントリへマッピングしてもよい。該結果テーブルは表４に示されている。
【００１２】
【表４】
0006498356.tif 000005
【００１３】
図４において、ＶａｌｉｄおよびＴｙｐｅの意味はＨａｓｈテーブルのと一致している。
【００１４】
処理モードは結果エントリとマッチしているパケットに対する処理モードである。例えば、処理モードは、パケットを制御プレーンに送信してＨａｓｈエントリを生成することと、パケットを破棄することとを含むことが可能である。
【００１５】
処理モードは内容が少なく、Ｈａｓｈテーブルの中へ十分に格納することができる時に、結果テーブルを設置しなくてもよく、処理モードは内容が多く、Ｈａｓｈテーブルの中へ全部格納することができない時に、Ｈａｓｈテーブルと結果テーブルを使用して、処理モードを結果テーブルに格納し、結果テーブルポインターを用いてＨａｓｈテーブルと結果テーブルとのマッピンクを確立する。
【００１６】
本願の実施例におけるＨａｓｈテーブルおよび／又は結果テーブルは、さらにＫｅｙを含んでも良い。Ｋｅｙはキーバリュー（Ｋｅｙ  Ｖａｌｕｅ）であり、異なるＴｙｐｅに対応するＫｅｙは異なっている。例えば、Ｔｙｐｅがレイヤ２転送である場合に、Ｋｅｙには宛先ＭＡＣ（メディアアクセスコントロール）アドレスと、送信元ＭＡＣアドレスと、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ、バーチャリプライベートネットワーク）ＩＤ（Ｉｄｅｎｔｉｔｙ：アイデンティティー）とが含まれており、Ｔｙｐｅがレイヤ３のＩＰｖ４転送である場合に、Ｋｅｙには宛先ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：インターネットプロトコル）アドレスと、送信元ＩＰアドレスと、ＶＰＮ  ＩＤとが含まれており、Ｔｙｐｅがレイヤ３のＩＰｖ６転送である場合に、Ｋｅｙには宛先ＩＰアドレスと、送信元ＩＰアドレスと、ＶＰＮ  ＩＤと、レイヤ３のプロトコル番号とが含まれており、Ｔｙｐｅがマルチキャスト転送である場合に、Ｋｅｙには宛先ＩＰアドレスと、送信元ＩＰアドレスと、ＶＰＮ  ＩＤと、宛先ポート番号とが含まれており、ＴｙｐｅがＡＣＬ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ：アクセスコントロールリスト）マッチサービスである場合に、ＫｅｙにはＡＣＬマッチに必要な全てのキーバリューが含まれている。上記記載は異なるＴｙｐｅに対して抽出すべくＫｅｙの例示であり、本願では上記に限定するものではないことが言うまでもない。
【００１７】
ＴｙｐｅとＫｅｙとはＨａｓｈコンフリクトの解消に用いられる。Ｈａｓｈインデックステーブルには複数のＨａｓｈインデックスエントリが格納されているとする。１つのパケットから抽出されたキーバリューに対してＨａｓｈ演算してなる演算結果がａとなり、もう一つのパケットから抽出されたキーバリューに対してＨａｓｈ演算してなる演算結果もａとなれば、Ｈａｓｈコンフリクトが生じる。この二つのパケットによって生成されたＨａｓｈインデックスエントリの両方ともＨａｓｈエントランスがａであるメモリスペースに保存される。ＴｙｐｅとＫｅｙとによって、どのパケットが該Ｈａｓｈインデックスエントリとマッチできるかを確定する。
【００１８】
また、ＨａｓｈインデックステーブルがＨａｓｈテーブルでありかつチェンリストである場合は、１つのパケットから抽出されたキーバリューに対してＨａｓｈ演算してなる演算結果がａとなり、該ａが複数のＨａｓｈエントリに対応していれば、Ｈａｓｈコンフリクトも生じる。ＴｙｐｅとＫｅｙとによって、複数のＨａｓｈインデックスエントリから１つのマッチしているＨａｓｈエントリを見つける。
【００１９】
ＨａｓｈインデックステーブルにはＨａｓｈテーブルと結果テーブルが含まれている場合に、上記過程と概ねに同じになるが、ＨａｓｈテーブルにおけるＨａｓｈエントリとマッチしている時に、結果テーブルポインターによって結果テーブルにおいて処理モードをサーチすることが異なるだけで、贅言を控える。
【００２０】
なお、Ｈａｓｈインデックステーブルの構成は自由度が高いので、ＴｙｐｅとＫｅｙとの配置位置がＨａｓｈインデックステーブルの配置時のニーズによって調整できる。例えば、ＴｙｐｅをＨａｓｈテーブルに配置し、Ｋｅｙを結果テーブルに配置すること、または、ＴｙｐｅをＨａｓｈテーブルと結果テーブルにそれぞれ配置し、ＫｅｙをＨａｓｈテーブルに配置すること、または、ＴｙｐｅとＫｅｙをＨａｓｈテーブルに配置し、結果テーブルに配置しないことなどがある。
【００２１】
図１は本願の実施例のパケット処理方法のフローチャートである。図１に示すように、本願の実施例のパケット処理方法は以下のステップを含む。
【００２２】
ステップ１０２において、パケットを受信して、該パケットに対して実行すべく操作種別を識別する。
【００２３】
本ステップにおいて、一般的には、インターフェーステーブルから該パケットのイングレスインターフェースに関連する構成情報を得ることができる。得られた構成情報およびパケットを解析して得られた内容によって、該パケットに対して実行すべく操作種別（Ｔｙｐｅ）を識別する。  例えば、操作種別はレイヤ２転送や、レイヤ３のＩＰｖ４転送や、レイヤ３のＩＰｖ６転送や、マルチキャスト転送や、ＡＣＬマッチサービスなどが可能である。Ｈａｓｈテーブルおよび／又は結果テーブルにおいて、Ｔｙｐｅの値に対応する種別はユーザーによって予め設定している。例えば、レイヤ２転送に対応する値は０１であり、レイヤ３のＩＰｖ４転送に対応する値は０２である。
【００２４】
ＡＣＬマッチサービスを例として説明する。あるインターフェースに少なくとも１つのＡＣＬルールを設定していると、前記少なくとも１つのＡＣＬルールをプリセットした分類ルールによって少なくとも１つのＡＣＬマッチサービスサブクラスに仕切る。例えば、該少なくとも１つのＡＣＬマッチサービスサブクラスは、レイヤ２のＡＣＬマッチサービスサブクラスや、レイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスや、レイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスが可能である。そして、該インターフェースと該少なくとも１つのＡＣＬマッチサービスサブクラスとの対応関係をインターフェーステーブルに配置する。このようにすると、ステップ１０２において、パケットを受信してインターフェーステーブルに基づいて該パケットのイングレスインターフェースに対応する少なくとも１つのＡＣＬマッチサービスサブクラスをサーチし、得られた少なくとも１つのＡＣＬマッチサービスサブクラスから、該パケットとマッチしているＡＣＬマッチサービスサブクラスをパケットに対して実行すべく操作種別として確定する。例えば、該パケットはレイヤ２のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ２のＡＣＬマッチサービスサブクラスとして確定し、  該パケットはレイヤ３のパケットかつＩＰｖ４のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスとして確定し、該パケットはレイヤ３のパケットかつＩＰｖ６パケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとして確定する。
【００２５】
ステップ１０４において、識別された操作種別によって該パケットから複数のキーバリュー（Ｋｅｙ）を抽出する。
【００２６】
本願の実施例において、操作種別がレイヤ２転送である場合に、パケットの宛先ＭＡＣアドレスと、送信元ＭＡＣアドレスと、ＶＰＮ  ＩＤとを抽出する。
【００２７】
操作種別がレイヤ３のＩＰｖ４転送である場合に、パケットの宛先ＩＰアドレスと、送信元ＩＰアドレスと  、ＶＰＮ  ＩＤとを抽出する。
【００２８】
操作種別がレイヤ３のＩＰｖ６転送である場合に、パケットの宛先ＩＰアドレスと、送信元ＩＰアドレスと、ＶＰＮ  ＩＤと、レイヤ３のプロトコル番号とを抽出する。
【００２９】
操作種別がマルチキャスト転送である場合に、パケットの宛先ＩＰアドレスと、送信元ＩＰアドレスと、ＶＰＮ  ＩＤと、宛先ポート番号とを抽出する。
【００３０】
操作種別がＡＣＬマッチサービスである場合に、ＡＣＬマッチに必要なキーバリューを抽出する。
【００３１】
上記は異なる操作種別に対して抽出すべくキーバリューの例示であり、本願において限定するものではない。
【００３２】
ステップ１０６において、抽出されたキーバリューに対してＨａｓｈ演算する。
【００３３】
本願の実施例において、特定なアルゴリズムによって、抽出されたキーバリューに対してＨａｓｈ演算する。特定なアルゴリズムはＸＯＲアルゴリズムやＣＲＣ（Ｃｙｃｌｉｃ・Ｒｅｄｕｎｄａｎｃｙ・Ｃｈｅｃｋ：巡回冗長検査）なとが可能である。
【００３４】
ステップ１０８において、ステップ１０６での演算結果をＨａｓｈエントランスとし、本機器のＨａｓｈインデックステーブルから少なくとも１つのＨａｓｈインデックスエントリが見つけられた。
【００３５】
Ｈａｓｈコンフリクトが存在する可能性があるので、同一のＨａｓｈエントランスでのＨａｓｈインデックスエントリは一つまたは複数がある。
【００３６】
本願の実施例において、ステップ１０８で見つけられたのは少なくとも一つのＨａｓｈエントリであり、そして、ＨａｓｈインデックステーブルがＨａｓｈテーブルである場合に、見つけられたＨａｓｈエントリには処理モードが含まれており、ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルとが含まれている場合に、Ｈａｓｈテーブルおよび／又は結果テーブルにはＴｙｐｅが含まれており、見つけられたＨａｓｈエントリには結果テーブルポインターが含まれている。
【００３７】
ステップ１１０において、識別された操作種別をこの少なくとも一つのＨａｓｈインデックスエントリへマッチングを行う 。
【００３８】
この過程において、操作種別とキーバリューのそれぞれによってマッチングを行ってもよい。
【００３９】
ステップ１１２において、一つのＨａｓｈインデックスエントリがヒットされたのかどうかと判断する。ＹＥＳの場合に、ステップ１１４へ進み、ＮＯの場合に、ステップ１１６へ進む。
【００４０】
ステップ１１４において、ヒットされたＨａｓｈインデックスエントリによって、該パケットを処理する。
【００４１】
本願の実施例において、ＨａｓｈインデックステーブルがＨａｓｈテーブルである場合に、Ｈａｓｈテーブルは表１に示すようにＴｙｐｅを含んでいる。ステップ１１０において、識別された操作種別を得られた少なくとも一つのＨａｓｈエントリへマッチングを行う。ステップ１１４において、一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている処理モードによって、該パケットを処理する。
【００４２】
本願の実施例において、ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれているとともに、Ｈａｓｈテーブルに表２に示すようにＴｙｐｅが含まれていなく、結果テーブルに表４に示すようにＴｙｐｅが含まれている場合には、ステップ１１０において、得られたＨａｓｈエントリ毎に該Ｈａｓｈエントリに含まれている結果テーブルポインターによってインデックスして、対応する結果テーブルをサーチする。そして、識別された操作種別によって、得られた結果テーブルにおいて結果エントリへマッチングを行う。ステップ１１４において、一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって、該パケットを処理する。
【００４３】
本願の実施例において、ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれているとともに、Ｈａｓｈテーブルに表３に示すようにＴｙｐｅが含まれており、結果テーブルに表４に示すようにＴｙｐｅが含んまれている場合には、ステップ１１０において、識別された操作種別を得られた少なくとも一つのＨａｓｈエントリへマッチングを行う。一つのＨａｓｈエントリがヒットされると、ヒットされた結果エントリに含まれている結果テーブルポインターによってインデックスして、対応する結果テーブルをサーチする。そして、識別された操作種別によって、得られた結果テーブルにおいて結果エントリへマッチングを行う。ステップ１１４において、一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって、該パケットを処理する。
【００４４】
ステップ１１６において、識別された操作種別によって、該パケットに対応する操作をする。例えば、該パケットを破棄することや該パケットを制御プレーンに送信して該パケットに基づいてＨａｓｈインデックスエントリを生成することである。
【００４５】
パケットを処理する時に、操作種別毎にデフォルトの処理モードを設置する。対応するＨａｓｈインデックスエントリがマッチされることができなかった場合に、識別された操作種別によってデフォルトの処理モードを確定し、該デフォルトの処理モードによって処理を行う。該デフォルトの処理モードには該パケットを制御プレーンに送信して新しいＨａｓｈインデックスエントリを生成することや該パケットを破棄することが含まれていてもよい。
【００４６】
本願の実施例において、ステップ１１６で該パケットに基づいてＨａｓｈインデックスエントリを生成する過程は以下のようになる。該パケットから抽出されたキーバリューをＨａｓｈ演算してなる演算結果をＨａｓｈエントランスとし、ＨａｓｈテーブルにＨａｓｈエントリを追加する。Ｈａｓｈインデックステーブルが表１に示すようなＨａｓｈテーブルである場合に、追加されるＨａｓｈエントリには、Ｖａｌｉｄ、Ｔｙｐｅおよび処理モードとする処理情報が含まれている。Ｈａｓｈインデックステーブルに表２に示すようなＨａｓｈテーブルと表４に示すような結果テーブルが含まれている場合に、追加されるＨａｓｈエントリにはＶａｌｉｄおよび処理情報が含まれている。そのうち、処理情報は結果テーブルポインターである。Ｈａｓｈインデックステーブルに表３に示すようなＨａｓｈテーブルと表４に示すような結果テーブルが含まれている場合に、追加されるＨａｓｈエントリにはＶａｌｉｄ、Ｔｙｐｅおよび処理情報が含まれている。そのうち、処理情報は結果テーブルポインターである。
【００４７】
本願の上記実施例の方法において、Ｈａｓｈインデックステーブルに操作種別即ちTypeが取り入られているので、異なる操作種別に対応する複数のＨａｓｈインデックステーブルを、操作種別が分別されて一つのＨａｓｈインデックステーブルに統合することができ、異なる操作種別がそれぞれに複数のＨａｓｈテーブルに対応することを避けている。異なるデータスティームを処理するために、いずれのＨａｓｈテーブルにも機器が処理可能でデータスティームに対応する全てのメモリスペースを分配して、対応するＨａｓｈエントリを格納する。このようにすると、ネットワーク機器はＨａｓｈテーブル毎に全てのデータスティームに対応するＨａｓｈエントリを十分に格納できるメモリスペース（１つのＳｕｍと称する）を分配する必要がある。本願の実施例に提供されたＨａｓｈインデックステーブルは一つのＳｕｍのメモリスペースのみ占めているので、異なる複数の操作種別が同一のメモリスペースＳｕｍを使用してエントリのスペース資源を節約することができる。なお、Ｈａｓｈインデックステーブルに操作種別が取り入られているので、いずれのＨａｓｈインデックスエントリも操作種別に対応するキーバリューを記録するだけでよく、さらにエントリのスペース資源を節約することができる。
【００４８】
以下、具体的な例示で本願に係るパケット処理方法を説明する。図２は本願の実施例のパケット処理方法のフローチャートである。本実施例においては、ＨａｓｈインデックステーブルにはＨａｓｈテーブルと結果テーブルが含まれている。Ｈａｓｈテーブルは一つのＨａｓｈエントランスが一つのＨａｓｈエントリと対応する態様が採用されている。また、ＨａｓｈテーブルにはＶａｌｉｄ、Ｔｙｐｅ、Ｋｅｙおよび結果テーブルポインターが含まれている。結果テーブルにはＶａｌｉｄ、Ｔｙｐｅおよび処理モードが含まれている。
【００４９】
Ｓ１において、パケットを受信し、該パケットのイングレスインターフェースにおける構成情報を得る。例えば、イングレスインターフェースにレイヤ２転送が配置された場合に、対応するＴｙｐｅの値が０１であると得る。
【００５０】
Ｓ２において、識別されたＴｙｐｅによって、パケットからＫｅｙである送信元ＭＡＣアドレス、宛先ＭＡＣアドレスおよびＶＰＮ  ＩＤを抽出する。
【００５１】
Ｓ３において、抽出されたＫｅｙによって、Ｈａｓｈ演算を行ってＨａｓｈエントランスを得る。そして、Ｈａｓｈエントランスに対応するＨａｓｈエントリを得る。本実施例に係るＨａｓｈテーブルと結果テーブルは表３に示すようになる。
【００５２】
Ｓ４において、パケットのＴｙｐｅによって、得られたＨａｓｈエントリのＴｙｐｅへマッチングを行う。Ｈａｓｈエントリとマッチしていると、Ｓ６へ進み、そうでないと、Ｓ５へ進む。
【００５３】
Ｓ５において、デフォルト処理モードを実行し、該パケットを破棄する。
【００５４】
Ｓ６において、Ｈａｓｈエントリの結果テーブルポインター１によって、結果テーブルをサーチして対応する結果エントリを得る。
【００５５】
Ｓ７において、パケットのＴｙｐｅによって、対応する結果エントリへマッチングを行う。結果エントリとマッチしていると、Ｓ８へ進み、そうでないと、Ｓ５へ進む。
【００５６】
Ｓ８において、該結果エントリにおける処理モードによって、パケットを処理する。例えば、パケットを制御プレーンに送信してＡＲＰ学習を行う。
【００５７】
このように、一回のパケット処理を完成した。パケットの操作種別に基づいて、必要であるキーバリューを識別してＨａｓｈインデックステーブルへマッチングを行う。Ｈａｓｈインデックステーブルに大量のキーバリューを格納することや、異なる操作種別に対して異なるＨａｓｈインデックステーブルを格納することがないので、パケット処理装置の転送性能を向上する。
【００５８】
上記実施例の方法に対して、本願の実施例は上記方法を利用することができるパケット処理装置をさらに提供している。該装置はＨａｓｈテーブルをサーチすることによってパケットを処理するネットワーク機器に用いられることができる。
【００５９】
表４に示すように、該パケット処理装置には、受信モジュール２０１、識別演算モジュール２０２、エントリサーチモジュール２０３、マッチングモジュール２０４およびパケット処理モジュール２０５が含まれている。
【００６０】
受信モジュール２０１はパケットを受信する。
【００６１】
識別演算モジュール２０２は受信モジュール２０１によりパケットを受信して該パケットに対して実行すべく操作種別を識別し、該パケットからキーバリューを抽出してＨａｓｈ演算を行う。
【００６２】
エントリサーチモジュール２０３は識別演算モジュール２０２による演算結果をＨａｓｈエントランスとし、機器のＨａｓｈインデックステーブルから少なくとも一つのＨａｓｈインデックスエントリをサーチする。
【００６３】
マッチングモジュール２０４は識別演算モジュール２０２により識別された操作種別をエントリサーチモジュール２０３により得れれた少なくとも一つのＨａｓｈインデックスエントリへマッチングを行う。
【００６４】
パケット処理モジュール２０５はマッチングモジュール２０４により一つのＨａｓｈインデックスエントリがヒットされると、ヒットされたＨａｓｈインデックスエントリによって受信モジュール２０１により受信したパケットを処理する。
【００６５】
例えば、ＨａｓｈインデックステーブルがＨａｓｈテーブルである場合には、マッチングモジュール２０４は識別演算モジュール２０２により識別された操作種別をエントリサーチモジュール２０３により得れれた少なくとも一つのＨａｓｈエントリへマッチングを行い、パケット処理モジュール２０５はマッチングモジュール２０４により一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている処理モードによって受信モジュール２０１により受信したパケットを処理する。
【００６６】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれているとともに、ＨａｓｈテーブルにＴｙｐｅが含まれていなく、結果テーブルにＴｙｐｅが含まれている場合には、マッチングモジュール２０４にはサーチユニットと結果エントリマッチングユニットが含まれている。
【００６７】
サーチユニットはエントリサーチモジュール２０３によって得れれた各Ｈａｓｈエントリに対して、該Ｈａｓｈエントリに含まれている結果テーブルポインターによってインデックスして対応する結果テーブルをサーチする。
【００６８】
結果エントリマッチングユニットは識別演算モジュール２０２により識別された操作種別をサーチユニットにより得られた結果テーブルにおいて結果エントリへマッチングを行う。
【００６９】
パケット処理モジュール２０５は結果エントリマッチングユニットにより一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって受信モジュール２０１により受信したパケットを処理する。
【００７０】
ＨａｓｈインデックステーブルにＨａｓｈテーブルと結果テーブルが含まれているとともに、Ｈａｓｈテーブルも結果テーブルもＴｙｐｅが含まれている場合には、マッチングモジュール２０４にはＨａｓｈエントリマッチングユニット、サーチユニットおよび結果エントリマッチングユニットが含まれている。
【００７１】
Ｈａｓｈエントリマッチングユニットは識別演算モジュール２０２により識別された操作種別をエントリサーチモジュール２０３により得れれた少なくとも一つのＨａｓｈエントリへマッチングを行う。
【００７２】
サーチユニットはＨａｓｈエントリマッチングユニットにより一つのＨａｓｈエントリがヒットされると、ヒットされたＨａｓｈエントリに含まれている結果テーブルポインターによってインデックスして対応する結果テーブルをサーチする。
【００７３】
結果エントリマッチングユニットは識別演算モジュール２０２により識別された操作種別をサーチユニットにより得られた結果テーブルにおいて結果エントリへマッチングを行う。
【００７４】
パケット処理モジュール２０５は結果エントリマッチングユニットにより一つの結果エントリがヒットされると、ヒットされた結果エントリに含まれている処理モードによって受信モジュール２０１により受信したパケットを処理する。
【００７５】
本願の実施例において、図５に示すように、該パケット処理装置には、さらに、追加モジュール２０６とパケット破棄モジュール２０７が含まれている。
【００７６】
追加モジュール２０６はマッチングモジュール２０４により一つのＨａｓｈインデックスエントリもヒットされていない場合に、受信モジュール２０１により受信したパケットに基づいてＨａｓｈインデックスエントリを生成すると確定した時に、識別演算モジュール２０２により識別された演算結果をＨａｓｈエントランスとし、Ｈａｓｈインデックステーブルに識別演算モジュール２０２により識別された操作種別を含むＨａｓｈインデックスエントリを追加する。
【００７７】
パケット破棄モジュール２０７はマッチングモジュール２０４により一つのＨａｓｈインデックスエントリもヒットされていない場合に、受信モジュール２０１により受信したパケットを破棄すると確定した時に、該パケットを破棄する。
【００７８】
本願の実施例において、図６に示すように、該パケット処理装置には、さらに、仕切るモジュール２０８とインターフェーステーブル配置モジュール２０９が含まれている。識別演算モジュール２０２には、サブクラスサーチユニットと操作種別確定ユニットが含まれている。
【００７９】
仕切るモジュール２０８はインターフェースに少なくとも一つのＡＣＬルールが配置された場合に、プリセットした分類ルールによってこの少なくとも一つのＡＣＬルールを少なくとも一つのＡＣＬマッチサービスサブクラスに仕切る。
【００８０】
インターフェーステーブル配置モジュール２０９は該インターフェースと、仕切るモジュールに仕切されてなる少なくとも一つのＡＣＬマッチサービスサブクラスとの対応関係をインターフェーステーブルに配置する。
【００８１】
サブクラスサーチユニットは受信モジュール２０１によりパケットを受信して、インターフェーステーブルに基づいて該パケットのイングレスインターフェースと対応する少なくとも一つのＡＣＬマッチサービスサブクラスをサーチする。
【００８２】
操作種別確定ユニットはサブクラスサーチユニットにより得れれた少なくとも一つのＡＣＬマッチサービスサブクラスから、受信モジュール２０１により受信したパケットとマッチしているＡＣＬマッチサービスサブクラスを該パケットに対して実行すべく操作種別として確定する。
【００８３】
そのうち、上記の少なくとも一つのＡＣＬマッチサービスサブクラスには、レイヤ２のＡＣＬマッチサービスサブクラス、レイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスおよびレイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスが含まれている。操作種別確定ユニットは、具体的に、以下のように機能している。
【００８４】
受信モジュール２０１により受信したパケットがレイヤ２のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ２のＡＣＬマッチサービスサブクラスとして確定する。
【００８５】
受信モジュール２０１より受信したパケットがレイヤ３かつＩＰｖ４のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ４のＡＣＬマッチサービスサブクラスとして確定する。
【００８６】
受信モジュール２０１により受信したパケットがレイヤ３かつＩＰｖ６のパケットである場合に、該パケットとマッチしているＡＣＬマッチサービスサブクラスをレイヤ３のＩＰｖ６のＡＣＬマッチサービスサブクラスとして確定する。
【００８７】
本願の実施例のパケット処理装置はソフトフェアとハードフェアの共作でプログラム可能な機器であってもよい。図７は該パケット処理装置のハードウェアのストラクチャーを示す図である。図７に示すように、該パケット処理装置には不揮発性メモリ、ＣＰＵ（センタープロセッサー）、転送チップおよびメモリが含まれている。
【００８８】
メモリはインストラクションコードを記憶するものである。前記インストラクションコードが実行して機能されるのは、主に、受信モジュール、識別演算モジュール、エントリサーチモジュール、マッチングモジュール、パケット処理モジュール、追加モジュール、パケット破棄モジュール、仕切るモジュールおよびインターフェーステーブル配置モジュールである。ここで、詳細は省略する。
【００８９】
ＣＰＵは転送チップと通信してパケットの送受信を行うものである。また、メモリと通信してメモリに記憶されている前記インストラクションコードを読み取って実行し、上記パケット処理装置の、例えば受信モジュール、識別演算モジュール、エントリサーチモジュール、マッチングモジュール、パケット処理モジュール、追加モジュール、パケット破棄モジュール、仕切るモジュールおよびインターフェーステーブル配置モジュールに機能をさせ、転送チップから送信されたパケットを処理する。また、不揮発性メモリと通信して不揮発性メモリに記憶されているＨａｓｈテーブル、結果テーブルおよびインターフェーステーブルを含むデータを読む／書く。
【００９０】
転送チップは当該チップの接続端によって他のネットワーク機器に接続してパケットの送受信を行うものである。例えば、受信して得られたパケットをＣＰＵに送信してテーブルサーチを行う。
【００９１】
不揮発性メモリは例えばＨａｓｈテーブル、結果テーブルおよびインターフェーステーブルを含む各種類のデータを記憶するものである。
【００９２】
以上、本願の実施例において、Ｈａｓｈインデックステーブルに操作種別即ちTypeが取り入られているので、異なる操作種別に対応する複数のＨａｓｈインデックステーブルを操作種別が分別されて一つのＨａｓｈインデックステーブルに統合することができ、異なる操作種別がそれぞれに複数のＨａｓｈテーブルに対応することを避けている。異なるデータスティームを処理するために、いずれのＨａｓｈテーブルにも機器が処理可能で全てのデータスティームに対応する全てのメモリスペースを分配して、対応するＨａｓｈエントリを格納する。このようにすると、ネットワーク機器はＨａｓｈテーブル毎に全てのデータスティームに対応するＨａｓｈエントリを十分に格納できるメモリスペース（１つのＳｕｍと称する）を分配する必要がある。本願の実施例において、該Ｈａｓｈインデックステーブルは一つのＳｕｍのメモリスペースのみ占めているので、異なる複数の操作種別が同一のメモリスペースＳｕｍを使用してエントリのスペース資源を節約することができる。なお、Ｈａｓｈインデックステーブルに操作種別が取り入られているので、いずれのＨａｓｈインデックスエントリも操作種別に対応するキーバリューを記録するだけでよく、さらにエントリのスペース資源を節約することができる。
【００９３】
以上の記載は本願に望ましい実施例だけであり、本願を限定するものではない。本願の主旨と原則の内になされるすべての補正、取り替え、改良などは本願の保護範囲に含まれることが言うまでもないものである。
【図１】
0006498356.tif 000006
【図２】
0006498356.tif 000007
【図３】
0006498356.tif 000008
【図４】
0006498356.tif 000009
【図５】
0006498356.tif 000010
【図６】
0006498356.tif 000011
【図７】
0006498356.tif 000012