传统的 qos 更容易对某一类流量在接口上进行处理, 而 QPPB 可以基于路由来做,相对传统的 qos 更灵活。即在某入接口进行分类,去往某条路由或者匹配某些源;在出接口做一些 Qos 的 action。
参考博客:
配置步骤 #
- 定义路由策略(匹配的路由)
- 将路由策略附加到 BGP 实例
- 将 QPPB 应用到 Ingress 接口
- 配置出口 QoS 服务策略
示例如下:
#定义路由策略(匹配的路由)
route-policy set_qos
if destination in (8.8.8.8/32) then
set qos-group 1
elseif source in (200.200.200.200) then
set qos-group 2
else
set qos-group 3
endif
pass
end-policy
#将路由策略附加到 BGP 实例
router bgp 1
bgp router-id 10.1.1.1
address-family ipv4 unicast
table-policy set_qos <<<<<<<
!
neighbor 10.1.12.2
remote-as 200
address-family ipv4 unicast
route-policy pass in
route-policy pass out
!
!
!
#将 QPPB 应用到 Ingress 接口
interface TenGigE0/1/0/0
ipv4 bgp policy propagation input qos-group destination <<<<<< destination/source
ipv4 address 100.1.1.1 255.255.255.0
load-interval 30
!
RP/0/RSP0/CPU0:ASR-9906-A#show run int be 100.100
Thu Jul 1 15:49:05.074 UTC
interface Bundle-Ether100.100
service-policy output QOS
ipv4 address 10.1.12.1 255.255.255.0
load-interval 30
encapsulation dot1q 100
!
#配置出口 QoS 服务策略
RP/0/RSP0/CPU0:ASR-9906-A#show run policy-map QOS
Thu Jul 1 15:49:12.454 UTC
policy-map QOS
class qos1
police rate 100 mbps
!
!
class qos2
police rate 200 mbps
!
!
class qos3
police rate 300 mbps
!
!
class class-default
!
end-policy-map
QPPB 实际的用途 #
参考 Frank 的博客:
例如,如果 AS200 有两种业务,我们想在 AS1 到 AS200 的互联 link BE100.100 做区分服务,给 9.9.9.9/32 多点带宽, 那么我们就可以在 AS1 路由器上做基于目的(destination)的 QPPB, 即为分别为 8.8.8.8/32,9.9.9.9/32 set 不通的 qos-group, 在出接口 BE100.100 针对不同的 qos-group 设置不同的带宽。
测试如下:
!!!!!!! 配置参考如上 !!!!!!!
流量测试仪产生一条目的地址为9.9.9.9的流量通过Ten0/1/0/0 送到AS1 router.
9.9.9.9/32的路由会被table-policy设置qos-group的属性, 下发到cef表中, 通过show cef x.x.x.x/x detial 查看
RP/0/RSP0/CPU0:ASR-9906-A#show cef 9.9.9.9/32 detail
Thu Jul 1 16:07:55.573 UTC
9.9.9.9/32, version 209159, internal 0x5000001 0x0 (ptr 0x7447a990) [1], 0x0 (0x0), 0x0 (0x0)
Updated Jul 1 09:53:56.844
Prefix Len 32, traffic index 0, precedence n/a, priority 15
QoS Group: 3 <<<<<<<<<
gateway array (0x73fc7ad8) reference count 2, flags 0x2010, source rib (7), 0 backups
[1 type 3 flags 0x48441 (0x73ffb180) ext 0x0 (0x0)]
RP/0/RSP0/CPU0:ASR-9906-A#monitor int tenGigE 0/1/0/0 be 100.100
Thu Jul 1 16:09:09.776 UTC
ASR-9906-A Monitor Time: 00:00:02 SysUptime: 187:38:33
Protocol:General
Interface In(bps) Out(bps) InBytes/Delta OutBytes/Delta
Te0/1/0/0 983.0M/ 9% 0/ 0% 2.9T/245.8M 152133/0
BE100.100 0/ 0% 308.8M/ 0% 2.7M/0 520.4G/0 <<<<<<< 流量出向被限速到300M
还例如, 有两个数据中心,都需要通过 AS1 访问 AS200, 但是 BE100.100 链路带宽有限,所以 BE100.100 的带宽使用上需要对源地址进行个区分, 来自数据中心 A 的 prefix 和来自 B 的 prefix 分别设置不同的 qos-group, 在 BE100.100 出方向上进行限速操作。由于是对源地址进行区分, 这里需要在 AS1 连接 router A/B 的两个接口上做基于源的 QPPB。
测试如下:
!!!!!!!! 配置修改如下 !!!!!!!!!
以Ten0/1/0/0 接口为例:
RP/0/RSP0/CPU0:ASR-9906-A#show run int tenGigE 0/1/0/0
Thu Jul 1 16:24:00.342 UTC
interface TenGigE0/1/0/0
ipv4 bgp policy propagation input qos-group source <<<<< source
ipv4 address 100.1.1.1 255.255.255.0
load-interval 30
#### BGP的相关配置也要进行一定的修改, 使得AS1 分别总router A/B 学到两条不一样的路由, 这里就不做展示
测试仪再产生一条流量源地址为8.8.8.8, 数据中心A的地址, 目的为AS200 内通告的地址。
流量到Ten0/1/0/0 会检查源地址的cef表象看被标记为哪一种Qos-group:
RP/0/RSP0/CPU0:ASR-9906-A#show cef 8.8.8.8/32 detail
Thu Jul 1 16:27:57.372 UTC
8.8.8.8/32, version 209152, internal 0x5000001 0x0 (ptr 0x744777e0) [1], 0x0 (0x0), 0x0 (0x0)
Updated Jul 1 09:12:08.133
Prefix Len 32, traffic index 0, precedence n/a, priority 4
QoS Group: 1 <<<<<<<<
gateway array (0x73fc7ad8) reference count 2, flags 0x2010, source rib (7), 0 backups
接着会根据目的地址,进行路由转发到BE100.100 进行Qos策略:
RP/0/RSP0/CPU0:ASR-9906-A#monitor int tenGigE 0/1/0/0 be 100.100
Thu Jul 1 16:29:27.060 UTC
ASR-9906-A Monitor Time: 00:00:02 SysUptime: 187:58:50
Protocol:General
Interface In(bps) Out(bps) InBytes/Delta OutBytes/Delta
Te0/1/0/0 983.1M/ 9% 0/ 0% 3.1T/245.9M 159636/0
BE100.100 0/ 0% 96.0M/ 0% 2.9M/0 557.7G/0 <<<<<<<<< 限速100M