- razor 对pacing进行了简单实现
- 虽然简单但是符合pacing的设计原理
- 并非简单的50毫秒发送一波这么无脑
- 借助这个代码,对pacing(平滑发送)机制的核心原理和工程实现,
- 一窥究竟:
关键词
- 排队时延
- 核心反馈环节:根据队列积压动态计算目标码率。
问题
具体来讲,如何实现平滑发送的,发送间隔时间控制?排队时延控制?如何避免突发,如果发送的带宽允许,可否直接清空对接直接发送?与网络突发是否矛盾?
一、razor的pacing机制:pacer_queue.c 分析
pacer_queue.c
通过实现一个分包队列(pacer_queue_t
)来支持 pacing(节奏/速率控制)发送。其核心思想是:将待发送的包按顺序缓存,按 pacing 策略有节奏地取出和标记为已发送,保证发送速率平滑且可控。下面分点说明其机制:<