JP2014524688A - ルックアップ・フロントエンド・パケット出力プロセッサ - Google Patents

ルックアップ・フロントエンド・パケット出力プロセッサ Download PDF

Info

Publication number
JP2014524688A
JP2014524688A JP2014524092A JP2014524092A JP2014524688A JP 2014524688 A JP2014524688 A JP 2014524688A JP 2014524092 A JP2014524092 A JP 2014524092A JP 2014524092 A JP2014524092 A JP 2014524092A JP 2014524688 A JP2014524688 A JP 2014524688A
Authority
JP
Japan
Prior art keywords
responses
lookup
packet
packet processing
response
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
JP2014524092A
Other languages
English (en)
Other versions
JP5657840B2 (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.)
Cavium LLC
Original Assignee
Cavium Networks LLC
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 Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of JP2014524688A publication Critical patent/JP2014524688A/ja
Application granted granted Critical
Publication of JP5657840B2 publication Critical patent/JP5657840B2/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/027Frames
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • 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/742Route cache; Operation thereof
    • 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]
    • 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/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ネットワークアーキテクチャにおいてパケットのルールマッチングを実現するパケットプロセッサを提供する。
【解決手段】パケットプロセッサは、複数のルックアップエンジンおよびそれぞれのオンチップメモリユニットを有するルックアップクラスタコンプレックスを備える。オンチップメモリは、パケットデータに対してマッチングを行うためのルールを格納する。ルックアップフロントエンドは、ホストからルックアップ要求を受信し、これらのルックアップ要求を処理して、ルックアップエンジンに転送するためのキー要求を生成する。ルールマッチングの結果、ルックアップエンジンは、一致が見つかったか否かを示す応答メッセージを返す。ルックアップ フロントエンドは、応答メッセージをさらに処理し、対応する応答をホストに提供する。
【選択図】図17

Description

