datocp
2022-05-10 11:32:40 +08:00
这是 QOS 的话题。
描述中的什么设备能做到两个直播间能平均使用,不相互影响。指的是使用 200M/180M 这根宽带?
没玩过直播,不知道并发数是直接来源于入口,还是反向到相应的平台。
对于 QOS 来说,市面上宣传有这功能的有 ros/爱快 /高恪,但是 QOS 的优先级实现是非常有针对性的配置,也许得找人家帮你配置好.
用 180M 来保障 2 台电脑+4 个手机的上行+120 台电脑,我觉得是小菜一碟.
对于 openwrt htb 算法来说
1.它的 class 可以用来将大水管分成各种小水管,并且通过 ceil 来限制上限
2.它有 prio 优先级,可以保障 6 个终端的 IP 高优先级出列,或者更精确的服务端口.
3.然后就是如何理解通过的流量饱合程度造成的延迟变化,当时是按照 ADSL 线路 60%的流量低延迟,80%延迟可以接受.来相应的设定 rate 保障值
#$TC class add dev $UDEV parent 1:1 classid 1:2 htb rate $((UPLINK*8/10))kbps ceil $((UPLINK*9/10))kbps
#$TC class add dev $UDEV parent 1:1 classid 1:10 htb quantum 1514 rate $((UPLINK*1/10))kbps ceil $((UPLINK))kbps prio 0
#$TC class add dev $UDEV parent 1:1 classid 1:20 htb quantum 1514 rate $((UPLINK*1/10))kbps ceil $((UPLINK))kbps prio 2
#$TC class add dev $UDEV parent 1:2 classid 1:30 htb quantum 1514 rate $((UPLINK*3/100))kbps ceil $((UPLINK*90/100))kbps prio 3
#$TC class add dev $UDEV parent 1:2 classid 1:40 htb quantum 1514 rate $((UPLINK*5/100))kbps ceil $((UPLINK*85/100))kbps prio 4
类似这种基于 ip 的优先级实现.QOS 通过对各种小水管通过的流量饱合程度来解决延迟问题.它在同样的一个带宽可以造成高优先级 19ms,低优先级接近 600ms 的延迟.
以下只是一个示例,现在不用这种基于 ip 的实现,对于 iptables 来说规则越多越耗 cpu,性能也相应的变低.
#!/bin/sh
iptables -t mangle -F POSTROUTING
tc qdisc del dev br0 root 2> /dev/null > /dev/null
tc qdisc add dev br0 root handle 1: htb default 119
tc class add dev br0 parent 1: classid 1:1 htb rate $((3072))kbps
tc class add dev br0 parent 1:1 classid 1:2 htb rate $((3072*6/10))kbps ceil $((3072*6/10))kbps
IP=101;while [ $IP -le 125 ];do
tc class add dev br0 parent 1:2 classid 1:$IP htb rate $((3072*1/10))kbps ceil $((3072*1/4))kbps prio 4
tc qdisc add dev br0 parent 1:$IP handle $IP: sfq perturb 10
tc filter add dev br0 parent 1: prio 20 protocol ip handle $IP fw flowid 1:$IP
iptables -t mangle -A POSTROUTING -d 192.168.8.$IP -j MARK --set-mark $IP
iptables -t mangle -A POSTROUTING -d 192.168.8.$IP -j RETURN;let "IP+=1";done
tc class add dev br0 parent 1:1 classid 1:3 htb rate $((3072*5/10))kbps ceil $((3072*10/10))kbps prio 0
tc qdisc add dev br0 parent 1:3 handle 3: sfq perturb 10
tc filter add dev br0 parent 1: prio 10 protocol ip handle 3 fw flowid 1:3
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.200-192.168.8.205 -j RETURN
iptables -t mangle -I POSTROUTING -m iprange --dst-range 192.168.8.200-192.168.8.205 -j MARK --set-mark 3