MPLS , LDP

MPLS:多协议标签交换。


中间路由器不在需要完整的路由表可以利用MPLS标签的方式转发数据

 

◆应用领域:

            ×××

            TE  流量工程

            QOS

            AToM

            BGP


◆ FEC 转发等价类

        MPLS 是具有分类转发特点的技术

        将具有相同转发处理方式如

                                                        相同的目的地

                                                        相同的转发路径

                                                        相同的服务等级

        MPLS可以为各种FEC形成标签如

                                                                layer 3 ×××

                                                                layer 2 circuit

                                                                相同的QoS级别

                                                                同一条IGP路由

◆ MPLS的两个层面。本身是数据层面的转发方式

        ◎ control plane

             利用LDP, BGP, RSVP分配标签

            wKiom1b0p_iR6y5SAABLebU4WAE553.jpg

        ◎ date plane基于标签转发报文

wKioL1b0qMeS-dCYAABQ-I_967Y729.jpg

◆ 从 IP 域进入 MPLS 域 ---查FIB表

     从 MPLS 域进入----------查LFIB表

     从MPLS域进入IP域------pop(次末节弹出)

     LIB表所有方向过来的标签表。

     FLIB表真正用到的标签表

◆ MPLS封装

    

       ◎ MPLS标签报文格式 

            - 在2层报头和3层报头之间插入MPLS报头可以插入多个MPLS头部

            - 这种标签模式也被称为帧模式


二层报头MPLS报头1MPLS报头2MPLS报头3IP报头数据

   最靠近2层的为顶部

   最靠近3层的为底部

   转发过程用顶部标签转发

   通过MPLS报头字段表示自己是在顶部还是底部


     ◎ MPLS标签格式4byte 32bits

label 20bitsEXP 3bitS 1bitTTL 8bits

     ※  label0-15保留3隐士空标签

     ※  EXP:用于MPLS转发做QoS

     ※  S 站底位用于标示当前是否最靠近3层报头

     ※  TTLMPLS报文每次转发减1. 与IP的TTL左右一样


     ◎ LSR(标签转发路由器)如何判断收到的报文是MPLS标签报文

                根据2层协议字段判断

                        - 以太网上承载MPLS0x8847

                        - PPP上承载MPLS :       0x8281

                        ※ 以太网上承载 IP   0x0800

                        ※ 以太网上承载 ARP:  0x0806

                        ※ 以太网上承载 ipv6:  0x86dd

                        ※ 以太网上承载 802.1q : 0x8100


        ◎ 信源模式cell mode  (已经淘汰的技术)

             ATM 信元头中使用VPI/VCI 作为标签而不在单独插入一个新的MPLS标签头

ATM Headerpayload

    VPI/VCI



◆ MPLS 转发时的相关概念

       - 转发原理

wKiom1b0sLnSHXnSAABa_7wR8kk169.jpg

    - R1-R4根据LDP生成标签转发表项

         * 路由与标签之间要存在映射关系FEC基于相同的IGP路由【BGP不被分标签】的转发等价类

         * 需要与IGP 协议的路由表配合


       - 标签分配过程


         1LSR会为每一个路由分配标签不只是自己本地直连的路由形成LFIB表

         2例如上图PCB的路由R4与其直连所以分配一个隐士空POP标签

         3R4通过IGPospf传给R3,R3为此路由分配一个标签本地分配的标签是给邻居用的。以此类推R1 R2也会为PCB分配标签同时传给邻居R1 R3都会收到R2的标签但是R3不要

         

wKiom1bw5sugQUxRAABkx6Ni_yw310.jpg

        - 数据转发过程

 

            1数据从A到B从IP域进入MPLS域查FIB表

                    几个关键概念

                                        1出入标签数据转发的方向定义出入。针对某个LSR入标签是自己分给上                                                   游邻居的出标签是下游邻居分给自己的

                                        2LSR 标签交换路由器

                                        3上下游数据传输的方向


             2数据到R1,打上202的出标签R2给R1的传给R2.

             3R2收到R1的数据从MPLS域过来的所以查LFIB表看到入标签是自己的就收下同时                     交换302的出标签传给R3

             4R3收到302的入标签打上R4给的POP标签弹出。把IP路由传给R4

             5R4收到一条IP路由查FIB表传给PCB


      ◎ 使用MPLS使得MTU变大

            MTU2层以上的数据就是MTU

        PC发出来的IP包

以太网IP

        LSR发出来的  


以太网MPLS 4ByteIP 最大1500Byte

            所以一层MPLS的MTU最大就是15042层MPLS的MTU最大就是15083层最大是1512


            默认最大MTU是1500,如果是IP的话可以切片。如果不是IP不能切片就会丢弃。

            也可以手动修改MTU避免切片


###############################################################

LDP协议基本原理


    LDP简介

        - label distribution proocal :标签分发协议

        - 在RFC 3036 中定义

        - LDP 建立邻居阶段1发现邻居阶段2回话建立阶段

        - LDP协议报文除了hello报文基于UDP外其他报文都是在TCP之上。端口号646

                tcp,3层源目IP都是单播。


◆ LDP邻居发现

      ◎ 发现邻居阶段使用UDP报文

 

src:本地接口IP

dst:224.0.0.2

所有路由器监听的组播地址

UDPsrc port 646dst port 646LDPhello

HELLO包中的关键字段 LSR-id。只能指定某个接口邻居互相知道对端LSR-id.

trans address (使用与LSR-ID相同)建立tcp连接的地址由于互相知道地址所以可以自动建立TCP连接

    ◎ LDP协议邻居建立过程

            - 邻居发现阶段使用UDP报文自动发现对方并确定TCP连接的IP地址

            - 邻居建立阶段由trans address大的一方主动发起TCP连接。所以LSR-ID地址一定要路由可达


               ★ show mpls ldp discovery // 查看LSR ID

                    可以手动修改trans address接口下.一定要手动配置

              ★ ldp discovery transport-address interface


                  R1 -------------------------------------------------------- ------------------R2

                1.1.1.1 <-----initialization messade初始化----------              2.2.2.2

                                ----初始化的 keep alive ------------------->

                            < ---------------- keep alive ---------------------

                            < ---本地IP和 label mapping message---

                               ---- 本地IP和 label mapping message-->

                            < ---------------- keep alive ---------------------

                            ---------------- keep alive ------------------------>

            保活过程除了使用keep alive外还使用hello报文跟踪链路保活。·

               ★ show mpls ldp neighbor //查看TCP回话建立情况 一定是transADD大的主动发起TCP


◆ LDP 配置

        全局配置

                        ip cef

                        mpls label protocal ldp

                        mpls ip  //用于路由器具备MPLS能力

                        mpls ldp route-id 

                        mpls label range xxx  //使用用观察标签

        j接口配置

                        mpls ip

        ★  show mpls ldp discovery //查看发现的LDP邻居不一定建立了TCP连接

        ★  show mpls ldp neighbor //查看建立了TCP连接的LDP邻居

        ★  show mpls ldp binding //  查看LIB表收到的所有标签

        ★  show mpls fowarding-table // 查看LFIB表

        ★  show ip cef 12.1.1.1  //查看具体路由的FIB表。从IP域进入MPLS域

        ★  show mpls forwarding-table detial //注意其中一串数字是2层封装

        2层格式

目标MAC源MACtype


        ◎ LDP 部署建议

            - 首先部署IGP协议

            - 必须保证LDP的router ID 路由可达


◆  LDP 必须与IGP路由协议配置使用

        - 在帧模式下我每一个路由分配一个标签并通告给LDP邻居

        - 为本地直连路由分配 POP 标签

◆  标签映射格式

            FEC TLV    转发等价类

            label TLV  标签表 。3POP 隐士空标签次末跳弹出


◆  次末跳弹出提高转发效率避免末节LSR查2次表

        最末节LSR 会为本地的直连末节路由分配一个POP标签即次末节的出标签。

        下图R1会为PCA的路由分配POP标签作为R2的出标签

wKiom1b0sLnSHXnSAABa_7wR8kk169.jpg


       POP 标签仅弹出顶层最靠近2层的标签头经过该动作后报文可以是IP报文也可以是MPLS标                              签报文

       untag:   会将所有标签头都移除变成一个纯IP报文发出去。


###############################################################

MPLS标签处理方式


    - 分配模式 label allocation

    - 分发模式 label distribution

    - 保留模式 label retention

    - 标签空间 label space


◆ 分配模式2种

     1独立分配模式 independent control (LDP)

            只要本地通过IGP学习到路由前缀就会为这条路由前缀分配标签为直连分配POP

     2有序分配模式 Odered control

            通过IGP学习的路由在收到下一跳路由器分配的标签后才会为该前缀分配标签


