0

我尝试将一些 C++ 代码从 Windows 移植到 Linux,但在 Linux 中找不到用于流量控制功能的类似 API。

我需要这些功能。如果您知道我在哪里可以找到这样的 API,请帮忙?

感谢您的时间。

4

2 回答 2

2

你肯定想从Linux 高级路由和流量控制howto 开始。我建议使用tchowto 使用的 iproute2 中的实用程序,但如果您想要更直接的 API,您可以查看其源代码作为示例。

于 2012-03-14T05:15:35.473 回答
1

如前所述,您想使用 Linux 流量控制命令 tc。我推荐HTB调度。您可以通过以下方式启用它的内核模块:

modprobe sch_htb

设置 tc 的基本命令如下:

tc qdisc add dev eth0 root handle 1:0 htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:1000 htb rate 500Kbit ceil 1000Kbit
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip src 109.11.28.2 flowid 1:1000

这些示例命令在设备 eth0 上为 IP 109.11.28.2 设置流量控制,更详细地说,它们执行以下操作

  1. 设置排队规则
  2. 设置父类及其流量限制
  3. 设置具有流量速率和流量上限的子类
  4. 添加 IP 过滤器以仅将子类限制应用于特定 IP

您可以根据需要设置任意数量的子类,每个子类可用于您网络上的不同 IP。有关设置 tc 流量控制的更彻底和详细的分步指南,请参见此处:http ://hostrepo.com/article.php?id=194

祝你好运 !

于 2016-01-19T00:11:02.910 回答