Abstract:
Dynamic streams for network analysis may be implemented as a method on a device. The device may include a control unit and a blaster unit. The control unit may initiate a session with a remote device by sending session initiation information to the blaster unit over a control line. The control unit may send session control information and session data to the blaster unit via a bus to control which sessions of a stream of data units are enabled and to control the content of the data units sent over the sessions of a stream.

Description:
[0001]    A portion of the disclosure of this patent document contains material which is subject to copyright protection. This patent document may show and/or describe matter which is or may become trade dress of the owner. The copyright and trade dress owner has no objection to the facsimile reproduction by any one of the patent disclosure as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright and trade dress rights whatsoever.  
         BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    The invention relates to testing and analysis of communications networks, systems and devices, and, more specifically, to sending streams of data to test and analyze communications networks, communications systems and traffic analysis.  
           [0004]    2. Description of Related Art  
           [0005]    Communications networks that include voice, data, and all kinds of digital media are ubiquitous in modem society. Many different kinds of data are shared by and between people and businesses for commerce and pleasure, among many other uses. To assist with the construction and maintenance of communications networks, communications systems include network analyzing devices, network monitoring devices, and network testing devices.  
           [0006]    The devices may be included as a single unit or may exist as separate units. In addition, the units may be software implemented on a computing devices such as a server computer, or may be stand alone dedicated devices.  
           [0007]    Generally, these products allow for the sending, capturing and analyzing of network communications. The network communications may be originated by the communications system or may be typical traffic that is pulled from a network by the product.  
           [0008]    One type of network testing device is the traffic generator. Traffic generators are used to originate data on a network which simulates real-world data. Traffic generators are typically batch-oriented. That is, the traffic generator is loaded with one or more traffic patterns, and then the traffic generator originates data on the network accorded to those patterns.  
       
    
    
     DESCRIPTION OF THE DRAWINGS  
       [0009]    [0009]FIG. 1 is a block diagram of an environment in accordance with the invention.  
         [0010]    [0010]FIG. 2 is a block diagram of an apparatus according to one aspect of the invention.  
         [0011]    [0011]FIG. 3 is a flow chart of a method of the invention.  
         [0012]    [0012]FIG. 4A shows a timing diagram for a control unit of an apparatus in accordance with the invention.  
         [0013]    [0013]FIG. 4B shows a timing diagram for a blaster unit of an apparatus in accordance with the invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0014]    Throughout this description, the embodiments and examples shown should be considered as exemplars, rather than limitations on the apparatus and methods of the invention.  
         [0015]    Systems of the Invention  
         [0016]    Referring now to FIG. 1, there is shown a block diagram of an environment in accordance with the invention. The environment includes a traffic generator  100 , a network  140  and plural network devices  150 .  
         [0017]    The traffic generator  100  may be a network testing device, performance analyzer, conformance validation system, network analyzer, or network management system. The traffic generator  100  may include one or more network cards  120  and a back plane  110 . Traffic generator  100  may be in the form of a card rack, as shown in FIG. 1, or may be an integrated unit. Alternatively, the traffic generator may comprise a number of separate units cooperative to provide traffic generation. The traffic generator  100  and the network cards  120  may support one or more well known standards or protocols such as the 10 Gigabit Ethernet and Fibre Channel standards, and may support proprietary protocols as well.  
         [0018]    The network cards  120  may include one or more field programmable gate arrays (FPGA), application specific integrated circuits (ASIC), programmable logic devices (PLD), programmable logic arrays (PLA), processors and other kinds of devices. In addition, the network cards  120  may include software and firmware. The term network card encompasses line cards, test cards, analysis cards, network line cards, load modules, interface cards, network interface cards, data interface cards, packet engine cards, service cards, smart cards, switch cards, relay access cards, and the like. Each network card  120  may provide one or more network ports. The ports of the network cards  120  may be connected to the network through wire, optical fiber, wirelessly or otherwise. Each network card  120  may support a single communications protocol, may support a number of related protocols, or may support a number of unrelated protocols. The network cards  120  may be permanently installed in the traffic generator  100  or field removable. Each network card  120  may provide one or more ports.  
         [0019]    The back plane  110  may serve as a bus or communications medium for the network cards  120 . The back plane  110  may also provide power to the network cards  120 .  
         [0020]    The network devices  150  may be any devices capable of communicating over the network  140 . The network devices  150  may be computing devices such as workstations, personal computers, servers, portable computers, personal digital assistants (PDAs), computing tablets, and the like; peripheral devices such as printers, scanners, facsimile machines and the like; network capable storage devices including disk drives such as network attached storage (NAS) and storage area network (SAN) devices; networking devices such as routers, relays, hubs, switches, bridges, and multiplexers. In addition, the network devices  150  may include appliances such as refrigerators, washing machines, and the like as well as residential or commercial HVAC systems, alarm systems, and any other device or system capable of communicating over a network.  
         [0021]    The network  140  may be a LAN, a WAN, a SAN, wired, wireless, or a combination of these, and may include or be the Internet. Communications on the network  140  may take various forms, including frames, cells, datagrams, packets or other units of information, all of which are referred to herein as data units. The traffic generator  100  and the network devices  150  may communicate simultaneously with one another, and there may be plural logical communications between the traffic generator  100  and a given network device  150 . The network itself may be comprised of numerous nodes providing numerous physical and logical paths for data to travel.  
         [0022]    A flow of data units originating from a single source on the network having a specific type of data unit and a specific rate will be referred to herein as a “stream.” A source may support multiple outgoing and incoming streams simultaneously and concurrently, for example to accommodate multiple data unit types or rates. A source may be, for example, a port on a network interface. “Simultaneously” means “at exactly the same time.” “Concurrently” means “within the same time.” A single stream may represent one or more concurrent “sessions.” A “session” is a lasting connection between a fixed, single source, and a fixed, single destination comprising a sequence of one or more data units. The sessions within a stream share the data rate of the stream through interleaving. The interleaving may be balanced, unbalanced, and distributed among the represented sessions. Two or more sessions represented by the same stream may transmit data units from a source concurrently, but not simultaneously.  
         [0023]    Although a session carries data units between two fixed end points, the session may include multiple paths within the network  140 . Within the network  140 , sessions may be broken apart and reconstituted to allow for greater data rates, better error control, better network utilization, lower costs or otherwise. The sessions may include one or more intermediary paths, channels, or routes between one or more intermediary devices. The multiple intermediary paths, channels or routes may be aligned in parallel and/or serially with respect to one another within the network  140 .  
         [0024]    Referring now to FIG. 2, there is shown a block diagram of an apparatus according to one aspect of the invention. The apparatus may be the traffic generator  100  (FIG. 1), the network card  120  (FIG. 1), or one or more components of the traffic generator or the network card  120  (FIG. 1), such as a port. The apparatus includes a control unit  210 , a blaster unit  240 , a receive engine  220 , a front end/transmit engine  250 , a bus  230  and a control line  260 .  
         [0025]    The bus  230  provides a communications path between the control unit  210 , the receive engine  220 , the blaster unit  240 , the front end/transmit engine  250  and the back plane  110 . The bus  230  may be used for communicating control and status information, and also data. Communication paths  260 ,  265  may be used for communicating data, and also control and status information.  
         [0026]    The control unit  210  includes a port processor  212 , a DMA engine  214 , and a port memory  216 .  
         [0027]    The port processor  212  may be a microprocessor or other programmable processor. From outside the apparatus, the port processor  212  receives control instructions such as patterns of traffic which the apparatus is to generate. The control instructions may be received from a network device over an incoming stream  222 . Alternatively, the control instructions may be provided directly to the apparatus via the bus  230 , for example via the back plane  110 . The port processor  212  may have an application program interface (API) for external control of the apparatus. A user may use a software program on a host to enter commands which create the control instructions that are sent to the port processor  212 . The control unit  210  may store the control instructions in port memory  216  before, after, and during their execution.  
         [0028]    The DMA engine  214  comprises an interface and control logic providing demand memory access. The DMA engine  214  is coupled to the port processor  212 , the port memory  216 , the receive engine  220  and the bus  230 . In response to requests from the port processor  212 , the DMA engine  214  fetches data units and data from the port memory  216 . The DMA engine  214  also provides a path from the port processor  212  to the blaster unit  240  and the front end/transmit engine  250 .  
         [0029]    The receive engine  220  receives incoming data streams, such as stream  222 . The incoming stream  222  may represent plural sessions  224 . The receive engine  220  may process incoming data units according to a filter provided by or controlled by the port processor  212 . After receiving the incoming data units, the receive engine  220  passes the data units to the DMA engine  214 , which may store the data units in the port memory  216  or pass them directly to the port processor  212 . The receive engine may communicate with the DMA engine  214  via bus  230  and/or comunication line  265 . Incoming data units may also be discarded, for example by either the receive engine  220  (e.g., filtered out) or the DMA engine  214 . Incoming data units may include control data from a network device, e.g., for negotiating, setting up, tearing down or controlling a session. Incoming data units may also include data from a network device.  
         [0030]    The front end/transmit engine  250  transmits outgoing data units as one or more streams  252   a ,  252   b , . . .  252   n . The data stream  252   a  may represent plural sessions  254 . The data units which the front end/transmit engine  250  transmits may originate from the control unit  210  or the blaster unit  240 . The control unit  210  originates control data for negotiating, setting up tearing down and controlling streams and sessions. The front end/transmit engine  250  is coupled to the bus  230  and communications line  265  for receiving control information and data units.  
         [0031]    The blaster unit  240  includes a scheduler  242 , a background overlay engine  244 , a background memory  246 , an overlay memory  248 , and a front end/transmit engine  250 . The scheduler  242 , the background overlay engine  244  and the background memory  246  cooperate to form data units and to pass these data units to the front end/transmit engine  250 .  
         [0032]    The blaster unit  240  uses session configuration information, comprising instructions for forming and timing transmission of the outgoing data units. The blaster unit  240  may receive the session configuration information from the port processor  212 . The session configuration information may include a session identifier (ID) which identifies to which session the session configuration information pertains. The components of the session configuration information may be communicated as a unit or separately.  
         [0033]    At least some of the session configuration information—templates and overlays—vmay be stored in the two memories  246 ,  248  of the blaster unit  240 . The memories  246 ,  248  may index, sort or otherwise store the session configuration information by the session ID. The background memory  246  stores a template for the data units of each outgoing stream  252 . The overlay memory  248  stores an overlay for each outgoing session  254 . Whereas the template provides a basic layout of what will be an outgoing data unit, the overlay memory  248  dictates how the template will be modified or completed to produce the data units of the session.  
         [0034]    The overlay memory  248  may store session parameters instead of merely specific data for a session. That is, the session parameters may specify that a value of a specific field or bits might be varied in a predetermined fashion. For example, IP addresses may be incremented by a specific amount between specific start and stop values. As another example, the session parameters may be specified on a session-by-session basis.  
         [0035]    Although the overlay memory  248  and the background memory  246  are shown as separate units, they may be combined into a single memory. Likewise, the port memory  216  may be combined with one or both of the background memory  246  and the overlay memory  248 .  
         [0036]    The scheduler  242  manages a schedule of transmission times for each of the outgoing streams, such as streams  252   a ,  252   b ,  252   n . The scheduler  242  operates like a metronome or clock to ensure that the outgoing streams conform to their respective data rates. Once configured and enabled for a given stream, the scheduler  242  sends a next transmit signal to the background overlay engine  244  when a data unit for the corresponding stream is to be transmitted. Alternatively, the scheduler  242  may signal to the background overlay engine  244  when the background overlay engine  244  should form an outgoing data unit, and the background overlay engine  244  implicitly passes the formed data units to the front end/transmit engine  250  for transmission. The scheduler  242  is connected to the bus  230  is coupled to the bus  230  for receiving control information.  
         [0037]    The background overlay engine  244  forms outgoing data units. The background overlay engine  244  is coupled to the scheduler  242 , the background memory  246 , the overlay memory  248  and the front end/transmit engine  250 . The background overlay engine  244  uses the templates in the background memory  246  and overlays in the overlay memory  248 , combining them to form outgoing data units. When signaled by the scheduler  242 , the background overlay engine  244  passes a formed outgoing data unit for a session of the signaled stream to the front end/transmit unit  250 . Because only one session of a stream may be serviced at a time, the background overlay engine  244  selects one session from the stream to transmit a data unit. The background overlay engine  244  may sequence through the sessions of a stream, or may select a next session according to a formula, or otherwise.  
         [0038]    The overlay memory  248  may include a session status table  245 . The session status table  245  stores session status information. Alternatively, the session status table  245  may be stored in a different memory, such as the background memory  246 . The session status information may be one or more bits, and may be stored, for example, in direct, indirect, compressed or encoded form. The session ID may be used to obtain session status information from the session status table  245  for a corresponding session.  
         [0039]    The session status information may indicate whether a session is enabled or disabled. If a specific session is disabled, the background overlay engine  244  will not allow data units for the specified session  254  to be transmitted. This may be accomplished by ignoring the signal from the scheduler  242 . If a specific session is enabled, then the background overlay engine  244  responds to signals from the scheduler  242 , and causes data units for the specified session  254  to be transmitted. The background overlay engine  244  may read the session status information from the session status table  245 .  
         [0040]    Session status information may originate from the port processor  212 . The port processor  212  may, over time, change the session status information for the sessions to therefore enable and disable the sessions. In this way, the control unit  210  may control which sessions the blaster unit  240  is transmitting at any given time.  
       METHODS OF THE INVENTION  
       [0041]    Through effective management of the session status information, an apparatus which is otherwise limited to a small number of sessions may be able to generate traffic for a much larger number of sessions. For example, consider a situation where the blaster unit  240  can accommodate a limited number of sessions, and the port processor  212  can accommodate a larger number of sessions. As many as tens of thousands of sessions, or more, may be accomodated. In this way, a single session may be made to appear to be multiple sessions.  
         [0042]    The control unit  210  provides the blaster unit  240  with an initial set of session control information and session status information. The initial session control information and session status information may originate from the back plane  10 , and may also be provided directly to the blaster unit  240 . After the stream is started, the control unit  210  may disable some of those session, load new session configuration information for the disabled sessions, and enable those sessions. This may be achieved in such a way that, at any given time, the blaster unit  240  transmits over no more than its maximum number of sessions, but the total number of session generating traffic during a given period of time is much higher.  
         [0043]    Referring now to FIG. 3, there is shown a flow chart of a method of the invention. In the method, the control unit  210  makes it appear that the blaster unit  240  is generating traffic on more than its maximum number of sessions. The blaster unit&#39;s maximum number of streams may be determined, for example, on a per stream basis or on an overall basis. The control unit  210  tracks which sessions the blaster unit  240  is servicing, and which sessions the blaster unit  240  needs to service.  
         [0044]    For convenience, sessions will be referred to herein as “original” sessions and “replacement” sessions. The original sessions are those which are represented by a stream when the stream is first started. Replacement sessions are sessions which replace original sessions or other replacement sessions.  
         [0045]    In an initialization step (step  310 ), a session ID is assigned to each of the original sessions for which the blaster unit  240  will be generating traffic. This may be done on a per-stream basis, or for all streams. This may be performed by the control unit  210 . Alternatively, there may be predefined session IDs for the stream or for all possible sessions. The control unit  210  may at this point provide the session IDs to the blaster unit  240 , though the control unit may do so in conjunction with loading session configuration information as explained below.  
         [0046]    In the next step  315 , the control unit  210  causes the blaster unit  240  to not cause data units to be transmitted. This may be done on a per-stream basis, or for all streams. The control unit  210  may do this by loading session status information into the blaster unit  240  for the original sessions, where the session status information causes the original sessions to be disabled. For example, record in the session status table  245  for each session may be set to “disabled.” A status of “disabled” may result in the background overlay engine  244  dropping frames or ignoring the signal from the scheduler  242 . The purpose of this step  315  is to prevent the blaster unit from causing data units to be transmitted before the control unit has set up the original sessions.  
         [0047]    Because there may be many possible sessions of a stream to generate, during initialization, the control unit  210  may select which of the sessions will be original sessions. The control unit may also determine when replacement sessions will replace other sessions, for example in accordance with an instruction from the host. The decision of when to make replacements, which sessions to replace and which replacement sessions should be used may also performed on the fly.  
         [0048]    In a step  320 , the control unit  210  negotiates the original sessions. In conjunction with these negotiations, the control unit  210  may formulate and/or acquire the session configuration information for the original sessions.  
         [0049]    In a step  325 , the control unit  210  loads session configuration information for the original sessions into the blaster unit  240 . With the session configuration information, the blaster unit  240  can form proper data units. Thus, the control unit  210  next causes the original sessions to be enabled (step  330 ), and the blaster unit transmits data units for the original physical sessions (step  335 ). The control unit  210  may enable the sessions by loading session status information into the blaster unit  240  which indicates that the sessions are enabled.  
         [0050]    At some later time, the control unit  210  will be ready to replace some of the original sessions with replacement sessions. After selecting which original sessions will be replaced, the control unit  210  may cause one or more of the original sessions to be disabled (step  340 ). As in step  315 , disabling the sessions prevents undesired data units from being transmitted.  
         [0051]    The replacement sessions have the same session IDs as the original sessions selected for replacement. Thus, for each replacement session, there must be one session which it will replace, and both sessions will have the same session ID. There may be only one replacement session, though this description is made in reference to plural replacement sessions.  
         [0052]    The control unit  210  may also negotiate the replacement sessions at this time (step  345 ). This step  345  may precede, be performed concurrently with, or follow step  340 .  
         [0053]    After negotiating the replacement sessions, the control unit  210  loads session configuration information for the replacement sessions into the blaster unit  240  (step  350 ). This new session configuration information replaces the session configuration information of those original sessions selected for replacement.  
         [0054]    Next, the control unit  210  causes the replacement sessions to be enabled (step  355 ). To do so, the control unit may load session status information into the blaster unit  240  which indicates that the replacement sessions should be serviced by the blaster unit  240 . The blaster unit  240  then transmits data units for the replacement sessions, along with those original sessions which were not replaced. Steps  340 - 355  may be repeated so that all of the desired sessions are generated.  
         [0055]    At some point, the stream will terminate (step  360 ). This may occur when all of the enabled sessions have run their course. Alternatively, the control unit  210  may terminate the stream.  
         [0056]    An example may be instructive. Consider an apparatus in which the control unit  210  wants to cause five sessions to be generated in a stream, but the blaster unit  240  is limited to three sessions in the stream. FIG. 4A shows a timing diagram for the control unit  210  and FIG. 4B shows a timing diagram for the blaster unit  240 . Consider that the session configuration information for the five sessions the control unit.  210  wants to cause are identified as A-E. Consider further that the three sessions have session IDs  0 - 2 . Consider that the control unit  210  has decided that initially, data units will be generated for configurations A, C and D, and that later C and D will be replaced with B and E.  
         [0057]    At a time t 0  all of the sessions of the blaster unit  240  are disabled.  
         [0058]    At a time t 1 , the control unit  210  has negotiated Sessions  0 ,  1  and  2  and loads configurations A, C and D into the background memory  246  and overlay memory  248 . During loading, the sessions remain disabled.  
         [0059]    At a later time t 2 , the control unit  210  loads “enabled” status into the session status table for Sessions  0 ,  1  and  2 . The blaster unit  240  therefore begins transmitting data units for these sessions. At a later time t 3  Sessions  0 ,  1  and  2  are still enabled.  
         [0060]    At time t 4 , in anticipation of replacing Sessions  1  and  2 , the control unit  210  has disabled Sessions  1  and  2 , though Session  0  remains enabled.  
         [0061]    By time t 5  the control unit  210  has negotiated sessions for configurations B and E, and at time t 5  the control unit  210  loads configurations B and E into the background memory  246  and overlay memory  248 , replacing the configurations of Sessions  1  and  2 . Though the session configuration information may have changed, the session IDs have not.  
         [0062]    At a later time t 6, Session  0  is still enabled, and the control unit  210  loads “enabled” status into the session status table for Sessions  1  and  2 . The blaster unit  240  therefore again transmits data units for Sessions  1  and  2 .  
         [0063]    At a later time t 7 , the sessions are terminated.  
         [0064]    As can be seen, the port processor  212  may control whether a specified session is enabled or not. The port processor  212  may dynamically enable and disable specified sessions any number of times. The port processor  212  may use this mechanism to distribute transmission of data units to selected sessions, balance sessions, and manage the start and stop of sessions.  
         [0065]    Although exemplary embodiments of the invention have been shown and described, it will be apparent to those having ordinary skill in the art that a number of changes, modifications, or alterations to the invention as described herein may be made, none of which depart from the spirit of the invention. All such changes, modifications and alterations should therefore be seen as within the scope of the invention.