RTMP中如何限制每个流的输出带宽

How to restrict output bandwidth of each stream in RTMP

我有一个用于 RTMP 和 hls live 的数字海洋服务器 streaming.Is 我可以通过任何方式将每个流的输出带宽限制为 1mbps 或 1.5mpbs。

我已经尝试过 wondershaper,但它限制了整个服务器带宽,但我需要一些方法来限制 rtmp 和 hls 流的带宽。

就我个人而言,我会使用 cgroups + tciptables

在我的服务器上,我使用了一个名为 wondersharper 的工具 https://github.com/magnific0/wondershaper/blob/master/wondershaper

这可以限制给定网络接口上的带宽/吞吐量。我的 NGINX 服务器在带宽受限的虚拟网络接口上列出。

ip link add br0 type bridge
ip link set br0 up

另一种方法(但未测试)是 iptableshashlimit 扩展。

https://ipset.netfilter.org/iptables-extensions.man.html

hashlimit uses hash buckets to express a rate limiting match (like the limit match) for a group of connections using a single iptables rule. Grouping can be done per-hostgroup (source and/or destination address) and/or per-port. It gives you the ability to express "N packets per time quantum per group" or "N bytes per seconds" (see below for some examples).

#matching bytes per second flows exceeding 512kbyte/s

--hashlimit-mode srcip,dstip,srcport,dstport --hashlimit-above 512kb/s

#matching bytes per second hosts that exceed 512kbyte/s, but permit up to 1Megabytes without matching

--hashlimit-mode dstip --hashlimit-above 512kb/s --hashlimit-burst 1mb

在研究 ipbtables 部分时我发现了这个

http://info.iet.unipi.it/~luigi/dummynet/

可在此处找到文档:\

https://www.freebsd.org/cgi/man.cgi?query=ipfw&manpath=FreeBSD+9-current&format=html

虽然那个看起来很有趣。