安卓cpu优化 tcp拥塞算法cubic和reno怎么选择
答案:2 悬赏:50 手机版
解决时间 2021-03-12 11:53
- 提问者网友:相思似海深
- 2021-03-11 17:59
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-03-11 18:50
1. 上述具体的论文可以参考:CUBIC: A New TCP-Friendly High-Speed TCP Variant
2. 1. tcp cubic数学模型
3. CUBIC在设计上简化了BIC-TCP的窗口调整算法,在BIC-TCP的窗口调整中会出现一个凹和凸(这里的凹和凸指的是数学意义上的凹和凸,凹函数/凸函数)的增长曲线,CUBIC使用了一个三次函数(即一个立方函数),在三次函数曲线中同样存在一个凹和凸的部分,该曲线形状和BIC-TCP的曲线图十分相似,于是该部分取代BIC-TCP的增长曲线。另外,CUBIC中最关键的点在于它的窗口增长函数仅仅取决于连续的两次拥塞事件的时间间隔值,从而窗口增长完全独立于网络的时延RTT,之前讲述过的HSTCP存在严重的RTT不公平性,而CUBIC的RTT独立性质使得CUBIC能够在多条共享瓶颈链路的TCP连接之间保持良好的RRTT公平性。
4. 来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β,当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax,紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。
5.
6. 窗口的增长函数如下:
7. W(t) = C * (t-K)3 + Wmax, 其中C和β为常量。
8. t为当前时间距上一次窗口减小的时间差,而K就代表该函数从W增长到Wmax的时间周期,。
9. 当收到ACK后,CUBIC计算利用该算法计算下一个RTT内的窗口增长速度,即计算W(t+RTT),该值将作为cwnd的目标值,根据cwnd的大小,CUBIC将进入三种不同模式,如果cwnd会小于在标准TCP下经过上次拥塞之后的时刻t窗口将会达到的值(该值是通过标准TCP的窗口增长函数计算出来的),那么CUBIC就处于标准TCP模式,如果小于Wmax,那么位于凹阶段的,如果大于Wmax,那么处于凸阶段。
10. tcp cubic 内核源代码调用逻辑
11. CUBIC整体架构调用的逻辑如下:
12. 1. 连接每收到一个ack,则调用tcp_ack
13. 2. tcp_ack会调用bictcp_acked,用来更新cnt和delayed_ack(用来消除delay包的影响)
14. 3. tcp_ack会调用bictcp_cong_avoid,这是分两种情况:
15. (1)snd_cwnd小于慢启动阈值,处于慢启动阶段,则调用tcp_slow_start
16. (2)snd_cwnd大于慢启动阈值,处于拥塞避免阶段,则调用bictcp_update来更新bictcp,再调用tcp_cong_avoid_ai
17. 4. tcp_ack中如果检测到丢包,进入拥塞处理阶段,则调用bictcp_recalc_ssthresh来更新慢启动阈值
18. 5. tcp_ack中完成丢包重传后,退出拥塞处理阶段,则调用bictcp_undo_cwnd来更新
19. 快速重传:tcp_ack中的丢包检测,即检测到连续3个重复ACK。
20. 快速恢复:bictcp_undo_cwnd,直接把snd_cwnd更新为max(snd_cwnd,last_max_cwnd),和掉包前相差不大。
2. 1. tcp cubic数学模型
3. CUBIC在设计上简化了BIC-TCP的窗口调整算法,在BIC-TCP的窗口调整中会出现一个凹和凸(这里的凹和凸指的是数学意义上的凹和凸,凹函数/凸函数)的增长曲线,CUBIC使用了一个三次函数(即一个立方函数),在三次函数曲线中同样存在一个凹和凸的部分,该曲线形状和BIC-TCP的曲线图十分相似,于是该部分取代BIC-TCP的增长曲线。另外,CUBIC中最关键的点在于它的窗口增长函数仅仅取决于连续的两次拥塞事件的时间间隔值,从而窗口增长完全独立于网络的时延RTT,之前讲述过的HSTCP存在严重的RTT不公平性,而CUBIC的RTT独立性质使得CUBIC能够在多条共享瓶颈链路的TCP连接之间保持良好的RRTT公平性。
4. 来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β,当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax,紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。
5.
6. 窗口的增长函数如下:
7. W(t) = C * (t-K)3 + Wmax, 其中C和β为常量。
8. t为当前时间距上一次窗口减小的时间差,而K就代表该函数从W增长到Wmax的时间周期,。
9. 当收到ACK后,CUBIC计算利用该算法计算下一个RTT内的窗口增长速度,即计算W(t+RTT),该值将作为cwnd的目标值,根据cwnd的大小,CUBIC将进入三种不同模式,如果cwnd会小于在标准TCP下经过上次拥塞之后的时刻t窗口将会达到的值(该值是通过标准TCP的窗口增长函数计算出来的),那么CUBIC就处于标准TCP模式,如果小于Wmax,那么位于凹阶段的,如果大于Wmax,那么处于凸阶段。
10. tcp cubic 内核源代码调用逻辑
11. CUBIC整体架构调用的逻辑如下:
12. 1. 连接每收到一个ack,则调用tcp_ack
13. 2. tcp_ack会调用bictcp_acked,用来更新cnt和delayed_ack(用来消除delay包的影响)
14. 3. tcp_ack会调用bictcp_cong_avoid,这是分两种情况:
15. (1)snd_cwnd小于慢启动阈值,处于慢启动阶段,则调用tcp_slow_start
16. (2)snd_cwnd大于慢启动阈值,处于拥塞避免阶段,则调用bictcp_update来更新bictcp,再调用tcp_cong_avoid_ai
17. 4. tcp_ack中如果检测到丢包,进入拥塞处理阶段,则调用bictcp_recalc_ssthresh来更新慢启动阈值
18. 5. tcp_ack中完成丢包重传后,退出拥塞处理阶段,则调用bictcp_undo_cwnd来更新
19. 快速重传:tcp_ack中的丢包检测,即检测到连续3个重复ACK。
20. 快速恢复:bictcp_undo_cwnd,直接把snd_cwnd更新为max(snd_cwnd,last_max_cwnd),和掉包前相差不大。
全部回答
- 1楼网友:woshuo
- 2021-03-11 20:23
是TCP的一个版本,TCP Tahoe、TCP Reno、TCP New-Reno、TCP SACK等,是当前最常用的一个版本,这些版本之间最大的区别是拥塞控制算法不一样
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