ROS 开启限速,并对指定设备限速

背景

现在很多电视版的 APP 都会占用家庭带宽的上传,用家庭带宽当成p2p节点。 我的小水管儿经不住他们薅,所以决定给电视限制上传速度,一劳永逸

操作步骤

  1. 给特定设备分配静态IP
  2. 标记特定设备的上传流量
  3. 为已标记流量和非标记流量分别创建一个队列
  4. 给标记流量队列队速,给未标记流量不限速

具体 Queue Trees 限速配置

给设备分配静态IP之后,比如我这里电视的IP是 192.168.1.28,我的电脑是 192.168.1.26,同时把电脑加上是电脑可以方便的用测速工具来进行测试。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 标记tv的上传流量
/ip firewall mangle add chain=prerouting src-address=192.168.1.28 action=mark-packet new-packet-mark=upload-limit-tv comment="TV upload limit"

# 标记测试设备的上传流量
/ip firewall mangle add chain=prerouting src-address=192.168.1.26 action=mark-packet new-packet-mark=upload-limit-tv comment="Test upload limit"

# 为标记流量创建父队列
/queue tree add name="parent-queue-marked" parent=global max-limit=5M comment="default marked upload limit 5M"

# 为未标记流量创建父队列
/queue tree add name="parent-queue-unmarked" parent=global max-limit=0 comment="default unmarked upload unlimit"

# 创建子队列,限制tv的上传速度
/queue tree add name="upload-limit-tv" parent=parent-queue-marked packet-mark=upload-limit-tv max-limit=1M comment="tv traffic limit 1M"

# 为未标记流量创建子队列
/queue tree add name="unmarked-traffic" parent=parent-queue-unmarked max-limit=0 comment="unmarked traffic unlimit"

如果还有IPV6流量的话

1
2
3
4
/ipv6 firewall mangle add chain=prerouting src-address=2001:db8::240 action=mark-packet new-packet-mark=upload-limit-tv

# 标记测试设备的IPv6上传流量
/ipv6 firewall mangle add chain=prerouting src-address=2001:db8::107 action=mark-packet new-packet-mark=upload-limit-test

关键的设置就是max-limit=1M,给打了标记的这部分流量设置一个上限。

这里分为父队列和子队列。其实可以方便的配置多种策略。如果有多台设备,也可以通过策略组合来实现父队列限制多少,某一个或几个设备限制多少。

然后用测试网站测试成功以后,就可以把自己的电脑的子队列删除了。大功告成。