US20020057654A1 - Method and apparatus for frame peeking - Google Patents

Method and apparatus for frame peeking Download PDF

Info

Publication number
US20020057654A1
US20020057654A1 US09/058,561 US5856198A US2002057654A1 US 20020057654 A1 US20020057654 A1 US 20020057654A1 US 5856198 A US5856198 A US 5856198A US 2002057654 A1 US2002057654 A1 US 2002057654A1
Authority
US
United States
Prior art keywords
packet
controller
packets
flow
forwarding
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.)
Granted
Application number
US09/058,561
Other versions
US6392996B1 (en
Inventor
Gisli Hjalmtysson
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.)
AT&T Corp
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US09/058,561 priority Critical patent/US6392996B1/en
Assigned to AT&T CORP. reassignment AT&T CORP. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HJALMTYSSON, GISLI
Publication of US20020057654A1 publication Critical patent/US20020057654A1/en
Application granted granted Critical
Publication of US6392996B1 publication Critical patent/US6392996B1/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • 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/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/106ATM switching elements using space switching, e.g. crossbar or matrix
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5649Cell delay or jitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • H04L2012/5683Buffer or queue management for avoiding head of line blocking
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Definitions

  • the present invention relates to data networks, and more particularly, to a method and apparatus for peeking at a portion of a frame or packet rather than the full packet.
  • Computer networks can be managed using a variety of techniques. Increasingly, it is becoming more desirable to actively manage computer networks, for example, to provide consistent service quality. However, in order to actively manage computer networks in an effective manner, systems must typically operate in the data path. In other words, systems must operate on the data packets to be forwarded. However, by operating on the packets to be forwarded, added delay is introduced in the packet forwarding process which can exacerbate network congestion.
  • FIG. 1 illustrates a system 10 located at a node of a data network.
  • FIG. 1 illustrates an example of a system that operates in the data path.
  • System 10 includes a controller 12 for controlling the operation of system 10 , a forwarding engine 14 for forwarding packets received on line 18 . Packets are output (forwarded) via line 20 . Controller 12 and forwarding engine 14 can communicate via interface lines 16 .
  • Congestion is a common problem in data networks. Congestion occurs when there is more data to be carried over the network than the network can support.
  • a group of packets are input to forwarding engine 14 via line 18 .
  • the received packets are stored in a buffer 15 and then routed via path 21 to controller 12 .
  • the packets can be analyzed by controller 12 to determine which packets should be discarded and which packets should be forwarded.
  • the packets can be analyzed based upon application semantics.
  • the packets are then each copied back to buffer 15 of forwarding engine 14 for forwarding on line 20 .
  • the critical forwarding path of the network is the data path which is input on line 18 and is output on line 20 .
  • a significant delay is introduced by moving each of the packets along path 21 from buffer 15 of forwarding engine 14 to the controller 12 and then back to buffer 15 . This delay is very significant because the interface between controller 12 and forwarding engine 14 has a very limited bandwidth.
  • controller 12 operates on application level frames, which can include many ATM cells. Therefore, in an ATM network, the ATM cells received on line 18 must typically be reassembled into application level frames. After the cells are reassembled into an application level frame, controller 12 can then analyze the data to determine whether the cells should be discarded or forwarded. The application level frame must then be segmented back into the separate ATM cells before moving the individual cells back to buffer 15 in forwarding engine 14 . This reassembly and segmentation process further slows the forwarding task that must be performed by system 10 .
  • ATM Asynchronous Transfer Mode
  • System 10 of FIG. 1 can improve reception quality during congestion by operating in the data path to selectively discard less important packets and forward more important packets. However, this is done at the price of a significant delay incurred through the data path 21 that is routed through controller 12 .
  • a data network can be actively managed by operating in the data path. As described above, fully operating in the data path can improve network control, but also significantly degrades forwarding performance of the system. Therefore, there is a need for a technique to operate on data in the data path without significantly degrading the forwarding performance of the system.
  • the present invention includes a method and apparatus for frame peeking that enables a controller to operate on data in the data path without significantly degrading the forwarding performance of the system.
  • the system includes a controller, a forwarding engine for forwarding packets, and an interface interconnecting the controller and the forwarding engine.
  • the interface includes a subscribe/publish interface and a facility access interface.
  • the subscribe interface allows the controller to request (subscribe) to receive a selected portion of a packet or packets of a flow.
  • the publish interface allows the forwarding engine to publish the requested data to the controller.
  • the facility access interface allows the controller to control packets stored in a buffer of the forwarding engine.
  • a copy of the portion of the received packet is provided to the controller.
  • the controller may then analyze the received portion of the packet to determine how the packet should be controlled.
  • the controller can then use the facility access interface to control the packet (e.g., discard or block the packet, reschedule the forwarding of the packet, allow the packet to be forwarded normally). Therefore, because only a selected portion of a packet is provided to the controller, the controller can operate on the data without significantly degrading the forwarding performance of the system.
  • frame peeking can be used at an end-system to reduce the number of copies that are made of a packet in memory and improve packet processing efficiency.
  • two copies of a received packet must be made in memory.
  • the end-system must first copy the packet into kernel memory and then determine which portion of user or application memory should receive the packet.
  • the packet is then copy from kernel space into the specific user memory space.
  • two copies must be made, thereby, creating additional packet processing and delay.
  • the end-system includes an interface card for receiving packets, a processor or controller and memory.
  • the controller requests or subscribes to receive a portion of packets received at the interface card.
  • Packets are received at the interface card and a portion of requested packets are provided to the controller.
  • the controller identifies a location to store the packet in memory based on the portion of the packet.
  • the packet is then stored in memory at the identified location. Thus, according to an embodiment of the present invention, only one copy of the packet is made in memory.
  • FIG. 1 illustrates a system located at a node of a data network.
  • FIG. 2 illustrates a system located at a node of a data network according to an embodiment of the present invention.
  • FIG. 3 is a flow chart illustrating the operation of the system of FIG. 2 according to an embodiment of the present invention.
  • FIG. 4 illustrates a computer system operating as an end-system according to an embodiment of the present invention.
  • FIG. 2 illustrates a system at a node of a data network according to an embodiment of the present invention.
  • System 20 in FIG. 2 includes a controller 22 for controlling operation of system 20 , and a forwarding engine 24 for forwarding packets input on line 34 to other nodes via output line 36 .
  • System 20 can be implemented in hardware and/or software.
  • the packets can include Internet Protocol (IP) packets, Asynchronous Transfer Mode (ATM) application level frames (such as ATM Adaptation Layer frames) or the like.
  • Control signals are input to controller 22 via line 38 and may be provided on a separate signaling connection, but may also be in-band.
  • Forwarding engine 24 also includes a buffer 26 for storing packets input via line 34 .
  • An interface 28 couples controller 22 to forwarding engine 24 .
  • Interface 28 includes a subscribe/publish interface 32 and a facility access interface 30 .
  • the subscribe/publish interface 32 allows controller 22 to subscribe to request a predetermined portion of specific packets from forwarding engine 24 , and allows forwarding engine 24 to publish or send the requested portion of the packet to controller 22 .
  • Facility access interface 30 allows controller 22 to control the forwarding of the received packets. Interfaces 30 and 32 are described in greater detail below.
  • a data network includes many nodes, where each node can include a system 20 .
  • System 20 provides a mechanism for frame-peeking that enables controller 22 to peek at a portion of a requested packet.
  • This frame-peeking mechanism enables controller 22 to only peek at parts of each requested packet as opposed to having to be fully in the data path.
  • the frame-peeking mechanism of the present invention improves forwarding efficiency by reducing the amount of data routed through controller 22 (e.g., limiting bandwidth needs of controller 22 ) and by avoiding removing or copying the packet from the buffer 26 of forwarding engine 24 .
  • an ATM switch may support frame-peeking without performing reassembly and segmentation of the full application level frame.
  • packet-peeking limits the bandwidth from a kernel router located in the forwarding engine 24 to the flow controller at controller 22 .
  • controller 22 may dynamically change the volume of data that goes through it. For example, during congestion, controller 22 may perform a selective discard of selected packets. Initially, controller 22 may subscribe only to the flow statistics until buffer 26 fills up to a predetermined level of fullness (indicating the onset of congestion) at which time controller 22 starts peeking at the application level frames (e.g., subscribes to a portion of the frames or packets). By peeking at the incoming packets, controller 22 can then selectively discard the less important packets using facility access interface 30 . Because only a small portion of the data is copied to the controller 22 , the volume of data going through controller 22 is minimal. In this manner, controller 22 can operate on the data without being fully in the data path.
  • a predetermined level of fullness indicating the onset of congestion
  • controller 22 By peeking at the incoming packets, controller 22 can then selectively discard the less important packets using facility access interface 30 . Because only a small portion of the data is copied to the controller 22 , the volume of data going through controller 22 is minimal
  • controller 22 can request (or subscribe) to peek into a particular group of packets of interest.
  • Each group of packets is defined as a flow.
  • a flow is one or more packets satisfying an equivalence relation.
  • a flow can be identified by a common sequence of bits (i.e., a common bit pattern) in each packet.
  • a wide variety of bit sequences can be used for flow identification.
  • a flow can be, for example, the group of ATM cells or application level frames corresponding to the ATM connection.
  • ATM allows for the flow (or connection) to be identified by information in the application level frame, such as part of an RTP frame.
  • a flow can be a group of packets or datagrams that are associated with each other.
  • a flow can include all IP packets from a specific IP address, or directed to a specific IP address, or having a predetermined prefix in the IP destination address (e.g., all packets directed to England).
  • IP version 6 IP version 6
  • IP IP version 6
  • a predetermined IP option can be used in a group of packets to identify a flow.
  • a flow could also include, for example, packets providing data of a particular type, such as MPEG-4 video packets.
  • the type of data (e.g., MPEG-4 video) carried in the packet payload may be identified in the application level header in the payload.
  • the subscribe/publish interface 32 allows controllers to subscribe to (request) events and information to be published (on request) by forwarding engine 24 .
  • subscribe/publish interface 32 includes three primitives (or commands) that allows controller 22 to subscribe (or request) to receive packet information, and a primitive or command that allows the forwarding engine 24 to publish or provide the requested information to controller 22 .
  • the Subscribe primitives include:
  • Subscribe-Stats(flow identifier) requests a subscription to simple flow statistics, such as number of packets and bytes transmitted since last invocation, or the number of bytes (or packets) currently in the buffer 26 using the subscribe-stats primitive. If the flow identifier is set to 0, the controller 22 receives nodal statistics about buffer length and packet loss rate.
  • Subscribe-Peek(flow identifier, offset, length) implementements frame peeking according to an embodiment of the present invention, allowing controller 22 to subscribe to receive (peek at) a portion of requested packets. Subscribe-peek does not cancel subscription to statistics. Offset—is the offset where peeking is to begin within the payload of the packet. Length—is the number of bytes to peek at, with 0 indicating all.
  • the Publish interface includes at least one primitive:
  • a publish message (or published peek event) is issued by forwarding engine 24 to controller 22 .
  • the published peek event contains a flow identifier identifying the flow for the packet, a packet reference identifying the packet and a copy of the data from the packet (that was earlier requested or subscribed to by controller 22 ).
  • the packet reference may be used by controller 22 to manipulate the packet through facility access interface 30 , as described in greater detail below.
  • a controller can subscribe to particular packet data for one or more different flows. Therefore, where a single controller 22 is used for multiple flows, a flow identifier is necessary in each publish message.
  • the publish primitive can be implemented in a variety of ways. For example, there may be several controllers 22 within system 20 , wherein each controller 22 only monitors a single flow. In such a case, identification of the flow can be provided implicitly from forwarding engine 24 (rather than explicitly) because there is only one controller 22 for each flow.
  • Facility access interface 30 provides controller 22 with access to the resources of forwarding engine 24 .
  • Facility access interface 30 is used by controller 22 to manipulate data flow.
  • Iblock(subset of input ports) blocks input on the subset of ports specified. Arriving packets on these ports are discarded. Blocking is removed on a port by excluding that port from the subset of a subsequent block.
  • Oblock(subset of output ports) blocks output on the subset of ports specified. Blocking is removed on a port by excluding that port from the subset of a subsequent block.
  • Delay( ⁇ -time, subset of output ports) schedules arriving packets for forwarding at least ⁇ -time units after arrival, on the subset of ports specified.
  • Release-at(time, subset of output ports) schedules packet for departure on the subset of output ports specified.
  • Block(subset of output ports) blocks packet on the subset of output ports specified.
  • Controller 22 can control packets via facility access interface 30 . Controller 22 can control flows or individual packets. At the flow level, controller 22 can block packets on input ports or on output ports, or can schedule arriving packets of a flow for a delayed output. Controller 22 can similarly block or delay the output of individual packets using a packet reference to identify each packet to be blocked or delayed. On connection oriented hardware (e.g., an ATM switch), these primitives would manipulate virtual circuit (VC) tables, whereas in a connectionless router (e.g., an IP router), an output port is blocked. Therefore, controller 22 can control the fate of each packet entering forwarding engine 24 without being fully in the data path.
  • connection oriented hardware e.g., an ATM switch
  • these primitives would manipulate virtual circuit (VC) tables
  • a connectionless router e.g., an IP router
  • Controller 22 can discard an individual packet, reschedule (delay) the transmission of a packet, or can do nothing and allow the packet to be forwarded normally by forwarding engine 14 .
  • this set of primitives supports flow level connectivity management without being fully in the data-path.
  • FIG. 3 is a flow chart illustrating the operation of system 20 according to an embodiment of the present invention.
  • controller 22 requests (or subscribes) to receive a pre-determined portion of packets corresponding to a particular flow.
  • Controller 22 can subscribe to receive (peek-at) a portion of the incoming packets of an identified flow using the Subscribe-Peek primitive or command, or other technique.
  • the flow identifier argument of the Subscribe-Peek command can be used to identify the flow (the group of packets of interest).
  • the flow identifier argument can identify a flow using a variety of different bit sequences in each packet (e.g., IP packets directed to a specified IP address, packets having a specific IPv6 “flow label”, a flow identification provided as a predetermined IP option, an ATM VPI/VCI, header or other information identifying or classifying the data in the payload).
  • the offset argument identifies the number of bytes or bits offset from the beginning of the packet where the peeking shall begin, and the length argument identifies the number of bytes to be provided to the controller 22 .
  • step 52 packets are received at forwarding engine 24 and stored in buffer 26 .
  • forwarding engine 24 identifies the requested or subscribed packets. In other words, forwarding engine 24 identifies received packets that are part of the flow to which the peek-subscription applies. This can be performed by analyzing each packet received by forwarding engine 24 . For example, forwarding engine 24 can identify the requested packets by comparing a predetermined sequence of bits (e.g., the IP address for the destination, or the IPv6 flow label, or header information) in each packet with the flow identifier provided from controller 22 . A match indicates that the packet is part of the flow which has been subscribed to or requested by controller 22 .
  • a predetermined sequence of bits e.g., the IP address for the destination, or the IPv6 flow label, or header information
  • a copy of the subscribed (requested) portion of each identified packet is provided with a packet reference from forwarding engine 24 to controller 22 .
  • This can be done using the publish primitive, described above, or using another technique.
  • the forwarding engine 24 can interrupt the controller when a packet of the subscribed flow is received (and the requested portion is available).
  • the controller 22 can periodically poll the forwarding engine 24 and request to receive any portions of packets the controller 22 previously subscribed.
  • forwarding engine 24 uses the offset and length arguments (provided in the Peek-Subscribe message or primitive from controller 22 ) to identify the beginning and length of the portion of the packet of interest.
  • the offset can be provided relative to the start of a packet or frame or relative to the start of a header (for some types of packets these two are the same).
  • This portion of the packet is then copied and placed in a Publish message that also includes the flow identifier (optional) and a packet reference.
  • the flow identifier is the same as that provided by controller 22 (or a reference to that flow identifier).
  • the packet reference is assigned by forwarding engine 24 and may indicate, for example, a packet number (e.g., packet number 17).
  • the Publish message is then sent from forwarding engine 24 to controller 22 . Therefore, it can be seen that, rather than routing the entire packet from the buffer 26 to controller 22 , only the selected (subscribed) portion of the received packet and a packet reference (identifying the packet) is provided to controller 22 . This minimizes the amount of data passing through controller 22 and avoids degradation of the packet forwarding process.
  • controller 22 analyzes the received portion of the packet to determine how the packet should be controlled (and even if the packet should be controlled at all). For example, controller 22 can analyze the portion of the packet and determine that the packet stored in buffer 26 is a low priority packet and should be discarded due to high congestion.
  • controller 22 determines that the packet should be controlled controller 22 issues a command with a packet reference identifying the packet to forwarding engine 24 to indicate how the packet should be controlled or manipulated. This can be done, for example, via facility access interface 30 . For example, if controller 22 determines that, based on the received portion of the packet, the packet is a low priority and should be discarded, the discard primitive can be used by controller 22 to instruct forwarding engine 24 to discard the packet. Controller 22 can issue many other types of messages or commands to forwarding engine 24 to control the packet stored in buffer 26 .
  • the frame peeking technique of the present invention can be applied to nodes (e.g., a router) in a network to improve forwarding performance.
  • the frame peeking technique of the present invention can also be applied to end-systems to improve efficiency in packet processing.
  • end-systems such as a user's personal computer or PC
  • end-systems include an interface card (e.g., Ethernet card with memory), a processor and main memory.
  • the interface card issues an interrupt to the processor.
  • the packet is then copied into kernel memory.
  • the processor analyzes the packet stored in kernel memory to determine its destination (user application). There may be one or more user applications currently running on the end-system that are receiving packets. After analyzing the packet, the packet is then copied again into into user memory for the user application.
  • the end-system must make two copies of the packet in main memory, causing additional delay.
  • FIG. 4 illustrates a computer system operating as an end-system.
  • Computer system 70 includes an interface card 72 , a processor 74 and memory 76 .
  • Processor 74 issues a subscribe-peek command to interface card 72 identifying the portion of the specific packets that processor 74 would like to receive (peek), as described above.
  • the packets are received and identified by the interface card 72 as part of the flow that is subscribed or requested by the processor 74 .
  • the designated portion (e.g, indicated by offset and length arguments) of the packet is copied by interface card 72 and forwarded to processor 74 along with a packet reference.
  • the portion of the packet (and possibly the packet reference) is then stored by processor 74 in kernel space of memory 76 .
  • Processor 74 analyzes the stored portion of the packet to determine where the (complete) packet should be stored in memory 76 (e.g., in which user space the packet should be stored).
  • Processor 74 then issues a store command with the packet reference to the interface card 72 to request a copy of the complete packet.
  • Processor 74 receives and then identifies the packet based on the packet reference and then stores the packet in the identified user space in memory. This avoids making two full copies of the packet in main memory, reducing processing time.
  • system 20 includes a controller 22 for controlling the system and a forwarding engine 24 for forwarding packets.
  • Interface 28 interconnects controller 22 and forwarding engine 24 .
  • Interface 28 includes a subscribe/publish interface 32 and a facility access interface 30 .
  • the subscribe/publish interface 32 allows controller 22 to request (subscribe) to receive a selected portion of packets input to forwarding engine 24 .
  • the facility access interface 30 allows controller 22 to control packets stored in buffer 26 of forwarding engine 24 .
  • controller 22 After controller 22 has subscribed to receive a portion of a packet, a copy of the requested portion of the received packet is provided to controller 22 . Controller 22 then analyzes the received portion of the packet to determine how the packet should be controlled. Controller 22 may then use the facility access interface 30 to control the packet. Unlike previous techniques, the entire packet or flow is not routed to controller 22 for analysis. In this manner, controller 22 can operate on the data without being fully in the data path. Accordingly, network control can be improved by operating on the data without degrading forwarding performance of the system. Moreover, in an ATM network, reassembly and segmentation are unnecessary because only a small portion of an ATM cell or application level frame is provided from forwarding engine 24 to controller 22 , rather than the entire ATM cell or application level frame.
  • interface 28 provides merely one example of how controller 22 and forwarding engine 24 can communicate to perform frame-peeking. There are many other ways to provide communication between controller 22 and forwarding engine 24 .

Abstract

A system for frame peeking at a node of a data network includes a controller, a forwarding engine and an interface. The interface includes a subscribe/publish interface for allowing the controller to request (or subscribe) to receive a selected portion of a flow (a group of packets), and a facility access interface for allowing the controller to control each frame or packet. By providing only a selected portion of received packets to the controller rather than the entire packet, the controller can operate on the incoming data without significantly degrading the forwarding performance of the system. Frame peeking can also be used in an end-system to minimize packet processing.

Description

    BACKGROUND OF THE INVENTION
  • The present invention relates to data networks, and more particularly, to a method and apparatus for peeking at a portion of a frame or packet rather than the full packet. [0001]
  • Computer networks can be managed using a variety of techniques. Increasingly, it is becoming more desirable to actively manage computer networks, for example, to provide consistent service quality. However, in order to actively manage computer networks in an effective manner, systems must typically operate in the data path. In other words, systems must operate on the data packets to be forwarded. However, by operating on the packets to be forwarded, added delay is introduced in the packet forwarding process which can exacerbate network congestion. [0002]
  • FIG. 1 illustrates a [0003] system 10 located at a node of a data network. FIG. 1 illustrates an example of a system that operates in the data path. System 10 includes a controller 12 for controlling the operation of system 10, a forwarding engine 14 for forwarding packets received on line 18. Packets are output (forwarded) via line 20. Controller 12 and forwarding engine 14 can communicate via interface lines 16. Congestion is a common problem in data networks. Congestion occurs when there is more data to be carried over the network than the network can support.
  • There are several congestion control techniques that can be used to decrease network congestion. One common technique used to decrease network congestion is to discard packets. Because some packets have a higher priority or a greater importance than other packets, it may desirable to selectively discard certain packets over others. However, each of the packets must be analyzed to determine whether the packet should be discarded or forwarded. [0004]
  • Referring to the system of FIG. 1, a group of packets are input to forwarding [0005] engine 14 via line 18. The received packets are stored in a buffer 15 and then routed via path 21 to controller 12. At the application level, the packets can be analyzed by controller 12 to determine which packets should be discarded and which packets should be forwarded. The packets can be analyzed based upon application semantics. The packets are then each copied back to buffer 15 of forwarding engine 14 for forwarding on line 20.
  • While this selective discard technique can decrease congestion and loss in utility due to congestion, this technique can also increase the delay in the forwarding process. The critical forwarding path of the network is the data path which is input on [0006] line 18 and is output on line 20. A significant delay is introduced by moving each of the packets along path 21 from buffer 15 of forwarding engine 14 to the controller 12 and then back to buffer 15. This delay is very significant because the interface between controller 12 and forwarding engine 14 has a very limited bandwidth.
  • Moreover, in an Asynchronous Transfer Mode (ATM) network, [0007] controller 12 operates on application level frames, which can include many ATM cells. Therefore, in an ATM network, the ATM cells received on line 18 must typically be reassembled into application level frames. After the cells are reassembled into an application level frame, controller 12 can then analyze the data to determine whether the cells should be discarded or forwarded. The application level frame must then be segmented back into the separate ATM cells before moving the individual cells back to buffer 15 in forwarding engine 14. This reassembly and segmentation process further slows the forwarding task that must be performed by system 10.
  • [0008] System 10 of FIG. 1 can improve reception quality during congestion by operating in the data path to selectively discard less important packets and forward more important packets. However, this is done at the price of a significant delay incurred through the data path 21 that is routed through controller 12. There are many additional examples in which a data network can be actively managed by operating in the data path. As described above, fully operating in the data path can improve network control, but also significantly degrades forwarding performance of the system. Therefore, there is a need for a technique to operate on data in the data path without significantly degrading the forwarding performance of the system.
  • SUMMARY OF THE INVENTION
  • The present invention includes a method and apparatus for frame peeking that enables a controller to operate on data in the data path without significantly degrading the forwarding performance of the system. According to an embodiment of the present invention, the system includes a controller, a forwarding engine for forwarding packets, and an interface interconnecting the controller and the forwarding engine. The interface includes a subscribe/publish interface and a facility access interface. The subscribe interface allows the controller to request (subscribe) to receive a selected portion of a packet or packets of a flow. The publish interface allows the forwarding engine to publish the requested data to the controller. The facility access interface allows the controller to control packets stored in a buffer of the forwarding engine. [0009]
  • After the controller has subscribed to receive a portion of a packet, a copy of the portion of the received packet is provided to the controller. The controller may then analyze the received portion of the packet to determine how the packet should be controlled. The controller can then use the facility access interface to control the packet (e.g., discard or block the packet, reschedule the forwarding of the packet, allow the packet to be forwarded normally). Therefore, because only a selected portion of a packet is provided to the controller, the controller can operate on the data without significantly degrading the forwarding performance of the system. [0010]
  • In addition, frame peeking can be used at an end-system to reduce the number of copies that are made of a packet in memory and improve packet processing efficiency. In traditional layered data retrieval, two copies of a received packet must be made in memory. The end-system must first copy the packet into kernel memory and then determine which portion of user or application memory should receive the packet. The packet is then copy from kernel space into the specific user memory space. Thus, two copies must be made, thereby, creating additional packet processing and delay. According to an embodiment of the present invention, the end-system includes an interface card for receiving packets, a processor or controller and memory. The controller requests or subscribes to receive a portion of packets received at the interface card. Packets are received at the interface card and a portion of requested packets are provided to the controller. The controller identifies a location to store the packet in memory based on the portion of the packet. The packet is then stored in memory at the identified location. Thus, according to an embodiment of the present invention, only one copy of the packet is made in memory.[0011]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates a system located at a node of a data network. [0012]
  • FIG. 2 illustrates a system located at a node of a data network according to an embodiment of the present invention. [0013]
  • FIG. 3 is a flow chart illustrating the operation of the system of FIG. 2 according to an embodiment of the present invention. [0014]
  • FIG. 4 illustrates a computer system operating as an end-system according to an embodiment of the present invention.[0015]
  • DETAILED DESCRIPTION
  • Referring to the drawings in detail, wherein like numerals indicate like elements, FIG. 2 illustrates a system at a node of a data network according to an embodiment of the present invention. [0016] System 20 in FIG. 2 includes a controller 22 for controlling operation of system 20, and a forwarding engine 24 for forwarding packets input on line 34 to other nodes via output line 36. System 20 can be implemented in hardware and/or software. The packets can include Internet Protocol (IP) packets, Asynchronous Transfer Mode (ATM) application level frames (such as ATM Adaptation Layer frames) or the like. Control signals are input to controller 22 via line 38 and may be provided on a separate signaling connection, but may also be in-band. Forwarding engine 24 also includes a buffer 26 for storing packets input via line 34.
  • An [0017] interface 28 couples controller 22 to forwarding engine 24. Interface 28 includes a subscribe/publish interface 32 and a facility access interface 30. The subscribe/publish interface 32 allows controller 22 to subscribe to request a predetermined portion of specific packets from forwarding engine 24, and allows forwarding engine 24 to publish or send the requested portion of the packet to controller 22. Facility access interface 30 allows controller 22 to control the forwarding of the received packets. Interfaces 30 and 32 are described in greater detail below. A data network includes many nodes, where each node can include a system 20.
  • [0018] System 20, according to an embodiment of the present invention, provides a mechanism for frame-peeking that enables controller 22 to peek at a portion of a requested packet. This frame-peeking mechanism enables controller 22 to only peek at parts of each requested packet as opposed to having to be fully in the data path. As a result, the frame-peeking mechanism of the present invention improves forwarding efficiency by reducing the amount of data routed through controller 22 (e.g., limiting bandwidth needs of controller 22) and by avoiding removing or copying the packet from the buffer 26 of forwarding engine 24. Moreover, an ATM switch may support frame-peeking without performing reassembly and segmentation of the full application level frame. In an IP router, packet-peeking limits the bandwidth from a kernel router located in the forwarding engine 24 to the flow controller at controller 22.
  • One of the benefits of [0019] interface 28 is that controller 22 may dynamically change the volume of data that goes through it. For example, during congestion, controller 22 may perform a selective discard of selected packets. Initially, controller 22 may subscribe only to the flow statistics until buffer 26 fills up to a predetermined level of fullness (indicating the onset of congestion) at which time controller 22 starts peeking at the application level frames (e.g., subscribes to a portion of the frames or packets). By peeking at the incoming packets, controller 22 can then selectively discard the less important packets using facility access interface 30. Because only a small portion of the data is copied to the controller 22, the volume of data going through controller 22 is minimal. In this manner, controller 22 can operate on the data without being fully in the data path.
  • According to an embodiment of the present invention, [0020] controller 22 can request (or subscribe) to peek into a particular group of packets of interest. Each group of packets is defined as a flow. According to an embodiment of the present invention, a flow is one or more packets satisfying an equivalence relation. Typically, a flow can be identified by a common sequence of bits (i.e., a common bit pattern) in each packet. A wide variety of bit sequences can be used for flow identification. For example, in a connection oriented network, such as an ATM network, a flow can be, for example, the group of ATM cells or application level frames corresponding to the ATM connection. ATM, for example, allows for the flow (or connection) to be identified by information in the application level frame, such as part of an RTP frame. In a connectionless network, such as IP, a flow can be a group of packets or datagrams that are associated with each other. For example, a flow can include all IP packets from a specific IP address, or directed to a specific IP address, or having a predetermined prefix in the IP destination address (e.g., all packets directed to England). IP version 6 (IPv6) even provides a “flow label” for identifying flows of packets or IP datagrams. In IP, a predetermined IP option can be used in a group of packets to identify a flow. A flow could also include, for example, packets providing data of a particular type, such as MPEG-4 video packets. In such case, the type of data (e.g., MPEG-4 video) carried in the packet payload may be identified in the application level header in the payload.
  • The subscribe/publish [0021] interface 32 allows controllers to subscribe to (request) events and information to be published (on request) by forwarding engine 24. According to an embodiment of the present invention, subscribe/publish interface 32 includes three primitives (or commands) that allows controller 22 to subscribe (or request) to receive packet information, and a primitive or command that allows the forwarding engine 24 to publish or provide the requested information to controller 22.
  • The Subscribe primitives include: [0022]
  • Subscribe-Stats(flow identifier)—requests a subscription to simple flow statistics, such as number of packets and bytes transmitted since last invocation, or the number of bytes (or packets) currently in the [0023] buffer 26 using the subscribe-stats primitive. If the flow identifier is set to 0, the controller 22 receives nodal statistics about buffer length and packet loss rate.
  • Subscribe-Peek(flow identifier, offset, length)—implements frame peeking according to an embodiment of the present invention, allowing [0024] controller 22 to subscribe to receive (peek at) a portion of requested packets. Subscribe-peek does not cancel subscription to statistics. Offset—is the offset where peeking is to begin within the payload of the packet. Length—is the number of bytes to peek at, with 0 indicating all.
  • Subscribe-Ignore(flow identifier)—cancels all subscriptions. [0025]
  • The Publish interface includes at least one primitive: [0026]
  • Publish(flow identifier, packet reference, requested data)—this is used by the forwarding engine [0027] 24 to publish the peek event, including the data subscribed or requested by the controller 22. A publish message (or published peek event) is issued by forwarding engine 24 to controller 22. The published peek event contains a flow identifier identifying the flow for the packet, a packet reference identifying the packet and a copy of the data from the packet (that was earlier requested or subscribed to by controller 22). The packet reference may be used by controller 22 to manipulate the packet through facility access interface 30, as described in greater detail below.
  • A controller can subscribe to particular packet data for one or more different flows. Therefore, where a [0028] single controller 22 is used for multiple flows, a flow identifier is necessary in each publish message. However, as with all of the primitives described herein, the publish primitive can be implemented in a variety of ways. For example, there may be several controllers 22 within system 20, wherein each controller 22 only monitors a single flow. In such a case, identification of the flow can be provided implicitly from forwarding engine 24 (rather than explicitly) because there is only one controller 22 for each flow.
  • [0029] Facility access interface 30 provides controller 22 with access to the resources of forwarding engine 24. Facility access interface 30 is used by controller 22 to manipulate data flow. Some of the facility access primitives according to an embodiment of the present invention are listed below.
  • The Facility Access Interface [0030] 30:
  • Actions on flows (implicit argument: flow identifier): [0031]
  • I) Forwarding [0032]
  • Iblock(subset of input ports): blocks input on the subset of ports specified. Arriving packets on these ports are discarded. Blocking is removed on a port by excluding that port from the subset of a subsequent block. [0033]
  • Oblock(subset of output ports): blocks output on the subset of ports specified. Blocking is removed on a port by excluding that port from the subset of a subsequent block. [0034]
  • Delay(Δ-time, subset of output ports): schedules arriving packets for forwarding at least Δ-time units after arrival, on the subset of ports specified. [0035]
  • Actions on individual packets (implicit argument: packet reference): [0036]
  • Release-at(time, subset of output ports): schedules packet for departure on the subset of output ports specified. [0037]
  • Block(subset of output ports): blocks packet on the subset of output ports specified. [0038]
  • Discard(: discards the packet, and removes it from the flow buffer. [0039]
  • [0040] Controller 22 can control packets via facility access interface 30. Controller 22 can control flows or individual packets. At the flow level, controller 22 can block packets on input ports or on output ports, or can schedule arriving packets of a flow for a delayed output. Controller 22 can similarly block or delay the output of individual packets using a packet reference to identify each packet to be blocked or delayed. On connection oriented hardware (e.g., an ATM switch), these primitives would manipulate virtual circuit (VC) tables, whereas in a connectionless router (e.g., an IP router), an output port is blocked. Therefore, controller 22 can control the fate of each packet entering forwarding engine 24 without being fully in the data path. Controller 22 can discard an individual packet, reschedule (delay) the transmission of a packet, or can do nothing and allow the packet to be forwarded normally by forwarding engine 14. In contrast to an in-data-path solution, this set of primitives supports flow level connectivity management without being fully in the data-path.
  • The operation of [0041] System 20 will now be described with reference to FIG. 3. FIG. 3 is a flow chart illustrating the operation of system 20 according to an embodiment of the present invention.
  • At [0042] Step 50, controller 22 requests (or subscribes) to receive a pre-determined portion of packets corresponding to a particular flow. Controller 22 can subscribe to receive (peek-at) a portion of the incoming packets of an identified flow using the Subscribe-Peek primitive or command, or other technique. The flow identifier argument of the Subscribe-Peek command can be used to identify the flow (the group of packets of interest). The flow identifier argument can identify a flow using a variety of different bit sequences in each packet (e.g., IP packets directed to a specified IP address, packets having a specific IPv6 “flow label”, a flow identification provided as a predetermined IP option, an ATM VPI/VCI, header or other information identifying or classifying the data in the payload). The offset argument identifies the number of bytes or bits offset from the beginning of the packet where the peeking shall begin, and the length argument identifies the number of bytes to be provided to the controller 22.
  • At [0043] step 52, packets are received at forwarding engine 24 and stored in buffer 26.
  • At [0044] step 53, forwarding engine 24 identifies the requested or subscribed packets. In other words, forwarding engine 24 identifies received packets that are part of the flow to which the peek-subscription applies. This can be performed by analyzing each packet received by forwarding engine 24. For example, forwarding engine 24 can identify the requested packets by comparing a predetermined sequence of bits (e.g., the IP address for the destination, or the IPv6 flow label, or header information) in each packet with the flow identifier provided from controller 22. A match indicates that the packet is part of the flow which has been subscribed to or requested by controller 22.
  • At [0045] step 54, a copy of the subscribed (requested) portion of each identified packet is provided with a packet reference from forwarding engine 24 to controller 22. This can be done using the publish primitive, described above, or using another technique. For example, the forwarding engine 24 can interrupt the controller when a packet of the subscribed flow is received (and the requested portion is available). Alternatively, the controller 22 can periodically poll the forwarding engine 24 and request to receive any portions of packets the controller 22 previously subscribed.
  • For [0046] step 54, according to an embodiment of the present invention, forwarding engine 24 uses the offset and length arguments (provided in the Peek-Subscribe message or primitive from controller 22) to identify the beginning and length of the portion of the packet of interest. The offset can be provided relative to the start of a packet or frame or relative to the start of a header (for some types of packets these two are the same). This portion of the packet is then copied and placed in a Publish message that also includes the flow identifier (optional) and a packet reference. The flow identifier is the same as that provided by controller 22 (or a reference to that flow identifier). The packet reference is assigned by forwarding engine 24 and may indicate, for example, a packet number (e.g., packet number 17). The Publish message is then sent from forwarding engine 24 to controller 22. Therefore, it can be seen that, rather than routing the entire packet from the buffer 26 to controller 22, only the selected (subscribed) portion of the received packet and a packet reference (identifying the packet) is provided to controller 22. This minimizes the amount of data passing through controller 22 and avoids degradation of the packet forwarding process.
  • At [0047] Step 56, controller 22 analyzes the received portion of the packet to determine how the packet should be controlled (and even if the packet should be controlled at all). For example, controller 22 can analyze the portion of the packet and determine that the packet stored in buffer 26 is a low priority packet and should be discarded due to high congestion.
  • At [0048] Step 58, if controller 22 determines that the packet should be controlled controller 22 issues a command with a packet reference identifying the packet to forwarding engine 24 to indicate how the packet should be controlled or manipulated. This can be done, for example, via facility access interface 30. For example, if controller 22 determines that, based on the received portion of the packet, the packet is a low priority and should be discarded, the discard primitive can be used by controller 22 to instruct forwarding engine 24 to discard the packet. Controller 22 can issue many other types of messages or commands to forwarding engine 24 to control the packet stored in buffer 26.
  • The frame peeking technique of the present invention can be applied to nodes (e.g., a router) in a network to improve forwarding performance. In addition, the frame peeking technique of the present invention can also be applied to end-systems to improve efficiency in packet processing. Currently, end-systems (such as a user's personal computer or PC) include an interface card (e.g., Ethernet card with memory), a processor and main memory. When a packet is received and stored by the interface card, the interface card issues an interrupt to the processor. The packet is then copied into kernel memory. The processor then analyzes the packet stored in kernel memory to determine its destination (user application). There may be one or more user applications currently running on the end-system that are receiving packets. After analyzing the packet, the packet is then copied again into into user memory for the user application. Thus, the end-system must make two copies of the packet in main memory, causing additional delay. [0049]
  • According to an embodiment of the present invention, frame peeking can be used at an end-system to avoid making two full copies of the packet in memory. FIG. 4 illustrates a computer system operating as an end-system. [0050] Computer system 70 includes an interface card 72, a processor 74 and memory 76. Processor 74 issues a subscribe-peek command to interface card 72 identifying the portion of the specific packets that processor 74 would like to receive (peek), as described above. The packets are received and identified by the interface card 72 as part of the flow that is subscribed or requested by the processor 74. The designated portion (e.g, indicated by offset and length arguments) of the packet is copied by interface card 72 and forwarded to processor 74 along with a packet reference. The portion of the packet (and possibly the packet reference) is then stored by processor 74 in kernel space of memory 76. Processor 74 then analyzes the stored portion of the packet to determine where the (complete) packet should be stored in memory 76 (e.g., in which user space the packet should be stored). Processor 74 then issues a store command with the packet reference to the interface card 72 to request a copy of the complete packet. Processor 74 receives and then identifies the packet based on the packet reference and then stores the packet in the identified user space in memory. This avoids making two full copies of the packet in main memory, reducing processing time.
  • The present invention includes a method and apparatus for frame peeking that operates on data in the data path without significantly degrading the forwarding performance of the system. According to an embodiment of the present invention, [0051] system 20 includes a controller 22 for controlling the system and a forwarding engine 24 for forwarding packets. Interface 28 interconnects controller 22 and forwarding engine 24. Interface 28 includes a subscribe/publish interface 32 and a facility access interface 30. The subscribe/publish interface 32 allows controller 22 to request (subscribe) to receive a selected portion of packets input to forwarding engine 24. The facility access interface 30 allows controller 22 to control packets stored in buffer 26 of forwarding engine 24.
  • After [0052] controller 22 has subscribed to receive a portion of a packet, a copy of the requested portion of the received packet is provided to controller 22. Controller 22 then analyzes the received portion of the packet to determine how the packet should be controlled. Controller 22 may then use the facility access interface 30 to control the packet. Unlike previous techniques, the entire packet or flow is not routed to controller 22 for analysis. In this manner, controller 22 can operate on the data without being fully in the data path. Accordingly, network control can be improved by operating on the data without degrading forwarding performance of the system. Moreover, in an ATM network, reassembly and segmentation are unnecessary because only a small portion of an ATM cell or application level frame is provided from forwarding engine 24 to controller 22, rather than the entire ATM cell or application level frame.
  • Several embodiments of the present invention are specifically illustrated and/or described herein. However, it will be appreciated that modifications and variations of the present invention are covered by the above teachings and within the purview of the appended claims without departing from the spirit and intended scope of the invention. For example, [0053] interface 28 provides merely one example of how controller 22 and forwarding engine 24 can communicate to perform frame-peeking. There are many other ways to provide communication between controller 22 and forwarding engine 24.

Claims (27)

What is claimed is:
1. A method of peeking into a portion of a packet received at a system in a data network, the system including a receiving section and a control section, said method comprising the steps of:
receiving a plurality of packets at the receiving section of the system;
selecting one of said received packets;
copying a portion of the selected packet;
providing the copied portion of the selected packet to the control section of the system.
2. The method of claim 1 and further comprising the steps of:
analyzing the requested portion of the packet; and
controlling forwarding of the packet based on said step of analyzing.
3. The method of claim 1 and further comprising the step of the control section issuing a request message to the receiving section requesting to receive a portion of a packet, the request message identifying the packet and the portion requested.
4. The method of claim 3 wherein said step of the control section issuing a request comprises the step of the control section issuing a request message to the receiving section identifying the packet and a length and offset.
5. The method of claim 3 wherein said step of the control section issuing a request message comprises the step of the control section issuing a request message to the receiving section that requests to receive a portion of each of a group of packets received at the receiving section, the request message identifying the group of packets and the portion of each packet.
6. The method of claim 5 wherein said request message identifies the group of packets using a common sequence of bits in each packet.
7. The method of claim 5 wherein said group of packets each satisfies an equivalence relation, said group of packets comprising a flow.
8. The method of claim 6 wherein said common sequence of bits comprises a flow identifier for identifying a flow, said flow comprising the group of packets.
9. The method of claim 6 wherein said common sequence of bits comprises an IPv6 flow label.
10. The method of claim 6 wherein said common sequence of bits comprises at least a portion of an address.
11. The method of claim 6 wherein said common sequence of bits comprises an IP option.
12. The method of claim 6 wherein said common sequence of bits comprises a portion of a packet header.
13. The method of claim 1 wherein said packet comprises an Internet Protocol (IP) packet.
14. The method of claim 1 wherein said packet comprises an ATM frame.
15. The method of claim 1 wherein said packet comprises a plurality of ATM cells.
16. The method of claim 3 wherein said control section comprises a controller and said receiving section comprises a forwarding engine.
17. The method of claim 1 wherein said step of providing comprises the step of providing the copied portion of the selected packet and a packet identifier to the control section of the system.
18. The method of claim 1 wherein said step of providing comprises the step of providing the copied portion of the selected packet and a packet identifier to the control section of the system for controlling or manipulating the packet.
19. The method of claim 1 and further comprising the steps of:
analyzing the requested portion of the packet; and
identifying a location in memory to store the packet.
20. The method of claim 19 and further comprising the steps of:
receiving the packet;
storing the packet at the identified location in memory.
21. A method of peeking into a portion of one or more packets of a flow for controlling the forwarding of the packets, the method comprising the steps of:
sending a request message from a controller to a forwarding engine to request a portion of each packet of a flow received at the forwarding engine, the request message identifying the flow and the portion of each packet;
receiving at the forwarding engine one of the packets corresponding to the flow;
storing the received packet;
identifying that the received packet corresponds to the flow;
sending a copy of the portion of the identified packet from the forwarding engine to the controller for controlling forwarding of the packet.
22. A method of peeking into a portion of one or more packets of a flow for controlling the storing of the packets, the method comprising the steps of:
sending a request message from a controller to an interface to request a portion of each packet of a flow received by the interface, the request message identifying the flow and the portion of each packet;
receiving at the interface one of the packets corresponding to the flow;
storing the received packet in the interface;
identifying that the received packet corresponds to the flow;
sending a copy of the portion of the identified packet from the interface to the controller for controlling storing of the identified packet.
23. The method of claim 22 and further comprising the steps of:
identifying a location in memory to store the identified packet based on said portion of the identified packet;
sending the identified packet to the controller; and
storing the identified packet at the identified location in memory.
24. The method of claim 22 wherein said controller and interface are located at an end-system.
25. An apparatus at a node for peeking into a portion of a frame comprising:
a controller;
a forwarding engine receiving a plurality of packets as an input and forwarding the packets under control of the controller;
an interface coupling the controller and the forwarding engine, the interface allowing the controller to request a copy from the forwarding engine of a portion of a packet received by the forwarding engine and allowing the forwarding engine to send the portion of the requested packet from the forwarding engine to the controller.
26. The apparatus of claim 25 wherein said interface further allows the controller to control the forwarding of the requested packet based on the received portion of the requested packet.
27. The apparatus of claim 25 wherein said controller comprises a plurality of controllers, each said controller for controlling the forwarding of a different group of packets.
US09/058,561 1998-04-13 1998-04-13 Method and apparatus for frame peeking Expired - Lifetime US6392996B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/058,561 US6392996B1 (en) 1998-04-13 1998-04-13 Method and apparatus for frame peeking

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/058,561 US6392996B1 (en) 1998-04-13 1998-04-13 Method and apparatus for frame peeking

Publications (2)

Publication Number Publication Date
US20020057654A1 true US20020057654A1 (en) 2002-05-16
US6392996B1 US6392996B1 (en) 2002-05-21

Family

ID=22017589

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/058,561 Expired - Lifetime US6392996B1 (en) 1998-04-13 1998-04-13 Method and apparatus for frame peeking

Country Status (1)

Country Link
US (1) US6392996B1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030043802A1 (en) * 2001-08-31 2003-03-06 Takeki Yazaki Packet transferring method and apparatus that employs the same
US6940854B1 (en) * 2001-03-23 2005-09-06 Advanced Micro Devices, Inc. Systems and methods for determining priority based on previous priority determinations
CN100334860C (en) * 2004-11-01 2007-08-29 杭州华为三康技术有限公司 Message intercommunication method with improved forwarding performance of equipment
US20110264802A1 (en) * 2009-02-13 2011-10-27 Alcatel-Lucent Optimized mirror for p2p identification
JP2013143641A (en) * 2012-01-10 2013-07-22 Ricoh Co Ltd Network communication device

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6975631B1 (en) * 1998-06-19 2005-12-13 Juniper Networks, Inc. Network packet forwarding lookup with a reduced number of memory accesses
US6760775B1 (en) * 1999-03-05 2004-07-06 At&T Corp. System, method and apparatus for network service load and reliability management
US7532613B1 (en) * 1999-10-14 2009-05-12 Nortel Networks Limited Establishing a communications session having a quality of service in a communications system
US7317721B1 (en) 2002-04-12 2008-01-08 Juniper Networks, Inc. Systems and methods for memory utilization during packet forwarding
US7420929B1 (en) 2002-07-02 2008-09-02 Juniper Networks, Inc. Adaptive network flow analysis
US7313100B1 (en) 2002-08-26 2007-12-25 Juniper Networks, Inc. Network device having accounting service card
US7254114B1 (en) * 2002-08-26 2007-08-07 Juniper Networks, Inc. Network router having integrated flow accounting and packet interception
US7251215B1 (en) * 2002-08-26 2007-07-31 Juniper Networks, Inc. Adaptive network router
US9032095B1 (en) 2004-01-06 2015-05-12 Juniper Networks, Inc. Routing device having multiple logical routers
US7546635B1 (en) 2004-08-11 2009-06-09 Juniper Networks, Inc. Stateful firewall protection for control plane traffic within a network device
US7849506B1 (en) 2004-10-12 2010-12-07 Avaya Inc. Switching device, method, and computer program for efficient intrusion detection
US7804787B2 (en) * 2005-07-08 2010-09-28 Fluke Corporation Methods and apparatus for analyzing and management of application traffic on networks
US7809827B1 (en) 2006-05-12 2010-10-05 Juniper Networks, Inc. Network device having service card for lawful intercept and monitoring of packet flows
US7633944B1 (en) 2006-05-12 2009-12-15 Juniper Networks, Inc. Managing timeouts for dynamic flow capture and monitoring of packet flows
US7853417B2 (en) * 2007-01-30 2010-12-14 Silver Spring Networks, Inc. Methods and system for utility network outage detection
US8339959B1 (en) 2008-05-20 2012-12-25 Juniper Networks, Inc. Streamlined packet forwarding using dynamic filters for routing and security in a shared forwarding plane
US8955107B2 (en) * 2008-09-12 2015-02-10 Juniper Networks, Inc. Hierarchical application of security services within a computer network
US8369345B1 (en) 2009-11-13 2013-02-05 Juniper Networks, Inc. Multi-router system having shared network interfaces
US8307030B1 (en) 2010-04-20 2012-11-06 Juniper Networks, Inc. Large-scale timer management
US8930455B2 (en) 2011-12-22 2015-01-06 Silver Spring Networks, Inc. Power outage detection system for smart grid using finite state machines
US9251535B1 (en) 2012-01-05 2016-02-02 Juniper Networks, Inc. Offload of data transfer statistics from a mobile access gateway

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4323471C2 (en) * 1993-07-14 1996-10-17 Atecom Advanced Telecommunicat Arrangement and method for processing data structures as they pass through a network node
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US6101187A (en) * 1996-12-20 2000-08-08 International Business Machines Corporation Method and system for multicasting cells in an ATM protocol adapter
US6032190A (en) * 1997-10-03 2000-02-29 Ascend Communications, Inc. System and method for processing data packets

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940854B1 (en) * 2001-03-23 2005-09-06 Advanced Micro Devices, Inc. Systems and methods for determining priority based on previous priority determinations
US20030043802A1 (en) * 2001-08-31 2003-03-06 Takeki Yazaki Packet transferring method and apparatus that employs the same
US7376085B2 (en) * 2001-08-31 2008-05-20 Hitachi, Ltd. Packet transferring method and apparatus that employs the same
CN100334860C (en) * 2004-11-01 2007-08-29 杭州华为三康技术有限公司 Message intercommunication method with improved forwarding performance of equipment
US20110264802A1 (en) * 2009-02-13 2011-10-27 Alcatel-Lucent Optimized mirror for p2p identification
JP2013143641A (en) * 2012-01-10 2013-07-22 Ricoh Co Ltd Network communication device

Also Published As

Publication number Publication date
US6392996B1 (en) 2002-05-21

Similar Documents

Publication Publication Date Title
US6392996B1 (en) Method and apparatus for frame peeking
US9244739B2 (en) Applications processing in a network apparatus
US7151744B2 (en) Multi-service queuing method and apparatus that provides exhaustive arbitration, load balancing, and support for rapid port failover
CA2358525C (en) Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
US8619793B2 (en) Dynamic assignment of traffic classes to a priority queue in a packet forwarding device
US7965708B2 (en) Method and apparatus for using meta-packets in a packet processing system
US20050147095A1 (en) IP multicast packet burst absorption and multithreaded replication architecture
US6219352B1 (en) Queue management with support for multicasts in an asynchronous transfer mode (ATM) switch
US7400638B2 (en) Apparatus and methods for managing packets in a broadband data stream
US7859999B1 (en) Memory load balancing for single stream multicast
CA2239133C (en) Multicast methodology and apparatus for backpressure - based switching fabric
US8743685B2 (en) Limiting transmission rate of data
US7286565B1 (en) Method and apparatus for packet reassembly in a communication switch
US20020150047A1 (en) System and method for scheduling transmission of asynchronous transfer mode cells
US7009973B2 (en) Switch using a segmented ring
US20040001434A1 (en) Ethernet packet flow control method and associated application apparatus
JPH10145387A (en) Packet buffer device
WO1999053718A1 (en) Control on demand in a data network

Legal Events

Date Code Title Description
AS Assignment

Owner name: AT&T CORP., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HJALMTYSSON, GISLI;REEL/FRAME:009260/0805

Effective date: 19980611

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12