问题标签 [trafficshaping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3166 浏览

java - 如何使用 Java netty 正确限制带宽使用?

对于我使用 netty nio lib 在 Java 中开发的下载客户端,我还实现了带宽限制功能。从技术上讲,我是通过 GlobalTrafficShapingHandler 对象来实现的。基于这个类的JavaDoc,我初始化nio客户端管道如下:

然后在运行时设置最大值。下载速度通过

好的,所以基本上 netty nio 功能运行良好且快速。当我设置最大值时。在应用程序中下载速度,我还可以看到带宽使用确实被限制在最大值。等级。我通过以下方式监控带宽使用情况

然而,不幸的是最大。我监控的速度不是我之前设置的,甚至没有接近。例如,我最初(无限制)的下载速度约为 2000 kb/s,然后如上所述将限制设置为 300 kb/s,但实际下载速度在 700-900 kb/之间变化s。

所以我在这种情况下的问题是:我可以看到流量整形器正在做某事,但不是我想要的。我在这里错过了什么吗,例如管道初始化中的任何步骤?

在此先感谢您的帮助!

0 投票
1 回答
1319 浏览

linux - 如何在 tcp 应用程序中使用 linux tc

我有一个 1Gb 的网络,我需要通过将速率限制为 100MB 和 1Gb 来运行某些 TCP 性能测试。我的理解是可以使用分层令牌桶(htb)来实现这一点,如下所示

这应该创建两个根类 1:1 和 1:10,分别具有 1gb 和 100mb 带宽。如果我的理解有误,请纠正我。

接下来,如何在我的 tcp 应用程序中使用上述类?例如,当我运行我的应用程序时,它应该只使用 100 Mb,我是否需要在套接字选项中指定某些内容,以便应用程序发送的任何消息现在都属于 1:1 类,因此将速率限制为 100 Mb?

0 投票
2 回答
18894 浏览

linux - 为什么 tc 不能做入口整形?入口整形有意义吗?

在我的工作中,我发现 tc 可以做出口整形,并且只能做入口监管。我想知道为什么 tc 不实现入口整形?

代码示例:

但我不能这样做:

我发现一个名为 IFB(更新的 IMQ)的解决方案可以将流量重定向到出口。但这似乎不是一个好的解决方案,因为它正在浪费 CPU。所以我不想用这个。

入口整形有意义吗?为什么 tc 不支持它?

0 投票
1 回答
1530 浏览

trafficshaping - 流量整形 tc-tbf

我正在尝试在我的无线接口上使用 tc 和 tbf qdisk 设置流量整形,以限制下载带宽。至此,我成功编写了使用 HTB 的 Wondershaper。我想使用无类整形,并读到这项工作的正确 qdisk 是 TBF。

但是当我尝试设置它时,没有任何效果:下载一直在快速进行。

我尝试了不同的方法来做到这一点,但它从来没有奏效:

谁能给我关于如何做的任何建议,或者我做错了什么?

0 投票
0 回答
1954 浏览

linux - linux:每个 TCP 会话的流量整形

我在 TCP 端口 7070 上运行服务,我想将传入和/或传出流量限制为 fe 50kbits/s。无论 src ip 是什么,限制都应该是每个 TCP 会话。

你能否给我任何提示我如何构建它?

在此先感谢并致以最诚挚的问候,迈克尔

0 投票
1 回答
17789 浏览

bandwidth - 如何根据每个用户的用户带宽管理 Squid

我想根据 Squid Server Proxy 上的用户活动来管理带宽和流量。

我做了一些研究,但找不到我想要的解决方案。

例如,流量超过 256K 的用户应该被限制访问服务器。

你能帮助我吗?

谢谢

0 投票
2 回答
18465 浏览

traffic - 删除特定界面上的 tc 配置

我是使用 tc 命令的新手。

我正在编写一个测试脚本来为接口添加延迟。这是使用python和fabric api完成的

因此脚本将执行以下操作:

sudo tc qdisc 添加 dev eth1 root netem 延迟

在脚本结束时,我们会做

sudo tc qdisc del dev eth1 root netem

但同时我想在一开始就确保系统上没有现有的 tc 控制。所以我想在整个脚本开始之前运行删除命令。但是如果没有完成 tc 配置,这会给我一个错误。

abc@abcvmm:~$ sudo tc qdisc del dev eth1 root netem

RTNETLINK 答案:无效的参数

有没有办法删除配置的接口,只有在现有的 tc 配置完成而不是其他情况下。

0 投票
1 回答
301 浏览

linux - cgroups 和 tc/netem:不知道如何让它们一起工作

我在包裹自己cgroupstc.

我正在尝试为特定进程添加延迟。下面的代码不起作用。但我不知道什么是错的(甚至什么是对的)。

另一个有趣的事情是,在运行它之后,cat 会/sys/fs/cgroup/high-latency/tasks 打印出一大堆进程(全部?),包括 pid 1。

知道我做错了什么,更重要的是 - 在尝试使用 tc 和 cgroups 时我可以使用哪些调试工具?

0 投票
1 回答
1073 浏览

linux - 在每个数据包之间引入延迟

所以我知道我可以使用 Linux tc 和 netem 将流的所有数据包延迟给定的延迟。此处介绍的内容http://www.linuxfoundation.org/collaborate/workgroups/networking/netem#Delay_distribution 只是将所有数据包延迟给定的时间,而不改变实际数据包之间的间隔。

我想要做的是将每对连续数据包之间的最小间隔时间设置为 100 毫秒。而且我不想要任何重新排序。

任何想法都非常感谢。

问候,

克拉夫库

0 投票
2 回答
1150 浏览

python - 如何在 python 中运行 bash 'tc' 命令?

我想用 Python 对 Linux 内核进行流量控制,以模拟丢失、损坏和重复的包。我已经能够使用 Linux 终端进行配置,但我必须使用 python。

bash cmd 的工作原理:

蟒蛇不起作用:

谢谢。