当数据包进入路由器时,路由器会尝试在interrupt level转发它。 如果在适当的缓存表中找不到匹配项,则将数据包排队在要处理的incoming接口的input队列中。 某些数据包始终会被处理,但是在适当的配置和稳定的网络中,已处理数据包的速率必须永远不会阻塞input队列。 如果input队列已满,则丢弃数据包。
这里就是一个示例:
router#show interfaces ethernet 0/0
...
Input queue: 30/75/187/0 (size/max/drops/flushes); Total output drops: 0
Output queue :0/40 (size/max)...
如果分配给接口的数据包缓冲区的数量已用完或达到其最大阈值,则系统会对input队列丢失进行计数。 您可以使用hold-queue <value> 命令为每个接口增加最大队列值(队列长度值可以在0到4096之间。默认值为75)。这个针对不同的设备,例如如下ISR4K设备可能要大些。
Router#show interfaces g0/0/0 ... Input queue: 0/375/1355933/0 (size/max/drops/flushes); Total output drops: 120134 Queueing strategy: Class-based queueing Output queue: 0/240000 (size/max)
input队列丢弃通常在数据包经过进程交换时发生。 进程交换意味着路由器无法使用首选的路由缓存方法(例如快速交换或Cisco Express Forwarding(CEF))来处理转发决策。 如果input drops仍然存在,则意味着流量过多。 考虑进行硬件升级,或尝试减少流量负载。