一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Linux 网络故障模拟实战:利用 tc 模拟网络链路延迟的方法

时间:2026-07-03 10:10:00 编辑:袖梨 来源:一聚教程网

Linux下用tc模拟网络延迟的核心是利用内核netem模块在网卡出口注入可控延迟,支持固定延迟、抖动、丢包等组合场景,并需注意远程操作安全防护。

Linux 下用 tc 模拟网络链路延迟,核心就是利用内核自带的 netem 模块配合 tc 工具,在指定网卡的出口方向注入可控延迟。它不依赖第三方软件,生效快、精度高,且能贴近真实网络波动特性。

确认环境与网卡设备

先确保系统支持 netem:

  • 运行 lsmod | grep netem,有输出说明模块已加载
  • 若无输出,尝试 modprobe sch_netem 手动加载
  • ip link showip addr 查出实际网卡名(如 eth0ens33enp0s3),后续命令中需准确替换

设置基础固定延迟

这是最常用也最直观的模拟方式,所有发往该网卡的 outbound 流量统一增加指定延迟:

  • sudo tc qdisc add dev eth0 root netem delay 100ms —— 添加 100 毫秒固定延迟
  • 验证:执行 ping -c 4 baidu.com,观察平均时间是否明显上升(注意:只影响本机发出的包,不影响收到的响应)
  • 清除规则:sudo tc qdisc del dev eth0 root

模拟真实网络抖动

纯固定延迟不够真实。公网延迟通常围绕基准值随机波动,可用抖动参数模拟:

  • sudo tc qdisc replace dev eth0 root netem delay 100ms 20ms —— 延迟在 80–120ms 之间均匀分布
  • 加相关性更贴合实际:delay 100ms 20ms 30% 表示相邻数据包延迟变化倾向一致,适合模拟短时拥塞
  • 进阶选正态分布:delay 100ms 20ms distribution normal,比均匀分布更符合实测延迟分布规律

组合场景与安全防护

生产测试常需叠加多种异常。同时要注意远程操作风险:

  • 延迟 + 丢包组合:sudo tc qdisc replace dev eth0 root netem delay 150ms 30ms loss 2%
  • 为防 SSH 断连,建议提前设置自动恢复:echo "sudo tc qdisc del dev eth0 root" | at now + 5 minutes
  • 查看当前配置:sudo tc qdisc show dev eth0;查统计详情加 -s 参数

热门栏目