应用服务策略时串行接口上​​的输出下降

网络工程 思科 路由器 数据包丢失
2021-07-16 04:04:20

我们的核心路由器是带有运行 12.4(20)T1 的 NPE-G2 的 Cisco 7206VXR。它有许多接口连接到 WAN 链路(DS3、ATM DS3、2xT1、板载 Gig0/1),并通过 2xGig EtherChannel 馈入 LAN 核心。

LAN 侧的带宽显然比任何 WAN 链接都多。我们通过 WAN 端的服务策略来解决这个问题,该策略基于 ACL 或 DSCP 标记为每个“有趣的”服务类别分配带宽。到现在为止还挺好。

我们的问题是,对于离开串行 DS3 卡的一类特定流量,我们看到过多的尾部丢弃:

Class-map: class-symposium-unicast-acl (match-all)
  1530 packets, 2153296 bytes
  30 second offered rate 336000 bps, drop rate 247000 bps
  Match: access-group name acl-symposium-ucast
  Queueing
  queue limit 64 packets
  (queue depth/total drops/no-buffer drops) 0/1056/0
  (pkts output/bytes output) 474/672266
  bandwidth remaining 10% (4421 kbps)
    Exp-weight-constant: 9 (1/512)
    Mean queue depth: 50 packets
    dscp     Transmitted   Random drop   Tail drop      Minimum   Maximum   Mark
              pkts/bytes   pkts/bytes    pkts/bytes     thresh    thresh    prob

    af31       474/672266    22/31547    1034/1449483     32        40      1/10

这是我们配置的缩写版本:

class-map match-all class-symposium-unicast-acl
 match access-group name acl-symposium-ucast
!
policy-map WAN
 class class-symposium-unicast-acl
  bandwidth remaining percent 10
   random-detect dscp-based
 class class-default
!
interface Serial2/0
 description PA-T3/E3-EC - 45 Mbps DS3
 service-policy output WAN
!
ip access-list extended acl-symposium-ucast
 permit udp host x.x.x.x any

调整hold-queue串口上或queue-limitpolicy-map内的都没有明显效果,反复检查show int还是show policy-map不显示输出队列满了。带宽应该不是问题,因为接口负载非常轻(45 Mbps 链路上的输出低于 2 Mbps),并且类映射上提供的速率远低于提供的带宽。service-policy从串行接口中删除会导致掉线停止,但我们需要能够为某些应用程序保留带宽,因此这不是一个可接受的长期解决方案。

我怀疑受影响流量的性质与我们看到的下降有关,因为它与我们网络的其他任何东西都不一样。UDP 数据包以规则(7 秒)间隔从服务器发送到请求它的一台或多台远程 PC。有些数据包超过 15KB,因此必须对其进行分段。

过度的碎片可能是一个促成因素,如果是这样,ip virtual-reassembly在入口接口上会有什么好处吗?还有其他想法或建议吗?

编辑:按要求输出“show int ser 2/0”:

Serial2/0 is up, line protocol is up
  Hardware is PA-T3/E3-EC
  Description: xxxxx
  Internet address is x.x.x.x/30
  MTU 4470 bytes, BW 44210 Kbit/sec, DLY 200 usec,
     reliability 255/255, txload 8/255, rxload 235/255
  Encapsulation PPP, LCP Open
  Open: IPCP, CDPCP, crc 16, loopback not set
  Keepalive set (10 sec)
  Restart-Delay is 0 secs
  Last input 00:00:22, output 00:00:00, output hang never
  Last clearing of "show interface" counters 1d00h
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 14291
  Queueing strategy: Class-based queueing
  Output queue: 0/1000/0 (size/max total/drops)
  30 second input rate 40774000 bits/sec, 3435 packets/sec
  30 second output rate 1442000 bits/sec, 1847 packets/sec
     274986144 packets input, 4019985342 bytes, 0 no buffer
     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
              0 parity
     6 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 6 abort
     149374995 packets output, 1855187875 bytes, 0 underruns
     0 output errors, 0 applique, 3 interface resets
     0 unknown protocol drops
     0 output buffer failures, 0 output buffers swapped out
     0 carrier transitions no alarm present
  DSU mode 0, bandwidth 44210 Kbit, scramble 0, VC 0

我意识到在此复制/粘贴中输入速率接近最大值,但即使输入接近于零也会出现问题。

2个回答

在您的show policy-map输出中,注意您的方式 haveMean queue depth: 50 packetsMaximum Threshis 40当您的平均队列深度高于阈值时,您将开始掉尾(参考)。

由于此 UDP 流量是课程中唯一的内容,因此我认为在课程中实施 WRED 不会带来任何好处。我建议删除它(也许可以考虑在 class-default 下使用它)。

如果您真的想在类上使用 WRED,请考虑将随机检测指数加权常数调整为更高的值。这将有助于 WRED 避免过快反应并开始丢弃数据包。鉴于您对流量模式的描述,这也可能解决问题。参考

我不确定这是否会有所帮助,但看起来该用户遇到了类似的问题。我不确定所提供的任何建议是否解决了这个问题,但我想我会通过它很长时间:

非拥塞链路上的 QoS 尾部丢弃