这类网络在速率超出带宽限制后就直接丢包,不会缓存数据,即采用的是police而不是shape。
要用linux的流量控制模拟这种情况,需要在ingress上采用流量控制,这里使用linux的eth0做包转发
tc qdisc add dev eth0 ingress
可以用tc qdisc show dev eth0来查看,可以看到id为"ffff:"的qdisc就是ingress对应的qdisc的id:
qdisc ingress ffff: parent ffff:ffff1 ------------
接下来添加一条过滤规则,并设置限速策略,将目标地址为64.104.177.71的包过滤出来,如果要匹配任意地址,可以使用0.0.0.0/0
tc filter add dev eth0 parent ffff: protocol ip prio 20 u32 match ip dst 64.104.177.71 police rate 800kbit burst 10k drop flowid :1
这里flowid :1是比较费解的,很少有提及,看到一个比较合理的解释是:
“ As fas as I know,this qdisc is a dummy one, and flowid is just used with :1 because the traffic have to be redirected to something.”
也就是说过滤出来被drop掉的数据会被重定向到一个dummy的qdisc?
要查看filter是否生效可以用,但这里只能看到egress接口上面的
tc filter show dev eth0
对于ingress的filter,需要使用
tc filter show parent ffff: dev eth0
没有评论:
发表评论