标签分发协议(Label Distribution Protocol, LDP)是MPLS的控制与信令协议,是标签交换路由器用来在MPLS网络中建立标签交换路径的一系列消息及消息处理的过程。其实质是在MPLS网络中,在物理上或者逻辑上相邻的对等LSR之间,根据网络层路由信息和其他一些相关协议(例如资源预留协议RSVP等)产生具有一定语义的标签,并将这些标签分发到与其相邻的对端LSR上,由此将网络层路由直接映射到数据链路层的交换路径上,形成标签交换路径的一系列处理过程。
LDP操作的最基本单元是一对LDP对等实体(LDP Peers)。LDP对等实体是指其间存在着LDP会话,使用LDP来交换标签和FEC映射信息的两个LSR。LDP允许这两个LDP对等实体同时通过一个LDP会话来获取对方的消息。LDP会话用于在LDP对等实体间进行标签信息交换。在LDP中主要有以下4种LDP消息。
1)发现(Discovery)消息,用于通告和维护网络中的LSR的存在。
2)会话(Session)消息,用于建立,维护和终止LDP对等实体之间的会话连接。
3)通告(Advertisement)消息,用于创建、改变和删除FEC-标签绑定。
4)通知(Notification)消息,用于提供建议性的消息和差错通知。LDP通知消息分为两种:差错通知(Error Notification)和建议性通知(Advisory Notification)。其中差错通知用于指示严重错误,如果一个LSR通过与LDP对等实体的LDP会话得到差错通知,LSR将关闭TCP传输连接,而通过这条会话连接得到的所有标签映射消息都将被丢弃,同时还将结束LDP会话。建议性通知用于通过LDP会话来传递特定LSR的有关信息或者是以前从LDP对等实体收到的消息的某些状态。以上所有的LDP消息以及他的子结构的都使用相同的类型-长度-值(Type-Length-Value, TLV)编码体系结构。
LDP的实现过程随着协议的运行从时间上可以分为以下3个阶段:
1)使用Hello消息发现LDP对等实体的阶段。
2)建立和维护LDP会话阶段。
3)分发和管理标签阶段。
下面将具体说明这3个阶段。
LDP发现是为了使LSR发现可能的LDP对等实体。目前有两种发现机制:一是基本的发现机制,用于找出与LSR在链路层上直接相连的LSR;另一个是扩展的发现机制,用于在链路层上发现非直接相连的LSR。在LSR上,如果某一接口使用的是基本发现机制,那么此LSR将在该接口上周期性地发送LDP Hello消息,该消息使用UDP封装发往连接在同一子网上的所有路由器,端口号为646。这个消息还同时携带有相应LSR及其接口的LDP标识与标签空间标识,还可以有其他一些信息。接收到这个Hello消息的LSR不仅知道了与其相邻的LSR,而且知道了它们直接通信将要使用的接口和标签空间等参数。
扩展的发现机制用于两个非直连的LSR之间。使用扩展LDP发现机制的LSR周期性地发送目标LDP Hello消息,该消息也封装在UDP中,发往特定单播地址的646 端口,同样携带有LSR要使用标签空间的LDP标识及其他一些信息。与基本发现机制相比,该消息有两个方面的不同:
1)Hello消息是发往特定的单播IP地址的,而不是与某一接口相连的所有具有相同组播地址的路由器组。
2)扩展发现机制的Hello消息发送是非对称的。这表示当一个LSR使用和另一个目标LSR建立连接的扩展发现机制时,目标LSR可以决定自己是响应还是忽略收到的Hello消息,如果选择了前者,那么它就周期性地发送目标Hello消息给发起Hello的LSR。
两个LSR之间交换LDP Hello消息的结果是触发LDP会话建立,此时两个对等实体之间将针对相应接口的标签空间建立Hello邻接体(Adjacency)关系。所谓标签空间,分为每接口标签空间和每平台标签空间。每平台标签空间,也就是说,在一台LSR上对于不同的LSP路径不可以分配相同的标签,而每接口标签空间就是在一台LSR上,只要接口不同就可以分配相同的标签。LDP中使用LDP标识符(LDP Identifiers)来标识特定LSR的标签空间范围。LDP标识符长度为6B,前面4B表示特定LSR的IP地址,后2B表示LSR内的标签空间序号,其形式为:<IP地址>:<标签空间序号>。
LDP会话建立的过程分为以下两步。
1)传输连接的建立:根据Hello消息中的传输地址TLV或者源IP地址比较两个对等实体之间地址的大小,以确定TCP建立过程中和会话初始化过程中的主动方和被动方,其中IP地址大的为主动方。然后由邻接体关系中的主动LDP实体尝试在TCP的646 端口上创建一个与被动的LDP实体之间的TCP连接。
2)会话初始化:Hello邻接体之间建立TCP连接后,将交换LDP初始化消息,协商LDP会话参数。需要协商的参数包括LDP版本号、标签分发方式、会话保持定时器值,用于标签控制下ATM的VPI/VCI的范围和用于标签控制下帧中继的DLCI范围等。如果参数协商成功后,就发送keep-alive消息作为响应,两个LDP实体之间就建立起对应于所协商标签空间的LDP会话。如果参数协商不成功,则发送“会话拒绝/参数错误”通知消息,同时关闭TCP连接。
两个LDP实体的会话参数配置有可能不兼容,如果这样的话,这两个LSR之间将可能会陷入无穷的消息序列之中,也就是说,一方将可能不停地发送差错通知消息并拒绝另外一方的会话初始化请求。
LSR必须采取使用指数后退的方式抑制重新建立LDP会话的次数。同时,如果LSR检测到上述情况时,应该采取措施通知网管人员。初始化消息被拒绝至少15s后,LSR才能重新发送LDP会话初始化消息,如果初始化消息又被拒绝,则在再次发送初始化消息之前,至少延时120s。主动方LSR必须延时一段时间才能重新建立LDP会话的TCP连接。除非操作人员重新配置其中一个LSR,否则被抑制的初始化消息序列不可能自动停止。在对参数重新配置之后,如果会话初始化请求不再被拒绝,这时可以取消对随后会话建立过程的抑制。
LDP会话的维护用于对LDP会话的完整性进行检测,LDP主要使用定时器来实现这个功能。LSR为每个LDP会话维护一个会话保持定时器,当LSR在设定的时间内收到来自特定会话连接的LDP数据单元后,LSR刷新定时器,重新开始计时;如果在时限内没有收到任何LDP数据单元,那么LSR认为LDP会话传输出现错误或者LDP对等体出现了故障,LSR就会关闭TCP连接,结束会话。
LDP会话创建和维护状态机如图4-9所示。
图4-9 LDP会话创建和维护状态机
两个对等LDP实体之间需要对以下3种LDP的操作方式进行协商。
1.标签控制方式
LSR使用独立(Independent)还是有序(Ordered)LSP控制方式决定了LSR在LSP初始建立过程中的行为。
(1)独立(Independent)标签控制
当使用独立的LSP控制时,每个LSR可以在任何时候向和它相连的LSR通告标签映射。例如当工作在独立下游按需标签分发控制方式下,LSR可以立刻对上游的标签请求消息发出响应,而不需要等待来自下一跳LSR的标签映射消息。当工作在独立下游自主标签分发控制下,只要LSR准备好对于特定FEC进行标签转发,LSR就可以向和它相连的LSR通告特定FEC-标签映射消息。使用独立标签控制允许LSR在收到下游的标签映射消息之前,就可以向上游通告标签映射消息。
(2)有序(Ordered)标签控制
当使用有序的LSP控制时,只有当LSR收到特定FEC下一跳的特定FEC-标签映射消息或者LSR是LSP的出口节点时,LSR才可以向上游发送标签映射消息。如果LSR既不是特定FEC的出口节点也不存在对于特定FEC的标签绑定,那么LSR在对特定FEC进行FEC-标签绑定并向上游LSR返回特定FEC-标签绑定消息之前,必须等待收到下游LSR的特定FEC-标签响应消息。
2.标签保持方式
标签保持方式是指LSR对收到的、但是目前暂时无用的标签-FEC绑定的处理方式。标签保持方式主要有两种:保守标签保持方式和自由标签保持方式。前者是丢弃所有无用的标签-FEC绑定,而后者将无用的标签-FEC绑定保存起来以供以后之用。
(1)保守标签保持方式
在下游自主标签分发的方式中,从任何相邻LSR都可以收到对于所有路由的标签映射消息。当使用保守标签保持方式的时候,只有用于数据转发的FEC-标签绑定才会被保留,即接收到的FEC-标签绑定来自路由的下一跳LSR。
在下游按需标签分发方式中,SR仅仅向FEC下一跳LSR发送标签请求消息。由于下游按需标签分发方式主要用于标签资源有限的环境,因此下游按需标签分发方式通常会使用保守标签保持方式。保守标签保持方式的优点在于只有用于数据转发的标签才会被分配和维护。对于标签资源有限的LSR而言,这一点是非常重要的。保守标签保持方式的一个缺点是如果路由改变了特定FEC的下一跳LSR,在分组能够继续进行标签转发之前,LSR必须等待来自新的下一跳的特定FEC-标签映射消息。
(2)自由标签保持方式
在下游自主标签分发方式下,LSR可以从任何相邻LSR收到对于所有路由的标签映射消息。当使用自由标签保持方式时,不论发送LSR是否是其所通告的特定FEC-标签映射的下一跳,LSR对于所有的标签映射都加以保留。当使用下游按需标签分发方式时,LSR可以选择向所有相邻LSR对于所有已知的地址前缀发送标签请求消息。但是,下游按需标签分发方式通常用于诸如ATM交换机等设备,在这种情况下,LDP推荐使用保守标签保持方式。
自由标签保持方式的主要优势在于LSR可以快速对路由变化做出响应,这主要是由于标签映射已经存在,当路由发生改变时,如果本地数据库中有适用的标签映射,将可以直接使用而不必向下游重新发起标签请求。自由标签保持方式的主要缺点在于对当前不需要的标签映射也要进行维护和管理,需要消耗更多的系统资源。
3.标签分发通告方式
根据上游LSR是否需要向下游对等LSR明确提出标签请求来划分,标签分发通告方式可分为下游按需(Downstream on Demand)标签分发通告方式和下游自主(Downstream Unsolicited, DU)标签分发通告方式。两者的主要区别在于由哪一个LSR负责发起标签映射请求和标签映射的通告进程。LDP允许下游LSR为明确提出标签请求的LSR分配FEC-标签绑定,MPLS体系结构同样允许LSR对未提出标签请求的其他LSR主动分配FEC-标签绑定。两种标签分发技术可以同时用在一个网络中。但是对于任何特定的LDP会话,LSR必须知道LDP对等实体使用的是哪种标签分发方式,从而避免出现其中一个LSR使用下游自主标签分发方式,并假定其下游对等LDP实体也使用相同的方式这种情况。因为如果出现这种情况,而下游LDP对等实体实际上需要等待标签请求消息的话,就不会等到上游LSR的标签请求消息,此时下游LDP对等实体将不会分配标签,也不会发送标签映射消息,这样LSP将无法正常建立。