问题标签 [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 投票
1 回答
465 浏览

linux - 按字节限制的 tc-sfq 替代方案?

是否有 tc-sfq(随机公平队列)的替代方法,允许根据数据包大小(总字节)而不是数据包计数来配置限制?

这样做的原因是,给定一个 50 字节的数据包大小,一个 htb 类(速率=1000kbit)可以例如每 10 毫秒出列 25 个数据包,但是对于 1500 字节的数据包大小,每 10 毫秒只有 0.83 个数据包。

如果我将 tc-sfq 限制设置为 25 个数据包,那么在最坏的情况下,一个完整的队列需要 300 毫秒才能清空。

--

这是在 Linux 3.0.101 上,所以像 fq_codel 这样的东西不能正常工作。也许有人有一个补丁,用字节限制替换了 sfq 数据包限制(类似于 pfifo 与 bfifo)?

0 投票
1 回答
1074 浏览

linux - 如何使用 TC 过滤由“so_mark”标记的数据包

so_mark用来标记从特定套接字发送的数据包。
现在我想从我的 TC 中的一个类中过滤这些数据包(实际上来自 HTB 机制)。
要使用的过滤器是什么(语法示例也会有所帮助)

0 投票
1 回答
1072 浏览

qos - 桥接在一起的两个网卡入口被重定向到ifb,但它不起作用,为什么?

我有一个有两个网卡的主机,所以它可以被看作是一个网关,两个网络端口桥接。然后我让两个网络接口的入口流量重定向到一个IFB,然后做IFB的流量控制,但是还是不行,为什么?上面提到的两个网卡一个是WAN口,一个是LAN口。它们是网桥。我的脚本如下:

0 投票
0 回答
503 浏览

python - 使用 tc 延迟传入流量会影响主机和 VM

我希望演示 DNS 缓存中毒攻击。为此,我在 VM 上配置了 DNS 服务器。我正在尝试使用 tc 和以下命令延迟从以下 IP 地址到 VM 的传入流量:199.43.133.53 和 199.43.132.53:

modprobe ifb ip link set dev ifb0 up tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: protocol ip u32 \ match ip src 199.43.132.53/16 flowid 1:1 action mirred egress redirect dev ifb0\ tc qdisc add dev ifb0 root netem delay 5000ms

这两个 IP 地址对应于域的名称服务器。添加这些规则后,当我从 VM ping 这两个名称服务器时,它确实得到了延迟响应,这很好。我希望延迟的是来自这些名称服务器的 DNS 响应。这仍然非常快。

我还在主机上运行一个 python 脚本,它将数据包发送到这个虚拟机。将这些规则添加到 VM 时,python 脚本(使用 Scapy 和 sendp 写入数据包)也会遇到延迟。虽然当我从主机 ping 虚拟机时,ping 响应非常快。为什么当宿主机的 IP 不是过滤器的一部分时 Python 的 sendp 会遇到延迟。在那种情况下,为什么 ping 响应(从主机到 VM 的 ping 请求)正常且没有延迟。我在这里想念什么?

0 投票
1 回答
1079 浏览

linux - tc:将许多网络连接到一个接口

我正在寻找模拟在主机上不同端口上运行的一组服务的延迟。我想模拟不同服务的不同延迟,可能在给定主机上可能有很多延迟,希望没有任何限制。

我发现这样做的唯一方法是使用 prio qdisc。这是一个例子:

如果你运行上面的命令,你会注意到句柄 11-16 没有被创建并且失败并出现错误。

注意。这是上述内容的撤消。

有没有办法在一个接口中添加 10 个以上的网络?

0 投票
1 回答
2368 浏览

linux - 如何使用 tc 限制网络速度?

我有三台机器:客户端、服务器和代理。在客户端(1.1.1.1)我有简单的脚本,它使用 wget,在服务器(2.2.2.1)我有 apache。在代理机器上我想通过使用 tc. 在代理机器上,我有两个接口 eth0(1.1.1.2) 连接到客户端,eth1(2.2.2.2) 连接到服务器。

我尝试添加此规则,但它们不起作用:

0 投票
1 回答
1593 浏览

netty - netty 应用程序中写入和读取字节的计算

我需要在我的简单 http 服务器 netty 应用程序中跟踪单个客户端的连接(写入、读取字节和速度(每秒字节数))。据我了解,要做到这一点,我必须使用ChannelTrafficShapingHandler. 哪些方法必须被覆盖,我该如何进行这些计算?

我的 ChannelInitializer:

我的 SimpleChannelInboundHandler:

0 投票
1 回答
1436 浏览

linux - 限制不是带宽,而是linux中每秒的数据包

子问题 #1

tcs 是限制带宽的qdisc完美方法,但是 Linux 中有什么方法可以限制传出数据包的 pps 吗?

为什么我问它。

通常你只考虑一种资源 - 带宽(每秒字节数),但是当某些应用程序开始生成大量小数据包时(例如,对不同站点的 http GET 请求,其中包含相对少量的 byres),那么pps可能会成为资源。

子问题 #2

所以,我想将我的所有流量分成两组——A 组具有小 pps 和带宽(高优先级),而 B 组具有大 pps 和低优先级。然后我想限制(来自两个组的)输出 pps 的摘要,优先考虑来自组 A 的数据包。

PS当然我想在这两组之间共享公共频道。所以我不能只限制B,因为当A根本不使用通道时,B必须使用100%。

可能吗?如何?

0 投票
1 回答
2637 浏览

linux - tc filter 丢弃匹配的数据包

我正在寻找添加一组过滤器,这些过滤器会丢弃与参数匹配的数据包。似乎 tc 过滤器不支持基于匹配的删除操作,而是基于 qos 参数。有没有人能够放置 tc drop 过滤器?

到目前为止,我发现的最常见的方法是使用 tc 标记它,然后使用 iptables 丢弃标记的数据包,但在我看来这不是那么有效。

0 投票
2 回答
3978 浏览

python - 'RTNETLINK 回答:文件存在'

当我添加延迟命令时,paramiko 返回“2”作为退出状态(而它返回“0”作为带宽命令设置)。2可以吗?(谷歌搜索对此没有帮助,我猜 2 一定是某种错误)。

我使用的命令是:-

我们基本上试图遵循这一点:

# tc qdisc add dev eth0 root netem delay 100ms

来自在线教程。

应该设置 bw、filter 和 delay 的命令块是这样的。(我猜我可能弄乱了父/类ID)。你能看出我做错了什么吗?

这是我收到的错误:

这是我们设置延迟和带宽的脚本:

那么上面的 delay_cmd 有什么问题吗?

这就是我们在代码中的调用方式:

parent 1: handle进一步说明和parent 1:2 handle本身有什么区别?