Patent Description:
A network engineer and/or network administrator may transmit multiple sample data packets across the link to determine an error rate of the sample data packets. A single node may receive and send thousands, tens of thousands, hundreds of thousands, millions, or more, of data packets per minute. Acceptable error rates for a node may be one dropped packet per thousand, ten thousand, hundred thousand, million, or more transmitted packets. To test the drop rate of the link, the network engineer may send thousands, tens of thousands, hundreds of thousands, millions, or more sample packets. Sending this many sample packets may take significant amounts of time to complete. This may result in limited testing capacity for the link, reducing the resolution of the test link, which may lead to uncertainty regarding the actual error rate.

<CIT> discusses, a method for measurement of a round-trip performance in a packet-switched communication network, a measurement device cooperating with the communication network generates a flow of test packets formatted according to the network protocol supported by the network and comprising the address of the measurement device as destination address. The test packets are then transmitted within a tunnel set up in the network and the measurement device generates one or more transmission parameters. At the end of the tunnel, the test packets are extracted therefrom and sent back to the measurement device by the forwarding function of the network protocol supported by the network. Upon receipt of the test packets, it generates one or more reception parameters, which are then combined with the transmission parameters to provide the round-trip performance measurement.

<CIT> relates to a system for building a packet of test data for testing a communications network comprises a characterizing component which describes one or more protocols by providing one or more rules which are used to build the packet of test data. The system also includes a packet building component for building the packet of test data in accordance with the one or more protocol descriptions, and a storage component for storing one or more packets which are built by the packet building component.

<CIT> relates to a computer network testing process to determine whether, given a network node that is unreachable by communication attempts from a controller on a control-plane network, the network node is still functioning to forward data packets on a data-plane network, or if the network node is fully nonfunctional on both the control-plane network and data-plane network. In order to make this determination, the testing process identifies a network node that is still reachable by the controller on the control-plane network, identifies a route between the controller and unreachable node, passing through the reachable node, and constructs an encapsulated test packet that is sent along this route. In response to sending the encapsulated test packet, the controller may, upon receipt of a confirmation packet, determine that the unreachable node is still functional on the data-plane network, or if no confirmation packet is received, mark the unreachable node as fully non-functional.

It is the object of the present invention to provide a method for efficiently testing the link between two network nodes.

Additional features and advantages will be set forth in the description that follows. Features and advantages of the disclosure may be realized and obtained by means of the systems and methods that are particularly pointed out in the appended claims. Features of the present disclosure will become more fully apparent from the following description and appended claims, or may be learned by the practice of the disclosed subject matter as set forth hereinafter.

In order to describe the manner in which the above-recited and other features of the disclosure can be obtained, a more particular description will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. For better understanding, the like elements have been designated by like reference numbers throughout the various accompanying figures. Understanding that the drawings depict some example embodiments, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:.

This disclosure relates to devices, systems, and methods for increasing the resolution of an error rate of a link between two network nodes. To test the error rate of the link, a single IP-in-IP encapsulated test packet may include multiple nested data packets having alternating destinations. The test packet is bounced back and forth between the first network node and the second network node over the data plane of the first network node and the second network node according to the headers of each nested data packet. If the test packet is not received at a final destination, then a nested data packet was dropped at some point between the first network node and the second network node, and the error rate may be approximately one dropped packet per the number of data packets. If the test packet is received at the final destination, then no data packets were dropped between the first network node and the second network node, and the error rate may be less than one dropped packet per the number of data packets.

Each nested data packet may represent or correspond to a single test instance of the link between the first network node and the second network node. As used herein, a test instance is a discrete test of the link between the two network nodes. When testing for connectivity errors (e.g., testing for dropped packets), a test instance is a single transmission of the test packet from a first network node to the second network node. By transmitting the test packet back and forth across the link based on alternating destinations of the nested data packets, a network engineer may test the network many times using a single test packet. This may allow the network engineer to increase the number of test instances used to test the link. Increasing the number of test instances may increase the resolution of the network test.

As used herein, IP-in-IP encapsulation protocol refers to preparing a data packet that has one or more nested data packets inside. An IP-in-IP data packet may include an initial packet header that provides generic information about the data packet, such as an initial destination and/or routing path. The initial header may include instructions for a first network node to remove the header and uncover the nested data packet encapsulated therein. The first network node may then treat the uncovered nested data packet as its own entity, disregarding the removed initial header. The nested data packet may include any information. For example, the nested data packet may include a nested header, which may include routing information, such as a destination IP address to a second network node and a source IP address of the first network node. The network node may transmit the data packet according to the nested header in the nested data packet to the second network node. The nested data packet may include instructions to remove the nested header, and the second network node may remove the nested header to find a second nested data packet having a second nested header, and the second network node may proceed to transmit the data packet according to the routing information in the second nested header. This process may be repeated until the data packet is sent to a final destination.

As used herein, a network node may include any computing device that is configured to be a part of a network. A network node may be configured to send and/or receive data packets from another connected network node. For example, a network node may include a switch, a router, a server, a personal computing device, a mobile computing device, or any other computing device.

A network node may be connected to one or more network nodes over a link. In some embodiments, two network nodes may be connected using a wired connection, a wireless connection, a satellite signal, the internet, any other connection type, and combinations thereof. In some embodiments, two network nodes may be part of a single network. In some embodiments, two network nodes may be part of separate networks. For example, a first node may belong to a first network, and a second node may belong to a second network, and information may be transferred between the first network and the second network over the link.

As used herein, the error rate of a test of the link between the two network nodes may refer to the rate at which a data packet fails to properly transfer from an origin node to a destination node. An error may include the link dropping the data packet. For example, the data packet may leave the origin node but fail to arrive at the destination node. In some examples, the data packet may fail to leave the origin node. In some embodiments, the error may include a corruption of data in the data packet that may prevent the data packet from properly arriving at the destination node. For example, a character in the destination IP address may be corrupted (e.g., changed, omitted, or added), resulting in the data packet not arriving at the destination node. In some embodiments, the error may include routing the data packet to the wrong destination. The error rate may be expressed as one error per number of packets transmitted. For example, the error rate may be <NUM> in <NUM>,<NUM>, <NUM> in <NUM>,<NUM>, <NUM> in <NUM>,<NUM>, <NUM> in <NUM>,<NUM>,<NUM>, or higher. The error rate may be tested by sending test packets until an error occurs, accounting for statistical variation. A network link may have an acceptable error rate, which may be an acceptable number of dropped packets per packets sent to maintain desired network reliability metrics.

As used herein, the reliability of a link between two network nodes may be an indication of whether a packet will be properly transmitted (e.g., transmitted without error) across the link. The reliability of the link may be related to the error rate. For example, a link having a low error rate (e.g., one error per more packets transmitted) may be more reliable than a link having a high error rate (e.g., one error per fewer packets transmitted). A reliable link may have a maximum acceptable error rate, which may be the maximum error rate allowed by a network engineer before the link is shut down for maintenance, discontinued, or upgraded with new hardware. For example, a reliable link may have a maximum acceptable error rate of <NUM> in <NUM>,<NUM>,<NUM>, <NUM> in <NUM>,<NUM>, <NUM> in <NUM>,<NUM>, <NUM> in <NUM>,<NUM>, or any value therebetween. In some examples, for a maximum error rate of <NUM> in <NUM>,<NUM>, an error rate of <NUM> in <NUM> may be higher than the maximum error rate, and an error rate of <NUM> in <NUM>,<NUM> may be lower than the maximum error rate.

As used herein, the resolution of a test of a link between two network nodes may refer to the error rate detectable on the link between the two network nodes. A high resolution test may be able to test more packets over a testing period than a low resolution test. The test resolution may be related to the available testing bandwidth over the link. For example, if a test duration is one minute, and the testing bandwidth can support transfer of <NUM> test packets per minute, then the test has a resolution of <NUM> error in <NUM> packets. Similarly, if a test duration is one hour, and the testing bandwidth can support transfer of <NUM>,<NUM> test packets per minute, then the test has a resolution of <NUM> error in <NUM>,<NUM> packets.

In some situations, a testing program or protocol has a testing resolution that is greater than the maximum error rate. In this manner, the testing program may be able to perform sufficient tests to determine if the link is reliable (e.g., if the link has an error rate of less than the maximum error rate). In some situations, the testing program has a testing resolution that is less than the maximum error rate for the link. Put another way, the testing program may not be able to transmit enough packets to determine if the link has an error rate that is less than the maximum error rate. For example, a resolution of <NUM> error in <NUM> packets is a lower resolution than a maximum error rate of <NUM> in <NUM>,<NUM>. In some examples, a resolution of <NUM> error in <NUM>,<NUM> packets is a higher resolution than the maximum error rate of <NUM> in <NUM>,<NUM>.

In accordance with embodiments of the present disclosure, to increase the resolution of a network reliability test, the test packet may be transmitted over the data plane of the first network node and the second network node. Network nodes typically include a data plane (e.g., a forwarding plane) and a control plane (e.g., a management plane). Network traffic, including data packets, is routed through the data plane. The data plane may be optimized to quickly and efficiently transfer data packets to a destination (e.g., an IP address) identified in a destination header. The destination may be the next hop in a path or a final destination. The control plane may include forwarding rules, identify network topology, and provide other access to the network node and/or the network. However, the control plane may be optimized for processing of packets and other network information, rather than high-volume and/or high-speed packet forwarding.

Conventionally, the link between two network nodes may be tested by sending test transmission over the control plane. A control plane test transmission may include sending a test packet using internet control message protocol (ICMP) over the link using the control plane. However, ICMP messages may include information and/or other processing that is not directly related to determining whether an error occurred. Furthermore, because ICMP messages are transmitted over the control plane, the number of ICMP messages transmitted over a period of time may be limited. This may result in a lower resolution of a network reliability test, thereby limiting the testable error rate.

In accordance with embodiments of the present disclosure, IP-in-IP encapsulated test packets be transmitted over the data plane of the network nodes. In this manner, the test packet may be transmitted as normal network traffic, rather than an ICMP packet. Because of the increased packet transmission rate of the data plane, the resolution of link tests according to the present disclosure may be increased. This may result in lower detectable error rates, which may allow a network engineer to more precisely determine the error rate and/or the reliability of the network link. In some embodiments, transmitting the test packets over the data plane may increase the resolution of the network test to higher than the error rate, which may further assist in determining the error rate.

As discussed herein, the number of nested data packets encapsulated in a single test packet using IP-in-IP encapsulation may be determined at least partially by a maximum packet size of the first network device or a second network device. For example, if a maximum packet size for the first network device or the second network device is <NUM>,<NUM> bytes, and a data packet size is <NUM> bytes, then the number of nested data packets encapsulated by the test packet may be <NUM> (e.g., <NUM>,<NUM> divided by <NUM>). In some embodiments, the maximum packet size may be configurable at the first network node and/or the second network node. In some embodiments, the number of nested data packets may be determined based on the lower maximum packet size of the first network node or the second network node. In some embodiments, the data packet may include any number of nested data packets, including <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, or more nested data packets. In some embodiments, the data packet may include a high volume of data packets. A high volume of data packets may be any volume of data packets that allows for a greater resolution of an error rate over the data plane than available over the control plane. In some embodiments, a high volume of data packets may include any number of nested data packets, including <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, <NUM>,<NUM>, or more nested data packets. In some embodiments, a nested data packet may be a nested IP packet. In other words, the nested data packets may include Internet Protocol (IP) headers, addresses, and other IP packet information.

According to embodiments of the present disclosure, the number of nested data packets may be greater than or equal to the maximum error rate. In this manner, a single test packet may include enough nested data packets to determine whether a network link is reliable according to the maximum error rate. For example, a single test packet may include <NUM>,<NUM> nested data packets, and the maximum error rate for a link may be <NUM> in <NUM>,<NUM>. The single test packet may therefore have a resolution that is high enough to test the reliability of the network to within the maximum error rate.

In accordance with embodiments of the present disclosure, if an expected error rate is larger than a maximum number of nested data packets in a single test packet, then the link test may include multiple test packets. Increasing the number of test packets may therefore increase the resolution of the test to greater than the number of nested data packets within a single test packet. The link test may include a combined number of nested data packets for the multiple test packets. To test the reliability of the link, the network engineer may prepare and send sufficient test packets so that the combined number of nested data packets is greater than or equal to the desired test resolution. In this manner, the network engineer may test the reliability of the network link for network links having a maximum error rate that is greater than the quantity of nested data packets in a single test packet. Furthermore, this may allow a network engineer to run multiple tests to generate statistical information for the error rate of the network link.

<FIG> is a representation of a network <NUM> including a first network node <NUM> and a second network node <NUM>. A test packet <NUM> may be transmitted across a link <NUM> between the first network node <NUM> and the second network node <NUM>. The link <NUM> may support two-way communication between the first network node <NUM> and the second network node <NUM>. In other words, the test packet <NUM> may be transmitted along the link <NUM> from the first network node <NUM> to the second network node <NUM>, and from the second network node <NUM> to the first network node <NUM>.

The test packet <NUM> may encapsulate one or more nested data packets (collectively <NUM>) according to IP-in-IP encapsulation protocol. The nested data packets <NUM> may each include a header having a destination IP address representing the first network node <NUM> and the second network node <NUM>. When the test packet <NUM> arrives at one of the network nodes <NUM>, <NUM>, the network node <NUM>, <NUM> may strip the header from the nested data packet <NUM>, revealing the next nested data packet <NUM> and associated destination IP address.

For example, the test packet <NUM> may include a first nested data packet <NUM>-<NUM> having a destination of the first network node <NUM>. When the test packet <NUM> arrives at the first network node <NUM>, a first header for the first nested data packet <NUM>-<NUM> may include an instruction to remove the first header for the first nested data packet <NUM>-<NUM>, revealing the second nested data packet <NUM>-<NUM>. The second nested data packet <NUM>-<NUM> may include a second header having a destination of the second node <NUM>. The first network node <NUM> may transmit the test packet <NUM> to the destination identified in the second header (e.g., the second network node <NUM>). The second header may include an instruction to remove the second header, revealing the third nested data packet <NUM>-<NUM>. The third nested data packet <NUM>-<NUM> may have a third header indicating a third destination of the first network node <NUM>. The second network node <NUM> may transmit the test packet to the first network node <NUM> according to the third header. This process may be repeated, bouncing the test packet <NUM> back and forth between the first network node <NUM> and the second network node <NUM> until the test packet <NUM> is transmitted to a final destination revealed in an nth (e.g., final) nested data packet <NUM>-n.

In some embodiments, the test packet <NUM> may bounce back and forth between the first network node <NUM> and the second network node <NUM> based on aligned inner headers in each of the nested data packets. In some embodiments, the destinations outlined in successive data headers may alternate between the first network node <NUM> and the second network node <NUM>. For example, the first nested data packet <NUM>-<NUM> may have a first destination of the first network node <NUM>. The second nested data packet <NUM>-<NUM> uncovered after the first nested data packet <NUM>-<NUM> may have a second destination of the second network node <NUM>. The third nested data packet <NUM>-<NUM> uncovered after the second nested data packet may have a third destination of the first network node <NUM>. A fourth nested data packet <NUM>-<NUM> uncovered after the third nested data packet <NUM>-<NUM> may have a fourth destination of the second network node <NUM>. These destinations for successive nested data packets <NUM> may continue to alternate between the first network node <NUM> and the second network node <NUM> may continue until a final destination is outlined in the nth or final nested data packet <NUM>-n.

In some embodiments, the test packet <NUM> may include at least two nested data packets <NUM> that have a destination of the first network node <NUM> and at least two nested data packets <NUM> that have a destination of the second network node <NUM>. In this manner, the test packet <NUM> may bounce back and forth multiple times between the first network node <NUM> and the second network node <NUM>.

Each nested data packet <NUM> may correspond to or represent a single test instance. Thus, by transmitting and/or bouncing the test packet <NUM> back and forth between the first network node <NUM> and the second network node <NUM>, the test packet <NUM> may include multiple test instances. In this manner, the test packet <NUM> may provide multiple test instances (e.g., equal to the number of data packets <NUM>) in a single test packet <NUM>. This may increase the amount of test instances able to be performed in a single network test.

In some embodiments, the test packet <NUM> may be prepared an originator <NUM>. In some embodiments, the originator <NUM> be any computing device in communication with the network <NUM>. For example, the test packet <NUM> may be prepared by a remote computing device and transmitted to the first network node <NUM> or the second network node <NUM>. In some examples, the test packet <NUM> may be prepared by the first network node <NUM> or the second network node <NUM>. While the originator <NUM> is shown as a separate computing device, it should be understood that the originator <NUM> may be any computing device, including the first network node <NUM> or the second network node <NUM>. Regardless, the test packet <NUM> may be prepared with a plurality of nested data packets having alternating destinations between the first network node <NUM> and the second network node.

Data may be transmitted between the first network node <NUM> and the second network node <NUM> along a data plane <NUM> and a control plane <NUM>. In some embodiments, the data plane <NUM> may be optimized for data transfer, having a high transmission bandwidth (e.g., a high number of packets sent per minute). In some embodiments, the control plane <NUM> may be optimized for data processing, and may have a low transmission bandwidth (e.g., a low number, relative to the data plane <NUM>, of packets sent per minute).

In some embodiments, the test packet <NUM> may be handled by the network <NUM> as regular network traffic. For example, regular network traffic is transmitted over the data plane <NUM>. In this manner, the test packet <NUM> may be transmitted back and forth between the first network node <NUM> and the second network node <NUM> along the data plane <NUM>. Each transfer of the test packet <NUM> from the first network node <NUM> to second network node <NUM> and from the second network node <NUM> to the first network node <NUM> represents a test instance. Because the data plane <NUM> has a higher transmission rate, transmitting the test packet <NUM> along the data plane <NUM> rather than the control plane <NUM> may increase the number of test instances that may be performed over a period of time. Put another way, transmitting the test packet over the data plane may increase the resolution of a link test, thereby increasing the maximum error that can be determined.

In some embodiments, the final nested data packet <NUM>-n may have a final destination for the test packet <NUM>. The final destination may be in communication with the originator <NUM> (e.g., the preparer or the provider) of the test packet <NUM>. In some embodiments, the final destination may be the originator <NUM> of the test packet <NUM>. In some embodiments, when the first network node <NUM> prepared the test packet <NUM>, the final destination may be the first network node <NUM>. In some embodiments, when a remote computing device prepared the test packet <NUM>, the final destination may be the remote computing device. In some embodiments, when a remote computing device prepared the test packet <NUM>, the final destination may be the first network node <NUM> or the second network node <NUM>, and the final nested data packet <NUM> may include an instruction to have the first network node <NUM> or the second network node <NUM> communicate final receipt of the test packet <NUM> to the originator <NUM>.

If the originator <NUM> receives the test packet <NUM> as the final destination, or receives notice of final receipt of the test packet <NUM>, then each test instance (represented by each nested data packet <NUM>) of the test packet <NUM> resulted in a successful transfer between the first network node <NUM> and the second node without error (e.g., without dropping the test packet <NUM>). This may provide an indication of the reliability of the network link <NUM>. For example, this may provide an indication that the network link <NUM>, accounting for statistical variation, has an error rate of less than <NUM> in n, where n represents the number of nested data packets <NUM> encapsulated by the test packet <NUM>.

If the originator <NUM> did not receive the test packet <NUM>, either as the final destination or receive notice of final receipt of the test packet <NUM>, then one test instance failed. Put another way, the test packet <NUM> was dropped during a transmission between the first network node <NUM> and the second network node <NUM>. This may be an indication that the error rate is at least <NUM> in the number of test instances. This may further provide an indication of the reliability of the link <NUM> by indicating that at least one data packet may be dropped for the quantity of nested data packets <NUM> encapsulated in the test packet <NUM>.

In some embodiments, the entire transmission of the test packet <NUM> (e.g., the bouncing back and forth of the test packet according to the alternating destinations of subsequent nested data packets <NUM>) may occur over a period of time. The period of time may be related to the transmission rate (e.g., the bandwidth) of the first network node <NUM> and/or the second network node <NUM>. In some embodiments, the period of time may be the transmission rate divided by the quantity of nested data packets <NUM>. In some embodiments, the period of time may be longer than the transmission rate divided by the quantity of nested data packets <NUM>. For example, the period of time may be at least partially based on a priority level of the test packet <NUM>. For example, the test packet <NUM> may have a low priority, and the first network node <NUM> and/or the second network node <NUM> may prioritize transmission of other network traffic over the test packet <NUM>. In some examples, the test packet <NUM> may have a regular priority, and the test packet <NUM> may be subject to the regular network traffic routing queues followed by the first network node <NUM> and/or the second network node <NUM>.

In some embodiments, the originator <NUM> (e.g., a remote computing device, the first network node <NUM>, the second network node <NUM>) may determine a testing period. The testing period may be an indication of the amount of time the originator <NUM> expects a network test to take from the initial transmission of the test packet <NUM> to the receipt of the test packet <NUM> at the final destination. In some embodiments, the testing period may be determined by identifying the expected total transition time for the test packet <NUM> to be routed back and forth between the first network node <NUM> and the second network node <NUM>. In some embodiments, the testing period may be a multiple (e.g., <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, or more) of the expected total transition time, which may account for routing delays at the first network node <NUM> and/or the second network node <NUM>.

In some embodiments, the originator <NUM> may determine that the test packet <NUM> was dropped if the test packet <NUM> has not arrived at the final destination within the testing period. As discussed herein, an error is a failed transmission of the test packet <NUM> from the first network node <NUM> to the second network node <NUM>. Therefore, if the test packet <NUM> does not transmit from the first network node <NUM> to the second network node <NUM> at any hop from the first network node <NUM> to the second network node <NUM> or from the second network node <NUM> to the first network node <NUM>, then the test packet <NUM> will not arrive at the final destination. To avoid a perpetual waiting situation, the originator <NUM> may determine that an error occurred in the transmission of the test packet <NUM> if the test packet <NUM> does not arrive at the final destination within the testing period.

In some embodiments, the originator <NUM> may provide multiple test packets <NUM> to test the reliability of the link <NUM>. For example, if a maximum error rate is <NUM> in <NUM>,<NUM>, and the maximum quantity of nested data packets <NUM> in a single test packet <NUM> is <NUM>,<NUM>, then the originator may provide at least <NUM> test packets <NUM> to test the reliability of the link <NUM>. This may result in a combined quantity of nested data packets <NUM> of <NUM>,<NUM>. Because each nested data packet <NUM> corresponds to a single test instance, then the total combined quantity of test instances for the <NUM> test packets <NUM> is <NUM>,<NUM>. If one of the test packets <NUM> does not arrive at the final destination, then the originator <NUM> may determine that that the error rate of the link <NUM> is at least <NUM> in <NUM>,<NUM>. If more than one of the test packets <NUM> do not arrive at the final destination, then the originator <NUM> may determine that the error rate of the link <NUM> is greater than <NUM> in <NUM>,<NUM>. If all of the test packets <NUM> arrive at the final destination, then the originator <NUM> may determine that the error rate of the link <NUM> is equal to or less than <NUM> in <NUM>,<NUM>.

It should be noted that the error rate of the link <NUM> may be a statistical average. For example, if the error rate of the link <NUM> is <NUM> in <NUM>,<NUM>, then, on average, for every <NUM>,<NUM> data packets transmitted over the link <NUM>, one of the data packets may be dropped. However, based on statistical variation, there is a statistical chance that, when <NUM>,<NUM> data packets are transmitted, all <NUM>,<NUM> of the data packets may be successfully transmitted. Furthermore, there is a statistical chance that more than <NUM> data packet may be dropped for <NUM>,<NUM> data packets transmitted.

To determine the reliability of the link <NUM>, the originator <NUM> may generate the test packet <NUM> with a quantity of nested data packets <NUM> to exactly test the error rate. For example, if the error rate of the link <NUM> is <NUM> in <NUM>,<NUM>, then the originator <NUM> may generate the test packet <NUM> with a quantity of <NUM>,<NUM> test instances (represented by <NUM>,<NUM> nested data packets <NUM>). If the test packet <NUM> arrives at the final destination, this may indicate that the link <NUM> is reliable. However, if the test packet <NUM> does not arrive at the final destination, it is statistically possible that the error rate is actually less than or equal to <NUM> in <NUM>,<NUM>, but that the error occurred during one of <NUM>,<NUM> test instances anyway.

In some embodiments, to statistically determine the error rate, the originator <NUM> may send multiple test packets <NUM> having a quantity of test instances that exactly test the error rate. In some embodiments, to statistically determine the error rate, the originator <NUM> may send multiple test packets <NUM> having fewer test instances than the error rate. This may help to provide the originator with samples sufficient to perform a statistical analysis on. For example, if the error rate is <NUM> in <NUM>,<NUM>, the originator <NUM> may develop <NUM>,<NUM> test packets <NUM> each having <NUM>,<NUM> nested data packets <NUM>. This may result in <NUM>,<NUM>,<NUM> test instances. Based on the number of unreturned test packets <NUM>, this quantity of test packets <NUM> may provide a greater level of precision in the determined error rate (and associated reliability) of the network.

While embodiments of the present disclosure have been described with respect to two network nodes (e.g., the first network node <NUM> and the second network node <NUM>), it should be understood that a link <NUM> between more than two network nodes may be tested using IP-in-IP encapsulated test packets <NUM>. For example, the network <NUM> may include three network nodes, the first network node <NUM>, the second network node <NUM>, and a third network node. The test packet <NUM> may be generated using alternating destinations for nested data packets <NUM>. The destinations may alternate between the first network node <NUM>, the second network node <NUM>, and the third network node. For example, a first destination may be the first network node <NUM>, a second destination may be the second network node <NUM>, and third destination may be the third network node. In some embodiments, the third network node may be in communication with the first network node <NUM>, and a fourth destination may be the first network node <NUM>, a fifth destination may be the second network node <NUM>, a sixth destination may be the third network node, and so forth.

In some embodiments, the third network node may not be in communication with the first network node <NUM>, and the fourth destination may be the second network node <NUM>, the fifth destination may be the first network node <NUM>, the sixth destination may be the second network node <NUM>, a seventh destination may be the third network node, and so forth.

Testing more than two network nodes in the same test packet <NUM> may allow a network engineer or network administrator to determine the reliability of a specific path from the first network node <NUM> to the final network node. This may help the network engineer to determine routing paths for network traffic.

<FIG> is a representation of an IP-in-IP encapsulated test packet <NUM> that has a plurality of nested data packets (collectively <NUM>). The test packet <NUM> may include an initial test packet header <NUM> that includes information about the test packet <NUM>, such as the originating entity, the origin source IP address, any other test packet information, and combinations thereof. In some embodiments, the initial test packet header <NUM> may include instructions for the initial or first destination network node to remove the initial test packet header <NUM>.

The test packet <NUM> may further include a plurality of nested data packets <NUM>. Each nested data packet <NUM> includes a destination, such as a destination IP address. The nested data packets <NUM> are provided in order. In this manner, the network node that is analyzing the test packet <NUM> may only be aware of (e.g., able to read header information) of the outermost nested data packet. Each nested data packet <NUM> may have a header that identifies the destination for the test packet <NUM>. The header may further include instructions for the destination to remove the header, exposing the nested data packet <NUM> underneath. The next nested data packet <NUM> may have a new destination, and the network node may forward the test packet <NUM> to the identified destination.

In the embodiment shown, the test packet <NUM> has a first nested data packet <NUM>-<NUM> that is exposed when the initial test packet header <NUM> is removed. The first nested data packet <NUM>-<NUM> may have a first destination of a first network node. The test packet <NUM> may be transmitted to the first network node according to the destination in the first nested data packet <NUM>-<NUM>. The first nested data packet <NUM>-<NUM> may further include instructions for the first network node to remove the header for the first nested data packet <NUM>-<NUM>, thereby exposing the second nested data packet <NUM>-<NUM>. The second nested data packet <NUM>-<NUM> may have a second destination of the second network node, and the first network node may send the test packet <NUM> to the second network node according to the second destination in the second nested data packet <NUM>-<NUM>.

As may be seen in <FIG>, this process may be repeated through the plurality of nested data packets <NUM>, including a third nested data packet <NUM>-<NUM>, a fourth nested data packet <NUM>-<NUM>, a fifth nested data packet <NUM>-<NUM>, a sixth nested data packet <NUM>-<NUM>, through an nth or final nested data packet <NUM>-n. As may be seen, the destinations shown in successive nested data packets <NUM> alternate between the first network node and the second network node. The nested data packets <NUM> are uncovered in the order shown, from left to right, such that the path taken by the test packet <NUM> follows the destinations shown in order from left to right.

To develop the test packet <NUM>, the network engineer may determine path for the test packet <NUM> to take (e.g., hop back and forth between the first network node and the second network node). The network engineer may then generate the test packet by creating a nested data packet <NUM> with a destination for each hop in the path.

The test packet <NUM> has a final destination in the final test packet <NUM>-n. In some embodiments, the final destination may be the first network node or the second network node. In some embodiments, the final destination may be a remote computing device. In some embodiments, the final destination may be the same computing device that generated or provided the test packet <NUM>. In some embodiments, the final test packet <NUM>-n may include instructions to communicate receipt of the final test packet <NUM>-n to the originator of the test packet <NUM>.

<FIG> through <FIG> are representations of a network <NUM> including a test packet <NUM> hopping back and forth between a first network node <NUM> and a second network node <NUM> across a link <NUM>, according to at least one embodiment of the present disclosure. As may be seen in <FIG>, the test packet <NUM> may be initially transmitted to the first network node <NUM> and may have an initial test packet header <NUM>. The first network node <NUM> may remove the initial test packet header <NUM> to reveal a first nested data packet <NUM>-<NUM> having a destination of the second network node <NUM>. The first network node <NUM> may then transmit the test packet <NUM> to the second network node <NUM> according to the destination of the first nested data packet <NUM>-<NUM>.

As may be seen in <FIG>, the test packet <NUM> has been transferred to the second network node <NUM>. The header for the first nested data packet <NUM>-<NUM> may include an instruction to remove the header for the first nested data packet <NUM>-<NUM>, revealing the second nested data packet <NUM>-<NUM>. The second nested data packet <NUM>-<NUM> has a second destination of the first network node <NUM>, and the second network node <NUM> may then transmit the test packet <NUM> back to the first network node <NUM>, as seen in <FIG>. The first network node <NUM> may then strip away the header of the second nested data packet <NUM>-<NUM>, revealing the third nested data packet <NUM>-<NUM> having a destination of the second network node <NUM>. The first network node <NUM> may then transmit the test packet <NUM> back to the second network node <NUM>, as seen in <FIG>. The second network node <NUM> may remove the header of the third nested data packet <NUM>-<NUM>, revealing the fourth nested data packet <NUM>-<NUM>, and then transmit the test packet <NUM> back to the first network node <NUM>, as seen in <FIG>.

This process may be repeated until the nth or final nested data packet <NUM>-n is revealed. In the embodiment shown in <FIG>, the first network node <NUM> may remove the header for the fourth nested data packet <NUM>-<NUM>, revealing the final nested data packet <NUM>-n. The first network node <NUM> may then transmit the test packet <NUM> to the final destination indicated in the final nested data packet <NUM>-n.

<FIG> is a representation of a method <NUM> for increasing a resolution of an error rate detectable on a link between a network connection between a first network node and a second network node, according to at least one embodiment of the present disclosure. The method <NUM> may be executed or performed on the network <NUM> of <FIG>. For example, the originator <NUM> of <FIG> may generate the test packet used in the method <NUM>.

According to embodiments of the present disclosure, the method <NUM> may include preparing <NUM> a test packet. The test packet may include a plurality of nested data packets, each of which correspond to a test instance. The nested data packets may each include a destination. The destinations in successive data packets may alternate between the first network node and the second network node. In some embodiments, the test packet may include at least two nested data packets that have a destination of the first network node and two nested data packets that have a destination of the second network node. In some embodiments, the test packet includes over <NUM> nested data packets that alternate destination between the first network node and the second network node. In some embodiments, the test packet may be prepared by the first network node or the second network node. In some embodiments, the test packet may be prepared at a remote location separate from the first computing device or the second computing device. In some embodiments, a quantity of the nested data packets is dependent upon a maximum packet size of the first network node and the second network node.

The method <NUM> may further include transmitting <NUM> the test packet back and forth between the first network node and the second network node across the data plane. The test packet may be transmitted <NUM> a plurality of times, based on the destination in each nested data packet. Transmitting the test packet along the data plane may increase a quantity of test instances (e.g., a quantity of nested data packets nested in the test packet). This increased quantity of test instances may increase the resolution of the error rate detectable by the network test.

In some embodiments, the method <NUM> may further include assessing <NUM> a reliability of the link. The reliability of the link may be based at least in part on whether the packet is received at a final destination. If the test packet is received at the final destination, then the link may be reliable. If the test packet does not arrive at the final destination, then the test packet did not route through each of nested data packets.

<FIG> is a representation of a method <NUM> for increasing a resolution of an error rate detectable on a link between a network connection between a first network node and a second network node, according to at least one embodiment of the present disclosure. The method <NUM> may be executed or performed on the network <NUM> of <FIG>. For example, the originator <NUM> of <FIG> may generate the test packets used in the method <NUM>.

According to embodiments of the present disclosure, the method <NUM> may include preparing <NUM> a plurality of test packets. Each test packet may include a plurality of nested data packets, each of which correspond to a test instance. The nested data packets may each include a destination. The destinations in successive data packets may alternate between the first network node and the second network node. In some embodiments, the test packet may include at least two nested data packets that have a destination of the first network node and two nested data packets that have a destination of the second network node. In some embodiments, the test packet may be prepared by the first network node or the second network node. In some embodiments, the test packet may be prepared at a remote location separate from the first computing device or the second computing device. In some embodiments, a quantity of the nested data packets is dependent upon a maximum packet size of the first network node and the second network node. In some embodiments, each test packet may be identical. In other words, each test packet of the plurality of test packets may include the same number and order of nested data packets.

The method <NUM> may further include transmitting <NUM> each test packet of the plurality of test packets back and forth between the first network node and the second network node across the data plane. Each test packet may be transmitted <NUM> a plurality of times, based on the destination in each nested data packet. Transmitting the test packet along the data plane may increase a quantity of test instances (e.g., a quantity of nested data packets nested in the test packet). This increased quantity of test instances may increase the resolution of the error rate detectable by the network test.

An error rate of the link between the first network node may be determined <NUM> based at least in part on the quantity of returned test packets that are received at the final destination. Determining the error rate of the connection includes tracking which of the test packets arrive at the final destination. In some embodiments, a resolution of the error rate is based on a quantity of the plurality of nested data packets in each test packet of the plurality of test packets.

Reference is now made to <FIG>. One or more computing devices <NUM> can be used to implement at least some aspects of the techniques disclosed herein. <FIG> illustrates certain components that can be included within a computing device <NUM>. The computing device <NUM> shown in <FIG> is an example of the network <NUM> shown in <FIG>.

The computing device <NUM> includes a processor <NUM> and memory <NUM> in electronic communication with the processor <NUM>. Instructions <NUM> and data <NUM> can be stored in the memory <NUM>. The instructions <NUM> can be executable by the processor <NUM> to implement some or all of the methods, steps, operations, actions, or other functionality that is disclosed herein. Executing the instructions <NUM> can involve the use of the data <NUM> that is stored in the memory <NUM>. Unless otherwise specified, any of the various examples of modules and components described herein can be implemented, partially or wholly, as instructions <NUM> stored in memory <NUM> and executed by the processor <NUM>. Any of the various examples of data described herein can be among the data <NUM> that is stored in memory <NUM> and used during execution of the instructions <NUM> by the processor <NUM>.

Although just a single processor <NUM> is shown in the computing device <NUM> of <FIG>, in an alternative configuration, a combination of processors (e.g., an ARM and DSP) could be used.

The computing device <NUM> can also include one or more communication interfaces <NUM> for communicating with other electronic devices. The communication interface(s) <NUM> can be based on wired communication technology, wireless communication technology, or both.

A computing device <NUM> can also include one or more input devices <NUM> and one or more output devices <NUM>. Some examples of input devices <NUM> include a keyboard, mouse, microphone, remote control device, button, joystick, trackball, touchpad, and lightpen. One specific type of output device <NUM> that is typically included in a computing device <NUM> is a display device <NUM>. Display devices <NUM> used with embodiments disclosed herein can utilize any suitable image projection technology, such as liquid crystal display (LCD), light-emitting diode (LED), gas plasma, electroluminescence, or the like. A display controller <NUM> can also be provided, for converting data <NUM> stored in the memory <NUM> into text, graphics, and/or moving images (as appropriate) shown on the display device <NUM>. The computing device <NUM> can also include other types of output devices <NUM>, such as a speaker, a printer, etc..

The various components of the computing device <NUM> can be coupled together by one or more buses, which can include a power bus, a control signal bus, a status signal bus, a data bus, etc. For the sake of clarity, the various buses are illustrated in <FIG> as a bus system <NUM>.

The techniques disclosed herein can be implemented in hardware, software, firmware, or any combination thereof, unless specifically described as being implemented in a specific manner. Any features described as modules, components, or the like can also be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the techniques can be realized at least in part by a non-transitory computer-readable medium having computer-executable instructions stored thereon that, when executed by at least one processor, perform some or all of the steps, operations, actions, or other functionality disclosed herein. The instructions can be organized into routines, programs, objects, components, data structures, etc., which can perform particular tasks and/or implement particular data types, and which can be combined or distributed as desired in various embodiments.

The term "processor" can refer to a general purpose single- or multi-chip microprocessor (e.g., an Advanced RISC (Reduced Instruction Set Computer) Machine (ARM)), a special purpose microprocessor (e.g., a digital signal processor (DSP)), a microcontroller, a programmable gate array, or the like. A processor can be a central processing unit (CPU). In some embodiments, a combination of processors (e.g., an ARM and DSP) could be used to implement some or all of the techniques disclosed herein.

The term "memory" can refer to any electronic component capable of storing electronic information. For example, memory may be embodied as random access memory (RAM), read-only memory (ROM), magnetic disk storage media, optical storage media, flash memory devices in RAM, on-board memory included with a processor, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM) memory, registers, and so forth, including combinations thereof.

As an example, the term "circuitry" can refer to one or more integrated circuits, where an integrated circuit can include a set of electronic circuits on a piece of semiconductor material (e.g., silicon). In some embodiments, circuitry can include programmable logic devices such as field programmable gate arrays (FPGAs) and/or complex programmable logic devices (CPLDs). In some embodiments, circuitry can include application specific integrated circuits (ASICs). As another example, the term "circuitry" can refer to one or more discrete electronic circuits that include individual electronic components. As another example, the term "circuitry" can refer to a digital circuit, an analog circuit, or a mixed-signal circuit. "Circuitry" can also include combinations of the foregoing.

Systems and methods according to the present disclosure may be performed using any of the technological systems described herein. Furthermore, embodiments of the present disclosure may be implemented using computing technology, hardware and software, not currently available, or which may become available in the future.

The term "determining" (and grammatical variants thereof) can encompass a wide variety of actions. For example, "determining" can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like.

Claim 1:
A method for increasing a resolution of an error rate detectable on a link (<NUM>) between a first network node (<NUM>) and a second network node (<NUM>), the method comprising:
preparing a test packet (<NUM>), wherein the test packet (<NUM>) includes a plurality of nested data packets (<NUM>), each nested data packet (<NUM>) corresponding to a test instance, each nested data packet including a destination, the destination in successive nested data packets (<NUM>) alternating between the first network node (<NUM>) and the second network node (<NUM>);
transmitting the test packet (<NUM>) back and forth between the first network node (<NUM>) and the second network node (<NUM>) across a data plane (<NUM>) a plurality of times according to the destination in each nested data packet (<NUM>) wherein the resolution of the error rate is based at least in part on a quantity of the test instances;
wherein for each transmission the first network node (<NUM>) and the second network node (<NUM>), respectively, remove a header of the test packet (<NUM>) to reveal the next nested data packet (<NUM>); and
assessing a reliability of the link (<NUM>) based at least in part on whether the test packet (<NUM>) is received at a final destination, wherein the reliability of the link (<NUM>) is based at least in part on the resolution of the error rate.