测量每个链路的延迟/抖动/数据包丢失

网络工程 路由器 转变 监控 潜伏 数据包丢失
2021-07-09 19:50:03

我需要测量网络中每条链路的延迟、抖动和丢包而不是端到端,例如:

s1-eth0 <--> s2-eth0(~ 20µs 平均延迟,标准推导 10µs,57% 数据包丢失/最后一秒)

s2-eth1 <--> s3-eth0(~ 25µs 平均延迟,标准推导 5µs,21% 数据包丢失/最后一秒)

...

我能找到的所有解决方案要么是学术建议,要么涉及使用专用硬件进行主动探测。

以下是根据我的研究没有解决的总结:

  • NetFlow:没有延迟信息,只有端到端
  • 主动探测:我无法更改网络配置
  • 测量往返时间:不提供每个链接的统计信息

是否有任何网络协议、测量工具或其他功能提供所有或至少部分上述统计信息?

4个回答

在 Cisco 设备上,您可以使用 Cisco IP SLA。您需要先配置并启用它,然后监控结果。

脚步:

1. ip sla monitor operation-number

2. type echo protocol ipIcmpEcho {destination-ip-address | destination-hostname} [source-ipaddr {ip-address | hostname} | source-interface interface-name]

3. frequency seconds

4. ip sla monitor schedule operation-number [life {forever | seconds}] [start-time {hh:mm[:ss] [month day | day month] | pending | now | after hh:mm:ss] [ageout seconds] [recurring]

配置示例取自Cisco:IP SLA--使用 ICMP Echo 操作分析 IP 服务级别

Router> enable
Router# configure terminal
Router(config)# ip sla monitor 10
Router(config-sla-monitor)# type echo protocol ipIcmpEcho 172.29.139.134
Router(config-sla-monitor-echo)# frequency 300
Router(config-sla-monitor-echo)# exit
Router(config)# ip sla monitor schedule 10 start-time now life forever

监视:

show ip sla monitor statistics

在瞻博网络硬件上,您可以使用 RPM 服务来获取这些测量值。该服务可以配置为监控特定接口,这将有助于满足“每链路”要求。

查看 Y.1731 协议(或IEEE 802.1ag或 OAM)。在软件中实现相当容易(我猜这就是您的目标),并且它得到所有物理网络元素的支持。

在 C 中有一个非常幼稚 的开源 Y.1731 实现,你可以看看。

请注意,Y.1731 不是为了跨越物理网络边界而设计的(即要求两个 MEP 的 MAC 地址都是已知的),因此如果您需要通过 IP 路由,您需要将您的 Y.1731 帧封装在一些隧道中协议,如 VXLAN 或 GRE。

希望这可以帮助。

Etherate使您能够直接通过以太网测量第 2 层的吞吐量、延迟和数据包(帧)丢失(这听起来像您正在寻找的)。它目前不测量抖动,但将来会测量。

使用它,您可以以可测量的受控方式生成第 2 层以太网流量。

您可以指定流量持续时间、帧大小、每秒位数/每秒字节数、要传输的总字节数、以太网类型、VLAN ID 和 PCP 值。如果您想在第 2 层测试丢失,您还可以确认第 2 层帧。

测试完成后,Rx 主机会显示接收到的测试帧数(如果这少于从 Tx 主机发送的帧数,则为您提供帧丢失数字)、收到的非测试帧、收到的测试帧顺序和无序接收的测试帧(早或晚)。

https://github.com/jwbensley/etherate