US20090213856A1 - System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream - Google Patents

System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream Download PDF

Info

Publication number
US20090213856A1
US20090213856A1 US12/437,573 US43757309A US2009213856A1 US 20090213856 A1 US20090213856 A1 US 20090213856A1 US 43757309 A US43757309 A US 43757309A US 2009213856 A1 US2009213856 A1 US 2009213856A1
Authority
US
United States
Prior art keywords
packet
memory
header
data
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/437,573
Inventor
Jeremy B. Paatela
Scott A. Sarkinen
Hemant Vrajlal Trivedi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RPX Corp
Original Assignee
SLT Logic LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SLT Logic LLC filed Critical SLT Logic LLC
Priority to US12/437,573 priority Critical patent/US20090213856A1/en
Publication of US20090213856A1 publication Critical patent/US20090213856A1/en
Assigned to SLT LOGIC LLC reassignment SLT LOGIC LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PAATELA, JEREMY B., SARKINEN, SCOTT A., TRIVEDI, HEMANT VRAJLAL
Assigned to RPX CORPORATION reassignment RPX CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SLT LOGIC LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J2203/00Aspects of optical multiplex systems other than those covered by H04J14/05 and H04J14/07
    • H04J2203/0001Provisions for broadband connections in integrated services digital network using frames of the Optical Transport Network [OTN] or using synchronous transfer mode [STM], e.g. SONET, SDH
    • H04J2203/0073Services, e.g. multimedia, GOS, QOS
    • H04J2203/0082Interaction of SDH with non-ATM protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • This invention relates in general to communication networks, and more particularly to a method and apparatus for transforming packets in a multi-protocol, multi-flow data stream.
  • Enhancing today's networking technology is a perpetual goal in the communications industry. As the raw speeds of large-scale and personal computing devices soar, the tremendous increase in data transmission demands continue to push the networking bandwidth envelope to capacity. As bandwidth-intensive multimedia content continues to gain popularity and course the veins of the Internet, the unrelenting bandwidth dilemma is no less urgent today than yesterday. This demand has fueled the need for high-bandwidth broadband systems.
  • broadband has often been used to describe high-bandwidth transmission of data signals, such as data, video, voice, video conferencing, etc.
  • Broadband philosophies often address networking principles applicable to the backbone of the networking system, since the networking backbone generally faces the highest bandwidth demands.
  • the term “frame” is often used in reference to encapsulated data at OSI layer 2, including a destination address, control bits for flow control, the data or payload, and CRC (cyclic redundancy check) data for error checking.
  • the term “packet” is often used in reference to encapsulated data at OSI layer 3.
  • the term “cell” is often used in reference to a group of bytes/octets conditioned for transmission across a network.
  • packet, frame, and cell may be used interchangeably to refer to groups or collections of data.
  • a packet format or frame format generally refers to how data is encapsulated with various fields and headers for transmission across the network.
  • a data packet typically includes a destination address field, a length field, an error correcting code (ECC) field or cyclic redundancy check (CRC) field, as well as headers and trailers to identify the beginning and end of the packet.
  • ECC error correcting code
  • CRC cyclic redundancy check
  • Packets transmitted across a network are associated with a transmission protocol.
  • a protocol is a set of rules that governs how devices on a network exchange information. Packets traversing the network may be of differing formats or “protocols.” This is often due to the development of incompatible proprietary protocols by computer manufacturers. While protocol compatibility and standardization are becoming increasingly important, even standard protocols provide multiple options and are not always interchangeable between applications. Further, new protocols will continue to be developed to address certain network limitations, or to otherwise improve network data transmission. All of these factors contribute to the reality that multiple transmission protocols exist, and will likely continue to exist.
  • IP Internet Protocol
  • FAST Framed ATM over SONET/SDH Transport
  • MPLS IP on multiprotocol label switching
  • ATM asynchronous transfer mode
  • MPLS integrates layer-2 information about network links into layer-3 (IP) within a particular autonomous system in order to simplify and improve IP-packet exchange.
  • IP layer-3
  • MPLS essentially provides connection-oriented labeling in an otherwise connectionless environment, which has resulted in MPLS being considered associated with layer-2.5.
  • MPLS With MPLS, different flows can be classified, and different service levels can be associated with the different flow classifications.
  • packets transmitted on a network such as the Internet may be associated with one of a number of different protocols, and thus packets associated with different protocols may be received at a given node, switch, router, etc.
  • packets associated with different protocols may be received at a given node, switch, router, etc.
  • the introduction of multiple packet protocols at a node requires special consideration when the entire data flow is subject to editing as the packets traverse the network.
  • Packets, frames, cells, and/or other data units traversing a network such as the Internet often face the possibility of being modified at a given network node.
  • a variety of situations may result in a need to modify or “transform” the packet.
  • a packet reaching a node may need to be redirected from its original course to an alternate course. This can occur where an originally-intended node along the path becomes unavailable due to server problems, transmission cables being cut or otherwise damaged, and the like.
  • a “destination address” identified in a packet may require modification to alter the path of the packet in its quest to reach the ultimate destination.
  • Another example of packet editing include the potential need to change header fields of the packet, such as packet length and checksum fields.
  • the checksum and/or packet length fields are very likely to change, resulting in the need to further modify the packet to update such fields.
  • Other fields include the time-to-live (TTL), packet conformance indicators such as colorations and drop priorities, etc.
  • TTL time-to-live
  • packet conformance indicators such as colorations and drop priorities, etc.
  • individual packets that make up a communications traffic stream can be classified into several flows or connections. Further, the traffic stream flows may include packets being transmitted in connection with different protocols. This can pose a challenge to editing systems, and typically requires that each of the flows be discretely handled. Due to very high data transmission speeds in today's networks, editing methods have conventionally required custom solutions, generally in the form of specialized, proprietary hardware engines in application-specific integrated circuits (ASICs). Because information may be transmitted across networks (e.g., the Internet) using a variety of different networking protocols, multiple specialized circuits are generally required to accommodate packets of each packet protocol that might traverse the network switch, router, bridge, or other intermediate system between the source and destination. For example, a separate packet transformation methodology, and therefore separate ASIC, may be required for each packet protocol used in the network. This results in higher costs, part counts, and general complexities, while adversely impacting system efficiencies.
  • ASICs application-specific integrated circuits
  • the present invention fulfills these and other needs, and offers other advantages over the prior art policing approaches.
  • the present invention discloses a system, apparatus and method for facilitating packet transformation of multi-protocol, multi-flow, streaming data.
  • a packet transformation module for editing multi-protocol streaming data packets.
  • An instruction memory receives search words identifying a packet type for the packet, and outputs appropriate instructions based on the packet type as indexed by the search words.
  • a packet memory is coupled to receive one or more portions of the packet subject to editing, where each of the packet portions is stored in a respective memory segment of the packet memory.
  • the packet transformation module further includes a valid bit array that has memory validity fields associated with respective memory segments. The state of each of the memory validity fields establishes whether the packet portion in the respective memory segment is to be incorporated into the resulting packet portion.
  • a processing module receives the instructions from the instruction memory, and carries out the packet transformations on the packet portions in accordance with the instructions.
  • An ingress processing module is also provided.
  • the ingress processing module includes such a packet transformation module, as well as a packet parser to parse each packet, and generate resulting search words based on the packet protocol.
  • a network system is also provided which includes such an ingress processing module at an intermediary network node between the source and destination nodes, where the source node dispatches the information onto the network, and the destination node is the node to which the information is targeted.
  • a method for editing packets of a packet stream received at a network node.
  • the method includes storing packet segments in partitionable memory segments of a modification memory.
  • One or more editing instructions are elicited from an instruction memory, where the particular editing instructions elicited is based on characteristics of the packet.
  • At least one packet segment stored in the modification memory is modified as directed by the editing instructions.
  • Validity tags are associated with each of the memory segments to indicate whether or not their corresponding packet segments will be incorporated into a resulting modified packet.
  • the resulting modified packet is created by assembling the packet segments associated with those validity tags that indicate incorporation into the resulting modified packet.
  • FIG. 1 is a block diagram illustrating a networking environment in which the principles of the present invention may be applied;
  • FIG. 2 is a block diagram of an embodiment of a router system in which the present invention may be applied;
  • FIG. 3 is a block diagram of an exemplary embodiment of an ingress processing system in accordance with the present invention.
  • FIG. 4 is a block diagram of an embodiment of the interaction between the parsing engine, its corresponding memory, and the editor.
  • FIG. 5 is a block diagram illustrating selected functional blocks of an ingress processing system in accordance with the invention.
  • FIG. 6 is a block diagram illustrating selected functional blocks of an ingress processing system utilizing embedded memory in accordance with the invention.
  • FIG. 7 is a block diagram of an editing apparatus in accordance with one embodiment of the invention.
  • FIG. 8 illustrates a representative list of editor instructions in accordance with one embodiment of the invention
  • FIG. 9 is an exemplary editor instruction format which may be used in connection with the present invention.
  • FIG. 10 provides an exemplary illustration of receipt of a packet, partitioning the header information with interleaved memory space, editing of the information, and reassembly of a resulting packet;
  • FIG. 11 illustrates an embodiment of an editing module whereby a primary processor controls various processing modules, such as the editor module, input processor, output processor, and macro sequencer;
  • FIG. 12 illustrates another exemplary embodiment of an editor module wherein a primary editor processor is used in connection with other editing components
  • FIG. 13 illustrates an example of a packet transformation at a router handling an IP/Ethernet source route in accordance with the principles of the present invention
  • FIG. 14 illustrates another example in accordance with the invention of a packet transformation at a router handling an IP/Ethernet source route, where IP tunneling modifications are also desired;
  • FIG. 15 illustrates another example in accordance with the invention of a packet transformation at a router within a multiprotocol label switching (MPLS) domain;
  • MPLS multiprotocol label switching
  • FIG. 16 illustrates yet another example in accordance with the invention of a packet transformation at a router at the egress edge of an MPLS domain
  • FIG. 17 is a flow diagram illustrating an embodiment of a method for modifying a packet stream in accordance with the present invention.
  • the present invention provides a system and method for facilitating packet transformation of multi-protocol, multi-flow, streaming data.
  • Packets of the data stream being communicated across the network using different transmission protocols can be appropriately edited regardless of the transmission protocol associated with the packets.
  • Portions of each packet that are subject to change (but may not necessarily be changed) are temporarily stored.
  • Certain instructions for effecting appropriate modifications to the particular packet are processed, with due consideration to the packet's protocol, which results in a protocol-dependent modification of the temporarily stored packet information.
  • Validity tags are associated with different segments of the temporarily-stored packet, where the state of each tag determines whether its corresponding packet segment will form part of the resulting modified packet. Those packet segments identified as being part of the resulting modified packet are reassembled prior to dispatch of the packet.
  • Data transmitted over networks such as the Internet 10 may be in the form of e-mail messages, file transfers and downloads, web page loading, and the like.
  • the data is generally broken up into a number of data packets, each of which is assigned a hierarchy of headers to direct the data packet to the desired destination, among other things.
  • Each packet is separately dispatched to the destination, although more than one different route may be taken by the different packets associated with the data.
  • the source computer 100 of FIG. 1 may be configured in a local area network (LAN) and coupled to other computers 102 via a hub 104 .
  • a first one or more data packets may reach the hub 110 of the destination LAN via a first path, through routers 112 , 114 , 116 , 118 , 120 , and 122 .
  • a second one or more data packets may reach the hub 110 via a second path, such as through routers 112 , 124 , 126 , 116 , 128 , and 122 .
  • These different packets may take alternative routes due to equipment congestion or failure of a node, or to load share where possible.
  • the routers associated with the core of the Internet can reconfigure the paths that these packets follow.
  • the routers handling data at the major traffic points on large networks, such as the Internet, are generally large stand-alone systems. After transmitting the data from node to node through the network, the packets are reassembled at the receiving end and availed to the desired destination system 140 .
  • routers Because of the colossal bandwidth demands required of routers, a continual emphasis is placed on alleviating data throughput bottlenecks at routers, gateways, bridges, and other intermediate nodes along the network. Because routers take on the task of intercepting, analyzing, and moving on millions of packets per second along the best possible route, the processing occurring at these routers must be extremely efficient to avoid bogging down the system.
  • the present invention may be used in connection with such routing systems, increasing speed and efficiencies of network data throughput.
  • the present invention may be used in connection with multiprotocol route/flow classifying and policing engines.
  • the packet transformation in accordance with the present invention is housed in a package or chip common to the classifier and policing functionalities.
  • the device enables advanced services to be applied at speeds of 10 Gbps or more.
  • Tightly coupled parsing, policing, and packet transformation allows the collective device to perform dynamic packet transformation for quality of service (QoS) based on the current flow state and also effectively handles dynamic header processing such as required by multiprotocol label switching (MPLS) routers.
  • QoS quality of service
  • MPLS multiprotocol label switching
  • FIG. 2 one embodiment of a router system 200 is illustrated in which the present invention may be applied.
  • One or more line cards are provided, each of which are coupled to a switch fabric 202 .
  • a plurality of line cards are provided, including line card-0 204 , line card-1 206 through a finite number of line cards represented by line card-n 208 .
  • each of the line cards utilize analogous circuitry.
  • Line card-0 204 will therefore be described, with the understanding that one or more of the remaining line cards in the router system may implement analogous circuitry.
  • the line card-0 204 of the illustrated embodiment receives as input packet-over-SONET/SDH (POS) frames via the network.
  • SONET/SDH is a high-speed time division multiplexing (TDM) physical-layer transport technology.
  • POS provides a means for using the speed and management capabilities of SONET/SDH to optimize data transport, although originally optimized for voice.
  • a SONET/SDH frame is 810 bytes and is normally represented as a two-dimensional byte-per-cell grid of 9 rows and 90 columns.
  • the SONET/SDH frame is divided into transport overhead and payload bytes.
  • the transport overhead bytes include section and line overhead bytes, while the payload bytes are made up of the payload capacity and some more overhead bytes referred to as path overhead.
  • the overhead bytes are responsible for the management capabilities of SONET/SDH.
  • the basic transmission rate of SONET (51.840 Mbps), referred to as Synchronous Transport Signal level 1 (STS-1), is achieved by sampling the 810-byte frames at 8000 frames per second.
  • SONET features an octet-synchronous multiplexing scheme with transmission rates in multiples of 51.840 Mbps, whereby STS-192 thereby provides transmission at approximately 10 Gbps.
  • Packet Over SONET/SDH (POS) allows core routers to send native IP packets directly over SONET/SDH frames. POS provides a relatively low packet overhead and cost per Mbit than other data transport methods, which allows POS to efficiently support increases in IP traffic over existing and new fiber networks.
  • incoming POS OC-192 frames 210 originate from another OC-192 device (not shown) and arrive at the line card-0 204 at the ingress framer 212 .
  • the frames are transferred to the ingress processing circuit 214 via an interface 216 , such as the Optical Internetworking Forum (OIF) System Packet Interface-4 (SPI-4).
  • OIF SPI-4 describes a data path interface between the physical and link layers to support physical line data rates up to 10 Gb/s, and may be used in connection with the present invention, as may other interfaces of appropriate speed.
  • Ingress processing circuit 214 which in one embodiment of the invention is housed in a single chip, performs the necessary lookups, policing, and editing of the packet. If necessary, the frame can be redirected to the host processor.
  • the frames are fed out of the ingress processing circuit 214 via an OIF SPI-4 interface 218 to a Fabric Interface Chip (FIC) circuit 220 .
  • the FIC 220 converts the stream from one format to another, such as from POS frames to Common Switch Interface (CSIX) cells, and distributes the cells over the switch fabric 202 .
  • CSIX Common Switch Interface
  • cells switched at the switch fabric 202 may be received at the FIC 222 and provided to the egress processing circuit 224 .
  • Frames are transferred to the egress framer 226 , and output as POS OC-192 frames 228 .
  • a processor 230 may be coupled to the ingress processing circuit 214 and the egress processing circuit 224 to perform a variety of functions, including providing coprocessor support.
  • Memories 232 , 234 represent one or more memories associated with the ingress processing module 214 and the egress processing module 224 respectively.
  • an exemplary embodiment of an ingress processing system 300 in accordance with the present invention is provided.
  • the system 300 is described as an example of a system in which the principles of the present invention may be applied.
  • the ingress processing system 300 interfaces to industry standard physical layer devices such as an OC-192 framer 302 .
  • a portion of the ingress processing system 300 is housed on a single chip, illustrated in FIG. 3 as chip 304 . While the invention is equally applicable where the physical chip boundaries differ from that illustrated in FIG. 3 , the present invention is particularly efficient and useful in such a tightly coupled arrangement.
  • the interface 306 such as an OIF interface, provides the interface between the ingress processing circuit 304 and the framer 302 .
  • the interface 306 is a 200 MHz OIF SPI-4 interface including a 64-bit data input.
  • An elasticity buffer 308 which in one embodiment is a first-in-first-out (FIFO), provides temporary packet storage which allows table maintenance updates to be performed without dropping frames.
  • the pre-processor 310 performs a variety of functions, including packet verification and discarding, packet protocol identification, statistics compilation, and others.
  • the packet protocol identification includes classifying the type of frame that has been received.
  • the pre-processor identifies each layer protocol using a multistage algorithm coupled with a content-addressable memory (CAM) and memory (such as an SRAM) for resolving protocols.
  • CAM content-addressable memory
  • SRAM static random access memory
  • the parsing engine 312 performs layer classification and tagging via a search engine.
  • One of the various functions of the parsing engine 312 is to parse the frames processed by the pre-processor, and generate search keys from data anywhere within the frame.
  • the protocol layer code is used as a start vector into an instruction memory, which contains instructions for the parsing engine 312 and pointers to access selected words in a frame buffer.
  • the parsing engine 312 receives the instruction and performs the functions selected by the corresponding instruction operational code.
  • the results are used with an extractor that builds search keys which can be applied against a CAM (or indexed directly to a memory) to generate “search results” that contain the frame classification.
  • parsing/classifying may be performed in a manner described herein and in copending U.S. patent application Ser. No. 09/849,913, entitled “A Method And Apparatus For Providing Multi-Protocol, Multi-Stage, Real-Time Frame Classification,” filed concurrently herewith and assigned to the assignee of the instant application, the contents of which are incorporated herein by reference in its entirety.
  • the policing engine 313 performs a variety of functions, including ensuring flow conformance to a maximum allowed peak rate and a contractually obliged committed rate flow, utilizing, for example, DiffServ IP and MPLS.
  • the policing engine 313 works with memory, such as policing RAM 315 which stores a drop policy for each connection.
  • the editor 314 also referred to as a packet transformation engine, utilizes the search results to index the appropriate editing instructions to be executed by an editing module.
  • the editor 314 facilitates execution of multiple edits or “transformations” per packet as streaming data of various networking protocols associated with different networking layers is input into the editing module.
  • the editor 314 supports comprehensive packet manipulation capability, including full MPLS labels, DAC operations such as multiple push and pop operations, as well as traditional routing operations such as TTL edits, checksum edits, policing edits, and other routing operations.
  • the editor 314 therefore performs required frame/packet transformations to support routing of multi-protocol packets, such as IP, FAST, VPN, MPLS, etc. The editor is described more fully below.
  • the labeled traffic is ultimately directed to the switch fabric interface 316 through one or more traffic directors 318 , 320 and output buffer 322 .
  • the traffic director 318 accepts frames from the editor 314 , which are then passed to an output buffer 322 and/or the processor buffer 340 via the interface 341 .
  • Traffic director 320 accepts frames from the output buffer 322 and the processor transmit buffer 342 , and passes the frames to the OIF interface 344 to the switch fabric interface 316 .
  • FIG. 4 one embodiment of the interaction of the parsing engine 312 , its corresponding memory 330 , 332 , and the editor 314 is shown.
  • This diagram illustrates the generation of the search keys, which ultimately identify the appropriate search results to be accessed from the memory.
  • the parser 400 (corresponding to parsing engine 312 of FIG. 3 ) outputs up to four “keys”, labeled key-0 402 , key-1 404 , key-2 406 , and key-3 408 . These keys are sent to the content-addressable memory (CAM) and associated memory (collectively SRAM/CAM 409 ) via signal paths 410 .
  • CAM content-addressable memory
  • SRAM/CAM 409 An example of such a CAM is shown as CAM 330 in FIG. 3 .
  • the CAM In response, the CAM outputs an address to the associated SRAM, such as SRAM 332 in FIG. 3 .
  • the “keys” therefore identify the appropriate address information stored in the CAM, in order to address the desired search result information stored in the SRAM.
  • the SRAM or other memory, outputs the search results, shown in FIG. 4 as output on signal paths 412 . Up to four search results can be addressed by a corresponding number of keys, and these four search results are illustrated as result-0 414 , result-1 416 , result-2 418 , result-3 420 .
  • the search results are provided to the editor module as shown on signal paths 422 .
  • FIG. 5 is a block diagram illustrating selected functional blocks of an ingress processing system such as that described in connection with FIG. 3 .
  • the ingress processing system 500 of FIG. 5 illustrates the classifier functional block 502 , the policer functional block 504 , and the editor functional block 506 .
  • the classifier 502 builds queries (search words) to directly index a memory such as SRAM 510 , or alternatively may search against a CAM 512 which in turn provides addresses to the SRAM 510 .
  • the policer 504 performs a variety of functions, including ensuring flow conformance to a maximum allowed peak rate and a contractually obliged committed rate flow, utilizing, for example, DiffServ IP and MPLS.
  • the policer 504 works with memory, such as SRAM 514 which stores a drop policy for each connection.
  • the editor 506 supports policing results and makes other appropriate modifications to the packet before being output from the ingress processing system 500 .
  • An external memory such as SRAM 516 , may be used to store the editor instructions.
  • the coprocessor/CPU interface 508 provides for coprocessor/CPU support via interface 508 , thereby allowing processor control, configuration, etc. of the classifier 502 , policer 504 and editor 506 .
  • the interface 508 allows the system 500 to be coupled to a coprocessor and/or other CPU such as CPU 520 , and to memory such as SRAM 522 .
  • the ingress processing system 500 receives incoming packets, classifies and parses the packets according to predetermined criteria such as protocol, enforces policing functions on the packets, and modifies the packets accordingly before outputting the packets to the switch fabric.
  • the classifier 502 , policer 504 , editor 506 and coprocessor/CPU interface 508 are all provided on a single chip.
  • the unique architecture combines the three key functions of classifying, policing and editing the data all through the tightly coupled arrangement facilitated by the integration into a common chip.
  • the buffers and memory identified in FIG. 5 may also be incorporated into the common chip, as shown in the embodiment of FIG. 6 .
  • the SRAM 514 is integrated with the policer 504
  • the SRAM 516 is integrated with the editor 506 , and so on. Embedding these memories on the chip provides a lower chip count solution and increased “per flow” statistics.
  • FIG. 7 is a block diagram of an editing system 700 in accordance with one embodiment of the invention.
  • the editing system 700 also referred to as a packet transformation system, includes an editing module 702 and an instruction memory 704 .
  • the editing system 700 provides an elastic queue to the downstream traffic director, and as described more fully below, allows for packet modification, and packet transformation such as from SONET packets to Ethernet packets, etc.
  • Inputs to the editing system 700 include packet/frame input ultimately originating from the pre-processor or the classifier and labeled as the “packet input” 706 . Also input to the editing system 700 are the search results 708 . These search results provide indices into the editor's 702 instruction memory 704 , which is part of a memory 703 such as an SRAM. Policing results 710 from the policer 711 are also input to the editing module 702 to provide, for example, packet color modifications. The editing system 700 outputs modified packets 712 , and in one embodiment, outputs the modified (and unmodified) packets to an elastic queue that is accessible by the traffic director.
  • the editing system 700 retrieves instructions and data from memory 703 to perform corresponding actions.
  • the memory 703 and the instruction memory 704 are comprised of SRAM, and together comprise an external, non-embedded circuit to the editing module 702 .
  • the memory 703 is accessed independent of the editor itself, and configuration is performed with a register access interface (not shown).
  • the instruction memory 704 is read via an index provided in the search result 708 .
  • the search result 708 includes a “valid flag” indicating the search result is usable, and an “editor use” identifier within the search result 708 data indicating that the editing system 700 is to use the corresponding search result.
  • editor instructions and associated editor data are read from the external memory 703 , they are provided to the editing processor 714 .
  • the editing processor 714 includes a processing module such as a microprocessor, RISC processor, central processing unit, arithmetic processing unit (ALU), or other processor known in the art.
  • the editing processor 714 is provided with editor instructions from the instruction memory 704 and associated editor data from the memory 703 .
  • the editor instructions are executed to perform packet modifications and provide packet steering information.
  • These instructions include general purpose data manipulation instructions such as write instructions, register swap instructions, etc., and also may include special purpose instructions specifically crafted to perform one or more predetermined operations.
  • special purpose instructions may be particularly useful to perform certain networking-specific tasks that depend on the particular networking protocol. For example, specific instructions can be created to “pop” the top label in an MPLS label stack and swap the next MPLS label with a new label. This can be performed through a specifically-created instruction, or alternatively may be performed through a series of more generic instructions.
  • example operations corresponding to editor instructions in accordance with one embodiment of the invention are provided in FIG. 8 .
  • FIG. 8 illustrates a representative list of editor instructions in accordance with one embodiment of the invention.
  • the representative editor instructions are listed in column 800 , along with its corresponding description in column 802 .
  • Certain instructions may be general purpose to perform basic transformations and other instructions may be provided to handle specific packet protocols.
  • the general purpose instructions will typically be available while the specific instructions per protocol may be optional.
  • one instruction may apply to multiprotocol label switching (MPLS) methodologies, where label switching is employed.
  • MPLS multiprotocol label switching
  • Label switching refers to the approaches of forwarding IP (or other network layer) packets using label swapping forwarding algorithms under the control of network layer routing algorithms.
  • a label-switched router is a device that implements such label switching.
  • the classifier can identify which packets have been adapted for transmission in the MPLS domain, and the search results generated by the classifier can then be used to index the appropriate instruction(s) to operate on those MPLS packets.
  • the editing instructions illustrated in FIG. 8 are for purposes of illustration and not of limitation. These exemplary editing instructions allow the packets to be edited in various beneficial manners.
  • the No-Op instruction performs no operation.
  • a variety of general purpose instructions are provided, including the Write1, Write 2, Delete1, Delete2, Read-Modify-Write with Mask, and Read-Modify-Write with Default Mask.
  • the Swap instruction causes a swap of the top memory element, such as the top MPLS label on an MPLS label stack.
  • a Swap/Push1 instruction swaps the top memory element (e.g., MPLS label) and pushes one other data element (e.g., MPLS label) to the top position.
  • the Swap/Push2 instructions operates analogously, but pushes two other data elements to the top of the memory space.
  • the Push1 and Push2 instructions operate analogously, and push one or two data elements, respectively, to the top of the memory space.
  • a Push 1 instruction may be used to push one MPLS label to the top of the MPLS stack.
  • Pop1, Pop2, and PopAll instructions respectively pop the top one, two, or all data elements from the memory space.
  • the Pop2 instruction may be used to pop the two current top MPLS labels from the MPLS stack.
  • a Pop/Swap instruction pops the top data element and swaps the next data element.
  • a Pop1/Swap instruction may be used to pop the current top MPLS label and swap the next.
  • a Push1 instruction may, in one embodiment of the invention, be dedicated to packets implementing the MPLS protocol such that execution of a Push1 instruction is only executed when a packet is an MPLS packet. This allows the multi-protocol ingress processing system to have generic, more specific, or very specific instructions addressable by search results that are based on parameters derived from the packet to be modified.
  • associated editor data is provided.
  • This editor data is, in one embodiment, stored with the instruction in the external memory 703 .
  • the width of the editor data may vary. For example, in one embodiment, a 32-bit data segment is used in connection with the Swap, Push, Pop1/Swap, Write 1, and Read-Modify-Write with Default Mask editor instructions. Further, a 64-bit data segment is used in connection with the Swap/Push1, Push2, Read-Modify-Write with Mask, and Write2 editor instructions. Finally, in accordance with this particular embodiment, a 96-bit data segment is used in connection with the Swap/Push2 editor instruction, as three data words are used for the Swap and either Push operations.
  • Editor instructions such as those set forth in FIG. 8 , represent those instructions used to modify packets/frames.
  • the editor instructions also contain information used to drop the packet or steer the packet to its downstream destination(s).
  • FIG. 9 is an exemplary editor instruction 900 format which may be used in connection with the present invention.
  • the entry length field 902 identifies the total length of this editor entry, in pairs of 64-bit words. The number of addresses read is determined by adding one to the value in this field and multiplying by two. This provides a minimum of two and a maximum of sixteen addresses read per entry, for this particular example.
  • the next instruction offset field 904 indicates a relative offset of another editor instruction following the present instruction.
  • the index field 906 indicates various header type encodings.
  • a 0.times.18 may indicate a FAST Modify
  • a 0.times.1C may indicate an LLC/SNAP push
  • a 0.times.24 may indicate an MPLS swap, etc.
  • this field is seven bits to allow for a sufficient number of different currently-known or future types.
  • the seven bits provide an index into a 128-location memory, such as that shown in FIG. 7 .
  • Field 908 is the decrement time-to-live (TTL) field, which identifies whether to decrement an incoming TTL/Hop count.
  • Update (U d ) field 910 identifies an update of IP DiffServ (Differentiated Service) DSCP field to match information carried in the top MPLS label.
  • the update (U t ) field 912 identifies an update of IP TTL to match TTL carried in the top MPLS label.
  • Field 914 is the opcode field in which the instruction operational code is presented. An opcode for each different instruction operation is used, to identify the particular function (such as shown in FIG. 8 ) to be performed. Edits may be handled differently, depending on the particular type of packet protocol, and therefore a particular opcode may cause different functions to be performed for different types in type field 906 .
  • Packet direction field 916 provides an indication of the downstream packet direction, such as to drop the packet, direct the packet to the control plane, direct the packet to the data plane, or direct the packet to the control plane and the data plane.
  • the packet direction is applied from multiple search results according to the direction function presented in the direction function field 918 .
  • Various direction functions may be applicable, such as an OR function where the packet direction bits in the current instruction are logically “OR'ed” with the other search results, and such as an AND function where the packet direction bits in the current instruction are logically “AND'ed” with the other search results.
  • Another bit code available in the direction function field 918 can cause the packet direction in the current instruction to override the previous search results.
  • Fields 920 and 922 correspond to per-hop-behavior (PHB) groups.
  • PHB refers to the forwarding treatment given to a specific class of traffic, based on DiffServ criteria. Routers and switches use PHBs to determine priorities for servicing various traffic flows.
  • a PHB group is a set of one or more PHBs that can only be meaningfully specified and implemented simultaneously. This often occurs where a constraint commonly applies to all PHBs in the set, such as a queue servicing or queue management policy.
  • a PHB group provides a service building block that allows a set of related forwarding behaviors to be specified together (e.g., four dropping priorities).
  • Field 920 is the “apply PHB group” which indicates whether to apply a PHB group identified in field 922 to the packet.
  • the DiffServ PHB group field 922 identifies the PHB group to be applied to the packet.
  • the multi-bit field 922 allows multiple PHB groups to be defined, such as various Assured Forwarding (AF) classes, expedited forwarding (EF), etc.
  • the instructions/data from the memory 703 are processed by the editing processor 714 , and operate on data stored in the memory 716 .
  • the memory 716 includes a plurality of memory locations, illustrated in FIG. 7 as memory locations 718 , 720 , 722 , 724 , 726 , 728 , 730 , and 732 through some finite number of memory locations up to the end memory location 734 .
  • the memory 716 stores portions of the packet input 706 , and stores these packet portions in memory locations 718 - 734 as dictated by the input controller 740 .
  • the packet 706 is stored in the memory 716 in time for the editing instructions from the instruction memory 704 to be processed by the editing processor 714 , and for the packet data in the memory 716 to be operated on by the editing processor 714 .
  • the memory 716 is organized into a finite number of segments that may include one or more of the memory locations 718 - 734 .
  • the memory 716 is partitioned such that at least some of these segments are allocated to store data corresponding to certain portions of the packet(s) 706 . In one embodiment of the invention, these packet portions correspond to headers of the various protocol layers associated with the incoming packet.
  • header information corresponding to OSI networking layers two through four may each correspond to a segment of the memory 716 , such that a segment of memory 716 is allocated to store a layer-2 header (e.g., a PPP header), a segment corresponding to a layer-2.5 header (e.g., an MPLS label stack), a segment corresponding to a layer-3 header (e.g., an IP header), and a segment corresponding to a layer-4 header (e.g., a TCP header).
  • the input controller properly directs this information to the memory 716 based on upstream information developed by a packet classification engine that determines where one networking layer header ends and the next networking layer header begins.
  • the memory 716 in one embodiment of the invention is a dual-port memory.
  • a dual-port memory can be simultaneously read and/or written by two different data sources, or more generally, a shared memory accessible by two processes.
  • the data stream is a 64-bit data stream
  • the memory 716 is a 32-bit wide, 128-word deep, dual-port memory. In this manner, two 32-bit words may be simultaneously written to the memory 716 to write the 64-bit data. Alternatively, data can be concurrently written to and read from the memory 716 .
  • a dual-port memory could also be utilized to streamline the data flow through the editor, for instance, by “overlapping” the input write stage of the processing with the output read stage of the processing.
  • a single-port memory may be used, or two physically distinct yet logically coupled memories may also be used. Using a quad-port memory or other multi-port memory will produce analogous results and provide similar advantages.
  • the allocated segments of memory are interleaved with segments of the memory 716 that are unused during the input stage, each unused segment including one or more of the memory locations 718 - 734 .
  • the new Ethernet header in memory location 720 effectively replaces the original (now-disregarded) Ethernet header at memory location 718 . In this manner, editing of packet layer headers can be effectively and efficiently performed.
  • the present invention also facilitates editing through the use of a valid bit array 750 , which includes a field for each of the various memory segments, or memory locations, of the memory 716 .
  • Information in each field of the valid bit array 750 identifies whether or not its corresponding memory segment/location is currently housing valid data—that is, whether its corresponding memory segment/location will ultimately be part of the resulting output packet. For example, if the indicators in fields 752 , 756 and 758 are set to signify valid data in corresponding memory locations 718 , 722 and 724 , then the resulting output packet will include the data in memory locations 718 , 722 and 724 .
  • each of the fields in the valid bit array 750 is therefore associated with a portion of the memory 716 , in order to indicate whether or not the corresponding memory portion is storing valid data.
  • data in the memory 716 may be overwritten, deleted, or added.
  • the data in a memory segment may be overwritten by actually overwriting the data at that memory segment, and keeping the associated indicator in the valid bit array 750 in a state indicating the corresponding data is valid.
  • the data in the memory segment may be effectively overwritten by inserting replacement data in the available memory space proximate the original data, and manipulating the bits in the corresponding fields of the valid bit array 750 such that the original data is no longer “valid” and the newly inserted data is now deemed valid.
  • a new data segment (e.g., a new header corresponding to a new network layer) may be inserted into the reserved, available memory space that was interleaved with the designated data storage areas. For example, assume that memory location 718 stores a PPP header and memory location 722 stores an IPv6 header, an MPLS header can be injected between the PPP header and the IPv6 header by writing the MPLS header into otherwise unused memory location 720 .
  • the valid bit array is implemented in one or more registers, where each bit of the register provides the field in which an indicator or flag relating to the validity of the corresponding data may be set or cleared.
  • the number of bits used in each field may be one or more bits, as long as it adequately identifies the status of the data in its corresponding field in the memory 716 .
  • data in the memory 716 may be added, deleted, amended, moved, expanded in size, reduced in size, or otherwise manipulated within the memory 716 , as long as the appropriate indicators in the valid bit array 750 are appropriately manipulated.
  • the interleaving of unused memory space with the various designated data storage areas allows the data in memory location 726 to be expanded to memory locations 726 and 728 . This might be the case where a header needs to be modified such that it increases in length. While headers generally have a fixed length, it is conceivable that network layer headers are of variable length, requiring header length expansion, or reduction. The present invention allows for such modifications.
  • the memory 716 may, in one embodiment, be configured and partitioned such that all header information and data is stored within the memory 716 .
  • the “data” that is being transmitted generally should not be modified along the way between the source and the destination. This would in effect be corrupting the data, and it is thus generally the case that the data being transmitted will remain unchanged from source to destination. Therefore, a preferred embodiment of the invention includes an additional memory module, illustrated in FIG. 7 as the overflow buffer 770 .
  • the data associated with the packet is stored in the overflow buffer 770 until the header information is released, whether modified or not, from the memory 716 .
  • the data in the overflow buffer 770 is appended to the resulting header information from the memory 716 such that the packet is essentially recreated upon its output from the editor module 702 , albeit the header information may have been modified.
  • the memory 716 may be configured to allow editing of certain, predetermined network layer headers, such as the headers including and between network layer-2 and network layer-4.
  • headers corresponding to higher network layers e.g., network layer-5
  • this also means that headers outside of the layer-2 through layer-4 range are not available for modification at the editor module 702 .
  • the particular information allowed to be edited may therefore be configured into the system, such that as much or as little of the packet as desired may be configured or partitioned into the editing memory 716 as dictated by the particular implementation.
  • the editor module After the packet information in memory 716 has been edited, the editor module will reassemble and output the packet. This is accomplished by outputting the information in the memory 716 in the proper order, followed by the data stored in the overflow buffer 770 .
  • the information in the memory 716 e.g., network layer header information
  • the header information in these memory locations 718 - 734 will therefore be output in the order that it is stored, and only if its corresponding indicator in the valid bit array 750 is asserted.
  • additional indicator bits either associated with the valid bit array 750 or in an independent memory, identify the order in which the memory locations 718 - 734 will be read out.
  • the information stored in memory locations 718 - 734 will be output in a predetermined order, such as from the lowest memory 716 address to the highest memory 716 address. This corresponds to first outputting the information in memory location 718 , then in memory location 720 , and so forth, as dictated by the state of the corresponding bits in the valid bit array 750 .
  • the valid bit array 750 is read by a priority encoder 772 .
  • a priority encoder assigns a code representation to the outputs, represented by line 774 to the output controller 776 .
  • the priority encoder 772 instructs the output controller 776 to pass information in corresponding memory locations 718 - 734 to the multiplexer 778 .
  • the priority encoder 772 is configured as part of the output controller 776 .
  • the output controller outputs the header information stored in the memory 716 in the order dictated by the valid bit array 750 and designated in response thereto by the priority encoder 772 .
  • the priority encoder 772 takes a snapshot of the valid bit array 750 when editing is complete to identify the populated memory locations that will form the resulting packet header.
  • the multiplexer 778 passes this resulting header information, and upon reaching the end of the header information, the multiplexer controllably switches to pass the information at its other input, which is fed from the overflow buffer 770 . Therefore, the multiplexer 778 first passes the edited header information from the populated, valid memory locations in memory 716 . The multiplexer then appends the associated data stored in the overflow buffer 770 to reassemble the packet as a modified packet 712 .
  • FIG. 10 provides an illustration of receipt of a packet, partitioning the header information with interleaved memory space, editing of the information, and reassembly of a resulting packet.
  • a packet 1000 includes a header 1002 , which still further includes at least five header segments, H5 1004 , H4 1006 , H3 1008 , H2 1010 and H1 1012 .
  • the header fields 1002 are stored in the memory 1020 A.
  • the memory 1020 B includes the modified headers, and more particularly includes modified header H2.sub.M and H3.sub.M.
  • the valid bit array 1022 includes four indicators of valid memory locations. These valid bit array indicators are shown in valid bit array fields 1024 , 1026 , 1028 and 1030 .
  • header information corresponding to these valid bit array fields are directed to the multiplexer 1032 via path 1034 .
  • These newly edited header segments are shown as header segments H5 1004 , H3.sub.M 1042 , H2.sub.M 1044 and H1 1012 which are output by the multiplexer 1032 as header 1050 .
  • a control input (not shown) on multiplexer 1032 then switches the output of the multiplexer 1032 from the input from path 1034 to the input from path 1052 .
  • This input includes the data 1054 previously stored in overflow buffer 1056 .
  • the multiplexer 1032 outputs the data 1054 to be appended to the outgoing packet 1060 .
  • the editor module 702 further includes a module for performing additional manipulations on the data stored in the memory 716 .
  • This module is illustrated as the macro sequencer 780 , which performs macro editing. In one embodiment, this macro editing is performed after the editor 714 has completed processing of its instructions from the instruction memory 704 .
  • the macro sequencer 780 operates on the data in memory 716 just as the editor 714 does, however the macro sequencer performs more specific data modifications, and does so based on different criteria than the editor 714 .
  • the editor 714 is a microprocessor or arithmetic logic unit that operates on the data in the memory 716 on a 32-bit boundary.
  • both the editor 714 and the macro sequencer 780 operate on the data in memory 716 , but the editor is first in time with respect to performing operations on the data in memory 716 .
  • the macro sequencer 780 also gathers certain information to make its final adjustments to the data. For example, a particular header, such as an IP header, may include a field for a checksum value. If one or more of the headers in the memory 716 are edited, the checksum value must be updated. Because the editing module 702 operates on streaming data, the macro sequencer operates as a state machine and monitors the activity occurring on the data in the memory 716 .
  • the macro sequencer 780 When the editor 714 has completed its modifications to the data in the memory 716 , the macro sequencer 780 will have monitored the activity, ascertained the new checksum value, and input it into the precise location within the appropriate memory location. Thus, the macro sequencer 780 monitors activity as the editing process continues, and when the editing process is complete, then the macro sequencer performs some “after-the-fact” modifications that it learned throughout the editing process.
  • the checksum described above is one example.
  • Another example is the update of the time-to-live (TTL) field of an IP packet header.
  • TTL field represents an amount of time that the packet has been in the network, and suggests, upon expiration or reaching a predetermined value, that the packet has been in the network too long and should be discarded.
  • the TTL is therefore decremented at each router, thereby requiring special modification of the TTL field in the IP header of the memory 716 after editor 714 manipulation of the data.
  • the TTL generally corresponds to the number of hops that have been encountered by a packet, but can also reflect a particular passing of time.
  • post-editing-processor modifications include policing colorations, and packet length.
  • policing colorations For example, a proprietary packet length may result from the addition of a local header as the packet travels through the router. The addition of a local header changes any packet length fields stored in the header information of the memory 716 .
  • the macro sequencer 780 also works in connection with the policer 711 .
  • network policing allows subscriber bandwidth to be controlled in terms of the contracted service levels that were provisioned and is typically used at the ingress of the network.
  • One manner for policing, for example in an MPLS network, is Single Rate Tri-Color Marker (srTCM) or (trTCM) Two Rate Tri-Color Marker.
  • srTCM Single Rate Tri-Color Marker
  • trTCM Two Rate Tri-Color Marker.
  • Tri-Color marking provides a mechanism for marking packets when they exceed the contracted bandwidth.
  • the srTCM meters a traffic stream and marks its packets according to three traffic parameters, Committed Information Rate (CIR), Committed Burst Size (CBS), and Excess Burst Size (EBS), to be either green, yellow, or red.
  • CIR Committed Information Rate
  • CBS Committed Burst Size
  • EBS Excess Burst Size
  • a packet is marked green if it doesn't exceed the CBS, yellow if it does exceed the CBS, but not the EBS, and red otherwise.
  • the trTCM meters an IP packet stream and marks its packets based on two rates, Peak Information Rate (PIR) and Committed Information Rate (CIR), and their associated burst sizes to be either green, yellow, or red.
  • PIR Peak Information Rate
  • CIR Committed Information Rate
  • the policer 711 performs packet conformance functions, and deals with such coloration issues.
  • the macro sequencer 780 is coupled to receive information such as the coloration, and an indication of whether or not to drop the packet, from the policer 711 .
  • the macro sequencer can manipulate the appropriate bits in the appropriate header field in the memory 716 in response to coloration issues. For example, if the policer 711 determines that the current packet has exceeded its bandwidth, the policer 711 will provide a particular color to the macro sequencer 780 .
  • the macro sequencer 780 modifies the bits in the appropriate network layer header to reflect the particular color, such as by modifying the type of service (TOS) field in an IPv4 header.
  • TOS type of service
  • Policing may be determined in a manner described herein and in copending U.S. patent application Ser. No. 09/849,914, entitled “System and method For Policing Multiple Data Flows And Multi-Protocol Data Flows,” and copending U.S. patent application Ser. No. 09/849,810, entitled “System And Method For Hierarchical Policing Of Flows And Subflows Of A Data Stream,” both filed concurrently herewith and assigned to the assignee of the instant application, the contents of both being incorporated herein by reference in their respective entireties.
  • the macro sequencer 780 may therefore be represented by a state machine that is snooping what stage of the editing process is occurring, snooping the incoming data, snooping the actual editing process, collecting input from the policer, and performing final modifications to the stored packet header information before it is output.
  • the macro sequencer 780 allows various specific modifications on the data in the memory 716 .
  • the editor module 702 using at least the policer 711 and the macro sequencer 780 , therefore also handles packet dropping for nonconforming packets.
  • the policer 711 informs the macro sequencer 780 when a packet is to be dropped and the macro sequencer 780 in turn directs the editor module 702 to deny passage of the header information in the memory 716 and the data in the overflow buffer 770 to the output stage. Therefore, to drop a packet currently in the memories 716 , 770 , the corresponding information is not allowed to be output and attention simply turns back to the input stage to receive the next packet and store the packet in the memories 716 , 770 .
  • the editor module 702 of FIG. 7 may be controlled by configuration options, programmable via a register interface (not shown). These configuration options may include the manner in which packet handling is to be provided, including packet dropping and the downstream packet direction discussed above.
  • the packet direction may be influenced by the editor instructions, or may be a programmed response to packet error conditions and policing.
  • the direction eventually applied to the packet follows a hierarchical structure in one embodiment of the invention.
  • a hierarchical structure for determining the ultimate direction includes, from highest priority to lowest priority, a master override action, error conditions, policing conditions, and editor instruction.
  • the master override action is an override of all other packet direction decisions, and is particularly useful for diagnostic purposes.
  • Error conditions receive the next highest priority, and priority among the error conditions may also be applied (e.g., such as an error condition encountered with a “drop” directive having the highest priority). Policing conditions on a policed connection is the next highest priority to guide the direction of the packet. Finally, the direction that is identified within the editor instruction itself is used as the direction for the packet, and where no editor search results are returned for a packet, a programmable default action then determines the packet direction.
  • processing functions described herein in connection with the packet transformation function of the editor module may be performed by one or more different processors.
  • one or more physical chips may correspond to various processing modules of the invention, such as the editing module, input processor, output processor, etc.
  • these functions may be carried out by a single processor configured to perform each of the various functions.
  • these functional elements are embodied on a single physical chip, however various processing modules are embedded therein to perform the described functions.
  • a primary control processor may be implemented to help manage and control each of the implemented processing modules.
  • FIG. 11 an embodiment of an editing module 1100 is illustrated whereby a primary processor 1102 controls various processing modules, such as the editor module 1104 , input processor 1106 , output processor 1108 and macro sequencer 1110 .
  • FIG. 11 shows the search results on path 1120 .
  • These search results serve as indices to the editor SRAM 1122 to provide the editor instructions and data shown on signal path 1124 to the editor 1104 .
  • the indices labeled index-0 126 , index-1 128 , index-2 130 , and index-3 132 , are received by the search results control module 1134 which generates the appropriate addresses into the SRAM 1122 from the search result indices 1126 , 1128 , 1130 , 1132 .
  • the editor 1104 and primary processor 1102 may be part of a common processing module, or alternatively may be distinct processing modules.
  • the editor 714 represents the processing element to perform the requisite processing to carry out the desired editing functions.
  • the editor 1104 and primary processor 1102 collectively perform editing functions.
  • the editor 1104 , macro sequencer 1110 , input processor 1106 , output processor 1108 , and the memory 1130 are all coupled to the primary processor 1102 .
  • the memory 1130 is analogous to the memory 716 that stores the information that is to be edited, and in the embodiment of FIG. 11 is a dual-port memory having port-0 1132 and port-1 1134 coupled between the memory 1130 and the primary processor 1102 .
  • the editor 1104 provides command and data on path 1140 to the primary processor 1102 to cause the processor 1102 to carry out modification instructions on the data in the memory 11130 .
  • the macro sequencer 1110 provides write commands via path 1142 to the primary processor 1102 to allow the primary processor 1102 to initiate the designated modifications to the data stored in the memory 1130 .
  • the macro sequencer 1110 may receive snoop input from the editor 1104 , input processor 1106 , and/or policing module (not shown) to obtain coloration, which may require further interpretation via the color mapping 1144 information, or other information to initiate the appropriate modifications to the memory 1130 .
  • a demultiplexer 1150 receives packet input, and in the present example, separates the header information from the non-header information. The separation need not be between the header and non-header information, but in the present example, all editing is to be performed on header information. Therefore, the header information is recognized by the input processor 1106 , which marks the appropriate fields in the valid bit array 1160 , and provides write instructions to indicate where in the memory 1130 the primary processor should store the header information. The non-header information (or alternatively, the information that is not to be available for editing) is sent to the buffer 1170 .
  • the header and non-header information is reassembled into a resulting modified packet.
  • This is accomplished using the output processor 1108 which reads the valid bit array 1160 , and initiates forwarding of information in the memory 1130 to the multiplexer 1180 if the state of the valid bit array 1160 dictates the forwarding of that information.
  • the header information shown in FIG. 11 as the output headers on signal path 1182 are output from the multiplexer 1180 , followed by the information stored in the buffer 1170 , shown as the output non-headers on signal path 1184 .
  • the resulting modified packet shown on signal path 1186 from the multiplexer 1180 includes the edited headers followed by the non-edited information.
  • FIG. 11 represents another embodiment of an editor module in accordance with the present invention.
  • Other variations of these embodiments in accordance with the description provided herein are within the scope of the invention.
  • FIG. 12 illustrates another embodiment of an editor module 1200 wherein a primary editor processor is used in connection with other editing components.
  • the primary editor processor 1202 performs a process to receive packets at the packet input 1204 and output a modified packet at the packet out 1206 .
  • the primary processor 1202 receives information from at least the macro sequencer 1210 and the editor 1212 .
  • the editor 1212 receives editor instructions via instruction path 1214 , which in one embodiment includes a 72-bit bus.
  • the instruction path 1214 is coupled to the search result module 1220 which uses the search results to address the appropriate editor instructions in memory. These instructions may be queued in a queue 1230 having a plurality of queue locations 1232 .
  • the instructions are fetched and stored in upper and lower registers 1234 , 1236 , and decoded by the decoder 1238 .
  • the appropriate commands as determined by the decoder 1238 are sent to the primary processor 1202 via command/data paths 1240 , 1242 .
  • the macro sequencer 1210 may operate on the data being edited to perform certain predefined specific modifications thereto. Such modifications include updating a checksum value, or a time-to-live (TTL) parameter. Policing colorations and changes to packet length due to the addition of local headers are still other examples in which post-editing-processor modifications will be performed.
  • commands 1244 , 1246 are written from the macro sequencer 1210 to the primary processor 1202 , so that the primary processor can carry out the operations to actually modify the packet, particularly the information stored in the editor memory (not shown).
  • the primary processor 1202 operates as a state machine, as represented in FIG. 12 .
  • the packet is input 1250 , and the packet is processed 1252 in accordance with the instructions 1240 , 1242 supplied by the editor 1212 . Header fields in the memory are edited, deleted, supplanted, etc. in order to arrive at modified header fields that ultimately define the direction 1254 of the modified packet.
  • the macro sequencer commands 1244 , 1246 are then processed as shown at the macro state 1256 . When modifications directed at the macro state are complete, the modified packet is output 1258 as shown on packet output 1206 , and the process continues with new input 1250 .
  • FIGS. 13-16 illustrate representative examples of modifications (i.e., packet transformations) that may be performed in accordance with the principles of the present invention. It should be recognized that the examples of FIGS. 13-16 are provided for purposes of understanding, and provide only a representation of the multitude of different types of modifications that may be performed on packets, frames, cells, etc. Therefore, the examples provided in FIGS. 13-16 are illustrative only, and clearly the invention is not limited thereto. Those skilled in the art will readily appreciate that a variety of additional modifications other than those shown for illustrative purposes in FIGS. 13-16 Can be performed in accordance with the teachings of the present invention.
  • modifications i.e., packet transformations
  • the incoming packet 1300 includes various embedded headers including a layer-4 user datagram protocol (UDP) header 1302 , a layer-3 Internet Protocol version-4 user header 1304 A, and a layer-2 Ethernet protocol header 1306 A.
  • a packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1310 (also shown, for example, as memory 716 in FIG. 7 ).
  • the packet layers are written to the editor memory 1310 in a predetermined order, such as from the lowest layer level to the highest. This is illustrated in FIG.
  • Ethernet header is stored at one or more memory locations 1312
  • IPv4 header is stored at one or more memory locations 1314
  • UDP header is stored at one or more memory locations 1316 .
  • available memory locations 1318 may be interleaved with the stored header information.
  • the parsing engine associated with the classifier module acts on the incoming packet to produce search results that index editor instructions.
  • the resulting editor instructions to the editor module in the present example instruct the editor to replace the Ethernet source address field.
  • the Ethernet source address field may need to be modified or replaced since a router at a node declares itself the new source address as the packet is transmitted through the network to the destination.
  • Ethernet addresses are generally forty-eight bits in length
  • the forty-eight bit Ethernet address is modified to change the Ethernet source address.
  • the editor memory in the present example is a 32-bit wide memory. Therefore, to modify the 48-bit Ethernet source address, one 32-bit operation is performed on the lower thirty-two bits of the address, and a read-modify-write operation is performed on the upper sixteen bits of the address. This is depicted by the memory state block 1320 , showing state-A and the modified state-B of the memory 1310 .
  • the original state, state-A has a lower 32-bit field of the Ethernet source address, labeled Ethernet Address-B1, stored at memory location 1322 .
  • the modified state, state-B occurs due to a write command on the lower 32-bit field of the Ethernet source address, resulting in the modified address portion Ethernet Address-B2 stored at memory location 1322 .
  • the original state-A has an upper 16-bit field of the Ethernet source address labeled Ethernet Address-A1 stored at memory location 1324 .
  • a read-write-modify (RWM) instruction is executed by the editing processor. This results in the modified state-B, shown as the Ethernet Address-A2 stored at memory location 1324 .
  • the IPv4 header stored at memory location 1314 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed. For example, a TTL value may be decremented in the TTL field (not shown) of the IPv4 header at location 1314 . The checksum value in the IPv4 header may also be updated to reflect the change to the TTL field.
  • the header information has been fully modified, and is ready to be output from the editor memory 1310 .
  • the fields to be output from the memory 1310 are identified by a corresponding indicator in the valid bit array 1330 .
  • the valid bit array 1330 of FIG. 13 depicts asserted fields 1332 , 1334 and 1336 corresponding to memory locations 1312 , 1314 and 1316 respectively.
  • the Ethernet header at memory location 1312 , the IPv4 header at memory location 1314 , and the UDP header at location 1316 are tagged for inclusion in the modified output packet.
  • the outgoing packet 1340 therefore includes various embedded headers including the layer-4 user datagram protocol (UDP) header 1302 , the modified layer-3 internet protocol version-4 (IPv4) header 1304 B, and the modified layer-2 Ethernet protocol header 1306 B. As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1310 .
  • UDP layer-4 user datagram protocol
  • IPv4 modified layer-3 internet protocol version-4
  • FIG. 14 represents another example of a packet transformation at a router handling an IP/Ethernet source route, but in this example, IP tunneling modifications are desired.
  • “Tunneling” refers to using the Internet as part of a private secure network, where the tunnel is the particular path that a given message or file might travel through the Internet. Tunneling protocols make it possible to create a virtual private network through such tunnels over the Internet. This would remove the need for entities to lease private lines for wide-area communication, and securely use the public networks using tunneling methodologies. Such tunneling methodologies are known in the art.
  • the instant example is one which the state of the valid bit array changes to identify another one or more memory locations that must be considered in the outgoing modified information. More particularly, the tunneling header is wedged in between two existing header information blocks, using the unused memory space interleaved throughout the editor memory. These changes are more clearly described in connection with the example of FIG. 14 .
  • the incoming packet 1400 includes various embedded headers including a layer-4 user datagram protocol (UDP) header 1402 , a layer-3 internet protocol version-4 (IPv4) header 1404 A, and a layer-2 Ethernet protocol header 1406 .
  • a packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1410 .
  • the packet layers are written to the editor memory 1410 , where the Ethernet header is stored at one or more memory locations 1412 , the original IPv4 header is stored at one or more memory locations 1414 , and the UDP header is stored at one or more memory locations 1416 .
  • available memory locations 1418 may be interleaved with the stored header information.
  • the memory location 1419 is illustrated with the new tunneling IPv4 header, however the pre-modified state of this editor memory location was unused and available. However, in accordance with the editing methodology described, the available memory location 1419 is used for the newly added tunneling IPv4 header, as described more fully below.
  • the modifications to the editor memory are illustrated by the memory state block 1420 , showing state-A and the modified state-B of the memory 1410 .
  • the original state of the particular memory locations, shown as state-A, has no valid information associated therewith.
  • the editing processor executes instructions from the instruction memory, which in the present example includes a series of write instructions. More particularly, the tunneling IPv4 header is written to the editor memory 1410 , as depicted by the new state-B in memory state block 1420 .
  • memory locations 1422 , 1424 and 1426 change from being unused at state-A to storing tunneling IPv4 header information at state-B.
  • a write command to write the first two words (IPv4-T-A) of the tunneling IPv4 header is first written to memory location 1422 , then another write command writes the next two words (IPv4-T-b) of the tunneling IPv4 header to memory location 1424 , and a final write command writes a final word (IPv4-T-c) of the tunneling IPv4 header to memory location 1426 .
  • These stored words collectively comprise the tunneling IPv4 header, which resides at memory location 1419 . Adding the new tunneling IPv4 header causes an indicator in field 1433 of the valid bit array to be set, thereby confirming its ultimate inclusion in the modified output packet.
  • the original IPv4 header stored at memory location 1414 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed.
  • a TTL value may be decremented in the TTL field (not shown) of the original IPv4 header at location 1414 .
  • the checksum value in the original IPv4 header may also be updated.
  • the header information has been fully modified, and is ready to be output from the editor memory 1410 .
  • the fields to be output from the memory 1410 are identified by a corresponding indicator in the valid bit array 1430 .
  • the valid bit array 1430 of FIG. 14 depicts asserted fields 1432 , 1433 , 1434 and 1436 corresponding to memory locations 1412 , 1419 , 1414 and 1416 respectively.
  • the Ethernet header at memory location 1412 , the tunneling IPv4 header at memory location 1419 , the IPv4 header at memory location 1414 , and the UDP header at location 1416 are tagged for inclusion in the modified output packet.
  • the outgoing packet 1440 therefore includes various embedded headers including the original layer-4 user datagram protocol (UDP) header 1402 , the modified internet protocol version-4 (IPv4) header 1404 B as well as the new tunneling IPv4 header 1442 , and the layer-2 Ethernet protocol header 1406 . As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1410 .
  • UDP layer-4 user datagram protocol
  • IPv4 internet protocol version-4
  • MPLS integrates layer-2 information about network links into layer-3 (IP) within a particular autonomous system in order to simplify and improve IP-packet exchange.
  • IP layer-3
  • MPLS essentially provides connection-oriented labeling in an otherwise connectionless environment, which has resulted in MPLS being considered associated with layer-2.5.
  • MPLS uses a stack of 32-bit labels, and a router will view the top label in the stack to determine what the next hop should be.
  • Each router in the MPLS domain can modify the label stack, such as by adding more labels based on the router's knowledge of the packet forwarding conditions. For example, such a modification may require replacing the existing top label on the label stack with a new label so that a particular router can change one or more of the next hops.
  • a variety of different modifications may be made to the MPLS stack, and the present invention is particularly beneficial in routers in which such modifications are to be made.
  • the incoming packet 1500 includes various embedded headers including a layer-4 transmission control protocol (TCP) header 1502 , a layer-3 internet protocol version-4 (IPv4) header 1504 A, a layer-2.5 MPLS header 1506 A, and a layer-2 point-to-point protocol (PPP) header 1508 .
  • TCP transmission control protocol
  • IPv4 internet protocol version-4
  • PPP point-to-point protocol
  • a packet classifier module determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1510 .
  • the packet layers are written to the editor memory 1510 , where the PPP header is stored at one or more memory locations 1512 , the MPLS header is stored at one or more memory locations 1514 , the IPv4 header is stored at one or more memory locations 1516 , and the TCP header is stored at one or more memory locations 1518 .
  • available memory locations 1519 may be interleaved with the stored header information.
  • the modifications to the editor memory are illustrated by the memory state block 1520 , showing state-A and the modified state-B of the memory 1510 .
  • the original state of the particular memory locations shown as state-A, includes an MPLS label stack including label MPLS-A at location 1522 , label MPLS-B1 at location 1524 , label MPLS-C at location 1526 , through a finite number of labels represented by MPLS-n at location 1528 .
  • the editing processor executes instructions from the instruction memory, which in the present example includes instructions to pop the top MPLS label and swap the next MPLS label with a new MPLS label.
  • label MPLS-A at memory location 1522 is “popped” off the top of the state-A stack through editor processing of a pop instruction, resulting in no label stored at location 1522 as shown at state-B.
  • a second editor instruction, a “swap” instruction causes the MPLS-B1 label at location 1524 to be swapped with a new label, shown in modified state-B as label MPLS-B2 at location 1524 .
  • the IPv4 header stored at memory location 1516 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed.
  • a TTL value may be decremented in the TTL field (not shown) of the IPv4 header at location 1516 .
  • the header information has been fully modified, and is ready to be output from the editor memory 1510 .
  • the fields to be output from the memory 1510 are identified by a corresponding indicator in the valid bit array 1530 .
  • the valid bit array 1530 of FIG. 15 depicts asserted fields 1532 , 1534 , 1536 and 1538 corresponding to memory locations 1512 , 1514 , 1516 and 1518 respectively.
  • the PPP header at memory location 1512 , the modified MPLS header at memory location 1514 , the IPv4 header at memory location 1516 , and the TCP header at location 1518 are tagged for inclusion in the modified output packet.
  • the outgoing packet 1540 therefore includes various embedded headers including the original layer-4 transmission control protocol (TCP) header 1502 , the modified internet protocol version-4 (IPv4) header 1504 B as modified by the macro sequencer, the modified layer-2.5 MPLS header 1506 B as modified by the editor instructions, and the layer-2 PPP header 1508 .
  • TCP transmission control protocol
  • IPv4 internet protocol version-4
  • FIG. 16 provides an example of a packet transformation at a router at the egress edge of an MPLS domain, in accordance with the present invention. This example also contemplates the implementation of a local header applied by the router to direct the packet through the switch fabric to a specific output port at the router.
  • the incoming packet 1600 includes various embedded headers including a layer-4 transmission control protocol (TCP) header 1602 , a layer-3 internet protocol version-6 (IPv6) header 1604 A, a layer-2.5 MPLS header 1606 A, and a layer-2 point-to-point protocol (PPP) header 1608 .
  • TCP transmission control protocol
  • IPv6 internet protocol version-6
  • PPP point-to-point protocol
  • a packet classifier module determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1610 .
  • the packet layers are written to the editor memory 1610 , where the PPP header is stored at one or more memory locations 1612 , the MPLS header is stored at one or more memory locations 1614 , the IPv6 header is stored at one or more memory locations 1616 , and the TCP header is stored at one or more memory locations 1618 .
  • available memory locations 1619 may be interleaved with the stored header information.
  • the memory state block 1620 shows state-A and the modified state-B of the memory 1610 .
  • the original state of the particular memory locations shown as state-A, includes an MPLS label stack including label MPLS-A at location 1625 , MPLS-B at location 1626 , MPLS-C at location 1627 , through MPLS-n at location 1628 .
  • the editing processor executes a “PopAll” instruction to remove all MPLS labels.
  • the IPv6 header stored at memory location 1616 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed.
  • a TTL value may be decremented in the TTL field (not shown) of the IPv6 header at location 1616 .
  • the local header of the present example includes a packet length field which can be updated by the macro sequencer after all editor instructions have been executed. A new coloration to the packet based on input from the policer may also be included by the macro sequencer.
  • the header information has been fully modified, and is ready to be output from the editor memory 1610 .
  • the fields to be output from the memory 1610 are identified by a corresponding indicator in the valid bit array 1630 .
  • the valid bit array 1630 of FIG. 16 depicts asserted fields 1632 , 1634 , and 1636 corresponding to memory locations 1612 , 1616 and 1618 respectively.
  • field 1638 of the valid bit array 1630 may be cleared, as all MPLS header information was removed during the editing process.
  • field 1639 of the valid bit array is now asserted, due to the inclusion of the local header into the memory at location 1624 .
  • the local header at memory location 1624 , the PPP header at memory location 1612 , the modified IPv6 header at memory location 1616 , and the TCP header at location 1618 are tagged for inclusion in the modified output packet.
  • the modified outgoing packet 1640 therefore includes various embedded headers including the original layer-4 transmission control protocol (TCP) header 1602 , the modified internet protocol version-6 (IPv6) header 1604 B as modified by the macro sequencer, the layer-2 PPP header 1608 , and the newly added local header 1642 .
  • TCP transmission control protocol
  • IPv6 internet protocol version-6
  • a packet stream including one or more packets, frames, cells, or other data units is received at a network node as shown at block 1700 .
  • particular segments of the packet are stored 1702 in a modification memory designated to temporarily store these packet segments during the modification process.
  • a modification memory designated to temporarily store these packet segments during the modification process.
  • the modification memory includes a plurality of memory locations that are logically partitioned into different memory segments, such that the different packet segments of the packet can be stored in these different memory segments. In one embodiment, this “partitioning” can be accomplished by tracking at least the starting addresses of each of the packet segments stored in the modification memory.
  • an instruction memory (which may include a data storage portion) may be called upon to output instructions for modifying the data temporarily stored in the modification memory.
  • the appropriate editing instructions are indexed or otherwise elicited from the instruction memory, where the particular editing instructions being elicited depends on the characteristics of the packet, as shown at block 1704 .
  • this MPLS header information is a “characteristic” of the packet that may be used to designate the appropriate one or more instructions from the instruction memory.
  • these characteristics are determined via the classification/parsing engine (e.g., classifier 502 shown in FIGS. 5 and 6 ) and are presented to the instruction memory in the form of the search results (e.g., search results 708 of FIG. 7 ).
  • the indexed editing instructions are processed to execute modification operations on the packet segments in the modification memory.
  • modifications are effected 1706 as dictated by the indexed editing instructions.
  • a “modification” may include altering existing packet segment data, inserting new packet segment data, deleting or otherwise canceling existing packet segment data, or any other manner of changing the packet data.
  • validity tags are associated with each of the memory segments of the modification memory, as shown at block 1708 .
  • a “validity tag” represents any stored indicator, such as one or more bits in a memory or register field.
  • one such embodiment is a valid bit array which includes a plurality of fields, each of which stores a validity tag.
  • each of the individual bits of a register can represent the fields of a valid bit array, such that each bit in the register therefore represents a validity tag.
  • a “set” validity tag may therefore be represented by a high logic state, a low logic state, a bit pattern, or any other such determinable electronic representation. If the validity tag associated with a particular packet segment is set, then that packet segment is included 1714 in the resulting modified packet. If the validity bit is not set, that memory segment is disregarded 1716 , i.e., the data at that memory segment is not included in the resulting modified packet.
  • a modified packet is thus created by assembling the packet segments associated with asserted or “set” validity tags.

