fix rtt-qcn logic error

This commit is contained in:
cyp0633 2024-04-08 22:08:32 +08:00
parent de9a22c612
commit a548d5d88a
Signed by: cyp0633
GPG Key ID: CF90D09FB1FDCE45
1 changed files with 7 additions and 10 deletions

View File

@ -2131,8 +2131,8 @@ RdmaHw::GetCwndSwift(Ptr<RdmaQueuePair> qp,
void
RdmaHw::HandleAckRttQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch) const
{
auto rtt = Simulator::Now().GetTimeStep() - ch.ack.ih.GetTs();
auto ecn = false;
uint64_t rtt = Simulator::Now().GetTimeStep() - ch.ack.ih.GetTs();
bool ecn = false;
if (rtt <= rtt_qcn_tmin)
{
ecn = false;
@ -2141,10 +2141,7 @@ RdmaHw::HandleAckRttQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch)
{
auto thresh = (rtt - rtt_qcn_tmin) * 1000.0 / (rtt_qcn_tmax - rtt_qcn_tmin);
auto rand_num = rand() % 1000;
if (rand_num <= thresh)
{
ecn = true;
}
ecn = rand_num < thresh;
}
else
{
@ -2157,22 +2154,22 @@ RdmaHw::HandleAckRttQcn(Ptr<RdmaQueuePair> qp, Ptr<Packet> p, CustomHeader& ch)
{
if (ecn)
{
cwnd += rtt_qcn_alpha * m_mtu;
cwnd *= 1 - rtt_qcn_beta;
}
else
{
cwnd *= 1 - rtt_qcn_beta;
cwnd += rtt_qcn_alpha * m_mtu;
}
}
else
{
if (ecn)
{
cwnd += m_mtu * 1.0 / cwnd;
cwnd -= 0.5 * m_mtu;
}
else
{
cwnd -= 0.5 * m_mtu;
cwnd += m_mtu * 1.0 / cwnd;
}
}
std::cout << "[RTT-QCN] node: " << m_node->GetId() << ", cwnd: " << qp->m_win << "->" << cwnd