当我们有要在某两台设备之间的链路上人为增加一定的时延,丢包,损伤的需求时,最简易的方法是在两台设备之间加入一台 Linux 服务器,分别与两个设备直连,服务器上作为一个纯二层 bridge 透传报文;同时使用Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制来实现对于链路流量增加时延,丢包及损伤。
这里我们仅介绍TC作为损伤仪的最基本使用方法,关于TC(Traffic Control)的具体原理和规则可以参考https://cloud.tencent.com/developer/article/1409664
如上拓扑图所示环境,设备端 Router-1 和 Router-2 的配置不需要改动,仅需在服务器侧做一些配置即可在 Router-1 和 Router-2 之间链路添加损伤,具体配置如下:
brctl addbr br1
brctl addif br1 ens3
brctl addif br1 ens3d1
ip link set br1 up
brctl show
root@dmage-server-a1:/etc# brctl show
bridge name bridge id STP enabled interfaces
br1 8000.78aa82125bac no ens3
ens3d1
tc qdisc add dev ens3 root netem delay 200ms
<Router-1>ping -c 1000 172.16.11.50
Ping 172.16.11.50 (172.16.11.50): 56 data bytes, press CTRL+C to break
56 bytes from 172.16.11.50: icmp\_seq=6 ttl=255 time=0.622 ms
56 bytes from 172.16.11.50: icmp\_seq=7 ttl=255 time=0.593 ms
56 bytes from 172.16.11.50: icmp\_seq=8 ttl=255 time=200.664 ms
56 bytes from 172.16.11.50: icmp\_seq=9 ttl=255 time=202.150 ms
tc qdisc add dev ens3 root netem loss 10%
tc qdisc change dev ens3 root netem corrupt 5%
tc qdisc del dev ens3 root
tc qdisc show dev ens3
root@dmage-server-a1:~# tc qdisc show dev ens3
qdisc netem 8003: root refcnt 257 limit 1000 delay 200.0ms
tc -s qdisc
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。