WO2003092229A1 - System and method of annotating network packets - Google Patents

System and method of annotating network packets Download PDF

Info

Publication number
WO2003092229A1
WO2003092229A1 PCT/US2003/012352 US0312352W WO03092229A1 WO 2003092229 A1 WO2003092229 A1 WO 2003092229A1 US 0312352 W US0312352 W US 0312352W WO 03092229 A1 WO03092229 A1 WO 03092229A1
Authority
WO
WIPO (PCT)
Prior art keywords
network
link
network processing
slots
processing element
Prior art date
Application number
PCT/US2003/012352
Other languages
French (fr)
Inventor
Erik Johnson
David Putzolu
Aaron Kunze
Todd Anderson
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to AU2003239156A priority Critical patent/AU2003239156A1/en
Publication of WO2003092229A1 publication Critical patent/WO2003092229A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/102Packet switching elements characterised by the switching fabric construction using shared medium, e.g. bus or ring

Definitions

  • the subject matter disclosed herein relates to the processing of network packets.
  • the subject matter disclosed herein relates to processing network packets in a network processing environment.
  • Network routers typically employ network processing elements to process network packets received at ingress communication ports for forwarding to egress communication ports according to one or more network policies.
  • a router may comprise multiple network processing elements that transmits network packets through links coupling the network processing elements. For example, a first network processing element may classify a received network packet and then forward the network packet to a second network processing element. The second network processing element may then associate an egress port with the network packet.
  • individual network processing elements may forward control information on a per-packet basis (e.g., meta data or control information representative of a classification or egress port number).
  • Network processing elements ⁇ such as network processors, classification, traffic management, security, and accounting co-processors, or even software modules within a single processor — within a single network element (e.g., a router), typically employ some form of per-packet communication to efficiently process packets.
  • network processing elements such as network processors, classification, traffic management, security, and accounting co-processors, or even software modules within a single processor — within a single network element (e.g., a router), typically employ some form of per-packet communication to efficiently process packets.
  • each blade contains a classification co ⁇
  • the classification co-processors typically communicate the result of each packet's classification (e.g., a flow ID) to a corresponding network processor.
  • the network processor typically then marks and
  • the ingress network processor typically communicates the
  • processor typically prepends flow ID information on each packet before forwarding
  • the packet to a network processor.
  • the network processor could then extract the flow
  • each annotation in the list typically contains a canonical type and a length
  • TLV TLV
  • New annotations can be added because the length field allows older network processing elements to ignore unknown types.
  • format list of annotations typically determine a canonical position in the list for each possible type of information communication. No type or length information may be
  • TLV annotations While flexible, are not efficient to process or transmit.
  • annotation list to find the particular annotations (types) of interest. Moreover, the entire TLV list must be completely searched to find the start of the actual packet data.
  • processing elements only share one type of information, they still must transmit all of
  • Figure 1 shows a network topology according to an embodiment of the present invention.
  • Figure 2 shows a schematic diagram of a node in a network according to an embodiment of the network topology shown in Figure 1.
  • Figure 3 shows a format of slotted annotations for in-band per-packet communication according to an embodiment of the node shown in Figure 2.
  • Figure 4 illustrates an allocation of slots in links according to an embodiment of the present invention as illustrated in Figure 3.
  • Figure 5 illustrates an allocation of slots in links according to an alternative embodiment of the present invention as illustrated with reference to Figure 3.
  • Figure 6 shows an alternative embodiment of the present invention directed to offloading processing from a first network processing element to a second network processing element.
  • Machine-readable instructions as referred to herein relates to expressions which may be understood by one or more machines for performing one or more logical operations.
  • machine-readable instructions may comprise instructions which are interpretable by a processor compiler for executing one or more operations one or more data objects.
  • Storage medium as referred to herein relates to media capable of maintaining expressions of data.
  • a storage medium may comprise one or more storage devices for storing data or machine-readable instructions in a particular format.
  • Such storage devices may comprise devices capable of maintaining expressions of data in media such as, for example, magnetic, optical or semiconductor media.
  • logic as referred to herein relates to structure for performing one or more logical operations.
  • logic may comprise circuitry which provides one or more output signals based upon one or more input signals.
  • Such circuitry may comprise a finite state machine which receives a digital input and provides a digital output, or circuitry which provides one or more analog output signals in response to one or more analog input signals.
  • logic may comprise machine-executable instructions stored in a memory in combination with processing circuitry to execute such instructions.
  • a "processing system” as discussed herein relates to a combination of hardware and software resources for accomplishing computational tasks.
  • a "host processing system” relates to a processing system which may be adapted to communicate with a "peripheral device.”
  • a peripheral device may provide inputs to or receive outputs from an application process hosted on the host processing system.
  • these are merely examples of a host processing system and a peripheral device and embodiments of the present invention are not limited in these respects.
  • a "data bus” as referred to herein relates to circuitry for transmitting data between devices.
  • a data bus may transmit data between a host processing system and a peripheral device.
  • a "bus transaction” as referred to herein relates to an interaction between devices coupled in a bus structure wherein one device transmits data addressed to the other device through the bus structure.
  • a "transmission medium” as referred to herein relates to any media suitable for transmitting data.
  • a transmission medium may include any one of several mediums including, for example, copper transmission media, optical transmission media or wireless transmission media. Also, a transmission medium may comprise combinations of two or more of the aforementioned media. However, these are merely examples of transmission media and embodiments of the present invention are not limited in these respects.
  • a "communication port" as referred to herein relates to circuitry to transmit data to or received data from a transmission medium.
  • a communication port may comprise circuitry to transmit data to or receive data from a transmission medium according to a data transmission protocol.
  • this is merely an example of a communication port and embodiments of the present invention are not limited in this respect.
  • An "ingress" communication port as referred to herein relates to a communication port to receive data from a transmission medium according to a data transmission protocol.
  • an ingress communication port may be associated with a network address and receive formatted data from a transmission medium associated with the network address.
  • this is merely an example of an ingress communication port and embodiments of the present invention are not limited in this respect.
  • An "egress" communication port as referred to herein relates to a communication port to transmit data through a transmission medium toward a destination.
  • an egress communication port may transmit formatted data through a transmission medium toward a destination associated with a network address.
  • this is merely an example of an egress port and embodiments of the present invention are not limited in this respect.
  • a "network packet” as referred to herein relates to a unit of data to be transmitted to a destination according to a network protocol.
  • a network packet may comprise a payload portion and a header portion.
  • the payload portion may comprise data to be transmitted to a network destination.
  • the header portion may comprise data indicative of a source or destination network address.
  • these are merely examples of a network packet and embodiments of the present invention are not limited in this respect.
  • a "link” as referred to herein relates to circuitry to transmit data between devices.
  • a link may provide point to point communication between two devices either unidirectionally or bi-directionally.
  • a link may transmit data between the devices independently of address information.
  • these are merely examples of a link and embodiments of the present invention are not limited in these respects.
  • a link may transmit data including network packets between devices in a transmission medium.
  • a link may interleave other data to be transmitted between the devices "in-band" with the network packet data.
  • the transmission of such other data in the link may be time multiplexed with the transmission of network packet data between the device.
  • this is merely an example of in-band data transmission and embodiments of the present invention are not limited in these respects.
  • a "slot" as referred to herein relates to a discrete resource of a link for transmitting data.
  • a slot may comprise a discrete quantity of time for transmission of data in a link.
  • a slot may comprise a discrete and contiguous quantity of data to be transmitted in a link.
  • these are merely examples of a slot and embodiments of the present invention are not limited in these respects.
  • a "fixed length slot” as referred to herein relates to a slot having a predetermined size according to a uniform fixed length for slots to be transmitted in a link.
  • a fixed length slot may be associated with a predetermined transmission interval in the link or a predetermined number of bits.
  • these are merely examples of "fixed length slots” and embodiments of the present invention are not limited in these respects.
  • Control information or "meta data” as referred to herein relates to information that may be associated with a network packet transmitted in a link.
  • meta data or control information may be appended to network packets transmitted in a link.
  • this is merely an example of meta data and embodiments of the present invention are not limited in this respect.
  • Meta data may be associated with one or more "meta data types" defining how the meta data appended to a network packet is to be interpreted. Meta data appended to a network packet may be associated with meta data types such as, for example, FlowID information, classification information or an egress port identifier. However, these are merely examples of meta data types that may be associated with meta data appended to a network packet transmitted in a link and embodiments of the present invention are not limited in these respects.
  • a "network processing element" as referred to herein relates to a device to process information in, or information associated with, network packets. A network processing element may comprise programmable logic or hardwired logic to process the information in or associated with the network packets.
  • a network processing element may draw inferences regarding network packets based upon information in or information associated with the network packets.
  • a network processing element may comprise logic to provide classification information or flow information to be associated with network packets.
  • a network processing element may encrypt, compress or reorder network packets that are to be forwarded to a destination.
  • these are merely examples of network processing elements and embodiments of the present invention are not limited in these respects.
  • a “configuration entity” as referred to herein relates to a process or logic to manage communication between devices through a link.
  • a configuration entity may allocate portions of a link for transmitting meta data or control information between devices in-band of the link.
  • the configuration entity may identify a size for the allocated portions and identify the type of meta data or control information to be transmitted in the allocated portions.
  • this is merely an example of a configuration entity and embodiments of the present invention are not limited in this respect.
  • a network processing system may define multiple "planes" of processing.
  • a plane may associate processing objects according to their relevance in a layered processing stack (e.g., layers in a network processing system or device driver).
  • Each plane may define an application programming interface (API) comprising routines or protocols for building software applications.
  • API application programming interface
  • a network processing system may define a "control plane” and a "data plane” comprising processing objects providing one or more APIs.
  • a data plane may comprise processing objects to perform data packet classification and forwarding tasks.
  • a control plane may comprise processing objects to perform exception handling for processing objects in the data plane.
  • these are merely examples of how a network processing system may define multiple planes of processing objects and embodiments of the present invention are not limited in these respects.
  • an embodiment of the present invention relates to a system and method of transmitting network packets between network processing elements through links.
  • One or more configuration entities may allocate one or more fixed length slots to be appended to network packets forwarded on a link between network processing elements in-band of the link.
  • a network processing element may append control information to the network packet in the allocated fixed length slots.
  • Figure 1 shows a network topology according to an embodiment of the present invention.
  • a node 2 is coupled to a plurality of nodes 6 through transmission medium
  • a node 6 may transmit network packets through the transmission medium 4 to an ingress communication port (not shown) of the node 2.
  • the node 2 may then forward the received data packet to another node 6 through an egress communication port (not shown).
  • Any of the nodes 6 may be a source or destination for network packets
  • the transmission medium 4 may comprise any one of several transmission
  • mediums capable of transmitting information including, for example, copper or optical
  • Figure 2 shows a schematic diagram of a node in a network according to an
  • FIG. 1 A processing platform 100
  • a host processing system 102 coupled to a plurality of network processing
  • NPEs elements 114, 116 and 118 through a data bus 104.
  • system 102 may comprise a central processing unit (CPU) (not shown) and system
  • the NPE may be any type of memory (not shown) to host an operating system and application programs.
  • the NPE may be any type of memory (not shown) to host an operating system and application programs.
  • 114 may be coupled to a plurality of ingress communication ports 108 to receive
  • the NPE 118 may
  • the ingress and egress communication ports 108 and 110 may transmit data to or receive data from a node through a transmission medium according to any one of
  • the NPEs 114, 116 and 118 may analyze the contents of a network packet received from the ingress communication ports 108 and make inferences regarding the network packet.
  • Such an NPE may associate meta data or control information with a network packet which is representative of such an inference.
  • the NPE may associate meta data with a network packet that is representative of a packet classification, a flow identifier or an output egress communication port.
  • the NPE may associate meta data with a network packet that is based upon the origin of the packet to determine how the packet is treated (e.g., a UserlD that is used to determine a priority for forwarding the packet according to a quality of service scheme).
  • a NPE may determine that a network packet is associated with a particular data flow/connection that requires encryption and associate meta data including an encryption key to be used to encrypt the data at a subsequent NPE.
  • meta data may be associated with network packets by an NPE and embodiments of the present invention are not limited in these respects.
  • an NPE may initiate an action to process a network packet based upon meta data associated with the network packet.
  • the NPE 118 may initiate transmission of a network packet on a particular egress communication port 110 for transmitting network packet based upon meta data associated with the network packet.
  • the NPEs 114, 116 and 118 may comprise any one of several devices to provide or process meta data to be associated with network packets.
  • an NPE may comprise any one of several programmable network processor devices such as the IXP 1200 network processor sold by Intel Corporation.
  • an NPE may comprise any one of several non-programmable or semi-programmable application specific integrated circuit (ASIC) devices for analyzing network packets and providing meta data to be associated with the network packets.
  • ASIC application specific integrated circuit
  • Links 112 are coupled between the NPEs 114, 116 and 118 to transmit network packets among the NPEs. In the presently illustrated embodiment, the links 112 may transmit network packets received from the ingress communication ports 108 from the
  • the links 112 may comprise any one of several transmission media capable of transmitting network packets between devices according to data transmission protocol.
  • the links 112 may comprise a
  • the node 100 may comprise separate processing blades disposed within a chassis
  • each NPE resides on a blade coupled to the data bus 104.
  • NPEs may be disposed in a node and embodiments of the present invention are not limited in this respect.
  • the embodiment illustrated in Figure 2 shows the node 100 comprising three NPEs 114, 116 and 118, it should be understood that the embodiments illustrated throughout may also apply to other nodes having two, or more than three NPEs coupled in series by links to process network packets received on ingress ports to be forwarded to egress ports.
  • the NPEs 114 and 116 may append meta data to network packets transmitted in the links 112 in fixed length time slots. The number of slots and the format of each slot in a link 112 may be determined by a configuration entity (not shown).
  • Figure 3 illustrates an allocation of fixed length slots 204 and 206 to be appended to a network packet 202 transmitted in a link 112 between NPEs.
  • the slots 204 and 206 may be of any pre-determined length (e.g., eight bits).
  • the slots 204 may comprise meta data associated with the network packet 202.
  • the configuration entity may fix the number of slots 206 to be appended to each network packet forwarded in a link 112 between NPEs.
  • this is merely an example of how a configuration entity may define how slots are allocated in a link for transmitting network packets between NPEs.
  • the number of slots 206 containing meta data may be dynamically allocated using a slot 204 to indicate the number of slots 206 being appended to each network packet forwarded in the link 112.
  • the configuration entity may also define a type of meta data ("meta data types") for the data to be placed in each of the allocated slots.
  • the configuration entity may pre-define some allocated slots to contain classification information or an egress communication port number.
  • this is merely an example of how a configuration entity may define meta data types for data to be provided within allocated slots and embodiments of the present invention are not limited in this respect.
  • information in slot 204 may indicate a meta data type associated with the meta data to be provided in the one or more slots 206.
  • slot 204 may contain a value 0x01 to indicate that the following two slots 206 are to provide a sixteen bit FlowID immediately followed by the packet data 202.
  • slot 204 may contain a value 0x02 to indicate that the following slot 206 provides an egress port number immediately followed by the packet data 202.
  • an appended slot may indicate meta data types of meta data to be appended in other slots and embodiments of the present invention are not limited in these respects.
  • Figure 3 shows slots 206 and 204 being appended to the beginning of packet data 202 as it is forwarded between NPEs on a link 112. It should be understood, however, that in alternative embodiments slots containing meta data may be append to the end of network packet data instead of the beginning of the network packet data.
  • a configuration entity may comprise a process that is executed by the host processing system 102. Upon execution, this configuration entity may allocate fixed length slots to be appended in-band to the network packets transmitted between NPEs through the links 112. For example, the host processing system 102 may execute the configuration entity in response to a reset event to initiate one or more bus transactions on the data bus 104 addressed to one or more NPEs. The bus transactions may transmit data indicating a format for appending fixed length slots to network packets as illustrated in
  • the data provided in the bus transactions may include, for example, the size of slots, a number of allocated fixed length slots and meta data types to define meta data to be provided in the fixed length slots.
  • the configuration entity may reside as a process in a "control plane" which controls processes residing in a "data plane” residing on the NPEs.
  • control plane which controls processes residing in a "data plane” residing on the NPEs.
  • Figure 4 illustrates how a configuration entity 302 may allocate fixed length slots to be appended to network packets transmitted between NPEs on links 312 according to an embodiment of the present invention as illustrated above with reference to
  • An NPE 314 may receive network packets from an ingress communication port (not shown) and determine meta data such as a "FlowID" based upon an analysis of the data in the received network packets. For example, the NPE 314 may associate each received network packet with a packet classification and assign a FlowID to the network packet based upon the associated packet classification.
  • Such classification information may include, for example, a 5-tuple comprising a source IP address, destination IP address, protocol number (to indicate a type of traffic being transmitted), source port number (e.g., indicating a source entity sending the network packet) and destination port number (e.g., indicating a destination entity to receive the network packet).
  • classification information may include a 5-tuple or combination of one or more of the aforementioned 5-tuple fields with other fields such as a DS byte to indicate a quality of service to be associated with the network packet.
  • the NPE 314 may determine FlowID information based upon other types of packet inspection. For example, the NPE 314 may associate FlowID information based upon network packet content. In a particular example, NPE 314 may associate network packets from an on-line shopper with a higher priority if the on-line shopper has made purchases in the past and is therefore likely to make purchases in the future (e.g., unlikely to be a mere browser or "window shopper"). Thus, if NPE determines (from examining the contents of a network packet) that the on-line shopper has selected an item for purchase (e.g., completed payment or added an item to a "shopping cart"), subsequent network packets may be forwarded with a higher priority.
  • an item for purchase e.g., completed payment or added an item to a "shopping cart
  • the NPE 314 may append the FlowID to the network packet 302 in slots 306 for forwarding to an NPE 316 for further processing.
  • the NPE 316 may then determine other meta data such as an egress communication port number based upon the FlowID in the slots 306, and append the egress communication port number in slots 326 to be appended to the network packet 302 for forwarding to an NPE 318.
  • the NPE 318 may then initiate transmission of the network packet on an egress communication port associated with the egress communication port number.
  • a configuration entity 322 may determine the number of slots to be appended to the network packet in-band in each link 312 between NPEs, and length/size of each individual slot.
  • the configuration entity 322 may determine a maximum requirement for slots to transmit meta data with network packets in a link, and allocate a fixed number of slots for each link 312 that is sufficient to meet this maximum requirement.
  • NPE 314 to NPE 316 provides a maximum requirement of two slots. Accordingly, the configuration entity 322 allocates two slots to be appended in-band when transmitting a network packet in a link 312 between NPE 314 and NPE 316, and between NPE 316 and NPE 318. Since an egress communication port number can be transmitted in a link 312 with only one slot, one of the allocated slots for transmitting network packets between NPE 316 and NPE 318 may remain unused. [0059] In an alternative to the embodiment illustrated with reference to Figure 4, Figure 5 illustrates an embodiment with two configuration entities 422 and 423.
  • the configuration entity 422 may allocate slots to append FlowID information to network packets 402 in-band (when forwarding the network packet 402 from the NPE 414 to the NPE 416) while configuration entity 423 may independently allocate slots to append an egress communication port number to network packets 402 in-band (when forwarding the network packet 402 from the NPE 416 to the NPE 418). Accordingly, the configuration entity 423 may avoid allocation of unused slots for appending the egress communication port number to the network packets 402 forwarded to the NPE 418.
  • the configuration entities 322, 422 and 423 may define allocated slots to be appended in- band when transmitting network packets between NPEs according to a predetermined slot allocation.
  • the configuration entities 322, 422 and 423 may query the NPEs, and then negotiate an allocation of slots for meta data to be appended to network packets forwarded between NPEs.
  • the negotiated allocation of slots in a link may be selected from a plurality of allocations which are compatible with NPEs coupled by the link.
  • a configuration manager may identify potential allocation schemes which are compatible among all affected NPEs, and select the most efficient allocation among the common compatible allocation scheme.
  • FIG. 6 shows an alternative embodiment in which a node 500 comprises a master NPE 514 and a slave NPE 516.
  • the master NPE 514 may process ingress network packets 508 received from a network packet source such as one or more ingress communication ports (not shown) or an ingress NPE (not shown).
  • the NPE 514 may then provide egress network packets 510 to a destination (e.g., one or more egress communication port or an egress NPE) based upon the processed ingress network packets 508.
  • a destination e.g., one or more egress communication port or an egress NPE
  • the master NPE 514 may communicate with the slave NPE 516 through links 518 and 520 to off-load processing.
  • the links 518 and 520 may transmit data in fixed length slots between the NPEs 514 and 516.
  • the master NPE 514 may off-load the processing of ingress network packets 508 by copying data from selected fields of the ingress network packets 508 into fixed length slots of the link 518.
  • the master NPE 514 may automatically forward a fixed number of leading bytes from each network packet to the slave NPE 516 on link 518.
  • the slave NPE 516 may return information to the master NPE 514 on the link 520 in fixed length slots.
  • the information returned on the link 520 may include meta data such as, for example, classification information.
  • the slave NPE 516 may return other meta data on the link 520 such as an egress port number or Ethernet destination address according to an IPv4 forwarding scheme based upon a destination IP address provided by the master NPE 514 on the link 518.
  • the slave NPE 516 may return the meta data returned in slots on the link 520 in association with particular ingress packets 508 received at the master NPE 514.
  • the fixed length slots may include identification data associated with the copied data.
  • the slave NPE 516 may then include the identification data in slots on the link 520, enabling the master NPE 514 to associated the received meta data with particular received ingress network packets 508.
  • a configuration entity may allocate fixed length slots on the 518 and 520 links.
  • the configuration entity may be hosted on a host processing system 502 to be executed in response to a reset event.
  • the configuration entity may initiate bus transactions on the data bus 504 addressed to the NPEs 514 and 516.
  • the configuration entity may define the format of slots on the links 518 and 520 according to a predetermined scheme.
  • the configuration entity may query the NPEs 514 and 516, and then negotiate a slot format on the links 518 and 520 based upon responses from the NPEs

