Cisco 获取当前接口吞吐量

Cisco 获取当前接口吞吐量

我可以使用 SNMP 工具绘制设备接口图,像 Cacti 这样的平台甚至可以制作漂亮的图表,但这些都是基于轮询间隔(通常每 5 分钟)。

我可以使用 CLI;

r1>show int gi0/0
GigabitEthernet0/0 is up, line protocol is up 
Hardware is BCM1250 Internal MAC, address is 0011.2233.4455 (bia 0011.2233.4455)
Description: link 1
MTU 1540 bytes, BW 1000000 Kbit, DLY 10 usec, 
   reliability 255/255, txload 35/255, rxload 20/255
Encapsulation 802.1Q Virtual LAN, Vlan ID  1., loopback not set
Keepalive set (10 sec)
Full Duplex, 1000Mbps, media type is RJ45
output flow-control is XON, input flow-control is XON
ARP type: ARPA, ARP Timeout 04:00:00
Last input 00:00:00, output 00:00:00, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/3208/72484 (size/max/drops/flushes); Total output drops: 1373910311
Queueing strategy: Class-based queueing
Output queue: 0/1000/12 (size/max total/drops)
5 minute input rate 79658000 bits/sec, 19312 packets/sec
5 minute output rate 140174000 bits/sec, 21984 packets/sec

从 5 分钟的输出速率可以看出,我传输的流量为 140Mbps,但这是过去五分钟的平均值。所以现在还不是,而且不比 Cacti 等产品好。

我可以输入接口命令load-interval 30将采样率降低到 30 秒,此时 txload 和 rxload 值会变得更加准确。

不过,如果我需要找出现在哪个链接已达到最大值,我会发现很难相信,尽管思科路由器和交换机可以做很多令人惊奇的事情,但它们现在无法告诉我接口的当前 tx/rx 速率。

我知道可能需要一个采样周期才能达到这样的数字,1 秒有什么问题?当然,CPU 需求不会那么多,只需计算每秒通过的数据包数量及其大小?

有人可能已经开发出自己的方法来解决这个问题了吗?我看到其他人也受到同样的难题困扰?

更新:我应该对此提供更好的背景信息,所以我现在会尝试这样做。

我现在需要知道接口吞吐量的一个典型情况是,当一个拥有 100Mbps 端口的客户打电话说“嘿,我从你的镜像服务器下载 X,但传输速度只有 20Mbps”。我希望能够在他们给我打电话的时候立即看到他们的交换机吞吐量,以确认这一点(根据我的经验,非技术客户经常会报告错误的值)。

因此,在这种情况下,我可以确认客户端口是否已经接收 100Mbps,因此他们只能获得 20Mbps,因为他们的端口已满,或者他们是否以他们声称的速度传输(无论高于还是低于)。此外,接下来我将要查看交换机终止于所有这些客户的路由器的吞吐量,这是另一个潜在的瓶颈。此外,我可以在传输过程中检查镜像服务器的交换机端口。

我不想这样回复客户:“好的,请确保您继续下载 5 分钟,这样我就可以等待 $NMS_OF_CHOICE 轮询接口”,在客户眼中这不是一个可以接受的答案。我可以给出更多场景,但本质上,投诉客户是首要任务 :)

答案1

我不是一名开关设计师,所以我无法说出以这种频率监控的成本是多少。

我能说的是,我也遇到过这种情况一秒钟也不够因为您可以在不到一秒的时间内超出缓冲区。因此,如果你想知道某个链接是否已达到最大限度,我建议你查看丢弃的数据包(您也可以通过 SNMP 监控这一点)。如果您丢包(这里丢几个是可以的,但丢很多就不好了),那么您要求的数据包超出了接口的处理能力。这也可能发生在您的服务器上,甚至在它们到达交换机之前。丢包的准确率通常并不重要,但如果丢包率持续增加,那么show interface您很可能处于糟糕的境地。

就 Cacti 而言,这不是交换机或 SNMP 的限制。SNMP 将发送和接收的位记录为一个递增计数器,因此如果您每秒轮询一次,您将获得每秒的分辨率。它的工作方式是将每个样本的时间戳与当前计数一起取出。然后它取差值并以“每秒”为单位表示,但实际上它实际上是每 5 分钟的速率转换或表示为每秒。

但是,如果您尝试每秒轮询一次 SNMP,最好注意您的 CPU。

答案2

您的接口正在以全千兆速度发送和接收。它实际上并没有以 140Mbps 的速度传输任何东西,这只是它在间隔内的平均速度。实时流量利用率对于您作为人类读者来说毫无用处,因为它会在 100% 和 0% 之间不断来回切换发送/接收。如果您担心的是您能多快识别网络问题,那么我建议您参考@Kyle-Brandt 上面所说的。丢包是过度利用链接的最佳指标。

答案3

SolarWinds 实时界面监视器, 的一部分网络工程师的工具集能够每 5 秒通过 SNMP 轮询一次接口。

每 5 秒通过 SNMP 轮询网络接口并不是管理员应该经常做的事情作为永久监控解决方案的一部分。但是,对于在临时时间点进行监控,在某些情况下,60 秒以下的轮询间隔是有用的。

了解轮询间隔(因为它们会上升和下降)对于能够解释工具产生的数据至关重要。

作为一个虚构的(但概念多次出现)例子,注册的接口5 秒间隔内利用率为 90%可能不会导致最终用户察觉到的问题——然而,同样的界面60 秒间隔内利用率为 50%事实上可能会导致最终用户察觉到问题。

大多数管理员的错误思维是认为 60 秒间隔的 50% 利用率“小于”5 秒间隔的 90% 利用率。它不是“小于”——也不是“大于”。 简而言之,由于间隔不同,利用率数字不能作为等效数字进行比较。

再深入一点——并展示极端情况如何影响数学——接口有可能在整整 30 秒内以 100% 的利用率运行 —— 然后静默 30 秒 —— 而 60 秒间隔内的利用率仍为 50%。在 30 秒的 100% 利用率期间,最终用户应用程序会遇到足够的数据包丢失和/或延迟,从而导致显示消息超时/中断。

与 5 秒间隔内 90% 的利用率相比,即使接口在 4.5 秒内达到 100% 的利用率,然后静默 0.5 秒(导致 5 秒间隔内 90% 的利用率),数据包丢失和/或延迟可能还不足以让最终用户应用程序立即做出反应。

以上完全是虚构的例子——然而,这一概念已经被多次见证。 正确评估接口的过度订阅/过度利用依赖于对监控工具的了解、对监控/轮询间隔的理解以及对监控/轮询工具的输出的解释以及正在使用的应用程序的行为。

答案4

我编写了一个 expect 脚本,用于从“show int xxx”命令的输出中轮询每秒发送/接收的字节数。每秒之间的差异就是通过接口的流量。

基本脚本如下:http://tinyurl.com/c2sx2fc

这是我的第一个预期脚本,因此我的堆栈溢出线程在这里:)http://tinyurl.com/82gtk3e

我将添加一些功能,例如丢弃和删除,并制作两个脚本,一个用于流入流量,一个用于流出流量。

相关内容