MPLS LDP原理

我自风情万种与世无争?

一、LDP协议

LDP协议就是其中最重要的一个标签分发协议。LDP协议在RFC3036中被定义,在MPLS网络中,路由器通过运行LDP协议为每条内部路
由映射一个标签,然后再将标签信息通告给所有邻居,路由器之间通过这种方式来建立标签转发表,最终形成LSP,当网络拓扑发生变化时,LDP还会实时地响应这种变化,动态建立LSP。

二、LDP的基本概念

1、标签空间

LDP分配标签的空间有两种。
一种是基于接口的标签空间:每个接口通告的标签范围是唯一的,LER1为同一条FEC在不同接口通告的标签是不同的。
二是基于平台的标签空间:标签分配时并不是在每个接口下唯一,而是从整台LSR中来分配标签的,LER1 为同一条FEC通告一个标签。

2、上游 LSR/下游LSR

上游和下游是根据数据报文的流向来定义的,数据流总是由上游发往下游,对于网络45.1.1.0/24来说,AR5是最后一跳路由器, 其上游是AR4,而AR4同时又是AR3的下游。标签的通告方向可以是下游通告给上游,上游也可以将其标签通告给下游。

3、PHP(倒数第二跳弹出)

在MPLS网络的出站LER处,首先需要对接收的报文进行标签移除(通过查找标签转发表),然后再进行FIB表的查找并转发,由于进行了两次查表操作,所以过程比较耗时。如果到达出站LER的流量较大,会对设备性能造成一定的影响。为减轻出站LER的负担,标签在到达出LER之前就被弹出,这样在报文到达出站LER时已经是IP报文了,只需要查找IP转发表就转发出去,这样提高了出站LER的工作效率。

为使标签在到达出站LER之前就被弹出,使用了-一个特殊的标签一“3”, 这个标签也叫隐式空标签,

4、LDP报文简要

① Hello-----发现邻居,提供LSR-ID
② Initialization----初始化协议报文----协商的LDP标签分发方式,邻居超时时间,版本信息
③ Address----描述自身所运行MPLS+LDP的接口
④ Lable Mapping----描述自身对每个FEC标签的定义
⑤ keepalive----维持邻居
⑥ Notification----错误通告报文----描述或者中断邻居的原因

三、拓扑

在这里插入图片描述

四、基础配置

1、全网设备运行OSPF,开启MPLS和LDP,各设备的环回口0为各协议的R-ID并且宣告进OSPF协议

2、AR-1与AR-5建立基于各自的环回口0建立IBGP邻居,AR-5的5.5.5.2/32 宣告进BGP协议

AR1

[AR-1]ospf 1 router-id  1.1.1.1
[AR-1-ospf-1]a 0
[AR-1-ospf-1-area-0.0.0.0]net 12.1.1.1 0.0.0.0
[AR-1-ospf-1-area-0.0.0.0]net 1.1.1.1 0.0.0.0
[AR-1-ospf-1-area-0.0.0.0]quit
[AR-1-ospf-1]quit
[AR-1]mpls  lsr-id 1.1.1.1
[AR-1]mpls
[AR-1-mpls]mpls ldp
[AR-1-mpls-ldp]quit
[AR-1]int g0/0/0
[AR-1-GigabitEthernet0/0/0]mpls 	
[AR-1-GigabitEthernet0/0/0]mpls ldp
[AR-1-GigabitEthernet0/0/0]quit 
[AR-1]bgp 100
[AR-1-bgp]peer  5.5.5.5 as 100
[AR-1-bgp]peer  5.5.5.5 connect-interface  LoopBack 0

AR5类似配置

AR3

[AR-3]mpls lsr-id 3.3.3.3
[AR-3]mpls
[AR-3-mpls]quit
[AR-3]mpls ldp
[AR-3-mpls-ldp]quit
[AR-3]int g0/0/0
[AR-3-GigabitEthernet0/0/0]mpls 
[AR-3-GigabitEthernet0/0/0]mpls ldp
[AR-3-GigabitEthernet0/0/0]int g0/0/1
[AR-3-GigabitEthernet0/0/1]mpls
[AR-3-GigabitEthernet0/0/1]mpls ldp 
[AR-3-GigabitEthernet0/0/1]quit
[AR-3]ospf 1 router-id 3.3.3.3
[AR-3-ospf-1]a 0
[AR-3-ospf-1-area-0.0.0.0]net 23.1.1.3 0.0.0.0
[AR-3-ospf-1-area-0.0.0.0]net 34.1.1.3 0.0.0.0
[AR-3-ospf-1-area-0.0.0.0]net 3.3.3.3 0.0.0.0

AR2、AR4配置类似

dis mpls ldp interface
在这里插入图片描述
AR2的g0/0/0、g0/0/1接口启用了LDP,并且标签分发方式为DU方式;

AR2与AR1、AR3之间的LDP会话状态为Operational,表示会话已成功建立。

dis mpls ldp session
在这里插入图片描述
dis mpls lsp
在这里插入图片描述
在AR1上验证去往5.5.5.5/32的mpls报文所经过的路径。

tracert lsp ip 5.5.5.1 32
在这里插入图片描述
报文在AR1发出时被赋予了标签1027,经过AR4时,标签被代替为3。

测试连通性

ping lsp ip 5.5.5.5 32
在这里插入图片描述
已通

五、观察与描述

1、通观察LDP邻居建立,请分别描述LDP协议常用数据包的内容与作用

LDP协议主要使用四类消息:

发现(Discovery)消息:用于通告和维护网络中邻居的存在,如Hello消息。
会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射,如Address消息、Label Mapping消息。
通知(Notification)消息:用于提供建议性的消息和差错通知。

