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]
