如何优先处理 ICMP 超时数据包

网络工程 icmp 跟踪路由 电源连接
2022-02-14 00:35:40

根据ICMP Time Exceeded packet 为什么需要更长的 ICMP Echo Reply,ICMP time Exceeded 被视为低优先级并减慢甚至丢弃是正常的。我在负载较轻的 PowerConnect 7048 上观察到这个问题,我想提高优先级,这样这些数据包就不会被丢弃。

我的拓扑如下:

   HostA                   PC7048 (routing)               HostB
192.168.0.1/24 ----- 192.168.0.2/24,10.10.0.2/24 ----- 10.10.0.1/24
  • 当我从 192.168.0.1 ping 到 10.10.0.1 时,丢包率为 0%
  • 当我从 192.168.0.1 ping 到 10.10.0.2 时,丢包率为 0%
  • 当我使用从 192.168.0.1 到 10.10.0.1 的 MTR 时,第一跳的丢包率是 5% 到 30%。通过执行 tcpdump,我确认 MTR 的工作方式似乎是通过缩短 TTL 并侦听 ICMP 超时响应(与普通跟踪路由相同的方法)。这证实了我与为什么 ICMP Time Exceeded 数据包需要更长的 ICMP Echo 回复相同的问题

所以我明白为什么会这样。或者至少是那种。假设在“忙”时丢弃超过 ICMP 时间的数据包,除非我根本不会称我的 PC7048 忙。它在大约 15 个活动端口上最多推动 2Gbps - 所以在我看来几乎是空闲的。它还在路由表中使用大约 120 条路由执行 OSPF 路由,因此它在 L3 中执行此操作,但对于这种交换机模型的要求并不过分。是吗?

这是我的处理器使用情况

switch#show process cpu

Memory Utilization Report

status      bytes
------ ----------
  free  559607072
 alloc  435529120



CPU Utilization:


  PID      Name                    5 Secs     60 Secs    300 Secs
-----------------------------------------------------------------
 53923d0 tNet0                      0.00%       0.09%       0.09%
 53b99f0 BusM A                     0.16%       0.12%       0.10%
 55c1ab0 ipnetd                     0.00%       0.01%       0.00%
 5637b80 envMonTask                 8.71%       3.22%       1.83%
 5641370 osapiTimer                 0.00%       0.10%       0.08%
 568bba0 bcmDPC                     0.00%       0.03%       0.04%
 5926150 bcmL2X.0                   3.01%       3.18%       3.15%
 5b34440 bcmCNTR.0                  1.84%       1.49%       1.55%
 5bb3620 bcmTX                      0.00%       0.02%       0.04%
 63468d0 bcmRX                      1.84%       1.66%       1.72%
 6366ac0 bcmNHOP                    0.16%       0.04%       0.02%
 6379390 bcmATP-TX                  0.00%       0.02%       0.03%
 6382890 bcmATP-RX                  0.00%       0.07%       0.05%
 695e640 MAC Send Task              0.00%       0.03%       0.03%
 6967b40 MAC Age Task               0.16%       0.02%       0.01%
 8280660 bcmLINK.0                  0.00%       0.09%       0.14%
 850b8b0 LOG                        0.00%       0.01%       0.01%
 b822e50 tL7Timer0                  0.00%       0.01%       0.02%
 b848740 osapiMonTask               0.00%       0.00%       0.02%
 c9a7f90 servPortMonTask            0.00%       0.01%       0.00%
 cb1a310 portMonTask                0.00%       0.00%       0.01%
 cb44a80 simPts_task                0.00%       0.01%       0.04%
 d25df40 dtlTask                    0.50%       0.31%       0.28%
 d2b0f50 hapiRxTask                 0.00%       0.12%       0.14%
 d2da220 emWeb                      0.00%       0.02%       0.00%
 dd953c0 hapiL3AsyncTask            0.00%       0.49%       0.46%
 e6cdc50 trafficStormControl        0.00%       0.01%       0.02%
 e9f14c0 DHCP snoop                 0.16%       0.03%       0.03%
 f0b8930 SNMPTask                   0.00%       0.04%       0.03%
109f7730 dot1s_timer_task           0.50%       0.35%       0.34%
10a08a00 dot1s_task                 0.00%       0.00%       0.01%
11dd3920 tacacs_rx_task             0.16%       0.02%       0.00%
11de64b0 unitMgrTask                0.00%       0.02%       0.01%
11f865a0 snoopTask                  0.33%       0.16%       0.14%
12f18930 dhcpsPingTask              0.00%       0.00%       0.01%
13055e50 spmTask                    0.16%       0.03%       0.02%
130dcbe0 ipMapForwardingTask        2.51%       2.70%       2.97%
13327130 tArpCallback               0.00%       0.13%       0.15%
136bfd30 OSPF Proto                 0.50%       0.12%       0.08%
137788d0 ARP Timer                  1.50%       1.45%       1.54%
1bee9f50 lldpTask                   0.00%       0.31%       0.34%
1c90dce0 tCptvPrtl                  0.00%       0.01%       0.02%
1da0a130 RMONTask                   0.16%       0.10%       0.10%
1da26e50 boxs Req                   0.00%       0.00%       0.01%
1e9d81f0 OSPF Receive               0.00%       0.03%       0.06%
1ea71060 sshd[0]                    0.00%       0.03%       0.01%
-----------------------------------------------------------------
 Total CPU Utilization             22.44%      16.96%      15.98%

交换机用尽了哪些资源无法发回一些 ICMP 超时数据包?我如何确定 ICMP 超时数据包的优先级,以便交换机知道这些对我非常重要并相应地对待它们?这些数据包对我来说非常重要的原因是,当客户看到这些数据包时,他们会错误地断定我的网络存在故障。我可以将他们发送到这篇解释原因的文章,但问题仍然存在于他们的脑海中“为什么我要为超额订阅的交换机支付这么多钱,它是如此繁忙以至于无法腾出一毫秒的时间来发回几个 ICMP 超时数据包?” . 换句话说,当跟踪中唯一显示数据包丢失的行属于您时,它看起来非常糟糕。为什么其他人都能获得 0% 的丢包率?

1个回答

交换机在硬件中转发,但 ICMP 消息由 CPU 处理 - 因此您需要查看 CPU 负载,而不是常规流量。

OSPF 消息也由 CPU 创建和解析,但是一旦它们的内容被转换到路由表,硬件​​再次接管实际路由。因此,路由的数量与 CPU 无关,只有对等点的数量和它们的消息大小。

只有当 ICMP 消息由于高负载而被丢弃时,才需要优先处理它们。我认为这通常是不可能的,但原因是这里的其他原因。

很多时候,传出 ICMP 消息的频率会受到限制,以降低 CPU 利用率。因此,MTR 可能只是发送了太多的探测数据包以使所有这些数据包都获得 TTL 过期消息。

在 7000 系列上,您可以使用配置 ICMP 速率限制

ip icmp error-interval [burst-interval] [burst-size]

限制发送 IPv4 ICMP 错误消息的速率。

  • burst-interval — 初始化令牌桶的频率(范围:0–2147483647 毫秒)。
  • burst-size — 在突发间隔期间可以发送的最大消息数(范围:1–200)。

https://downloads.dell.com/manuals/common/powerconnect-7024_user%27s%20guide_en-us.pdf