传入速率限制

传入速率限制

我有一台带有两个接口的 ubuntu 机器。eth1 是 NAT 接口,eth2 是 WAN 接口。我有 4 mbps 的互联网连接。我想将 eth1 NAT 网络限制为 2 mbps。因此我使用这个 tc 规则:

tc qdisc add dev eth1 root tbf rate 2mbit burst 10kb latency 70ms peakrate 2.4mbit minburst 1540

现在,如果我检查 eth1 的出站带宽,它被限制为 250 KBps,这很好。但是 eth2 的入站带宽大于这个值:它将介于 300 KBps 到 400 KBps 之间。如果我检查 tc 规则的状态,它显示大量数据包丢失。我如何将 eth2 的入站带宽限制为 2 mbits 以及如何防止数据包丢失?

我尝试了给出的解决方案在这个答案中。该行tc qdisc add dev eth2 ingress给了我一个file exists error。答案中的第二种方法显示了我在此处提到的相同行为:更多数据(超过 2mbit)通过 eth2 进入。

编辑1: 我可以使用哪些 iptables 和 tc 规则来减慢 SYN、ACK、FIN 数据包的速度,以便让 ISP 路由器了解我本地网络上的拥塞情况。

答案1

除非我误解了你的目的,否则你无法真正限制数据包的速率除非您与 ISP 协调某种形式的 QoS 以调整其路由器上的流量,否则您将无法从 ISP 向网络发送数据包。这通常需要企业级连接和资金。您看到数据包丢失是因为这是调整流量的唯一方法 - 您将其丢弃在地板上。因此,您的 TC 规则按设计运行,但您无法控制发送的流量级别您的 WAN 接口,因为发送者会尝试尽快发送。

现在,您可以通过策略性地丢弃数据包或干扰 ACK 数据包来调整传入的 TCP 流量,让发送方认为您的网络比实际更拥挤。但这对进入您网络的非 TCP 流量并没有太大帮助。

答案2

你可以做类似的事情:

tc qdisc add dev eth1 root handle 1: htb default 2
tc class add dev eth1 parent 1: classid 1:1 htb rate 2.4mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:1

这将限制在给定子网上流向 LAN(假设 eth1 是 LAN)的流量。

相关内容