Abstract

A system and method for facilitating packet transformation of multi-protocol, multi-flow, streaming data. Packet portions subject to change are temporarily stored, and acted upon through processing of protocol-dependent instructions, resulting in a protocol-dependent modification of the temporarily stored packet information. Validity tags are associated with different segments of the temporarily-stored packet, where the state of each tag determines whether its corresponding packet segment will form part of the resulting modified packet. Only those packet segments identified as being part of the resulting modified packet are reassembled prior to dispatch of the packet.

Description

    CROSS-REFERENCE TO OTHER PATENT APPLICATIONS
  • This application is a divisional of U.S. patent application Ser. No. 11/224,692, filed Sep. 12, 2005, which is a continuation of U.S. patent application Ser. No. 09/849,804, filed on May 4, 2001, now U.S. Pat. No. 6,944,168.
  • The following co-pending patent applications of common assignee contains some common disclosure: “A Method And Apparatus For Providing Multi-Protocol, Multi-Stage, Real-Time Frame Classification”, U.S. patent application Ser. No. 09/849,913, filed concurrently herewith, which is incorporated herein by reference in its entirety;
  • “System And Method For Policing Multiple Data Flows And Multi-Protocol Data Flows”, U.S. patent application Ser. No. 09/849,914, filed concurrently herewith, which is incorporated herein by reference in its entirety;
  • “System And Method For Hierarchical Policing Of Flows And Subflows Of A Data Stream”, U.S. patent application Ser. No. 09/849,810, filed concurrently herewith, which is incorporated herein by reference in its entirety.
  • FIELD OF THE INVENTION
  • This invention relates in general to communication networks, and more particularly to a method and apparatus for transforming packets in a multi-protocol, multi-flow data stream.
  • BACKGROUND OF THE INVENTION
  • Enhancing today's networking technology is a perpetual goal in the communications industry. As the raw speeds of large-scale and personal computing devices soar, the tremendous increase in data transmission demands continue to push the networking bandwidth envelope to capacity. As bandwidth-intensive multimedia content continues to gain popularity and course the veins of the Internet, the unrelenting bandwidth dilemma is no less urgent today than yesterday. This demand has fueled the need for high-bandwidth broadband systems.
  • The term “broadband” has often been used to describe high-bandwidth transmission of data signals, such as data, video, voice, video conferencing, etc. Broadband philosophies often address networking principles applicable to the backbone of the networking system, since the networking backbone generally faces the highest bandwidth demands. There are many competing technologies for delivering broadband access. For example, there are a number of standards used in digital telecommunications, including TCP/IP, Ethernet, HDLC, ISDN, ATM, X.25, Frame Relay, Digital Data Service, FDDI (Fiber Distributed Data Interface), Ti, xDSL, Wireless, Cable Modems, and Satellite among others. Many of these standards employ different packet and/or frame formats. The term “frame” is often used in reference to encapsulated data at OSI layer 2, including a destination address, control bits for flow control, the data or payload, and CRC (cyclic redundancy check) data for error checking. The term “packet” is often used in reference to encapsulated data at OSI layer 3. Further, the term “cell” is often used in reference to a group of bytes/octets conditioned for transmission across a network. However, it should be understood that for purposes of the present application, the terms packet, frame, and cell may be used interchangeably to refer to groups or collections of data. Further, a packet format or frame format generally refers to how data is encapsulated with various fields and headers for transmission across the network. For example, a data packet typically includes a destination address field, a length field, an error correcting code (ECC) field or cyclic redundancy check (CRC) field, as well as headers and trailers to identify the beginning and end of the packet. The terms “packet format” and “frame format”, also referred to as “cell format”, are generally synonymous for purposes of this application.
  • Packets transmitted across a network are associated with a transmission protocol. A protocol is a set of rules that governs how devices on a network exchange information. Packets traversing the network may be of differing formats or “protocols.” This is often due to the development of incompatible proprietary protocols by computer manufacturers. While protocol compatibility and standardization are becoming increasingly important, even standard protocols provide multiple options and are not always interchangeable between applications. Further, new protocols will continue to be developed to address certain network limitations, or to otherwise improve network data transmission. All of these factors contribute to the reality that multiple transmission protocols exist, and will likely continue to exist.
  • Examples of typical protocols used to communicate information include the Internet Protocol (IP), which is a “best-effort,” connectionless protocol responsible for delivering data from host to host across a network such as the Internet. IP is a predominant protocol used to transmit data across the Internet. Other protocols are used to transmit packets across the Internet as well, such as Framed ATM over SONET/SDH Transport (FAST) and IP on multiprotocol label switching (MPLS). FAST is a new protocol intended to improve the performance of asynchronous transfer mode (ATM). FAST introduces a variable length user data field, while preserving the proven advantages of ATM, such as real quality of service guarantees, the security and traffic isolation provided by virtual connections, network management, traffic management, control mechanisms for bandwidth on demand, etc. MPLS integrates layer-2 information about network links into layer-3 (IP) within a particular autonomous system in order to simplify and improve IP-packet exchange. MPLS essentially provides connection-oriented labeling in an otherwise connectionless environment, which has resulted in MPLS being considered associated with layer-2.5. With MPLS, different flows can be classified, and different service levels can be associated with the different flow classifications.
  • As described above, packets transmitted on a network such as the Internet may be associated with one of a number of different protocols, and thus packets associated with different protocols may be received at a given node, switch, router, etc. As described more fully below, the introduction of multiple packet protocols at a node requires special consideration when the entire data flow is subject to editing as the packets traverse the network.
  • Packets, frames, cells, and/or other data units traversing a network such as the Internet often face the possibility of being modified at a given network node. A variety of situations may result in a need to modify or “transform” the packet. For example, a packet reaching a node may need to be redirected from its original course to an alternate course. This can occur where an originally-intended node along the path becomes unavailable due to server problems, transmission cables being cut or otherwise damaged, and the like. In such a case, a “destination address” identified in a packet may require modification to alter the path of the packet in its quest to reach the ultimate destination. Another example of packet editing include the potential need to change header fields of the packet, such as packet length and checksum fields. If, for example, a packet is modified for any reason, the checksum and/or packet length fields are very likely to change, resulting in the need to further modify the packet to update such fields. Other fields include the time-to-live (TTL), packet conformance indicators such as colorations and drop priorities, etc. As can be seen, packets may require editing as they navigate the network towards their respective destination nodes.
  • At a particular network node or other ingress point, individual packets that make up a communications traffic stream can be classified into several flows or connections. Further, the traffic stream flows may include packets being transmitted in connection with different protocols. This can pose a challenge to editing systems, and typically requires that each of the flows be discretely handled. Due to very high data transmission speeds in today's networks, editing methods have conventionally required custom solutions, generally in the form of specialized, proprietary hardware engines in application-specific integrated circuits (ASICs). Because information may be transmitted across networks (e.g., the Internet) using a variety of different networking protocols, multiple specialized circuits are generally required to accommodate packets of each packet protocol that might traverse the network switch, router, bridge, or other intermediate system between the source and destination. For example, a separate packet transformation methodology, and therefore separate ASIC, may be required for each packet protocol used in the network. This results in higher costs, part counts, and general complexities, while adversely impacting system efficiencies.
  • Accordingly, there is a need in the communications industry for a method and apparatus for commonly transforming one or more packet flows of multiple transmission protocols. The present invention fulfills these and other needs, and offers other advantages over the prior art policing approaches.
  • SUMMARY OF THE INVENTION
  • To overcome limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, the present invention discloses a system, apparatus and method for facilitating packet transformation of multi-protocol, multi-flow, streaming data.
  • In accordance with one embodiment of the invention, a packet transformation module is provided for editing multi-protocol streaming data packets. An instruction memory receives search words identifying a packet type for the packet, and outputs appropriate instructions based on the packet type as indexed by the search words. A packet memory is coupled to receive one or more portions of the packet subject to editing, where each of the packet portions is stored in a respective memory segment of the packet memory. The packet transformation module further includes a valid bit array that has memory validity fields associated with respective memory segments. The state of each of the memory validity fields establishes whether the packet portion in the respective memory segment is to be incorporated into the resulting packet portion. A processing module receives the instructions from the instruction memory, and carries out the packet transformations on the packet portions in accordance with the instructions.
  • An ingress processing module is also provided. The ingress processing module includes such a packet transformation module, as well as a packet parser to parse each packet, and generate resulting search words based on the packet protocol. A network system is also provided which includes such an ingress processing module at an intermediary network node between the source and destination nodes, where the source node dispatches the information onto the network, and the destination node is the node to which the information is targeted.
  • In accordance with another embodiment of the invention, a method is provided for editing packets of a packet stream received at a network node. The method includes storing packet segments in partitionable memory segments of a modification memory. One or more editing instructions are elicited from an instruction memory, where the particular editing instructions elicited is based on characteristics of the packet. At least one packet segment stored in the modification memory is modified as directed by the editing instructions. Validity tags are associated with each of the memory segments to indicate whether or not their corresponding packet segments will be incorporated into a resulting modified packet. The resulting modified packet is created by assembling the packet segments associated with those validity tags that indicate incorporation into the resulting modified packet.
  • These and various other advantages and features of novelty which characterize the invention are pointed out with particularity in the claims annexed hereto and form a part hereof. However, for a better understanding of the invention, its advantages, and the objects obtained by its use, reference should be made to the drawings which form a further part hereof, and to accompanying descriptive matter, in which there are illustrated and described specific examples of an apparatus in accordance with the invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The invention is described in connection with the embodiments illustrated in the following diagrams.
  • FIG. 1 is a block diagram illustrating a networking environment in which the principles of the present invention may be applied;
  • FIG. 2 is a block diagram of an embodiment of a router system in which the present invention may be applied;
  • FIG. 3 is a block diagram of an exemplary embodiment of an ingress processing system in accordance with the present invention;
  • FIG. 4 is a block diagram of an embodiment of the interaction between the parsing engine, its corresponding memory, and the editor.
  • FIG. 5 is a block diagram illustrating selected functional blocks of an ingress processing system in accordance with the invention;
  • FIG. 6 is a block diagram illustrating selected functional blocks of an ingress processing system utilizing embedded memory in accordance with the invention;
  • FIG. 7 is a block diagram of an editing apparatus in accordance with one embodiment of the invention;
  • FIG. 8 illustrates a representative list of editor instructions in accordance with one embodiment of the invention;
  • FIG. 9 is an exemplary editor instruction format which may be used in connection with the present invention;
  • FIG. 10 provides an exemplary illustration of receipt of a packet, partitioning the header information with interleaved memory space, editing of the information, and reassembly of a resulting packet;
  • FIG. 11 illustrates an embodiment of an editing module whereby a primary processor controls various processing modules, such as the editor module, input processor, output processor, and macro sequencer;
  • FIG. 12 illustrates another exemplary embodiment of an editor module wherein a primary editor processor is used in connection with other editing components;
  • FIG. 13 illustrates an example of a packet transformation at a router handling an IP/Ethernet source route in accordance with the principles of the present invention;
  • FIG. 14 illustrates another example in accordance with the invention of a packet transformation at a router handling an IP/Ethernet source route, where IP tunneling modifications are also desired;
  • FIG. 15 illustrates another example in accordance with the invention of a packet transformation at a router within a multiprotocol label switching (MPLS) domain;
  • FIG. 16 illustrates yet another example in accordance with the invention of a packet transformation at a router at the egress edge of an MPLS domain; and
  • FIG. 17 is a flow diagram illustrating an embodiment of a method for modifying a packet stream in accordance with the present invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In the following description of the exemplary embodiment, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration the specific embodiment in which the invention may be practiced. It is to be understood that other embodiments may be utilized, as structural and operational changes may be made without departing from the scope of the present invention.
  • Generally, the present invention provides a system and method for facilitating packet transformation of multi-protocol, multi-flow, streaming data. Packets of the data stream being communicated across the network using different transmission protocols can be appropriately edited regardless of the transmission protocol associated with the packets. Portions of each packet that are subject to change (but may not necessarily be changed) are temporarily stored. Certain instructions for effecting appropriate modifications to the particular packet are processed, with due consideration to the packet's protocol, which results in a protocol-dependent modification of the temporarily stored packet information. Validity tags are associated with different segments of the temporarily-stored packet, where the state of each tag determines whether its corresponding packet segment will form part of the resulting modified packet. Those packet segments identified as being part of the resulting modified packet are reassembled prior to dispatch of the packet.
  • Data transmitted over networks such as the Internet 10 may be in the form of e-mail messages, file transfers and downloads, web page loading, and the like. The data is generally broken up into a number of data packets, each of which is assigned a hierarchy of headers to direct the data packet to the desired destination, among other things. Each packet is separately dispatched to the destination, although more than one different route may be taken by the different packets associated with the data.
  • For example, the source computer 100 of FIG. 1 may be configured in a local area network (LAN) and coupled to other computers 102 via a hub 104. A first one or more data packets may reach the hub 110 of the destination LAN via a first path, through routers 112, 114, 116, 118, 120, and 122. A second one or more data packets may reach the hub 110 via a second path, such as through routers 112, 124, 126, 116, 128, and 122. These different packets may take alternative routes due to equipment congestion or failure of a node, or to load share where possible. The routers associated with the core of the Internet can reconfigure the paths that these packets follow. This is due to the router's ability to analyze the header information corresponding to the data packet and to communicate line condition and other information between routers. The routers handling data at the major traffic points on large networks, such as the Internet, are generally large stand-alone systems. After transmitting the data from node to node through the network, the packets are reassembled at the receiving end and availed to the desired destination system 140.
  • Because of the colossal bandwidth demands required of routers, a continual emphasis is placed on alleviating data throughput bottlenecks at routers, gateways, bridges, and other intermediate nodes along the network. Because routers take on the task of intercepting, analyzing, and moving on millions of packets per second along the best possible route, the processing occurring at these routers must be extremely efficient to avoid bogging down the system. The present invention may be used in connection with such routing systems, increasing speed and efficiencies of network data throughput.
  • As will be described more fully below, the present invention may be used in connection with multiprotocol route/flow classifying and policing engines. In one embodiment of the invention, the packet transformation in accordance with the present invention is housed in a package or chip common to the classifier and policing functionalities. The device enables advanced services to be applied at speeds of 10 Gbps or more. Tightly coupled parsing, policing, and packet transformation allows the collective device to perform dynamic packet transformation for quality of service (QoS) based on the current flow state and also effectively handles dynamic header processing such as required by multiprotocol label switching (MPLS) routers.
  • Referring now to FIG. 2, one embodiment of a router system 200 is illustrated in which the present invention may be applied. One or more line cards are provided, each of which are coupled to a switch fabric 202. In the present example, a plurality of line cards are provided, including line card-0 204, line card-1 206 through a finite number of line cards represented by line card-n 208. In one embodiment of the invention, each of the line cards utilize analogous circuitry. Line card-0 204 will therefore be described, with the understanding that one or more of the remaining line cards in the router system may implement analogous circuitry.
  • The line card-0 204 of the illustrated embodiment receives as input packet-over-SONET/SDH (POS) frames via the network. As is known in the art, SONET/SDH is a high-speed time division multiplexing (TDM) physical-layer transport technology. POS provides a means for using the speed and management capabilities of SONET/SDH to optimize data transport, although originally optimized for voice. A SONET/SDH frame is 810 bytes and is normally represented as a two-dimensional byte-per-cell grid of 9 rows and 90 columns. The SONET/SDH frame is divided into transport overhead and payload bytes. The transport overhead bytes include section and line overhead bytes, while the payload bytes are made up of the payload capacity and some more overhead bytes referred to as path overhead. The overhead bytes are responsible for the management capabilities of SONET/SDH. The basic transmission rate of SONET (51.840 Mbps), referred to as Synchronous Transport Signal level 1 (STS-1), is achieved by sampling the 810-byte frames at 8000 frames per second. SONET features an octet-synchronous multiplexing scheme with transmission rates in multiples of 51.840 Mbps, whereby STS-192 thereby provides transmission at approximately 10 Gbps. Packet Over SONET/SDH (POS) allows core routers to send native IP packets directly over SONET/SDH frames. POS provides a relatively low packet overhead and cost per Mbit than other data transport methods, which allows POS to efficiently support increases in IP traffic over existing and new fiber networks.
  • As shown in the exemplary embodiment of FIG. 2, incoming POS OC-192 frames 210 originate from another OC-192 device (not shown) and arrive at the line card-0 204 at the ingress framer 212. The frames are transferred to the ingress processing circuit 214 via an interface 216, such as the Optical Internetworking Forum (OIF) System Packet Interface-4 (SPI-4). OIF SPI-4 describes a data path interface between the physical and link layers to support physical line data rates up to 10 Gb/s, and may be used in connection with the present invention, as may other interfaces of appropriate speed.
  • Ingress processing circuit 214, which in one embodiment of the invention is housed in a single chip, performs the necessary lookups, policing, and editing of the packet. If necessary, the frame can be redirected to the host processor. The frames are fed out of the ingress processing circuit 214 via an OIF SPI-4 interface 218 to a Fabric Interface Chip (FIC) circuit 220. The FIC 220 converts the stream from one format to another, such as from POS frames to Common Switch Interface (CSIX) cells, and distributes the cells over the switch fabric 202.
  • Similarly, cells switched at the switch fabric 202 may be received at the FIC 222 and provided to the egress processing circuit 224. Frames are transferred to the egress framer 226, and output as POS OC-192 frames 228. A processor 230 may be coupled to the ingress processing circuit 214 and the egress processing circuit 224 to perform a variety of functions, including providing coprocessor support. Memories 232, 234 represent one or more memories associated with the ingress processing module 214 and the egress processing module 224 respectively.
  • Referring now to FIG. 3, an exemplary embodiment of an ingress processing system 300 in accordance with the present invention is provided. The system 300 is described as an example of a system in which the principles of the present invention may be applied. The ingress processing system 300 interfaces to industry standard physical layer devices such as an OC-192 framer 302. In one embodiment of the invention, a portion of the ingress processing system 300 is housed on a single chip, illustrated in FIG. 3 as chip 304. While the invention is equally applicable where the physical chip boundaries differ from that illustrated in FIG. 3, the present invention is particularly efficient and useful in such a tightly coupled arrangement.
  • The interface 306, such as an OIF interface, provides the interface between the ingress processing circuit 304 and the framer 302. In one embodiment, the interface 306 is a 200 MHz OIF SPI-4 interface including a 64-bit data input. An elasticity buffer 308, which in one embodiment is a first-in-first-out (FIFO), provides temporary packet storage which allows table maintenance updates to be performed without dropping frames.
  • The pre-processor 310 performs a variety of functions, including packet verification and discarding, packet protocol identification, statistics compilation, and others. The packet protocol identification includes classifying the type of frame that has been received. The pre-processor identifies each layer protocol using a multistage algorithm coupled with a content-addressable memory (CAM) and memory (such as an SRAM) for resolving protocols. The frame is then stored in a memory along with the result of the preprocessor, i.e., the protocol layer code.
  • The parsing engine 312 performs layer classification and tagging via a search engine. One of the various functions of the parsing engine 312 is to parse the frames processed by the pre-processor, and generate search keys from data anywhere within the frame. The protocol layer code is used as a start vector into an instruction memory, which contains instructions for the parsing engine 312 and pointers to access selected words in a frame buffer. The parsing engine 312 receives the instruction and performs the functions selected by the corresponding instruction operational code. The results are used with an extractor that builds search keys which can be applied against a CAM (or indexed directly to a memory) to generate “search results” that contain the frame classification. Such parsing/classifying may be performed in a manner described herein and in copending U.S. patent application Ser. No. 09/849,913, entitled “A Method And Apparatus For Providing Multi-Protocol, Multi-Stage, Real-Time Frame Classification,” filed concurrently herewith and assigned to the assignee of the instant application, the contents of which are incorporated herein by reference in its entirety.
  • The policing engine 313 performs a variety of functions, including ensuring flow conformance to a maximum allowed peak rate and a contractually obliged committed rate flow, utilizing, for example, DiffServ IP and MPLS. The policing engine 313 works with memory, such as policing RAM 315 which stores a drop policy for each connection.
  • The editor 314, also referred to as a packet transformation engine, utilizes the search results to index the appropriate editing instructions to be executed by an editing module. The editor 314 facilitates execution of multiple edits or “transformations” per packet as streaming data of various networking protocols associated with different networking layers is input into the editing module. The editor 314 supports comprehensive packet manipulation capability, including full MPLS labels, DAC operations such as multiple push and pop operations, as well as traditional routing operations such as TTL edits, checksum edits, policing edits, and other routing operations. The editor 314 therefore performs required frame/packet transformations to support routing of multi-protocol packets, such as IP, FAST, VPN, MPLS, etc. The editor is described more fully below.
  • The labeled traffic is ultimately directed to the switch fabric interface 316 through one or more traffic directors 318, 320 and output buffer 322. The traffic director 318 accepts frames from the editor 314, which are then passed to an output buffer 322 and/or the processor buffer 340 via the interface 341. Traffic director 320 accepts frames from the output buffer 322 and the processor transmit buffer 342, and passes the frames to the OIF interface 344 to the switch fabric interface 316.
  • Referring briefly to the block diagram of FIG. 4, one embodiment of the interaction of the parsing engine 312, its corresponding memory 330, 332, and the editor 314 is shown. This diagram illustrates the generation of the search keys, which ultimately identify the appropriate search results to be accessed from the memory. The parser 400 (corresponding to parsing engine 312 of FIG. 3) outputs up to four “keys”, labeled key-0 402, key-1 404, key-2 406, and key-3 408. These keys are sent to the content-addressable memory (CAM) and associated memory (collectively SRAM/CAM 409) via signal paths 410. An example of such a CAM is shown as CAM 330 in FIG. 3. In response, the CAM outputs an address to the associated SRAM, such as SRAM 332 in FIG. 3. The “keys” therefore identify the appropriate address information stored in the CAM, in order to address the desired search result information stored in the SRAM. The SRAM, or other memory, outputs the search results, shown in FIG. 4 as output on signal paths 412. Up to four search results can be addressed by a corresponding number of keys, and these four search results are illustrated as result-0 414, result-1 416, result-2 418, result-3 420. The search results are provided to the editor module as shown on signal paths 422.
  • FIG. 5 is a block diagram illustrating selected functional blocks of an ingress processing system such as that described in connection with FIG. 3. The ingress processing system 500 of FIG. 5 illustrates the classifier functional block 502, the policer functional block 504, and the editor functional block 506. As described above, the classifier 502 builds queries (search words) to directly index a memory such as SRAM 510, or alternatively may search against a CAM 512 which in turn provides addresses to the SRAM 510. The policer 504 performs a variety of functions, including ensuring flow conformance to a maximum allowed peak rate and a contractually obliged committed rate flow, utilizing, for example, DiffServ IP and MPLS. The policer 504 works with memory, such as SRAM 514 which stores a drop policy for each connection. The editor 506 supports policing results and makes other appropriate modifications to the packet before being output from the ingress processing system 500. An external memory, such as SRAM 516, may be used to store the editor instructions. The coprocessor/CPU interface 508 provides for coprocessor/CPU support via interface 508, thereby allowing processor control, configuration, etc. of the classifier 502, policer 504 and editor 506. The interface 508 allows the system 500 to be coupled to a coprocessor and/or other CPU such as CPU 520, and to memory such as SRAM 522. In this manner, the ingress processing system 500 receives incoming packets, classifies and parses the packets according to predetermined criteria such as protocol, enforces policing functions on the packets, and modifies the packets accordingly before outputting the packets to the switch fabric.
  • In one embodiment of FIG. 5, the classifier 502, policer 504, editor 506 and coprocessor/CPU interface 508 are all provided on a single chip. The unique architecture combines the three key functions of classifying, policing and editing the data all through the tightly coupled arrangement facilitated by the integration into a common chip.
  • It should be recognized that the buffers and memory identified in FIG. 5 may also be incorporated into the common chip, as shown in the embodiment of FIG. 6. In FIG. 6, the SRAM 514 is integrated with the policer 504, the SRAM 516 is integrated with the editor 506, and so on. Embedding these memories on the chip provides a lower chip count solution and increased “per flow” statistics.
  • FIG. 7 is a block diagram of an editing system 700 in accordance with one embodiment of the invention. The editing system 700, also referred to as a packet transformation system, includes an editing module 702 and an instruction memory 704. The editing system 700 provides an elastic queue to the downstream traffic director, and as described more fully below, allows for packet modification, and packet transformation such as from SONET packets to Ethernet packets, etc.
  • Inputs to the editing system 700 include packet/frame input ultimately originating from the pre-processor or the classifier and labeled as the “packet input” 706. Also input to the editing system 700 are the search results 708. These search results provide indices into the editor's 702 instruction memory 704, which is part of a memory 703 such as an SRAM. Policing results 710 from the policer 711 are also input to the editing module 702 to provide, for example, packet color modifications. The editing system 700 outputs modified packets 712, and in one embodiment, outputs the modified (and unmodified) packets to an elastic queue that is accessible by the traffic director.
  • Based on the search results 708, the editing system 700 retrieves instructions and data from memory 703 to perform corresponding actions. In one embodiment of the invention, the memory 703 and the instruction memory 704 are comprised of SRAM, and together comprise an external, non-embedded circuit to the editing module 702. The memory 703 is accessed independent of the editor itself, and configuration is performed with a register access interface (not shown).
  • During normal operation, the instruction memory 704 is read via an index provided in the search result 708. The search result 708 includes a “valid flag” indicating the search result is usable, and an “editor use” identifier within the search result 708 data indicating that the editing system 700 is to use the corresponding search result. As editor instructions and associated editor data are read from the external memory 703, they are provided to the editing processor 714. In one embodiment of the invention, the editing processor 714 includes a processing module such as a microprocessor, RISC processor, central processing unit, arithmetic processing unit (ALU), or other processor known in the art.
  • The editing processor 714 is provided with editor instructions from the instruction memory 704 and associated editor data from the memory 703. The editor instructions are executed to perform packet modifications and provide packet steering information. These instructions include general purpose data manipulation instructions such as write instructions, register swap instructions, etc., and also may include special purpose instructions specifically crafted to perform one or more predetermined operations. Such special purpose instructions may be particularly useful to perform certain networking-specific tasks that depend on the particular networking protocol. For example, specific instructions can be created to “pop” the top label in an MPLS label stack and swap the next MPLS label with a new label. This can be performed through a specifically-created instruction, or alternatively may be performed through a series of more generic instructions. For purposes of example, and not of limitations, example operations corresponding to editor instructions in accordance with one embodiment of the invention are provided in FIG. 8.
  • FIG. 8 illustrates a representative list of editor instructions in accordance with one embodiment of the invention. The representative editor instructions are listed in column 800, along with its corresponding description in column 802. Certain instructions may be general purpose to perform basic transformations and other instructions may be provided to handle specific packet protocols. The general purpose instructions will typically be available while the specific instructions per protocol may be optional. For example, one instruction may apply to multiprotocol label switching (MPLS) methodologies, where label switching is employed. Label switching refers to the approaches of forwarding IP (or other network layer) packets using label swapping forwarding algorithms under the control of network layer routing algorithms. A label-switched router is a device that implements such label switching. The classifier can identify which packets have been adapted for transmission in the MPLS domain, and the search results generated by the classifier can then be used to index the appropriate instruction(s) to operate on those MPLS packets.
  • The editing instructions illustrated in FIG. 8 are for purposes of illustration and not of limitation. These exemplary editing instructions allow the packets to be edited in various beneficial manners. The No-Op instruction performs no operation. A variety of general purpose instructions are provided, including the Write1, Write 2, Delete1, Delete2, Read-Modify-Write with Mask, and Read-Modify-Write with Default Mask. The Swap instruction causes a swap of the top memory element, such as the top MPLS label on an MPLS label stack. A Swap/Push1 instruction swaps the top memory element (e.g., MPLS label) and pushes one other data element (e.g., MPLS label) to the top position. The Swap/Push2 instructions operates analogously, but pushes two other data elements to the top of the memory space. The Push1 and Push2 instructions operate analogously, and push one or two data elements, respectively, to the top of the memory space. For example, a Push 1 instruction may be used to push one MPLS label to the top of the MPLS stack. Pop1, Pop2, and PopAll instructions respectively pop the top one, two, or all data elements from the memory space. For example, the Pop2 instruction may be used to pop the two current top MPLS labels from the MPLS stack. A Pop/Swap instruction pops the top data element and swaps the next data element. For example, a Pop1/Swap instruction may be used to pop the current top MPLS label and swap the next.
  • As can be seen in the example of FIG. 8, many of the instructions may be crafted for execution with a particular type of packet protocol. The classification and parsing associated with the present invention ultimately presents search results that are used to locate the appropriate instruction to be processed by the editor. Therefore, the classifier/parser can determine, for example, the particular protocol of the incoming packet, thereby sending the appropriate search results to the editor to perform the correspondingly appropriate action on that packet based on the packet protocol. For example, a Push1 instruction may, in one embodiment of the invention, be dedicated to packets implementing the MPLS protocol such that execution of a Push1 instruction is only executed when a packet is an MPLS packet. This allows the multi-protocol ingress processing system to have generic, more specific, or very specific instructions addressable by search results that are based on parameters derived from the packet to be modified.
  • With certain editor instructions, associated editor data is provided. This editor data is, in one embodiment, stored with the instruction in the external memory 703. Depending on the editor instruction executed, the width of the editor data may vary. For example, in one embodiment, a 32-bit data segment is used in connection with the Swap, Push, Pop1/Swap, Write 1, and Read-Modify-Write with Default Mask editor instructions. Further, a 64-bit data segment is used in connection with the Swap/Push1, Push2, Read-Modify-Write with Mask, and Write2 editor instructions. Finally, in accordance with this particular embodiment, a 96-bit data segment is used in connection with the Swap/Push2 editor instruction, as three data words are used for the Swap and either Push operations.
  • Editor instructions, such as those set forth in FIG. 8, represent those instructions used to modify packets/frames. The editor instructions also contain information used to drop the packet or steer the packet to its downstream destination(s).
  • FIG. 9 is an exemplary editor instruction 900 format which may be used in connection with the present invention. The entry length field 902 identifies the total length of this editor entry, in pairs of 64-bit words. The number of addresses read is determined by adding one to the value in this field and multiplying by two. This provides a minimum of two and a maximum of sixteen addresses read per entry, for this particular example. The next instruction offset field 904 indicates a relative offset of another editor instruction following the present instruction.
  • The index field 906 indicates various header type encodings. For example, a 0.times.18 may indicate a FAST Modify, a 0.times.1C may indicate an LLC/SNAP push, a 0.times.24 may indicate an MPLS swap, etc. In one embodiment, this field is seven bits to allow for a sufficient number of different currently-known or future types. In another embodiment, the seven bits provide an index into a 128-location memory, such as that shown in FIG. 7.
  • Field 908 is the decrement time-to-live (TTL) field, which identifies whether to decrement an incoming TTL/Hop count. Update (Ud) field 910 identifies an update of IP DiffServ (Differentiated Service) DSCP field to match information carried in the top MPLS label. Analogously, the update (Ut) field 912 identifies an update of IP TTL to match TTL carried in the top MPLS label.
  • Field 914 is the opcode field in which the instruction operational code is presented. An opcode for each different instruction operation is used, to identify the particular function (such as shown in FIG. 8) to be performed. Edits may be handled differently, depending on the particular type of packet protocol, and therefore a particular opcode may cause different functions to be performed for different types in type field 906.
  • Packet direction field 916 provides an indication of the downstream packet direction, such as to drop the packet, direct the packet to the control plane, direct the packet to the data plane, or direct the packet to the control plane and the data plane. The packet direction is applied from multiple search results according to the direction function presented in the direction function field 918. Various direction functions may be applicable, such as an OR function where the packet direction bits in the current instruction are logically “OR'ed” with the other search results, and such as an AND function where the packet direction bits in the current instruction are logically “AND'ed” with the other search results. Another bit code available in the direction function field 918 can cause the packet direction in the current instruction to override the previous search results.
  • Fields 920 and 922 correspond to per-hop-behavior (PHB) groups. PHB refers to the forwarding treatment given to a specific class of traffic, based on DiffServ criteria. Routers and switches use PHBs to determine priorities for servicing various traffic flows. A PHB group is a set of one or more PHBs that can only be meaningfully specified and implemented simultaneously. This often occurs where a constraint commonly applies to all PHBs in the set, such as a queue servicing or queue management policy. A PHB group provides a service building block that allows a set of related forwarding behaviors to be specified together (e.g., four dropping priorities). Field 920 is the “apply PHB group” which indicates whether to apply a PHB group identified in field 922 to the packet. This forces a new (or initial) DiffServ PHB group onto the packet, and overrides any previous PHB group assignments from preceding search results. The DiffServ PHB group field 922 identifies the PHB group to be applied to the packet. The multi-bit field 922 allows multiple PHB groups to be defined, such as various Assured Forwarding (AF) classes, expedited forwarding (EF), etc.
  • It should be recognized that the instruction format provided in FIG. 9 is for illustrative purposes only, as variations of the instruction format are well within the scope of the invention as will be readily apparent to those of skill in the art from an analysis of the description provided herein.
  • Returning to FIG. 7, the instructions/data from the memory 703 are processed by the editing processor 714, and operate on data stored in the memory 716. The memory 716 includes a plurality of memory locations, illustrated in FIG. 7 as memory locations 718, 720, 722, 724, 726, 728, 730, and 732 through some finite number of memory locations up to the end memory location 734. The memory 716 stores portions of the packet input 706, and stores these packet portions in memory locations 718-734 as dictated by the input controller 740. In one embodiment of the invention, the packet 706 is stored in the memory 716 in time for the editing instructions from the instruction memory 704 to be processed by the editing processor 714, and for the packet data in the memory 716 to be operated on by the editing processor 714.
  • The memory 716 is organized into a finite number of segments that may include one or more of the memory locations 718-734. The memory 716 is partitioned such that at least some of these segments are allocated to store data corresponding to certain portions of the packet(s) 706. In one embodiment of the invention, these packet portions correspond to headers of the various protocol layers associated with the incoming packet. For example, header information corresponding to OSI networking layers two through four may each correspond to a segment of the memory 716, such that a segment of memory 716 is allocated to store a layer-2 header (e.g., a PPP header), a segment corresponding to a layer-2.5 header (e.g., an MPLS label stack), a segment corresponding to a layer-3 header (e.g., an IP header), and a segment corresponding to a layer-4 header (e.g., a TCP header). The input controller properly directs this information to the memory 716 based on upstream information developed by a packet classification engine that determines where one networking layer header ends and the next networking layer header begins.
  • The memory 716 in one embodiment of the invention is a dual-port memory. A dual-port memory can be simultaneously read and/or written by two different data sources, or more generally, a shared memory accessible by two processes. In one embodiment, the data stream is a 64-bit data stream, and the memory 716 is a 32-bit wide, 128-word deep, dual-port memory. In this manner, two 32-bit words may be simultaneously written to the memory 716 to write the 64-bit data. Alternatively, data can be concurrently written to and read from the memory 716. A dual-port memory could also be utilized to streamline the data flow through the editor, for instance, by “overlapping” the input write stage of the processing with the output read stage of the processing. In other embodiments of the invention, a single-port memory may be used, or two physically distinct yet logically coupled memories may also be used. Using a quad-port memory or other multi-port memory will produce analogous results and provide similar advantages.
  • In accordance with the invention, the allocated segments of memory are interleaved with segments of the memory 716 that are unused during the input stage, each unused segment including one or more of the memory locations 718-734. This allows selected ones of the allocated memory segments to be edited for subsequent serial output. For example, if memory location 718 stores an Ethernet header and memory location 722 stores an IPv4 header, the Ethernet header can be modified by writing a new Ethernet header into an otherwise unused, interleaved memory location 720, and disregarding the original Ethernet header in memory location 718. When the memory locations are read out in the proper order, the new Ethernet header in memory location 720 effectively replaces the original (now-disregarded) Ethernet header at memory location 718. In this manner, editing of packet layer headers can be effectively and efficiently performed.
  • The present invention also facilitates editing through the use of a valid bit array 750, which includes a field for each of the various memory segments, or memory locations, of the memory 716. Information in each field of the valid bit array 750 identifies whether or not its corresponding memory segment/location is currently housing valid data—that is, whether its corresponding memory segment/location will ultimately be part of the resulting output packet. For example, if the indicators in fields 752, 756 and 758 are set to signify valid data in corresponding memory locations 718, 722 and 724, then the resulting output packet will include the data in memory locations 718, 722 and 724. If the indicator in field 754 is not set, it signifies that the data in corresponding memory location 720 is not to be included with the resulting output packet. Each of the fields in the valid bit array 750 is therefore associated with a portion of the memory 716, in order to indicate whether or not the corresponding memory portion is storing valid data.
  • Using the valid bit array 750 and due to the interleaving of available memory space with the designated data storage areas, data in the memory 716 may be overwritten, deleted, or added. For example, the data in a memory segment may be overwritten by actually overwriting the data at that memory segment, and keeping the associated indicator in the valid bit array 750 in a state indicating the corresponding data is valid. Alternatively, the data in the memory segment may be effectively overwritten by inserting replacement data in the available memory space proximate the original data, and manipulating the bits in the corresponding fields of the valid bit array 750 such that the original data is no longer “valid” and the newly inserted data is now deemed valid. This is accomplished by setting the indicator in the field of the valid bit array 750 corresponding to the newly inserted data to an asserted state, and setting the indicator in the field of the valid bit array 750 corresponding to the original data to an unasserted state. Further, the data in the memory segment may effectively be “deleted” from consideration in the resulting output packet by setting the indicator in the field of the valid bit array 750 corresponding to the data to be deleted to an unasserted state. As a further example of a modification to data in the memory 716, a new data segment (e.g., a new header corresponding to a new network layer) may be inserted into the reserved, available memory space that was interleaved with the designated data storage areas. For example, assume that memory location 718 stores a PPP header and memory location 722 stores an IPv6 header, an MPLS header can be injected between the PPP header and the IPv6 header by writing the MPLS header into otherwise unused memory location 720.
  • In one embodiment of the invention, the valid bit array is implemented in one or more registers, where each bit of the register provides the field in which an indicator or flag relating to the validity of the corresponding data may be set or cleared. As will be readily apparent to those skilled in the art from the description provided herein, the number of bits used in each field may be one or more bits, as long as it adequately identifies the status of the data in its corresponding field in the memory 716.
  • Further, from the description provided herein, it will be readily appreciated by those skilled in the art that data in the memory 716 may be added, deleted, amended, moved, expanded in size, reduced in size, or otherwise manipulated within the memory 716, as long as the appropriate indicators in the valid bit array 750 are appropriately manipulated. For example, the interleaving of unused memory space with the various designated data storage areas (e.g., partitioned to store header data) allows the data in memory location 726 to be expanded to memory locations 726 and 728. This might be the case where a header needs to be modified such that it increases in length. While headers generally have a fixed length, it is conceivable that network layer headers are of variable length, requiring header length expansion, or reduction. The present invention allows for such modifications.
  • As another example, it may be desirable in some instances to move the data in the memory 716 to a different location, and the interleaved unused memory space facilitates such movement. In some instances, it is conceivable that multiple new headers will need to be inserted between two existing headers, and the existing headers stored in the memory 716 may be moved farther apart to make room for the new headers. As can be seen, a wide range of flexibility and efficiency is provided by the editing configuration of the present invention.
  • The memory 716 may, in one embodiment, be configured and partitioned such that all header information and data is stored within the memory 716. However, the “data” that is being transmitted generally should not be modified along the way between the source and the destination. This would in effect be corrupting the data, and it is thus generally the case that the data being transmitted will remain unchanged from source to destination. Therefore, a preferred embodiment of the invention includes an additional memory module, illustrated in FIG. 7 as the overflow buffer 770. The data associated with the packet is stored in the overflow buffer 770 until the header information is released, whether modified or not, from the memory 716. The data in the overflow buffer 770 is appended to the resulting header information from the memory 716 such that the packet is essentially recreated upon its output from the editor module 702, albeit the header information may have been modified.
  • Other packet information other than the associated data may also be stored in the overflow memory module 770. For example, the memory 716 may be configured to allow editing of certain, predetermined network layer headers, such as the headers including and between network layer-2 and network layer-4. In this example, headers corresponding to higher network layers (e.g., network layer-5) may remain embedded with the data portion of the packet, thereby being sent to the overflow buffer 770. In this particular example, this also means that headers outside of the layer-2 through layer-4 range are not available for modification at the editor module 702. The particular information allowed to be edited may therefore be configured into the system, such that as much or as little of the packet as desired may be configured or partitioned into the editing memory 716 as dictated by the particular implementation.
  • After the packet information in memory 716 has been edited, the editor module will reassemble and output the packet. This is accomplished by outputting the information in the memory 716 in the proper order, followed by the data stored in the overflow buffer 770. In one embodiment of the invention, the information in the memory 716 (e.g., network layer header information) is output in an order from lower memory addresses to high memory addresses (or alternatively from high to low memory addresses). The header information in these memory locations 718-734 will therefore be output in the order that it is stored, and only if its corresponding indicator in the valid bit array 750 is asserted. In an alternative embodiment of the invention, additional indicator bits, either associated with the valid bit array 750 or in an independent memory, identify the order in which the memory locations 718-734 will be read out.
  • In a preferred embodiment, the information stored in memory locations 718-734 will be output in a predetermined order, such as from the lowest memory 716 address to the highest memory 716 address. This corresponds to first outputting the information in memory location 718, then in memory location 720, and so forth, as dictated by the state of the corresponding bits in the valid bit array 750. The valid bit array 750 is read by a priority encoder 772. A priority encoder assigns a code representation to the outputs, represented by line 774 to the output controller 776. Therefore, depending on which of the fields of the valid bit array 750 are set, the priority encoder 772 instructs the output controller 776 to pass information in corresponding memory locations 718-734 to the multiplexer 778. In one embodiment of the invention, the priority encoder 772 is configured as part of the output controller 776.
  • The output controller outputs the header information stored in the memory 716 in the order dictated by the valid bit array 750 and designated in response thereto by the priority encoder 772. The priority encoder 772 takes a snapshot of the valid bit array 750 when editing is complete to identify the populated memory locations that will form the resulting packet header. The multiplexer 778 passes this resulting header information, and upon reaching the end of the header information, the multiplexer controllably switches to pass the information at its other input, which is fed from the overflow buffer 770. Therefore, the multiplexer 778 first passes the edited header information from the populated, valid memory locations in memory 716. The multiplexer then appends the associated data stored in the overflow buffer 770 to reassemble the packet as a modified packet 712.
  • FIG. 10 provides an illustration of receipt of a packet, partitioning the header information with interleaved memory space, editing of the information, and reassembly of a resulting packet. A packet 1000 includes a header 1002, which still further includes at least five header segments, H5 1004, H4 1006, H3 1008, H2 1010 and H1 1012. The header fields 1002 are stored in the memory 1020A. After editing, the memory 1020B includes the modified headers, and more particularly includes modified header H2.sub.M and H3.sub.M. The valid bit array 1022 includes four indicators of valid memory locations. These valid bit array indicators are shown in valid bit array fields 1024, 1026, 1028 and 1030. Therefore, the header information corresponding to these valid bit array fields are directed to the multiplexer 1032 via path 1034. These newly edited header segments are shown as header segments H5 1004, H3.sub.M 1042, H2.sub.M 1044 and H1 1012 which are output by the multiplexer 1032 as header 1050. A control input (not shown) on multiplexer 1032 then switches the output of the multiplexer 1032 from the input from path 1034 to the input from path 1052. This input includes the data 1054 previously stored in overflow buffer 1056. The multiplexer 1032 outputs the data 1054 to be appended to the outgoing packet 1060.
  • Returning again to FIG. 7, one embodiment of the editor module 702 further includes a module for performing additional manipulations on the data stored in the memory 716. This module is illustrated as the macro sequencer 780, which performs macro editing. In one embodiment, this macro editing is performed after the editor 714 has completed processing of its instructions from the instruction memory 704. The macro sequencer 780 operates on the data in memory 716 just as the editor 714 does, however the macro sequencer performs more specific data modifications, and does so based on different criteria than the editor 714. For example, in one embodiment, the editor 714 is a microprocessor or arithmetic logic unit that operates on the data in the memory 716 on a 32-bit boundary. These operations are generally those provided in connection with the particular editor processor 714 being implemented. However, the macro sequencer operates on the possibly edited data in the memory 716, and performs more specific modifications to the resulting packet, such as network-specific data adjustments when used in a networking environment. Thus, in one embodiment, both the editor 714 and the macro sequencer 780 operate on the data in memory 716, but the editor is first in time with respect to performing operations on the data in memory 716.
  • One task of the macro sequencer is to perform functions on the data in the memory 716 that it is inefficient or otherwise undesirable to dedicate editor instructions to. The macro sequencer 780 also gathers certain information to make its final adjustments to the data. For example, a particular header, such as an IP header, may include a field for a checksum value. If one or more of the headers in the memory 716 are edited, the checksum value must be updated. Because the editing module 702 operates on streaming data, the macro sequencer operates as a state machine and monitors the activity occurring on the data in the memory 716. When the editor 714 has completed its modifications to the data in the memory 716, the macro sequencer 780 will have monitored the activity, ascertained the new checksum value, and input it into the precise location within the appropriate memory location. Thus, the macro sequencer 780 monitors activity as the editing process continues, and when the editing process is complete, then the macro sequencer performs some “after-the-fact” modifications that it learned throughout the editing process.
  • There are numerous examples in which the macro sequencer will perform these post-editing-processor modifications. The checksum described above is one example. Another example is the update of the time-to-live (TTL) field of an IP packet header. The TTL field represents an amount of time that the packet has been in the network, and suggests, upon expiration or reaching a predetermined value, that the packet has been in the network too long and should be discarded. The TTL is therefore decremented at each router, thereby requiring special modification of the TTL field in the IP header of the memory 716 after editor 714 manipulation of the data. The TTL generally corresponds to the number of hops that have been encountered by a packet, but can also reflect a particular passing of time. Still other examples in which post-editing-processor modifications will be performed include policing colorations, and packet length. For example, a proprietary packet length may result from the addition of a local header as the packet travels through the router. The addition of a local header changes any packet length fields stored in the header information of the memory 716.
  • The macro sequencer 780 also works in connection with the policer 711. Generally, network policing allows subscriber bandwidth to be controlled in terms of the contracted service levels that were provisioned and is typically used at the ingress of the network. One manner for policing, for example in an MPLS network, is Single Rate Tri-Color Marker (srTCM) or (trTCM) Two Rate Tri-Color Marker. Tri-Color marking provides a mechanism for marking packets when they exceed the contracted bandwidth.
  • The srTCM meters a traffic stream and marks its packets according to three traffic parameters, Committed Information Rate (CIR), Committed Burst Size (CBS), and Excess Burst Size (EBS), to be either green, yellow, or red. A packet is marked green if it doesn't exceed the CBS, yellow if it does exceed the CBS, but not the EBS, and red otherwise. The trTCM meters an IP packet stream and marks its packets based on two rates, Peak Information Rate (PIR) and Committed Information Rate (CIR), and their associated burst sizes to be either green, yellow, or red. A packet is marked red if it exceeds the PIR. Otherwise it is marked either yellow or green depending on whether it exceeds or doesn't exceed the CIR. These techniques help manage network congestion at the output link, allowing the right packets to be discarded while facilitating fairness of resource usage.
  • The policer 711 performs packet conformance functions, and deals with such coloration issues. The macro sequencer 780 is coupled to receive information such as the coloration, and an indication of whether or not to drop the packet, from the policer 711. The macro sequencer can manipulate the appropriate bits in the appropriate header field in the memory 716 in response to coloration issues. For example, if the policer 711 determines that the current packet has exceeded its bandwidth, the policer 711 will provide a particular color to the macro sequencer 780. In response, the macro sequencer 780 modifies the bits in the appropriate network layer header to reflect the particular color, such as by modifying the type of service (TOS) field in an IPv4 header.
  • Policing may be determined in a manner described herein and in copending U.S. patent application Ser. No. 09/849,914, entitled “System and method For Policing Multiple Data Flows And Multi-Protocol Data Flows,” and copending U.S. patent application Ser. No. 09/849,810, entitled “System And Method For Hierarchical Policing Of Flows And Subflows Of A Data Stream,” both filed concurrently herewith and assigned to the assignee of the instant application, the contents of both being incorporated herein by reference in their respective entireties.
  • The macro sequencer 780 may therefore be represented by a state machine that is snooping what stage of the editing process is occurring, snooping the incoming data, snooping the actual editing process, collecting input from the policer, and performing final modifications to the stored packet header information before it is output. The macro sequencer 780 allows various specific modifications on the data in the memory 716.
  • The editor module 702, using at least the policer 711 and the macro sequencer 780, therefore also handles packet dropping for nonconforming packets. The policer 711 informs the macro sequencer 780 when a packet is to be dropped and the macro sequencer 780 in turn directs the editor module 702 to deny passage of the header information in the memory 716 and the data in the overflow buffer 770 to the output stage. Therefore, to drop a packet currently in the memories 716, 770, the corresponding information is not allowed to be output and attention simply turns back to the input stage to receive the next packet and store the packet in the memories 716, 770.
  • The editor module 702 of FIG. 7 may be controlled by configuration options, programmable via a register interface (not shown). These configuration options may include the manner in which packet handling is to be provided, including packet dropping and the downstream packet direction discussed above. The packet direction may be influenced by the editor instructions, or may be a programmed response to packet error conditions and policing. The direction eventually applied to the packet follows a hierarchical structure in one embodiment of the invention. For example, in one embodiment, a hierarchical structure for determining the ultimate direction includes, from highest priority to lowest priority, a master override action, error conditions, policing conditions, and editor instruction. The master override action is an override of all other packet direction decisions, and is particularly useful for diagnostic purposes. Error conditions receive the next highest priority, and priority among the error conditions may also be applied (e.g., such as an error condition encountered with a “drop” directive having the highest priority). Policing conditions on a policed connection is the next highest priority to guide the direction of the packet. Finally, the direction that is identified within the editor instruction itself is used as the direction for the packet, and where no editor search results are returned for a packet, a programmable default action then determines the packet direction.
  • The processing functions described herein in connection with the packet transformation function of the editor module may be performed by one or more different processors. For example, one or more physical chips may correspond to various processing modules of the invention, such as the editing module, input processor, output processor, etc. Alternatively, these functions may be carried out by a single processor configured to perform each of the various functions. In accordance with a preferred embodiment of the invention, these functional elements are embodied on a single physical chip, however various processing modules are embedded therein to perform the described functions.
  • In accordance with embodiments where various processing modules are employed, whether embedded within a chip or not, a primary control processor may be implemented to help manage and control each of the implemented processing modules. Referring to FIG. 11, an embodiment of an editing module 1100 is illustrated whereby a primary processor 1102 controls various processing modules, such as the editor module 1104, input processor 1106, output processor 1108 and macro sequencer 1110.
  • The embodiment of FIG. 11 shows the search results on path 1120. These search results serve as indices to the editor SRAM 1122 to provide the editor instructions and data shown on signal path 1124 to the editor 1104. The indices, labeled index-0 126, index-1 128, index-2 130, and index-3 132, are received by the search results control module 1134 which generates the appropriate addresses into the SRAM 1122 from the search result indices 1126, 1128, 1130, 1132.
  • The editor 1104 and primary processor 1102 may be part of a common processing module, or alternatively may be distinct processing modules. For example, in the example of FIG. 7, the editor 714 represents the processing element to perform the requisite processing to carry out the desired editing functions. In the embodiment illustrated in FIG. 11, the editor 1104 and primary processor 1102 collectively perform editing functions.
  • More particularly, the editor 1104, macro sequencer 1110, input processor 1106, output processor 1108, and the memory 1130 are all coupled to the primary processor 1102. The memory 1130 is analogous to the memory 716 that stores the information that is to be edited, and in the embodiment of FIG. 11 is a dual-port memory having port-0 1132 and port-1 1134 coupled between the memory 1130 and the primary processor 1102. In this embodiment, the editor 1104 provides command and data on path 1140 to the primary processor 1102 to cause the processor 1102 to carry out modification instructions on the data in the memory 11130. The macro sequencer 1110 provides write commands via path 1142 to the primary processor 1102 to allow the primary processor 1102 to initiate the designated modifications to the data stored in the memory 1130. The macro sequencer 1110 may receive snoop input from the editor 1104, input processor 1106, and/or policing module (not shown) to obtain coloration, which may require further interpretation via the color mapping 1144 information, or other information to initiate the appropriate modifications to the memory 1130.
  • A demultiplexer 1150 receives packet input, and in the present example, separates the header information from the non-header information. The separation need not be between the header and non-header information, but in the present example, all editing is to be performed on header information. Therefore, the header information is recognized by the input processor 1106, which marks the appropriate fields in the valid bit array 1160, and provides write instructions to indicate where in the memory 1130 the primary processor should store the header information. The non-header information (or alternatively, the information that is not to be available for editing) is sent to the buffer 1170.
  • Upon completion of editing of the header information in the memory 1130, due at least to the editing instructions identified by the editor 1104 and the macro sequencer 1110, the header and non-header information is reassembled into a resulting modified packet. This is accomplished using the output processor 1108 which reads the valid bit array 1160, and initiates forwarding of information in the memory 1130 to the multiplexer 1180 if the state of the valid bit array 1160 dictates the forwarding of that information. The header information, shown in FIG. 11 as the output headers on signal path 1182 are output from the multiplexer 1180, followed by the information stored in the buffer 1170, shown as the output non-headers on signal path 1184. The resulting modified packet shown on signal path 1186 from the multiplexer 1180 includes the edited headers followed by the non-edited information.
  • As described above, the embodiment of FIG. 11 represents another embodiment of an editor module in accordance with the present invention. Other variations of these embodiments in accordance with the description provided herein are within the scope of the invention.
  • FIG. 12 illustrates another embodiment of an editor module 1200 wherein a primary editor processor is used in connection with other editing components. The primary editor processor 1202 performs a process to receive packets at the packet input 1204 and output a modified packet at the packet out 1206. In order to perform these processes, the primary processor 1202 receives information from at least the macro sequencer 1210 and the editor 1212. The editor 1212 receives editor instructions via instruction path 1214, which in one embodiment includes a 72-bit bus. The instruction path 1214 is coupled to the search result module 1220 which uses the search results to address the appropriate editor instructions in memory. These instructions may be queued in a queue 1230 having a plurality of queue locations 1232. The instructions are fetched and stored in upper and lower registers 1234, 1236, and decoded by the decoder 1238. The appropriate commands as determined by the decoder 1238 are sent to the primary processor 1202 via command/ data paths 1240, 1242.
  • Also supplying information to the primary processor 1202 is the macro sequencer 1210. As earlier described, the macro sequencer 1210 may operate on the data being edited to perform certain predefined specific modifications thereto. Such modifications include updating a checksum value, or a time-to-live (TTL) parameter. Policing colorations and changes to packet length due to the addition of local headers are still other examples in which post-editing-processor modifications will be performed. These, or other, commands 1244, 1246 are written from the macro sequencer 1210 to the primary processor 1202, so that the primary processor can carry out the operations to actually modify the packet, particularly the information stored in the editor memory (not shown).
  • The primary processor 1202 operates as a state machine, as represented in FIG. 12. The packet is input 1250, and the packet is processed 1252 in accordance with the instructions 1240, 1242 supplied by the editor 1212. Header fields in the memory are edited, deleted, supplanted, etc. in order to arrive at modified header fields that ultimately define the direction 1254 of the modified packet. The macro sequencer commands 1244, 1246 are then processed as shown at the macro state 1256. When modifications directed at the macro state are complete, the modified packet is output 1258 as shown on packet output 1206, and the process continues with new input 1250.
  • FIGS. 13-16 illustrate representative examples of modifications (i.e., packet transformations) that may be performed in accordance with the principles of the present invention. It should be recognized that the examples of FIGS. 13-16 are provided for purposes of understanding, and provide only a representation of the multitude of different types of modifications that may be performed on packets, frames, cells, etc. Therefore, the examples provided in FIGS. 13-16 are illustrative only, and clearly the invention is not limited thereto. Those skilled in the art will readily appreciate that a variety of additional modifications other than those shown for illustrative purposes in FIGS. 13-16 Can be performed in accordance with the teachings of the present invention.
  • Referring first to FIG. 13, an example is provided of a packet transformation at a router handling an IP/Ethernet source route. In this example, the incoming packet 1300 includes various embedded headers including a layer-4 user datagram protocol (UDP) header 1302, a layer-3 Internet Protocol version-4 user header 1304A, and a layer-2 Ethernet protocol header 1306A. A packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1310 (also shown, for example, as memory 716 in FIG. 7). The packet layers are written to the editor memory 1310 in a predetermined order, such as from the lowest layer level to the highest. This is illustrated in FIG. 13 on the editor memory 1310, where the Ethernet header is stored at one or more memory locations 1312, the IPv4 header is stored at one or more memory locations 1314, and the UDP header is stored at one or more memory locations 1316. In accordance with the present invention, available memory locations 1318 may be interleaved with the stored header information.
  • As previously discussed, the parsing engine associated with the classifier module (not shown) acts on the incoming packet to produce search results that index editor instructions. For purposes of example, the resulting editor instructions to the editor module in the present example instruct the editor to replace the Ethernet source address field. The Ethernet source address field may need to be modified or replaced since a router at a node declares itself the new source address as the packet is transmitted through the network to the destination.
  • Since Ethernet addresses are generally forty-eight bits in length, the forty-eight bit Ethernet address is modified to change the Ethernet source address. For purposes of the present example, the editor memory in the present example is a 32-bit wide memory. Therefore, to modify the 48-bit Ethernet source address, one 32-bit operation is performed on the lower thirty-two bits of the address, and a read-modify-write operation is performed on the upper sixteen bits of the address. This is depicted by the memory state block 1320, showing state-A and the modified state-B of the memory 1310. The original state, state-A, has a lower 32-bit field of the Ethernet source address, labeled Ethernet Address-B1, stored at memory location 1322. The modified state, state-B, occurs due to a write command on the lower 32-bit field of the Ethernet source address, resulting in the modified address portion Ethernet Address-B2 stored at memory location 1322. For the upper sixteen bits, the original state-A has an upper 16-bit field of the Ethernet source address labeled Ethernet Address-A1 stored at memory location 1324. To modify only the desired sixteen bits of the thirty-two bit address field, a read-write-modify (RWM) instruction is executed by the editing processor. This results in the modified state-B, shown as the Ethernet Address-A2 stored at memory location 1324.
  • In this example, the IPv4 header stored at memory location 1314 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed. For example, a TTL value may be decremented in the TTL field (not shown) of the IPv4 header at location 1314. The checksum value in the IPv4 header may also be updated to reflect the change to the TTL field.
  • Following macro sequencer modifications, the header information has been fully modified, and is ready to be output from the editor memory 1310. The fields to be output from the memory 1310 are identified by a corresponding indicator in the valid bit array 1330. For example, the valid bit array 1330 of FIG. 13 depicts asserted fields 1332, 1334 and 1336 corresponding to memory locations 1312, 1314 and 1316 respectively. Thus, the Ethernet header at memory location 1312, the IPv4 header at memory location 1314, and the UDP header at location 1316 are tagged for inclusion in the modified output packet. The outgoing packet 1340 therefore includes various embedded headers including the layer-4 user datagram protocol (UDP) header 1302, the modified layer-3 internet protocol version-4 (IPv4) header 1304B, and the modified layer-2 Ethernet protocol header 1306B. As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1310.
  • FIG. 14 represents another example of a packet transformation at a router handling an IP/Ethernet source route, but in this example, IP tunneling modifications are desired. “Tunneling” refers to using the Internet as part of a private secure network, where the tunnel is the particular path that a given message or file might travel through the Internet. Tunneling protocols make it possible to create a virtual private network through such tunnels over the Internet. This would remove the need for entities to lease private lines for wide-area communication, and securely use the public networks using tunneling methodologies. Such tunneling methodologies are known in the art.
  • According to tunneling methodologies, an additional layer will be required in the outgoing packet than that which was present in the incoming packet. Therefore, the instant example is one which the state of the valid bit array changes to identify another one or more memory locations that must be considered in the outgoing modified information. More particularly, the tunneling header is wedged in between two existing header information blocks, using the unused memory space interleaved throughout the editor memory. These changes are more clearly described in connection with the example of FIG. 14.
  • Referring to FIG. 14, the incoming packet 1400 includes various embedded headers including a layer-4 user datagram protocol (UDP) header 1402, a layer-3 internet protocol version-4 (IPv4) header 1404A, and a layer-2 Ethernet protocol header 1406. A packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1410. The packet layers are written to the editor memory 1410, where the Ethernet header is stored at one or more memory locations 1412, the original IPv4 header is stored at one or more memory locations 1414, and the UDP header is stored at one or more memory locations 1416. In accordance with the present invention, available memory locations 1418 may be interleaved with the stored header information. The memory location 1419 is illustrated with the new tunneling IPv4 header, however the pre-modified state of this editor memory location was unused and available. However, in accordance with the editing methodology described, the available memory location 1419 is used for the newly added tunneling IPv4 header, as described more fully below.
  • The modifications to the editor memory are illustrated by the memory state block 1420, showing state-A and the modified state-B of the memory 1410. The original state of the particular memory locations, shown as state-A, has no valid information associated therewith. The editing processor executes instructions from the instruction memory, which in the present example includes a series of write instructions. More particularly, the tunneling IPv4 header is written to the editor memory 1410, as depicted by the new state-B in memory state block 1420. As can be seen, memory locations 1422, 1424 and 1426 change from being unused at state-A to storing tunneling IPv4 header information at state-B. More particularly, a write command to write the first two words (IPv4-T-A) of the tunneling IPv4 header is first written to memory location 1422, then another write command writes the next two words (IPv4-T-b) of the tunneling IPv4 header to memory location 1424, and a final write command writes a final word (IPv4-T-c) of the tunneling IPv4 header to memory location 1426. These stored words collectively comprise the tunneling IPv4 header, which resides at memory location 1419. Adding the new tunneling IPv4 header causes an indicator in field 1433 of the valid bit array to be set, thereby confirming its ultimate inclusion in the modified output packet.
  • In this example, the original IPv4 header stored at memory location 1414 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed. For example, a TTL value may be decremented in the TTL field (not shown) of the original IPv4 header at location 1414. The checksum value in the original IPv4 header may also be updated.
  • Following macro sequencer modifications, the header information has been fully modified, and is ready to be output from the editor memory 1410. The fields to be output from the memory 1410 are identified by a corresponding indicator in the valid bit array 1430. For example, the valid bit array 1430 of FIG. 14 depicts asserted fields 1432, 1433, 1434 and 1436 corresponding to memory locations 1412, 1419, 1414 and 1416 respectively. Thus, the Ethernet header at memory location 1412, the tunneling IPv4 header at memory location 1419, the IPv4 header at memory location 1414, and the UDP header at location 1416 are tagged for inclusion in the modified output packet. The outgoing packet 1440 therefore includes various embedded headers including the original layer-4 user datagram protocol (UDP) header 1402, the modified internet protocol version-4 (IPv4) header 1404B as well as the new tunneling IPv4 header 1442, and the layer-2 Ethernet protocol header 1406. As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1410.
  • Referring now to FIG. 15, an example is provided of a packet transformation at a router within a multiprotocol label switching (MPLS) domain, as carried out in accordance with the invention. MPLS integrates layer-2 information about network links into layer-3 (IP) within a particular autonomous system in order to simplify and improve IP-packet exchange. MPLS essentially provides connection-oriented labeling in an otherwise connectionless environment, which has resulted in MPLS being considered associated with layer-2.5. With MPLS, different flows can be classified, and different service levels can be associated with the different flow classifications. MPLS uses a stack of 32-bit labels, and a router will view the top label in the stack to determine what the next hop should be. Each router in the MPLS domain can modify the label stack, such as by adding more labels based on the router's knowledge of the packet forwarding conditions. For example, such a modification may require replacing the existing top label on the label stack with a new label so that a particular router can change one or more of the next hops. A variety of different modifications may be made to the MPLS stack, and the present invention is particularly beneficial in routers in which such modifications are to be made.
  • The incoming packet 1500 includes various embedded headers including a layer-4 transmission control protocol (TCP) header 1502, a layer-3 internet protocol version-4 (IPv4) header 1504A, a layer-2.5 MPLS header 1506A, and a layer-2 point-to-point protocol (PPP) header 1508. A packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1510. The packet layers are written to the editor memory 1510, where the PPP header is stored at one or more memory locations 1512, the MPLS header is stored at one or more memory locations 1514, the IPv4 header is stored at one or more memory locations 1516, and the TCP header is stored at one or more memory locations 1518. In accordance with the present invention, available memory locations 1519 may be interleaved with the stored header information.
  • The modifications to the editor memory are illustrated by the memory state block 1520, showing state-A and the modified state-B of the memory 1510. The original state of the particular memory locations, shown as state-A, includes an MPLS label stack including label MPLS-A at location 1522, label MPLS-B1 at location 1524, label MPLS-C at location 1526, through a finite number of labels represented by MPLS-n at location 1528. The editing processor executes instructions from the instruction memory, which in the present example includes instructions to pop the top MPLS label and swap the next MPLS label with a new MPLS label. This is depicted in the memory state block, where label MPLS-A at memory location 1522 is “popped” off the top of the state-A stack through editor processing of a pop instruction, resulting in no label stored at location 1522 as shown at state-B. A second editor instruction, a “swap” instruction, causes the MPLS-B1 label at location 1524 to be swapped with a new label, shown in modified state-B as label MPLS-B2 at location 1524.
  • In this example, the IPv4 header stored at memory location 1516 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed. For example, a TTL value may be decremented in the TTL field (not shown) of the IPv4 header at location 1516.
  • Following macro sequencer modifications, the header information has been fully modified, and is ready to be output from the editor memory 1510. The fields to be output from the memory 1510 are identified by a corresponding indicator in the valid bit array 1530. For example, the valid bit array 1530 of FIG. 15 depicts asserted fields 1532, 1534, 1536 and 1538 corresponding to memory locations 1512, 1514, 1516 and 1518 respectively. Thus, the PPP header at memory location 1512, the modified MPLS header at memory location 1514, the IPv4 header at memory location 1516, and the TCP header at location 1518 are tagged for inclusion in the modified output packet. The outgoing packet 1540 therefore includes various embedded headers including the original layer-4 transmission control protocol (TCP) header 1502, the modified internet protocol version-4 (IPv4) header 1504B as modified by the macro sequencer, the modified layer-2.5 MPLS header 1506B as modified by the editor instructions, and the layer-2 PPP header 1508. As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1510.
  • A final example is provided in FIG. 16. FIG. 16 provides an example of a packet transformation at a router at the egress edge of an MPLS domain, in accordance with the present invention. This example also contemplates the implementation of a local header applied by the router to direct the packet through the switch fabric to a specific output port at the router.
  • In this embodiment, the incoming packet 1600 includes various embedded headers including a layer-4 transmission control protocol (TCP) header 1602, a layer-3 internet protocol version-6 (IPv6) header 1604A, a layer-2.5 MPLS header 1606A, and a layer-2 point-to-point protocol (PPP) header 1608. A packet classifier module (not shown) determines where in the packet these different headers start and stop, and the input controller receives this information and writes the packet layers into the editor memory 1610. The packet layers are written to the editor memory 1610, where the PPP header is stored at one or more memory locations 1612, the MPLS header is stored at one or more memory locations 1614, the IPv6 header is stored at one or more memory locations 1616, and the TCP header is stored at one or more memory locations 1618. In accordance with the present invention, available memory locations 1619 may be interleaved with the stored header information.
  • Some modifications to the editor memory are illustrated by the memory state block 1620, showing state-A and the modified state-B of the memory 1610. The original state of the particular memory locations, shown as state-A, includes an MPLS label stack including label MPLS-A at location 1625, MPLS-B at location 1626, MPLS-C at location 1627, through MPLS-n at location 1628. The editing processor executes a “PopAll” instruction to remove all MPLS labels. This is depicted in the memory state block, where all labels MPLS-A, MPLS-B, MPLS-C, MPLS-D at memory locations 1625, 1626, 1627, 1628 respectively are “popped” from the state-A stack through editor processing of a PopAll instruction, resulting in no label stored at locations 1625, 1626, 1627, 1628 as shown at state-B. At this point, the resulting packet would be PPP/IPv6/TCP. However, the present example also contemplates another editor instruction, which is a write instruction to write one or more words of a local header which is inserted on the editor memory 1610 at location 1624 preceding the layer-2 PPP header. This local header will allow the router to direct the packet through the switch fabric to a specific output port.
  • In this example, the IPv6 header stored at memory location 1616 may also be operated on by the macro sequencer to perform specific modifications after the editor instructions have been executed. For example, a TTL value may be decremented in the TTL field (not shown) of the IPv6 header at location 1616. Further, the local header of the present example includes a packet length field which can be updated by the macro sequencer after all editor instructions have been executed. A new coloration to the packet based on input from the policer may also be included by the macro sequencer.
  • Following macro sequencer modifications, the header information has been fully modified, and is ready to be output from the editor memory 1610. The fields to be output from the memory 1610 are identified by a corresponding indicator in the valid bit array 1630. For example, the valid bit array 1630 of FIG. 16 depicts asserted fields 1632, 1634, and 1636 corresponding to memory locations 1612, 1616 and 1618 respectively. However, field 1638 of the valid bit array 1630 may be cleared, as all MPLS header information was removed during the editing process. Further, field 1639 of the valid bit array is now asserted, due to the inclusion of the local header into the memory at location 1624. Thus, the local header at memory location 1624, the PPP header at memory location 1612, the modified IPv6 header at memory location 1616, and the TCP header at location 1618 are tagged for inclusion in the modified output packet. The modified outgoing packet 1640 therefore includes various embedded headers including the original layer-4 transmission control protocol (TCP) header 1602, the modified internet protocol version-6 (IPv6) header 1604B as modified by the macro sequencer, the layer-2 PPP header 1608, and the newly added local header 1642. As previously described, any associated data for the output packet is appended to the modified headers output from the editor memory 1610.
  • Referring now to FIG. 17, a flow diagram is provided to illustrate an embodiment of a method for modifying a packet stream in accordance with the present invention. A packet stream including one or more packets, frames, cells, or other data units is received at a network node as shown at block 1700. For a given packet, particular segments of the packet are stored 1702 in a modification memory designated to temporarily store these packet segments during the modification process. For example, one such memory was depicted as memory 716 in FIG. 7. The modification memory includes a plurality of memory locations that are logically partitioned into different memory segments, such that the different packet segments of the packet can be stored in these different memory segments. In one embodiment, this “partitioning” can be accomplished by tracking at least the starting addresses of each of the packet segments stored in the modification memory.
  • In addition to storing the various packet segments in the modification memory, an instruction memory (which may include a data storage portion) may be called upon to output instructions for modifying the data temporarily stored in the modification memory. Thus, the appropriate editing instructions are indexed or otherwise elicited from the instruction memory, where the particular editing instructions being elicited depends on the characteristics of the packet, as shown at block 1704. For example, if the packet includes an embedded MPLS header, this MPLS header information is a “characteristic” of the packet that may be used to designate the appropriate one or more instructions from the instruction memory. In one embodiment, these characteristics are determined via the classification/parsing engine (e.g., classifier 502 shown in FIGS. 5 and 6) and are presented to the instruction memory in the form of the search results (e.g., search results 708 of FIG. 7).
  • The indexed editing instructions are processed to execute modification operations on the packet segments in the modification memory. Thus, modifications are effected 1706 as dictated by the indexed editing instructions. A “modification” may include altering existing packet segment data, inserting new packet segment data, deleting or otherwise canceling existing packet segment data, or any other manner of changing the packet data.
  • In order to identify packet segments to be included in the resulting output packet (whether altered, added, canceled, etc.), validity tags are associated with each of the memory segments of the modification memory, as shown at block 1708. A “validity tag” represents any stored indicator, such as one or more bits in a memory or register field. As previously described, one such embodiment is a valid bit array which includes a plurality of fields, each of which stores a validity tag. In a more particular embodiment provided for purposes of example, each of the individual bits of a register can represent the fields of a valid bit array, such that each bit in the register therefore represents a validity tag.
  • Upon consideration of a first packet segment as illustrated at block 1710, it is determined 1712 whether or not that packet segment's associated validity tag is set. It should be noted that the particular logical state of a “set” validity tag is not of particular relevance to the invention, and a “set” validity tag may therefore be represented by a high logic state, a low logic state, a bit pattern, or any other such determinable electronic representation. If the validity tag associated with a particular packet segment is set, then that packet segment is included 1714 in the resulting modified packet. If the validity bit is not set, that memory segment is disregarded 1716, i.e., the data at that memory segment is not included in the resulting modified packet. Where more packet segments are stored as determined at decision block 1718, these additional packet segments are considered 1710 to determine whether they too will, or will not, be included in the resulting modified packet. As can be seen, a modified packet is thus created by assembling the packet segments associated with asserted or “set” validity tags.
  • The foregoing description of the exemplary embodiment of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not with this detailed description, but rather by the claims appended hereto.

