Send "corrected" timestamps to better calculate RTT
This commit is contained in:
+5
-3
@@ -54,9 +54,11 @@ Packet Connection::new_packet( string &s_payload )
|
|||||||
{
|
{
|
||||||
uint16_t outgoing_timestamp_reply = -1;
|
uint16_t outgoing_timestamp_reply = -1;
|
||||||
|
|
||||||
if ( timestamp() - saved_timestamp_received_at < 25 ) {
|
uint64_t now = timestamp();
|
||||||
/* we have a recent received timestamp */
|
|
||||||
outgoing_timestamp_reply = saved_timestamp;
|
if ( now - saved_timestamp_received_at < 1000 ) { /* we have a recent received timestamp */
|
||||||
|
/* send "corrected" timestamp advanced by how long we held it */
|
||||||
|
outgoing_timestamp_reply = saved_timestamp + (now - saved_timestamp_received_at);
|
||||||
saved_timestamp = -1;
|
saved_timestamp = -1;
|
||||||
saved_timestamp_received_at = 0;
|
saved_timestamp_received_at = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ TransportSender<MyState>::TransportSender( Connection *s_connection, MyState &in
|
|||||||
template <class MyState>
|
template <class MyState>
|
||||||
unsigned int TransportSender<MyState>::send_interval( void )
|
unsigned int TransportSender<MyState>::send_interval( void )
|
||||||
{
|
{
|
||||||
int SEND_INTERVAL = lrint( ceil( (connection->get_SRTT() - ACK_DELAY) / 2.0 ) );
|
int SEND_INTERVAL = lrint( ceil( connection->get_SRTT() / 2.0 ) );
|
||||||
if ( SEND_INTERVAL < SEND_INTERVAL_MIN ) {
|
if ( SEND_INTERVAL < SEND_INTERVAL_MIN ) {
|
||||||
SEND_INTERVAL = SEND_INTERVAL_MIN;
|
SEND_INTERVAL = SEND_INTERVAL_MIN;
|
||||||
} else if ( SEND_INTERVAL > SEND_INTERVAL_MAX ) {
|
} else if ( SEND_INTERVAL > SEND_INTERVAL_MAX ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user