NetHang 是一个基于 Linux 平台的 Web-Based 网络质量仿真软件工具。类似工具的其他常见名称还有:弱网测试工具,网络损伤工具(网损仪)或 网络流量控制工具 等。NetHang 主要针对的测试产品是对网络实时性要求较高的网络产品,主要包括 RTC 产品(网络音视频通信,网络会议,网络直播连麦等),AI Agent 软件(通过网络与大模型实时交互的软件),当然,也可以用来测试产品的拥塞控制算法性能和链接稳定性等。
网损工具的横向对比
类似的网损产品主要有:
软件方案:
硬件方案: Spirent ,HoloWan ,packetstorm 等厂商,这些硬件网络工具通常更多聚焦于吞吐量和稳定性测试,更适用的是行业是通信设备商,运营商或云服务企业,本次暂不做讨论。
开发 NetHang 的主要原因是观察到现有软件或硬件弱网工具在满足互联网产品 Lastmile 网络性能测试方面都或多或少的存在一些不足,主要表现在以下几点:
- 跨平台统一性:这个问题主要影响在同一个产品运行在不同平台上时能否使用同一套弱网测试标准在衡量和评判,以及评判的准确性。对于那些只能支持部分平台的软件如 QNET 和 Clumsy 等就很难拉齐这个测试方法,无法在对平台的弱网测试中提供可靠和可重入的测试方法。另外这种运行在测试设备上的弱网测试软件本身受测试舍本的性能限制,甚至会影响测试设备的性能,就更难获得可靠的测试结果。NetHang 是运行在 Linux 系统上作为软路由上的一个服务运行,理论上可以对所以通过该路由器接入网络的 IP 网络设备提供完全相同的网络损伤服务。

- 内置网络模型:在广泛使用的弱网工具中测试人员面对的往往是一堆网络质量的参数,Packet Loss (各种模型 Markov , Gilbert-Elliot 等),Delay ,Jitter (各种分布 Normal ,Uniform ,Pareto 等),Bandwidth Limit (组合 Queue-depth ,Burst ,TokenBucket 设置),Accumulate-Burst (堆积突发时长控制),以及要不要 Reordering (乱序) Corrupt ( bit 翻转)和 Duplicate (重复包),测试人员要用这些参数组合出合理的弱网测试条件并不是见容易的事,甚至基本不可能,见过太多测试人员用带乱序的 1000+ ms jitter 测试互联网产品了, 这不只是无用功,甚至如果产品在这个方向上做了足够多的优化之后一定会引入其他方面的问题,无论是抗弱网能力还是计算性能这都是得不偿失的。而针对这个问题 NetHang 根据大量网络探测结果内置了一批在一定程度和合理的网络损伤模型可供选择使用,并且会不断的更新和添加更丰富和准确的网络模型,这在提高测试效率的同时更重要的是规避了投入大量精力测试很多现网中根本不会出现或极少出现的网络条件。

- 自定义动态网络模型:众所周知 Lastmile 网络因为其多样的接入方式,接入设备,负载,信号强度,竞争流量等原因呈现出多变的特征,NetHang 可以通过 YAML 语法自定义组合不同的网络条件组合出实时变化的网络仿真条件。
以上述软件工具作为参照,下边是一个概要对比结果
|
Nethang |
Linux TC/Netem |
Network Link Conditioner |
Clumsy |
QNET |
| 跨平台统一性 |
✓ |
✓ |
✕ |
✕ |
✕ |
| 内置网络模型 |
✓ |
✕ |
✓ |
✕ |
✓ |
| 自定义动态网络模型 |
✓ |
✕ |
✕ |
✕ |
✕ |
获取和部署