US20120155267A1 - Selection of receive-queue based on packet attributes - Google Patents
Selection of receive-queue based on packet attributes Download PDFInfo
- Publication number
- US20120155267A1 US20120155267A1 US13/302,285 US201113302285A US2012155267A1 US 20120155267 A1 US20120155267 A1 US 20120155267A1 US 201113302285 A US201113302285 A US 201113302285A US 2012155267 A1 US2012155267 A1 US 2012155267A1
- Authority
- US
- United States
- Prior art keywords
- data packet
- receive
- queue
- qosc
- index
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
Definitions
- the invention relates generally to a method for operating a network processor.
- the invention relates to a computer program product, method, and system for selecting a receive-queue for a packet out of a stream of data packets.
- the invention relates further to a network processor and a system adapted for a programmable selection of receive-queue based on multiple attributes found in a packet.
- virtualization implies that a receive-queue must be selected in a pool of queues belonging to a given logical port.
- deep packet processing calls for a queue selection dependent on information potentially extracted anywhere in the packet including the payload of the data packet.
- a method, a system, and a computer program product for operating a network processor.
- the network processor processing a received data packet by reading a flow identification in the data packet; determining a quality of service criteria (QoSC) for the data packet; mapping the flow identification and the QoSC into an index for selecting a receive-queue for routing the data packet; and utilizing the index to route the data packet to the receive-queue.
- QoSC quality of service criteria
- FIG. 1 shows a block diagram of an embodiment of the invention described herein.
- FIG. 2 illustrates a block diagram of an embodiment of the invention in a network processor.
- FIG. 3 illustrates a more detailed block diagram of an embodiment in a network processor.
- FIG. 4 shows a block diagram illustrating an embodiment of building an index for receive-queues.
- FIG. 5 illustrates a block diagram of an overview on the invention described herein in a network processor.
- FIG. 6 illustrates a block diagram of an embodiment of the invention described herein as a network processor as part of an end-point device.
- FIG. 7 shows a more detailed flow chart of an embodiment of the invention described herein.
- IP protocol internet protocol
- IPv4 IPv6
- IPv6 IP protocol
- the hashing of a flow identification (id) from a data packet may be performed by pico-code or by hardware.
- the network processor may be built as a single integrated chip.
- Network processor denotes a special purpose processor required for high-speed and high-throughput networks. It may be in, for example, a router, a switch, an intrusion detection device, a session border controller, a network monitoring system and the like, or also in an end point network device, such as an intranet appliance in a cloud computing environment.
- the network processor has specific functionality in order to respond and react to incoming as well as outbound network traffic.
- Network processors may have comparable computing units, e.g., a CPU, as a general purpose or controlling processor. On the other hand, network processors may have dedicated units for pattern matching for an identification of specific patterns in data streams. Network processors may also have functions that may be implemented using software elements. In contrast to general purpose processors, the controlling software elements inside the network processors may be pico-code.
- Data packet denotes a sequence of, e.g., bytes in a data stream.
- a protocol such as TCP/IP (transmission control protocol/internet protocol) may be based on data packets of a certain length having defined positions within the data packet for specific codes.
- Receive-queue denotes a storage area dedicated for storing incoming data packets or bytes or series of bytes of data, i.e., data words.
- a receiving device e.g., a network processor, may have several receive-queues to differentiate data packets with different priorities.
- High priority data packets may be stored in a high-priority-receive-queue before it may be further processed, e.g., re-transmitted, analyzed, etc.
- a typical mode of operation may be in processing data in a high-priority-receive-queue as long as data is in such a queue. Only if the high-priority-receive-queue is empty, data packets of other, lower priority-receive-queues may be further processed.
- Hashing denotes a usage of a hash function.
- a hash function is any well-defined procedure or mathematical function that converts a large, possibly variable-sized amount of data into a small datum, usually a single integer that serves as an index to an array.
- the values returned by a hash function are called hash values, hash codes, hash sums, checksums or simply hashes.
- Hash codes are often used to speed-up table lookup tasks.
- a hasher denotes a hashing function that may be implemented in hardware or software.
- QoS Quality of service
- Classification criterion function This term denotes a function used for a classification of data packets supporting the process of selecting a proper receive-queue for a data packet.
- QoSC is used to indicate the combination of classification criteria including QoS used for selecting a proper receive-queue for a data packet.
- Combination of classification criteria functions This term denotes that several criteria functions are available and are—in a combined way—used for selecting a receive-queue.
- a QoS specification can be handled separately or combined.
- TCAM The term TCAM denotes a ternary content addressable memory.
- a CAM content addressable memory
- a binary CAM is the simplest type of CAM which uses data search words consisting entirely of 1s and 0s.
- TCAM allows a third matching state of “X” or “Don't Care” for one or more bits in the stored data word, thus adding flexibility to a search process.
- Physical port denotes a physical connection for incoming data.
- a plurality of ports may be provided.
- Each physical port may be able to handle a plurality of virtual or logical ports.
- Logical port The term logical port denotes a virtual port belonging to a physical port. Each physical port may be able to handle a plurality of a logical port(s). Each incoming data packet is associated to a partition or logical port. If, e.g., four physical ports are implemented and four logical ports are implemented, a total number of 16 logical ports are handled.
- Logical port configuration table This term denotes a translation mechanism to translate data received from a parser into an index base for a receive queue address, an offset for QoS data specifying how many bit to be used from a QoS signal as well as specifying which and how additional bit from classification criteria function are used.
- Typical networks like e.g., those being based on the TCP/IP protocol, transmit information over networks based on data packets.
- Streams of data packets are sent from one device or server over linking devices, like e.g., switches and/or routers, to other devices or servers.
- the devices include any network attached device including servers, PCs, storage area network systems, printers, scanners, dedicated network equipment, or any other network attachable device.
- the network may be a wired network, a wireless network or a mix of both.
- incoming packets are parsed by a parser, depending on information found during the parsing process, and directed to dedicated receive-queues.
- the direction into different receive-queues is based on several criteria. E.g., packets with a high priority, e.g., those for a voice-over-IP link, are directed into a high priority receive-queue for a fast, further processing. Packets that are not time critical are directed to a low priority receive-queue, etc.
- a selection of a receive-queue is based on a combination of a flow identifier and a QoS parameter found in data packet headers.
- a method for operating a network processor comprises receiving a stream of data packets and providing receive-queues, adapted to store received data packets. Furthermore, the method comprises selecting a receive-queue out of the set of receive-queues for a data packet. The selecting is based on a combination of classification functions and a QoS function. One of the classification functions comprises a hashing of a flow identification, wherein the flow identification is in the received data packet.
- the hashing function may be performed by a hasher utilized for other purposes anyway.
- an existing hash function may dynamically be repurposed for selecting a receive-queue.
- a network processor may also be seen as being similar to a general purpose processor in the sense of executing software instructions.
- a network processor comprises a receiving unit adapted for receiving a stream of data packets. Moreover the network processor comprises receive-queues adapted to store received data packets. Additionally, the network processor comprises a selecting unit adapted for selecting a receive-queue out of the receive-queues for a data packet in the set of data packets. The selection is based on a combination of classification functions and a QoS function. One of the classification functions comprises a hashing of a flow identification in the received data packet.
- the above-described method for operating a network processor offers some advantages.
- the separation and combination of different classification criteria functions together with a service criterion function allow for a very flexible and elegant way to select a receive-queue.
- a hashing of a flow-id in the data packet beside a QoS criterion improves the flexibility in receive-queue selection.
- the classification functions comprises looking-up a TCAM in the received data packet. This direct usage of a TCAM match for a pattern in a data packet increases the flexibility of identifying a receive-queue even more.
- the classification functions uses a queue identifier received from a parser parsing the stream of data packets. This direct usage of a queue identifier found by the parser in a data packet increases the flexibility of identifying or selecting a receive-queue.
- the classification function looking-up a TCAM has a higher priority than the classification criteria function hashing of a flow identification. In the case of a TCAM match, the hash value is overwritten.
- the classification function using a queue identifier has a higher priority than the classification function looking-up a TCAM. If the queue identifier is directly found in the received data packets, it overwrites any receive-queue identification data found in a TCAM match.
- the selecting utilizes an index base from a logical port configuration table (LPCT), based on a logical port (LP) identification information received from the parser, for building an index address into a queue table for storing an identification number or position of the receive-queue.
- LPCT logical port configuration table
- a configuration allowing a base address as well as one or more offsets to the base address for identifying a correct or optimal receive-queue address has been proven to deliver the highest degree of design freedom of a network processor. This may also be reflected in an embodiment, wherein the classification functions are used to build an offset to the index base.
- a second offset to the base index is based on the QoS function.
- it is configurable how many bits of results of each of the classification criteria functions are used to build the index into the queue table. This illustrates the flexibility of the method. It may be configured, for example, in such a way that only the top five bits are used. However, the number of bits used is configurable.
- the results of the classification functions are connected to a multiplexer. This solution allows for choosing the input having a higher priority. If, e.g., there is a TCAM match detected, the TCAM result is used instead of a hash function result.
- the index into the queue table is based on the base index and a combined offset built from the QoS function and the classification functions. This combined offset together with the base index—combined with other features mentioned above—demonstrate again excellent flexibility and configurability for operating a network processor.
- a network device for connecting a plurality of input connections to a plurality of output connections.
- the network device comprises the network processor as described above.
- the network device may be, e.g., a router, a switch, an intrusion detection device, a session boarder controller, a network monitoring system and the like or an end point network device, such as an intranet appliance in a cloud computing environment like, e.g., a client or a server computer system.
- embodiments may take the form of an entire hardware implementation, an entire software embodiment or an embodiment containing both, hardware and software elements.
- the invention may be implemented in software which includes, but is not limited to, firmware, resident software and microcode and/or pico-code.
- a data processing program for execution in a data processing system may be provided comprising software code portions for performing the method, as described herein, when the program is run on a data processing system.
- the data processing system may be a computer or computer system attached to the asset management system via communication means.
- embodiments may take the form of a computer program product, accessible from a computer-usable or computer-readable medium providing program code for use, by or in connection with a computer or any instruction execution system, in particular a network processor.
- a computer-usable or computer-readable medium may be any apparatus that may contain means for storing, communicating, propagating or transporting the program for use, by or in a connection with the instruction execution system, apparatus, or device.
- the medium may be an electronic, magnetic, optical, electromagnetic, infrared or a semi-conductor system for a propagation medium.
- Examples of a computer-readable medium may include a semi-conductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
- Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), DVD and Blu-Ray-Disk.
- FIG. 1 illustrates a method 100 for operating a network processor.
- the method 100 comprises receiving, 102 , a stream of data packets and providing, 104 , receive-queues adapted to store received data packets. Furthermore, the method comprises selecting, 106 , a receive-queue out of the receive-queues for one of the data packets. The selecting is based on a combination of classification functions and a QoS function.
- One of the classification functions comprises a hashing of a flow identification, wherein the flow identification is in the one received data packet.
- FIG. 2 illustrates an example network processor 200 for which the invention described herein may be implemented.
- data packets 201 come in from a network (not shown).
- a plurality of physical ports are provided, in an example embodiment four ports are provided. Each physical port may be adapted to handle a plurality of virtual ports. In one embodiment, four virtual ports per each physical port is configured.
- the data ports may be adapted to running in 10 Gigabit networks. They may also be functional in one Gigabit and 100 Megabit networks.
- the incoming data packets 201 are received via line 230 by a receiving unit 204 having at least three components: a register horizontal left (HR) 208 , a register horizontal right (HL) 206 and a status register 214 .
- HR register horizontal left
- HL register horizontal right
- a data packet is received by register horizontal right 208 .
- the status register 214 receives data. After the data is received by register horizontal right 208 they are passed on to register horizontal left 206 . Data packets 201 exit this data path via bus 202 for further processing. All data packets are exposed to the parser 216 via bus 210 . Also the status at an end of a data packet is exposed to the parser via bus 212 . In one embodiment, a 128-bit wide data path is used. In this case, register 206 and 208 are each 16 byte registers so that the parser 216 is exposed to a 32-byte sliding window of packet data.
- the block 218 comprises a series of so-called action machines or in more general words hardware accelerators 220 , 222 , 224 , 226 , 228 .
- Block 218 is in a bidirectional data exchange with the parser 216 via link 230 . It is noted that far more data traffic may flow from the parser to the accelerators in order to release the parser from specific workloads. All links may be more than one bit wide.
- the action machines or hardware accelerators 220 , 222 , 224 , 226 , 228 support dedicated functions required in the network processors that may be either repetitive and/or require a high calculation performance.
- the parser 216 function as well as the functions of the action machines 220 , 222 , 224 , 226 , 228 may be based on unit specific pico-code. Although being pico-code, it is loaded into the processor and thus updated if required. Examples of action machines comprise a hashing action machine, a TCAM action machine, QoS action machine, dedicated filters, markers, etc.
- the action machines may be dedicated to release the parser in regard to specific tasks.
- the parser is implemented as a finite state machine (FSM). A split between the parser and specific action machine enables parallel processing, and thus the ability to handle high-speed network traffic.
- FSM finite state machine
- FIG. 3 illustrates an exemplary embodiment as part of the network processor supporting the method of the invention described herein.
- Three stages separated by dotted lines 302 are shown: a virtualization stage 304 , a QoS stage 306 and a classification stage 308 .
- Via line 310 logical port IDs are received by a logical port conversion table 312 (LPCT).
- the LPCT block has three outputs: an index base 314 , a QoS select signal 316 and a classification offset select signal 318 .
- the Qos block 320 receives QoS bits from the parser via line 322 .
- An output of the QoS block 320 is directed to a multiplexer 326 .
- the offset select signal 318 is linked to multiplexer 328 , which receives a flow-id offset signal 330 from a multiplexer 332 .
- the multiplexer 332 receives input from several action machines: a hasher 334 , a TCAM action machine 336 , and a direct queue address function 338 .
- the hasher 334 receives an n-tuple from the parser via line 340 .
- the TCAM action machine 336 receives packet fields from the parser via line 342 .
- the direct queue address function 338 receives direct queue addresses from the parser via line 344 . All lines coming to the different stages in FIG. 2 are illustrated in a combined manner by reference numeral 230 of FIG. 2 .
- An adder 346 adds the queue address offset coming in via line 314 , the offset coming in by line 348 and the offset coming in by line 350 from multiplexer 328 .
- the final index into the queue table 358 is selected by the multiplexer 352 .
- a decision regarding which index is used is based on a control bit (not shown) provided by queue table address function 338 .
- the queue table 358 contains queue numbers issued by line 360 for subsequent usage.
- FIG. 4 illustrates a more detailed view on an embodiment of the combined entities involved in the receive-queue selection.
- Blocks 336 , 334 , 320 represent a TCAM functional block, a hasher, and a QoS functional block as in FIG. 3 , respectively.
- Block 402 represents a configuration function comprising a logical port configuration table 404 having seven entries represented by horizontal lines. However, any other number of entries is as good as a table with seven entries.
- each horizontal field of the logical port configuration table 404 represents five bits.
- busses 406 and 408 are each five bits wide.
- Connection 414 is just one bit wide for a TCAM match signal controlling the multiplexer 416 .
- the multiplexer 416 selects the signal on line 412 from the TCAM block 336 in case of a TCAM match. Otherwise, the signal on line 410 coming from the hasher 334 is selected.
- the output of the hasher is typically 32 bit wide, as it may be required for other purposes within the network processor. However, for this example embodiment only the five most significant bits are used for further processing, in particular as input for multiplexer 416 . Consequently line 418 also represent a five bit wide signal. This is represented by the five shaded boxes 420 composed of lines from a lower left side to an upper right side.
- Parts of line 408 in particular 3 bits represented by line 422 , control how many bits are used from signal 418 .
- a masking unit 426 is controlled by line 422 which uses 3 bits out of the 5 bit wide line 408 .
- the remaining two bits from line 408 is represented by link 424 . They are used to specify a masking of 0 to 3 bits by masking unit 434 as well as a shift-left of the same number of bits by shift unit 432 .
- an output of masking unit 426 which of five bits wide, is represented by block 428 , showing two active bits with stripes to the right.
- an output of the shifting unit 432 has the relevant bits on position two and three counted from the right side.
- Signal 424 controls mask unit 434 in which a 3 bit wide output 436 of the QoS function 320 is masked.
- the striped boxes 438 showing stripes from top left down to bottom right, indicates three priority bits from the QoS function 320 .
- After a masking of the output signal from QoS function 320 the number of active bits is reduced, which is illustrated by the example with one active priority bit as indicated by 440 .
- Both outputs, from shift unit 432 shown as block 430 —and from mask unit 434 are 5 bit wide and are input to an or-gate 442 .
- the output of the or-gate 442 is also 5 bit wide.
- the adder 444 then becomes the base index which comes via line 406 and the offset as a result of the “or-ing” by gate 442 is fed as a total offset 446 to receive-queue selection table.
- the total offset is added to a base address giving the final entry to the receive-queue selection table via line 448 .
- This table is a 32 by 8 bit register holding pointers to the receive-queues to be selected.
- Block 446 illustrates the final combination of bits in the five bit wide input field to adder 444 .
- Line 448 five bit wide—carry the signal for selecting the receive-queue.
- FIG. 5 shows the network processor 500 comprising a receiving unit 202 adapted for receiving a stream of data packets, receive-queues 504 —of which two is shown—adapted to store received data packets, and a selecting unit 506 adapted for selecting a receive-queue out of the receive-queues for one out of the data packets based on a combination of classification functions and a QoS function, wherein one of the classification functions comprises a hashing of a flow identification comprised in the one received data packet.
- Embodiments of the invention may partly be integrated in virtually any type of computer, regardless of the platform being used suitable for storing and/or executing program code, in particular micro- or pico-code.
- a computer system 600 may include one or more processor(s) 602 with one or more cores per processor, associated memory elements 604 , an internal storage device 606 (e.g., a hard disk, an optical drive such as a compact disk drive or digital video disk (DVD) drive, a flash memory stick, etc.), and numerous other elements and functionalities typical of today's computers (not shown).
- the memory elements 604 may include a main memory, employed during actual execution of the program code, and a cache memory, which provides temporary storage for at least some program code or data in order to reduce the number of times, code must be retrieved from external bulk storage 616 for execution. Elements inside the computer 600 are linked together by means of a bus system 618 with corresponding adapters. Additionally, a network processor 600 may be attached to the bus system 618 .
- the computer system 600 may also include input means, such as a keyboard 608 , a mouse 610 , or a microphone (not shown). Furthermore, the computer 600 may include output means, such as a monitor 612 [e.g., a liquid crystal display (LCD), a plasma display, a light emitting diode display (LED), or a cathode ray tube (CRT) monitor].
- the computer system 600 is connected to a network (e.g., a local area network (LAN), a wide area network (WAN), such as the Internet, or any other similar type of network, including wireless networks via a network interface connection 614 which may also comprise the network processor 500 . This allows a coupling to other computer systems.
- LAN local area network
- WAN wide area network
- one or more elements of the aforementioned computer system 600 may be located at a remote location and connected to the other elements over a network. Further, embodiments of the invention may be implemented on a distributed system having a plurality of nodes, where each portion of the invention may be located on a different node within the distributed system.
- the node corresponds to a computer system.
- the node may correspond to a processor with associated physical memory.
- the node may alternatively correspond to a processor with shared memory and/or resources or a smart phone.
- a computer readable medium such as a compact disk (CD), a diskette, a tape, or any other computer readable storage device and are loaded to the computer system 600 and also partly to the network processor 500 as pico-code.
- FIG. 7 shows a flowchart 700 of how a receive-queue address can be built. References are made to FIG. 4 which shows device elements for performing the method.
- Step 702 an index base is built by a configuration function.
- Step 704 represents selecting either a TCAM 336 output, in case there has been a TCAM match, or the output of the hasher 334 . Only the top five bits ( 5 MSBs) of each output are used in this example embodiment.
- step 706 three bits from the configuration function 402 are used to decide how to mask the result of step 702 .
- step 708 a result is built by QoS function 320 .
- the result of this step delivers a three bit result.
- step 710 it is decided—based on two bits from the configuration function 402 —how many bits of the output of the QoS function 320 are masked. The same two bits are used to perform a shifting function on the masked results of step 702 .
- step 712 the results of the steps 706 and 708 are combined by a logical or-function.
- step 714 the result of the or-function are added to a base index being delivered by the configuration function. This result is used as an index to a queue table containing receive-queue addresses, step 716 .
- step 718 the entry of the queue table is selected and used as an address for the selected receive-queue.
- step 720 the received data packet is stored in the selected receive-queue.
Abstract
According to embodiments of the invention, there is provided a method, a system, and a computer program product for operating a network processor. The network processor processing a received data packet by reading a flow identification in the data packet; determining a quality of service criteria (QoSC) for the data packet; mapping the flow identification and the QoSC into an index for selecting a receive-queue for routing the data packet; and utilizing the index to route the data packet to the receive-queue.
Description
- This invention claims priority to the foreign application EP10306438.2 filed Dec. 16, 2010 in the European Patent office.
- 1. Field
- The invention relates generally to a method for operating a network processor. In particular, the invention relates to a computer program product, method, and system for selecting a receive-queue for a packet out of a stream of data packets. The invention relates further to a network processor and a system adapted for a programmable selection of receive-queue based on multiple attributes found in a packet.
- 2. General Background
- Today's computing environments, in particular those of large data centers like cloud computing data centers, require a high level of switching capacities for connecting a large number of server computers with each other. The proliferation of standard servers and the growing usage of virtualization technology increase this need even more.
- With the advent of virtualization of network adapters, and the new requirement for deep packet inspection, a more complete and flexible selection of receive-queues is needed. On one hand, virtualization implies that a receive-queue must be selected in a pool of queues belonging to a given logical port. On the other hand, deep packet processing calls for a queue selection dependent on information potentially extracted anywhere in the packet including the payload of the data packet.
- Therefore, there is a need for a dynamic, flexible, configurable and re-configurable method to handle the selection of receive-queues in network processors.
- According to embodiments of the invention, there is provided a method, a system, and a computer program product for operating a network processor. The network processor processing a received data packet by reading a flow identification in the data packet; determining a quality of service criteria (QoSC) for the data packet; mapping the flow identification and the QoSC into an index for selecting a receive-queue for routing the data packet; and utilizing the index to route the data packet to the receive-queue.
- The above-mentioned features of the present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by taken in conjunction with the accompanying drawings wherein like reference numerals denote like elements and in which embodiments of the invention are described, by way of example only, and with reference to the following drawings:
-
FIG. 1 shows a block diagram of an embodiment of the invention described herein. -
FIG. 2 illustrates a block diagram of an embodiment of the invention in a network processor. -
FIG. 3 illustrates a more detailed block diagram of an embodiment in a network processor. -
FIG. 4 shows a block diagram illustrating an embodiment of building an index for receive-queues. -
FIG. 5 illustrates a block diagram of an overview on the invention described herein in a network processor. -
FIG. 6 illustrates a block diagram of an embodiment of the invention described herein as a network processor as part of an end-point device. -
FIG. 7 shows a more detailed flow chart of an embodiment of the invention described herein. - Embodiments of the invention are described below with reference to drawings in detail.
- While the depicted embodiments describe received data packets as complying with a network standard, e.g., the IP protocol (internet protocol) and more particularly IPv4 or IPv6, the invention described herein may also be applicable to other network protocols based on data packets. The hashing of a flow identification (id) from a data packet may be performed by pico-code or by hardware. The network processor may be built as a single integrated chip.
- In the context of this application and the embodiments of the invention described herein, the following principle terms have been used:
- Network processor—The term network processor denotes a special purpose processor required for high-speed and high-throughput networks. It may be in, for example, a router, a switch, an intrusion detection device, a session border controller, a network monitoring system and the like, or also in an end point network device, such as an intranet appliance in a cloud computing environment. The network processor has specific functionality in order to respond and react to incoming as well as outbound network traffic. Network processors may have comparable computing units, e.g., a CPU, as a general purpose or controlling processor. On the other hand, network processors may have dedicated units for pattern matching for an identification of specific patterns in data streams. Network processors may also have functions that may be implemented using software elements. In contrast to general purpose processors, the controlling software elements inside the network processors may be pico-code.
- Data packet—The term data packet denotes a sequence of, e.g., bytes in a data stream. A protocol such as TCP/IP (transmission control protocol/internet protocol) may be based on data packets of a certain length having defined positions within the data packet for specific codes.
- Receive-queue—The term receive-queue denotes a storage area dedicated for storing incoming data packets or bytes or series of bytes of data, i.e., data words. A receiving device, e.g., a network processor, may have several receive-queues to differentiate data packets with different priorities. High priority data packets may be stored in a high-priority-receive-queue before it may be further processed, e.g., re-transmitted, analyzed, etc. A typical mode of operation may be in processing data in a high-priority-receive-queue as long as data is in such a queue. Only if the high-priority-receive-queue is empty, data packets of other, lower priority-receive-queues may be further processed.
- Hashing, Hash Function, Hash Code—The term hashing denotes a usage of a hash function. A hash function is any well-defined procedure or mathematical function that converts a large, possibly variable-sized amount of data into a small datum, usually a single integer that serves as an index to an array. The values returned by a hash function are called hash values, hash codes, hash sums, checksums or simply hashes. Hash codes are often used to speed-up table lookup tasks. A hasher denotes a hashing function that may be implemented in hardware or software.
- Quality of service (QoS)—This term denotes a specific code as part of a data packet specifying a need for a high priority for further processing. This may often be the case for streaming video or streaming audio data or IP telephony in order to ensure that there be no break or interruptions in the stream of video or audio data. In an IP packet the term TOS (type of service) may be used instead of QoS. A TOS code may be part of an IP-header section.
- Classification criterion function—This term denotes a function used for a classification of data packets supporting the process of selecting a proper receive-queue for a data packet. There may be a plurality of criteria functions beside a QoS. These additional classification criteria functions may, for example, be based on a hardware accelerator that hashes a flow-id received from a parser, a ternary CAM that performs a look-up of any key assembled by the parser to identify a flow-id, or a direct queue address delivered by the parser. In this case, specific registers may be used that are available to the parser for providing an offset or an index under a microcode/pico-code control. The term QoSC is used to indicate the combination of classification criteria including QoS used for selecting a proper receive-queue for a data packet.
- Combination of classification criteria functions—This term denotes that several criteria functions are available and are—in a combined way—used for selecting a receive-queue. A QoS specification can be handled separately or combined.
- TCAM—The term TCAM denotes a ternary content addressable memory. A CAM (content addressable memory) is a special type of computer memory used in certain high-speed searching applications. It may also be known as associative memory, associative storage, or associative array. A binary CAM is the simplest type of CAM which uses data search words consisting entirely of 1s and 0s. TCAM allows a third matching state of “X” or “Don't Care” for one or more bits in the stored data word, thus adding flexibility to a search process.
- Physical port—The term physical port denotes a physical connection for incoming data. A plurality of ports may be provided. Each physical port may be able to handle a plurality of virtual or logical ports.
- Logical port—The term logical port denotes a virtual port belonging to a physical port. Each physical port may be able to handle a plurality of a logical port(s). Each incoming data packet is associated to a partition or logical port. If, e.g., four physical ports are implemented and four logical ports are implemented, a total number of 16 logical ports are handled.
- Logical port configuration table—This term denotes a translation mechanism to translate data received from a parser into an index base for a receive queue address, an offset for QoS data specifying how many bit to be used from a QoS signal as well as specifying which and how additional bit from classification criteria function are used.
- Typical networks, like e.g., those being based on the TCP/IP protocol, transmit information over networks based on data packets. Streams of data packets are sent from one device or server over linking devices, like e.g., switches and/or routers, to other devices or servers. The devices include any network attached device including servers, PCs, storage area network systems, printers, scanners, dedicated network equipment, or any other network attachable device. The network may be a wired network, a wireless network or a mix of both.
- In a typical embodiment of the invention described herein, incoming packets are parsed by a parser, depending on information found during the parsing process, and directed to dedicated receive-queues. The direction into different receive-queues is based on several criteria. E.g., packets with a high priority, e.g., those for a voice-over-IP link, are directed into a high priority receive-queue for a fast, further processing. Packets that are not time critical are directed to a low priority receive-queue, etc.
- A selection of a receive-queue is based on a combination of a flow identifier and a QoS parameter found in data packet headers.
- Several approaches are described to handle priorities of data packets and a receive-queue selection.
- In one embodiment, a method for operating a network processor is provided. The method comprises receiving a stream of data packets and providing receive-queues, adapted to store received data packets. Furthermore, the method comprises selecting a receive-queue out of the set of receive-queues for a data packet. The selecting is based on a combination of classification functions and a QoS function. One of the classification functions comprises a hashing of a flow identification, wherein the flow identification is in the received data packet.
- In particular, the hashing function may be performed by a hasher utilized for other purposes anyway. Thus, an existing hash function may dynamically be repurposed for selecting a receive-queue. Although dedicated to a special task a network processor may also be seen as being similar to a general purpose processor in the sense of executing software instructions.
- According to another embodiment a network processor is provided. The network processor comprises a receiving unit adapted for receiving a stream of data packets. Moreover the network processor comprises receive-queues adapted to store received data packets. Additionally, the network processor comprises a selecting unit adapted for selecting a receive-queue out of the receive-queues for a data packet in the set of data packets. The selection is based on a combination of classification functions and a QoS function. One of the classification functions comprises a hashing of a flow identification in the received data packet.
- The above-described method for operating a network processor offers some advantages. The separation and combination of different classification criteria functions together with a service criterion function allow for a very flexible and elegant way to select a receive-queue. In particular, a hashing of a flow-id in the data packet beside a QoS criterion improves the flexibility in receive-queue selection.
- These advantages are also achieved by the network processor and the system adapted for a programmable selection of a receive-queue based on multiple attributes found in a packet.
- According to one embodiment of the method, the classification functions comprises looking-up a TCAM in the received data packet. This direct usage of a TCAM match for a pattern in a data packet increases the flexibility of identifying a receive-queue even more.
- In another embodiment of the method, the classification functions uses a queue identifier received from a parser parsing the stream of data packets. This direct usage of a queue identifier found by the parser in a data packet increases the flexibility of identifying or selecting a receive-queue.
- In another embodiment of the method, the classification function looking-up a TCAM has a higher priority than the classification criteria function hashing of a flow identification. In the case of a TCAM match, the hash value is overwritten.
- In another embodiment of the method, the classification function using a queue identifier has a higher priority than the classification function looking-up a TCAM. If the queue identifier is directly found in the received data packets, it overwrites any receive-queue identification data found in a TCAM match.
- In another embodiment of the method, the selecting utilizes an index base from a logical port configuration table (LPCT), based on a logical port (LP) identification information received from the parser, for building an index address into a queue table for storing an identification number or position of the receive-queue. A configuration allowing a base address as well as one or more offsets to the base address for identifying a correct or optimal receive-queue address has been proven to deliver the highest degree of design freedom of a network processor. This may also be reflected in an embodiment, wherein the classification functions are used to build an offset to the index base.
- In another embodiment of the method, a second offset to the base index is based on the QoS function. Again, such a design of base address of a queue and an offset to a base index has been proven to allow very high flexibility in determining receive-queue addresses.
- In another embodiment of the method, it is configurable how many bits of results of each of the classification criteria functions are used to build the index into the queue table. This illustrates the flexibility of the method. It may be configured, for example, in such a way that only the top five bits are used. However, the number of bits used is configurable.
- In another embodiment of the method, the results of the classification functions are connected to a multiplexer. This solution allows for choosing the input having a higher priority. If, e.g., there is a TCAM match detected, the TCAM result is used instead of a hash function result.
- In another embodiment, the index into the queue table is based on the base index and a combined offset built from the QoS function and the classification functions. This combined offset together with the base index—combined with other features mentioned above—demonstrate again excellent flexibility and configurability for operating a network processor.
- In an embodiment, a network device for connecting a plurality of input connections to a plurality of output connections is provided. The network device comprises the network processor as described above. The network device may be, e.g., a router, a switch, an intrusion detection device, a session boarder controller, a network monitoring system and the like or an end point network device, such as an intranet appliance in a cloud computing environment like, e.g., a client or a server computer system.
- It should be noted that embodiments may take the form of an entire hardware implementation, an entire software embodiment or an embodiment containing both, hardware and software elements. In an embodiment, the invention may be implemented in software which includes, but is not limited to, firmware, resident software and microcode and/or pico-code.
- In one embodiment, a data processing program for execution in a data processing system may be provided comprising software code portions for performing the method, as described herein, when the program is run on a data processing system. The data processing system may be a computer or computer system attached to the asset management system via communication means.
- Furthermore, embodiments may take the form of a computer program product, accessible from a computer-usable or computer-readable medium providing program code for use, by or in connection with a computer or any instruction execution system, in particular a network processor. For the purpose of this description, a computer-usable or computer-readable medium may be any apparatus that may contain means for storing, communicating, propagating or transporting the program for use, by or in a connection with the instruction execution system, apparatus, or device.
- The medium may be an electronic, magnetic, optical, electromagnetic, infrared or a semi-conductor system for a propagation medium. Examples of a computer-readable medium may include a semi-conductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), DVD and Blu-Ray-Disk.
- It should also be noted that embodiments of the invention have been described with reference to different subject-matters. In particular, some embodiments have been described with reference to method type claims; whereas other embodiments have been described with reference to apparatus type claims. However, a person skilled in the art will gather from the above and the following description that, unless otherwise notified, in addition to any combination of features belonging to one type of subject-matter, also any combination between features relating to different subject-matters, in particular between features of the method type claims, system, computer program product, and features of the apparatus type claims, is considered as to be disclosed within this document.
- The aspects defined above and further aspects of the present invention are apparent from the examples of embodiments to be described hereinafter and are explained with reference to the examples of embodiments, but to which the invention is not limited.
- In the following, a detailed description of the figures are provided. All illustrations in the figures are schematic.
-
FIG. 1 illustrates amethod 100 for operating a network processor. Themethod 100 comprises receiving, 102, a stream of data packets and providing, 104, receive-queues adapted to store received data packets. Furthermore, the method comprises selecting, 106, a receive-queue out of the receive-queues for one of the data packets. The selecting is based on a combination of classification functions and a QoS function. One of the classification functions comprises a hashing of a flow identification, wherein the flow identification is in the one received data packet. -
FIG. 2 illustrates anexample network processor 200 for which the invention described herein may be implemented. Vialink 230data packets 201 come in from a network (not shown). A plurality of physical ports are provided, in an example embodiment four ports are provided. Each physical port may be adapted to handle a plurality of virtual ports. In one embodiment, four virtual ports per each physical port is configured. The data ports may be adapted to running in 10 Gigabit networks. They may also be functional in one Gigabit and 100 Megabit networks. Theincoming data packets 201 are received vialine 230 by a receivingunit 204 having at least three components: a register horizontal left (HR) 208, a register horizontal right (HL) 206 and astatus register 214. A data packet is received by registerhorizontal right 208. At the end of a packet processing, thestatus register 214 receives data. After the data is received by register horizontal right 208 they are passed on to registerhorizontal left 206.Data packets 201 exit this data path viabus 202 for further processing. All data packets are exposed to theparser 216 viabus 210. Also the status at an end of a data packet is exposed to the parser viabus 212. In one embodiment, a 128-bit wide data path is used. In this case, register 206 and 208 are each 16 byte registers so that theparser 216 is exposed to a 32-byte sliding window of packet data. - The
block 218 comprises a series of so-called action machines or in more generalwords hardware accelerators Block 218 is in a bidirectional data exchange with theparser 216 vialink 230. It is noted that far more data traffic may flow from the parser to the accelerators in order to release the parser from specific workloads. All links may be more than one bit wide. - The action machines or
hardware accelerators parser 216 function as well as the functions of theaction machines -
FIG. 3 illustrates an exemplary embodiment as part of the network processor supporting the method of the invention described herein. Three stages separated bydotted lines 302 are shown: avirtualization stage 304, aQoS stage 306 and aclassification stage 308. Vialine 310 logical port IDs are received by a logical port conversion table 312 (LPCT). The LPCT block has three outputs: anindex base 314, a QoSselect signal 316 and a classification offsetselect signal 318. TheQos block 320 receives QoS bits from the parser vialine 322. An output of theQoS block 320 is directed to amultiplexer 326. - The offset
select signal 318 is linked tomultiplexer 328, which receives a flow-id offset signal 330 from amultiplexer 332. Themultiplexer 332 receives input from several action machines: ahasher 334, aTCAM action machine 336, and a directqueue address function 338. - The
hasher 334 receives an n-tuple from the parser vialine 340. TheTCAM action machine 336 receives packet fields from the parser vialine 342. The directqueue address function 338 receives direct queue addresses from the parser vialine 344. All lines coming to the different stages inFIG. 2 are illustrated in a combined manner byreference numeral 230 ofFIG. 2 . - An
adder 346 adds the queue address offset coming in vialine 314, the offset coming in byline 348 and the offset coming in byline 350 frommultiplexer 328. - The final index into the queue table 358 is selected by the
multiplexer 352. Either the direct queue table address from the direct queuetable address function 338 vialine 354 or the index based on theadder 346 is used byline 356. A decision regarding which index is used is based on a control bit (not shown) provided by queuetable address function 338. The queue table 358 contains queue numbers issued byline 360 for subsequent usage. -
FIG. 4 illustrates a more detailed view on an embodiment of the combined entities involved in the receive-queue selection.Blocks FIG. 3 , respectively. - Attention is paid to the number of bits used from every function or action machine for selecting the receive-queue.
Block 402 represents a configuration function comprising a logical port configuration table 404 having seven entries represented by horizontal lines. However, any other number of entries is as good as a table with seven entries. - In an embodiment, each horizontal field of the logical port configuration table 404 represents five bits. Thus, busses 406 and 408 are each five bits wide.
Connection 414 is just one bit wide for a TCAM match signal controlling themultiplexer 416. Themultiplexer 416 selects the signal online 412 from theTCAM block 336 in case of a TCAM match. Otherwise, the signal online 410 coming from thehasher 334 is selected. The output of the hasher is typically 32 bit wide, as it may be required for other purposes within the network processor. However, for this example embodiment only the five most significant bits are used for further processing, in particular as input formultiplexer 416. Consequentlyline 418 also represent a five bit wide signal. This is represented by the five shadedboxes 420 composed of lines from a lower left side to an upper right side. - Parts of
line 408, in particular 3 bits represented byline 422, control how many bits are used fromsignal 418. For this purpose, amasking unit 426 is controlled byline 422 which uses 3 bits out of the 5 bitwide line 408. The remaining two bits fromline 408 is represented bylink 424. They are used to specify a masking of 0 to 3 bits by maskingunit 434 as well as a shift-left of the same number of bits byshift unit 432. This means, that an output of maskingunit 426, which of five bits wide, is represented byblock 428, showing two active bits with stripes to the right. After ashift unit 432 has shifted the bits, an output of the shiftingunit 432 has the relevant bits on position two and three counted from the right side.Signal 424controls mask unit 434 in which a 3 bitwide output 436 of theQoS function 320 is masked. Thestriped boxes 438, showing stripes from top left down to bottom right, indicates three priority bits from theQoS function 320. After a masking of the output signal fromQoS function 320 the number of active bits is reduced, which is illustrated by the example with one active priority bit as indicated by 440. Both outputs, fromshift unit 432—shown asblock 430—and frommask unit 434 are 5 bit wide and are input to an or-gate 442. The output of the or-gate 442 is also 5 bit wide. Theadder 444 then becomes the base index which comes vialine 406 and the offset as a result of the “or-ing” bygate 442 is fed as a total offset 446 to receive-queue selection table. Here, the total offset is added to a base address giving the final entry to the receive-queue selection table vialine 448. This table is a 32 by 8 bit register holding pointers to the receive-queues to be selected. -
Block 446 illustrates the final combination of bits in the five bit wide input field to adder 444.Line 448—five bit wide—carry the signal for selecting the receive-queue. -
FIG. 5 shows thenetwork processor 500 comprising a receivingunit 202 adapted for receiving a stream of data packets, receive-queues 504—of which two is shown—adapted to store received data packets, and a selectingunit 506 adapted for selecting a receive-queue out of the receive-queues for one out of the data packets based on a combination of classification functions and a QoS function, wherein one of the classification functions comprises a hashing of a flow identification comprised in the one received data packet. - Embodiments of the invention may partly be integrated in virtually any type of computer, regardless of the platform being used suitable for storing and/or executing program code, in particular micro- or pico-code. For example, as shown in
FIG. 6 , acomputer system 600 may include one or more processor(s) 602 with one or more cores per processor, associatedmemory elements 604, an internal storage device 606 (e.g., a hard disk, an optical drive such as a compact disk drive or digital video disk (DVD) drive, a flash memory stick, etc.), and numerous other elements and functionalities typical of today's computers (not shown). Thememory elements 604 may include a main memory, employed during actual execution of the program code, and a cache memory, which provides temporary storage for at least some program code or data in order to reduce the number of times, code must be retrieved fromexternal bulk storage 616 for execution. Elements inside thecomputer 600 are linked together by means of abus system 618 with corresponding adapters. Additionally, anetwork processor 600 may be attached to thebus system 618. - The
computer system 600 may also include input means, such as akeyboard 608, amouse 610, or a microphone (not shown). Furthermore, thecomputer 600 may include output means, such as a monitor 612 [e.g., a liquid crystal display (LCD), a plasma display, a light emitting diode display (LED), or a cathode ray tube (CRT) monitor]. Thecomputer system 600 is connected to a network (e.g., a local area network (LAN), a wide area network (WAN), such as the Internet, or any other similar type of network, including wireless networks via anetwork interface connection 614 which may also comprise thenetwork processor 500. This allows a coupling to other computer systems. Those, skilled in the art will appreciate that many different types of computer systems exist, and the aforementioned input and output means may take other forms. Generally speaking, thecomputer system 600 includes at least the minimal processing, input and/or output means, necessary to practice embodiments of the invention. - Further, those skilled in the art will appreciate that one or more elements of the
aforementioned computer system 600 may be located at a remote location and connected to the other elements over a network. Further, embodiments of the invention may be implemented on a distributed system having a plurality of nodes, where each portion of the invention may be located on a different node within the distributed system. In one embodiment of the invention, the node corresponds to a computer system. Alternatively, the node may correspond to a processor with associated physical memory. The node may alternatively correspond to a processor with shared memory and/or resources or a smart phone. - Further, software instructions to perform embodiments of the invention are stored on a computer readable medium, such as a compact disk (CD), a diskette, a tape, or any other computer readable storage device and are loaded to the
computer system 600 and also partly to thenetwork processor 500 as pico-code. -
FIG. 7 shows aflowchart 700 of how a receive-queue address can be built. References are made toFIG. 4 which shows device elements for performing the method. - In
step 702 an index base is built by a configuration function. Step 704 represents selecting either aTCAM 336 output, in case there has been a TCAM match, or the output of thehasher 334. Only the top five bits (5 MSBs) of each output are used in this example embodiment. - In
step 706 three bits from theconfiguration function 402 are used to decide how to mask the result ofstep 702. - Potentially but not necessarily in parallel, in
step 708, a result is built byQoS function 320. The result of this step delivers a three bit result. Instep 710 it is decided—based on two bits from theconfiguration function 402—how many bits of the output of theQoS function 320 are masked. The same two bits are used to perform a shifting function on the masked results ofstep 702. - In
step 712 the results of thesteps step 714 the result of the or-function are added to a base index being delivered by the configuration function. This result is used as an index to a queue table containing receive-queue addresses,step 716. In afurther step 718, the entry of the queue table is selected and used as an address for the selected receive-queue. Instep 720, the received data packet is stored in the selected receive-queue. - It should be noted that several of the steps described regarding the
flow chart 700 could be executed in parallel. Executing in parallel is a preferred embodiment, in particular, for the case for executing the configuration function, the hasher function, the TCAM function and the QoS function. It may also apply for the shifting and the masking steps if the shifting and masking relate to different data flows, e.g., output of the QoS function and combined output of the TCM and hasher functions, respectively. - While the invention has been described with respect to a limited number of embodiments, those skilled in the art benefitting from this disclosure, will appreciate that other embodiments may be devised, which do not depart from the scope of the invention as disclosed herein. Accordingly, the scope of the invention should be limited only by the attached claims.
- It should also be noted that the term “comprising” does not exclude other elements or steps and “a” or “an” does not exclude a plurality. Also, elements described in association with different embodiments may be combined. It should also be noted that reference signs in the claims should not be construed as limiting elements.
Claims (18)
1. A method for routing a data packet to a receive queue in a network processor comprising:
processing a received data packet by reading a flow identification in the data packet;
determining a quality of service criteria (QoSC) for the data packet;
mapping the flow identification and the QoSC into an index for selecting a receive-queue in a set of receive-queues adapted to store receive data packets for routing the data packet; and
utilizing the index to route the data packet to the receive-queue.
2. The method of claim 1 further comprising:
utilizing a hashing function against the flow identification to construct the index.
3. The method of claim 1 further comprising:
utilizing a classification function accessing a ternary content addressable memory (TCAM) for the data packet.
4. The method of claim 1 further comprising:
utilizing a QoSC function for identifying the QoSC.
5. The method of claim 1 further comprising:
utilizing a parser for decoding the data packet; and
sending a set of information to a set of other processing units for further processing.
6. The method of claim 5 , wherein the set of information further comprising:
including a logical port identification and a logical port configuration table.
7. A system for routing a data packet to a receive queue in a network processor comprising:
a processor;
a receiving unit running on the processor configured for receiving a stream of data packets;
a set of receiving-queues configured for storing received data packets;
a selecting unit configured to process a data packet by reading a flow identification in the data packet;
the selecting unit configured to determine a quality of service criteria (QoSC) for the data packet;
the selecting unit configured to map the flow identification and the QoSC into an index for selecting a receive-queue for routing the first data packet; and
the selecting unit configured to utilize the index to route the first data packet to the receive-queue.
8. The system of claim 7 configured to utilize a hashing function against the flow identification to construct the index.
9. The system of claim 7 configured to utilize a classification function accessing a ternary content addressable memory (TCAM) for the data packet.
10. The system of claim 7 configured to utilize a quality of service criteria (QoSC) function for identifying the QoSC.
11. The system of claim 7 further comprising:
a parser configured for decoding the data packet; and
the parser configured for sending a set of information to a set of other processing units for further processing.
12. The system of claim 11 , wherein the set of information comprising:
a logical port identification; and
a logical port configuration table.
13. A computer program product for routing a data packet to a receive queue in a network processor, the computer program product comprising: computer readable storage medium having computer readable program code encoded therein that when executed perform a method comprising:
processing a received data packet by reading a flow identification in the data packet;
determining a quality of service critieria (QoSC) for the data packet;
mapping the flow identification and the QoSC into an index for selecting a receive-queue in a set of receive-queues adapted to store receive data packets for routing the data packet; and
utilizing the index to route the data packet to the receive-queue.
14. The computer program product of claim 13 , wherein the computer readable program code is configured to utilize a hashing function against the flow identification to construct the index.
15. The computer program product of claim 13 , wherein the computer readable program code is configured to utilize a classification function accessing a ternary content addressable memory (TCAM) for the data packet.
16. The computer program product of claim 13 , wherein the computer readable program code is configured to utilize a QoSC function for identifying the QoSC.
17. The computer program product of claim 13 , wherein the computer readable program code is configured to utilize a parser for decoding the data packet; and
the parser configured to send a set of information to a set of other processing units for further processing.
18. The computer program product of claim 17 , wherein the set of information comprising a logical port identification and a logical port configuration table.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/466,914 US8675660B2 (en) | 2010-12-16 | 2012-05-08 | Selection of receive-queue based on packet attributes |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10306438.2 | 2010-12-16 | ||
EP10306438 | 2010-12-16 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/466,914 Continuation US8675660B2 (en) | 2010-12-16 | 2012-05-08 | Selection of receive-queue based on packet attributes |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120155267A1 true US20120155267A1 (en) | 2012-06-21 |
Family
ID=46234271
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/302,285 Abandoned US20120155267A1 (en) | 2010-12-16 | 2011-11-22 | Selection of receive-queue based on packet attributes |
US13/466,914 Expired - Fee Related US8675660B2 (en) | 2010-12-16 | 2012-05-08 | Selection of receive-queue based on packet attributes |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/466,914 Expired - Fee Related US8675660B2 (en) | 2010-12-16 | 2012-05-08 | Selection of receive-queue based on packet attributes |
Country Status (1)
Country | Link |
---|---|
US (2) | US20120155267A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2549442A (en) * | 2014-09-24 | 2017-10-25 | Ibm | Data packet processing |
US20230099487A1 (en) * | 2020-03-09 | 2023-03-30 | Omron Corporation | Communication control device and method for controlling communication control device |
Families Citing this family (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8326814B2 (en) | 2007-12-05 | 2012-12-04 | Box, Inc. | Web-based file management system and service |
WO2012099617A1 (en) | 2011-01-20 | 2012-07-26 | Box.Net, Inc. | Real time notification of activities that occur in a web-based collaboration environment |
US9015601B2 (en) | 2011-06-21 | 2015-04-21 | Box, Inc. | Batch uploading of content to a web-based collaboration environment |
US9063912B2 (en) | 2011-06-22 | 2015-06-23 | Box, Inc. | Multimedia content preview rendering in a cloud content management system |
WO2013009337A2 (en) | 2011-07-08 | 2013-01-17 | Arnold Goldberg | Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof |
US9978040B2 (en) | 2011-07-08 | 2018-05-22 | Box, Inc. | Collaboration sessions in a workspace on a cloud-based content management system |
US9197718B2 (en) | 2011-09-23 | 2015-11-24 | Box, Inc. | Central management and control of user-contributed content in a web-based collaboration environment and management console thereof |
US8515902B2 (en) | 2011-10-14 | 2013-08-20 | Box, Inc. | Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution |
WO2013062599A1 (en) | 2011-10-26 | 2013-05-02 | Box, Inc. | Enhanced multimedia content preview rendering in a cloud content management system |
US9098474B2 (en) | 2011-10-26 | 2015-08-04 | Box, Inc. | Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience |
US8990307B2 (en) | 2011-11-16 | 2015-03-24 | Box, Inc. | Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform |
GB2500152A (en) | 2011-11-29 | 2013-09-11 | Box Inc | Mobile platform file and folder selection functionalities for offline access and synchronization |
US9019123B2 (en) | 2011-12-22 | 2015-04-28 | Box, Inc. | Health check services for web-based collaboration environments |
US11232481B2 (en) | 2012-01-30 | 2022-01-25 | Box, Inc. | Extended applications of multimedia content previews in the cloud-based content management system |
US9965745B2 (en) | 2012-02-24 | 2018-05-08 | Box, Inc. | System and method for promoting enterprise adoption of a web-based collaboration environment |
US9195636B2 (en) | 2012-03-07 | 2015-11-24 | Box, Inc. | Universal file type preview for mobile devices |
US9054919B2 (en) | 2012-04-05 | 2015-06-09 | Box, Inc. | Device pinning capability for enterprise cloud service and storage accounts |
US9575981B2 (en) | 2012-04-11 | 2017-02-21 | Box, Inc. | Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system |
US9413587B2 (en) | 2012-05-02 | 2016-08-09 | Box, Inc. | System and method for a third-party application to access content within a cloud-based platform |
GB2514947B (en) | 2012-05-04 | 2015-06-17 | Box Inc | Repository redundancy implementation of a system which incrementally updates clients with events that occured via a cloud-enabled platform |
US9691051B2 (en) | 2012-05-21 | 2017-06-27 | Box, Inc. | Security enhancement through application access control |
US9027108B2 (en) | 2012-05-23 | 2015-05-05 | Box, Inc. | Systems and methods for secure file portability between mobile applications on a mobile device |
US8914900B2 (en) | 2012-05-23 | 2014-12-16 | Box, Inc. | Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform |
KR101722759B1 (en) * | 2012-06-13 | 2017-04-03 | 한국전자통신연구원 | Method and apparatus of channel access in a wireless local area network |
US9021099B2 (en) | 2012-07-03 | 2015-04-28 | Box, Inc. | Load balancing secure FTP connections among multiple FTP servers |
US9712510B2 (en) | 2012-07-06 | 2017-07-18 | Box, Inc. | Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform |
US9792320B2 (en) | 2012-07-06 | 2017-10-17 | Box, Inc. | System and method for performing shard migration to support functions of a cloud-based service |
GB2505072A (en) | 2012-07-06 | 2014-02-19 | Box Inc | Identifying users and collaborators as search results in a cloud-based system |
US9473532B2 (en) | 2012-07-19 | 2016-10-18 | Box, Inc. | Data loss prevention (DLP) methods by a cloud service including third party integration architectures |
US8868574B2 (en) | 2012-07-30 | 2014-10-21 | Box, Inc. | System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment |
US9794256B2 (en) | 2012-07-30 | 2017-10-17 | Box, Inc. | System and method for advanced control tools for administrators in a cloud-based service |
US9369520B2 (en) | 2012-08-19 | 2016-06-14 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US8745267B2 (en) | 2012-08-19 | 2014-06-03 | Box, Inc. | Enhancement of upload and/or download performance based on client and/or server feedback information |
US9558202B2 (en) | 2012-08-27 | 2017-01-31 | Box, Inc. | Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment |
US9135462B2 (en) | 2012-08-29 | 2015-09-15 | Box, Inc. | Upload and download streaming encryption to/from a cloud-based platform |
US9117087B2 (en) | 2012-09-06 | 2015-08-25 | Box, Inc. | System and method for creating a secure channel for inter-application communication based on intents |
US9311071B2 (en) | 2012-09-06 | 2016-04-12 | Box, Inc. | Force upgrade of a mobile application via a server side configuration file |
US9195519B2 (en) | 2012-09-06 | 2015-11-24 | Box, Inc. | Disabling the self-referential appearance of a mobile application in an intent via a background registration |
US9292833B2 (en) | 2012-09-14 | 2016-03-22 | Box, Inc. | Batching notifications of activities that occur in a web-based collaboration environment |
US10200256B2 (en) | 2012-09-17 | 2019-02-05 | Box, Inc. | System and method of a manipulative handle in an interactive mobile user interface |
US9553758B2 (en) | 2012-09-18 | 2017-01-24 | Box, Inc. | Sandboxing individual applications to specific user folders in a cloud-based service |
US10915492B2 (en) | 2012-09-19 | 2021-02-09 | Box, Inc. | Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction |
US9959420B2 (en) | 2012-10-02 | 2018-05-01 | Box, Inc. | System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment |
US9495364B2 (en) | 2012-10-04 | 2016-11-15 | Box, Inc. | Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform |
US9705967B2 (en) | 2012-10-04 | 2017-07-11 | Box, Inc. | Corporate user discovery and identification of recommended collaborators in a cloud platform |
US9665349B2 (en) | 2012-10-05 | 2017-05-30 | Box, Inc. | System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform |
EP2784717A1 (en) | 2012-10-17 | 2014-10-01 | Box, Inc. | Remote key management in a cloud-based environment |
US9756022B2 (en) | 2014-08-29 | 2017-09-05 | Box, Inc. | Enhanced remote key management for an enterprise in a cloud-based environment |
US10235383B2 (en) | 2012-12-19 | 2019-03-19 | Box, Inc. | Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment |
US9396245B2 (en) | 2013-01-02 | 2016-07-19 | Box, Inc. | Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9953036B2 (en) | 2013-01-09 | 2018-04-24 | Box, Inc. | File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
EP2755151A3 (en) | 2013-01-11 | 2014-09-24 | Box, Inc. | Functionalities, features and user interface of a synchronization client to a cloud-based environment |
EP2757491A1 (en) | 2013-01-17 | 2014-07-23 | Box, Inc. | Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform |
US10846074B2 (en) | 2013-05-10 | 2020-11-24 | Box, Inc. | Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client |
US10725968B2 (en) | 2013-05-10 | 2020-07-28 | Box, Inc. | Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform |
GB2515192B (en) | 2013-06-13 | 2016-12-14 | Box Inc | Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform |
US9805050B2 (en) | 2013-06-21 | 2017-10-31 | Box, Inc. | Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform |
US10229134B2 (en) | 2013-06-25 | 2019-03-12 | Box, Inc. | Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform |
US10110656B2 (en) | 2013-06-25 | 2018-10-23 | Box, Inc. | Systems and methods for providing shell communication in a cloud-based platform |
US9535924B2 (en) | 2013-07-30 | 2017-01-03 | Box, Inc. | Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform |
US9213684B2 (en) | 2013-09-13 | 2015-12-15 | Box, Inc. | System and method for rendering document in web browser or mobile device regardless of third-party plug-in software |
US8892679B1 (en) | 2013-09-13 | 2014-11-18 | Box, Inc. | Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform |
US9535909B2 (en) * | 2013-09-13 | 2017-01-03 | Box, Inc. | Configurable event-based automation architecture for cloud-based collaboration platforms |
US10509527B2 (en) | 2013-09-13 | 2019-12-17 | Box, Inc. | Systems and methods for configuring event-based automation in cloud-based collaboration platforms |
US9704137B2 (en) | 2013-09-13 | 2017-07-11 | Box, Inc. | Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform |
GB2518298A (en) | 2013-09-13 | 2015-03-18 | Box Inc | High-availability architecture for a cloud-based concurrent-access collaboration platform |
US10866931B2 (en) | 2013-10-22 | 2020-12-15 | Box, Inc. | Desktop application for accessing a cloud collaboration platform |
US10530854B2 (en) | 2014-05-30 | 2020-01-07 | Box, Inc. | Synchronization of permissioned content in cloud-based environments |
US9602514B2 (en) | 2014-06-16 | 2017-03-21 | Box, Inc. | Enterprise mobility management and verification of a managed application by a content provider |
US10574442B2 (en) | 2014-08-29 | 2020-02-25 | Box, Inc. | Enhanced remote key management for an enterprise in a cloud-based environment |
US10038731B2 (en) | 2014-08-29 | 2018-07-31 | Box, Inc. | Managing flow-based interactions with cloud-based shared content |
US9894119B2 (en) | 2014-08-29 | 2018-02-13 | Box, Inc. | Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms |
WO2017052672A1 (en) | 2015-09-24 | 2017-03-30 | Hewlett Packard Enterprise Development Lp | Hierarchical index involving prioritization of data content of interest |
US10362149B2 (en) | 2016-12-30 | 2019-07-23 | Intel Corporation | Intelligent packet aggregation |
US11132866B2 (en) | 2019-03-28 | 2021-09-28 | GameCo, LLC | Pseudo skill-based and/or skill-based video gaming system involving a time collection feature and method of utilizing the same |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030072317A1 (en) * | 2001-10-16 | 2003-04-17 | Maria Yuang | Stepwise quality-of-service scheduling method in output-buffered switches for broadband networks |
US20050152373A1 (en) * | 2004-01-08 | 2005-07-14 | Interdigital Technology Corporation | Packet scheduling in a wireless local area network |
US7161945B1 (en) * | 1999-08-30 | 2007-01-09 | Broadcom Corporation | Cable modem termination system |
US20080107118A1 (en) * | 2001-11-01 | 2008-05-08 | Goetzinger William J | Weighted fair queue serving plural output ports |
US20080279205A1 (en) * | 2007-05-11 | 2008-11-13 | Applied Micro Circuits Corporation | Packet preclassification using search tree algorithms |
US7466703B1 (en) * | 1998-05-01 | 2008-12-16 | Alcatel-Lucent Usa Inc. | Scalable high speed router apparatus |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2602082B2 (en) | 1988-12-16 | 1997-04-23 | 富士通株式会社 | Fingerprint image input device |
JP2958386B2 (en) | 1988-09-30 | 1999-10-06 | 富士ゼロックス株式会社 | Computer system |
US6975638B1 (en) | 2000-10-13 | 2005-12-13 | Force10 Networks, Inc. | Interleaved weighted fair queuing mechanism and system |
US7720065B2 (en) | 2008-02-29 | 2010-05-18 | Lockheed Martin Corporation | Method and apparatus for biasing of network node packet prioritization based on packet content |
-
2011
- 2011-11-22 US US13/302,285 patent/US20120155267A1/en not_active Abandoned
-
2012
- 2012-05-08 US US13/466,914 patent/US8675660B2/en not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7466703B1 (en) * | 1998-05-01 | 2008-12-16 | Alcatel-Lucent Usa Inc. | Scalable high speed router apparatus |
US7161945B1 (en) * | 1999-08-30 | 2007-01-09 | Broadcom Corporation | Cable modem termination system |
US20030072317A1 (en) * | 2001-10-16 | 2003-04-17 | Maria Yuang | Stepwise quality-of-service scheduling method in output-buffered switches for broadband networks |
US20080107118A1 (en) * | 2001-11-01 | 2008-05-08 | Goetzinger William J | Weighted fair queue serving plural output ports |
US20050152373A1 (en) * | 2004-01-08 | 2005-07-14 | Interdigital Technology Corporation | Packet scheduling in a wireless local area network |
US20110235513A1 (en) * | 2004-01-08 | 2011-09-29 | Interdigital Technology Corporation | Packet scheduling in a wireless local area network |
US20080279205A1 (en) * | 2007-05-11 | 2008-11-13 | Applied Micro Circuits Corporation | Packet preclassification using search tree algorithms |
US8249109B1 (en) * | 2007-05-11 | 2012-08-21 | Net Navagation Systems LLC | Search tree algorithms for packet preclassification |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2549442A (en) * | 2014-09-24 | 2017-10-25 | Ibm | Data packet processing |
US9965434B2 (en) | 2014-09-24 | 2018-05-08 | International Business Machines Corporation | Data packet processing |
US20230099487A1 (en) * | 2020-03-09 | 2023-03-30 | Omron Corporation | Communication control device and method for controlling communication control device |
Also Published As
Publication number | Publication date |
---|---|
US8675660B2 (en) | 2014-03-18 |
US20120218885A1 (en) | 2012-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8675660B2 (en) | Selection of receive-queue based on packet attributes | |
US11677851B2 (en) | Accelerated network packet processing | |
US8913613B2 (en) | Method and system for classification and management of inter-blade network traffic in a blade server | |
US8488456B2 (en) | Load-balancing via modulus distribution and TCP flow redirection due to server overload | |
US8743877B2 (en) | Header processing engine | |
US8228908B2 (en) | Apparatus for hardware-software classification of data packet flows | |
US9282064B2 (en) | Method for processing a plurality of data and switching device for switching communication packets | |
US11563643B2 (en) | Advanced network tracing in the data plane | |
US10341242B2 (en) | System and method for providing a programmable packet classification framework for use in a network device | |
US20190081894A1 (en) | Method and system for managing data traffic in a computing network | |
AU2004258471B2 (en) | MPLS device enabling service providers to control service levels in forwarding of multi-labeled packets | |
US10791046B2 (en) | Weighted-cost multi-pathing using range lookups | |
US20150381481A1 (en) | Data path acceleration using hw virtualization | |
US9590922B2 (en) | Programmable and high performance switch for data center networks | |
US8024787B2 (en) | Packet firewalls of particular use in packet switching devices | |
US20170310594A1 (en) | Expedited fabric paths in switch fabrics | |
US9379992B2 (en) | Method and an apparatus for virtualization of a quality-of-service | |
US20070253334A1 (en) | Switch routing algorithm for improved congestion control & load balancing | |
US7616662B2 (en) | Parser for parsing data packets | |
US20160099881A1 (en) | Packet storage distribution based on available memory | |
JP2004056340A (en) | Ip flow multistage hash apparatus, ip flow multistage hash method, ip flow multistage hash program, and recording medium therefor | |
US9667533B2 (en) | Creating and utilizing customized network applications | |
KR20060009867A (en) | Method for the priority classification of frames | |
US20140016486A1 (en) | Fabric Cell Packing in a Switch Device | |
US9258223B1 (en) | Packet routing in a network address translation network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ABEL, FRANCOIS;BASSO, CLAUDE;CALVIGNAC, JEAN L.;AND OTHERS;SIGNING DATES FROM 20111029 TO 20111118;REEL/FRAME:027272/0867 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |