当前位置: 首页 > wzjs >正文

网站首页设计分析每日新闻播报

网站首页设计分析,每日新闻播报,做搜狗网站优化排名软,北京好的设计公司分析 RFC6937 和 tcp_cwnd_reduction 函数,再看我的 数据包守恒和拥塞控制,做对一道中学几何题就理解 PRR 算法了。 按照兑换比分析,用几何描述下面的算法: DeliveredData change_in(snd.una) change_in(SACKd) prr_delivered…

分析 RFC6937 和 tcp_cwnd_reduction 函数,再看我的 数据包守恒和拥塞控制,做对一道中学几何题就理解 PRR 算法了。

按照兑换比分析,用几何描述下面的算法:

 DeliveredData = change_in(snd.una) + change_in(SACKd)  prr_delivered += DeliveredData  pipe = (RFC 6675 pipe algorithm)  if (pipe > ssthresh) {  // Proportional Rate Reduction  sndcnt = CEIL(prr_delivered * ssthresh / RecoverFS) - prr_out  // 公式 1} else {  // Two versions of the Reduction Bound  if (conservative) { // PRR-CRB  limit = prr_delivered - prr_out  } else { // PRR-SSRB  limit = MAX(prr_delivered - prr_out, DeliveredData) + MSS  }  // Attempt to catch up, as permitted by limit  sndcnt = MIN(ssthresh - pipe, limit)  }

公式 1 变换为:

sndcnt + prr_out = CEIL(prr_delivered * ssthresh / RecoverFS)

意味着兑换比就是 β = ssthresh / RecoverFS,收到 1 个单位数据,发送 β 单位数据。trace 几何图示如下:
在这里插入图片描述

最终直到 cwnd = β·cwnd_prior 停止。但魔鬼在细节,最重要的并不是这个兑换比,而是 inflight 的变化:

static inline unsigned int tcp_left_out(const struct tcp_sock *tp)
{return tp->sacked_out + tp->lost_out;
}
/* This determines how many packets are "in the network" to the best* of our knowledge.  In many cases it is conservative, but where* detailed information is available from the receiver (via SACK* blocks etc.) we can make more aggressive calculations.** Use this for decisions involving congestion control, use just* tp->packets_out to determine if the send queue is empty or not.** Read this equation as:**      "Packets sent once on transmission queue" MINUS*      "Packets left network, but not honestly ACKed yet" PLUS*      "Packets fast retransmitted"*/
static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp)
{return tp->packets_out - tcp_left_out(tp) + tp->retrans_out;
}

inflight 本就抛除了 lost_out,如果 lost_out 太多,比如无线场景,或 DCN 大象流遭遇 incast 场景, tcp_packets_in_flight 会一下子降到 ssthresh 以下。显然在这个时候,硬要把 cwnd 提到 ssthresh 会继续丢包。这种场景下,算法重要的是后半部:

else {  // Two versions of the Reduction Bound  if (conservative) { // PRR-CRB  limit = prr_delivered - prr_out  } else { // PRR-SSRB  limit = MAX(prr_delivered - prr_out, DeliveredData) + MSS  }  // Attempt to catch up, as permitted by limit  sndcnt = MIN(ssthresh - pipe, limit)  }

这里可以看到一个强版本的数据包守恒,这是一个一比一的兑换,DeliveredData 作为可以新发送的数据量,它表示如此多的数据量在本轮被确认而离开网络了。

这就是我在昨天提到的那个问题 PRR 的 Linux 实现问题。RFC6937 并没有规定 PRR 结束之后如何做,Linux 直接将 cwnd = ssthresh 显然是不合适的。

如果管道收缩 1000 倍,cwnd 本是 5000,正常应该收缩到 cwnd = 5,然而按照 AIMD 标准算法,经历一次丢包后,cwnd 收缩到 β·cwnd,以 Reno 为例,即 cwnd = 2500,这显然还会继续丢包,幸运的是,PRR 可以一次性将 cwnd 收缩到 5,遗憾的是,Linux 将 cwnd = 5 又拉回了 cwnd = 2500。

AIMD 应对丢包无条件执行相同逻辑,它无法区分拥塞丢包还是链路随机丢包,对于拥塞丢包,固定比例降窗无疑是合适的,但对于链路随机丢包,特别是丢包率波动变化很大的情况,固定比例降窗显然不合适,drain to target 才合适,而 PRR 可以做到,with PRR,sending rate is bounded to be near delivery rate。

浙江温州皮鞋湿,下雨进水不会胖。

http://www.dtcms.com/wzjs/502848.html

相关文章:

  • 广州荔湾网站制作公司seo推广编辑
  • 受欢迎的宜昌网站建设四川seo整站优化吧
  • 可以做公众号背景图的网站网站引流推广
  • 相关网站建设免费网站推广软文发布
  • 西安英文网站建设西安抖音seo
  • 网站建设公司的市场营销方案品牌seo是什么意思
  • 风险网站如何解决办法网站制作的基本流程是什么
  • 专做民宿的网站长沙seo 优化选智投未来no1
  • 企业网站的购买方式seo搜索引擎优化入门
  • 仙游网站建设公司成都seo服务
  • 网站后台地址一般是浙江专业网站seo
  • 洛阳做网站的网络营销的方法包括哪些
  • 网站建设收费标准信息环球网疫情最新动态
  • 网站建设文案怎么设计百度url提交
  • 怎么制作一个网站百度指数官方网站
  • vue做网站前台百度首页 百度一下
  • seo整站优化哪家好廊坊seo推广
  • 做ppt选小图案的网站百度大数据查询怎么用
  • 半路出家去学计算机网站开发手机搭建网站
  • 网站正能量晚上免费软件抖音seo培训
  • 手机网站不支持下载的视频怎么下载上海网络营销
  • 1元做网站方案seo短视频发布页
  • 做外包哪个网站好一些微商引流被加方法精准客源
  • wordpress 免备案cdn重庆seo的薪酬水平
  • 国外服务器网站今日头条官网登录入口
  • 深圳精品网站设计seo查询官网
  • 深圳通公司网站google搜索引擎入口2022
  • 设计师导航网站大全高端网站建设制作
  • 企业网站建设上市公司公司如何做网络推广营销
  • wordpress模特主题海口seo网络公司