関連出願
本願は、2011年8月2日に出願された米国仮特許出願第61/514,344号、2011年8月2日に出願された米国仮特許出願第61/514,382号、2011年8月2日に出願された米国仮特許出願第61/514,379号、2011年8月2日に出願された米国仮特許出願第61/514,400号、2011年8月2日に出願された米国仮特許出願第61/514,406号、2011年8月2日に出願された米国仮特許出願第61/514,407号、2011年8月2日に出願された米国仮特許出願第61/514,438号、2011年8月2日に出願された米国仮特許出願第61/514,447号、2011年8月2日に出願された米国仮特許出願第61/514,450号、2011年8月2日に出願された米国仮特許出願第61/514,459号、および2011年8月2日に出願された米国仮特許出願第61/514,463号の利益を主張する。これらの出願の教示の内容の全てを本明細書に引用して援用する。
開放型システム間相互接続(OSI)参照モデルは、伝送媒体を介した通信に使用される7つのネットワークプロトコル層(L1〜L7)を規定する。上位層(L4〜L7)は、エンド・ツー・エンド通信を表現し、下位層(L1〜L3)はローカル通信を表現する。
ネットワーキングアプリケーションアウェア型(アプリケーションが自動的にネットワークを制御する)システムは、L3からL7までの範囲のネットワークプロトコル層(例えば、ハイパーテキスト転送プロトコル(HTTP)およびシンプルメール転送プロトコル(SMTP)などのL7ネットワークプロトコル層、および伝送制御プロトコル(TCP)などのL4ネットワークプロトコル層)を処理し、フィルタリングし、かつ切り換える必要がある。ネットワークプロトコル層の処理に加えて、ネットワーキングアプリケーションアウェア型システムは、ファイアウォール、仮想プライベートネットワーク(VPN)、セキュアソケットレイヤ(SSL)、侵入検知システム(IDS)、インターネットプロトコルセキュリティ(IPSec)、アンチウィルス(AV)およびアンチスパム機能を含むL4〜L7のネットワークプロトコル層を介した、アクセスベースおよびコンテンツベースのセキュリティによって、これらのプロトコルの安全性を同時にワイヤスピードで保証する必要がある。
現代のインターネット社会において、ネットワーク運用の効率と安全性の向上は、依然としてインターネットユーザの究極的な目標である。アクセス制御、トラフィックエンジニアリングおよび侵入検出などの多くのネットワークサービスでは、パケットヘッダの複数のフィールドに基づいてパケットを分別する必要がある。これは、パケット分類と呼ばれる。
インターネットルータは、パケットを分類して、ルーティング、レート制限、ファイアウォールにおけるアクセス制御、仮想帯域幅割当、ポリシ・ルーティング、サービス差別化、負荷分散、トラフィックシェーピング、およびトラフィック課金などの数多くの高度なインターネットサービスを実現する。これらのサービスはルータを必要とし、そのようなルータは、受信パケットを異なるフローに分類した後、この分類に応じて適切な動作を行う。
分類器は、フィルタまたはルールのセットを用いて、これらのフロー、すなわちクラスを指定する。例えば、ファイアウォールにおける各ルールは、発信元アドレスおよび宛先アドレスのセットを指定し、対応する拒否動作または許可動作をそのアドレスセットに関連付ける場合がある。あるいは、このルールは、OSIモデルの第2、第3、第4、および第5層を含む、パケットヘッダのいくつかのフィールドに基づく場合があり、この場合、これらフィールドは、アドレス指定およびプロトコルの情報を含む。
一部の種類の独自開発のハードウェアでは、アクセス制御リスト(ACL)が、ホストまたは第3層装置で利用できるポート番号またはネットワークデーモン名に適用されるルールを参照する。各ルールは、サービスの利用が許可されたホストおよび/またはネットワークのリストを有する。個々のサーバおよびルータはいずれも、ネットワークACLを有することができる。ACLは、両方向のトラフィックを制御するように構成可能である。
本開示の例示的な実施形態は、パケットを処理する方法を提供する。この方法は、パケットヘッダデータによりルックアップ要求を提供するホストと、パケットデータのルールマッチングを提供する探索クラスタとをインタフェース接続するルックアップフロントエンド(LUF)プロセッサによって運用される。パケットのパケットヘッダおよびグループ識別子(GID)を含むルックアップ要求を最初に受信する。そして、パケットヘッダのデータに基づいて少なくとも1つのキーを生成する。GIDを大域定義テーブルと比較し、少なくとも1つのテーブル識別子(TID)を決定する。TIDに基づいて、当該パケットのルールマッチングを行うことが可能な処理クラスタのサブセットを決定する。そして、複数の処理クラスタのうちの1つを利用可能性(availability)に基づいて選択する。その後、キー、およびキーを用いてルールマッチングを開始するTIDを含むキー要求を、選択した処理クラスタに転送する。
別の実施形態では、GIDを大域定義テーブルと比較してパケットヘッダインデックス(PHIDX)を決定し、キーはPHIDXに従って生成する。PHIDXは、パケットヘッダからデータを抽出してキーを生成するためのルールを示すエントリをパケットヘッダテーブル(PHT)に索引付けする。
さらに別の実施形態では、GIDを大域定義テーブルと比較してキーフォーマットテーブルインデックス(KFTIDX)を決定し、KFTIDXは、処理クラスタにおけるキーからフィールドを抽出するための命令を示すエントリをキーフォーマットテーブルに索引付けする。キー要求がKFTIDXを含んでもよい。
さらに別の実施形態では、キー要求ごとにそれぞれ実現される複数のキーをパケットデータから生成し、各キーは、パケットヘッダから抽出した個別のデータをそれぞれ含む。さらに、処理クラスタを、複数の処理クラスタのサブセットのそれぞれにおける保留中要求の数に対する、その処理クラスタにおける保留中要求の数に基づいて選択する。この処理クラスタにおける保留中要求の数は、処理クラスタのサブセットのうちの最少のものであり、「アクセス頻度が最も低い(すいている)」クラスタを示す。これを判定するために、複数の処理クラスタのサブセットのそれぞれの保留中要求数のカウントを維持する。選択したクラスタが利用不可能であることを検出すると、キー要求を再試行待ち行列に転送する。この再試行待ち行列は、選択したクラスタにキー要求を再び転送するために、後にアクセスされるものである。
さらに別の実施形態では、キー要求は、複数のサブツリー要求に分割される。ここで、サブツリー要求は、サブツリー、またはクラスタに格納されたルールのさらなるサブセットに対応する。その後、キー要求は、選択した処理クラスタ(または複数の選択したクラスタ)にサブツリー要求として転送される。
またさらに別の実施形態では、装置は、パケット分類のためのルールのセットを表現する、コンパイルされた、ルールのデータ構造(RCDS)を格納したメモリを備える。この装置は、また、RCDSの増分更新のための1つまたは複数のホストコマンドを受信するホストコマンドインタフェースを備える。さらに、メモリおよびホストコマンドインタフェースに結合されたプロセッサが、受信したパケットを分類するためにRCDSのアクティブな探索を実行する。ここで、RCDSは、受信した1つまたは複数のホストコマンドに基づいて更新され、実行中のアクティブな探索の観点からアトミックに(不可分に)更新される。
上記の事項は、添付図面に示す以下の本発明の例示的な実施形態のさらに詳細な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同一の部品は同一の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
本願に記載の探索プロセッサの例示的な実施形態を採用したネットワーク要素を含む典型的なネットワークトポロジのブロック図である。 ルータにおいて用いられる探索プロセッサの例示的な実施形態を示すブロック図である。 ルータにおいて用いられる探索プロセッサの例示的な実施形態を示すブロック図である。 ルータにおいて用いられる探索プロセッサの例示的な実施形態を示すブロック図である。 ルータアーキテクチャの例示的な実施形態の図である。 探索プロセッサを採用したルータの例示的な実施形態を示すブロック図である。 スイッチバックプレーンを含むルータの別の実施形態のブロック図である。 探索プロセッサを採用したルータの例示的な実施形態を示すブロック図である。 探索プロセッサの例示的な実施形態のブロック図である。 探索プロセッサの例示的な実施形態のブロック図である。 一実施形態のルックアップクラスタコンプレックス(LCC)のブロック図である。 一実施形態のLCCにおける入出力データを示すブロック図である。 1つのパケットヘッダからの複数のルックアップ要求の生成を示すブロック図である。 一実施形態のルックアップエンジン(LUE)および対応するオンチップメモリ(OCM)のブロック図である。 メモリ構造へのコンパイラローディングルールの例示的な実施形態を示すブロック図である。 探索ブロックまたは探索クラスタの例示的な実施形態を示すブロック図である。 パケットにおける所与のキーについてのルールをロードするために用いられるメモリ構造の例示的な実施形態を示すブロック図である。 キーを受信し、メモリ構造からルールのセットをロードするツリーウォークエンジン(TWE)によって採用されたメモリ構造の例示的な実施形態を示す図であって、当該ルールは外部メモリに格納されている図である。 探索プロセッサによって用いた例示的な処理を示すフローチャートである。 バケットポストプロセッサ(BPP)によりルールのセットを用いてキーに対して探索を行う例示的な処理を示すフローチャートである。 図11Aおよび図11Bの位置関係を示す図である。 例示的なLUF入力プロセッサ(LIP)のブロック図の一部である。 例示的なLUF入力プロセッサ(LIP)のブロック図の他部である。 例示的なペイロードヘッダ抽出部(PHE)のブロック図である。 LIPによって選択可能な異なるバイトスワッピングモードを示すパケット図である。 通常キー拡張モードにおいて動作するPHEを示すパケット図である。 LIPの例示的なスケジューラ出力マネージャのブロック図である。 要求およびコマンドを構文解析し、それらを内部リソースにスケジューリングする例示的な手順のデータフローチャートである。 例示的なLUF出力プロセッサ(LOP)のブロック図である。 例示的なLUF応答処理フロントエンド(LOP_FE)のブロック図である。 例示的なルックアップ応答処理バックエンド(LOP_BE)のブロック図である。 例示的なLOP出力プロセッサ(LOP_OP)のブロック図である。 図21Aおよび図21Bの位置関係を示す図である。 本開示の例示的な実施形態を実現する例示的なデータ構造のブロック図の一部である。 本開示の例示的な実施形態を実現する例示的なデータ構造のブロック図の他部である。 内部リソースから受信した応答を順序付けして合体する例示的な手順のフローチャートである。 内部リソースから受信した応答を順序付けして合体する例示的な手順のフローチャートである。 本開示の様々な実施形態が実施され得るコンピュータのブロック図である。
パケット分類は長い間幅広く研究されてきているが、研究者はパケット分類のための新規かつ効率的な解決策を意欲的に探し続けている。その理由は、i)ネットワーク帯域幅の継続的成長、ii)ネットワークアプリケーションの複雑性の増大、およびii)ネットワークシステムの技術革新による。
ネットワーク帯域幅に対する需要の急増は、概してデータトラフィックの増大による。主要サービスプロバイダの報告によれば、およそ6カ月から9カ月ごとにプロバイダのバックボーンネットワーク上の帯域幅が倍増している。そのため、端末装置および基幹装置の両方で、指数関数的に増加するトラフィックを処理するパケット分類の新規な解決策が必要とされる。
ネットワークアプリケーションの複雑性は、ネットワークデバイスにおいて実装されるネットワークアプリケーション数の増大によって増加している。パケット分類は、サービスアウェアルーティング、侵入防止およびトラフィックシェーピングといった様々な種類のアプリケーションに広く使用される。したがって、パケット分類の新規な解決策は、著しい性能低下をもたらすことなく多様な種類のルールセットを処理できるインテリジェンス性を有する必要がある。
加えて、マルチコアプロセッサのような新たな技術により、今までにない計算機能力および高度に集積されたリソースが提供されている。このため、パケット分類の新規な解決策は、高度なハードウェアおよびソフトウェア技術に適合していなければならない。
既存のパケット分類アルゴリズムは、メモリのために時間を犠牲にしている。このトレードオフは常に改善され続けているものの、妥当な量のメモリに要する時間は、今なお概して遅い。
既存のアルゴリズム方式が有する問題のため、ベンダーは、総当たり並列ハードウェアを用いて全てのルールに対してパケットを同時にチェックする、三値連想メモリ(TCAM)を使用する。アルゴリズムによる解決策に対するTCAMの主な利点は、スピードおよび決定性である(TCAMは、全てのデータベースに有効である)。
TCAMは、完全連想型メモリとして機能するハードウェアデバイスである。TCAMのセルは、3つの値、すなわち、0、1、またはドントケア(気にしない)ビットを表す「X」を格納しており、クリーネスター「*」のようなワイルドカードを含むルールをTCAMがマッチングすることを可能にするセルごとのマスクとして動作する。動作において、パケットヘッダ全体をTCAMに提示し、そのパケットがいずれのエントリ(ルール)に一致するかを判定してもよい。しかし、TCAMの複雑性は、多量の電力を消費するにもかかわらず、小規模で柔軟性に欠けた実装であって、比較的遅い実装しか可能にしていない。したがって、特殊なデータ構造に作用する効率的なアルゴリズム的解決策が依然として必要とされる。
現在のアルゴリズム的方法は、数学的解析および/またはソフトウェアシミュレーション(観測に基づく解決法)の段階に留まっている。
提案されている数学的解決策は、優れた時間/空間複雑性を有すると報告されている。しかし、この種の方法は、現実のネットワークデバイスへの実装が認められていない。なぜなら、数学的解決策は、問題を単純化し、かつ/または、明示的な最悪限界を隠し得る大きい定数因子を除外するために、特殊な条件を追加する場合が多いからである。
提案されている観測に基づく解決法は、現実のアプリケーションに対して効率的な解決法を実現するために、ルールにおいて観測される統計的特性を採用する。しかし、これらのアルゴリズム的方法は、一般に、特定のタイプのルールセットのみに有効である。異なるアプリケーションのためのパケット分類ルールは多様な特徴を有するため、観測に基づく方法のうち、異なるタイプのルールセットにおける冗長性を十分に活用して様々な条件下で安定した性能を得ることができる方法は、ほとんどない。
パケット分類は、ポリシデータベース、フロー分類器、または単に分類器ともよばれるパケット分類器を用いて行われる。分類器は、ルールまたはポリシの集合である。受受信したパケットは、一致したパケットに対する動作を決定するルールとマッチングされる。包括的なパケット分類は、パケットを当該パケットのヘッダにおける複数のフィールドに基づいて分類するルータを必要とする。分類器の各ルールは、パケットヘッダの「F」フィールドの基準に従ってパケットが属し得るクラスを指定し、各クラスに識別子(例えば、クラスID)を関連付ける。例えば、フロー分類器における各ルールはフロー仕様であり、フロー仕様において各フローは別のクラスに存在する。識別子は、各ルールに対応した動作を一意に指定する。各ルールは、「F」フィールドを有する。ルールRの第i番目のフィールドは、R[i]と呼ばれ、パケットヘッダの第i番目のフィールドの正規表現である。全てのiについて、パケットPのヘッダの第i番目のフィールドが正規表現R[i]を満たす場合、パケットPは特定のルールRに一致する(マッチングする)。
ルールによって指定されるクラスは、重複してもよい。例えば、1つのパケットがいくつかのルールに一致する場合がある。この場合、いくつかのルールが重複すると、これらのルールが分類器に出現する順序により、ルールの相対的優先度が決まる。換言すると、複数のルールに一致するパケットは、これらのルールのうち、分類器において最初に出現するルールの識別子(クラスID)によって識別されるクラスに属する。
パケット分類器は、分類器テーブルのルールを解析および類別してもよく、さらに、受信したパケットを分類器テーブルのルールとマッチングするために使用される決定木を生成してもよい。決定木は、決定のツリー状グラフまたはモデルおよびそれらの考えられる結果(偶発イベント結果、リソースコスト、および実用性を含む結果)を用いる決定支援ツールである。決定木は、目標に最も到達しやすい戦略の特定に役立てるために、オペレーションズ・リサーチ、とりわけ、決定解析において一般的に用いられる。決定木の別の用途としては、条件付き確率を計算するための記述手段がある。決定木を使用して、受信したパケットと分類器テーブルのルールとのマッチングを選択させ、受信したパケットの処理方法を決定してもよい。
図1は、探索プロセッサの例示的な実施形態を用いたネットワーク要素を含む典型的なネットワークトポロジ100のブロックである。ネットワークトポロジは、複数のコアルータ(基幹ルータ)104a〜hを有するインターネットコア102を含む。複数のコアルータ104a〜hのそれぞれは、複数のコアルータ104a〜hのうちの少なくとも11つの他のコアルータに接続される。インターネットコア102の境界上のコアルータ104a〜h(すなわち、コアルータ104b〜eおよび104h)は、少なくとも1つのエッジルータ(境界上ルータ)106a〜fに接続される。各エッジルータ106a〜fは、少なくとも1つのアクセスルータ108a〜eに接続される。
コアルータ104a〜hは、インターネットコア102またはインターネットバックボーンにおいて動作する。コアルータ104a〜hは、インターネットコア102の複数の電気通信インタフェースをサポートし、さらに、複数の電気通信プロトコルそれぞれの最高速度でパケットを転送する。
エッジルータ106a〜fは、インターネットコア102の境界上に配置される。エッジルータ106a〜fは、インターネットコア102の外部のアクセスルータ108a〜eと、インターネットコア102の内部のコアルータ104a〜hとをブリッジする。エッジルータ106a〜fは、ブリッジプロトコルを用いてアクセスルータ108a〜eからコアルータ104a〜hへの方向、およびその逆方向にパケットを転送する。
アクセスルータ108a〜eは、エンドユーザ(ホームユーザやオフィスなど)が使用するルータであり、エッジルータ106a〜fのうち1つと接続するルータであってもよく、当該エッジルータは、コアルータ104a〜hのうち1つに接続することによりインターネットコア102に接続する。このようにして、エッジルータ106a〜fは、エッジルータ106a〜fおよび相互接続されたコアルータ104a〜hを介して任意の他のエッジルータ106aに接続できる。
本明細書に記載の探索プロセッサは、コアルータ104a〜h、エッジルータ106a〜f、およびアクセスルータ108a〜eのうちいずれに存在してもよい。これらルータのそれぞれにおいて、本明細書に記載の探索プロセッサは、ルールのセットに基づいてインターネットプロトコル(IP)パケットを解析し、このIPパケットを適切なネットワーク経路に沿って転送する。
図2Aは、エッジルータ106において用いた探索プロセッサ202の例示的な実施形態200を示すブロック図である。プロバイダエッジルータのようなエッジルータ106は、探索プロセッサ202、第1のホストプロセッサ204、および第2のホストプロセッサ214を含む。第1のホストプロセッサ204は、入力ホストプロセッサである。第1のホストプロセッサ204は、入力パケット206をネットワークから受信する。第1のホストプロセッサ204は、入力パケット206からのパケットヘッダ(すなわちフィールド)を含むルックアップ要求をインタラーケン(Interlaken)インタフェース208を用いて探索プロセッサ202に転送する。次に、探索プロセッサ202は、複数のルールを採用する複数のルール処理エンジンを用いてパケットヘッダを処理し、ネットワーク上で入力パケット206を転送する経路を決定する。パケットヘッダを伴うルックアップ要求を処理した後、探索プロセッサ202は、経路の情報を第1のホストプロセッサ204に転送する。第1のホストプロセッサ204は、処理された入力パケット210をネットワーク内の別のネットワーク要素に転送する。
同様に、第2のホストプロセッサ214は、出力ホストプロセッサである。第2のホストプロセッサ214は、ネットワーク216から送信用の出力パケットを受信する。第2のホストプロセッサ214は、パケットヘッダ(すなわちフィールド)を含むルックアップ要求を出力パケット216から探索プロセッサ202に第2のインタラーケンインタフェース218を介して転送する。次に、探索プロセッサ202は、複数のルールを採用する複数のルール処理エンジンを用いてパケットヘッダを処理し、ネットワーク上で当該パケットを転送する経路を決定する。第2のホストプロセッサ214は、処理された出力パケット220をネットワーク内の別のネットワーク要素に転送する。
図2Bは、探索プロセッサ202を用いるように構成されたエッジルータ106の別の例示的な実施形態220を示すブロック図である。本実施形態において、エッジルータ106は、複数の探索プロセッサ202、例えば、第1の探索プロセッサ202aおよび第2の探索プロセッサ202bを含む。複数の探索プロセッサ202a〜bは、複数のインタラーケンインタフェース226a〜bをそれぞれ用いてパケットプロセッサ228に結合される。複数の探索プロセッサ202a〜bは、1つのインタラーケンおよびインタフェースを介してパケットプロセッサ228に結合されてもよい。エッジルータ106は、前処理されたパケット222のパケットヘッダ(すなわちフィールド)を伴うルックアップ要求をパケットプロセッサ228にて受信する。探索プロセッサ202a〜bのうちの一方は、ルールのセットとパケットヘッダ内のデータとに基づいて、前処理されたパケット222の適切な転送先をパケットヘッダから探索し、パケットプロセッサ228に対してルックアップ要求に応答する。次に、パケットプロセッサ228は、探索プロセッサ202a〜bによって実行されたルックアップ要求に基づいて、後処理されたパケット224をネットワークに送る。
図2Cは、探索プロセッサ202を用いたアクセスルータ246の例示的な実施形態240を示すブロック図である。アクセスルータ246は、入力パケットプロセッサ242において入力パケット250を受信する。次に、入力パケットプロセッサ242は、入力パケット250のパケットヘッダを伴うルックアップ要求を探索プロセッサ202に転送する。探索プロセッサ202は、ルックアップ要求のパケットヘッダに基づいて入力パケット250の転送経路を決定し、インタラーケンインタフェース252を介して出力パケットプロセッサ244に対してルックアップ要求に応答する。次に、出力パケットプロセッサ244は、転送されたパケット248をネットワークに出力する。
図3Aは、ルータアーキテクチャの例示的な実施形態300の図である。ルータアーキテクチャは、プロセッサ308およびメモリ304を含むプロセッサカード303に結合されたスイッチバックプレーン302を含む。スイッチバックプレーン302は、複数のラインカード306a〜hにさらに結合される。各ラインカード306a〜hは、本明細書に記載の探索プロセッサを含む。
図3Bは、探索プロセッサ202を用いたルータの例示的な実施形態320を示すブロック図である。ルータは、ラインカード306a〜bに結合されたスイッチバックプレーン302と、プロセッサカード303とを含む。プロセッサカード303は、プロセッサ308と、プロセッサカード303のメモリ304に格納されるルーティングテーブル328とを含む。各ラインカード306a〜bは、それぞれ、ローカルバッファメモリ322a〜bと、転送テーブル324a〜bと、媒体アクセス制御(MAC)層326a〜bとを含む。探索プロセッサ202は、ラインカード306a〜bの転送テーブル324a〜b内に存在する。
一例として、ラインカード306aにより、MAC層326aにおいてパケットを受信する。MAC層326aは、パケットを転送テーブル324aに送る。次に、パケットおよび適切な転送テーブル情報をローカルバッファメモリ322aに格納する。次に、プロセッサカード303は、そのルーティングテーブル328にアクセスし、受信したパケットの転送先を決定する。この決定に基づいて、ルータは、適切なラインカード306bを選択し、適切なラインカードのローカルバッファメモリ322bにパケットおよび転送情報を格納し、パケットをネットワークに転送する。
図3Cは、スイッチバックプレーン302を含むルータの別の実施形態340を示すブロック図である。スイッチバックプレーン302は、プロセッサカード303、ラインカード342b〜h、およびサービスカード342aに結合される。プロセッサカード303は、メモリ304およびプロセッサ308を含む。サービスカード342aは、ラインカード342a〜hの一種である。さらに、本明細書に記載の探索プロセッサは、サービスカード342a上に存在してもよい。
図3Dは、スイッチバックプレーン302を備えたルータの例示的な実施形態360を示すブロック図である。スイッチバックプレーン302は、プロセッサカード303および、サービスカード342aまたはラインカード342b〜hに結合される。ラインカード342a〜bは、サービスカード342aまたはラインカード342b〜hのいずれかであってもよい。ラインカード342a〜bは、転送テーブル・対応ポリシモジュール344a〜bおよびMAC層326a〜bを含む。探索プロセッサ202は、ラインカード342a〜bに含まれる。ラインカード342aは、ネットワークからMAC層326aを介して転送テーブル・ポリシモジュール344aにおいてパケットを受信する。探索プロセッサ202は、プロセッサカード303のルーティングテーブル328に従い、転送テーブル・ポリシモジュール344aに応じてパケットを処理し、ネットワーク内に転送されることになる適切なラインカード342bにパケットを転送する。
図4Aは、探索プロセッサ202の例示的な実施形態400でのブロック図ある。探索プロセッサ202は、シリアライザ/デシリアライザ(SerDes)インタフェース402に結合される。一実施形態において、SerDesインタフェース402は、少なくとも最大10Gb/秒のデータ転送速度が可能な8個の伝送レーンを含む。探索プロセッサ202は、SerDesインタフェース402に結合された2組の4レーンインタフェース404a〜bを含む。4レーンインタフェース404a〜bは、それぞれ、第1のインタラーケンインタフェース406aおよび第2のインタラーケンインタフェース406bに結合される。そして、インタラーケンインタフェース406a〜bは、第1のルックアップフロントエンド(LUF)408aおよび第2のルックアップフロントエンド(LUF)408bに結合される。LUF408a〜bは、クロスバー412(インテリジェントファブリックまたは「X−bar」とも示す)に結合される。
クロスバー412は、第1のスーパークラスタ410aおよび第2のスーパークラスタ410bに結合される。各スーパークラスタ410a〜b内には複数の探索ブロック412a〜bが存在する。各探索ブロック412、すなわち探索クラスタは、受信パケットからキーを受け取り、当該キーを処理するルールのセットを判定およびロードし、これらのルールを用いて実行した探索の結果を出力する。クロスバー412およびスーパークラスタ410a〜bは、ルックアップクラスタコンプレックス(ルックアップクラスタの複合部)(LCC)414の一部である。
図4Bは、本明細書に記載の探索プロセッサの例示的な実施形態420のブロック図である。探索プロセッサは、LUF入力プロセッサ(LIP)424として示すLUF408およびLUF出力プロセッサ(LOP)440を含む。このプロセッサは、LCC414をさらに含み、LCC414は、スーパークラスタ410a〜bを含む。LIP424は、インタラーケン入力422aおよびインタラーケン入力422bを受信する。LIP424は、スケジューラ428a〜b、パケットヘッダテーブル430a〜b、ルールデータベースロケーションテーブル432a〜bおよびグループ定義テーブル426を含む。LIP424は、LCC414に対して、テーブル、CSRおよび要求434a〜bを生成する。LCC414は、スーパークラスタ410a〜bおよびその中の探索クラスタ(図示せず)に基づき応答436a〜bを生成する。そして、LOP440は、応答を受信し、インタラーケン出力442aおよびインタラーケン出力442bを介してこれらを出力する。
本明細書に記載のプロセッサは、あるパケットに一致する1つまたは複数のルール(例えば、マッチングルール)をロードする。一般に、パケットは、ヘッダ、ペイロード、およびトレーラといった部分に分けることができる。パケットのヘッダ(すなわちパケットヘッダ)は、例えば、フィールドにさらに分けることができる。そのため、プロセッサは、パケットの1つまたは複数の部分(すなわちフィールド)に一致する1つまたは複数のルールをさらに検出してもよい。
プロセッサは、パケットまたはパケットの一部に一致する1つまたは複数のルールを発見する「ルックアップ要求」を実行できる。ルックアップ要求により、まず、1つまたは複数のマッチングルールの発見が誘導される。
本明細書に記載のプロセッサの観点によると、ルックアップ要求の実行は、1)ホストプロセッサからルックアップ要求を受信することから始まる。ルックアップ要求は、パケットヘッダおよびグループ識別子(GID)を含む。
2)GIDは、大域定義/説明テーブル(GDT)のエントリを索引付けする。各GDTエントリは、(a)n個のテーブル識別子(TID)、(b)パケットヘッダインデックス(PHIDX)、および(c)キーフォーマットテーブルインデックス(KFTIDX)を含む。
3)各TIDは、ツリーロケーションテーブル(TLT)のエントリを索引付けする。各TLTエントリは、いずれのルックアップエンジンまたはプロセッサコアが上記1つまたは複数のマッチングルールを探しているのかを識別する。このように、各TIDは、いずれのルックアップエンジンまたはプロセッサコアが1つまたは複数のマッチングルールを探しているのかと、この特定の1つまたは複数のマッチングルールが格納されている場所との両方を指定する。
4)各TIDはまた、ツリーアクセステーブル(TAT)のエントリを索引付けする。各TATエントリは、ルールのテーブルまたはツリーと呼ばれるルール(またはルールを指すポインタ)の集合のメモリにおける開始アドレス(例えば、ルートノード)を提供する。ルールのテーブル、ルールのツリー、テーブル、またはツリーという用語は、本願を通して同義で用いられる。全体として、TIDはTATを識別し、TATは、1つまたは複数のマッチングルールを探す、ルールの集合またはセットを識別する。
5)GDTエントリのPHIDXは、パケットヘッダテーブル(PHT)のエントリを索引付けする。PHTの各エントリは、パケットヘッダからn個のキーを抽出する方法をプロセッサに指示する。
6)GDTエントリのKFTIDXは、キーフォーマットテーブル(KFT)のエントリを索引付けする。KFTの各エントリは、パケットヘッダから抽出したn個のキーのそれぞれから1つまたは複数のフィールド(すなわち、パケットヘッダの部分)を抽出するための命令を提供する。
7)プロセッサは、TIDのそれぞれと共に、パケットから抽出した各フィールドを用いて上記ルールのサブセットを探す。各サブセットは、抽出したフィールドのそれぞれに一致する可能性のあるルールを含む。
8)次に、プロセッサは、各サブセットの各ルールを、抽出したフィールドと比較する。プロセッサは、応答またはルックアップ応答に一致するルールを提供する。
ルックアップ要求およびその列挙された段階についての上記説明は、ルックアップ要求の概念を提示するためのものである。これらの概念は、多くの方法で実現できる。例えば、本発明の例示的な実施形態によると、これらの概念は探索プロセッサによって実現できる。
上述のように、探索プロセッサは、1つのパケットに対してルックアップ要求を処理する。ルックアップ要求の処理にあたり、プロセッサは、1つまたは複数のルールが適用されるパケットからヘッダまたはフィールドを抽出してもよい。ヘッダまたはフィールドをキーと称する場合がある。
探索プロセッサは、ルールの少なくとも1つのツリーを格納する。一実施形態において、ルールのツリーは、所与のキーについてのルールのセットを絞り込むためにプロセッサが使用するメモリ構造であり、ルールはキーの値のテストである。ツリーはルートノード、すなわち開始アドレスを有する。探索プロセッサは、ツリーウォークエンジン(TWE)を用いて特定のキーについてツリーをトラバースする。最終的に、TWEはツリーのメモリアドレスを指すポインタに達する。このポインタは、ルールのバケットを指してもよく、あるいは直接的にメモリのルールを指すポインタであってもよい。
ルールのバケットは、ルールを指すポインタのセットである。ポインタがルールのバケットを指す場合、バケットウォークエンジン(BWE)は、キーおよびバケットに基づいて、オンチップメモリのようなメモリ内のルールを指すポインタを決定する。メモリ内のルールのグループは、チャンクと呼ばれる。チャンクは、連続的にアドレス指定されたルール、または別の方式でグループ化されたルールであり得る。ポインタが直接的にメモリのルールを指す場合、ポインタは、チャンクを直接指してもよい。
プロセッサがメモリからルールのチャンクをロードすると、プロセッサは、キーおよびルールのチャンクをルールマッチエンジン(RME)に送る。ルールマッチエンジンは、キーがチャンク内のルールに一致するか否かを判定する。次に、RMEおよび探索プロセッサが、選択されたルールおよび一致結果でルックアップ要求に応答してもよい。
図4Cは、2つのスーパークラスタ410a〜bを含むルックアップクラスタコンプレックス(LCC)414のさらに詳細なブロック図である。各スーパークラスタは、複数の(例えば、8個の)クラスタを含み、各クラスタ(例えば、クラスタ412a)は、LUE452a〜h、453a〜hおよび関連付けられたオンチップメモリ454a〜h、455a〜h、ならびにクロスバーデバイス412を含む。例示的な探索プロセッサは、パケットデータを処理するためにこのようなスーパークラスタ410a〜bを2つ以上有してもよい。
図4Dは、一実施形態のLCC414における入出力データを示すブロック図である。LCC414は、ルックアップ要求または他の通信において、以下の情報を受信するように構成されてもよい。
1)Least Full(最も空きのある)クラスタマスク(LFTWCLMSK)は、所与の探索に対して1つのスーパークラスタにつき、いずれのクラスタを使用可能にするかを選択するために使用されるビットマスクである。
2)キー・クラスタ・マスク(KCLMSK)は、LCC中のいずれのクラスタがキー要求データを受け付けるべきかを示す。KCLMSKは、探索の開始時には関与しない場合があるクラスタが処理の最終部分を実行することを可能にする。スーパークラスタ中のクロスバーセグメントにより、1つのクラスタから別のクラスタへ探索を移動させることが可能となる。KCLMSKは、潜在的に関与する可能性のある全てのクラスタに通知を行う。
3)ツリーID(TID)およびキーフォーマットインデックス(KFTIDX)は、上記マスクと共に、実行(ルールのセットを表すツリーまたはRCDSのウォーキング)を開始する場所であるツリーのルートを選択する。
4)キーID(KID)は、LUFが、実行中のインベントリおよび要求に対する一致の返答を追跡できるように維持される。
5)キーは、ツリーまたはRCDSを探索するためにヘッダタプルから抽出されるデータである。
探索プロセッサは、1つのパケットヘッダから1〜4回の探索を開始する方法を提供する。これらの要求は、それぞれ、ヘッダ中の完全に異なりかつ完全に独立したフィールドセットを探索してもよい。これらの探索は、同一のパケットヘッダに関連してはいるが、あらゆる意味において独立した探索である。探索構造(探索ファブリック)(LCC)は、これらを完全に異なる探索として扱い、最初の要求の拡張についての知識を有さない。(入出力されるサブキーIDの受け渡しを除く)。
さらに、LCC414は、ルックアップ要求または他の通信に対する応答として、以下の情報を出力してもよい。
1) KIDは、返ってきたキーIDである。
2) RuleDataは、ホストに返される応答の一部である。
3) RulePriorityは、LUFが複数のクラスタ返答から1つの最良の応答を選択することを可能にするサブツリー(すなわちサブRCDS)応答に関連付けられた尺度である。MinRuleもまた、ホストに返される応答の一部である。
共通のパケットに対応する複数の応答メッセージが、ホストに返される際、共通のIDが共有されてもよく、合体されれば、1クロックにつき複数の応答を生成して所望のスループットを得る。応答は、合体されなくてもよいが、応答を合体した場合、インタフェース帯域幅をより効率的に利用することができる。例示的な実施形態において、1〜4個の応答を1個の応答メッセージに合体し、発信元の探索要求の数に一致させてもよい。
図5は、1つのルックアップ要求550からの複数のキー要求生成を示すブロック図である。パケットヘッダ552を含むルックアップ要求550が、命令インタフェースを通ってLUF408に到達する。グループID(GID)554のフィールドは、様々な内部LUF408テーブルを索引付けし、それぞれ別個のキー(「サブキー」ともいう)を有する最大4個の異なるキー要求560a〜d(4つの独立した探索を開始するのに使用され得る)をLUF408が生成するのを可能にする。例示的な実施形態において、キー要求560aのキーは最大476ビットのビット幅であってもよく、一方、パケットヘッダ552は、最大512ビットのビット幅であってもよい。キーは、ニブルの粒度で再構築でき、また、カスタマーアプリケーション層によって再び順序付けることができる。例示的な実施形態において、探索プロセッサは、最大16通りのキー再構築法を予め格納できる。
LUF408のサブキー拡張インデックスモジュールは、それぞれのキー要求560a〜dについてパケットヘッダ552をどのように複数のサブキーに分割するかを決定する。パケットヘッダ552を複数のサブキーに拡張した後、LUF408のサブツリー拡張・スケジューリングモジュールは、キー要求560a〜dのそれぞれを探索プロセッサの適切な部分に方向付ける。
サブキー拡張の下流において、LUF408のスケジューラは、例えば、1つのサブキーにつき複数のサブRCDSウォークを実行するクラスタを選択する。サブキーのそれぞれは、最終的にホストに返され内部では使用されない、共通のXID556を共有する個別の探索であると考えられる。このため、LUF408は、1つの要求に対して4個のサブキーを拡張および追跡する。
図6は、ルックアップエンジン(LUE)650のブロック図であり、一実施形態においてオンチップメモリ(OCM)690に接続されている。LUE650は、図4A〜図4Dを参照して上記で説明した探索プロセッサおよびLCC構成において実現され得る。一実施形態によると、ルール処理のために、LUE650は、1つまたは複数のツリーウォークエンジン(TWE)660のコンプレックス(複合部)、1つまたは複数のバケットウォークエンジン(BWE)670のコンプレックス、およびルールマッチエンジン(RME)680a〜cを含む。ルール処理が外部メモリ(後述)に拡張される別の実施形態において、LUE650は、追加のRMEを有するバケットポストプロセッサ(BPP)を含んでもよい。LUE650に関連付けられたOCM690は、LUE650によるルールマッチングのためのルールを格納する。
例示的な探索プロセッサの動作において、ホストインタフェース(図4A)は、ホストからルックアップ要求を受信する。LUF(例えば、図4AのLUF408a)は、ルックアップ要求を処理して、それぞれがキーを有する(図5)1つまたは複数のキー要求にする。LUFは、スーパークラスタに対する要求をスケジュールし、ルックアップ要求を処理するクラスタのセットを選択する。
図6を参照して、選択されたクラスタのLUE650構成要素は、ルックアップ要求を処理する。ここで、TWE660は、キー(キー要求に含まれる)を用いて、当該キーに一致し得るルールのセットを表すツリーをウォークする。TWE660が当該ツリーのリーフに達すると、TWE660は、ルールのバケット(またはバケット)と呼ばれるルールのサブセットをBWE670に渡す。ツリーという用語およびルールのコンパイルされたデータ構造(RCDS)という用語は、本明細書において同義で用いられる。BWE670は、ルールのバケットを処理し、次に、RME680a〜cに結び付ける。RME680a〜cは、キーを、TWE660が識別したルールと比較する。探索プロセッサは、「一致あり」または「一致なし」を応答としてホストに提供する。
LUE650に対するルックアップ要求の受信の前に、LUF(例えば、図4AのLUF408a)は、ホストプロセッサからルックアップ要求を受信する。このルックアップ要求は、パケットヘッダおよびグループ識別子(GID)を含む。GIDは、大域定義/説明テーブル(GDT)のエントリを索引付けする。各GDTエントリは、(a)n個のテーブル識別子(TID)、(b)パケットヘッダインデックス(PHIDX)、および(c)キーフォーマットテーブルインデックス(KFTIDX)を含む。そして、各TIDは、ツリーロケーションテーブル(TLT)にエントリを索引付けする。各TLTエントリは、いずれのルックアップエンジンまたはプロセッサコアが1つまたは複数のマッチングルールを探しているのかを識別する。このように、各TIDは、いずれのルックアップエンジンまたはプロセッサコアが1つまたは複数のマッチングルールを探しているのかと、その特定の1つまたは複数のマッチングルールがどこに格納されているのかの両方を指定する。
各TIDはまた、LUE650におけるツリーアクセステーブル(TAT)665のエントリを索引付けする。(例えば、メモリに格納された)LUE上には、ルールの2つ以上の集合またはセットが存在し得るため、TIDは、これらのうちどれにおいて1つまたは複数のマッチングルールを探すべきかを識別する。各TAT665エントリは、ルールのテーブルまたはツリーと呼ばれる、ルール(またはルールを指すポインタ)の集合のメモリにおける開始アドレス(例えば、ルートノード)を提供する。(ルールのテーブル、ルールのツリー、テーブル、またはツリーという用語は、本願を通して同義で用いられる。)よって、TIDは、TAT665を識別し、TAT665は、1つまたは複数のマッチングルールを探すべきルールの集合またはセットを識別する。
GDTエントリのPHIDXは、パケットヘッダテーブル(PHT)のエントリを索引付けする。PHTの各エントリは、いかにパケットヘッダからn個のキーを抽出するかをプロセッサに命令する。GDTエントリのKFTIDXは、キーフォーマットテーブル(KFT)のエントリを索引付けする。KFTの各エントリは、パケットヘッダから抽出したn個のキーのそれぞれから1つまたは複数のフィールド(すなわち、パケットヘッダの部分)を抽出するための命令を提供する。例えば、KFTのエントリ(またはキーフォーマットタイプ)は、100ビットのキーのうちどのビットがIPパケットヘッダのソースIPアドレスに対応するかを指定する。
LUFは、図5の例に示すように、ルックアップ要求から1つまたは複数のキー要求をアセンブルし、キー要求をLUE650に転送する。
動作中、LUE650は、LUF(図4AのLUF408aなど)からキー要求(KRQ)を受信する。KRQは、キー(KEYDATA)、キーフォーマットテーブルインデックス(KFTIDX)、およびテーブル識別子(TID)を含み、図5を参照して上記で説明したキー要求560a〜dによって示されるような、ルックアップに関連付けられた付加データを含み得る。
キーは、KFTから提供された命令に従って構文解析され(、かつKFTIDXによって索引付けられ)る。次に、TWE660は、構文解析されたキーを用いて、構文解析されたキーに一致し得るルールのセットを表すツリーをウォークする。TWE660によってウォークされたツリーは、ノードおよびリーフを含む。TWE660は、当該ツリーのルートノードにおいて上記ウォークを開始する。ルートノードの位置は、TAT665によって提供され(かつTIDによって索引付けされ)る。TWE660は、リーフに到達するまで上記ツリーをウォークする。ツリーの各リーフは、ルールのバケット(または、単にバケット)と呼ばれるルールのサブセットを表す。リーフに到達すると、TWE660は、対応するバケットを、処理のためにBWE670に渡す。
BWE670は、1つまたは複数のルールを含み得るバケットをフェッチする。便宜的な実施形態において、このバケットは、メモリに格納されたルールへの1つまたは複数のポインタ(またはアドレス)を含む。ルールは、オンチップメモリ(OCM)に格納されてもよく、その場合、BWE670は、ルールをOCMからフェッチし、そのルールをRME(ローカルなRME)に方向付ける。OCMバンクスロッタ(OBS)695は、OCM690に対する要求のためのスケジューリングを実現し、これにより、関連付けられたアクセスポートp0〜p3が、複数のTWE660、BWE670およびRME680a〜cによって占有されかつ共有されることを保証する。
ルールは、LUE650(およびLUEを含む探索プロセッサ)の外部に位置するメモリに格納してもよい。この場合、BWE670は、後述する「ルール拡張」と呼ばれる手順で、外部メモリからルールをフェッチし、そのルールをバケットポストプロセッサ(およびその関連付けられたRME)に方向付ける。
図6に戻り、KFTIDXはまた、ルールフォーマットテーブル(RFT)667のエントリを索引付けする。RFT667の各エントリは、フェッチしたルールのビットを構文解析するための命令を提供し、ルールから1つまたは複数のフィールドを抽出する。ルールは、RFT667が提供する命令に従って構文解析され(かつKFTIDXによって索引付けされ)る。次に、RME680a〜cは、構文解析されたルールを構文解析されたキーと比較して一致を検出する。RMEは、サブツリー応答(STRSP)と呼ばれる応答において、「一致あり」または「一致なし」をLUFに提供する。
一実施形態によると、各スーパークラスタは、配布されたオンチップメモリ(OCM)および「n」個のHW-補助スレッドエンジンの「m」個のプールを含む。ここで、「n」は、各スレッド繰返しの待ち時間よって決まる(n=10サイクル)。各クラスタの性能を最大限に活用するために、最小スレッド繰返し待ち時間=「n」サイクルで、かつ各HWスレッドが1つのサイクルOCMアクセスを必要とする場合、「n」個のスレッドエンジンは、シングルポート型SRAMの使用の時分割多重化(TDM)を行うことができる。これにより、例えば、サイクルごとの完全パイプライン型OCMアクセスが可能となる。
例示的な実施形態において、各クラスタのLUEは、10個のツリーウォークエンジン(TWE)、10個のバケットウォークエンジン(BWE)および3個のルールマッチエンジン(RME)含んでもよい。これらは、受信ホストルックアップ/キー要求を処理するために使用される。各TWE/BWE/RMEエンジンは、各キー要求が処理される際の状態を記録する、各自のHWコンテキスト状態(またはHWスレッド)を含む。各クラスタのLUEにおいて、10サイクルであるTWE最小スレッド繰返し待ち時間により、最大10個のアクティブなTWEスレッドがOCMシングルポート型SRAMのTDM(時分割多重化)を、干渉なしに行うことが可能となる(すなわち、OCMは、サイクルごとの完全パイプライン型アクセスである)。
図6を参照して、LUE650のより詳細な例示的動作において、キー要求(KRQ)バスを介してLUFから新たなホスト要求およびキー要求が受信される。各LUE650は、最大16個の未処理KRQ要求(キー要求またはホスト要求のいずれか)を受信するように構成されてもよい。ホスト要求(CSR/テーブル/OCMについてのホストR/Wアクセス)は、ホスト要求(HRF)FIFOを入力し、ホスト書込データが共有書込データバッファ(WDB)に書き込まれる。ホスト要求(R/W)は、各LUE650クラスタに対して「順番通りに」処理されてもよい。ホスト応答がHRQ/HRD FIFOに返され、ホスト応答はそこで中央リソースブロック(CRB)を経由したSTRSPバスを介した転送を待ち、最終的に、インタラーケンパケットを介してホストに返される。
新たなキー要求がキー要求FIFO(KRF)を入力し、これら要求のキーデータが共有書込データバッファ(WDB)に書き込まれる。移送されたツリーウォーク要求(TWMIG)は、XBR412バスを介して、発信元LUE650クラスタから宛先LUEクラスタに転送される。新たなTWMIGがTMQ/TMDにエンキューされ、処理のために保留中TWE660を待つ。
新たなキー要求(KRF)および移送されたツリー要求(TMQ)は、ツリーID(TID)を用いてTIC/TAT665アクセスの調停を行う。TIC/TAT665構造は、TWE660のうちの割り当てられたTWE660へのサブツリーウォークの際に用いられるツリーアクセステーブル情報を含む。新たなキー要求の場合、ソフトウェアによってロードされたルールフォーマットテーブル情報を取得するためにRIC/RFT667にもアクセスする。ツリー移送要求はRIC/RFTテーブルを再びフェッチしなくてもよいが、その代わり、発信元クラスタからの移送要求自体がRIC/RFT情報を保持してもよい。また、ツリー移送要求についてのキーデータは、ツリー移送データ(TMD)に格納してもよい。
TAT665および/またはRFT667情報がフェッチされると、新たなキー要求が(n個のうちの)1つのTWE660に割り当てられる。(HW並行処理を実現する)新たなキー要求探索を促進するため、キー要求は、(ソフトウェア動作により)最大8個の固有のサブツリーウォークに分割することができ、各サブツリーウォークスレッドは、TWE660の個々に割り当てられる。TW移送要求は、常に、ただ1つのTWEに割り当てられてもよい。
TWEのサブツリーウォークがリーフノードを検出すると、処理のための制御がバケットウォークエンジンBWE670のプールに転送される。BWE670は、リーフノードからのバケット情報記述子を用いてバケットエントリをフェッチする。次に、バケットエントリ(BE)は、ルールウォークエンジン(RWE)680a〜cにより処理される。RWE680a〜cは、ルールチャンクを指すポインタ(RulChkPtr)を含むバケットエントリ(BE)を処理する。RWE680a〜cは、ルールデータをフェッチし、RME680a〜cの保留中プールに引き渡す。RME680a〜cは、フェッチしたOCMルールチャンクデータを、対応するルールフォーマットデータ(RFT667からのデータ)と共に使用し、各バケットエントリ(BE)によって指定されたルールのチャンクを処理する。RWE680a〜cは、バケット全体内のすべてのバケットエントリ(BE)についての各ルールチャンクの部分RME一致結果を総計する。一致あり/一致なし結果が取得されると、ルックアップ応答(LURSP)がLRQ/LRDに戻され、ルックアップ応答(LURSP)は、STRSPバスを介してルックアップフロントエンド(LUF)に戻される。
ルールマッチング動作中の任意の時点で、BWE670は、遠隔バケットエントリ(BE)要求を作成してもよく、あるいは、RWE680a〜cは、遠隔出力待ち行列(ROQ)を介して別のクラスタに対して遠隔ルールチャンク要求を作成してもよい。OCMバンク選択(OBS)695のアービタは、全てのツリーバケットおよびルールデータ構造を収容する共通OCMに対する全てのアクセスを担当する。遠隔クラスタは、遠隔入力待ち行列(RIQ)にエンキューされたXBR412を介して遠隔OCM要求を行うことにより別のクラスタのOCMにアクセスしてもよい。TWEプール、BWEプール、RIQおよびHRFはすべて、共通OCM内に要求を作成することができる。共通OCMは、最適な全体的な探索性能を実現するためにOCM総待ち時間を最小化し、OCM帯域幅(バンクコンフリクト回避)を最大化する複雑な動的アービトレレイション方式を有する。
上述の通り、ルールは、オンチップメモリ(OCM)に存在してもよい。この場合、BWE670によって連結されたRME680a〜cは、BWE670と同様に、LUE650の一部をなす。このため、BWE670は「ローカルな」RME680a〜cを連結するといえる。ルールはまた、プロセッサの外部のメモリ、すなわち、オフチップに存在してもよい。この場合、外部メモリに拡張したルール処理、あるいは「ルール拡張」とも呼ぶ場合があるが、BWE670は、そのローカルなRME680a〜cを連結しない。代わりに、BWE670は、「チャンク」と呼ばれるルールのバケットの部分を読み出す要求メッセージをメモリコントローラに送る。BWE670はまた、「側波帯」メッセージをBPPに送り、(所与のキーに関連付けられた)チャンクが外部メモリから送られることを期待するようBPPに通知する。
BPPは、外部メモリから受信したルールのチャンクの処理を開始する。この処理の一部として、BPPは、一致を検出した場合、ルックアップ応答と呼ばれる(サブツリー応答とも呼ばれる)応答をLUFに送る。BPPはまた、LUEにメッセージを送り、BPPがチャンクの処理を完了し、LUEが別の要求に移行することができるようになった旨をLUEに通知する。
BPPが一致を検出せず、かつBPPがチャンクの処理を完了した場合、BPPは、BPPが処理を完了したことを通知し、処理すべきさらなるチャンクをBPPに送るようにLUEにメッセージを送る。次に、LUEは、MWAおよびMBCを通じて、ルールのバケットの次のチャンクをBPPなどに送るための「側波帯」メッセージを送る。
ルールのバケットの最後のチャンクの場合、LUE650は、「側波帯」メッセージをBPPに送り、BPPによって処理されるべきチャンクが最後のチャンクであることを、BPPに通知する。LUEはバケット全体のサイズを把握しているので、LUEはチャンクが最後のチャンクであることが分かる。最後のチャンクが与えられると、BPPが一致を検出しなかった場合、BPPは、LUFに「一致なし」応答を送り、BPPが当該バケットの処理を完了したことをLUFに通知する。次に、LUE650は、コンテキスト(すなわち、完了した作業(ワーク)の詳細)を開放し、別の要求に移る。
さらなる実施形態において、複数のクラスタは、ルールがコンパイルされた同一のデータ構造(RCDS)またはサブRCDSを含むように構成されてもよい。このような構成において、LUFは、アクセス頻度が最も低いクラスタを探索することを選択することにより、作業の負荷分散を行ってもよい。
図7は、メモリ構造へのコンパイラローディングルールの例示的な実施形態700を示すブロック図である。ソフトウェアコンパイラ704は、ルールセット702を受信する。ソフトウェアコンパイラ704は、コンパイルされたルール710のバイナリフォーマットを生成する。コンパイルされたルール710のバイナリフォーマットは、ツリー712、バケット714、およびルール716を含む。ツリー712は、ノード711a〜d、リーフノード713a〜b、およびルートノード732を含む。ツリー712の各リーフノード713a〜bは、バケット714のセットのうちの1つを指す。各バケット内にはバケットエントリが存在する。バケットエントリは、ルールまたはチャンクのポインタ718を含む。ルール716は、ルールのチャンク720を含む。(ルールの)チャンク720は、複数のポインタによって、あるいは分散したチャンク720を(例えば、ハッシュ関数を用いて)再構成(recollect)することによって編成されたルールの連続グループ、またはメモリ全体に分散したルールのグループであってもよい。
図8は、探索ブロックすなわち探索クラスタ410の例示的な実施形態500を示すブロック図である。探索クラスタ410は、オンチップメモリ(OCM)508、ツリーウォークエンジン(TWE)504、バケットウォークエンジン(BWE)514、および複数のルールマッチエンジン(RME)520a〜cを含む。OCM508は、ツリーデータ構造、バケット記憶データ構造、ならびにチャンクおよび/またはルールデータ構造を格納する。
探索クラスタ410は、TWE504においてLUF408(図4A)からのキー502を受信する。TWE504は、OCM508に対する複数のツリー入力/出力(I/O)アクセス506を発行して受信する。キー502に基づき、TWE504は、ルートノードから可能性のあるリーフノードまでツリーをウォークする。TWE504が適切なリーフノードを検出しなかった場合、TWE504は、一致なし512(例えば、no match)を発行する。そして、TWE504が適切なリーフノードを検出した場合、リーフノードは、バケットを指すポインタ510を示してもよい。TWE504は、バケットを指すポインタ510をBWE514に提供する。BWE514は、バケットI/Oアクセス516をOCM508に発行することにより、OCM508にアクセスする。バケットI/Oアクセス516は、チャンクを指す少なくとも1つのポインタ518を、BWE514に対し取り出す。BWE514は、チャンクを指すポインタ518を複数のRME520a〜cのうちの1つに提供する。選択されたRME520a〜cのうちの1つはまた、キー502を受信する。複数のRME520a〜cのそれぞれは、チャンクを指すポインタ518を用いて、ルールおよび/またはチャンクI/Oアクセス524をOCM508に発行し、キー502を解析するための適切なルールをOCMのチャンクからダウンロードするように構成されている。次に、RME520a〜cは、OCM508がアクセスしたルールを用いてキーを解析し、OCM508に格納されたツリーおよびバケットが示すルールまたはチャンクにキーが一致したか否かに応じて、応答または一致なし522a〜cを発行する。
図9Aは、1つのパケットにおける所与のキーのルールをロードするために用いられるメモリ構造の例示的な実施形態730を示すブロック図である。TWE(例えば、図6のTWE660)は、特定のキーについてツリー712のウォークを開始する。ウォークは、ツリー712のルートノード732から始まり、ツリー経路734に沿って行われる。TWEは、受信した各キーについて、ツリー経路734をツリー712全体にわたってウォークする。最終的にツリー経路734は、ヌルつまり一致なしのいずれかを含むか(その場合、TWEは一致なしを返す)、またはバケット738を指すポインタを含むリーフノード736に到達する。この場合、TWEは、BWEにバケット738を送り、BWEは、この特定のバケットをバケットのセット714からロードする。この特定のバケットは、ルールまたはルールのチャンクを指す少なくとも1つのポインタ718を含んでもよい。BWEは、ルール746を指すポインタ718に基づいて、ルールをOCMから探索クラスタのRMEのうちの1つへロードする。
図9Bは、キーを受信してメモリ構造からルールのセットをロードするTWEによって用いられるメモリ構造の例示的な実施形態740を示す図であり、この実施形態では、ルールはオンチップメモリではなく、外部メモリに格納される。ここでもまた、TWEは、キーを受信し、そして、ルートノード732からヌル値を格納するか(その場合、TWEは一致なしを返す)か、またはルールを指すポインタ742を格納するリーフノード736に到達するまで、ツリー712をツリー経路734に沿ってウォークする。この外部メモリの実施形態において、リーフノード736は、外部メモリにおけるルールおよび/またはチャンク746を直接指す。ルールがOCMに格納されている場合、リーフノード736は、バケットを指して、バケットは、ルールおよび/またはチャンクを指す。これに対して、ルールが外部メモリに格納されている場合、TWEは、ルールを指すポインタ742に基づいて外部メモリからルールをロードし、ルール746をバケットポストプロセッサ(BPPP)に送る。BPPは、外部メモリ746からのルールを処理するために用いられる。同じツリー構造が、外部メモリのバケットまたはルールの両方を指してもよい。例えば、各リーフノード736は、メモリのアドレス(またはヌル)を指してもよい。システムは、アドレスが外部メモリのルールまたはOCMのバケットのいずれを指すかを判定できる。この判定に基づき、システムは、適切なメモリにアクセスし、一実施形態においては、同じツリーを外部メモリおよびOCMの両方に同時に用いることができる。ただし、探索プロセッサは、外部メモリの実施形態のみ、またはOCMの実施形態のみを別々に使用するように構成されてもよい。
図10Aは、探索プロセッサによって使用される例示的な処理を示すフローチャート600である。まず、探索プロセッサは、受信したパケットのヘッダ領域からキーを受信する(602)。次に、探索プロセッサは、TWEを用いてツリーデータ構造をウォークし、ツリーのリーフノード上のルールまたはバケットを指すポインタを検出する(604)。リーフノードは、存在しない、つまりヌルである場合があり、その場合、受信したキーの一致なしが自動的に生じる。
次に、探索プロセッサの探索クラスタは、ヌルではないリーフノードを探索することにより、ルールまたはバケットがツリーに存在するか否かを判定する(606)。存在しない場合、例えば、当該リーフノードが存在しない、つまりヌルである場合、探索クラスタは、一致なしを返す(608)。当該リーフノードがルールまたはバケットを格納している場合、探索クラスタは、リーフノードがルールを指しているかまたはバケットを指しているかを判定する(610)。リーフノードがルールを直接指している場合、探索クラスタは、外部メモリからルールをロードする(612)。次に、システムは、当該ルールをBPPに提供する(614)。システムは、(i)BPPがリーフノードからのポインタを用いて外部メモリからルールを抜き出すか、または(ii)探索クラスタ内のナビゲーション部が、要求されたメモリアドレスをBPPに転送する旨のコマンドを外部メモリに送ることにより、ルールをBPPに提供する。
BPPは、ルールのチャンクを処理し、ルールをキーと比較するように構成されたRMEに類似したプロセッサであるが、BPPは、外部メモリからのルールを処理するようにさらに構成されている。外部メモリからのルールをロードすること(610、612、614)は、探索プロセッサおよび対応する探索クラスタの実施形態のオプションである。探索プロセッサは、OCM上に、ルールおよび/またはルールのチャンクの全てを格納することができる。したがって、ツリーデータ構造は、ルールを直接指すポインタの代わりに、バケットを指すポインタを格納してもよい。ルールおよび/またはルールのチャンクがOCMにのみ格納されている実施形態であっても、リーフノードは、OCMのルールおよび/またはルールのチャンクを、バケットを用いることなく直接指すことができる。
リーフノードがバケットを指す場合(610)、探索プロセッサは、バケットに格納されたポインタをロードする(616)。次に、探索プロセッサは、バケットからのポインタが指しているOCMに格納されたルールをロードする(618)。次に、システムは、当該ルールをRME(620)に提供する。
図10Bは、ルールのセットを用いてBPPがキーで探索を実行する例示的な処理を示すフローチャート800である。まず、パケット処理エンジンが、BPPにキーを送る(802)。BWEは、外部メモリ(EM)からルールを受信することを期待する旨のメッセージをBPPに送る。次に、BWEは、ルールまたはルールのブロックをBPPに押し付ける(806)。次に、BPPは、さらなるルールを処理する必要があるか否かを判定する(808)。さらなるルールを処理する必要がない場合、BPPは、処理されたルールの一致または一致なしを返す(810)。さらなるルールを処理する必要がある場合、例えば、チャンクの部分のみが処理される場合、BPPは、次のルールのブロックを要求する(812)。次いでBWEは、BPPに送られるべき次のルールのブロックを要求する(814)。次いでBWEは、当該次のルールのブロックをBPPに送る(816)。BPPは、さらなるルールを処理する必要があるか否かを再び判定する(808)。必要がない場合、BPPは、一致または一致なしを返す(810)。しかし、さらなるルールを処理する必要がある場合、BPPは、次のルールのブロックを要求する(812)。
図4A〜4Bに戻って、ルックアップフロントエンド(LUF)408は、ルックアップクラスタコンプレックス(LCC)414にインタフェースを提供し、ルックアップ要求に関連するいくつかの動作を行う。LUF408は、ホストからルックアップ要求を受信し、これらを処理してLCC414に転送し、LCC414から受け取った応答を返す。LUF408はまた、読取/書込要求(またはコマンド)をホストから受信し、これらが処理される。次に、LUF408からホストへ応答が返される。
LUF408のアーキテクチャおよび動作について、その構成要素であるLUF入力プロセッサ(LIP)424およびLUF出力プロセッサ(LOP)446を含めて、図11〜図22Bを参照してより詳細に説明する。LUFの全般的な機能には、各クラスタにおける保留中要求の数を追跡することが含まれる。この追跡を用いて、ルックアップクラスタに対するルックアップ要求の割当を通知してもよい。なぜなら、「最も」空きのあるクラスタの1つ(m個のうちの1つ)は、全「m個」の可能性のあるクラスタの中で保留クラスタ要求の数が最も小さいクラスタを選択することにより決定できるからである。(追跡されるクラスタ要求は、KeyReq、HostOCMReq、HostTABReq、またはHostCSRReqであってもよい。)さらに、LUF408は、両方のスーパークラスタに同じルールテーブル画像をロードすること(すなわち、スーパークラスタ冗長性)により、スーパークラスタの負荷分散を使用することを選択してもよい。次に、新たなルックアップ要求のそれぞれが、プログラム上で「最も空きのある」スーパークラスタに誘導されてもよい。
いくつかのパケット分類アプリケーションにおいて、LUF408は、図2の探索プロセッサ202のようなプロセッサまたはプロセッサの一部であってもよい。他のパケット分類アプリケーションにおいて、LUFは、他のノードのネットワークにおけるスイッチまたはルータといった物理ネットワークノード(または装置)であってもよい。さらに他のパケット分類アプリケーションにおいて、LUFは、部品、モジュール、ブレードまたはカードとして、物理ネットワークノード(すなわち装置)の一部であってもよい。さらに他のパケット分類アプリケーションにおいて、LUF408は、ソフトウェアおよびハードウェアの構成要素またはブロックを有してもよい。
図11は、例示的なLUF入力プロセッサ(LIP)424のブロック図である。LIP424は、インタラーケンまたはI2Cインタフェース485a〜dからルックアップ要求(LUREQ)およびホストコマンドを受信する。LIP424は、これらの要求およびコマンドを構文解析し、次にこれらを、ルックアップクラスタ、ダブルデータレート(DDR)メモリ、BPPまたは大域制御ステータス用レジスタ(CSR)およびテーブルなどの内部リソースにスケジュールする。
LIP424は、インタラーケンまたはI2Cインタフェース485a〜dから上記ルックアップ要求およびホストコマンドを受信する1つまたは複数のディストリビュータ460a〜bを有する。ディストリビュータ460a〜bは、スーパークラスタ間または1つのスーパークラスタ内で負荷分散を実現できる。次に、ディストリビュータ460a〜bは、ルックアップ要求をスケジューラ428a〜bに転送し、ルックアップ要求はルックアップクラスタ(例えば、図4BのLCC414)に出力される。
ディストリビュータ460a〜bおよびスケジューラ428a〜bは、負荷分散、クラスタ割当、キー抽出、キー要求の生成、サブツリー要求へのキー要求の分割、およびルックアップクラスタへのキー要求およびサブツリー要求のスケジューリング出力を含む、いくつかの機能を共に提供してもよい。これらの機能を促進し、かつ関連付けられたルックアップクラスタにおいて探索が行われる方法を制御するために、LIP424は、いくつかのテーブルを使用してもよい。グループ定義/説明テーブル(GDT)426は、他のテーブルに対するインデックスを提供する。パケットヘッダテーブル(PHT)433a〜bは、パケットを構文解析する方法についての命令を提供する。ツリーロケーションテーブル(TLT)430a〜bは、いずれのクラスタが探索を行うべきかについての情報を提供する。
TLTテーブル430a〜bは、いずれのm個(n個のうちのm個)の可能性のあるクラスタが特定のツリーID(ルールのセット)を引き受けることができるかについての情報を含む。ホストルックアップ要求がその特定のツリーIDに対するものである場合、LUFの最も空きのあるクラスタのハードウェアロジックは、キー要求を担う(m個の)クラスタのうち「最も空きのある」1つのクラスタを選択する。このように、LUFは、可能性のあるクラスタ間でホストルックアップ要求の負荷を等しく分散し、最小限の総ルックアップ待ち時間を実現する。これにより、プロセッサ全体にわたる総ルックアップ速度が増加する。
スケジューラ428a〜bのそれぞれは、各ルックアップ要求(LUREQ)を処理し、キーを有するキー要求(KRQ)を最大4個生成する。このキー抽出の一例については、図5を参照して上述されており、また、図14を参照してさらに詳しく後述する。KRQ(キーを含む)は、ルックアップクラスタコンプレックス(LCC)にスケジュールされかつ送られ、処理に供される。1つまたは複数のクラスタにおけるツリーがいくつかの「サブツリー」に分割されるさらなる実施形態において、当該キー要求は、それぞれが特定のサブツリーに関連付けられたいくつかの「サブツリー要求」に「分割(split)」されてもよい。そして、サブツリーは、LCC内の異なるクラスタに関連付けされてもよく、または、共通のクラスタに関連付けられてもよい。このように、1つのツリーによって指定されるルールのサブセットをサブツリーによって指定されるルールのより小さいサブセットにさらに絞り込んでもよい。これにより、探索の精度が高まる。
キー要求生成に続いて、スケジューラ428a〜bは、LIP424からのKRQをスケジュールする。スケジューラ428a〜bは、ペイロードヘッダ抽出部(PHE)(図12を参照して後述)およびスケジューラ出力マネージャ(図15を参照して後述)を有する。
ルールテーブル画像を増分更新するために用いられるホスト読取/書込要求に対するホストルックアップ要求の順序をサポートするために、スケジューラ428a〜bにおいて専用HW機構を使用してもよい。ホストR/W要求(ホストルックアップを除く)は、ルックアップ/キー要求処理の際に必要なCSR、テーブル、OCMおよびDDRのRCDS画像データ構造に対するアクセスを含む。
全てのホストR/Wコマンドについて、ホストSWは、制御ヘッダ内に含まれる3つの「順序付け」フラグを使用してもよい。
1)HOST_RSPが設定された場合、探索プロセッサは、コマンドが完了した際に明示的なコマンド応答をホストに送る。これは読取コマンドには影響しないが、ホスト書込要求(HOST_RSP=1のフラグが設定された)については、ホスト書込応答パケットがホストCPUに再び転送されることになり、これもまた、ホスト要求パケットと共に送られた同じHXID(ホストトランザクションID)を含む。
2)LOCAL_RSPが設定された場合、探索プロセッサは、ホストR/W要求がバス順で実行されることを保証する。換言すると、ホスト書込要求(ツリー更新)は、後続のホストルックアップ要求が出される前に強制的に「完了」させられるか、実行される。(RAWコンフリクト回避が必要とされる場合に使用される=書き込み後のルックアップ読み取りというHWの順序を維持しなければならない)
3)ATOMICが設定された場合、NSP HWは、以前に発行された全てのホストルックアップ要求(同一のTID=TreeIDを有する要求)が、ホストR/W要求が発行される前に完了することを保証する。このHWは、増分SW更新(同じツリーIDについての)に対するホスト書込要求が、前のホストルックアップ要求に対して順番通りではなく実行されないことを保証するために使用される。(同じTIDに対するWARコンフリクト回避が必要とされる場合に使用される=ルックアップ読み取り後の書き込みというHWの順序付けが維持されなければならない)。特殊なHWは、再試行待ち行列を検出/排出し、次いで、同じTID(=ツリーID)を用いた以前の全てのホストルックアップ要求が実行されるかまたは完了するまで、この命令のスケジューリングをブロックしなければならない。これにより、当該TIDの全てのホストルックアップ要求が排出されるまで、チャンネル0の一時的なHOLブロッキングが生じる。チャンネル1のコマンド(ホストR/W要求)は、この影響を受けない。
図12は、例示的なペイロードヘッダ抽出部(PHE)470のブロック図であり、PHE470は、図11を参照して上述したLIP424のスケジューラ428a〜bの構成要素であってもよい。PHE470は、以下のブロックのうちの1つまたは複数を含む。すなわち、新規待ち行列472、ツリーロケーションテーブル(TLT)433、ペイロードヘッダテーブル(PHT)430、TLTテーブルマネージャ474、PHTテーブルマネージャ476、新規待ち行列・ペイロードマネージャ478、PHTバイトスワッパ480、ビットパッカ484、およびペイロード/パケットヘッダ抽出部の有限状態機械(482)であり、これらのそれぞれについて以下に説明する。
PHE470は、一般に、以下の機能のうちの1つまたは複数を実行するように構成されてもよい。
●新規待ち行列からのルックアップ要求(LUREQ)および読取/書込要求を受信する。
●選択されたエンディアンモードについて必要に応じてバイトスワッピングを行う。
●各LUREQの全ての有効TIDについてTLTテーブルルックアップを実行する。
●各LUREQの全ての有効TIDについてPHTテーブルルックアップを実行する。
●ヘッダデータを抽出および処理し、LUREQおよび読取/書込要求をキー要求(KRQ)に変換する。
●LOPのLRTおよびLRT情報テーブルのデータを初期化する。
概要としては、動作中、PHE470は、新規待ち行列の3つの部分から要求を引き出し、バイトスワッピングおよびテーブルルックアップを必要に応じて行い、データを処理してキー要求(KRQ)とし、KRQをテーブルデータと共にスケジューラ出力マネージャ(図15を参照して後述)に送る。
各スケジューラ428a〜bは、フロントエンドにおいて新規待ち行列472(または「新規作業待ち行列」)を有する。これらの新規待ち行列のサイズが十分に大きい場合、1つのスケジューラの短期的なオーバーローディングがシステム全体の行頭(HOL)ブロッキングを起こすことはなく、スケジューラのバックログは待ち行列によって吸収されることになり、新規作業が他のスケジューラ428a〜bに流れる。
新規待ち行列472は、パケットヘッダを受信する、16個の格納場所であってもよい。パケットヘッダは、このFIFOの128ビット幅のスライスにおいてバッファされる。各ヘッダは、サイズに関わらず、FIFOの少なくとも1×128ビットを占めるため、パケットヘッダは、待ち行列が保持するルックアップパケットの数を制限してもよい。新規待ち行列472は、パケットが装置に流入する際にロードされる。待ち行列は、LUFディストリビュータ0(LD0)からのルックアップ要求およびILチャンネル0のDDR/OCM/テーブル要求を含む。ビットパッカ484は受信したルックアップのそれぞれについて1〜4個のKRQを生成できるため、新規待ち行列472は、スケジューラ428a〜bに順応性を提供する。ホスト読取/書込コマンドは、ホストから送られたフォーマットと同一のフォーマットで、新規待ち行列に、構文解析されることなく配置される。
スケジューラ428a〜bがより効率的に各パケットの処理を管理できるように、新規待ち行列は、3つのセクション(ペイロード、HID、およびTID)に分割されてもよい。LD0は、3つのセクション全てを同時にパケット開始位置(SOP)に書き込まれてもよい。新規待ち行列472のHIDセクションおよびTIDセクションは、1つのパケットにつき1つのエントリを有してもよい。パケットペイロードは、128ビットのエントリにおいて新規待ち行列472のペイロードセクションに格納されている。FIFOの最大5個のエントリが1つのパケットに対して要求され得る。LD0は、新規待ち行列全体にわたってパリティを計算し、その値を共通エントリ(NQ_par)として新規待ち行列の3つのセクション全てに書き込み、データ割当の監視においてPHEを補助する。
PHE470は、新規待ち行列472の各セクションから個別に引き出しを行ってもよい。これにより、PHE470は、ペイロードデータの複数のクロックを同時に引き出しながら、テーブルデータのパイプラインおよび前処理を行うことができる。NQ_parエントリを3つのセクション全てにわたって比較してデータ割当を監視し、この確認ができなかった場合、状態レジスタにエラー表示のフラグが立てられる。
PHT新規待ち行列ペイロードマネージャ478は、新規待ち行列472のペイロードセクションからデータを引き出し、これをバイトスワッパ480と、最大512ビットのビット長の1つのデータフィールドに形成されるペイロードヘッダ抽出部ブロックとに提示する。バイトスワッパの動作については、図13を参照してより詳細に後述する。
ツリーロケーションテーブル(TLT)433は、いずれのクラスタが所与のジョブを実行することができるかを判定するために、スケジューラ428a〜bのリーストフルクラスタジェネレータ(最も空きのあるクラスタのジェネレータ)(LFCG)によって使用される。ツリー識別子(TID)は、TLT433へのインデックスとして使用される。TLT433は、ホストによりロード可能であってもよく、また、以下のフィールドのうちの1つまたは複数を含んでもよい。
●KFTIDX(キーフォーマットインデックス) ペイロードとしてKEYREQと共にクラスタに送られる。クラスタは、これを用いて1つ(64個のうちの1つ)のキーフォーマットを参照する。キーフォーマットは、クラスタが28個まで(最大)のDIMENSIONをKEYDATA内で各KEYについて抽出する方法を定義し、RFT(ルールフォーマットテーブル)を索引付けするためにも使用される。すべてのKEYREQコマンドと共に送られ、各クラスタのKDTテーブルに(KEYDATAと共に)格納される。
●TWRSPCNT(期待される応答数)。これは、LRTのTWRSPCNTフィールドに書き込まれる。値3’b000は、8個の応答が期待されることを示す。
●TWCLMSK(ツリーウォーククラスタマスク)[STにつき1個=最大8個のサブツリー(最大数)]:(スーパークラスタ内の)いずれのクラスタがツリーウォーク要求(TWReq)を受け付けることができるかを指定する。LUF0の場合、これらはSC0に関連し、LUF1の場合、これらはSC1に関連する。新規ツリーウォーク要求をクラスタコンプレックス(クラスタの複合部)にスケジュールする際に「最も空きのあるクラスタ」を決定するためにHWによって使用される。SWは、マスクの指定されたクラスタにツリー(N+L)画像を予めロードしていてもよい。
●TWCLMSK_ALT(代替ツリーウォーククラスタマスク)[STにつき1個=最大8個の(最大数)サブツリー]:上記TWCLKSKと同様であるが、反対のスーパークラスタ内のいずれのクラスタがツリーウォーク要求(TWReq)を受け付けることができるかを指定する。シングルLUFモードにおいてのみ有効。LUF0の場合、これらはSC1に関連する。LUF1の場合、これらは無効である。使用例は以下の通りである:
○DUAL LUF MODE(LUF0 or LUF1) : Each TWCL Mask = {8'h00, TWCLMSK} (デュアルLUFモード(LUF0またはLFU1:各TWCLマスク={8’h000,TWCLMSK}))
○SINGLE LUF MODE(LUF0 Only) : Each TWCL Mask = {TWCLMSK_ALT, BWCLMSK} (シングルLUFモード(LUF0のみ:各TWCLマスク={TWCLMSK_ALT,BWCLMSK}))
●BWCLMSK(バケットウォーククラスタマスク):いずれのクラスタがバケットウォークを担当するのかを指定する。SWは、いずれのクラスタがLUCTNA.rulclnumフィールドに使用されるのかを知らなければならない。このフィールドは、LUF−>クラスタコンプレックス(KRQバス)から送られたマルチキャストKEYREQコマンド中に、いずれのクラスタがKEYDATAを 「取得」すべきかをHWが判定するのを助ける。KEYDATAは、アクティブなTWEまたはBWEスレッドを有する全てのクラスタにおいてローカルで利用可能(冗長)である必要がある。TWEは、ツリーウォーク処理の際にKEYDATAを使用し、BWEは、RMEによるルールマッチングの際にKEYDATAを使用する。
●BWCLMSK_ALT(代替バケットウォーククラスタマスク):上記BWCLMSKと同様であるが、反対のスーパークラスタ内のいずれのクラスタがバケットウォークを担当するかを指定する。シングルLUFモードのみにおいて有効。LUF0の場合、これらはSC1に関連する。LUF1の場合、これらは無効である。使用例は以下の通りである:
○DUAL LUF MODE(LUF0 or LUF1) : Full Bucket mask = {8'h00, BWCLMSK} (デュアルLUFモード(LUF0またはLFU1:全バケットマスク={8’h000,BWCLMSK}))
○SINGLE LUF MODE(LUF0 Only): Full Bucket mask = {BWCLMSK_ALT, BWCLMSK} (シングルLUFモード(LUF0のみ:全バケットマスク={BWCLMSK_ALT,BWCLMSK}))
PHE470のTLTテーブルマネージャ474は、新規待ち行列TIDセクションの各エントリについて、最大4個のルックアップをツリーロケーションテーブル(TLT)433に生成する。このデータは、PHE470において処理しなくてもよいが、代わりに、スケジューラ出力マネージャ(以下の図15)に送られて、そこでリーストフルクラスタジェネレータ(LFCG)において使用されてもよい。
パケットヘッダテーブル(PHT)430は、最大512ビットのヘッダを最大384ビットのキーにマスクおよび多重化する方法を指定するための64個のエントリのテーブルとして構成されてもよい。各HIDは、4つのPHTライン(またはエントリ)のグループを選択してもよい。PHT430の各ラインは、以下のGDTにおける4つのTIDのうちの1つに対応してもよい。
PHT Index for TID0 = HID+0
PHT Index for TID1 = HID+1
PHT Index for TID2 = HID+2
PHT Index for TID3 = HID+3
PHT430の各ラインは、ヘッダデータをマスクおよび多重化する方法を指定する9個のディメンジョン(要素)を含む。これらのディメンジョンのそれぞれは、以下を指定する。
●発信元フィールド開始ビット位置
●発信元フィールド終了ビット位置
●宛先フィールド開始ビット位置
●宛先フィールドサイズ(ビット単位)
この情報を用いて、PHT430は、ビット分解により、9つのチャンクをヘッダからキーにマッピングできる。
PHTテーブルマネージャ476は、新規待ち行列472のHIDセクションの各エントリについて、ルックアップをパケットヘッダテーブル(PHT)430内に生成する。ルックアップは、各キーについて生成される。したがって、1つの新規待ち行列HIDエントリは、最大4つのルックアップを生成することができる。このデータは、ヘッダのペイロードデータを抽出し、結果として生じるキー要求(KRQ)を生成するためにビットパッカ484によって使用される。
ホストルックアップ要求パケットのバイトエンディアンネスを調整するために、プログラム可能バイトスワッパ480が設けられている。ホスト読取/書込要求パケットは、影響を受けない。PHTバイトスワッパは、各ユーザパケットのインタラーケン制御ワードの後に送信される最初の64ビットである探索プロセッサヘッダ上では動作しない。PHTバイトスワッパは、ルックアップ要求パケット内の探索プロセッサヘッダに続く全てのデータ上で動作する。異なるバイトスワッピングモードを示す図については、図13を参照して後述する。
ペイロード/パケットヘッダ抽出部の有限状態機械(PHE FSM)482は、バイトスワッパ480からのデータ、ビットパッカ484の出力、PHT430のデータ(パケットヘッダから抽出されたディメンジョンがパックされたキーを含む)、およびTLT433のデータ(所与のルックアップ要求を処理するクラスタのIDを含む)からのデータをまとめる。PHE FSM482は、後にスケジューラ出力マネージャ(図15)に送られるKRQを検索または生成するために、これらの入力を使用してもよい。
検索または生成されたKRQのそれぞれについて、2ビットのSXIDが生成される。LRTおよびLRT INFOエントリが、フリープールからKIDを引き出すことにより、各キーのために確保される。KIDは、予め引き出され、キャッシュされる必要がある。システムがKIDを使い切った場合、スケジューラHOLは、探索完了によってKIDが利用可能となるまでブロックされる。
PHE FSM482は、ペイロードヘッダデータからのCMDフィールドをチェックして、形成すべきKRQのタイプを判定する。それがLUREQであって、かつ1対1モードではない場合、PHEは、ビットパッカ484からKRQを取り出し、そうでない場合、そのKRQタイプの必要なヘッダフィールドを抽出するためのペイロードヘッダデータを構文解析することによりKRQを生成する。
KRQは、対応するTLT433のデータと共に、スケジューラ出力マネージャ(図15)に送られる。KRQデータは、128ビットの増分で送信されてもよい。TLT433のデータは、KRQのパケット開始位置(SOP)と共に1回の送信で送ってもよい。
図13は、PHE470の構成要素であるバイトスワッパ480によって選択可能な異なるバイトスワッピングモードを示すパケット図である。プログラム可能なバイトスワッパ480は、ホストルックアップ要求パケットのバイトエンディアンネスを調整する。ホスト読取/書込要求パケットは、影響を受けない場合がある。バイトスワッパ480は、各ユーザパケットについてインタラーケン制御ワードの後に送信される最初の64ビットである探索プロセッサヘッダ上では動作しない。PHTバイトスワッパは、ルックアップ要求パケット内の探索プロセッサヘッダに続く全てのデータ上で動作する。
バイトスワッパ480のエンディアンモードは、本発明の便宜的な実施形態に係る構成レジスタにおいて設定される。場合によっては、スワッピングの最小粒度はバイトであり、ビットミラーリングはサポートされていない。図13に示すのは、相互排他的な例示のスワップモードであり、
●スワップなしでは、何もしない
●64ビットでバイトをスワップする場合、各64ビットワード内でバイトを反転させる。
●64ビットの32ビットワードの場合、64ビットワード内で32ビットワードを反転させる。
●32ビットでバイトをスワップする場合、各32ビットワード内でバイトを反転させる。
図14は、通常キー拡張モードで動作するPHE470を示すパケット図である。この例示的な実施形態において、PHE470は、キー拡張またはパケットヘッダ抽出というLUF手順において、ヘッダデータを抽出および処理してLUREQに変換するとともに、読取/書込要求をキー要求(KRQ)に変換する。LUREQのためのキー拡張には2つのモードがある。すなわち、通常キー拡張モード(GID>0の場合、ビットパッカブロックを使用する)および1対1モード(GID=0の場合)である。
通常キー拡張モードにおいて、各LUREQは、図5を参照して上述したように、最大4個のキー要求(KRQ)を生成することができる。パケットヘッダテーブル(PHT)に格納されたプログラム可能テーブルを用いて、LUREQをキー要求に構文解析してもよい。図5に示すように、LUREQは、以下のフィールドを含んでいてもよい。
●ホストからのXID(32ビット)ID。探索プロセッサによっては使用されず、応答と共にホストに返されるだけである。
●GID(8ビット)(グループID)。このパケットがいずれのクラスであるかを示す識別子であり、パケットが処理される方法を制御する。
ルックアップデータ(最大512ビット)。キーはこのデータから形成される
図14に戻って、通常キー拡張モードで動作するPHEの例において、4つのチャンクがパケットヘッダから抽出されている。チャンク0(CHUNK0)の抽出は、図示のフィールド0のSRC_STPOS、SRC_ENDPOSによって詳細に示されている。なお、ヘッダのディメンジョンは順番通りである必要はないが、キー(KRQ)にパックされている場合、CHUNK0は、左端フィールドでなければならない。また、ビットオフセットが左端ビットを始点とすることにも留意されたい。
PHT430(図12)を用いて、最大4つのキー(KRQ)が各LUREQから生成される。生成されたキー(KRQ)は、次に、PHE FSM482(図12)に渡され、PHE FSM482は、それらをKRQとして128ビットの増分でスケジューラ出力マネージャ(図15)に送る。
反対に、1対1モードにおいては、GID=0の場合、ヘッダは、ビットパッカを迂回することになり、1つのキーとしてそのまま使用されることになる。インタラーケンのLAコンパクトモードにおいて、ヘッダを1つのキーとしてそのまま使用することにより、384ビットよりも大きいヘッダの1サイクルによる待ち時間が減少する。
図15は、例示的なスケジューラ出力マネージャ490のブロック図であり、スケジューラ出力マネージャ490は、LIP424のスケジューラ428a〜bの構成要素であってもよい。スケジューラ出力マネージャは、スケジューラ428a〜bの「バックエンド」として動作してもよい。スケジューラ出力マネージャは、以下のブロックのうちの1つまたは複数を含む。すなわち、これらブロックとしては、リーストフルクラスタジェネレータ(LFCG)492、再試行待ち行列493、発信元セレクタ494、およびスケジューラ出力マネージャの有限状態機械(FSM)495であり、これらのそれぞれについて以下に説明する。
例示的な実施形態において、スケジューラ出力マネージャ490は、以下の機能のうちの1つまたは複数を実行してもよい。
●スケジューラPHEおよびLUFディストリビュータ1(LD1)からKRQを受信する。
●再試行待ち行列493においてKRQを管理する。
●コマンドフラグであるアトミックおよびローカルの応答に必要な行頭ブロッキング(HOLB)を強制的に行う。
●リーストフルクラスタジェネレータ(LFCG)492を用いて、いずれのLUEクラスタが各LUREQ KRQを処理すべきかを判定する。
●優先性方式およびクレジットカウンタを用いてKRQをスケジュールし、次のKRQ発信元(PHE、LD1、再試行待ち行列)を選択する。
●スケジュールされたKRQを6つの可能性のあるKRQバスのうちの1つまたは複数に方向付ける。
スケジューラ出力マネージャ490は、可能性のある3つのソースである、PHE、LD1、および再試行待ち行列から一度に1つのKRQを選択する。スケジューラ出力マネージャ490は、可能性のある6つのKRQバス(SC0、SC1、BPP0、BPP1、MWQ(DDR)、大域CSR/テーブル)のうちの1つまたは複数に、送信対象の各KRQをスケジュールする。代わりに、スケジューラ出力マネージャ490は、LUREQ KRQをPHEから再試行待ち行列に移動させるか、またはKRQを再試行待ち行列の先頭か当該待ち行列の最後尾に再循環させてもよい。スケジューラ出力マネージャ490は、これらの決定を、各KRQ宛先から利用可能なクレジットに注目し、かつLUREQ KRQについてリーストフルクラスタジェネレータ(LFCG)を実行しながら、KRQ CMDに基づいて行う。
ホスト読取/書込要求は、これらがKRQバス上に成功するルックアップ要求と共に順番にスケジュールされるように、スケジューラパイプラインをルックアップ要求と直列に通過する。スケジュールできずに再試行待ち行列に進んだルックアップ要求は、順番通りではなくなる。アトミックまたはローカルの応答フラグの使用を、ある順序付け条件(さらなる詳細については後述)を強制するために用いてもよい。
リーストフルクラスタジェネレータ(LFCG)492のブロックは、いずれのエンジンが所与のルックアップ要求を処理するかを決定する。LFCG492は、ツリーロケーションテーブル(TLT)433(図12)からのデータを使用し、作業を実行することができるクラスタを探し出すのに必要な情報を検索する。
例示的な実施形態において、LCCは、2つのスーパークラスタを含み、各スーパークラスタは、8つのクラスタを含み得る。各クラスタにおける探索エンジンのアクティビティレベルは、各クラスタについて1つのクレジット/デビットカウンタを用いてLFCG492により監視される。シングルLUFモードにおいては、1つのSCH0が、両方のスーパークラスタをカバーする16個のカウンタを全て維持する。デュアルLUFモードにおいては、上記2つのスケジューラが、それぞれ8個のカウンタを維持する。各クレジットは、クラスタ入力待ち行列における1つのFIFO位置を表す。クレジット/デビットカウンタは、FIFOの深さにリセットされる。ジョブがクラスタにスケジュールされると、これらのカウンタはLFCGによってデクリメントされる。クラスタが1つのエントリをFIFOから除去したことをクラスタが示すと、カウンタはインクリメントされる。
LFCG492は、以下のフィールドを生成してもよい。
●LFTWCLMSK(リーストフルツリーウォーククラスタマスク)。1つのクラスタにつき1ビット存在する。このマスクに設定された各ビットは、対応するクラスタが作業を開始することを示す。デュアルLUFモードにおいては、各スケジューラからLFTWCLMSK[7:0]のみが使用される。
●KCLMSK(キークラスタマスク)1つのクラスタにつき1ビット存在する。このマスクに設定された各ビットは、対応するクラスタが、同報通信されるとKEYREQをラッチすることを示す。これは、クラスタがこのデータを利用する必要がある場合があるからである。デュアルLUFモードにおいては、各スケジューラからKCLMSK[7:0]のみが使用される。
LFCGブロックは、以下を用いてスケジューラに応答する。
●SCL
●LFTWCLMKS
●KCLMSK
●ACK/NAK LFTWCLMSKの生成について、成功=1、失敗=0。
LFCG492は、TLT433から読み取った情報およびそれ自身のクレジットに基づいて、LFTWCLMSKを生成する。このマスクにおける各ビットは、スレッドに作業を開始させる。ルックアップクラスタコンプレックス(LCC)内の詳細により、これはLUFが再び受信した応答数に必ずしも一致しなくてもよい。このため、TLTからのTWRSPCNTは、LUFが期待すべき応答の実際の数を含む。
1つのキーについてのスケジュールの試みが失敗すると、要求は再試行待ち行列493に移され、行頭(HOL)ブロッキングが回避される。HOLブロッキングは、TWCLMSKに一致するクラスタがあまりにもビジーでジョブを受け付けることができないときに起こる。
再試行待ち行列493は、最大8個のKRQビートを保持するようなサイズを有する。ルックアップ要求のみが再試行待ち行列493に進む。ホスト読取/書込コマンドは、再試行待ち行列に進まず、これらのコマンドが成功しなかった場合にHOLブロッキングを起こす。
再試行待ち行列493に配置されたルックアップ要求は、順番ホストR/Wコマンドに対して順番通りではなくなる。所与のアプリケーションについてこれが許容されない場合、再試行待ち行列493を無効にしてもよく、または、ホストが、提供されたアトミックコマンドを用いて介入してもよい。
再試行待ち行列493エントリは、PHE470(図12)からのインタフェースと同じフォーマットのものであってもよい 。これには、完全に形成されたKRQ(128ビットのデータ増分で)および当該キーについてのTLTデータ全体の両方が含まれる。KRQデータ全体を格納するために、最大3個のFIFOエントリ(3クロック)が必要となる場合がある。スケジューラ428a〜b(図11)は、データをPHE470から再試行待ち行列493に移動させると同時に、KRQバスにIDLEを出力する。
スケジューラ出力マネージャ490は、再試行待ち行列493が排出される(空にされる)前にいくつのホストコマンドが新規待ち行列472から引き出されるかを判定する、プログラム可能RETRY_LOCKOUT_COUNTERを含んでもよい。カウンタは、RETRY_LOCKOUT_CFGレジスタにおける値にリセットされ、PHEが新規待ち行列ペイロードFIFOからSOPを読み取る(複数のKRQが生成される前に)たびにデクリメントされる。また、RETRY_LOCKOUT_CFGは、再試行待ち行列493を無効にするように設定されてもよい。
さらに、プログラム可能RETRY_HIGH_WATERMARKは、 再試行待ち行列が排出される前の再試行待ち行列の最大充填レベルを決定する。RETRY_HIGH_WATERMARKの最小設定は、0x3である。設定「N」は、N+1個のKRQビートがそこに書き込まれたときに再試行待ち行列が排出されることを意味する。RETRY_HIGH_WATERMARKがRETRY_QUEUEのサイズより大きく設定された場合、再試行待ち行列493は、メモリの最大充填レベルに達するならば排出される。
また、再試行待ち行列493は、アトミックコマンドを処理する前に排出される。(アトミックコマンドは、指定されたTIDを処理前に全て排出する。)排出は、指定されたTIDが再試行待ち行列にある場合を扱うのに必要となる。
再試行待ち行列493が排出のために選択されると、PHE470からの新規待ち行列データは、当該再試行待ち行列が空になる(すなわち、排出される)まで再び選択されることはない。これにより、ロックアウト状態が防止される。再試行待ち行列493の排出中、成功しなかったためにLFCG492からスケジュールすることができないKRQは、再試行待ち行列493の最後尾に再循環される。スケジューラ428a〜bは、KRQが待ち行列の最後尾に再循環され、新規データが再試行待ち行列の先頭に進められる間に、IDLE(最大3クロックサイクル)を出力する。
要約すると、再試行待ち行列は、3つの条件、すなわち、RETRY_LOCKOUT_COUNTER、アトミックコマンド、およびRETRY_HIGH_WATERMARKの下で完全に排出され得る(すなわち、要求が空になり得る)。
また、再試行待ち行列493は、別の条件下では、アクセスはされるが完全には排出されない場合がある。再試行待ち行列493が選択されていないが、PHE470からのデータの流れにアイドル状態のサイクルが存在する場合、および再試行からのLFCG492が成功した場合、1つのKRQが再試行待ち行列493から引き出され、スケジュールされる。これらのアイドル状態のサイクルは、空の新規待ち行列472が原因で、あるいは大きいヘッダから小さいキー、例えば、512ビットのヘッダ(4サイクル)から384ビットのキー(3サイクル)を生成することによって生じる偶発的なバブルにより発生する。LFCG492は、完全に排出されることになる再試行待ち行列が選択されておらず、したがってエントリがスケジュールに成功するか否かを判定するためにエントリをポップする必要がない場合であっても、再試行待ち行列の先頭のエントリに対して常に計算してもよい。
全てのチャンネル0のホスト読取/書込要求は、以下のフラグを含んでいてもよい。アトミック、Host−Resp、およびLocal−Resp。これらのフラグは、チャンネル1の要求およびルックアップ要求について有効でなくてもよい。これらのフラグについて、以下に説明する。
アトミックアクセスは、1つのテーブル識別子(TID)についての全てのアクティビティが完全に排出されるまで、システム内への全てのトラフィックを停止する機構である。アトミックアクセスは、テーブル更新に有用であり得る。なぜなら、これにより、書き込みが発生可能になる前に、これらのテーブルを用いて進行中の全ての探索が終了することが保証されるからである。アトミックアクセスにより、全ての探索は、更新の途中ではなく、更新前または更新後にアトミックデータ上で作業することが可能となる。
アトミックアクセスを実現するために、TID毎の256個のカウンタのアレイが設けられ、各TIDの実行中のジョブ数を追跡する。これらのカウンタは、LUFが実際にSCHキー/SXIDをスケジュールするとインクリメントされ、当該キー/SXIDの全ての応答が返されるとデクリメントされる。再試行待ち行列上にあるキー要求は、これらのキーが実際にスケジュールされるまでこれらのカウンタをインクリメントしなくてもよい。
アトミックビットセットを用いてコマンドが処理される場合、スケジューラ出力マネージャ490は、以下を実行する。
●再試行待ち行列を排出する
●コマンドのTIDフィールドに一致するTIDカウンタがゼロになるのを待つ間、HOLブロックを実行する。
●ホスト読込コマンドまたはホスト書込コマンドを発行する。
Host−Respフラグは、探索プロセッサに応答をホストに送り返させる。Host−Respフラグは、ホスト書込にとってのみ意味を有する(ホスト読取は常に応答を送る)。Host−Respフラグにより、 ホストは、書き込みがいつ終わったのかを判断することができる。
Host−Respフラグを実現するために、スケジューラは、下流へ送るコマンドの一部としての信号を設定する。応答ブロックは、応答の返送を取り扱う。
Local−Respフラグは、探索プロセッサにホスト読込コマンドまたはホスト書込コマンドを発行させ、次に、コマンドが回収されるまで全てのトラフィックをHOLブロックする。その後、応答が送られてもよい。
スケジューラ出力マネージャ490は、KRQバスへのアクセスが許容されるか否かを判断するために以下のクレジット/デビットカウンタを維持する。
クラスタクレジット(1つのエンジンにつき1つのカウンタ)。SCH0は、シングルLUFモードの場合には16個のクラスタを必要とし、デュアルLUFモードの場合には8個のカウンタを必要とする。SCH1は、デュアルLUFモードにおいてのみ動作するので、8個のカウンタのみを必要とする。各カウンタは、1つのクラスタにつき最大16個のクレジットを保持する。各クレジットは、1個のKRQビートを表す。これらは、以下のためにデビットされる。
●ルックアップ要求
●OCMEM RD/WRT
●LCCテーブルRD/WRT
大域インタフェースクレジットは、SCH0およびSCH1はいずれも大域ブロックにおける小さいFIFOに提供され、大域ブロックもまた、チャンネル1のディストリビュータによって提供される。これらソースの3つ全ては、これらがFIFOをオーバーランさせないことを保証するためにクレジット/デビットを保持しており、少なくとも3つのクレジットが残っていることを保証しなければならない。
DDR書込クレジットは、SCH1はDDRコマンドを取得しないため、SCH0によってのみ保持される。MBCは、16個のホスト書込を受け付けることができる。
DDR読取クレジットは、SCH0によってのみ保持される。BPPは、最大4個のホスト読取をバッファすることができる。クレジット/デビットにより、BPPがオーバーランしないことが保証される。
BPPホスト・テーブル・クレジットは、SCH0によってのみ保持される。クレジット/デビットにより、BPPがオーバーランしないことが保証される。クレジットは、応答を含むBPP読取および書込の間で共有される。LOPが無制限の数の応答をバッファすることができるため、クレジットは、応答を含まない書き込みについては調整されない。
スケジューラ発信元セレクタ494は、SOM FSM 495の出力を転送するための接続出力における選択を可能にする。スケジュールアウトプットマネージャ490は、スケジューラ(SCH)428a〜bから送られることになる次のKRQの発信元を以下の状態に基づいて選択するようにセレクタ494を制御する。
●PHEを選択(SCHは、次のクロックで新規待ち行列データを出力する)
●RetryQを選択(SCHは、次のクロックで再試行待ち行列データを出力する)
●LD1を選択(SCHは、次のクロックでILKNチャンネル1のデータを出力する)
●RetryQへのPHE(SCHは、新規待ち行列データをPHEから再試行待ち行列へプッシュし、次のクロックでidleを出力する)
●RetryQを再循環(SCHは、再試行待ち行列上のデータを再循環させ、次のクロックでidleを出力する)
発信元が選択されると、次のSOPについての発信元が選択される前に、KRQパケット全体が送られる(SOPからEOPまで)。
図16は、要求およびコマンドを構文解析し、それらをパケット分類のために内部リソースにスケジュールする例示的な手順を示すデータフローチャートである。この手順は、図11〜図15を参照して上述した各処理から導き出されたものである。この手順は、LIP(例えば、図11のLIP424)によって実行されてもよい。また。この手順は、以下に説明する例示的な手順を表す命令をロードおよび実行することによりLIPに変形されたコンピュータ(またはプロセッサ)によって実行されてもよい。
本発明の実施形態によると、LUF入力プロセッサ(LIP)は、他のノードのネットワークにおける、スイッチまたはルータなどの物理ネットワークノード(すなわち装置)であってもよい。LIPは、当該ノードの構成要素、モジュール、ブレードまたはカードとしての物理ネットワークノード(すなわち装置)の一部であってもよい。
本発明の別の実施形態によると、LIPは、プロセッサ、メモリ、通信インタフェースなどを有する汎用コンピュータである(図23を参照してより詳細に後述)。汎用コンピュータは例えば、コンピュータに、ホストから受信したルックアップ要求を処理して最良の一致を判定させ、応答をホストに返させるプロセッサに命令をロードすることにより、LUFとその構成要素とに変換される。
図17は、図4Bを参照して上述したルックアップフロントエンド(LUF)408の構成要素である、例示的なLUF出力プロセッサ(LOP)446のブロック図である。LOP446は、LIP(例えば、LIP424、図11)によって開始された内部チップリソース(例えば、ルックアップクラスタ413a〜d、図4A)からの応答を受信する。これらの応答は、処理され、インタラーケンまたはI2Cモジュールを介してホストプロセッサに返信される。応答は、DDR、クラスタ、BPPまたは大域テーブル、およびCSRなどのリソースからのホスト読取応答または書込応答を含んでもよい。また、応答は、ホストプロセッサに返信される前にLOPによって最良の一致について評価されるルックアップ応答も含んでもよい。
LOP446は、応答−処理フロントエンドブロック(LOP_FE)750a〜b、応答―処理バックエンドブロック(LOP_BE)760、および出力処理ブロック(LOP_OP)770を含む。
さらに、LOP446は、LIP424(図11)によって初期化された2個のテーブルおよびルックアップクラスタを維持する。これらのテーブルは、進行中の探索についてのコンテキストを保持し、クラスタによって現在実行されている探索を追跡するルックアップ応答テーブル(LRT)765a〜b、およびクラスタが完了した探索の結果をバッファする伝送バッファ(TXBUFF)775を含む。以下に説明するように、結果は、随意的に、要求順に格納および返送されるか、または、合体される。
一般的な動作において、LOP_FE750a〜bは、LUEのクラスタまたはバケットパケットプロセッサ(BPPP)から作業を受信する。応答が受信されると、当該応答はLRT765a〜bに配置され、随意的に、詳細については後述する動作において、同じパケットからの他のキーと合体される。1つのLOP_FE750aは、1つの対応するスーパークラスタ(例えば、図4Aのスーパークラスタ410a)とのインタフェースを有するように構成されるか、複数のスーパークラスタとのインタフェースを有するか、または別のLOP_FE750bと共通のスーパークラスタを共有してもよい。
LOP_BE760は、LUF_FE750a〜bとのインタフェースを有する。LOP_BE760は、応答のバッファリングおよび再順序付けを実現してもよい。応答のバッファリングおよび再順序付けは、ルックアップ順序を保存することによって行われ、また、応答を合体グループにグループ化するために行われる。LOP_BE760は、応答を集めて、探索の開始前にLIP424(図11)によって確保されたTXBUFF775スロットにそれらを配置する。応答が送信可能になると、LOP_BE760は、出力処理ブロックLOP_OP770用のTX_LISTレジスタにTXBUFF775のインデックスを配置する。
LOP_OP770は、TXのインタラーケンコントローラに対するインタフェースを管理する。LOP_OP770は、ホスト読取/書込応答の出力待ち行列、およびTX_LISTに従ってTXBUFFからルックアップ応答を引き出す直接メモリアクセス(DMA)エンジン772を含む。LOP_OP770は、内部待ち行列データを、ホストに出力するパケットにフォーマットする。
ルックアップ応答は、LIP424とLOP446との連携動作により追跡および処理される。上述のように、応答の追跡は、LIP424のディストリビュータ(例えば、460a〜b、図11)により、当該LIPのディストリビュータがTXBUFFにおけるフィールドを初期化したときに開始される。この動作は、LIP424のスケジューラ(例えば、428a〜b、図11)により、当該LIPのスケジューラがLRTおよびLRT_INFOテーブルを初期化したときに継続される。LOP_FE750a〜bは、この情報を使用して、所与のKEY/SXIDについての全てのツリーウォークの最良の応答を判定するための応答を処理する。次に、制御がLOP_BE760に渡され、終了済みのKEY/SXIDが処理される。LRT765aの合体ビットに基づき、LOP_BE760は、所与のXIDについての全てのSXIDを1つの応答に合体するか、または、応答が利用可能となり次第ホストに送る。TXIDの範囲に基づき、LOP_BE760は、この応答を再順序付けするか、または、対応する要求が受信された順序で応答を返す。
LOPの構成要素ブロックおよびそれらの動作については、図18〜図22Bを参照してさらに詳しく後述する。
図18は、例示的なLUFの応答処理フロントエンド(LOP_FE)750のブロック図である。LOP_FE750は、種々の構成要素のうち、LUFルール計算部(LRC)752a〜c、LUFルール計算部のプリプロセッサ(LRCP)753、およびLUF応答FIFO(LRF)754を含む。これらについては、詳しく後述する。
動作中、LOP_FE750は、サブツリー応答(STRSP)バス756を介して返されたクラスタおよびBPPからの応答を受信する。クラスタは、ルックアップ応答およびホスト読取/書込コマンドの応答の両方をSTRSPバス756において返す。BPPは、STRSPバスにおいてルックアップ応答のみを返す。BPPホスト読取/書込コマンドは、別のバスで返されてもよい。
STRSPバス756がルックアップ応答を搬送する場合、ルックアップ応答のそれぞれは、以下を含む。
●RSPTYPE−ルックアップ応答、OCM応答、テーブルまたはCSR応答を示す。
●KID(キーID)
●DATA−いずれのルールが一致したかを示す(SC Num、DDR/COMアドレス、および他の情報)。
●STMIN−結果の品質であり、LUFが最小値を選択する。同点の場合、最初に返された応答が勝つ。
一般に、LOP_FE750は、クロック毎に1つの新規応答を受け付ける。LOP_FE750は、性能に影響を与えずにクラスタにバックプレッシャーを行うように構成されなくてもよい。多数のサブツリーがバック・ツー・バック(連続パケット処理)のクロックでそれらの最終応答を返す場合、RESPONSE_FIFO754はフルになる場合がある。これを防ぐため、RESPONSE_FIFO754は、プログラム可能なウォーターマークCSRに基づいて、BPPおよびスーパークラスタの両方にストール信号を送ってもよい。
また、クラスタからのホスト読取/書込応答は、STRSPバス756を越えて送信されてもよい。このような応答は、その充填レベルをスーパークラスタによって管理することが可能な別のFIFO(図示せず)に流れてもよい。
LUFのルール計算部(LRC)752a〜cは、クラスタからのサブツリー応答(STRSP)をSTRSPバス756を介して受信する。LRCのうちの1つ(例えば、752c)は、BPPからの応答だけを受信してもよい。
各サブツリー応答(STRSP)は、以下を含んでいてもよい。
●STMIN−LOP446によって消費される
●STDATA−LOP446によって以下のように調整され、その後ホストに返される。
○応答がBPPからの場合、STDATA[32]は、DDRポート番号を含み、STDATA[31:0]は、16ビットの粒度を有するDDRアドレスを含む。
○応答がLCCからの場合、STDATA[23:0]は、OCMEMにおけるルールアドレス={SCL,CLNUM,CLADR,RULEOFF}を含む。この場合、LRCは、STDATA[32]を常に0に設定しなければならない。STDATA[31:24]は、LCCからゼロとして返されることが期待されるが、LRCは、返された全てのビットを使用しなければならない(ゼロのSTDATA[32]のみ)。
返された各STMIN応答について、LRC752a〜cは以下を実行する。
●LRT[VALID]==0の場合、返されたSTMINをLRTに書き込む。LRT[VALID]==1の場合、返されるSTMINをLRTのSTMINと比較し、2つの値のうちの最小値をLRTに再び書き込む。
●TWRSPCNTをデクリメントする(ツリーウォーク応答カウント)。TWRSPCNTがゼロになった場合、これは当該SXIDの応答が全て受信されたことを示す。その場合、KIDを応答FIFO(LRF)に書き込む。
●書き込み中のSTMINに関連付けられたSTDATAフィールドにLRT[STDATA]を設定する。
●応答がBPPからの場合、LRT[OCRF]をクリアし、そうでない場合は、LRT[OCRF]を設定する。
●応答にエラービットが設定されている場合、LRCは、これを「勝利」応答であるとみなし、当該応答と共に返されたデータを維持する。LRT[E]が既に設定されている場合は、新規応答を無視する。
LRC752a〜cのそれぞれは、同じKIDについての応答を同じクロックで受信してもよい。この結果、各LRC752a〜cが同じHPMルールおよびTWRSPCNTを同じクロックで更新しようとした場合に問題が生じる。これを回避するため、プリプロセッシングブロック753は、最小値を保持してそれ以外を廃棄することにより、一致するキーのSTRSP応答を1つの応答に結合する。「勝利」応答は、LRC752a〜cに対しては継続される一方、その他は削除される。LRC_TWRSPCNT_DEC[1:0]信号が生成されてLRC0に渡され、これにより、TWRSPCNTは、典型的なケースのように1ずつだけではなく、返された応答の数だけデクリメントされる。一致しないKIDの応答は、LRC_TWRSPCNT_DEC==1によって修正されることなく通過する。
OCMEMのホスト読込/書込応答ならびにスーパークラスタおよびBPPテーブルもまた、各自のクラスタおよびBPP応答バス756を介してLRCP753に流れる。このような応答は、LUF出力処理ブロック(LOP_OP770、図20)にリダイレクトされ、送信のためにバッファされる。これらは、LRC752a〜cに流れない場合もある。
また、LRCP753は、ルックアップクラスタコンプレックス(LCC)がデータを送ることを可能にする要求/承認機能を実現できる。
64個のエントリを有するLUF RESPONSE_FIFO(LRF)754は、そのキーの応答を全て受信した(STRSP(サブツリー応答)が決定されたことを意味する)キー/SXIDについてのKIDを保持する。このように、キー要求がLIP424によって複数のサブツリー要求に分割された場合(図11を参照して上述)、対応する結果は、LRF754において1つの応答にマージされる。LOP_OP770(図17、図20)は、LRT765a〜bからTXBUFF775に転送可能なエントリを判定するためにLRF754を読み取る。
LRF754には、LRC752a〜cの出力に接続されたバスとBPPバスとによって提供がなされる。例示的な実施形態においては、各クロックサイクル中に、クロック毎に最大3個のKIDをLRF(FIFO)に書き込んでもよい。クロック毎に1つのエントリがLRFから読み取られる。一般に、読み取りは、書き込みよりも素早く行われる。1つのKID書き込みについて複数のSTRSPが必要であるためである。
連続クロックサイクルにおいてバック・ツー・バックで終了する個々のキーが整列するため、LRF(FIFO)754は、場合によっては、フルになり(空きがなくなり)始めることがある。プログラム可能なウォーターマーク(閾値)が、LRF754が間もなくフルになろうとしている時点を判定できる。ウォーターマークは、LRCP753(LUFルール計算部プリプロセッサ)がSTRSPバス756で応答を受け付けることを停止させてもよい。
図19は、例示的な実施形態における例示的なルックアップ応答処理バックエンド(LOP_BE)のブロック図である。LOP_BE760は、LOP_FE750において応答FIFO754(図18)から作業を引き出す。LOP_BE760は、アクセスされているTXIDの順序グループによって決定される順番応答(順番通りの応答)および順番外応答(順番に従わない応答)の両方で作業を行う。グループ0の範囲のTXIDは、順番通りではない。他の全てのTXIDは、順番通りであってもよい。LOP_BE760は、以下の順番応答および順番外応答に適応する2つのモードのうちの一方で動作する。
●順番応答(ポーリングモード):1つのポインタがLRTの最も古い要求(TXIDをその順序グループ範囲内で循環的にウォークすることにより決定される)に対応するTXBUFFエントリを追跡する。そのXIDについての最後のSTRSPが受信されると、全てのSXIDは、ホストへの送信のためにエンキューされ、LRTから除去される。このポインタは、その後、2番目に古いTXIDを指すようにインクリメントされる。これにより、次の順番応答が返されるまでHOLブロッキングが生じる。
●順番外応答(割込モード):XIDについての最後のSTRSPが返されることにより、全てのSXIDがホストへの送信のためにエンキューされ、LRTから除去される。
加えて、LOP_BE760は、複数のルックアップ応答(LURSP)を1つのパケットに合体するか、またはそれらを個別に送ることができる。全ての順番応答を合体してもよい。順番外(OOO)応答は、合体されるか、または、入手するとすぐにホストに返されてもよい。上記動作の詳細について、以下に説明する。
順番処理および順番外処理の両方の最初のステップとして、LOP_BE760は、非空(空きのない状態)になりつつある応答FIFOに応答して割込モードで作業を行う。順番外応答を完全に処理するとともに、順番応答を処理する最初のステップを行う。順番応答の最後の処理は、以下に説明する順番マシンが行う。
順序付けおよび合体の全ての場合において、1つのエントリがFIFO読取ブロック767によって応答FIFO754から読み取られると、LOP760は、以下を行う。
●ルックアップ応答テーブル(LRT)765、次に、LRT_INFO766を読み取る。
●LRT765およびLRT_INFO766が読み取られる際に、応答は、以下の利用可能な情報を有する。
○KID
○TXID_FIRST
○TXID_LAST
○SXID−いずれのSXIDがこのSXIDであるか
○SXID_NUM−この要求にいくつのSXIDが存在するか
○DONE_CNT−合体するSXIDはいくつ残っているか
●LRTデータをTXBUFF775に移動
○SXID0またはSXID1データをLRTからTXBUFFに移動する際、TXBUFFへのTXIDインデックスとしてTXID_FIRSTが使用される。
○SXID2またはSXID3を移動する際、TXIDインデックスとしてTXID_LASTが使用される。
○SXID0またはSXID2データをSTDATA_EVENに移動させる。
○SXID1またはSXID3データをSTDATA_ODDに移動させる。
●KIDを、SXID0でない場合は、フリープールに返す。以下のテーブルによって示されるまで、SXID0のためにKIDを保持する。
●LOPは、表1に示す以下の追加の動作を行う。
Figure 2014524688
順番マシン768a〜bは、応答が最終処理順ではなく、要求順で返されるように応答を再順序付けすることを提供する。順番マシン768a〜bは、IN_ORDER_MIN_NからIN_ORDER_MAX CSRの値によって規定される1つの領域における第1の無効TXBUFF位置にて待機する。LOP_FEが当該位置についての有効フラグを設定して、全ての必要な情報がLRT765からTXBUFF775に移動したことを示す。そして、順番マシン768a〜bは、TXBUFF775のこのラインを処理し、次に、処理の繰り返しを待つTXBUFF775の次の位置にインクリメントする。TXBUFF775のエントリは、受信パケットが到着する際に、連続的に増加する順序で割り当てられているため、順番マシン768a〜bは、TXBUFF775に到着した順に関係なく、リストから順にエントリを引き出す。1つの合体されたパケットに必要な全てのTXIDを処理することを決定した場合、順番マシン768a〜bは、これらのTXIDをTXLIST769に書き込む。
順番マシン768a〜bは、一度に最大2つのTXBUFFラインをTXLIST769に配置してもよい。下流の出力プロセッサは、これらのラインをFIFOからバック・ツー・バックで読み取ってもよい。このモードでは、キーが3つまたは4つの場合、マシン768a〜bは、TXID_FIRSTをTXID_FIRST_REGISTERに格納し、TXID_FIRSTおよびTXID_LASTを1つのサイクル中にTXLIST769に書き込まなければならない。順番外マシンと同様、いずれのSXIDで作業を行っているかを追跡するためにSXID_COUNTERを保持する。順番マシン768a〜bの動作については、表2に詳細に示す。
Figure 2014524688
TXLIST769は、TXIDのFIFOである。TXLIST769は、LOPによって書き込みされ、TX待ち行列DMAエンジン(図20を参照して後述)によって使用されて、ホストへの返信のためにいずれのTXBUFFをインタラーケンSHIMに転送するかが決定される。順番処理の場合、リスト上のTXIDの順序が、一般に、ホストへの送信順序を決定する。
TXLIST769は、1クロックにつき1つまたは2つのエントリを受け付けてもよい。各エントリは、TXBUFF775におけるラインを表し、TXBUFF775は、1つまたは2つのHPRULEエントリ(1つまたは2つのSXIDを表す)を保持する。このため、TXLIST769に書き込まれた各ラインは、所与のXIDの応答の全てを表すことができる。
TXLIST769は、DMAエンジン(図20)によって一度に1つのエントリずつ読み取られる。TXIDがこのリストに配置される順序が、一般に、送信順序を決定し得る。例示的な実施形態において、TXLIST769は、以下の情報を含む。これらは、対応するエントリに1つまたは複数のビットとして格納することができる。
C−合体
●C==1の場合、最大4つのキーを用いて応答をキー応答に形成する。
●C==0の場合、1つのキーを用いてルックアップ応答を返す。
SXID_INFO−定義は合体に依存する。
●C==1の場合、SXID_INFOは合体するキーの数である。SXID_INFO==0の場合、4つのキーを合体する。
●C==0の場合、SXID_INFOは、このキーのSXIDである。SXID_INFO==0の場合、これは、SXID0である。
FREE_TXID−パケット形成後に、有効データを有するTXIDを開放してもよいことを示す。
開放されるTXIDは、以下のように決定される。
●C==0の場合、
○SXID_INFOが、これがSXID0またはSXID1であることを示す場合、TXID_FIRSTを開放する。
○SXID_INFOが、これがSXID2またはSXID3であることを示す場合、TXID_LASTを開放する。
●C==1の場合
○SXID_INFOがライン上の1つまたは2つの有効なSXIDを示す場合、TXID_FIRSTのみを開放する。
○SXID_INFOがライン上の3つまたは4つの有効なSXIDを示す場合、TXID_FIRSTおよびTXID_LASTの両方を開放する。
TXID_FIRST−SXID0およびSXID1を保持するTXID。
TXID_LAST−SXID2およびSXID3を保持するTXID。
●C==0の場合、SXID_INFOが示すSXIDの値に応じて、TXID_FIRSTまたはTXID_LASTのうちの一方のみが有効データを有する。
●C==1の場合、SXID_INFOが示すSXIDのカウントに応じて、有効データは、TXID_FIRSTのみに存在するか、またはTXID_FIRSTおよびTXID_LASTに存在する。
図20は、例示的な実施形態における例示的なLOP出力プロセッサ(LOP_OP)770のブロック図である。TXQ DMAエンジン772は、TX_LIST FIFOからTXIDを引き出す。次に、TXBUFF775の対応する位置が、インタラーケンを介した送信のためにTX FIFO778に配置される前に、読み取られて応答パケットに形成される。
LOP_OP770は、2つの異なるモード、すなわち合体モードおよび非合体モードで動作してもよい。合体モードは、TXLIST769 FIFO(上述)におけるCビットによって決定される。パケットが合体される場合、LOP_OP770は、SXID_INFOを用いて、上記最大4つのキーに必要な全てのTXIDを指すポインタを取得するためにTXLIST769の1つまたは2つのラインを読み出す必要があるか否かを判定する。次に、これら4つのキーは、1つのパケットに結合(合体)される。パケットが合体されない場合、TXLIST769は、1つのラインにつき1つのSXIDを有する。パケットが合体されない場合、SXID_INFOは、SXIDを指定し、適切なTXIDは以下のように配置される。
●SXID0−TXID_FIRSTのみを使用してTXBUFFを索引付けする、DATA_EVENフィールドが有効である
●SXID1−TXID_FIRSTのみを使用してTXBUFFを索引付けする、DATA_ODDフィールドが有効である
●SXID2−TXID_LASTのみを使用してTXBUFFを索引付けする、DATA_EVENフィールドが有効である
●SXID3−TXID_LASTのみを使用してTXBUFFを索引付けする、DATA_ODDフィールドが有効である
LOP_OPは、順番通りモードと順番外(順番通りでない)(OOO)モードとを区別しない。なぜなら、TXLISTのエントリは、必要とされる場合は、既に順番通りで配置されていると考えられるからである。LOP_BE760は、パケットが順番通りである場合、Cに設定されてもよい。
パケットフォーマッタ779は、インタラーケンを介してホストに返信されるパケットをフォーマットする。ルックアップ応答は、1つのSXIDまたは複数の合体SXIDであってもよい。OSI インタラーケンコアに対するインタフェースは、128ビットであってもよい。したがって、各サイクルは、2つのインタラーケンワードを搬送する。フォーマッタ779は、複数のSXID応答をインタラーケンコアのための128ビットのパケットにパックする。
図21は、本発明の実施形態を実現するための例示的なデータ構造のブロック図である。具体的には、LRT765、LRT_INFO766、およびTXBUFF775のテーブルのエントリをRAMまたはフロップのアレイなどのメモリにおいて編成できるものとして示す。テーブルのそれぞれにおいて、ビットを、必要とされる同時アクセスの数によって編成してもよい。例えば、LRT765のTWRSPCNTのビットは、クロック毎に読み取りおよび書き込みアクセスを行い、1つのクロックにつき最大3つの応答を処理してもよく、同時に、スケジュールされている新規キーのための書き込みを処理してもよい。便宜的な実施形態において、TWRESPCNTおよび類似した複数のアクセスフィールドは、フロップのアレイに編成してもよい。
LRT765およびLRT_INFO766のテーブルは、ルックアップ要求がクラスタに送られる際に、LIP424(図11)のスケジューラ428a〜bによって初期化される。LRT765およびLRT_INFO766のテーブルは、LUFの応答プロセッサLRC752a〜cによって使用され、各キーの最小の最優先ルール(HPルール)を決定し、キーの全ての応答が返されたことを判定する。各LRT765エントリは、進行中の1つのキー探索(1つのSXID)に対応する。LRT765は、KIDによって索引付け/参照され、KIDは、KIDフリープール(後述)から配布される。スケジューリングの後、LRT765のフィールドがLUF出力プロセッサフロントエンド(LOP_FE)765a〜bによって更新される。
便宜的な実施形態によると、LRT765は、以下のように編成されてもよい(図21を参照)。
●E(エラー)、なし、修正可能エラー、修正不可能エラーまたは致命的エラー。スケジューラよってクリアまたは設定され、LOP_FEによって更新される。
●TWRSPCNT(ツリーウォーク応答カウント)LOP_FEは、応答が受信されるたびにデクリメントされる。TLTから読み取った数にスケジューラにより初期化される。ゼロの場合、このSXIDの全ての応答は返されている。
●VALID−スケジューラによってクリアされ、LOP_FEは、これを読み取り、更新する応答データフィールドのバンクに対して常に1を設定する。LOP_FEがゼロを読み取った場合、LOP_FEは、対応するバンクについてのLRTからの応答データフィールドがまだ有効ではないことを認識する。
○Valid=3’b1xx−RSP0バンクは有効である
○Valid=3’bx1x−RSP1バンクは有効である
○Valid=3’bxx1=BPPバンクは有効である
●応答データフィールド−フロップのアレイ、または、有効に管理されたデュアルポートの3つのバンクによって実現される
○STMIN(最小ルール)、有効==1の場合、LOP_FEは、LCCから返された値をLRTから読み取られた値と比較し、2つのうちの最小の値を保持する。
○PORT−BPPからの場合、これはBPP応答から返されたSTDATA[32]である。LCCからの場合、これはゼロである。
○OCRF(オンチップルールフラグ)。応答がBPPからの場合、LOP_FEは、これを0に設定する。応答LCCからの場合、LOP_FEは、これを1に設定する。
○STDATA−応答としてホストに返されるデータ。LCCが「NO MATCH」を示すSTMINを返した場合、LOP_FEは、これを強制的に0xFFFFFFFFにする。そうでない場合、LOP_FEは、最小STMINに対応するSTDATA値を使用する。
●LRTID−LRT_INFOテーブルに索引付けされる。LRT_INFOは、グループ全体についての情報を保持するので、各KIDエントリによって指し示される。
●SXID−このキーのサブ転送ID。0=SXID0、1=SXID1、2=SXID2、3=SXID3。
●C−この応答を合体する。この情報は、GDTから読み取られる。
●TID−この転送のツリーID。このSXIDの全ての応答が返されたときに、対応するTIDカウンタをデクリメントする(TWRSPCNT==0)。
各LRT_INFO766エントリは、同じルックアップ要求についての全てのキーに対応する(上述の通り、1つのルックアップ要求は、それぞれが複数のSXIDを有するキーを最大4つ生成できる)。LRT_INFO766のテーブルは、キーのグループを合体するために必要な情報を含む。LRT_INFO766のテーブルは、LRTIDフリープール(後述)から配布されるLRTIDによって索引付け/参照される。一実施形態において、LRT_INFOは、LRTと同じ深さを有する。
便宜的な実施形態によると、LRT_INFO766は、以下のように編成されてもよい(図21を参照)。
●DONE_COUNT−まだ合体する必要があるこのグループのキーの数のカウンタ。これは、スケジューラによって設定され、SXIDが全ての応答を受信するたびにデクリメントされる(すなわち、TWRSPCNTがゼロになる)。
●TXID_FIRST−SXID0およびSXID1に対応するTXIDを指すポインタ。(順番外モード(OOO)の際に合体を行う場合に、1つのクロックでTX LISTの両方のTXIDを転送するために使用される。)。
●TXID_LAST−SXID2およびSXID3に対応するTXIDを指すポインタ。(順番外モード(OOO)の際に合体を行う場合に、1つのクロックでTX LISTの両方のTXIDを転送するために使用される)。
●NUM_OF_SXIDS−この要求のSXIDの合計数。2’b00は、4つのSXIDを示す。
TXBUFF775のテーブルは、要求がホストから到着した際にLIPのディストリビュータ460a〜b(図11)によって初期化される。TXBUFF775のテーブルは、LOP出力プロセッサ(LOP_OP)770(図20)によって使用され、要求が受信された順と同じ順番で応答がホストに送り返されるように、必要に応じて応答は再順序付けされる。また、TXBUFF775のテーブルは、ルックアップ応答がクラスタによって返される速さが、ホストインタフェースがそれらを排出しうる速さを超えた場合に、時間のバッファリングを可能にする。TXBUFF775のテーブルは、TXIDフリープール(より詳細には後述)から配布されるTXIDによって索引付け/参照される。
GDTテーブル426(図11)のORDER_GROUPフィールドは、応答が要求順で返されるか、あるいは応答が順番通りではなく返されるか(応答が返送可能になり次第返されることを意味する)を定義する。
便宜的な実施形態によると、TXBUFF775は、以下のように編成されてもよい(図21Bを参照)。
●E(エラー)、なし、修正可能エラー、修正不可能エラーまたは致命的エラー。
●DATA ODD−SXID1またはSXID3の最小ルール
○OCRF(オンチップルールフラグ)LCCからの結果の場合に設定し、BPPについてはクリアされる
○PORT−BPPからの結果の場合はDDRポート、LCCの場合はクリアされる
○STDATA−BPPの場合はDDRのアドレス、LCCの場合はクラスタのアドレス
●DATA EVEN−SXID0またはSXID2の最小ルール
○上記DATA_ODDと同じサブフィールド定義。
●XID−転送ID
●VALID_EVEN,valid_odd−対応するDATAエントリが有効である場合、1に設定される−順番エンジンによってのみ使用される
●C−この応答を合体する。この情報は、GDTから読み取られる。
●LAST−このTXBUFFラインがグループの最後のSXIDを含むことを示す 。
●Need both−0は、偶数データ/有効のみが必要であることを示す。1は、偶数および奇数の両方が必要であることを示す。
KIDフリープールは、スケジューラにKIDを配布する。各KIDは、ルックアップ応答テーブル(LRT)765の1つのラインを表す。KIDは、任意の順でスケジューラに配布される。KIDは、LRT765データがTXBUFF775に移動するとすぐに、LURSPエンジンによって一度に1つずつ任意の順でフリープールに返される。KIDフリープールは、FIFOとして実現してもよく、各位置を自身のアドレスに設定することによって初期化してもよい。例示的な実施形態において、1つのスーパークラスタにつき1つのKIDフリープールが存在してもよい。
LRTIDフリープールは、LRTIDをスケジューラに配布する。各LRTIDは、ルックアップ応答情報テーブル(LRT_INFO)766の1つのラインを表す。LRTIDは、任意の順でスケジューラに配布される。LRTIDは、キーが合体し終わると、LURSPエンジンによって一度に1つずつ任意の順でフリープールに返される。LRTIDフリープールは、FIFOとして実現してもよく、各位置を自身のアドレスに設定することによって初期化してもよい。例示的な実施形態において、1つのスーパークラスタにつき1つのLRTIDフリープールが存在してもよい。
TXIDフリープールは、スケジューラ428a〜b(図11)にTXIDを配布する。各TXIDは、TXBUFF775のアレイの1つのラインを表す。TXIDフリープールは、メモリなしのFIFOで構成され、フルに初期化されてもよい。TXIDフリープールは、順番通りの動作のために用いてもよく、その場合エントリが昇順で配布され、同じ順で返される。したがって、TXBUFF775を索引付けするために増加するTXIDを使用する場合、エントリは、順番通りに引き出される。
返されたTXIDは、最後尾のポインタと比較されてもよい。エラー出力(FIFOエラー)は、これらの値が常に、TXBUFFにおける何らかのエラーを示すミスマッチとなり、最後尾ポインタがインクリメントされない場合に設定することができる。先頭ポインタが最後尾ポインタに到達すると、動作が最終的にストールする場合がある。FIFOがフルのときにプッシュしようとした場合は、別のエラー出力(オーバーフローエラー)が設定され、これもまた、TXBUFF775におけるエラーを示す。ポップ出力インタフェース上のTXID出力は、そのサイクルにおけるempty信号(空き信号)が低(ロー)の場合にのみ有効としてもよい。
順番通りのフリープールの最小値および最大値は、64の位置粒度でCSRを介してホストによりプログラム可能である。このCSRは、最大値のビット[11:6]を設定する。最小値のビット[11:6]は、前のグループの最大値に1を加算することによって決定される。最大値のビット[5:0]は全て1に設定され、最小値のビット[5:0]は全てゼロに設定される。これらの値の変更後、変更を有効にするには、txid_reset_pointers CSRが1から0に遷移しなければならない。例示的な実施形態において、2つのイン・オーダーフリープールがそれぞれの順序グループ1および2について実現されてもよい。
順番通りではないTXIDフリープールは、スケジューラにTXIDを配布する。この配布は、順序グループ0に対応する。各TXIDは、TXBUFF775のアレイの1つのラインを表してもよい。このアレイは、FIFOであってもよく、各エントリが自身のアドレスを含むように初期化されてもよい。
順番通りの動作の際、エントリは、昇順で配布され、同じ順で返される。したがって、TXBUFF775を索引付けするために増加するTXIDが使用されると、当該エントリは、順番に引き出される。これに対し、順番通りではない(OOO)動作の際、エントリは任意の順で返される。このため、リストは、順番通りではなくなる場合がある。このような動作において順序は無視されるため、順序の欠如が不利になることはない。例示的な実施形態において、順序グループ0に1つの順番外プールを実現してもよい。アウト・オブ・オーダーフリープールからのTXIDの最大値は、CSRを介して、64の位置粒度でホストによりプログラム可能である。これらの値の変更後、変更を有効にするために、txid_reset_pointers CSRは、1から0に遷移されてもよい。
図22Aは、1つのSXIDに属する複数のサブツリー応答から最優先応答を選択する例示的な手順のフローチャートである。この処理を「マージング」と呼ぶ。 図22Bは、例示的な実施形態による、内部リソースから受信された応答の順序付けおよび合体を行うための例示的な手順のフローチャートである。この手順は、図17〜図21を参照して上述の各処理から導き出されたものである。この手順は、LOP(例えば、図17のLOP446)によって実行されてもよい。また、この手順は、以下に説明する例示的な手順を表す命令をロードし実行することによってLOPに変形されたコンピュータ(またはプロセッサ)によって実行されてもよい。
本発明の実施形態によると、LUF出力プロセッサ(LOP)は、他のノードのネットワークにおける、スイッチまたはルータなどの物理ネットワークノード(すなわち装置)であってもよい。LOPは、当該ノードの構成要素、モジュール、ブレードまたはカードとしての物理ネットワークノード(すなわち装置)の一部であってもよい。
本発明の別の実施形態によると、LOPは、プロセッサ、メモリ、通信インタフェースなどを有する汎用コンピュータである。(図23を参照してより詳細に後述)。汎用コンピュータは、例えば、コンピュータにホストから受信したルックアップ要求を処理して最良の一致を判定させ、応答をホストに返させる命令をプロセッサにロードすることにより、LOPとその構成要素とに変換される。
図23は、本発明の様々な実施形態を実現できるコンピュータ500の内部構造のブロック図である。コンピュータ500は、バスがコンピュータまたは処理システムの構成要素間のデータ転送に使用されるハードウェアラインのセットであるシステムバス579を含む。バス579は、本質的には、コンピュータシステムの異なる要素(例えば、プロセッサ、ディスク記憶、メモリ、入出力ポート、ネットワークポートなど)を接続し、これらの要素間での情報の転送を可能にする共有コンジットである。システムバス579には、様々な入出力装置(例えば、キーボード、マウス、ディスプレイ、プリンタ、スピーカなど)をコンピュータ500に接続するためのI/Oデバイスインタフェース582が取り付けられている。ネットワークインタフェース586により、コンピュータ500は、ネットワークに取付けられた様々な他の装置に接続することができる。メモリ590は、本発明の実施形態(例えば、図8の手順)を実現するために使用されるコンピュータソフトウェア命令592およびデータ594のための揮発性記憶装置を提供する。ディスク記憶595は、本発明の実施形態を実現するために使用されるコンピュータソフトウェア命令592およびデータ594のための不揮発性記憶装置を提供する。また、中央処理装置584もシステムバス579に取り付けられており、コンピュータ命令の実行を行う。
一実施形態において、プロセッサのルーチン592およびデータ594は、本発明のシステムのためのソフトウェア命令の少なくとも一部を提供する、コンピュータ可読媒体(例えば、1つまたは複数のDVD−ROM、CD−ROM、ディスケット、テープなどの取り外し可能な記憶媒体)を含むコンピュータプログラム製品(総じて592で示す)である。コンピュータプログラム製品592は、当該技術分野で周知である任意の適切なソフトウェアインストール手順によってインストールできる。別の実施形態において、ソフトウェア命令の少なくとも一部を、ケーブル、通信および/または無線接続を介してダウンロードしてもよい。
さらに、本発明の実施形態は、各種コンピュータアーキテクチャにおいて実現することができる。図23の汎用コンピュータは、本発明の実施形態を説明するためのものであって、限定するものではない。
本発明をその例示的な実施形態を参照しながら詳細に説明したが、本発明は、添付の請求の範囲により包含される本発明の範囲から逸脱することなく、形態および細部において種々の変更が可能であることが当業者には理解される。
実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの組み合わせによって実現してもよい。また、実施形態は、非一時的な機械可読媒体に格納された命令として実現してもよく、これらの命令は、1つまたは複数の手順によって読み取られ、実行されてもよい。非一時的な機械可読媒体は、機械(例えば、計算装置)によって読み取り可能な形式で情報を格納および送信するための任意の機構を含んでもよい。例えば、非一時的な機械可読媒体は、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置等を含んでいてもよい。さらに、本明細書において、ファームウェア、ソフトウェア、ルーチン、または命令は、ある特定の動作を実行するものとして説明されている場合がある。しかし、かかる説明は便宜上のものに過ぎず、また、かかる動作は、実際には上記ファームウェア、ソフトウェア、ルーチン、命令等を実行する計算装置、プロセッサ、コントローラ、または他の装置による結果であることが理解される。
なお、ブロック図およびフローチャート(例えば、図6)は、より多いまたはより少ない要素を含んでいたり、配置が異なっていたり、表現が異なる場合がある。本発明の実施形態の実行を説明するブロック図およびフローチャートならびにブロック図およびフローチャートの数は、実装において規定されることが理解される。

Claims (29)

  1. パケットを処理する方法であって、
    パケットに対するルールマッチングを行う処理クラスタから複数の応答を受信するステップであって、前記複数の応答が、前記パケットに関連するルックアップ要求に応じたものである、ステップと、
    前記複数の応答が合体されるべきか否かを、前記パケットの合体ビットに基づいて判定するステップと、
    ルックアップ結果をホストプロセッサに出力するステップであって、前記ルックアップ結果が、前記複数の応答が合体されるべきか否かに基づいて選ばれた前記複数の応答を含む、ステップとを備えた、パケット処理方法。
  2. 請求項1に記載のパケット処理方法において、さらに、
    前記複数の応答に基づいてルックアップ応答テーブルを更新するステップであって、前記ルックアップ応答テーブルが、複数の処理クラスタにおける処理中のルックアップ要求を示す、ステップを備えた、パケット処理方法。
  3. 請求項2に記載のパケット処理方法において、前記合体ビットが前記ルックアップ応答テーブルに格納される、パケット処理方法。
  4. 請求項1に記載のパケット処理方法において、さらに、
    前記複数の応答を伝送バッファに転送するステップを備えた、パケット処理方法。
  5. 請求項4に記載のパケット処理方法において、さらに、
    前記複数の応答の受信よりも前に前記複数の応答を配置するための前記伝送バッファのスロットを設定するステップを備えた、パケット処理方法。
  6. 請求項5に記載のパケット処理方法において、前記選ばれた複数の応答が、前記スロットに配置される、パケット処理方法。
  7. 請求項5に記載のパケット処理方法において、前記スロットが、他のスロットに対して所定の順序を有し、前記ルックアップ結果が前記所定の順序で出力されるように設定されている、パケット処理方法。
  8. 請求項4に記載のパケット処理方法において、さらに、
    複数のグループを設定するステップであって、各グループが、前記複数の応答の受信よりも前に前記複数の応答を配置するための前記伝送バッファの複数のスロットを有する、ステップを備えた、パケット処理方法。
  9. 請求項8に記載のパケット処理方法において、前記複数のグループのうちの第1のグループにおける応答が、前記第1のグループにおける他の応答に対して所定の順序で出力される、パケット処理方法。
  10. 請求項9に記載のパケット処理方法において、前記複数のグループのうちの第2のグループにおける応答が、前記第2のグループにおける他の応答に対する順序に関係なく出力される、パケット処理方法。
  11. 請求項10に記載のパケット処理方法において、さらに、
    前記複数のスロットのルックアップ結果に関連するパケットのデータに基づいて、前記第1および第2のグループのいずれか一方に、前記複数の応答を配置するステップを備えた、パケット処理方法。
  12. 請求項1に記載のパケット処理方法において、さらに、
    前記ルックアップ結果が割り込み設定を含むか否かを検出するステップと、
    割り込み設定に応答して、ルックアップ結果の所定の順序に関係なく、前記ルックアップ結果を前記ホストプロセッサに出力するステップとを備えた、パケット処理方法。
  13. 請求項12に記載のパケット処理方法において、前記ルックアップ結果は、前記複数の応答のうちの1つを含み、前記複数の応答のうちの前記1つは、最初に受信された応答である、パケット処理方法。
  14. 請求項1に記載のパケット処理方法において、前記複数の応答は複数のサブツリー応答を含み、当該方法は、さらに、
    前記複数のサブツリー応答をマージするステップを備えた、パケット処理方法。
  15. 請求項14に記載のパケット処理方法において、前記複数のサブツリー応答をマージするステップが、前記サブツリー応答のうちの、最優先ルールの一致を有する1つのサブツリー応答を選択することと、前記最優先ルールの一致がないサブツリー応答を削除することとを含む、パケット処理方法。
  16. パケットを処理する装置であって、
    パケットに対するルールマッチングを行う処理クラスタから複数の応答を受信するフロントエンドであって、前記複数の応答が、前記パケットに関連するルックアップ要求に応じたものである、フロントエンドと、
    前記複数の応答を合体すべきか否かを、前記パケットの合体ビットに基づいて判定するバックエンドと、
    ルックアップ結果をホストプロセッサに出力する出力モジュールであって、前記ルックアップ結果が、前記複数の応答が合体されるべきか否かに基づいて選ばれた前記複数の応答を含む、モジュールとを備えた、パケット処理装置。
  17. 請求項16に記載のパケット処理装置において、さらに、
    ルックアップ応答テーブルを備え、
    前記フロントエンドは、前記複数の応答に基づいて前記ルックアップ応答テーブルを更新し、前記LRTは、複数の処理クラスタにおける処理中のルックアップ要求を示す、パケット処理装置。
  18. 請求項17に記載のパケット処理装置において、前記合体ビットが前記ルックアップ応答テーブルに格納される、パケット処理装置。
  19. 請求項16に記載のパケット処理装置において、さらに、
    前記複数の応答を受信する伝送バッファを備えた、パケット処理装置。
  20. 請求項19に記載のパケット処理装置において、前記バックエンドが、前記複数の応答の受信よりも前に前記複数の応答を配置するための前記伝送バッファのスロットを設定する、パケット処理装置。
  21. 請求項20に記載のパケット処理装置において、前記選ばれた複数の応答が、前記スロットに配置される、パケット処理装置。
  22. 請求項20に記載のパケット処理装置において、前記スロットが、他のスロットに対して所定の順序を有し、前記ルックアップ結果が前記所定の順序で出力されるように設定されている、パケット処理装置。
  23. 請求項16に記載のパケット処理装置において、前記アウトプットブロックが、さらに、前記ルックアップ結果が割り込み設定を含むことを示す信号に応答して、ルックアップ結果の所定の順序に関係なく、前記ルックアップ結果を前記ホストプロセッサに出力する、パケット処理装置。
  24. 請求項23に記載のパケット処理装置において、前記ルックアップ結果が、前記複数の応答のうちの1つを含み、前記複数の応答のうちの前記1つは、最初に受信された応答である、パケット処理装置。
  25. 請求項16に記載のパケット処理装置において、前記複数の応答は複数のサブツリー応答を含み、前記フロントエンドが、前記複数のサブツリー応答をマージする、パケット処理装置。
  26. パケットを処理する方法であって、
    複数の応答を配置するための伝送バッファのスロットを設定するステップであって、前記スロットが、他のスロットに対して所定の順序を有するステップと、
    パケットに対するルールマッチングを行う処理クラスタから前記複数の応答を受信するステップであって、前記複数の応答が、前記パケットに関連するルックアップ要求に応じたものである、ステップと、
    前記複数の応答を、順番通りに送信するか、または順番通りではなく送信するかを決定するステップと、
    前記決定に従ってルックアップ結果をホストプロセッサに出力するステップであって、前記ルックアップ結果が、選ばれた前記複数の応答を含む、ステップとを備えた、パケット処理方法。
  27. 請求項26に記載のパケット処理方法において、さらに、
    前記複数の応答に基づいてルックアップ応答テーブルを更新するステップであって、前記ルックアップ応答テーブルが、複数の処理クラスタにおける処理中のルックアップ要求を示す、ステップを備えた、パケット処理方法。
  28. 請求項27に記載のパケット処理方法において、前記複数の応答を、順番通りに送信するか、または順番通りではなく送信するかを決定する前記ステップは、前記パケットに対して順番か順番外かの状態を示すグループ定義テーブルを照会することを含む、パケット処理方法。
  29. 請求項26に記載のパケット処理方法において、さらに、
    前記複数の応答を前記伝送バッファの前記スロットに転送するステップを備えた、パケット処理方法。
JP2014524092A 2011-08-02 2012-08-02 ルックアップ・フロントエンド・パケット出力プロセッサ Active JP5657840B2 (ja)

Applications Claiming Priority (23)

Application Number Priority Date Filing Date Title
US201161514447P 2011-08-02 2011-08-02
US201161514459P 2011-08-02 2011-08-02
US201161514400P 2011-08-02 2011-08-02
US201161514379P 2011-08-02 2011-08-02
US201161514406P 2011-08-02 2011-08-02
US201161514407P 2011-08-02 2011-08-02
US201161514438P 2011-08-02 2011-08-02
US201161514344P 2011-08-02 2011-08-02
US201161514463P 2011-08-02 2011-08-02
US201161514382P 2011-08-02 2011-08-02
US201161514450P 2011-08-02 2011-08-02
US61/514,450 2011-08-02
US61/514,438 2011-08-02
US61/514,400 2011-08-02
US61/514,407 2011-08-02
US61/514,463 2011-08-02
US61/514,447 2011-08-02
US61/514,379 2011-08-02
US61/514,459 2011-08-02
US61/514,406 2011-08-02
US61/514,382 2011-08-02
US61/514,344 2011-08-02
PCT/US2012/049405 WO2013020001A1 (en) 2011-08-02 2012-08-02 Lookup front end output processor

Publications (2)

Publication Number Publication Date
JP2014524688A true JP2014524688A (ja) 2014-09-22
JP5657840B2 JP5657840B2 (ja) 2015-01-21

Family

ID=46642652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014524092A Active JP5657840B2 (ja) 2011-08-02 2012-08-02 ルックアップ・フロントエンド・パケット出力プロセッサ

Country Status (5)

Country Link
US (27) US8954700B2 (ja)
JP (1) JP5657840B2 (ja)
KR (2) KR101476113B1 (ja)
CN (2) CN103858392B (ja)
WO (5) WO2013019981A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014219980A (ja) * 2013-05-06 2014-11-20 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ制御装置及びメモリ制御方法
JP7464586B2 (ja) 2018-12-18 2024-04-09 アーム・リミテッド メモリ完全性チェックのための完全性ツリー

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954700B2 (en) 2011-08-02 2015-02-10 Cavium, Inc. Method and apparatus for managing processing thread migration between clusters within a processor
US9183244B2 (en) 2011-08-02 2015-11-10 Cavium, Inc. Rule modification in decision trees
US10229139B2 (en) 2011-08-02 2019-03-12 Cavium, Llc Incremental update heuristics
US8923306B2 (en) 2011-08-02 2014-12-30 Cavium, Inc. Phased bucket pre-fetch in a network processor
US9208438B2 (en) 2011-08-02 2015-12-08 Cavium, Inc. Duplication in decision trees
US9159420B1 (en) * 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
US9767058B2 (en) 2011-11-17 2017-09-19 Futurewei Technologies, Inc. Method and apparatus for scalable low latency solid state drive interface
US20130135816A1 (en) * 2011-11-17 2013-05-30 Futurewei Technologies, Inc. Method and Apparatus for Scalable Low Latency Solid State Drive Interface
US9049200B2 (en) * 2012-07-27 2015-06-02 Cisco Technology, Inc. System and method for improving hardware utilization for a bidirectional access controls list in a low latency high-throughput network
US9143449B2 (en) * 2012-07-31 2015-09-22 Cisco Technology, Inc. Methods and apparatuses for improving database search performance
US9100366B2 (en) * 2012-09-13 2015-08-04 Cisco Technology, Inc. Early policy evaluation of multiphase attributes in high-performance firewalls
US20140089619A1 (en) * 2012-09-27 2014-03-27 Infinera Corporation Object replication framework for a distributed computing environment
US9307059B2 (en) * 2012-11-09 2016-04-05 Sap Se Retry mechanism for data loading from on-premise datasource to cloud
US9185057B2 (en) * 2012-12-05 2015-11-10 The Intellisis Corporation Smart memory
US9536016B2 (en) * 2013-01-16 2017-01-03 Google Inc. On-disk multimap
WO2014117353A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Incremental update of a shape graph
US9424366B1 (en) * 2013-02-11 2016-08-23 Marvell International Ltd. Reducing power consumption in ternary content addressable memory (TCAM)
US9578061B2 (en) 2013-03-13 2017-02-21 FireMon, LLC System and method for modeling a networking device policy
US9270704B2 (en) * 2013-03-13 2016-02-23 FireMon, LLC Modeling network devices for behavior analysis
US10083200B2 (en) 2013-03-14 2018-09-25 Cavium, Inc. Batch incremental update
KR101752583B1 (ko) 2013-03-14 2017-07-11 마이크론 테크놀로지, 인크. 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들
US9112767B2 (en) 2013-03-15 2015-08-18 Cavium, Inc. Method and an accumulator scoreboard for out-of-order rule response handling
US9195939B1 (en) 2013-03-15 2015-11-24 Cavium, Inc. Scope in decision trees
US9531647B1 (en) 2013-03-15 2016-12-27 Cavium, Inc. Multi-host processing
JP6976682B2 (ja) * 2013-03-15 2021-12-08 ビデリ、インコーポレイテッドVideri Inc. デジタル・アートを表示、配信、鑑賞および制御し、画像形成するためのシステムおよび方法
US9595003B1 (en) 2013-03-15 2017-03-14 Cavium, Inc. Compiler with mask nodes
US9130819B2 (en) 2013-03-15 2015-09-08 Cavium, Inc. Method and apparatus for scheduling rule matching in a processor
US9276846B2 (en) 2013-03-15 2016-03-01 Cavium, Inc. Packet extraction optimization in a network processor
US9430511B2 (en) * 2013-03-15 2016-08-30 Cavium, Inc. Merging independent writes, separating dependent and independent writes, and error roll back
US10862731B1 (en) * 2013-06-27 2020-12-08 EMC IP Holding Company LLC Utilizing demonstration data based on dynamically determining feature availability
US9286217B2 (en) * 2013-08-26 2016-03-15 Qualcomm Incorporated Systems and methods for memory utilization for object detection
US9356818B2 (en) * 2013-10-30 2016-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Method and computing device for packet classification
US9674086B2 (en) * 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
US9620213B2 (en) * 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9275336B2 (en) 2013-12-31 2016-03-01 Cavium, Inc. Method and system for skipping over group(s) of rules based on skip group rule
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
CN103763197B (zh) * 2014-01-27 2017-04-12 杭州华三通信技术有限公司 一种流表项冲突检测装置和方法
WO2015165104A1 (zh) 2014-04-30 2015-11-05 华为技术有限公司 查找装置及方法
US9497119B2 (en) * 2014-05-22 2016-11-15 International Business Machines Corporation Supporting access control list rules that apply to TCP segments belonging to ‘established’ connection
US9485257B2 (en) 2014-05-22 2016-11-01 International Business Machines Corporation Atomically updating ternary content addressable memory-based access control lists
US9749328B2 (en) 2014-05-22 2017-08-29 International Business Machines Corporation Access control list-based port mirroring techniques
US9722931B2 (en) 2014-06-05 2017-08-01 International Business Machines Corporation Unified framework for isolating multicast and broadcast frames to a traffic class separate from a traffic class used for unicast frames
US9344373B2 (en) * 2014-06-13 2016-05-17 International Business Machines Corporation Packet I/O support for a logical switch router architecture
KR101535813B1 (ko) * 2014-10-17 2015-07-10 한국과학기술정보연구원 복합 이벤트 처리를 위한 이벤트 구성 규칙의 동적 업데이트를 위한 시스템 및 방법
US11218410B2 (en) 2014-11-10 2022-01-04 Marvell Asia Pte, Ltd. Hybrid wildcard match table
US11943142B2 (en) 2014-11-10 2024-03-26 Marvell Asia Pte, LTD Hybrid wildcard match table
US10116564B2 (en) * 2014-11-10 2018-10-30 Cavium, Inc. Hybrid wildcard match table
US9485179B2 (en) * 2014-11-13 2016-11-01 Cavium, Inc. Apparatus and method for scalable and flexible table search in a network switch
US9692727B2 (en) 2014-12-02 2017-06-27 Nicira, Inc. Context-aware distributed firewall
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10061531B2 (en) 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
KR102328071B1 (ko) * 2015-02-04 2021-11-18 한국전자통신연구원 광전송망의 트래픽을 처리하는 방법 및 장치
JP6598188B2 (ja) * 2015-02-27 2019-10-30 株式会社エヴリカ 情報処理装置、方法およびプログラム
US20170288968A1 (en) * 2015-03-23 2017-10-05 Hewlett Packard Enterprise Development Lp Compiling network policies
JP6767361B2 (ja) * 2015-03-27 2020-10-14 古河電気工業株式会社 電磁シールド管、電磁シールド構造
US20160321285A1 (en) * 2015-05-02 2016-11-03 Mohammad Faraz RASHID Method for organizing and distributing data
US20160335298A1 (en) * 2015-05-12 2016-11-17 Extreme Networks, Inc. Methods, systems, and non-transitory computer readable media for generating a tree structure with nodal comparison fields and cut values for rapid tree traversal and reduced numbers of full comparisons at leaf nodes
US10075998B2 (en) * 2015-05-14 2018-09-11 Intel IP Corporation Wireless device, method, and computer readable media for signaling a resource allocation in a high efficiency wireless local-area network
US10115463B1 (en) * 2015-06-25 2018-10-30 Xilinx, Inc. Verification of a RAM-based TCAM
US20170017567A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Distributed-Linked Lists For Network Devices
US20170017419A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017414A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices
US20170017420A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US10423330B2 (en) * 2015-07-29 2019-09-24 International Business Machines Corporation Data collection in a multi-threaded processor
US9984144B2 (en) 2015-08-17 2018-05-29 Mellanox Technologies Tlv Ltd. Efficient lookup of TCAM-like rules in RAM
US10496680B2 (en) 2015-08-17 2019-12-03 Mellanox Technologies Tlv Ltd. High-performance bloom filter array
US10049126B2 (en) 2015-09-06 2018-08-14 Mellanox Technologies Tlv Ltd. Cuckoo hashing with selectable hash
US10451094B2 (en) * 2015-09-28 2019-10-22 Kubota Corporation Hydraulic system of work machine
CN105426352A (zh) * 2015-11-24 2016-03-23 国家电网公司 模板文档自动生成方法
US10554572B1 (en) * 2016-02-19 2020-02-04 Innovium, Inc. Scalable ingress arbitration for merging control and payload
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US9892057B2 (en) 2016-03-31 2018-02-13 Mellanox Technologies Tlv Ltd. Single double cuckoo hash
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
CN106209626B (zh) * 2016-07-26 2019-12-06 新华三技术有限公司 自适应下发路由方法以及装置
WO2018025258A1 (en) * 2016-07-31 2018-02-08 Fenror7 Ltd Method and system for detecting movement of malware and other potential threats
US10068034B2 (en) 2016-09-07 2018-09-04 Mellanox Technologies Tlv Ltd. Efficient matching of TCAM rules using hash tables in RAM
US10204060B2 (en) 2016-09-13 2019-02-12 International Business Machines Corporation Determining memory access categories to use to assign tasks to processor cores to execute
US10169248B2 (en) 2016-09-13 2019-01-01 International Business Machines Corporation Determining cores to assign to cache hostile tasks
US10209900B2 (en) 2016-09-19 2019-02-19 Fungible, Inc. Buffer allocation and memory management using mapping table
US10303375B2 (en) 2016-09-19 2019-05-28 Fungible, Inc. Buffer allocation and memory management
US10454786B2 (en) * 2016-09-26 2019-10-22 Amazon Technologies, Inc. Multi-party updates to distributed systems
US10489424B2 (en) 2016-09-26 2019-11-26 Amazon Technologies, Inc. Different hierarchies of resource data objects for managing system resources
US10193862B2 (en) 2016-11-29 2019-01-29 Vmware, Inc. Security policy analysis based on detecting new network port connections
US10404594B2 (en) 2016-12-13 2019-09-03 Oracle International Corporation System and method for providing partitions of classification resources in a network device
US10341242B2 (en) * 2016-12-13 2019-07-02 Oracle International Corporation System and method for providing a programmable packet classification framework for use in a network device
CN106844041B (zh) * 2016-12-29 2020-06-16 华为技术有限公司 内存管理的方法及内存管理系统
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10257090B2 (en) * 2017-02-21 2019-04-09 Futurewei Technologies, Inc. Packet classification using multi-dimensional splitting
US10491521B2 (en) 2017-03-26 2019-11-26 Mellanox Technologies Tlv Ltd. Field checking based caching of ACL lookups to ease ACL lookup search
CN110710172A (zh) 2017-03-29 2020-01-17 芬基波尔有限责任公司 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
CN117971715A (zh) 2017-04-10 2024-05-03 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
US10885118B2 (en) * 2017-05-12 2021-01-05 Futurewei Technologies, Inc. Incremental graph computations for querying large graphs
US10713089B2 (en) * 2017-05-20 2020-07-14 Cavium International Method and apparatus for load balancing of jobs scheduled for processing
US10725825B2 (en) 2017-07-10 2020-07-28 Fungible, Inc. Data processing unit for stream processing
WO2019014265A1 (en) 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR CALCULATION NODES AND STORAGE NODES
US10476794B2 (en) 2017-07-30 2019-11-12 Mellanox Technologies Tlv Ltd. Efficient caching of TCAM rules in RAM
CN107450495B (zh) * 2017-08-25 2019-10-29 艾普工华科技(武汉)有限公司 一种基于消息规则引擎的柔性在制品管理业务模型系统
CN108632235B (zh) 2017-08-31 2020-07-07 新华三技术有限公司 一种网包分类决策树建立方法及装置
CN107797973A (zh) * 2017-09-27 2018-03-13 西安交通大学 一种面向硬件实现的gbdt分类模型压缩方法
WO2019068013A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. FABRIC CONTROL PROTOCOL FOR DATA CENTER NETWORKS WITH PACKAGING OF PACKETS ON MULTIPLE ALTERNATIVE DATA PATHWAYS
US10965586B2 (en) 2017-09-29 2021-03-30 Fungible, Inc. Resilient network communication using selective multipath packet flow spraying
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
WO2019152063A1 (en) 2018-02-02 2019-08-08 Fungible, Inc. Efficient work unit processing in a multicore system
US10791092B2 (en) * 2018-02-14 2020-09-29 Nicira, Inc. Firewall rules with expression matching
WO2019178264A1 (en) 2018-03-14 2019-09-19 Fungible, Inc. Flexible processing of network packets
TWI664527B (zh) * 2018-03-20 2019-07-01 慧榮科技股份有限公司 用來於一記憶裝置中進行初始化之方法、記憶裝置及其控制器以及電子裝置
CN108595370A (zh) * 2018-03-30 2018-09-28 新华三信息安全技术有限公司 一种多核处理器及报文处理方法
US11876684B1 (en) * 2018-05-22 2024-01-16 Amazon Technologies, Inc. Controlled cross-cell migration of data in cell-based distributed computing architecture
US11218574B2 (en) 2018-06-08 2022-01-04 Fungible, Inc. Directed graph traversal using content-addressable memory
CN108984618B (zh) * 2018-06-13 2021-02-02 深圳市商汤科技有限公司 数据处理方法和装置、电子设备和计算机可读存储介质
WO2019241926A1 (zh) * 2018-06-20 2019-12-26 华为技术有限公司 访问控制列表的管理方法及装置
US10798200B2 (en) * 2018-06-22 2020-10-06 Vmware, Inc. Payload matching via single pass transformation of HTTP payload
US11483313B2 (en) * 2018-06-28 2022-10-25 Intel Corporation Technologies for updating an access control list table without causing disruption
US10581759B1 (en) 2018-07-12 2020-03-03 Innovium, Inc. Sharing packet processing resources
CN108959636B (zh) * 2018-07-25 2020-11-03 京东数字科技控股有限公司 数据处理方法、装置、系统、计算机可读介质
US11327974B2 (en) 2018-08-02 2022-05-10 Mellanox Technologies, Ltd. Field variability based TCAM splitting
CN109032952B (zh) * 2018-08-09 2021-11-23 中国建设银行股份有限公司 一种基于规则的智能外呼服务模拟方法及系统
US11003715B2 (en) 2018-09-17 2021-05-11 Mellanox Technologies, Ltd. Equipment and method for hash table resizing
FR3086825A1 (fr) * 2018-09-28 2020-04-03 Orange Procedes de protection d'un domaine client contre une attaque informatique, nœud client, serveur et programmes d'ordinateur correspondants.
CN111049746B (zh) * 2018-10-12 2022-04-22 华为技术有限公司 一种路由表项生成方法、字典树生成方法和装置
US10958770B2 (en) 2018-10-15 2021-03-23 Fungible, Inc. Realization of a programmable forwarding pipeline through packet header summaries in a data processing unit
US10708373B2 (en) * 2018-11-09 2020-07-07 Oath Inc. Decentralized method and system for accurately determining a level of activity of a client device
CN109542601B (zh) * 2018-11-20 2020-12-29 杭州迪普科技股份有限公司 策略编译方法、装置、电子设备及计算机存储介质
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
WO2020107484A1 (zh) * 2018-11-30 2020-06-04 华为技术有限公司 一种acl的规则分类方法、查找方法和装置
CN109766439A (zh) * 2018-12-15 2019-05-17 内蒙航天动力机械测试所 统计查询软件的无限树状分类定义与指派方法
EP3703341A1 (en) * 2019-02-28 2020-09-02 Rohde & Schwarz GmbH & Co. KG System for analyzing and interpreting at least one data stream as well as method of automatic configuration of a system
CN109885408B (zh) * 2019-03-13 2022-05-03 四川长虹电器股份有限公司 基于Android系统的轻量级浏览器资源优化方法
US11531915B2 (en) * 2019-03-20 2022-12-20 Oracle International Corporation Method for generating rulesets using tree-based models for black-box machine learning explainability
WO2020197720A1 (en) 2019-03-27 2020-10-01 Fungible, Inc. Low latency packet switch architecture
CN111817978B (zh) * 2019-04-12 2022-10-04 华为技术有限公司 一种流分类方法及装置
US11032371B2 (en) * 2019-05-29 2021-06-08 Red Hat, Inc. Data migration using read function triggers
US10931638B1 (en) * 2019-07-31 2021-02-23 Capital One Services, Llc Automated firewall feedback from network traffic analysis
US10979358B2 (en) * 2019-08-20 2021-04-13 SMART lOPS, INC. Low-latency data packet distributor
US10944675B1 (en) 2019-09-04 2021-03-09 Mellanox Technologies Tlv Ltd. TCAM with multi region lookups and a single logical lookup
US11579802B2 (en) 2019-10-04 2023-02-14 Fungible, Inc. Pipeline using match-action blocks
US11330032B2 (en) * 2019-10-15 2022-05-10 Vmware, Inc. Method and system for content proxying between formats
CN112948103B (zh) * 2019-12-10 2023-10-27 腾讯科技(深圳)有限公司 资源配置方法、装置、存储介质及电子设备
CN110995748A (zh) * 2019-12-17 2020-04-10 杭州安恒信息技术股份有限公司 一种防暴力破解方法、装置、设备、介质
US11128694B2 (en) * 2020-01-09 2021-09-21 Cisco Technology, Inc. Optimized internet access in a multi-site software-defined network fabric
US11539622B2 (en) 2020-05-04 2022-12-27 Mellanox Technologies, Ltd. Dynamically-optimized hash-based packet classifier
US11782895B2 (en) 2020-09-07 2023-10-10 Mellanox Technologies, Ltd. Cuckoo hashing including accessing hash tables using affinity table
CN112311698B (zh) * 2020-09-28 2021-08-24 清华大学无锡应用技术研究院 处理网络数据包的方法、装置及存储介质
KR20220045480A (ko) * 2020-10-05 2022-04-12 삼성전자주식회사 인-메모리 프로세싱을 수행하는 메모리 디바이스
CN112350947B (zh) * 2020-10-23 2022-07-29 杭州迪普信息技术有限公司 一种报文匹配决策树的更新方法及装置
US11593309B2 (en) 2020-11-05 2023-02-28 International Business Machines Corporation Reliable delivery of event notifications from a distributed file system
CN113114584B (zh) * 2021-03-01 2023-02-28 杭州迪普科技股份有限公司 一种网络设备的保护方法及装置
US11734005B2 (en) 2021-07-04 2023-08-22 Mellanox Technologies, Ltd. Processor with split read
CN113709099B (zh) * 2021-07-12 2023-11-07 新华三大数据技术有限公司 混合云防火墙规则下发方法、装置、设备及存储介质
US11677663B2 (en) * 2021-08-12 2023-06-13 Schweitzer Engineering Laboratories, Inc. Software-defined network statistics extension
US11917042B2 (en) 2021-08-15 2024-02-27 Mellanox Technologies, Ltd. Optimizing header-based action selection
CN113741821B (zh) * 2021-11-01 2022-03-01 中科声龙科技发展(北京)有限公司 基于分类的数据存取方法、系统、介质及程序
US11929837B2 (en) 2022-02-23 2024-03-12 Mellanox Technologies, Ltd. Rule compilation schemes for fast packet classification
US11968285B2 (en) 2022-02-24 2024-04-23 Mellanox Technologies, Ltd. Efficient memory utilization for cartesian products of rules
US11847461B2 (en) * 2022-05-19 2023-12-19 Mellanox Technologies, Ltd. Out-of-order input / output write
US11882002B2 (en) 2022-06-22 2024-01-23 Schweitzer Engineering Laboratories, Inc. Offline test mode SDN validation

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11127195A (ja) * 1997-10-23 1999-05-11 Toshiba Corp 通信資源管理方法及びノード装置
JP2002152268A (ja) * 2000-09-27 2002-05-24 Samsung Electronics Co Ltd マルチレイヤパケット処理装置
JP2007020226A (ja) * 2000-11-21 2007-01-25 Transwitch Corp 単一の通信スイッチを経てatm、tdm及びパケットデータを交換するための方法及び装置
JP2009027286A (ja) * 2007-07-18 2009-02-05 Nec Corp ネットワーク、ネットワーク装置及びそれらに用いる伝送経路冗長化方法
JP2012044379A (ja) * 2010-08-18 2012-03-01 Nippon Telegr & Teleph Corp <Ntt> ノード、パケット転送方法および通信ネットワーク

Family Cites Families (242)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US441022A (en) 1890-11-18 Method of baling cotton
US4965825A (en) 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
JPS6289149A (ja) * 1985-10-15 1987-04-23 Agency Of Ind Science & Technol 多ポ−トメモリシステム
CA2066724C (en) 1989-09-01 2000-12-05 Helge Knudsen Operating system and data base
WO1991003791A1 (en) 1989-09-01 1991-03-21 Amdahl Corporation Operating system and data base
AT392555B (de) 1989-10-24 1991-04-25 Alcatel Austria Ag Verfahren zum uebertragen von binaerinformationen in einem optischen uebertragungsnetzwerk sowie optisches uebertragungsnetzwerk
US5214653A (en) 1990-10-22 1993-05-25 Harris Corporation Fault finder expert system
WO1994001828A1 (en) 1992-07-02 1994-01-20 Wellfleet Communications Data packet processing method and apparatus
US5634025A (en) * 1993-12-09 1997-05-27 International Business Machines Corporation Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
US5742843A (en) 1994-07-20 1998-04-21 Fujitsu Limited Control system for access between processing elements in a parallel computer
US5727167A (en) 1995-04-14 1998-03-10 International Business Machines Corporation Thresholding support in performance monitoring
US5995511A (en) 1996-04-05 1999-11-30 Fore Systems, Inc. Digital network including mechanism for grouping virtual message transfer paths having similar transfer service rates to facilitate efficient scheduling of transfers thereover
US5893911A (en) * 1996-04-17 1999-04-13 Neon Software, Inc. Method for defining and applying rules for message distribution for transaction processing in a distributed application
US7613926B2 (en) 1997-11-06 2009-11-03 Finjan Software, Ltd Method and system for protecting a computer and a network from hostile downloadables
US5893142A (en) 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor
US6233575B1 (en) 1997-06-24 2001-05-15 International Business Machines Corporation Multilevel taxonomy based on features derived from training documents classification using fisher values as discrimination values
JP3027845B2 (ja) 1997-11-21 2000-04-04 オムロン株式会社 プログラム制御装置および方法
US6549519B1 (en) 1998-01-23 2003-04-15 Alcatel Internetworking (Pe), Inc. Network switching device with pipelined search engines
US6341130B1 (en) 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6658002B1 (en) 1998-06-30 2003-12-02 Cisco Technology, Inc. Logical operation unit for packet processing
US6212184B1 (en) * 1998-07-15 2001-04-03 Washington University Fast scaleable methods and devices for layer four switching
US6519636B2 (en) 1998-10-28 2003-02-11 International Business Machines Corporation Efficient classification, manipulation, and control of network transmissions by associating network flows with rule based functions
US6567408B1 (en) 1999-02-01 2003-05-20 Redback Networks Inc. Methods and apparatus for packet classification with multi-level data structure
US6297768B1 (en) * 1999-02-25 2001-10-02 Lunareye, Inc. Triggerable remote controller
JP3692820B2 (ja) 1999-03-10 2005-09-07 株式会社デンソー 自動車用制御装置
US6510509B1 (en) * 1999-03-29 2003-01-21 Pmc-Sierra Us, Inc. Method and apparatus for high-speed network rule processing
US6701432B1 (en) 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6298340B1 (en) 1999-05-14 2001-10-02 International Business Machines Corporation System and method and computer program for filtering using tree structure
US6587466B1 (en) 1999-05-27 2003-07-01 International Business Machines Corporation Search tree for policy based packet classification in communication networks
GB2355084B (en) 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6636480B1 (en) * 1999-09-08 2003-10-21 Riverstone Networks, Inc. Method and system for controlling data flow through a multiport switch
US7110407B1 (en) 1999-09-23 2006-09-19 Netlogic Microsystems, Inc. Method and apparatus for performing priority encoding in a segmented classification system using enable signals
US6775281B1 (en) 1999-09-30 2004-08-10 Mosaid Technologies, Inc. Method and apparatus for a four-way hash table
US6467019B1 (en) 1999-11-08 2002-10-15 Juniper Networks, Inc. Method for memory management in ternary content addressable memories (CAMs)
US6778530B1 (en) * 1999-11-08 2004-08-17 Juniper Networks, Inc. Method and apparatus for multiple field matching in network device
GB9930849D0 (en) * 1999-12-24 2000-02-16 Koninkl Philips Electronics Nv Data communications
US6539394B1 (en) 2000-01-04 2003-03-25 International Business Machines Corporation Method and system for performing interval-based testing of filter rules
US7039641B2 (en) 2000-02-24 2006-05-02 Lucent Technologies Inc. Modular packet classification
US6473763B1 (en) 2000-03-31 2002-10-29 International Business Machines Corporation System, method and computer program for filtering multi-action rule set
US7215637B1 (en) 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
US7032031B2 (en) 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US20070192863A1 (en) 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US9800608B2 (en) * 2000-09-25 2017-10-24 Symantec Corporation Processing data flows with a data flow processor
US20110238855A1 (en) 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
US8010469B2 (en) 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
CA2326851A1 (en) 2000-11-24 2002-05-24 Redback Networks Systems Canada Inc. Policy change characterization method and apparatus
US6868414B2 (en) 2001-01-03 2005-03-15 International Business Machines Corporation Technique for serializing data structure updates and retrievals without requiring searchers to use locks
JP2004524617A (ja) * 2001-02-14 2004-08-12 クリアスピード・テクノロジー・リミテッド クロック分配システム
US6754626B2 (en) * 2001-03-01 2004-06-22 International Business Machines Corporation Creating a hierarchical tree of language models for a dialog system based on prompt and dialog context
JP2002290447A (ja) * 2001-03-27 2002-10-04 Mitsubishi Electric Corp アドレス検索方法、アドレス検索回路、およびアドレス検索プログラム
US6735600B1 (en) * 2001-03-30 2004-05-11 Lsi Logic Corporation Editing protocol for flexible search engines
US6904057B2 (en) 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6757768B1 (en) * 2001-05-17 2004-06-29 Cisco Technology, Inc. Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node
US7133409B1 (en) 2001-07-19 2006-11-07 Richard Willardson Programmable packet filtering in a prioritized chain
US7027988B1 (en) 2001-07-20 2006-04-11 At&T Corp. System and method of ε removal of weighted automata and transducers
US7116663B2 (en) 2001-07-20 2006-10-03 Pmc-Sierra Ltd. Multi-field classification using enhanced masked matching
US7209962B2 (en) 2001-07-30 2007-04-24 International Business Machines Corporation System and method for IP packet filtering based on non-IP packet traffic attributes
US7046848B1 (en) 2001-08-22 2006-05-16 Olcott Peter L Method and system for recognizing machine generated character glyphs and icons in graphic images
EP1320006A1 (en) 2001-12-12 2003-06-18 Canal+ Technologies Société Anonyme Processing data
US7403999B2 (en) 2001-12-28 2008-07-22 International Business Machines Corporation Classification support system and method for fragmented IP packets
US7225188B1 (en) 2002-02-13 2007-05-29 Cisco Technology, Inc. System and method for performing regular expression matching with high parallelism
US7719980B2 (en) 2002-02-19 2010-05-18 Broadcom Corporation Method and apparatus for flexible frame processing and classification engine
US8135772B2 (en) * 2002-05-01 2012-03-13 Oracle International Corporation Single servlets for B2B message routing
US7251698B2 (en) 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7327727B2 (en) 2002-06-04 2008-02-05 Lucent Technologies Inc. Atomic lookup rule set transition
US7079542B2 (en) 2002-07-02 2006-07-18 Samsung Electronics Co., Ltd. Internet protocol address look-up method
AU2003256391A1 (en) 2002-07-03 2004-01-23 University Of Florida Dynamic ip router tables using highest-priority matching
WO2004013777A1 (en) 2002-08-05 2004-02-12 Fish Robert System and method of parallel pattern matching
US7277425B1 (en) 2002-10-21 2007-10-02 Force10 Networks, Inc. High-speed router switching architecture
GB0226289D0 (en) 2002-11-11 2002-12-18 Orange Personal Comm Serv Ltd Telecommunications
GB2395395B (en) * 2002-11-15 2004-11-10 3Com Corp Classification search scheme and rules engine for network unit
US7536476B1 (en) 2002-12-20 2009-05-19 Cisco Technology, Inc. Method for performing tree based ACL lookups
US7546234B1 (en) 2003-01-08 2009-06-09 Xambala, Inc. Semantic processing engine
WO2004072797A2 (en) 2003-02-07 2004-08-26 Safenet, Inc. System and method for determining the start of a match of a regular expression
CA2521576A1 (en) 2003-02-28 2004-09-16 Lockheed Martin Corporation Hardware accelerator state table compiler
SE0300894D0 (sv) * 2003-03-28 2003-03-28 Saab Ab Metod att fastställa regler för en anordning som är avsedd att kunna användas för att generera beslutstöd
US7571156B1 (en) 2003-03-28 2009-08-04 Netlogic Microsystems, Inc. Network device, storage medium and methods for incrementally updating a forwarding database
US7466687B2 (en) 2003-04-28 2008-12-16 International Business Machines Corporation Packet classification using modified range labels
US7093231B2 (en) 2003-05-06 2006-08-15 David H. Alderson Grammer for regular expressions
US7415472B2 (en) 2003-05-13 2008-08-19 Cisco Technology, Inc. Comparison tree data structures of particular use in performing lookup operations
WO2004107404A2 (en) 2003-05-23 2004-12-09 Sensory Networks, Inc. Apparatus and method for large hardware finite state machine with embedded equivalence classes
US7685254B2 (en) * 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7382777B2 (en) 2003-06-17 2008-06-03 International Business Machines Corporation Method for implementing actions based on packet classification and lookup results
US7386626B2 (en) 2003-06-23 2008-06-10 Newisys, Inc. Bandwidth, framing and error detection in communications between multi-processor clusters of multi-cluster computer systems
US7388840B2 (en) * 2003-06-30 2008-06-17 Intel Corporation Methods and apparatuses for route management on a networking control plane
US7548944B2 (en) * 2003-07-15 2009-06-16 Intel Corporation Statistics collection framework for a network processor
US7299227B2 (en) 2003-09-09 2007-11-20 Stmicroelectronics, Inc. Method and system for providing cascaded trie-based network packet search engines
US7870161B2 (en) 2003-11-07 2011-01-11 Qiang Wang Fast signature scan
US7873992B1 (en) 2003-12-04 2011-01-18 Avaya Inc. Dynamic system of autonomous parsers for interpreting arbitrary telecommunication equipment streams
US20060026138A1 (en) 2004-01-09 2006-02-02 Gavin Robertson Real-time indexes
US7706353B2 (en) 2004-01-21 2010-04-27 Alcatel-Lucent Usa Inc. Congestion control in connection-oriented packet-switching networks
US7392349B1 (en) * 2004-01-27 2008-06-24 Netlogic Microsystems, Inc. Table management within a policy-based routing system
US7370361B2 (en) 2004-02-06 2008-05-06 Trend Micro Incorporated System and method for securing computers against computer virus
US7441022B1 (en) 2004-03-12 2008-10-21 Sun Microsystems, Inc. Resolving conflicts between network service rule sets for network data traffic in a system where rule patterns with longer prefixes match before rule patterns with shorter prefixes
US7586851B2 (en) 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US7366728B2 (en) 2004-04-27 2008-04-29 International Business Machines Corporation System for compressing a search tree structure used in rule classification
US7685637B2 (en) 2004-06-14 2010-03-23 Lionic Corporation System security approaches using sub-expression automata
JP4392294B2 (ja) 2004-06-15 2009-12-24 株式会社日立製作所 通信統計収集装置
JP4855655B2 (ja) * 2004-06-15 2012-01-18 株式会社ソニー・コンピュータエンタテインメント 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム
US7760719B2 (en) * 2004-06-30 2010-07-20 Conexant Systems, Inc. Combined pipelined classification and address search method and apparatus for switching environments
EP1766929B1 (en) * 2004-07-09 2011-04-20 Panasonic Corporation Network mobility management method and corresponding apparatusses
US7478426B2 (en) * 2004-07-20 2009-01-13 International Busines Machines Corporation Multi-field classification dynamic rule updates
US7711893B1 (en) 2004-07-22 2010-05-04 Netlogic Microsystems, Inc. Range code compression method and apparatus for ternary content addressable memory (CAM) devices
US7464218B2 (en) 2004-08-31 2008-12-09 Seagate Technology Llc Method for improving data throughput for a data storage device
US8301788B2 (en) 2004-09-10 2012-10-30 Cavium, Inc. Deterministic finite automata (DFA) instruction
US8560475B2 (en) 2004-09-10 2013-10-15 Cavium, Inc. Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US8392590B2 (en) 2004-09-10 2013-03-05 Cavium, Inc. Deterministic finite automata (DFA) processing
WO2006029508A1 (en) 2004-09-13 2006-03-23 Solace Systems Inc. Highly scalable subscription matching for a content routing network
US7260558B1 (en) 2004-10-25 2007-08-21 Hi/Fn, Inc. Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching
US7356663B2 (en) 2004-11-08 2008-04-08 Intruguard Devices, Inc. Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses
US7478424B2 (en) 2004-11-30 2009-01-13 Cymtec Systems, Inc. Propagation protection within a network
JP4535130B2 (ja) 2004-12-09 2010-09-01 三菱電機株式会社 文字列照合装置および文字列照合プログラム
JP4140910B2 (ja) * 2004-12-28 2008-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理装置、データ管理装置、データ処理方法、データ管理方法、データ処理プログラム、データ管理プログラム、及び情報システム
US20060155915A1 (en) 2004-12-30 2006-07-13 Pereira Jose P Database query processor
US7350040B2 (en) 2005-03-03 2008-03-25 Microsoft Corporation Method and system for securing metadata to detect unauthorized access
US7710988B1 (en) 2005-03-11 2010-05-04 Xambala Corporation Method and system for non-deterministic finite automaton filtering
US7653903B2 (en) * 2005-03-25 2010-01-26 Sony Corporation Modular imaging download system
US7668160B2 (en) 2005-03-31 2010-02-23 Intel Corporation Methods for performing packet classification
JP2006285808A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd ストレージシステム
US20060288024A1 (en) 2005-04-28 2006-12-21 Freescale Semiconductor Incorporated Compressed representations of tries
US7958507B2 (en) * 2005-06-16 2011-06-07 Hewlett-Packard Development Company, L.P. Job scheduling system and method
US7784094B2 (en) 2005-06-30 2010-08-24 Intel Corporation Stateful packet content matching mechanisms
US7979368B2 (en) 2005-07-01 2011-07-12 Crossbeam Systems, Inc. Systems and methods for processing data flows
US20080229415A1 (en) 2005-07-01 2008-09-18 Harsh Kapoor Systems and methods for processing data flows
US7869411B2 (en) * 2005-11-21 2011-01-11 Broadcom Corporation Compact packet operation device and method
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US20070168377A1 (en) 2005-12-29 2007-07-19 Arabella Software Ltd. Method and apparatus for classifying Internet Protocol data packets
US20070168548A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation Method and system for performing multi-cluster application-specific routing
US8978154B2 (en) 2006-02-15 2015-03-10 Samsung Electronics Co., Ltd. Method and apparatus for importing content having plurality of parts
US20070226362A1 (en) 2006-03-21 2007-09-27 At&T Corp. Monitoring regular expressions on out-of-order streams
US7844422B2 (en) * 2006-05-30 2010-11-30 International Business Machines Corporation Method and system for changing a description for a state transition function of a state machine engine
US20080097959A1 (en) 2006-06-14 2008-04-24 Nec Laboratories America, Inc. Scalable xml filtering with bottom up path matching and encoded path joins
US20080071783A1 (en) 2006-07-03 2008-03-20 Benjamin Langmead System, Apparatus, And Methods For Pattern Matching
US7522581B2 (en) 2006-08-01 2009-04-21 International Business Machines Corporation Overload protection for SIP servers
EP2074767A2 (en) 2006-08-02 2009-07-01 University Of Florida Research Foundation, Inc. Succinct representation of static packet classifiers
US20080034427A1 (en) 2006-08-02 2008-02-07 Nec Laboratories America, Inc. Fast and scalable process for regular expression search
GB2441351B (en) 2006-09-01 2010-12-08 3Com Corp Positionally dependent pattern checking in character strings using deterministic finite automata
US7932349B2 (en) 2006-09-18 2011-04-26 Hercules Incorporated Membrane separation process for removing residuals polyamine-epihalohydrin resins
US8024691B2 (en) 2006-09-28 2011-09-20 Mcgill University Automata unit, a tool for designing checker circuitry and a method of manufacturing hardware circuitry incorporating checker circuitry
GB2443240B (en) 2006-10-27 2009-05-06 3Com Corp Signature checking using deterministic finite state machines
SE531947C2 (sv) 2006-11-03 2009-09-15 Oricane Ab Förfarande, anordning och system för flerfältsklassificering i ett datakommunikationsnätverk
US7657497B2 (en) 2006-11-07 2010-02-02 Ebay Inc. Online fraud prevention using genetic algorithm solution
US7899977B2 (en) 2006-12-08 2011-03-01 Pandya Ashish A Programmable intelligent search memory
WO2008073824A1 (en) 2006-12-08 2008-06-19 Pandya Ashish A Dynamic programmable intelligent search memory
US8156507B2 (en) 2006-12-08 2012-04-10 Microsoft Corporation User mode file system serialization and reliability
US7860849B1 (en) 2007-01-18 2010-12-28 Netlogic Microsystems, Inc. Optimizing search trees by increasing success size parameter
US7962434B2 (en) 2007-02-15 2011-06-14 Wisconsin Alumni Research Foundation Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata
FR2914081A1 (fr) 2007-03-23 2008-09-26 Advestigo Sa Procede de protection de documents numeriques contre des utilisations non autorisees.
WO2008129635A1 (ja) 2007-04-12 2008-10-30 Fujitsu Limited 性能障害要因分析プログラムおよび性能障害要因分析装置
US7961489B2 (en) 2007-04-23 2011-06-14 Marvell Israel (MISL)Ltd. Comparing data representations to stored patterns
US7854002B2 (en) 2007-04-30 2010-12-14 Microsoft Corporation Pattern matching for spyware detection
US7788206B2 (en) 2007-04-30 2010-08-31 Lsi Corporation State machine compression using multi-character state transition instructions
US20080291916A1 (en) 2007-05-22 2008-11-27 Bo Xiong Systems and methods for dynamic quality of service
US7852756B2 (en) * 2007-06-13 2010-12-14 02Micro International Limited Network interface system with filtering function
US8341723B2 (en) 2007-06-28 2012-12-25 Microsoft Corporation Filtering kernel-mode network communications
US8219508B2 (en) 2007-07-06 2012-07-10 Lsi Corporation Systems and methods for compressing state machine instructions using a two access indexing scheme
US8024802B1 (en) 2007-07-31 2011-09-20 Hewlett-Packard Development Company, L.P. Methods and systems for using state ranges for processing regular expressions in intrusion-prevention systems
US8520978B2 (en) 2007-10-31 2013-08-27 Mckesson Technologies Inc. Methods, computer program products, apparatuses, and systems for facilitating viewing and manipulation of an image on a client device
US8819217B2 (en) 2007-11-01 2014-08-26 Cavium, Inc. Intelligent graph walking
US8086609B2 (en) 2007-11-01 2011-12-27 Cavium, Inc. Graph caching
US20090125470A1 (en) 2007-11-09 2009-05-14 Juniper Networks, Inc. System and Method for Managing Access Control Lists
KR100920518B1 (ko) 2007-11-27 2009-10-09 한국전자통신연구원 패킷 분류 장치 및 방법
US7949683B2 (en) 2007-11-27 2011-05-24 Cavium Networks, Inc. Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US8180803B2 (en) 2007-11-27 2012-05-15 Cavium, Inc. Deterministic finite automata (DFA) graph compression
TWI363532B (en) 2008-01-21 2012-05-01 Univ Nat Taiwan Method and system for packet classificiation with reduced memory space and enhanced access speed
US7904942B2 (en) * 2008-02-22 2011-03-08 Inventec Corporation Method of updating intrusion detection rules through link data packet
US8474043B2 (en) * 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
SE532426C2 (sv) 2008-05-26 2010-01-19 Oricane Ab Metod för datapaketklassificering i ett datakommunikationsnät
US8051085B1 (en) 2008-07-18 2011-11-01 Netlogic Microsystems, Inc. Determining regular expression match lengths
US8554800B2 (en) 2008-07-30 2013-10-08 Portool Ltd. System, methods and applications for structured document indexing
US20100037056A1 (en) 2008-08-07 2010-02-11 Follis Benjamin D Method to support privacy preserving secure data management in archival systems
US8352391B1 (en) 2008-08-20 2013-01-08 Juniper Networks, Inc. Fast update filter
US8218493B2 (en) 2008-09-08 2012-07-10 Wisconsin Alumni Research Foundation System and method for interference mitigation in wireless networks
US8176085B2 (en) 2008-09-30 2012-05-08 Microsoft Corporation Modular forest automata
US8447120B2 (en) 2008-10-04 2013-05-21 Microsoft Corporation Incremental feature indexing for scalable location recognition
US7872993B2 (en) * 2008-10-30 2011-01-18 Alcatel Lucent Method and system for classifying data packets
US8473523B2 (en) 2008-10-31 2013-06-25 Cavium, Inc. Deterministic finite automata graph traversal with nodal bit mapping
US8683590B2 (en) 2008-10-31 2014-03-25 Alcatel Lucent Method and apparatus for pattern matching for intrusion detection/prevention systems
US9154380B2 (en) 2008-12-11 2015-10-06 International Business Machines Corporation Rules based fetching of operating platform status
TWI482083B (zh) 2008-12-15 2015-04-21 Univ Nat Taiwan 二階段式正規表示式比對處理方法及系統
TWI383618B (zh) 2008-12-22 2013-01-21 Univ Nat Taiwan 管線架構型正規表示式樣式比對處理電路
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8171539B2 (en) 2009-01-07 2012-05-01 Symbol Technologies, Inc. Methods and apparatus for implementing a search tree
US20100192225A1 (en) 2009-01-28 2010-07-29 Juniper Networks, Inc. Efficient application identification with network devices
WO2010094593A1 (de) * 2009-02-18 2010-08-26 OCé PRINTING SYSTEMS GMBH Verfahren zum automatischen steuern der reihenfolge von bearbeitungsaufträgen zur bearbeitung von materialgebinden
US8218553B2 (en) 2009-02-25 2012-07-10 Juniper Networks, Inc. Load balancing network traffic on a label switched path using resource reservation protocol with traffic engineering
KR101034389B1 (ko) 2009-04-22 2011-05-16 (주) 시스메이트 패킷 내 시그니처 위치에 따른 시그니처 검색 방법
US7990893B1 (en) 2009-05-19 2011-08-02 Juniper Networks, Inc. Fast prefix-based network route filtering
US8259726B2 (en) 2009-05-28 2012-09-04 Force10 Networks, Inc. Method and apparatus for forwarding table reduction
US20110016154A1 (en) 2009-07-17 2011-01-20 Rajan Goyal Profile-based and dictionary based graph caching
JP2012133405A (ja) 2009-07-24 2012-07-12 Hitachi Ltd ストレージ装置及びそのデータ転送制御方法
US8462786B2 (en) 2009-08-17 2013-06-11 Board Of Trustees Of Michigan State University Efficient TCAM-based packet classification using multiple lookups and classifier semantics
US8276142B2 (en) 2009-10-09 2012-09-25 Intel Corporation Hardware support for thread scheduling on multi-core processors
US8566344B2 (en) 2009-10-17 2013-10-22 Polytechnic Institute Of New York University Determining whether an input string matches at least one regular expression using lookahead finite automata based regular expression detection
US8631043B2 (en) 2009-12-09 2014-01-14 Alcatel Lucent Method and apparatus for generating a shape graph from a binary trie
EP2517420B1 (en) 2009-12-22 2014-03-19 Cuneyt F. Bazlamacci Systolic array architecture for fast ip lookup
US8291258B2 (en) 2010-01-08 2012-10-16 Juniper Networks, Inc. High availability for network security devices
US9031895B2 (en) 2010-01-13 2015-05-12 Ab Initio Technology Llc Matching metadata sources using rules for characterizing matches
US8458354B2 (en) 2010-01-27 2013-06-04 Interdisciplinary Center Herzliya Multi-pattern matching in compressed communication traffic
US8522199B2 (en) 2010-02-26 2013-08-27 Mcafee, Inc. System, method, and computer program product for applying a regular expression to content based on required strings of the regular expression
US8477611B2 (en) 2010-03-03 2013-07-02 Ewha University Industry Collaboration Foundation Method and apparatus for packet classification using bloom filter
CN101794271B (zh) * 2010-03-31 2012-05-23 华为技术有限公司 多核内存一致性的实现方法和装置
WO2011130604A1 (en) 2010-04-16 2011-10-20 Massachusetts Institute Of Technology Execution migration
CN101853301A (zh) 2010-05-25 2010-10-06 华为技术有限公司 正则表达式匹配的方法和系统
US20130070753A1 (en) 2010-05-26 2013-03-21 University Of Florida Research Foundation, Inc. Consistent updates for packet classification devices
US8543528B2 (en) 2010-09-23 2013-09-24 International Business Machines Corporation Exploitation of transition rule sharing based on short state tags to improve the storage efficiency
CN102075511B (zh) 2010-11-01 2014-05-14 北京神州绿盟信息安全科技股份有限公司 一种数据匹配设备和方法以及网络入侵检测设备和方法
US8799188B2 (en) 2011-02-08 2014-08-05 International Business Machines Corporation Algorithm engine for use in a pattern matching accelerator
US8856203B1 (en) 2011-02-08 2014-10-07 Pmc-Sierra Us, Inc. System and method for algorithmic TCAM packet classification
US9471532B2 (en) 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
EP2490134A1 (en) 2011-02-18 2012-08-22 Amadeus S.A.S. Method, system and computer program to provide fares detection from rules attributes
US9398033B2 (en) 2011-02-25 2016-07-19 Cavium, Inc. Regular expression processing automaton
US20120221494A1 (en) 2011-02-25 2012-08-30 International Business Machines Corporation Regular expression pattern matching using keyword graphs
US8869087B2 (en) 2011-05-06 2014-10-21 Xcelemor, Inc. Computing system with data and control planes and method of operation thereof
US9858051B2 (en) 2011-06-24 2018-01-02 Cavium, Inc. Regex compiler
US8990259B2 (en) 2011-06-24 2015-03-24 Cavium, Inc. Anchored patterns
US8800021B1 (en) 2011-06-29 2014-08-05 Juniper Networks, Inc. Hardware implementation of complex firewalls using chaining technique
US8516241B2 (en) * 2011-07-12 2013-08-20 Cisco Technology, Inc. Zone-based firewall policy model for a virtualized data center
US9183244B2 (en) 2011-08-02 2015-11-10 Cavium, Inc. Rule modification in decision trees
US8923306B2 (en) 2011-08-02 2014-12-30 Cavium, Inc. Phased bucket pre-fetch in a network processor
US9208438B2 (en) 2011-08-02 2015-12-08 Cavium, Inc. Duplication in decision trees
US8954700B2 (en) 2011-08-02 2015-02-10 Cavium, Inc. Method and apparatus for managing processing thread migration between clusters within a processor
US10229139B2 (en) 2011-08-02 2019-03-12 Cavium, Llc Incremental update heuristics
US9203805B2 (en) 2011-11-23 2015-12-01 Cavium, Inc. Reverse NFA generation and processing
US9307009B2 (en) 2012-02-15 2016-04-05 Mobilespan Inc. Presenting execution of a remote application in a mobile device native format
US9575806B2 (en) * 2012-06-29 2017-02-21 Intel Corporation Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9065780B2 (en) 2012-09-18 2015-06-23 Cisco Technology, Inc. Low latency networking device using header prediction
US9177253B2 (en) 2013-01-31 2015-11-03 Intel Corporation System and method for DFA-NFA splitting
US20140229386A1 (en) 2013-02-13 2014-08-14 Mistral Mobile Secure mobile payments
US10083200B2 (en) 2013-03-14 2018-09-25 Cavium, Inc. Batch incremental update
US9430511B2 (en) 2013-03-15 2016-08-30 Cavium, Inc. Merging independent writes, separating dependent and independent writes, and error roll back
US9276846B2 (en) 2013-03-15 2016-03-01 Cavium, Inc. Packet extraction optimization in a network processor
US9537771B2 (en) 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US9563399B2 (en) 2013-08-30 2017-02-07 Cavium, Inc. Generating a non-deterministic finite automata (NFA) graph for regular expression patterns with advanced features
US9426165B2 (en) 2013-08-30 2016-08-23 Cavium, Inc. Method and apparatus for compilation of finite automata
US9419943B2 (en) 2013-12-30 2016-08-16 Cavium, Inc. Method and apparatus for processing of finite automata
US9544402B2 (en) 2013-12-31 2017-01-10 Cavium, Inc. Multi-rule approach to encoding a group of rules
US9667446B2 (en) 2014-01-08 2017-05-30 Cavium, Inc. Condition code approach for comparing rule and packet data that are provided in portions
US9904630B2 (en) 2014-01-31 2018-02-27 Cavium, Inc. Finite automata processing based on a top of stack (TOS) memory
US9602532B2 (en) 2014-01-31 2017-03-21 Cavium, Inc. Method and apparatus for optimizing finite automata processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11127195A (ja) * 1997-10-23 1999-05-11 Toshiba Corp 通信資源管理方法及びノード装置
JP2002152268A (ja) * 2000-09-27 2002-05-24 Samsung Electronics Co Ltd マルチレイヤパケット処理装置
JP2007020226A (ja) * 2000-11-21 2007-01-25 Transwitch Corp 単一の通信スイッチを経てatm、tdm及びパケットデータを交換するための方法及び装置
JP2009027286A (ja) * 2007-07-18 2009-02-05 Nec Corp ネットワーク、ネットワーク装置及びそれらに用いる伝送経路冗長化方法
JP2012044379A (ja) * 2010-08-18 2012-03-01 Nippon Telegr & Teleph Corp <Ntt> ノード、パケット転送方法および通信ネットワーク

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014219980A (ja) * 2013-05-06 2014-11-20 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ制御装置及びメモリ制御方法
JP7464586B2 (ja) 2018-12-18 2024-04-09 アーム・リミテッド メモリ完全性チェックのための完全性ツリー

Also Published As

Publication number Publication date
WO2013019981A1 (en) 2013-02-07
US20130036285A1 (en) 2013-02-07
US20150195200A1 (en) 2015-07-09
US8966152B2 (en) 2015-02-24
US8606959B2 (en) 2013-12-10
US9031075B2 (en) 2015-05-12
US9614762B2 (en) 2017-04-04
US20130036152A1 (en) 2013-02-07
KR101476113B1 (ko) 2014-12-23
US20150117461A1 (en) 2015-04-30
US20150143060A1 (en) 2015-05-21
US20140119378A1 (en) 2014-05-01
US9344366B2 (en) 2016-05-17
US9596222B2 (en) 2017-03-14
US9525630B2 (en) 2016-12-20
WO2013020002A1 (en) 2013-02-07
US20130036284A1 (en) 2013-02-07
US20130039366A1 (en) 2013-02-14
KR101476114B1 (ko) 2014-12-23
US8719331B2 (en) 2014-05-06
US20130058332A1 (en) 2013-03-07
US20130036151A1 (en) 2013-02-07
US9137340B2 (en) 2015-09-15
US20130034100A1 (en) 2013-02-07
US20130036274A1 (en) 2013-02-07
US20140215478A1 (en) 2014-07-31
KR20140053272A (ko) 2014-05-07
JP5657840B2 (ja) 2015-01-21
US9729527B2 (en) 2017-08-08
US20130036471A1 (en) 2013-02-07
US9065860B2 (en) 2015-06-23
KR20140053266A (ko) 2014-05-07
US20130036185A1 (en) 2013-02-07
US20130085978A1 (en) 2013-04-04
US20130250948A1 (en) 2013-09-26
US9866540B2 (en) 2018-01-09
CN103858392B (zh) 2018-12-14
US10277510B2 (en) 2019-04-30
WO2013020001A9 (en) 2013-03-28
US8937954B2 (en) 2015-01-20
US20130036288A1 (en) 2013-02-07
US8472452B2 (en) 2013-06-25
US8995449B2 (en) 2015-03-31
WO2013019996A1 (en) 2013-02-07
US9531690B2 (en) 2016-12-27
US20160248739A1 (en) 2016-08-25
US8937952B2 (en) 2015-01-20
US20130036102A1 (en) 2013-02-07
WO2013020001A1 (en) 2013-02-07
US20130036477A1 (en) 2013-02-07
US20130036083A1 (en) 2013-02-07
US8954700B2 (en) 2015-02-10
US20130067173A1 (en) 2013-03-14
US9391892B2 (en) 2016-07-12
US20150121395A1 (en) 2015-04-30
US20130034106A1 (en) 2013-02-07
US8934488B2 (en) 2015-01-13
CN103858386B (zh) 2017-08-25
WO2013020003A1 (en) 2013-02-07
US20130060727A1 (en) 2013-03-07
US8711861B2 (en) 2014-04-29
US9319316B2 (en) 2016-04-19
US9225643B2 (en) 2015-12-29
US9497117B2 (en) 2016-11-15
CN103858386A (zh) 2014-06-11
US20140188973A1 (en) 2014-07-03
US9191321B2 (en) 2015-11-17
CN103858392A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
JP5657840B2 (ja) ルックアップ・フロントエンド・パケット出力プロセッサ
US9276846B2 (en) Packet extraction optimization in a network processor
US9531723B2 (en) Phased bucket pre-fetch in a network processor
US9531647B1 (en) Multi-host processing
US9154442B2 (en) Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8321385B2 (en) Hash processing in a network communications processor architecture
US10229144B2 (en) NSP manager
US8228908B2 (en) Apparatus for hardware-software classification of data packet flows
US7324438B1 (en) Technique for nondisruptively recovering from a processor failure in a multi-processor flow device
US10341246B1 (en) Update packet sequence number packet ready command

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141007

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141126

R150 Certificate of patent or registration of utility model

Ref document number: 5657840

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250