Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3436621
  • 博文数量: 349
  • 博客积分: 5771
  • 博客等级: 大校
  • 技术积分: 4193
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-06 11:52
个人简介

it

文章分类

全部博文(349)

文章存档

2019年(2)

2018年(2)

2017年(1)

2016年(2)

2015年(18)

2014年(36)

2013年(69)

2012年(100)

2011年(62)

2010年(57)

分类:

2011-05-04 10:07:46

 哪些问题会影响网络的数据传输
    1、有限的带宽
    2、延迟
    3、抖动
    4、丢包
    解决可用带宽的方法:
    1、升级带宽,增加链路带宽
    2、让优先级高的流量先过
    3、压缩二层的帧
    4、压缩IP包的头部
    延迟的分类
    1、处理延迟--将数据帧从入接口取出,将其放到接收队列,再放到出接口输出队列所需的时间
    2、排队延迟--数据包在接口的输出队列中等待的时间
    3、串行化延迟--将封装在数据帧中比特放到物理介质上的时间
    4、传播延迟--通过物理介质传输数据帧中的比特所需的时间
    注意:只有排队延迟可以通过使用QOS来进行控制
    QOS服务模型:
    1、尽力而为的服务--没有应用QOS,网络的默认行为
    2、集成服务--所有的中间系统和资源都显式的为流提供预定的服务,这种服务需要预留网络资源,确保网络能够满足通信流的特定服务要求。
    3、区分服务--将根据服务要求将通信流分类,然后将它们加入到效率不同的队列中,使一些通信流优先于其他类别的通信流得到处理。
    IntServ
    集成服务是通过使用RSVP(Resource Reservation Protocol资源预留)实现的,在两个端点中间上都要启用RSVP。
    工作原理--数据流在发送之前,起始节点会向网络请求特定类型的服务,并将其流量配置文件告诉网络中的每个中间节点,请求网络提供一种能够满足其带宽和延迟要求的服务。在从网络得到确认后,应用才开始发送数据。
    资源预留的过程分为5步
    1、数据发送方发送rsvp path控制消息,这种消息描述了将要被发送的数据的信息。
    2、每个rsvp器收到path消息后,保存上一跳的IP地址,并继续向下发送。
    3、接收站接收到rsvp path消息后,使用rsvp resv消息向上一跳路由器请求rsvp资源预留。rsvp resv消息从接收方到发送方所经过的路径与rsvp path消息到来时完全相同。
    4、rsvp路由器确定是否可以满足这些rsvp请求,如果不能,则拒绝。如果可以,则预留出资源,并继续向上一跳发送出rsvp请求。
    5、发送方收到rsvp请求,说明预留已经就绪,可以开始发送数据了。
    路由器对数据包的处理过程
    1、准入控制
    2、分类
    3、策略
    4、排队
    5、调度
    资源预留方式可分为两类:
    1、独占式--适合于多个数据源同时发送的应用程序,针对每个发送方预留资源,且发送方是很清楚的。
    2、共享式--适合于多个数据源不太可能同时发送的应用程序。
    又可分为两种:
    ①共享显式(shard explicit SE)--为多个明确的源预留资源
    ②通配符过滤器(wildcard filter WF)--为所有源预留资源
    需要一个PDP(policy Decision Point策略决策点)来集中完成网络对RSVP请求的许可控制。
    缺点:不具有可扩展性,并且需要网络设备不断的发送信号,本身占用带宽。
    配置:
    R1(config)#interface e0
    R1(config-if)#ip rsvp bandwidth    起用rsvp,默认使用75%的带宽做rsvp
    R1(config-if)#ip rsvp bandwidth 500    设定只使用500K的带宽
    R1(config)#interface S0
    R1(config-if)#ip rsvp bandwidth
    R1(config)#ip rsvp sender 20.1.1.5 10.1.1.4 udp 1040 0 10.1.1.4 e0 32 32
    目标IP    源IP    目标端口源端口       预留带宽
    R2(config)#interface S0
    R2(config-if)#ip rsvp bandwidth
    R2(config)#interface S1
    R2(config-if)#ip rsvp bandwidth
    R3(config)#interface S0
    R3(config-if)#ip rsvp bandwidth
    R3(config)#interface S1
    R3(config-if)#ip rsvp bandwidth
    R3(config)#ip rsvp reservation 20.1.1.5 10.1.1.4  udp 1040 0 20.1.1.5 e0 ff load 32 32
    独占式预留
    show ip rsvp interface
    show ip rsvp installed
    show ip rsvp sender
    每30S发一次dump-messages
    ===========================================================================
