V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
0bing
V2EX  ›  程序员

请教一下 TC 的用法

  •  
  •   0bing · 2022-07-14 09:23:11 +08:00 · 1373 次点击
    这是一个创建于 867 天前的主题,其中的信息可能已经有所发展或是发生改变。
    环境: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 这些优先通过。
    不会写,有没有懂的指导一下。
    0bing
        1
    0bing  
    OP
       2022-07-14 17:59:17 +08:00
    变成这种样子:
    0bing
        2
    0bing  
    OP
       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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5464 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:33 · PVG 15:33 · LAX 23:33 · JFK 02:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.