Abstract

A system and method of transmitting network packets between network processing elements though links are disclosed. One or more configuration entities may allocate one or more fixed length slots to be appended to network packets forwarded on a link between network processing elements in-band of the link.

Description

SYSTEM AND METHOD OF ANNOTATING NETWORK PACKETS
BACKGROUND
[0001] This application claims the benefit of U.S. Provisional Patent Appl. No. 60/346,696, filed on January 7, 2002, under 35 U.S.C. § 119 (e).
Field:
[0002] The subject matter disclosed herein relates to the processing of network packets. In particular, the subject matter disclosed herein relates to processing network packets in a network processing environment. Information:
[0003] Network routers typically employ network processing elements to process network packets received at ingress communication ports for forwarding to egress communication ports according to one or more network policies. A router may comprise multiple network processing elements that transmits network packets through links coupling the network processing elements. For example, a first network processing element may classify a received network packet and then forward the network packet to a second network processing element. The second network processing element may then associate an egress port with the network packet. In conjunction with forwarding network packets from one network processing element to another in a router, individual network processing elements may forward control information on a per-packet basis (e.g., meta data or control information representative of a classification or egress port number).
[0004] Network processing elements ~ such as network processors, classification, traffic management, security, and accounting co-processors, or even software modules within a single processor — within a single network element (e.g., a router), typically employ some form of per-packet communication to efficiently process packets. For example,
in a multi-blade chassis-based router, where each blade contains a classification co¬
processor and a network processor, the classification co-processors typically communicate the result of each packet's classification (e.g., a flow ID) to a corresponding network processor. The network processor typically then marks and
polices the packet. Similarly, for any packet arriving on one blade and destined for a
port on another blade, the ingress network processor typically communicates the
outgoing port number to an egress network processor.
[0005] To communicate control information or meta data on per-packet basis, one solution
is to annotate each packet with the desired information. This annotation is typically
done by prepending or appending the packet with the appropriate meta data or control
information. For example, in a multi-blade chassis-based router, a classifier co¬
processor typically prepends flow ID information on each packet before forwarding
the packet to a network processor. The network processor could then extract the flow
ID and subsequently prepend the outgoing port number before forwarding the packet
to an egress network process across the backplane of a chassis.
[0006] Simply prepending packet annotations does not, however, address providing type
identification. Two common solutions are to use either a self-identifying list of annotations or a fixed- format list of annotations. To create a self-identifying list of
annotation, each annotation in the list typically contains a canonical type and a length
field along with the actual value of the annotation. This so-called type-length- value
(TLV) approach has the property of being self-identifying since each annotation can be fully identified by the type field. New annotations can be added because the length field allows older network processing elements to ignore unknown types. Fixed-
format list of annotations typically determine a canonical position in the list for each possible type of information communication. No type or length information may be
required because each of the network processing elements agrees on the single fixed-
format.
[0007] TLV annotations, while flexible, are not efficient to process or transmit. TLV
annotations are not efficient to process because they require a linear search of the
annotation list to find the particular annotations (types) of interest. Moreover, the entire TLV list must be completely searched to find the start of the actual packet data.
TLV annotations are not efficient to transmit because the type and length fields occupy
bandwidth. If the representation of the actual values is small compared to the type and
length fields, considerable bandwidth would be devoted to the transmission of the type
and length fields.
[0008] Fixed-format annotations, while efficient to process, are not necessarily efficient to
transmit and are also not flexible. With transmission of fixed- format annotations,
there is the potential of transmitting unused fields. If, for example, two network
processing elements only share one type of information, they still must transmit all of
the fixed- format fields, including the unused fields. One solution would be to
configure the communication between each pair of network processing elements with
its own unique fixed-format. While this would solve the transmission inefficiency, it
imposes a processing inefficiency and, worse yet, is intractable for ASIC-based
networking processing elements.
[0009]
[0010] BRIEF DESCRIPTION OF THE FIGURES
[0011] Non- limiting and non-exhaustive embodiments of the present invention will be
described with reference to the following figures, wherein like reference numerals
refer to like parts throughout the various figures unless otherwise specified. [0012] Figure 1 shows a network topology according to an embodiment of the present invention.
[0013] Figure 2 shows a schematic diagram of a node in a network according to an embodiment of the network topology shown in Figure 1. [0014] Figure 3 shows a format of slotted annotations for in-band per-packet communication according to an embodiment of the node shown in Figure 2.
[0015] Figure 4 illustrates an allocation of slots in links according to an embodiment of the present invention as illustrated in Figure 3.
[0016] Figure 5 illustrates an allocation of slots in links according to an alternative embodiment of the present invention as illustrated with reference to Figure 3.
[0017] Figure 6 shows an alternative embodiment of the present invention directed to offloading processing from a first network processing element to a second network processing element.
[0018] [0019] DETAILED DESCRIPTION
[0020] Reference throughout this specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrase "in one embodiment" or "an embodiment" in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments.
[0021] "Machine-readable" instructions as referred to herein relates to expressions which may be understood by one or more machines for performing one or more logical operations. For example, machine-readable instructions may comprise instructions which are interpretable by a processor compiler for executing one or more operations one or more data objects. However, this is merely an example of machine-readable instructions and embodiments of the present invention are not limited in this respect. [0022] "Storage medium" as referred to herein relates to media capable of maintaining expressions of data. For example, a storage medium may comprise one or more storage devices for storing data or machine-readable instructions in a particular format. Such storage devices may comprise devices capable of maintaining expressions of data in media such as, for example, magnetic, optical or semiconductor media. However, these are merely examples of storage media and embodiments of the present invention are not limited in these respect.
[0023] "Logic" as referred to herein relates to structure for performing one or more logical operations. For example, logic may comprise circuitry which provides one or more output signals based upon one or more input signals. Such circuitry may comprise a finite state machine which receives a digital input and provides a digital output, or circuitry which provides one or more analog output signals in response to one or more analog input signals. Also, logic may comprise machine-executable instructions stored in a memory in combination with processing circuitry to execute such instructions. However, these are merely examples of structures which may provide logic and embodiments of the present invention are not limited in these respects. [0024] A "processing system" as discussed herein relates to a combination of hardware and software resources for accomplishing computational tasks. However, this is merely an example of a processing system and embodiments of the present invention are not limited in this respect. A "host processing system" relates to a processing system which may be adapted to communicate with a "peripheral device." For example, a peripheral device may provide inputs to or receive outputs from an application process hosted on the host processing system. However, these are merely examples of a host processing system and a peripheral device and embodiments of the present invention are not limited in these respects.
[0025] A "data bus" as referred to herein relates to circuitry for transmitting data between devices. For example, a data bus may transmit data between a host processing system and a peripheral device. However, this is merely an example of a data bus and embodiments of the present invention are not limited in this respect. A "bus transaction" as referred to herein relates to an interaction between devices coupled in a bus structure wherein one device transmits data addressed to the other device through the bus structure.
[0026] A "transmission medium" as referred to herein relates to any media suitable for transmitting data. A transmission medium may include any one of several mediums including, for example, copper transmission media, optical transmission media or wireless transmission media. Also, a transmission medium may comprise combinations of two or more of the aforementioned media. However, these are merely examples of transmission media and embodiments of the present invention are not limited in these respects.
[0027] A "communication port" as referred to herein relates to circuitry to transmit data to or received data from a transmission medium. For example, a communication port may comprise circuitry to transmit data to or receive data from a transmission medium according to a data transmission protocol. However, this is merely an example of a communication port and embodiments of the present invention are not limited in this respect.
[0028] An "ingress" communication port as referred to herein relates to a communication port to receive data from a transmission medium according to a data transmission protocol. For example, an ingress communication port may be associated with a network address and receive formatted data from a transmission medium associated with the network address. However, this is merely an example of an ingress communication port and embodiments of the present invention are not limited in this respect.
[0029] An "egress" communication port as referred to herein relates to a communication port to transmit data through a transmission medium toward a destination. For example, an egress communication port may transmit formatted data through a transmission medium toward a destination associated with a network address. However, this is merely an example of an egress port and embodiments of the present invention are not limited in this respect.
[0030] A "network packet" as referred to herein relates to a unit of data to be transmitted to a destination according to a network protocol. A network packet may comprise a payload portion and a header portion. The payload portion may comprise data to be transmitted to a network destination. The header portion may comprise data indicative of a source or destination network address. However, these are merely examples of a network packet and embodiments of the present invention are not limited in this respect.
[0031] A "link" as referred to herein relates to circuitry to transmit data between devices. A link may provide point to point communication between two devices either unidirectionally or bi-directionally. A link may transmit data between the devices independently of address information. However, these are merely examples of a link and embodiments of the present invention are not limited in these respects.
[0032] A link may transmit data including network packets between devices in a transmission medium. In addition to the network packet data, a link may interleave other data to be transmitted between the devices "in-band" with the network packet data. For example, the transmission of such other data in the link may be time multiplexed with the transmission of network packet data between the device. However, this is merely an example of in-band data transmission and embodiments of the present invention are not limited in these respects.
[0033] A "slot" as referred to herein relates to a discrete resource of a link for transmitting data. For example, a slot may comprise a discrete quantity of time for transmission of data in a link. Alternatively, a slot may comprise a discrete and contiguous quantity of data to be transmitted in a link. However, these are merely examples of a slot and embodiments of the present invention are not limited in these respects.
[0034] A "fixed length slot" as referred to herein relates to a slot having a predetermined size according to a uniform fixed length for slots to be transmitted in a link. For example, a fixed length slot may be associated with a predetermined transmission interval in the link or a predetermined number of bits. However, these are merely examples of "fixed length slots" and embodiments of the present invention are not limited in these respects.
[0035] "Control information" or "meta data" as referred to herein relates to information that may be associated with a network packet transmitted in a link. For example, meta data or control information may be appended to network packets transmitted in a link. However, this is merely an example of meta data and embodiments of the present invention are not limited in this respect.
[0036] Meta data may be associated with one or more "meta data types" defining how the meta data appended to a network packet is to be interpreted. Meta data appended to a network packet may be associated with meta data types such as, for example, FlowID information, classification information or an egress port identifier. However, these are merely examples of meta data types that may be associated with meta data appended to a network packet transmitted in a link and embodiments of the present invention are not limited in these respects. [0037] A "network processing element" as referred to herein relates to a device to process information in, or information associated with, network packets. A network processing element may comprise programmable logic or hardwired logic to process the information in or associated with the network packets. In one application, a network processing element may draw inferences regarding network packets based upon information in or information associated with the network packets. For example, a network processing element may comprise logic to provide classification information or flow information to be associated with network packets. In other applications, a network processing element may encrypt, compress or reorder network packets that are to be forwarded to a destination. However, these are merely examples of network processing elements and embodiments of the present invention are not limited in these respects.
[0038] A "configuration entity" as referred to herein relates to a process or logic to manage communication between devices through a link. For example, a configuration entity may allocate portions of a link for transmitting meta data or control information between devices in-band of the link. The configuration entity may identify a size for the allocated portions and identify the type of meta data or control information to be transmitted in the allocated portions. However, this is merely an example of a configuration entity and embodiments of the present invention are not limited in this respect.
[0039] A network processing system may define multiple "planes" of processing. A plane may associate processing objects according to their relevance in a layered processing stack (e.g., layers in a network processing system or device driver). Each plane may define an application programming interface (API) comprising routines or protocols for building software applications. For example, a network processing system may define a "control plane" and a "data plane" comprising processing objects providing one or more APIs. For example, a data plane may comprise processing objects to perform data packet classification and forwarding tasks. A control plane may comprise processing objects to perform exception handling for processing objects in the data plane. However, these are merely examples of how a network processing system may define multiple planes of processing objects and embodiments of the present invention are not limited in these respects.
[0040] Briefly, an embodiment of the present invention relates to a system and method of transmitting network packets between network processing elements through links. One or more configuration entities may allocate one or more fixed length slots to be appended to network packets forwarded on a link between network processing elements in-band of the link. In transmitting a network packet to a destination network processing element, a network processing element may append control information to the network packet in the allocated fixed length slots. However, this is merely an example embodiment and other embodiments are not limited in these respects. [0041] Figure 1 shows a network topology according to an embodiment of the present invention. A node 2 is coupled to a plurality of nodes 6 through transmission medium
4 to transmit network packets to or receive network packets from the nodes 6 according to a network protocol. A node 6 may transmit network packets through the transmission medium 4 to an ingress communication port (not shown) of the node 2.
Based upon information in the received data packet, the node 2 may then forward the received data packet to another node 6 through an egress communication port (not shown). Any of the nodes 6 may be a source or destination for network packets
received at an ingress communication port of the node 2. However, this is merely an
example of a communication network and embodiments of the present invention are
not limited in this respect. [0042] The transmission medium 4 may comprise any one of several transmission
mediums capable of transmitting information including, for example, copper or optical
cabling, or wireless transmission media. However, these are merely examples of
transmission media and embodiments of the present invention are not limited in these
respects.
[0043] Figure 2 shows a schematic diagram of a node in a network according to an
embodiment of the network topology shown in Figure 1. A processing platform 100
comprises a host processing system 102 coupled to a plurality of network processing
elements (NPEs) 114, 116 and 118 through a data bus 104. The host processing
system 102 may comprise a central processing unit (CPU) (not shown) and system
memory (not shown) to host an operating system and application programs. The NPE
114 may be coupled to a plurality of ingress communication ports 108 to receive
network packets from a transmission medium from source nodes. The NPE 118 may
be coupled to a plurality of egress communication ports to transmit network packets
through a transmission medium to destination nodes. However, this is merely an
example of a node in a network and embodiments of the present invention are not
limited in this respect.
[0044] The ingress and egress communication ports 108 and 110 may transmit data to or receive data from a node through a transmission medium according to any one of
several data link layer communication protocols. For example, such a link layer
protocol may include any one of the Ethernet, SONET, ATM, frame relay, token ring or point-to-point protocols. However, these are merely examples of data link layer protocols that may be used for transmitting network packets to or receiving network packets from a communication node and embodiments of the present invention are not limited in this respect. [0045] In the presently illustrated embodiment, the NPEs 114, 116 and 118 may analyze the contents of a network packet received from the ingress communication ports 108 and make inferences regarding the network packet. Such an NPE may associate meta data or control information with a network packet which is representative of such an inference. For example, the NPE may associate meta data with a network packet that is representative of a packet classification, a flow identifier or an output egress communication port. Also, the NPE may associate meta data with a network packet that is based upon the origin of the packet to determine how the packet is treated (e.g., a UserlD that is used to determine a priority for forwarding the packet according to a quality of service scheme). In another example, a NPE may determine that a network packet is associated with a particular data flow/connection that requires encryption and associate meta data including an encryption key to be used to encrypt the data at a subsequent NPE. However, these are merely examples of meta data that may be associated with network packets by an NPE and embodiments of the present invention are not limited in these respects. Alternatively, an NPE may initiate an action to process a network packet based upon meta data associated with the network packet.
For example, the NPE 118 may initiate transmission of a network packet on a particular egress communication port 110 for transmitting network packet based upon meta data associated with the network packet.
[0046] The NPEs 114, 116 and 118 may comprise any one of several devices to provide or process meta data to be associated with network packets. For example, an NPE may comprise any one of several programmable network processor devices such as the IXP 1200 network processor sold by Intel Corporation. Alternatively, an NPE may comprise any one of several non-programmable or semi-programmable application specific integrated circuit (ASIC) devices for analyzing network packets and providing meta data to be associated with the network packets. However, these are merely examples of devices which may be used as NPEs and embodiments of the present invention are not limited in these respects. [0047] Links 112 are coupled between the NPEs 114, 116 and 118 to transmit network packets among the NPEs. In the presently illustrated embodiment, the links 112 may transmit network packets received from the ingress communication ports 108 from the
NPE 114 to the NPE 116, and from the NPE 116 to the NPE 118. Network packets received at the NPE 118 from a link 112 may then be transmitted to a destination node through an egress communication port 110. The links 112 may comprise any one of several transmission media capable of transmitting network packets between devices according to data transmission protocol. For example, the links 112 may comprise a
UTOPIA bus or versions of the System Packet Interface (SPI) link defined by the Optical Internetworking Forum (OIF) to transmit data between NPEs. However, these are merely examples of a link to transmit data between devices and embodiments of the present invention are not limited in these respects. [0048] The node 100 may comprise separate processing blades disposed within a chassis
(not shown) where each NPE resides on a blade coupled to the data bus 104.
However, this is merely an example of how NPEs may be disposed in a node and embodiments of the present invention are not limited in this respect.
[0049] While the embodiment illustrated in Figure 2 shows the node 100 comprising three NPEs 114, 116 and 118, it should be understood that the embodiments illustrated throughout may also apply to other nodes having two, or more than three NPEs coupled in series by links to process network packets received on ingress ports to be forwarded to egress ports. [0050] According to an embodiment, the NPEs 114 and 116 may append meta data to network packets transmitted in the links 112 in fixed length time slots. The number of slots and the format of each slot in a link 112 may be determined by a configuration entity (not shown). Figure 3 illustrates an allocation of fixed length slots 204 and 206 to be appended to a network packet 202 transmitted in a link 112 between NPEs. The slots 204 and 206 may be of any pre-determined length (e.g., eight bits). The slots 204 may comprise meta data associated with the network packet 202. The configuration entity may fix the number of slots 206 to be appended to each network packet forwarded in a link 112 between NPEs. However, this is merely an example of how a configuration entity may define how slots are allocated in a link for transmitting network packets between NPEs. Alternatively, the number of slots 206 containing meta data may be dynamically allocated using a slot 204 to indicate the number of slots 206 being appended to each network packet forwarded in the link 112. [0051] In addition to determining a number of slots to be appended to a network packet, the configuration entity may also define a type of meta data ("meta data types") for the data to be placed in each of the allocated slots. For example, the configuration entity may pre-define some allocated slots to contain classification information or an egress communication port number. However, this is merely an example of how a configuration entity may define meta data types for data to be provided within allocated slots and embodiments of the present invention are not limited in this respect.
[0052] According to an embodiment, instead of, or in addition to, indicating a number of slots being appended, information in slot 204 may indicate a meta data type associated with the meta data to be provided in the one or more slots 206. For example, slot 204 may contain a value 0x01 to indicate that the following two slots 206 are to provide a sixteen bit FlowID immediately followed by the packet data 202. Similarly, slot 204 may contain a value 0x02 to indicate that the following slot 206 provides an egress port number immediately followed by the packet data 202. However, these are merely examples of how an appended slot may indicate meta data types of meta data to be appended in other slots and embodiments of the present invention are not limited in these respects. [0053] Figure 3 shows slots 206 and 204 being appended to the beginning of packet data 202 as it is forwarded between NPEs on a link 112. It should be understood, however, that in alternative embodiments slots containing meta data may be append to the end of network packet data instead of the beginning of the network packet data. [0054] According to an embodiment of the node illustrated with reference to Figure 2, a configuration entity may comprise a process that is executed by the host processing system 102. Upon execution, this configuration entity may allocate fixed length slots to be appended in-band to the network packets transmitted between NPEs through the links 112. For example, the host processing system 102 may execute the configuration entity in response to a reset event to initiate one or more bus transactions on the data bus 104 addressed to one or more NPEs. The bus transactions may transmit data indicating a format for appending fixed length slots to network packets as illustrated in
Figure 3. The data provided in the bus transactions may include, for example, the size of slots, a number of allocated fixed length slots and meta data types to define meta data to be provided in the fixed length slots. Also, the configuration entity may reside as a process in a "control plane" which controls processes residing in a "data plane" residing on the NPEs. However, this is merely an example of how a configuration entity may be implemented in a node and embodiments of the present invention are not limited in these respects. [0055] Figure 4 illustrates how a configuration entity 302 may allocate fixed length slots to be appended to network packets transmitted between NPEs on links 312 according to an embodiment of the present invention as illustrated above with reference to
Figures 2 and 3. An NPE 314 may receive network packets from an ingress communication port (not shown) and determine meta data such as a "FlowID" based upon an analysis of the data in the received network packets. For example, the NPE 314 may associate each received network packet with a packet classification and assign a FlowID to the network packet based upon the associated packet classification.
Such classification information may include, for example, a 5-tuple comprising a source IP address, destination IP address, protocol number (to indicate a type of traffic being transmitted), source port number (e.g., indicating a source entity sending the network packet) and destination port number (e.g., indicating a destination entity to receive the network packet). Alternatively, such classification information may include a 5-tuple or combination of one or more of the aforementioned 5-tuple fields with other fields such as a DS byte to indicate a quality of service to be associated with the network packet. However, these are merely examples of classification information that may be associated with a network packet and embodiments of the present invention are not limited in these respects.
[0056] The NPE 314 may determine FlowID information based upon other types of packet inspection. For example, the NPE 314 may associate FlowID information based upon network packet content. In a particular example, NPE 314 may associate network packets from an on-line shopper with a higher priority if the on-line shopper has made purchases in the past and is therefore likely to make purchases in the future (e.g., unlikely to be a mere browser or "window shopper"). Thus, if NPE determines (from examining the contents of a network packet) that the on-line shopper has selected an item for purchase (e.g., completed payment or added an item to a "shopping cart"), subsequent network packets may be forwarded with a higher priority. However, this is merely an example of how FlowID information may be based upon network packet content and embodiments of the present invention are not limited in this respect. [0057] The NPE 314 may append the FlowID to the network packet 302 in slots 306 for forwarding to an NPE 316 for further processing. The NPE 316 may then determine other meta data such as an egress communication port number based upon the FlowID in the slots 306, and append the egress communication port number in slots 326 to be appended to the network packet 302 for forwarding to an NPE 318. The NPE 318 may then initiate transmission of the network packet on an egress communication port associated with the egress communication port number. [0058] In the presently illustrated embodiment, a configuration entity 322 may determine the number of slots to be appended to the network packet in-band in each link 312 between NPEs, and length/size of each individual slot. The configuration entity 322 may determine a maximum requirement for slots to transmit meta data with network packets in a link, and allocate a fixed number of slots for each link 312 that is sufficient to meet this maximum requirement. In the presently illustrated embodiment, for example, FlowID information to be appended to network packets transmitted from
NPE 314 to NPE 316 provides a maximum requirement of two slots. Accordingly, the configuration entity 322 allocates two slots to be appended in-band when transmitting a network packet in a link 312 between NPE 314 and NPE 316, and between NPE 316 and NPE 318. Since an egress communication port number can be transmitted in a link 312 with only one slot, one of the allocated slots for transmitting network packets between NPE 316 and NPE 318 may remain unused. [0059] In an alternative to the embodiment illustrated with reference to Figure 4, Figure 5 illustrates an embodiment with two configuration entities 422 and 423. The configuration entity 422 may allocate slots to append FlowID information to network packets 402 in-band (when forwarding the network packet 402 from the NPE 414 to the NPE 416) while configuration entity 423 may independently allocate slots to append an egress communication port number to network packets 402 in-band (when forwarding the network packet 402 from the NPE 416 to the NPE 418). Accordingly, the configuration entity 423 may avoid allocation of unused slots for appending the egress communication port number to the network packets 402 forwarded to the NPE 418. [0060] In the embodiments illustrated above with reference to Figures 4 and 5, the configuration entities 322, 422 and 423 may define allocated slots to be appended in- band when transmitting network packets between NPEs according to a predetermined slot allocation. Alternatively, the configuration entities 322, 422 and 423 may query the NPEs, and then negotiate an allocation of slots for meta data to be appended to network packets forwarded between NPEs. The negotiated allocation of slots in a link may be selected from a plurality of allocations which are compatible with NPEs coupled by the link. For example, a configuration manager may identify potential allocation schemes which are compatible among all affected NPEs, and select the most efficient allocation among the common compatible allocation scheme. The configuration manager may then define data types for data to be provided in the allocated slots, and transmit messages to the NPEs to communicate to the affected NPEs the allocation of fixed length slots and the meta data types for data to be provided in the allocated slots. However, this is merely an example of a negotiated allocation of slots among multiple NPEs and embodiments of the present invention are not limited in this respect. [0061] Figure 6 shows an alternative embodiment in which a node 500 comprises a master NPE 514 and a slave NPE 516. The master NPE 514 may process ingress network packets 508 received from a network packet source such as one or more ingress communication ports (not shown) or an ingress NPE (not shown). The NPE 514 may then provide egress network packets 510 to a destination (e.g., one or more egress communication port or an egress NPE) based upon the processed ingress network packets 508. In processing the ingress network packets 508, the master NPE 514 may communicate with the slave NPE 516 through links 518 and 520 to off-load processing. [0062] The links 518 and 520 may transmit data in fixed length slots between the NPEs 514 and 516. The master NPE 514 may off-load the processing of ingress network packets 508 by copying data from selected fields of the ingress network packets 508 into fixed length slots of the link 518. For example, the master NPE 514 may automatically forward a fixed number of leading bytes from each network packet to the slave NPE 516 on link 518. In response to processing information received on the link 518, the slave NPE 516 may return information to the master NPE 514 on the link 520 in fixed length slots. The information returned on the link 520 may include meta data such as, for example, classification information. The slave NPE 516 may return other meta data on the link 520 such as an egress port number or Ethernet destination address according to an IPv4 forwarding scheme based upon a destination IP address provided by the master NPE 514 on the link 518. [0063] The slave NPE 516 may return the meta data returned in slots on the link 520 in association with particular ingress packets 508 received at the master NPE 514. For example, in addition to data copied from selected fields in ingress network packet 508, the fixed length slots may include identification data associated with the copied data. The slave NPE 516 may then include the identification data in slots on the link 520, enabling the master NPE 514 to associated the received meta data with particular received ingress network packets 508.
[0064] In the presently illustrated embodiment a configuration entity (not shown) may allocate fixed length slots on the 518 and 520 links. The configuration entity may be hosted on a host processing system 502 to be executed in response to a reset event.
The configuration entity may initiate bus transactions on the data bus 504 addressed to the NPEs 514 and 516. In one embodiment, the configuration entity may define the format of slots on the links 518 and 520 according to a predetermined scheme. Alternatively, the configuration entity may query the NPEs 514 and 516, and then negotiate a slot format on the links 518 and 520 based upon responses from the NPEs
514 and 516 to the initial query.
[0065] While there has been illustrated and described what are presently considered to be example embodiments of the present invention, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from the true scope of the invention. Additionally, many modifications may be made to adapt a particular situation to the teachings of the present invention without departing from the central inventive concept described herein. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the invention include all embodiments falling within the scope of the appended claims.

Claims

CLAIMSWhat is claimed is:
1. A system comprising: a plurality of ingress communication ports to receive network packets from a transmission medium; a plurality of egress communication ports to transmit received network packets to a transmission medium; a plurality of network processing elements, each network processing element coupled to another one of said network processing elements by a link; and one or more configuration entities to allocate one or more fixed length slots to append to each of said network packets forwarded on a link between network processing elements in-band of the link, and define one or more types of meta data for appending to the network packet in the allocated fixed length slots.
2. The system of claim 1 , wherein one or more of said network processing elements comprises logic to forward a received network packet to another network processing element through one of said links, the one or more network processing elements further comprising logic to append meta data to the forwarded network packet in one or more allocated slots in-band of the link.
3. The system of claim 1, wherein the system further comprises: at least one network processing element coupled to one or more ingress communication ports to append classification information in one or more allocated fixed length slots to network packets received from the one or more ingress communication ports; and at least one network processing element coupled to one or more egress communication ports to append packet forwarding information in one or more allocated fixed length slots.
4. The system of claim 3, the system further comprising a single configuration entity to allocate a fixed number of fixed length slots to be appended to network packets forwarded between network processing elements on said links.
5. The system of claim 3, wherein the system further comprises: a first configuration entity to allocate a first number of slots to be appended to network packets forwarded from a first network processing element to a second network processing element in a first link; a second configuration entity to allocate a second number of slots to be appended to network packets forwarded from the second network processing element to a third network processing element in a second link, wherein the first network processing element comprises logic to append classification information in the first number of slots to network packets transmitted to the second network processing element in the first link, and wherein the second network processing element comprises logic to append forwarding information in the second number of slots to network packets transmitted to the third network processing element in the second link.
6. The system of claim 1, wherein a first slot comprises a slot count to indicate the number of fixed length slots appended to each packet.
7. The system of claim 1, wherein the one or more configuration entities comprise logic to transmit type and size information characterizing the allocated slots to the network processing elements according to a control plane protocol.
8. The system of claim 1, wherein the system further comprises: a data bus coupled to at least two network processing elements; and a host processing system coupled to the data bus to host the one or more configuration entities
9. An apparatus comprising: a first network processing element to forward received network packets on a link; a second network processing element to receive the forwarded network packets; and a configuration entity to allocate one or more fixed length slots to be appended to each of said forwarded network packets in-band of the link, and define one or more types of meta data for appending to the network packet in the allocated fixed length slots..
10. The apparatus of claim 9, wherein: the first network processing element comprises logic to append classification information in one or more allocated fixed length slots to network packets received from the one or more ingress communication ports; and the second network processing element comprises logic to append packet forwarding information in one or more allocated fixed length slots.
11. The apparatus of claim 9, the apparatus further comprising a third network processing element, the third network processing element being coupled to the second network processing element by a second link, to receive network packets forwarded by the second network processing element forwarded on the second link.
12. The apparatus of claim 10, wherein the configuration entity allocates one or more fixed length slots to be appended to each of said forwarded network packets in-band of the second link.
13. The apparatus of claim 9, wherein the apparatus further comprises a second configuration entity to allocate one or more fixed length slots to be appended to each of said forwarded network packets in-band of the second link independently of an allocation of fixed length slots to be appended to network packets forwarded on the first link.
14. The apparatus of claim 9, wherein a first slot among slots appended to a network packet comprises a slot count to indicate the number of fixed length slots appended to the network packet.
15. The apparatus of claim 9, wherein the configuration entity comprises logic to transmit type and size information characterizing the allocated slots to the network processing elements according to a control plane protocol.
16. An article comprising: a storage medium comprising machine-readable instructions stored thereon to: allocate one or more fixed length slots to be appended to network packets transmit in-band of a link; define one or more types of meta data for appending to the network packet in the allocated fixed length slots; and communicate the allocation of fixed length slots and data type definitions to network processing elements coupled to the link.
17. The article of claim 16, wherein the article further comprises machine- readable instructions stored thereon to transmit type and size information characterizing the allocated slots to the network processing elements according to a control plane protocol.
18. The article of claim 16, wherein the article further comprises machine- readable instructions stored thereon to allocate one or more fixed length slots to be appended to each network packet forwarded in-band of a second link independently of the allocation of fixed length slots to be appended to network packets in-band of a first link.
19. A method comprising: allocating one or more fixed length slots to be appended to network packets transmit in-band of a link coupled between first and second network processing elements; defining one or more types of meta data for appending to the network packet in the allocated fixed length slots; and communicating the allocation of fixed length slots and data type definitions to network processing elements coupled to the link.
20. The method of claim 19, the method further comprising: determining a number of fixed slots to be appended to the network packets transmitted in the link; and transmitting the number to the network processing elements.
21. The method of claim 19, the method further comprising: allocating one or more fixed length slots to be appended to network packets transmit in-band of a link coupled between the second network processing elements and a third network processing element; and appending meta data to each network packet transmitted in the link from the second network processing element to the third network processing element in the allocated slots.
22. An apparatus comprising: a first network processing element to receive network packets from one or more ingress communication ports and forward the network packets toward one or more egress communication ports; and a second network processing element coupled to the first network processing element by a first link to receive one or more portions of the received network packets in fixed length slots allocated in the first link, and coupled to the first network processing element by a second link to provide information to the first network processing element in based upon the portions of the received network packets transmitted in the first link.
23. The apparatus of claim 22, the apparatus further comprising a configuration entity to allocate the fixed length slots in the first link to the one or more portions of the ingress network packets and communicate the allocation of the fixed length slots to the first and second network processing elements.
24. The apparatus of claim 22, wherein the second network processing element provides information in allocated slots in the second link.
25. A system comprising: a plurality of ingress communication ports to receive network packets from a transmission medium; a plurality of egress communication ports to transmit received network packets to the transmission medium; a first network processing element to receive network packets the ingress communication ports and forward the network packets toward the egress communication ports; and a second network processing element coupled to the first network processing element by a first link to receive one or more portions of the received network packets in fixed length slots allocated in the first link, and coupled to the first network processing element by a second link to provide information to the first network processing element in based upon the portions of the received network packets transmitted in the first link.
26. The system of claim 25, wherein the transmission medium is selected from one of an optical and a wireless transmission medium.
27. The system of claim 25, the system further comprising a configuration entity to allocate the fixed length slots in the first link to the one or more portions of the ingress network packets and communicate the allocation of the fixed length slots to the first and second network processing elements.
28. The system of claim 25, wherein the second network processing element provides information in allocated slots in the second link.
PCT/US2003/012352 2002-04-26 2003-04-18 System and method of annotating network packets WO2003092229A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003239156A AU2003239156A1 (en) 2002-04-26 2003-04-18 System and method of annotating network packets

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/133,125 US7415024B2 (en) 2002-01-07 2002-04-26 System and method of annotating network packets
US10/133,125 2002-04-26

