代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/oncn-bwm 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本特性通过区分在线、离线业务从而既能保证在线业务带宽的需求,还能保证充分的利用网络带宽资源。 具体提供了下列功能:
oncn-bwm
│ bwmcli.c # bwmcli命令行工具
│ bwmcli.h
│ CMakeLists.txt
│ LICENSE
│ README.md
│
├─bpf # 两个ebpf程序文件实现带宽管理逻辑
│
├─ko # 提供内核proc文件接口
│
└─tools # 在离线带宽检测工具,基于bpftrace
接口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
接口1
说明
/proc/qos/net_qos_enable:使能网络qos功能
示例
# 使能对应namespace中网络设备的qos功能
echo $nspid > /proc/qos/net_qos_enable
接口2
说明
/proc/qos/net_qos_disable:除能网络qos功能
示例
# 除能对应namespace中网络设备的qos功能
echo $nspid > /proc/qos/net_qos_disable
接口3
说明
/proc/qos/net_qos_bandwidth:设置/查询离线业务带宽上下限
示例
# 设置离线业务带宽上下限
echo "$low,$high" > /proc/qos/net_qos_bandwidth
# 查询离线业务带宽上下限
cat /proc/qos/net_qos_bandwidth
接口4
说明
/proc/qos/net_qos_waterline:设置/查询在线业务带宽水线
示例
# 设置在线业务带宽水线
echo "$val" > /proc/qos/net_qos_waterline
# 查询在线业务带宽水线
cat /proc/qos/net_qos_waterline
接口5、6
说明
接口5、6为组合接口
/proc/qos/net_qos_devs:将需要查询的容器对应的nspid输入该接口,该容器网络设备的qos状态将被记录在/proc/qos/net_qos_devstatus中
/proc/qos/net_qos_devstatus:用于输出/proc/qos/net_qos_devs中对应容器网络设备的qos状态
示例
# 输入对应容器环境的nspid,对应容器中网络设备的qos使能状态记录在/proc/qos/net_qos_devstatus中
echo $nspid > /proc/qos/net_qos_devs
cat /proc/qos/net_qos_devstatus
接口7
说明
/proc/qos/net_qos_stats:查询整个host环境上在离线业务的统计信息
示例
# 查询在离线业务的统计信息
cat /proc/qos/net_qos_stats
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 配置在线业务的水线
这里以calico网络插件为例,插件配置路径:/etc/cni/net.d/10-calico.conflist 将自定义的插件添加到plugins列表中(一般加在最后,确保网卡此时已创建完成),指定插件程序名称,并在插件程序存放路径(/opt/cni/bin/)下存放对应的可执行程序,这里可执行程序为shell脚本,命名为bwm-cni
{
"name": "k8s-pod-network",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "calico",
"log_level": "info",
"datastore_type": "kubernetes",
"nodename": "node1",
"mtu": 1440,
"ipam": {
"type": "calico-ipam"
},
"policy": {
"type": "k8s"
},
"kubernetes": {
"kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
}
},
{
"type": "portmap",
"snat": true,
"capabilities": {"portMappings": true}
},
{
"type": "bandwidth",
"capabilities": {"bandwidth": true}
},
{
"type": "bwm-cni" #插件可执行程序名称为bwm-cni
}
]
}
bwm-cni可执行脚本示例
#!/bin/bash -e
case $CNI_COMMAND in
ADD)
#使能网卡的qos功能
nsenter --net=$CNI_NETNS bwmcli -e $CNI_IFNAME >&2
echo "{}"
;;
DEL)
echo "{}"
;;
VERSION)
echo '{
"cniVersion": "0.3.1",
"supportedVersions": [ "0.3.0", "0.3.1", "0.4.0" ]
}'
;;
*)
echo "Unknown cni command: $CNI_COMMAND"
exit 1
;;
esac
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。