Claims (9)

1. A system comprising:
a programmable lookup word generator to receive a set of information and to produce a lookup word, the programmable lookup word generator including:
a profile memory configured to store a set of instructions for generating the lookup word; and
a selection mechanism for selecting portions of the set of information in response to the set of instructions retrieved from the profile memory, the selection mechanism including a matrix of storage elements and shift logic for use in generating the lookup word; and
a content-addressable memory, coupled to the programmable lookup word generator, configured to receive said generated lookup word and to perform a lookup operation based on said generated lookup word in order to generate one or more lookup result indications.
2. The system of claim 1, further comprising a queue coupled to the matrix of storage elements and the content addressable memory.
3. The system of claim 1, wherein the profile memory is responsive to a profile selection in retrieving the set of instructions used by the selection mechanism; and wherein the received set of information includes the profile selection.
4. The system of claim 3, wherein the programmable lookup word generator includes a shift logic control unit responsive to the set of instruction for controlling said shift logic.
5. A method for generating a lookup word, the method comprising:
receiving a set of information including a profile identification;
retrieving a set of instructions from a profile memory based on the profile identification;
manipulating the set of information in response to the set of instructions to generate the lookup word, said manipulation including controlling a selection mechanism, the selection mechanism including a matrix of storage elements and shift logic for use in generating the lookup word; and
exporting the lookup word to a content-addressable memory for use by said content-addressable memory in performing a lookup operation to identify one or more content-addressable memory lookup results.
6. The method of claim 5, further comprising programming the profile memory with the set of instructions.
7. The method of claim 5, wherein the set of information includes information related to a packet, and said one or more content-addressable memory results include a packet classification.
8. A system for generating a lookup word, the system comprising:
means for receiving a set of information including a profile identification;
means for retrieving a set of instructions from a profile memory based on the profile identification;
means for manipulating the set of information in response to the set of instructions to generate the lookup word, said means for manipulating the set of information includes a matrix of storage elements and shift logic for use in generating the lookup word; and
means for exporting the generated lookup word to a content-addressable memory for use by said content-addressable memory in performing a lookup operation to identify one or more content-addressable memory lookup results.
9. A packet editor module comprising:
an input memory configured to store incoming packet header information of a packet;
a packet processing unit configured to generate packet header information for the packet by operating on the packet header information stored in the input memory, the packet processing unit including a first processing component configured to generate layer 2 (L2) packet header information for the packet and a second processing component implemented in parallel with the first processing component and configured to generate layer 3 (L3) packet header information for the packet; and
a build component configured to receive the generated packet header information while the input memory stores incoming packet header information for a next packet.
US12/437,573 2001-05-04 2009-05-08 System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream Abandoned US20090213856A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/437,573 US20090213856A1 (en) 2001-05-04 2009-05-08 System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/849,804 US6944168B2 (en) 2001-05-04 2001-05-04 System and method for providing transformation of multi-protocol packets in a data stream
US11/224,692 US7539195B2 (en) 2001-05-04 2005-09-12 System and method for providing transformation of multi-protocol packets in a data stream
US12/437,573 US20090213856A1 (en) 2001-05-04 2009-05-08 System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/224,692 Division US7539195B2 (en) 2001-05-04 2005-09-12 System and method for providing transformation of multi-protocol packets in a data stream

