我负责一个基于Linux的(运行Debian的)分支机构路由器,它需要一个单一的高速互联网连接(eth2),并把它变成大约20个内部networking,每个networking有一个独立的子网(192.168.1.0/24到192.168 .20.0 / 24)和一个单独的VLAN(eth0.101到eth0.120)。 我正试图限制一个内部子网上的带宽,这个内部子网一直在嚼碎更多的带宽。 做这个的最好方式是什么? 我第一次尝试在这里是奇迹般的,我在这里听到超级用户。 不幸的是,这对我恰恰相反的情况非常有用……它在客户端而不是在互联网端很有用。 我的第二次尝试是使用在http://www.topwebhosts.org/tools/traffic-control.phpfind的脚本,我修改了这样的活动部分是: tc qdisc add dev eth0.113 root handle 13: htb default 100 tc class add dev eth0.113 parent 13: classid 13:1 htb rate 3mbps tc class add dev eth0.113 parent 13: classid 13:2 htb rate 3mbps tc filter add dev eth0.113 protocol ip parent 13:0 prio 1 […]
我们想模拟在公有云上使用虚拟机的本地化的影响(比如AWS EC2)。 为此,我们希望在数据包中注入延迟,以便我们可以模拟特定的networking拓扑。 假设有三个虚拟机:A,B,C | A | <- 5 μs delay -> B | <—- 25 μs delay —-> C 我们怎样才能最轻松地为A和B之间的连接注入5μs的延迟(或任意值),而A和C之间的延迟为25μs? 任何解决scheme赞赏(每个虚拟机上的Linux内核级别更改/创build覆盖networking/ …)。
有队列纪律DRR(Dificite循环赛)。 它具有与HTB相同的function,但是不使用桶,而是使用令牌,它只是为每个队列分配一个DIFS计数器。 在发送数据包DC时,数据包的大小会减小。 如果DC小于数据包大小,则按队列的数量增加DC,然后处理下一个队列。 因此,它可以以一定的比例划分出局traffec,不知道信道宽度(这是HTB所需的)。 见http://www.unix.com/man-page/linux/8/tc-drr/ 设置:两台主机,172.16.1.1和172.16.1.2。 在第一台主机上,我们正在听stream量: nc -l 8111 nc -l 8112 在第二台主机上我们检查速度: pv /dev/zero | nc 172.16.1.1 8111 pv /dev/zero | nc 172.16.1.1 8112 现在速度是相等的(pv是允许通过pipe道测量数据传输速度的实用程序)。 在第二个主机上添加DRR(顶部的HTB用于模拟实际的信道速度限制): tc qdisc add dev eth0 root handle 1: htb tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit tc qdisc add […]
我使用带有库内核的Ubuntu服务器10.04作为NAT路由器。 我使用iptables和tc做基于端口的stream量优先级。 它工作正常。 我给了http更高的优先级。 所以我的networking被YouTube和更大的http下载所淹没。 我的问题是:是否有可能使iptables识别并标记属于youtubestream或更大的文件的数据包? 我的目标是使网页浏览更快。
我需要build立一个系统,在这个系统中,我可以根据许多参数(如端口/协议等)来发送数据包,这些参数在某种程度上是“正常”的,而且还有其他方面,比如队列长度和其他外部因素。 我的路由器由两个内部接口(802.11)和两个外部接口(一个ADSL,一个LTE)组成。 所以我想通过一个外部程序来检查每个数据包,并决定它应该被路由的接口。 我看了一下iproute2,但没有find任何方法将每个数据包传递给外部程序,或者以某种方式为每个数据包dynamicselect路由。 所以问题是:做这件事的最好方法是什么? 有没有工具可以朝这个方向发展,还是我应该依靠自己制造的东西,并通过Linux标准工具传递数据包?
我试图限制一个简单的iperf服务器和客户端之间的带宽,使用第三个被动机器作为桥梁。 在没有干扰的情况下,iperf返回〜90 Mbits / sec的带宽。 我的目标是创build一个根qdisc发送所有未分类的stream量(一切)到一个儿童HTB类,我的带宽设置,然后路由到叶qdisc,其中一旦我得到这个工作,将设置额外的tc参数。 我的实施很简单: sudo tc qdisc add dev $interface root handle 1: htb default 10 sudo tc class add dev $interface parent 1:0 classid 1:10 htb rate $bandwidth burst $burst sudo tc qdisc add dev $interface parent 1:10 handle 10:0 netem #other stuff goes here 当这个bash脚本在$interface = eth1 , $bandwidth = […]
这可能是我以前(未回答)问题的延续,因为潜在的原因可能是相同的。 我有一个运行nginx和sshd的Linux服务器。 这是一个共享的100mbit / s的无限量的链接。 在“高峰时段”(基本上,在美国白天),SFTP性能变得非常糟糕,有时甚至在连接之前就超时。 ssh不受影响。 我知道这是nginx,因为当我停止nginx时,sftp的问题会立即消失。 然而,在这些“事件”中,nginx本身基本上没有延迟。 这是我的服务器一个长期存在的问题,我最近着手处理一劳永逸。 昨天我开始怀疑,由于缺乏上行带宽导致的大量的httpstream量以及更大的延迟导致了我的stream量。 我用tc来添加一些优先级: /sbin/tc qdisc add dev eth1 root handle 1: prio /sbin/tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip dport 22 0xffff flowid 1:1 /sbin/tc filter add dev eth1 protocol ip parent 1: prio 1 u32 match ip sport […]
我怎样才能限制我的CentOS服务器的上传和下载带宽? 这是一个带有单个接口eth0的盒子。 理想情况下,我想要一个命令行解决scheme(我一直在尝试使用tc ),我可以轻松地在脚本中打开和closures。 到目前为止,我一直在尝试做类似tc filter add dev eth0 protocol ip prio 50 u32 police rate 100kbit burst 10240 drop但我显然缺less了大量的知识和信息。 有人可以帮助快速一class? 非常感谢,丹
如何使用tc filterconfiguration“全部捕获”过滤tc filter ? 我testing了下面的代码,但它给了我错误: "Unknown filter "1:100", hence option "protocol" is unparsable" : tc filter add dev $IF_LAN parent 1:100 protocol ip prio 7 flowid 1:190 提前致谢。
我正在试图限制我的容器内的带宽。 我曾尝试使用以下命令,但我认为它没有得到有效的。 cd /sys/fs/cgroup/net_cls/ echo 0x1001 > A/net_cls.classid # 10:1 echo 0x1002 > B/net_cls.classid # 10:2 tc qdisc add dev eth0 root \ handle 10: htb tc class add dev eth0 parent 10: \ classid 10:1 htb rate 40mbit tc class add dev eth0 parent 10: \ classid 10:2 htb rate 30mbit tc filter add […]