TCP拥塞控制算法之NewReno和SACK

TCP拥塞控制算法之NewReno和SACK,第1张

改进原因分析

TCP Reno 提出的快速恢复算法提高了丢失报文后的吞吐量和顽健性,但是:

仅考虑了每次拥塞发生时只丢失一个报文的情形。

实际网络中,一旦发生拥塞,路由器会丢弃大量的报文,即一次拥塞中丢失多个报文的情形很普遍。

下图是Reno算法中快速恢复状态和拥塞避免状态之间的相互转换:

所以,网络在一次拥塞中丢弃了多个报文,被TCP Reno错误地分析为传输中发生了多次拥塞。过度的窗口减小导致了传输超时的发生。因此为了提高一次拥塞中丢弃多个报文情形下TCP的性能,必须使TCP终端减少盲目削减发送窗口的行为。

New Reno:基于Reno算法的改进

NewReno TCP在Reno TCP的基础上对快速恢复算法进行修改,只有一个数据包丢失的情况下,其机制和Reno是一样的;当同时有多个包丢失时就显示出了它的优势。

Reno快速恢复算法中发送方收到一个新的ACK就退出快速恢复状态,New Reno算法中只有当所有报文都被应答后才退出快速恢复状态。

NewReno TCP添加了恢复应答判断功能,以增强TCP终端通过ACK报文信息分析报文传输状况的能力。

使TCP终端可以把一次拥塞丢失多个报文的情形与多次拥塞的情形区分开来,进而在每一次拥塞发生后拥塞窗口仅减半一次,从而提高了TCP的顽健性和吞吐量。

两个概念:部分应答(PACK)、恢复应答(RACK)

记TCP发送端恢复阶段中接收到的ACK报文(非冗余ACK)为ACKx,记在接收到ACKx时TCP终端已发出的序列号(SN)最大的报文是PKTy,如果ACKx不是PKTy的应答报文,则称报文ACKx为部分应答(Partial ACK,简称PACK);若ACKx恰好是PKTy的应答报文则称报文ACKx为恢复应答(Recovery ACK,简称RACK)。

举例来理解:

如果4、5、6号包丢了,现在只重传4,只收到了4的ACK,后面的5、6没有确认,这就是部分应答Partial ACK。如果收到了6的ACK,则是恢复应答Recovery ACK。

TCP发送端接收到恢复应答表明:经过重传,TCP终端发送的所有报文都已经被接收端正确接收,网络已经从拥塞中恢复。

NewReno发送端在收到第一个Partial ACK时,并不会立即结束Fast-recovery,而会持续地重送Partial ACK之后的数据包,直到将所有遗失的数据包重送后才结束Fast-recovery。收到一个Partial ACK时,重传定时器就复位。这使得NewReno的发送端在网络有大量数据包遗失时不需等待Timeout就能更正此错误,减少大量数据包遗失对传输效果造成的影响。

NewReno大约每一个RTT时间可重传一个丢失的数据包,如果一个发送窗口有M个数据包丢失,TCP NewReno的快速恢复阶段将持续M个RTT。

改进的快速恢复算法具体步骤:

快速恢复是基于数据包守恒的原则,即同一时刻能在网络中传输的数据包是恒定的,只有当旧数据包离开网络后,才能发送新数据包进入网络。一个重复ACK不仅意味着有一个包丢失了,还表示有发送的数据包离开了网络,已经在接收区的缓冲区中,不再占用网络资源,于是将拥塞窗口加一个数据包大小。

Reno和NewReno算法仍存在的问题?

虽然NewReno可以解决大量数据包遗失的问题,但是NewReno在每个RTT时间只能一个数据包遗失的错误。为了更有效地处理大量数据包遗失的问题,另一个解决方法就是让传送端知道哪些已经被接收端收到,但用此方法必须同时修改传送端和接收端的传送机制。

缺乏SACK算法时发送端只能选择两种恢复策略:

TCP SACK在TCP Reno基础上增加了:

当一个窗口内有多个数据包丢失时:

减少了时延,提高了网络吞吐量,使更快地从拥塞状态恢复。

SACK中加入了一个SACK选项(TCP option field),允许接收端在返回Duplicate ACK时,将已经收到的数据区段(连续收到的数据范围)返回给发送端,数据区段与数据区段之间的间隔就是接收端没有收到的数据。发送端就知道哪些数据包已经收到,哪些该重传,因此SACK的发送端可以在一个RTT时间内重传多个数据包。

整个TCP选项长度不超过40字节,实际最多不超过4组边界值。

通过一个wireshark示例来说明接收端的SACK行为:

上图中ACK确认序列号为12421,SACK的块左边界值为13801,SACK的块右边界值为15181。明确了这三个参数的数值,我们基本上就可以计算出被丢弃的数据报的序列号和长度了。通过上图所示的带有SACK的数据报文,我们可以知道被丢弃的数据报文的TCP序列号为12422,其数据长度为13801-12421=1380B。

改进的快速恢复算法:

【参考文献】:

吴文红,李向丽.TCP拥塞控制机制定量性能分析.计算机工程与应用.2008,44(18)

孙伟,温涛,冯自勤,郭权.基于TCP NewReno的稳态吞吐量分析模型.计算机研究与发展.2010

陈琳,双雪芹.TCP网络拥塞控制算法比较研究.长江大学学报.2010,3

许豫飞,TCP拥塞控制算法集齐性能评估.北京邮电大学.2005,3

刘拥民,年晓红.对SACK拥塞控制算法的研究.信息技术.2003,9

焦程波,窦睿彧,兰巨龙.无线网络中选择性重传机制性能分析与改进.计算机应用研究.2007.3

James F.Kurose,Keith W.Ross,Computer Networking A Top-Down Approach Sixth Edition.机械工业出版社

原文: https://blog.csdn.net/m0_38068229/article/details/80417503

上述具体的论文可以参考:CUBIC: A New TCP-Friendly High-Speed TCP Variant

1. tcp cubic数学模型

CUBIC在设计上简化了BIC-TCP的窗口调整算法,在BIC-TCP的窗口调整中会出现一个凹和凸(这里的凹和凸指的是数学意义上的凹和凸,凹函数/凸函数)的增长曲线,CUBIC使用了一个三次函数(即一个立方函数),在三次函数曲线中同样存在一个凹和凸的部分,该曲线形状和BIC-TCP的曲线图十分相似,于是该部分取代BIC-TCP的增长曲线。另外,CUBIC中最关键的点在于它的窗口增长函数仅仅取决于连续的两次拥塞事件的时间间隔值,从而窗口增长完全独立于网络的时延RTT,之前讲述过的HSTCP存在严重的RTT不公平性,而CUBIC的RTT独立性质使得CUBIC能够在多条共享瓶颈链路的TCP连接之间保持良好的RRTT公平性。

来看下具体细节:当某次拥塞事件发生时,Wmax设置为此时发生拥塞时的窗口值,然后把窗口进行乘法减小,乘法减小因子设为β,当从快速恢复阶段退出然后进入到拥塞避免阶段,此时CUBIC的窗口增长开始按照“凹”式增长曲线进行增长,该过程一直持续直到窗口再次增长到Wmax,紧接着,该函数转入“凸”式增长阶段。该方式的增长可以使得窗口一直维持在Wmax附近,从而可以达到网络带宽的高利用率和协议本身的稳定性。

窗口的增长函数如下:

W(t) = C * (t-K)3 + Wmax, 其中C和β为常量。

t为当前时间距上一次窗口减小的时间差,而K就代表该函数从W增长到Wmax的时间周期,。

当收到ACK后,CUBIC计算利用该算法计算下一个RTT内的窗口增长速度,即计算W(t+RTT),该值将作为cwnd的目标值,根据cwnd的大小,CUBIC将进入三种不同模式,如果cwnd会小于在标准TCP下经过上次拥塞之后的时刻t窗口将会达到的值(该值是通过标准TCP的窗口增长函数计算出来的),那么CUBIC就处于标准TCP模式,如果小于Wmax,那么位于凹阶段的,如果大于Wmax,那么处于凸阶段。

tcp cubic 内核源代码调用逻辑

CUBIC整体架构调用的逻辑如下:

1. 连接每收到一个ack,则调用tcp_ack

2. tcp_ack会调用bictcp_acked,用来更新cnt和delayed_ack(用来消除delay包的影响)

3. tcp_ack会调用bictcp_cong_avoid,这是分两种情况:

(1)snd_cwnd小于慢启动阈值,处于慢启动阶段,则调用tcp_slow_start

(2)snd_cwnd大于慢启动阈值,处于拥塞避免阶段,则调用bictcp_update来更新bictcp,再调用tcp_cong_avoid_ai

4. tcp_ack中如果检测到丢包,进入拥塞处理阶段,则调用bictcp_recalc_ssthresh来更新慢启动阈值

5. tcp_ack中完成丢包重传后,退出拥塞处理阶段,则调用bictcp_undo_cwnd来更新

快速重传:tcp_ack中的丢包检测,即检测到连续3个重复ACK。

快速恢复:bictcp_undo_cwnd,直接把snd_cwnd更新为max(snd_cwnd,last_max_cwnd),和掉包前相差不大。

Reno5 Pro本身很好评价:“这是截至目前为止天玑1000+平台卖相最好的产品,它并不面向参数党和黑 科技 认知党,试图以浪漫 科技 的理念,搭配Pro+版本的硬 科技 ,去迎合不同关注维度的消费者。”

如果大家以Reno 10X、Reno3 Pro和Reno4 Pro这三款标杆产品的配置来评价Reno5Pro,可能会有一种除了增配天玑1000+,其他啥也不是的感觉。但如果我们把定价摆出来看,会发现从Reno4Pro开始,OPPO对产品型号和定价进行了重大调整。

以Reno4系列为例,有Reno4SE、Reno4和Reno4 Pro三个型号,以全系普及Super Vooc 65W为共性卖点,覆盖了名义报价2499-4299价位段。从渠道实际销量来看,Reno4系列无疑是非常成功的。而结合Reno5和Reno5 Pro的售价,我们会发现,黑色版本,并无太多参数亮点,但是兼具天玑1000+双5G强性能Soc、173克,7.6mm超轻薄外观、4300毫安时电池,65W超闪充电这些刚性基础参数,价格卡在了3000元上方一点。我去翻了一下3000元以下的天玑1000+产品线,打着性价比旗号和学生旗舰卖点的三大神机:Redmi K30至尊纪念版、iQOO Z1和Realme X7 Pro,8+128版本定价均比Reno5 Pro黑色版本低几百元,但不是缺货,就是有一些做工和设计上的遗憾。

Reno5 Pro黑色8+128价格锚定版本,以这个定价,给那些注重性能,又对卖相有一定要求的用户一个提示,现在天玑1000+的产品的品质感已经可以做到这样了。

当然,价格锚定只是定价策略的一部分,谁也不指望这个连PPT都上不去的黑色版能卖出去多少,主要的还是OPPO自打R系列转成Reno系列之后,对消费感知和定价体系的一次新的重大调整。

Reno5 系列价格重整:浪漫+ 科技 定位的品质感电子快消品

R9和R9s创造了至今为止OPPO中高端机的销售记录,82天1000万台和2016年度全球最畅销SKU之一。回顾R9,它并不是一个堆料产品,甚至在当时相对某些网销旗舰机,R9和R9s还是有很多体验上的问题。但为什么能在全世界卖这么多,成为当年的全球TOP3?因为OPPO把这玩意当作快消品去卖,用超薄、20W Vooc快充,柔光自拍等软性感知去打动消费人群。而当年骁龙625平台的产品。除了R9S和X9S,其他基本都是ODM刻出来的东西,除了性价比,品质感和卖相几乎等于零。

Reno5 Pro重新捡起了这个定位,传承Reno4 Pro精华部分:超薄的手感、不小的电池、5W闪充,使用新工艺对外观做了进一步的创新。当然,鉴于骁龙765G实在是难堪大任,这代升级到了颇受好评的天玑1000+。

而Reno5 Pro相对Reno4 Pro在影像系统硬件底子上的缩减也是不小的,从广受好评的OIS IMX586 F1.7变成了OV64B F1.7,IMX708超广角没了,50mm的光学中焦镜也没了。为了降低这种Cost Down带来的问题,OPPO使用新的视频人像技术来对冲参数降低带来的质量损失。

显著提升了外观设计,提升了SoC性能,缩减了模组性能,匹配了刚发布的视频人像算法,最终还有相对Reno4 Pro显著降低的定价体系。

至此,Reno系列的定价策略和区间段定位清晰了:

1. 比Reno4SE屏幕、外观做工好得多的Reno5,定在Reno4SE和Reno4中间的位置。

2. 比大黑边、肉眼可见塑料中框、没什么特色的外观后盖设计的Reno4性能强太多,搭配星河入梦全新配色和玩法的Reno5 Pro,定价卡在Reno4和Reno4 Pro之间。

3. 而传说中新的后盖材质、骁龙865 SoC、大底传感器的真 科技 时尚 旗舰Reno5 Pro+则会在Reno4 Pro和vivo X50 Pro+之间找一个定价区间。

这么看,Reno5系列实际是提升了整个Reno系列的卖相,把价位段和定位都往上提了半档。用我情报管道给我的客观评价来说:“Reno系列的新定价体系和新卖相,需要许久沉在Reno4系列产品线的销售们重新再出发。基础款的Reno4提供了比同价位产品更好的卖相和更多的地面渠道卖点;Reno5 Pro则以高性能5G SoC与 时尚 外观为双切入点,把Reno系列的性能评价提高了半截。”

事情做了一大半了,剩下一小半,决定这次战略定位和定价体系调整成败的,还是那个骁龙865平台的Pro+。这是整个逻辑完整闭环的重要部分。

Reno5 Pro基础款简单体验:卖相最好的天玑1000+手机

关于卖相,一个范例显然是华为的Nova7和Nova6系列的往事。参数可能很重要,卖相也非常重要。我手头只有一台黑色基础款的Reno5 Pro,最吸引人的星河入梦版没拿到,所以只能就事论事简单点评一下。

先科普一下OPPO在Inno Day发布的人像视频技术。OPPO关于人像视频的最新见解是:精细化效果审美和故事化的画面表达。通俗点说就是过去的照亮你的美太简陋,而过分的原始也反馈不出来照片主角的情绪和特征,所以要把人像表达进一步精细化。为此,OPPO提出专项魔镜计划,对人像作品提出了三个维度的解构:第一是拨乱反正,回归真实自然有气色,有气质;第二是在真实自然的基础上遮瑕美颜,这是有限度的,另外为部分有P图需求的用户提供妆容选项;第三是遵循摄影的本源:光的艺术,提供光影的变换和清晰度选项。

这套人像视频算法的核心点有这么几个:

1. 新的OPPO AI肤色检测的神经网络模型,OPPO改进了网络架构和LOSS函数,实现96.5%的皮肤区域检测准确率和97.4%的脸部皮肤精度。此外,OPPO进一步扩大“皮肤区域的定义”,相比于业内常见的仅定义脸部皮肤区域,OPPO AI肤色检测还涵。盖脖子和手部皮肤区域,用户在拍摄后对皮肤区域进行调整就不会出现脸、脖子和手皮肤表现不一致的问题。针对暗光人像,OPPO提出了超清算法。针对用户在暗光拍摄和虚焦(例如长焦拍摄和拍摄时手抖)时得到的。

2. 在AI超清人像算法中,OPPO在神经网络模型中加入了Portrait SR Model(超分模型),并在Post Processing(后处理模型)中进一步优化画面噪点表现。

3.

OPPO新的人像和视频算法,还在分阶段采样、智能遮瑕、人脸畸变实时校正、和超级防抖上有多项突破。NPU的诞生,给了手持设备有更多的算力去 探索 细分领域拍摄变革的可能。OPPO的人像视频技术系统,是摒弃过往简单美颜算法,走向精细化个性运算的一个重要步骤。从此行业竞争的战火从静态人像优化烧到了人像视频领域的优化。优化不等于美颜,过去我们单纯的认知美颜=手机拍照/视频,这种理念已经跟不上时代。追求复杂场景下更自然,更合理的人像优化方案,是行业未来的方向。

在计算摄影大行其道的今天,联发科也没少吹嘘天玑1000+的ISP和NPU能力,以软件和SoC实力代偿模组Cost Down带来的性能损失,接近较高性能模组的效果,这也是一条路径。

黑色基础款的Reno5 Pro在外观上和Reno4 Pro区别不大,毕竟使用的是同款屏幕。值得一提的是,使用了功耗略大于骁龙765G的天玑1000+,还能把机器做的这么薄,这还是挺有水平的。虽说模组相对Reno4Pro缩水,但卖相更好了点,这代给出了一个更大的后盖摄像头分布区域,还有星河入梦版的夜光效果,契合官方主题:“繁星之夜”。其实我觉得OPPO这三代传承的镜头排布和双层设计还是挺好看的,没必要改来改去。

黑色款的外观我就不多说了,比较意外的是中框,如果不是有人提醒我,我身边没有一个搞基佬看出来那是塑料中框。可能是最近中框的制造工艺有了进步还是怎么滴,无论是开孔,边缘打磨,还是外层喷涂,和普通的铝合金中框视觉上几乎看不出来任何差距。一般容易露馅的扬声器开孔和SIM卡开孔,这次做的近乎完美。所以不经提示,真的没想到这塑料中框。

花点篇幅详细介绍一下这次的全新配色:星河入梦。

OPPO在Reno4 Pro上使用了全新的后盖工艺:星钻。这代工艺升级了,除了这个黑色版,剩下的三个配色都使用了第二代星钻工艺。

第二代星钻工艺,OPPO测试了几十种玻璃材质(镁铝),调整了20次蚀刻液配方,并经过100多次生长环境温度调整(0.1度的差别结果截然不同)、200余次玻璃入液角度调整以及数十次的浸泡时间调整,以及生产工艺的优化,良品率由最初的20%一举提升到接近90%。实际效果,:闪亮度相比上一代提升35%, 另外,金字塔晶体微观结构反光面更大,起到了天然疏油层的效果。

此次全新的配色:星河入梦发布。OPPO为此启动了一系列的营销活动,也启用了代言Buberry的周冬雨。

讲道理,作为一个快消品,手机的卖相和手机的性能配置同等重要。一个极其成功的范例就是华为P30Pro的天空之境。Reno5系列把很大权重的创新放在卖相上显然是对的。除了这个靓瞎眼的星河入梦,还有Reno5 Pro+首度商用的黑 科技 后盖,下个月就能见到了。关于Reno5 Pro的静态拍照和视频拍摄,我没太详细的去测试。简单点评一下:

Reno5和Reno5 Pro使用了一颗豪威 科技 6400万像素的主摄,大小为1/2英寸(同IMX586),单像素面积0.7μm。这颗模组光圈大小为F1.7,不带OIS。总体无功无过,这张照片的拍摄环境色温比较稳定,但是拍摄对象的色彩比较丰富。以Find X2 Pro为基准来看,天玑1000+配合OV64B在色彩表现上还是说得过去的,只是面部有轻微的泛红。Reno5 Pro整体曝光参数比FindX2 Pro略微大一点。在透视关系和焦外效果看,Reno5 Pro景深略显不足,朦胧感比FindX2 Pro有差距,当然我不提估计也没人看得出来。边缘成像Reno5 Pro表现的较好(仅该场景而言,边缘成像翻车场景多在室外,本次体验不涉及),画面较为干净,降噪表现不错。

看主摄样张的细节。Reno5 Pro这张样片的ISO高达1293,快门1/50秒,而FindX2 Pro的ISO为256。不同尺寸CMOS的通光率差异巨大,导致ISO值也差异很大。从画质看,IMX689显然要比OV64B在边缘细节和焦外成像上强不少,但OV64B在如此高的ISO下,降噪令人满意,这让我对OPPO的新算法和对天玑1000+的优化刮目相看。

其他样张:

最后发一段视频,小朋友的《艾思米兰达练习》,Reno5 Pro一镜到底:

Reno5Pro人像视频,古典芭蕾艾思米兰达练习

总结一下,我这篇文章重在分析OPPO在Reno系产品上的重大转折,突出以浪漫 科技 +硬核 科技 双驱动的产品策略和定价体系。相对Reno4系列以配置定价,Reno5系列更侧重于消费者需求和感知定价。一方面升级了Reno4的卖相和定价区间档位,一方面也没忘了为参数党和性能需求用户提供硬 科技 产品线:Reno5 Pro+。今年的大环境依然不太好,OPPO不但要考虑这种策略在国内的有效性,也要考虑这种策略在全球市场的有效性。这次转折很关键,决定了后续几个季度的业绩走势,让我们拭目以待。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11682083.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存