昨天过生日,我们自己做了好多菜,8个人在宿舍喝的非常开心。王晓买的骰子特别给力,玩骰子罚酒喝,结果把他自己整的不行了,哈哈。哥们几个在学校蛋糕房买了一个最贵的蛋糕,非常好吃,淼哥送我一本《海贼王》漫画,感动!这是我自初中那次生日喝醉后,过的最开心的一次生日,真的很感谢哥几个,还有徐鑫老婆,作的菜太棒啦!
嗯,好,言归正传。
今天学习一些MPLS 标签的基础理论知识。只针对LDP TDP 此处不做讨论。
LDP 的四大功能:

1.       LSR发现

2.       LDP会话的建立与维护

3.       标签映射通告

4.       使用通知进行管理

上面的四个功能是通过LDP 的四个消息来实现的,摘抄如下:

·         Discovery messages— Announce and sustain an LSR's presence in the network

·         Session messages— Establish, upkeep, and tear down sessions between LSRs

·         Advertisement messages— Advertise label mappings to FECs

·         Notification messages— Signal errors

LDP通过端口646,地址为224.0.0.2(本地所有路由器)发送hello消息进行邻居的发现,LDP会话允许两端的Hello时间不一致,以hello值小的一方为准。在进行进一步的交互之前,邻接的LSR之间需要选举出一个active 路由器,这个路由器将发起到对方的TCP连接然后建立会话。通过比较 LDP router ID,较大的获胜。LDP是一个6字节的字段,包括4字节的标识符和2字节的标签空间。

R5#sh mpls ldp nei

    Peer LDP Ident:; Local LDP Ident 5.5.5.5:0

        TCP connection: 3.3.3.3.646 - 5.5.5.5.11351

        State: Oper; Msgs sent/rcvd: 138/139; Downstream

        Up time: 01:42:25
        LDP discovery sources:

          Targeted Hello 5.5.5.5 -> 3.3.3.3, active, passive

        Addresses bound to peer LDP Ident:

          23.1.1.3        34.1.1.3        3.3.3.3        

在上面的输出中,3.3.3.3:0就是一个LDP router ID3.3.3.34字节的标识符,在建立对等体的时候可以手动指定也可以由系统自动选举最大的Loopback地址或者最大的IP地址作为标识符(没有uploopback地址的情况下)。注意,虽然我们可以手动指定标识符,但是这个地址必须是自身直连的并且是up状态的,一句话,就是建立peer的两个邻接LSP的标识符需要能够互相ping通。这一点与OSPFrouter id是不一样的,需要注意。否则,会话不可建立。建议使用loopback 地址。

后面的0 就是标签空间。0 说明他是基于设备的标签空间,非零标签他是基于接口的标签空间。帧模式下的摄别接口使用的是基于设备的标签空间,非帧模式接口(如LC-ATM )使用的是基于每个接口的标签空间。简单举个例子解释这句话,比方两个邻接LSR 之间建立了多个LDP 会话,如果他们运行在帧模式下的话,这多个LDP 会话只需要一个标签空间;如果这多个LDP 会话是建立在LC-ATM 接口下,那么每个LDP 会话都需要一个标签空间。

TCP连接成功后就需要就会话参数进行协商以初始化会话,这个动作是由active router发起的。协商的参数包括keepalive时间,标签分发方法,PDU长度等。

LDP 会话成功建立后进行标签的交换。下面有几种不同的模式,整理总结如下:

1.       标签分发模式

 

下游被动(Downstream on Demand:LSRLSP的下一跳从上游路由器收到标签分发的请求时才分配标签。

下游主动(UD :LSR 主动向其邻接LSR 分发标签,不等待来自上游的标签请求。
                  * Cisco IOS 中,LC-ATM 接口使用DoD 模式,帧模式接口使用UD 模式。

2.       标签保留模式

自由的标签保留模式(LLR :LSR 将收到的所有标签保存在LIB 中,比方说收到某个FEC 的多个标签,其中下一跳只有一个,但是不管是或不是LSP 的下一跳一概保存。被使用的标签保存到LFIB 中。
保守的标签保留模式(CLR ):LSR 不会保存任何远程标签,除了为特定FEC 使用的下一跳LSR 的下一跳LSR 的标签保留外。
                   * Cisco IOS 中,LC-ATM 接口使用CLR 模式,其他帧模式接口使用LLR 模式。LLR 模式能够很快适应路由变化,而CLR 只需保留很少的标签,提供了内存的可用性。

3.       LSP控制模式

独立于LSP LSR 独立于其他LSR 建立本地标签,一旦发现FEC 即为其创建本地标签。
非独立于LSP LSR 只会在他意识到他是某FEC 的出战LSR 或从其下一跳收到FEC 标签时才会为相应的FEC 创建本地标签。

*Cisco IOS中,使用独立于LSP的控制模式,Cisco IOSATM默认使用非独立与LSP的控制模式。独立的控制模式说明该LSR会立即回复从上游LSR收到的标签请求信息,非独立的控制模式说明LSR只在他收到了来自其下游的LSR对其标签请求的回复后才会回复其从上游LSR收到的标签请求信息。他的缺陷在与引入了标签捆绑接收上的延时,又在在与不会有报文被丢弃。

 

下面介绍几种标签类型

1.       untagged

LSP 的终点,MPLS 包转换成IP 包,也就是说从MPLS 域进入IP 域,然后根据目的IP 进行常规路由操作。(注意,E-LSR 可以同时是另一个LSP 中的LSR

2.       Implicit-null or POP label

隐式空标签,在前面的文章中有提到过,其标签值为3 ,引出了倒数第二跳弹出机制。

3.       Explicit-null label

显示空标签,他的标签值为0 ,他相对于隐式空标签的不同就是通过EXP 位实现在MPLS 上部署QoS

4.       Aggregate

聚合标签,将MPLS包转换成IP包,然后通过FIB查找逃出接口。聚合标签在MPLS ×××中常见,他与untagged比较类似,但是MPLS数据包不同,在MPLS ×××中存在多层标签,例如加上一层×××v4标签。