Patent classifications
H04L45/74591
FORWARDING PORT ASSIGNMENT FOR DATA PACKET
In some examples, a method includes determining a hash value for a received data packet, determining whether the determined hash value matches a hash value for an entry in a hash-to-port mapping table, determining whether a port mapping age associated with the matched entry satisfies an age criteria, and assigning a forwarding port for the received data packet based on the determination of whether the port mapping age associated with the matched entry satisfies the age criteria.
EARLY FREEING OF A SNOOP MACHINE OF A DATA PROCESSING SYSTEM PRIOR TO COMPLETION OF SNOOP PROCESSING FOR AN INTERCONNECT OPERATION
In at least one embodiment, a multiprocessor data processing system includes multiple vertical cache hierarchies supporting a plurality of processor cores, a system memory, and an interconnect fabric. In response to a first cache memory snooping on the interconnect fabric a request of an interconnect operation of a second cache memory, the first cache memory allocates a snoop machine to service the request. Responsive to the snoop machine completing its processing of the request and prior to the first cache memory receiving a systemwide coherence response of the interconnect operation, the first cache memory allocates an entry in a data structure to handle completion of processing for the interconnection operation and deallocates the snoop machine. The entry of the data structure protects transfer of coherence ownership of a target cache line from the first cache memory to the second cache memory during a protection window extending at least until the systemwide coherence response is received.
PERSONALIZED CONTENT DISTRIBUTION
Systems and methods for content provisioning are disclosed herein. The system can include memory having a content database, a task database, and a user profile database. The system can include a user device having a first network interface and a first I/O subsystem. The system can include a server that can: receive a user identifier from the user device; retrieve user information from the user profile database, which user information identifies one or several attributes of the user; retrieve user task data from the task database, which user task data identifies a plurality of tasks for completion by the user; automatically generate prioritization data for the plurality of tasks identified by the user task data; select a task based on the prioritization data; and send content relating to the selected task to the user device.
Systems for building data structures with highly scalable algorithms for a distributed LPM implementation
Described are programmable IO devices configured to perform operations. These operations comprise: determining a set of range-based elements for a network; sorting the set of range-based elements according to a global order among the range-based elements; generating an interval table from the sorted range-based elements; generating an interval binary search tree from the interval table; propagating data stored in subtrees of interior stages of the interval binary search tree to subtrees of a last stage of the interval binary search tree such that the interior stages do not comprise data; converting the interval binary search tree to a Pensando Tree; compressing multiple levels of the Pensando Tree into cache-lines; and assembling the cache-lines in the memory unit such that each stage can compute an address of a next-cache line to be fetched by a next stage.
Location-based network routing
Apparatus and method for routing packets in a computer network. A network switch for routing packets in a computer network includes a plurality of ports for communicative connection of computing devices to the switch, and routing logic. The routing logic is configured to extract, from a packet received via a first of the ports, a destination address that identifies a destination device to which the packet is directed; to extract from the destination address a switch ID value and a port ID value; to compare the switch ID value extracted from the destination address to a switch ID value identifying the network switch; and to transmit the packet via a second of the ports of the network switch corresponding to the port ID value based on the switch ID value extracted from the destination address being equal to the switch ID value identifying the network switch.
Apparatus, system, and method for optimizing forwarding information bases on network devices
A method may include (1) identifying a set of prefixes that (A) facilitate forwarding traffic within a network and (B) are organized as a tree data structure in connection with a table stored on a network device, (2) identifying, in the set of prefixes organized as the tree data structure, a parent prefix and a child prefix that corresponds to the parent prefix, (3) determining that the parent prefix and the child prefix share a certain number of most-significant bits in common with one another, (4) determining that the parent prefix and the child prefix share a forwarding behavior in common with one another and then, in response to determining that the parent prefix and the child prefix share the certain number of most-significant bits and the forwarding behavior in common with one another, (5) compressing the table stored on the network device by merging the child prefix with the parent prefix within the table. Various other apparatuses, systems, and methods are also disclosed.
Single Double Cuckoo Hash
In a network element a decision apparatus has a plurality of multi-way hash tables of single size and double size associative entries. A logic pipeline extracts a search key from each of a sequence of received data items. A hash circuit applies first and second hash functions to the search key to generate first and second indices. A lookup circuit reads associative entries in the hash tables that are indicated respectively by the first and second indices, matches the search key against the associative entries in all the ways. Upon finding a match between the search key and an entry key in an indicated associative entry. A processor uses the value of the indicated associative entry to insert associative entries from a stash of associative entries into the hash tables in accordance with a single size and a double size cuckoo insertion procedure.
Protocol-independent receive-side scaling
A system and method for protocol independent receive side scaling (RSS) includes storing a plurality of RSS hash M-tuple definitions, each definition corresponding to one of a set of possible protocol header combinations for routing an incoming packet, the set of possible protocol header combinations being modifiable to include later-developed protocols. Based on initial bytes of the incoming packet, a pattern of protocol headers is detected, and used to select one of the plurality of RSS hash M-tuple definitions. The selected RSS hash M-tuple definition is applied as a protocol-independent arbitrary set of bits to the headers of the incoming packet to form a RSS hash M-tuple vector, which is used to compute a RSS hash. Based on the RSS hash, a particular queue is selected from a set of destination queues identified for the packet, and the packet is delivered to the selected particular queue.
Access control list-based port mirroring techniques
Embodiments presented herein describe techniques for selecting incoming network frames to be mirrored using an access control list. According to one embodiment, an incoming frame is received. Upon determining that the incoming frame matches an entry in the access control list, a mirror field of the entry is evaluated. The mirror field identifies at least one mirroring action to perform on the frame. The identified mirroring action is performed on the frame.
Generating entries in a content addressable memory of a network device
In some implementations, a method is provided. The method includes determining a plurality of field sets and a plurality of field set groups. Each field set of the plurality of field sets comprises one or more packet characteristics. Each field set group of the plurality of field set groups comprises one or more field sets from the plurality of field sets. Each field set group is associated with one or more packet classifier rules. The method also includes determining a set of encoded labels for the plurality of field sets based on a set of rule costs and intersections between field set groups. Each encoded label of the set of encoded labels is associated with a respective field set of the plurality of field sets. The method further includes generating a plurality of entries in a memory based on the set of encoded labels. At least one entry comprises an encoded label from the set of encoded labels and at least a portion of a packet classifier rule.