DiffServ
    区分服务--能够提供满足不同QOS需求的多种服务等级。不需要显示的通知网络设备。
    路由器对数据包的处理是逐跳行为
    缺点:没有绝对的服务保证,机制复杂。
    语音进程的端口号:16384-32767之间的偶数  奇数的是控制端口,偶数的是数据端口
    ·确定数据流的优先顺序。对延迟敏感的流量赋予高的优先级。
    如果WAN链路不发生拥塞,没有必要划分数据流的优先顺序。
    如果WAN链路经常发生拥塞,划分数据流的优先顺序可能解决不了问题,更合适的解决方案是增加带宽。
    ·制定排队策略:
    1.为所有用户提供合适的服务级别
    2.节省昂贵的WAN费用
    ·RTP(Real-Time Protocol):实时传输
    RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
    ·MQC(Modular QoS CLI(command line interface)):
    MQC--模块化的QOS命令行
    为我们配置QOS提供了一个统一的格式标准
    区分服务可分为以下四大部分:
    -----------------------------------------------------------------------------------------
    分类和标记       限速(shaping&policy)   拥塞避免     Queuing
    ACL               GTS      CAR          RED          FIFO
    PBR              FRTS     CBpolicing    WRED         PQ
    NBAR             CBshaping              FB-WRED      CQ
    CBMARKING                               CB-WRED      WFQ
    LLQ
    CBWFQ
    WRRQ
    ------------------------------------------------------------------------------------------
    分类和标识的方法:
    分类就是以预定的参数来区分帧或数据包,最常见的是按流量的类型来分类。
    标记就是对区分出来的数据包打上相应的优先级
    一、二层标记方法
    COS--二层的服务类别
    7  保留
    6  保留
    5  语音流量
    4  视频会议
    3  呼叫信令
    2  高优先级数据
    1  中优先级数据
    0  尽力而为的传输
    二、三层标记方法
    IP优先级--共8个分类,从0-7,0级最低,7级最高
    DSCP--区分服务代码点
    使用ToS字段的前6个bit,共64个不同的优先级
    PHB--逐跳行为,取出13个DSCP值进行了标准化
    AF--保证转发,定义了四种不同的类别,每种类别又定义了三种不同的丢弃概率
    EF--快速转发
    PBR:做了分类和设置优先级的工作。
    注意:只能设置IP优先级,不能支持DSCP
    例一
    1、对VOIP流量设定IP优先级为5
    2、对于5.5.5.0网段过来的,访问2.2.2.0的流量设定IP优先级为2
    3、对于6.6.6.0网段过来的,访问2.2.2.0的流量设定IP优先级为1
    第一步:定义ACL
    R1(config)#access-list 100 permit udp any any range 16384 32767
    R1(config)#access-list 101 permit ip 5.5.5.0 0.0.0.255 2.2.2.0 0.0.0.255
    R1(config)#access-list 102 permit ip 6.6.6.0 0.0.0.255 2.2.2.0 0.0.0.255
    第二步:定义route-map并打标记
    R1(config)#route-map PBR 10
    R1(config-route-map)#match ip address 100
    R1(config-route-map)#set ip precedence 5
    R1(config)#route-map PBR 20
    R1(config-route-map)#match ip address 101
    R1(config-route-map)#set ip precedence 2
    R1(config)#route-map PBR 30
    R1(config-route-map)#match ip address 102
    R1(config-route-map)#set ip precedence 1
    第三步:调用
    R1(config)#interface s0
    R1(config-if)#ip policy route-map PBR
    CBMARKING
    例二:
    1、对VOIP流量,给予IP优先级5
    2、对于telnet流量,给予IP优先级4
    3、对于来自172.16.1.0的流量,给予IP优先级2
    步骤:
    1、定义ACL
    R1(config)#access-list 100 permit udp any any range 16384 32767
    R1(config)#access-list 101 permit tcp any any eq 23
    R1(config)#access-list 102 permit ip 172.16.1.0 0.0.0.255 any
    2、定义类别映射表
    R1(config)#class-map [match-any|match-all] VOIP
    R1(config-cmap)#match access-group 100
    R1(config)#class-map [match-any|match-all] TELNET
    R1(config-cmap)#match access-group 101
    R1(config)#class-map [match-any|match-all] NETWORK
    R1(config-cmap)#match access-group 102
    3、定义策略映射表
    R1(config)#policy-map XWX
    R1(config-pmap)#class VOIP
    R1(config-pmap-c)#set ip precedence 5
    R1(config-pmap)#class TELNET
    R1(config-pmap-c)#set ip precedence 4
    R1(config-pmap)#class NETWORK
    R1(config-pmap-c)#set ip precedence 2
    4、调用
    R1(config)#int s0
    R1(config-if)#service-policy input XWX
    #show policy-map
    #show class-map
    #show policy-map interface
    class-map默认是match-all
    例三:
    对于来自s1接口的流量,给予IP优先级1
    R1(config)#class-map [match-any|match-all] INTER
    R1(config-cmap)#match input-interface s1  还可以匹配入站接口
    R1(config)#policy-map XWX
    R1(config-pmap)#class INTER
    R1(config-pmap-c)#set ip precedence 1
    调用在出口
    R1(config)#int s0
    R1(config-if)#service-policy input XWX
    NBAR(Network-Based Application Recongnition基于网络的应用识别)
    基于ACL的分类使用数据包的第3层和4层信息来对数据包进行分类。
    NBAR可以根据第7层信息来对数据帧进行分类。
    在定义class-map时使用match protocol命令时,就是使用了NBAR