◆ 分发模式2种

    1主动模式:downstream unsolicited (LDP)

                主动将所有的标签映射消息通告给所有LDP邻居

    2,   下游按需模式 downstream on demand

                只有邻居向本地请求某条前缀的标签映射消息时本地才会通告标签映射消息给邻居


◆ 保留模式2种

    1自由模式liberal retention (LDP)

            将从邻居接收的所有标签映射消息都保存在数据库中

    2,  保守模式conservation retention

            本地仅保存最优路由下一跳邻居通告的该路由前缀的标签映射消息


◆ 标签空间

        本地所通告出去的标签是对局部接口有意义还是对全局有意义


    1基于平台;per-platform (ldp)

              本地通告出去的标签映射消息对全局有意义从不同接口通告出去的同一FEC所对应的标签相同

            sho mpls ldp discovery //中的 0 表示基于平台

    2,   基于接口 per-interface (ATM)

            从不同接口通告出去的同一FEC所对应的标签不同


◆ LDP 协议的标签行为

        分配模式独立分配

        分发模式下游主动分发

        保留模式自由模式

        标签空间基于平台

◆TE 分配方式

        分配有序控制模式

        发发下游按需模式

        保留保守模式

        标签空间 基于接口

◆ MPLS 转发与LDP 标签数据库的关系

    

    LDP 标签数据库包含所有邻居所通告的标签映射消息

    LSR 只会选择最优路由吓一跳路由器所通告的标签映射消息进入MPLS转发表


###############################################################

MPLS 转发与BGP的交互(解决路由黑洞)


    ◆ MPLS 不会为BGP的路由分配标签

            回顾路由黑洞的产生原因IBGP中中间的路由器没有到达目标网络的路由。

            可以通过RR或联邦解决


    ◆ MPLS不给BGP路由打标签那BGP路由如何传递

            递归

            BGP路由的下一跳是一个IGP路由MPLS会给IGP路由打标签


    ◆ LSP 标签交换路径为一条IGP路由转发所使用的标签转发通道


◆实验1:用loopback口建IBGP邻居

wKiom1b0_rnjU7XQAACmCS8r47k458.png

1R1-R6运行ospf并启用LDP

2,   R5和R6使用loopback口建立ibgp邻居

3R5另起loopback1 55.1.1.1宣告进BGP (等60秒才能最优)

      R6另起loopback1 66.1.1.1宣告进BGP

4观察

            R5 可以ping通 R6

            R1 R2 R3 没有lo1 的路由

            lo1 是BGP路由 没有打标签通过递归通信

            sho ip ro bgp 查看LO1的吓一跳是lo0而lo0运行在IGP中。LDP会为lo0打标签

            R5 R6lo0的LSP。

            trace 66.1.1.1 看到的标签 是为lo066.1.1.1的吓一跳IGP路由分的标签

            sho mpls forwarding 看标签路由映射表


◆ 实验2 上图使用F口建立BGP

     实验结果就不能通信。

     原因

                R5 R6使用F口建立BGP邻居。R2就是次末节LSR就会弹出标签到达R3就是目的去66.1.1.1                    的IP 路由。但是R3没有该路由。    

           R5: show ip bgp    //下一跳是36.1.1.6

                 即通信要考36.1.1.6的LSP。

                 sho mpls forward  //R2次末弹出

            R3sho ip ro bgp  // R3没有启用BGP。

            所以不通


###############################################################

不连续的 LSP


    ◆IP汇总对LSP的影响

wKioL1b1C6WxVVK2AAIQ1xx3vhc146.png       



    ◆ OSPF的24位掩码回环口对LSP 的影响


            没有路由所以会分配一个no label。弹出所有标签


###############################################################

环路检测

    LDP 的环路检测机制依赖IGP协议

         如果产生一个环路(如错误配置静态路由),标签头的TTL字段防止报文无限制循环

         TTL功能与IP头中的TTL功能一致

          默认情况下TTL将会从IP 头中复制


◆进制TTL值的复制

        TTL复制功能可以禁用。命令 no mpls ip propagate-ttl

        IP TTL 值将不会被复制到MPLS,MPLS的TTL值也不会被复制到IP 

        此时,LSP的入口处,MPLS的TTL值是 255

        整个MPLS域的 trace route 不显示任何核心路由器,禁用TTL的复制可以隐藏MPLS域的核心路由器

 

