XXX局点S12500 V5与华为NE40对接MPLS隧道建立不成功问题分析

一、问题现象

客户局点现网S12500 V5版本设备与思科设备对接MPLS运行正常,近期客户采购华为NE40替换现网的思科设备与我司交换机S12500对接。割接当晚发现设备MPLS对接不成功,两台设备之间无法建立LDP Session会话,导致标签无法分发,路由无法优选,业务无法正式上线,回退到与思科设备对接后恢复正常。

二、问题分析

割接失败后,根据当时收集的信息进行分析:

通常MPLS网络中LSP发生故障存在大概四种情况:LDP邻居关系中断、MPLS接口或全局错误去使能、标签分发错误以及软件硬件故障等。

首先查看现网设备的配置,两台设备直连建立MPLS是否使能相关配置,确保配置正确的前提下,检查设备对接时相关路由信息,确保路由可达,两台设备建立OSPF邻居,查看邻居状态:

[S12518]display ospf peer  

  OSPF Process 1 with Router ID 134.127.9.247

            Neighbor Brief Information

 Area: 0.0.0.0

 Router ID       Address         Pri   Dead-Time  Interface       State

 134.127.2.250   134.127.11.157   1      35        Vlan101         Full/ -

两台设备之间的OSPF邻居已经正常建立,下一步查看BGP邻居关系是否正常:

[S12518]display bgp vpnv4 all peer

 BGP local router ID : 134.127.9.247

 Local AS number : 571

 Total number of peers : 1               Peers in established state : 1

  Peer             AS   MsgRcvd  MsgSent OutQ PrefRcv Up/Down  State

  134.127.2.250    571    25      10      0    91   00:01:40   Established

BGP邻居正常建立,且环回接口地址路由可达,Ping测试连通性正常,但传统的PING能通只能说明IP转发是正常的,而不能说明LSP是没问题的,在IP路由正常而LSP中断的情况下,传统Ping报文依旧可以通过IP转发到达目的地。查看标签分配情况,LSP标签没有正常分发:

[S12518]display mpls lsp

--------------------------------------------------------------------------

                 LSP Information: BGP LSP

--------------------------------------------------------------------------

FEC                 In/Out Label  In/Out IF                       Vrf Name

134.127.10.177      1024/NULL     -/-                             189

134.127.10.178      1025/NULL     -/-                             189

134.127.10.221      1026/NULL     -/-                             189

进一步查看,怀疑LDP邻居中断,命令查看发现LDP Session会话未建立:

[S12518]display mpls ldp session all

分析网络中两台LSR之间LDP会话的建立过程。建立会话为一个两步的过程:传输连接的建立与会话初始化。第一个阶段传输建立,两台LSR设备之间建立一个可靠的TCP连接,为了避免两台LSR之间互相发起建立两个TCP连接,双方交互Hello报文,通过Hello报文信息中携带的LDP-ID和Transport Address参数确认建立TCP会话中的主动发起方和被动接收方,比较Transport Address确定地址大的一方为主动发起者主动发起TCP连接;发起TCP建立连接后,进入第二个阶段,会话初始化阶段,通过主动发起方发送Initialization消息协商会话参数,包括:LDP协议版本、Label分发方式、HoldTime、接收者的LSR-ID等。

如果接收Initialization的LSR被动方发觉对方的参数自己不能接受,则发送Notification消息结束会话,否则的话由LSR回应Initialization消息同时也发KeepAlive消息,两个消息可以在一个报文中同时携带;如果主动方接受Initialization消息中携带的参数则发送KeepAlive,LDP会话成功建立。可以在同一个报文中携带KeepAlive消息和其它Session消息,如Address消息和Label mapping消息。在如上交互过程中,LSR检测到任何参数错误都会发起Notification报文主动关闭连接。

现场在LDP Session会话无法建立的情况下在S12518上对应互联端口采用镜像抓包与打开debug调试开关,收集相关信息。

通过抓包分析建立LDP会话过程,由于S12518的地址134.127.9.247大于对端地址134.127.2.250,所以S12518为建立TCP连接的会话主动发起方,抓包发现在建立过程中,设备S12518主动发起会话中断报文终止了会话建立,因此两台设备无法建立LDP Session会话,继而标签无法分发。

继续分析S12518主动发起会话终止的原因,根据设备上debug打印的LDP Session建立过程分析:

*Dec 15 01:30:26:712 2017 S12518 LDP/7/Session: Vlan-interface101

 Link Hello message sent on interface: Vlan-interface101

*Dec 15 01:30:31:452 2017 S12518 LDP/7/Session:   

 Receive link hello from target hello socket, for peer: 134.127.2.250

*Dec 15 01:30:31:452 2017 S12518 LDP/7/Session: Vlan-interface101

 Link Hello message received on interface: Vlan-interface101

*Dec 15 01:30:31:763 2017 S12518 LDP/7/Session: Vlan-interface101

 Link Hello message sent on interface: Vlan-interface101

*Dec 15 01:30:33:904 2017 S12518 LDP/7/Session:   

 Create session with LSR: 134.127.2.250 and peer:0x867f02fa

第一步交互Hello报文,选举TCP会话发起主动方为S12518,TCP连接开始建立,目前会话状态处于Non-existent状态:

*Dec 15 01:30:33:904 2017 S12518 LDP/7/Session: Vlan-interface101

 Session(134.127.2.250,Active role) start to open TCP connection.

*Dec 15 01:30:33:907 2017 S12518 LDP/7/Session:   

  TCP up event received for socket Id: 4

双方交互当TCP连接成功建立后触发会话进入Initialized状态:

