From f1da2c177ea52cea457a325503443c4852320ffe Mon Sep 17 00:00:00 2001 From: Vivek Jain Date: Fri, 19 Jan 2018 16:49:41 +0100 Subject: [PATCH] tcp: Save minRtt in TcpSocketState --- src/internet/model/tcp-socket-base.cc | 9 ++++++--- src/internet/model/tcp-socket-base.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 536f16b8e..06e728d7c 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -262,7 +262,8 @@ TcpSocketState::TcpSocketState (void) m_rcvTimestampEchoReply (0), m_pacing (false), m_maxPacingRate (0), - m_currentPacingRate (0) + m_currentPacingRate (0), + m_minRtt (Time::Max ()) { } @@ -281,7 +282,8 @@ TcpSocketState::TcpSocketState (const TcpSocketState &other) m_rcvTimestampEchoReply (other.m_rcvTimestampEchoReply), m_pacing (other.m_pacing), m_maxPacingRate (other.m_maxPacingRate), - m_currentPacingRate (other.m_currentPacingRate) + m_currentPacingRate (other.m_currentPacingRate), + m_minRtt (other.m_minRtt) { } @@ -3223,7 +3225,8 @@ TcpSocketBase::EstimateRtt (const TcpHeader& tcpHeader) // RFC 6298, clause 2.4 m_rto = Max (m_rtt->GetEstimate () + Max (m_clockGranularity, m_rtt->GetVariation () * 4), m_minRto); m_lastRtt = m_rtt->GetEstimate (); - NS_LOG_FUNCTION (this << m_lastRtt); + m_tcb->m_minRtt = m_lastRtt.Get () < m_tcb->m_minRtt ? m_lastRtt.Get () : m_tcb->m_minRtt; + NS_LOG_FUNCTION (this << m_lastRtt << m_tcb->m_minRtt); } } diff --git a/src/internet/model/tcp-socket-base.h b/src/internet/model/tcp-socket-base.h index d757aed86..7048b5618 100644 --- a/src/internet/model/tcp-socket-base.h +++ b/src/internet/model/tcp-socket-base.h @@ -186,6 +186,7 @@ public: bool m_pacing; //!< Pacing status DataRate m_maxPacingRate; //!< Max Pacing rate DataRate m_currentPacingRate; //!< Current Pacing rate + Time m_minRtt; //!< Minimum RTT observed throughout the connection /** * \brief Get cwnd in segments rather than bytes