Abstract:
Methods, systems, and computer readable media for packet classification previewing are disclosed. Packet classification previewing is performed by a reserved preview packet classifier and initiated by a user. According to one aspect, a method for packet classification previewing includes providing a preview packet classifier. User input is received to classify packets using the preview packet classifier. In response to the user input, classification of packets is initiated using the preview packet classifier. Preview packet classification results are generated and displayed to the user, providing feedback as to whether the classifier configuration is correct or not as the user changes the configuration dynamically.

Description:
TECHNICAL FIELD 
       [0001]    The subject matter described herein relates to methods and systems for packet classification previewing. 
       BACKGROUND 
       [0002]    High-speed network impairment instruments contain a small, fixed number of packet classifiers in order to classify packets based on their contents. These packet classifiers match and isolate relevant data flows. In an impairment instrument, these data flows are subjected to different kinds of impairment, such as adding delay to a flow or randomly dropping packets from a flow, in order to emulate the behavior of a Wide Area Network link. 
         [0003]    The user provides configuration data to set up each packet classifier. If the user makes an error in configuring the classifier, and the wrong packets are classified or no packets are classified due to the configuration error, impairment functions of the instrument will either be invoked unnecessarily or not invoked when they should be. In addition, such configuration errors may not be immediately discoverable as the user is required to search through packet classification results to determine the effects of the filter configuration. 
         [0004]    In light of these disadvantages, there exists a need to show the user a preview of the packets matching the current classifier configuration, while they are changing the configuration. 
       SUMMARY 
       [0005]    According to one aspect, the subject matter described herein includes a system for packet classification previewing. The system comprises an interface configured to receive a plurality of packets. The system further comprises a dedicated preview packet classifier configured to receive dynamic user input to classify packets, to generate preview packet classification results, and to display the preview packet classification results to the user as the user changes the packet classification criteria. 
         [0006]    According to another aspect, the subject matter described herein includes a method for packet classification previewing. The method comprises providing a preview packet classifier. User input to classify a packet using the preview packet classifier is received. In response to the user input, classification of packets using the preview packet classifier is initiated. Preview packet classification results are generated and displayed. 
         [0007]    The subject matter described herein can be implemented in software in combination with hardware and/or firmware. For example, the subject matter described herein can be implemented in software executed by a processor. In one exemplary implementation, the subject matter described herein can be implemented using a non-transitory computer readable medium having stored thereon computer executable instructions that when executed by the processor of a computer control the computer to perform steps. Exemplary computer readable media suitable for implementing the subject matter described herein include non-transitory computer-readable media, such as disk memory devices, chip memory devices, programmable logic devices, and application specific integrated circuits. In addition, a computer readable medium that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    Preferred embodiments of the subject matter described herein will now be explained with reference to the accompanying drawings, wherein like reference numerals represent like parts, of which: 
           [0009]      FIG. 1  is a block diagram illustrating an impairment instrument containing a preview packet classifier according to an embodiment of the subject matter described herein; 
           [0010]      FIG. 2  is a block diagram illustrating a packet classifier module according to an embodiment of the subject matter described herein; 
           [0011]      FIG. 3  is a flow chart illustrating an exemplary process for preview packet classification at packet classifier according to an embodiment of the subject matter described herein; 
           [0012]      FIG. 4  is a flow chart illustrating an exemplary process for preview packet classification according to an embodiment of the subject matter described herein; and 
           [0013]      FIG. 5  is a representation of a Graphical User Interface for interfacing with an impairment instrument. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    In accordance with the subject matter disclosed herein, systems, methods, and computer readable media are provided for packet classification previewing. 
         [0015]    Reference will now be made in detail to exemplary embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
         [0016]    Packet classifiers may be utilized in a number of instruments. For example, packet classifiers may be standalone components within a system, they may be contained within a router, or they may be contained within an impairment instrument. These impairment instruments may emulate real-life network impairments for the purpose of testing network equipment. For example, network impairment instruments may add delay to received packets and/or randomly drop the received packets. 
         [0017]      FIG. 1  is a block diagram illustrating an impairment instrument  100  containing a packet classifier module  102 . Packets may be received by a packet classifier module  102  from an input interface  104 . Packet classifier module  102  may classify packets to a number of data flows. In other words, the packet classifier module  102  may match and isolate relevant data flows. This classification may be based on information contained in packet headers. The packets may be packets of various protocols and applications, such as bridging, routing, carrier Ethernet, broadband, Multiprotocol Label Switching (MPLS), Internet Protocol version 4 (IPv4), Internet Protocol version 6 (IPv6), as well as other protocols. Packets of one type may be contained within packets of another type; for example, an IPv6 packet may be contained within an Ethernet packet. This encapsulating of packets may contain various levels of encapsulation. Header information used by packet classifier module  102  to classify packets may be based on an outer layer packet header or an encapsulated packet header. 
         [0018]    Packets leaving the packet classifier module  102  may enter an impairment machine  108 . Impairment machine  108  may impair packets of certain classifications. Impairment machine  108  may impair packets of a certain classification in one way and packets of another classification in another way. Impairment machine  108  may also impair a fraction of packets of certain classifications. Examples of impairments and other functions that may be performed by impairment machine  108  include delay, Service Level Agreement (SLA) validation, packet drop, reorder of packets, packet duplication, emulation of network or transmission error conditions through bit error insertion, Wide Area Network (WAN) forwarding error emulation, Ethernet Frame Check Sequence (FCS) correction, and emulation of fixed link speeds using rate limiting, for example. Impairment machine  108  may keep a number of impairment profiles for applying one or more impairments to one or more data flows or classifications. Impairment machine  108  may then forward packets to an output machine  122 . Output machine  122  may output packets via a transmit interface  124 . 
         [0019]      FIG. 2  is a block diagram illustrating a packet classifier module  102 . Packet classifier module  102  may include an interface  206  which is configured to receive packets. Packet classifier module  102  may include one or more general purpose packet classifiers  202  as well as a dedicated preview packet classifier  204 . Each general purpose classifier  202  may assign packets to data flows based on header information. In one embodiment, each general purpose packet classifier  202  may match and isolate multiple relevant data flows. Each general purpose packet classifier  202  may match and isolate data flows related to a particular test case. In one embodiment, each general purpose classifier  202  may match and isolate data flows which are to be subjected to certain kinds of impairments or impairment profiles. 
         [0020]    Preview packet classifier  204  may match packets based on header information. Preview packet classifier  204  may be configured to receive user input to classify a packet. Preview packet classifier  204  may comprise dedicated resources for the sole purpose of packet classification previewing. Preview packet classifier  204  may be configured to initiate classification of packets in response to the user input. Instead of assigning packets to flows or isolating packets, as the general packet classifiers  202  may do, preview packet classifier  204  may simply keep a count of the matched packets. For example, packets may enter packet classifier module  102  and be examined by preview packet classifier  204  to determine whether packets match certain field values. Preview packet classifier  204  may be configured to generate preview packet classification results. Results may include a count of packets which the preview packet classifier  204  has classified. If the packet field values match field values assigned to the preview packet classifier  204 , then the preview packet classifier  204  may increment a counter. Preview packet classifier  204  may not affect the function of any instrument in which it is a module, nor may it affect the function of any device to which it may be connected. For example, packets matching the filter defined by preview packet classifier  204  may be counted and forwarded without application of impairment or other device function. Instead, preview packet classifier  204  keeps a count of matched packets, which it may report to a user. Preview packet classifier  204  may not interfere with packets. In other words, preview packet classifier  204  may not alter any information contained within a packet or a packet header. 
         [0021]    Preview packet classifier  204  offers benefits to a user. For example, a user may wish to determine what effect a planned change in packet classification may generate, without affecting packet classification or ongoing impairments. Preview packet classifier  204  gives the user this ability. A user may assign field values, such as packet header information, to preview packet classifier  204 , for example, in a Graphical User Interface (GUI). A user may then initiate a preview function of preview packet classifier  204 . When packet classification previewing is initiated, preview packet classifier  204  may begin to keep a record of the number of packets flowing through packet classifier module  200  which match the field values assigned to preview packet classifier  204 . Preview packet classifier  204  may then report back to the user the number of packets that have entered packet classifier module  200  and which match field values assigned to preview packet classifier  204 . This gives the user the ability to determine whether any packets flowing through packet classifier module  200  actually match a classification assigned to preview packet classifier  204 . If the user determines, by observing a non-zero packet count in preview packet classifier  204 , that packets match the classification, this gives the user feedback that the configuration or field values assigned to preview packet classifier  204  will function correctly if assigned to a general purpose packet classifier  202 . If a user determines in this way that the configuration assigned to preview packet classifier  204  will function correctly, the user may then copy the configuration of the preview packet classifier  204  to a general purpose packet classifier  202  such that the general purpose packet classifier  202  may classify packets which match the configuration. 
         [0022]    This is also beneficial, for example, if packet classifier module  200  is a component of a device, such as impairment instrument  100 , which is currently performing functions. For example, if a general purpose packet classifier  202  is assigned a new configuration, and this configuration is incorrect, then packets containing the criteria that the user believed he/she assigned to the packet classifier module  200  will not be handled correctly by packet classifier module  200 . But with preview packet classifier  204 , a user can determine if a configuration is correct before assigning the configuration to a general purpose packet classifier  202 . 
         [0023]      FIG. 3  is a flow chart illustrating an exemplary process for packet classification preview at a preview packet classifier  204 . In block  302 , a plurality of packets is received at preview packet classifier  204 . This plurality of packets may include packets of different protocol types and containing different header information, such as protocol, origination address, destination address, where addresses may include Internet Protocol (IP) addresses and Media Access Control (MAC) addresses, for example. Packets may also be encapsulated within other packets. 
         [0024]    In block  304 , preview packet classifier  204  examines the plurality of packets to determine whether information contained within the packets match a certain configuration assigned to the preview packet classifier  204 . For example, a configuration may include user-determined field values, such as a protocol, source or destination IP address, or source or destination MAC address. Preview packet classifier  204  configuration may be assigned to preview packet classifier  204  by a user, through a GUI, command prompt, or any other user interface. 
         [0025]    At block  306 , if preview packet classifier  204  determines that a packet matches the criteria assigned to the preview packet classifier  204 , preview packet classifier  204  increments a counter. In one embodiment, this counter may be set to zero until a user informs preview packet classifier  204  that the preview packet classifier  204  should begin previewing packets. In one embodiment, the user has the ability to instruct preview packet classifier  204  to start and stop previewing packets. This allows the user to input a configuration into the preview packet classifier  204  and determine a count of packets that match the criteria assigned to preview packet classifier  204  within a particular amount of time. The counter is also available for a user to view via a user interface in real time. This allows the user immediate feedback from the instrument, suggesting the outcome of the configuration assigned to preview packet classifier  204 . For example, if a user configures preview packet classifier  204  with a particular configuration, instructs preview packet classifier  204  to begin counting, and through a user interface determines that packets match these criteria, this provides feedback to the user that the configuration is a correct configuration. In turn, the user can apply the same configuration that is assigned to the preview packet classifier  204  to a general packet classifier  202 , with a degree of certainty that the configuration is a correct configuration. 
         [0026]    If no match is found in block  304 , or when preview packet classifier  204  increments the match count in block  306 , in block  308  preview packet classifier  204  transmits all packets it has received out of preview packet classifier  204 . It is important to note that all packets exit preview packet classifier  204  in the same state in which they entered preview packet classifier  204 . In other words, preview packet classifier  204  does not affect any function of any device in which it may be a module or to which it may be connected. 
         [0027]      FIG. 4  is a flow chart illustrating an exemplary process for packet classification preview. In block  402 , a preview packet classifier  204  is provided. This preview packet classifier  204  may be dedicated hardware within a system. The system may be an impairment instrument  100  such as that shown in  FIG. 1 . 
         [0028]    In block  404 , user input is received to classify packets using the preview packet classifier  204 . This user input may include information such as information contained within the header of a packet. This information may include a protocol, a destination IP or MAC address, an origination IP or MAC address, a flow, and a next hop. User input may be received from a device external to the impairment instrument  100 , such as a remote terminal. 
         [0029]    In block  406 , classification of packets using the preview packet classifier  204  is initiated in response to the user input. When information contained within a packet matches information given by a user in block  404 , the packet is classified. When a packet is classified, a counter is incremented. A user may instruct the counter to be set zero, or the counter may be automatically set to zero when the user instructs preview packet classifier  204  to begin classification. 
         [0030]    In block  408 , preview packet classification results are displayed to the user. Preview packet classification results may include a count of the number of packets classified by preview packet classifier  204 . This count may be provided by a counter which increments whenever packets are classified by preview packet classifier  204 . The preview results may be displayed to a user through terminal connected to the system. 
         [0031]      FIG. 5  is a representation of a GUI  500  for interfacing with impairment instrument  100 . In the embodiment of  FIG. 5 , packet classifier tab  502  is selected in GUI  500 . Portions of the packet classifier tab  502  may be used to alter settings of general purpose classifiers  202  and preview packet classifier  204 , as well as display preview packet classification results. 
         [0032]    Portion  504  of GUI  500  is used to select whether all packets traveling through impairment instrument  100  or only packets classified by general purpose classifier  202  will be impaired by impairment machine  108 . If the “All Packets” button is selected, all packets traveling through impairment instrument  100  will be impaired. If the “By Field Value” button is selected, only packets classified by general purpose classifier  202  will be impaired. 
         [0033]    Portion  506  allows a user to select a packet field and enter values to be used for general packet classification or preview packet classification. In the embodiment shown, a user may click on destination address field or source address field in order to enter values associated with these fields for the purpose of general packet classification or preview packet classification. Source address and destination address fields may be contained within an IP header section, and the IP header section may be contained within an IPv4 section. It will be understood that the sections and fields shown in  FIG. 5  are representative and many other sections and fields may exist for use in general packet classification or preview packet classification. 
         [0034]    After a user has entered values in portion  506  of GUI  500 , the user may wish to preview the selected classification in preview packet classifier  204  before implementing the changes in a general purpose classifier  202 . A user may preview the packet classification values entered in field  506  by selecting the preview button  508 . When preview button  508  is selected, preview packet classifier  204  will begin to classify packets. At this point a user may begin to see preview packet classification results in portion  510  of GUI  500 . Preview packet classification results will include a count of packets flowing through impairment instrument  100  which match the field values entered into portion  506 . This functionality allows a user to determine whether or not packets flowing through impairment instrument  100  match the classification selected in portion  506 , as well as how many packets match the classification. Furthermore, the preview packet classifier may not affect the function of any instrument in which it is a module. In other words, the preview button  508  is available for making an intermediate checking step before making a configuration active. This is beneficial to the user because the user may use the results of preview packet classification to determine that the classification is a valid classification before applying the classification to a general purpose packet classifier  202 . Likewise, if a preview packet classification is invalid, simply previewing the packet classification using preview packet classifier  204  will not negatively affect any instrument in which it is a module. 
         [0035]    Portion  510  of GUI  500  may display the results of preview packet classification. Portion  510  may include a link portion and a packet portion. Link portion may contain information related to the packet fields selected in portion  506 . For example,  FIG. 5  shows two links, link1: 10.64.33.15:02:01-&gt;02 and link2: 10.64.33.15:02:01&lt;-02. Value 10.64.33.15 may represent an IP address of a chassis, value :02: may represent a card number on the chassis, and value :01 may represent a port on the chassis. Value-&gt;02 may represent a port on impairment instrument  100 . Link1 may represent a link from an external chassis to impairment instrument  100  while link2 may represent a link from impairment instrument  100  to an external chassis. Packets portion contains a count of the number of packets which have traversed the respective link. For example, as shown in  FIG. 5 , 100 packets have traversed link1. In other words, packets portion contains a count of the number of packets which match preview packet classification. 
         [0036]    It will be understood that various details of the subject matter described herein may be changed without departing from the scope of the subject matter described herein. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.