一、什么是微突发
微突发(Microburst)是指端口在非常短的时间(毫秒级别)内收到非常多的突发数据,典型的微突发的持续时间通常在1~100毫秒之间,以至于瞬时突发速率达到平均速率的数十倍、数百倍,甚至超过端口带宽的现象。
常见的网管或网络性能监测软件通常是基于比较长的时间(数秒到数分钟)计算网络实时带宽。在这种情况下,看到流量速率通常是一条比较平稳的曲线。
但是,一秒钟对于高速收发数据包的接口来说也已经是非常长的一个时间段。如果将数据更改为更细粒度(例如毫秒级)进行观察,实际流量中会看到更多突发,这些微突发非常纤细,流量速率很可能是带锯齿的。如果锯齿突变很大,就称为微突发。--
使用HoloWAN的内置的抓包工具Pixel抓取一段时间的TCP包,使用流量速率分析工具 Rate Statistics分析抓取的TCP流量的速率。
- 将时间颗粒度调节为1000ms,观察到TCP流量速率呈现为一条均匀的直线:
- 将时间颗粒度调节为30ms,观察到Tcp流量速率呈现锯齿状:
二、微突发产生的原因
网络中常见的产生微突发的原因有3种:
1、Tcp发包的特性导致了Tcp流量具有突发性
Tcp通信采用滑动窗口机制,以便通信双方能够充分利用带宽。窗口大小决定了在收到接收端确认之前,一次可以传送的数据段的最大数目。窗口大小越大,主机一次可以传输的数据段就越多。
Tcp发包原则是通过慢启动和拥塞避免机制将数据包尽快发送出去。
慢启动:由于发送端一开始并不知道网络资源当前的利用状况,为了避免网络拥塞,新建立的TCP连接不能一开始就发送大量数据,而只能逐步增加每次发送的数据量。
拥塞避免:当网络吞吐量达到上限时,Tcp报文进入拥塞避免状态,滑动窗口减少一半,使得速率急速下降。
这两个机制导致了Tcp流量具有突发性。最终流量呈现出锯齿状,如下图所示:
2、设备的接收端口的总带宽比转发端口的总带宽更大
大带宽的端口向低带宽的端口发送数据:
多个端口向一个端口发送数据:
3、业务流量本身存在波动
很多的业务模型下,用户的请求和服务器的响应是离散出现的,导致业务流量是间歇性的,不稳定。对时延和带宽敏感的业务又要求尽可能快地发送数据,这加剧业务的突发性。
![](https://i-blog.csdnimg.cn/blog_migrate/8bfdc9ce6fcb803bb9ccfd59ae35264b.jpeg)
三、微突发的影响
在HoloWAN中,微突发流量的瞬时速率超过HoloWAN的带宽限制时,HoloWAN会将突发的数据缓存到queue中以便稍后发送。如果queue已经被占满了,那么后续到达HoloWAN的数据包只能丢弃,这就产生了拥塞丢包(Drop Frames)。
微突发出现时,HoloWAN的统计列表中统计到的数据会发生一些变化。
1、突发流量较小
突发流量较小时,突发流量进入queue,等待转发,queue足以容纳突发流量,不会产生丢包,但进入queue中等待的报文会产生排队时延。
HoloWAN统计列表此时表现为queue(Queue Bytes/Frames)中偶尔有少量数据包:
2、突发流量较大
突发流量较大,突发流量进入queue,queue满了之后,到达HoloWAN的包被丢弃。
HoloWAN统计列表此时表现为queue(Queue Bytes/Frames)持续处于满载状态,统计到丢包(Drop Frames):
3、在极短时间内突发了大量流量
在极短的时间内突发了大量的流量,例如:10Mbps的流量集中在100ms内发送,则这100ms的瞬时流量达到了100Mbps。此时,由于突发时间过短,HoloWAN统计列表颗粒度仅为1秒,无法统计到微突发。
HoloWAN统计列表此时表现为接收报文的速率(RX Rate/Frames)比带宽限制小,queue(Queue Bytes/Frames)中也没有统计到缓存报文,但统计到了丢包(Drop Frames):
四、HoloWAN 如何应对微突发
HoloWAN 应对微突发的方式有2种:
1、将queue调大
将queue调大,在缓存队列中就可以容纳更多的突发流量,当突发结束之后,缓存的流量可以被转发出去。
缺点:
- 数据包在进入queue中等待会产生排队时延;
- 若queue过大,数据包经过长时间排队完成转发时,它们有可能早已超时,从而引起发送端超时重传,而这些已超时的数据包还会继续传输到下一路由器,浪费网络资源,加重网络拥塞。
2、将带宽限制调大
将带宽调大,就可以有足够的带宽来处理突发的流量。即使突发流量较多,也能在较短的时间内获取到足够的带宽,减少丢包。
缺点:
- 一些对带宽敏感的测试无法使用该方式;
- 我们无法得知每次突发流量的大小,无法精确调节带宽。
五、总结
微突发是在网络中真实存在,无法避免的情况。微突发造成的拥塞丢包也只能尽力避免。针对实际测试的需求,我们可以选择通过调大queue的值或调大带宽限制的值来缓解微突发造成的过度丢包。