tcp: cc algos handle cwnd on congestion signal

Type: refactor

Change-Id: I15b10a22d0d0b83075a0eef5ef8c09cf76989866
Signed-off-by: Florin Coras <fcoras@cisco.com>
This commit is contained in:
Florin Coras
2019-09-03 12:37:11 -07:00
committed by John Lo
parent fa20d4c537
commit 8b4114e52f
3 changed files with 11 additions and 12 deletions

View File

@@ -103,6 +103,10 @@ cubic_congestion (tcp_connection_t * tc)
cd->w_max = w_max;
tc->ssthresh = clib_max (tc->cwnd * beta_cubic, 2 * tc->snd_mss);
tc->cwnd = tc->ssthresh;
if (!tcp_opts_sack_permitted (&tc->rcv_opts))
tc->cwnd += 3 * tc->snd_mss;
}
static void

View File

@@ -1367,20 +1367,9 @@ tcp_cc_handle_event (tcp_connection_t * tc, tcp_rate_sample_t * rs,
}
tcp_cc_init_congestion (tc);
tcp_cc_rcv_cong_ack (tc, TCP_CC_DUPACK, rs);
if (tcp_opts_sack_permitted (&tc->rcv_opts))
{
tc->cwnd = tc->ssthresh;
scoreboard_init_high_rxt (&tc->sack_sb, tc->snd_una);
}
else
{
/* Post retransmit update cwnd to ssthresh and account for the
* three segments that have left the network and should've been
* buffered at the receiver XXX */
tc->cwnd = tc->ssthresh + 3 * tc->snd_mss;
}
scoreboard_init_high_rxt (&tc->sack_sb, tc->snd_una);
/* Constrain rate until we get a partial ack */
pacer_wnd = clib_max (0.1 * tc->cwnd, 2 * tc->snd_mss);

View File

@@ -19,6 +19,12 @@ static void
newreno_congestion (tcp_connection_t * tc)
{
tc->ssthresh = clib_max (tcp_flight_size (tc) / 2, 2 * tc->snd_mss);
tc->cwnd = tc->ssthresh;
/* Post retransmit update cwnd to ssthresh and account for the
* three segments that have left the network and should've been
* buffered at the receiver XXX */
if (!tcp_opts_sack_permitted (&tc->rcv_opts))
tc->cwnd += 3 * tc->snd_mss;
}
static void