如何在不拥塞的情况下检测链路上的可用带宽?

网络工程 带宽 吞吐量
2022-02-24 07:24:45

已经设计了很多应用程序来帮助我们检测连接两台服务器(例如 iperf)的链路上的带宽(链路吞吐量)。不幸的是,这些软件使网络拥塞,并因此计算所消耗的时间所遍历的数据量。

是否有任何方法可以检测链路上的可用带宽,而不会在知道链路默认容量已知约为 1Gb/s 的情况下使其拥塞?我的意思是可能经常检查内核空间中的 OUT 缓冲区。或者也许通过某种方式检测链路上的流量,因此可用带宽将是它的补充。

3个回答

可以在本地检测链路的带宽(例如在 Windows 中wmic NIC get description,speed)。

路径的带宽可能要复杂得多,如果不实际测试速度(尤其是在 Internet 中),通常无法检测到。例如,在您自己的网络中,您可能正在运行可以从中提取信息的路由协议。

但是,通常您不必检测(理论上的)带宽,因为常用的 TCP 协议将为您的应用程序完成所有这些工作。沿路径的有效带宽始终根据总流量而变化。

托管交换机通常会维护每个端口的使用报告,这些报告可以根据流量类型进行查询,您可以通过 Cisco 兼容设备上的 SNMP 或 Netflow 报告获得这些报告。大多数 NMS 软件都支持这两种访问类型。

NMS 软件可能会支持基本捕获,其中通常包括链路带宽。如果交换机制造商做了一些花哨的事情,您可能需要加载一个 MIB(用于 SNMP)文件,其中包含交换机支持的所有数据查询。当它被加载到 NMS 应用程序中时,NMS 可以对设备进行更详细的查询。

大多数操作系统都会提供设备链接速度的衡量标准。它们还将提供流量流量的衡量标准。您可以将两者相减以获得可用容量的近似值。如何准确读取这些值超出了本网站的范围(可能堆栈溢出是您最好的选择)。

然而,这种技术有一些陷阱

  1. 标题界面速度可能准确反映界面的实际速度,也可能不准确。对于台式机和服务器中的以太网控制器,它可能非常好,对于虚拟机、WiFi 等,它可能非常不准确。
  2. 与 1 相关的一些事情可能不会计入流量计数器,但仍可能占用链路上的容量。这可能会限制您的准确性。
  3. 在 wifi 或非常旧的以太网等共享介质上,它不会告诉您有关介质上但未流入或流出系统的流量。
  4. 它只告诉您从本地机器到最近交换机的链路上的可用容量。它不会让您了解网络中更深层次的情况。

如果您准确了解网络的布局并对其进行管理控制,您可能能够构建一个系统来监控所有设备上的流量(例如使用 SNMP),计算两个终端系统之间的路径并计算出在哪里瓶颈将是以及瓶颈链路上有多少可用容量。同样,尽管我只会将其视为近似值,并且它可能仅在高度受控的环境中才实用。