The subject matter described herein related to generating simulated network traffic. More particularly, the subject matter described herein related to methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device that emulates multiple application servers.
Some network components, such as firewalls, network address translators (NATs), intrusion detection systems (IDSs), intrusion protection systems (IPSs), deep packet inspection (DPI) devices, wide area network (WAN) optimization devices, layer 7 traffic accelerators, and server load balancers (SLBs), process a diverse mix of network traffic in operation. Accordingly, before deploying such equipment in a live network, it is desirable to test the equipment with a traffic simulation that is representative of the traffic mix that the equipment will handle upon deployment. For example, it may be desirable to test a firewall by repeatedly sending traffic from different applications through the firewall.
In today's world with the advancement of Internet and smart phones, we are seeing an explosion of Internet based applications. These applications run on multiple machines where many of them are servers and mainly serving requests sent by associated application clients. Notably, all of these applications are not defining their own transport, but instead use a common layer 4 to layer 7 transport to exchange application specific messages. One such common transport is HTTP, which is associated TCP listen port 80. Similarly, many secured applications may exchange messages using HTTPS via the listening port 443. Examples of applications running HTTP or HTTPS are Facebook, Google Maps, Twitter, and the like. Even though all of these applications/protocols are running on top of HTTP, each of the messages exchanged adhere to completely different formats known only to the application client and server. Namely, a common server cannot service the requests sent by a different application client since messages sent by different clients cannot be parsed using a common set of rules.
Normally, the servers for different applications run on different hosts having different IP addresses even though they share the same transport layer port (TCP port). Specifically, the IP address and port combination uniquely points to a single application server which exactly knows how to parse messages associated with a particular application. In a network traffic emulation environment, things become further complicated since there is a need to emulate multiple application servers on a single host. One possible solution to this problem is to implement complete application servers (e.g., a Google server, a Facebook server, a YouTube server, etc.) on the same emulation device. Another possible solution would be to implement a single monolithic server hard coded to recognize and respond to messages from different applications. However, neither possible solution is scalable.
Accordingly, there exists a long felt need for methods, systems, and computer readable media for classifying application traffic received at a network traffic emulation device emulating multiple application servers.
Methods, systems, and computer readable media for classifying application traffic at a network traffic emulation device that emulates multiple application servers are disclosed. The method may include, at a network traffic emulation device, providing a plurality of different application flows for monitoring mixed application traffic received from different client applications via a device under test on the same transport layer port. For each of the different application flows that monitor the same transport layer port, parsing a payload of received packets associated with the same session in the mixed application traffic and identifying non-matching application flows based on whether a portion of each payload matches a signature associated with the application flow. The method further includes eliminating, as identification candidates, non-matching application flows from the application flows that monitor packets received on the same transport layer port until an application flow that identifies an application for the received packets associated with the same session remains.
The subject matter described herein may be implemented in hardware, software, firmware, or any combination thereof. As such, the terms “function” “node” or “module” as used herein refer to hardware, which may also include software and/or firmware components, for implementing the feature being described. In one exemplary implementation, the subject matter described herein may be implemented using a 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.
Preferred embodiments of the subject matter described herein will now be explained with reference to the accompanying drawings, of which:
Device under test 104 may be any suitable network device whose functionality is being tested. Examples of such a device include a network address translator (NAT), a firewall, an intrusion detection system (IDS), an intrusion protection system (IPS), a deep packet inspection (DPI) device, a wide area network (WAN) optimization device, a layer 7 accelerator, and a server load balancer (SLB), and the like. Emulator 102 includes a central processing unit (CPU) 106 that executes a multi-flow application (MFA) module 108 and a general parsing engine (GPE) 116. Emulator 102 further includes a plurality of listening ports, i.e., transport layer ports 1141 . . . N that are configured for receiving mixed application traffic generated by emulated clients and sent to emulator 102 via DUT 104. Transport layer ports 1141 . . . N may be configured to handle UDP, TCP, or any other transport layer protocol. In one embodiment, the received application traffic may include packets associated with an application request message. Each listening port 114 is associated with a respective listening context 112. Although not shown in
Emulator 102 may implement a flow pruning algorithm, a flow parse algorithm, and a flow established algorithm to quickly and efficiently identify the application flow to which a session belongs. As used herein, the flow-parse algorithm includes a method, callback, or subroutine that may be utilized by an application flow to recognize a format of application message traffic generated by an associated application or protocol. Similarly, the flow-established algorithm includes a method, callback, or subroutine that may be utilized once for each new session or connection with an application flow that has been identified as a potential candidate for owning an application traffic session. Moreover, the flow-pruning algorithm may include a primary software program that utilizes the flow-parse algorithm and flow-established algorithm to promptly identify applications associated with various application traffic received at a transport layer port.
Referring to
As shown in
The utilization of queues 302-308 of session object 300 may be described in the context of the aforementioned flow-pruning algorithm, flow-parse algorithm, and flow-established algorithm. For example, after a session object is allocated and initialized (e.g., generated), a flow-established algorithm is called for each application flow link included in Active queue 302. In one embodiment, the flow-established algorithm is executed for each application flow and performs a number of steps based on different conditions. For example, the flow-established algorithm may initiate by setting the Receive status in that application flow to a NO_MATCH_FOUND value. In the event application data (e.g., a response message) is to be sent to an emulated client, a determination is made as to whether the silent-flag is set or not. As used herein, a silent-flag includes a read-and-modify flag that is passed to both the flow-parser and flow-established algorithms. If the flow-established algorithm decides to send application data to an initiator/client, it should first read the silent flag. If a silent flag is not set, then the flow-established algorithm sends the message/data to the client and the silent-flag is set. Notably, other application flows may receive the updated silent-flag. If a silent-flag is set, then the flow-established algorithm does not send the message/data. If the flow-established algorithm needs to open another secondary (linked) connection (e.g., an additional data channel depending on the definition of the flow), then the flow-established algorithm may initiate the secondary connection and change the receive status to an EXCLUSIVE_MATCH value. If the flow-established algorithm needs to listen for another secondary (linked) connection, then the flow-established algorithm starts listening for the secondary connection and changes the Receive status to an EXCLUSIVE_MATCH value. If the flow-established algorithm needs to close/terminate the connection or session, the flow-established algorithm schedules a close/termination event and changes the Receive status to a MATCH_DONE value. Lastly, the flow-established algorithm returns the Receive status along with the silent flag.
Similarly, a flow state machine associated with the present subject matter may utilize a flow parse algorithm if called by the flow pruning algorithm (discussed in detail below). For example, if any data is received from the remote end (e.g., an emulated client or initiator) for a session which includes more than one application flow in Active queue 302, then the flow-parse algorithm is called for each application flow in Active queue 302. In one embodiment, the flow-parse algorithm of each application flow may perform a number of tasks. For example, the flow-parse algorithm determines whether a portion of the payload data matches a predefined signature (e.g., a predefined data sequence or pattern) associated with the application flow.
In the event a portion of the received data (e.g., payload data) matches a signature associated with the application flow, then the flow-parse algorithm may set the Receive status to a “MATCH_IN_PROGRESS” value. Otherwise, the Receive status is set to NO_MATCH_FOUND.
In the event application data (e.g., a response message) is to be sent to an emulated client, a determination is made as to whether the silent-flag is set or not. If a silent flag is not set, then the flow-established algorithm sends the message/data to the client and the silent-flag is set. Notably, flow-parser for other application flows may receive the updated silent-flag. If a silent-flag is set, then the flow-parse algorithm does not send the message/data. If the flow-parse algorithm needs to open another secondary (linked) connection (e.g., an additional data channel depending on the definition of the application flow), then the flow-parse algorithm may initiate the secondary connection and change the Receive status to an EXCLUSIVE_MATCH value. If the flow-parse algorithm needs to listen for another secondary (linked) connection, then the flow-parse algorithm starts listening for the secondary connection and changes the Receive status to an EXCLUSIVE_MATCH value. If the flow-parse algorithm needs to close/terminate the connection or session, the flow-parse algorithm schedules a close/termination event and changes the Receive status to a MATCH_DONE value. Lastly, the flow-parse algorithm returns the Receive status along with the silent flag.
In one embodiment, the caller of the flow-established and/or flow-parse algorithms executes the steps provided by the flow-pruning algorithm based on the return values of the flow-established and/or flow-parse algorithms (e.g., for each of the application flows). For example, if the flow-parse algorithm produces an EXCLUSIVE_MATCH return value for a particular application flow, then a link of that application flow remains in Active queue 302 while links associated with all of the other application flows are moved to Inactive queue 308. The application flow corresponding to the sole remaining flow link (i.e., all other flow links have been eliminated or moved to another queue) in Active queue 302 assumes full ownership of the session at this time. Notably, this means an application flow should not attempt to close or start a new session/connection before any data that uniquely identifies the flow is received.
In the event a flow-parse algorithm provides a MATCH_IN_PROGRESS return value for at least one application flow, then a link associated with that application flow is transferred to In Progress queue 304. If the flow-parse algorithm produces a NO_MATCH_FOUND return value for an application flow, then a flow link associated with that application flow is transferred to No Match queue 306. At this time, any application flow residing in No Match queue 306 would be excluded from further consideration.
If the flow-parse algorithm returns a MATCH_DONE value, then all processing ceases and the flow-pruning algorithm is aborted at that point.
If at the end of the process a MATCH_DONE value is not returned by any flow-parse algorithm, then a determination is made as to whether In Progress queue 304 is not empty. If In Progress queue 304 is not empty, then all application flow links are moved from In Progress queue 304 to Active queue 302. Similarly, all application flow links are moved from No Match queue 306 (if any) to Inactive queue 308 if In Progress queue 304 is not empty. Conversely, if No Match queue 306 is not empty and in-progress queue 304 is empty, then all application flow links in no match queue 396 are transferred to Active queue 302.
If there is only one remaining application flow link in Active queue 302 at the end of the process, then the associated application assumes full ownership of the session. Once a single flow assumes the final ownership of the session, then the IO processing switches to a faster path that does not process the return codes of the flow-established algorithm or flow-parse algorithm since additional pruning is no longer needed.
Notably, the return values of the flow-established algorithm may be treated in the same manner (by the flow-pruning algorithm) as the return values of the flow-parse algorithm. However, it should be noted that the flow-established algorithm does not return a MATCH_IN_PROGRESS value.
Since application flow links are temporarily stored within In Progress queue 304 and No Match queue 306 and moved out to Active queue 302 and Inactive queue 308 in the same function context, the flow links may not be stored inside a session object. Alternatively, memory may be optimized to include the use of local memory for In Progress queue 304 and No Match queue 306, both of which will be released after the flow pruning algorithm returns.
For speed optimization, the memory for sessions may not actually be released when the session is closed. Instead, the session memory may be reused for a new session/connection that is ultimately accepted on the same transport layer listening port. In such a scenario, application flow links may be moved back to Active queue 302 from Inactive queue 308 during re-initialization. In one embodiment, to optimize the session allocations further, the size of the memory needed for a session can pre-computed and stored at a per listening port basis.
In step 404, a plurality of application flows are distributed among the listening contexts. In one embodiment, the listening contexts may each contain one or more of the same application flows. Notably, a listening context may contain any number of application flows that a network operator desires to use to monitor a given transport layer port.
In step 406, application traffic belonging to a new session is received on a listening port. In one embodiment, packets associated with an application request message are received on a transport layer port.
In step 408, a session object is created for the listening port. In one embodiment, a multiflow algorithm (MFA) module may be configured to create a session object for a listening port (e.g., a transport layer port). In one embodiment, the session object may include an Active queue, an In Progress queue, a No Match queue, and an Inactive queue.
In step 410, application flow links are placed in the active queue of the session object. In one embodiment, the MFA module places the flow links corresponding to the listening port's application flows in the Active queue of the session object.
In step 412, a flow-established algorithm is initiated for each application flow link in the Active queue. In one embodiment, the MFA module executes the flow-established algorithm for each application flow corresponding to the application flow links maintained in the Active queue.
Referring to
In step 416, a determination is made as to whether the payload data matches a signature of an application flow. In one embodiment, at least a portion of the payload data contained in the received application traffic is compared to the application flow signature. If a match is found, method 400 continues to block 418 where the application flow link is kept in the Active queue of the session object (i.e., matching flow link remains in Active queue as a remaining application flow link). If a match is not found, method 400 instead proceeds to step 420 where the application flow link is moved to the Inactive queue in the session object (i.e., non-matching application flow link is eliminated from Active queue).
In step 422, a determination is made as to whether there is only one application flow link remaining in the Active queue. If there is a plurality of flow links in the Active queue, then method 400 continues to step 424, where a subsequent packet associated with the session is received. Method 400 then loops back to step 414 to process the subsequent session packet. If it is determined that only one flow link remains in the Active queue, then method 400 continues to step 426 where an application associated with the remaining flow link is identified. At this stage, the emulated server may be configured issue a response message associated with the identified application. Although
The present subject matter may also include a general parsing engine (GPE) 116 that may be used to perform the parsing tasks indicated above (e.g., step 414 in
In one embodiment, the parse rules processed by GPE 116 include an entity that parses a portion of an incoming message. A Parse Rule may include either a Bytes Parse Rule or Token Parse Rule. Each parse rule uses a different mechanism to identify what part of the message the parse rule will process/consume. Similarly, GPE 116 may process a Receive Rule, which includes a collection of Parse Rules. Each Receive Rule can parse a portion of a message or parse the message completely. If there are multiple Receive Rules defined, each one executes in sequence. Namely, a first Receive Rule may start parsing the bytes of a message at the point/position where the previous Receive Rule ended. Each Receive Rule completes its parsing task before the next one is applied.
As indicated above, one type of Parse Rule includes a Token Parse Rule. Many text based protocols, such as HTTP, SMTP and applications based on HTTP, rely on predefined tokens for delimiting the information carried in packets. For example, an HTTP packet can have header lines that start with “Set-Cookie” and end with CR-LF (“\r\n”). Similarly, the packet may have header lines that start with “Content-Type” and end with a CR-LF that conveys certain information to the recipient. Such protocols do not define the number of bytes contained within the tokens or where in the packet these tokens can appear. Generally, a Token Parse Rule will have two delimiters. A first delimiter for the start of the data and a second delimiter for the end of the data the parse rule is interested in.
In one embodiment, a Token Parse Rule may be configured to search an incoming stream of bytes for the first or starting delimiter and to operate/process (e.g., store or discard) the bytes starting from the first byte after the end of the starting delimiter until the ending delimiter is seen. The bytes may be stored if there are variable references in the parse rule. The bytes may be discarded if there are no variable references in the parse rule. The Token Parse Rule may then stop and complete operation when the ending delimiter is received and/or detected. Token Based Parsing may either include ASCII Token Parsing, where the tokens are characters from the ASCII character set, and Binary Token Parsing, which includes an approach for processing binary protocols.
Token Parse Rules can be used to receive and store bytes between two predefined (e.g., well-known) tokens. Specifically, the parse rule can be used to i) receive and store data which is classified as a “MUST”, i.e., data that should always be present in an incoming message and ii) receive and store data which is classified as “OPTIONAL”, i.e., store data in the event the token is detected. Token Parse Rules may also be used to receive and discard Bytes until a predefined (e.g., well-known) token is detected. Lastly, a particular Receive Rule is to be finished if a certain Token Parse Rule is seen. When such a Token Parse Rule matches incoming data, the Receive Rule is declared complete.
In one embodiment, Token Parse Rules include a number of attributes that may be used by an algorithm. For example, these attributes may include a StartIndicator, an EndIndicator, NoData indicator, a MustRule indicator, and a Final indicator. The StartIndicator may include a string of characters which mark the start of the data the Token Parse Rule is interested in. Notably, this attribute is optional since a Parse Rule may contain an EndIndicator with no StartIndicator. The EndIndicator includes a string of characters which mark the end of the data the Parse Rule is interested in. The NoData indicator may include a flag that indicates that no bytes should be expected between the start and end indicator. If this indicator is equal to zero (0), it means 0 or more bytes may be obtained for this Parse Rule. If the indicator is equal to one (1), it means the Parse Rule does not expect any bytes between the start and end indicator. A MustRule indicator Indicates whether encountering the tokens of this Parse Rule (e.g., the start and end indicator) is a MUST for the incoming message. If the value is equal to 1, it is a MUST. If the value is equal to 0, it is not a MUST. The Final indicator indicates whether a Parse Rule is the final rule included in an incoming message. This also means that if this Parse Rule is completed, then the particular Receive Rule (i.e., which is a collection of Parse Rules) is complete.
One approach for text based protocols where the tokens are ASCII characters is described below. The approach may also be extended to binary protocols by changing the tokens from ASCII characters to a binary stream of bytes. In one embodiment, the following message is received and is to be parsed.
Incoming Message:
GET /1b.html\r\n
Host: www.ixiacom.com\r\n
Set-Cookie:abcdef\r\n
\r\n
In a first example, the parse rule includes a StarIndicator and an EndIndicator. Specifically, the parse rule comprises:
<StartIndicator=“Host:” and EndIndicator=“\r\n”>
After applying the parse rule to the incoming message, this parse rule will parse “www.ixiacom.com”.
In a second example, the parse rule only includes an EndIndicator. Specifically, the parse rule comprises:
<StartIndicator=NULL endIndicator=“\r\n”>
After applying the parse rule to the incoming message, this parse rule will store everything up to “\r\n”. Since “\r\n” occurs multiple times in the incoming message, this Parse Rule will parse and extract different content for each “\r\n” it detects. For example, the parse rule will first extract the first line of the incoming message (i.e., the GET line), then the Host line, then the Set-Cookie line, and finally the last line.
In a third example, the parse rule includes a Final Parse Rule. Specifically, the parse rule comprises:
<StartIndicator=NULL endIndicator=“\r\n\r\n” final=“1”>
After applying the parse rule to the incoming message, this parse rule will, upon detecting the sequence “\r\n\r\n, complete the Receive Rule which contains the Parse Rule. In this example, if a Receive Rule had been defined for the header, it will be complete when the header is completely received as the sequence “\r\n\r\n” is detected. If a Parse Rule is marked as Final, the EndIndicator of that parse rule represents the last sequence of bytes of the particular message being parsed.
In a fourth example, the parse rule includes a NoData Parse Rule, which includes two portions. Specifically, the parse rule comprises:
1. <StartIndicator=NULL endIndicator=“\r\n” noData=“1”>
2. <StartIndicator=NULL endIndicator=“\r\n” noData=“0”>
Notably, the two Parse Rules are identical except for the noData flag. The difference between the two rules is that the first one (with noData=“1”) will apply only to the last line in the incoming message (i.e., the last “\r\n”) as that is the only line where “\r\n” is received with no data bytes from the last parse point. The previous three “\r\n” of the three lines of the incoming message will include data bytes, such as the “GET” line or the “Host” line when the “\r\n” token is detected. Thus, the NoData flag is useful in cases where similar delimiters are used.
In a fifth example, the parse rule includes a MUST Parse Rule, which includes two portions. Specifically, the parse rule comprises:
<StartIndicator=“Host:” and EndIndicator=“\r\n” MustRule=“1”>
The above MUST Parse Rule states that the token “Host:” followed by a “\r\n” is a MUST. If a particular Receive Rule is finished/complete and there are Must Rules that have not found/detected, a violation of the defined rules is declared and the flow is aborted. “MUST” differ from “Non-MUST” rules since the former can be viewed as something which is mandatory to receive in a message while the latter is optional.
In one embodiment, a multiple parse rule algorithm may be executed by GPE 116. In many scenarios, it is desirable to parse multiple parts of an incoming message. Therefore, a Receive Rule may contain more than one Parse Rule. Thus, a multiple parse rule algorithm may be used to apply different parse rules within a receive rule in an efficient manner. For example, the multiple parse rule algorithm may be configured to parse data as it arrives without any double parsing.
One exemplary multiple parse rule algorithm may include a first step (Step 1) of setting a parsing table state (e.g., Set Parse Table State=0 (primary), Parse State=0, Last Offset=0). The next step may involve a primary parsing table match. As used herein, a parse table includes a deterministic finite automaton that is used to process input data by a table lookup to efficiently detect single or multiple patterns/signatures. Providing multiple possible patterns yields a single lookup table that is generated once at beginning of simulation/test. This approach allows conducting a search process (e.g., case-sensitive or case-insensitive, in case of text pattern) without restricting performance when searching for multiple patterns in any order as opposed to searching for a single pattern/signature.
Returning to the multiple parse rule algorithm, a Primary Parse Table may be queried and the Parse State is updated as bytes are received (Step 2). If the Parse State indicates any string matched, the Parse Rule whose string matched in the Primary Parse Table is obtained. If the Parse Rule is a Closed Parse Rule, the algorithm proceeds to Step 4. If the Parse Rule is a Half-Closed Parse Rule, the algorithm proceeds directly to Step 6.
At Step 4, the Parse State is set to 0 and the Parse Table state is set to 1 (secondary). The Secondary Parse Table is then queried to lookup the subsequent bytes to locate the end of the End Indicator. At Step 5, the algorithm waits until the secondary Parse Table returns a match and the end Indicator of a Parse Rule is received.
At Step 6, the Parse Rule is queried to check if it is a MUST rule. If the Parse Rule is a MUST rule, the number of MUST rules executed is incremented. At Step 7, the Data_Len is computed as the number of bytes from last offset to now (e.g., Data_Len=current offset—last offset—length (end indicator)).
At Step 8, a determination is made as to whether the parse rule is final or not. If the parse rule is not final, then the algorithm returns to Step 1. Otherwise, the algorithm proceeds to Step 9 where a determination if noData=1 and Data_Len=0 or if noData=0 and Data_Len>=0. If either of these conditions are true, then the correct Final Rule is received and the algorithm proceeds to Step 10. In all other cases, the algorithm returns to Step 1.
At Step 10, the number of MUST rules executed is compared to the number of MUST rules configured in the Receive Rule. If there is a match, the Receive Rule is determined to have completed successfully. Otherwise, the Receive Rule was completed with error.
Notably, by utilizing the above algorithm, incoming data is parsed exactly once, thereby avoiding double parsing. The algorithm also affords a fast run time execution and is efficient there is no memory overhead caused by additional buffering. Moreover, any additional information in the packet is properly handled if the required number of Must Rules is obtained and the right Final Rule is obtained. Also, the order of data in incoming packets may differ since all indicators are examined in parallel.
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.
Number | Name | Date | Kind |
---|---|---|---|
5247517 | Ross et al. | Sep 1993 | A |
5327437 | Balzer | Jul 1994 | A |
5343463 | van Tetering et al. | Aug 1994 | A |
5477531 | McKee | Dec 1995 | A |
5535338 | Krause et al. | Jul 1996 | A |
5568471 | Hershey et al. | Oct 1996 | A |
5590285 | Krause et al. | Dec 1996 | A |
5600632 | Schulman | Feb 1997 | A |
5657438 | Wygodny | Aug 1997 | A |
5671351 | Wild | Sep 1997 | A |
5761486 | Watanabe | Jun 1998 | A |
5787253 | McCreery et al. | Jul 1998 | A |
5838919 | Schwaller et al. | Nov 1998 | A |
5850386 | Anderson et al. | Dec 1998 | A |
5878032 | Mirek et al. | Mar 1999 | A |
5881237 | Schwaller et al. | Mar 1999 | A |
5905713 | Anderson et al. | May 1999 | A |
5937165 | Schwaller et al. | Aug 1999 | A |
5974237 | Shurmer et al. | Oct 1999 | A |
6028847 | Beanland | Feb 2000 | A |
6044091 | Kim | Mar 2000 | A |
6061725 | Schwaller et al. | May 2000 | A |
6065137 | Dunsmore et al. | May 2000 | A |
6108800 | Asawa | Aug 2000 | A |
6122670 | Bennett et al. | Sep 2000 | A |
6148277 | Asava | Nov 2000 | A |
6157955 | Narad et al. | Dec 2000 | A |
6172989 | Yanagihara et al. | Jan 2001 | B1 |
6173333 | Jolitz | Jan 2001 | B1 |
6189031 | Badger | Feb 2001 | B1 |
6233256 | Dieterich et al. | May 2001 | B1 |
6279124 | Brouwer | Aug 2001 | B1 |
6321264 | Fletcher | Nov 2001 | B1 |
6345302 | Bennett et al. | Feb 2002 | B1 |
6360332 | Weinberg | Mar 2002 | B1 |
6363056 | Beigi et al. | Mar 2002 | B1 |
6397359 | Chandra et al. | May 2002 | B1 |
6401117 | Narad | Jun 2002 | B1 |
6408335 | Schwaller et al. | Jun 2002 | B1 |
6421730 | Narad | Jul 2002 | B1 |
6434513 | Sherman et al. | Aug 2002 | B1 |
6446121 | Shah | Sep 2002 | B1 |
6507923 | Wall et al. | Jan 2003 | B1 |
6545979 | Poulin | Apr 2003 | B1 |
6601098 | Case | Jul 2003 | B1 |
6621805 | Kondylis et al. | Sep 2003 | B1 |
6625648 | Schwaller et al. | Sep 2003 | B1 |
6625689 | Narad | Sep 2003 | B2 |
6662227 | Boyd et al. | Dec 2003 | B2 |
6708224 | Tsun et al. | Mar 2004 | B1 |
6763380 | Mayton et al. | Jul 2004 | B1 |
6789100 | Nemirovsky | Sep 2004 | B2 |
6920407 | Adamian et al. | Jul 2005 | B2 |
6950405 | Van Gerrevink | Sep 2005 | B2 |
6996772 | Justice et al. | Feb 2006 | B2 |
7006963 | Maurer | Feb 2006 | B1 |
7010782 | Narayan et al. | Mar 2006 | B2 |
7516216 | Ginsberg et al. | Apr 2009 | B2 |
7543054 | Bansod et al. | Jun 2009 | B1 |
7765313 | Jain et al. | Jul 2010 | B2 |
8010469 | Kapoor et al. | Aug 2011 | B2 |
8023410 | O'Neill | Sep 2011 | B2 |
8135657 | Kapoor et al. | Mar 2012 | B2 |
8145949 | Silver | Mar 2012 | B2 |
8341462 | Broda et al. | Dec 2012 | B2 |
8402313 | Pleis et al. | Mar 2013 | B1 |
8510600 | Broda et al. | Aug 2013 | B2 |
8522089 | Jindal | Aug 2013 | B2 |
8601585 | Beddoe et al. | Dec 2013 | B2 |
8676188 | Olgaard | Mar 2014 | B2 |
8839035 | Dimitrovich et al. | Sep 2014 | B1 |
9065556 | Popescu et al. | Jun 2015 | B2 |
9075735 | Tomlinson | Jul 2015 | B2 |
9116873 | Majumdar et al. | Aug 2015 | B2 |
9131000 | Iyer | Sep 2015 | B2 |
9178790 | Majumdar et al. | Nov 2015 | B2 |
9178823 | Majumdar et al. | Nov 2015 | B2 |
20020080781 | Gustavsson | Jun 2002 | A1 |
20030009544 | Wach | Jan 2003 | A1 |
20030012141 | Gerrevink | Jan 2003 | A1 |
20030033406 | John et al. | Feb 2003 | A1 |
20030043434 | Brachmann et al. | Mar 2003 | A1 |
20030231741 | Rancu et al. | Dec 2003 | A1 |
20050022012 | Bluestone et al. | Jan 2005 | A1 |
20060242499 | Volz | Oct 2006 | A1 |
20060268933 | Kellerer et al. | Nov 2006 | A1 |
20080285467 | Olgaard | Nov 2008 | A1 |
20080298380 | Rittmeyer et al. | Dec 2008 | A1 |
20090100296 | Srinivasan et al. | Apr 2009 | A1 |
20090100297 | Srinivasan et al. | Apr 2009 | A1 |
20100050040 | Samuels et al. | Feb 2010 | A1 |
20110238855 | Korsunsky et al. | Sep 2011 | A1 |
20110283247 | Ho et al. | Nov 2011 | A1 |
20120144226 | Yang et al. | Jun 2012 | A1 |
20120192021 | Jindal | Jul 2012 | A1 |
20120240185 | Kapoor et al. | Sep 2012 | A1 |
20120314576 | Hasegawa et al. | Dec 2012 | A1 |
20130006567 | Horn | Jan 2013 | A1 |
20130060735 | Haddy et al. | Mar 2013 | A1 |
20130111257 | Broda et al. | May 2013 | A1 |
20130208600 | Campbell et al. | Aug 2013 | A1 |
20130227092 | Maestas | Aug 2013 | A1 |
20130275606 | Iyer | Oct 2013 | A1 |
20130286860 | Dorenbosch et al. | Oct 2013 | A1 |
20130346719 | Tomlinson | Dec 2013 | A1 |
20140036700 | Majumdar et al. | Feb 2014 | A1 |
20140160927 | Majumdar et al. | Jun 2014 | A1 |
20140169177 | Popescu et al. | Jun 2014 | A1 |
20140289561 | Majumdar et al. | Sep 2014 | A1 |
Number | Date | Country |
---|---|---|
0 895 375 | Aug 2004 | EP |
Entry |
---|
Non-Final Office Action for U.S. Appl. No. 13/716,077 (Sep. 24, 2014). |
Non-Final Office Action for U.S. Appl. No. 13/447,160 (Jul. 10, 2014). |
Advisory Action for U.S. Appl. No. 13/447,160 (May 29, 2014). |
Applicant-Initiated Interview Summary for U.S. Appl. No. 13/447,160 (May 23, 2014). |
Final Office Action for U.S. Appl. No. 13/447,160 (Mar. 18, 2014). |
Interview Summary for U.S. Appl. No. 13/447,160 (Feb. 25, 2014). |
Non-Final Office Action for U.S. Appl. No. 13/447,160 (Nov. 8, 2013). |
“3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA); Physical Channels and Modulation (Release 10),” 3GPP TS 36.211, V10.3.0 (Sep. 2011). |
Abbes et al., “Protocol Analysis in Intrusion Detection Using Decision Tree,” IEEE, Proceedings of the International Conference on Information Technology: Coding and Computing (ITCC'04), pp. 1-5 (2004). |
Sleator et al., “Self-Adjusting Binary Search Trees,” Journal of the Association for Computing Machinery. vol. 32, No. 3, pp. 652-686 (Jul. 1985). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/447,160 (Apr. 30, 2015). |
Applicant-Initiated Interview Summary for U.S. Appl. No. 13/447,160 (Mar. 26, 2015). |
Advisory Action for U.S. Appl. No. 13/447,160 (Mar. 5, 2015). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/716,077 (Feb. 20, 2015). |
Nilsson et al., “The Scalable Tree Protocol—A Cache Coherence Approach for Large-Scale Multiprocessors,” IEEE, pp. 498-506 (1992). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/712,499 (Jun. 22, 2015). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/567,747 (Jun. 22, 2015). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/871,909 (Apr. 20, 2015). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/712,499 (Mar. 11, 2015). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 13/567,747 (Mar. 5, 2015). |
Non-Final Office Action for U.S. Appl. No. 13/871,909 (Nov. 20, 2014). |
Non-Final Office Action for U.S. Appl. No. 13/567,747 (Nov. 19, 2014). |
Non-Final Office Action for U.S. Appl. No. 13/712,499 (Jul. 14, 2014). |
“Ixload Specifications,” http://web.archive.org/web/20130127053319//www.ixiacom.com/products/network—test/applications/ixload/specifications/index.php. pp. 1-7, (Jan. 27, 2013). |
“A TCP Tutorial,” ssfnet.org/Exchange/tcp/tcpTutorialNotes.html, pp. 1-10 (Apr. 4, 2012). |
“IxLoad,” Solution Brief, 915-3030-01. D, Ixia, pp. 1-4 (Feb. 2012). |
Notice of Allowance and Fee(s) Due for U.S. Appl. No. 11/462,351 (Feb. 6, 2009). |
Restriction Requirement for U.S. Appl. No. 11/462,351 (Jan. 2, 2009). |
Ye et al., “Large-Scale Network Parameter Configuration Using an On-line Simulation Framework,” Technical report, ECSE Department, Rensselear Polytechnic Institute (2002). |
Business Wire, “Ixia's Web Stressing and In-Service Monitoring Products Names Best of Show Finalist at NetWorld+Interop 2001, Atlanta,” 2 pages (Sep. 10, 2001). |
PRNewsWire, “Caw Network Doubles Performance of Real-World Capacity Assessment Appliance Suite: WebAvalanche and WebReflector Now Generate and Respond to 20,000+ HTTP requests per Second With Over One Million Open Connections,” 2 pages (Sep. 10, 2001). |
Caw Networks, Inc. and Foundry Networks, Inc., “Caw Networks Performance Brief: Caw Networks and Foundry Networks 140,000 Transactions per Second Assessment,” 1 page (Sep. 7, 2001). |
MacVittie, “Online Only: CAW's WebReflector Makes Load-Testing a Cakewalk,” Network Computing, 2 pages (Sep. 3, 2001). |
Business Wire, “REMINDER/Caw Networks to Spotlight WebAvalanche 2.0 and WebReflector At Networld+Interop,” 2 pages (May 8, 2001). |
“Caw Networks Unveils New Web-Stressing Appliance,” press release from Caw Networks, Inc., 2 pages (Mar. 5, 2001). |
Ye et al., “Network Management and Control Using collaborative On-Line Simulation,” Proc. IEEE International Conference on Communications ICC2001, Helsinki, Finland, pp. 1-8 (2001). |
Business Wire, “NetlQ's Chariot 4.0 Goes Internet-Scale; ASPs and Service Providers Can Conduct Tests With Up to 10,000 Connections; New Visual Test Designer Simplifies Testing of All Sizes,” 1 page (Oct. 23, 2000). |
Business Wire, “Spirient Communications TeraMetrics and NetlQ's Chariot Work Together to Create First Complete Network Performance Analysis Solution,” 2 pages (Sep. 25, 2000). |
Kovac, “Validate your equipment performance—Netcom Systems' SmartBits—Hardware Review—Evaluation,” Communications News, 2 pages (May 2000). |
Marchette, “A Statistical Method for Profiling Network Traffic,” USENIX (Apr. 12-19, 1999). |
Cooper et al., “Session traces: an enhancement to network simulator,” Performance, computing and Communications Conference, Scottsdale, AZ (Feb. 1, 1999). |
San-qi, et al., “SMAQ: A Measurement-Based Tool for Traffic Modeling and Queuing Analysis Part I; Design methodologies and software architecture,” IEEE Communications Magazine, pp. 56-65 (Aug. 1, 1998). |
San-qi, et al., “SMAQ: A Measurement-Based Tool for Traffic Modeling and Queuing Analysis Part II; Network Applications,” IEEE Communications Magazine, pp. 66-77 (Aug. 1, 1998). |
Mneimneh, “Computer Networks Flow control with TCP,” pp. 1-5 (Publication Date Unknown). |
Final Office Action for U.S. Appl. No. 13/447,160 (Dec. 19, 2014). |
Dutta et al., “A Tight Lower Bound for Parity in Noisy Communcations Networks,” Tata Institute of Fundamental Research, pp. 1056-1065 (2008). |
Number | Date | Country | |
---|---|---|---|
20140173094 A1 | Jun 2014 | US |