例一:
    在路由器入口,对于telnet流量,给予优先级3
    配置NBAR:
    1、开启cef
    R1(config)#ip cef
    2、定义类别映射表
    R1(config)#class-map [match-any|match-all] TELNET
    R1(config-cmap)#match protocol telnet  区别就在这里
    3、定义策略映射表
    R1(config)#policy-map XWX
    R1(config-pmap)#class TELNET
    R1(config-pmap-c)#set ip precedence 3
    4、调用
    R1(config)#int s0
    R1(config-if)#ip nbar protocol-discovery
    R1(config-if)#service-policy input XWX
    注意事项:
    使用NBAR,必须先启用CEF特性
    config)#ip cef
    使用NBAR,接口模式下必须打开 (match 字段中有protocol时就表示使用了NBAR)
    ip nbar protocol-discovery  必须在接口下开启这一命令
    R1(config)#ip nbar port-map http tcp 80 8080   指定http对应的端口,不仅仅是默认的,还可以扩展
    例二、禁止访问新浪、禁止JPG图片
    class-map match-any DROP
    match protocol http host    过滤本网站的流量
    match protocol http url *.jpg|*.gif        还可以抓网页上的图片
    R1(config)#policy-map XWX
    R1(config-pmap)#class DROP
    R1(config-pmap-c)#drop
    R1(config)#int s0
    R1(config-if)#service-policy input XWX
    PDLM(packet description language module)
    包描述语言模块,一种扩展的技术,可以让路由器直接对某种应用程序流量或新的协议流量进行识别,而不需要更换IOS或重启路由器。PDLM模块由cisco的工程师开发,需要先进flash中,再进行加载。
    例三:
    在网络中过滤掉BT流量
    R1(config)#ip nbar pdlm bt.pdlm -------灌入抓BT的PDLM。装入之后就可以在class map中调用了
    R1(config)#class-map match-any DROP
    R1(config-cmap)#match protocol pdlm bt
    R1(config)#policy-map XWX
    R1(config-pmap)#class DROP
    R1(config-pmap-c)#drop
    R1(config)#int s0
    R1(config-if)#service-policy input XWX
    ----------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------
    排队技术
    从三个步骤上来学习:
    1、分类
    2、加队
    3、调度
    FIFO:first in first out queuing 先进先出队列
    分类:不对报文进行分类
    加队:按数据包到达的先后顺序进行加队,按尾丢弃原则丢弃。
    调度:按数据包到达的先后顺序进行出队
    ·FIFO(First In First Out) 排队是一种经典的分组传输算法。
    分组的传输顺序与接收顺序相同。现今仍是大部分接口的默认设置。(大于2M的基本都是)
    默认2M以下都是WFQ
    R1(config-if)#no fair-queue   在接口启用FIFO
    show interface e0   查看
    FIFO输出队列的缓存中默认只容纳40个包,可以修改。
    R1(config-if)#hold-queue 50 out
    PQ:优先级队列
    共有四个队列,分为四个优先级别,默认的流量都是normal
    优先级分类:1high  2medium  3normal  4low  默认所有流量都走normal队列
    加队:在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
    调度:只要高优先级有流量就发高优先级的,只到高优先级的数据发完再发低优先级的数据,这样就有可能造成低优先级的数据无带宽可用。
