1. Linux TCP congestion control mechanism to date
I don't understand the TCP congestion control algorithm implementation of other platforms, but I understand Linux, so far, after bbr has just been introduced, Linux congestion control algorithm Divided into two categories:
Conservative mode
Bbr before Reno, including Reno, NewReno, ... principle almost unchanged, these algorithms have two characteristics: 1). Feedback difference with Reno as an example After the TCP sender receives the ACK in the congestion avoidance phase, it unconditionally increases cwnd by 1/cwnd. After receiving the ACK in the slow start phase, cwnd increases by 1. This is unfounded, but Reno has no better practice. Can only guess! Later Westwood, Vegas, BIC and other algorithms, a little smarter than Reno/NewReno, but still a fool! Later, CUBIC made a tall window-increasing mechanism based on the cubic equation of convexity and concave curve. It seems to be very "due", and it is very "manager", but still can not use the Internet freely. Bandwidth, on the contrary, when encountering anomalies, such as packet loss and congestion, the response is too conservative, and it tends to be fierce on a conservative route, that is, it is fiercely conservative to reduce the congestion window. What is more tragic is that this window is falling. Not subject to these algorithms. 2). The congestion algorithm is taken over when the TCP congestion control mechanism finds a packet loss (ie, RTO or N repeated ACKs, etc.), and TCP completely takes over the congestion control algorithm and controls the congestion window itself. However, the problem is that this so-called packet loss may not be a real packet loss. This is just a TCP packet loss. This is the packet loss judgment mechanism 30 years ago... Is it really lost? Not necessarily! However, as long as TCP considers packet loss, it will take over the congestion control algorithm (at least on Linux...). This makes me not happy! I have modified the PRR logic of Linux TCP, and only ask for the window reduction process is not so fierce... Linux TCP has been exhausted for this window reduction, and has experienced various programs, such as Halving Rate, PRR, etc. Isn't it directly handed over to the congestion control algorithm? ?
In general, the congestion control logic before bbr is divided into two phases, the normal phase and the abnormal phase. In the normal phase, the TCP modular congestion control algorithm dominates the window adjustment. In the abnormal phase, the TCP core congestion control state machine takes over the window calculation from the congestion control algorithm. In the Linux implementation, this is caused by the following logic. Represented:
static void tcp_cong_control(struct sock *sk, u32 ack, u32 acked_sacked, int flag){ if (tcp_in_cwnd_reduction(sk)) { //Exception mode /* Reduce cwnd if state mandates *///Before entering the window fall logic, tcp_fastretrans_alert is also needed to collect exception information and handle the exception process. Tcp_cwnd_reduction(sk, acked_sacked, flag); } else if (tcp_may_raise_cwnd(sk, flag)) { //Normal mode or safe exception mode! /* Advance cwnd if state allows */tcp_cong_avoid(sk, ack, acked_sacked); } tcp_update_pacing_rate(sk);} Whether to enter the exception mode of tcp_cwnd_reduction is determined by the following logic:if (tcp_ack_is_dubious(sk, Flag)) { is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED
Need to achieve: There are two servers: "192.168.201.236" and "192.168.201.
1, role: list the contents of the directory; 2, format: ls [options] [files] [options] is
ls is simply a list of file names in the directory, ll more detailed list of file types, file owner
Press Esc when booting up to bring up the GRUB menu. Enter advanced mode. After selecting
Ubuntu users and permissions (3)
Linux lftp connection ftp server upload download command
Linux advanced skills: cluster's keepalived
Linux forgot the root password solution
Set the permissions of multiple groups on a file under linux (setfaclgetfacl) method - management
How to share windows with virtual machine linux
"Device eth0 does not seem to be pres
Linux command after the run -nohup
About multithreading under Linux
What should I do if the text is incomplete after Win10 is updated to 9860? After the release of the
Porting System Restore for Windows 2003
How to close the new notification of Win10 Hide the new notification icon method of Win10 taskbar
Windows7 plugs in USB does not automatically play the solution
How to use the trial key to activate the
Win7 video file bilingual parallel problem solving method
Web interface remote maintenance Win 2003 server
How to quickly close the Windows Hello function of the Win10 system