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 corresponding 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.
1 Assignment
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.
154 Citations
67 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 corresponding 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. - 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, 29, 30, 31, 32)
-
-
33. 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. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52)
-
-
53. 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.
-
-
54. A computer-readable medium having computer-executable instructions for performing steps comprising:
-
establishing a connection to a 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.
-
-
55. A method of enabling establishment of a peering session having a high quality of service in a network, comprising the steps of:
-
receiving a request for contact information for peers currently available on the network, the request originating from a first peer having IP address information associated therewith;
analyzing stored data records of peers on the network to identify those peers on the network which could satisfy the request;
sorting the identified data records of the peers on the network that could satisfy the request by stored quality of service information relative to the IP address information of the first peer to form a peer contact list;
transmitting the peer contact list to the first peer. - View Dependent Claims (56, 57, 58, 59, 60, 61, 62, 63)
-
-
64. A computer-readable medium having computer-executable instructions for performing steps comprising:
-
receiving a request for contact infonnation for peers currently available on the network, the request originating from a first peer having IP address information associated therewith;
analyzing stored data records of peers on the network to identify those peers on the network which could satisfy the request;
sorting the identified data records of the peers on the network that could satisfy the request by stored quality of service information relative to the IP address information of the first peer to form a peer contact list;
transmitting the peer contact list to the first peer.
-
-
65. An UDP-based packet, comprising:
-
a first field containing a command type;
a second field containing a payload length;
a third field containing offset information for a payload when one packet cannot carry an entire command;
a fourth field containing a sequence number;
a fifth field containing a first identifier of a source entity;
a sixth field containing a second identifier of a destination entity; and
a seventh field containing payload data.
-
-
66. An UDP-based probing packet, comprising:
-
a first field containing a packet type;
a second field containing a probing peer identification;
a third field containing a probed peer identification;
a fourth field containing a probing pair number;
a fifth field containing a pair offset;
a sixth field containing a number of pairs needed to be sent back from the probed peer; and
a seventh field containing timestamp information relating to when the UDP-based probing packet is sent from a probing peer. - View Dependent Claims (67)
-
Specification