Linux内核基于端口限速的研究及实现

1.通过iptables来实现限速

Iptables通过limit来实现限速,虽然iptables提供了丰富的匹配条件,但是基于端口来限速受到处理时机的限制,iptables处理的是三层及三层以上的报文,当iptables模块处理报文的时候,linux内核已经不再维护接收端口的信息了,这样的话就不能通过 iptables 的-i选项来匹配入端口。

2. 通过ebtables来实现。

Ebtalbes处理2层的报文,linux内核在整个ebtables 模块对报文处理的过程中接收端口的信息是一直保留的,因此可以通过ebtables来实现端口的限速在理论上是可以行得通的。

实现方式:

ebtables -t filter -N TEST             (limit选项是自定义链的属性)

ebtables -t filter -A FORWARD -j TEST   (用FORWARD链来实现限速,不会影响到达本机的数据,如web,DHCP等)

ebtables -t filter -A FORWARD -j DROP

ebtables -t filter -A TEST -j RETURN  -i  eth1.4 --limit 5/m --limit-burst 5

--limit 5/m:每隔12S释放一个令牌

--limit-burst 5: 有5个令牌

预期结果:也就是刚开始5个包是通的,然后每隔12S可以通一个包。

测试结果:通过测试发现,上面的配置的参数和试验的结果刚好相反。开始5个包不能通过,以后每隔12s有一个包不能通过,没弄清楚linux内核是怎么处理这个地方的。

3.通过TC来对端口的实现限速。

TC是linux内核专们用来限速使用的,功能非常丰富,但是

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,可以使用以下工具实现基于端口的流量控制: 1. tc:是Linux内核中的Traffic Control子系统,可以用来限制网络流量,例如带宽限制、延迟限制、丢包率限制等。使用tc可以创建一个qdisc队列规则,然后将需要进行流量控制的网络接口绑定到该规则上。 2. iptables:是Linux内核中的防火墙子系统,可以通过iptables规则来实现端口级别的流量控制。例如可以通过iptables规则将某个端口的流量限制在一定的带宽范围内。 下面是一个基于tc实现端口级别的流量控制的示例: 1. 创建一个名为eth0的网络接口的qdisc队列规则: ``` tc qdisc add dev eth0 root handle 1: htb default 10 ``` 2. 将80端口绑定到该规则上,并限制其带宽为1Mbps: ``` tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:1 ``` 以上命令的详细解释如下: - `tc qdisc add dev eth0 root handle 1: htb default 10`:创建一个名为eth0的网络接口的qdisc队列规则,使用htb算法,将默认流量流向编号为10的类别中。 - `tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit`:创建一个名为1:1的类别,将其父类别指定为1:(即默认流量),限制该类别的带宽为1Mbps。 - `tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:1`:将80端口绑定到该规则上,限制其带宽为1Mbps。具体地,该命令首先创建一个名为1:1的类别,将其父类别指定为1:(即默认流量),限制该类别的带宽为1Mbps;然后使用u32匹配规则,将dport(即目标端口)为80的流量流向1:1类别中。 这样,就可以在Linux系统中实现基于端口的流量控制了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值