令牌桶算法使用仪表打流会出现“优先级”?

问题描述:
使用仪表同时打三条流,每条流有不同的DCSP,在经过Linux TC时会出现优先级调度的现象。(如图所示)
 
问题分析:
预期结果与实际有差异,三条流在同一TC队列中,队列内部按照原理应该自由竞争,而不是优先级调度。(自由竞争流量会有波动且不会导致其中一条无法传输)
 
问题调查:
1、使用抓包仪,抓取仪表的发包模型
仪表严格按照顺序依次发包无异常。
2、分析TC队列处理机制
发现时间间隔对传输有影响,进一步分析报文发送模型的时间间隔。
 
 
3、分析报文发送模型
 
问题结论:
对比三条流的报文发送时间
1、dscp63报文到来时,令牌足够,可以发送。
2、dscp60报文到来时,令牌概率性足够,足够就发送不足就丢弃,所以部分丢弃。
3、dscp62报文到来时,令牌完全不够,所以被全部丢弃。
4、dscp62报文被丢弃到dscp63报文到来,这个期间桶被填充又有了令牌。有足够令牌进而被发送。
 
 
问题规避:
验证多种仪表,嗯发包能这样整整齐齐的仪表需要比较贵的那种,一般正常传输的业务不会出现报文这样整整齐齐的现象,传输过程肯定存在抖动!
 

参考文档:
posted @ 2019-07-18 10:27  Peter·X  阅读(402)  评论(0编辑  收藏  举报