更新时间:2024-09-14 GMT+08:00

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功能可能会失败。

使用方法

  1. 安装oncn-tbwm软件包。
    1. 确认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/
      ......
    2. 执行yum install oncn-tbwm命令安装oncn-tbwm软件包。
    3. 验证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
  2. 根据需要执行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。