实验:
    要求在路由器的出接口将telnet流量放入high队列   将icmp流量放入medium队列
    Access-list 100 permit icmp any any
    R1(Config)# priority-list 1 protocol ip high tcp telnet  将telnet流量的优先级置为high
    R1(Config)# priority-list 1 protocol ip medium list 100  调用访问列表将icmp的优先级置为normal
    R1(Config-if)#priority-group 1  接口下调用
    priority-list 1 queue-limit 22 44 66 88 定义每一个队列的座位数,队列1为22个,队列4为88个
    priority-list 1 interface s0 [high|medium|normal|low] 按接口来进行分类,也就是说把一个接口来的数据都放进一个队列,太过粗略
    priority-list 1 default [high|medium|normal|low] 设置默认
    Show int e0   看每一个队列有多少个座位,也就是能容纳多少个包
    Show queueing  (看所有队列)
    Show queueing priority
    Debug priority  再使用telnet和ping来
    CQ  Custom queue
    分类:1~16队列 再加上一个优先队列0级队列  共17个队列  0级和其它级的关系相当于PQ
    加队:自定义加队,不同的流量加不同的队列。在每一个队列中还是按照fifo的原则加队,按尾丢弃原则丢弃。
    调度:轮循,第一个传完就传第二个,默认1500个字节,可以修改每个队列的传输字节数
    先有1000个字节,再来1000,还是会传
    例:将VOIP流量设为优先队列,将telnet流量置为队列1,将ICMP流量置为队列2
    access-list 100 permit udp any any range 16384 32767
    access-list 101 permit icmp any any
    R1(Config)# queue-list 1 protocol ip 0 list 100
    R1(Config)# queue-list 1 protocol ip 1 tcp telnet   将telnet流量置为队列1
    R1(Config)# queue-list 1 protocol ip 2 list 101
    注意:在定义CQ时,最好由小到大一个个来定义,否则可能出错
    R1(Config-if)#custom-queue-list 1  接口下调用
    R1(Config)# queue-list 1 queue 0 byte-count 800
    R1(Config)# queue-list 1 queue 1 byte-count 1600 设置本队列每次可传的字节数
    R1(Config)# queue-list 1 queue 1 limit 50   设置本队列的座位数
    show queueing custom
    Debug custom-queue
    show interface e0/0
    扩大优先级队列的范围 :
    R1(Config)#queue-list 1 lowest-custom 1   不推荐打0 一般打2  这样的话队列0和队列1同其它队列就相当于是PQ的关系
    默认没有分类的流量走的是低级队列的第一个队列。默认就是走1级队列。
    WFQ(Weighted Fair Queuing) 加权公平队列(基于流的)
    分类标准:按流来分,而不是按类来分
    2层 源和目标的mac地址
    3层 源和目标的ip地址,还有协议类型
    4层 源和目标的端口号
    流的五元组:源IP、目标IP、源端口号、目标端口号、协议
    ·WFQ算法将数据流划分成流,这是根据分组报头中的地址实现的。
    源/目标网络地址(MAC地址)(套接字)(DLCI)
    加队:默认总共只有256个队列,共享缓存,统一调度座位
    CDT:congestive discard threshold  缓存中容纳包的下限
    当缓存中的数据包小于这个值时,不采取任何限制措施
    当缓存中的数据包大于这个值时,采用以下方法来限制后续数据包:
    1、如果后续数据包属于最长队列,则被drop
    2、如果后续数据包不属于最长队列,则直接将这个包加入
    HQO:hold-Queue out limit   缓存中容纳包的上限
    如果缓存中的数据包超过HQO值,又来了一个包,则采取以下措施:
    1、如果这个包属于最长队列,则被drop
    2、如果这个包不属于最长队列,则去掉最长队列中的一个包,再将这个包加入其所属队列
    调度:
    ·基于流的WFQ在传输数据之前,将各个会话的分组放到公平队列中。
    ·WFQ给每个数据包指定一个权重(also called finish time),权重决定了队列中分组的传输顺序。权重小的数据包得到优先传送,权重是根据公式得到的,FT和SN算法
    ·WFQ在调度时首先传输权重小的分组。包的尺寸越小,其权重也就越小。所以小尺寸的包往往被优先传送。
    ·小容量流量发送后,各大容量共享余下的链路带宽。
    ·对于有优先级的包的处理:要计算其权重的时候会使用其虚拟包大小来计算。
    virtual packet size=real packet/(ip precedence+1)实际上等于减小了权重
    虚拟包大小=实际包大小/(ip优先级+1)
    从以上公式可以看出:优先级越大,计算出的权重越小
    ·WFQ可确保每个数据报都能占用适当的带宽。
    大小相同的文件传输将获得相同的带宽,而不是先到的文件占用大量带宽。
    ·WFQ给每个会话分配一个队列,队列优先级分7种。
    配置:
    R2(config-if)#fair-queue (接口启用WFQ) (s口默认是开启的,E口默认是FIFO)
    R2#show interfaces ethernet 0/0
    ....Queueing strategy: weighted fair
    ·速率不超过E1(2.048Mbps)的Serial口默认使用WFQ。
    在使用X.25或压缩PPP的Serial,WFQ被禁用。
    E3/T3 (34M/45M)的WAN接口和Serial不支持WFQ。
    修改默认的队列数:
    R2(config-if)#fair-queue 256 512 6 注意最后这一参数表示为RSVP预留的队列数
    CDT 队列数
    R2(config-if)#hold-queue 2000 out 修改允许的座位数HQO值,默认最大是1000
    show queueing interface
    show queueing fair
    Link queue:为系统保留的
    Reserved queue:保留队列,为RSVP保留的
    CBWFQ(Class-Based Weighted Fair Queuing)
    ·CBWFQ拓展了标准WFQ的功能,支持用户自定义的数据流类别。
    可以根据多种条件来定义数据流类别。(协议/ACL/输入接口)
    CBWFQ最多只有64个类别,默认每个队列中能缓存64个包。
    ·CBWFQ给每个类别(而不是流)指定权重,它与分配给类别的带宽呈反比。
    ·默认情况下,分配给所有类别的带宽总和不能超过接口可用带宽的75%。
    余下的25%用于传输控制数据流和路由选择数据流。
    实验一:
    Voip  30%
    Http  20%
    Other ......25%
    1、分类:
    R1(config)#class-map voip
    R1(config-)#match ip rtp 16384 16383
    R1(config)#access-list 111 permit tcp any any eq www
    R1(config)#class-map http
    R1(config-)#match access-group 111
    2、策略:
    policy-map CBWFQ
    class voip
    bandwidth percent 30   percent参数代表总带宽的百分比,remaining参数代表可用带宽的百分比
    class http
    bandwidth percent 20
    class class-default    设置其它流量占用20%带宽
    bandwidth percent 25
    3、调用:
    service-policy output CBWFQ  调用
    还可以在最后一个队列中单独使用WFQ,用了后,就不能指定带宽了
    policy-map CBWFQ
    class class-default
    fair-queue
    max-reserved-bandwidth 100   这个值默认是75%,如果你想用到100%,必须打上这一命令
 实验二:
    ·需求:普通199.1.1.0/24 ->20%
    Voice (Critial)->50%   VOIP的流量已经被标记了优先级5
    Other           ->30%
    1)定义普通用户的流量:
    access-list 1 permit 199.1.1.0 0.0.0.255
    2)将前2种流量放入Class-map:
    class-map match-all VOICE
    match ip precedence 5   将优先级为5的包找出来
    class-map match-all NORMAL
    match access-group 1
    3)为3种流量设定百分比:
    policy-map CBWFQ
    class NORMAL
    bandwidth percent 20
    class VOICE
    bandwidth percent 50
    class class-default
    bandwidth percent 30
    4)在接口调用:
    interface Serial0/0
    max-reserved-bandwidth 100
    (因为默认是只能使用总带宽的75%,如果想用所有带宽,必须使用这一命令,对所有带宽进行划分)
    service-policy output CBWFQ
    默认情况下,带宽的25%用于网络控制流量,只有75%用于数据的传输
    R2#show class-map
    R2#show policy-map
    R2#show policy-map interface
    LLQ(Low Latency Queuing)在WFQ的基础上增加了一个优先队列
    ·CBWFQ虽然能够为各种类别的流量提供带宽的保证,但却不能提供低延迟的传输保证。
    ·低延迟队列:LLQ将绝对优先队列技术应用于CBWFQ,能够提供低延迟的传输保证。从而缓和了语音会话的抖动。绝对优先队列主要被用来处理对延迟敏感的数据(如语音)。
    使用这种LLQ特性后,将首先发送对延迟敏感的数据,也就是LLQ中的数据。这种数据发送完毕后才发送其他队列中的分组。
    ·虽然可以将多种不同的实时数据流加入到Priority队列中,但建议只将语音流加入到这种队列中。
    例一:
    policy-map WAN-EDGE
    class VOICE
    priority percent 33   设定语音流量占用33%的带宽,并放入LLQ队列
    class CALL-SIGNALING
    bandwidth percent 20
    class MISSION
    bandwidth percent 20
    class class-default
    fair-queue          对其它的流量应用WFQ
    例二:
    policy-map WAN-EDGE
    class VOICE
    priority 540     指定语音流量占用540K带宽
    class VIDEO
    priority 460     指定视频流量占用460K带宽
    class CALL-SIGNALING
    bandwidth percent 2
    class MISSION
    bandwidth percent 20
    class class-default
    fair-queue
    例三:
    policy-map WAN-EDGE
    class VOICE
    priority percent 33
    class NISSION
    bandwidth remaining percent 50  剩余百分比语句,划分去掉优先级队列所占带宽之后的带宽
    class class-default
    bandwidth remaining percent 50
    可用带宽=实际带宽*0.75
    其它队列的可用带宽=实际带宽*0.75-分配给语音的带宽
    <CBWFQ/WFQ的对比>
    与基于流的WFQ相比,CBWFQ具有以下优点:
    ·带宽分配:CBWFQ能够给每个类别分配带宽,最多可以定义64个类别
    WFQ只能根据7种IP优先级来对数据流进行分类。
    ·粒度更细、可扩展性更高:CBWFQ可根据多种条件来定义类别。
    <RTP优先队列>队列中真正的老大
    RTP优先队列可以和WFQ或CBWFQ结合使用
    RTP优先队列只能为UDP流量服务
    这个队列在接口下直接配置,实际上就是在接口下划出一部分带宽给特定UDP流量来使用,实际上主要是为VOIP流量服务
    ·RTP(Real-Time Protocol):实时传输协议
    RTP传输多媒体应用的数据流,包括IP语音和视频(对延迟比较敏感的)
    语音进程的端口号:16384-32767之间的偶数  奇数的是控制端口,偶数的是数据端口
    R1(config-if) #ip rtp priority 16384 16383 50   最后这个参数是分配的带宽值
    WRRQ(Weighted Round-Robin加权轮询队列)
    主要用于机的技术
    3550每一个端口下都有四个队列,每个队列默认占用25%的带宽,采用轮询的方式来调度。可以把第四个队列配置成绝对优先队列,只有绝对优先队列中的数据处理完成后,才会传输其它队列的数据。
    配置实例
    需求:
    将优先级为0、1的数据帧放入队列一中
    将优先级为2、3的数据帧放入队列二中
    将优先级为4、5的数据帧放入队列三中
    将优先级为6、7的数据帧放入队列四中
    SW1(config)#mls qos   启用命令,必须打上
    SW1(config-if)#wrr-queue cos-map 1 0 1   定义映射表,将cos 0和1映射到队列1
    SW1(config-if)#wrr-queue cos-map 2 2 3
    SW1(config-if)#wrr-queue cos-map 3 4 5
    SW1(config-if)#wrr-queue cos-map 4 6 7
    SW1#sh mls qos int f0/1 queueing   查看
    可以配置四个队列的权值,使其得到不同的服务
    SW1(config-if)#wrr-queue bandwidth 1 2 3 4
    队列1得到10%的带宽
    队列2得到20%的带宽
    队列3得到30%的带宽
    队列4得到40%的带宽
    SW1(config-if)#priority-queue out  启用绝对优先队列
    配置入站信任
    SW1(config-if)#mls qos trust cos
    SW1(config-if)#mls qos trust dscp
    SW1(config-if)#mls qos trust ip-precedence
    SW1(config-if)#mls qos trust device cisco-phone
    当信任入站的COS和IP优先级时,会映射到相应的内部DSCP值,在机上根据内部的DSCP值来决定相应的出站QOS策略。
    -----------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------