LDP邻居建立过程(路由器A、B):

两个LSR之间互相发送Hello消息。
Hello消息中携带传输地址,双方使用传输地址建立LDP会话。
传输地址较大的一方作为主动方,发起TCP连接。
B作为主动方发起TCP连接,A作为被动方等待对方发起连接。
TCP连接建立成功后,由主动方B发送初始化消息,协商建立LDP会话的相关参数。
LDP会话的相关参数包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。

2、MPLS标签----分发,传递,撤销(AR-5的环回口5.5.5.1宣告进ospf后再undo宣告)

5.5.5.1宣告进ospf
在这里插入图片描述
Label Mapping Message用于标签分发与更新;

Undo net 5.5.5.1 0.0.0.0
在这里插入图片描述
Label Withdrawal Message用于标签撤销;
Label Release Message用于标签撤销确认。

① MPLS域上游为IP数据进入方向,下游为基于MPLS转发的数据离开MPLS域,进入IP转发方向

② 路由始发地为下游,路由和Lable由下游向上游传递;数据由上游向下游传递

③ LSR向上游邻居通告自身对于FEC定义的标签,期望来自邻居上游数据携带此标签进入本设备。

④ Lable本地有效,不同LSR对同一FEC分配的标签不受邻居约束,lable可能一样,也可以不一样

⑤ 默认情况下:

Label Mapping Message用于标签分发与更新;
Label Withdrawal Message用于标签撤销;
Label Release Message用于标签撤销确认

基于以上特性,请描述和标识AR-5----5.5.5.1/32主机路由的更新与撤销过程中的报文和标签,并简要描述5.5.5.1/32

(1)基于IGP学习到此主机路由的LSR对于5.5.5.1/32此等价类分配的Lable为多少?又是如何通告邻居的?

IGP-----路由标签触发标签
LDP----标签撤销

IN-------------------OUT
本地------IGP------LDP

① 本地下发IN方向标签
Out方向----邻居通告获得

② 向所有邻居通告自身自身对于FEC下发的标签
a.是否存在此FEC
b.FEC在IP路由表的下一跳 是否匹配address报文的地址

(2)此主机路由的下游设备感知到此FEC撤销后,是如何通知上游邻居的?上游邻居收到通知后做出何种响应?

AR5下游设备感知5.5.5.1路由挂了之后,发起撤销报文(通告上游撤销报文),AR4上游设备收到报文之后,回AR5 Label Release Message报文。

(3)利用现行LSP隧道 解决AR-1访问5.5.5.2/32互通问题,不带源ping
请试分析AR-1去往5.5.5.2数据发送与回程分别给予何种方式转发,并解释在此次通信中BGP与MPLS的作用(路由控制与数据转发)

[AR-1]route recursive-lookup  tunnel 

[AR-1]ping 5.5.5.2
在这里插入图片描述
LDP--------BGP
① hello----发现邻居(UDP----646)
② Address----向邻居通告

六、LDP报文详解

1、Hello

作用:发现和维持LDP邻居
发送:默认时间为5S一发送
内容:保持时间(默认15S),传输地址(默认为LSP-ID)

2、Initialization

作用:协商LDP邻居会话参数,标签分发方式,防环机制和标签空间
发送:发送建立LDP邻居时发送
内容:版本,Keepalive保存时间(默认45S),标签分发方式,是否开启防环,PDU长度

3、Address

作用:向邻居通告本端所有的接口地址,邻居通过IP转发表的下一跳地址来决定出站标签
发送:初次建立LDP邻居时发送
内容:LSR的地址簇和接口地址

4、Lable Mapping

作用:向LDP 邻居发布FEC和标签绑定内容(一个标签通告报文可以发布多个标签信息)
发送:触发更新
内容:每一条FEC对应的标签(报文里以16进制体现)标签通告,标签请求,标签撤销,标签释放

5、keepalive

作用:TCP 会话的保活检测)
发送:默认15S周期发送,45S保持时间
内容:持时间(默认15S),传输地址(默认为LSR-ID)

6、Notification

作用:错误通知或者查询通知
发送:触发更新
内容:数据包格式错误,无法识别的ILV, 会话超时等具体差错类型

七、LDP会话状态机

1、Non Existent

LDP的初始状态(类似BGP的Idle状态) ;发送hello, 选择主被动,建立TCP连接)

2、Initialized

完成TCP连接

(1)主动方先发送Initialized报文,发送后进入0pensent状态,等待对方回应Initialized

(2)被动方等待主动方的Init报文,收到后如果Int报文类参数协商一致回送主动方Int报文可以Keepalive报文进入0penrec状态

3、Opensent

主动方发送Init报文后等待被动方的Int与Keepalive报文

(1)与邻居的Int报文参数协商一致回送Keepalive报文并转至0penrec状态
(2)与邻居Int协商失败或者邻居回应int超时或者收到Notification则断开TCP会话转至Mon Existent

4、Openrec

主被方在收到协商一 致Int报文后己向对方发送Keepalive报文等待对方回应Keepalive

(1)收到对方回应的Keepalive报文,转至0perational
(2)回应超时或者收到Notif icat ion断开ICP会话转至Non Existent

5、Operational

LDP会话尽力成功,最终状态,周期发送Keepalive报文维持会话,超时或者收到Notification报文端口LDP会话转至Non Existent。


在这里插入图片描述

我是艺博东!不要干扰别人的自由,不要给别人添麻烦,逗号,然后做你自己。做真实的你,活出真实的你,率性一点,自然一点,从容一点,真实一点,你会更快乐。也欢迎你和我一起讨论,我们下期见。

猜你喜欢

转载自blog.csdn.net/HYD696/article/details/107590268