Cavium Patent Applications

METHOD AND AN APPARATUS FOR WORK REQUEST ARBITRATION IN A NETWORK PROCESSOR

Granted: August 6, 2015
Application Number: 20150222698
A method and a system embodying the method for work request arbitration, comprising receiving a work request, the work request indicating one or more groups from a plurality of groups; determining at least one of a plurality of parameters in accordance with the received work request; determining eligibility to provide work among the one or more groups that have work in a work queue in accordance with a first set of the plurality of parameters; and selecting one of the determined eligible…

METHOD AND AN APPARATUS FOR WORK PACKET QUEUING, SCHEDULING, AND ORDERING WITH CONFLICT QUEUING

Granted: August 6, 2015
Application Number: 20150220872
A method and a system embodying the method for processing conflicting work, comprising: receiving a work request, the work request indicating one or more groups from a plurality of groups; finding work by arbitrating among a plurality of queues of the one or more groups; determining whether the found work conflicts with another work; returning the found work when the determination is negative; and adding the found work into a tag-chain when the determination is affirmative is disclosed.

BLOCK MASK REGISTER

Granted: July 16, 2015
Application Number: 20150201047
A packet classification system, methods, and corresponding apparatus are provided for enabling packet classification. A processor of a routing appliance coupled to a network compiles data structures to process keys associated with a particular block mask register (BMR) of a plurality of BMRs. For each BMR of the plurality of BMRs, the processor identifies at least one of or a combination of: i) at least a portion of a field of a plurality of rules and ii) a subset of fields of the…

PROCESSING REQUEST KEYS BASED ON A KEY SIZE SUPPORTED BY UNDERLYING PROCESSING ELEMENTS

Granted: July 9, 2015
Application Number: 20150195262
A packet classification system, methods, and apparatus are provided for packet classification. A processor of a router coupled to a network processes data packets received from a network. The processor creates a request key using information extracted from a packet. The processor splits the request key into an n number of partial request keys if at least one predetermined criterion is met. The processor also sends a non-final request that includes an i-th partial request key to a…

FLOATING MASK GENERATION FOR NETWORK PACKET FLOW

Granted: July 9, 2015
Application Number: 20150195388
A tag mask generation method comprises receiving a section_selector flag indicating whether a tag mask for a section of a network packet is to be generated; receiving from a parser a parse information for the network packet, wherein the parse information includes a section_pointer that indicates a location of the section in the network packet; generating a pointer based on the section_pointer when the section_selector indicates that the tag mask for the section is to be generated;…

METHODS AND SYSTEMS FOR FLEXIBLE PACKET CLASSIFICATION

Granted: July 9, 2015
Application Number: 20150195387
A network packet classification method comprises receiving parse information derived from parsing a field in a network packet; comparing the parse information with information in a table to derive a comparison result, wherein the table includes information for mapping the field with one or more comparison results; based on the comparison result deriving a style value for the network packet; classifying the packet based on the style value; and processing the packet based on the…

METHODS AND SYSTEMS FOR RESOURCE MANAGEMENT IN A SINGLE INSTRUCTION MULTIPLE DATA PACKET PARSING CLUSTER

Granted: July 9, 2015
Application Number: 20150195386
Methods and systems are provided for operating a SIMD packet parsing cluster, wherein the cluster includes a plurality of M packet parsing engines 1 to M, and the cluster further includes a shared memory and an instruction memory storing a plurality of instructions to be performed by each of the engines, and wherein the instructions include one or more memory accessing instructions that require accessing the shared memory. The method comprises transmitting the instructions to the engines…

METHODS AND SYSTEMS FOR DISTRIBUTION OF PACKETS AMONG PARSING CLUSTERS

Granted: July 9, 2015
Application Number: 20150195385
A method for parsing network packets via one or more clusters configured to parse network packets comprises receiving one or more packets to be parsed; determining a candidate cluster of the one or more clusters for parsing the one or more packets; transmitting the one or more packets to the candidate cluster; launching the candidate cluster to parse the one or more packets when a launch condition is met; and receiving parse results for the one or more packets from the candidate cluster.…

PACKET PARSING ENGINE

Granted: July 9, 2015
Application Number: 20150195384
A packet parsing engine comprises a DMEM configured to store packet data; one or more registers configured to store parsing instructions or parse results; and one or more arithmetic logic units configured to parse the packet data based on the parsing instructions and to derive the parse results. The engine may be one engine of a plurality of engines configured to access a shared memory, and the engine may be configured to receive data from the shared memory or to send data to the shared…

METHODS AND SYSTEMS FOR SINGLE INSTRUCTION MULTIPLE DATA PROGRAMMABLE PACKET PARSERS

Granted: July 9, 2015
Application Number: 20150195383
A parser for parsing network packets comprises a plurality of clusters, each cluster comprising one or more engines; a launcher configured to determine a candidate cluster of the plurality of clusters to parse a subset of a plurality of received packets; a loader configured to transmit the subset of the plurality of packets to the candidate cluster, wherein each of the one or more engines in the candidate cluster is configured to parse and derive parse results for a packet of the subset…

