Pod带宽管理工具
在业务混合部署的场景下,Pod带宽管理功能根据QoS分级对资源进行合理调度,提升网络带宽利用率。HCE提供oncn-tbwm带宽管理工具,使用tbwmcli命令对收发包方向的网络限速功能,实现网络QoS。
前提条件
本功能固定使用ifb0,使用前请确定虚拟网卡ifb0未被使用,并加载ifb驱动。
约束与限制
- 仅HCE 2.0 x86架构支持使用tbwmcli命令。
- 仅允许root用户执行tbwmcli命令。
- tbwmcli命令同一时间只能在一个网卡使能Qos功能,多个网卡不支持并行使能网络QoS。
- 网卡被插拔重新恢复后,原来设置的QoS规则会丢失,需要手动重新配置网络QoS功能。
- 不支持cgroup v2。
- 升级oncn-tbwm软件包不会影响升级前的使能状态。卸载oncn-tbwm软件包会关闭对所有设备的使能。
- 仅支持识别数字、英文字母、中划线“-” 和下划线“_”四类字符类型的网卡名,其他字符类型的网卡不被识别。
- 实际使用过程中,带宽限速有可能造成协议栈内存积压,此时依赖传输层协议自行反压,对于udp等无反压机制的协议场景,可能出现丢包、ENOBUFS、限流不准等问题。
- 收包方向的网络限速依赖于TCP的反压能力,在非TCP协议的场景中,网络包已经收至目标网卡,不支持对于收包方向的网络限速。
- 不支持tbwmcli、tc命令和网卡命令混用,只能单独使用tbwmcli工具进行限速。例如,某个网卡上已经设置过tc qdisc规则的情况下,对此网卡使能网络QoS功能可能会失败。
使用方法
- 安装oncn-tbwm软件包。
- 确认repo源配置正常。
请检查默认的/etc/yum.repos.d/hce.repo配置文件中参数是否正确,正确的配置如下。
[base] name=HCE $releasever base baseurl=https://repo.huaweicloud.com/hce/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/hce/$releasever/os/RPM-GPG-KEY-HCE-2 [updates] name=HCE $releasever updates baseurl=https://repo.huaweicloud.com/hce/$releasever/updates/$basearch/ ......
- 执行yum install oncn-tbwm命令安装oncn-tbwm软件包。
- 验证oncn-tbwm软件包正确性。
- 执行tbwmcli -v命令,正确安装则结果显示如下。
version: 1.0
- 确认以下oncn-tbwm服务组件,正常情况下以下服务组件均存在。
/usr/bin/tbwmcli /usr/share/tbwmcli /usr/share/tbwmcli/README.md /usr/share/tbwmcli/bwm_prio_kern.o /usr/share/tbwmcli/tbwm_tc.o
- 执行tbwmcli -v命令,正确安装则结果显示如下。
- 确认repo源配置正常。
- 根据需要执行tbwmcli命令。
表1 tbwmcli命令说明 命令
说明
tbwmcli -e ethx
tbwmcli -d ethx egress
使能/关闭某个网卡的发包方向Qos功能。
示例:使能eth0网卡的发包方向Qos功能。
tbwmcli -e eth0 enable eth0 egress success
示例:关闭eth0网卡的发包方向Qos功能。
tbwmcli -d eth0 egress disable eth0 egress success
tbwmcli -i ethx online/offline
tbwmcli -d ethx ingress
使能/关闭某个网卡的收包方向Qos功能。
示例:使能eth0网卡收包方向Qos功能,并设置为在线网卡。
tbwmcli -i eth0 online enable eth0 ingress success, dev is online
示例:使能eth0网卡收包方向Qos功能,并设置为离线网卡。
tbwmcli -i eth0 offline enable eth0 ingress success, dev is offline
说明:收包方向不支持同时设置为多个离线网卡的情况,支持一个离线网卡和多个在线网卡。
示例:关闭eth0网卡收包方向Qos功能。
tbwmcli -d eth0 ingress disable eth0 ingress success
tbwmcli -d ethx
强制关闭某个网卡的所有Qos功能,并关闭ifb功能。
示例:强制关闭eth0网卡的所有Qos功能,并关闭ifb功能。
tbwmcli -d eth0 disable eth0 success
tbwmcli -p istats/estats
打印收/发包方向内部统计信息。
示例:打印收包方向内部统计信息。
tbwmcli -p istats offline_target_bandwidth: 94371840online_pkts: 3626190offline_pkts: 265807online_rate: 0offline_rate: 13580offline_prio: 0
示例:打印发包方向内部统计信息。
tbwmcli -p estats offline_target_bandwidth: 94371840online_pkts: 4805452offline_pkts: 373961online_rate: 0offline_rate: 19307offline_prio: 1
tbwmcli -s path <prio>
tbwmcli -p path
设置/查询cgroup的QoS优先级。
当前仅支持设置离线和在线两个QoS优先级。
- 0:设置cgroup为在线QoS优先级。
- -1:设置cgroup为离线QoS优先级。
示例:设置test_online cgroup的优先级为0。
tbwmcli -s /sys/fs/cgroup/test_online 0 set prio success
示例:查询test_online cgroup的优先级。
tbwmcli -p /sys/fs/cgroup/test_online prio is 0
tbwmcli -s bandwidth <low,high>
tbwmcli -p bandwidth
设置/查询离线带宽范围。
示例:设置离线宽带范围为30mb~100mb。
tbwmcli -s bandwidth 30mb,100mb set bandwidth success
示例:查询离线带宽范围。
tbwmcli -p bandwidth bandwidth is 31457280(B),104857600(B)
tbwmcli -s waterline <val>
tbwmcli -p waterlin
设置/查询在线网络带宽水线。
示例:设置在线网络带宽水线为20mb。
tbwmcli -s waterline 20mb set waterline success
示例:查询在线网络带宽水线。
tbwmcli -p waterline waterline is 20971520 (B)
tbwmcli -p devs
查看系统上所有网卡的使能状态。
tbwmcli -p devs lo Egress : disabled lo Ingress : disabled eth0 Egress : disabled eth0 Ingress : enabled, it's offline ifb0 Egress : enabled
tbwmcli -c
强制删除所有网卡的qos,谨慎使用。
modprobe ifb numifbs=1
加载ifb。
rmmod ifb
卸载ifb。