Publications (1)

Publication Number Publication Date
WO2003092229A1 true WO2003092229A1 (en) 2003-11-06

Family

ID=29268773

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2003/012352 WO2003092229A1 (en) 2002-04-26 2003-04-18 System and method of annotating network packets

Country Status (4)

Country Link
US (1) US7415024B2 (en)
AU (1) AU2003239156A1 (en)
TW (1) TWI320279B (en)
WO (1) WO2003092229A1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL1027672C2 (en) * 2004-12-06 2006-06-12 Neopost Sa Method for determining a network topology in a device for processing physical documents, such as mail items.
US8838829B2 (en) * 2005-07-11 2014-09-16 Cisco Technology, Inc. Pseudowire (PW) switching type-length-value (TLV)
US8161540B2 (en) * 2007-07-27 2012-04-17 Redshift Internetworking, Inc. System and method for unified communications threat management (UCTM) for converged voice, video and multi-media over IP flows
US8176001B2 (en) * 2007-10-18 2012-05-08 Redshift Internetworking, Inc. System and method for detecting spam over internet telephony (SPIT) in IP telecommunication systems
US8730946B2 (en) * 2007-10-18 2014-05-20 Redshift Internetworking, Inc. System and method to precisely learn and abstract the positive flow behavior of a unified communication (UC) application and endpoints
JP5720524B2 (en) * 2011-10-12 2015-05-20 富士通株式会社 RELAY PROGRAM, RELAY DEVICE, AND CONTROL METHOD
US8954992B2 (en) 2013-03-15 2015-02-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Distributed and scaled-out network switch and packet processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6683850B1 (en) * 1997-08-29 2004-01-27 Intel Corporation Method and apparatus for controlling the flow of data between servers
US6744777B1 (en) * 1998-10-05 2004-06-01 Matsushita Electric Industrial Co., Ltd. Data transfer method and data transfer system
KR100333250B1 (en) * 1998-10-05 2002-05-17 가나이 쓰토무 Packet forwarding apparatus with a flow detection table
US6430155B1 (en) * 1998-11-30 2002-08-06 Cisco Technology, Inc. Congestion avoidance on communications networks
US6876655B1 (en) * 1999-04-22 2005-04-05 Ramot At Tel Aviv University Ltd. Method for routing with a clue
US6614791B1 (en) * 1999-05-11 2003-09-02 Nortel Networks Limited System, device, and method for supporting virtual private networks
US7143166B1 (en) * 1999-07-12 2006-11-28 Lucent Technologies Inc. Dynamic bandwidth allocation in a reservation system
EP1214801A1 (en) * 1999-09-01 2002-06-19 Motorola, Inc. Method and device for bandwidth allocation in multiple access protocols with contention-based reservation
US6922404B1 (en) * 1999-10-14 2005-07-26 Nortel Networks Limited Mobile IP extensions rationalization (MIER)
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors
JP3640160B2 (en) * 2000-07-26 2005-04-20 日本電気株式会社 Router device and priority control method used therefor
US6381242B1 (en) * 2000-08-29 2002-04-30 Netrake Corporation Content processor
US6937576B1 (en) * 2000-10-17 2005-08-30 Cisco Technology, Inc. Multiple instance spanning tree protocol
CA2385999A1 (en) * 2001-05-15 2002-11-15 Tropic Networks Inc. Method and system for allocating and controlling labels in multi-protocol label switched networks
US7126907B2 (en) * 2001-08-31 2006-10-24 Tropic Networks Inc. Label switched communication network, a method of conditioning the network and a method of data transmission
US7127508B2 (en) * 2001-12-19 2006-10-24 Tropic Networks Inc. Method and system of measuring latency and packet loss in a network by using probe packets
US20030145108A1 (en) * 2002-01-31 2003-07-31 3Com Corporation System and method for network using redundancy scheme

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANDERSON ET AL: "Requirements for separation of IP control and forwarding draft-ietf-forces-requirements-01.txt", IETF DRAFT, November 2001 (2001-11-01), XP002248250, Retrieved from the Internet <URL:www.ietf.org> [retrieved on 20030718] *
ANDERSON: "ForCES Architectural Framework and FE Functional Model", IETF DRAFT, November 2001 (2001-11-01), XP002248249, Retrieved from the Internet <URL:www.ietf.org> [retrieved on 20030718] *
CROUCH, HANDLEY: "Forces Applicability Statement draft-crouch-forces-applicability-01.txt", IETF FORCES WG DRAFT, 28 February 2002 (2002-02-28), XP002248251, Retrieved from the Internet <URL:www.ietf.org> [retrieved on 20030718] *

