US20030023846A1 - Classification engine in a cryptography acceleration chip - Google Patents

Classification engine in a cryptography acceleration chip Download PDF

Info

Publication number
US20030023846A1
US20030023846A1 US10/218,206 US21820602A US2003023846A1 US 20030023846 A1 US20030023846 A1 US 20030023846A1 US 21820602 A US21820602 A US 21820602A US 2003023846 A1 US2003023846 A1 US 2003023846A1
Authority
US
United States
Prior art keywords
packet
cryptography
security association
state
association information
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.)
Abandoned
Application number
US10/218,206
Inventor
Suresh Krishna
Christopher Owen
Derrick Lin
Joseph Tardo
Patrick Law
Phillip Smith
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Broadcom Corp
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 Broadcom Corp filed Critical Broadcom Corp
Priority to US10/218,206 priority Critical patent/US20030023846A1/en
Publication of US20030023846A1 publication Critical patent/US20030023846A1/en
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: BROADCOM CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROADCOM CORPORATION
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer

Definitions

  • the present invention relates generally to the field of cryptography, and more particularly to an architecture and method for cryptography acceleration.
  • the actual sustained performance of these chips is much less than peak throughput that the internal cryptography engines (or “crypto engines”) can sustain.
  • the chips have a long “context” change time.
  • the prior art chips must swap out the current context and load a new context, which reduces the throughput.
  • the new context must generally be externally loaded from software, and for many applications, such as routers and gateways that aggregate bandwidth from multiple connections, changing contexts is a very frequent task.
  • the present invention provides an architecture for a cryptography accelerator chip that allows significant performance improvements over previous prior art designs.
  • the architecture enables parallel processing of packets through a plurality of cryptography engines and includes a classification engine configured to efficiently process encryption/decryption of data packets.
  • Cryptography acceleration chips in accordance may be incorporated on network line cards or service modules and used in applications as diverse as connecting a single computer to a WAN, to large corporate networks, to networks servicing wide geographic areas (e.g., cities).
  • the present invention provides improved performance over the prior art designs, with much reduced local memory requirements, in some cases requiring no additional external memory.
  • the present invention enables sustained full duplex Gigabit rate security processing of IPSec protocol data packets.
  • the present invention provides a cryptography acceleration chip having a classification engine configured to receive a complete IP packet and determine what keys are needed to encrypt or decrypt the packet.
  • the invention provides a method for accelerating cryptography processing of data packets.
  • the method involves receiving a plurality of complete data packets on a cryptography acceleration chip and processing the data packets with a classification engine to determine what keys are needed to encrypt or decrypt the packets.
  • FIGS. 1A and B are high-level block diagrams of systems implementing a cryptography accelerator chip in accordance with one embodiment the present invention.
  • FIG. 2 is a high-level block diagram of a cryptography accelerator chip in accordance with one embodiment the present invention.
  • FIG. 3 is a block diagram of a cryptography accelerator chip architecture in accordance with one embodiment of the present invention.
  • FIG. 4 is a block diagram illustrating a DRAM-based or SRAM-based packet classifier in accordance with one embodiment the present invention.
  • FIG. 5 is a block diagram illustrating a CAM-based packet classifier in accordance with one embodiment the present invention.
  • FIGS. 6A and 6B are flowcharts illustrating aspects of inbound and outbound packet processing in accordance with one embodiment the present invention.
  • FIG. 7 shows a block diagram of a classification engine in accordance with one embodiment of the present invention, illustrating its structure and key elements.
  • the present invention provides an architecture for a cryptography accelerator chip that allows significant performance improvements over previous prior art designs.
  • the chip architecture enables “cell-based” processing of random-length IP packets, as described in copending U.S. patent application Ser. No. 09/510,486, entitled SECURITY CHIP ARCHITECTURE AND IMPLEMENTATIONS FOR CRYPTOGRAPHY ACCELERATION, incorporated by reference herein in its entirety for all purposes.
  • cell-based packet processing involves the splitting of IP packets, which may be of variable and unknown size, into smaller fixed-size “cells.” The fixed-sized cells are then processed and reassembled (recombined) into packets.
  • the cell-based packet processing architecture of the present invention allows the implementation of a processing pipeline that has known processing throughput and timing characteristics, thus making it possible to fetch and process the cells in a predictable time frame.
  • the cells may be fetched ahead of time (pre-fetched) and the pipeline may be staged in such a manner that the need for attached (local) memory to store packet data or control parameters is minimized or eliminated.
  • the architecture enables parallel processing of packets through a plurality of cryptography engines, for example four, and includes a classification engine configured to efficiently process encryption/decryption of data packets.
  • Cryptography acceleration chips in accordance may be incorporated on network line cards or service modules and used in applications as diverse as connecting a single computer to a WAN, to large corporate networks, to networks servicing wide geographic areas (e.g., cities).
  • the present invention provides improved performance over the prior art designs, with much reduced local memory requirements, in some cases requiring no additional external memory.
  • the present invention enables sustained full duplex Gigabit rate security processing of IPSec protocol data packets.
  • FIGS. 1A an 1 B illustrate two examples of implementations of the invention as a cryptography acceleration chip incorporated into a network line card or a system module, respectively, in a standard processing system in accordance with embodiments of the present invention.
  • the cryptography acceleration chip 102 may be part of an otherwise standard network line card 103 which includes a WAN interface 112 that connects the processing system 100 to a WAN, such as the Internet, and manages in-bound and out-bound packets.
  • the chip 102 on the card 103 may be connected to a system bus 104 via a standard system interface 106 .
  • the system bus 104 may be, for example, as standard PCI bus, or it may be a high speed system switching matrix, as are well known to those of skill in the art.
  • the processing system 100 includes a processing unit 114 , which may be one or more processing units, and a system memory unit 116 .
  • the cryptography acceleration chip 102 on the card 103 also has associated with it a local processing unit 108 and local memory 110 .
  • the local memory 110 may be RAM or CAM and may be either on or off the chip 102 .
  • the system also generally includes a LAN interface (not shown) which attaches the processing system 100 to a local area network and receives packets for processing and writes out processed packets to the network.
  • packets are received from the LAN or WAN and go directly through the cryptography acceleration chip and are processed as they are received from or are about to be sent out on the WAN, providing automatic security processing for IP packets.
  • the chip features a streamlined IP packet-in/packet-out interface that matches line card requirements in ideal fashion.
  • chips in accordance with the present invention may provide distributed processing intelligence that scales as more line cards are added, automatically matching up security processing power with overall system bandwidth.
  • integrating the chip onto line cards preserves precious switching fabric bandwidth by pushing security processing to the edge of the system. In this way, since the chip is highly autonomous, shared system CPU resources are conserved for switching, routing and other core functions.
  • One beneficial system-level solution for high-end Web switches and routers is to integrate a chip in accordance with the present invention functionality with a gigabit Ethernet MAC and PHY.
  • the next generation of firewalls being designed today require sustained security bandwidths in the gigabit range.
  • Chips in accordance with the present invention can deliver sustained full duplex multi-gigabit IPSec processing performance.
  • the cryptography acceleration chip 152 may be part of a service module 153 for cryptography acceleration.
  • the chip 152 in the service module 153 may be connected to a system bus 154 via a standard system interface 156 .
  • the system bus 154 may be, for example, a high speed system switching matrix, as are well known to those of skill in the art.
  • the processing system 150 includes a processing unit 164 , which may be one or more processing units, and a system memory unit 166 .
  • the cryptography acceleration chip 152 in the service module 153 also has associated with it a local processing unit 158 and local memory 160 .
  • the local memory 160 may be RAM or CAM and may be either on or off the chip 152 .
  • the system also generally includes a LAN interface which attaches the processing system 150 to a local area network and receives packets for processing and writes out processed packets to the network, and a WAN interface that connects the processing system 150 to a WAN, such as the Internet, and manages in-bound and out-bound packets.
  • the LAN and WAN interfaces are generally provided via one or more line cards 168 , 170 . The number of line cards will vary depending on the size of the system. For very large systems, there may be thirty to forty or more line cards.
  • packets received from the LAN or WAN are directed by the high speed switching matrix 154 to memory 166 , from which they are sent to the chip 152 on the service module 153 for security processing.
  • the processed packets are then sent back over the matrix 154 , through the memory 166 , and out to the LAN or WAN, as appropriate.
  • FIG. 2 is a high-level block diagram of a cryptography chip architecture in accordance with one embodiment of the present invention.
  • the chip 200 may be connected to external systems by a standard PCI interface (not shown), for example a 32-bit bus operating at up to 33 MHz.
  • PCI interface not shown
  • other interfaces and configurations may be used, as is well known in the art, without departing from the scope of the present invention.
  • the IP packets are read into a FIFO (First In First Out buffer) input unit 202 .
  • This interface (and the chip's output FIFO) allow packet data to stream into and out of the chip.
  • they provide high performance FIFO style ports that are unidirectional, one for input and one for output.
  • the FIFO 202 supports a bypass capability that feeds classification information along with packet data.
  • Suitable FIFO-style interfaces include GMII as well as POS-PHY-3 style FIFO based interfaces, well known to those skilled in the art.
  • packet header information is sent to a packet classifier unit 204 where a classification engine rapidly determines security association information required for processing the packet, such as encryption keys, data, etc.
  • the classification engine performs lookups from databases stored in associated memory.
  • the memory may be random access memory (RAM), for example, DRAM or SSRAM, in which case the chip includes a memory controller 212 to control the associated RAM.
  • the associated memory may also be contact addressable memory (CAM), in which case the memory is connected directly with the cryptography engines 216 and packet classifier 204 , and a memory controller is unnecessary.
  • the associated memory may be on or off chip memory.
  • the security association information determined by the packet classifier unit 204 is sent to a packet distributor unit 206 .
  • the distributor unit 206 determines if a packet is ready for IPSec processing, and if so, distributes the security association information (SA) received from the packet classifier unit 204 and the packet data among a plurality of cryptography processing engines 124 , in this case four, on the chip 200 , for security processing. This operation is described in more detail below.
  • SA security association information
  • the cryptography engines may include, for example, “3DES-CBC/DES X” encryption/decryption “MD5/SHA1” authentication/digital signature processing and compression/decompression processing. It should be noted, however, that the present architecture is independent of the types of cryptography processing performed, and additional cryptography engines may be incorporated to support other current or future cryptography algorithms. Thus, a further discussion of the cryptography engines is beyond to scope of this disclosure.
  • the distributor unit 206 Once the distributor unit 206 has determined that a packet is ready for IPSec processing, it will update shared IPSec per-flow data for that packet, then pass the packet along to one of the four cryptography and authentication engines 214 . The distributor 206 selects the next free engine in round-robin fashion within a given flow. Engine output is also read in the same round-robin order. Since packets are retired in a round-robin fashion that matches their order of issue packet ordering is always maintained within a flow (“per flow ordering”). For the per-flow ordering case, state is maintained to mark the oldest engine (first one issued) for each flow on the output side, and the newest (most recently issued) engine on the input side; this state is used to select an engine for packet issue and packet retiring.
  • the chip has an engine scheduling module which allows new packets to be issued even as previous packets from the same flow are still being processed by one or more engines.
  • the SA Buffers will indicate a hit (SA auxiliary structure already on-chip), shared state will be updated in the on-chip copy of the SA auxiliary structure, and the next free engine found in round-robin order will start packet processing.
  • the distributor 206 performs sequential portions of IPSec processing that rely upon packet-to-packet ordering, and hands off a parallelizable portion of IPSec to the protocol and cryptography processing engines.
  • the distributor also handles state cleanup functions needed to properly retire a packet (including ensure that packet ordering is maintained) once IPSec processing has completed.
  • Per-flow ordering offers a good trade-off between maximizing end-to-end system performance (specifically desktop PC TCP/IP stacks), high overall efficiency, and design simplicity.
  • scenarios that involve a mix of different types of traffic such as voice-over-IP (VoIP), bulk ftp/e-mail, and interactive telnet or web browsing will run close to 100% efficiency.
  • Splitting, if necessary, a single IPSec tunnel into multiple tunnels that carry unrelated data can further enhance processing efficiency.
  • Per-flow IPSec data includes IPSec sequence numbers, anti-replay detection masks, statistics, as well as key lifetime statistics (time-based and byte-based counters). Note that some of this state cannot be updated until downstream cryptography and authentication engines have processed an entire packet. An example of this is the anti-replay mask, which can only be updated once a packet has been established as a valid, authenticated packet.
  • the distributor 206 handles these situations by holding up to eight copies of per-flow IPSec information on-chip, one copy per packet that is in process in downstream authentication and crypto engines (each engine holds up to two packets due to internal pipelining). These copies are updated once corresponding packets complete processing.
  • This scheme will always maintain ordering among IPSec packets that belong to a given flow, and will correctly process packets under all possible completion ordering scenarios.
  • a global flag allows absolute round robin sequencing, which maintains packet ordering even among different flows (“strong ordering”). Strong ordering may be maintained in a number of ways, for example, by assigning a new packet to the next free cryptography processing unit in strict round-robin sequence. Packets are retired in the same sequence as units complete processing, thus ensuring order maintenance. If the next engine in round-robin sequence is busy, the process of issuing new packets to engines is stalled until the engines become free. Similarly, if the next engine on output is not ready, the packet output process stalls. These restrictions ensure that an engine is never “skipped”, thus guaranteeing ordering at the expense of some reduced processing efficiency.
  • strong ordering may be maintained by combining the distributor unit with an order maintenance packet retirement unit. For every new packet, the distributor completes the sequential portions of IPSec processing, and assigns the packet to the next free engine. Once the engine completes processing the packet, the processed packet is placed in a retirement buffer. The retirement unit then extracts processed packets out of the retirement buffer in the same order that the chip originally received the packets, and outputs the processed packets. Note that packets may process through the multiple cryptography engines in out of order fashion; however, packets are always output from the chip in the same order that the chip received them. This is an “out-of-order execution, in-order retirement” scheme. The scheme maintains peak processing efficiency under a wide variety of workloads, including a mix of similar size or vastly different size packets.
  • the distributor's protocol processor is programmed via on-chip microcode stored in a microcode storage unit 208 .
  • the protocol processor is microcode-based with specific instructions to accelerate IPSec header processing.
  • the chip also includes various buffers 210 for storing packet data, security association information, status information, etc., as described further with reference to FIG. 3, below.
  • buffers 210 for storing packet data, security association information, status information, etc., as described further with reference to FIG. 3, below.
  • fixed-sized packet cells may be stored in payload or packet buffers
  • context or security association buffers may be used to store security association information for associated packets/cells.
  • the output cells are then stored in an output FIFO 216 , in order to write the packets back out to the system.
  • the processed cells are reassembled into packets and sent off the chip by the output FIFO 216 .
  • FIG. 3 is a block diagram of a cryptography accelerator chip architecture in accordance with one embodiment of the present invention.
  • the chip 300 includes an input FIFO 302 into which IP packets are read. From the input FIFO 302 , packet header information is sent to a packet classifier unit 204 where a classification engine rapidly determines security association information required for processing the packet, such as encryption keys, data, etc. As described in further detail below, the classification engine performs lookups from databases stored in associated memory.
  • the memory may be random access memory (RAM), for example, DRAM or SSRAM, in which case the chip includes a memory controller 308 to control the associated RAM.
  • RAM random access memory
  • the associated memory may also be contact addressable memory (CAM), in which case the memory is connected directly with the cryptography engines 316 and packet classifier 304 , and a memory controller is unnecessary.
  • the associated memory may be on or off chip memory.
  • the security association information determined by the packet classifier unit 304 is sent to a packet distributor unit 306 via the chip's internal bus 305 .
  • the packet distributor unit 306 then distributes the security association information (SA) received from the packet classifier unit 304 and the packet data via the internal bus 305 among a plurality of cryptography processing engines 316 , in this case four, on the chip 200 , for security processing.
  • the crypto engines may include “3DES-CBC/DES X” encryption/decryption “MD5/SHA1” authentication/digital signature processing and compression/decompression processing.
  • the present architecture is independent of the types of cryptography processing performed, and a further discussion of the cryptography engines is beyond to scope of this disclosure.
  • the packet distributor unit 306 includes a processor which controls the sequencing and processing of the packets according to microcode stored on the chip.
  • the chip also includes various buffers associated with each cryptography engine 316 .
  • a packet buffer 312 is used for storing packet data between distribution and crypto processing.
  • each crypto engine 316 has a pair of security association information (SA) buffers 314 a , 314 b associated with it. Two buffers per crypto engine are used so that one 314 b , may hold the SA for a current packet (packet currently being processed) while the other 314 a is being preloaded with the security association information for the next packet.
  • SA security association information
  • a status buffer 310 may be used to store processing status information, such as errors, etc.
  • Processed packet cells are reassembled into packets and sent off the chip by an output FIFO 318 .
  • the packet distributor 306 controls the output FIFO 318 to ensure that packet ordering is maintained.
  • the IPSec cryptography protocol specifies two levels of lookup: Policy (Security Policy Database (SPD) lookup) and Security Association (Security Association Database (SAD) lookup).
  • SPD Security Policy Database
  • SAD Security Association Database
  • the policy look-up is concerned with determining what needs to be done with various types of traffic, for example, determining what security algorithims need to be applied to a packet, without determining the details, e.g., the keys, etc.
  • the Security Association lookup provides the details, e.g., the keys, etc., needed to process the packet according to the policy identified by the policy lookup.
  • the present invention provides chip architectures and methods capable of accomplishing this IPSec function at sustained multiple full duplex gigabit rates.
  • CAM based and RAM DRAM/SSRAM
  • the classification engine provides support for general IPSec policy rule sets, including wild cards, overlapping rules, conflicting rules and conducts deterministic searches in a fixed number of clock cycles. In preferred embodiments, it may be implemented either as a fast DRAM/SSRAM lookup classification engine, or on-chip CAM memory for common situations, with extensibility via off-chip CAM, DRAM or SSRAM.
  • Engines in accordance with some embodiments of the present invention engine are capable of operating at wirespeed rates under any network load.
  • the classifier processes packets down to 64 bytes at OC12 full duplex rates (1.2 Gb/s throughput); this works out to a raw throughput of 2.5M packets per second.
  • the classifier includes four different modes that allow all IPSec selector matching operations to be supported, as well as general purpose packet matching for packet filtering purposes, for fragment re-assembly purposes, and for site blocking purposes.
  • the classifier is not intended to serve as a general-purpose backbone router prefix-matching engine.
  • the classifier supports general IPSec policies, including rules with wildcards, ranges, and overlapping selectors. Matching does not require a linear search of overlapping rules, but instead occurs in a deterministic number of clock cycles.
  • Security and filtering policies are typically specified using flexible rule sets that allow generic matching to be performed on a set of broad packet selector fields. Individual rules support wildcard specification and ranges for matching parameters. In addition, multiple rules are allowed to overlap, and order-based matching is used to select the first applicable rule in situations where multiple rules apply.
  • Rule overlap and ordered matching add a level of complexity to hardware-based high-speed rule matching implementations.
  • the requirement to select among multiple rules that match based on the order in which these rules are listed precludes direct implementation via high-speed lookup techniques that immediately find a matching rule independent of other possible matches.
  • Chips in accordance with the present invention provide a solution to the problem of matching in a multiple overlapping order-sensitive rule set environment involving a combination of rule pre-processing followed by direct high-speed hardware matching, and supports the full generality of security policy specification languages.
  • a pre-processing de-correlation step handles overlapping and possibly conflicting rule sets. This de-correlation algorithm produces a slightly larger equivalent rule set that involves zero intersection The new rule set is then implemented via high-speed hardware lookups. High performance algorithms that support incremental de-correlation are available in the art. Where CAM is used, a binarization step is used to convert range-based policies into mask-based lookups suitable for CAM arrays.
  • the function of the packet classifier is to perform IPSec-specified lookup as well as IP packet fragmentation lookup. These lookups are used by the distributor engine, as well as by the packet input engine (FIFO). In one embodiment, classification occurs based on a flexible set of selectors as follows:
  • the result of packet classification is a classification tag. This structure holds IPSec security association data and per-flow statistics.
  • a classifier in accordance with the present invention can be implemented using several different memory arrays for rule storage; each method involves various cost/performance trade-offs.
  • the main implementations are external CAM-based policy storage; on-chip CAM-based policy storage; and external RAM (DRAM, SGRAM, SSRAM) based storage.
  • RAM-based lookups can only match complete (i.e. exact) sets of selectors, and hence tend to require more memory and run slower than CAM-based approaches.
  • On-chip CAM offers an attractive blend of good capacity, high performance and low cost.
  • a preferred approach for cost-insensitive versions of a cryptography acceleration chip in accordance with the present invention is to implement an on-chip CAM and to provide a method to add more CAM storage externally.
  • Rule sets tend to be relatively small (dozens of entries for a medium corporate site, a hundred entries for a large site, perhaps a thousand at most for a mega-site) since they need to be managed manually.
  • the de-correlated rule sets will be somewhat larger, however even relatively small CAMs will suffice to hold the entire set.
  • a preferred method for cost-sensitive versions of a cryptography acceleration chip in accordance with the present invention is to implement DRAM-based classification, with a dedicated narrow DRAM port to hold classification data (i.e. a 32-bit SGRAM device).
  • a higher performance alternative is to use external SSRAM, in which case a shared memory system can readily sustain the required low latency.
  • RAM-based variant illustrated in FIG. 4 relies upon a classification entry structure in external memory.
  • the RAM-based classifier operates via a hash-based lookup mechanism.
  • RAM-based classification requires one table per type of match: one for IPSec quintuples, one for IPSec triples, and a small table for fragmentation lookups.
  • DRAM-based matching An important property of DRAM-based matching is that only exact matches are kept in the DRAM-based tables, i.e., it is not possible to directly match with wildcards and bit masks the way a CAM can.
  • Host CPU assistance is required to dynamically map IPSec policies into exact matches. This process occurs once every time a new connection is created. The first packet from such a connection will require the creation of an exact match based on the applicable IPSec policy entry. The host CPU load created by this process is small, and can be further reduced by providing microcode assistance.
  • the input match fields are hashed to form a table index, which is then used to look up a Hash Map table.
  • the output of this table contains indexes into a Classification Entry table that holds a copy of match fields plus additional match tag information.
  • Hash Map and Classification Entry tables are typically stored in off-chip DRAM. Since every access to these tables involves a time-consuming DRAM fetch, a fetch algorithm which minimizes the number of rehash accesses is desirable. In most typical scenarios, a matching tag is found with just two DRAM accesses with a chip in accordance with the present invention.
  • the hash table returns indexes to three entries that could match in one DRAM access.
  • the first entry is fetched from the Classification Table; if this matches the classification process completes. If not, the second then the third entry are fetched and tested for a match against the original match field. If both fail to match, a rehash distance from the original hash map entry is applied to generate a new hash map entry, and the process repeated a second time. If this fails too, a host CPU interrupt indicating a match failure is generated. When this occurs, the host CPU will determine if there is indeed no match for the packet, or if there is a valid match that has not yet been loaded into the classifier DRAM tables. This occurs the first time a packet from a new connection is encountered by the classification engine.
  • the hash table is split into a two-level structure, it is possible to maintain a sparse table for the top-level Hash Map entries. Doing so greatly reduces the chances of a hash collision, ensuring that in most cases the entire process will complete within two DRAM accesses.
  • Hash Map table entries as well as the Classification Entries: /* * Security Association Table - Classification Fields * Used to look up an association per header. * This table is accessed via a hash lookup structure, SATClassHash, defined next. * * Note that a single IPSec Security Association Database entry can occupy multiple * SATClass entries due to wildcard and range support for various header fields.
  • hash table structures there are two hash table structures -- one for SPI-based lookup, * one for inner header lookup.
  • Overflows are handled via software. The odds of an overflow are small -- the * average hash bucket occupancy is 0.5 entries per bucket, * and an initial overflow is handled via a variable-distance rehash. * Host software can set the rehash distance per hash entry to minimize * overflow situations. An overflow would require 3 entries in the first * hash bucket, followed by 3 entries in the second re-hashed * bucket as well. This is very unlikely in practice. * * Multiple matching SATClass entries need to searched sequentially.
  • a Hash Map structure entry is 128-bits long, and a Classification Entry is 192-bits long.
  • This relatively compact representation enables huge numbers of simultaneous security associations to be supported in high-end systems, despite the fact that DRAM-based matching requires that only exact matches be stored in memory.
  • the DRAM usage for 256K simultaneous sessions for IPSec quintuple matches is as follows:
  • Classification Entry memory 24 Bytes*256K ⁇ 6.1 Mbytes of DRAM usage
  • Hash Map memory Sparse (0.5 entries per hash bucket avg), 2*16 Bytes*256K ⁇ 8M Bytes
  • Total DRAM usage for 256K simultaneous sessions is under 16 Mbytes; 256K sessions would be sufficient to cover a major high-tech metropolitan area, and is appropriate for super high-end concentrator systems.
  • CAM based classification engine in accordance with the present invention.
  • the CAM based classifier is conceptually much simpler than the DRAM based version. In one embodiment, it is composed of a 104-bit match field that returns a 32-bit match tag, for a total data width of 136 -bits.
  • a common CAM array can readily be shared among different types of lookups.
  • a single CAM can implement all forms of lookup required by a cryptography acceleration chip in accordance with the present invention, including fragment lookups, IPSec quintuple matches, and IPSec triple matches. This is accomplished by storing along with each entry, the type of match that it corresponds to via match type field.
  • the set of IPSec rules are pre-processed via a de-correlation step and a binarization step prior to mapping to CAM entries, it is not necessary for the CAM to support any form of ordered search. Rather, it is possible to implement a fully parallel search and return any match found.
  • the preferred implementation involves an on-chip CAM that is capable of holding 128 entries. Each entry consists of a match field of 106-bits (including a 2-bit match type code) and a match tag of 32-bits.
  • An efficient, compact CAM implementation is desired in order to control die area. The CAM need not be fast; one match every 25 clock cycles will prove amply sufficient to meet the performance objective of one lookup every 400 ns. This allows a time-iterated search of CAM memory, and allows further partitioning of CAM contents into sub-blocks that can be iteratively searched. These techniques can be used to cut the die area required for the classifier CAM memory.
  • CAM matching is done using a bit mask to reflect binarized range specifiers from the policy rule set.
  • bit masks are used to choose between IPSec quintuple, triple, fragment or non-IPSec basic matches.
  • Typical security policy rule sets range from a few entries to a hundred entries (medium corporate site) to a maximum of a thousand or so entries (giant corporate site with complex policies). These rule sets are manually managed and configured, which automatically limits their size.
  • the built-in CAM size should be sufficient to cover typical sites with moderately complex rule sets; off-chip CAM can be added to cover mega-sites.
  • CAM-based classification is extremely fast, and will easily provide the required level of performance. As such, the classifier unit does not need any pipelining, and can handle multiple classification requests sequentially.
  • FIG. 6A depicts the flow in the inbound direction ( 600 ).
  • an inbound packet is received by the packet classifier on a cryptography acceleration chip in accordance with the present invention, its header is parsed ( 602 ) and a SAD lookup is performed ( 604 ).
  • the packet may be dropped ( 606 ), passed-through ( 608 ), or directed into the cryptography processing system.
  • the packet is decrypted and authenticated ( 610 ), and decapsulated ( 612 ). Then, a SPD lookup is performed ( 614 ). If the result of the lookup is a policy that does not match that specified by the SAD lookup, the packet is dropped ( 616 ). Otherwise, a clear text packet is sent out of the cryptography system ( 618 ) and into the local system/network.
  • FIG. 6B depicts the flow in the outbound direction ( 650 ).
  • an outbound packet is received by the packet classifier on a cryptography acceleration chip in accordance with the present invention, its header is parsed ( 652 ) and a SPD lookup is performed ( 654 ). Depending on the result of the SPD lookup and as specified by the resulting policy, the packet may be dropped ( 656 ), passed-through ( 658 ), or directed into the cryptography processing system.
  • a SAD lookup is conducted ( 660 ). If no matching SAD entry is found ( 662 ) one is created ( 664 ) in the IPSec Security Association Database.
  • the packet is encapsulated ( 666 ), encrypted and authenticated ( 668 ).
  • the encrypted packet is then sent out of the system ( 670 ) to the external network (WAN).
  • the purpose of the SA buffer prefetch unit is to hold up to eight Security Association Auxiliary structures, two per active processing engine. This corresponds to up to two packet processing requests per engine, required to support the double-buffered nature of each engine.
  • the double buffered engine design enables header prefetch, thus hiding DRAM latency from the processing units.
  • the structures are accessed by SA index, as generated by the packet classifier.
  • Partial contents for the SA Auxiliary structure are as shown in the following C code fragment: typedef struct SATAux_struct ⁇ u32 byteCount; /* Total payload bytes processed via */ /* this entry (larger of crypto or auth bytes) */ u64 expiry; /* Expiry time or #bytes for this */ /* entry (checked per use) */ u32 packetCount; /* Stats - # packets processed via this entry */ struct SATAux_struct *next; /* Next IPSec Security Association for SA */ /* bundles */ u32 seqNoHi; /* Anti replay sequence number - “right” edge of window */ /* for outgoing packets, used for next sequence number */ u64 seqWin; /* Anti-replay sequence window (bit mask) */ u32 peerAddr; /* IPSec peer security gateway address */ u32 spi; /*
  • the SA Buffer unit prefetches the security auxiliary entry corresponding to a given SA index. Given an SA index, the SA buffer checks to see if the SA Aux entry is already present; if so, an immediate SA Hit indication is returned to the distributor micro-engine. If not, the entry is pre-fetched, and a hit status is then returned. If all SA entries are dirty (i.e. have been previously written but not yet flushed back to external memory) and none of the entries is marked as retired, the SA Buffer unit stalls. This condition corresponds to all processing engines being busy anyway, such that the distributor is not the bottleneck in this case.
  • the distributor unit has a micro-engine large register file (128 entries by 32-bits), good microcode RAM size (128 entries by 96-bits), and a simple three stage pipeline design that is visible to the instruction set via register read delay slots and conditional branch delay slots.
  • Microcode RAM is downloaded from the system port at power-up time, and is authenticated in order to achieve FIPS140-1 compliance.
  • the micro-engine is started by an event-driven mechanism.
  • a hardware prioritization unit automatically vectors the micro-engine to the service routing for the next top-priority outstanding event; packet retiring has priority over issue.
  • Packet Issue Microcode // // SA Buffer entry has been pre-fetched and is on-chip // Packet length is available on-chip // test drop/pass flags; if set special case processing; test lifetime; break if expired; // reset if auth fails later test byte count; break if expired; // reset if auth fails later assert stats update command; // update outgoing sequence number assert locate next engine command; if none, stall; assert issue new packet command with descriptor ID, tag, length;
  • ACE Advanced Classification Engine
  • a classification engine (referred to as the Advanced Classification Engine (ACE)) provides an i ninovative solution to the difficult problem of implementing the entire set of complex IPSec specified Security Association Database and Security Policy Database rules in hardware.
  • the IETF IPSec protocol provides packet classification via wildcard rules, overlapping rules and conflict resolution via total rule ordering.
  • the challenge solved by ACE is to implement this functionality in wirespeed hardware.
  • the Advanced Classification Engine of a chip in accordance with the present invention handles per-packet lookup based on header contents. This information then determines the type of IPSec processing that will be implemented for each packet.
  • ACE functions as a complete hardware IPSec Security Association Database lookup engine.
  • ACE supports full IPSec Security Association lookup flexibility, including overlapping rules, wildcards and complete ordering.
  • ACE provides extremely high hardware throughput.
  • ACE provides value-added functions in the areas of statistics gathering and maintenance on a flexible per link or per Security Association basis, and SA lifetime monitoring.
  • a separate unit within ACE, the Automatic Header Generator deals with wirespeed creation of IPSec compliant headers.
  • ACE derives its extremely high end to end performance (5 Mpkt/s at 125 MHz) from its streamlined, multi-level optimized design. The most performance critical operations are handled via on-chip hardware and embedded SRAM memory. The next level is handled in hardware, but uses off-chip DRAM memory. The slowest, very infrequent frequent level of operations is left to host processor software. Key features of ACE include:
  • the input to ACE consists of packet classification fields: src/dst address, src/dst ports, and protocol.
  • the output of ACE is an IPSec Security Association matching entry, if one exists, for this classification information within the IPSec Security Association Database.
  • the matching entry then provides statistics data and control information used by automatic IPSec header generation.
  • a global state flag controls the processing of packets for which no matching entry exists—silent discard, interrupt and queue up packet for software processing, or pass through.
  • the matching table holds up to 16K entries in DRAM memory. These entries are set up via control software to reflect IPSec Security Association Database (SAdB) and Security Policy Database (SPdB) rules.
  • SAdB Security Association Database
  • SPdB Security Policy Database
  • the wildcard and overlapping but fully ordered entries of the SAdB and SPdB are used by control software to generate one non-overlapping match table entry for every combination that is active. This scheme requires software intervention only once per new match entry.
  • FIG. 7 shows a block diagram of the ACE illustrating its structure and key elements.
  • Major components of ACE are as follows:
  • SATC-AUX Security Association Auxiliary Data table Cache
  • Each entry has the following fields: SATC-AUX SATC Auxiliary Field Cache IPv6 IPv4 size size Field name Description (bits) (bits) Byte count Total byte count for this entry 32 bits Expiry time Time entry expires 32 bits #misses SATC-CL misses for this entry 32 bits #pkt Total packet count for this entry 32 bits next_spi Next SPI for Iterated tunneling or 32 bits Transport adjacency seqchk Enable anti-replay sequence 1 bit check seqno Sequence number (output) or 32 bits highest received seq number (input) seqmask Anti-Replay window 64 bits algo_info Algorithm specific data (keys, 296 bits pad lengths, Initial Vectors, etc)
  • Quad Refill Engine handles the servicing of SATC-CL misses. When ever a miss occurs, the corresponding entry in the SATC-AUX is simultaneously fetched in order to maintain cache inclusion of all SATC-AUX entries within SATC-CL entries. This design simplifes and speeds up the cache hit logic considerably. The refill engine accepts and processes up to 4 outstanding miss requests simultaneously.
  • Quad Header Buffers Holds up to 4 complete IPv4 headers, and up to 256 bytes each of 4 IPv6 headers. Used to queue up headers that result in SATC-CL misses. Headers that result in a cache hit are immediately forwarded for IPSec header generation.
  • Header streaming buffer Handles overflows from the header buffer by streaming header bytes directly from DRAM memory; it is expected that such overflows will be exceedingly rare. This buffer holds 256 bytes.
  • Header/Trailer processing and buffer For input datagrams, interprets and strips IPSec ESP or AH header. For output datagrams, adjusts and calculates header and trailer fields. Holds a complete IPv4 fragment header, and up to 256 bytes of an IPv6 header. Requires input from the cryptography modules for certain fields (authentication codes, for instance).
  • SAT-CL Complete Security Association Table—Classification Field (SAT-CL): holds classification data. This table backs up the on-chip SAT-CL Cache. Each entry is 475 bits aligned up to 60 bytes.
  • SAT-AUX Complete Security Association Auxiliary Data table holds auxiliary data. This table backs up the on-chip SAT-AUX Cache. Each entry is 617 bits, plus up to 223 bits of algorithm specific state (such as HMAC intermediate state), for a total of 105 bytes.
  • the following pseudo-code module describes major ACE input processing (received Input Processing () ⁇ /* Received datagram */ Calculate hash value based upon (dst@, spi, protocol) ; /* Re-hash via predetermined sequence if collision occurs */ Lookup field in Security Association Classification Cache; if (no match found) ⁇ /* Refill cache from DRAM memory */ Calculate new hash for DRAM entry; /* Re-hash in case of collision */ /* * Out-of-order non-blocking execution */ Schedule DRAM access (up to 4 outstanding fill req's); Move on to Input Processing () of next datagram; /* When DRAM refill has completed */ Lookup field in DRAM Security Association table; Pre-fetch DRAM Auxiliary table entry; ⁇ if (no match found) ⁇ /* * Datagram does not have a SAdB entry; * Process based on global flags.
  • the following pseudo-code module describes major ACE output processing Output Processing () ⁇ /* Received datagram */ Calculate hash value based upon (src@, dst@, srcport, dstport, protocol); /* Re-hash via predetermined sequence if collision occurs */ Lookup field in Security Association Classification Cache; if (no match found) ⁇ /* Refill cache from DRAM memory */ Calculate new hash for DRAM entry; /* Re-hash in case of collision */ /* * Out-of-order non-blocking execution */ Schedule DRAM access (up to 4 outstanding fill req's); Move on to Input Processing () of next datagram; /* When DRAM refill has completed */ Lookup field in DRAM Security Association table; Pre-fetch DRAM Auxiliary table entry; ⁇ if (no match found) ⁇ /* * Datagram does not have a SAdB entry; process based * Process based on global
  • ACE implements multiple techniques to accelerate processing.
  • the design is fully pipelined, such that multiple headers are in different stages of ACE processing at any given time.
  • ACE implements non-blocking out-of-order processing of up to four packets.
  • Performance-enhancing DRAM access techniques such as read combining and page hit combining are used to full benefit by issuing multiple requests at once to refill SATC-CL and SATC-AUX caches. Furthermore, this scheme avoids a problem similar to Head Of Line Blocking in older routers, and minimizes overall packet latency.
  • ACE die area is estimated as follows based on major components and a rough allocation for control logic and additional data buffering: Control logic overhead 50 Kg Quad header buffer 20 Kg Quad refill controller with 50 Kg tag match SATC-CL cache 130 Kg (single port) SATC-AUX cache 170 Kg (single port) Stats engine 10 Kg Header/Trailer processor 20 Kg Prefetch buffering 50 Kg Total estimated gate count is 500 Kg.
  • IP Network Address Translator (NAT) Terminology and Considerations P. Srisuresh, M. Holdrege, August 1999.

Abstract

Provided is an architecture for a cryptography accelerator chip that allows significant performance improvements over previous prior art designs. In various embodiments, the architecture enables parallel processing of packets through a plurality of cryptography engines and includes a classification engine configured to efficiently process encryption/decryption of data packets. Cryptography acceleration chips in accordance may be incorporated on network line cards or service modules and used in applications as diverse as connecting a single computer to a WAN, to large corporate networks, to networks servicing wide geographic areas (e.g., cities). The present invention provides improved performance over the prior art designs, with much reduced local memory requirements, in some cases requiring no additional external memory. In some embodiments, the present invention enables sustained full duplex Gigabit rate security processing of IPSec protocol data packets.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims priority from U.S. patent application Ser. No. 09/610,722 entitled CLASSIFICATION ENGINE IN A CRYPTOGRAPHY ACCELERATION CHIP, filed on Jul. 6, 2000; U.S. Provisional Application No. 60/142,870, entitled NETWORKING SECURITY CHIP ARCHITECTURE AND IMPLEMENTATIONS FOR CRYPTOGRAPHY ACCELERATION, filed Jul. 8, 1999; and U.S. Provisional Application No. 60/159,012, entitled UBIQUITOUS BROADBAND SECURITY CHIP, filed Oct. 12, 1999, the disclosures of which are herein incorporated by reference herein for all purposes. [0001]
  • This application is related to concurrently filed U.S. application Ser. No. ______ (Atty. Docket No. BRCMP003C1), entitled DISTRIBUTED PROCESSING IN A CRYPTOGRAPHY ACCELERATION CHIP, the disclosure of which is incorporated by reference herein for all purposes.[0002]
  • BACKGROUND OF THE INVENTION
  • The present invention relates generally to the field of cryptography, and more particularly to an architecture and method for cryptography acceleration. [0003]
  • Many methods to perform cryptography are well known in the art and are discussed, for example, in [0004] Applied Cryptography, Bruce Schneier, John Wiley & Sons, Inc. (1996, 2nd Edition), herein incorporated by reference. In order to improve the speed of cryptography processing, specialized cryptography accelerator chips have been developed. For example, the Hi/fn™ 7751 and the VLSI™ VMS115 chips provide hardware cryptography acceleration that out-performs similar software implementations. Cryptography accelerator chips may be included in routers or gateways, for example, in order to provide automatic IP packet encryption/decryption. By embedding cryptography functionality in network hardware, both system performance and data security are enhanced.
  • However, these chips require sizeable external attached memory in order to operate. The VLSI VMS115 chip, in fact, requires attached synchronous SRAM, which is the most expensive type of memory. The substantial additional memory requirements make these solutions unacceptable in terms of cost versus performance for many applications. [0005]
  • Also, the actual sustained performance of these chips is much less than peak throughput that the internal cryptography engines (or “crypto engines”) can sustain. One reason for this is that the chips have a long “context” change time. In other words, if the cryptography keys and associated data need to be changed on a packet-by-packet basis, the prior art chips must swap out the current context and load a new context, which reduces the throughput. The new context must generally be externally loaded from software, and for many applications, such as routers and gateways that aggregate bandwidth from multiple connections, changing contexts is a very frequent task. [0006]
  • Moreover, the architecture of prior art chips does not allow for the processing of cryptographic data at rates sustainable by the network infrastructure in connection with which these chips are generally implemented. This can result in noticeable delays when cryptographic functions are invoked, for example, in e-commerce transactions. [0007]
  • Recently, an industry security standard has been proposed that combines both “DES/3DES” encryption with “MD5/SHA1” authentication, and is known as “IPSec.” By incorporating both encryption and authentication functionality in a single accelerator chip, over-all system performance can be enhanced. But due to the limitations noted above, the prior art solutions do not provide adequate performance at a reasonable cost. [0008]
  • Thus it would be desirable to have a cryptography accelerator chip architecture that is capable of implementing the IPSec specification (or any other cryptography standard), at much faster rates than are achievable with current chip designs. [0009]
  • SUMMARY OF THE INVENTION
  • In general, the present invention provides an architecture for a cryptography accelerator chip that allows significant performance improvements over previous prior art designs. In various embodiments, the architecture enables parallel processing of packets through a plurality of cryptography engines and includes a classification engine configured to efficiently process encryption/decryption of data packets. Cryptography acceleration chips in accordance may be incorporated on network line cards or service modules and used in applications as diverse as connecting a single computer to a WAN, to large corporate networks, to networks servicing wide geographic areas (e.g., cities). The present invention provides improved performance over the prior art designs, with much reduced local memory requirements, in some cases requiring no additional external memory. In some embodiments, the present invention enables sustained full duplex Gigabit rate security processing of IPSec protocol data packets. [0010]
  • In one aspect, the present invention provides a cryptography acceleration chip having a classification engine configured to receive a complete IP packet and determine what keys are needed to encrypt or decrypt the packet. [0011]
  • In another aspect, the invention provides a method for accelerating cryptography processing of data packets. The method involves receiving a plurality of complete data packets on a cryptography acceleration chip and processing the data packets with a classification engine to determine what keys are needed to encrypt or decrypt the packets. [0012]
  • These and other features and advantages of the present invention will be presented in more detail in the following specification of the invention and the accompanying figures which illustrate by way of example the principles of the invention. [0013]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which: [0014]
  • FIGS. 1A and B are high-level block diagrams of systems implementing a cryptography accelerator chip in accordance with one embodiment the present invention. [0015]
  • FIG. 2 is a high-level block diagram of a cryptography accelerator chip in accordance with one embodiment the present invention. [0016]
  • FIG. 3 is a block diagram of a cryptography accelerator chip architecture in accordance with one embodiment of the present invention. [0017]
  • FIG. 4 is a block diagram illustrating a DRAM-based or SRAM-based packet classifier in accordance with one embodiment the present invention. [0018]
  • FIG. 5 is a block diagram illustrating a CAM-based packet classifier in accordance with one embodiment the present invention. [0019]
  • FIGS. 6A and 6B are flowcharts illustrating aspects of inbound and outbound packet processing in accordance with one embodiment the present invention. [0020]
  • FIG. 7 shows a block diagram of a classification engine in accordance with one embodiment of the present invention, illustrating its structure and key elements. [0021]
  • DETAILED DESCRIPTION OF THE INVENTION
  • Reference will now be made in detail to some specific embodiments of the invention including the best modes contemplated by the inventors for carrying out the invention. Examples of these specific embodiments are illustrated in the accompanying drawings. While the invention is described in conjunction with these specific embodiments, it will be understood that it is not intended to limit the invention to the described embodiments. On the contrary, it is intended to cover alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. The present invention may be practiced without some or all of these specific details. In other instances, well known process operations have not been described in detail in order not to unnecessarily obscure the present invention. [0022]
  • In general, the present invention provides an architecture for a cryptography accelerator chip that allows significant performance improvements over previous prior art designs. In preferred embodiments, the chip architecture enables “cell-based” processing of random-length IP packets, as described in copending U.S. patent application Ser. No. 09/510,486, entitled SECURITY CHIP ARCHITECTURE AND IMPLEMENTATIONS FOR CRYPTOGRAPHY ACCELERATION, incorporated by reference herein in its entirety for all purposes. Briefly, cell-based packet processing involves the splitting of IP packets, which may be of variable and unknown size, into smaller fixed-size “cells.” The fixed-sized cells are then processed and reassembled (recombined) into packets. The cell-based packet processing architecture of the present invention allows the implementation of a processing pipeline that has known processing throughput and timing characteristics, thus making it possible to fetch and process the cells in a predictable time frame. In preferred embodiments, the cells may be fetched ahead of time (pre-fetched) and the pipeline may be staged in such a manner that the need for attached (local) memory to store packet data or control parameters is minimized or eliminated. [0023]
  • Moreover, in various embodiments, the architecture enables parallel processing of packets through a plurality of cryptography engines, for example four, and includes a classification engine configured to efficiently process encryption/decryption of data packets. Cryptography acceleration chips in accordance may be incorporated on network line cards or service modules and used in applications as diverse as connecting a single computer to a WAN, to large corporate networks, to networks servicing wide geographic areas (e.g., cities). The present invention provides improved performance over the prior art designs, with much reduced local memory requirements, in some cases requiring no additional external memory. In some embodiments, the present invention enables sustained full duplex Gigabit rate security processing of IPSec protocol data packets. [0024]
  • In this specification and the appended claims, the singular forms “a,” “an,” and “the” include plural reference unless the context clearly dictates otherwise. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood to one of ordinary skill in the art to which this invention belongs. [0025]
  • The present invention may be implemented in a variety of ways. FIGS. 1A an [0026] 1B illustrate two examples of implementations of the invention as a cryptography acceleration chip incorporated into a network line card or a system module, respectively, in a standard processing system in accordance with embodiments of the present invention.
  • As shown in FIG. 1A, the [0027] cryptography acceleration chip 102 may be part of an otherwise standard network line card 103 which includes a WAN interface 112 that connects the processing system 100 to a WAN, such as the Internet, and manages in-bound and out-bound packets. The chip 102 on the card 103 may be connected to a system bus 104 via a standard system interface 106. The system bus 104 may be, for example, as standard PCI bus, or it may be a high speed system switching matrix, as are well known to those of skill in the art. The processing system 100 includes a processing unit 114, which may be one or more processing units, and a system memory unit 116.
  • The [0028] cryptography acceleration chip 102 on the card 103 also has associated with it a local processing unit 108 and local memory 110. As will be described in more detail below, the local memory 110 may be RAM or CAM and may be either on or off the chip 102. The system also generally includes a LAN interface (not shown) which attaches the processing system 100 to a local area network and receives packets for processing and writes out processed packets to the network.
  • According to this configuration, packets are received from the LAN or WAN and go directly through the cryptography acceleration chip and are processed as they are received from or are about to be sent out on the WAN, providing automatic security processing for IP packets. [0029]
  • In some preferred embodiments the chip features a streamlined IP packet-in/packet-out interface that matches line card requirements in ideal fashion. As described further below, chips in accordance with the present invention may provide distributed processing intelligence that scales as more line cards are added, automatically matching up security processing power with overall system bandwidth. In addition, integrating the chip onto line cards preserves precious switching fabric bandwidth by pushing security processing to the edge of the system. In this way, since the chip is highly autonomous, shared system CPU resources are conserved for switching, routing and other core functions. [0030]
  • One beneficial system-level solution for high-end Web switches and routers is to integrate a chip in accordance with the present invention functionality with a gigabit Ethernet MAC and PHY. The next generation of firewalls being designed today require sustained security bandwidths in the gigabit range. Chips in accordance with the present invention can deliver sustained full duplex multi-gigabit IPSec processing performance. [0031]
  • As shown in FIG. 1B, the [0032] cryptography acceleration chip 152 may be part of a service module 153 for cryptography acceleration. The chip 152 in the service module 153 may be connected to a system bus 154 via a standard system interface 156. The system bus 154 may be, for example, a high speed system switching matrix, as are well known to those of skill in the art. The processing system 150 includes a processing unit 164, which may be one or more processing units, and a system memory unit 166.
  • The [0033] cryptography acceleration chip 152 in the service module 153 also has associated with it a local processing unit 158 and local memory 160. As will be described in more detail below, the local memory 160 may be RAM or CAM and may be either on or off the chip 152. The system also generally includes a LAN interface which attaches the processing system 150 to a local area network and receives packets for processing and writes out processed packets to the network, and a WAN interface that connects the processing system 150 to a WAN, such as the Internet, and manages in-bound and out-bound packets. The LAN and WAN interfaces are generally provided via one or more line cards 168, 170. The number of line cards will vary depending on the size of the system. For very large systems, there may be thirty to forty or more line cards.
  • According to this configuration, packets received from the LAN or WAN are directed by the high [0034] speed switching matrix 154 to memory 166, from which they are sent to the chip 152 on the service module 153 for security processing. The processed packets are then sent back over the matrix 154, through the memory 166, and out to the LAN or WAN, as appropriate.
  • Basic Features, Architecture and Distributed Processing [0035]
  • FIG. 2 is a high-level block diagram of a cryptography chip architecture in accordance with one embodiment of the present invention. The [0036] chip 200 may be connected to external systems by a standard PCI interface (not shown), for example a 32-bit bus operating at up to 33 MHz. Of course, other interfaces and configurations may be used, as is well known in the art, without departing from the scope of the present invention.
  • Referring to FIG. 2, the IP packets are read into a FIFO (First In First Out buffer) [0037] input unit 202. This interface (and the chip's output FIFO) allow packet data to stream into and out of the chip. In one embodiment, they provide high performance FIFO style ports that are unidirectional, one for input and one for output. In addition, the FIFO 202 supports a bypass capability that feeds classification information along with packet data. Suitable FIFO-style interfaces include GMII as well as POS-PHY-3 style FIFO based interfaces, well known to those skilled in the art.
  • From the [0038] input FIFO 202, packet header information is sent to a packet classifier unit 204 where a classification engine rapidly determines security association information required for processing the packet, such as encryption keys, data, etc. As described in further detail below with reference to FIGS. 4, 5 and 6A and B, the classification engine performs lookups from databases stored in associated memory. The memory may be random access memory (RAM), for example, DRAM or SSRAM, in which case the chip includes a memory controller 212 to control the associated RAM. The associated memory may also be contact addressable memory (CAM), in which case the memory is connected directly with the cryptography engines 216 and packet classifier 204, and a memory controller is unnecessary. The associated memory may be on or off chip memory. The security association information determined by the packet classifier unit 204 is sent to a packet distributor unit 206.
  • The distributor unit [0039] 206 determines if a packet is ready for IPSec processing, and if so, distributes the security association information (SA) received from the packet classifier unit 204 and the packet data among a plurality of cryptography processing engines 124, in this case four, on the chip 200, for security processing. This operation is described in more detail below.
  • The cryptography engines may include, for example, “3DES-CBC/DES X” encryption/decryption “MD5/SHA1” authentication/digital signature processing and compression/decompression processing. It should be noted, however, that the present architecture is independent of the types of cryptography processing performed, and additional cryptography engines may be incorporated to support other current or future cryptography algorithms. Thus, a further discussion of the cryptography engines is beyond to scope of this disclosure. [0040]
  • Once the distributor unit [0041] 206 has determined that a packet is ready for IPSec processing, it will update shared IPSec per-flow data for that packet, then pass the packet along to one of the four cryptography and authentication engines 214. The distributor 206 selects the next free engine in round-robin fashion within a given flow. Engine output is also read in the same round-robin order. Since packets are retired in a round-robin fashion that matches their order of issue packet ordering is always maintained within a flow (“per flow ordering”). For the per-flow ordering case, state is maintained to mark the oldest engine (first one issued) for each flow on the output side, and the newest (most recently issued) engine on the input side; this state is used to select an engine for packet issue and packet retiring. The chip has an engine scheduling module which allows new packets to be issued even as previous packets from the same flow are still being processed by one or more engines. In this scenario, the SA Buffers will indicate a hit (SA auxiliary structure already on-chip), shared state will be updated in the on-chip copy of the SA auxiliary structure, and the next free engine found in round-robin order will start packet processing.
  • Thus, the distributor [0042] 206 performs sequential portions of IPSec processing that rely upon packet-to-packet ordering, and hands off a parallelizable portion of IPSec to the protocol and cryptography processing engines. By providing multiple cryptography engines and processing data packets in parallel chips in accordance with the present invention are able to provide greatly improved security processing performance. The distributor also handles state cleanup functions needed to properly retire a packet (including ensure that packet ordering is maintained) once IPSec processing has completed.
  • Per-flow ordering offers a good trade-off between maximizing end-to-end system performance (specifically desktop PC TCP/IP stacks), high overall efficiency, and design simplicity. In particular, scenarios that involve a mix of different types of traffic such as voice-over-IP (VoIP), bulk ftp/e-mail, and interactive telnet or web browsing will run close to 100% efficiency. Splitting, if necessary, a single IPSec tunnel into multiple tunnels that carry unrelated data can further enhance processing efficiency. [0043]
  • Per-flow IPSec data includes IPSec sequence numbers, anti-replay detection masks, statistics, as well as key lifetime statistics (time-based and byte-based counters). Note that some of this state cannot be updated until downstream cryptography and authentication engines have processed an entire packet. An example of this is the anti-replay mask, which can only be updated once a packet has been established as a valid, authenticated packet. In one embodiment, the distributor [0044] 206 handles these situations by holding up to eight copies of per-flow IPSec information on-chip, one copy per packet that is in process in downstream authentication and crypto engines (each engine holds up to two packets due to internal pipelining). These copies are updated once corresponding packets complete processing.
  • This scheme will always maintain ordering among IPSec packets that belong to a given flow, and will correctly process packets under all possible completion ordering scenarios. [0045]
  • In addition, in some embodiments, a global flag allows absolute round robin sequencing, which maintains packet ordering even among different flows (“strong ordering”). Strong ordering may be maintained in a number of ways, for example, by assigning a new packet to the next free cryptography processing unit in strict round-robin sequence. Packets are retired in the same sequence as units complete processing, thus ensuring order maintenance. If the next engine in round-robin sequence is busy, the process of issuing new packets to engines is stalled until the engines become free. Similarly, if the next engine on output is not ready, the packet output process stalls. These restrictions ensure that an engine is never “skipped”, thus guaranteeing ordering at the expense of some reduced processing efficiency. [0046]
  • Alternatively, strong ordering may be maintained by combining the distributor unit with an order maintenance packet retirement unit. For every new packet, the distributor completes the sequential portions of IPSec processing, and assigns the packet to the next free engine. Once the engine completes processing the packet, the processed packet is placed in a retirement buffer. The retirement unit then extracts processed packets out of the retirement buffer in the same order that the chip originally received the packets, and outputs the processed packets. Note that packets may process through the multiple cryptography engines in out of order fashion; however, packets are always output from the chip in the same order that the chip received them. This is an “out-of-order execution, in-order retirement” scheme. The scheme maintains peak processing efficiency under a wide variety of workloads, including a mix of similar size or vastly different size packets. [0047]
  • Most functions of the distributor are performed via dedicated hardware assist logic as opposed to microcode, since the distributor [0048] 206 is directly in the critical path of per-packet processing. The distributor's protocol processor is programmed via on-chip microcode stored in a microcode storage unit 208. The protocol processor is microcode-based with specific instructions to accelerate IPSec header processing.
  • The chip also includes [0049] various buffers 210 for storing packet data, security association information, status information, etc., as described further with reference to FIG. 3, below. For example, fixed-sized packet cells may be stored in payload or packet buffers, and context or security association buffers may be used to store security association information for associated packets/cells.
  • The output cells are then stored in an [0050] output FIFO 216, in order to write the packets back out to the system. The processed cells are reassembled into packets and sent off the chip by the output FIFO 216.
  • FIG. 3 is a block diagram of a cryptography accelerator chip architecture in accordance with one embodiment of the present invention. The [0051] chip 300 includes an input FIFO 302 into which IP packets are read. From the input FIFO 302, packet header information is sent to a packet classifier unit 204 where a classification engine rapidly determines security association information required for processing the packet, such as encryption keys, data, etc. As described in further detail below, the classification engine performs lookups from databases stored in associated memory. The memory may be random access memory (RAM), for example, DRAM or SSRAM, in which case the chip includes a memory controller 308 to control the associated RAM. The associated memory may also be contact addressable memory (CAM), in which case the memory is connected directly with the cryptography engines 316 and packet classifier 304, and a memory controller is unnecessary. The associated memory may be on or off chip memory. The security association information determined by the packet classifier unit 304 is sent to a packet distributor unit 306 via the chip's internal bus 305.
  • The [0052] packet distributor unit 306 then distributes the security association information (SA) received from the packet classifier unit 304 and the packet data via the internal bus 305 among a plurality of cryptography processing engines 316, in this case four, on the chip 200, for security processing. For example, the crypto engines may include “3DES-CBC/DES X” encryption/decryption “MD5/SHA1” authentication/digital signature processing and compression/decompression processing. As noted above, the present architecture is independent of the types of cryptography processing performed, and a further discussion of the cryptography engines is beyond to scope of this disclosure.
  • The [0053] packet distributor unit 306 includes a processor which controls the sequencing and processing of the packets according to microcode stored on the chip. The chip also includes various buffers associated with each cryptography engine 316. A packet buffer 312 is used for storing packet data between distribution and crypto processing. Also, in this embodiment, each crypto engine 316 has a pair of security association information (SA) buffers 314 a, 314 b associated with it. Two buffers per crypto engine are used so that one 314 b, may hold the SA for a current packet (packet currently being processed) while the other 314 a is being preloaded with the security association information for the next packet. A status buffer 310 may be used to store processing status information, such as errors, etc.
  • Processed packet cells are reassembled into packets and sent off the chip by an [0054] output FIFO 318. The packet distributor 306 controls the output FIFO 318 to ensure that packet ordering is maintained.
  • Packet Classifier [0055]
  • The IPSec cryptography protocol specifies two levels of lookup: Policy (Security Policy Database (SPD) lookup) and Security Association (Security Association Database (SAD) lookup). The policy look-up is concerned with determining what needs to be done with various types of traffic, for example, determining what security algorithims need to be applied to a packet, without determining the details, e.g., the keys, etc. The Security Association lookup provides the details, e.g., the keys, etc., needed to process the packet according to the policy identified by the policy lookup. The present invention provides chip architectures and methods capable of accomplishing this IPSec function at sustained multiple full duplex gigabit rates. [0056]
  • As noted above, there are two major options for implementing a packet classification unit in accordance with the present invention: CAM based and RAM (DRAM/SSRAM) based. The classification engine provides support for general IPSec policy rule sets, including wild cards, overlapping rules, conflicting rules and conducts deterministic searches in a fixed number of clock cycles. In preferred embodiments, it may be implemented either as a fast DRAM/SSRAM lookup classification engine, or on-chip CAM memory for common situations, with extensibility via off-chip CAM, DRAM or SSRAM. Engines in accordance with some embodiments of the present invention engine are capable of operating at wirespeed rates under any network load. In one embodiment, the classifier processes packets down to 64 bytes at OC12 full duplex rates (1.2 Gb/s throughput); this works out to a raw throughput of 2.5M packets per second. [0057]
  • The classifier includes four different modes that allow all IPSec selector matching operations to be supported, as well as general purpose packet matching for packet filtering purposes, for fragment re-assembly purposes, and for site blocking purposes. The classifier is not intended to serve as a general-purpose backbone router prefix-matching engine. As noted above, the classifier supports general IPSec policies, including rules with wildcards, ranges, and overlapping selectors. Matching does not require a linear search of overlapping rules, but instead occurs in a deterministic number of clock cycles. [0058]
  • Security and filtering policies are typically specified using flexible rule sets that allow generic matching to be performed on a set of broad packet selector fields. Individual rules support wildcard specification and ranges for matching parameters. In addition, multiple rules are allowed to overlap, and order-based matching is used to select the first applicable rule in situations where multiple rules apply. [0059]
  • Rule overlap and ordered matching add a level of complexity to hardware-based high-speed rule matching implementations. In particular, the requirement to select among multiple rules that match based on the order in which these rules are listed precludes direct implementation via high-speed lookup techniques that immediately find a matching rule independent of other possible matches. [0060]
  • Chips in accordance with the present invention provide a solution to the problem of matching in a multiple overlapping order-sensitive rule set environment involving a combination of rule pre-processing followed by direct high-speed hardware matching, and supports the full generality of security policy specification languages. [0061]
  • A pre-processing de-correlation step handles overlapping and possibly conflicting rule sets. This de-correlation algorithm produces a slightly larger equivalent rule set that involves zero intersection The new rule set is then implemented via high-speed hardware lookups. High performance algorithms that support incremental de-correlation are available in the art. Where CAM is used, a binarization step is used to convert range-based policies into mask-based lookups suitable for CAM arrays. [0062]
  • The function of the packet classifier is to perform IPSec-specified lookup as well as IP packet fragmentation lookup. These lookups are used by the distributor engine, as well as by the packet input engine (FIFO). In one embodiment, classification occurs based on a flexible set of selectors as follows: [0063]
  • Quintuple of <src IP addr, dst IP addr, src port, dst port, protocol>→104 bits match field [0064]
  • Triple of <src IP addr, dst IP addr, IPSec SPI security parameter index>→96-bit match field [0065]
  • Basic match based on <src IP addr, dst IP addr, protocol>→72-bit match field [0066]
  • Fragment match based on <src IP, dst IP, fragment ID, protocol>→88-bit match field [0067]
  • The result of packet classification is a classification tag. This structure holds IPSec security association data and per-flow statistics. [0068]
  • As noted above, a classifier in accordance with the present invention can be implemented using several different memory arrays for rule storage; each method involves various cost/performance trade-offs. The main implementations are external CAM-based policy storage; on-chip CAM-based policy storage; and external RAM (DRAM, SGRAM, SSRAM) based storage. Note that RAM-based lookups can only match complete (i.e. exact) sets of selectors, and hence tend to require more memory and run slower than CAM-based approaches. On-chip CAM offers an attractive blend of good capacity, high performance and low cost. [0069]
  • A preferred approach for cost-insensitive versions of a cryptography acceleration chip in accordance with the present invention is to implement an on-chip CAM and to provide a method to add more CAM storage externally. Rule sets tend to be relatively small (dozens of entries for a medium corporate site, a hundred entries for a large site, perhaps a thousand at most for a mega-site) since they need to be managed manually. The de-correlated rule sets will be somewhat larger, however even relatively small CAMs will suffice to hold the entire set. [0070]
  • A preferred method for cost-sensitive versions of a cryptography acceleration chip in accordance with the present invention is to implement DRAM-based classification, with a dedicated narrow DRAM port to hold classification data (i.e. a 32-bit SGRAM device). A higher performance alternative is to use external SSRAM, in which case a shared memory system can readily sustain the required low latency. [0071]
  • Both variants of packet classifier are described herein. The RAM-based variant, illustrated in FIG. 4 relies upon a classification entry structure in external memory. The RAM-based classifier operates via a hash-based lookup mechanism. RAM-based classification requires one table per type of match: one for IPSec quintuples, one for IPSec triples, and a small table for fragmentation lookups. [0072]
  • An important property of DRAM-based matching is that only exact matches are kept in the DRAM-based tables, i.e., it is not possible to directly match with wildcards and bit masks the way a CAM can. Host CPU assistance is required to dynamically map IPSec policies into exact matches. This process occurs once every time a new connection is created. The first packet from such a connection will require the creation of an exact match based on the applicable IPSec policy entry. The host CPU load created by this process is small, and can be further reduced by providing microcode assistance. [0073]
  • The input match fields are hashed to form a table index, which is then used to look up a Hash Map table. The output of this table contains indexes into a Classification Entry table that holds a copy of match fields plus additional match tag information. [0074]
  • The Hash Map and Classification Entry tables are typically stored in off-chip DRAM. Since every access to these tables involves a time-consuming DRAM fetch, a fetch algorithm which minimizes the number of rehash accesses is desirable. In most typical scenarios, a matching tag is found with just two DRAM accesses with a chip in accordance with the present invention. [0075]
  • To this effect, the hash table returns indexes to three entries that could match in one DRAM access. The first entry is fetched from the Classification Table; if this matches the classification process completes. If not, the second then the third entry are fetched and tested for a match against the original match field. If both fail to match, a rehash distance from the original hash map entry is applied to generate a new hash map entry, and the process repeated a second time. If this fails too, a host CPU interrupt indicating a match failure is generated. When this occurs, the host CPU will determine if there is indeed no match for the packet, or if there is a valid match that has not yet been loaded into the classifier DRAM tables. This occurs the first time a packet from a new connection is encountered by the classification engine. [0076]
  • Because the hash table is split into a two-level structure, it is possible to maintain a sparse table for the top-level Hash Map entries. Doing so greatly reduces the chances of a hash collision, ensuring that in most cases the entire process will complete within two DRAM accesses. [0077]
  • The following code shows the Hash Map table entries as well as the Classification Entries: [0078]
    /*
     * Security Association Table - Classification Fields
     * Used to look up an association per header.
     * This table is accessed via a hash lookup structure,
     SATClassHash, defined next.
     *
     * Note that a single IPSec Security Association Database
     entry can occupy multiple
     * SATClass entries due to wildcard and range support for
     various header fields.
     *
    */
    typedef struct SATClass_struct {
    u32 srcAddr; /* IP source address */
    u32 dstAddr; /* Ip destination address */
    u16 srcPort; /* TCP source port */
    u16 dstPort; /* TCP destination port */
    u32 spi; /* Security Parameter Index */
    u8 protocol; /* Next level protocol */
    u32 tag; /* Match tag */
    } SATClass;
    /*
     * Hash table structure to look up an entry in the Security
     * Association Table Classification
     * Fields array. Each hash bucket holds up to three entries pointing
     * to sat_class values.
     * There are two hash table structures -- one for SPI-based lookup,
     * one for inner header lookup.
     *
     * Overflows are handled via software. The odds
     of an overflow are small -- the
     * average hash bucket occupancy is 0.5 entries per bucket,
     * and an initial overflow is handled via a variable-distance rehash.
     * Host software can set the rehash distance per hash entry to minimize
     * overflow situations. An overflow would require 3 entries in the first
     * hash bucket, followed by 3 entries in the second re-hashed
     * bucket as well. This is very unlikely in practice.
     *
     * Multiple matching SATClass entries need to searched sequentially.
    */
    typedef struct SATClassHash_struct {
    /* Up to three pointers (index) of SATClass entries */
    SATClass *Index0, *Index1, *Index2;
    u32 SATPresent:10;  /* 2 low order bits are # entries (0-3) */
    /* 8 high order bits are rehash distance */
    } SATClassHash;
  • In one embodiment of the present invention, a Hash Map structure entry is 128-bits long, and a Classification Entry is 192-bits long. This relatively compact representation enables huge numbers of simultaneous security associations to be supported in high-end systems, despite the fact that DRAM-based matching requires that only exact matches be stored in memory. As an example, the DRAM usage for 256K simultaneous sessions for IPSec quintuple matches is as follows: [0079]
  • Classification Entry memory: 24 Bytes*256K→6.1 Mbytes of DRAM usage Hash Map memory: Sparse (0.5 entries per hash bucket avg), 2*16 Bytes*256K→8M Bytes [0080]
  • Total DRAM usage for 256K simultaneous sessions is under 16 Mbytes; 256K sessions would be sufficient to cover a major high-tech metropolitan area, and is appropriate for super high-end concentrator systems. [0081]
  • Since DRAM-based classification requires one table per type of match, the total memory usage is about double the above number, with a second table holding IPSec triple matches. This brings the total up to 32 Mbytes, still very low considering the high-end target concentrator system cost. A third table is needed for fragmentation lookups, but this table is of minimal size. [0082]
  • Another attractive solution is to use SSRAM to build a shared local memory system. Since SSRAM is well suited to the type of random accesses performed by RAM-based classification, performance remains high even if the same memory bank is used for holding both packet and classification data. [0083]
  • Further performance advances may be achieved using a CAM based classification engine in accordance with the present invention. The CAM based classifier is conceptually much simpler than the DRAM based version. In one embodiment, it is composed of a 104-bit match field that returns a 32-bit match tag, for a total data width of [0084] 136 -bits. In contrast to DRAM-based classification, a common CAM array can readily be shared among different types of lookups. Thus a single CAM can implement all forms of lookup required by a cryptography acceleration chip in accordance with the present invention, including fragment lookups, IPSec quintuple matches, and IPSec triple matches. This is accomplished by storing along with each entry, the type of match that it corresponds to via match type field.
  • Because the set of IPSec rules are pre-processed via a de-correlation step and a binarization step prior to mapping to CAM entries, it is not necessary for the CAM to support any form of ordered search. Rather, it is possible to implement a fully parallel search and return any match found. [0085]
  • Referring to FIG. 5, the preferred implementation involves an on-chip CAM that is capable of holding 128 entries. Each entry consists of a match field of 106-bits (including a 2-bit match type code) and a match tag of 32-bits. An efficient, compact CAM implementation is desired in order to control die area. The CAM need not be fast; one match every 25 clock cycles will prove amply sufficient to meet the performance objective of one lookup every 400 ns. This allows a time-iterated search of CAM memory, and allows further partitioning of CAM contents into sub-blocks that can be iteratively searched. These techniques can be used to cut the die area required for the classifier CAM memory. [0086]
  • CAM matching is done using a bit mask to reflect binarized range specifiers from the policy rule set. In addition, bit masks are used to choose between IPSec quintuple, triple, fragment or non-IPSec basic matches. [0087]
  • Should on-chip CAM capacity prove to be a limitation, an extension mechanism is provided to access a much larger off-chip CAM that supports bit masks. An example of such a device is Lara Technologies' LTI1710 8Kx136/4Kx272 ternary CAM chip. [0088]
  • Typical security policy rule sets range from a few entries to a hundred entries (medium corporate site) to a maximum of a thousand or so entries (giant corporate site with complex policies). These rule sets are manually managed and configured, which automatically limits their size. The built-in CAM size should be sufficient to cover typical sites with moderately complex rule sets; off-chip CAM can be added to cover mega-sites. [0089]
  • CAM-based classification is extremely fast, and will easily provide the required level of performance. As such, the classifier unit does not need any pipelining, and can handle multiple classification requests sequentially. [0090]
  • FIGS. 6A and 6B provide process flow diagrams showing aspects of the inbound and outbound packet processing procedures (including lookups) associated with packet classification in accordance with one embodiment of the present invention. FIG. 6A depicts the flow in the inbound direction ([0091] 600). When an inbound packet is received by the packet classifier on a cryptography acceleration chip in accordance with the present invention, its header is parsed (602) and a SAD lookup is performed (604). Depending on the result of the SAD lookup and as specified by the resulting policy, the packet may be dropped (606), passed-through (608), or directed into the cryptography processing system. Once in the system, the packet is decrypted and authenticated (610), and decapsulated (612). Then, a SPD lookup is performed (614). If the result of the lookup is a policy that does not match that specified by the SAD lookup, the packet is dropped (616). Otherwise, a clear text packet is sent out of the cryptography system (618) and into the local system/network.
  • FIG. 6B depicts the flow in the outbound direction ([0092] 650). When an outbound packet is received by the packet classifier on a cryptography acceleration chip in accordance with the present invention, its header is parsed (652) and a SPD lookup is performed (654). Depending on the result of the SPD lookup and as specified by the resulting policy, the packet may be dropped (656), passed-through (658), or directed into the cryptography processing system. Once in the system, a SAD lookup is conducted (660). If no matching SAD entry is found (662) one is created (664) in the IPSec Security Association Database. The packet is encapsulated (666), encrypted and authenticated (668). The encrypted packet is then sent out of the system (670) to the external network (WAN).
  • EXAMPLES
  • The following examples describe and illustrate aspects and features of specific implementations in accordance with the present invention. It should be understood the following is representative only, and that the invention is not limited by the detail set forth in these examples. [0093]
  • Example 1 Security Association Prefetch Buffer
  • The purpose of the SA buffer prefetch unit is to hold up to eight Security Association Auxiliary structures, two per active processing engine. This corresponds to up to two packet processing requests per engine, required to support the double-buffered nature of each engine. The double buffered engine design enables header prefetch, thus hiding DRAM latency from the processing units. The structures are accessed by SA index, as generated by the packet classifier. [0094]
  • Partial contents for the SA Auxiliary structure are as shown in the following C code fragment: [0095]
    typedef struct SATAux_struct {
    u32 byteCount; /* Total payload bytes processed via */
    /* this entry (larger of crypto or auth bytes) */
    u64 expiry; /* Expiry time or #bytes for this */
    /* entry (checked per use) */
    u32 packetCount; /* Stats - # packets processed via this entry */
    struct SATAux_struct *next; /* Next IPSec Security Association for SA */
    /* bundles */
    u32 seqNoHi; /* Anti replay sequence number - “right” edge of window */
    /* for outgoing packets, used for next sequence number */
    u64 seqWin; /* Anti-replay sequence window (bit mask) */
    u32 peerAddr; /* IPSec peer security gateway address */
    u32 spi; /* IPSec security parameter index */
    u8 originalProtocol; /* pre-IPSec Protocol to which this SA applies */
    cryptoState algoCrypto;  /* Keys and other parameters for crypto */
    authState algoAuth; /* Keys, state and other HMAC parameters */
    u8 enableSeq:1; /* 1 to enable anti-replay sequence check */
    u8 crypto:2; /* DES, 3DES, RC4, NONE */
    u8 auth:2; /* MD5, SHA1, NONE */
    u8 format:2; /* FORMAT_ESP, FORMAT_AH, FORMAT_AN_ESP */
    u8 tunnel:1; /* 1 to enable tunneling, 0 to use transport adjacency */
    u8 discard:1; /* Drop packet */
    u8 pass:1; /* Pass packet through */
    u8 intr:1; /* Interrupt upon match to this entry */
    /* (useful for drop/pass) */
    u8 explicitiv:1; /* Use implicit IV from SAdB as opposed to explicit */
    /* IV from packet */
    u8 padnull:1; /* Apply pad to 64-byte boundary for ESP */
    /* null crypto upon IPSec output */
    u8 oldpad:1; /* Old style random padding per RFC1829 */
    } SATAux;
  • The SA Buffer unit prefetches the security auxiliary entry corresponding to a given SA index. Given an SA index, the SA buffer checks to see if the SA Aux entry is already present; if so, an immediate SA Hit indication is returned to the distributor micro-engine. If not, the entry is pre-fetched, and a hit status is then returned. If all SA entries are dirty (i.e. have been previously written but not yet flushed back to external memory) and none of the entries is marked as retired, the SA Buffer unit stalls. This condition corresponds to all processing engines being busy anyway, such that the distributor is not the bottleneck in this case. [0096]
  • Example 2 Distributor Microcode Overview
  • In one implementation of the present invention, the distributor unit has a micro-engine large register file (128 entries by 32-bits), good microcode RAM size (128 entries by 96-bits), and a simple three stage pipeline design that is visible to the instruction set via register read delay slots and conditional branch delay slots. Microcode RAM is downloaded from the system port at power-up time, and is authenticated in order to achieve FIPS140-1 compliance. In order to ensure immediate micro-code response to hardware events, the micro-engine is started by an event-driven mechanism. A hardware prioritization unit automatically vectors the micro-engine to the service routing for the next top-priority outstanding event; packet retiring has priority over issue. [0097]
    Packet Issue Microcode:
    //
    // SA Buffer entry has been pre-fetched and is on-chip
    // Packet length is available on-chip
    //
    test drop/pass flags; if set special case processing;
    test lifetime; break if expired; // reset if auth fails later
    test byte count; break if expired; // reset if auth fails later
    assert stats update command; // update outgoing
    sequence number
    assert locate next engine command; if none, stall;
    assert issue new packet command with descriptor ID, tag, length;
  • Since the distributor unit is fully pipelined, the key challenge is to ensure that any given stage keeps up with the overall throughput goal of one packet every 50 clock cycles. This challenge is especially important to the micro-engine, and limits the number of micro-instructions that can be expended to process a given packet. The following pseudo-code provides an overview of micro-code functionality both for packet issue and for packet retiring, and estimate the number of clock cycles spent in distributor micro-code. [0098]
    Packet Retiring Microcode:
    //
    // SA Buffer entry has been pre-fetched and is on-chip
    // Packet length is available on-chip. Packet has been authenticated
    // by now if authentication is enabled for this flow.
    //
    if sequence check enabled for inbound,
    check & update sequence mask;
    update Engine scheduling status;
    mark packet descriptor as free;
    add back to free pool; // Schedule write
  • Since most distributor functions are directly handled via HW assist mechanisms, the distributor microcode is bounded and can complete quickly. It is estimated that packet issue will require about 25 clocks, while packet retiring will require about 15 clocks, which fits within the overall budget of 50 clocks. [0099]
  • Example 3 Advanced Classification Engine (ACE)
  • In one specific implementation of the present invention, a classification engine (referred to as the Advanced Classification Engine (ACE)) provides an i ninovative solution to the difficult problem of implementing the entire set of complex IPSec specified Security Association Database and Security Policy Database rules in hardware. The IETF IPSec protocol provides packet classification via wildcard rules, overlapping rules and conflict resolution via total rule ordering. The challenge solved by ACE is to implement this functionality in wirespeed hardware. [0100]
  • The Advanced Classification Engine of a chip in accordance with the present invention handles per-packet lookup based on header contents. This information then determines the type of IPSec processing that will be implemented for each packet. In effect, ACE functions as a complete hardware IPSec Security Association Database lookup engine. ACE supports full IPSec Security Association lookup flexibility, including overlapping rules, wildcards and complete ordering. Simultaneously, ACE provides extremely high hardware throughput. In addition, ACE provides value-added functions in the areas of statistics gathering and maintenance on a flexible per link or per Security Association basis, and SA lifetime monitoring. A separate unit within ACE, the Automatic Header Generator, deals with wirespeed creation of IPSec compliant headers. [0101]
  • ACE derives its extremely high end to end performance (5 Mpkt/s at 125 MHz) from its streamlined, multi-level optimized design. The most performance critical operations are handled via on-chip hardware and embedded SRAM memory. The next level is handled in hardware, but uses off-chip DRAM memory. The slowest, very infrequent frequent level of operations is left to host processor software. Key features of ACE include: [0102]
  • Full support for IPSec Security Association Database lookup, including wildcard rules, overlapping rules, and complete ordering of database entries. [0103]
  • Extremely high hardware throughput: Fully pipelined non-blocking out-of-order design. Four datagrams can be processed simultaneously and out of order to keep throughput at full rated wirespeed. [0104]
  • Flexible connection lookup based on src/dst address, src/dst ports, and protocol. Any number of simultaneously active packet classification values can be supported. [0105]
  • Hardware support for header generation for IPSec Encapsulating Security Protocol (ESP) and for IPSec Authentication Header (AH). [0106]
  • Full hardware header generation support for Security Association bundling - transport adjacency, and iterated tunneling. [0107]
  • Sequence number generation and checking on-chip. [0108]
  • Classification engine and statistics mechanisms available to non-IPSec traffic as well as to IPSec traffic. [0109]
  • Security Association lifetime checking based on byte count and elapsed wall clock time. [0110]
  • High quality random number generator for input to cryptography and authentication engines. [0111]
  • The input to ACE consists of packet classification fields: src/dst address, src/dst ports, and protocol. The output of ACE is an IPSec Security Association matching entry, if one exists, for this classification information within the IPSec Security Association Database. The matching entry then provides statistics data and control information used by automatic IPSec header generation. [0112]
  • A global state flag controls the processing of packets for which no matching entry exists—silent discard, interrupt and queue up packet for software processing, or pass through. [0113]
  • The matching table (SAT, Security Association Table) holds up to 16K entries in DRAM memory. These entries are set up via control software to reflect IPSec Security Association Database (SAdB) and Security Policy Database (SPdB) rules. The wildcard and overlapping but fully ordered entries of the SAdB and SPdB are used by control software to generate one non-overlapping match table entry for every combination that is active. This scheme requires software intervention only once per new match entry. [0114]
  • FIG. 7 shows a block diagram of the ACE illustrating its structure and key elements. Major components of ACE are as follows: [0115]
  • Security Association Table Cache—Classification Field (SATC-CL): Used to look up a packet's classification fields on-chip. Each entry has the following fields: [0116]
    SATC-CL SATC Classification Field Cache
    IPv6 IPv4
    size size
    Field name Description (bits) (bits)
    src@ IP source address 128 bits 32 bits
    dst@ IP destination address 128 bits 32 bits
    protocol High level protocol field 8 bits
    src port High level protocol source  16 bits 16 bits
    port
    dst port High level protocol  16 bits 16 bits
    destination port
    Aux field Pointer to auxiliary data (stats, 16 bits
    ptr lifetime)
    peer@ IP address of IPSec peer 128 bits 32 bits
    gateway
    spi IPSec Security Parameter 32 bits
    Index
    ipsec ESP, AH or none; Tunnel or 3 bits
    format Adj
  • Security Association Auxiliary Data table Cache (SATC-AUX): Serves to hold statistics, etc. information on-chip in flexible fashion. An entry within SATC-AUX can serve multiple classification fields, allowing multiple combinations to be implemented for stats gathering. Each entry has the following fields: [0117]
    SATC-AUX SATC Auxiliary Field Cache
    IPv6 IPv4
    size size
    Field name Description (bits) (bits)
    Byte count Total byte count for this entry 32 bits
    Expiry time Time entry expires 32 bits
    #misses SATC-CL misses for this entry 32 bits
    #pkt Total packet count for this entry 32 bits
    next_spi Next SPI for Iterated tunneling or 32 bits
    Transport adjacency
    seqchk Enable anti-replay sequence 1 bit
    check
    seqno Sequence number (output) or 32 bits
    highest received seq number
    (input)
    seqmask Anti-Replay window 64 bits
    algo_info Algorithm specific data (keys, 296 bits
    pad lengths, Initial Vectors, etc)
  • Quad Refill Engine: handles the servicing of SATC-CL misses. When ever a miss occurs, the corresponding entry in the SATC-AUX is simultaneously fetched in order to maintain cache inclusion of all SATC-AUX entries within SATC-CL entries. This design simplifes and speeds up the cache hit logic considerably. The refill engine accepts and processes up to 4 outstanding miss requests simultaneously. [0118]
  • Quad Header Buffers: Holds up to 4 complete IPv4 headers, and up to 256 bytes each of 4 IPv6 headers. Used to queue up headers that result in SATC-CL misses. Headers that result in a cache hit are immediately forwarded for IPSec header generation. [0119]
  • Header streaming buffer: Handles overflows from the header buffer by streaming header bytes directly from DRAM memory; it is expected that such overflows will be exceedingly rare. This buffer holds 256 bytes. [0120]
  • Header/Trailer processing and buffer: For input datagrams, interprets and strips IPSec ESP or AH header. For output datagrams, adjusts and calculates header and trailer fields. Holds a complete IPv4 fragment header, and up to 256 bytes of an IPv6 header. Requires input from the cryptography modules for certain fields (authentication codes, for instance). [0121]
  • In addition to the above components, two data structures in DRAM memory are used by ACE for efficient operation. These are: [0122]
  • Complete Security Association Table—Classification Field (SAT-CL): holds classification data. This table backs up the on-chip SAT-CL Cache. Each entry is 475 bits aligned up to 60 bytes. [0123]
  • Complete Security Association Auxiliary Data table (SAT-AUX): holds auxiliary data. This table backs up the on-chip SAT-AUX Cache. Each entry is 617 bits, plus up to 223 bits of algorithm specific state (such as HMAC intermediate state), for a total of 105 bytes. [0124]
  • The following pseudo-code module describes major ACE input processing (received [0125]
    Input Processing () { /* Received datagram */
    Calculate hash value based upon
    (dst@, spi, protocol) ;
    /* Re-hash via predetermined sequence if collision occurs */
    Lookup field in Security Association Classification Cache;
    if (no match found) {
    /* Refill cache from DRAM memory */
    Calculate new hash for DRAM entry;
    /* Re-hash in case of collision */
    /*
     * Out-of-order non-blocking execution
    */
    Schedule DRAM access (up to 4 outstanding fill req's);
    Move on to Input Processing () of next datagram;
    /* When DRAM refill has completed */
    Lookup field in DRAM Security Association table;
    Pre-fetch DRAM Auxiliary table entry;
    }
    if (no match found) {
    /*
     * Datagram does not have a SAdB entry;
     * Process based on global flags.
    */
    if (nomatch_discard) silently drop packet;
    else if (nomatch_pass) send insecure packet out;
    else queue up packet and raise interrupt;
    }
    /* Datagram has a matching SAdB entry */
    Sanity check packet header fields, including protocol;
    Verify packet data against SAdB entry;
    if (seqchk) Perform anti-replay check;
    Perform lifetime check;
    Update statistics information;
    /* Aggressive writeback to minimize future miss latency */
    Schedule SATC-AUX entry for writeback to DRAM;
    Extract SAdB processing control & crypto parameters;
    Implement SAdB-specified processing on datagram;
    /* Double check packet SAdB match as soon as possible */
    Perform SAdB lookup procedure on
    (src@, dst@, srcport, dstport, protocol);
    Verify that original SPI is returned;
    }
  • datagrams) operation: [0126]
  • The following pseudo-code module describes major ACE output processing [0127]
    Output Processing () { /* Received datagram */
    Calculate hash value based upon
    (src@, dst@, srcport, dstport, protocol);
    /* Re-hash via predetermined sequence if collision occurs */
    Lookup field in Security Association Classification Cache;
    if (no match found) {
    /* Refill cache from DRAM memory */
    Calculate new hash for DRAM entry;
    /* Re-hash in case of collision */
    /*
     * Out-of-order non-blocking execution
    */
    Schedule DRAM access (up to 4 outstanding fill req's);
    Move on to Input Processing () of next datagram;
    /* When DRAM refill has completed */
    Lookup field in DRAM Security Association table;
    Pre-fetch DRAM Auxiliary table entry;
    }
    if (no match found) {
    /*
     * Datagram does not have a SAdB entry; process based
     * Process based on global flags.
    */
    if (nomatch_discard) silently drop packet;
    else if (nomatch_pass) send insecure packet out;
    else queue up packet and raise interrupt;
    }
    /* Datagram has a matching SAdB entry */
    Sanity check packet header fields, including protocol;
    Generate sequence number;
    Perform lifetime check;
    Update statistics information;
    /* Aggressive writeback to minimize future miss latency */
    Schedule SATC-AUX entry for writeback to DRAM;
    Extract SAdB processing control & crypto parameters;
    Implement SAdB-specified processing on datagram;
    }
  • (transmitted datagrams) operation: [0128]
  • ACE implements multiple techniques to accelerate processing. The design is fully pipelined, such that multiple headers are in different stages of ACE processing at any given time. In addition, ACE implements non-blocking out-of-order processing of up to four packets. [0129]
  • Out of order non-blocking header processing offers several efficiency and performance enhancing advantages. Performance-enhancing DRAM access techniques such as read combining and page hit combining are used to full benefit by issuing multiple requests at once to refill SATC-CL and SATC-AUX caches. Furthermore, this scheme avoids a problem similar to Head Of Line Blocking in older routers, and minimizes overall packet latency. [0130]
  • Because of the pipelined design, throughput is gated by the slowest set of stages. [0131]
    Header parsing 2 clocks
    Hash & SA Cache lookup 2 clocks
    Hash & SA Auxiliary lookup 2 clocks
    Initial header processing, anti-replay 4 clocks
    Statistics update 3 clocks
    Final header update 6 clocks
  • This works out to 19 clocks per datagram total with zero pipelining, within a design goal of 25 clocks per packet (corresponding to a sustained throughput of 5 Mpkt/s at 125 MHz). A simple dual-stage pipeline structure is sufficient, and will provide margin (average throughput of 10 clocks per header). The chip implements this level of pipelining. [0132]
  • ACE die area is estimated as follows based on major components and a rough allocation for control logic and additional data buffering: [0133]
    Control logic overhead 50 Kg
    Quad header buffer 20 Kg
    Quad refill controller with 50 Kg
    tag match
    SATC-CL cache 130 Kg (single port)
    SATC-AUX cache 170 Kg (single port)
    Stats engine 10 Kg
    Header/Trailer processor 20 Kg
    Prefetch buffering 50 Kg
    Total estimated gate count is 500 Kg.
  • REFERENCES
  • The following references, which provide background and contextual information relating to the present invention, are incorporated by reference herein in their entirety and for all purposes: [0134]
  • “Efficient Fair Queuing using Deficit Round Robin”, M. Shreedhar, G. Varghese, October 1996. [0135]
  • draft-ietf-pppext-mppe-03.txt Microsoft Point-To-Point Encryption (MPPE) Protocol, G. S. Pall, G. Zorn, May 1999 [0136]
  • draft-ietf-nat-app-guide-02.txt “NAT Friendly Application Design Guidelines”, D. Senie, September 1999. [0137]
  • draft-ietf-nat-rsip-ipsec-00.tx] “RSIP Support for End-to-end IPSEC”, G. Montenegro, M. Borella, May 19, 1999. [0138]
  • draft-ietf-ipsec-spsl-01.txt, “Security Policy Specification Language”, M. Condell, C. Lynn, J. Zao, Jul. 1, 1999 [0139]
  • “Random Early Detection Gateways for Congestion Avoidance”, S. Floyd, V. Jacobson, August 1993 ACM Transactions on Networking [0140]
  • “The IP Network Address Translator (NAT)”, K. Egevang, P. Francis, May 1994. [0141]
  • “DEFLATE Compressed Data Format Specification version 1.3”, P. Deutsch, May 1996. [0142]
  • “Specification of Guaranteed Quality of Service”, S. Shenker, C. Partridge, R. Guerin, September 1997. [0143]
  • “IP Network Address Translator (NAT) Terminology and Considerations”, P. Srisuresh, M. Holdrege, August 1999. [0144]
  • “IP Payload Compression using DEFLATE”, R. Pereira, December 1998. [0145]
  • S. Kent, R. Atkinson, “Security Architecture for the Internet Protocol,” RFC 2401, November 1998 (obsoletes RFC 1827, August 1995). [0146]
  • S. Kent, R. Atkinson, “IP Authentication Header,” RFC 2402, November 1998 (obsoletes RFC 1826, August 1995). [0147]
  • S. Kent, R. Atkinson, “IP Encapsulating Payload,” RFC 2406, November 1998 (obsoletes RFC 1827, August 1995). [0148]
  • Maughhan, D., Schertler, M., Schneider, M., and Turner, J., “Internet Security Association and Key Management Protocol (ISAKMP),” RFC 2408, November 1998. [0149]
  • Harkins, D., Carrel, D., “The Internet Key Exchange (IKE),” RFC 2409, November 1998. [0150]
  • “Security Model with Tunnel-mode IPsec for NAT Domains”, P. Srisuresh, October 1999. [0151]
  • “On the Deterministic Enforcement of Un-Ordered Security Policies”, L. Sanchez, M. Condell, Feb. 14, 1999. [0152]
  • CONCLUSION
  • Although the foregoing invention has been described in some detail for purposes of clarity of understanding, those skilled in the art will appreciate that various adaptations and modifications of the just-described preferred embodiments can be configured without departing from the scope and spirit of the invention. For example, other cryptography engines may be used, different system interface configurations may be used, or modifications may be made to the packet processing procedure. Moreover, the described processing distribution and classification engine features of the present invention may be implemented together or independently. Therefore, the described embodiments should be taken as illustrative and not restrictive, and the invention should not be limited to the details given herein but should be defined by the following claims and their full scope of equivalents.[0153]

Claims (22)

What is claimed is:
1. A cryptography accelerator, comprising:
a plurality of cryptography processing engines;
classification circuitry configured to receive header information associated with a packet and determine state and security association information associated with the packet, the state and security association information comprising a key, a sequence number, and a byte count, wherein the state and security association information is determined by identifying a flow to which the packet belongs; and
packet distribution circuitry coupled to the plurality of cryptography processing engines and the classification circuitry, the packet distribution circuitry configured to receive data, state, and security association information associated with the packet and forward the data associated with the packet to one of the plurality of cryptography processing engines for cryptographic processing of the data.
2. The cryptography accelerator of claim 1, wherein the classification circuitry is further configured to determine whether the packet should be dropped.
3. The cryptography accelerator of claim 1, wherein the classification circuitry is further configured to determine whether the packet should be processed.
4. The cryptography accelerator of claim 1, wherein the byte count is used to determine how much more data associated with the flow can be processed using the state and security association information.
5. The cryptography accelerator of claim 1, wherein header information comprises source and destination identifiers.
6. The cryptography accelerator of claim 5, wherein header information further comprises source and destination port numbers.
7. The cryptography accelerator of claim 1, wherein the data associated with the packet forwarded to one of the plurality of cryptography processing engines is the payload of the packet.
8. The cryptography accelerator of claim 1, wherein the data associated with the packet forwarded to one of the plurality of cryptography processing engines is a portion of the packet.
9. A network device comprising the cryptography accelerator of claim 1.
10. A method for performing cryptography processing, comprising:
receiving header information associated with a packet at a classification engine in a cryptography accelerator; and
determining state and security association information at the classification engine, the state and security association information comprising a key, a sequence number, and a byte count, wherein the state and security association information is determined by identifying a flow to which the packet belongs.
11. The method of claim 10, further comprising:
forwarding the state and security association information along with the data associated with the packet to a packet distribution unit.
12. The method of claim 11, wherein the packet distribution unit is coupled to a plurality of cryptography processing engines.
13. The method of claim 12, wherein the data associated with the packet is distributed to one of the plurality of cryptography processing engines.
14. The method of claim 10, wherein the classification engine determines whether the packet should be dropped.
15. The method of claim 10, wherein the classification engine determines whether the packet should be processed.
16. The method of claim 10, wherein the byte count is used to determine how much more data associated with the flow can be processed using the state and security association information.
17. The method of claim 10, wherein header information comprises source and destination identifiers.
18. The method of claim 17, wherein header information further comprises source and destination port numbers.
19. A cryptography accelerator, comprising:
means for receiving header information associated with a packet at a classification engine in a cryptography accelerator; and
means for determining state and security association information at the classification engine, the state and security association information comprising a key, a sequence number, and a byte count, wherein the state and security association information is determined by identifying a flow to which the packet belongs.
20. The cryptography accelerator of claim 19, further comprising:
means for forwarding the state and security association information along with the data associated with the packet to a packet distribution unit.
21. A computer readable medium comprising microcode for configuring an integrated circuit, the computer readable medium comprising:
microcode for receiving header information associated with a packet at a classification engine in a cryptography accelerator; and
microcode for determining state and security association information at the classification engine, the state and security association information comprising a key, a sequence number, and a byte count, wherein the state and security association information is determined by identifying a flow to which the packet belongs.
22. The computer readable medium of claim 21, further comprising:
microcode for forwarding the state and security association information along with the data associated with the packet to a packet distribution unit.
US10/218,206 1999-07-08 2002-08-12 Classification engine in a cryptography acceleration chip Abandoned US20030023846A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/218,206 US20030023846A1 (en) 1999-07-08 2002-08-12 Classification engine in a cryptography acceleration chip

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14287099P 1999-07-08 1999-07-08
US15901199P 1999-10-12 1999-10-12
US09/610,722 US7996670B1 (en) 1999-07-08 2000-07-06 Classification engine in a cryptography acceleration chip
US10/218,206 US20030023846A1 (en) 1999-07-08 2002-08-12 Classification engine in a cryptography acceleration chip

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/610,722 Continuation US7996670B1 (en) 1999-07-08 2000-07-06 Classification engine in a cryptography acceleration chip

Publications (1)

Publication Number Publication Date
US20030023846A1 true US20030023846A1 (en) 2003-01-30

Family

ID=26840503

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/610,798 Expired - Fee Related US7600131B1 (en) 1999-07-08 2000-07-06 Distributed processing in a cryptography acceleration chip
US09/610,722 Expired - Fee Related US7996670B1 (en) 1999-07-08 2000-07-06 Classification engine in a cryptography acceleration chip
US10/218,206 Abandoned US20030023846A1 (en) 1999-07-08 2002-08-12 Classification engine in a cryptography acceleration chip

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/610,798 Expired - Fee Related US7600131B1 (en) 1999-07-08 2000-07-06 Distributed processing in a cryptography acceleration chip
US09/610,722 Expired - Fee Related US7996670B1 (en) 1999-07-08 2000-07-06 Classification engine in a cryptography acceleration chip

Country Status (6)

Country Link
US (3) US7600131B1 (en)
EP (2) EP1192781B1 (en)
AT (2) ATE372636T1 (en)
AU (2) AU6342200A (en)
DE (2) DE60036284T2 (en)
WO (2) WO2001005086A2 (en)

Cited By (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020120874A1 (en) * 2000-12-22 2002-08-29 Li Shu Method and system for secure exchange of messages
US20030043825A1 (en) * 2001-09-05 2003-03-06 Andreas Magnussen Hash-based data frame distribution for web switches
US20030149883A1 (en) * 2002-02-01 2003-08-07 Hopkins Dale W. Cryptographic key setup in queued cryptographic systems
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US20040205331A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processing architecture using multiple groups
US20040202319A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processor
US20050044068A1 (en) * 2003-08-22 2005-02-24 Chin-Yi Lin Searching method for a security policy database
US20050060558A1 (en) * 2003-04-12 2005-03-17 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US20050071867A1 (en) * 2003-09-29 2005-03-31 Lipsky Scott E. Method and system for distributing images to client systems
US20050083926A1 (en) * 2003-10-15 2005-04-21 Mathews Robin M. Packet storage and retransmission over a secure connection
EP1536311A1 (en) 2003-11-28 2005-06-01 Bull S.A. Modular cryptographic system with high flow rate
WO2005050357A2 (en) 2003-11-24 2005-06-02 Itt Manufacturing Enterprises, Inc. A method of implementing a high-speed header bypass function
US20060004697A1 (en) * 2004-06-09 2006-01-05 Lipsky Scott E Method and system for restricting the display of images
US7003118B1 (en) * 2000-11-27 2006-02-21 3Com Corporation High performance IPSEC hardware accelerator for packet classification
US20060064579A1 (en) * 2004-09-17 2006-03-23 Aaron Jeffrey A Detection of encrypted packet streams
US20060114896A1 (en) * 2004-11-30 2006-06-01 Alcatel Flow-aware ethernet digital subscriber line access multiplexer DSLAM
US20060133604A1 (en) * 2004-12-21 2006-06-22 Mark Buer System and method for securing data from a remote input device
EP1714421A2 (en) * 2004-02-05 2006-10-25 CTAM USA Inc. Multi-protocol network encryption system
US20070094178A1 (en) * 2005-08-19 2007-04-26 Electronics And Telecommunications Research Institute Method and apparatus for storing pattern matching data and pattern matching method using the same
US20070201499A1 (en) * 2006-02-24 2007-08-30 Texas Instruments Incorporated Device, system and/or method for managing packet congestion in a packet switching network
US20080052756A1 (en) * 2006-08-22 2008-02-28 Takehiro Morishige IPSec PROCESSING DEVICE, NETWORK SYSTEM, AND IPSec PROCESSING PROGRAM
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US20090178104A1 (en) * 2008-01-08 2009-07-09 Hemal Shah Method and system for a multi-level security association lookup scheme for internet protocol security
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US20100082060A1 (en) * 2008-09-30 2010-04-01 Tyco Healthcare Group Lp Compression Device with Wear Area
US20100080224A1 (en) * 2008-09-30 2010-04-01 Ramesh Panwar Methods and apparatus for packet classification based on policy vectors
US7738454B1 (en) 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US20100217971A1 (en) * 2009-02-25 2010-08-26 Cisco Technology, Inc. Aggregation of cryptography engines
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US7925886B2 (en) 2007-06-13 2011-04-12 International Business Machines Corporation Encryption output data generation method and system
US7961734B2 (en) 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US20120011351A1 (en) * 2010-07-08 2012-01-12 Texas Instruments Incorporated Security Processing Engines, Circuits and Systems and Adaptive Processes and Other Processes
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8139591B1 (en) 2008-09-30 2012-03-20 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US8351445B1 (en) 2003-11-05 2013-01-08 Globalfoundries Inc. Network interface systems and methods for offloading segmentation and/or checksumming with security processing
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US8868906B2 (en) 2004-09-17 2014-10-21 At&T Intellectual Property I, L.P. Signature specification for encrypted packet streams
US20150371055A1 (en) * 2014-06-19 2015-12-24 Ju-hee Park Host controller and system-on-chip
US9246786B2 (en) 2004-09-17 2016-01-26 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using feedback probing
US9264426B2 (en) 2004-12-20 2016-02-16 Broadcom Corporation System and method for authentication via a proximate device
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US9294503B2 (en) 2013-08-26 2016-03-22 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US9537886B1 (en) 2014-10-23 2017-01-03 A10 Networks, Inc. Flagging security threats in web service requests
US9584318B1 (en) 2014-12-30 2017-02-28 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack defense
US9621575B1 (en) 2014-12-29 2017-04-11 A10 Networks, Inc. Context aware threat protection
US9722918B2 (en) 2013-03-15 2017-08-01 A10 Networks, Inc. System and method for customizing the identification of application or content type
US9756071B1 (en) 2014-09-16 2017-09-05 A10 Networks, Inc. DNS denial of service attack protection
US9787581B2 (en) 2015-09-21 2017-10-10 A10 Networks, Inc. Secure data flow open information analytics
US9838425B2 (en) 2013-04-25 2017-12-05 A10 Networks, Inc. Systems and methods for network access control
US9848013B1 (en) 2015-02-05 2017-12-19 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack detection
US9900343B1 (en) 2015-01-05 2018-02-20 A10 Networks, Inc. Distributed denial of service cellular signaling
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9912555B2 (en) 2013-03-15 2018-03-06 A10 Networks, Inc. System and method of updating modules for application or content identification
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10063591B1 (en) 2015-02-14 2018-08-28 A10 Networks, Inc. Implementing and optimizing secure socket layer intercept
US10135739B2 (en) * 2015-05-07 2018-11-20 Mellanox Technologies, Ltd. Network-based computational accelerator
US10152441B2 (en) 2015-05-18 2018-12-11 Mellanox Technologies, Ltd. Host bus access by add-on devices via a network interface controller
US10187377B2 (en) 2017-02-08 2019-01-22 A10 Networks, Inc. Caching network generated security certificates
US10250475B2 (en) 2016-12-08 2019-04-02 A10 Networks, Inc. Measurement of application response delay time
US10341118B2 (en) 2016-08-01 2019-07-02 A10 Networks, Inc. SSL gateway with integrated hardware security module
US10382562B2 (en) 2016-11-04 2019-08-13 A10 Networks, Inc. Verification of server certificates using hash codes
US10382350B2 (en) 2017-09-12 2019-08-13 Mellanox Technologies, Ltd. Maintaining packet order in offload of packet processing functions
US10397270B2 (en) 2017-01-04 2019-08-27 A10 Networks, Inc. Dynamic session rate limiter
CN110309374A (en) * 2019-05-22 2019-10-08 深圳市金泰克半导体有限公司 A kind of analytic method, system, terminal device and computer readable storage medium
US10469594B2 (en) 2015-12-08 2019-11-05 A10 Networks, Inc. Implementation of secure socket layer intercept
US10708240B2 (en) 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
US10812348B2 (en) 2016-07-15 2020-10-20 A10 Networks, Inc. Automatic capture of network data for a detected anomaly
US10824469B2 (en) 2018-11-28 2020-11-03 Mellanox Technologies, Ltd. Reordering avoidance for flows during transition between slow-path handling and fast-path handling
US10841243B2 (en) 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10992709B2 (en) * 2015-07-28 2021-04-27 Citrix Systems, Inc. Efficient use of IPsec tunnels in multi-path environment
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US11184439B2 (en) 2019-04-01 2021-11-23 Mellanox Technologies, Ltd. Communication with accelerator via RDMA-based network adapter
US11196715B2 (en) * 2019-07-16 2021-12-07 Xilinx, Inc. Slice-aggregated cryptographic system and method
US11283774B2 (en) 2015-09-17 2022-03-22 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US11288402B2 (en) 2013-03-29 2022-03-29 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US11429540B2 (en) * 2013-04-01 2022-08-30 Secturion Systems, Inc. Multi-level independent security architecture
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
WO2023282924A1 (en) * 2021-07-09 2023-01-12 Lexmark International, Inc. Methods and systems for determining the authenticity of a component
US11558175B2 (en) 2020-08-05 2023-01-17 Mellanox Technologies, Ltd. Cryptographic data communication apparatus
US11750571B2 (en) 2015-10-26 2023-09-05 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US11783089B2 (en) 2013-03-29 2023-10-10 Secturion Systems, Inc. Multi-tenancy architecture
US11909856B2 (en) 2020-08-05 2024-02-20 Mellanox Technologies, Ltd. Cryptographic data communication apparatus
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001266571A1 (en) * 2000-05-11 2001-11-20 Hanna, Michael Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
US7305092B2 (en) * 2000-12-19 2007-12-04 Qualcomm Incorporated Method and system to accelerate cryptographic functions for secure e-commerce applications
US6959346B2 (en) * 2000-12-22 2005-10-25 Mosaid Technologies, Inc. Method and system for packet encryption
WO2002060150A2 (en) * 2001-01-24 2002-08-01 Broadcom Corporation Method for processing multiple security policies applied to a data packet structure
US6789147B1 (en) * 2001-07-24 2004-09-07 Cavium Networks Interface for a security coprocessor
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
US7861104B2 (en) * 2001-08-24 2010-12-28 Broadcom Corporation Methods and apparatus for collapsing interrupts
US7370352B2 (en) 2001-09-06 2008-05-06 Intel Corporation Techniques for storing and retrieving security information corresponding to cryptographic operations to support cryptographic processing for multiple network traffic streams
US8189591B2 (en) * 2001-10-30 2012-05-29 Exar Corporation Methods, systems and computer program products for packet ordering for parallel packet transform processing
US7088719B2 (en) * 2001-12-21 2006-08-08 Agere Systems Inc. Processor with packet processing order maintenance based on packet flow identifiers
US7403999B2 (en) * 2001-12-28 2008-07-22 International Business Machines Corporation Classification support system and method for fragmented IP packets
FR2834361B1 (en) * 2001-12-28 2004-02-27 Bull Sa DATA SECURITY MODULE BY ENCRYPTION / DECRYPTION AND / OR SIGNATURE / VERIFICATION OF SIGNATURE
US7246245B2 (en) 2002-01-10 2007-07-17 Broadcom Corporation System on a chip for network storage devices
US7299350B2 (en) * 2002-01-17 2007-11-20 Intel Corporation Internet protocol security decryption with secondary use speculative interrupts
US7305567B1 (en) 2002-03-01 2007-12-04 Cavium Networks, In. Decoupled architecture for data ciphering operations
WO2003075520A2 (en) * 2002-03-05 2003-09-12 International Business Machines Corporation Method and system for ordered dynamic distribution of packet flows over network processors
US20030196081A1 (en) * 2002-04-11 2003-10-16 Raymond Savarda Methods, systems, and computer program products for processing a packet-object using multiple pipelined processing modules
EP1511229A4 (en) * 2002-05-31 2007-03-21 Fujitsu Ltd Packet repeating installation, network connection device, packet repeating method, recording medium, program
US20040131072A1 (en) * 2002-08-13 2004-07-08 Starent Networks Corporation Communicating in voice and data communications systems
US9015467B2 (en) 2002-12-05 2015-04-21 Broadcom Corporation Tagging mechanism for data path security processing
US7587587B2 (en) * 2002-12-05 2009-09-08 Broadcom Corporation Data path security processing
US7454610B2 (en) 2002-12-31 2008-11-18 Broadcom Corporation Security association updates in a packet load-balanced system
US7669234B2 (en) * 2002-12-31 2010-02-23 Broadcom Corporation Data processing hash algorithm and policy management
EP1602214B1 (en) * 2003-03-04 2016-11-02 Lukas Wunner Method, system and storage medium for establishing compatibility between IPsec and dynamic routing
US7412726B1 (en) * 2003-12-08 2008-08-12 Advanced Micro Devices, Inc. Method and apparatus for out of order writing of status fields for receive IPsec processing
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
US20050276413A1 (en) * 2004-06-14 2005-12-15 Raja Neogi Method and apparatus to manage heterogeneous cryptographic operations
US7624263B1 (en) 2004-09-21 2009-11-24 Advanced Micro Devices, Inc. Security association table lookup architecture and method of operation
US7502928B2 (en) 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
US20070214502A1 (en) * 2006-03-08 2007-09-13 Mcalister Donald K Technique for processing data packets in a communication network
US7895646B2 (en) * 2006-05-25 2011-02-22 International Business Machines Corporation IKE daemon self-adjusting negotiation throttle
US8594322B2 (en) * 2007-07-10 2013-11-26 Stmicroelectronics S.R.L. Encoding/decoding apparatus
GB0713787D0 (en) * 2007-07-16 2007-08-22 Cellfire Security Technologies Security protocol, secure communication system and method
CN101197664B (en) * 2008-01-03 2010-12-08 杭州华三通信技术有限公司 Method, system and device for key management protocol negotiation
US8339959B1 (en) 2008-05-20 2012-12-25 Juniper Networks, Inc. Streamlined packet forwarding using dynamic filters for routing and security in a shared forwarding plane
EP2304922A1 (en) * 2008-06-17 2011-04-06 Attivio, Inc. Ordered message processing
US8955107B2 (en) * 2008-09-12 2015-02-10 Juniper Networks, Inc. Hierarchical application of security services within a computer network
US8191134B1 (en) * 2008-09-29 2012-05-29 Sonicwall, Inc. Lockless distributed IPsec processing
US8806506B2 (en) * 2008-09-30 2014-08-12 Ebay Inc. System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture
US8763008B2 (en) 2008-09-30 2014-06-24 Ebay Inc. System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture
US8135785B2 (en) * 2008-09-30 2012-03-13 Ebay Inc. System and method for processing messages using pluggable protocol processors in a service-oriented pipeline architecture
US8040808B1 (en) 2008-10-20 2011-10-18 Juniper Networks, Inc. Service aware path selection with a network acceleration device
US8341280B2 (en) 2008-12-30 2012-12-25 Ebay Inc. Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange pattern
US9069489B1 (en) 2010-03-29 2015-06-30 Marvell Israel (M.I.S.L) Ltd. Dynamic random access memory front end
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9037810B2 (en) * 2010-03-02 2015-05-19 Marvell Israel (M.I.S.L.) Ltd. Pre-fetching of data packets
US8327047B2 (en) 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
US8495656B2 (en) 2010-10-15 2013-07-23 Attivio, Inc. Ordered processing of groups of messages
US20120210018A1 (en) * 2011-02-11 2012-08-16 Rikard Mendel System And Method for Lock-Less Multi-Core IP Forwarding
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
JP5848570B2 (en) * 2011-09-30 2016-01-27 ラピスセミコンダクタ株式会社 Communication apparatus, reception control method, and transmission control method
US9251535B1 (en) 2012-01-05 2016-02-02 Juniper Networks, Inc. Offload of data transfer statistics from a mobile access gateway
US8964554B2 (en) * 2012-06-07 2015-02-24 Broadcom Corporation Tunnel acceleration for wireless access points
US9779260B1 (en) 2012-06-11 2017-10-03 Dell Software Inc. Aggregation and classification of secure data
US9501744B1 (en) 2012-06-11 2016-11-22 Dell Software Inc. System and method for classifying data
US9390240B1 (en) * 2012-06-11 2016-07-12 Dell Software Inc. System and method for querying data
US9578060B1 (en) 2012-06-11 2017-02-21 Dell Software Inc. System and method for data loss prevention across heterogeneous communications platforms
DE102012214794A1 (en) * 2012-08-21 2014-02-27 BSH Bosch und Siemens Hausgeräte GmbH COMMUNICATION MODULE FOR A HOME DEVICE
US9374344B1 (en) 2013-03-29 2016-06-21 Secturion Systems, Inc. Secure end-to-end communication system
US9798899B1 (en) * 2013-03-29 2017-10-24 Secturion Systems, Inc. Replaceable or removable physical interface input/output module
US9473298B2 (en) * 2013-08-15 2016-10-18 Blue Cedar Networks, Inc. Simplifying IKE process in a gateway to enable datapath scaling using a two tier cache configuration
US9349016B1 (en) 2014-06-06 2016-05-24 Dell Software Inc. System and method for user-context-based data loss prevention
WO2016118523A1 (en) 2015-01-19 2016-07-28 InAuth, Inc. Systems and methods for trusted path secure communication
US10326748B1 (en) 2015-02-25 2019-06-18 Quest Software Inc. Systems and methods for event-based authentication
US10417613B1 (en) 2015-03-17 2019-09-17 Quest Software Inc. Systems and methods of patternizing logged user-initiated events for scheduling functions
US9992223B2 (en) 2015-03-20 2018-06-05 Nxp Usa, Inc. Flow-based anti-replay checking
US9990506B1 (en) 2015-03-30 2018-06-05 Quest Software Inc. Systems and methods of securing network-accessible peripheral devices
US9569626B1 (en) 2015-04-10 2017-02-14 Dell Software Inc. Systems and methods of reporting content-exposure events
US9641555B1 (en) 2015-04-10 2017-05-02 Dell Software Inc. Systems and methods of tracking content-exposure events
US9842220B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9842218B1 (en) 2015-04-10 2017-12-12 Dell Software Inc. Systems and methods of secure self-service access to content
US9563782B1 (en) 2015-04-10 2017-02-07 Dell Software Inc. Systems and methods of secure self-service access to content
US10097345B2 (en) * 2015-04-14 2018-10-09 PeerNova, Inc. Secure hash algorithm in digital hardware for cryptographic applications
JP2017011392A (en) * 2015-06-18 2017-01-12 株式会社リコー Decryption circuit, communication device using the same, and communication system
US10212138B1 (en) * 2015-06-19 2019-02-19 Amazon Technologies, Inc. Hardware security accelerator
US10536352B1 (en) 2015-08-05 2020-01-14 Quest Software Inc. Systems and methods for tuning cross-platform data collection
US9794064B2 (en) 2015-09-17 2017-10-17 Secturion Systems, Inc. Client(s) to cloud or remote server secure data or file object encryption gateway
US10157358B1 (en) 2015-10-05 2018-12-18 Quest Software Inc. Systems and methods for multi-stream performance patternization and interval-based prediction
US10218588B1 (en) 2015-10-05 2019-02-26 Quest Software Inc. Systems and methods for multi-stream performance patternization and optimization of virtual meetings
US10142391B1 (en) 2016-03-25 2018-11-27 Quest Software Inc. Systems and methods of diagnosing down-layer performance problems via multi-stream performance patternization
CN110915179B (en) * 2017-01-31 2021-06-15 华为技术有限公司 Processing device, communication device and corresponding method
IL251683B (en) * 2017-04-09 2019-08-29 Yoseph Koren System and method for dynamic management of private data
CN107256363B (en) * 2017-06-13 2020-03-06 杭州华澜微电子股份有限公司 High-speed encryption and decryption device composed of encryption and decryption module array
US11546370B2 (en) 2018-01-31 2023-01-03 Nxp Usa, Inc. Anti-replay protection for network packet communications
CN109905412B (en) * 2019-04-28 2021-06-01 山东渔翁信息技术股份有限公司 Network data parallel encryption and decryption processing method, device and medium
EP4060936A1 (en) * 2021-03-16 2022-09-21 Nokia Solutions and Networks Oy Enhanced processing for ipsec stream

Citations (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491909A (en) * 1981-03-18 1985-01-01 International Business Machines Corporation Data processing system having shared memory
US4774706A (en) * 1985-10-29 1988-09-27 British Telecommunications Public Limited Company Packet handling communications network
US5161193A (en) * 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5297206A (en) * 1992-03-19 1994-03-22 Orton Glenn A Cryptographic method for communication and electronic signatures
US5329623A (en) * 1992-06-17 1994-07-12 The Trustees Of The University Of Pennsylvania Apparatus for providing cryptographic support in a network
US5365589A (en) * 1992-02-07 1994-11-15 Gutowitz Howard A Method and apparatus for encryption, decryption and authentication using dynamical systems
US5631960A (en) * 1995-08-31 1997-05-20 National Semiconductor Corporation Autotest of encryption algorithms in embedded secure encryption devices
US5751809A (en) * 1995-09-29 1998-05-12 Intel Corporation Apparatus and method for securing captured data transmitted between two sources
US5796836A (en) * 1995-04-17 1998-08-18 Secure Computing Corporation Scalable key agile cryptography
US5796744A (en) * 1997-09-12 1998-08-18 Lockheed Martin Corporation Multi-node interconnect topology with nodes containing SCI link controllers and gigabit transceivers
US5870474A (en) * 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
US5936967A (en) * 1994-10-17 1999-08-10 Lucent Technologies, Inc. Multi-channel broadband adaptation processing
US5943338A (en) * 1996-08-19 1999-08-24 3Com Corporation Redundant ATM interconnect mechanism
US5949881A (en) * 1995-12-04 1999-09-07 Intel Corporation Apparatus and method for cryptographic companion imprinting
US5953416A (en) * 1996-11-12 1999-09-14 Fujitsu Limited Data processing apparatus
US5983350A (en) * 1996-09-18 1999-11-09 Secure Computing Corporation Secure firewall supporting different levels of authentication based on address or encryption status
US6003135A (en) * 1997-06-04 1999-12-14 Spyrus, Inc. Modular security device
US6038551A (en) * 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
US6069957A (en) * 1997-03-07 2000-05-30 Lucent Technologies Inc. Method and apparatus for providing hierarchical key system in restricted-access television system
US6111858A (en) * 1997-02-18 2000-08-29 Virata Limited Proxy-controlled ATM subnetwork
US6115816A (en) * 1996-12-18 2000-09-05 Intel Corporation Optimized security functionality in an electronic system
US6216167B1 (en) * 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6269163B1 (en) * 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
US6295602B1 (en) * 1998-12-30 2001-09-25 Spyrus, Inc. Event-driven serialization of access to shared resources
US6295604B1 (en) * 1998-05-26 2001-09-25 Intel Corporation Cryptographic packet processing unit
US6320964B1 (en) * 1998-08-26 2001-11-20 Intel Corporation Cryptographic accelerator
US6327625B1 (en) * 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US20020001384A1 (en) * 2000-04-13 2002-01-03 Broadcom Corporation Authentication engine architecture and method
US20020004904A1 (en) * 2000-05-11 2002-01-10 Blaker David M. Cryptographic data processing systems, computer program products, and methods of operating same in which multiple cryptographic execution units execute commands from a host processor in parallel
US20020009076A1 (en) * 2000-01-27 2002-01-24 Ton Engbersen Method and means for classifying data packets
US6349405B1 (en) * 1999-05-18 2002-02-19 Solidum Systems Corp. Packet classification state machine
US20020039418A1 (en) * 2000-05-15 2002-04-04 Fortress U&T Div. M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
US20020044649A1 (en) * 1998-12-24 2002-04-18 Certicom Corp. Method for accelerating cryptographic operations on elliptic curves
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US20020057796A1 (en) * 1998-12-24 2002-05-16 Lambert Robert J. Method for accelerating cryptographic operations on elliptic curves
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US6393564B1 (en) * 1997-09-30 2002-05-21 Matsushita Electric Industrial Co., Ltd. Decrypting device
US20020078342A1 (en) * 2000-09-25 2002-06-20 Broadcom Corporation E-commerce security processor alignment logic
US6421730B1 (en) * 1998-06-15 2002-07-16 Intel Corporation Programmable system for processing a partitioned network infrastructure
US20020097724A1 (en) * 2001-01-09 2002-07-25 Matti Halme Processing of data packets within a network element cluster
US6484257B1 (en) * 1999-02-27 2002-11-19 Alonzo Ellis System and method for maintaining N number of simultaneous cryptographic sessions using a distributed computing environment
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US20030005144A1 (en) * 1998-10-28 2003-01-02 Robert Engel Efficient classification manipulation and control of network transmissions by associating network flows with rule based functions
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6751728B1 (en) * 1999-06-16 2004-06-15 Microsoft Corporation System and method of transmitting encrypted packets through a network access point
US6751677B1 (en) * 1999-08-24 2004-06-15 Hewlett-Packard Development Company, L.P. Method and apparatus for allowing a secure and transparent communication between a user device and servers of a data access network system via a firewall and a gateway
US6760444B1 (en) * 1999-01-08 2004-07-06 Cisco Technology, Inc. Mobile IP authentication
US6778495B1 (en) * 2000-05-17 2004-08-17 Cisco Technology, Inc. Combining multilink and IP per-destination load balancing over a multilink bundle
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US6862278B1 (en) * 1998-06-18 2005-03-01 Microsoft Corporation System and method using a packetized encoded bitstream for parallel compression and decompression
US6963979B2 (en) * 1999-10-20 2005-11-08 Aep Systems Limited Cryptographic accelerator
US6981140B1 (en) * 1999-08-17 2005-12-27 Hewlett-Packard Development Company, L.P. Robust encryption and decryption of packetized data transferred across communications networks
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US6996842B2 (en) * 2001-01-30 2006-02-07 Intel Corporation Processing internet protocol security traffic
US7003118B1 (en) * 2000-11-27 2006-02-21 3Com Corporation High performance IPSEC hardware accelerator for packet classification
US7005733B2 (en) * 1999-12-30 2006-02-28 Koemmerling Oliver Anti tamper encapsulation for an integrated circuit
US7017042B1 (en) * 2001-06-14 2006-03-21 Syrus Ziai Method and circuit to accelerate IPSec processing
US7039641B2 (en) * 2000-02-24 2006-05-02 Lucent Technologies Inc. Modular packet classification
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE33189E (en) 1981-11-19 1990-03-27 Communications Satellite Corporation Security system for SSTV encryption
NL9301841A (en) 1993-10-25 1995-05-16 Nederland Ptt Device for processing data packets.
NL9400428A (en) 1994-03-18 1995-11-01 Nederland Ptt Device for cryptographically processing data packets, as well as a method of generating cryptographic processing data.
US5471482A (en) 1994-04-05 1995-11-28 Unisys Corporation VLSI embedded RAM test
US5734829A (en) 1995-10-20 1998-03-31 International Business Machines Corporation Method and program for processing a volume of data on a parallel computer system
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
US6101255A (en) 1997-04-30 2000-08-08 Motorola, Inc. Programmable cryptographic processing system and method
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6189100B1 (en) * 1998-06-30 2001-02-13 Microsoft Corporation Ensuring the integrity of remote boot client data
US6560229B1 (en) 1998-07-08 2003-05-06 Broadcom Corporation Network switching architecture with multiple table synchronization, and forwarding of both IP and IPX packets
US6347143B1 (en) 1998-12-15 2002-02-12 Philips Electronics No. America Corp. Cryptographic device with encryption blocks connected parallel
US6529508B1 (en) * 1999-02-01 2003-03-04 Redback Networks Inc. Methods and apparatus for packet classification with multiple answer sets
US7086086B2 (en) 1999-02-27 2006-08-01 Alonzo Ellis System and method for maintaining N number of simultaneous cryptographic sessions using a distributed computing environment
US6490556B2 (en) 1999-05-28 2002-12-03 Intel Corporation Audio classifier for half duplex communication
US6477646B1 (en) 1999-07-08 2002-11-05 Broadcom Corporation Security chip architecture and implementations for cryptography acceleration
US20030014627A1 (en) 1999-07-08 2003-01-16 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US6971021B1 (en) 2000-03-08 2005-11-29 Rainbow Technologies, Inc. Non-wire contact device application for cryptographic module interfaces
US6807183B1 (en) * 2000-05-09 2004-10-19 Advanced Micro Devices, Inc. Arrangement for reading a prescribed location of a FIFO buffer in a network switch port
US7075926B2 (en) 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
US20030058274A1 (en) 2000-11-17 2003-03-27 Jake Hill Interface device
US7502463B2 (en) 2000-12-13 2009-03-10 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
US7266703B2 (en) 2001-06-13 2007-09-04 Itt Manufacturing Enterprises, Inc. Single-pass cryptographic processor and method
US7861104B2 (en) 2001-08-24 2010-12-28 Broadcom Corporation Methods and apparatus for collapsing interrupts
US6909713B2 (en) 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
WO2003030441A2 (en) 2001-10-03 2003-04-10 Koninklijke Philips Electronics N.V. Memory encryption system and method
US7248585B2 (en) 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6715085B2 (en) 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
EP1540957A4 (en) 2002-04-30 2009-07-08 Gen Dynamics Advanced Inf Sys Method and apparatus for in-line serial data encryption
US20040039936A1 (en) 2002-08-21 2004-02-26 Yi-Sern Lai Apparatus and method for high speed IPSec processing
US7369657B2 (en) 2002-11-14 2008-05-06 Broadcom Corporation Cryptography accelerator application program interface
US20040123123A1 (en) 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US7191341B2 (en) 2002-12-18 2007-03-13 Broadcom Corporation Methods and apparatus for ordering data in a cryptography accelerator
US20040123120A1 (en) 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling

Patent Citations (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491909A (en) * 1981-03-18 1985-01-01 International Business Machines Corporation Data processing system having shared memory
US4774706A (en) * 1985-10-29 1988-09-27 British Telecommunications Public Limited Company Packet handling communications network
US5161193A (en) * 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5365589A (en) * 1992-02-07 1994-11-15 Gutowitz Howard A Method and apparatus for encryption, decryption and authentication using dynamical systems
US5297206A (en) * 1992-03-19 1994-03-22 Orton Glenn A Cryptographic method for communication and electronic signatures
US5329623A (en) * 1992-06-17 1994-07-12 The Trustees Of The University Of Pennsylvania Apparatus for providing cryptographic support in a network
US5936967A (en) * 1994-10-17 1999-08-10 Lucent Technologies, Inc. Multi-channel broadband adaptation processing
US5796836A (en) * 1995-04-17 1998-08-18 Secure Computing Corporation Scalable key agile cryptography
US5631960A (en) * 1995-08-31 1997-05-20 National Semiconductor Corporation Autotest of encryption algorithms in embedded secure encryption devices
US5751809A (en) * 1995-09-29 1998-05-12 Intel Corporation Apparatus and method for securing captured data transmitted between two sources
US5870474A (en) * 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
US5949881A (en) * 1995-12-04 1999-09-07 Intel Corporation Apparatus and method for cryptographic companion imprinting
US6038551A (en) * 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
US5943338A (en) * 1996-08-19 1999-08-24 3Com Corporation Redundant ATM interconnect mechanism
US5983350A (en) * 1996-09-18 1999-11-09 Secure Computing Corporation Secure firewall supporting different levels of authentication based on address or encryption status
US5953416A (en) * 1996-11-12 1999-09-14 Fujitsu Limited Data processing apparatus
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US6115816A (en) * 1996-12-18 2000-09-05 Intel Corporation Optimized security functionality in an electronic system
US6111858A (en) * 1997-02-18 2000-08-29 Virata Limited Proxy-controlled ATM subnetwork
US6069957A (en) * 1997-03-07 2000-05-30 Lucent Technologies Inc. Method and apparatus for providing hierarchical key system in restricted-access television system
US6003135A (en) * 1997-06-04 1999-12-14 Spyrus, Inc. Modular security device
US5796744A (en) * 1997-09-12 1998-08-18 Lockheed Martin Corporation Multi-node interconnect topology with nodes containing SCI link controllers and gigabit transceivers
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6393564B1 (en) * 1997-09-30 2002-05-21 Matsushita Electric Industrial Co., Ltd. Decrypting device
US6216167B1 (en) * 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6378072B1 (en) * 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US7055029B2 (en) * 1998-02-03 2006-05-30 Hewlett-Packard Development Company, L.P. Cryptographic system enabling ownership of a secure process
US6295604B1 (en) * 1998-05-26 2001-09-25 Intel Corporation Cryptographic packet processing unit
US6421730B1 (en) * 1998-06-15 2002-07-16 Intel Corporation Programmable system for processing a partitioned network infrastructure
US6269163B1 (en) * 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
US6862278B1 (en) * 1998-06-18 2005-03-01 Microsoft Corporation System and method using a packetized encoded bitstream for parallel compression and decompression
US6320964B1 (en) * 1998-08-26 2001-11-20 Intel Corporation Cryptographic accelerator
US6831979B2 (en) * 1998-08-26 2004-12-14 Intel Corporation Cryptographic accelerator
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
US20030005144A1 (en) * 1998-10-28 2003-01-02 Robert Engel Efficient classification manipulation and control of network transmissions by associating network flows with rule based functions
US20020057796A1 (en) * 1998-12-24 2002-05-16 Lambert Robert J. Method for accelerating cryptographic operations on elliptic curves
US20020044649A1 (en) * 1998-12-24 2002-04-18 Certicom Corp. Method for accelerating cryptographic operations on elliptic curves
US6295602B1 (en) * 1998-12-30 2001-09-25 Spyrus, Inc. Event-driven serialization of access to shared resources
US6760444B1 (en) * 1999-01-08 2004-07-06 Cisco Technology, Inc. Mobile IP authentication
US6484257B1 (en) * 1999-02-27 2002-11-19 Alonzo Ellis System and method for maintaining N number of simultaneous cryptographic sessions using a distributed computing environment
US6701432B1 (en) * 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6349405B1 (en) * 1999-05-18 2002-02-19 Solidum Systems Corp. Packet classification state machine
US6751728B1 (en) * 1999-06-16 2004-06-15 Microsoft Corporation System and method of transmitting encrypted packets through a network access point
US6981140B1 (en) * 1999-08-17 2005-12-27 Hewlett-Packard Development Company, L.P. Robust encryption and decryption of packetized data transferred across communications networks
US6751677B1 (en) * 1999-08-24 2004-06-15 Hewlett-Packard Development Company, L.P. Method and apparatus for allowing a secure and transparent communication between a user device and servers of a data access network system via a firewall and a gateway
US6963979B2 (en) * 1999-10-20 2005-11-08 Aep Systems Limited Cryptographic accelerator
US6327625B1 (en) * 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US7005733B2 (en) * 1999-12-30 2006-02-28 Koemmerling Oliver Anti tamper encapsulation for an integrated circuit
US20020009076A1 (en) * 2000-01-27 2002-01-24 Ton Engbersen Method and means for classifying data packets
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6983366B1 (en) * 2000-02-14 2006-01-03 Safenet, Inc. Packet Processor
US7039641B2 (en) * 2000-02-24 2006-05-02 Lucent Technologies Inc. Modular packet classification
US20020001384A1 (en) * 2000-04-13 2002-01-03 Broadcom Corporation Authentication engine architecture and method
US20020004904A1 (en) * 2000-05-11 2002-01-10 Blaker David M. Cryptographic data processing systems, computer program products, and methods of operating same in which multiple cryptographic execution units execute commands from a host processor in parallel
US20020039418A1 (en) * 2000-05-15 2002-04-04 Fortress U&T Div. M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
US6778495B1 (en) * 2000-05-17 2004-08-17 Cisco Technology, Inc. Combining multilink and IP per-destination load balancing over a multilink bundle
US20020078342A1 (en) * 2000-09-25 2002-06-20 Broadcom Corporation E-commerce security processor alignment logic
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US7003118B1 (en) * 2000-11-27 2006-02-21 3Com Corporation High performance IPSEC hardware accelerator for packet classification
US20020097724A1 (en) * 2001-01-09 2002-07-25 Matti Halme Processing of data packets within a network element cluster
US6996842B2 (en) * 2001-01-30 2006-02-07 Intel Corporation Processing internet protocol security traffic
US7017042B1 (en) * 2001-06-14 2006-03-21 Syrus Ziai Method and circuit to accelerate IPSec processing

Cited By (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996670B1 (en) 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US7003118B1 (en) * 2000-11-27 2006-02-21 3Com Corporation High performance IPSEC hardware accelerator for packet classification
US20020120874A1 (en) * 2000-12-22 2002-08-29 Li Shu Method and system for secure exchange of messages
US20030043825A1 (en) * 2001-09-05 2003-03-06 Andreas Magnussen Hash-based data frame distribution for web switches
US6909713B2 (en) * 2001-09-05 2005-06-21 Intel Corporation Hash-based data frame distribution for web switches
US20030149883A1 (en) * 2002-02-01 2003-08-07 Hopkins Dale W. Cryptographic key setup in queued cryptographic systems
US7318160B2 (en) * 2002-02-01 2008-01-08 Hewlett-Packard Development Company, L.P. Cryptographic key setup in queued cryptographic systems
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US20050060558A1 (en) * 2003-04-12 2005-03-17 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US7661130B2 (en) 2003-04-12 2010-02-09 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US20040202319A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processor
US20040205331A1 (en) * 2003-04-12 2004-10-14 Hussain Muhammad Raghib Apparatus and method for allocating resources within a security processing architecture using multiple groups
US7337314B2 (en) 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US20050044068A1 (en) * 2003-08-22 2005-02-24 Chin-Yi Lin Searching method for a security policy database
US7392241B2 (en) 2003-08-22 2008-06-24 Industrial Technology Research Institute Searching method for a security policy database
US7779090B2 (en) * 2003-09-29 2010-08-17 Lipsky Scott E Method and system for distributing images to client systems
US20050071867A1 (en) * 2003-09-29 2005-03-31 Lipsky Scott E. Method and system for distributing images to client systems
US8577955B2 (en) 2003-09-29 2013-11-05 Eqapez Foundation, L.L.C. Method and system for distributing images to client systems
US20100312819A1 (en) * 2003-09-29 2010-12-09 Lipsky Scott E Method and system for distributing images to client systems
US8949380B2 (en) 2003-09-29 2015-02-03 Eqapez Foundation, L.L.C. Method and system for distributing images to client systems
US20050071880A1 (en) * 2003-09-29 2005-03-31 Lipsky Scott E. Method and system for distributing images to client systems
US9214037B2 (en) 2003-09-29 2015-12-15 Ol Security Limited Liability Company Method and system for distributing images to client systems
US20050086357A1 (en) * 2003-09-29 2005-04-21 Lipsky Scott E. Method and system for distributing images to client systems
US20050083926A1 (en) * 2003-10-15 2005-04-21 Mathews Robin M. Packet storage and retransmission over a secure connection
US8351445B1 (en) 2003-11-05 2013-01-08 Globalfoundries Inc. Network interface systems and methods for offloading segmentation and/or checksumming with security processing
EP1695190A4 (en) * 2003-11-24 2010-10-20 Itt Mfg Enterprises Inc A method of implementing a high-speed header bypass function
WO2005050357A2 (en) 2003-11-24 2005-06-02 Itt Manufacturing Enterprises, Inc. A method of implementing a high-speed header bypass function
EP1695190A2 (en) * 2003-11-24 2006-08-30 Itt Manufacturing Enterprises, Inc. A method of implementing a high-speed header bypass function
EP1536311A1 (en) 2003-11-28 2005-06-01 Bull S.A. Modular cryptographic system with high flow rate
FR2863076A1 (en) * 2003-11-28 2005-06-03 Bull Sa HIGH SPEED CRYPTOGRAPHIC SYSTEM WITH MODULAR ARCHITECTURE.
EP1714421A2 (en) * 2004-02-05 2006-10-25 CTAM USA Inc. Multi-protocol network encryption system
EP1714421A4 (en) * 2004-02-05 2011-08-17 Ctam Usa Inc Multi-protocol network encryption system
US20060004697A1 (en) * 2004-06-09 2006-01-05 Lipsky Scott E Method and system for restricting the display of images
US8868906B2 (en) 2004-09-17 2014-10-21 At&T Intellectual Property I, L.P. Signature specification for encrypted packet streams
US9246786B2 (en) 2004-09-17 2016-01-26 At&T Intellectual Property I, L.P. Detection of encrypted packet streams using feedback probing
US7761705B2 (en) * 2004-09-17 2010-07-20 At&T Intellectual Property I, L.P. Detection of encrypted packet streams
US20060064579A1 (en) * 2004-09-17 2006-03-23 Aaron Jeffrey A Detection of encrypted packet streams
US20060114896A1 (en) * 2004-11-30 2006-06-01 Alcatel Flow-aware ethernet digital subscriber line access multiplexer DSLAM
US7599366B2 (en) * 2004-11-30 2009-10-06 Alcatel Flow-aware ethernet digital subscriber line access multiplexer DSLAM
US9264426B2 (en) 2004-12-20 2016-02-16 Broadcom Corporation System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US9288192B2 (en) 2004-12-21 2016-03-15 Broadcom Corporation System and method for securing data from a remote input device
US20060133604A1 (en) * 2004-12-21 2006-06-22 Mark Buer System and method for securing data from a remote input device
US20070094178A1 (en) * 2005-08-19 2007-04-26 Electronics And Telecommunications Research Institute Method and apparatus for storing pattern matching data and pattern matching method using the same
US7613669B2 (en) * 2005-08-19 2009-11-03 Electronics And Telecommunications Research Institute Method and apparatus for storing pattern matching data and pattern matching method using the same
US20070201499A1 (en) * 2006-02-24 2007-08-30 Texas Instruments Incorporated Device, system and/or method for managing packet congestion in a packet switching network
US7724754B2 (en) * 2006-02-24 2010-05-25 Texas Instruments Incorporated Device, system and/or method for managing packet congestion in a packet switching network
US7917939B2 (en) * 2006-08-22 2011-03-29 Hitachi, Ltd. IPSec processing device, network system, and IPSec processing program
US20080052756A1 (en) * 2006-08-22 2008-02-28 Takehiro Morishige IPSec PROCESSING DEVICE, NETWORK SYSTEM, AND IPSec PROCESSING PROGRAM
US7925886B2 (en) 2007-06-13 2011-04-12 International Business Machines Corporation Encryption output data generation method and system
US20090178104A1 (en) * 2008-01-08 2009-07-09 Hemal Shah Method and system for a multi-level security association lookup scheme for internet protocol security
US20100082060A1 (en) * 2008-09-30 2010-04-01 Tyco Healthcare Group Lp Compression Device with Wear Area
US20110134916A1 (en) * 2008-09-30 2011-06-09 Ramesh Panwar Methods and Apparatus Related to Packet Classification Based on Range Values
US20100080224A1 (en) * 2008-09-30 2010-04-01 Ramesh Panwar Methods and apparatus for packet classification based on policy vectors
US8139591B1 (en) 2008-09-30 2012-03-20 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US20110200038A1 (en) * 2008-09-30 2011-08-18 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US7961734B2 (en) 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US7738454B1 (en) 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US8571023B2 (en) 2008-09-30 2013-10-29 Juniper Networks, Inc. Methods and Apparatus Related to Packet Classification Based on Range Values
US8571034B2 (en) 2008-09-30 2013-10-29 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US9413660B1 (en) 2008-09-30 2016-08-09 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US7835357B2 (en) 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8595479B2 (en) 2009-02-25 2013-11-26 Cisco Technology, Inc. Aggregation of cryptography engines
WO2010126634A1 (en) * 2009-02-25 2010-11-04 Cisco Technology, Inc. Aggregation of cryptography engines
US20100217971A1 (en) * 2009-02-25 2010-08-26 Cisco Technology, Inc. Aggregation of cryptography engines
US9141831B2 (en) * 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
US20150249654A1 (en) * 2010-07-08 2015-09-03 Texas Instruments Incorporated Security processing engines, circuits and systems and adaptive processes and other processes
US10567358B2 (en) 2010-07-08 2020-02-18 Texas Instruments Incorporated Packet accelerator ingress communication processor peripheral streaming interface, scheduler, buffer
US9305184B2 (en) * 2010-07-08 2016-04-05 Texas Instruments Incorporated Packet-processing scheduler, security context, authentication, packet header, air cipher subsystem
US20120011351A1 (en) * 2010-07-08 2012-01-12 Texas Instruments Incorporated Security Processing Engines, Circuits and Systems and Adaptive Processes and Other Processes
US9503265B2 (en) 2010-07-08 2016-11-22 Texas Instruments Incorporated Scheduler and context cache controller and storage for security context
US10999263B2 (en) 2010-07-08 2021-05-04 Texas Instruments Incorporated Cryptographic engine, scheduler, packet header processor, ingress interfaces, and buffers
US10110573B2 (en) 2010-07-08 2018-10-23 Texas Instruments Incorporated Packet-processing with CPPI DMA streaming interface ingress and egress ports
US9674036B2 (en) 2010-12-15 2017-06-06 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10708150B2 (en) 2013-03-15 2020-07-07 A10 Networks, Inc. System and method of updating modules for application or content identification
US9722918B2 (en) 2013-03-15 2017-08-01 A10 Networks, Inc. System and method for customizing the identification of application or content type
US10594600B2 (en) 2013-03-15 2020-03-17 A10 Networks, Inc. System and method for customizing the identification of application or content type
US9912555B2 (en) 2013-03-15 2018-03-06 A10 Networks, Inc. System and method of updating modules for application or content identification
US11288402B2 (en) 2013-03-29 2022-03-29 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US11783089B2 (en) 2013-03-29 2023-10-10 Secturion Systems, Inc. Multi-tenancy architecture
US11921906B2 (en) 2013-03-29 2024-03-05 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US20230049021A1 (en) * 2013-04-01 2023-02-16 Secturion Systems, Inc. Multi-level independent security architecture
US11429540B2 (en) * 2013-04-01 2022-08-30 Secturion Systems, Inc. Multi-level independent security architecture
US10091237B2 (en) 2013-04-25 2018-10-02 A10 Networks, Inc. Systems and methods for network access control
US10581907B2 (en) 2013-04-25 2020-03-03 A10 Networks, Inc. Systems and methods for network access control
US9838425B2 (en) 2013-04-25 2017-12-05 A10 Networks, Inc. Systems and methods for network access control
US10187423B2 (en) 2013-08-26 2019-01-22 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US9860271B2 (en) 2013-08-26 2018-01-02 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US9294503B2 (en) 2013-08-26 2016-03-22 A10 Networks, Inc. Health monitor based distributed denial of service attack mitigation
US10686683B2 (en) 2014-05-16 2020-06-16 A10 Networks, Inc. Distributed system to determine a server's health
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US20150371055A1 (en) * 2014-06-19 2015-12-24 Ju-hee Park Host controller and system-on-chip
US9721113B2 (en) * 2014-06-19 2017-08-01 Samsung Electronics Co., Ltd. Host controller and system-on-chip
US9756071B1 (en) 2014-09-16 2017-09-05 A10 Networks, Inc. DNS denial of service attack protection
US9537886B1 (en) 2014-10-23 2017-01-03 A10 Networks, Inc. Flagging security threats in web service requests
US10505964B2 (en) 2014-12-29 2019-12-10 A10 Networks, Inc. Context aware threat protection
US9621575B1 (en) 2014-12-29 2017-04-11 A10 Networks, Inc. Context aware threat protection
US9584318B1 (en) 2014-12-30 2017-02-28 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack defense
US9900343B1 (en) 2015-01-05 2018-02-20 A10 Networks, Inc. Distributed denial of service cellular signaling
US9848013B1 (en) 2015-02-05 2017-12-19 A10 Networks, Inc. Perfect forward secrecy distributed denial of service attack detection
US10834132B2 (en) 2015-02-14 2020-11-10 A10 Networks, Inc. Implementing and optimizing secure socket layer intercept
US10063591B1 (en) 2015-02-14 2018-08-28 A10 Networks, Inc. Implementing and optimizing secure socket layer intercept
US10135739B2 (en) * 2015-05-07 2018-11-20 Mellanox Technologies, Ltd. Network-based computational accelerator
US10715451B2 (en) 2015-05-07 2020-07-14 Mellanox Technologies, Ltd. Efficient transport flow processing on an accelerator
US10152441B2 (en) 2015-05-18 2018-12-11 Mellanox Technologies, Ltd. Host bus access by add-on devices via a network interface controller
US10992709B2 (en) * 2015-07-28 2021-04-27 Citrix Systems, Inc. Efficient use of IPsec tunnels in multi-path environment
US11792169B2 (en) 2015-09-17 2023-10-17 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US11283774B2 (en) 2015-09-17 2022-03-22 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US9787581B2 (en) 2015-09-21 2017-10-10 A10 Networks, Inc. Secure data flow open information analytics
US11750571B2 (en) 2015-10-26 2023-09-05 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US10469594B2 (en) 2015-12-08 2019-11-05 A10 Networks, Inc. Implementation of secure socket layer intercept
US10812348B2 (en) 2016-07-15 2020-10-20 A10 Networks, Inc. Automatic capture of network data for a detected anomaly
US10341118B2 (en) 2016-08-01 2019-07-02 A10 Networks, Inc. SSL gateway with integrated hardware security module
US10382562B2 (en) 2016-11-04 2019-08-13 A10 Networks, Inc. Verification of server certificates using hash codes
US10250475B2 (en) 2016-12-08 2019-04-02 A10 Networks, Inc. Measurement of application response delay time
US10397270B2 (en) 2017-01-04 2019-08-27 A10 Networks, Inc. Dynamic session rate limiter
US10187377B2 (en) 2017-02-08 2019-01-22 A10 Networks, Inc. Caching network generated security certificates
USRE47924E1 (en) 2017-02-08 2020-03-31 A10 Networks, Inc. Caching network generated security certificates
US10382350B2 (en) 2017-09-12 2019-08-13 Mellanox Technologies, Ltd. Maintaining packet order in offload of packet processing functions
US11765079B2 (en) 2017-10-16 2023-09-19 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US11418454B2 (en) 2017-10-16 2022-08-16 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US11683266B2 (en) 2017-10-16 2023-06-20 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US10841243B2 (en) 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10708240B2 (en) 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
US10824469B2 (en) 2018-11-28 2020-11-03 Mellanox Technologies, Ltd. Reordering avoidance for flows during transition between slow-path handling and fast-path handling
US11184439B2 (en) 2019-04-01 2021-11-23 Mellanox Technologies, Ltd. Communication with accelerator via RDMA-based network adapter
CN110309374A (en) * 2019-05-22 2019-10-08 深圳市金泰克半导体有限公司 A kind of analytic method, system, terminal device and computer readable storage medium
US11196715B2 (en) * 2019-07-16 2021-12-07 Xilinx, Inc. Slice-aggregated cryptographic system and method
US11558175B2 (en) 2020-08-05 2023-01-17 Mellanox Technologies, Ltd. Cryptographic data communication apparatus
US11909856B2 (en) 2020-08-05 2024-02-20 Mellanox Technologies, Ltd. Cryptographic data communication apparatus
US11909855B2 (en) 2020-08-05 2024-02-20 Mellanox Technologies, Ltd. Cryptographic data communication apparatus
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US20230025884A1 (en) * 2021-07-09 2023-01-26 Lexmark International, Inc. Methods and Systems for Determining the Authenticity of a Component
WO2023282924A1 (en) * 2021-07-09 2023-01-12 Lexmark International, Inc. Methods and systems for determining the authenticity of a component

Also Published As

Publication number Publication date
WO2001005086A2 (en) 2001-01-18
AU6342200A (en) 2001-01-30
AU6342500A (en) 2001-01-30
DE60034453T2 (en) 2007-11-08
EP1192782B1 (en) 2007-09-05
US7600131B1 (en) 2009-10-06
DE60036284T2 (en) 2008-05-29
EP1192782A2 (en) 2002-04-03
WO2001005087A2 (en) 2001-01-18
EP1192781A2 (en) 2002-04-03
ATE372636T1 (en) 2007-09-15
WO2001005087A3 (en) 2001-10-18
EP1192781B1 (en) 2007-04-18
WO2001005086A3 (en) 2001-12-06
ATE360317T1 (en) 2007-05-15
US7996670B1 (en) 2011-08-09
DE60036284D1 (en) 2007-10-18
DE60034453D1 (en) 2007-05-31

Similar Documents

Publication Publication Date Title
US7996670B1 (en) Classification engine in a cryptography acceleration chip
US20030014627A1 (en) Distributed processing in a cryptography acceleration chip
US7685436B2 (en) System and method for a secure I/O interface
US7017042B1 (en) Method and circuit to accelerate IPSec processing
US7577758B2 (en) Hardware support for wire-speed, stateful matching and filtration of network traffic
Shah Understanding network processors
EP1791060B1 (en) Apparatus performing network processing functions
JP5074558B2 (en) Network processing using IPSec
EP1435716B1 (en) Security association updates in a packet load-balanced system
US9727508B2 (en) Address learning and aging for network bridging in a network processor
US20090240874A1 (en) Framework for user-level packet processing
US11489773B2 (en) Network system including match processing unit for table-based actions
Miltchev et al. A study of the relative costs of network security protocols
Pismenny et al. Autonomous NIC offloads
US8438641B2 (en) Security protocol processing for anti-replay protection
JP2010063110A (en) Gigabit ethernet adapter supporting the iscsi and ipsec protocols
US7603549B1 (en) Network security protocol processor and method thereof
WO2004059448A2 (en) Packet inspection
Güvensan et al. Protocol Independent Lightweight Secure Communication.
Tan et al. A 10 Gbit/s IPSec Gateway Implementation
Ferrante et al. IPSec Database Query Acceleration
Brooker An IPsec Gateway Based on the Intel IXP2400 Network Processor

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

AS Assignment

Owner name: BROADCOM CORPORATION, CALIFORNIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001

Effective date: 20170119