在linux路由器的形状dropbox与tc和iptables

我局域网中的另一台机器正在上传到Dropbox,并使我的互联网连接的上传带宽饱和。 当这种情况发生时,我的平均时间为8.8.8.8,时间为3000-6000毫秒。 当dropbox不上传我的ping到8.8.8.8是45ms。

我试图简单地减慢和降低转发stream量到/从我的Linux路由器的Dropboxstream量。

我已经尝试了两个略有不同的指南,并没有任何成功。 我认为造成混淆的一个因素是,Dropbox的stream量似乎每隔一两分钟就会加速并减速。 我没有访问Dropbox上传的机器,所以我看不到为什么stream量高了几分钟,然后低了几秒钟,振荡。 也许它上传了许多文件,每个文件之间都有一个暂停。

我已经根据3个略有不同的指南在线做了3次尝试。

我的理解是1:30是最低优先级的stream量类,这是我想要的Dropbox。

更新:我稍微调整了这一点,以形成我从我自己的电脑上运行的下载。 限速工作如预期。 但是现在我必须testing上传。

尝试1

#!/bin/bash tc qdisc add dev br0 root handle 1:0 htb default 1 tc class add dev br0 parent 1:0 classid 1:30 htb rate 64kbps ceil 128kbps prio 0 tc filter add dev br0 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30 iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30 iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30 

iptables-save -c显示相关的stream量正在被标记

 [145:212599] -A FORWARD -d 162.125.0.0/16 -j MARK --set-xmark 0x1e/0xffffffff [72:2880] -A FORWARD -s 162.125.0.0/16 -j MARK --set-xmark 0x1e/0xffffffff 

尝试2

 #!/bin/bash #tc qdisc add dev br0 root handle 1: htb #tc class add dev br0 parent 1: classid 1:30 htb rate 32kbps ceil 64kbps #tc filter add dev br0 parent 1: prio 0 protocol ip handle 30 fw flowid 1:30 #iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30 #iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 30 

尝试3

 tc qdisc add dev br0 root handle 1: htb default 1 #Second add a class (bucket) with bandwidth restrictions tc class add dev br0 parent 1: classid 1:30 htb rate 512kbit #Then add a filter to force packets through the class tc filter add dev br0 protocol ip parent 1:0 prio 1 handle 1 fw classid 1:30 iptables -I FORWARD -t mangle -s 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 0x1 iptables -I FORWARD -t mangle -d 162.125.0.0/16,199.47.216.0/22,108.160.160.0/20,205.189.0.0/24,64.124.102.192/29,209.99.70.0/24,45.58.64.0/20,208.185.144.160/27 -j MARK --set-mark 0x1 

如果你有它的下载stream量的工作,那么你的configuration是好的。 stream量整形仅适用于出口stream量。 这是因为整形控制了接口的发送缓冲区,对接收端没有影响(入口stream量)。

有两种可能的解决scheme:一种是使用IFB (在链接的文章中提到),或者在另一个接口(不面向客户端)configuration出口整形。 澄清第二点:

 Clients <=> (download limit) [Server] (upload limit) <=> [Edge router] 

您想通过在不同的接口上应用下载和上传限制来在“服务器”上设置stream量,如图所示。 上传的数据是到第二个接口(非面向)客户端的出口stream量。

这里有类似的post: post1和post2 。