Abstract:
A method of packet tracing includes triggering tracer devices. Each tracer device corresponds to an associated processing stage within a packet processor. The method also includes storing an indication after a packet completes an associated processing stage. The method may further include sending contents of a register to an application.

Description:
BACKGROUND  
       [0001]     Data networking devices typically include line interfaces, aggregators, queuing engines, a scheduler, packet memory, look-up engines, and a packet processor. The packet processor generally includes modules that perform various processing functions. For example, parsing a packet, classifying a packet, determining Internet Protocol (IP) routing, editing, address look-up, etc. At present, these packet processors operate at very high speeds and are densely pipelined with a throughput of about a packet per clock cycle. 
     
    
     DESCRIPTION OF THE DRAWINGS  
       [0002]      FIG. 1  is a block diagram of a packet tracing system.  
         [0003]      FIG. 2  is a flowchart of a process for packet tracing.  
         [0004]      FIG. 3  is a block diagram of a computer system on which the process of  FIG. 2  may be implemented.  
         [0005]      FIG. 4  is a diagram of a router that includes a packet tracing system.  
     
    
     DESCRIPTION  
       [0006]     Referring to  FIG. 1 , a packet tracing system  10  includes a trace trigger  14 , a packet processor  18  and an application  30 . Packet processor  18  includes tracer devices (e.g., tracer device  22   a , tracer device  22   b  and tracer device  22   c ) and processing stages (e.g., processing stage  26   a , processing stage  26   b  and processing stage  26   c ). The processing stages  26   a - 26   c  may perform various functions including but not limited to parsing a packet, performing address look-up, auto-learning, forwarding port determination, accessing control lists, editing, determining IP routing and the like.  
         [0007]     Trace trigger  14  compares incoming packets with a set of trace parameters, and, if appropriate, sends a trigger signal to the tracer devices  22   a - 22   c  to monitor the processing stages  26   a - 26   c ).  
         [0008]     In one example, a trace trigger includes a data control register (not shown), a data comparator (not shown) and a mask register (not shown) to specify the trace parameters. Determining if the trace parameters are in an incoming packet is performed using a masked comparison or masked matching on relevant portions of the incoming packet header for example.  
         [0009]     Application  30  may be any application that benefits from packet tracing, for example, a central processing unit, a device driver, a protocol stack, debugging software, a software program and the like. Application  30  provides the trace parameters to the trace trigger to indicate which types of packets to trace.  
         [0010]     Each tracer device  22   a - 22   c  includes a register (e.g., register  24   a , register  24   b  and register  24   c ). Each tracer device  22   a - 22   c  monitors packets within a corresponding processing stage (e.g., tracer device  22   a  monitors processing stage  26   a , tracer device  22   b  monitors processing stage  26   b , and tracer device  22   c  monitors processing stage  26   c ). Monitoring a packet within a processing stage includes determining what processing was done on the packet, how the processing was performed, how the packet was modified during processing and the like. In one example, trace devices  22   a - 22   c  are dedicated hardware that collect information when enabled by a trigger signal (e.g., a flag) from the trace trigger  14 .  
         [0011]     Trace trigger  14  determines if a packet will be traced as the packet passes through each of the processing stages  26   a - 26   c  within packet processor  18  and, if it does, sends the trigger signal to the tracer devices  22   a - 22   c  to monitor the packet&#39;s progress. In one example, the trigger signal is sent to each of the trace devices  22   a - 22   c  serially and follows the packet in parallel through each tracer device  22   a - 22   c  corresponding to the processing stage  26   a - 26   c  where the packet is being processed. In this configuration, each processing stage may be processing a different packet simultaneously and whether a packet is being traced at a particular stage is distinguishable by the tracing signal received at the respective tracer device.  
         [0012]     Each tracer device  22   a - 22   c  stores within its respective register  24   a - 24   c  an indication. The indication may denote one or more of the following: whether the packet has passed through its corresponding processing stage, what processing was performed, how the packet was modified and so forth.  
         [0013]     Using system  10 , application  30  can monitor designated packets as they pass through the various processing stages within the packet processor  18  by reading the registers  26   a - 26   c  within the tracer devices  22   a - 22   c.    
         [0014]     Referring to  FIG. 2 , process  50  is an exemplary process for tracing packets within packet processor  18 . Process  50  receives ( 51 ) trace trigger parameters. Application  30  sends the trace trigger parameters to trace trigger  14 . The trace trigger parameters are used to designate which packets will be traced through the packet processor  18 . Trace trigger parameters include characteristics of a packet that is designated to be traced. For example, trace trigger parameters may be specified to trace the packet with Internet Protocol (IP) source address 192.168.*.*. Other examples of a trace trigger parameters include IP destination address, packet length, packet protocol and so forth. The trace trigger parameters may be found anywhere within a packet, for example, in a header of the packet.  
         [0015]     Process  50  receives ( 53 ) a packet. For example, the packet is received by processor  18  and by trace trigger  14  from a network. Process determines ( 55 ) if the packet has the trace trigger parameters. For example, trace trigger  14  analyzes the packet and determines if the packet contains the trace trigger parameter, for example, an IP source address in the header. If the packet does contain the trace trigger parameters, process  50  sends ( 57 ) a trigger signal to the tracer devices  22   a - 22   c  indicating that the packet will be traced. For example, the trigger signal is sent to trace device  22   a . After processing stage  26   a  completes processing of the packet, the trace signal is sent to tracer device  22   b  and after processing stage  26   b  completes processing of the packet, the tracer signal is sent to tracer device  22   c.    
         [0016]     Process  50  monitors ( 59 ) a packet has at each processing stage stage. For example, each tracer device  22   a - 22   c  monitors its corresponding processing stage  26   a -  26   c  to determine if the packet completes the processing stage, what modifications were made to the packet, what processing was performed and so forth.  
         [0017]     When the packet passes through a processing stage, process  50  stores ( 61 ) an indication that the packet is through the processing stage, what modifications were made at that processing stage, what processing was performed and so forth. For example, tracer device  22   a - 22   d  stores the indication at its register  24   a - 24   c.    
         [0018]     Process  50  sends ( 62 ) a notification to application  30  that the processing is complete. Process  50  sends ( 63 ) the indication from each register  24   a - 24   c  to application  30 .  
         [0019]     Packet tracing system  10  aids in device drive and protocol stack development. Without packet tracing system  10 , developers would depend on a packet processor&#39;s external behavior to determine the status of the packet processing within a silicon device. Sometimes special probes would be used, which can connect to a logic analyzer externally. Such solutions are expensive and time-consuming to set-up.  
         [0020]     Packet tracing system  10  is a cost effective way to monitor and record the packet processing in real-time. Since trace indications are stored in registers, reading and analyzing the data is not time critical. Designating the trace trigger parameters enables a user to pinpoint a packet out of a large number of packets. Packet tracing system  10  may also be used during silicon debugging or circuit emulations.  
         [0021]      FIG. 3  shows a computer  100  for using process  50 . Computer  100  includes a processor  102 , a volatile memory  104 , and a non-volatile memory  106  (e.g., hard disk). Non-volatile memory  106  stores operating system  110 , data storage  112 , and computer instructions  114  which are executed by processor  102  out of volatile memory  104  to perform process  50 .  
         [0022]     Process  50  is not limited to use with the hardware and software of  FIG. 3 ; the process may find applicability in any computing or processing environment and with any type of machine that is capable of running a computer program. Process  50  may be implemented in hardware, software, or a combination of the two. For example, process  50  may be implemented in a circuit that includes one or a combination of a processor, a memory, programmable logic and logic gates. Process  50  may be implemented in computer programs executed on programmable computers/machines that each includes a processor, a storage medium or other article of manufacture that is readable by the processor including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device to perform process  50  and to generate output information.  
         [0023]     Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language. Each computer program may be stored on a storage medium or device e.g., CD-ROM, hard disk, or magnetic diskette that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform process  50 . Process  50  may also be implemented as one or more machine-readable storage media, configured with a computer program(s), where upon execution, instructions in the computer program(s cause a computer to operate in accordance with process  50 .  
         [0024]     Referring to  FIG. 4 , packet tracing system  10  may be used in a variety of applications, for example, a network system  210 . Network system  210  includes a router  212  that has a packet tracing system  10 , a first network  215  (e.g., wide-area network (WAN), local-area network (LAN) and so forth) having a client  216 , and a second network  217  having a client  218 . Router  212 , which is connected to first network  215  by line  219   a  and connected to network  217  by line  219   b , allows client  216  and client  218  to communicate with each other. Typically, first network  215  is a different type of network than second network  217 , for example, the first network is a WAN and the second network is a LAN. Router  212  performs the required processing to ensure the data transfer is compatible for each network. Client  218  and client  216  may each monitor packet tracing system  10  remotely to determine the status of packets being processed within the processor.  
         [0025]     The process described herein is not limited to the specific embodiments described herein. For example, the process described herein is not limited to the specific processing order of  FIG. 2 . Rather, the blocks of  FIG. 2  may be re-ordered, as necessary, to achieve the results set forth above. In other examples, the number of trace device-processing stage components are not limited to the number described herein.  
         [0026]     In some examples, the trigger signal may be a flag.  
         [0027]     In some examples, the trigger signal is sent to each tracer device  22   a - 22   c  simultaneously. Each trace device  22   a - 22   c  delays tracing the packet to correspond to the arrival of the packet at the tracer device&#39;s respective processing stage.  
         [0028]     In some examples, the trace trigger may be configurable for a “one time trace mode” or an “auto repeat mode”. In the “auto repeat mode”, a counter may be used to indicate the number of times packets were traced.  
         [0029]     In other examples, the tracer device is positioned within its corresponding processing stage. In other examples, the trace trigger is positioned within the processor.  
         [0030]     Other embodiments not described herein are also within the scope of the following claims.