MPLS VPN之LDP(2)

建立LSP有静态和动态两种方法,动态建立LSP需要路由器运行标签分发协议,LDP协议就是最重要的一个标签分发协议;

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

一、LDP的基本概念


1、标签空间

LDP分配的标签空间有两种:

(1)基于接口的标签空间

每个接口通告的标签范围是唯一的,同一条FEC在不同接口通告的标签是不同的;

(2)基于平台的标签空间,缺省采用此方式

标签分配时并不是在每个接口下唯一,而是从整台LSR中来分配标签的,同一条FEC在不同接口通告的标签相同;

2、上/下游LSR

上游和下游是根据数据报文的流向来定义的,数据流总是由上游发往下游;

3、PHP倒数第二跳弹出

在MPLS网络的egress节点,首先需要对接收的报文查找标签转发表进行标签移除,然后查找FIB表进行转发,由于进行了两次查表操作,所以过程比较耗时,如果到达egress节点的流量较大,会对设备性能造成一定影响;

为减轻egress节点的负担,标签在到达出站LER之前就被弹出,这样在报文到达egress节点时已经是IP报文了,只需要查找IP转发表就转发出去,提高了egress节点的工作效率;

为使标签在到达egress节点之前就被弹出,使用了一个特殊的标签3,也叫隐式空标签,代表一种弹出操作而不是实际需要携带的标签;

二、LDP报文


LDP报文(除Hello报文外)是基于TCP的,端口号646,报文格式基于TLV的方式来封装,LDP报文分为头部和报文内容两部分;

1、LDP报头及报文格式

(1)Version:2字节,表示LDP协议版本号,目前LDP协议版本号为0x01;

(2)PDU Length:2字节,表示PDU长度,不包括版本号和PDU长度字段;

(3)LDP Identifier:6字节,前4字节表示LSR-ID地址,后2字节表示特定的标签空间;

(1)U:1bit,未知TLV比特为0返回通知,为1忽略报文;

(2)Message Type:14bit,表示报文所属的类型;

(3)Message Length:2字节,表示报文长度,包括报文标识符、必选参数、可选参数;

(4)Message ID:4字节,报文标识符,用于标识报文;

(5)Mandatory Parameters:必选参数集;

(6)Option Parameters:可选参数集;

2、Hello报文

LDP的Hello报文基于UDP来发送,发送目标地址224.0.0.2;

用于发现邻居并用作后期邻居关系的维护;

启用LDP的接口会周期性5s的发送,连续3次没有收到hello报文,认为邻居故障;

hello报文携带保持时间等通用参数和发送方的传输地址,传输地址用于建立TCP连接;

默认传输地址与LSR-ID相同,所以需要保证各自的LSR-ID一定要路由可达;

3、Initialization报文

Initialization报文用来协商LDP邻居会话参数,如标签的分发方式、防环机制和标签空间;

4、Address报文

用来向LDP邻居通告本端所有接口的IP地址,邻居可以通告IP转发表的下一跳地址来决定出站标签;

5、标签通告报文

用来向LDP邻居发布FEC和标签的绑定内容;

一个标签通告可以发布多个标签消息;

标签通告报文包括标签请求、标签撤销和标签释放报文;

6、KeepAalive报文

用来检测TCP会话的连通性,默认检测周期为15s,超时时间为45s;

7、Notification报文

用于向邻居报文具体的差错类型;

三、LDP会话的建立过程


LDP会话是基于TCP连接的,所以建立TCP连接之前必须知道邻居的IP地址,根据获知邻居IP地址的方式将LDP会话分成两类:

(1)本地LDP会话        组播hello报文自动发现,建立会话的两个LSR之间是直连的;

(2)远端LDP会话        手工指定邻居地址,单播发送hello,可以直连,也可以非直连;

LDP状态机和邻居建立过程

1、non-existent    周期性发送Hello报文,地址大的一方发起TCP连接,建立成功进入Initialized;

2、initialized        发送Initial报文,进入Opensent;

3、opensent          收到对方Initial报文,进入Openrec;

4、openrec            发送KeepAlive报文,收到KeepAlive进入Operational;

5、Operational        可以交换标签通告报文了;

在会话建立后,双方会周期(5s)发送Hello报文以检测邻居状态,也会周期(15s)发送KeepAlive报文来检测TCP连接状态;

四、LDP标签的发布和管理

LDP会话建立后,LDP协议开始交换标签映射等报文,用于建立LSP;

1、标签发布方式

标签发布方式指下游LSR发布标签映射通告时,是否需要上游LSR先发送请求;