*Dec 15 01:30:33:908 2017 S12518 LDP/7/Session: Vlan-interface101

 Session(134.127.2.250)'s state changed from Non-existent to Initialized.

处于Initialized状态情况下,主动方开始发送携带会话协商参数的Initialization消息报文,转向OPENSENT状态,等待被动方回应Initialization消息报文,若此过程中,主动方和被动方在此状态下收到任何非Initialization消息或等待超时,都会转向NON EXISTENT状态:

*Dec 15 01:30:33:908 2017 S12518 LDP/7/Session: Vlan-interface101

 Session(134.127.2.250) start to send init msg on Initialized state.

*Dec 15 01:30:33:908 2017 S12518 LDP/7/Session:   

 Session Init message sent to LSR: 134.127.2.250,0

*Dec 15 01:30:33:908 2017 S12518 LDP/7/Session: Vlan-interface101

 Session(134.127.2.250)'s state changed from Initialized to Open Sent.

*Dec 15 01:30:33:912 2017 S12518 LDP/7/Session: Vlan-interface101

 Session(134.127.2.250) received init msg in Open Sent state.

处于OPENSENT状态后,主动方S12518根据接收Initialization消息报文的协商参数进行比较,如果此时参数不能接受或Initialization消息超时则断开TCP连接转向NON EXISTENT状态,通过如下打印,S12518认为Loop Detection参数协商不一致从而发送TCP断开连接消息,LDP会话中断:

*Dec 15 01:30:33:913 2017 S12518 LDP/7/Session:   

 Discrepancy between proposed Loop Detection status and Configured value

*Dec 15 01:30:35:226 2017 S12518 LDP/7/Session:   

 Send shut down notify,Tcp connid is 4!

*Dec 15 01:30:35:226 2017 S12518 LDP/7/Session:   

 Session counter is 0

*Dec 15 01:30:35:226 2017 S12518 LDP/7/Session:   

  TCP Down event received for socket Id:4

如果没有因为协商参数不一致,导致TCP连接中断;主动方如果收到的Initialization消息中的参数可以接受则转向OPENREC状态;

处于OPENREC状态后,不管主动方还是被动方都是发出KeepAlive后的状态,在等待对方回应KeepAlive,只要收到KeepAlive消息就转向OPERATIONAL状态;如果收到其它消息或者KeepAlive超时,则转向NON EXISTENT状态。

最后进入OPERATIONAL状态,此状态是LDP Session成功建立的标志。在此状态下可以发送和接收所有其它的LDP消息。在此状态如果KeepAlive超时或者收到致命错误的Notification消息(Shutdown消息)或者自己主动发送Shutdown消息主动结束会话,都会转向NON EXISTENT状态。

在OPENSENT状态后,由于接收到Initialization消息报文中的协商参数不能接受,debug中报错如下:

*Dec 15 01:30:33:913 2017 S12518 LDP/7/Session:   

 Discrepancy between proposed Loop Detection status and Configured value

由于Loop Detection参数协商不一致,查看设备当前配置:

mpls ldp

 loop-detect

在S12518侧配置有LDP环路检测,为了防止在MPLS域中建立LSP时产生环路,有效地检测LSP环路的出现,避免发生环路影响。

查看设备的配置指导明确有相关说明:

l  LDP对等体上的环路检测配置必须一致,否则无法建立LDP会话。

l  如果对MPLS域进行环路检测,则必须在MPLS域内所有LSR上都开启环路检测功能。

l  环路检测功能需要在所有接口使能LDP之前进行配置。

l  所有环路检测的配置,只对修改后建立的LSP有效,修改环路检测配置不影响已经建立的LSP。可以通过在用户视图下执行reset mpls ldp命令的方法,使环路检测配置对已经建立的LSP生效。

l  使能LDP环路检测功能,可能会导致LSP重新更新,产生冗余消息,消耗过多的系统资源,推荐使用路由协议的环路预防功能。

根据如上说明,结合debug中的报错提示可以推断出LDP会话没有建立是由于对等体两端环路检测配置不一致,查看设备上LDP对等体信息:

[S12518]display mpls ldp peer verbose

        LDP Peer Information in Public network

 ------------------------------------------------------------------------------

 Peer LDP ID         : 134.127.2.250:0

 Peer Max PDU Length : 4096         Peer Transport Address : 134.127.2.250

 Peer Loop Detection : Off           Peer Path Vector Limit : 0

 Peer FT Flag     : Off        Peer Keepalive Timer  : 45 Sec

 Recovery Timer    : ----        Reconnect Timer     : ----

 Peer Label Advertisement Mode : Downstream Unsolicited

 Peer Discovery Source         : Vlan-interface101

 ------------------------------------------------------------------------------

对等体上传递过来的信息显示对端设备传递过来的参数显示没有开启环路检测,找华为侧查看配置核实,华为侧确实未开启环路检查功能。

三、问题处理及经验总结

华为侧设备开启环路检测或在S12518上关闭环路检查功能后,测试LDP会话正常建立,LSP标签正常分配;需要注意的是配置环路检测后,需要通过用户视图下执行reset mpls ldp命令,使环路检测配置对已经建立的LSP生效。

客户现网使用 V5版本的S12518,由于LDP会话中的TCP连接建立过程中协商参数不一致导致会话无法建立,经确认华三厂家确认,V5版本实现方式中需要检查双方参数,当主动方无法接受参数时主动中断连接;而现在V7版本设备对于会话协商参数不一致的机制已经进行了修改,V7版本中建立LDP会话将不再进行参数不一致强行中断TCP连接的设置,进而能够正常分发标签建立MPLS。


2018年03月