METHOD AND APPARATUS FOR COMPILING SEARCH TREES FOR PROCESSING REQUEST KEYS BASED ON A KEY SIZE SUPPORTED BY UNDERLYING PROCESSING ELEMENTS

Granted: July 9, 2015
Application Number: 20150195194
A packet classification system, methods, and apparatus are provided for packet classification. A processor of a router coupled to a network compiles at least one search tree based on a rules set. The processor determines an x number of search phases needed to process an incoming key corresponding to the rules set, wherein the rules set includes a plurality of rules, where each of the plurality of rules includes an n number of rule fields and where the incoming key includes an n number of…

LOOK-ASIDE PROCESSOR UNIT WITH INTERNAL AND EXTERNAL ACCESS FOR MULTICORE PROCESSORS

Granted: July 2, 2015
Application Number: 20150188816
A method and a system embodying the method for information lookup request processing at a look-aside processor unit comprising storing a received lookup transaction request in a first buffer; rebuilding the lookup transaction request into a request packet; transmitting the request packet; receiving a packet; determining whether the received packet comprises a response packet or an exception packet; and processing the received packet in accordance with the determining is disclosed.…

METHOD AND APPARATUS FOR PROCESSING OF FINITE AUTOMATA

Granted: July 2, 2015
Application Number: 20150186786
A method, and corresponding apparatus and system are provided for optimizing matching at least one regular expression pattern in an input stream by walking at least one finite automaton in a speculative manner. The speculative manner may include walking at least two nodes of a given finite automaton, of the at least one finite automaton, in parallel, with a segment, at a given offset within a payload of a packet in the input stream. The walking may include determining a match result for…

METHOD AND AN APPARATUS FOR INTERUPT COLLECTING AND REPORTING

Granted: July 2, 2015
Application Number: 20150186308
A method and a system embodying the method for interrupt collecting an reporting, comprising: storing for each of at least one interrupt a status indicator, an enable status, and an interrupt delivery information in a first structure; storing for each of the at least one interrupt at least an indicator of one or more entities to execute an interrupt handler routine in a second structure; and reporting one of the at least one interrupt to the one or more entities to execute an interrupt…

METHOD AND AN APPARATUS FOR CONVERTING INTERRUPTS INTO SCHEDULED EVENTS

Granted: July 2, 2015
Application Number: 20150186306
A method and an apparatus embodying the method for converting interrupts into scheduled events, comprising receiving an interrupt at an interrupt controller; determining a vector number for the interrupt; determining properties of an interrupt work in accordance with the vector number; and scheduling the interrupt work in accordance with the properties of the interrupt work, is disclosed.

METHOD AND AN APPARATUS FOR VIRTUALIZATION OF A QUALITY-OF-SERVICE

Granted: June 25, 2015
Application Number: 20150180793
A method and a system embodying the method for virtualization of a quality of service, comprising associating a packet received at an interface with an aura via an aura identifier; determining configuration parameters for the aura; determining a pool for the aura; determining the state of the pool resources, the resources comprising a level of buffers available in the pool and a level of buffers allocated to the aura; and determining a quality of service for the packet in accordance with…

SYSTEM AND A METHOD FOR A REMOTE DIRECT MEMORY ACCESS OVER CONVERGED ETHERNET

Granted: June 25, 2015
Application Number: 20150178242
A method and a system embodying the method for receiving a remote direct memory access packet comprising an opaque data, a virtual address, and a payload at a virtual network interface card that generated the opaque data; reconstructing a stream identifier by separating the opaque data into an encrypted stream identifier and a first digest; decrypting the encrypted stream identifier; verifying the decrypted stream identifier using the first digest; providing the verified stream…

METHOD AND AN APPARATUS FOR MEMORY ADDRESS ALLIGNMENT

Granted: June 25, 2015
Application Number: 20150178195
A method and a system embodying the method for a memory address alignment, comprising configuring one or more naturally aligned buffer structure(s); providing a return address pointer in a buffer of one of the one or more naturally aligned buffer structure(s); determining a configuration of the one of the one or more naturally aligned buffer structure(s); applying a modulo arithmetic to the return address and at least one parameter of the determined configuration; and providing a stacked…

VIRTUALIZED NETWORK INTERFACE FOR REMOTE DIRECT MEMORY ACCESS OVER CONVERGED ETHERNET

Granted: June 18, 2015
Application Number: 20150172055
A method and a system embodying the method for generating an opaque data comprising a stream identifier, comprising encrypting at least part of a stream identifier with a first secret random data to provide an encrypted stream identifier; generating a digest by applying a cryptographic hash to at least the at least the part of the stream identifier; and combining the encrypted stream identifier with the digest, is disclosed Additionally, a method and a system embodying the method for…

VIRTUALIZED NETWORK INTERFACE FOR LOCKDOWN AND OVERLAY OF DATA IN TRANSMITTED PACKETS

Granted: June 18, 2015
Application Number: 20150172180
A method and a system embodying the method for data lockdown and data overlay in a packet to be transmitted, comprising providing a first and a second masks comprising one or more position(s) and a data value at each of the one or more position(s); aligning the masks with the packet; comparing the data value at each of the one or more position(s) in the first mask with the data value at the one or more aligned position(s) in the packet; optionally replacing a data value at each of the…