目录

文章目录

  • 目录
  • QoS
  • Policer CLI
    • 1. 创建 Policer(限速策略器)
    • 2. 创建 Classify Table(流量分类表)
    • 3. 查看 Classify Table(流量分类表)
    • 4. 创建 Classify Session(流量分类规则)并添加到指定的 Classify Table 中
    • 5. 在 Interface 上使能 Classify Policer。
    • 6. 查看 Classify Policer
  • Policer QoS Node Graph
  • 应用示例一:指定 IP 的 QoS 限速
    • 网络拓扑
    • 配置网络连通性
    • 配置 QoS
  • 应用示例二:指定网段的 QoS 限制
  • 应用示例三:DSCP 修改

QoS

VPP 支持两套 QoS 实现:

  1. 基于 Policer 实现的 QoS。
  2. 基于 DPDK QoS 套件实现的 Hqos。

Policer CLI

1. 创建 Policer(限速策略器)

指示 Policer Name、令牌桶速率、大小、算法类型、匹配后的动作等参数

configure policer[name] <color-aware |rate |  # 枚举:kbps、ppscir |   # belong to kbpseir |   # belong to kbpscb |    # belong to kbpseb |    # belong to kbpsround | # 枚举:closest、up、downtype |  # 枚举:1r2c、1r3c、2r3c-2698、2r3c-4115、2r3c-mef5cf1<conform-action|exceed-action|violate-action> |<drop|transmit|mark-and-transmit>># EXAMPLE:
vpp# configure policer name policy1 rate kbps cir 800 cb 90000 round closest type 1r2c conform-action transmit exceed-action drop

2. 创建 Classify Table(流量分类表)

指示需要匹配数据报文的哪些字段,目前支持 L2、L3、L4 的部分协议类型

classify table [miss-next|l2-miss_next|acl-miss-next <next_index>]  # 指示当数据包无法找到匹配项时被发送的下一个节点。mask <mask-value>           # 指示数据流掩码:#   1. hex#   2. l2 参数:src dst proto tag1 tag2 ignore-tag1 ignore-tag2 cos1 cos2 dot1q dot1ad#   3. l3 参数:#      - ip4 参数:version hdr_length src dst proto#      - ip6 参数:version traffic-class flow-label src dst proto#   4. l4 参数:#      - tcp 参数:src dst #      - udp 参数:src_port dst_port#      - src_port#      - src_portbuckets <nn>                # 该参数被分类器的哈希算法使用,推荐的值是预期条目的近似大小。[skip <n>]                  # 指示应用掩码之前要跳过的 16 字节向量的数量。[match <n>]                 # 指示要匹配的实际值,即:字节向量,长度是 16Byte 的倍数。[current-data-flag <n>][current-data-offset <n>][table <n>][memory-size <nn>[M][G]]    # 指示分类表及其条目所占用的内存大小。[next-table <n>]            # 指示下一个分类表,当存在多个表链时使用。[del][del-chain]# EXAMPLE:
classify table mask l3 ip6 dst

3. 查看 Classify Table(流量分类表)

show classify tables [index <nn>] [verbose <nn>]
# index:
#   - 0:ip4-table
#   - 1:ip6-table
#   - 2:l2-table# EXAMPLE:
vpp# show classify tables verbose 2TableIdx  Sessions   NextTbl  NextNode0         1        -1        -1Heap: base 0x7f84a9763000, size 2m, locked, unmap-on-destroy, name 'classify'page stats: page-size 4K, total 512, mapped 2, not-mapped 510numa 0: 2 pages, 8k bytestotal: 1.99M, used: 1.28K, free: 1.99M, trimmable: 1.99Mnbuckets 2, skip 1 match 1 flag 0 offset 0mask 00000000000000000000ffffffff0000linear-search buckets 0[0]: empty
[1]: heap offset 1216, elts 2, normal0: [1216]: next_index 0 advance 0 opaque 1 action 0 metadata 0k: 000000000000000000000a0a02020000hits 0, last_heard 0.001: empty1 active elements1 free lists0 linear-search buckets# hits:报文命中数量。

4. 创建 Classify Session(流量分类规则)并添加到指定的 Classify Table 中

指示 Classify Table 中指定的数据报文字段的字段值

classify session[hit-next |l2-hit-next |acl-hit-next <next_index> |policer-hit-next <policer_name>]table-index <nn>  # 必须是已有的 table index。match [hex] [l2] [l3 ip4] [opaque-index <index>][action set-ip4-fib-id|set-ip6-fib-id|set-sr-policy-index <n>][del]# EXAMPLE:
classify session policer-hit-next policy1 exceed-color table-index 0 match l3 ip6 dst 2008:db8:0:2::1

单个 Table 中配置多条 Session

classify table mask l3 ip4 src buckets 16
classify session acl-hit-next deny opaque-index 0 table-index 0 match l3 ip4 src 30.1.1.100
classify session acl-hit-next deny opaque-index 1 table-index 0 match l3 ip4 src 30.1.1.101
...

5. 在 Interface 上使能 Classify Policer。

将 Policy Node 添加到 Interface 的 Node Graph 中,目前仅支持 ip4 、 ip6、l2 三种类型 Classify 节点。

set policer classify interface <int>[ip4-table <index>][ip6-table <index>]# 上面的 ip4-table、ip6-table 都是执行 `classify table mask l3 ip6 dst` 返回的 TableIdx。# EXAMPLE:
set policer classify interface GigabitEthernet0/7/0 ip6-table 0

6. 查看 Classify Policer

此时,Table 和 Policer 通过 Session 关联了起来,成为了 “Classify Policer”

show classify policer type [ip4|ip6|l2]# EXAMPLE:
vpp# show classify policer type ip4Intfc idx      Classify table        Interface name1                   0     GigabitEthernet0/4/0

Policer QoS Node Graph

当数据流经过 ip4-policer-classify Node 时,如果命中了 Classify Policer,则执行 QoS 规则。

应用示例一:指定 IP 的 QoS 限速

网络拓扑

配置网络连通性

  • Linux Host
$ sudo ip link add name vpp1out type veth peer name vpp1host
$ sudo ip link set dev vpp1out up
$ sudo ip link set dev vpp1host up
$ sudo ip addr add 10.10.1.2/24 dev vpp1host
$ ip route add 10.10.2.0/24 via 10.10.1.1 dev vpp1host
  • VPP1
vpp# create host-interface name vpp1out
vpp# set int ip address host-vpp1out 10.10.1.1/24
vpp# set int state host-vpp1out upvpp# set int ip address GigabitEthernet0/4/0 10.10.2.1/24
vpp# set int state GigabitEthernet0/4/0 up
  • HTTP Server
$ sudo ip addr add 10.10.2.2/24 dev ens4
$ sudo ifconfig ens4 up
$ ip route add 10.10.1.0/24 via 10.10.2.1 dev ens4
  • 测试连通性
# Linux Host ping HTTP Server
$ ping 10.10.2.2# HTTP Server ping Linux Host
$ ping 10.10.1.2

配置 QoS

  1. 基准测试:结果为 318M/s。
# Linux Host GET Bigfile
$ curl http://10.10.2.2/bigfile --output ./bigfile% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100 4096M  100 4096M    0     0   278M      0  0:00:14  0:00:14 --:--:--  315M
  1. VPP1 配置 QoS Policer:限速为小于 100KB/s。
vpp# configure policer name policy1 cir 800 cb 90000 rate kbps round closest type 1r2c conform-action transmit exceed-action drop
vpp# classify table mask l3 ip4 src
vpp# classify session policer-hit-next policy1 exceed-color table-index 0 match l3 ip4 src 10.10.2.2
vpp# set policer classify interface GigabitEthernet0/4/0 ip4-table 0
  1. 测试验证:结果为 100KB/s
$ curl http://10.10.2.2/bigfile --output ./bigfile% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0 4096M    0 3954k    0     0  45216      0 26:23:07  0:01:29 26:21:38 45258

综上,通过在网络边界(VPP1)配置了 QoS/Bandwidth Control Policer 之后,Linux Host 下载 bigfile 的带宽也有了明显的下降。

应用示例二:指定网段的 QoS 限制

configure policer name policy1 cir 800 cb 90000 rate kbps round closest type 1r2c conform-action transmit exceed-action drop
classify table mask l3 ip4 src/24 # table index: 0
classify session policer-hit-next policy1 exceed-color table-index 0 match l3 ip4 src 10.0.1.0
set policer classify interface GigabitEthernet0/4/0 ip4-table 0

应用示例三:DSCP 修改

  • 修改报文的 DSCP 值:将在速率范围之内的流量的 DSCP 值修改为 AF43。
configure policer name policy1 cir 800 cb 90000 rate kbps round closest type 1r2c conform-action mark-and-transmit AF43 exceed-action drop
classify table mask l3 ip4 src
classify session policer-hit-next policy1 exceed-color table-index 0 match l3 ip4 src 211.1.1.100
set policer classify interface GigabitEthernet5/0/3 ip4-table 0

FD.io/VPP — QoS — Policer CLI相关推荐

  1. FD.io/VPP — QoS — DPDK Hqos

    目录 文章目录 目录 基于 DPDK QoS 套件实现的 Hqos 1.CONF 配置 Hqos 2.CLI 配置 Hqos 基于 DPDK QoS 套件实现的 Hqos Hqos 的处理流程如上图所 ...

  2. FD.io VPP 20.05 官方文档 总目录:用户文档+开发文档+命令行

    https://docs.fd.io/vpp/20.05/index.html Vector Packet Processing FD.io VPP ▼Vector Packet Processing ...

  3. FD.io/VPP — 常用指令集合

    目录 文章目录 目录 前言 System Level Interface Add NIC into VPP as Interface Interface State Hardware Interfac ...

  4. FD.io VPP环境下运行用户应用程序教程

    FD.io VPP环境下运行用户应用程序教程 RToax 2020年9月 相关文章:<FD.io VPP利用iperf3进行UDP灌包测试-英特尔X520万兆网卡> 1. VPP简介 VP ...

  5. FD.io VPP用户文档:会话层架构与VPP应用

    FD.io VPP:用户文档 HostStack RToax 2020年9月 HostStack 1. 描述 VPP的主机协议栈是利用VPP传输,会话和应用程序层协议的用户空间实现.它大致包括四个主要 ...

  6. FD.io VPP startup.conf配置文件示例:安装后第一次配置

    FD.io VPP配置文件详解:https://rtoax.blog.csdn.net/article/details/108056964 ## Filename: startup.conf ## I ...

  7. FD.io VPP软件架构(一):vppinfra(基础结构层)

    FD.io VPP:用户文档 软件架构 vppinfra(基础结构层) RToax 2020年9月 VPP /软件架构 Software Architecture fd.io vpp实现是第三代矢量数 ...

  8. FD.io/VPP — Overview

    目录 文章目录 目录 FD.io VPP FD.io 官网:https://fd.io FD.io(Fast data – Input/Output)是 Linux 基金会下属的一个开源项目,成立于 ...

  9. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接

    目录 下载RPM/DEB包 往期文章回顾与推荐 FD.io是一些项目和库的集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务.FD.io为软件定义基础设施的开发者提供了一个通用平台, ...

最新文章

  1. cadence原理图封装pin名称重复_Cadence原理图库文件引脚名重复处理方法介绍
  2. 智慧城市建设面临“三座大山” 安全与服务需两手抓
  3. ExtAspNet应用技巧(十四) - 系统设置
  4. 双语阅读:坚持你的方向
  5. C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案
  6. Kramdown 配置不当引发 GitHub Pages 多个 RCE,得 $2.5万($6.1万系列之二)
  7. Mixtile Garage产品简介
  8. android删除重复照片,android 删除重复文件
  9. EasyUI 1.5.1 美化主题大包 Insdep Theme 1.0.3 已发布,开源下载
  10. 会计新规给保险业带来的影响
  11. pyecharts可视化画3D动态地球仪,世界地图,中国地图。
  12. 只用一个div制作太极图
  13. b250支持服务器cpu,b250m主板上什么cpu
  14. Android 仿百合网超火爆社交app首页滑动效果
  15. android 串口通信打开失败
  16. CSP基础-CSP入门简介
  17. 第二章 Binary Search
  18. matlab坐标系无穷大,在 Matlab 中无穷大用 _______________ 表示
  19. Java编写的教室管理系统 带详细设计报告 功能非常齐全 完整源码
  20. 常见功能测试点的测试用例集合--51testing

热门文章

  1. Xamarin iOS教程之申请付费开发者账号下载证书
  2. 怎么访问和java包同级的文件_JAVA程序员谈几种访问文件的方式
  3. 如何让图像过渡更自然 python_如何过渡至 Python 3
  4. 脑电图伪迹去除方法汇总
  5. mysql隔离级别加锁情况_MySQL数据库事务各隔离级别加锁情况--read committed amp;amp; MVCC...
  6. 虚拟机复制后需要改什么_网站改版后为什么需要每月运营维护?
  7. Nature子刊:用机器学习揭露人类基因调控背后的“语法”
  8. 克隆真人语音只要1句话,AI问诊超96.4%全科医生!科大讯飞年度黑科技大秀,余承东都来了...
  9. 刚盈利的DeepMind收购MuJoCo:转手开源,所有人免费用
  10. 3页论文被引用17915次!88岁物理学泰斗温伯格去世,霍金《时间简史》受他启发...