王很水

i know nothing

  博客园  ::  :: 新随笔  ::  :: 订阅 订阅  :: 管理

在工作中遇到了制造延迟

tc qdisc add dev eth1 root netem delay 600ms

测试部需要的场景比较特殊,只针对核心与组件之间延迟,对于普通设备等不做延迟。还需要保存延迟配置重启不失效

具体的做法是加过滤限制,只针对核心通信的组件进行延迟,组件本身做延迟。

针对不同设备,加到平台配置层里面

核心网上具体的配置

tc qdisc add dev eth1 root handle 1: prio priomap 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
tc qdisc add dev eth1 parent 1:2 handle 20: netem delay 600ms
tc filter add dev eth1 parent 1:0 protocol ip u32 match ip dst 192.168.69.23  flowid 1:2
tc filter add dev eth1 parent 1:0 protocol ip u32 match ip dst 192.168.69.24  flowid 1:2
写在/etc/rc.d/rc.local里面 其中192.168.69.23,24是组件ip eth1是核心对外网卡

组件设备上的具体配置

cd /tcdir && chmod 777 tc
./tc qdisc add dev eth1 root netem delay 600ms

写在/opt/local/sbin/osscripts/OSStart 脚本中 其中 tcdir是tc文件所在的目录(不要放在root下) ,eth1是组件对外网卡

tc qdisc del dev eth1 root #删除之前的延迟配置
tc也可以针对端口做限制
以上参考
https://stackoverflow.com/questions/40196730/simulate-network-latency-on-specific-port-using-tc

posted on 2017-08-21 14:34  Gilfoyle  阅读(811)  评论(0编辑  收藏  举报