请教一下 TC 的用法

2022-07-14 09:23:11 +08:00
 0bing
环境:100M 的宽带,内网大约 20 台主机。
问题:没有限速的情况下,任何一台机器的突发占用带宽都会让出口访问产生大抖动。比如说开了个视频蓝光,瞬间的流量就会吃满。
失败的尝试:
#内网接口
tc qdisc add dev eth1 root handle 1: htb default 1
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 90Mbit burst 15k
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 25Mbit ceil 10Mbit burst 15k
#wifi 的
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip src 192.168.10.250 flowid 1:10
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 10Mbit ceil 2Mbit burst 15k
# 问题出现这里,这样所有的机器都上不了网了,是因为到网关也被限速了
tc filter add dev eth1 protocol ip parent 1:0 prio 3 u32 match ip dst 0.0.0.0/0 flowid 1:20

想要实现的:
1. 直接就到峰值 35Mbps 给它削去
2. 保留带宽 10M ,让小包比如 dns 和 ssh ,mysql 这些优先通过。
不会写,有没有懂的指导一下。
1376 次点击
所在节点    程序员
2 条回复
0bing
2022-07-14 17:59:17 +08:00
变成这种样子:
0bing
2022-07-14 18:01:49 +08:00
按错键了。。
变成这个样子,看起来有流量,实际上所有人都卡。。。

tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate 61440kbit ceil 20480kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 80kbit ceil 80kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 80kbit ceil 20480kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20kbit ceil 20480kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 20kbit ceil 20480kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 10kbit ceil 20480kbit prio 3
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 30kbit ceil 20480kbit prio 3
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 130: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 140: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 150: sfq perturb 10
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 6 handle 6 fw classid 1:15

iptables -t mangle -A PREROUTING -p icmp -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p icmp -j RETURN
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j RETURN
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x5
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j RETURN
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x6
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j RETURN

iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j RETURN
#将想要高优先级的打 0x1 标签,不再赘述
...

iptables -t mangle -A PREROUTING -j MARK --set-mark 0x6

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866042

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX