liqinhuixm opened a new pull request, #9262:
URL: https://github.com/apache/nuttx/pull/9262

   Change-Id: I2db1b2e44484a08a5f367055cf935c0f2aeac33b
   
   ## Summary
   NewReno congestion control algorithm is added in order to solve the problem 
of network congestion breakdown. NewReno congestion control includes slow 
start, collision avoidance, fast retransmission, and fast recovery. The 
implementation refers to RFC6582 and RFC5681.
   
   In addition, we optimize the congestion algorithm. In the conflict avoidance 
stage, the maximum congestion window max_cwnd is used to limit the excessive 
growth of cwnd and prevent network jitter caused by congestion. Maximum 
congestion window max_cwnd is updated with the current congestion window cwnd 
and the update weight is 0.875 when an RTO timeout occurs.
   
   ## Impact
   - Adds the configuration macro NET_TCP_CC_NEWRENO for NewReno, which relies 
on the fast retransmission macro NET_TCP_FAST_RETRANSMIT.
   - Add duplicate detection (dupacks) and use it to replace duplicate 
detection (wb_nack) in the  Fast Retransmission function.
   ## Testing
   We test the NewReno using sim in ubuntu 22.04 environment. Simulate a 
congestion environment by limiting the total uplink bandwidth and running tcp 
streams over the two SIMS.
   1. Compile: Open NewReno macro NET_TCP_CC_NEWRENO and iperf3 before 
compiling.
   2. Environment configuration: Open sim network, start two simulators and set 
them with different ip addresses; Use the tc tool to limit the inbound 
bandwidth of nuttx0.
   3. Stream Testing: Open two iperf3 servers on ubuntu, using different ports; 
In both sim, start the iperf3 client respectively.
   4. Comparison Testing: Compares the test results of enabling and disabling 
NewReno.
   
   The test results showed that the total network throughput was significantly 
increased when NewReno congestion control was enabled, which was close to the 
actual total network bandwidth, and the rates of both sim devices were stable.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to