S7706和S12708交换机的自协商端口问题

发布时间:  2016-09-06 浏览次数:  209 下载次数:  0
问题描述

总部新增2S12708设备做了堆叠(原来为一台S9306做核心,割接后需要双上行做链路聚合,故新增了一条链路),下属局点为S7706(为了方便配置已经刷上去了)设备替换原来的S9306设备,由于总部新增核心设备需要部署新的链路且局点与总部相距甚远,故需要在割接前测试新部署的链路连通性,在割接前先使用了S12708上的一个空配置端口与S7706的一个空配置端口测试链路的联通性,但是发现ospf邻居关系在不停的震荡。


   

告警信息

Aug  4 2016 17:25:10 xxx_9306-1 %%01OSPF/4/NBR_DOWN_REASON(l):Neighbor state leaves full or changed to Down. (ProcessId=1, NeighborRouterId=x.x.x.x, NeighborAreaId=0, NeighborInterface=Vlanif4005,NeighborDownImmediate reason=Neighbor Down Due to SequenceNum Mismatch, NeighborDownPrimeReason=M,I,MS bit or SequenceNum Incorrect, NeighborChangeTime=[2016/08/04] 17:25:10)

Aug  4 2016 17:25:10 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=SeqNumberMismatch, NeighborPreviousState=Full, NeighborCurrentState=ExStart)

Aug  4 2016 17:25:10 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exchange)

Aug  4 2016 17:25:10 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading)

Aug  4 2016 17:25:10 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)

Aug  4 2016 17:25:15 Xxxx_9306-1 %%01OSPF/4/NBR_DOWN_REASON(l):Neighbor state leaves full or changed to Down. (ProcessId=1, NeighborRouterId=x.x.x.x, NeighborAreaId=0, NeighborInterface=Vlanif4005,NeighborDownImmediate reason=Neighbor Down Due to SequenceNum Mismatch, NeighborDownPrimeReason=M,I,MS bit or SequenceNum Incorrect, NeighborChangeTime=[2016/08/04] 17:25:15)

Aug  4 2016 17:25:15 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=SeqNumberMismatch, NeighborPreviousState=Full, NeighborCurrentState=ExStart)

Aug  4 2016 17:25:15 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exchange)

Aug  4 2016 17:25:15 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading)

Aug  4 2016 17:25:15 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)

Aug  4 2016 17:25:20 Xxxx_9306-1 %%01OSPF/4/NBR_DOWN_REASON(l):Neighbor state leaves full or changed to Down. (ProcessId=1, NeighborRouterId=x.x.x.x, NeighborAreaId=0, NeighborInterface=Vlanif4005,NeighborDownImmediate reason=Neighbor Down Due to SequenceNum Mismatch, NeighborDownPrimeReason=M,I,MS bit or SequenceNum Incorrect, NeighborChangeTime=[2016/08/04] 17:25:20)

Aug  4 2016 17:25:20 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=SeqNumberMismatch, NeighborPreviousState=Full, NeighborCurrentState=ExStart)

Aug  4 2016 17:25:20 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=Exchange)

Aug  4 2016 17:25:20 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loading)

Aug  4 2016 17:25:20 Xxxx_9306-1 %%01OSPF/4/NBR_CHANGE_E(l):Neighbor changes event: neighbor status changed. (ProcessId=1, NeighborAddress=x.x.x.x, NeighborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)

从告警信息可以看出OSPF邻居关系一直处于震荡状态;

处理过程

1、 当时看到这些告警信息的时候第一时间想到的就是客户原来网络里面本来就因为种种设计上规划上的问题导致存在着OSPF动态路由协议的某些问题,询问客户,以前没有类似的告警信息出现,故排除本来就存在这种问题的可能;

2、 使用命令查看ospf的邻居关系:

<xxxx_S7706>dis ospf peer  brief

 

         OSPF Process 1 with Router ID x.x.x.x

                  Peer Statistic Information

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

 Area Id          Interface                        Neighbor id      State   

x.x.x.x         Vlanifxxx                      x.x.x.x       Full       

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

发现居然和对端S12708建立起了邻居关系,且ospf邻居关系一直在downfull之间来回震荡;

3、 结合告警信息和S7706S12708的配置,为了测试链路连通性采用的是空配置端口,正常情况下是不可能与核心建立ospf邻居关系的,更加不可能会产生ospf的邻居关系震荡现象。

4、 由于局点距离较远核心配合的工程师是客户方提供可能搞错端口,所以打电话再三确认了端口确实为空配置端口,排除了端口插错的问题;

5、 考虑到S7706S9306的配置完全相同,且前面做过测试将S7706S12708设备的新部署互联链路shutdown以后告警解除,猜测为OSPF配置相同导致的,核心S12708一会儿与S7706建立OSPF邻居关系一会儿又收到相同的router-idS9306发来的邻居hello信息便断开S7706的邻居转而和S9306建立邻居关系造成;

6、 但是S7706S12708的互联端口都是空配置的,正常情况下是不可能会出现OSPF报文能通过的现象,故查询文档及询问华为研发,确认是否能通过某种方式实现该情况,在文档中看到S12708S7706设备有新的链路状态negotiation-desirablenegotiation-auto默认为negotiation-desirable

7、 negotiation-desirable状态下的端口能够主动的和对端进行自协商,如下:



所以就很好解释了,S7706端口与S12708端口主动自协商成了上,Trunk模式并通过了互联vlan及相关业务vlan造成OSPF报文能够通过该端口透传至S12708上,所以造成了该故障的发生;

根因

 S系列交换机新增了negotiation-desirable端口的链路状态能够自动协商,并放行vlan

解决方案
更改端口类型
建议与总结

该项目中用到了交换机的 negotiation-desirable状态能够自行协商端口,所以在以后进行测试链路时最好把端口的链路状态改成access再进行测试,不然很可能造成相同的情况。

END