|Publication number||US6275861 B1|
|Application number||US 08/937,285|
|Publication date||Aug 14, 2001|
|Filing date||Sep 15, 1997|
|Priority date||Sep 27, 1996|
|Publication number||08937285, 937285, US 6275861 B1, US 6275861B1, US-B1-6275861, US6275861 B1, US6275861B1|
|Inventors||Imran Chaudri, Srini Wishnu Seetharam|
|Original Assignee||Pmc-Sierra, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (11), Non-Patent Citations (5), Referenced by (88), Classifications (10), Legal Events (9)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application claims priority from provisional patent application 60/027,278 filed Sep. 27, 1996, incorporated herein by reference.
This application has been filed with a microfiche appendix of 169 frames on 2 sheets comprising a preliminary user manual for apparatus related to the invention. A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates to electronic circuits and to digital communication. More particularly, the present invention relates to an advanced method for handling data units (packets) within a communication device by efficiently determining a flow identification for a data unit using a simplified and protocol independent method.
The present invention has a number of applications in advanced telecommunication systems and networks. One envisioned application of the invention is in a state-of-the-art router (or layer three switch) for handling data packets. These data packets may be constructed according to a number of well-know packet transmission protocols in a layered protocol suite. Routers are packet switching devices characterized by their ability to perform intelligent routing of packets on a per-packet basis. Routers generally can handle packets or frames of data formatted according to a number of different protocols. A layer three switch is a type of router that performs layer three routing of packets largely or exclusively using dedicated logic circuitry.
Other applications of the invention include fast recursive look-up for grouping any kind of discreet data unit quickly into groups for group-based handling.
Explanation of both the prior art and the invention will be better understood with reference to specific examples, however this should not be taken to limit the invention to the particular examples described. The invention is generalizable to other similar types of communication devices or to other computing devices handling data is ways that are analogous to data handling in modern networks. The invention should therefore not be limited except as provided in the attached claims.
Networking Devices Standards
This specification presumes familiarity with the general concepts, protocols, and devices currently used in LAN networking and WAN inter networking applications such as, for example, the IEEE 802 and ISO 8802 protocol suites and other series of documents released by the Internet Engineering Task Force that are publicly available. LANs are arrangements of various hardware and software elements that operate together to allow a number of digital devices to exchange data within the LAN and also may include internet connections to external wide area networks (WANs).
In the most common LANs and WANs in use today, data is transmitted among network devices and processed within devices as series of independent packets, each packet containing at least one header having at least a destination address specifying an ultimate destination and generally also having a source address. Headers may also include other handling information such as an indication of the different protocols used to format a packet, a transmission priority, etc.
FIG. 1 depicts an example of a packet as it may be transmitted on a network. The example shown is essentially an Ethernet packet, having an Ethernet header 202 and a 48-bit Ethernet address (such as 00:85:8C:13:AA) 204, and an Ethernet trailer 230. Within the Ethernet packet 200 is contained, or encapsulated, an IP packet, represented by IP header 212, containing a 32 bit IP address 214 (such as 188.8.131.52). Packet 200 contains a data payload 220 which holds the data the user is interested in receiving or holds a control message used for configuring the network. Many other types and configurations of packets are presently known in the networking art and it is assumed that additional packet protocols will be developed in the future.
An additional background concept important to understanding network communications is the concept of layered network protocols. Modern communication standards, such as the TCP/IP Suite and the IEEE 802 standards, organize the tasks necessary for data communication into layers. At different layers, data is viewed and organized differently, different protocols are followed, and different physical devices may handle the data traffic. FIG. 2 illustrates one example of a layered network standard having a number of layers, the Physical Layer, the Data Link Layer, the Routing Layer, the Transport Layer and the Application Layer. These layers correspond roughly to the layers as defined within the TCP/IP Suite. (The 802 standard has a different organizational structure for the layers and uses somewhat different names and numbering conventions.)
An important ideal in layered standards is the ideal of layer independence. A layered protocol suite specifies standard interfaces between layers such that, in theory, a device and protocol operating at one layer can coexist with any number of different protocols operating at higher or lower layers, so long as the standard interfaces between layers are followed.
Optimizing The Handling of Data Units (Packets) within a Network Device
With an increasing number of network users needing increasing amounts of network bandwidth, there is a need for network devices to become efficient and sophisticated in their internal processing and routing of data. One mechanism known in the art for processing packets more efficiently is for network devices to identify flows in packets. A flow may be defined generally as a group of related packets that share some common characteristic which the network device may use to optimize the handling of the packets. For example, a network device may establish separate buffers for different flows so that very heavy traffic on one flow will not be allowed to cause congestion on another flow, or a network device may otherwise optimize its operation by grouping packets in flows.
In prior art systems, first the packets themselves are identified. The identification of packets is done based on the packet header. Each protocol has a header that uniquely identifies it. As described above, communication protocols frequently have encapsulated packets. That is, one protocol carried within another protocol. These are called protocol layers. In prior art systems, in order to group related packets together into flows, it is necessary to determine and identify multiple layers of protocols. The flow can be coarsely defined at a higher layer, requiring the identification of the outer protocol(s). A flow can also be defined at a finer layer of granularity by identifying multiple layers of encapsulated protocols.
Once a flow is identified, packets belonging to that flow can be isolated from other packets. The isolation of a flow permits the network device to process the flow independently from other packets. It also shields the flow from harmful effects caused by other flows.
Within the art it is becoming common to construct networking devices that perform layer three routing tasks using dedicated logic circuits. These devices are sometimes referred to as layer three switches. One task that these devices attempt to perform using fast dedicated logic is identifying and assigning packets to flows. In one such known system, for example, flows are identified by the system looking for packets flowing from a particular source address to a particular destination address. If a specified number of packets are received in a specified period of time having the same source and destination address, the system will establish a flow for those packets and may attach a flow identification field to those packets, allowing special handling of those packets within that device or by other networking devices in the network.
There is a trade-off, however, to be had between very fast layer three routing (or other processing of data units) done by dedicated hardware, and the flexibility that may be required in different networking operations. This flexibility is often achieved by using modifiable software to control data handling. Modern networks are often called on to carry a wide variety of network traffic under a wider variety of protocols, all over the same network hardware. Therefore, a networking device hard-wired to determine a flow based on a source and destination address at a IP or IPX layer may not be able to establish a different flow should it be desired based on an Ethernet address of a packet. The device also may not be able to be reconfigured to handle the inevitable changes to network protocols or new protocols that are developed.
What is needed is a mechanism that would allow a high performance communication device to perform routing or sorting functions very quickly in hardware while allowing the operation of the routing function and flow assignment be specified and configured programmably so that it can be easily changed and can flexibly respond to different requirements of different network protocol layers.
In general terms, the present invention comprises techniques and devices for an improved handling of unitized or packetized data. More specific applications of the invention include handling of packet data in a network router or layer three switch to perform network routing functions.
The present invention identifies flows in data units by a recursive process of associating a flow identification with a data unit, embedding or associating rules with the flow id for extracting data from the data unit, and using the extracted data to perform a search in a memory for a next level recursion flow identification. During the recursions, a flow identification may be tested to determine if it is a final or specific flow identification and based on the test, the data unit may be identified as belonging to a particular flow. A current or default flow identification may also be assigned if a memory search for a new flow identification fails to find a flow identification in the memory.
In a specific embodiment, the search routine used to recursively search on data to identify flows is done by dedicated hardware logic, thereby allowing fast searching. However, the search is performed using parameters stored in modifiable memory locations or registers. Thus, fast but flexible searching on packets may be performed.
The invention also comprises a network operating with devices having flow identification as described herein. In such a network, packet traffic between routing devices may be configured so that once one device has identified a flow, that flow identifier may be attached to the packet so that other network devices do not need to perform a search to determine the flow for that packet.
Additional aspects of the invention will be better understood upon reference to the following description of specific embodiments and the attached claims.
FIG. 1 is a diagram of a packet as an example of a type of data unit upon which the invention may be effectively employed.
FIG. 2 is a diagram illustrating a layered network protocol.
FIG. 3 is a flow chart illustrating a method of the invention.
FIG. 4 is a block diagram of a network device incorporating aspects of the invention.
FIG. 5 illustrates an example data structure within a search memory according to the invention.
FIG. 6 is a block diagram of a search engine and memory according to one embodiment of the invention.
FIG. 7 is a block diagram of an alternative network device incorporating aspects of the invention
FIG. 8 is a diagram of a network according to one embodiment of the invention.
The following glossary provides illustrative explanation of some terms used herein, in some cases within the context of specific examples.
Port or Connection: A physical or virtual ingress or egress associated with a device having multiple ports or connections.
Flow: A group of related packets or other data units. The relationship can be based on a common source, common destination, common path traversed, common application, any arbitrary condition, or any combination of the above.
FLOW_ID: A flow identifier is an index to the set of processing instructions indicating how to handle data packets classified into a flow.
Terminal FLOW_ID: Once a Terminal FLOW_ID has been found, no more searches are required and the Terminal FLOW_ID is used. Also may be referred to as a Specific FLOW_ID.
Interim FLOW_ID: This is a flow identifier at a level of coarse granularity. Multiple flows may be grouped into a flow identified by an Interim FLOW_ID. In addition, finer levels of granularity may exist and can be found by performing further searches using the Interim FLOW_ID and parameters (Offset and Search Mask) supplied with it.
Search Mask: Generally, a value stored along with a FLOW_ID that determines which parts of a packet will be used to determine a next FLOW_ID. In one embodiment, a bit vector of known length with certain bits set to ‘1’. In a specific embodiment of the invention, these ‘1’ bits represent the octets that must be extracted from the packet (starting from the Offset) to form the Search Key.
Offset: The number of octets or fields from the start of the packet that must be skipped before the search mask is applied.
Search Key: The Search Key is formed by concatenating the Interim FLOW_ID with the octets extracted from the packet (after applying the Offset and Search Mask).
FIG. 3 is a flow chart showing a search operation according to one embodiment of the present invention and FIG. 4 is a block diagram of a network device (or element) 100 according to a specific embodiment of the invention.
When a packet 101 comes in on a port (Step S1), a search engine 104 needs to perform a search operation on the packet to identify the flow. The port/connection number is used to lookup a FLOW_ID (S2). Searches are performed until either a Terminal FLOW_ID 115 is found (S3) or a search fails (S5). If the search fails, then the most recent interim FLOW_ID is used (S6). With each new interim FLOW_ID, a new Offset and Search Mask are also provided, as shown in FIG. 3. This Search Mask is a bit vector that is a known length and has certain bits that are set to ‘1’. In one embodiment, each bit with the value ‘1’ represents an octet that must be extracted from the of the packet starting at the octet indicated by the offset, though other encoding schemes will be apparent to those of skill in the art.
The Interim FLOW_ID along with the set of octets extracted from the packet form a new Search Key that ranges in length depending on the length of the FLOW_ID and the number of octets extracted from the packet. Search memory 110 is searched using a specific search algorithm 112 (Any user defined search method may be used such as a hash table, binary tree, linear search, etc.). If the search passes, then the result of the search is either an interim FLOW_ID along with another Offset and Search Mask or simply the Terminal FLOW_ID. Thus the search continues recursively until the search fails or a Terminal FLOW_ID is found.
While any type of search algorithm may be used, one search algorithm contemplated for the invention is an hash index of linked-lists, as is known in the art. In this method, a current FLOW_ID is combined (either by a simple concatenation or by any other logic function) with octets extracted from a packet according to a search mask. This string of octets is then processed by a hash or indexing function to generate an index. The index is used to look-up a data structure for a next FLOW_ID. That data structure includes a full copy of the search key and a pointer to a next data structure in the linked-list for that particular index value. If the search key stored with the data structure matches the original search key, then the data structure is retrieved and processing continues. If the data structure search key does not match the original search key, then the next data structure in the linked-list is retrieved and search keys are again compared. This continues until a matching search key is found in that linked-list or the search fails.
If the Terminal FLOW_ID is found, then the packet processing can commence through processor 130 according to the flow determined for the packet. If the search fails, then the most recent Interim FLOW_ID is used to process the packet. Thus the most recent Interim FLOW_ID provides a default entry for all flows at a particular layer.
As shown in FIG. 3, the operation is a recursive searching for a terminal FLOW_ID. When a FLOW_ID is found that is flagged as a terminal FLOW_ID or when a search fails, the recursion ends and the packet is routed or processed according to the last FLOW_ID identified for the packet.
The invention, in various embodiments, provides a number of benefits in high performance network devices or in computer systems handling similar data. According to the recursive search procedure of the invention, multiple layers of encapsulated packets can be searched to identify flows. The invention also allows for distributed and parallel searches of multiple packets to identify flows with multiple search engines, an example of which is shown in FIG. 7. In the recursive search, each successive search can isolate a flow at a finer granularity. This allows for individual processing on very specific flows that require them to be isolated. At each level of search, the Interim FLOW_ID provides a default mechanism of handling the flows that cannot (or need not) be identified with finer granularity. Thus reducing the number of total search table entries that need to be maintained.
It will also be apparent from the invention within the context of the prior art, that one implementation of the invention will allow for designing of dedicated fast logic circuitry to perform the construction of search keys from FLOW_IDs and packet data and to perform the search function while allowing the actual definition of flows to be programmably configurable through setting data in the search memory and in the FLOW_ID data structure.
According to an embodiment of the invention, a data structure is defined for storing the FLOW_ID and associated data which are used to perform the search and derive a search key for a second flow id. One specific example of such a data structure is shown in FIG. 5. In this example, specific lengths of bit vectors are provided for illustrative purposes only. As shown in the figure, the example data structure includes a valid bit, a pointer to a next data structure in a chain of data structures matching an index chain, an offset to indicate where a Search Mask should be applied to the packet, a Search Mask bit vector in order to generate a next Search Key, and a Search Key for that data structure to be compared to the search key formed by concatenating the FLOW_ID with the Octets extracted from the packet using the Search Mask. The search key is used to determine if the correct data structure has been located by the index.
FIG. 6 shows a more detailed block diagram of search engine 104 and search memory 110 according to various specific embodiments of the invention. In this embodiment is depicted search engine 110 including registers or similar memory locations for flow identification 117 a, mask 117 b, offset 117 c, extracted packet data 110 a, and search key 116. According to one embodiment of the invention, these registers are the alterable parameters of search engine 104 which will otherwise perform its search function using fast dedicated custom logic circuits. These alterable registers may be set up to default values by a management program. According to the invention, search engine 104 is able to very quickly derive a search key from a data packet according to the values specified in the registers 117 b and 117 c. This search key is then used to look up a data structure for a next flow identification and this data structure is used to derive new values for flow id 117 a, mask 117 b, and offset 117 c. According to one embodiment, this data structure lookup may be accomplished using a hash function and indexed table of linked-list as is known in the art, which would be performed by hash lookup 111. Hash lookup 111 may be a function performed by customized logic circuits as part of search engine 104 or may be performed in a separate circuit associated with search memory 110.
In one embodiment, the invention may be incorporated into a wide area network (WAN) or local area network (LAN) as shown in FIG. 8 to allow the identification of flows both within individual routing devices in the network and, in one embodiment, within the network or portions of the network. In one specific network-wide embodiment, once a router in the network determines a flow for a packet, the router may attach a flow identifier to that packet so that subsequent intermediate systems in the network need not redetermine the flow for the packet. In such a network, search engine 104 may be able to immediately determine if a flow has already been established for an incoming packet and may pass the packet immediately to processor 130. FIG. 8 shows the invention as embodied in a network with a WAN backbone 300 and LANS 310 a-c. Each LAN 310 is connected to the WAN backbone by its local router 304. A flow identifier according to the invention would be employed in one or more of the routers shown and that router would identify flows and process packets as described herein. In the further embodiment as described above, once a router, such as 302 a for example, had determined a flow for a packet, router 302 a would include a flow identifier in the header of the packet transmitted out of 302 a. The packet could then be processes by other routers in backbone 300 according to the flow without those routers having to look-up a flow for the packet.
The invention has now been explained in accordance with specific embodiments, however many variations will be obvious to those of skill in the art. In particular, the search memory and search data structure may be organized differently so long as a recursively retrieved FLOW_ID is combined with information from a packet to retrieve a next FLOW_ID. Also, the block diagram of FIG. 4 and the description group and organize functional blocks in a particular way to provide a clear example. However, other organizations are possible. The search memory search algorithm need not necessarily be a part of the engine used to extract a search key from a packet. In addition, multiple instances of elements, such as search engine 104, may be incorporated in an embodiment to allow for parallel processing of packets. These enumerated examples are not exhaustive of possible alternative embodiments of the invention. The invention should therefore not be limited except as provided in the attached claims.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5422879 *||Jan 12, 1993||Jun 6, 1995||Inmos Limited||Data flow control mechanism utilizing low level flow control codes|
|US5463777 *||Feb 28, 1995||Oct 31, 1995||Wellfleet Communications||System for segmenting data packets to form binary decision trees which determine filter masks combined to filter the packets for forwarding|
|US5521910 *||Oct 5, 1994||May 28, 1996||Cabletron Systems, Inc.||Method for determining a best path between two nodes|
|US5790546 *||Dec 4, 1995||Aug 4, 1998||Cabletron Systems, Inc.||Method of transmitting data packets in a packet switched communications network|
|US5812781 *||Sep 5, 1995||Sep 22, 1998||Telefonaktiebolaget Lm Ericsson||System for routing incoming connection-less messages to processes which are already handling messages from same source node|
|US5838975 *||Apr 18, 1995||Nov 17, 1998||Abramson; David Andrew||Method for testing and debugging computer programs|
|US5862344 *||Aug 28, 1995||Jan 19, 1999||Ncr Corporation||Apparatus and methods for routing data packets through a processing system network|
|US5881241 *||Jun 19, 1996||Mar 9, 1999||Sun Microsystems, Inc.||System for transmitting data packet after matching data packet's routing pattern with predetermined data routes stored in a route table|
|US5978844 *||Sep 6, 1996||Nov 2, 1999||Hitachi, Ltd.||Internetworking apparatus for load balancing plural networks|
|US6016401 *||Sep 22, 1997||Jan 18, 2000||Lsi Logic Corporation||High speed network interface having SAR plus physical interface|
|US6047323 *||Jun 27, 1996||Apr 4, 2000||Hewlett-Packard Company||Creation and migration of distributed streams in clusters of networked computers|
|1||Jabbari, B., "A bandwidth allocation technique for high speed network", Dec. 2-5, 1990, Global Telecommunications Conference, 1990, and Exhibition. "Communications: Connecting the Future', GLOBECOM '90., vol. 1, pp. 355-359.*|
|2||Jabbari, B., "A bandwidth allocation technique for high speed network", Dec. 2-5, 1990, Global Telecommunications Conference, 1990, and Exhibition. ‘Communications: Connecting the Future’, GLOBECOM '90., vol. 1, pp. 355-359.*|
|3||Shimamoto et al., "A dynamic routing control based on a genetic algorithm", Mar. 28-Apr. 1, 1993, Neutral Networks, 1993., IEEE International Conference, vol. 2, pp. 1123-1128.*|
|4||Stallings, William, "Lightweight protocols", Aug. 1993, LAN Magazine, Miller Freeman Inc., vol. 8 No. 8, p 69 (7).*|
|5||*||Waldman, Jonathan, "Track down files with File Hunter", Jul. 1995, PC Magazine, Ziff-Davis Publishing Company, vol. 14 No. 13., p323 (6).|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6513028 *||Jun 25, 1999||Jan 28, 2003||International Business Machines Corporation||Method, system, and program for searching a list of entries when search criteria is provided for less than all of the fields in an entry|
|US6560229 *||Jun 30, 1999||May 6, 2003||Broadcom Corporation||Network switching architecture with multiple table synchronization, and forwarding of both IP and IPX packets|
|US6606315 *||Jul 2, 1999||Aug 12, 2003||Cisco Technology, Inc.||Synchronizing service instructions among forwarding agents using a service manager|
|US6678269 *||Oct 5, 1998||Jan 13, 2004||Alcatel||Network switching device with disparate database formats|
|US6798788 *||Jan 14, 2000||Sep 28, 2004||Advanced Micro Devices, Inc.||Arrangement determining policies for layer 3 frame fragments in a network switch|
|US6876558||Oct 4, 2002||Apr 5, 2005||Cypress Semiconductor Corporation||Method and apparatus for identifying content addressable memory device results for multiple requesting sources|
|US7010591 *||Jan 25, 2001||Mar 7, 2006||Advanced Micro Devices, Inc.||Self-configuring trunking on a network device|
|US7023807||Nov 12, 2002||Apr 4, 2006||Timothy Scott Michels||Network switching device with pipelined search engines|
|US7042886||Dec 6, 2001||May 9, 2006||P-Cube Ltd.||Apparatus, method, and computer program for wire-speed classification and pre-processing of data packets in an ATM network|
|US7047463 *||Aug 15, 2003||May 16, 2006||Inovys Corporation||Method and system for automatically determining a testing order when executing a test flow|
|US7106734||Apr 18, 2003||Sep 12, 2006||Broadcom Corporation||Network switching architecture with multiple table synchronization, and forwarding of both IP and IPX packets|
|US7254632||Apr 26, 2002||Aug 7, 2007||P-Cube Ltd.||Apparatus and method for pattern matching in text based protocol|
|US7308505 *||Dec 17, 2003||Dec 11, 2007||International Business Machines Corporation||Method, system and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US7376085 *||Aug 5, 2002||May 20, 2008||Hitachi, Ltd.||Packet transferring method and apparatus that employs the same|
|US7415022||Jul 31, 2006||Aug 19, 2008||Broadcom Corporation||Network switching architecture with multiple table synchronization, and forwarding of both IP and IPX packets|
|US7436830 *||Sep 30, 2004||Oct 14, 2008||P-Cube Ltd.||Method and apparatus for wire-speed application layer classification of upstream and downstream data packets|
|US7469297 *||Aug 4, 2000||Dec 23, 2008||Intellon Corporation||Mechanism for using a quasi-addressed response to bind to a message requesting the response|
|US7502374 *||Apr 28, 2004||Mar 10, 2009||Extreme Networks, Inc.||System for deriving hash values for packets in a packet processing system|
|US7522516||Apr 28, 2004||Apr 21, 2009||Extreme Networks, Inc.||Exception handling system for packet processing system|
|US7522602 *||Feb 15, 2006||Apr 21, 2009||Hitachi, Ltd.||Packet transfer apparatus with the function of flow detection and flow management method|
|US7539772||Aug 20, 2007||May 26, 2009||Lnternational Business Machines Corporation||Method for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US7554978||Jun 30, 2009||Extreme Networks, Inc.||System for accessing content-addressable memory in packet processor|
|US7580350||Apr 28, 2004||Aug 25, 2009||Extreme Networks, Inc.||System for deriving packet quality of service indicator|
|US7596621 *||Aug 26, 2003||Sep 29, 2009||Astute Networks, Inc.||System and method for managing shared state using multiple programmed processors|
|US7599361||Jul 2, 2004||Oct 6, 2009||P-Cube Ltd.||Wire-speed packet management in a multi-pipeline network processor|
|US7606263||Oct 20, 2009||Extreme Networks, Inc.||Packet parser|
|US7646770||Jan 12, 2010||Extreme Networks, Inc.||Systems for supporting packet processing operations|
|US7649879||Apr 28, 2004||Jan 19, 2010||Extreme Networks, Inc.||Pipelined packet processor|
|US7675915||Oct 25, 2007||Mar 9, 2010||Extreme Networks, Inc.||Packet processing system architecture and method|
|US7774496||Jun 21, 2007||Aug 10, 2010||International Business Machines Corporation||System and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US7814218||Oct 12, 2010||Astute Networks, Inc.||Multi-protocol and multi-format stateful processing|
|US7817546||Oct 19, 2010||Cisco Technology, Inc.||Quasi RTP metrics for non-RTP media flows|
|US7817633||Dec 30, 2005||Oct 19, 2010||Extreme Networks, Inc.||Method of providing virtual router functionality through abstracted virtual identifiers|
|US7822033||Dec 30, 2005||Oct 26, 2010||Extreme Networks, Inc.||MAC address detection device for virtual routers|
|US7835406||Nov 16, 2010||Cisco Technology, Inc.||Surrogate stream for monitoring realtime media|
|US7889750||Dec 30, 2005||Feb 15, 2011||Extreme Networks, Inc.||Method of extending default fixed number of processing cycles in pipelined packet processor architecture|
|US7894451||Feb 22, 2011||Extreme Networks, Inc.||Method of providing virtual router functionality|
|US7916746||Mar 29, 2011||Atheros Communications, Inc.||Media access control protocol with priority and contention-free intervals|
|US7936687||Apr 28, 2004||May 3, 2011||Extreme Networks, Inc.||Systems for statistics gathering and sampling in a packet processing system|
|US7936695||May 3, 2011||Cisco Technology, Inc.||Tunneling reports for real-time internet protocol media streams|
|US7996520||Sep 19, 2007||Aug 9, 2011||Cisco Technology, Inc.||Behavioral classification of communication sessions using active session initiation|
|US8015303||Aug 2, 2002||Sep 6, 2011||Astute Networks Inc.||High data rate stateful protocol processing|
|US8023419||May 14, 2007||Sep 20, 2011||Cisco Technology, Inc.||Remote monitoring of real-time internet protocol media streams|
|US8073005||Dec 6, 2011||Cypress Semiconductor Corporation||Method and apparatus for configuring signal lines according to idle codes|
|US8149643||Oct 23, 2008||Apr 3, 2012||Cypress Semiconductor Corporation||Memory device and method|
|US8149703||Jun 26, 2002||Apr 3, 2012||Qualcomm Atheros, Inc.||Powerline network bridging congestion control|
|US8151278||Sep 11, 2008||Apr 3, 2012||Astute Networks, Inc.||System and method for timer management in a stateful protocol processing system|
|US8301982||Oct 30, 2012||Cisco Technology, Inc.||RTP-based loss recovery and quality monitoring for non-IP and raw-IP MPEG transport flows|
|US8358557||Sep 26, 2011||Jan 22, 2013||Cypress Semiconductor Corporation||Memory device and method|
|US8397285 *||Oct 7, 2009||Mar 12, 2013||Intel Corporation||Multi-pattern packet content inspection mechanisms employing tagged values|
|US8605732||Feb 15, 2011||Dec 10, 2013||Extreme Networks, Inc.||Method of providing virtual router functionality|
|US8819714||May 19, 2010||Aug 26, 2014||Cisco Technology, Inc.||Ratings and quality measurements for digital broadcast viewers|
|US8867385||Apr 5, 2011||Oct 21, 2014||Cisco Technology, Inc.||Tunneling reports for real-time Internet Protocol media streams|
|US8966551||Nov 1, 2007||Feb 24, 2015||Cisco Technology, Inc.||Locating points of interest using references to media frames within a packet flow|
|US9197857||May 1, 2009||Nov 24, 2015||Cisco Technology, Inc.||IP-based stream splicing with content-specific splice points|
|US20020049922 *||Oct 9, 2001||Apr 25, 2002||Neocore Inc.||Search engine system and method|
|US20020103925 *||Dec 6, 2000||Aug 1, 2002||Sheth Siddharth C.||Generic programmable internet protocol classification technique for a broadband engine|
|US20020116527 *||Dec 21, 2000||Aug 22, 2002||Jin-Ru Chen||Lookup engine for network devices|
|US20030043802 *||Aug 5, 2002||Mar 6, 2003||Takeki Yazaki||Packet transferring method and apparatus that employs the same|
|US20030058864 *||Nov 12, 2002||Mar 27, 2003||Michels Timothy Scott||Network switching device with pipelined search engines|
|US20030204584 *||Apr 26, 2002||Oct 30, 2003||P-Cube Ltd.||Apparatus and method for pattern matching in text based protocol|
|US20040024894 *||Aug 2, 2002||Feb 5, 2004||Osman Fazil Ismet||High data rate stateful protocol processing|
|US20040230984 *||Feb 17, 2004||Nov 18, 2004||Adams Wayne M.||System and method for web application propagation|
|US20040240447 *||May 28, 2004||Dec 2, 2004||Dorbolo Riccardo G.||Method and system for identifying bidirectional packet flow|
|US20050149600 *||Dec 17, 2003||Jul 7, 2005||International Business Machines Corporation||Method, system and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US20050190694 *||Sep 30, 2004||Sep 1, 2005||P-Cube||Method and apparatus for wire-speed application layer classification of upstream and downstream data packets|
|US20050195743 *||Sep 22, 2004||Sep 8, 2005||P-Cube Ltd.||Real time charging of pre-paid accounts|
|US20050226242 *||Apr 28, 2004||Oct 13, 2005||Parker David K||Pipelined packet processor|
|US20060002392 *||Jul 2, 2004||Jan 5, 2006||P-Cube Ltd.||Wire-speed packet management in a multi-pipeline network processor|
|US20060126624 *||Feb 15, 2006||Jun 15, 2006||Hitachi, Ltd.||Packet transfer apparatus with the function of flow detection and flow management method|
|US20060221929 *||Jul 8, 2004||Oct 5, 2006||Olivier Le Moigne||Description of packet in a packet communication network|
|US20070153808 *||Dec 30, 2005||Jul 5, 2007||Parker David K||Method of providing virtual router functionality|
|US20070177604 *||Dec 21, 2006||Aug 2, 2007||Hitachi, Ltd.||Network system for managing QoS|
|US20070248096 *||Jun 21, 2007||Oct 25, 2007||International Business Machines Corporation||System and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US20070280248 *||Aug 20, 2007||Dec 6, 2007||International Business Machines Corporation||Method for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables|
|US20080043628 *||Oct 25, 2007||Feb 21, 2008||Parker David K||Packet processing system architecture and method|
|US20080239196 *||May 23, 2008||Oct 2, 2008||Hitachi, Ltd.||Liquid crystal display device|
|US20080285463 *||Jun 12, 2007||Nov 20, 2008||Cisco Technology, Inc.||Tunneling reports for real-time internet protocol media streams|
|US20080310316 *||Jun 18, 2007||Dec 18, 2008||Cisco Technology, Inc.||Surrogate Stream for Monitoring Realtime Media|
|US20090119722 *||Nov 1, 2007||May 7, 2009||Versteeg William C||Locating points of interest using references to media frames within a packet flow|
|US20090217318 *||May 1, 2009||Aug 27, 2009||Cisco Technology, Inc.||Ip-based stream splicing with content-specific splice points|
|US20100088756 *||Oct 7, 2009||Apr 8, 2010||Intel Corporation||Multi-pattern packet content inspection mechanisms employing tagged values|
|US20100103762 *||Oct 23, 2008||Apr 29, 2010||Joseph Tzou||Memory device and method|
|US20100138432 *||Dec 1, 2008||Jun 3, 2010||Micron Technology, Inc.||Systems and Methods to Enable Identification of Different Data Sets|
|US20110119546 *||Nov 18, 2009||May 19, 2011||Cisco Technology, Inc.||Rtp-based loss recovery and quality monitoring for non-ip and raw-ip mpeg transport flows|
|CN102232213B *||Nov 17, 2009||Jul 8, 2015||美光科技公司||Systems and methods to enable identification of different data sets|
|WO2010065295A1 *||Nov 17, 2009||Jun 10, 2010||Micron Technology, Inc.||Systems and methods to enable identification of different data sets|
|WO2014205660A1 *||Jun 26, 2013||Dec 31, 2014||Huawei Technologies Co., Ltd.||Method, apparatus and routing device for forwarding data packet|
|U.S. Classification||709/238, 709/233, 709/234, 707/999.003|
|Cooperative Classification||Y10S707/99933, H04L47/2441, H04L47/10|
|European Classification||H04L47/24D, H04L47/10|
|Feb 17, 1999||AS||Assignment|
Owner name: PMC-SEIRRA, INC., CANADA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTEGRATED TELECOM TECHNOLOGY, INC.;REEL/FRAME:009765/0103
Effective date: 19980513
|Jun 7, 1999||AS||Assignment|
Owner name: PMC-SIERRA, INC., CANADA
Free format text: TO CORRECT ASSIGNEE S NAME ON RECORDATION FORM COVER SHEET CONCERNING THE MERGER, PREVIOUSLY RECORDED AT REEL 9765, FRAME 0103.;ASSIGNOR:INTEGRATED TELECOM TECHNOLOGY, INC.;REEL/FRAME:009999/0290
Effective date: 19980513
|Sep 16, 1999||AS||Assignment|
Owner name: PMC-SIERRA, INC., CANADA
Free format text: TO CORRECT ASSIGNEE S STREET ADDRESS ON RECORDATION FORM COVER SHEET CONCERNING THE MERGER; RECORDATION DATE 06/07/99, REEL 009999, FRAME 0290.;ASSIGNOR:INTEGRATED TELECOM TECHNOLOGY, INC.;REEL/FRAME:010295/0150
Effective date: 19980513
|Jan 26, 2005||FPAY||Fee payment|
Year of fee payment: 4
|Jan 23, 2009||FPAY||Fee payment|
Year of fee payment: 8
|Jan 16, 2013||FPAY||Fee payment|
Year of fee payment: 12
|Aug 6, 2013||AS||Assignment|
Owner name: BANK OF AMERICA, N.A., NORTH CAROLINA
Free format text: SECURITY INTEREST IN PATENTS;ASSIGNORS:PMC-SIERRA, INC.;PMC-SIERRA US, INC.;WINTEGRA, INC.;REEL/FRAME:030947/0710
Effective date: 20130802
|Feb 1, 2016||AS||Assignment|
Owner name: PMC-SIERRA US, INC., CALIFORNIA
Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:037675/0129
Effective date: 20160115
Owner name: WINTEGRA, INC., CALIFORNIA
Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:037675/0129
Effective date: 20160115
Owner name: PMC-SIERRA, INC., CALIFORNIA
Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:BANK OF AMERICA, N.A.;REEL/FRAME:037675/0129
Effective date: 20160115
|Feb 3, 2016||AS||Assignment|
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., NEW YORK
Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.);MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.);REEL/FRAME:037689/0719
Effective date: 20160115