标签发布方式分为DU下游自主和DoD下游按需两种方式;

(1)DU下游自主    Downstream Unsolicited    缺省此方式

在DU下游自主模式下,建立LDP会话后,下游主动向上游发布标签映射通告报文,不需要上游先发送标签请求;

DU下游自主模式下,下游主动发送标签,因此会建立大量的LSP,这些LSP中有可能是不需要的,会有更多的LDP报文和占用更多的存储空间;

华为默认情况下只对路由表中的32为掩码路由进行标签映射并通告,可以使用命令lsp-trigger修改触发标签的策略;

(2)DoD下游按需    Downstream On Demand

在DoD下游按需模式下,下游LSR必须收到上游LSR的标签请求报文后,才会发送上游LSR所请求FEC对应的标签映射信息;

DoD下游按需模式需要进行标签请求,所以会带来额外的资源开销;

2、标签分配的控制方式        可以保证LSP是否连续

标签分配的控制指下游给上游发布标签时的条件,是否要求下游LSR在向上游LSR发布标签时一定要收到自己下游LSR的标签;

标签控制方式有两种:独立控制方式和有序控制方式;

(1)独立控制方式

在独立控制方式下,LSR在没有收到自己下游LSR标签的情况下,就能向上游通告标签映射消息;

因为LSR没有收到自己下游LSR标签就能向上游通告标签,所以可能出现到目地网络的LSP不连续问题;

(2)有序控制方式    缺省此方式

有序控制方式下,LSR必须收到下游LSR的标签,才可以向上游通告标签映射信息;

建立LSP的效率会受影响,但是可以确保整条LSP是连续的;

3、标签的保持方式        可以提高收敛速度

标签保持方式指当一台LSR收到来自多个LDP邻居的标签映射通告时,是否将这些标签信息都保存到数据库中;

标签的保持方式有两种:保守保存和自由保存;

(1)保守方式

对于特定一条FEC,即使从多个LDP邻居都收到了标签映射,该LSR只会将最优的标签保留下来;

拥有IP转发表中下一跳地址的LDP邻居通告的标签为最优标签,也是最终保留的标签;

(2)自由方式    缺省此方式

保存下所有的标签,这样做的好处是当网络发生故障时,可以立刻使用新的标签计算出新的LSP,收敛比较快,缺点是占用更多的数据库空间;

五、LDP的环路检测

在三层网络中使用的每种动态路由技术都有各自的防环机制,LDP协议也有防环机制;

因为三层路由技术已经避免了路由环路,LDP协议又是基于路由来分配标签和建立LSP的,所以这时报文通过LSP进行转发是不会出现环路的,华为VRP系统默认也不开启LDP防环功能;

1、规定最大跳数

LDP报文没经过一个LSR,LSR都在跳数TLV中增加一跳,当跳数达到最大值后,环路就被检测到,从而终止LSP的建立;

2、路径矢量法

当一台LSR收到LDP报文后,就会将自己的LSR-ID添加到报文中,如果收到的LDP报文已经有了本地的LSR-ID,则认为出现了环路,终止建立LSP;

3、TTL

MPLS报文每经过一台LSR,标签中的TTL减1,当TTL减少到0的时候,报文最终被丢弃,通过这种方法防止数据包无限循环转发;

六、LDP和IGP同步

存在主备链路组网的环境中,当主链路出现故障又从故障中恢复后,业务流量会从备用链路切换到主链路,在这个过程中,IGP协议收敛速度要快于LDP协议,这就会导致旧的LSP已经删除,而新的LSP还没建立好,这期间MPLS业务将会中断数秒的问题;

LDP和IGP同步就是为解决主链路故障恢复后流量回切的问题,为使LDP和IGP同步,在新的LSP建立好之前,继续保留旧的LSP,流量继续在旧的LSP上转发,只有在新的LSP建立好之后流量才完全切换过来;

LDP和IGP同步过程需要使用以下三个定时器:

1、hold-down

2、hold-max-cost

3、delay

在主链路故障恢复后,

(1)启动hold-down定时器,IGP不收发hello报文,抑制邻居关系的建立;

(2)hold-down定时器超时后,启动hold-max-cost定时器,IGP建立邻居并在主链路通告接口的最大metric值;

(3)故障链路LDP会话建立后,启动delay定时器等待LSP的建立,delay定时器超时后,LDP通知IGP同步流程结束;

配置命令:

int gi0/0/0

ospf ldp-sync

你可能感兴趣的:(MPLS VPN之LDP(2))