首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在多租户云环境中细粒度调整 IBM AIX 7.1 和 Linux 上的网络服务质量 更新

在多租户云环境中细粒度调整 IBM AIX 7.1 和 Linux 上的网络服务质量 更新

在与 AIX 客户端相连的 Linux 服务器上配置网络 QoS
  • 分配静态 IP 地址

                                    向 Linux 服务器和客户端 AIX 系统分配一个静态 IP 地址。

                                    Linux 服务器 IP 地址 = 172.18.10.60

                                    AIX 客户端 IP 地址 = 172.18.10.40

                                    注意:确保这两个 IP 地址都是可到达的。                             
  • 检查根排队策略 (qdisc) 是否存在

    网络带宽整形是一种基于树的分层方法,其中,根 qdisc 构成基本单元(与内核通信的排队策略),被附加到与客户端相连的服务器网络接口。tc 命令(由 Linux 提供)是一个管理接口,我们在本例中使用它进行网络整形。(有关 tc 命令的更多信息,请参考 Linux 服务器的 tc 指南)。下面的步骤允许您检查是否存在与内核相连的网络带宽限定配置。本文假设不存在这些配置,并因此而创建了一个新的配置。
    清单 1. 检查是否存在 qdisc
    1
    2
    3
    root@linuxserver:# tc qdisc show dev ethX0
    root@linuxserver:# echo $?
    0




    确保没有根 -qdisc 与网络设备相连。如果有的话,请按照以下方式删除 -qdisc。
    清单 2. 删除 qdisc
    1
    2
    3
    root@linuxserver:# tc qdisc del root dev ethX0
    root@linuxserver:# echo $?
    0




  • 检查与 qdisc 相连的类

                                    类构成了可编程的实体,它们与根排队策略相关。                                                         清单 3. 检查是否存在类
    1
    2
    3
    root@linuxserver:# tc class show dev ethX0
    root@linuxserver:# echo $?
    0




  • 检查是否存在过滤器

                                    过滤器是操作实体,用于在所有与 Linux 服务器相连的 IP 地址中分离指定的 IP 地址。                                                        清单 4. 检查是否存在过滤器
    1
    2
    3
    root@linuxserver:# tc -s –d filter show dev ethX0
    root@linuxserver:# echo $?
    0




    在任意 tc 命令中包含 –s(统计)和/或 –d(细节)可以生成更详细的输出。  
  • 添加排队策略

                                    向 ethX0(服务器的以太网卡,与 Linux 服务器相连,用于处理 AIX 客户端的请求)添加根 -qdisc。在这里,htb 指 hierarchical token bucket 类完整排队策略。有关的更多细节,请参阅 参考资料 小节。                                                                                清单 5. 添加根 -qdisc
    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@linuxserver:# tc qdisc add dev ethX0 root handle 10: htb

    root@linuxserver:# tc -s qdisc show dev eth0
    qdisc htb 10: r2q 10 default 0 direct_packets_stat 29
    Sent 3338 bytes 29 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    root@linuxserver:# tc -d qdisc show dev eth0
    qdisc htb 10: r2q 10 default 0 direct_packets_stat 58 ver 3.17




  • 创建子类策略

    当创建了一个子类并将它附加到一个 qdisc 时,这将充当所有其他类的父类。该类的带宽参数等于接口的物理带宽的参数(这里假设接口物理带宽是 100 Mbps)。                        清单 6. 添加一个子类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    root@linuxserver:# tc class add dev ethX0 parent 10:0 classid 10:10 htb rate 100mbps

    root@linuxserver:# tc -s class show dev eth0
    class htb 10:10 root prio 0 rate 800000Kbit ceil 800000Kbit burst 101600b
    cburst 101600b
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    lended: 0 borrowed: 0 giants: 0
    tokens: 1016 ctokens: 1016

    root@linuxserver :# tc -d class show dev eth0
    class htb 10:10 root prio 0 quantum 200000 rate 800000Kbit ceil 800000Kbit
    burst 101600b/8 mpu 0b overhead 0b cburst 101600b/8 mpu 0b overhead 0b level 0




    您可以使用 ethtool 命令找到以太网卡的物理带宽,如下所示。有关 ethtool 命令的更多信息,参见 Red Hat Linux 发行版提供的手册。
    清单 7. 在 Linux 服务器上使用 ethtool 命令识别物理网络带宽
    1
    root@linuxserver:# ethtool ethX0




  • 向创建的子类添加一个叶类

    添加一个叶类,其速度由方案中 AIX 客户端选择的参数确定。在下面的例子中,AIX 客户端选择的网络速度选项 1Mbps。                        清单 8. 添加一个叶类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    root@linuxserver:# tc class add dev ethX0 parent 10:10 classid 10:100 htb rate 1mbps

    root@linuxserver:# tc -s class show dev eth0
    class htb 10:10 root rate 800000Kbit ceil 800000Kbit burst 101600b cburst 101600b
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    lended: 0 borrowed: 0 giants: 0
    tokens: 1016 ctokens: 1016
    class htb 10:100 parent 10:10 prio 0 rate 8000Kbit ceil 8000Kbit burst 2600b
    cburst 2600b
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    lended: 0 borrowed: 0 giants: 0
    tokens: 2600 ctokens: 2600
      
    root@localhost :# tc -d class show dev eth0
    class htb 10:10 root rate 800000Kbit ceil 800000Kbit burst 101600b/8 mpu 0b
    overhead 0b cburst 101600b/8 mpu 0b overhead 0b level 7
    class htb 10:100 parent 10:10 prio 0 quantum 100000 rate 8000Kbit ceil 8000Kbit
    burst 2600b/8 mpu 0b overhead 0b cburst 2600b/8 mpu 0b overhead 0b level 0




  • 向创建的子类附加一个 qdisc  

                                    根据公平排队算法,向 qdisc 附加一个随机公平排队 (SFQ),它属于排队策略集合。                          清单 9. 向子类添加一个 qdisc
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    root@linuxserver:# tc qdisc add dev ethX0 parent 10:100 sfq quantum 1514b perturb 15

    root@linuxserver:# tc -s qdisc show dev eth0
    qdisc htb 10: r2q 10 default 0 direct_packets_stat 256
    Sent 37768 bytes 256 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    qdisc sfq 8002: parent 10:100 limit 128p quantum 1514b perturb 15sec
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    root@linuxserver:# tc -d qdisc show dev eth0
    qdisc htb 10: r2q 10 default 0 direct_packets_stat 286 ver 3.17
    qdisc sfq 8002: parent 10:100 limit 128p quantum 1514b flows 128/1024 perturb 15sec




    在这里,quantum 用作添加子类的选项(在  中),指数据流中在轮到下一个队列之前允许从队列中去掉的字节数量。  
  • 向已创建的叶子类附加一个过滤器清单 10. 向叶子类添加一个过滤器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    root@linuxserver:# tc filter add dev ethX0 protocol ip parent 10:0 prio 5 u32 match
    ip dst 172.18.10.40 flowid 10:100

    root@linuxserver:# tc -s filter show dev eth0
    filter parent 10: protocol ip pref 5 u32
    filter parent 10: protocol ip pref 5 u32 fh 800: ht divisor 1
    filter parent 10: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0
    flowid 10:100 rule hit 30 success 0)
      match 097a7a04/ffffffff at 16 (success 0 )

    root@linuxserver:# tc -d filter show dev eth0
    filter parent 10: protocol ip pref 5 u32
    filter parent 10: protocol ip pref 5 u32 fh 800: ht divisor 1
    filter parent 10: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0
    flowid 10:100
      match 097a7a04/ffffffff at 16




    表示添加一个过滤器来匹配网络所限定的特定 IP 地址。                                

       但在企业环境中,客户端可以请求对每个子网应用网络速度限制, 中展示了这类场景。                                
    清单 11. 对整个子网应用过滤器
    1
    2
    root@linuxserver:# tc filter add dev ethX0 protocol ip parent 10:0 prio 5
    u32 match ip dst 172.18.10.1/24 flowid 10:100




返回列表