zoukankan      html  css  js  c++  java
  • MPLS RSVP-TE

    RSVP的讲解(预留带宽 & 分配 MPLS TE标签)
    1、RSVP 是什么样的一个协议
    1.1、InterServ 信令协议(软协议:1.本身并不具备选路功能;2.协议本身不工作)
    1.2、为某个应用预留它所需要的资源

    r7(config)#ip rsvp sender-host 9.9.9.9 7.7.7.7 TCP 100 1000 100 1000(端口都配置 RSVP 前提下)
    r9(config)#ip rsvp reservation-host 9.9.9.9 0.0.0.0 TCP 100 0 WF RATE 100 1000
    r8#debug ip rsvp all(如果 r7 不对 r9 进行 TCP 请求触发,r8 将不回看到任何debug信息)
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: RSVP-POLICY - Path query
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: POLICY-LOCAL - query for
     inbound Path message                                                                   
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: POLICY-LOCAL -          
    no decision (can't find a matching policy)                                              
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: POLICY-COPS - COPS query
     for Path message                                                                       
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: POLICY-COPS - no active 
    COPS server entry for this session. Ignoring                                            
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: RSVP-POLICY - granting  
    default policy for Path                                                                 
    *Aug 22 02:07:01.515: RSVP: 7.7.7.7_1000->9.9.9.9_100[0.0.0.0]: RSVP-POLICY - received  
    decision for Path message                                                               
    只要开启应用触发就可以看到 7.7.7.7 对 9.9.9.9 的 TCP 端口请求

    RSVP本身不工作,需要网络应用去触发
    Netmeeting / VoIP
    MPLS TE
    WFQ 对 RSVP 支持的必要性?
    传统 RSVP 及扩展 RSVP 对 MPLS TE 的支持
    Label Request
    Label
    ERO:记录的是 CBR 给 tunnel 计算出来的最短路径的每一个接口地址
    RRO:记录的是 tunnel 经过的每个网络节点 tunnel 的 router-id 和这个网络节点给 tunnel 分配的标签(也可以用于控制环路避免)
    Session attribute:attribute-flag ; Setup-Priority ; Hold-Priority

    RSVP 为 TE 的资源保证出口方向有效
    只要 TE 的接口功能开启,RSVP 默认情况下后台开启

    RSVP 标签请求过程(类似于 MPLS Cell - mode 标签请求过程)

    ==================================================

    在文档开始之前,我认为MPLS TE的信令协议是有必要知道的。
    RSVP-TE
    --协议本身比较成熟,已经规模应用。
    --基于软状态,扩展性比较差。
    CD-LDP
    --协议比较新,不太成熟,基本没有应用。
    --基于硬状态,扩展性比较好。
    但是,最终还是市场来决定,RSVP因为先把茅坑占了,所以,一说到MPLS TE,大多数厂商都支持RSVP-TE.很少厂商支持CD-LDP协议。貌似,RSVP-TE已经是一个业内的标准了。所以学习MPLS TE有必要了解RSVP的运作。
    RSVP的相关知识点有下面几点:
    ■RSVP基础
    ■RSVP分组
    ■RSVP操作
    ■现实世界中的RSVP.
    RSVP协议类型是46,虽然把RSVP封装在UDP中是又可能的,但是MPLS TE从来不会把RSVP封装在UDP中。
    RSVP是拿来做什么的?
    我们都知道标签分发有几种方式:
    MPLS LDP/TDP,这个是标准,用来分发mpls标签的协议。
    RSVP,用于MPLS TE中的标签分发。和LDP工作没有交集。
    还有一个就是BGP对vrf路由的标签分发。
    RSVP不是路由协议,任何路由决定都是IGP和CSPF做出的决定.RSVP唯一的工作就是通告和维护网络中的保留资源。MPLS TE中,RSVP在控制平面层保留带宽,所以没有对流量的转发平面上做任何控制。
    RSVP有三种基本的功能:
    ■路径的建立和维护
    ■路径拆除
    ■错误通告
    RSVP的主要消息类型如下:一共有7类是主要应用。

    关于RSVP信令的建立,简单说来,就2个步骤,原始节点向目的Router发送 RSVP path消息,然后目的路由器收到path请求以后,向原始节点回复一个RESV.那么,一个TE隧道就建立成功了。

    根据Eric Osborne CCIE 4122的著作MPLS TE流量工程中所描述的,这里我们来看一个RSVP是如何建立一条通路的。下面就是一条路径建立的详细过程:
    ■在隧道首端完成CSPF的路径计算
    ■路径计算好了,首端节点向目的节点通过下一跳发送RSVP path请求。
    ■收到path请求的下游路由器会首先检查报文格式是否正确,然后检查path消息中的预留申请的带宽。该过程叫准入控制。
    ■当准入控制成功以后,那么下游路由器会产生一个新的path请求,然后发送给通往目的路由节点的下一跳again。直到发送到最后一个节点。也就是MPLS TE隧道尾端的最后一个路由器。
    ■末节点路由器当收到了上游的path犌肭笠院蠡峄馗碦SVP Resv消息进行回应。也是一跳一跳的,逐跳反馈到原始节点。
    这里再Resv报文中,不仅仅是对上游路由器的一个ACK回应,也包含了上游路由器沿TE LSP向尾端发送分组所用的标签。
    说了那么多,来两个实际的例子:

    在这里一共有10个步骤,在这个例子中,假设R1已经完成了CSPF路径的计算,并且知道它需要沿路径R1->R2->R3->R5->R6->R7保留带宽。
    第一步:R1向R2发送RSVP path请求,R2收到这个报文后,检查报文格式语法上是正确的,然后检查TE链路管理器,确定R1请求的带宽实际可用(实际上就是在R2上面进行比较ip rsvp bandwidth带宽,只要送过来的请求小于物理的rsvp分配的带宽,就算通过.
    第二步:R2向R3发送path,R3对path消息进行同样的验证。
    第三步:R3向R5发送path,R5对path消息进行同样的验证。
    第四步:R5向R6发送path,R6对path消息进行同样的验证。
    第五步:R6向R7发送path,R7对path消息进行同样的验证。
    第六步:R7因为是末节点,所以会返回一个显式空标签给R6.
    第七步:R6发送一个Rsve给R5,分发标签为42.
    第八步:R5向R3发送Rsve,分发标签100.
    第九步:R3向R2发送Rsve,分发标签21.
    第十步:R2向R1发送Rsve,分发标签18.
    有了上面对于RSVP的说明,那么我们再进行逆向思维思考一下,根据这个原理,请求方发送rsvp path给下游路由器,下游路由器就要比较预留带宽和回应Rsve,进行标签的分发。对应在设备的配置上面,至少应该做下面的事情:
    在路径上的每台路由器接口上面,都应该把mpls ip, mpls ldp,ip rsvp bandwidth xxx,mpls traffic-eng tunnel都打开。
    因为每个接口都要进行预留带宽的比较,如果没有配置如何进行比较呢?如果rsvp交互不成功,那么TE隧道如何能建立起来呢?
    这就是为什么要再所有路由器上把相关流量工程的配置都加上去了。

    如果有了上面的原理概念以后,下面就是一个具体的信令交互图了.
    如果从信令的交互的角度来讲,下面是我整合的信令交互的步骤:

    这里如果认真阅读报文交互内容,我们会发现,R1发送RSVP path到R3的loopback 0,请求TE的建立。
    然后R3逐一给R2,R2给R1进行RSVP的标签分配。
    实际上RSVP分组我没有细看,报文格式比较复杂,而且种类繁多。我只能暂时先坐一个原理性了解。以后有空再慢慢深入。
    到现在为止,详细的原理已经有一堆了,但是真正的实际动手实验还没有做。
    下面有一些命令,至少,需要很熟悉的应用,才对得起已经学习的那么久的RSVP的原理:
    show ip rsvp counters
    show ip rsvp interface
    show ip rsvp neighbor
    show ip rsvp reservation
    show ip rsvp counters,该命令显示了路由器启动时,在每一个接口上已经产生的RSVP消息类型的统计.

    在这个命令里面我认为主要看path 和Resv报文的收发 情况,就可以判断是否是TE的RSVP出了问题,如果发送了path,也收到了Resv,问题应该不会在RSVP上面至少。
    还有一个命令,是关于RSVP接口的邻居:

    也可以显示show ip rsvp neighbor detail进行深度排查,不过进行初步排查,只要x.x.x.x后面显示的是RSVP,那么邻居就没有问题。
    这里有一个很重要的概念,RSVP是没有显式的邻居发现阶段,意思就是,如果两个直连的接口激活了RSVP,你show ip rsvp neighbor是没有邻居的,邻居的建立,是要他们相互看到对方的RSVP path和Resv消息以后才能建立邻居。

    通过show ip rsvp interface,可以看到当前R3上面G3/0对于隧道分配的实际带宽是1024K,而预留带宽为4096K.

    呵呵,最后一个命令,当隧道建立起来,如果有逻辑上的问题,可以用上面的命令进行故障排查。逐跳进行检测。
    总结:
    我把上面的四个命令按照逻辑顺序做一个小的总结,如果MPLS TE隧道要正常的建立起来,那么首先按照RSVP的原理,show ip rsvp counters interface xxxx,应该可以看到发送的RSVP path和接收到的RSVP Resv是几乎相等的,否则光发不收,不发不收都不正常,需要沿链路检查所有接口下面的配置是否正确。如果show ip rsvp counters正确,在看show ip rsvp neighbor也是应该有的,然后再来沿途检查预留带宽是否正常,用命令show ip rsvp interface检查,最后,隧道up起来以后,也可以看相关的show ip rsvp reservation检查逻辑上是否有问题。
    最后,生成的路径应该在show mpls traffrac tunnel下面显示:


     

  • 相关阅读:
    phpexcel 相关知识
    php 相关的设置
    linux md5sum 常用用法
    mysql 修改group_concat的限制(row 20000 was cut by group_concat())
    mysql设置最大连接数 max_connections
    Mysql 需要修改的一些配置
    mysql设置远程访问,解决不能通过ip登录的问题(MySQL Error Number 2003,Can't connect to MySQL server )
    mysql 用户权限管理的粗略认识
    文字图片在wps中清晰化方法
    Linux 如何释放Hugepage 占用的内存
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12824077.html
Copyright © 2011-2022 走看看