限速策略:
    可分为两种:policing和shaping
    policing的特点:会将超出的流量直接drop掉,所以接口的流量输出图形是锯齿状,不平滑的。但是工作原理简单,占用系统资源少。
    shaping的特点:会将超出的流量先缓存起来,等到有可用带宽的时候,再发送出去,所以接口的流量输出是非常平滑的,但是占用的系统资源比较多。
    Shaping mechanisms:
    Generic traffic shaping (GTS)通用流量整型
    Frame Relay traffic shaping (FRTS)帧中继流量整型
    Class-based shaping
    Policing mechanisms:
    Committed access rate (CAR)
    Class-based policing
    令牌桶理论:
    TC:time comminted        间隔时间,也就是放令牌的周期时间。
    BC:burst committed       承诺突发量,也叫正常突发量,单位bit
    Be:burst excess          超出的突发量,相当于存钱罐,可以将超出的令牌存起来。
    CIR:commited infromation rate,单位Kbps。承诺信息速率
    TC=BC/CIR
    每Tc秒向桶中放入Bc这么多的令牌
    CIR承诺信息速率,也就是你实际想要控制的速率
    Shaping mechanisms:
    GTS Building Blocks通用流量整型
    GTS Overview
    GTS is multiprotocol.
    GTS uses WFQ for the shaping queue. 默认是WFQ,不能改
    GTS can be implemented in combination with any queuing mechanisms:可以配合以下的软件Q使用
    FIFO queuing
    Priority queuing (PQ)
    Custom queuing (CQ)
    Weighted fair queuing (WFQ)
    GTS works on output only.  只能工作在出方向
    GTS Implementation
    Traffic-shape group shapes outbound traffic matched by the specified access list.
    Several traffic-shape group commands can be configured on the same interface.
    The traffic-shape rate and traffic-shape group commands cannot be mixed on the same interface.
    A separate token bucket and shaping queue is maintained for each traffic-shape group command.
    Traffic not matching any access list is not shaped.
    configuration GTS
    例一:
    要求将接口速率限制为64K
    R1(config-if)#traffic-shape rate 64000 8000 8000 1000 ---------- 启用GTS,设置CIR为64000。
    CIR         Bc     Be     buffer(shape Q中的座位数)
    关键是CIR的值,其它会自动计算,可以不指定
    #show traffic-shap serial 0
    例二:
    对于1.1.1.0网段的用户访问2.2.2.0网段进行限速,限为64K
    R1(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
    R1(config-if)#traffic-shape group 100 64000
    #show traffic-shape
    #show traffic-shape queue  查看shape队列
    GTS帧中继适应性整型(GTS Frame Relay Congestion Adaptability)
    FECN (Forward explicit congestion notification)  前向显示拥塞通告 帧中继交换机通告receive方
    BECN (Backward explicit congestion notification) 后向显示拥塞通告交换机通告send方
    CLLM (Consolidated link layer management)
    DE(Discard Eligibility)bit
    DE:一旦帧中继有一个DE位置位,而且发生拥塞,那么就丢掉DE位的帧。
    GTS在帧中继中可以做适应性的整型,如果收到BECN就降低到3/4,如收不到则回升。
    注意:在做帧中继适应性整型命令之前,首先要做正常的GTS流量整形,说明接口的限制速率。
    if)#traffic-shape adaptive [bit-rate] ---------- 启用帧中继适应性整型命令,还可以在这里设置当发生拥塞时,最少可低至多少流速
    if)#traffic-shape adaptive 12800  当发生拥塞时,最少可低到12800bit/S
    show traffic-shape   可以查看到BECN显示出来了
    traffic-shape fecn-adapt ----- 在接收方配置,在某些情况下,发过来的是单向流量,没有回包,产生拥塞时,无法通知发送方,用这一命令可让接收方在收到FECN置位的数据帧后发送一个信息,用来通知发送方产生了拥塞。
    例三:
    要求将路由器的出接口速率限定为256K,并启用帧中继的适应性整形,一旦收到BECN,则可将速率最低降到64K。
    interface s0/0
    traffic-shape rate 256000
    traffic-shape adaptive 64000
    FRTS Overview  帧中继流量整型  可以在帧中继中为每一个PVC管道做整型
    FRTS is multiprotocol.
    在接口上启用了FRTS后,不能使用WFQ,只能是FIFO,CISCO的胶片上有错误
    FRTS can use one of these queuing mechanisms as the shaping queue:shap Q可以选以下任一种
    Priority queuing (PQ)
    Custom queuing (CQ)
    Weighted fair queuing (WFQ)
    FRTS can be implemented only in combination with only FIFO on the interface.
    FRTS works on output only.   也只能工作在出方向
    配置:
    第一步:
    R1(config-if)#frame-relay traffic-shaping 在接口上启用FRTS
    第二步:
    在帧中继中必须在map-class中去改CIR
    R1(config)#map-class frame-relay FRTS
    R1(config-map-class)#frame-relay traffic-rate average[peak]  看下面的示例
    R1(config-map-class)#frame-relay traffic-rate 64000 80000 如果两个值相同,等于没有Be
    R1(config-map-class)#frame-relay traffic-rate 64000 64000   这种情况等于没有Be
    另一种写法
    R1(config-map-class)#frame-relay [in|out] cir 64000  分别指定,以下三条命令等于上面一条
    R1(config-map-class)#frame-relay [in|out] BC  8000
    R1(config-map-class)#frame-relay [in|out] BE  8000
    show traffic-shaping
    第三步:
    R1(config-if)#frame-relay class FRTS  在接口下调用,对本接口下的所有VC均有效
    在一条PVC中单独调用:
    R1(config-if)#frame-relay interface-dlci 104
    R1(config-if-dlci)#class FRTS    在PVC下单独调用和修改
    也可以做适应性的流量整形:
    R1(config)#map-class frame-relay FRTS
    R1(config-map-class)#frame-relay adaptive-shaping becn ----------- FR中启用适应性的整型,也就是让路由器根据收到的BECN量调整其发送速率。单独针对一条PVC起效
    R1(config-map-class)#frame-relay cir 128000     适应性整型时指定cir
    R1(config-map-class)#frame-relay minicir 16000   适应性整型的最低速率,通常和上一条命令结合用。
    FRTS的shape queue默认也是WFQ
    EIR=Be/Tc
