gpt4 book ai didi

linux - 如何将 linux tc 与 tcp 应用程序一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:25 24 4
gpt4 key购买 nike

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

tc qdisc add dev eth0 root handle 1: htb default 12
tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbps ceil 1gbps
tc class add dev eth0 parent 1: classid 1:10 htb rate 100mbps ceil 100mbps

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

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

最佳答案

使用流量控制匹配规则和iptables规则来标记流量。

tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 1 fw flowid 1:10
iptables -A OUTPUT -i eth0 -p tcp -j MARK --set-mark 1

将把所有 TCP 出站数据包放入您拥有的每秒 100 兆的队列中。

由于您只想匹配一个应用程序,因此让我们假设您的应用程序有一个 TCP 套接字监听端口 7654,所有连接都通过该端口进行。 iptables 规则看起来更像这样

iptables -A OUTPUT -i eth0 -p tcp -m multiport --sports 7654 -j MARK --set-mark 1

此外,您还应该在 tc qdisc 命令中将 1 Gbps 队列设置为默认值,以便系统上的正常流量不会以任何方式影响您的测试。

关于linux - 如何将 linux tc 与 tcp 应用程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15353304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com