(57)【特許請求の範囲】
【請求項１】
受信したＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットをＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの前記転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記ＩＰパケットを受信すると、予め定義され、１つのエントリが宛先ＩＰアドレスと送信元ＩＰアドレスとＱｏＳ情報から構成されるＱｏＳテーブルを前記ＩＰパケットの有する前記宛先ＩＰアドレスと前記送信元ＩＰアドレスの組でサーチし、一致するエントリがないと、前記フローテーブルに前記宛先アドレスをハッシュしハッシュ値先に前記宛先ＩＰアドレスの登録を行い、一致するエントリがあると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュしてハッシュ値先に前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を登録することを特徴とするＩＰフロー多段ハッシュ装置。
【請求項２】
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの前記転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記フローテーブルを、第１のテーブルと第２のテーブルとに区分し、
前記第１のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスをハッシュし、そのハッシュ値先に前記第１または第２のテーブルへのリンクをマークビットによって示し、前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第２のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルのハッシュ値先をアクセスし、前記マークビットを参照し前記第１のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスによって前記第１のテーブルのハッシュ値先にリンクされた前記エントリをサーチし、一致する前記エントリを検出すると、該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従い、前記ＩＰパケットの中継を行い、
前記マークビットを参照し前記第２のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルのハッシュ値先をアクセスし、ハッシュ値先にリンクされた前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従い、前記ＩＰパケットの中継を行うことを特徴とするＩＰフロー多段ハッシュ装置。
【請求項３】
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスによる前記第１のテーブルの前記エントリの検索の実行、または前記宛先ＩＰアドレスと送信元ＩＰアドレスの組による前記第２のテーブルの前記エントリの検索を実行し、一致する前記エントリがないと前記登録手段に通知することを特徴とする請求項１または２いずれか１項記載のＩＰフロー多段ハッシュ装置。
【請求項４】
前記登録手段は、前記通知を受けると、前記宛先ＩＰアドレス、前記送信元ＩＰアドレス、前記ＱｏＳ情報を含むＱｏＳテーブルを前記受信したＩＰパケットのフローを特定する前記宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてサーチし、一致するフローの登録があれば、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を前記第２のテーブルに登録し、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組と一致するフローの登録がないと、前記宛先ＩＰアドレスを前記第１のテーブルに登録することを特徴とする請求項１ないし３いずれか１項記載のＩＰフロー多段ハッシュ装置。
【請求項５】
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記フローテーブルを、第１のテーブルと第２のテーブルと第３のテーブルに区分し、
前記第１のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスをハッシュし、そのハッシュ値先に前記第１または前記第２または前記第３のテーブルへのリンクをマークビットによって示し、前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第２のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第３のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号を組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスし、アクセスの結果、前記第２のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、アクセス先の前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従って前記ＩＰパケットの中継を行い、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスし、アクセスの結果、前記第３のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組をハッシュして前記第３のテーブルをアクセスし、アクセス先の前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従って前記ＩＰパケットの中継を行うことを特徴とするＩＰフロー多段ハッシュ装置。
【請求項６】
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を備えることを特徴とするＩＰフロー多段ハッシュ方法。
【請求項７】
コンピュータに、
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を実行させるためのＩＰフロー多段ハッシュプログラム。
【請求項８】
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継するコンピュータに実行させるＩＰフロー多段ハッシュプログラムであって、
前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第１のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第２のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第４のステップと、
を備えることを特徴とするＩＰフロー多段ハッシュプログラム。
【請求項９】
コンピュータに、
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継するコンピュータに実行させるＩＰフロー多段ハッシュプログラムを記録した記録媒体であって、
前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第１のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第２のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第４のステップと、
を備えるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク中継装置において、送信先ポートを決定するハッシュテーブルの制御に関し、特にフローの持つ特性に従い、宛先ＩＰアドレスのみによるハッシュ情報と宛先ＩＰアドレスと送信元ＩＰアドレスとを組にしたハッシュ情報とを切り分けて送信先ポートの決定を行うＩＰフロー多段ハッシュ装置、ＩＰフロー多段ハッシュ方法、ＩＰフロー多段ハッシュプログラム及びその記録媒体に関する。
【０００２】
【従来の技術】
ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）層で転送（フォワーディング、ルーティング）を行う装置をルータと呼ぶ。ルータは複数のネットワーク同士やネットワークと端末間で高速にデータの転送を行う際のネットワーク中継装置であり、その内部にデータを転送する宛先向けの経路を選定するテーブルを備えている。ルータはデータを受信するとそのデータからＩＰ層のＩＰヘッダを参照して経路を選定するテーブルをもとに転送先を決定する。
【０００３】
近年、この転送をソフトウェアではなくハードウェア（ＡＳＩＣと呼ばれるチップ）によって高速に行う装置が利用されてきていて、その一つにＬ３スイッチがある。
【０００４】
ルータは配置された場所によって期待される役割が異なる。一般的には、ネットワークのコア（バックボーン）側に配置されたルータでは、細かな制御はそれほど必要ではなく、大量のパケットを高速に処理する役割がある。細かな制御とは、例えば不要なパケットの廃棄を行うフィルタリングやフローの優先度に基づくサービス品質を反映したＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）制御などを指す。
【０００５】
一方、端末の接続されたエッジ側に配置されたルータは、大量のパケットを処理する必要はないが、フィルタリングやＱｏＳなどの細かな制御を行う役割が必要とされる。
【０００６】
高速転送を行うためのテーブルによって、ＩＰのフロー（または複数のフローの集合）単位に、送信先の中継ルータ等の宛先決定をして宛先に対応する送出ポートの選択をするルータ装置について考えてみる。
【０００７】
このような装置では、高速に宛先ＩＰアドレスを検索するための１つとして、例えばＩＰアドレスを構成する先頭ビットからそのビットのオン、オフによって二分木構造にＩＰアドレスを分割して管理することで宛先を検索する方法がある。
【０００８】
宛先のＩＰアドレスやネットワークアドレスをハッシュしたハッシュテーブルからハードウェアによって高速に宛先を検索し、検索に失敗するとソフトウェアによってニ分木構造による検索を行う方法もある。以降、このハッシュによる高速転送用のテーブルを、フローテーブルと呼ぶことにする。
【０００９】
この種の従来技術として特開２０００−１３８６８８には、受信したパケットから抽出した宛先ＩＰアドレスに基づいて最大ビットのネットマスク値を１ビットずつ減算しながらネットワークアドレスを求め、宛先ネットワークアドレスとルータの転送先送出ポートを組にしたテーブルを検索して該当する転送先送出ポートを決定するという内容が記載されている。
【００１０】
【発明が解決しようとする課題】
このフローテーブルによる検索において、従来の問題点は以下のようである。
【００１１】
フローテーブルに登録するフローの単位を細かくすると、前述したような細かな制御が可能となるが、大量のテーブルを消費してしまう。逆にフローの単位を大まかにすると消費するテーブル個数は少なくて済むが、細かな制御が不可能になってしまうという問題がある。
【００１２】
二分木とフローテーブルとを前述したように両方使用する検索方法の場合、テーブルを大量に使用すると、メモリを大量に消費するので装置毎に使用する量の上限がある。上限に達すると高速転送は不可能となり、低速な二分木による転送を使用することになってしまう。Ｌ３スイッチにおいては、フローテーブルの検索はハードウェアで行い、二分木検索はソフトウェアで行う場合が一般的であり、この場合の速度差は桁違いである。
【００１３】
ユーザの使い方によっては、コア側のルータであっても一部細かな制御したい場合や、エッジ側のルータであっても（メモリを消費せず）大量にパケットを扱いたい要求があった。
【００１４】
まず、フローテーブル中に登録するＩＰアドレスの個数をより少なくする方法を考えてみる。フローテーブルに登録するＩＰアドレスにハッシュを用いる場合、フローテーブルのＩＰアドレスの使用個数を削減するためにネットマスク（ネットワークアドレス）を使用するのは以下の理由で困難である。
【００１５】
ＩＰパケット受信時にＩＰヘッダから宛先ＩＰアドレスを取り出しハッシュしてフローテーブルの検索開始位置（ハッシュ位置）を計算するとき、宛先ＩＰアドレス全体を使用する場合には、この宛先ＩＰアドレスと同じ宛先ネットワークのネットワークアドレスによるハッシュ位置とは同じにならない可能性が高い。このようにネットマスク（ネットワークアドレス）を使用することで、フローテーブルに登録するＩＰアドレスの個数を削減する試みは無意味となる。例えば、ネットマスクをルータ装置全体で一つにしてしまえば問題は回避できるが、可変長ネットマスクが一般的な現在において、現実的でない。
【００１６】
特開２０００−１３８６８８では、何度もハッシュ計算することで回避しているが、複数回のハッシュ計算による速度低下が否めない。
【００１７】
よって、フローテーブルへの登録におけるネットマスク（ネットワークアドレス）を使用してＩＰアドレスの個数を少なくする方法は採用できないので、宛先ＩＰアドレスは必ず４バイト全体をハッシュ計算に使用せざるを得ない。
【００１８】
ところで、宛先ＩＰアドレスだけの登録では、例えば、同じ宛先ＩＰアドレスへの送信パケットであっても、ある送信元ＩＰアドレスのパケットは転送し、別の送信元ＩＰアドレスのパケットは破棄するといった制御を、フローテーブルだけで決定することができない。すなわち、送信元ＩＰアドレスを考慮した破棄（フィルタリング）、優先制御（ＱｏＳ制御）等を行うことができない。
【００１９】
特開平６−１５２６５５にはこのフィルタリングや流量制御等の問題を宛先と送信元のアドレスを組にしてルータのアドレステーブルに登録することで解決する内容が記載されているが、前述したフローテーブルへの登録ＩＰアドレス数の増加についての対策は考慮されていない。
【００２０】
そこで、本発明は、フローテーブルに宛先ＩＰアドレスのみからなるテーブルと宛先ＩＰアドレスと送信元ＩＰアドレスの組からなるテーブルとを設け、フローの内容に応じて２つのテーブルを使い分け、段階的に送信元ＩＰアドレスやＬ４ポート番号を追加登録していくことで、きめ細かなフロー制御を行うとともにフローテーブルの増大を防ぎ、上記問題の解決を図るＩＰフロー多段ハッシュ装置、ＩＰフロー多段ハッシュ方法、ＩＰフロー多段ハッシュプログラム及びその記録媒体を提供するものである。
【００２１】
【課題を解決するための手段】
本発明の第１のＩＰフロー多段ハッシュ装置は、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの前記転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記ＩＰパケットを受信すると、予め定義され、１つのエントリが宛先ＩＰアドレスと送信元ＩＰアドレスとＱｏＳ情報から構成されるＱｏＳテーブルを前記ＩＰパケットの有する前記宛先ＩＰアドレスと前記送信元ＩＰアドレスの組でサーチし、一致するエントリがないと、前記フローテーブルに前記宛先アドレスをハッシュしハッシュ値先に前記宛先ＩＰアドレスの登録を行い、一致するエントリがあると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュしてハッシュ値先に前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を登録することを備える。
【００２２】
本発明の第２のＩＰフロー多段ハッシュ装置は、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの前記転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記フローテーブルを、第１のテーブルと第２のテーブルとに区分し、
前記第１のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスをハッシュし、そのハッシュ値先に前記第１または第２のテーブルへのリンクをマークビットによって示し、前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第２のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルのハッシュ値先をアクセスし、前記マークビットを参照し前記第１のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスによって前記第１のテーブルのハッシュ値先にリンクされた前記エントリをサーチし、一致する前記エントリを検出すると、該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従い、前記ＩＰパケットの中継を行い、
前記マークビットを参照し前記第２のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルのハッシュ値先をアクセスし、ハッシュ値先にリンクされた前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従い、前記ＩＰパケットの中継を行うことを備える。
【００２３】
本発明の第３のＩＰフロー多段ハッシュ装置は、第１、第２または第３の発明において、前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスによる前記第１のテーブルの前記エントリの検索の実行、または前記宛先ＩＰアドレスと送信元ＩＰアドレスの組による前記第２のテーブルの前記エントリの検索を実行し、一致する前記エントリがないと前記登録手段に通知することを備える。
【００２４】
本発明の第４のＩＰフロー多段ハッシュ装置は、第１または第２の発明において、前記登録手段は、前記通知を受けると、前記宛先ＩＰアドレス、前記送信元ＩＰアドレス、前記ＱｏＳ情報を含むＱｏＳテーブルを前記受信したＩＰパケットのフローを特定する前記宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてサーチし、一致するフローの登録があれば、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を前記第２のテーブルに登録し、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組と一致するフローの登録がないと、前記宛先ＩＰアドレスを前記第１のテーブルに登録することを備える。
【００２５】
本発明の第５のＩＰフロー多段ハッシュ装置は、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して中継する転送手段と、前記フローテーブルへの転送制御情報の登録を行う登録手段と、を含み、
前記登録手段は、前記フローテーブルを、第１のテーブルと第２のテーブルと第３のテーブルに区分し、
前記第１のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスをハッシュし、そのハッシュ値先に前記第１または前記第２または前記第３のテーブルへのリンクをマークビットによって示し、前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第２のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記第３のテーブルには、前記ＩＰパケットの宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号を組にしてハッシュし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組と前記ＱｏＳ情報と前記送出ポートとが記述された０個以上の同一ハッシュ値を持つエントリを登録し、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスし、アクセスの結果、前記第２のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、アクセス先の前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスの組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従って前記ＩＰパケットの中継を行い、
前記転送手段は、前記ＩＰパケットを受信すると、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスし、アクセスの結果、前記第３のテーブルへのリンクを検出すると、前記宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組をハッシュして前記第３のテーブルをアクセスし、アクセス先の前記エントリから同一の前記宛先ＩＰアドレスと送信元ＩＰアドレスとプロトコル番号と宛先ポート番号と送信元ポート番号の組を有する前記エントリをサーチし、一致する前記エントリを検出すると該エントリに記述された前記ＱｏＳ情報と前記送出ポートとに従って前記ＩＰパケットの中継を行うことを備える。
【００２６】
本発明の第１のＩＰフロー多段ハッシュ方法は、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、宛先ＩＰアドレスと送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を備える。
【００２７】
本発明の第１のＩＰフロー多段ハッシュプログラムは、コンピュータに、
受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を実行させる。
【００２８】
本発明の第２のＩＰフロー多段ハッシュプログラムは、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継するコンピュータに実行させるプログラムであって、
前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第１のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第２のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第４のステップと、
を備える。
【００２９】
本発明の第１の記録媒体は、コンピュータに、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継する第１のステップと、
前記第１のステップにおいて前記フローテーブルに前記送信先の登録が無いと、前記送信先の登録を行う登録手段を呼び出す第２のステップと、
前記登録手段は前記呼び出しを受けると、前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第４のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第５のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第６のステップと、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００３０】
本発明の第２の記録媒体は、受信したＩＰパケットをＱｏＳ情報と送出ポートを含む転送制御情報が登録されたフローテーブルを参照して送信先に中継するコンピュータに実行させるＩＰフロー多段ハッシュプログラムを記録した記録媒体であって、
前記ＩＰパケットの宛先ＩＰアドレスと送信元アドレスの組を元に、前記宛先ＩＰアドレスと前記送信元ＩＰアドレスとＱｏＳ情報を含むフローについてのＱｏＳを定義したＱｏＳテーブルをサーチし、一致するしないのマッチング情報とＱｏＳ情報とを取り出す第１のステップと、
前記宛先ＩＰアドレスによって前記フローテーブルに前記送信先の登録を行うか、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組によって前記送信先の登録を行うかを前記マッチング情報から決定する第２のステップと、
宛先ＩＰアドレスからルーティングテーブルを参照して送出ポートを取り出す第３のステップと、
前記宛先ＩＰアドレスによって前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記フローテーブルの第１のテーブルをアクセスし、そのハッシュ値先に前記宛先ＩＰアドレスと前記ＱｏＳ情報と前記送出ポートとを登録し、
前記宛先ＩＰアドレスと送信元ＩＰアドレスの組で前記送信先を登録する場合、前記宛先ＩＰアドレスをハッシュして前記第１のテーブルをアクセスしハッシュ値先に前記フローテーブルの第２のテーブルへのリンクを記すとともに、前記宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュして前記第２のテーブルをアクセスし、そのハッシュ値先に前期宛先ＩＰアドレスと送信元ＩＰアドレスの組と前記ＱｏＳ情報と前記送出ポートとを登録する第４のステップと、
を備えるプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００３１】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００３２】
本発明の実施の形態の構成を図１を用いて説明する。
【００３３】
図１を参照すると、Ｌ３スイッチ（ＩＰルータ）１０は、ソフトウェアプログラムからなるフロー管理モジュール２５と、フローテーブル２６と、ハードウェアのＬＳＩチップによる送信先の決定を行う転送チップ２７と、を備えている。
【００３４】
Ｌ３スイッチ１０は、図示しないＣＰＵを持つコンピュータである。
【００３５】
尚、転送チップ２７の機能を全てソフトウェアプログラムによって構成することも可能である。
【００３６】
またＬ３スイッチ１０内には他にも、フロー管理モジュール２５にフロー情報の登録を要求する上位モジュールとしてＩＰモジュール２１と、ＱｏＳテーブル２４を管理するＱｏＳ管理モジュール２３と、を備えている。ＩＰモジュール２１とＱｏＳ管理モジュール２３もソフトウェアプログラムである。
【００３７】
尚、登録手段２０は、ＩＰモジュール２１とＱｏＳ管理モジュール２３とフロー管理モジュール２５とＱｏＳテーブル２４とルーティングテーブル２２を総称する。
【００３８】
さらに、Ｌ３スイッチ１０は、図７に例示するように送信の対象となるＬ３スイッチ１０に隣接するルータや端末等について、その装置の属するネットワークのアドレスとＬ３スイッチ１０の送出ポートと隣接ルータとからなるルーティングテーブル２２を備える。
【００３９】
さらに、Ｌ３スイッチ１０は、図６に例示するように、個々のフローを識別する為の送信元ＩＰアドレス、宛先ＩＰアドレス、識別されたフローの持つ優先順位からなるＱｏＳ情報とパケットの廃棄を指定した備考情報とからなるＱｏＳテーブル２４を備える。本発明で説明するＱｏＳ情報は、そのフローの有する優先順位（高、中、低）とそのフローに含まれるパケットを廃棄するか否かの情報からなっているが、これにとらわれるものではない。
【００４０】
本発明を構成するプログラムは、例えばＣＤ−ＲＯＭ等の記録媒体に記録され、そのような記録媒体からＬ３スイッチ１０の図示しないＣＤ−ＲＯＭ装置によってＬ３スイッチ１０にロードされてもよいし、通信機能によって他のコンピュータからロードされてもよい。
【００４１】
次に、フローテーブル２６の構成を図５を用いて説明する。
【００４２】
図５を見ると、フローテーブル２６は、宛先ＩＰアドレスをハッシュしたハッシュ値に対応する数バイト長のエントリを連続して集合した第１ハッシュ先頭領域３１と、宛先ＩＰアドレスと送信元ＩＰアドレスの組をハッシュしたハッシュ値に対応するエントリを連続して集合した第２ハッシュ先頭領域３２と、第１ハッシュ先頭領域３１のそれぞれのエントリからリンクされた宛先ＩＰアドレスとＱｏＳ情報等を含む宛先ＩＰエントリ３３と、同様に第２ハッシュ先頭領域３２のそれぞれのエントリからリンクされた宛先ＩＰアドレスと送信元ＩＰアドレスとＱｏＳ情報等を含む宛先送信元ＩＰエントリ３４と、から構成される。
【００４３】
尚、宛先ＩＰエントリ３３は同じハッシュ値を持つ次の宛先ＩＰエントリ３３をリンクするリンクフィールドを持つ。同様に宛先送信元ＩＰエントリ３４も同じハッシュ値を持つ次の宛先送信元ＩＰエントリ３４へのリンクフィールドを持つ。
【００４４】
異なる宛先ＩＰアドレスでもハッシュ時に同一のハッシュ値となった場合には、同じハッシュ値を持つ宛先ＩＰエントリ３３同士はリンクフィールドによってリンクされる。宛先送信元ＩＰエントリ３４についても同様である。
【００４５】
さらに、第１ハッシュ先頭領域３１の各エントリにはマークビットがあって、マークビットがオンの場合、第２ハッシュ先頭領域３２をアクセスする必要があることを表している。
【００４６】
次に、本発明の実施の形態の動作について図面を参照して説明する。
【００４７】
最初に図１と図２のフローチャートを用いて転送チップ２７の動作を説明する。
【００４８】
Ｌ３スイッチ１０がＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットを受信すると、転送チップ２７が動作し、受信したＩＰパケットのＩＰヘッダに記述された宛先ＩＰアドレスをハッシュしてフローテーブル２６の第１ハッシュ先頭領域３１をアクセスする（ステップＡ１）。次に、アクセスしたエントリのマークビットのオン、オフをチェックする（ステップＡ２）。
【００４９】
マークビットがオフの場合は、第１ハッシュ先頭領域３１にリンクされた情報をアクセスすることを意味し、アクセスしたエントリの持つリンクフィールドに宛先ＩＰエントリ３３がリンクされているかをチェックする（ステップＡ３）。転送チップ２７は、リンクがない場合、ソフトウェアに割り込みをあげて当該ＩＰパケットについての処理を終了する（ステップＡ４）。リンクされている場合は、ＩＰヘッダから取得した宛先ＩＰアドレスをもとにリンクされた宛先ＩＰエントリ３３の宛先ＩＰアドレスと比較し、一致するものがあるかをチェックする（ステップＡ５）。この処理を宛先ＩＰエントリ３３のリンクフィールドをたどり最後まで行う。最後までたどっても一致するものがないとソフトウェアに割り込みをあげて当該ＩＰパケットについての転送チップ２７の処理を終了する（ステップＡ４）。
【００５０】
（ステップＡ５）のチェックで一致した宛先ＩＰエントリ３３があると、この宛先ＩＰエントリ３３に記述された送出ポートとＱｏＳ情報を取り出し、取り出した内容に従ったハードウェアによる受信ＩＰパケットの送信処理を実行する（ステップＡ６）。
【００５１】
先に戻って、第１ハッシュ先頭領域３１にアクセスした結果、（ステップＡ２）のチェックでハッシュ値先のエントリのマークビットがオンの場合は、第２ハッシュ先頭領域３２にリンクされた情報をアクセスすることを意味し、ＩＰヘッダから取り出した宛先ＩＰアドレスと送信元ＩＰアドレスを組にしてハッシュを行い、第２ハッシュ先頭領域３２をアクセスする（ステップＡ７）。
【００５２】
このとき、ＩＰヘッダから取り出した宛先ＩＰアドレスと送信元ＩＰアドレスの組と、ハッシュ値によって求めた第２ハッシュ先頭領域３２のエントリからリンクされた宛先送信元ＩＰエントリ３４の持つ宛先ＩＰアドレスと送信元ＩＰアドレスの組とをリンクフィールドをたどって最後まで順に比較する（ステップＡ８）。比較の結果、一致するものがない場合は、ソフトウェアに割り込みをあげる（ステップＡ４）。一致するものがある場合は、一致した宛先送信元ＩＰエントリ３４から送出先の送出ポートとＱｏＳ情報を取り出しその内容に従ったハードウェアによる送信処理を実行する（ステップＡ６）。
【００５３】
次にソフトウェアによるフローテーブル２６への登録処理の全貌を図１、図６、図７と図３のフローチャートを参照して説明する。
【００５４】
転送チップ２７の動作時、ソフトウェアに対する割り込みがあがると、受信したパケットに関し、ソフトウェアの登録手段２０によってフローテーブル２６への宛先ＩＰアドレス等を含む転送制御情報の登録処理が実行される。
【００５５】
転送チップ２７から割り込みの通知を受けたソフトウェアの登録手段２０では最初にＩＰモジュール２１が動作する（ステップＢ１）。
【００５６】
ＩＰモジュール２１は、受信したＩＰパケットが含まれるフローが持つＱｏＳデータをＱｏＳ管理モジュール２３に要求する（ステップＢ２）。
【００５７】
ＱｏＳ管理モジュール２３は、受信したＩＰパケットのＩＰヘッダから送信元ＩＰアドレスと宛先ＩＰアドレスとを取り出し、取り出した情報とＱｏＳテーブル２４のに定義されたフローとを順に比較し、一致するフローに予め定義されたＱｏＳデータとパケットの廃棄情報とをＩＰモジュール２１に返す（ステップＢ３）。
【００５８】
この比較の結果として宛先ＩＰアドレスと送信元ＩＰアドレスの両方が一致したか、または一致しなかったかのマッチング情報も返却される。ＱｏＳ管理モジュールは、一致するフローのＱｏＳ情報の定義が無い場合、デフォールトのＱｏＳ情報を返却する。
【００５９】
図６に例示したＱｏＳテーブル２４を参照すると、第１の例として受信したパケットが、例えば、宛先ＩＰアドレスが１０．１．１．４で、送信元ＩＰアドレスが１０．１．１．１の場合、図６の先頭の欄の内容に一致するので、ＱｏＳ管理モジュール２３は、このフローについてのＱｏＳ情報として高優先であり、宛先ＩＰアドレスと送信元ＩＰアドレスのフローが定義されていることをＩＰモジュール２１に通知する。また、第２の例として、宛先ＩＰアドレスが１０．１．１．５で送信元ＩＰアドレスが１０．１．１．４の場合、どれにもマッチしないので当該フローが未定義であることと、デフォールト値として選択した、例えば中優先を通知する。
【００６０】
ＩＰモジュール２１は受け取ったＱｏＳ情報とマッチング情報とから、宛先ＩＰアドレスだけでフローを登録すべきか、宛先ＩＰアドレスと送信元ＩＰアドレスの組でフローをフローテーブル２６に登録すべきかを決定してフロー決定情報を作成する（ステップＢ４）。先の第１の例では、宛先ＩＰアドレスと送信元ＩＰアドレスの組での登録、第２の例の場合では、宛先ＩＰアドレスのみでの登録がそれぞれ選択される。尚、宛先ＩＰアドレスのみでの登録の場合でもフロー決定情報には、送信元ＩＰアドレスも記述が行われる。
【００６１】
ＩＰモジュール２１は、ＩＰヘッダの宛先ＩＰアドレスからルーティングテーブル２２を参照して順に比較し一致する隣接ルータや端末等の送信先を決定し、送出ポートを取り出す（ステップＢ５）。
【００６２】
図７を参照すると、例えば宛先ＩＰアドレスが１０．１．１．２の場合、ルーティングテーブル２２の宛先アドレス１０．１．１／２４が合致するので送出ポートとして送出ポート１（隣接ルータが隣接ルータ１）が選択される。ＩＰモジュール２１は、取り出した送出ポートをフロー決定情報に記述する。
【００６３】
ＩＰモジュール２１は、以上のように作成したフロー決定情報をフロー管理モジュール２５に提供し、フロー管理モジュール２５はこれをもとにフローテーブル２６への登録処理を実行する（ステップＢ６）。
【００６４】
ＩＰモジュール２１は、フロー決定情報の登録を終えると、Ｌ３スイッチ１０に当該パケットを送出する指示を行い受信したパケットの送信処理を終了する（ステップＢ７）。
【００６５】
転送チップ２７は、前述したようフローテーブル２６に登録が行われたフローについて、次に同一フローに属するパケットを受信すると、宛先ＩＰアドレスのみ、または宛先ＩＰアドレスと送信元ＩＰアドレスの組によるハッシュ検索を行うと、ヒットするのでこのパケットをハードウェア転送する。もし受信したパケットのフローが別フローでヒットしなかった場合は、ソフトウェアに割り込み通知し（ステップＢ１）の動作に戻る。
【００６６】
図８を見ると端末３から端末１への送信処理における優先順位は普通であり、同じ端末３から端末２への優先順位は高い状態を例示している。
【００６７】
次に、図４のフローチャートと図５を参照してフロー管理モジュール２５の転送制御情報の登録処理の詳細を説明する。
【００６８】
ＩＰモジュール２１によるフロー登録要求処理として、ＩＰモジュール２１は、フロー決定情報を引数としてフロー管理モジュール２５を呼び出す（ステップＣ１）。フロー管理モジュール２５は、フロー決定情報の宛先ＩＰアドレスをハッシュ計算する。
【００６９】
ハッシュ計算の結果、生成された数値に第１ハッシュ先頭領域３１のエントリサイズ（例えば６バイト長）を掛けて第１ハッシュ先頭領域３１における該当するエントリを求める（ステップＣ２）。
【００７０】
求めたエントリのマークビットのオン、オフをチェックする（ステップＣ３）。オンの場合は、（ステップＣ１０）にジャンプする。初期状態ではマークビットはオフである。マークビットがオフの場合、次にフロー決定情報を参照して宛先ＩＰアドレスのみでの登録か宛先ＩＰアドレスと送信元ＩＰアドレスの組での登録かをチェックする（ステップＣ４）。
【００７１】
宛先ＩＰアドレスと送信元ＩＰアドレスの組での登録の場合はマークビットをオンにする（ステップＣ９）。そして第１ハッシュ先頭領域３１のエントリのリンクフィールドがｎｕｌｌか否かをチェックする（ステップＣ１５）。ｎｕｌｌの場合は、（ステップＣ１０）にジャンプする。
【００７２】
ｎｕｌｌでない場合はリンクフィールドにリンクされている全ての宛先ＩＰエントリ３３を消去し、空きの宛先ＩＰエントリ３３として（ステップＣ１６）、（ステップ１０）にジャンプする。
【００７３】
（ステップＣ４）でのチェックで宛先ＩＰアドレスのみの登録の場合、フロー管理モジュール２５は、空きの宛先ＩＰエントリ３３を求め、当該宛先ＩＰエントリ３３に宛先ＩＰアドレスとフロー決定情報から取り出したＱｏＳ情報としての優先順位、ＩＰパケットの廃棄情報と送出ポートを記入する（ステップＣ５）。次にハッシュ値から得たエントリのリンクフィールドに、記入を終えた宛先ＩＰエントリ３３を第１ハッシュ先頭領域３１のエントリのリンクフィールドに登録する（ステップＣ６）。
【００７４】
図９には、第１ハッシュ先頭領域に宛先ＩＰエントリ３３がリンクされている様子が例示されている。第１ハッシュ先頭領域３１の第３エントリには宛先ＩＰアドレスとしてＩＰ１とＩＰ３をもつ宛先ＩＰエントリ３３が、第６エントリにはＩＰ２の宛先ＩＰエントリ３３がそれぞれリンクされている。
【００７５】
次に、フロー決定情報が宛先ＩＰアドレスと送信元ＩＰアドレスの組の場合について説明する。
【００７６】
宛先ＩＰアドレスと送信元ＩＰアドレスを組としてこれをハッシュ計算し、このハッシュ値から第２ハッシュ先頭領域３２のエントリを求める（ステップＣ１０）。次に、空きの宛先送信元ＩＰエントリ３４を求め、宛先ＩＰアドレス、送信元ＩＰアドレス、ＱｏＳ情報、ＩＰパケットの廃棄情報と送出ポートを記入する（ステップＣ１１）。これを第２ハッシュ先頭領域３２のエントリのリンクフィールドに登録する（ステップＣ１２）。
【００７７】
図１０には、第１ハッシュ先頭領域３１の第６と第８のマークビットがオンであり、第２ハッシュ先頭領域３２の第２と第８エントリに対応する情報が格納されている様子を例示している。
【００７８】
尚、以上の説明から判るようにフロー決定情報が宛先ＩＰアドレスのみの登録の場合でも、宛先ＩＰアドレスをハッシュ計算して求めた第１ハッシュ先頭領域３１のハッシュ位置エントリのマークビットが既にオンの場合は、第２ハッシュ先頭領域３２に登録が行われることになる。
【００７９】
上記の宛先ＩＰアドレスと送信元ＩＰアドレスのフロー管理モジュール２５による登録処理及び転送チップ２７による検索時に使用するハッシュ計算方法は完全に同一の方法にする必要があることは前述した内容から明らかである。
【００８０】
送信元ＩＰアドレス以外にも、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のＬ４ポート番号を含めてフローを特定した制御を行う場合には、以上説明した２段階のハッシュ領域にさらにもう１段のポート番号に対応するアプリケーションプログラムレベルのＱｏＳ情報を含むハッシュ領域を追加した３段階のハッシュ構成をとることができる。
【００８１】
さらに、この場合、ＱｏＳテーブル２４として、図６に例示した宛先ＩＰアドレス、送信元ＩＰアドレスのほかにＴＣＰ／ＵＤＰ等を識別するプロトコル番号、宛先ポート番号、送信元ポート番号等を追加することによってアプリケーションレベルを意識したフローを識別し、このフローのＱｏＳ情報を含むＱｏＳテーブル２４を備えることになる。このＱｏＳテーブル２４を宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル番号、宛先ポート番号、送信元ポート番号によって検索した結果、一致するレベルに３段階を設ける。
【００８２】
第１は宛先ＩＰアドレスと送信元ＩＰアドレスの組でも一致するものがない場合、第２は宛先ＩＰアドレスと送信元ＩＰアドレスの組で一致するものがある場合、第３はポート番号も含めて全てが一致する場合である。ここで第１と第２の場合は、これまで説明した内容にあたる。第３の場合のハッシュ対象となる情報は、宛先ＩＰアドレス、送信元ＩＰアドレス、プロトコル番号、宛先ポート番号、送信元ポート番号となるがプロトコル番号と宛先ポート番号、送信元ポート番号のいずれかは省略可能である。
【００８３】
この場合のマークの定義は、次の段階のハッシュに進む意味にしても良いが、１段目のハッシュエントリにマークビット１とマークビット２を設け、マークビット１とマークビット２が両方ともオフであれば１段目を検索、マークビット１がオンであれば２段目を検索、マークビット２がオンであれば３段目を直接検索するようにして指定した段数のハッシュ領域に直接進ませる意味にしても良い。
【００８４】
登録手段２０による転送制御情報の登録時、第３の場合の登録を行う場合は、まず宛先ＩＰアドレスでハッシュして第１ハッシュ先頭領域を求め、マークビット１をオフ、マークビット２をオンとする。次に前述したハッシュ対象情報をハッシュして第３段階のテーブルを求めハッシュ対象情報やＱｏＳ情報等を含む転送制御情報の登録を行う。
【００８５】
尚、転送チップは、マークビット２がオンのとき、受信したＩＰパケットのＴＣＰまたはＵＤＰヘッダをアクセスし、必要となる情報を取り出すことになる。
【００８６】
図１１に例示するように、同じ端末で複数のアプリケーションプログラムが動作する場合、ポート番号で識別されたアプリケーションプログラム単位に細かなフロー制御ができる。
【００８７】
また、データリンク層のＬ２転送において１段目を宛先ＭＡＣ（Ｍｅｄｉａ
Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス、２段目を送信元ＭＡＣアドレスに適用する構成もとることができる。Ｌ２転送において１段目を宛先ＭＡＣアドレス、２段目を送信元ＭＡＣアドレス、３段目をＩＰやＩＰＸを識別するイーサネット（登録商標）・タイプとして３段階のハッシュ構成もとることができる。Ｌ３スイッチ１０でなくソフトウェア・ルータの場合でも、優先的に高速転送するフローにのみハッシュテーブルを使用する装置にも適用できる。
【００８８】
以上の内容を踏まえると、次のように一般化することができる。
【００８９】
宛先ＭＡＣアドレス、送信元ＭＡＣアドレス、宛先ＩＰアドレス、送信元ＩＰアドレス等のパケットの属するフローを識別するデータをフロー識別データと呼ぶとして、このフロー識別データをＱｏＳ情報を付与する対象のフロー単位で複数に区分しフロー階層としてそれぞれに番号を与える。この区分されたフロー識別情報を使用してフローとそのフローのＱｏＳ情報が一つのエントリとして定義されたＱｏＳテーブルを準備する。
【００９０】
受信したパケットの前記フロー識別データを元に前記ＱｏＳテーブルをサーチし、一致するエントリがあると、そのエントリの前記フロー識別情報と前記フロー識別情報から決定されるフロー階層と前記ＱｏＳ情報を取り出す。
【００９１】
次に、例えばルーティングテーブル等からパケットの送信先の前記送出ポートを求める。
【００９２】
宛先アドレスをハッシュして前記フローテーブル２６の第１のテーブルをアクセスし、そのハッシュ値先に前記フロー階層を記録する。最後にＱｏＳテーブル２４から取り出したフロー識別情報をハッシュして前記フロー階層で識別されるテーブルをアクセスし、ハッシュ値先に前記フロー識別情報と前記ＱｏＳ情報と前記送出ポートとを記録する。
【００９３】
【発明の効果】
本発明の効果は、宛先ＩＰアドレスだけで登録するフローと、宛先ＩＰアドレスと送信元ＩＰアドレスの組で登録するフローとが１つのハッシュ領域で両立して管理されることで、細かなフロー制御と大まかなフロー制御の混在ができ、ハッシュ領域で使用する大まかな制御の為のメモリと細かな制御の為のメモリとのバランスをとることが可能となる。
【００９４】
混在させても同一ハッシュ値のリスト段数を押さえて、高速検索が可能である。
【００９５】
また、細かな制御が不要の場合は、宛先ＩＰエントリだけで登録することでメモリ使用量を押さえ、大量のフローを処理することができる。
【００９６】
さらに、宛先ＩＰアドレスだけではハッシュ値が分散しないときに、送信元ＩＰアドレスも含めたハッシュで分散させることが可能となるという効果もある。
【図面の簡単な説明】
【図１】本発明の実施の形態の構成を説明したブロック図である。
【図２】本発明の実施の形態の動作を説明したフローチャートである。
【図３】本発明の実施の形態の動作を説明したフローチャートである。
【図４】本発明の実施の形態の動作を説明したフローチャートである。
【図５】本発明の実施の形態のフローテーブルの説明図である。
【図６】本発明の実施の形態のＱｏＳテーブルの説明図である。
【図７】本発明の実施の形態のルーティングテーブルの説明図である。
【図８】本発明の実施の形態の端末間での送信優先順位の説明図である。
【図９】本発明の実施の形態の第１ハッシュ先頭領域に宛先ＩＰエントリがリンクされている状態の説明図である。
【図１０】本発明の実施の形態の第２ハッシュ先頭領域に宛先送信元ＩＰエントリがリンクされている状態の説明図である。
【図１１】本発明の実施の形態のＬ４ポート番号間での送信優先順位の説明図である。
【符号の説明】
２０    登録手段
２１    ＩＰモジュール
２２    ルーティングテーブル
２３    ＱｏＳ管理モジュール
２４    ＱｏＳテーブル
２５    フロー管理モジュール
２６    フローテーブル
２７    転送チップ
３１    第１ハッシュ先頭領域
３２    第２ハッシュ先頭領域
３３    宛先ＩＰエントリ
３４    宛先送信元ＩＰエントリ
【図１】
0003711965.tif 000002
【図２】
0003711965.tif 000003
【図３】
0003711965.tif 000004
【図４】
0003711965.tif 000005
【図５】
0003711965.tif 000006
【図６】
0003711965.tif 000007
【図７】
0003711965.tif 000008
【図８】
0003711965.tif 000009
【図９】
0003711965.tif 000010
【図１０】
0003711965.tif 000011
【図１１】
0003711965.tif 000012