Publications (1)

Publication Number Publication Date
US20090213856A1 true US20090213856A1 (en) 2009-08-27

Family

ID=25306562

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/849,804 Expired - Lifetime US6944168B2 (en) 2001-05-04 2001-05-04 System and method for providing transformation of multi-protocol packets in a data stream
US11/224,692 Expired - Fee Related US7539195B2 (en) 2001-05-04 2005-09-12 System and method for providing transformation of multi-protocol packets in a data stream
US12/437,573 Abandoned US20090213856A1 (en) 2001-05-04 2009-05-08 System and Method for Providing Transformation of Multi-Protocol Packets in a Data Stream

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/849,804 Expired - Lifetime US6944168B2 (en) 2001-05-04 2001-05-04 System and method for providing transformation of multi-protocol packets in a data stream
US11/224,692 Expired - Fee Related US7539195B2 (en) 2001-05-04 2005-09-12 System and method for providing transformation of multi-protocol packets in a data stream

Country Status (1)

Country Link
US (3) US6944168B2 (en)

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060159019A1 (en) * 2001-05-04 2006-07-20 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US20080008099A1 (en) * 2004-03-30 2008-01-10 Parker David K Packet processing system architecture and method
US20080008188A1 (en) * 2006-05-25 2008-01-10 Proximetry, Inc. Systems and methods for wireless resource management with quality of service (qos) management
US20080219669A1 (en) * 2007-03-05 2008-09-11 Futurewei Technologies, Inc. SDH/SONET Convergent Network
US20100034216A1 (en) * 2007-02-01 2010-02-11 Ashley Pickering Data communication
US7675915B2 (en) 2004-03-30 2010-03-09 Extreme Networks, Inc. Packet processing system architecture and method
US7821931B2 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. System and method for assembling a data packet
US7835375B2 (en) 2001-05-04 2010-11-16 Slt Logic, Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US20100333101A1 (en) * 2007-11-29 2010-12-30 Solarflare Communications Inc. Virtualised receive side scaling
US20110040897A1 (en) * 2002-09-16 2011-02-17 Solarflare Communications, Inc. Network interface and protocol
US8085780B1 (en) * 2002-03-22 2011-12-27 Juniper Networks, Inc. Optimized buffer loading for packet header processing
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US8380882B2 (en) 2005-04-27 2013-02-19 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US8423639B2 (en) 2009-10-08 2013-04-16 Solarflare Communications, Inc. Switching API
US8427952B1 (en) * 2009-03-24 2013-04-23 Packet Plus, Inc. Microcode engine for packet processing
US8447904B2 (en) 2008-12-18 2013-05-21 Solarflare Communications, Inc. Virtualised interface functions
US20130170493A1 (en) * 2011-09-23 2013-07-04 Futurewei Technologies, Inc. Method and apparatus to increase forwarding silicon functionality through packet manipulation
US8489761B2 (en) 2006-07-10 2013-07-16 Solarflare Communications, Inc. Onload network protocol stacks
US8533740B2 (en) 2005-03-15 2013-09-10 Solarflare Communications, Inc. Data processing system with intercepting instructions
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US8612536B2 (en) 2004-04-21 2013-12-17 Solarflare Communications, Inc. User-level stack
US8635353B2 (en) 2005-06-15 2014-01-21 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US8650569B2 (en) 2005-03-10 2014-02-11 Solarflare Communications, Inc. User-level re-initialization instruction interception
US8737431B2 (en) 2004-04-21 2014-05-27 Solarflare Communications, Inc. Checking data integrity
US8743877B2 (en) 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8763018B2 (en) 2011-08-22 2014-06-24 Solarflare Communications, Inc. Modifying application behaviour
US8782642B2 (en) 2005-03-15 2014-07-15 Solarflare Communications, Inc. Data processing system with data transmit capability
US8817784B2 (en) 2006-02-08 2014-08-26 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US8855137B2 (en) 2004-03-02 2014-10-07 Solarflare Communications, Inc. Dual-driver interface
US8868780B2 (en) 2005-03-30 2014-10-21 Solarflare Communications, Inc. Data processing system with routing tables
US8959095B2 (en) 2005-10-20 2015-02-17 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9003053B2 (en) 2011-09-22 2015-04-07 Solarflare Communications, Inc. Message acceleration
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US9043671B2 (en) 2003-03-03 2015-05-26 Solarflare Communications, Inc. Data protocol
US9077751B2 (en) 2006-11-01 2015-07-07 Solarflare Communications, Inc. Driver level segmentation
US9210140B2 (en) 2009-08-19 2015-12-08 Solarflare Communications, Inc. Remote functionality selection
US9256560B2 (en) 2009-07-29 2016-02-09 Solarflare Communications, Inc. Controller integration
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US9300599B2 (en) 2013-05-30 2016-03-29 Solarflare Communications, Inc. Packet capture
US9304825B2 (en) 2008-02-05 2016-04-05 Solarflare Communications, Inc. Processing, on multiple processors, data flows received through a single socket
US20160142287A1 (en) * 2013-08-02 2016-05-19 Hangzhou H3C Technologies Co., Ltd. Packet forwarding
US9384071B2 (en) 2011-03-31 2016-07-05 Solarflare Communications, Inc. Epoll optimisations
US9391841B2 (en) 2012-07-03 2016-07-12 Solarflare Communications, Inc. Fast linkup arbitration
US9391840B2 (en) 2012-05-02 2016-07-12 Solarflare Communications, Inc. Avoiding delayed data
US9426124B2 (en) 2013-04-08 2016-08-23 Solarflare Communications, Inc. Locked down network interface
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
US9686117B2 (en) 2006-07-10 2017-06-20 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
US9948533B2 (en) 2006-07-10 2018-04-17 Solarflare Communitations, Inc. Interrupt management
US10015104B2 (en) 2005-12-28 2018-07-03 Solarflare Communications, Inc. Processing received data
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US10742604B2 (en) 2013-04-08 2020-08-11 Xilinx, Inc. Locked down network interface
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices

Families Citing this family (323)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6711558B1 (en) * 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
US7139743B2 (en) 2000-04-07 2006-11-21 Washington University Associative database scanning and information retrieval using FPGA devices
US8095508B2 (en) * 2000-04-07 2012-01-10 Washington University Intelligent data storage and processing using FPGA devices
US6757742B1 (en) * 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
JP2002063084A (en) * 2000-08-21 2002-02-28 Toshiba Corp Packet-transferring device, packet-transferring method, and storage medium stored with program therefor
US7272643B1 (en) * 2000-09-13 2007-09-18 Fortinet, Inc. System and method for managing and provisioning virtual routers
US8250357B2 (en) 2000-09-13 2012-08-21 Fortinet, Inc. Tunnel interface for securing traffic over a network
US7111072B1 (en) 2000-09-13 2006-09-19 Cosine Communications, Inc. Packet routing system and method
US7574495B1 (en) 2000-09-13 2009-08-11 Fortinet, Inc. System and method for managing interworking communications protocols
US7487232B1 (en) * 2000-09-13 2009-02-03 Fortinet, Inc. Switch management system and method
US8670390B2 (en) 2000-11-22 2014-03-11 Genghiscomm Holdings, LLC Cooperative beam-forming in wireless networks
US20080095121A1 (en) * 2002-05-14 2008-04-24 Shattil Steve J Carrier interferometry networks
FR2823042B1 (en) * 2001-03-29 2003-07-04 Cit Alcatel PACKET SYNCHRONIZED BIDIRECTIONAL TRANSMISSION METHOD
US10931338B2 (en) 2001-04-26 2021-02-23 Genghiscomm Holdings, LLC Coordinated multipoint systems
US9819449B2 (en) 2002-05-14 2017-11-14 Genghiscomm Holdings, LLC Cooperative subspace demultiplexing in content delivery networks
US9893774B2 (en) 2001-04-26 2018-02-13 Genghiscomm Holdings, LLC Cloud radio access network
US10355720B2 (en) 2001-04-26 2019-07-16 Genghiscomm Holdings, LLC Distributed software-defined radio
US10425135B2 (en) 2001-04-26 2019-09-24 Genghiscomm Holdings, LLC Coordinated multipoint systems
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US7002967B2 (en) 2001-05-18 2006-02-21 Denton I Claude Multi-protocol networking processor with data traffic support spanning local, regional and wide area networks
US20020194332A1 (en) * 2001-06-13 2002-12-19 Connor Patrick L. Method and apparatus to manage resources for a multi-threaded device driver
US7181547B1 (en) * 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
WO2003005674A1 (en) * 2001-07-06 2003-01-16 Sharp Kabushiki Kaisha Packet communication method, communication system, communication apparatus, communication program and recording medium containing communication program
US7436826B2 (en) * 2001-07-25 2008-10-14 Dell Products L.P. System and method for detecting and indicating communication protocols
WO2003025709A2 (en) * 2001-09-19 2003-03-27 Bay Microsystems, Inc. Vertical instruction and data processing in a network processor architecture
US7085274B1 (en) 2001-09-19 2006-08-01 Juniper Networks, Inc. Context-switched multi-stream pipelined reorder engine
US7113517B2 (en) * 2001-09-27 2006-09-26 International Business Machines Corporation Configurable hardware scheduler calendar search algorithm
US7120151B1 (en) * 2001-09-27 2006-10-10 Cisco Technology, Inc. Method for fast label switchover with multiprotocol label switching
US7065083B1 (en) * 2001-10-04 2006-06-20 Cisco Technology, Inc. Method and apparatus for dynamically generating lookup words for content-addressable memories
US20030069995A1 (en) * 2001-10-05 2003-04-10 Fayette Brad K. Method and system for communicating among heterogeneous systems
US7716330B2 (en) 2001-10-19 2010-05-11 Global Velocity, Inc. System and method for controlling transmission of data packets over an information network
US7580408B2 (en) * 2001-11-21 2009-08-25 Alcatel Lucent Configurable packet processor
US7236492B2 (en) * 2001-11-21 2007-06-26 Alcatel-Lucent Canada Inc. Configurable packet processor
US7424019B1 (en) * 2001-11-27 2008-09-09 Marvell Israel (M.I.S.L) Ltd. Packet header altering device
KR100413528B1 (en) * 2001-11-30 2004-01-03 한국전자통신연구원 LPM-based CAM look-up-table managing method, the apparatus thereof and the recording medium thereof
AU2003214989A1 (en) * 2002-02-04 2003-09-02 Intel Corporation State record processing
US7227840B1 (en) * 2002-03-18 2007-06-05 Juniper Networks, Inc. High performance probabilistic rate policer
US7158520B1 (en) 2002-03-22 2007-01-02 Juniper Networks, Inc. Mailbox registers for synchronizing header processing execution
US7215662B1 (en) 2002-03-22 2007-05-08 Juniper Networks, Inc. Logical separation and accessing of descriptor memories
US7283528B1 (en) 2002-03-22 2007-10-16 Raymond Marcelino Manese Lim On the fly header checksum processing using dedicated logic
US7236501B1 (en) 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7239630B1 (en) 2002-03-22 2007-07-03 Juniper Networks, Inc. Dedicated processing resources for packet header generation
US7227867B1 (en) 2002-04-16 2007-06-05 Juniper Networks, Inc. Multi-protocol label switching in a network device
US7606248B1 (en) 2002-05-10 2009-10-20 Altera Corporation Method and apparatus for using multiple network processors to achieve higher performance networking applications
US7320037B1 (en) * 2002-05-10 2008-01-15 Altera Corporation Method and apparatus for packet segmentation, enqueuing and queue servicing for multiple network processor architecture
US7339943B1 (en) 2002-05-10 2008-03-04 Altera Corporation Apparatus and method for queuing flow management between input, intermediate and output queues
US9270421B2 (en) 2002-05-14 2016-02-23 Genghiscomm Holdings, LLC Cooperative subspace demultiplexing in communication networks
US9628231B2 (en) 2002-05-14 2017-04-18 Genghiscomm Holdings, LLC Spreading and precoding in OFDM
US10644916B1 (en) 2002-05-14 2020-05-05 Genghiscomm Holdings, LLC Spreading and precoding in OFDM
US10142082B1 (en) 2002-05-14 2018-11-27 Genghiscomm Holdings, LLC Pre-coding in OFDM
US9136931B2 (en) 2002-05-14 2015-09-15 Genghiscomm Holdings, LLC Cooperative wireless networks
US9225471B2 (en) 2002-05-14 2015-12-29 Genghiscomm Holdings, LLC Cooperative subspace multiplexing in communication networks
US10200227B2 (en) 2002-05-14 2019-02-05 Genghiscomm Holdings, LLC Pre-coding in multi-user MIMO
US8942082B2 (en) 2002-05-14 2015-01-27 Genghiscomm Holdings, LLC Cooperative subspace multiplexing in content delivery networks
US7609718B2 (en) * 2002-05-15 2009-10-27 Broadcom Corporation Packet data service over hyper transport link(s)
US7593334B1 (en) 2002-05-20 2009-09-22 Altera Corporation Method of policing network traffic
US7336669B1 (en) 2002-05-20 2008-02-26 Altera Corporation Mechanism for distributing statistics across multiple elements
US7203192B2 (en) 2002-06-04 2007-04-10 Fortinet, Inc. Network packet steering
US7340535B1 (en) 2002-06-04 2008-03-04 Fortinet, Inc. System and method for controlling routing in a virtual router system
US7177311B1 (en) * 2002-06-04 2007-02-13 Fortinet, Inc. System and method for routing traffic through a virtual router-based network switch
US7161904B2 (en) * 2002-06-04 2007-01-09 Fortinet, Inc. System and method for hierarchical metering in a virtual router based network switch
US7376125B1 (en) 2002-06-04 2008-05-20 Fortinet, Inc. Service processing switch
JP3789395B2 (en) * 2002-06-07 2006-06-21 富士通株式会社 Packet processing device
US7486696B2 (en) * 2002-06-25 2009-02-03 Avaya, Inc. System and method for providing bandwidth management for VPNs
US7251219B2 (en) * 2002-07-03 2007-07-31 Intel Corporation Method and apparatus to communicate flow control information in a duplex network processor system
US7324520B2 (en) * 2002-07-03 2008-01-29 Intel Corporation Method and apparatus to process switch traffic
US7649889B2 (en) * 2002-07-23 2010-01-19 Vectormax Corporation Server arbitrated reliable multicast system and process for accessing the same
US7711844B2 (en) 2002-08-15 2010-05-04 Washington University Of St. Louis TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks
US20040141356A1 (en) * 2002-08-29 2004-07-22 Maria Gabrani Data communications method and apparatus
US7096383B2 (en) 2002-08-29 2006-08-22 Cosine Communications, Inc. System and method for virtual router failover in a network routing system
KR100458373B1 (en) * 2002-09-18 2004-11-26 전자부품연구원 Method and apparatus for integration processing of different network protocols and multimedia traffics
US8514852B2 (en) * 2008-11-24 2013-08-20 Mesh Dynamics, Inc. Real time packet transforms to avoid re-transmission
US7269180B2 (en) * 2002-11-04 2007-09-11 World Wide Packets, Inc. System and method for prioritizing and queuing traffic
US7266120B2 (en) 2002-11-18 2007-09-04 Fortinet, Inc. System and method for hardware accelerated packet multicast in a virtual routing system
US7694018B2 (en) * 2002-11-19 2010-04-06 Hewlett-Packard Development Company, L.P. Method and system for communication between two devices by editing machine specific information at a proxy server
US20040098505A1 (en) * 2002-11-20 2004-05-20 Clemmensen Daniel G. Forwarding system with multiple logical sub-system functionality
GB2395856A (en) * 2002-11-26 2004-06-02 King S College London Method for reducing packet congestion at a network node
US20040100908A1 (en) * 2002-11-27 2004-05-27 Khosravi Hormuzd M. Method and apparatus to provide IP QoS in a router having a non-monolithic design
US7539191B1 (en) * 2002-12-12 2009-05-26 Packet Design, Inc. System and method for securing route processors against attack
KR100477698B1 (en) * 2003-01-13 2005-03-18 삼성전자주식회사 An IPv6 header receiving apparatus and an IPv6 header processing method
US7738493B2 (en) * 2003-01-23 2010-06-15 Cisco Technology, Inc. Methods and devices for transmitting data between storage area networks
US7957409B2 (en) * 2003-01-23 2011-06-07 Cisco Technology, Inc. Methods and devices for transmitting data between storage area networks
US7263648B2 (en) * 2003-01-24 2007-08-28 Wegener Communications, Inc. Apparatus and method for accommodating loss of signal
US7474672B2 (en) * 2003-02-11 2009-01-06 International Business Machines Corporation Frame alteration logic for network processors
US7032235B2 (en) * 2003-03-12 2006-04-18 Wegener Communications, Inc. Recasting DVB video system to recast digital broadcasts
JP4157403B2 (en) * 2003-03-19 2008-10-01 株式会社日立製作所 Packet communication device
US7171606B2 (en) * 2003-03-25 2007-01-30 Wegener Communications, Inc. Software download control system, apparatus and method
ES2222083B1 (en) * 2003-05-06 2006-03-01 Diseño De Sistemas En Silicio, S.A. CLASSIFICATION PROCEDURE FOR PRIORITY SECTIONS.
CA2523548C (en) 2003-05-23 2014-02-04 Washington University Intelligent data processing system and method using fpga devices
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
US7296204B2 (en) * 2003-05-30 2007-11-13 Wegener Communications, Inc. Error correction apparatus and method
US7937495B2 (en) * 2003-06-25 2011-05-03 Cisco Technology, Inc. System and method for modifying data transferred from a source to a destination
US7206411B2 (en) 2003-06-25 2007-04-17 Wegener Communications, Inc. Rapid decryption of data by key synchronization and indexing
FR2858502B1 (en) * 2003-08-01 2006-02-24 Cit Alcatel DEVICE AND METHOD FOR PROCESSING NETWORK TRAFFIC DATA FOR SELF CONFIGURATION OF A ROUTER
US7720095B2 (en) 2003-08-27 2010-05-18 Fortinet, Inc. Heterogeneous media packet bridging
US7441179B2 (en) * 2003-10-23 2008-10-21 Intel Corporation Determining a checksum from packet data
EP1692595A2 (en) * 2003-11-04 2006-08-23 Nexthop Technologies, Inc. Secure, standards-based communications across a wide-area network
KR20050057698A (en) * 2003-12-10 2005-06-16 삼성전자주식회사 Apparatus and method for generating checksum
US7621162B2 (en) * 2003-12-30 2009-11-24 Alcatel Lucent Hierarchical flow-characterizing multiplexor
US7454696B2 (en) * 2004-04-09 2008-11-18 International Business Machines Corporation Method and apparatus for stream based markup language post-processing
US7613209B1 (en) * 2004-03-30 2009-11-03 Extreme Networks, Inc. System and method for egress packet marking
US7646770B1 (en) * 2004-03-30 2010-01-12 Extreme Networks, Inc. Systems for supporting packet processing operations
US8249082B2 (en) * 2004-04-05 2012-08-21 Verizon Business Global Llc System method for a communications access network
US20050220059A1 (en) * 2004-04-05 2005-10-06 Delregno Dick System and method for providing a multiple-protocol crossconnect
US8218569B2 (en) 2004-04-05 2012-07-10 Verizon Business Global Llc Apparatus and method for terminating service emulation instances
US8948207B2 (en) * 2004-04-05 2015-02-03 Verizon Patent And Licensing Inc. System and method for transporting time-division multiplexed communications through a packet-switched access network
US8693323B1 (en) * 2004-04-05 2014-04-08 Verizon Business Global Llc System and method for managing communications in an access network
US7821929B2 (en) * 2004-04-05 2010-10-26 Verizon Business Global Llc System and method for controlling communication flow rates
US7869450B2 (en) * 2004-04-05 2011-01-11 Verizon Business Global Llc Method and apparatus for processing labeled flows in a communication access network
US8289973B2 (en) * 2004-04-05 2012-10-16 Verizon Business Global Llc System and method for indicating classification of a communications flow
US8340102B2 (en) 2004-04-05 2012-12-25 Verizon Business Global Llc Apparatus and method for providing a network termination point
US7586851B2 (en) * 2004-04-26 2009-09-08 Cisco Technology, Inc. Programmable packet parsing processor
US20050281249A1 (en) * 2004-06-18 2005-12-22 Nokia Corporation Multi-instancing of routing/forwarding tables and socket API
US7434022B1 (en) * 2004-06-29 2008-10-07 Emc Corporation Distributed workflow techniques
US20060004936A1 (en) * 2004-06-30 2006-01-05 Nokia Inc. Bridge for enabling communication between a FIFO interface and a PL3 bus for a network processor and an I/O card
US11381285B1 (en) 2004-08-02 2022-07-05 Genghiscomm Holdings, LLC Transmit pre-coding
US11552737B1 (en) 2004-08-02 2023-01-10 Genghiscomm Holdings, LLC Cooperative MIMO
US11184037B1 (en) 2004-08-02 2021-11-23 Genghiscomm Holdings, LLC Demodulating and decoding carrier interferometry signals
US7499419B2 (en) * 2004-09-24 2009-03-03 Fortinet, Inc. Scalable IP-services enabled multicast forwarding with efficient resource utilization
US7808904B2 (en) 2004-11-18 2010-10-05 Fortinet, Inc. Method and apparatus for managing subscriber profiles
US8170019B2 (en) * 2004-11-30 2012-05-01 Broadcom Corporation CPU transmission of unmodified packets
CN1787514A (en) * 2004-12-09 2006-06-14 上海贝尔阿尔卡特股份有限公司 Method for transmitting and receiving network managing information and controlling signalling information
US7602731B2 (en) * 2004-12-22 2009-10-13 Intruguard Devices, Inc. System and method for integrated header, state, rate and content anomaly prevention with policy enforcement
US7626940B2 (en) * 2004-12-22 2009-12-01 Intruguard Devices, Inc. System and method for integrated header, state, rate and content anomaly prevention for domain name service
US7983291B2 (en) * 2005-02-18 2011-07-19 Broadcom Corporation Flexible packet modification engine for a network device
US20060187920A1 (en) * 2005-02-18 2006-08-24 Broadcom Corporation Flexible packet modification engine
US7769858B2 (en) * 2005-02-23 2010-08-03 International Business Machines Corporation Method for efficiently hashing packet keys into a firewall connection table
US7917299B2 (en) 2005-03-03 2011-03-29 Washington University Method and apparatus for performing similarity searching on a data stream with respect to a query string
JP4545619B2 (en) * 2005-03-15 2010-09-15 富士通株式会社 Network system, layer 3 communication device, layer 2 communication device and route selection method
US8018926B2 (en) * 2005-03-30 2011-09-13 Jing Ling Differential delay compensation
US7889734B1 (en) * 2005-04-05 2011-02-15 Oracle America, Inc. Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system
US7596741B2 (en) * 2005-04-11 2009-09-29 Hewlett-Packard Development Company, L.P. Packet protection for header modification
US7733890B1 (en) 2005-04-22 2010-06-08 Oracle America, Inc. Network interface card resource mapping to virtual network interface cards
US7591011B1 (en) 2005-04-22 2009-09-15 Sun Microsystems, Inc. Assigning higher priority to transactions based on subscription level
US7499463B1 (en) 2005-04-22 2009-03-03 Sun Microsystems, Inc. Method and apparatus for enforcing bandwidth utilization of a virtual serialization queue
US7697434B1 (en) 2005-04-22 2010-04-13 Sun Microsystems, Inc. Method and apparatus for enforcing resource utilization of a container
US7675920B1 (en) * 2005-04-22 2010-03-09 Sun Microsystems, Inc. Method and apparatus for processing network traffic associated with specific protocols
US7607168B1 (en) 2005-04-22 2009-10-20 Sun Microsystems, Inc. Network interface decryption and classification technique
US7627899B1 (en) 2005-04-22 2009-12-01 Sun Microsystems, Inc. Method and apparatus for improving user experience for legitimate traffic of a service impacted by denial of service attack
US7782870B1 (en) 2005-04-22 2010-08-24 Oracle America, Inc. Method and apparatus for consolidating available computing resources on different computing devices
US7499457B1 (en) 2005-04-22 2009-03-03 Sun Microsystems, Inc. Method and apparatus for enforcing packet destination specific priority using threads
US7471689B1 (en) 2005-04-22 2008-12-30 Sun Microsystems, Inc. Method and apparatus for managing and accounting for bandwidth utilization within a computing system
US7739736B1 (en) 2005-04-22 2010-06-15 Oracle America, Inc. Method and apparatus for dynamically isolating affected services under denial of service attack
US7640591B1 (en) 2005-04-22 2009-12-29 Sun Microsystems, Inc. Method and apparatus for limiting denial of service attack by limiting traffic for hosts
US7623538B1 (en) 2005-04-22 2009-11-24 Sun Microsystems, Inc. Hardware-based network interface per-ring resource accounting
US7593404B1 (en) 2005-04-22 2009-09-22 Sun Microsystems, Inc. Dynamic hardware classification engine updating for a network interface
US8006285B1 (en) 2005-06-13 2011-08-23 Oracle America, Inc. Dynamic defense of network attacks
US7746783B1 (en) 2005-09-14 2010-06-29 Oracle America, Inc. Method and apparatus for monitoring packets at high data rates
US7760722B1 (en) 2005-10-21 2010-07-20 Oracle America, Inc. Router based defense against denial of service attacks using dynamic feedback from attacked host
US8635284B1 (en) 2005-10-21 2014-01-21 Oracle Amerca, Inc. Method and apparatus for defending against denial of service attacks
US7940756B1 (en) * 2005-11-23 2011-05-10 Symantec Corporation Dynamic tagging of network data based on service level objectives
US7702629B2 (en) 2005-12-02 2010-04-20 Exegy Incorporated Method and device for high performance regular expression pattern matching
US10878646B2 (en) 2005-12-08 2020-12-29 Smartdrive Systems, Inc. Vehicle event recorder systems
US20070150138A1 (en) 2005-12-08 2007-06-28 James Plante Memory management in event recording systems
EP1808994A1 (en) * 2006-01-12 2007-07-18 Alcatel Lucent Universal switch for transporting packet data frames
US7954114B2 (en) 2006-01-26 2011-05-31 Exegy Incorporated Firmware socket module for FPGA-based pipeline processing
US9306852B2 (en) * 2006-01-27 2016-04-05 Avaya Inc. Coding and packet distribution for alternative network paths in telecommunications networks
US7801136B2 (en) * 2006-02-15 2010-09-21 Ericsson Ab Source routed multicast LSP
US9201842B2 (en) 2006-03-16 2015-12-01 Smartdrive Systems, Inc. Vehicle event recorder systems and networks having integrated cellular wireless communications systems
US8996240B2 (en) 2006-03-16 2015-03-31 Smartdrive Systems, Inc. Vehicle event recorders with integrated web server
WO2007121035A2 (en) 2006-03-23 2007-10-25 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US7756134B2 (en) * 2006-05-02 2010-07-13 Harris Corporation Systems and methods for close queuing to support quality of service
US7894509B2 (en) 2006-05-18 2011-02-22 Harris Corporation Method and system for functional redundancy based quality of service
US20070291656A1 (en) * 2006-06-16 2007-12-20 Harris Corporation Method and system for outbound content-based QoS
US8064464B2 (en) * 2006-06-16 2011-11-22 Harris Corporation Method and system for inbound content-based QoS
US7990860B2 (en) * 2006-06-16 2011-08-02 Harris Corporation Method and system for rule-based sequencing for QoS
US8516153B2 (en) 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US7856012B2 (en) 2006-06-16 2010-12-21 Harris Corporation System and methods for generic data transparent rules to support quality of service
US7840482B2 (en) 2006-06-19 2010-11-23 Exegy Incorporated Method and system for high speed options pricing
US7916626B2 (en) * 2006-06-19 2011-03-29 Harris Corporation Method and system for fault-tolerant quality of service
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US8730981B2 (en) 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service
US7769028B2 (en) * 2006-06-21 2010-08-03 Harris Corporation Systems and methods for adaptive throughput management for event-driven message-based data
US7684423B2 (en) * 2006-06-30 2010-03-23 Sun Microsystems, Inc. System and method for virtual network interface cards based on internet protocol addresses
US7643482B2 (en) * 2006-06-30 2010-01-05 Sun Microsystems, Inc. System and method for virtual switching in a host
US7672299B2 (en) * 2006-06-30 2010-03-02 Sun Microsystems, Inc. Network interface card virtualization based on hardware resources and software rings
US7742474B2 (en) * 2006-06-30 2010-06-22 Oracle America, Inc. Virtual network interface cards with VLAN functionality
US7630368B2 (en) * 2006-06-30 2009-12-08 Sun Microsystems, Inc. Virtual network interface card loopback fastpath
US7715416B2 (en) * 2006-06-30 2010-05-11 The Open Computing Trust 1 Generalized serialization queue framework for protocol processing
US7966401B2 (en) * 2006-06-30 2011-06-21 Oracle America, Inc. Method and apparatus for containing a denial of service attack using hardware resources on a network interface card
US7792140B2 (en) * 2006-06-30 2010-09-07 Oracle America Inc. Reflecting the bandwidth assigned to a virtual network interface card through its link speed
US7634608B2 (en) * 2006-06-30 2009-12-15 Sun Microsystems, Inc. Bridging network components
US7613198B2 (en) * 2006-06-30 2009-11-03 Sun Microsystems, Inc. Method and apparatus for dynamic assignment of network interface card resources
US7613132B2 (en) * 2006-06-30 2009-11-03 Sun Microsystems, Inc. Method and system for controlling virtual machine bandwidth
US7515596B2 (en) * 2006-06-30 2009-04-07 Sun Microsystems, Inc. Full data link bypass
US8095675B2 (en) * 2006-07-20 2012-01-10 Oracle America, Inc. Priority and bandwidth specification at mount time of NAS device volume
US7894453B2 (en) * 2006-07-20 2011-02-22 Oracle America, Inc. Multiple virtual network stack instances
US7912926B2 (en) * 2006-07-20 2011-03-22 Oracle America, Inc. Method and system for network configuration for containers
US8050266B2 (en) * 2006-07-20 2011-11-01 Oracle America, Inc. Low impact network debugging
US8005022B2 (en) * 2006-07-20 2011-08-23 Oracle America, Inc. Host operating system bypass for packets destined for a virtual machine
US8392565B2 (en) * 2006-07-20 2013-03-05 Oracle America, Inc. Network memory pools for packet destinations and virtual machines
US7836212B2 (en) * 2006-07-20 2010-11-16 Oracle America, Inc. Reflecting bandwidth and priority in network attached storage I/O
US7788411B2 (en) * 2006-07-20 2010-08-31 Oracle America, Inc. Method and system for automatically reflecting hardware resource allocation modifications
US8630296B2 (en) * 2006-07-20 2014-01-14 Oracle America, Inc. Shared and separate network stack instances
US8036127B2 (en) 2006-07-20 2011-10-11 Oracle America, Inc. Notifying network applications of receive overflow conditions
US7885257B2 (en) * 2006-07-20 2011-02-08 Oracle America, Inc. Multiple virtual network stack instances using virtual network interface cards
US7848331B2 (en) * 2006-07-20 2010-12-07 Oracle America, Inc. Multi-level packet classification
US8713202B2 (en) * 2006-07-20 2014-04-29 Oracle America, Inc. Method and system for network configuration for virtual machines
US7852843B2 (en) * 2006-07-21 2010-12-14 Cortina Systems, Inc. Apparatus and method for layer-2 to layer-7 search engine for high speed network application
US8300653B2 (en) 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
US8351327B1 (en) 2006-08-28 2013-01-08 Juniper Networks, Inc. Intermediate network device applying application-layer quality of service to channels within a communication session
US20080263673A1 (en) * 2006-09-29 2008-10-23 Viewpoint Corporation System and method for delivering promotional and information content during a computer-based application and collecting impression metrics
US8649933B2 (en) 2006-11-07 2014-02-11 Smartdrive Systems Inc. Power management systems for automotive video event recorders
US8989959B2 (en) 2006-11-07 2015-03-24 Smartdrive Systems, Inc. Vehicle operator performance history recording, scoring and reporting systems
US8868288B2 (en) 2006-11-09 2014-10-21 Smartdrive Systems, Inc. Vehicle exception event management systems
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7583674B2 (en) * 2006-11-20 2009-09-01 Alcatel Lucent Switch and method for supporting internet protocol (IP) network tunnels
US7733795B2 (en) * 2006-11-28 2010-06-08 Oracle America, Inc. Virtual network testing and deployment using network stack instances and containers
US8447880B2 (en) * 2006-12-20 2013-05-21 Oracle America, Inc. Network stack instance architecture with selection of transport layers
US7738457B2 (en) * 2006-12-20 2010-06-15 Oracle America, Inc. Method and system for virtual routing using containers
US8194667B2 (en) * 2007-03-30 2012-06-05 Oracle America, Inc. Method and system for inheritance of network interface card capabilities
US8175271B2 (en) * 2007-03-30 2012-05-08 Oracle America, Inc. Method and system for security protocol partitioning and virtualization
US8087066B2 (en) * 2007-04-12 2011-12-27 Oracle America, Inc. Method and system for securing a commercial grid network
US20080267177A1 (en) * 2007-04-24 2008-10-30 Sun Microsystems, Inc. Method and system for virtualization of packet encryption offload and onload
US8006297B2 (en) * 2007-04-25 2011-08-23 Oracle America, Inc. Method and system for combined security protocol and packet filter offload and onload
US8239092B2 (en) 2007-05-08 2012-08-07 Smartdrive Systems Inc. Distributed vehicle event recorder systems having a portable memory data transfer system
US8694673B2 (en) * 2007-06-26 2014-04-08 Verizon Patent And Licensing Inc. Systems and methods for host identification
US7702799B2 (en) * 2007-06-28 2010-04-20 Oracle America, Inc. Method and system for securing a commercial grid network over non-trusted routes
US8320373B2 (en) * 2007-08-23 2012-11-27 Qualcomm Incorporated Packet-based processing system
EP2186250B1 (en) 2007-08-31 2019-03-27 IP Reservoir, LLC Method and apparatus for hardware-accelerated encryption/decryption
US8458366B2 (en) * 2007-09-27 2013-06-04 Oracle America, Inc. Method and system for onloading network services
US7962587B2 (en) * 2007-12-10 2011-06-14 Oracle America, Inc. Method and system for enforcing resource constraints for virtual machines across migration
US8095661B2 (en) * 2007-12-10 2012-01-10 Oracle America, Inc. Method and system for scaling applications on a blade chassis
US7984123B2 (en) * 2007-12-10 2011-07-19 Oracle America, Inc. Method and system for reconfiguring a virtual network path
US8370530B2 (en) * 2007-12-10 2013-02-05 Oracle America, Inc. Method and system for controlling network traffic in a blade chassis
US7945647B2 (en) * 2007-12-10 2011-05-17 Oracle America, Inc. Method and system for creating a virtual network path
US8086739B2 (en) * 2007-12-10 2011-12-27 Oracle America, Inc. Method and system for monitoring virtual wires
US10229453B2 (en) * 2008-01-11 2019-03-12 Ip Reservoir, Llc Method and system for low latency basket calculation
US7970951B2 (en) * 2008-02-29 2011-06-28 Oracle America, Inc. Method and system for media-based data transfer
US8886838B2 (en) * 2008-02-29 2014-11-11 Oracle America, Inc. Method and system for transferring packets to a guest operating system
US7965714B2 (en) * 2008-02-29 2011-06-21 Oracle America, Inc. Method and system for offloading network processing
US7944923B2 (en) * 2008-03-24 2011-05-17 Oracle America, Inc. Method and system for classifying network traffic
US7826359B2 (en) * 2008-03-24 2010-11-02 Oracle America, Inc. Method and system for load balancing using queued packet information
US7945725B2 (en) * 2008-04-11 2011-05-17 Broadcom Corporation Access control list rule compression using meter re-mapping
US7801046B2 (en) * 2008-04-28 2010-09-21 Oracle America, Inc. Method and system for bandwidth control on a network interface card
US9047421B2 (en) * 2008-04-30 2015-06-02 Alcatel Lucent Serial link buffer fill-level compensation using multi-purpose start of protocol data unit timing characters
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
JP5092897B2 (en) * 2008-05-26 2012-12-05 富士通株式会社 Data migration processing program, data migration processing device, and data migration processing method
US8099615B2 (en) 2008-06-30 2012-01-17 Oracle America, Inc. Method and system for power management in a virtual machine environment without disrupting network connectivity
US8406230B2 (en) * 2008-06-30 2013-03-26 Oracle America, Inc. Formerly Known As Sun Microsystems, Inc. Method and system for classifying packets in a network interface card and interface for performing the same
US7941539B2 (en) * 2008-06-30 2011-05-10 Oracle America, Inc. Method and system for creating a virtual router in a blade chassis to maintain connectivity
US7751401B2 (en) * 2008-06-30 2010-07-06 Oracle America, Inc. Method and apparatus to provide virtual toe interface with fail-over
US8739179B2 (en) 2008-06-30 2014-05-27 Oracle America Inc. Method and system for low-overhead data transfer
CA2744746C (en) 2008-12-15 2019-12-24 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
US8321862B2 (en) * 2009-03-20 2012-11-27 Oracle America, Inc. System for migrating a virtual machine and resource usage data to a chosen target host based on a migration policy
US8116199B2 (en) * 2009-05-08 2012-02-14 Oracle America, Inc. Method and system for monitoring network communication
US8341505B2 (en) * 2009-05-08 2012-12-25 Oracle America, Inc. Enforcing network bandwidth partitioning for virtual execution environments with direct access to network hardware
US8478853B2 (en) * 2009-05-29 2013-07-02 Oracle America, Inc. Handling of multiple MAC unicast addresses with virtual machines
US8174984B2 (en) * 2009-05-29 2012-05-08 Oracle America, Inc. Managing traffic on virtualized lanes between a network switch and a virtual machine
US9059965B2 (en) * 2009-06-30 2015-06-16 Oracle America, Inc. Method and system for enforcing security policies on network traffic
US8194670B2 (en) * 2009-06-30 2012-06-05 Oracle America, Inc. Upper layer based dynamic hardware transmit descriptor reclaiming
US8522203B1 (en) * 2009-08-28 2013-08-27 Adobe Systems Incorporated Dynamic script management
US8260588B2 (en) * 2009-10-16 2012-09-04 Oracle America, Inc. Virtualizing complex network topologies
US8254261B2 (en) * 2009-10-16 2012-08-28 Oracle America, Inc. Method and system for intra-host communication
US8675644B2 (en) * 2009-10-16 2014-03-18 Oracle America, Inc. Enhanced virtual switch
US20110142058A1 (en) * 2009-12-10 2011-06-16 Telcordia Technologies, Inc. Bridge protocol for flow-specific messages
US9195657B2 (en) * 2010-03-08 2015-11-24 Microsoft Technology Licensing, Llc Columnar storage of a database index
US8726093B2 (en) 2010-06-30 2014-05-13 Oracle America, Inc. Method and system for maintaining direct hardware access in the event of network interface card failure
EP2649580A4 (en) 2010-12-09 2014-05-07 Ip Reservoir Llc Method and apparatus for managing orders in financial markets
US20120195198A1 (en) * 2011-01-31 2012-08-02 Joseph Regan Method and apparatus providing protocol policing
US9858241B2 (en) 2013-11-05 2018-01-02 Oracle International Corporation System and method for supporting optimized buffer utilization for packet processing in a networking device
US8634415B2 (en) 2011-02-16 2014-01-21 Oracle International Corporation Method and system for routing network traffic for a blade server
US9047243B2 (en) 2011-12-14 2015-06-02 Ip Reservoir, Llc Method and apparatus for low latency data distribution
US9990393B2 (en) 2012-03-27 2018-06-05 Ip Reservoir, Llc Intelligent feed switch
US10121196B2 (en) 2012-03-27 2018-11-06 Ip Reservoir, Llc Offload processing of data packets containing financial market data
US10650452B2 (en) 2012-03-27 2020-05-12 Ip Reservoir, Llc Offload processing of data packets
US11436672B2 (en) 2012-03-27 2022-09-06 Exegy Incorporated Intelligent switch for processing financial market data
US9728228B2 (en) 2012-08-10 2017-08-08 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9633093B2 (en) 2012-10-23 2017-04-25 Ip Reservoir, Llc Method and apparatus for accelerated format translation of data in a delimited data format
US10133802B2 (en) 2012-10-23 2018-11-20 Ip Reservoir, Llc Method and apparatus for accelerated record layout detection
EP2912579B1 (en) 2012-10-23 2020-08-19 IP Reservoir, LLC Method and apparatus for accelerated format translation of data in a delimited data format
US9313124B2 (en) * 2013-02-01 2016-04-12 Texas Instruments Incorporated Conditional instructions for packet processing
US9081700B2 (en) 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US9172721B2 (en) 2013-07-16 2015-10-27 Fortinet, Inc. Scalable inline behavioral DDOS attack mitigation
US9467369B2 (en) 2013-08-02 2016-10-11 Time Warner Cable Enterprises Llc Packetized content delivery apparatus and methods
WO2015047732A1 (en) * 2013-09-25 2015-04-02 Rift. Io Inc. Dynamically scriptable ip packet processing engine
US9501878B2 (en) 2013-10-16 2016-11-22 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9489327B2 (en) 2013-11-05 2016-11-08 Oracle International Corporation System and method for supporting an efficient packet processing model in a network environment
US9610955B2 (en) 2013-11-11 2017-04-04 Smartdrive Systems, Inc. Vehicle fuel consumption monitor and feedback systems
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US8892310B1 (en) 2014-02-21 2014-11-18 Smartdrive Systems, Inc. System and method to detect execution of driving maneuvers
WO2015164639A1 (en) 2014-04-23 2015-10-29 Ip Reservoir, Llc Method and apparatus for accelerated data translation
US9503552B2 (en) * 2014-05-09 2016-11-22 Google Inc. System and method for adapting to network protocol updates
US10050833B2 (en) 2014-06-19 2018-08-14 Cavium, Inc. Method of reducing latency in a flexible parser and an apparatus thereof
US9961167B2 (en) * 2014-06-19 2018-05-01 Cavium, Inc. Method of modifying packets to a generic format for enabling programmable modifications and an apparatus thereof
US9628385B2 (en) 2014-06-19 2017-04-18 Cavium, Inc. Method of identifying internal destinations of networks packets and an apparatus thereof
US9497294B2 (en) 2014-06-19 2016-11-15 Cavium, Inc. Method of using a unique packet identifier to identify structure of a packet and an apparatus thereof
US9438703B2 (en) 2014-06-19 2016-09-06 Cavium, Inc. Method of forming a hash input from packet contents and an apparatus thereof
US9635146B2 (en) * 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9473601B2 (en) 2014-06-19 2016-10-18 Cavium, Inc. Method of representing a generic format header using continuous bytes and an apparatus thereof
US9531848B2 (en) * 2014-06-19 2016-12-27 Cavium, Inc. Method of using generic modification instructions to enable flexible modifications of packets and an apparatus thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9516145B2 (en) 2014-06-19 2016-12-06 Cavium, Inc. Method of extracting data from packets and an apparatus thereof
US9742694B2 (en) 2014-06-19 2017-08-22 Cavium, Inc. Method of dynamically renumbering ports and an apparatus thereof
US9531849B2 (en) 2014-06-19 2016-12-27 Cavium, Inc. Method of splitting a packet into individual layers for modification and intelligently stitching layers back together after modification and an apparatus thereof
US9663127B2 (en) 2014-10-28 2017-05-30 Smartdrive Systems, Inc. Rail vehicle event detection and recording system
GB2558165B (en) * 2014-10-29 2021-10-13 Pismo Labs Technology Ltd Methods and systems for transmitting broadcast data
US11069257B2 (en) 2014-11-13 2021-07-20 Smartdrive Systems, Inc. System and method for detecting a vehicle event and generating review criteria
US9606781B2 (en) 2014-11-14 2017-03-28 Cavium, Inc. Parser engine programming tool for programmable network devices
US9679420B2 (en) 2015-04-01 2017-06-13 Smartdrive Systems, Inc. Vehicle event recording system and method
US9743151B2 (en) 2015-06-24 2017-08-22 Time Warner Cable Enterprises Llc Multicast video program switching architecture
US9860168B1 (en) 2015-09-21 2018-01-02 Amazon Technologies, Inc. Network packet header modification for hardware-based packet processing
US10942943B2 (en) 2015-10-29 2021-03-09 Ip Reservoir, Llc Dynamic field data translation to support high performance stream data processing
US10379899B2 (en) 2015-11-18 2019-08-13 Nxp Usa, Inc. Systems and methods for frame presentation and modification in a networking environment
US9973528B2 (en) 2015-12-21 2018-05-15 Fortinet, Inc. Two-stage hash based logic for application layer distributed denial of service (DDoS) attack attribution
US10341379B2 (en) * 2016-02-12 2019-07-02 Time Warner Cable Enterprises Llc Apparatus and methods for mitigation of network attacks via dynamic re-routing
US20180054475A1 (en) * 2016-08-16 2018-02-22 Microsoft Technology Licensing, Llc Load balancing system and method for cloud-based network appliances
US10291750B1 (en) 2016-12-13 2019-05-14 Juniper Networks, Inc. Aggregating data sessions between autonomous systems
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
CN110383777B (en) 2017-03-28 2022-04-08 马维尔亚洲私人有限公司 Flexible processor for port expander device
US10243773B1 (en) 2017-06-30 2019-03-26 Genghiscomm Holdings, LLC Efficient peak-to-average-power reduction for OFDM and MIMO-OFDM
US10637705B1 (en) 2017-05-25 2020-04-28 Genghiscomm Holdings, LLC Peak-to-average-power reduction for OFDM multiple access
US11070603B2 (en) 2018-02-26 2021-07-20 Charter Communicatons Operating, LLC Apparatus and methods for packetized content routing and delivery
DE112018007314T5 (en) * 2018-03-20 2020-12-17 Mitsubishi Electric Corporation MONITORING AND CONTROL SYSTEM
US10904088B2 (en) * 2018-11-15 2021-01-26 Western Digital Technologies, Inc. Reconfiguring network settings for operating configuration installation
US11343823B2 (en) 2020-08-16 2022-05-24 Tybalt, Llc Orthogonal multiple access and non-orthogonal multiple access
US11917604B2 (en) 2019-01-25 2024-02-27 Tybalt, Llc Orthogonal multiple access and non-orthogonal multiple access
CN113454964A (en) 2019-01-25 2021-09-28 珍吉斯科姆控股有限责任公司 Orthogonal and non-orthogonal multiple access
US11343358B2 (en) 2019-01-29 2022-05-24 Marvell Israel (M.I.S.L) Ltd. Flexible header alteration in network devices
WO2020242898A1 (en) 2019-05-26 2020-12-03 Genghiscomm Holdings, LLC Non-orthogonal multiple access
US11627077B2 (en) * 2020-10-13 2023-04-11 Nokia Solutions And Networks Oy Reliable overlay based on reliable transport layer
US11379390B1 (en) * 2020-12-14 2022-07-05 International Business Machines Corporation In-line data packet transformations