实验:
    需求:R1通过两条PVC连接了R4和R5,现要求对这两条PVC做限速。
    对于PVC104,将其速率限制为256K。
    对于PVC105,将其速率限制为128K。并启用帧中继适应性流量整形,最小速率不低于32K。
    map-class frame-relay WOLF
    frame-relay traffic-rate 256000 256000
    !
    map-class frame-relay PVC104
    frame-relay traffic-rate 256000 256000
    !
    map-class frame-relay PVC105
    frame-relay cir 128000
    frame-relay mincir 32000
    frame-relay adaptive-shaping becn
    interface Serial1/0
    encapsulation frame-relay
    frame-relay traffic-shaping
    frame-relay interface-dlci 102
    class PVC102
    frame-relay interface-dlci 103
    class PVC103
    CBshaping
    CBshaping可以对出接口的流量进行分类,然后对每一类流量进行限速。
    在CBshaping中可以指定平均速率,也可以指定最大速率。
    例:
    1、对VOICE流量,设定平均速率为64K
    2、对于1.1.1.0网段访问2.2.2.0网段的流量,设定最大速率为32K
    第一步:定义ACL,抓出流量
    access-list 100 permit udp any any range 16384 32767
    access-list 101 permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255
    第二步:定义class-map,将流量分类
    class-map VOIP
    match access-group 100
    class-map NET
    match access-group 101
    第三步:定义策略,对不同类别的流量给予不同的速率
    policy-map CBSHAPE
    class VOIP
    shape average 64000
    class NET
    shape peak 32000
    第四步:接口下调用
    int e0/0
    service-policy output CBSHAPE
    show policy-map interface s0
    shape max-buffers 2000 -------- 修改的buffers数,默认值为1000。
    Policing mechanisms:
    CAR可以做在进方向也可以做在出方向。
    可以单独针对某一个流量作限速,还可决定拿到牌的和没拿到牌的分别作什么动作
    -Transmit
    -Continue
    -Drop
    CAR没有BE的情况下:
    If the number of bytes in the packet is less than or equal to(<=)the number of tokens in Bucket1,the packet conforms,CAR removes tokens from Bucket1 equal to the number of bythes in the packet and performs the action for packets that conform
    CAR中有Be的情况下:
    DA-actual debt 真实债务,向第二个桶所借的实际令牌数,DA是累加的,直到新令牌放进来
    DC-compounded debt 符合债务
    DC=原DC+当前DA
    当DC<=Be时,这个包就属于comform-action
    当DC>Be时,这个包就属于exceed-action,同时将DC置0

阅读(4273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~