QOS笔记(未完)

前言  QOS 基础
QOS quality of service ,服务质量。传统 IP 网络中,所有报文都是无区别对待。网络设备的处理机制是 FIFO first in first out )也就是 best-effort ,但对报文的吞吐量,延迟,延迟抖动,丢包率等不保证。 Maybe 很好, maybe 很差,视网络具体状况而定。
   随着网络的高速发展,网络承载的信息越来越丰富。而实时性强的语音,图像,重要数据对延迟,抖动,带宽比较敏感,解决的办法是增加带宽。但带宽始终是有限的。用有限的带宽,对不同网络应用数据流提供预期的服务质量保证。但 QOS 本身并不能增加带宽。(只是把带宽等资源进行重新分配调度)
QOS 能够:
1,  通过某种测量和监管机制,控制不同业务享受到不同的服务。
2,  通过某种调度策略,保障了在网络拥塞时重要业务保持持续稳定的运行。
3,  通过对网络流量的优化,使流量获得合理分配,网络运行于最佳状态。
形象点说,就跟现实中各行业里的 VIP 和普通客户,分别获得不同的服务。
 
交换 QoS 主要是在网络的接入层对数据流,实施分类和标记,同时提供流量监管和拥塞管理。
QOS 模型 :由于 QOS 是端对端的通讯,比如两个不同网络通讯,中间可能会跨越多个 router switch ,那么 QOS 设计就需要全局考虑。否则你只能控制你的网络 out 的流。
1,    best-effort service  尽力而为模型
2,    integrated  综合服务模型 简称 intserv
3,    differentiated service  区分(差分)服务模型 简称 diffserv
其实 best-effort 模型并不算 QOS ,这是数据传输的一种简单机制。目前是 internet 缺省服务类型。 Intserv 模型,应用程序首先通知自己的流量参数和需要的特定服务质量。在收到确认报文后,才开始发送报文。靠的是 RSVP resource  reservation protocol )预留资源协议。缺点: RSVP 报文太多,不停刷新。对单一数据流预留带宽的解决思路在 internet 上太难实现。厂家互联等。所以,现实中几乎是不采用。
Diffserv 模型,不需要预留资源。通过 IP 优先级, COS DSCP ACL 等定义 QOS ,对报文进行分类,流量监管,流量整形,队列调度等。一般通过以下技术来实现:
1,    CAR 根据报文的 COS TOS (对 IP 报文就是 IP 优先级和 DSCP 等),或 IP 报文的五元组(源,目的地址,源,目的端口,协议类型)对报文进行分类标志和流量监管
2 队列技术  WRED PQ CQ WFQ CBWFQ 等队列技术对拥塞的报文进行缓存和调度,实现拥塞管理。
QOS 处理流程:
1,  首先在网络边缘对数据流进行分类,打上不同的 QOS 标志。流分类( traffic classification )是指采用一定的规则,标识出具有某种特征的报文。分类规则( classification rule )是指根据管理需求而配置的过滤规则。可以只根据 DSCP TOS 或定义 ACL MAC 地址, IP ,源端口,目的端口等进行过滤。
2,  然后根据标志,在每一跳上进行相应的转发处理。比如流量整形,流量监管,拥塞避免。
 
一, 优先级标志
优先级标志是实施 QOS 的基础。方法包括: 802.1P, 优先级 ,IP 优先级 ,TOS 优先级和 DSCP 优先级 .
1,   IP header TOS 区域有 8 bit,0 2 3 bit 表示的是 IP 优先级( COS , 取值范围是 0~7 (二层 frame 只用 0~5 6 7 保留) ;3-6bit 表示的是 TOS(type of service) 优先级 , 取值范围是 0~15; RFC2474 , 重新定义了 TOS . 称之为 DS , 其中 DSCP 使用 0~5, 取值范围是 0-63 ,  6 7 是保留位 .
以太帧格式和 TAG 字段。四个字节的 TAG 里, PRI 就代表 802.1P 优先级 .
正常的以太 frame 并不带标志 ,802.1Q 才会带有 .( 还有 ISL,CISCO 私有 VLAN 协议 ). packet 却有两中标分方法 : IP precedence IP 优先级和 DSCP 区分服务代码点
                     IP precedence 0~7 和各对应表 .
802.1P 优先级位于二层报文头 . 适用于不需要分析三层报文 , 只需要在二层保证 QOS 的场合 .
The table below is very important we should be aware and remember
标志 marking
设备说明:
1,    华为记录 HCSE 教材上的设备型号,或本人实际操作的 S5624P AR46-20
2,    思科选用是 C3550-48-EMI 三层交换机 以及 C7200 路由交换机。
3,    设备型号均在命令的主机名有显示。
 
配置优先级标志 : 如果同时指定了 802.1P 优先级和 local-precedence, 那么 802.1P 优先。 TOS 字段里包括 IP precendce DSCP ,而 DSCP 是相当于 IP precedence 的扩展。所以 DSCP IP precedence 优先。
 
H 3C 配置
, S3026 只支持 802.1P 优先级 . 接口视图下 :priority-level [0~7] 设定优先级 , 同时配置 port priority replacement 设置接口优先级替换 , 然后经过该端口的数据流都打上此端口的优先级 .
, S3526E 以上三层交换机都支持 : IP 优先级 ,802.1P 优先级 (COS ),DSCP 优先级和本地优先级 . 是根据 ACL 结合来定义数据流 . 接口视图下 :
[S5624P-GigabitEthernet1/0/25]traffic-priority inbound ip-group 2000 ?
  cos               Specify 802.1p priority
  dscp              Specify DSCP
  ip-precedence     Specify IP precedence
  local-precedence  Specify local precedence
  rule              Specify the ID of acl rule
华为的是在一条命令里完成定义要标志的报文并设置优先级。而 Cisco 的是通过 class-map 定义要标志的报文,然后在 policy-map 里调用再设置优先级
Cisco 配置
C7200(config)#class-map [match-any| match-all] ewen   定义 class-map
C7200(config-cmap)#match ?      好多 match 的选择,
  access-group         Access group
  any                  Any packets
  class-map            Class map
  cos                  IEEE 802.1Q/ISL class of service/user priority values
  destination-address  Destination address
  discard-class        Discard behavior identifier
  dscp                 Match DSCP in IP(v4) and IPv6 packets
  fr-de                Match . Frame-relay DE bit
  fr-dlci              Match . fr-dlci
  input-interface      Select an input interface to match
  ip                   IP specific values
  mpls                 Multi Protocol Label Switching specific values
  not                  Negate this match result
  packet               Layer 3 Packet length
  precedence           Match Precedence in IP(v4) and IPv6 packets
  protocol             Protocol
  qos-group            Qos-group
  source-address       Source address
C3550(config-cmap)#match ?           3550 上选项就少多了。不过多了个 vlan 
  access-group  Access group
  class-map     Class map
  ip            IP specific values
  vlan          VLANs to match
C7200(config-cmap)#match ip precedence      匹配 ip 优先级
  <0-7>           Enter up to 4 precedence values separated by white-spaces
  critical        Match packets with critical precedence (5)
  flash           Match packets with flash precedence (3)
  flash-override  Match packets with flash override precedence (4)
  immediate       Match packets with immediate precedence (2)
  internet        Match packets with internetwork control precedence (6)
  network         Match packets with network control precedence (7)
  priority        Match packets with priority precedence (1)
  routine         Match packets with routine precedence (0)
marking 也就这么一个 match 命令了,就相当于是个 super ACL ,用来定义感兴趣的报文。以便后面的 policy-map 引用。较常用的是使用 IP 优先级和 ACL 定义。
C3550(config)#policy-map qos
C3550(config-pmap)#class ewen  调用 class-map
C3550(config-pmap-c)#police 80000 8000 exceed-action drop   利用令牌桶算法进行限速 CIR
C3550(config-pmap-c)#set ?    class-map 定义的报文设置优先级。
  cos         Set IEEE 802.1Q/ISL class of service/user priority
  dscp        Set DSCP in IP(v4) and IPv6 packets
  ip          Set IP specific values
  precedence  Set precedence in IP(v4) and IPv6 packets
而路由器里则有较多的选项:
C7200(config-pmap-c)#?
QoS policy-map class configuration commands:
  bandwidth       Bandwidth  定义保留的带宽
  compression     Activate Compression
  drop            Drop all packets
  exit            Exit from QoS class action configuration mode
  no              Negate or set default values of a command
  police          Police  利用令牌桶算法进行限速
  priority        Strict Scheduling Priority for this Class 优先级保留的带宽以及突发流量
  queue-limit     Queue Max Threshold for Tail Drop 队列的最大包个数
  random-detect   Enable Random Early Detection as drop policy 启用 WRED
  service-policy  Configure QoS Service Policy
  set             Set QoS values 定义 class-map 报文的优先级
  shape           Traffic Shaping 定义 CIR Bc Bc 以及流量整形
配置 bandwidth priority 命令的话,就是启用了 CBWFQ ,两个命令只能启用一个。当第二个取用的话,系统会提示: Must remove priority configuration from this class first. 或者 Must deconfigure bandwidth before issuing this command in this class
然后在接口上应用
C7200(config-if)#service-policy input qos
Class-map 是个匹配模块, policy-map 是个执行模块。一个 policy-map 可以调用多个 class-map 而完成对多种不同流量进行优先级设置和带宽保留等作用。
Case 1
把来自192.168.10.0/24 的出站telnet 流量的IP优先级设置为5,其他的出站流量的IP优先级设置为1:
access-list 133 permit tcp 192.168.10.0 0.0.0 .255 any eq telnet
ACL133定义特定流量)
class-map match-all telnet
telnetclass map的名称,而不是什么协议噢)
match access-group 133 (调用ACL133
policy-map qos (qos policy map的名称)
class telnet (policy 调用名字叫做telnetclass map)
set ip precedence 5 (把优先级修改成5
class class-default class-default指的就是其他的数据)
set ip precedence 1 (优先级次修改为1
interface Serial1
ip address 10.0.0 .1 255.255.255.252
service-policy output qos (在接口上执行)
这就是一个简单的分类标记工作,实际工程中可能会命令会多一点,复杂一点,但是道理都是一样的。
附加知识
关于classmap嵌套:有两点理由在创建class map的时候去调用一个已有的class map
1 、管理方便,在已有的基础上增加一个修改进行平滑的过度。
2 、允许用户在同一个class map里分别使用匹配所有(match-all)和匹配任何(match-any)
比如4个匹配标准:ABCD。现在想让class map 匹配A,或匹配B,或同时匹配CD
 
流量监管
简单说就是对特定的数据流进行流量控制 . 使之更能适应分配资源 .
原理是 : 特定数据流 , 会进入令牌桶 . 这个桶的流量是配置一个数值来限制 . 按规定速度向桶中丢令牌 , 当桶里满了后 , 不再增加 . 当数据流需要令牌桶处理的时候 , 如果桶里有足够的令牌也就是流量值 , 就直接发送 , 桶里流量相应减少 . 当少于发送的流量时 , 数据流会按照配置的执行动作处理 .
 
配置 :
, S3026 不支持流量监管 .
, S3026FM/FS S3526 是结合 ACL 来定义数据流 , 但不能定义方向 . 也不支持突发量
, S3026E S3526E 也是结合 ACL 来定义数据流 , 只能定义 in 的方向 . 也能支持突发的 action.
[S5624P-GigabitEthernet1/0/25]traffic-limit inbound ip-group 2000 5000 exceed ?
  drop         Drop the packets
  remark-dscp  Specify DSCP
 
端口限速
LR(line rate) 也是用令牌桶来进行流量处理 . 当桶里令牌数不够时 , 会认为端口拥塞 , 就会放进 QOS 队列进行拥塞管理 . 因为用了令牌桶 . 所以流量控制更为合理和有弹性 .
LR 是对物理接口上发送的总报文速率限制 . 工作在二层 . 对所有报文都能限制 . CAR 是工作在 IP , IP 报文进行限制 . 如果不经过三层处理的报文就不起作用 . 所以 ,LR CAR 控制精度更高 . 记住 : 只对 out 方向报文有效
配制非常简单 :
[S5624P-GigabitEthernet1/0/25]line-rate outbound ?
  INTEGER<64-1000000>  Target rate(Kbps). It must be a multiple of 64 in this
                       port.
拥塞管理
这才是 QOS 的精华所在哦。当接收端口速度大于发送端口速度时 , 拥塞就会发生 . 拥塞管理采用队列技术,在网络拥塞时通过报文缓存和调度策略,使报文能按规定发送出去。队列技术不只能进行拥塞管理 , 还能对不同数据流提供差别服务 .
, 先进先出队列(First In First Out Queuing,FIFO
Internet 默认使用的队列技术,对报文不进行分类 . 在报文进入接口的速度大于报文出接口的速度的情况下,按照报文到达接口的先后顺序进入队列,发送的时候也是一样。在不使用其他队列技术时,除了小于 2.048Mbps 的串行接口以外的所有接口 , 默认都使用 FIFO
C7200#sh int f0/0
FastEthernet0/0 is administratively down, line protocol is down
  Hardware is DEC21140, address is ca00.02ec.0000 (bia ca00.02ec.0000)
  MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
     reliability 252/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Half-duplex, 100Mb/s, 100BaseTX/FX
  ARP type: ARPA, ARP Timeout 04:00:00
  Last input never, output 00:42:30, output hang never
  Last clearing of "show interface" counters never
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
  Queueing strategy: fifo
  Output queue: 0/40 (size/max)
, 加权公平队列(Weighed Fair Queuing,WFQ)
对报文按流进行分类 ( IP 网络来说 , 流是指相同源 , 目的 IP 地址 , , 目的端口 , 协议号 ,IP 优先级的报文属于同一个流 ), 出站按照 IP 优先级高低分配带宽 , 优先级高的占用高 .
WFQ 是带宽低于 2.048Mbps 串行接口默认使用的队列技术 .( 锐捷路由器使用交互式配置 PPPOE 默认也是 ) 所以没什么好说的 .
不足之处 : 不支持加密的接口 , 不支持隧道 . 精确度不如 CBWFQ 等高 .
配置很简单 :
C7200(config-if)#fair-queue
, 优先级队列(Priority Queuing, PQ)
把报文优先级分类 . 然后归类到四个优先级 :high , medium, normal ,low
当网络拥塞时 , 会按照定义的优先级从高到低发送 . 当优先级高的队列发送完毕才到下一个优先级队列 . 如果高优先级队列一直持续发送 , 那么低优先级的就永远不能发送 , 造成饿死了 .
配置 :
1, 创建优先级列表
C7200(config)#priority-list 1 ?              
  default      Set priority queue for unspecified datagrams
  interface    Establish priorities for packets from a named interface 匹配进口
  protocol     priority queueing by protocol  匹配协议
  queue-limit  Set queue limits for priority queues  定义队列个数
2, 定义队列匹配条件
C7200(config)#priority-list 1 protocol ?
  arp            IP ARP
  bridge         Bridging
  bstun          Block Serial Tunnel
  cdp            Cisco Discovery Protocol
  compressedtcp  Compressed TCP
  dlsw           Data Link Switching (Direct encapsulation .ly)
  ip             IP
  ipv6           IPV6
  llc2           llc2
  pad            PAD links
  pppoe          PPP over Ethernet
  qllc           qllc protocol
  rsrb           Remote Source-Route Bridging
  snapshot       Snapshot routing support
  stun           Serial Tunnel
C7200(config)#priority-list 1 protocol ip high ?
  fragments  Prioritize fragmented IP packets
  gt       Prioritize packets greater than a specified size 大于多少字节的包 ( 包括帧的封装头 )
  list       To specify an access list
  lt         Prioritize packets less than a specified size 小于多少字节的包 ( 包括帧的封装头 )
  tcp        Prioritize TCP packets 'to' or 'from' the specified port
  udp        Prioritize UDP packets 'to' or 'from' the specified port
  <cr> 可以通过 ACL TCP/UDP 端口号来定义不同报文的优先级 .
3, 定义队列中报文个数. 默认就是20 40 60 80, 可以修改 .
C7200(config)#priority-list 1 queue-limit 20 40 60 80
4, 应用在接口上
C7200(config-if)#priority-group 1
, 自定义队列(Custom Queuing , CQ)
 
 

你可能感兴趣的:(职场,休闲,qos)