Citations (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231663A (en) * 1991-03-18 1993-07-27 Earl Joseph G Image processing system
US5231633A (en) * 1990-07-11 1993-07-27 Codex Corporation Method for prioritizing, selectively discarding, and multiplexing differing traffic type fast packets
US5452287A (en) * 1993-09-20 1995-09-19 Motorola, Inc. Method of negotiation of protocols, classes, and options in computer and communication networks providing mixed packet, frame, cell, and circuit services
US5497371A (en) * 1993-10-26 1996-03-05 Northern Telecom Limited Digital telecommunication link for efficiently transporting mixed classes of packets
US5541920A (en) * 1995-06-15 1996-07-30 Bay Networks, Inc. Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
US5598410A (en) * 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
US5600598A (en) * 1994-12-14 1997-02-04 Mosaid Technologies Incorporated Memory cell and wordline driver for embedded DRAM in ASIC process
US5629936A (en) * 1994-08-01 1997-05-13 University Of Iowa Research Foundation Inc. Control of consecutive packet loss in a packet buffer
US5666353A (en) * 1995-03-21 1997-09-09 Cisco Systems, Inc. Frame based traffic policing for a digital switch
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5764641A (en) * 1995-09-08 1998-06-09 Cisco Systems, Inc. Early and integrated tail packet discard system
US5781531A (en) * 1995-12-27 1998-07-14 Digital Equipment Corporation Method and apparatus for hierarchical relative error scheduling
US5812476A (en) * 1996-07-30 1998-09-22 Kawasaki Steel Corporation Refresh circuit for DRAM with three-transistor type memory cells
US5864540A (en) * 1997-04-04 1999-01-26 At&T Corp/Csi Zeinet(A Cabletron Co.) Method for integrated traffic shaping in a packet-switched network
US5870396A (en) * 1996-12-31 1999-02-09 Northern Telecom Limited Output queueing in a broadband multi-media satellite and terrestrial communications network
US5870629A (en) * 1996-03-21 1999-02-09 Bay Networks, Inc. System for servicing plurality of queues responsive to queue service policy on a service sequence ordered to provide uniform and minimal queue interservice times
US5878229A (en) * 1997-11-12 1999-03-02 International Business Machines Corporation Maintaining frame sequence in a multiprocessor network device
US5896383A (en) * 1997-05-01 1999-04-20 Advanced Micro Devices, Inc. System and method for encoding instruction fields within data packets
US5901095A (en) * 1997-12-23 1999-05-04 Lsi Logic Corporation Reprogrammable address selector for an embedded DRAM
US5907511A (en) * 1997-12-23 1999-05-25 Lsi Logic Corporation Electrically selectable redundant components for an embedded DRAM
US5918002A (en) * 1997-03-14 1999-06-29 Microsoft Corporation Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network
US5923596A (en) * 1996-12-24 1999-07-13 Mosaid Technologies Incorporated Precharge-enable self boosting word line driver for an embedded DRAM
US5923656A (en) * 1996-10-22 1999-07-13 Board Of Trustees Of The University Of Illinois Scalable broad band input-queued ATM switch including weight driven cell scheduler
US5926101A (en) * 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
US5943481A (en) * 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
US6018527A (en) * 1996-08-13 2000-01-25 Nortel Networks Corporation Queue service interval based cell scheduler with hierarchical queuing configurations
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6021116A (en) * 1996-03-28 2000-02-01 Lucent Technologies, Inc. Method and apparatus for controlling data transfer rate using virtual queues in asynchronous transfer mode networks
US6031835A (en) * 1997-04-04 2000-02-29 International Business Machines Corporation Method for deadlock free and and reliable routing in a packet switched network
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US6034956A (en) * 1995-06-07 2000-03-07 International Business Machines Corporation Method of simultaneously attempting parallel path connections in a multi-stage interconnection network
US6046979A (en) * 1998-05-04 2000-04-04 Cabletron Systems, Inc. Method and apparatus for controlling the flow of variable-length packets through a multiport switch
US6046980A (en) * 1996-12-09 2000-04-04 Packeteer, Inc. System for managing flow bandwidth utilization at network, transport and application layers in store and forward network
US6046002A (en) * 1998-01-05 2000-04-04 The Board Of Trustees Of The Leland Stanford Junior University Highly parallel and sensitive method for identifying drugs and drug targets
US6047002A (en) * 1997-01-16 2000-04-04 Advanced Micro Devices, Inc. Communication traffic circle system and method for performing packet conversion and routing between different packet formats including an instruction field
US6052375A (en) * 1997-11-26 2000-04-18 International Business Machines Corporation High speed internetworking traffic scaler and shaper
US6067298A (en) * 1996-10-23 2000-05-23 Nec Corporation ATM switching system which separates services classes and uses a code switching section and back pressure signals
US6072800A (en) * 1997-08-18 2000-06-06 Nec Usa, Inc. Weighted longest queue first adaptive scheduling discipline for ATM networks
US6072989A (en) * 1996-10-23 2000-06-06 Alcatel Method to determine a scheduled rate value to be used in a policing algorithm, and related policing device
US6081524A (en) * 1997-07-03 2000-06-27 At&T Corp. Frame relay switched data service
US6104700A (en) * 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6108305A (en) * 1996-03-26 2000-08-22 Compaq Computer Corporation Method and apparatus for relative error scheduling in a communications network using discrete rates and proportional rate scaling
US6118761A (en) * 1997-12-18 2000-09-12 Advanced Micro Devices, Inc. Apparatus and method for generating rate control frames in a workgroup switch based on traffic contribution from a network switch port
US6175568B1 (en) * 1997-12-16 2001-01-16 Nortel Networks Limited ABR policing method and apparatus
US6185635B1 (en) * 1998-05-30 2001-02-06 Alcatel Networks Corporation Method and circuit for transporting data based on the content of ingress data words and egress data words
US6192406B1 (en) * 1997-06-13 2001-02-20 At&T Corp. Startup management system and method for networks
US6259699B1 (en) * 1997-12-30 2001-07-10 Nexabit Networks, Llc System architecture for and method of processing packets and/or cells in a common switch
US20010007560A1 (en) * 2000-01-11 2001-07-12 Michio Masuda Multi-layer class identifying communication apparatus with priority control
US6335935B2 (en) * 1998-07-08 2002-01-01 Broadcom Corporation Network switching architecture with fast filtering processor
US6374326B1 (en) * 1999-10-25 2002-04-16 Cisco Technology, Inc. Multiple bank CAM architecture and method for performing concurrent lookup operations
US20020075803A1 (en) * 2000-12-18 2002-06-20 John Zaharychuk Method and apparatus for dynamic optimization of a multi-service access device
US20020080780A1 (en) * 2000-08-10 2002-06-27 Mccormick James S. Buffering system for use in a communication switch that includes a multiprocessor control block and method therefore
US20020097677A1 (en) * 2001-01-25 2002-07-25 Hoar Andrew V. Dual use rate policer and re-marking logic
US6430154B1 (en) * 1999-08-13 2002-08-06 Fujitsu Network Communications, Inc. Supporting multiple application traffic types over connection oriented networks
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
US6449656B1 (en) * 1999-07-30 2002-09-10 Intel Corporation Storing a frame header
US20020126672A1 (en) * 2001-01-10 2002-09-12 Nelson Chow Method and apparatus for a flexible and reconfigurable packet classifier using content addressable memory
US6453360B1 (en) * 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US20020136230A1 (en) * 2000-12-15 2002-09-26 Dell Martin S. Scheduler for a packet routing and switching system
US20030021230A1 (en) * 2001-03-09 2003-01-30 Petaswitch Solutions, Inc. Switch fabric with bandwidth efficient flow control
US20030046429A1 (en) * 2001-08-30 2003-03-06 Sonksen Bradley Stephen Static data item processing
US6538989B1 (en) * 1997-09-09 2003-03-25 British Telecommunications Public Limited Company Packet network
US20030112756A1 (en) * 2001-12-17 2003-06-19 Louis Le Gouriellec Conditional bandwidth subscriptions for multiprotocol label switching (MPLS) label switched paths (LSPs)
US20030118029A1 (en) * 2000-08-31 2003-06-26 Maher Robert Daniel Method and apparatus for enforcing service level agreements
US6594268B1 (en) * 1999-03-11 2003-07-15 Lucent Technologies Inc. Adaptive routing system and method for QOS packet networks
US6606317B1 (en) * 1999-09-09 2003-08-12 Harris Corporation Dual key controlled content addressable memory for accessing packet switch data buffer for multicasting data packets
US6608816B1 (en) * 1998-11-18 2003-08-19 Nortel Networks Limited Method and apparatus for providing differentiated services using a multi-level queuing mechanism
US6618356B1 (en) * 1999-02-16 2003-09-09 Alcatel Method for policing data traffic, a data traffic policer realizing such a method and a telecommunication network including such a policer
US6687247B1 (en) * 1999-10-27 2004-02-03 Cisco Technology, Inc. Architecture for high speed class of service enabled linecard
US6721271B1 (en) * 1999-02-04 2004-04-13 Nortel Networks Limited Rate-controlled multi-class high-capacity packet switch
US6728253B1 (en) * 1999-09-24 2004-04-27 International Business Machines Corporation Mixed queue scheduler
US6757249B1 (en) * 1999-10-14 2004-06-29 Nokia Inc. Method and apparatus for output rate regulation and control associated with a packet pipeline
US20040125815A1 (en) * 2002-06-24 2004-07-01 Mikio Shimazu Packet transmission apparatus and method thereof, traffic conditioner, priority control mechanism and packet shaper
US6760774B1 (en) * 1999-02-18 2004-07-06 Fujitsu Limited Boundary apparatus and method for establishing the network connection using a resource reserving function
US6768717B1 (en) * 1999-05-28 2004-07-27 Network Equipment Technologies, Inc. Apparatus and method for traffic shaping in a network switch
US6771646B1 (en) * 1999-06-30 2004-08-03 Hi/Fn, Inc. Associative cache structure for lookups and updates of flow records in a network monitor
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6792470B2 (en) * 2000-03-02 2004-09-14 Matsushita Electric Industrial, Co., Ltd. Method and apparatus for communicating with data frames having priority levels
US6795470B1 (en) * 1999-06-09 2004-09-21 Science Applications International Corporation Semiconductor laser light source with photocurrent feedback control for single mode operation
US6798746B1 (en) * 1999-12-18 2004-09-28 Cisco Technology, Inc. Method and apparatus for implementing a quality of service policy in a data communications network
US6885639B2 (en) * 1999-12-15 2005-04-26 Nec Corporation Packet switch and packet switching method
US6901052B2 (en) * 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US6904057B2 (en) * 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US6934250B1 (en) * 1999-10-14 2005-08-23 Nokia, Inc. Method and apparatus for an output packet organizer
US6934294B2 (en) * 2000-03-02 2005-08-23 Alcatel Qualified priority queue scheduler
US20050193114A1 (en) * 1997-08-01 2005-09-01 Cisco Technology, Inc. Method and apparatus for directing a flow of packets based on request and server attributes
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US6947996B2 (en) * 2001-01-29 2005-09-20 Seabridge, Ltd. Method and system for traffic control
US6996062B1 (en) * 2001-02-28 2006-02-07 3Com Corporation Policy-based weighted random early detection method for avoiding congestion in internet traffic
US7042848B2 (en) * 2001-05-04 2006-05-09 Slt Logic Llc System and method for hierarchical policing of flows and subflows of a data stream
US7065083B1 (en) * 2001-10-04 2006-06-20 Cisco Technology, Inc. Method and apparatus for dynamically generating lookup words for content-addressable memories
US7099275B2 (en) * 2001-09-21 2006-08-29 Slt Logic Llc Programmable multi-service queue scheduler
US7185073B1 (en) * 1998-10-26 2007-02-27 Cisco Technology, Inc. Method and apparatus for defining and implementing high-level quality of service policies in computer networks
US7215637B1 (en) * 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05219093A (en) * 1992-02-06 1993-08-27 Hitachi Ltd Method and circuit for polishing
US5566170A (en) * 1994-12-29 1996-10-15 Storage Technology Corporation Method and apparatus for accelerated packet forwarding
SG74580A1 (en) * 1996-03-08 2000-08-22 Hitachi Ltd Semiconductor ic device having a memory and a logic circuit implemented with a single chip
US6166403A (en) * 1997-11-12 2000-12-26 Lsi Logic Corporation Integrated circuit having embedded memory with electromagnetic shield
US6141686A (en) * 1998-03-13 2000-10-31 Deterministic Networks, Inc. Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control
US5973952A (en) * 1998-03-30 1999-10-26 Lsi Logic Corporation Embedded DRAM with noise protecting shielding conductor
US6136638A (en) * 1998-11-19 2000-10-24 Taiwan Semiconductor Manufacturing Company Process technology architecture of embedded DRAM
US7116680B1 (en) * 2000-03-02 2006-10-03 Agere Systems Inc. Processor architecture and a method of processing

Patent Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231633A (en) * 1990-07-11 1993-07-27 Codex Corporation Method for prioritizing, selectively discarding, and multiplexing differing traffic type fast packets
US5231663A (en) * 1991-03-18 1993-07-27 Earl Joseph G Image processing system
US5452287A (en) * 1993-09-20 1995-09-19 Motorola, Inc. Method of negotiation of protocols, classes, and options in computer and communication networks providing mixed packet, frame, cell, and circuit services
US5497371A (en) * 1993-10-26 1996-03-05 Northern Telecom Limited Digital telecommunication link for efficiently transporting mixed classes of packets
US5629936A (en) * 1994-08-01 1997-05-13 University Of Iowa Research Foundation Inc. Control of consecutive packet loss in a packet buffer
US5600598A (en) * 1994-12-14 1997-02-04 Mosaid Technologies Incorporated Memory cell and wordline driver for embedded DRAM in ASIC process
US5598410A (en) * 1994-12-29 1997-01-28 Storage Technology Corporation Method and apparatus for accelerated packet processing
US5666353A (en) * 1995-03-21 1997-09-09 Cisco Systems, Inc. Frame based traffic policing for a digital switch
US6034956A (en) * 1995-06-07 2000-03-07 International Business Machines Corporation Method of simultaneously attempting parallel path connections in a multi-stage interconnection network
US5541920A (en) * 1995-06-15 1996-07-30 Bay Networks, Inc. Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
US5764641A (en) * 1995-09-08 1998-06-09 Cisco Systems, Inc. Early and integrated tail packet discard system
US5926101A (en) * 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
US5781531A (en) * 1995-12-27 1998-07-14 Digital Equipment Corporation Method and apparatus for hierarchical relative error scheduling
US5870629A (en) * 1996-03-21 1999-02-09 Bay Networks, Inc. System for servicing plurality of queues responsive to queue service policy on a service sequence ordered to provide uniform and minimal queue interservice times
US6108305A (en) * 1996-03-26 2000-08-22 Compaq Computer Corporation Method and apparatus for relative error scheduling in a communications network using discrete rates and proportional rate scaling
US6021116A (en) * 1996-03-28 2000-02-01 Lucent Technologies, Inc. Method and apparatus for controlling data transfer rate using virtual queues in asynchronous transfer mode networks
US5812476A (en) * 1996-07-30 1998-09-22 Kawasaki Steel Corporation Refresh circuit for DRAM with three-transistor type memory cells
US6018527A (en) * 1996-08-13 2000-01-25 Nortel Networks Corporation Queue service interval based cell scheduler with hierarchical queuing configurations
US5748905A (en) * 1996-08-30 1998-05-05 Fujitsu Network Communications, Inc. Frame classification using classification keys
US5923656A (en) * 1996-10-22 1999-07-13 Board Of Trustees Of The University Of Illinois Scalable broad band input-queued ATM switch including weight driven cell scheduler
US6072989A (en) * 1996-10-23 2000-06-06 Alcatel Method to determine a scheduled rate value to be used in a policing algorithm, and related policing device
US6067298A (en) * 1996-10-23 2000-05-23 Nec Corporation ATM switching system which separates services classes and uses a code switching section and back pressure signals
US6046980A (en) * 1996-12-09 2000-04-04 Packeteer, Inc. System for managing flow bandwidth utilization at network, transport and application layers in store and forward network
US5923596A (en) * 1996-12-24 1999-07-13 Mosaid Technologies Incorporated Precharge-enable self boosting word line driver for an embedded DRAM
US5870396A (en) * 1996-12-31 1999-02-09 Northern Telecom Limited Output queueing in a broadband multi-media satellite and terrestrial communications network
US6047002A (en) * 1997-01-16 2000-04-04 Advanced Micro Devices, Inc. Communication traffic circle system and method for performing packet conversion and routing between different packet formats including an instruction field
US5918002A (en) * 1997-03-14 1999-06-29 Microsoft Corporation Selective retransmission for efficient and reliable streaming of multimedia packets in a computer network
US6031835A (en) * 1997-04-04 2000-02-29 International Business Machines Corporation Method for deadlock free and and reliable routing in a packet switched network
US5864540A (en) * 1997-04-04 1999-01-26 At&T Corp/Csi Zeinet(A Cabletron Co.) Method for integrated traffic shaping in a packet-switched network
US5896383A (en) * 1997-05-01 1999-04-20 Advanced Micro Devices, Inc. System and method for encoding instruction fields within data packets
US5943481A (en) * 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
US6192406B1 (en) * 1997-06-13 2001-02-20 At&T Corp. Startup management system and method for networks
US6021132A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Shared memory management in a switched network element
US6081524A (en) * 1997-07-03 2000-06-27 At&T Corp. Frame relay switched data service
US20050193114A1 (en) * 1997-08-01 2005-09-01 Cisco Technology, Inc. Method and apparatus for directing a flow of packets based on request and server attributes
US6072800A (en) * 1997-08-18 2000-06-06 Nec Usa, Inc. Weighted longest queue first adaptive scheduling discipline for ATM networks
US6104700A (en) * 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6538989B1 (en) * 1997-09-09 2003-03-25 British Telecommunications Public Limited Company Packet network
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets
US5878229A (en) * 1997-11-12 1999-03-02 International Business Machines Corporation Maintaining frame sequence in a multiprocessor network device
US6052375A (en) * 1997-11-26 2000-04-18 International Business Machines Corporation High speed internetworking traffic scaler and shaper
US6175568B1 (en) * 1997-12-16 2001-01-16 Nortel Networks Limited ABR policing method and apparatus
US6118761A (en) * 1997-12-18 2000-09-12 Advanced Micro Devices, Inc. Apparatus and method for generating rate control frames in a workgroup switch based on traffic contribution from a network switch port
US5907511A (en) * 1997-12-23 1999-05-25 Lsi Logic Corporation Electrically selectable redundant components for an embedded DRAM
US5901095A (en) * 1997-12-23 1999-05-04 Lsi Logic Corporation Reprogrammable address selector for an embedded DRAM
US6259699B1 (en) * 1997-12-30 2001-07-10 Nexabit Networks, Llc System architecture for and method of processing packets and/or cells in a common switch
US6046002A (en) * 1998-01-05 2000-04-04 The Board Of Trustees Of The Leland Stanford Junior University Highly parallel and sensitive method for identifying drugs and drug targets
US6046979A (en) * 1998-05-04 2000-04-04 Cabletron Systems, Inc. Method and apparatus for controlling the flow of variable-length packets through a multiport switch
US6185635B1 (en) * 1998-05-30 2001-02-06 Alcatel Networks Corporation Method and circuit for transporting data based on the content of ingress data words and egress data words
US6335935B2 (en) * 1998-07-08 2002-01-01 Broadcom Corporation Network switching architecture with fast filtering processor
US7185073B1 (en) * 1998-10-26 2007-02-27 Cisco Technology, Inc. Method and apparatus for defining and implementing high-level quality of service policies in computer networks
US6608816B1 (en) * 1998-11-18 2003-08-19 Nortel Networks Limited Method and apparatus for providing differentiated services using a multi-level queuing mechanism
US6721271B1 (en) * 1999-02-04 2004-04-13 Nortel Networks Limited Rate-controlled multi-class high-capacity packet switch
US6618356B1 (en) * 1999-02-16 2003-09-09 Alcatel Method for policing data traffic, a data traffic policer realizing such a method and a telecommunication network including such a policer
US6760774B1 (en) * 1999-02-18 2004-07-06 Fujitsu Limited Boundary apparatus and method for establishing the network connection using a resource reserving function
US6453360B1 (en) * 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US6594268B1 (en) * 1999-03-11 2003-07-15 Lucent Technologies Inc. Adaptive routing system and method for QOS packet networks
US6768717B1 (en) * 1999-05-28 2004-07-27 Network Equipment Technologies, Inc. Apparatus and method for traffic shaping in a network switch
US6795470B1 (en) * 1999-06-09 2004-09-21 Science Applications International Corporation Semiconductor laser light source with photocurrent feedback control for single mode operation
US6771646B1 (en) * 1999-06-30 2004-08-03 Hi/Fn, Inc. Associative cache structure for lookups and updates of flow records in a network monitor
US6449656B1 (en) * 1999-07-30 2002-09-10 Intel Corporation Storing a frame header
US6430154B1 (en) * 1999-08-13 2002-08-06 Fujitsu Network Communications, Inc. Supporting multiple application traffic types over connection oriented networks
US6606317B1 (en) * 1999-09-09 2003-08-12 Harris Corporation Dual key controlled content addressable memory for accessing packet switch data buffer for multicasting data packets
US6728253B1 (en) * 1999-09-24 2004-04-27 International Business Machines Corporation Mixed queue scheduler
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6757249B1 (en) * 1999-10-14 2004-06-29 Nokia Inc. Method and apparatus for output rate regulation and control associated with a packet pipeline
US6934250B1 (en) * 1999-10-14 2005-08-23 Nokia, Inc. Method and apparatus for an output packet organizer
US6374326B1 (en) * 1999-10-25 2002-04-16 Cisco Technology, Inc. Multiple bank CAM architecture and method for performing concurrent lookup operations
US6687247B1 (en) * 1999-10-27 2004-02-03 Cisco Technology, Inc. Architecture for high speed class of service enabled linecard
US6885639B2 (en) * 1999-12-15 2005-04-26 Nec Corporation Packet switch and packet switching method
US6798746B1 (en) * 1999-12-18 2004-09-28 Cisco Technology, Inc. Method and apparatus for implementing a quality of service policy in a data communications network
US20010007560A1 (en) * 2000-01-11 2001-07-12 Michio Masuda Multi-layer class identifying communication apparatus with priority control
US6934294B2 (en) * 2000-03-02 2005-08-23 Alcatel Qualified priority queue scheduler
US6792470B2 (en) * 2000-03-02 2004-09-14 Matsushita Electric Industrial, Co., Ltd. Method and apparatus for communicating with data frames having priority levels
US7215637B1 (en) * 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
US20020080780A1 (en) * 2000-08-10 2002-06-27 Mccormick James S. Buffering system for use in a communication switch that includes a multiprocessor control block and method therefore
US20030118029A1 (en) * 2000-08-31 2003-06-26 Maher Robert Daniel Method and apparatus for enforcing service level agreements
US20020136230A1 (en) * 2000-12-15 2002-09-26 Dell Martin S. Scheduler for a packet routing and switching system
US20020075803A1 (en) * 2000-12-18 2002-06-20 John Zaharychuk Method and apparatus for dynamic optimization of a multi-service access device
US20020116527A1 (en) * 2000-12-21 2002-08-22 Jin-Ru Chen Lookup engine for network devices
US20020126672A1 (en) * 2001-01-10 2002-09-12 Nelson Chow Method and apparatus for a flexible and reconfigurable packet classifier using content addressable memory
US20020097677A1 (en) * 2001-01-25 2002-07-25 Hoar Andrew V. Dual use rate policer and re-marking logic
US6947996B2 (en) * 2001-01-29 2005-09-20 Seabridge, Ltd. Method and system for traffic control
US6996062B1 (en) * 2001-02-28 2006-02-07 3Com Corporation Policy-based weighted random early detection method for avoiding congestion in internet traffic
US20030021230A1 (en) * 2001-03-09 2003-01-30 Petaswitch Solutions, Inc. Switch fabric with bandwidth efficient flow control
US6904057B2 (en) * 2001-05-04 2005-06-07 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US20060159019A1 (en) * 2001-05-04 2006-07-20 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US6901052B2 (en) * 2001-05-04 2005-05-31 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US7688853B2 (en) * 2001-05-04 2010-03-30 Slt Logic, Llc System and method for hierarchical policing of flows and subflows of a data stream
US20060039372A1 (en) * 2001-05-04 2006-02-23 Slt Logic Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US7042848B2 (en) * 2001-05-04 2006-05-09 Slt Logic Llc System and method for hierarchical policing of flows and subflows of a data stream
US7539195B2 (en) * 2001-05-04 2009-05-26 Slt Logic, Llc System and method for providing transformation of multi-protocol packets in a data stream
US6944168B2 (en) * 2001-05-04 2005-09-13 Slt Logic Llc System and method for providing transformation of multi-protocol packets in a data stream
US20090097407A1 (en) * 2001-05-04 2009-04-16 Buskirk Glenn A System and method for policing multiple data flows and multi-protocol data flows
US20030046429A1 (en) * 2001-08-30 2003-03-06 Sonksen Bradley Stephen Static data item processing
US7099275B2 (en) * 2001-09-21 2006-08-29 Slt Logic Llc Programmable multi-service queue scheduler
US7065083B1 (en) * 2001-10-04 2006-06-20 Cisco Technology, Inc. Method and apparatus for dynamically generating lookup words for content-addressable memories
US20030112756A1 (en) * 2001-12-17 2003-06-19 Louis Le Gouriellec Conditional bandwidth subscriptions for multiprotocol label switching (MPLS) label switched paths (LSPs)
US20040125815A1 (en) * 2002-06-24 2004-07-01 Mikio Shimazu Packet transmission apparatus and method thereof, traffic conditioner, priority control mechanism and packet shaper

Cited By (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060159019A1 (en) * 2001-05-04 2006-07-20 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US7978606B2 (en) 2001-05-04 2011-07-12 Slt Logic, Llc System and method for policing multiple data flows and multi-protocol data flows
US7835375B2 (en) 2001-05-04 2010-11-16 Slt Logic, Llc Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification
US7822048B2 (en) 2001-05-04 2010-10-26 Slt Logic Llc System and method for policing multiple data flows and multi-protocol data flows
US8085780B1 (en) * 2002-03-22 2011-12-27 Juniper Networks, Inc. Optimized buffer loading for packet header processing
US8954613B2 (en) 2002-09-16 2015-02-10 Solarflare Communications, Inc. Network interface and protocol
US9112752B2 (en) 2002-09-16 2015-08-18 Solarflare Communications, Inc. Network interface and protocol
US20110040897A1 (en) * 2002-09-16 2011-02-17 Solarflare Communications, Inc. Network interface and protocol
US20110219145A1 (en) * 2002-09-16 2011-09-08 Solarflare Communications, Inc. Network interface and protocol
US9043671B2 (en) 2003-03-03 2015-05-26 Solarflare Communications, Inc. Data protocol
US8855137B2 (en) 2004-03-02 2014-10-07 Solarflare Communications, Inc. Dual-driver interface
US11182317B2 (en) 2004-03-02 2021-11-23 Xilinx, Inc. Dual-driver interface
US9690724B2 (en) 2004-03-02 2017-06-27 Solarflare Communications, Inc. Dual-driver interface
US11119956B2 (en) 2004-03-02 2021-09-14 Xilinx, Inc. Dual-driver interface
US7675915B2 (en) 2004-03-30 2010-03-09 Extreme Networks, Inc. Packet processing system architecture and method
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7822038B2 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Packet processing system architecture and method
US7821931B2 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. System and method for assembling a data packet
US8924694B2 (en) 2004-03-30 2014-12-30 Extreme Networks, Inc. Packet data modification processor
US20080008099A1 (en) * 2004-03-30 2008-01-10 Parker David K Packet processing system architecture and method
US8612536B2 (en) 2004-04-21 2013-12-17 Solarflare Communications, Inc. User-level stack
US8737431B2 (en) 2004-04-21 2014-05-27 Solarflare Communications, Inc. Checking data integrity
US8650569B2 (en) 2005-03-10 2014-02-11 Solarflare Communications, Inc. User-level re-initialization instruction interception
US9063771B2 (en) 2005-03-10 2015-06-23 Solarflare Communications, Inc. User-level re-initialization instruction interception
US8533740B2 (en) 2005-03-15 2013-09-10 Solarflare Communications, Inc. Data processing system with intercepting instructions
US9552225B2 (en) 2005-03-15 2017-01-24 Solarflare Communications, Inc. Data processing system with data transmit capability
US8782642B2 (en) 2005-03-15 2014-07-15 Solarflare Communications, Inc. Data processing system with data transmit capability
US9729436B2 (en) 2005-03-30 2017-08-08 Solarflare Communications, Inc. Data processing system with routing tables
US10397103B2 (en) 2005-03-30 2019-08-27 Solarflare Communications, Inc. Data processing system with routing tables
US8868780B2 (en) 2005-03-30 2014-10-21 Solarflare Communications, Inc. Data processing system with routing tables
US8380882B2 (en) 2005-04-27 2013-02-19 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US9912665B2 (en) 2005-04-27 2018-03-06 Solarflare Communications, Inc. Packet validation in virtual network interface architecture
US10924483B2 (en) 2005-04-27 2021-02-16 Xilinx, Inc. Packet validation in virtual network interface architecture
US8645558B2 (en) 2005-06-15 2014-02-04 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities for data extraction
US10445156B2 (en) 2005-06-15 2019-10-15 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US11210148B2 (en) 2005-06-15 2021-12-28 Xilinx, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US9043380B2 (en) 2005-06-15 2015-05-26 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US8635353B2 (en) 2005-06-15 2014-01-21 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US10055264B2 (en) 2005-06-15 2018-08-21 Solarflare Communications, Inc. Reception according to a data transfer protocol of data directed to any of a plurality of destination entities
US9594842B2 (en) 2005-10-20 2017-03-14 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US8959095B2 (en) 2005-10-20 2015-02-17 Solarflare Communications, Inc. Hashing algorithm for network receive filtering
US10015104B2 (en) 2005-12-28 2018-07-03 Solarflare Communications, Inc. Processing received data
US10104005B2 (en) 2006-01-10 2018-10-16 Solarflare Communications, Inc. Data buffering
US8817784B2 (en) 2006-02-08 2014-08-26 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US9083539B2 (en) 2006-02-08 2015-07-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US20080008188A1 (en) * 2006-05-25 2008-01-10 Proximetry, Inc. Systems and methods for wireless resource management with quality of service (qos) management
US8489761B2 (en) 2006-07-10 2013-07-16 Solarflare Communications, Inc. Onload network protocol stacks
US9948533B2 (en) 2006-07-10 2018-04-17 Solarflare Communitations, Inc. Interrupt management
US10382248B2 (en) 2006-07-10 2019-08-13 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
US9686117B2 (en) 2006-07-10 2017-06-20 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
US9077751B2 (en) 2006-11-01 2015-07-07 Solarflare Communications, Inc. Driver level segmentation
US20100034216A1 (en) * 2007-02-01 2010-02-11 Ashley Pickering Data communication
US20080219669A1 (en) * 2007-03-05 2008-09-11 Futurewei Technologies, Inc. SDH/SONET Convergent Network
US8543729B2 (en) 2007-11-29 2013-09-24 Solarflare Communications, Inc. Virtualised receive side scaling
US20100333101A1 (en) * 2007-11-29 2010-12-30 Solarflare Communications Inc. Virtualised receive side scaling
US9304825B2 (en) 2008-02-05 2016-04-05 Solarflare Communications, Inc. Processing, on multiple processors, data flows received through a single socket
US8447904B2 (en) 2008-12-18 2013-05-21 Solarflare Communications, Inc. Virtualised interface functions
US8427952B1 (en) * 2009-03-24 2013-04-23 Packet Plus, Inc. Microcode engine for packet processing
US9256560B2 (en) 2009-07-29 2016-02-09 Solarflare Communications, Inc. Controller integration
US9210140B2 (en) 2009-08-19 2015-12-08 Solarflare Communications, Inc. Remote functionality selection
US8423639B2 (en) 2009-10-08 2013-04-16 Solarflare Communications, Inc. Switching API
US9124539B2 (en) 2009-12-21 2015-09-01 Solarflare Communications, Inc. Header processing engine
US8743877B2 (en) 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US10572417B2 (en) 2010-12-09 2020-02-25 Xilinx, Inc. Encapsulated accelerator
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
US11134140B2 (en) 2010-12-09 2021-09-28 Xilinx, Inc. TCP processing for devices
US10515037B2 (en) 2010-12-09 2019-12-24 Solarflare Communications, Inc. Encapsulated accelerator
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
US11876880B2 (en) 2010-12-09 2024-01-16 Xilinx, Inc. TCP processing for devices
US9880964B2 (en) 2010-12-09 2018-01-30 Solarflare Communications, Inc. Encapsulated accelerator
US11132317B2 (en) 2010-12-09 2021-09-28 Xilinx, Inc. Encapsulated accelerator
US9892082B2 (en) 2010-12-09 2018-02-13 Solarflare Communications Inc. Encapsulated accelerator
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US8996644B2 (en) 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9800513B2 (en) 2010-12-20 2017-10-24 Solarflare Communications, Inc. Mapped FIFO buffering
US9008113B2 (en) 2010-12-20 2015-04-14 Solarflare Communications, Inc. Mapped FIFO buffering
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US10671458B2 (en) 2011-03-31 2020-06-02 Xilinx, Inc. Epoll optimisations
US9384071B2 (en) 2011-03-31 2016-07-05 Solarflare Communications, Inc. Epoll optimisations
US10425512B2 (en) 2011-07-29 2019-09-24 Solarflare Communications, Inc. Reducing network latency
US9456060B2 (en) 2011-07-29 2016-09-27 Solarflare Communications, Inc. Reducing network latency
US10021223B2 (en) 2011-07-29 2018-07-10 Solarflare Communications, Inc. Reducing network latency
US10469632B2 (en) 2011-07-29 2019-11-05 Solarflare Communications, Inc. Reducing network latency
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US11392429B2 (en) 2011-08-22 2022-07-19 Xilinx, Inc. Modifying application behaviour
US8763018B2 (en) 2011-08-22 2014-06-24 Solarflare Communications, Inc. Modifying application behaviour
US10713099B2 (en) 2011-08-22 2020-07-14 Xilinx, Inc. Modifying application behaviour
US9003053B2 (en) 2011-09-22 2015-04-07 Solarflare Communications, Inc. Message acceleration
US9130883B2 (en) * 2011-09-23 2015-09-08 Futurewei Technologies, Inc. Method and apparatus to increase forwarding silicon functionality through packet manipulation
US20130170493A1 (en) * 2011-09-23 2013-07-04 Futurewei Technologies, Inc. Method and apparatus to increase forwarding silicon functionality through packet manipulation
US9391840B2 (en) 2012-05-02 2016-07-12 Solarflare Communications, Inc. Avoiding delayed data
US10498602B2 (en) 2012-07-03 2019-12-03 Solarflare Communications, Inc. Fast linkup arbitration
US9391841B2 (en) 2012-07-03 2016-07-12 Solarflare Communications, Inc. Fast linkup arbitration
US9882781B2 (en) 2012-07-03 2018-01-30 Solarflare Communications, Inc. Fast linkup arbitration
US11095515B2 (en) 2012-07-03 2021-08-17 Xilinx, Inc. Using receive timestamps to update latency estimates
US11108633B2 (en) 2012-07-03 2021-08-31 Xilinx, Inc. Protocol selection in dependence upon conversion time
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US11374777B2 (en) 2012-10-16 2022-06-28 Xilinx, Inc. Feed processing
US10742604B2 (en) 2013-04-08 2020-08-11 Xilinx, Inc. Locked down network interface
US10999246B2 (en) 2013-04-08 2021-05-04 Xilinx, Inc. Locked down network interface
US10212135B2 (en) 2013-04-08 2019-02-19 Solarflare Communications, Inc. Locked down network interface
US9426124B2 (en) 2013-04-08 2016-08-23 Solarflare Communications, Inc. Locked down network interface
US9300599B2 (en) 2013-05-30 2016-03-29 Solarflare Communications, Inc. Packet capture
US20160142287A1 (en) * 2013-08-02 2016-05-19 Hangzhou H3C Technologies Co., Ltd. Packet forwarding
US11249938B2 (en) 2013-11-06 2022-02-15 Xilinx, Inc. Programmed input/output mode
US10394751B2 (en) 2013-11-06 2019-08-27 Solarflare Communications, Inc. Programmed input/output mode
US11809367B2 (en) 2013-11-06 2023-11-07 Xilinx, Inc. Programmed input/output mode
US11023411B2 (en) 2013-11-06 2021-06-01 Xilinx, Inc. Programmed input/output mode

Also Published As

Publication number Publication date
US20020163935A1 (en) 2002-11-07
US7539195B2 (en) 2009-05-26
US20060209840A1 (en) 2006-09-21
US6944168B2 (en) 2005-09-13

Similar Documents

Publication Publication Date Title
US7539195B2 (en) System and method for providing transformation of multi-protocol packets in a data stream
US7978606B2 (en) System and method for policing multiple data flows and multi-protocol data flows
US6571291B1 (en) Apparatus and method for validating and updating an IP checksum in a network switching system
US8665875B2 (en) Pipelined packet switching and queuing architecture
US6721316B1 (en) Flexible engine and data structure for packet header processing
US7349403B2 (en) Differentiated services for a network processor
US6778546B1 (en) High-speed hardware implementation of MDRR algorithm over a large number of queues
US20010046229A1 (en) Packet processor with real-time edit program construction engine
US7554907B1 (en) High-speed hardware implementation of RED congestion control algorithm
EP2382537B1 (en) Simd processing of network packets
US6731644B1 (en) Flexible DMA engine for packet header modification
US7821931B2 (en) System and method for assembling a data packet
US8705533B1 (en) Fast packet encapsulation using templates
US7218647B2 (en) Method and apparatus for implementing frame header alterations
US7613209B1 (en) System and method for egress packet marking
US20060087969A1 (en) System and method for hierarchical policing of flows and subflows of a data stream
US20030007489A1 (en) Data extraction system for packet analysis
WO2003103237A1 (en) System and method for controlling routing in a virtual router system
US7289455B2 (en) Network statistics
US6671277B1 (en) Network relaying apparatus and network relaying method capable of high quality transfer of packets under stable service quality control
US7043544B2 (en) Processor with multiple-pass non-sequential packet classification feature
US7009973B2 (en) Switch using a segmented ring

Legal Events

Date Code Title Description
AS Assignment

Owner name: SLT LOGIC LLC, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PAATELA, JEREMY B.;SARKINEN, SCOTT A.;TRIVEDI, HEMANT VRAJLAL;REEL/FRAME:026763/0827

Effective date: 20010925

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SLT LOGIC LLC;REEL/FRAME:026867/0191

Effective date: 20110826

STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION