Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
First Claim
1. A method of probing quality of service parameters in a peer-to-peer network between at least a first peer and a second peer, comprising the steps of:
- generating by the first peer a first and a second probing packet, each probing packet including a first timestamp;
sending the first probing packet and the second probing packet to the second peer, the first timestamp of each probing packet indicating a time at which that probing packet is sent;
receiving from the second peer a first acknowledgement packet and a second acknowledgement packet corresponding to the first probing packet and the second probing packet, each of said acknowledgement packets including the first timestamp of the probing packet to which the acknowledgement packet corresponds, a second timestamp indicating a time at which the correspanding probing packet arrived at the second peer, and a third timestamp indicating a time at which the acknowledgement packet was sent by the second peer; and
calculating quality of service parameters for the network as a function of the first timestamp, the second timestamp, and the third timestamp of both the first acknowledgement packet and the second acknowledgement packet;
wherein the step of generating the first probing packet and the second probing packet comprises the steps of generating the first probing packet of a first size, generating the second probing packet of a second size, and wherein the first size and the second size are equal;
wherein the step of calculating quality of service parameters for the network comprises the step of calculating bottleneck bandwidth for a first path from the first peer to the second peer as a function of the first size divided by the difference between the second timestamp of the first acknowledgement packet and the second timestamp of the second acknowledgement packet; and
wherein the steps of generating, sending, receiving, and calculating bottleneck bandwidth are repeated approximately 20 times, further comprising the step of filtering out pairs of acknowledgement packets that are interlaced with other packets.
2 Assignments
0 Petitions
Accused Products
Abstract
A peer-to-peer (P2P) probing/network quality of service (QoS) analysis system utilizes a UDP-based probing tool for determining latency, bandwidth, and packet loss ratio between peers in a network. The probing tool enables network QoS probing between peers that connect through a network address translator. The list of peers to probe is provided by a connection server based on prior probe results and an estimate of the network condition. The list includes those peers which are predicted to have the best QoS with the requesting peer. Once the list is obtained, the requesting peer probes the actual QoS to each peer on the list, and returns these results to the connection server. P2P probing in parallel using a modified packet-pair scheme is utilized. If anomalous results are obtained, a hop-by-hop probing scheme is utilized to determine the QoS of each link. In such a scheme, differential destination measurement is utilized.
-
Citations
50 Claims
-
1. A method of probing quality of service parameters in a peer-to-peer network between at least a first peer and a second peer, comprising the steps of:
-
generating by the first peer a first and a second probing packet, each probing packet including a first timestamp; sending the first probing packet and the second probing packet to the second peer, the first timestamp of each probing packet indicating a time at which that probing packet is sent; receiving from the second peer a first acknowledgement packet and a second acknowledgement packet corresponding to the first probing packet and the second probing packet, each of said acknowledgement packets including the first timestamp of the probing packet to which the acknowledgement packet corresponds, a second timestamp indicating a time at which the correspanding probing packet arrived at the second peer, and a third timestamp indicating a time at which the acknowledgement packet was sent by the second peer; and calculating quality of service parameters for the network as a function of the first timestamp, the second timestamp, and the third timestamp of both the first acknowledgement packet and the second acknowledgement packet; wherein the step of generating the first probing packet and the second probing packet comprises the steps of generating the first probing packet of a first size, generating the second probing packet of a second size, and wherein the first size and the second size are equal; wherein the step of calculating quality of service parameters for the network comprises the step of calculating bottleneck bandwidth for a first path from the first peer to the second peer as a function of the first size divided by the difference between the second timestamp of the first acknowledgement packet and the second timestamp of the second acknowledgement packet; and wherein the steps of generating, sending, receiving, and calculating bottleneck bandwidth are repeated approximately 20 times, further comprising the step of filtering out pairs of acknowledgement packets that are interlaced with other packets. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; and further comprising the step of receiving a probing request from a peer, and immediately responding to the probing request; and further comprising the step of registering receipt of the probing request from the peer with the connection server; wherein the step of probing the plurality of peers comprises the steps of; generating a probing packet pair; transmitting the probing packet pair to each of the peers in parallel; and recording a first and a second timestamp corresponding to a time when each packet in the probing packet pair were transmitted.
-
-
29. A method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; wherein the step of probing the plurality of peers comprises the steps of; generating a probing packet pair; transmitting the probing packet pair to each of the peers in parallel; and recording a first and a second timestamp corresponding to a time when each packet in the probing packet pair were transmitted. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44)
-
-
45. A method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; wherein the step of probing the plurality of peers is unsuccessful for at least one peer, further comprising the step of analyzing hop-by-hop characteristics for a path to the at least one peer for which the step of probing is unsuccessful. - View Dependent Claims (46)
-
-
47. A computer-readable medium having computer-executable instructions for performing steps comprising:
-
generating a first and a second probing packet, each probing packet including a first timestamp; sending the first probing packet and the second probing packet to a peer, the first timestamp of each probing packet indicating a time at which that probing packet is sent; receiving from the peer a first acknowledgement packet and a second acknowledgement packet corresponding to the first probing packet and the second probing packet, each of said acknowledgement packets including the first timestamp of the probing packet to which the acknowledgement packet corresponds, a second timestamp indicating a time at which the corresponding probing packet arrived at the peer, and a third timestamp indicating a time at which the acknowledgement packet was sent by the peer; and calculating quality of service parameters for the network as a function of the first timestamp, the second timestamp, and the third timestamp of both the first acknowledgement packet and the second acknowledgement packet; wherein the step of generating the first probing packet and the second probing packet comprises the steps of generating the first probing packet of a first size, generating the second probing packet of a second size, and wherein the first size and the second size are equal; wherein the step of calculating quality of service parameters for the network comprises the step of calculating bottleneck bandwidth for a first path to the peer as a function of the first size divided by the difference between the second timestamp of the first acknowledgement packet and the second timestamp of the second acknowledgement packet; and wherein the steps of generating, sending, receiving, and calculating bottleneck bandwidth are repeated approximately 20 times, further comprising the step of filtering out pairs of acknowledgement packets that are interlaced with other packets.
-
-
48. A computer-readable medium having computer-executable instructions for performing a method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, the method comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; and further comprising the step of receiving a probing request from a peer, and immediately responding to the probing request; and further comprising the step of registering receipt of the probing request from the peer with the connection server; wherein the step of probing the plurality of peers comprises the steps of; generating a probing packet pair; transmitting the probing packet pair to each of the peers in parallel; and recording a first and a second timestamp corresponding to a time when each packet in the probing packet pair were transmitted.
-
-
49. A computer-readable medium having computer-executable instructions for performing a method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, the method comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; wherein the step of probing the plurality of peers comprises the steps of; generating a probing packet pair; transmitting the probing packet pair to each of the peers in parallel; and recording a first and a second timestamp corresponding to a time when each packet in the probing packet pair were transmitted.
-
-
50. A computer-readable medium having computer-executable instructions for performing a method of establishing a network session with one of a plurality of peers which provides the best quality of service, the network including at least one connection server, the method comprising the steps of:
-
establishing a connection to the connection server; requesting peer contact information from the connection server; receiving the peer contact information from the connection server, the peer contact information containing contact information for a plurality of peers; probing the plurality of peers; determining quality of service parameters for each of the plurality of peers; selecting one of the peers which has the best quality of service; and establishing a peering session with the one of the peers; wherein the step of probing the plurality of peers is unsuccessful for at least one peer, further comprising the step of analyzing hop-by-hop characteristics for a path to the at least one peer for which the step of probing is unsuccessful.
-
Specification