searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用tc进行ingress限速的办法

2024-03-27 01:17:11
107
0

在Linux系统中,使用tc(Traffic Control)工具可以实现对网络流量的管理和限速。通常使用tc进行egress限速, 当存在ingress有大量流量,特别小包情况下会占用cpu资源处理这些报文,这时可能需要进行ingress限速,有一定降低负载的效果。

1. ingress限速通常会想到使用ifb设备进行流量镜像, 在ifb设备上进行出方向限速

如下示例是对进入eth0网卡的源ip 192.168.1.100进行100mbps带宽的规则

# 添加ifb虚拟网卡
ip link add ifb0 type ifb
ip link set ifb0 up

# 在eth0上添加ingress qdisc,并将流量重定向到ifb0
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.100 action mirred egress redirect dev ifb0

# 在ifb0上添加出方向的限速规则
tc qdisc add dev ifb0 root handle 1: htb default 20
tc class add dev ifb0 parent 1: classid 1:1 htb rate 100mbit
tc filter add dev ifb0 parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:1

使用ifb设备限速需要重定向流量, 对性能影响很大

2. tc +police限速

tc提供了ingress qdisc,但是它的功能相对有限,因为它不支持class,只能通过过滤器(filter)来实现限速,通常是通过police动作来限制流量,丢弃(drop)超出限制的流量来实现。1中限速能力可以如下配置

tc qdisc add dev eth0 ingress ###ingress qdisc的句柄(handle)是ffff:
tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip src 192.168.1.100 police rate 50mbit burst 2mb drop flowid :1

police不支持复杂的流量分类和优先级设置,但是配置简单, 对性能影响没有使用ifb大, 很适合用于流量防护。 但是tc限速对性能还是比较大的, 如果在到达设备之前(防火墙流量清洗等方式)或者使用xdp进行ingress限速,效果更好

0条评论
作者已关闭评论
何****森
15文章数
1粉丝数
何****森
15 文章 | 1 粉丝
何****森
15文章数
1粉丝数
何****森
15 文章 | 1 粉丝
原创

使用tc进行ingress限速的办法

2024-03-27 01:17:11
107
0

在Linux系统中,使用tc(Traffic Control)工具可以实现对网络流量的管理和限速。通常使用tc进行egress限速, 当存在ingress有大量流量,特别小包情况下会占用cpu资源处理这些报文,这时可能需要进行ingress限速,有一定降低负载的效果。

1. ingress限速通常会想到使用ifb设备进行流量镜像, 在ifb设备上进行出方向限速

如下示例是对进入eth0网卡的源ip 192.168.1.100进行100mbps带宽的规则

# 添加ifb虚拟网卡
ip link add ifb0 type ifb
ip link set ifb0 up

# 在eth0上添加ingress qdisc,并将流量重定向到ifb0
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.100 action mirred egress redirect dev ifb0

# 在ifb0上添加出方向的限速规则
tc qdisc add dev ifb0 root handle 1: htb default 20
tc class add dev ifb0 parent 1: classid 1:1 htb rate 100mbit
tc filter add dev ifb0 parent 1:0 prio 1 u32 match ip src 192.168.1.100 flowid 1:1

使用ifb设备限速需要重定向流量, 对性能影响很大

2. tc +police限速

tc提供了ingress qdisc,但是它的功能相对有限,因为它不支持class,只能通过过滤器(filter)来实现限速,通常是通过police动作来限制流量,丢弃(drop)超出限制的流量来实现。1中限速能力可以如下配置

tc qdisc add dev eth0 ingress ###ingress qdisc的句柄(handle)是ffff:
tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 match ip src 192.168.1.100 police rate 50mbit burst 2mb drop flowid :1

police不支持复杂的流量分类和优先级设置,但是配置简单, 对性能影响没有使用ifb大, 很适合用于流量防护。 但是tc限速对性能还是比较大的, 如果在到达设备之前(防火墙流量清洗等方式)或者使用xdp进行ingress限速,效果更好

文章来自个人专栏
neutron
6 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0