◆MPLS转发特性 1

            数据在传递过程中,如果出现差错(中间路由器没有到目的网络的路由),会将这个差错报文打             上标签传到LSP出口,然后再传回目的


###############################################################


加快LDP 冗余链路收敛

wKiom1b45N2RXgkBAAGBh_mRGR0277.png

        冗余链路,在链路失效的情况下,MPLS 的收敛不会影响整体的收敛时间。

        因为,在基于自由保留的分配机制下,只要IGP收敛后,LIB表根据路由表匹配就可以生成新的LFIB            表。

        但是,在原链路重新UP 后,路由表又变成原来的路由,但是LDP还没有同步(有路由,但是no                    label),  这种情况,对于BGP网络(依赖标签通信的网络)就会丢包。

        解决方法:思路:让LDP先同步,有LIB表后,再同步IP路由

                方法一:

                        会话保护。可以避免重建LDP会话,可以对会话进行保护,只要路由可达,LDP session就                                              得到保护。(有路由,标签就不会从LIB表中消失)

                          在LDP邻居两端启用target session 。实现跨越多跳来维持session。

                        配置方法:

                          1,在所有支持session 保护的路由器上配置 

                                    ★全局  mpls ldp session protection

                                        

                          2,   在不支持session保护的路由器上配置:

                                      ★发送端 mpls ldp nei x.x.x.x targeted ldp 

                                      ★接收端  mpls ldp discovery tageted-hello accept

                            show mpls ldp discovery   //target hello

                            show mpls ldp nei              //target hello


            方法二:LDP与IGP同步(目前只OSPF支持)

                        思路,OSPF链路恢复,要等LDP邻居建立后才回复ospf邻居关系

                    平台区分:

                            7200平台.  备份链路UP后,把被保护的主链路的cost置为最大(65535),等LDP标签                                                  同步后再把cost值置为正常值

                            37系列平台,在等LDP同步后,才发ospf hello才可以建立邻居。需要配合配置hold时                                     间,防止在单一链路,其他的接口配置了冗余,而单连璐LDP一直不同步,恢复                                         ospf 邻居

                    配置:

                            ospf进程下。mpls ldp sync

                            show mpls igp sync   // 查看同步,注意所有接口参与ospf的接口都被开启了同步

                            

###############################################################

◆  LDP timer

    wKioL1b48pvAVK01AAKxZTS2Zi0327.png



◆  MD5认证

        全局 mpls ldp neighbor x.x.x.x password test              

                clear mpls ldp neighbor *  //清邻居关系

◆  MPSL 自动配置

        ospf进程下 mpls ldp autoconfig area X  //运行在相应AREA 的接口自动运行LDP

         在不需要运行LDP的接口下,可以no掉。  no mpls ldp igp autoconfig

                          show mpls interface detail

                          show mpls interface all   //查看使能MPLS的接口


◆ 控制标签的分发

        默认 自由分配

                主动分发

                自由保留


         1,no mpls ldp advertise-labels   //关闭标签分发能力

         2,mpls ldp advertise-labels for 90 to 91  // for:为哪些路由分标签。to: 为哪个路由器分

               access-list  90  permit 2.1.1.1

               access-list 90 permti 3.1.1.1

               access-list 91 permit 1.1.1.1

            // 只给R1 分路由2.1.1.1和3.1.1.1的标签

        3, mpls ldp neighbor x.x.x.x labels accept acl_mumber  // 控制接收哪些标签

            

###############################################################

◆  MPLS 排错


        show run | in mpls // 排错用,因mpls配置都是以mpls开头的

     ※ 默认配置:no 掉默认

                    ip  cef    // sho ip cef查看

                    mpls ip   //  sho run | in mpls 可以看到


     ※ LDP 邻居不能建立

            1, transs add不可达,loop back更大的地址没有路由

                  sho mpls ldp discovery  //  LDP id NO ROUTE

                   把LDP id 的环回口地址宣告进IGP路由 就可以解决

                   或者 mpls ldp router-id lo0 force  // 强制LDP ID是lo0 。force:抢占

            2,更改了默认协议 LDP --> TDP

                    sho run | in mpls   //可以看到

                    mpls label protocol ldp  // 修改协议为LDP

     

     ※ 标签控制手段导致收不到标签


      ※  控制了标签范围 ,使得没有足够标签为路由分配        

            mpls ldbel range 100 101 //  只配置了2个标签   。sho run | in mpls 可以看到