Also Published As

Publication number Publication date
AU2003239156A1 (en) 2003-11-10
US7415024B2 (en) 2008-08-19
US20030128717A1 (en) 2003-07-10
TWI320279B (en) 2010-02-01
TW200402969A (en) 2004-02-16

Similar Documents

Publication Publication Date Title
US5539736A (en) Method for providing LAN address discovery and terminal emulation for LAN-connected personal computer (PCs) using xerox network system (XNS)
EP3965383A1 (en) Packet processing method for implementing qos guarantee, device, and system
US6571291B1 (en) Apparatus and method for validating and updating an IP checksum in a network switching system
US7787442B2 (en) Communication statistic information collection apparatus
CN112422393B (en) Method for transmitting message of extensible virtual local area network, computer equipment and readable medium
US7474666B2 (en) Switch port analyzers
EP0993153B1 (en) Packet forwarding apparatus with a flow detection table
US7408957B2 (en) Selective header field dispatch in a network processing system
US7742474B2 (en) Virtual network interface cards with VLAN functionality
US6041058A (en) Hardware filtering method and apparatus
US20120023217A1 (en) Method and apparatus for policy enforcement using a tag
US7664045B2 (en) Sampling to a next hop
US7082138B2 (en) Internal communication protocol for data switching equipment
WO2012080170A1 (en) Network processor and method for accelerating data packet parsing
JP2001230817A (en) Suggestion and reply architecture for route lookup and packet classification request
US20080002704A1 (en) Method and system for controlling virtual machine bandwidth
US20100238804A1 (en) Flow control for multi-hop networks
US7643496B1 (en) Application specified steering policy implementation
CN108471383A (en) Message forwarding method, device and system
US5875176A (en) Network adaptor driver with destination based ordering
US20020103925A1 (en) Generic programmable internet protocol classification technique for a broadband engine
US7415024B2 (en) System and method of annotating network packets
WO2004019561A1 (en) Frame transfer method and node in ethernet(r)
US7042886B2 (en) Apparatus, method, and computer program for wire-speed classification and pre-processing of data packets in an ATM network
JP2001313663A (en) Method and device for controlling exclusive logical network access

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP