串行接口上​​的输出下降:更好的排队或输出队列大小?

网络工程 思科 路由器
2021-07-10 15:27:46

在互联网边缘路由器上,eBGP 与多个运营商和 iBGP 彼此之间,LAN 和 WAN 侧的所有接口都是 GE,除了每个路由器上的一个串行全 DS3(~45Mbps)。虽然我认为我几乎没有在串行接口上​​发送大量出站流量——在 3-10Mbps 范围内——但我看到了持续的输出队列下降 (OQD)。 可能的解释是我没有看到真的有突发流量,因为负载间隔为 30 秒的最小值,并且 SNMP 轮询平均流量超过 5 分钟,所以那些不会照亮突发?

该平台是 Cisco 7204VXR NPE-G2。串行队列是fifo

Serial1/0 已启动,线路协议已启动
  硬件为 M2T-T3+ pa
  说明:-删除-
  互联网地址是 abcd/30
  MTU 4470 字节,BW 44210 Kbit,DLY 200 微秒,
     可靠性 255/255,txload 5/255,rxload 1/255
  封装 HDLC,crc 16,未设置环回
  Keepalive 设置(10 秒)
  重启延迟为 0 秒
  最后输入 00:00:02,输出 00:00:00,输出挂起从不
  上次清除“显示界面”计数器 00:35:19
  输入队列:0/75/0/0(大小/最大/丢弃/刷新);总输出下降:36
  排队策略:fifo
  输出队列:0/40(大小/最大)
  30 秒输入速率 260000 位/秒,208 个数据包/秒
  30 秒输出速率 939000 位/秒,288 个数据包/秒
     410638 数据包输入,52410388 字节,0 无缓冲区
     收到 212 个广播,0 个矮子,0 个巨人,0 个油门
              0 奇偶校验
     0 个输入错误、0 个 CRC、0 个帧、0 个溢出、0 个被忽略、0 个中止
     515752 数据包输出,139195019 字节,0 欠载
     0 个输出错误,0 个贴花,0 个界面重置
     0 个输出缓冲器故障,0 个输出缓冲器换出
     0 载波转换
   rxLOS 不活动,rxLOF 不活动,rxAIS 不活动
   txAIS 不活动,rxRAI 不活动,txRAI 不活动

24 小时后将显示数千 OQD。我们确实在每天凌晨 3 点左右推出更多流量,所以这里可能有一些突发流量,我没有给予足够的重视。

Last clearing of "show interface" counters 1d01h
Input queue: 0/75/0/158 (size/max/drops/flushes); Total output drops: 12049

我想在 DS3 上推动更多的出站流量,但不关心 OQD。DS3 后面的第 2 层 ISP 具有 POP,可兼作 6 个以上第 1 层的对等点,因此我们的想法是尽快与客户端在网上获得流量,而不是我们在 GE 上的主要 ISP 是第 1 层,但必须努力实现对等交换。入站流量不是问题。

在这种情况下,有没有比 fifo 更好的排队策略? 查看有关输入和输出队列丢弃的 Cisco 文档,不建议增加出站队列大小,因为数据包已经在路由器上,最好在输入处丢弃,以便 TCP 可以限制应用程序。我们的 GE 链路上有足够的带宽,因此实际上没有必要限制输入。 这些路由器上没有策略映射。90% 的出站流量来自我们的 HTTP 响应;其余大部分来自 FTP 和 SMTP。GE 链路推动 50-200+Mbps。

您会建议对输出队列大小缓冲区进行任何调整吗?这些串行接口是我们的备用链路,由于前面给出的原因(如果有效),我宁愿更多地使用它们,但我的 BGP 策略试图不使该串行接口过载(大多数时候看起来负载不足)。

2个回答

你是对的,你不会真的很容易看到 SNMP 上的突发。1GE 可以发送 1.48Mpps,因此拥塞 45Mbps 所需的时间非常短,可以处理小于 75kpps。

如果您的入口是 1GE,出口是 45Mbps,那么显然 45Mbps 的拥塞点将需要丢弃数据包。这是正常和预期的。如果增加缓冲区,则会引入更多延迟。
1GE 需要 0.45 毫秒来发送 40 个 1500B IP 帧,这是您现在可以处理的突发量。然而,在 45Mbps 上将它们出列已经需要 10 毫秒。

如果你没有任何严重的问题,我可能不会做任何事情。但是,如果某些流量比其他流量更适合丢弃,那么您应该使用基于类的排队来替换 FIFO。假设您想设置优先级,以便丢弃更多 ftp 并减少 voip。
那么在 ftp 流量上添加更多缓冲也会更有意义,因为它对延迟并不敏感。

如果你想用更深的缓冲区试试运气,这样的事情就足够了:

policy-map WAN-OUT
 class class-default
    fair-queue
    queue-limit 200 packets
!
interface Serial1/0
  service-policy output WAN-OUT

这将在 Serial1 上产生 50 毫秒的缓冲区,并允许您处理来自单个 Gige 接口的高达 2.25 毫秒的突发。

OQD 通常由以下两种情况之一引起:

  1. 您已过度使用该链接;持续高使用率或突发流量。

  2. 您有一个应用于接口的策略映射,该映射配置为执行某些操作,例如对部分或全部流量进行监管或整形

  3. 接口上存在某种错误,请查看错误计数器 ( show interface Serial1/0 counters errors) 并检查它是否不会因错误而丢弃数据包。

您可以考虑(如果您还没有)放置一个策略地图来执行诸如为您的任务关键型流量分配自己的队列、在常规流量 (WRED) 上启用拥塞避免或什至只是在流量上启用公平排队等操作带宽在通过接口的流之间共享。

正如您所提到的,另一个选项是增加接口上的输出队列大小,但如果您要使用策略映射,那么无论如何都不需要这样做,因为该策略会创建其他子队列。