(cherry picked from commit f703657b433a4053745e7bc3ae2b293dbd461794)
oncn-bwm
介绍
本特性通过区分在线、离线业务从而既能保证在线业务带宽的需求,还能保证充分的利用网络带宽资源。 具体提供了下列功能:
支持设置Pod网络优先级
- 以执行bwmcli命令的方式设置某个cgroup的网络优先级,执行bwmcli命令时需要指定的参数包括:cgrp_path、prio
- 优先级默认值为0,0标识为在线业务,-1标识为离线业务。
支持设置离线业务网络带宽限制
- Pod网络带宽限制对所有离线业务生效,所有离线业务的总带宽不能超过设置的网络带宽限制,在线业务没有网络带宽限制。
- 以执行bwmcli命令的方式设置一个主机/虚拟机的离线业务网络带宽限制,执行bwmcli命令时需要指定的参数包括:允许使用的:最低带宽(KB/MB/GB),最高带宽(KB/MB/GB)
- 网络带宽限制特性与水线特性共同完成离线业务带宽限制,当在线业务带宽低于设置的水线时:离线业务允许使用设置的最高带宽,当在线业务带宽高于设置的水线时,离线业务允许使用设置的最低带宽。
支持设置在线业务水线
- 以执行bwmcli命令的方式设置一个主机/虚拟机的在线业务的水线,执行bwmcli命令时需要指定的参数包括:水线值(KB/MB/GB)
- 当一个主机上所有在线业务的总带宽高于水线时,会限制离线业务可以使用的带宽,反之当一个主机上所有在线业务的总带宽低于水线时,会提高离线业务可以使用的带宽。
- 判断在线业务的总带宽是否超过/低于设置的水线的时机:每10ms判断一次,根据每个10ms内统计的在线带宽是否高于水线来决定对离线业务采用的带宽限制。
支持使能/除能Pod网络Qos功能
- 以执行bwmcli命令的方式来使能/除能一个网卡的Qos功能,执行bwmcli命令时需要指定的参数包括:网卡名,不指定网卡名则默认操作主机上的所有网卡。
- 一个主机上的所有使能Qos功能的网卡在实现内部被当成一个整体看待,也就是共享设置的水线和网络带宽限制。
软件架构
oncn-bwm
│ bwmcli.c # bwmcli命令行工具
│ bwmcli.h
│ CMakeLists.txt
│ LICENSE
│ README.md
│
├─bpf # 两个ebpf程序文件实现带宽管理逻辑
│
└─tools # 在离线带宽检测工具,基于bpftrace
安装教程
- yum install oncn-bwm
使用说明
接口说明
接口1
说明
bwmcli –e/-d ethx 使能/除能某个网卡的Qos功能
bwmcli –e/-d 使能/除能所有网卡的Qos功能
示例
# bwmcli –e eth0 –e eth1
enable eth0 success
enable eth1 success
# bwmcli –d eth0 –d eth1
disable eth0 success
disable eth1 success
接口2
说明
bwmcli –s path <prio> 设置某个cgroup的优先级
bwmcli –p path 查询某个cgroup的优先级
示例
# bwmcli -s /sys/fs/cgroup/net_cls/test_online 0
set prio success
# bwmcli -p /sys/fs/cgroup/net_cls/test_online
prio is 0
接口3
说明
bwmcli –s bandwidth <low,high> 设置离线带宽
bwmcli –p bandwidth 查询离线带宽
示例
# bwmcli -s bandwidth 30mb,100mb
set bandwidth success
# bwmcli -p bandwidth
bandwidth is 31457280(B),104857600(B)
接口4
说明
bwmcli –s waterline <val> 设置在线水线
bwmcli –p waterline 查询在线水线
示例
# bwmcli -s waterline 20mb
set waterline success
# bwmcli -p waterline
waterline is 20971520 (B)
接口5
说明
bwmcli –p stats 打印内部统计信息
示例
# bwmcli -p stats
rate: 1073741824
online_pkts: 79752
offline_pkts: 69730
online rate past: 0
offline rate past: 916194823
接口6
说明
bwmcli –p devs 描述系统上所有网卡的使能状态
示例
# bwmcli –p devs
lo : disabled
enp2s2 : disabled
典型使用案例
bwmcli -p devs 查询系统当前网卡使能状态
bwmcli -s /sys/fs/cgroup/net_cls/online 0
bwmcli -s /sys/fs/cgroup/net_cls/offline -1
bwmcli -e eth0 使能eth0的网卡 Qos功能
bwmcli -s bandwidth 20mb,1gb 配置离线业务带宽
bwmcli -s waterline 30mb 配置在线业务的水线
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
特技
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- Gitee 官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
- GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
- Gitee 官方提供的使用手册 https://gitee.com/help
- Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
Description
Languages
Diff
100%