Post

QoS

QoS

为什么需要qos phb disable命令

华为文档定义:

qos phb disable命令用来配置接口禁止使能在接口的下行转发时检查PHB (Per-Hop Behavior)表的功能。

进行简单流分类时有两个过程:

  • 上行查询BA(Behavior Aggregate)表,将路由器外部业务优先级映射成内部业务优先级;
  • 下行查询PHB(Per Hop Behavior)表,将内部业务优先级再映射成外部业务优先级。

Pasted image 20231006235757

在简单流分类的下行,由于报文的服务等级、颜色等信息被存放在PHB表中,当报文转发时,检查PHB表,识别报文的业务优先级,进而根据DS域中的映射关系将路由器内部业务优先级映射成外部业务优先级。接口配置简单流trust upstream命令后,下行会执行PHB,可以配置qos phb disable命令,使报文在接口下行转发时不会检查PHB表。

仔细看映射表,会发现一个现象,在RFC定义的AF,EF,CS0,CS6和没有RFC定义的CS7可以正常映射并且反映射,然后不在RFC定义的,以及RFC定义的CS1,CS2,CS3,CS4,CS5(下表❓部分)都不能被正常进行反映射。

[!tip] 反映射为什么会出现问题? ① 是队列限制导致的,华为8个队列,无法再放入CS1~CS5,所以用AFx~EF代替 ② 由于用AF-EF代替,导致冲突,比如DSCP8和10都对应AF1+Green,那么比如出方向就会映射为一个值,那么只能牺牲CS1这个不在队列里面的DSCp值了。

DSCP InServiceColorDSCP OutRFCPHBResult
0BEGreen0RFC 2474 & 4594CS0
1~7BEGreen0   
8AF1Green10RFC 2474 & 4594CS1
9BEGreen0   
10AF1Green10RFC 2597 & 4594AFxy
11BEGreen0   
12AF1Yellow12RFC 2597 & 4594AFxy
13BEGreen0   
14AF1Red14RFC 2597 & 4594AFxy
15BEGreen0   
16AF2Green18RFC 2474 & 4594CS2
17BEGreen0   
18AF2Green18RFC 2597 & 4594AFxy
19BEGreen0   
20AF2Yellow20RFC 2597 & 4594AFxy
21BEGreen0   
22AF2Red22RFC 2597 & 4594AFxy
23BEGreen0   
24AF3Green26RFC 2474 & 4594CS3
25BEGreen0   
26AF3Green26RFC 2597 & 4594AFxy
27BEGreen0   
28AF3Yellow28RFC 2597 & 4594AFxy
29BEGreen0   
30AF3Red30RFC 2597 & 4594AFxy
31BEGreen0   
32AF4Green34RFC 2474 & 4594CS4
33BEGreen0   
34AF4Green34RFC 2597 & 4594AFxy
35BEGreen0   
36AF4Yellow36RFC 2597 & 4594AFxy
37BEGreen0   
38AF4Red38RFC 2597 & 4594AFxy
39BEGreen0   
40EFGreen46RFC 2474 & 4594CS5
41~45BEGreen0   
46EFGreen46RFC 3246EF
47BEGreen0   
48CS6Green48RFC 2474 & 4594CS6
49~55BEGreen0   
56CS7Green56RFC 2474 & 4594CS7
57~63BEGreen0   

HQoS

HQoS = Hierarchical Quality of Service

传统的QoS采用一级调度,举个例子,如果有2个用户user1和user2,两个用户都有相同的DSCP(比如46),那么进入到路由器都是一个队列(比如EF),如果EF拥塞了,那么路由器就会随机丢弃里面的流量,假如User1的流量比User2更加重要,那也无法保证

img

HQoS简单的说就是这之前一级队列的基础上多加了几级虚拟队列(有三级和五级等,厂商实现不一样),这之前进行调度,这样就可以对不同的用户进行不同的优先级设置,比如User1优先级高,那么相同队列拥塞的时候先丢弃User2的流量以此来包装User1的流量

img

下面是官方的图片: 普通QoS调度

img

HQoS调度

img

  • 叶子节点:FQ(Flow Queue)队列
    • 每个用户的数据流都可以划分为1 ~ 8个优先级,即每个用户可以使用1 ~ 8个FQ
  • 中间节点:SQ(Subscriber Queue)
    • 一个SQ代表一个用户或者业务
  • 根节点:GQ(Group Queue)
    • 多个用户定义为一个用户组GQ

下面举例说明FQ、SQ、GQ及其关系

  • 有2个家庭用户,User1和User2
  • 要求对每个用户的总带宽限制在120Mbps以内,保证带宽为100Mbps,每个用户的VoIP和IPTV的带宽保证分别为60Mbps和40Mbps,其他业务不做带宽保证,2个用户的总带宽为150Mbps

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
flow-queue user1
 queue af4 wfq shaping 40000 # --> IPTV
 queue ef pq shaping 60000 # --> VoIP
#
user-group-queue user1
 shaping 150000 outbound
#
qos-profile user1  
 user-queue cir 100 pir 120 flow-queue user1 user-group-queue user1
# 

flow-queue user2
 queue af4 wfq shaping 40000 # --> IPTV
 queue ef pq shaping 60000 # --> VoIP
#
user-group-queue user2
 shaping 150000 outbound
#
qos-profile user2
 user-queue cir 100 pir 120 flow-queue user1 user-group-queue user2
# 

interface GigabitEthernet 1/0/0.100
 vlan-type dot1q 100
 qos-profile user1 outbound
#
interface GigabitEthernet 1/0/0.200
 vlan-type dot1q 200
 qos-profile user2 outbound
#
This post is licensed under CC BY 4.0 by the author.