hcnp-mpls ldp配置与管理

2021-03-26 17:12:45 云杰通信 99

  hcnp-mpls ldp配置与管理

  LDP(Label Distribution Protocol,标签分发协议)是MPLS的一种最主要的控制协议,负责FEC的分类,MPLS标签的分配以及LSP的动态建立和维护。LDP规定了标签分发过程中的各种消息以及相关处理过程。通过LDP协议,LSR可以把网络层信息的路由信息直接映射到数据链路层的LSP交换路径上,实现网络层动态建立LSP。目前LDP广泛应用于VPN服务上,具有组网配置简单,支持基于路由动态建立LSP,支持大容量LSP。

  LDP邻接体

  当一台LSR接收到对端发送的Hello消息后,两端之间就建立了LDP邻接体关系也就是邻居关系,LDP邻接体存在两种类型:

  本地邻接体:通过组播形式(目的IP地址为224.0.0.3,代表本地子网中所有路由器)发送Hello消息(称之为链路hello消息)发现的邻接体叫做本地邻接体。

  远端邻接体:以单播形式发送helloi消息(称之为目标hello消息)发现的邻接体叫做远端邻接体。

  LDP对等体

  LDP对等体是指互相之间存在直接的LSP会话,可直接使用LDP会话,可直接使用LDP来交换标签映射消息(包括标签请求消息和标签映射消息)的两个LSR。在LDP对等体中,通过他们之间的LDP会话可获得下游对等体为某FEC分配的MPLS入标签,以此作为本端对应的FEC的出标签。LDP对等体之间可以是直连的也可以是非直连的。

  LDP通过邻接体来维护对等体的存在,对等体的类型取决于维护他的邻接体的类型。一个对等体可以由多个邻接体来维护,如果同时包括本地邻接体和远端邻接体,则该对等体为本远共存对等体

  LDP会话

  LDP会话用于在LSR之间交换标签映射,释放会话等消息。只有存在邻接体的两端对等体之间才能建立LDP会话。区分于本地邻接体和远端邻接体,在这两类邻接体之间建立的LDP会话也对应分为两种类型:

  本地LDP会话:建立会话的两个LSR之间是直连的本地邻接体关系

  远端LDP会话:建立会话的两个LSR之间可以是直连的本地邻接体关系,也可以是非直连的远端邻接体关系

  本地LDP会话和远端LDP会话可以共存,也就是一个对等体上可以同时创建与直连对等体的会话以及非直连的对等体会话。

  LDP会话消息

  在LDP会话过程中,主要使用以下4类消息:

  发现(discovery)消息:用于通告和维护网络中LSR的存在。比如hello消息。

  会话(session)消息:用于建立,维护,终止LDP对等体之间的会话,如:Initialization(初始化)消息,Keepalive(保持活跃)消息。

  通告(Advertisement)消息:用于创建,改变和删除FEC的标签映射,如标签映射消息

  通知(Notification)消息:用于提供建议性的消息和差错通知

  为保证LDP消息的可靠发送,除了Discovery消息使用UDP传输外,LDP的session消息,Advertisement消息,Notification消息都使用TCP传输。

  Hello消息都是用UDP协议传输,源/目的端口都为646

  在LDP会话,通告,通知消息中,主动方(对等体之间IP地址大的一方)发送的消息中的源端口为任意TCP端口,目的端口为TCP 646;被动方发送的消息中的源端口为TCP 646,目的端口为任意TCP端口。

  LDP的两个工作阶段

  LDP工作过程主要分为两个阶段:现在对等体之间建立LDP会话,然后才能在对等体之间建立LSP

  LDP会话建立

  在这个过程中LSR设备通过发送Hello消息来发现邻接体,然后在LSR之间建立LDP会话。会话建立后,LDP对等体之间通过周期性的发送Hello消息和Keepalive消息来保持这个会话

  LDP对等体之间,通过周期性的发送Hello消息表明自己希望继续维持这种邻接关系。如果Hello保持定时器超时仍未收到对端发送来的新的Hello消息,则会删除他们之间的邻接关系,然后本端LSR想对端发送Notification消息,结束它们之间的LDP会话。

  LDP对等体之间,通过LDP会话连接传送的Keepalive消息来维持LDP会话。如果会话保持定时器(Keepalive保持定时器)超时仍没有收到对端发送来的新的Keepalive消息,则本端LSR将向对端发送Notification消息,关闭它们之间的TCP连接,结束LDP会话。

  LDP LSP建立

  LDP会话建立成功后,LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系,从而建立LSP。

  通过LDP发现机制发现LDP对等体之后,就可以在对等体之间建立LDP会话,只有建立LDP会话后,才能建立LDP LSP来承载业务

  LDP有两种用于LSR发现潜在的LDP对等体的机制

  基本发现机制:用于发现直连链路上的LSR。LDP基本发现机制是LSR通过周期性的以组播方式发送LDP链路Hello消息(LDP Link Hello)进行的,发现的是直连链路上的LDP对等体,并与之建立本地LDP会话。LDP链路Hello消息使用UDP协议传输,目的IP地址是组播地址224.0.0.2,源/目的端口均为UDP 646。如果LSR在特定接口接收到邻居LSR发送来的LDP链路Hello消息,表明该接口存在LDP对等体。

  扩展发现机制:用于发现非直连链路上的LSR。扩展发现机制是LSR周期性的以单播方式发送LDP目标Hello消息(LDP Targeted Hello)到指定IP地址进行的,发现的是非直连链路上的LDP对等体,并建立远端LDP会话。LDP目标Hello消息也使用UDP协议传输,目的IP地址是指定的对端单播IP地址,源/目的端口均为UDP 646.

  在LSR之间建立LDP会话的过程总体可以划分三个阶段:第一阶段是通过交互Hello消息,相互建立TCP链接;第二阶段是通过交互LDP会话初始化消息(Initiazation Message),协商会话参数;第三阶段是相互交互Keepalive消息,建立LDP会话。

  (1)两个LSR之间互相发送Hello消息,基于不同发现机制采用不同的发送方式。双方使用Hello消息‘源IP地址’字段中填充的IP地址(称之为传输地址)进行LDP会话建立

  (2)传输地址较大的一方作为主动端,发起建立TCP链接。

  (3)TCP链接建立成功后,首先由主动方LSR_1向被动方LSR_2发送初始化消息(源端口任意,目的端口为TCP 646),协商建立LDP会话的相关参数。初始化消息中包括LDP会话的相关参数,比如LDP协议版本,会话标签分发方式,Keepalive保持定时器,会话环路检测,最大PDU,会话接收方LSR ID,会话接收方标签空间。

  (4)被动方收到主动方发送来的初始化消息后,如果接受相关初始化参数,则自己也向主动方发送初始化消息(包含的内容与前文相同)和Keepalive消息。Keepalive消息中主要包括消息类型(Message Type),消息长度(Message Length),消息ID。如果被动方不接受相关初始化参数,则发送Notification消息终止LDP会话的建立

  (5)主动方收到被动方初始化消息和Keepalive消息后,如果接受则向被动方发送Keepalive消息和地址消息(Address Message)。地址消息是仅当双方通过初始化消息最终协商采用DU(下游自主方式)标签发布方式时双方才进行交互,以便向对方通告本地直连的32位掩码IP地址和启用了LDP协议的接口IP地址。如果主动方不接受相关参数,则发送Notification终止LDP会话建立。

  当双方都收到对端的Keepalive消息后,LDP会话建立成功。但是如果双方协商采用的是DU标签发布方式,则在主动端发了地址消息后,被动端也会专门发送一个地址消息给主动端。

  LDP通过发送标签请求和标签映射消息,在LDP对等体之间通告FEC和标签的绑定关系来建立LSP。而标签的发布和管理由标签发布方式,标签分配控制方式和标签保持方式来决定。

  标签发布方式

  标签发布方式是指是否要等到上游向自己发送某FEC的标签请求消息才向上游发送该FEC的标签映射消息,并为之分配出标签。具有邻接关系的上下游LSR必须对所使用的标签发布方式达成一致。有如下两种方式。

  下游自主方式(DU):对于一个特定的FEC,LSR无需从上游LSR获得标签请求消息即可自主进行标签分配和发布。即不管上游设备是否向本设备发出了标签请求,本设备在学习了新的FEC后可立即向上,下游对等体(注意:会向所有对等体发送,不仅限向上游对等体发送)发送该FEC的标签映射消息。

  下游按需方式(DoD):对于一个特定的FEC,LSR只有在获得上游LSR发送的标签请求消息后才会向上游设备(不会向下游设备)发送标签映射消息,进行标签分配。

  标签分配控制方式是指是否要等到下游向自己发送了某FEC的标签映射消息才为该FEC分配入标签,并向上游发送该FEC的标签映射消息。有如下两种方式。

  独立标签分配控制方式(Independent):本地LSR可以自主的分配一个入标签绑定到某个FEC,然后向上游LSR进行标签通告,为上游LSR分配对应FEC的出标签,而无需等待下游LSR给本地LSR分配该FEC的出标签。

  这种分配控制方式下,LSR在路由表中发现一个路由(对应一个FEC)后,就会马上为该FEC分配一个标签,然后向上游LSR进行通告,根本无需考虑下游LSR是否已为该FEC分配了标签。这样就可能会因为下游LSR还没有为该FEC分配标签,没有成功建立该FEC的LSP,使其上游LSR即使已为该FEC分配了标签,建立了LSP,也无法与目的主机通信,造成数据丢失。

  有序标签分配控制方式(Ordered):对于LSR上某个FEC的标签映射,只有当该LSR已经从其下一跳收到了基于此FEC的标签映射消息后,或者该LSR就是此FEC的出节点时,该LSR才可以为此FEC分配入标签,然后向上游LSR发送此FEC的标签映射。

  标签分配控制方式与标签发布方式的组合

  标签保持方式是指LSR对收到的标签映射消息的处理方式,LSR收到的标签映射可能来自下一跳(本地对等体),也可能来自非下一跳(远端对等体)

  目前华为设备支持如下组合方式:

  下游自主(DU)+有序标签分配控制方式(Ordered)+自由标签保持方式(Liberal),该方式为缺省方式。即LSR在收到下游标签映射后,可自主向其上游分配标签,且收到的标签全部保留。

  下游按需方式(DoD)+有序标签分配控制方式(Ordered)+保守标签保持方式(Conservative)。即LSR在同时收到上游标签请求和下游标签映射后,才向上游分配标签,且只保留自己下一跳分配的标签。

  LSP的建立过程实际就是将FEC和标签进行绑定。并将这种绑定通告给LSP上游相邻LSR的过程。

  (1)入标签的分配是按照由小到大(最小值为1024)的顺序分配的,分配当前未分配的最小标签

  (2)同一链路上游设备为FEC分配的入标签一定要与下游设备为该FEC分配的出标签一致

  (3)同一台设备上针对同一FEC所分配的出标签可能有多个(它们之间可以相同,也可不同),分别来自不同下游对等体,也就是一个FEC可以映射多个出标签和出接口。

  (4)在一台设备上针对同一FEC只会分配一个入标签

  每个路由表象都对应一个FEC,缺省时,通过标签映射消息的通告,每个FEC都可能会在整个MPLS域网络的所有节点上(包括本地设备)建立LSP。就像动态路由进行全网路由收敛一样。

  (1)在直接连接某FEC对应的网段(缺省仅为32位掩码的主机路由)的节点上会为该FEC仅创建一个包含入标签的LSP(无出标签,也无入/出接口)

  (2)在其他节点上都会对非直连网段FEC同时创建两个LSP:其中一个是用于指导从本地节点访问FEC所代表的目的主机的LSP,仅包含出标签和出接口;另一个则是以本地节点为中间节点(Transit)的LSP,用于指导上游设备访问FEC所代表的目的主机,同时包括入标签,出标签和出接口。

  注意:cisco设备默认基于FIB表中所有学习到的路由条目生成标签号,华为设备默认仅基于FIB表中32位掩码的主机路由生成标签号;原因在于正常32位主机路由为ospf学习的环回接口,正常工程中只有BGP和MPLS VPN才会基于环回通讯,使用标签转发;其他普通流量还是基于特快包交换来进行;反观cisco在启动mpls以后,所有流量将基于标签转发,降低了转发效率(前提为默认)

  示例

  (1)配置LSR ID

  (2)使能全局MPLS

  (3)使能全局MPLS LDP

  (4)配置LDP会话:配置本地LDP会话,配置远端LDP会话