来自 科技 2020-06-28 17:44 的文章

路由器的流量控制功能

反压机制

报文经过上行接口板的处理之后,送往交换网板进行交换。所有报文都要经过交换网 的交换,所以交换网是决定路由器性能的核心单元,交换网应该是“无阻塞”的, 其转发容量是所有接口板的转发容量之和,很强大。然而,下行接口板可能没那么强 大,万一扛不住怎么办?为了避免这种现象,路由器上有“反压机制”,下行接口板 扛不住,会发生反压,这样交换网板知道了,会通知上行接口板暂停发包,将报文进 行缓存。


路由器的流量控制功能


队列机制

配合反压机制,华为高端路由器的接口板上有一块被称为TM(Traffic Management)的 部件,里面有一些高速缓存,在拥塞的情况下,数据包以队列的形式暂存在缓存里, TM再按一定的规则把数据包调度出队,送往交换网。如果装不下,还会按一定规则做 报文丢弃。

路由器的流量控制功能


同理,报文经过交换网板送到下行接口板时,流量有可能超过出接口的发包能力,因 此在下行接口板上也需要有TM芯片进行缓存和队列管理。在拥塞的情况下,数据包以 队列的形式暂存在缓存里,下行TM再按一定的规则把数据包调度出队,送往出接口发 送

流量监管(CAR)

流量控制除了上述处理机制外,还有一种机制——流量监管,使得流量不超过入/出接 口允许的带宽,超出限制的那部分数据包会被直接丢弃。目前流量监管使用的技术是 CAR(Committed Access Rate)。CAR是由包转发引擎PFE完成的,可以在上行PFE上 执行,限制流量不超过入接口带宽;也可以在下行PFE上执行,限制流量不超过出接口 带宽。


路由器的流量控制功能

注意:

上送CPU以及CPU下发的协议报文不经过CAR处理,这是为了避免当流量突发 时协议报文在因CAR被丢弃(不过,为了避免对CPU的攻击,上送CPU的协议报文会 经过CP-CAR处理,详细请参见“协议报文之旅”)。 可能有人会有疑问,为了避免协议报文因拥塞被丢,不对其做CAR,那上文介绍队列 机制时提到了丢弃策略,队列机制里有什么特殊措施避免协议报文被丢吗?为了避免 协议报文在队列中被丢弃,协议报文一般都设置为高服务等级,入高优先级队列被优 先调度,通常不会被丢弃。

上述的队列机制、CAR、流分类和服务等级的概念及详细介绍,后期更新。