数据中心流量突发引起的丢包简析

1、引子

某日14:45分,调用某台服务器的应用出现几十个超时,怀疑网络有丢包。

经一系列排查,发现交换机连接该服务器的端口在该时刻有126个discard计数。

问题来了:服务器监控千兆网卡速率为180Mbps, 为何交换机会丢包?

下图为服务器网卡流量监控,一分钟采集一次。

2、交换机out方向discard原理

switch out Discard:接口在物理层检测时发现的,由于队列拥塞导致的丢弃报文数目。

怎么理解?

如下图,背景流量为A1以1Gbps的速率发送流量到服务器B,交换机的Port_B此时已经是满带宽工作;

此时如果A2也发送报文到B(burst方式),此时交换机Port_B已经满带宽,就会进入交换机的缓存。

所以:如果A2–>B的burst < 交换机缓存, 部分进入队列缓存的报文延时增大,没有丢包;

           如果A2–>B的burst > 交换机缓存, 部分进入队列缓存的报文延时增大,队列缓存溢出报文将丢弃,并在交换机对应端口增加discard计数;


3、观测尺度问题

回到引子的问题:服务器监控千兆网卡速率为180Mbps(1分钟), 为何交换机会丢包?

答案很简单:1分钟的观测尺度太粗,在更小的观测尺度上端口带宽已经满了。

但是,也经常发生在1秒钟的速率才100Mbps时,也有discard。

下一个问题来了: 1分钟的尺度太粗,要多精细才足够?

答案:交换机缓存/最大缓存写入速率


例子1,在idc spine-leaf两级网络架构中,2*10G上联的千兆接入交换机,假设对某台千兆服务器,流量都是南北向(都从上联口来的),

交换机缓存=8Mbytes, 最大缓存写入速率=2*10Gbps, 

观测尺度: 8M*8/20Gbps = 3.2ms

解读:假设服务器的千兆网卡带宽已满,极限情况下从2个10G上联口来的burst报文可在3.2ms把缓存全部用完,随即队列溢出,发生丢包。


例子2,在idc spine-leaf两级网络架构中,2*40G上联的万兆兆接入交换机,假设对某台万兆服务器,流量都是南北向(都从上联口来的),

交换机缓存=16Mbytes, 最大缓存写入速率=2*40Gbps, 

观测尺度: 16M*8/80Gbps = 1.6ms

解读:假设服务器的万兆网卡带宽已满,极限情况下从2个40G上联口来的burst报文可在1.6ms把缓存全部用完,随即队列溢出,发生丢包。


结论:

1、需精确到毫秒尺度才能直接观测到导致丢包的满带宽流量,目前无手段;

2、间接观测手段:交换机的discard统计;

4、引申:不同观测尺度下的流量

观测对量:万兆服务器iperf3 打流,band=1M,burst=10000Mbytes

观测尺度1秒,速率为1Mbps  


观测尺度10ms,速率为50Mbps


观测尺度1ms,速率为500Mbps


1us尺度,速率为4.3G。(这里为估算,wireshark无法把时间轴缩放到1us)18824*8/35us = 4.3Gbps

遗留问题:如上的观测对象,对于单个报文,发送速率为多少?1Mbps ? 50Mbps? 500Mbps? 4.3Gbps?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。