流量整形
流量整形是一种主动调整流量输出速率的措施,其作用是限制流量与突发,使这类报文以比较均匀的速率向外发送。流量整形通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下,再均匀地发送这些被缓冲的报文。
当下游设备的接口速率小于上游设备的接口速率或发生突发流量,在下游设备接口处可能出现流量拥塞的情况,此时用户可以通过在上游设备的接口出方向配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的拥塞问题。
处理流程流量整形是一种应用于接口、子接口或队列的流量控制技术,可以对从接口上经过的所有报文或某类报文进行速率限制。
下面以接口或子接口下采用单速单桶技术的基于流的队列整形为例介绍流量整形的处理流程,其处理流程如图3-4所示。
图3-4 流量整形处理流程图
具体处理流程如下:
- 当报文到来的时候,首先对报文进行分类,使报文进入不同的队列。
- 若报文进入的队列没有配置队列整形功能,则直接发送该队列的报文;否则,进入下一步处理。
- 按用户设定的队列整形速率向令牌桶中放置令牌:
- 如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被发送,在报文被发送的同时,令牌做相应的减少。
- 如果令牌桶中没有足够的令牌,则将报文放入缓存队列,如果报文放入缓存队列时,缓存队列已满,则丢弃报文。
- 缓存队列中有报文的时候,系统按一定的周期从缓存队列中取出报文进行发送,每次发送都会与令牌桶中的令牌数作比较,直到令牌桶中的令牌数减少到缓存队列中的报文不能再发送或缓存队列中的报文全部发送完毕为止。
队列整形后,如果该接口和子接口同时配置了接口整形,则系统还要逐级按照子接口整形速率、接口整形速率对报文流进行速率控制。其处理流程与队列整形相似,但不需要步骤1和步骤2。
自适应流量整形流量整形主要是为了解决下游设备的接口速率小于上游设备的接口速率,从而导致下游设备接口入方向丢包的问题。但有些场景下,下游设备的接口速率是不确定的,上游设备无法确定应该把整形参数设置为多少。此时可以配置自适应模板来实现自适应流量整形,通过在上游设备和下游设备间开启NQA检测,根据NQA检测到的下游设备丢包率动态调整整形参数。
自适应模板规定了:NQA测试例:通过此测试例检测下游设备接口入方向丢包率,根据检测结果调整整形参数。
整形速率范围:上游设备接口出方向的整形速率上下限,整形速率在此范围内动态调整。
整形速率调整步长:动态调整整形速率时,每次调整的速率大小。
丢包率范围:下游设备接口入方向允许的丢包率范围。当丢包率在此范围之内时,不调整整形速率;当丢包率过大,减小上游设备整形速率;当丢包率过小,且上游设备发生拥塞,增大上游设备整形速率。
整形速率增大的时间间隔:当丢包率在阈值附近频繁变化时,就需要频繁调整整形速率,用户可以通过设置此参数,限制增大整形速率的时间间隔,避免频繁更新。
说明:当NQA检测到丢包率过大,为避免业务数据进一步丢失,立即减小整形速率,不需要满足时间间隔的要求。
系统根据NQA检测结果中的丢包率等调整整形速率:触发条件(必须同时满足所有条件)
动作
NQA检测到丢包率大于自适应模板配置的丢包率上限减小整形速率
- NQA检测到丢包率小于自适应模板配置的丢包率下限
- 上游发送端接口拥塞
- 距离上次增大整形速率的时间间隔超过自适应模板配置的速率增大时间间隔
增大整形速率
- NQA检测到丢包率小于自适应模板配置的丢包率下限
- 上游发送端接口不拥塞
保持当前整形速率
丢包率在自适应模板配置的丢包率范围内保持当前整形速率
检测失败自适应模板配置的整形速率上限
说明:若自适应模板未绑定NQA测试例,则整形速率取自适应模板配置的整形速率上限。