基于Iptables的流量统计不太可能测出tc限流后的实际流量
基于Iptables的流量统计不太可能测出tc限流后的实际流量
Tc的应用流程
数据包 ->通过iptable (根据不同的Ip设置不同的mark)->TC(class)->TC(queue)
Wrtbwmon 是基于iptable来统计流量的,所以不太可能作用于tc规则之后的流量。
下面是zserve包中ecos_atheros_tc.c的一些关于tc的指令,可以解释一下
tc qdisc del dev %s root //清除 eth0所有队列规则
tc qdisc del dev eth0 ingress //
ip link set ifb0 txqueuelen 1000 down //
tc qdisc add dev %s root handle %x:%x htb //在根HTB排队规则上创建的分类
tc class add dev %s parent %x:%x classid %x:%x htb rate %dkbit ceil %dkbit
//定义第一层的类 classid %x:%x 类的编号 rate %dkbit 一个子类能保证的带宽 ceil %dkbit 一个类能得到的最大带宽
tc class del dev %s parent %x:%x classid %x:%x // 删除某个类
tc filter add dev %s parent %x:%x handle 0x%x protocol 802.1Q prio %d u32 "
"match u16 0x%02x%02x 0xffff at %d match u32 0x%02x%02x%02x%02x 0xffffffff at %d flowid %x:%x" //添加一个过滤器到队列中,这里也可以用iptables 来--set-mark 做标记,这就说明了,iptable是在tc之前
tc filter del dev %s parent %x:%x protocol 802.1Q prio %d handle %x::%x u32 flowid %x:%x
//删除某个过滤器
"tc class add dev %s parent %x:%x classid %x:%x htb rate %dkbit ceil %dkbit //基于VAP的限速
tc class change dev %s parent %x:%x classid %x:%x htb rate %dkbit ceil %dkbit" //改变VAP的限速
tc class del dev %s parent %x:%x classid %x:%x //VAP 限速被取消
tc filter add dev %s parent %x:%x handle 0x%x protocol ip prio %d u32 "
"match u16 0x%02x%02x 0xffff at %d match u32 0x%02x%02x%02x%02x 0xffffffff at %d flowid %x:%x",
// 将连上VAP的 sta 添加到 对应VAP的限速类中
tc filter del dev %s parent %x:%x protocol all prio %d handle %x::%x u32 flowid %x:%x"
//sta 断开连接或 没有被限速 从限速列表中被删除

要实现统计实际流量,还是在驱动层 和 接口层 做文章
浙公网安备 33010602011771号