JP2022527704A - トラフィック分類方法及び装置 - Google Patents

トラフィック分類方法及び装置 Download PDF

Info

Publication number
JP2022527704A
JP2022527704A JP2021556957A JP2021556957A JP2022527704A JP 2022527704 A JP2022527704 A JP 2022527704A JP 2021556957 A JP2021556957 A JP 2021556957A JP 2021556957 A JP2021556957 A JP 2021556957A JP 2022527704 A JP2022527704 A JP 2022527704A
Authority
JP
Japan
Prior art keywords
rule
bits
rules
hash
key value
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
JP2021556957A
Other languages
English (en)
Other versions
JP7170905B2 (ja
Inventor
晶 胡
▲書▼▲貞▼ 田
正▲義▼ ▲張▼
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2022527704A publication Critical patent/JP2022527704A/ja
Application granted granted Critical
Publication of JP7170905B2 publication Critical patent/JP7170905B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • 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
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本出願ではトラフィック分類方法及びトラフィック分類装置を提供する。方法は、第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定するステップであって、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ステップと、第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値を決定して、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップであって、第1のルール集合はN個のルール集合のうちのいずれか1つであり、N個のルール集合はS個の記憶ユニットに記憶され、N及びSは1以上の整数であり、S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ステップと、トラフィック分類が実行されるときに、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々において対応するルールを探索するステップとを含む。

Description

この出願は、2019年4月12日に中国特許庁に出願され、名称が「TRAFFIC CLASSIFICATION METHOD AND APPARATUS」である中国特許出願第201910294640.0号に基づく優先権を主張し、その全体が参照により本明細書に援用される。
本出願はコンピュータ技術に関し、特にトラフィック分類方法及び装置に関する。
今日のネットワークでは、ネットワークにパケットフィルタリング、サービス品質(quality of service,QoS)やトラフィック統計情報の収集などの機能特性を提供するにあたって、トラフィック分類機能がルータ及びスイッチの重要な機能の1つになってきている。トラフィック分類の原理は、パケットヘッダの各フィールドに関する情報を抽出して探索キーを作成した後、各ルールの対応する設定に基づいてマッチングを行うというものである。ルールの設定が合うものであれば、ルールに関連付けられた動作が行われる。設定済みの各ルールが1つの優先度情報に関連づけられている。複数のルールがマッチする場合、優先度が最も高いルールの動作が行われる。
現在、広く用いられているトラフィック分類の解決手段は三値連想メモリ(ternary content addressable memory,TCAM)に基づくハードウェア解決手段と、決定木アルゴリズムに基づくルール集合分割解決手段とを含む。ルール集合を分割する決定木アルゴリズムの基本思想は、各ルール部分集合中のルールの個数が規定の閾値未満になるまで、ルール集合の特性に基づいてルール集合を再帰的に分割するというものである。分割後、トラフィック探索の際にルール部分集合が1つだけマッチングされればよい。このようにして、マッチングされるルールの個数が大幅に削減され、高速トラフィック探索機能を実施することができる。現在、決定木に基づく前処理アルゴリズムが広く用いられており、典型的なアルゴリズムにはHiCuts、HyperCuts、Modularなどが含まれる。
現在、ハッシュ(hash)アルゴリズムの挿入及び探索パフォーマンスはきわめて高いので、関連する研究では、ハッシュアルゴリズムはトラフィック分類探索アルゴリズムとして用いられている。ハッシュアルゴリズムに基づく現在のトラフィック分類方法は、ルールの挿入及び探索に比較的大量の計算リソースを必要とするが、ルールの挿入および探索効率は低い。
本出願では、探索パフォーマンスが高く、リソース消費量が小さく、探索遅延が小さいことを特徴とするトラフィック分類方法及びトラフィック分類装置を提供する。
第1の態様によれば、トラフィック分類方法が提供される。方法はネットワークデバイスによって実行されてもよいし、ネットワークデバイス中で構成されるチップや回路によって実行されてもよい。これについては本出願では限定されない。たとえば、ネットワークデバイスはルータ、スイッチなどであってもよい。これについては限定されない。
方法は、第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定するステップであって、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ステップと、第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値を決定して、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップであって、第1のルール集合はN個のルール集合のうちのいずれか1つであり、N個のルール集合はS個の記憶ユニットに記憶され、N及びSは1以上の整数であり、S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ステップと、トラフィック分類が行われるとき、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々において対応するルールを探索するステップとを含む。
特に、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む。第1のルール集合に対応する有効ビットを決定することは、第1のルール集合に含まれる複数のルールに対応する共通の有効ビットを決定することとして理解されてもよいし、すべてのルールの有効ビットが同じである場合に、第1のルール集合中の各ルールの有効ビットを決定することとして理解されてもよい。通常、各ルールが複数のビットを含む。ルールの有効ビットは次のハッシュ記憶演算において「有効」であるビットであってもよく、次のハッシュ記憶演算に関与するビットである。ルールの有効ビットの値に基づいてハッシュ記憶演算が行われ、ルールの有効ビット以外のビットの値は次のハッシュ記憶演算に関与しない。
関心ビットの分布特性は関心ビットの位置特性と関心ビットの数値的特性とを含んでもよい。第1のルール集合に対応する有効ビットは第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて決定されてもよい。有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む。たとえば、基本的な決定原則は、第1のルール集合に対応する有効ビットについて、異なるルールの値には可能な限り「一意性(uniqueness)」がなければならない、すなわち、異なるルールの有効ビットの値が可能な限り互いと異ならなければならないというものであってもよい。この原則では、第1のルール集合に対応する少なくとも1つの有効ビットが決定されてもよい。有効ビットは複数のビットを含んでもよく、有効ビット数は、異なるルールの値に可能な限り「一意性」がなければならないという前提の上で可能な限り削減されてもよいことが当然分かる。これにより、次のハッシュ記憶演算の演算量を削減することができる。
任意選択で、ルールの有効ビットは当該ルールの関心ビットの全部または一部を含みうる。
任意選択で、ルールの有効ビットは無関心ビットを含みうる。
任意選択で、有効ビットに関して言えば、異なるルールの値が異なる。
任意選択で、有効ビットに関して言えば、ルールの一部の値が同じであってもよい。
本出願で提供されているトラフィック分類方法では、異なるルール集合に対応する有効ビットがルール集合を1単位として用いて決定されてもよく、その後、有効ビットの値でありかつルール集合中のルールの値である値に基づいてハッシュ記憶がルールに実行され、ルールが複数の記憶ユニットに記憶される。したがって、本実施形態で提供されているトラフィック分類方法は探索パフォーマンスが高く、リソース消費量が小さく、探索遅延が小さいことを特徴とする。
第1の態様に関して、第1の態様のいくつかの実現例では、第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定するステップの前に、方法は、初期ルール集合の関心ビットの分布特性に基づいて初期ルール集合をN個のルール集合に分割するステップをさらに含む。
たとえば、分布特性が同じ又は類似である関心ビットを持つルールが同じルール集合にグループ化されてもよい。これにより、ルール集合に対応する有効ビットを決定する助けになりうる。
本出願における関心ビットの分布特性が主に関心ビット数と位置特性とに関し、関心ビットの分布特性が同じ又は類似であることが、関心ビット数と関心ビットの分布位置とが同じ又は類似であることをほぼ意味することが理解されるべきである。
本出願で提供されているトラフィック分類方法では、適切なルール集合分割方法と適切な有効ビット選択方法との組合せを通じて、ルール挿入の際に無関心ビットに起因するルール拡張問題を大幅に抑えることができる。ルール挿入の際、対象ルールの有効ビットのみに基づいてルール拡張が実行されればよい。このようにすれば、比較的多数の計算リソース及び記憶リソースを消費することはない。
第1の態様に関して、第1の態様のいくつかの実現例では、第1のルール集合が同じハッシュキー値に対応する複数のルールを有する場合、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップは、同じハッシュキー値に対応する複数のルールを異なる記憶ユニットに記憶するステップを含む。上記の設定を通じて、ハッシュ探索の際、同じ記憶ユニットの複数のスロットを探索することを回避することができ、特に、ルールテーブルにおけるルールのアドレスインデックスがスロットに記憶される場合にこれを回避することができる。この場合、1つの記憶ユニットでルールテーブルを複数回探索する(ルールテーブルを探索する時間が比較的長い)ことを回避することができる。これにより、探索の遅延を抑えることができ、探索効率を改善することができる。
第1の態様に関して、第1の態様のいくつかの実現例では、S個の記憶ユニットは並列に配置される。このようにして、S個の記憶ユニットに並列探索が実行されて、ルール探索効率を改善することができる。
任意選択で、S個の記憶ユニットは上記とは異なり直列に配置されてもよい。
第1の態様に関して、第1の態様のいくつかの実現例では、各記憶ユニットはハッシュテーブルとルールテーブルとを含み、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップは、ルールテーブルに第1のルール集合中の各ルールを記憶するステップと、各ルールのハッシュキー値に基づいてハッシュテーブルにおける各ルールの記憶位置を計算して、当該記憶位置にルールテーブルにおける各ルールのアドレスインデックスを記憶するステップとを含む。
第1の態様に関して、第1の態様のいくつかの実現例では、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップは、各ルールのハッシュキー値に基づいて各ルールのフィンガプリント情報を計算して各ルールのフィンガプリント情報を記憶位置に記憶するステップを含む。フィンガプリント情報を設定することにより、「ハッシュコンフリクト」問題の発生を抑えることができ、ルールマッチングの精度及び効率を改善することができる。
第2の態様によれば、第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定し、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ように構成される決定ユニットと、第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値を決定して、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶し、第1のルール集合はN個のルール集合のうちのいずれか1つであり、N個のルール集合はS個の記憶ユニットに記憶され、N及びSは1以上の整数であり、S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ように構成される記憶ユニットと、トラフィック分類が実行されるときに、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々において対応するルールを探索するように構成される探索ユニットとを含むトラフィック分類装置が提供される。
任意選択で、トラフィック分類装置はルータやスイッチであってもよい。
第2の態様に関して、第2の態様のいくつかの実現例では、装置は初期ルール集合の関心ビットの分布特性に基づいて初期ルール集合をN個のルール集合に分割するように構成される分割ユニットをさらに含む。
第2の態様に関して、第2の態様のいくつかの実現例では、第1のルール集合が同じハッシュキー値に対応する複数のルールを有する場合、記憶ユニットは同じハッシュキー値に対応する複数のルールを異なる記憶ユニットに記憶するようにさらに構成される。
第2の態様に関して、第2の態様のいくつかの実現例では、S個の記憶ユニットは並列に配置される。
第2の態様に関して、第2の態様のいくつかの実現例では、各記憶ユニットはハッシュテーブルとルールテーブルとを含み、記憶ユニットは、ルールテーブルに第1のルール集合中の各ルールを記憶し、各ルールのハッシュキー値に基づいてハッシュテーブルにおける各ルールの記憶位置を計算して、当該記憶位置にルールテーブルにおける各ルールのアドレスインデックスを記憶するようにさらに構成される。
第2の態様に関して、第2の態様のいくつかの実現例では、記憶ユニットは、各ルールのハッシュキー値に基づいて各ルールのフィンガプリント情報を計算して各ルールのフィンガプリント情報を記憶位置に記憶するようにさらに構成される。
第3の態様によれば、メモリ、プロセッサ及び通信インタフェイスを含むトラフィック分類装置が提供される。メモリはコンピュータプログラムを記憶するように構成され、プロセッサはメモリからコンピュータプログラムを呼び出してコンピュータプログラムを実行するように構成され、これにより、トラフィック分類装置は第1の態様又は第1の態様の任意の可能な実現例に係る方法を実行する。
任意選択で、トラフィック分類装置はルータやスイッチであってもよい。
第4の態様によれば、コンピュータプログラムプロダクトが提供される。コンピュータプログラムプロダクトはコンピュータプログラム(コードや命令とも称される場合がある)を含む。コンピュータプログラムがコンピュータで実行されると、第1の態様又は第1の態様の任意の可能な実現例に係る方法をコンピュータが実行することが可能にされる。
第5の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体はコンピュータプログラムを記憶するように構成され、コンピュータプログラムは第1の態様又は第1の態様の任意の可能な実現例に係る方法を実行するのに用いられる命令を含む。
第6の態様によれば、チップシステムが提供される。チップシステムはメモリとプロセッサとを含む。メモリはコンピュータプログラムを記憶するように構成されている。プロセッサはメモリからコンピュータプログラムを呼び出してコンピュータプログラムを実行するように構成され、これにより、チップシステムが実装されたネットワークデバイスは第1の態様又は第1の態様の任意の可能な実現例に係る方法を実行する。
チップシステムは情報又はデータを送るように構成されている入力回路又はインタフェイスと、情報又はデータを受け取るように構成されている出力回路又はインタフェイスとを含んでもよい。
ハッシュテーブル樹林アルゴリズムに対応するルールの例の概略図である。 図1のルールに対応するマスクを示す。 ハッシュテーブル樹林アルゴリズムのハッシュテーブル間の有向グラフの概略図である。 本出願に係るトラフィック分類方法の概略フローチャートである。 本出願に係るハッシュアルゴリズムユニットの論理構成図である。 本出願に係る並列ハッシュアルゴリズムユニットによってトラフィック分類探索が実施される概略ブロック図である。 本出願に係るトラフィック分類探索装置の概略フローチャートである。 本出願に係るトラフィック分類装置の概略構成図である。
本出願の実施形態の理解を容易にするために、まず本出願の概念を簡単に説明する。
大まかに言えばトラフィック分類では、いくつかのパケット特性に基づいて数個のルール(rule)を定め、特性のタイプに合うパケットを特定するのに当該ルールを用い、パケットを分類する。特定のルールにマッチする複数のパケットが1つのトラフィックを構成する。今日のネットワークでは、ネットワークにパケットフィルタリング、サービス品質やトラフィック統計情報の収集などの機能特性を提供するにあたって、トラフィック分類機能がルータ及びスイッチの鍵となる機能の1つになってきている。トラフィック分類の原理は、パケットヘッダの各フィールドに関する情報を抽出して探索キー(search key)を作成した後、各ルールの対応する設定に基づいてマッチングを行うというものである。ルールの設定が合うものであれば、ルールに関連する動作が実行される。設定済みの各ルールが1つの優先度情報に関連づけられている。複数のルールがマッチする場合、優先度が最も高いルールの動作が実行される。
トラフィック分類では、設定済みの各ルールにマッチングが行われることを必要とする。しかし、マッチングが次々に行なわれることによって膨大な計算量及び遅延が生じることは明らかである。現在、広く用いられている解決手段は三値連想メモリに基づくハードウェア解決手段と、決定木アルゴリズムに基づくルール集合分割解決手段とを含む。TCAMに基づくハードウェア解決手段では、パフォーマンスの高いトラフィック探索能力を実現するために、すべてのルールに並列マッチングを実施するように専用ハードウェアが設計される。TCAMは、高速トラフィック分類パフォーマンスやリソース管理が単純であるなどのTCAMの利点に基づいて、ハイエンドのルータ及びスイッチに用いられる。しかし、TCAMには、コストが高いことや、電力消費量が大きいなどの課題があり、TCAMの用途の拡大が制限される。
ルール集合を分割する決定木アルゴリズムの基本思想は、各ルール部分集合中のルールの個数が規定の閾値未満になるまで、ルール集合の特性に基づいてルール集合を再帰的に分割するというものである。分割後、トラフィック探索の際にルール部分集合が1つだけマッチングされればよい。このようにして、マッチングされるルールの個数が大幅に削減され、高速トラフィック探索機能を実施することができる。分割プロセスは決定木を用意するプロセスである。決定木の各葉ノードは分割後に得られるルール部分集合に対応する。トラフィックマッチングの際、まず、決定木のツリー構造に基づいて対象トラフィックに対応する葉ノードが探索された後、1つのトラフィックと、葉ノードに対応するルール部分集合との間で1対1マッチングが実行される。現在、決定木に基づく前処理アルゴリズムが広く用いられており、典型的なアルゴリズムにはHiCuts、HyperCuts、Modularなどが含まれる。
HiCuts法及びHyperCuts法では、幾何学的な見地からトラフィック分類問題を検討する。幾何学的な見地から、トラフィッククラシファイア中のルールがn次元空間にそれぞれ対応するn個のフィールド(field)によって形成される場合、各ルールがn次元空間における1つの「超長方形(hyperrectangle)」領域に対応し、各パケットがn次元空間の点に対応する。パケットにマッチするルールを探索するプロセスは、パケットに対応する点が含まれる「超直方体」を計算することに相当する。HiCuts法及びHyperCuts法では、ルールの各フィールドが範囲とみなされ、異なる範囲にあるフィールドが分割のためにまとめられ、ルール集合が小さいルール部分集合に分割される。ルール部分集合中のルールの個数が規定の閾値未満である場合に分割が終了する。分割を通じて決定木が作成されることが可能である。分割するために選択された1つ以上の次元、各次元の分割回数や、葉ノードに記憶されたルール部分集合などの分割方法関連の情報を決定木の中間ノードが記憶する。
Modularアルゴリズムでは、各ルールの各フィールドが“0”又は“1”を用いて符号化され、各ルールは複数のビットを含む場合がある。各ビットは“0”、“1”又はワイルドカードである。ワイルドカードは、ルールの対象ビットが探索キー(key)の対応するビットの“0”と“1”とに同時にマッチすることができることを示す“*”によって表わされることがある。
ルール集合が複数のルール部分集合に分割される際、ルール集合内の位置に対応する複数のビットにおける“0”、“1”又はワイルドカードの個数が計算される必要があり、特定のアルゴリズムにしたがって、ルール集合を分割するために当該位置が選択される。HiCuts法及びHyperCuts法とは異なり、Modularアルゴリズムでは、位置を選択することによってルール集合に分割を実行することができる。ルール集合が分割される参照位置が選択された後、ルール集合に含まれる複数のルールのうち、参照位置が“0”であるルールがルール部分集合に入れられる。ルール集合に含まれる複数のルールのうち、参照位置が“1”であるルールが別のルール部分集合に入れられる。ルール集合に含まれる複数のルールのうち、参照位置が“*”であるルールは上記の2つのルール部分集合に入れられる。
ルールがk個の“*”を含む場合にはルールが2k個のルールに拡張されることが可能である。
たとえば、ルール100110**は4つのルール、すなわち、ルール10011000、ルール10011001、ルール10011010及びルール10011011に拡張されてもよい。
“0”及び“1”が配置されるビットは「関心ビット」と称される場合がある。1つのトラフィックがルールにマッチする場合、トラフィックの当該ビットはルールに完全にマッチする必要がある。“*”が配置されるビットは「無関心ビット」と称される場合がある。トラフィックがルールにマッチする場合、トラフィックの当該ビットにはなにも要求されない。
別の例では、IP範囲のフィールド127.8.0.0/16が01111111 00001000 ******** ********と表現されてもよい。合計16個の関心ビット(すなわち、先頭の16ビット)が含まれる。1つのトラフィックがルールにマッチする場合、トラフィックの当該ビットはルールに完全にマッチする必要がある。その他の16個のビット(すなわち、後尾の16ビット)は無関心ビットである。1つのトラフィックがルールにマッチする場合、当該ビットにはなにも要求されない。
表現を簡単にするために、ルールが値+マスク(mask)、たとえば、01111111 00001000 ******** ********(値)+11111111 11111111 00000000 00000000(マスク)というフォーマットで記憶されることもできる。マスクビットが“1”であることは、ルールの対応するビットが関心ビットであることを示し、マスクビットが“0”であることは、ルールの対応するビットが無関心ビットであることを示す。同様に、上記のルール100110**の場合、対応するマスクは11111100である。
ハッシュテーブル(hash table(ハッシュマップとも称される))は連想配列を実装するためのデータ構造であり、高速データ探索に広く用いられている。ハッシュテーブルには主な2つの操作がある。一方の操作は、ハッシュテーブルに要素が挿入される書き込み(put)操作である。他方の操作は、ハッシュテーブルから要素が迅速に見つけられる読み出し(get)操作である。
ハッシュテーブルはキー値(Key value(キー値とも称される))に基づいて直接アクセスされるデータ構造である。すなわち、キー値をテーブルの位置にマッピングすることによってレコードがアクセスされ、探索速度が上がる。このマッピング関数がハッシュ関数であり、レコードを記憶するための配列がハッシュテーブルである。キー値がkである場合、キー値はハッシュテーブルのf(k)の記憶位置に記憶され、ここで、fはハッシュ関数である。
ハッシュアルゴリズムはきわめて高い挿入及び探索パフォーマンスを示すので、ハッシュアルゴリズムは、トラフィック分類探索アルゴリズムとして用いられることもできる。ハッシュアルゴリズムは、ルールのすべてのビットが関心ビットである場合にトラフィック分類問題を効果的に解決して、高いトラフィック探索パフォーマンスを実現することができる。しかし、ルールに無関心ビットが存在する場合、1つのルールが複数の探索キーに対応しうる。たとえば、ルール127.8.0.0/16(01111111 00001000 ******** ********)は216個の探索キーに対応しうる。トラフィック探索は、このルールが216個の探索キーのすべてを用いて見つけられうることを必要とする。したがって、上記のルールは216個のルールまで拡張される必要があり、216個のルールが1つずつハッシュテーブルに挿入される。したがって、大量の計算リソース及び記憶リソースが消費される必要がある。
以下、図1~図3を参照してトラフィック分類探索アルゴリズムの例を説明する。
ハッシュアルゴリズムは集合挿入及び探索を行う際にきわめて高いパフォーマンスを示す。無関心ビットを1つのハッシュテーブルで処理するのが困難であることを考慮すると、ルール集合のマスクの種別毎にハッシュテーブルを構築するために、ハッシュテーブル樹林(hash table forest)アルゴリズムが用いられてもよい。その後、すべてのハッシュテーブルに対応するマスク間のカバレッジ関係にしたがって有向グラフが形成され、探索キーの探索トラフィックが誘導される。
図1はハッシュテーブル樹林アルゴリズムに対応するルールの例の概略図である。
図1には合計で6つのルール、すなわち、ルール1~ルール6が含まれている。各ルールはIPフィールドとportフィールドとを含み、各ルールの無関心ビットの分布は異なる。ルール1では、IPフィールドの後尾の24ビットが無関心ビットである。ルール2では、IPフィールドの後尾の16ビットが無関心ビットである。ルール3では、IPフィールドの後尾の8ビットが無関心ビットである。ルール4では、IPフィールドの後尾の8つのビットと、portフィールドの8ビットのすべてとが無関心ビットである。ルール5では、portフィールドの8ビットのすべてが無関心ビットである。ルール6では、無関心ビットが存在せず、すべてのビットが関心ビットである。
図1に示されているルールの無関心ビットの分布状態に基づいて、対応するマスク種別の数が決定されてもよい。図1の6つのルールの無関心ビットの分布状態が互いに異なるので、図1の6つのルールは合計で6つのマスク種別に対応する。図2は図1の6つのルールに対応する6つのマスク種別を示す。
実際に適用する際には、上記の6つのルールに加えて、ルール集合は複数の他のルールをさらに含んでもよい。本実施形態では、上記の複数の他のルールに対応するマスク種別のすべてが上記の6つのマスク種別に含まれると仮定する。言い換えると、ルール集合において、ルール1を含む複数のルールに対応するマスクが図2のマスク1であるといえる。この場合、マスク1に対応する複数のルールがハッシュテーブル1に記憶されてもよい。同様に、マスク2~6に対応する複数のルールがハッシュテーブル2~6にそれぞれ記憶されてもよい。本明細書では、説明を容易にするために、マスク1に対応する複数のルールによって形成される集合がルール集合1と称され、マスク2~6に対応する複数のルールによって形成される集合がルール集合2~6とそれぞれ称されている。
各ハッシュテーブルにおいて各探索キーが探索される必要がないことを考慮すると、上記の6つのハッシュテーブルの各々に対応するマスク間のカバレッジ関係によって有向グラフが形成され、探索キーの探索トラフィックが誘導されてもよい。図3はハッシュテーブル樹林アルゴリズムのハッシュテーブル間の有向グラフの概略図である。
図3では、各ルールについて、根ノードから順番に通過されるすべてのハッシュテーブルに挿入操作が実行される必要がある。ハッシュテーブル1は、ルール集合1中の複数のルールを記憶する必要がある。これに加えて、ハッシュテーブル1にルール集合2,3及び6中の複数のルールが挿入される必要がある。挿入の際、ルール集合1中の複数のルールとマスク1とにビット毎のAND(&)演算が個別に実行され、その後、マスクされていない関心ビットの値に基づいてハッシュ演算が実行されてハッシュテーブル1の記憶位置が計算される。その後、当該記憶位置に対応するルールが記憶されてもよい。ルール集合2,3及び6の各々中の複数のルールについても、当該複数のルールとマスク1とにビット毎のAND演算が実行され、その後、マスクされていない関心ビットの値に基づいてハッシュ演算が実行されてハッシュテーブル1の記憶位置が計算される。その後、当該記憶位置に、対応するルールのポインタ(directory)情報が記憶されてもよく、ポインタ情報はルールにより通過される次のハッシュテーブルを指す。
たとえば、ルール6について、ルール6はハッシュテーブル6に記憶される必要があるだけでなく、ルール6はハッシュテーブル1~5にも挿入される必要がある。ルール6と、ハッシュテーブル1~5に対応するマスク1~5とにビット毎のAND演算が個別に実行されてハッシュテーブル1~5の記憶位置が計算されてもよい。その後、当該記憶位置の各々にポインタ情報が記憶されてもよく、ポインタ情報はルール6により通過される次のハッシュテーブル、たとえば、ハッシュテーブル6を指す。
ルール探索が実行される際、まず、ハッシュテーブル樹林のすべての根ノード、たとえば、ハッシュテーブル1とハッシュテーブル4とから探索キーの探索が開始される。各ハッシュテーブルの探索の際、まず、ハッシュテーブルに対応するマスクと対象探索キーとにビット毎のAND演算が実行されて、対象ハッシュテーブルのキー値が取得され、その後、当該キー値が対象ハッシュテーブルにあるか否かが判断される。キー値が対象ハッシュテーブルにない場合、トラフィック探索プロセスは終了する。キー値が対象ハッシュテーブルにある場合、ルールマッチングが実行される。ルールマッチングが失敗した場合、探索プロセスは終了する。ルールマッチングが成功した場合、ポインタが記憶位置に存在するか否かが判断され、ポインタが次のハッシュテーブルを指すか否かがチェックされる。ポインタがない、すなわち、次のハッシュテーブルが探索される必要がない場合、優先度が最も高いマッチング対象のルールが返される。探索が続行される必要がある場合、次のハッシュテーブルの探索が続行される。
図1~図3示されているトラフィック分類探索アルゴリズムによれば、ハッシュテーブル樹林の構築及びルール探索に比較的大量の計算量が必要である。挿入されたルール毎に、根ノードから順番に通る通過点となるすべてのハッシュテーブルに挿入操作が実行される必要がある。ルール探索の際、すべての根ノードが探索される必要がある。したがって、探索の遅延が比較的大きく、効率が低い。これに加えて、ハッシュテーブル樹林の根ノードの個数がダイナミックに変化し易く、並列探索パイプラインの個数が変化し易い。並列探索パイプラインの個数が比較的多いと、比較的多数の探索リソースが消費される必要があるおそれがある。
上記の課題を解決するために、本出願の実施形態ではトラフィック分類方法の別の例を提供し、このトラフィック分類方法は探索パフォーマンスが高く、リソース消費量が小さく、探索遅延が小さいことを特徴とする。
具体的に説明するが、図4は本出願に係るトラフィック分類方法200の概略フローチャートである。方法200はステップ210~230を含む。以下、図4を参照して方法200を説明する。
ステップ210:第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定する。有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む。
ステップ220:第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値を決定して、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶し、第1のルール集合はN個のルール集合のうちのいずれか1つであり、N個のルール集合はS個の記憶ユニットに記憶され、N及びSは1以上の整数であり、S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである。
トラフィック分類探索が実行される前、まず、設定済みの各ルールが探索キーによるマッチングのために記憶される必要がある。したがって、ステップ210及びステップ220において、設定済みの(すなわち、マッチングされることになる)各ルールを記憶する仕方をまず説明する。本実施形態では、ルールに対して行われる記憶はルールに対して行われるハッシュ記憶を主に含む。
可能な実現例では、設定済みの複数のルールがルール集合単位で記憶されてもよい。特に、設定済みの複数のルールによって形成される集合が初期ルール集合と称される場合がある。初期ルール集合はN個のルール集合に分割されてもよく、その後、N個のルール集合は1つずつ記憶される。
第1のルール集合はN個のルール集合のうちのいずれか1つである。以下、設定済みの複数のルールを記憶する仕方を説明するのに一例として第1のルール集合を用いる。
第1のルール集合は複数のルールを含んでもよく、各ルールは複数のビットを含み、複数のルールの長さは同じ(すなわち、含まれるビット数が同じ)であってもよい。各ルールは関心ビットを含んでもよく、無関心ビットをさらに含んでもよい。第1のルール集合に対応する有効ビットが複数のルールの関心ビットの分布特性に基づいて決定されてもよい。
本出願では、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む。第1のルール集合に対応する有効ビットを決定することは、第1のルール集合に含まれる複数のルールに対応する共通の有効ビットを決定することとして理解されてもよいし、すべてのルールの有効ビットが同じである場合に、第1のルール集合中の各ルールの有効ビットを決定することとして理解されてもよい。通常、各ルールが複数のビットを含む。ルールの有効ビットは次のハッシュ記憶演算において「有効」であるビットであってもよく、次のハッシュ記憶演算に関与するビットである。ルールの有効ビットの値に基づいてハッシュ記憶演算が実行され、ルールの有効ビット以外のビットの値は次のハッシュ記憶演算に関与しない。
関心ビットの分布特性は関心ビットの位置特性と関心ビットの数値的特性とを含んでもよい。第1のルール集合に対応する有効ビットは第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて決定されてもよい。有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む。たとえば、基本的な決定原則は、第1のルール集合に対応する有効ビットについて、異なるルールの値には可能な限り「一意性(uniqueness)」がなければならない、すなわち、異なるルールの有効ビットの値が可能な限り互いと異ならなければならない、というものであってもよい。この原則では、第1のルール集合に対応する少なくとも1つの有効ビットが決定されてもよい。有効ビットは複数のビットを含んでもよく、有効ビット数は、異なるルールの値に可能な限り「一意性」がなければならないという前提の上で可能な限り削減されてもよいことが当然分かる。これにより、次のハッシュ記憶演算の演算量を削減することができる。
たとえば、第1のルール集合はルール101011**,011111**,及び10010***を含んでもよい。上記の有効ビット決定原則に基づいて、上記の3つのルールを含む第1のルール集合について、1番目のビットから3番目のビットが第1のルール集合に対応する有効ビットとして決定されてもよい。当該有効ビットについて、上記の3つのルールの値はそれぞれ101,011及び100であり、これらは互いに異なり、「一意性」がある。これに加えて、ハッシュ記憶演算の演算量が考慮されなければ、上記とは異なり、1番目のビットから4番目のビットが第1のルール集合に対応する有効ビットとして決定されたり、1番目のビットから5番目のビットが第1のルール集合に対応する有効ビットとして決定されたりしてもよい。
任意選択で、ルールの有効ビットが当該ルールの関心ビットの全部または一部を含んみうる。
これに加えて、ルール拡張に起因する演算量を削減するために、第1のルール集合に対応する有効ビットはルールの無関心ビットを可能な限り含んではならない。具体的に説明するが、ルールNo.1が第1のルール集合中の複数のルールのいずれか1つであるとすることができる。ルールNo.1の有効ビットがK個の無関心ビットを含む場合、ルール挿入の際に、“*”を含むルールを、ハッシュ関数を用いて直接処理することができないので、ルールNo.1は拡張されるはずであり、2K個のルールに1つずつハッシュ記憶が実行される。この場合、ルールNo.1が比較的多数の無関心ビットを含めば(すなわち、Kの値が比較的大きい)、比較的多数の計算リソース及び記憶リソースが消費される必要がある。
本出願では、基本的な有効ビット決定原則が、異なるルールの値に可能な限り「一意性」がなければならず、第1のルール集合に対応する有効ビットが無関心ビットを可能な限り含んではならないというものであることが当然分かる。第1のルール集合に対応する有効ビットがこの原則にしたがって決定され得ることは、本出願の本実施形態の有効ビットの、異なるルールの値には「一意性」が必ずある(すなわち、互いに異なる)ことを意味せず、また、有効ビットが無関心ビットを絶対に含まないことを意味しない。
任意選択で、可能な実現例では、有効ビットについての異なるルールの値が同じであってもよい。
任意選択で、可能な実現例では、有効ビットが無関心ビットを含んでもよい。
第1のルール集合中の各ルールの有効ビットの値に基づいて第1のルール集合が少なくとも1つの記憶ユニットに記憶されてもよい。記憶ユニットはハッシュ記憶ユニットであってもよい。
本出願の本実施形態では、第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値が決定されてもよく、その後、ハッシュキー値に基づいて第1のルール集合中の各ルールが少なくとも1つの記憶ユニットに記憶される。
記憶ユニットはハッシュテーブルを含んでもよく、ルールNo.1は第1のルール集合中の複数のルールのいずれか1つであってもよい。以下、第1のルール集合を記憶する仕方を説明するのに一例としてルールNo.1を用いる。
具体的には、ルールNo.1の有効ビットの値に基づいてルールNo.1のハッシュキー値が決定されてもよく、その後、ハッシュキー値に基づいてハッシュ演算が実行されて、ハッシュテーブルにおけるルールNo.1の記憶位置が決定され、当該記憶位置にルールNo.1が記憶される。記憶位置にルールNo.1のハッシュキー値が記憶されてもよい。任意選択で、記憶位置にルールNo.1が記憶され、記憶位置にルールNo.1の優先度情報が記憶されてもよい。
実際に適用する際には、対応するマスク構成が記憶ユニットに合わせて設定されてもよい。マスク構成により、ルールNo.1の有効ビットの値のみが確保され、有効ビット以外のビットの値が“0”に置き替えられるように、ルールNo.1に対応するハッシュキー値を設定してもよい。
任意選択で、記憶ユニットがルールテーブルをさらに含んでもよく、第1のルール集合中の各ルールがルールテーブルに記憶されてもよい。ルールテーブルが各ルールの優先度情報をさらに記憶してもよい。この場合、ルールテーブルにおけるルールNo.1のアドレスインデックスが記憶位置に記憶されてもよい。
任意選択で、ルールNo.1のハッシュキー値に基づいてハッシュ演算が実行されてハッシュテーブルにおけるルールNo.1の記憶位置が決定される。記憶位置がハッシュテーブルの行インデックス(index No.1と表わされる)であってもよい。この場合、行index No.1の空きスロット(slot)にルールNo.1が記憶されてもよいし、ルールNo.1のアドレスインデックスが記憶されてもよい。
任意選択で、ルールNo.2が第1のルール集合中の別のルールであるとしてもよく、ルールNo.2の有効ビットの値がルールNo.1の有効ビットの値と同じであってもよい。この場合、ハッシュテーブルにおけるルールNo.2の記憶位置が決定される。この記憶位置もindex No.1であってもよい。この場合、行index No.1の別の空きスロットにルールNo.2が記憶されてもよいし、ルールNo.2のアドレスインデックスが記憶されてもよい。
任意選択で、ルールNo.1のハッシュキー値に基づいて2つのハッシュ演算が行われてもよい。第1のハッシュ演算は、ハッシュテーブルにおけるルールNo.1の記憶位置を決定するのに用いられ、第2の演算は、ルールNo.1のフィンガプリント(fingerprint)情報を決定し、フィンガプリント情報を記憶位置に記憶するのに用いられる。次のハッシュ探索プロセスでは、上記の2つのハッシュ演算は、探索キーにも行われてもよい。第2の演算を通じて探索キーのフィンガプリント情報が得られた後、探索キーのフィンガプリント情報と記憶位置にあるフィンガプリント情報との間でマッチング及び比較が行われてもよい。2つのフィンガプリント情報が同じである場合にのみ、ハッシュ探索を通じて得られた記憶位置が正しいと判断されることが可能であり、以降のルールマッチング操作が行われることになる。フィンガプリント情報を設定することにより、「ハッシュコンフリクト」問題の発生を抑えることができ、ルールマッチングの精度を改善することができる。
任意選択で、ルールテーブルが最大1回マッチングされることになることについて制限を課すために、同じ行中の異なるスロットのフィンガプリント情報が互いに異なり、これにより、ルールマッチング効率が改善されることが可能である。
上記では、第1のルール集合を記憶する仕方を説明している。第1のルール集合はN個のルール集合のうちのいずれか1つである。N個のルール集合は初期ルール集合を分割することによって取得されてもよい。初期ルール集合は任意の手法、たとえば、HiCuts、HyperCuts又はModularなどの方法を用いてN個のルール集合に分割されてもよい。
可能な実現例では、初期ルール集合は関心ビットの分布特性に基づいてN個のルール集合に分割されてもよい。
たとえば、分布特性が同じまたは類似である関心ビットを持つルールが同じルール集合にグループ化されてもよい。このことは、ルール集合に対応する有効ビットを決定する上での助けになりうる。
本出願における関心ビットの分布特性が主に関心ビット数と位置特性とに関し、関心ビットの分布特性が同じまたは類似であることが、関心ビット数と関心ビットの分布位置とが同じまたは類似であることをほぼ意味することが理解されるべきである。
設定済みの各ルールを記憶するために、N個のルール集合が1つずつ記憶されてもよく、すべてのルール集合の決定された有効ビットが同じであっても異なってもよい。
複数のルール集合の有効ビットが同じである場合、複数のルール集合が同じ記憶ユニットに記憶されてもよい。これに加えて、容量が小さいために記憶ユニットがルール集合中のすべてのルールを記憶することができない場合、複数の記憶ユニットにルール集合が記憶されてもよい。本出願の実施形態では、次のハッシュ探索を容易にするために、各記憶ユニットに記憶されるルールの有効ビットは同じである。言い換えると、実際に適用する際には、記憶ユニット毎にマスク構成の1つの種別しか設定されない。
これに加えて、可能な実現例では、第1のルール集合中の複数のルールが同じハッシュキー値に対応する(すなわち、複数のルール、たとえば、ルールNo.1及びルールNo.2の有効ビットの値が同じである)。この場合、複数のルールが異なる記憶ユニットに記憶されてもよい。ハッシュ探索の際、同じ記憶ユニットの複数のスロットを探索することを回避することができ、特に、ルールテーブルにおけるルールのアドレスインデックスがスロットに記憶される場合にこれを回避することができる。この場合、1つの記憶ユニットでルールテーブルを複数回探索する(ルールテーブルを探索する時間が比較的長い)ことを回避することができる。これにより、探索の遅延を抑えることができ、探索効率を改善することができる。
上記の検討に基づいて、N個のルール集合がS個の記憶ユニットに記憶されてもよく、Nの値はSの値を超えてもSの値に等しくてもSの値未満であってもよい。
可能な実現例では、分割される対応するルール集合の個数はハードウェア設計に採用される記憶ユニットの個数に基づいて決定されてもよい。すなわち、ルール集合(Nの値)の個数が記憶ユニットの個数(Sの値)に等しくてもよい。この場合、1つのルール集合が1つの記憶ユニットに対応してもよく、各ルール集合は異なる有効ビットに対応する。
任意選択で、S個の記憶ユニットが並列に配置されてもよく、これにより、ハッシュ探索効率が改善されることが可能である。
ステップ230:トラフィック分類が実行されるとき、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々において対応するルールを探索する。
特に、トラフィック分類が実行されるとき、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々でハッシュ探索が実行され、すなわち、各記憶ユニットでは、まず、記憶ユニットにあるものに対して設定されているマスク構成を用いて初期キー値(すなわち探索キー)が記憶ユニットの対応するハッシュキー値に変換され、記憶ユニットにハッシュ演算を実行することによって記憶位置が取得された後、対応する記憶位置のデータ情報が読み出されてルールマッチングが実行される。複数のルールがマッチングされる場合には、優先度が最も高いルールが戻り結果として用いられてもよい。
ルールが記憶位置に直接記憶される場合、記憶位置にあるルールが読み出されてもよく、ルールマッチングが実行される。あるいは、ルールテーブルにおけるルールのアドレスインデックスが記憶位置に記憶される場合、記憶位置のアドレスインデックスが読み出されてもよく、アドレスインデックスによって示されるルールにマッチする。
これに加えて、ハッシュキー値に基づいて2つのハッシュ演算が実行されてもよい。第2の演算を通じて探索キーのフィンガプリント情報が得られた後、探索キーのフィンガプリント情報と記憶位置にあるフィンガプリント情報との間でマッチング及び比較が行われてもよい。2つのフィンガプリント情報が同じである場合にのみ、ハッシュ探索を通じて得られた記憶位置が正しいと判断されることが可能であり、以降のルールマッチング操作が行われることになる。
本出願の本実施形態で提供されているトラフィック分類方法では、異なるルール集合に対応する有効ビットがルール集合単位で決定されてもよく、その後、有効ビットの値でありかつルール集合中のルールの値である値に基づいてハッシュ記憶がルールに実行され、ルールが複数の記憶ユニットに記憶される。したがって、本実施形態で提供されているトラフィック分類方法は探索パフォーマンスが高く、リソース消費量が小さく、探索遅延が小さいことを特徴とする。これに加えて、本出願の本実施形態で提供されているトラフィック分類方法では、適切なルール集合分割方法と適切な有効ビット選択方法との組合せを通じて、ルール挿入の際に無関心ビット“*”に起因するルール拡張問題を大幅に抑えることができる。ルール挿入の際、対象ルールの有効ビットの“*”のみに基づいてルール拡張が実行されればよい。このようにすれば、比較的多数の計算リソース及び記憶リソースを消費することはない。
以下、表1に示されている特定の例に基づいて、本出願で提供されているトラフィック分類方法を説明する。本実施形態は上記の実施形態のさらなる説明と考えられてもよい。本実施形態では、初期ルール集合の分割の仕方とルール集合に対応する有効ビットの決定の仕方とを主に説明する。
Figure 2022527704000002
表1に示されている初期ルール集合は合計で13個のルールを含む。13個のルールはそれぞれルールNo.1からNo.13である。各ルールは5つのフィールド、すなわち、送信元IP、宛先IP、送信元ポート、宛先ポート及びプロトコル種別を含む。
ルールNo.1~No.5について、宛先IP、送信元ポート、宛先ポート及びプロトコル種別のビットはすべて無関心ビットであり、上記の5つのルールの関心ビットは主に送信元IPフィールドに集中している。特に、ルールNo.1~No.5の関心ビットは送信元IPフィールドのそれぞれ先頭の32ビット、28ビット、24ビット、26ビット及び26ビット(バイナリビットに変換された後)である。
同様に、ルールNo.6~No.11について、送信元IP、送信元ポート、宛先ポート及びプロトコル種別のビットはすべて無関心ビットであり、上記の6つのルールの関心ビットは主に宛先IPフィールドに集中している。特に、ルールNo.6~No.11の関心ビットは宛先IPフィールドのそれぞれ先頭の24ビット、25ビット、32ビット、27ビット、32ビット及び32ビット(バイナリビットに変換された後)である。
同様に、ルールNo.12及びNo.13について、送信元IP、宛先IP及び送信元ポートのビットはすべて無関心ビットであり、上記の2つのルールの関心ビットは主に宛先ポートフィールド及びプロトコル種別フィールドに集中している。
上記の検討に基づいて、ルール集合の有効ビットをその後に決定することを助けるために、まず、初期ルール集合が初期ルール集合の関心ビットの分布特性に基づいて分割されてもよい。特に、ルールNo.1~No.5の関心ビットは主に送信元IPフィールドに集中しており、ルールNo.6~No.11の関心ビットは主に宛先IPフィールドに集中しており、ルールNo.12及びNo.13の関心ビットは主に宛先ポートフィールド及びプロトコル種別フィールドに集中している。したがって、初期ルール集合が3つのルール集合に分割されてもよい。3つのルール集合はそれぞれルール集合No.1~ルール集合No.3であり、ルール集合No.1はルールNo.1~No.5を含み、ルール集合No.2はルールNo.6~No.11を含み、ルール集合No.3はルールNo.12とNo.13とを含む。さらに、上記の3つのルール集合は3つの記憶ユニットに、対応づけて記憶されてもよい。
第2に、各ルール集合に対応する有効ビットがそれぞれ決定される。ルール集合No.1について、ルールNo.1~No.5の関心ビットがすべて送信元IPフィールドに集中しているので、送信元IPフィールドに含まれるビットに基づいて有効ビットが決定されてもよい。
任意選択で、送信元IPに含まれる32ビットのすべてがルール集合No.1に対応する有効ビットとして決定されてもよい。この場合、ルール集合No.1に対応する有効ビットは送信元IPの32ビットであり、ルールNo.1~No.5の送信元IPに含まれる32ビットの値が次のハッシュ記憶演算に関与し、その他のビットの値は次のハッシュ記憶演算に関与しない。これに加えて、ルールNo.2~No.5について、有効ビットが先頭の28ビット、24ビット、26ビット及び26ビットしかないので、送信元IPの32ビットに無関心ビットが挿入される場合にルール拡張が実行される必要がある。
任意選択で、ルール拡張回数を減らすために、送信元IPの先頭の24ビットがルール集合No.1に対応する有効ビットとして決定されてもよい。この場合、ルールNo.1~No.5の有効ビットは無関心ビットを含まない。したがって、挿入の際にルール拡張が実行される必要がない。この場合、ルール集合No.1に対応する記憶ユニットのマスク構成が表2のマスク1であってもよい。挿入の際、ルールNo.1~No.5とマスク1とにビット毎のAND演算が実行されてもよい。各ルールのハッシュキー値でありかつハッシュテーブルに挿入されるハッシュキー値として送信元IPの各ルールの先頭の24ビットの値が用いられる。
Figure 2022527704000003
任意選択で、ルール挿入の際の計算量を削減するために、有効ビットの個数がさらに減らされてもよい。特に、表1は十進表記の送信元IPアドレスを示す。十進表記の送信元IPアドレスの2番目のビットについて、ルールNo.1~No.5の値はそれぞれ22、33、116、3及び72であり、互いに異なる。したがって、送信元IPアドレスの2番目のビット(すなわち、二進法で9番目~16番目のビット)がルール集合No.1に対応する有効ビットとして決定されてもよい。この場合、マスクNo.1は0.255.0.0 0.0.0.0 0x0000 0x0000 0x00に設定されてもよい。同様に、十進表記の送信元IPアドレスの3番目のビットについて、ルールNo.1~No.5の値はそれぞれ132、5、7、18及び2であり、互いに異なる。したがって、送信元IPアドレスの3番目のビット(すなわち、二進法で17番目~24番目のビット)がルール集合No.1に対応する有効ビットとして決定されてもよい。この場合、マスクNo.1は0.0.255.0 0.0.0.0 0x0000 0x0000 0x00に設定されてもよい。
同様に、ルール集合No.2について、ルールNo.6~No.11の関心ビットがすべて宛先IPフィールドに集中しているので、宛先IPフィールドに含まれるビットに基づいて有効ビットが決定されてもよい。
任意選択で、宛先IPに含まれる32ビットのすべてがルール集合No.2に対応する有効ビットとして決定されてもよい。
任意選択で、ルール拡張回数を減らすために、宛先IPの先頭の24ビットがルール集合No.2に対応する有効ビットとして決定されてもよい。この場合、ルールNo.6~No.11の有効ビットが無関心ビットを含まない。したがって、挿入の際にルール拡張が実行される必要がない。この場合、ルール集合No.2に対応する記憶ユニットのマスク構成が表2のマスク2であってもよい。挿入の際、ルールNo.6~No.11とマスク2とにビット毎のAND演算が実行されてもよい。
任意選択で、ルール挿入の際の計算量を削減するために、有効ビットの個数がさらに減らされてもよい。特に、表1は十進表記の宛先IPアドレスを示す。十進表記の宛先IPアドレスの3番目のビットについて、ルールNo.6~No.11の値はそれぞれ52、17、37、39、7及び20であり、互いに異なる。したがって、宛先IPアドレスの3番目のビット(すなわち、二進法で17番目~24番目のビット)がルール集合No.2に対応する有効ビットとして決定されてもよい。この場合、マスクNo.2は0.0.0.0 0.0.255.0 0x0000 0x0000 0x00に設定されてもよい。
同様に、ルール集合No.3について、ルールNo.12及びNo.13の関心ビットがすべて宛先ポートフィールド及びプロトコル種別フィールドに集中しているので、宛先ポートフィールド及びプロトコル種別フィールドに含まれるビットに基づいて有効ビットが決定されてもよい。
任意選択で、宛先ポートフィールドに含まれるビットがルール集合No.3に対応する有効ビットとして決定されてもよい。この場合、ルール集合No.1に対応する記憶ユニットのマスク構成が表2のマスク3であってもよい。挿入の際、ルールNo.12及びNo.13とマスク3とにビット毎のAND演算が実行されてもよい。
任意選択で、プロトコル種別フィールドに含まれるビットもルール集合No.3に対応する有効ビットとして決定されてもよい。この場合、マスクNo.3は0.0.0.0 0.0.0.0 0x0000 0x0000 0xFFに設定されてもよい。
第3に、上記の3つのルール集合が3つの記憶ユニットに、対応づけて記憶された後、上記の3つの記憶ユニットが並列に配置されて探索効率を改善してもよい。
第4に、トラフィック分類探索の際、探索キーに基づいて同時に上記の3つの記憶ユニットで探索が実行されてもよい。各記憶ユニットでは、まず、記憶ユニットにあるものに対して設定されているマスク構成を用いて初期キー値が記憶ユニットの対応するハッシュキー値に変換され、記憶ユニットにハッシュ演算を実行することによって記憶位置が取得された後、対応する記憶位置のデータ情報が読み出されてルールマッチングが実行される。
図5は本出願に係るハッシュアルゴリズムユニットの論理構成図である。図5中、本出願の本実施形態で提供されているハッシュアルゴリズムユニットはマスクモジュール、演算モジュール、ハッシュテーブルモジュール及びルールテーブルモジュールを含む。対象ハッシュアルゴリズムユニットによってハッシュ演算を実行するために選択される有効ビットがマスクモジュールで設定される。マスクモジュールは探索キーを対応するハッシュキー値に変換してもよい。演算モジュールはハッシュキー値に基づいてハッシュ演算を実行するように構成されている。ハッシュテーブルモジュールはアドレスインデックスやフィンガプリント情報などのルール内容を記憶する。最終的に完全なルールマッチングを行うために、ルールテーブルは完全なルール情報を記憶するのに用いられる。
図5に示されているハッシュアルゴリズムユニットの動作手順は以下の通りであり、すなわち、ハッシュアルゴリズムユニットに探索キーk1が入力されると、まず、探索キーk1と、マスクモジュールで設定されたマスクmaskとにビット毎のAND(&)演算が実行されて、探索キーk1がハッシュアルゴリズムユニットのハッシュテーブルのハッシュキー値k2に変換される。
たとえば、探索キーk1は10111001 01011110であってもよく、マスクmaskは11110000 00000000であってもよい。この場合、探索キーk1とマスクmaskとにビット毎のAND演算が実行された後、取得されたハッシュキー値k2は10110000 00000000である。
その後、ハッシュキー値k2と第1のハッシュ関数f1とに第1のハッシュ演算が実行され、ハッシュテーブルに記憶されかつルールのindexである行indexが計算される。その後、行の複数のスロットに探索が実行される。スロットがハッシュキー値k2を記憶し、ルールのアドレスインデックスも記憶している場合、アドレスインデックスはルールテーブルモジュールにおける位置を示すのに用いられ、当該位置に、関連するルールの完全な情報が記憶されている。この場合、関連するルールが戻り結果として用いられてもよい。
これに加えて、ハッシュコンフリクトを回避するために、ハッシュキー値k2と第2のハッシュ関数f2とにさらに第2のハッシュ演算が実行されて、ルールのフィンガプリント(fingerprint)情報が計算され、ルールのフィンガプリント情報がスロットのフィンガプリント情報と比較されてもよい。2つが同じである場合にのみ、ハッシュ探索を通じて得られた記憶位置が正しいと判断することができ、次のルールマッチング操作が実行されることになる。
図6は本出願に係る並列ハッシュアルゴリズムユニットによってトラフィック分類探索が実施される概略ブロック図である。
図6には、並列に配置されている合計S個のハッシュアルゴリズムユニットがある。パケットヘッダの各フィールドの情報をキー構築ユニットが取得して探索キーを構築した後、探索キーをS個の並列ハッシュアルゴリズムユニットに入力して並列探索を実行する。各ハッシュアルゴリズムユニットでは、まず、マスクモジュールによって構成されたマスクを用いて探索キーがハッシュアルゴリズムユニットの対応するハッシュキー値に変換された後、ハッシュアルゴリズムユニットでハッシュ演算が実行され、アドレスが取得された後、対応するアドレスのデータ情報が読み出され、ルールマッチング及び比較が実行される。マッチングが成功する場合、ルールはマッチング済みになり、ルールが比較ユニットに渡される。複数のルールがマッチする場合、比較ユニットは複数のルールの優先度を比較して優先度が最も高いルールを出力結果として選択するように構成される。
図7は本出願に係るトラフィック分類探索装置300の概略フローチャートである。装置300はトラフィック分類装置であってもよいし、トラフィック分類装置に配置されているチップや回路であってもよい。たとえば、装置300はルータやスイッチであってもよいし、ルータやスイッチのチップであってもよい。図7に示されているように、装置300は、
第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、第1のルール集合に対応する有効ビットを決定し、有効ビットは、複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ように構成されている決定ユニット310と、
第1のルール集合中の各ルールの有効ビットの値に基づいて各ルールのハッシュキー値を決定して、ハッシュキー値に基づいて第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶し、第1のルール集合はN個のルール集合のうちのいずれか1つであり、N個のルール集合はS個の記憶ユニットに記憶され、N及びSは1以上の整数であり、S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ように構成されている記憶ユニット320と、
トラフィック分類が実行されるときに、探索キーのハッシュキー値に基づいてS個の記憶ユニットの各々において対応するルールを探索するように構成されている探索ユニット330と
を含む。
任意選択で、装置300は初期ルール集合の関心ビットの分布特性に基づいて初期ルール集合をN個のルール集合に分割するように構成されている分割ユニットをさらに含む。
任意選択で、第1のルール集合が同じハッシュキー値に対応する複数のルールを有する場合、記憶ユニット320は同じハッシュキー値に対応する複数のルールを異なる記憶ユニット320に記憶するようにさらに構成される。
任意選択で、各記憶ユニット320がハッシュテーブルとルールテーブルとを含み、記憶ユニット320は、ルールテーブルに第1のルール集合中の各ルールを記憶し、各ルールのハッシュキー値に基づいてハッシュテーブルにおける各ルールの記憶位置を計算して、当該記憶位置にルールテーブルにおける各ルールのアドレスインデックスを記憶するようにさらに構成される。
任意選択で、記憶ユニット320は各ルールのハッシュキー値に基づいて各ルールのフィンガプリント情報を計算して各ルールのフィンガプリント情報を記憶位置に記憶するようにさらに構成される。
図7に示されているトラフィック分類装置300は本出願の実施形態に係るトラフィック分類方法200におけるトラフィック分類装置に対応してもよい。装置300は図4のトラフィック分類方法200を実行するように構成されるトラフィック分類装置によって実行される方法のモジュールを含んでもよい。これに加えて、装置300のモジュールと上記のその他動作及び/又は機能とが図4のトラフィック分類方法200の対応する手順を実施するのに別々に用いられる。上記の対応するステップを当該モジュールが実行する特定のプロセスが方法200で詳細に説明されている。簡潔にするために、ここでは詳細は重ねて説明しない。
図8は本出願の実施形態に係るトラフィック分類装置400の概略構成図である。装置400はトラフィック分類装置であってもよいし、トラフィック分類装置に配置されているチップや回路であってもよい。たとえば、装置400はルータやスイッチであってもよいし、ルータやスイッチのチップであってもよい。図8に示されているように、装置400はプロセッサ410、メモリ420及び通信インタフェイス430を含む。メモリ420は命令を記憶する。プロセッサ410はメモリ420中の命令を実行するように構成されている。プロセッサ410は命令が実行されるときに上記の方法の実施形態で提供されている方法を実行するように構成されている。プロセッサ410は外部と通信するように通信インタフェイス430を制御するようにさらに構成されている。
さらに、プロセッサ410、メモリ420及び通信インタフェイス430は内部接続経路を用いて互いと通信して制御信号及び/又はデータ信号を渡してもよい。
さらに、メモリ420はプロセッサ410に組み込まれてもよいし、プロセッサ410から分離して配置されてもよい。
特に、トラフィック分類装置400は図4のトラフィック分類方法200のステップを実行するように構成されてもよい。装置400は図4のトラフィック分類方法200を実行するように構成されるトラフィック分類装置によって実行される方法のモジュールを含んでもよい。これに加えて、装置400のモジュールと上記のその他動作及び/又は機能とが図4のトラフィック分類方法200の対応する手順を実施するのに別々に用いられる。上記の対応するステップを当該モジュールが実行する特定のプロセスが方法200で詳細に説明されている。簡潔にするために、ここでは詳細は重ねて説明しない。
本出願の実施形態ではコンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体はコンピュータプログラムを含む。コンピュータプログラムがコンピュータで実行されると、上記の方法の実施形態に係る方法をコンピュータが実行することが可能にされる。
本出願の実施形態では命令を含むコンピュータプログラムプロダクトをさらに提供する。コンピュータプログラムプロダクトがコンピュータで実行されると、上記の方法の実施形態に係る方法をコンピュータが実行することが可能にされる。
本出願の実施形態ではメモリとプロセッサとを含むチップシステムをさらに提供する。メモリはコンピュータプログラムを記憶するように構成されている。プロセッサはメモリからコンピュータプログラムを呼び出してコンピュータプログラムを実行するように構成され、これにより、チップシステムが実装されたネットワークデバイスは上記の方法の実施形態に係る方法を実行する。
チップシステムは情報又はデータを送るように構成されている入力回路又はインタフェイスと、情報又はデータを受け取るように構成されている出力回路又はインタフェイスとを含んでもよい。
本出願の実施形態のプロセッサが中央処理装置(central processing unit,CPU)であってもよいし、さらに、別の汎用プロセッサ、デジタルシグナルプロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application specific integrated circuit,ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)や、別のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポネントなどであってもよいことが当然分かる。汎用プロセッサはマイクロプロセッサであってよいし、プロセッサが任意の従来のプロセッサなどであってよい。
本出願の実施形態のメモリが揮発メモリであっても不揮発メモリであってもよいし、揮発メモリと不揮発メモリとを含んでもよいと解することができる。不揮発メモリは読み出し専用メモリ(read-only memory,ROM)、プログラマブル読み出し専用メモリ(programmable ROM,PROM)、消去可能プログラマブル読み出し専用メモリ(erasable PROM,EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(electrically EPROM,EEPROM)やフラッシュメモリであってもよい。揮発メモリは外部キャッシュとして用いられるランダムアクセスメモリ(random access memory,RAM)であってもよい。例の説明である一方で限定を課さない説明を通じて、ランダムアクセスメモリ(random access memory,RAM)の多数の形態が利用可能であり、たとえば、スタティックランダムアクセスメモリ(static RAM,SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、同期型ダイナミックランダムアクセスメモリ(synchronous DRAM,SDRAM)、ダブルデータレート同期型ダイナミックランダムアクセスメモリ(double data rate SDRAM,DDR SDRAM)、拡張同期型ダイナミックランダムアクセスメモリ(enhanced SDRAM,ESDRAM)、synchlinkダイナミックランダムアクセスメモリ(synchlink DRAM,SLDRAM)やダイレクトrambusダイナミックランダムアクセスメモリ(direct rambus RAM,DR RAM)が利用可能である。
本明細書で開示されており実施形態で説明されている例と組み合せれば、部位やアルゴリズムステップが電子ハードウェア、又はコンピュータソフトウェアと電子ハードウェアとの組合せによって実施され得ることに当業者は想到すると思われる。機能がハードウェアによって実行されるのかソフトウェアによって実行されるのかは特定の用途と技術的解決手段の設計制約条件とに依存する。当業者は、特定の用途毎に、説明されている機能を実施するのに異なる方法を用いることができるが、当該実施が本出願の範囲を越えるとは当然考えられない。
簡便に説明するために、上記のシステム、装置及び部位の詳細な動作プロセスについては、上記の方法の実施形態の対応するプロセスを参照することを当業者が理解することは明らかであると考えられ、ここでは詳細は重ねて説明しない。
本出願で提供されているいくつかの実施形態では、開示されているシステム、装置及び方法が別様に実施されてもよいことが当然分かる。たとえば、説明されている装置の実施形態は例にすぎない。たとえば、部位の分割は論理的な機能の分割にすぎず、実際に実施する際には他の分割であってもよい。たとえば、複数の部位や構成要素が別のシステムに組み合されたり組み込まれたりしてもよいし、一部の機能が無視されたり実行されなかったりしてもよい。これに加えて、表示されたり説明されたりしている相互接続や直接接続や通信接続がいくつかのインタフェイスを通じて実施されてもよい。装置や部位間の間接接続や通信接続が電子的に実施されたり機械的に実施されたり他の形態で実施されたりしてもよい。
分離した部分として説明されている部位が物理的に分離していてもいなくてもよく、また、部位として表示されている部分が物理的な部位であってもなくてもよいし、一箇所に配置されてもよいし、複数のネットワーク部位に分散されてもよい。実施形態の解決手段の目的を達成するために、実際の要求に基づいて部位の一部が選択されても全部が選択されてもよい。
これに加えて、本出願の実施形態の機能部位が1つの処理ユニットに統合されてもよいし、部位の各々が物理的に単独で存在してもよい(そうでなければ2つ以上の部位が1つの部位に統合される)。
機能がソフトウェア機能部位の形態で実施され、独立した製品として販売されたり使用されたりする場合、機能がコンピュータ可読記憶媒体に記憶されてもよい。このような理解に基づけば、ソフトウェア製品の形態で本出願に必須の技術的解決手段が実施されてもよいし、ソフトウェア製品の形態で従来技術に寄与する部分が実施されてもよいし、ソフトウェア製品の形態で技術的解決手段の一部が実施されてもよい。ソフトウェア製品は記憶媒体に記憶され、本出願の実施形態で説明されている方法のステップの全部を実行したり一部を実行したりするようにコンピュータデバイス(パーソナルコンピュータ、サーバやネットワークデバイスであってもよい)に命令するためのいくつかの命令を含む。上記の記憶媒体はUSBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(Read-Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)、磁気ディスクや光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は本出願の特定の実現例にすぎず、一方で本出願の保護範囲を限定することは意図されていない。本出願で開示されている技術的範囲の当業者によって容易に創出されるいかなる変形や置換も本出願の保護範囲に含まれるものとする。したがって、本出願の保護範囲は請求項の保護範囲にしたがうものとする。上記の説明は本発明の特定の実現例にすぎず、一方で本発明の保護範囲を限定することは意図されていない。本発明で開示されている技術的範囲の当業者によって容易に創出されるいかなる変形や置換も本発明の保護範囲に含まれるものとする。したがって、本発明の保護範囲は請求項の保護範囲にしたがうものとする。
200 トラフィック分類方法
300 トラフィック分類探索装置
310 決定ユニット
320 記憶ユニット
330 探索ユニット
400 トラフィック分類装置
410 プロセッサ
420 メモリ
430 通信インタフェイス
ハッシュテーブルはキー値(Key value)に基づいて直接アクセスされるデータ構造である。すなわち、キー値をテーブルの位置にマッピングすることによってレコードがアクセスされ、探索速度が上がる。このマッピング関数がハッシュ関数であり、レコードを記憶するための配列がハッシュテーブルである。キー値がkである場合、キー値はハッシュテーブルのf(k)の記憶位置に記憶され、ここで、fはハッシュ関数である。
任意選択で、宛先ポートフィールドに含まれるビットがルール集合No.3に対応する有効ビットとして決定されてもよい。この場合、ルール集合No.3に対応する記憶ユニットのマスク構成が表2のマスク3であってもよい。挿入の際、ルールNo.12及びNo.13とマスク3とにビット毎のAND演算が実行されてもよい。
図5に示されているハッシュアルゴリズムユニットの動作手順は以下の通りであり、すなわち、ハッシュアルゴリズムユニットに探索キーk1が入力されると、まず、探索キーk1と、マスクモジュールで設定されたマスクmaskとにビット毎のAND(&)演算が実行されて、探索キーk1がハッシュアルゴリズムユニットのハッシュテーブルのハッシュキー値k2に変換される。
たとえば、探索キーk1は10111001 01011110であってもよく、マスクmaskは11110000 00000000であってもよい。この場合、探索キーk1とマスクmaskとにビット毎のAND演算が実行された後、取得されたハッシュキー値k2は10110000 00000000である。
本出願の実施形態のプロセッサが中央処理装置(central processing unit,CPU)であってもよいし、さらに、別の汎用プロセッサ、デジタルシグナルプロセッサ(digital signal processor,DSP)、特定用途向け集積回路(application-specific integrated circuit,ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array,FPGA)や、別のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポネントなどであってもよいことが当然分かる。汎用プロセッサはマイクロプロセッサであってよいし、プロセッサが任意の従来のプロセッサなどであってよい。

Claims (13)

  1. 第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、前記第1のルール集合に対応する有効ビットを決定するステップであって、前記有効ビットは、前記複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ステップと、
    前記第1のルール集合中の各ルールの前記有効ビットの値に基づいて各ルールのハッシュキー値を決定し、前記ハッシュキー値に基づいて前記第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶するステップであって、前記第1のルール集合はN個のルール集合のうちのいずれか1つであり、前記N個のルール集合は前記S個の記憶ユニットに記憶され、N及びSは1以上の整数であり、前記S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ステップと、
    トラフィック分類が行われるとき、探索キーのハッシュキー値に基づいて前記S個の記憶ユニットの各々において対応するルールを探すステップと
    を含むトラフィック分類方法。
  2. 第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、前記第1のルール集合に対応する有効ビットを決定する前記ステップの前に、前記方法は、
    初期ルール集合の関心ビットの分布特性に基づいて前記初期ルール集合を前記N個のルール集合に分割するステップ
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のルール集合が同じハッシュキー値に対応する複数のルールを有する場合、前記ハッシュキー値に基づいて前記第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶する前記ステップは、
    前記同じハッシュキー値に対応する前記複数のルールを異なる記憶ユニットに記憶するステップ
    を含む、請求項1又は2に記載の方法。
  4. 前記S個の記憶ユニットは並列に配置される、請求項1から3のいずれか一項に記載の方法。
  5. 各記憶ユニットはハッシュテーブルとルールテーブルとを備え、
    前記ハッシュキー値に基づいて前記第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶する前記ステップは、
    前記ルールテーブルに前記第1のルール集合中の各ルールを記憶するステップと、
    各ルールの前記ハッシュキー値に基づいて前記ハッシュテーブルにおける各ルールの記憶位置を計算して、前記記憶位置に前記ルールテーブルにおける各ルールのアドレスインデックスを記憶するステップと
    を含む、請求項1から4のいずれか一項に記載の方法。
  6. 前記ハッシュキー値に基づいて前記第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶する前記ステップは、
    各ルールの前記ハッシュキー値に基づいて各ルールのフィンガプリント情報を計算して各ルールの前記フィンガプリント情報を前記記憶位置に記憶するステップ
    を含む、請求項5に記載の方法。
  7. 第1のルール集合中の複数のルールの関心ビットの分布特性に基づいて、前記第1のルール集合に対応する有効ビットを決定し、前記有効ビットは、前記複数のルールにおいて異なるルールを区別するのに用いられる値が置かれるビットを含む、ように構成される決定ユニットと、
    前記第1のルール集合中の各ルールの前記有効ビットの値に基づいて各ルールのハッシュキー値を決定し、前記ハッシュキー値に基づいて前記第1のルール集合中の各ルールをS個の記憶ユニットのうちの少なくとも1つに記憶し、前記第1のルール集合はN個のルール集合のうちのいずれか1つであり、前記N個のルール集合は前記S個の記憶ユニットに記憶され、N及びSは1以上の整数であり、前記S個の記憶ユニットの各々に記憶されるルールの有効ビットは同じである、ように構成される記憶ユニットと、
    トラフィック分類が行われるとき、探索キーのハッシュキー値に基づいて前記S個の記憶ユニットの各々において対応するルールを探すように構成される探索ユニットと
    を備えるトラフィック分類装置。
  8. 前記装置は初期ルール集合の関心ビットの分布特性に基づいて前記初期ルール集合を前記N個のルール集合に分割するように構成される分割ユニットをさらに備える、請求項7に記載の装置。
  9. 前記第1のルール集合が同じハッシュキー値に対応する複数のルールを有する場合、前記記憶ユニットは前記同じハッシュキー値に対応する前記複数のルールを異なる記憶ユニットに記憶するようにさらに構成される、請求項7又は8に記載の装置。
  10. 前記S個の記憶ユニットは並列に配置される、請求項7から9のいずれか一項に記載の装置。
  11. 各記憶ユニットはハッシュテーブルとルールテーブルとを備え、前記記憶ユニットは、
    前記ルールテーブルに前記第1のルール集合中の各ルールを記憶し、
    各ルールの前記ハッシュキー値に基づいて前記ハッシュテーブルにおける各ルールの記憶位置を計算して、前記記憶位置に前記ルールテーブルにおける各ルールのアドレスインデックスを記憶する
    ようにさらに構成される、請求項7から10のいずれか一項に記載の装置。
  12. 前記記憶ユニットは、
    各ルールの前記ハッシュキー値に基づいて各ルールのフィンガプリント情報を計算して各ルールの前記フィンガプリント情報を前記記憶位置に記憶する
    ようにさらに構成される、請求項11に記載の装置。
  13. プロセッサを備えるチップシステムであって、前記プロセッサはメモリからコンピュータプログラムを呼び出して前記コンピュータプログラムを実行するように構成され、これにより、前記チップシステムが実装されたネットワークデバイスは請求項1から6のいずれか一項に記載の方法を実行する、チップシステム。
JP2021556957A 2019-04-12 2020-03-25 トラフィック分類方法及び装置 Active JP7170905B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910294640.0 2019-04-12
CN201910294640.0A CN111817978B (zh) 2019-04-12 2019-04-12 一种流分类方法及装置
PCT/CN2020/081113 WO2020207248A1 (zh) 2019-04-12 2020-03-25 一种流分类方法及装置

Publications (2)

Publication Number Publication Date
JP2022527704A true JP2022527704A (ja) 2022-06-03
JP7170905B2 JP7170905B2 (ja) 2022-11-14

Family

ID=72750941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021556957A Active JP7170905B2 (ja) 2019-04-12 2020-03-25 トラフィック分類方法及び装置

Country Status (6)

Country Link
US (1) US11882047B2 (ja)
EP (1) EP3917099A4 (ja)
JP (1) JP7170905B2 (ja)
KR (1) KR102601351B1 (ja)
CN (1) CN111817978B (ja)
WO (1) WO2020207248A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11245625B2 (en) * 2019-08-07 2022-02-08 Arista Networks, Inc. Generating entries in a content addressable memory of a network device
CN112667526B (zh) * 2021-03-22 2021-06-29 芯启源(南京)半导体科技有限公司 一种访问控制列表电路实现方法及其电路
CN113468202B (zh) * 2021-06-30 2024-05-17 深圳软牛科技有限公司 内存数据的筛选方法、装置、设备及存储介质
KR102403376B1 (ko) * 2022-02-23 2022-05-30 경희대학교 산학협력단 결정 트리에 기반하는 트래픽 분류 장치 및 그 방법
CN115633097B (zh) * 2022-12-21 2023-04-28 新华三信息技术有限公司 一种访问控制列表acl压缩方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050254502A1 (en) * 2004-05-11 2005-11-17 Lynn Choi Packet classification method through hierarchical rulebase partitioning
CN101540723A (zh) * 2009-04-20 2009-09-23 杭州华三通信技术有限公司 一种流表查找方法和装置
WO2016056217A1 (ja) * 2014-10-07 2016-04-14 日本電気株式会社 測定装置、測定システム、測定方法、および、プログラム
JP2018033017A (ja) * 2016-08-25 2018-03-01 日本電信電話株式会社 ネットワーク処理装置およびパケット処理方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6975592B1 (en) * 2000-11-22 2005-12-13 Nortel Networks Limited Configurable rule-engine for layer-7 and traffic characteristic-based classification
CN100454902C (zh) * 2006-08-02 2009-01-21 华为技术有限公司 一种多域流分类的实现方法
CN101511136B (zh) 2008-02-14 2013-02-20 台达电子工业股份有限公司 多组发光二极管的电流平衡供电电路
CN101753445A (zh) * 2009-12-23 2010-06-23 重庆邮电大学 基于关键字分解Hash算法的快速流分类方法
US10187353B2 (en) * 2010-06-02 2019-01-22 Symantec Corporation Behavioral classification of network data flows
CN102377581A (zh) * 2010-08-09 2012-03-14 高通创锐讯通讯科技(上海)有限公司 一种多域流分类流水线的实现方法
US9065860B2 (en) * 2011-08-02 2015-06-23 Cavium, Inc. Method and apparatus for multiple access of plural memory banks
CN104462144B (zh) * 2013-09-24 2019-06-14 中兴通讯股份有限公司 一种包分类规则的查找方法及装置
US9569522B2 (en) * 2014-06-04 2017-02-14 International Business Machines Corporation Classifying uniform resource locators
US9244978B2 (en) * 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
KR20160035793A (ko) * 2014-09-24 2016-04-01 에릭슨 엘지 주식회사 심층 패킷 분석 방법 및 장치
CN104468381B (zh) * 2014-12-01 2017-05-10 国家计算机网络与信息安全管理中心 一种多域流规则匹配的实现方法
KR101665583B1 (ko) * 2015-04-21 2016-10-24 (주) 시스메이트 네트워크 트래픽 고속처리 장치 및 방법
US10044620B2 (en) * 2015-05-01 2018-08-07 Hughes Network Systems, Llc Multi-phase IP-flow-based classifier with domain name and HTTP header awareness
CN106326234A (zh) * 2015-06-18 2017-01-11 深圳市中兴微电子技术有限公司 流分类方法及装置
US11418632B2 (en) * 2015-12-15 2022-08-16 Intel Corporation High speed flexible packet classification using network processors
US10305798B2 (en) * 2016-06-21 2019-05-28 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic lookup optimization for packet classification
US11088951B2 (en) * 2017-01-16 2021-08-10 Intel Corporation Flow classification apparatus, methods, and systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050254502A1 (en) * 2004-05-11 2005-11-17 Lynn Choi Packet classification method through hierarchical rulebase partitioning
CN101540723A (zh) * 2009-04-20 2009-09-23 杭州华三通信技术有限公司 一种流表查找方法和装置
WO2016056217A1 (ja) * 2014-10-07 2016-04-14 日本電気株式会社 測定装置、測定システム、測定方法、および、プログラム
JP2018033017A (ja) * 2016-08-25 2018-03-01 日本電信電話株式会社 ネットワーク処理装置およびパケット処理方法

Also Published As

Publication number Publication date
EP3917099A1 (en) 2021-12-01
US11882047B2 (en) 2024-01-23
EP3917099A4 (en) 2022-03-23
US20210409337A1 (en) 2021-12-30
KR20210121253A (ko) 2021-10-07
WO2020207248A1 (zh) 2020-10-15
KR102601351B1 (ko) 2023-11-10
JP7170905B2 (ja) 2022-11-14
CN111817978A (zh) 2020-10-23
CN111817978B (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
JP2022527704A (ja) トラフィック分類方法及び装置
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
US10496680B2 (en) High-performance bloom filter array
US9984144B2 (en) Efficient lookup of TCAM-like rules in RAM
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
US9269411B2 (en) Organizing data in a hybrid memory for search operations
Lakshminarayanan et al. Algorithms for advanced packet classification with ternary CAMs
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
US8856203B1 (en) System and method for algorithmic TCAM packet classification
US7089240B2 (en) Longest prefix match lookup using hash function
EP3258657B1 (en) Ip route caching with two search stages on prefix length
EP3276501B1 (en) Traffic classification method and device, and storage medium
EP2830260B1 (en) Rule matching method and device
US11327974B2 (en) Field variability based TCAM splitting
US7739445B1 (en) Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device
US10193804B2 (en) Method of forwarding data packets, method of creating merged FIB key entry and method of creating a search key
CN108664518A (zh) 一种实现查表处理的方法及装置
Antichi et al. JA-trie: Entropy-based packet classification
US9032142B2 (en) System and method for storing integer ranges in a memory
CN114039915B (zh) 根据存取控制列表进行封包处理的方法和系统
Yu et al. DTRadar: Accelerating Search Process of Decision Trees in Packet Classification
JP2002374289A (ja) 検索システム及びそれに用いる検索条件cam登録方法並びにそのプログラム
CN118175089A (zh) 一种支持多匹配域快速更新的流表管理方法
CN118264255A (en) Data compression method, device, computer equipment and readable storage medium
KR101583439B1 (ko) 리프-푸싱 기반의 영역 분할 사분 트라이를 이용한 패킷 분류 방법 및 패킷 분류 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210922

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220905

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221101

R150 Certificate of patent or registration of utility model

Ref document number: 7170905

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150