在软路由器上, UDP 如何做流量控制?

2024 年 3 月 6 日
 tool2d
TCP 我知道,如果流量过大,网络过于拥挤,可以人为去减少 TCP 包头的 window size 参数。这样一来,网卡自然就会降低发送速度。

UDP 我没想明白,是按照一定比例,暴力丢弃包;还是把包延后几秒发送;还是干脆回怼几个大数据的 UDP 回去?

一些网盘软件不讲武德,后台暴力 UDP 发包上传太凶残了。
1525 次点击
所在节点    问与答
4 条回复
billlee
2024 年 3 月 6 日
tc 命令
tool2d
2024 年 3 月 6 日
@billlee 感谢,google 查了一下,似乎 tc 是采取随机丢包机制。UDP 协议设计问题,没有 tcp window 窗口的概念,不丢包似乎没办法减少客户端主动发送流量。

但还不能丢太少或太少,有些 UDP 设计上( KCP),就是为了抵抗网络丢包。你丢越多,它重发越多。

好像 iptables 也能随机丢包,用用还是挺方便的。
datocp
2024 年 3 月 6 日
平时不知道怎么生成 udp 流量,很多文档说 tc 只控制 tcp ,但是确实能命中 udp ,这么多年真不知道怎么验证 udp 流量控制是否有效。
tc 根据 htb 的 prio 优先级对不同的 dstport 进行优先级分级效果还是非常明显的,

udp_6060_0x10/0xff
tcp_992,1992,26241_0x10/0xff
udp_53,123_0x20/0xff
tcp_22,23,3389,8123_0x20/0xff
tcp_80,443,1080,1863,8080:8081,12000,14000,16285_0x30/0xff
udp_500,1701,4000:4030,4500,5989,8000:8001,16285_0x30/0xff
tcp_20,21,25,143,465,993,1024:65535_0x40/0xff
udp_1:65535_0x40/0xff

而且确实可以用 tc 来控制 30+40 分组上行流量到 95%,而且因为 prio 的存在,可以很好的让 p2p 流量避让常用的端口。

其它的针对单机不同端口像迅雷可以用这种 ddwrt 提供的方法
https://wiki.dd-wrt.com/wiki/index.php/Preventing_Brute_Force_Attacks

iptables -N rate_limit
iptables -F rate_limit
iptables -A rate_limit -p tcp --dport 22 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A rate_limit -p udp --dport 1194 -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A rate_limit -p ICMP --icmp-type echo-request -m limit --limit 3/sec -j ACCEPT
iptables -A rate_limit -p <protocol> --dport <port> -m limit --limit <x/sec/min/hr> --limit-burst X -j ACCEPT
iptables -A rate_limit -p ! ICMP -j LOG --log-prefix " Connection dropped!! "
iptables -A rate_limit -p tcp -j REJECT --reject-with tcp-reset
iptables -A rate_limit -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A rate_limit -j DROP
ysc3839
2024 年 3 月 6 日
中间路由器一般不会去改 TCP 数据吧,一般是直接在 IP 层面丢包的,不分 TCP UDP 等

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

https://study.congcong.us/t/1021203

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

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

© 2021 V2EX