OSPF Alarm for %OSPF-4-FLOOD_WAR
根据下面的logging复习各个知识点
1w0d: OSPF: DR/BDR election on TenGigabitEthernet6/4 1w0d: OSPF: Elect BDR 0.0.0.0 1w0d: OSPF: Elect DR 7.7.7.7 1w0d: DR: 7.7.7.7 (Id) BDR: none 1w0d: OSPF: Rcv DBD from 8.8.8.8 on TenGigabitEthernet6/4 seq 0x2011 opt 0x2 flag 0x2 len 1472 mtu 0 state EXSTART !---定义option的类型,详细参考TCP/IP卷一,这里0x2如下所示 Options: 0x02 (E) 0... .... = DN: DN-bit is NOT set .0.. .... = O: O-bit is NOT set ..0. .... = DC: Demand circuits are NOT supported ...0 .... = L: The packet does NOT contain LLS data block .... 0... = NP: Nssa is NOT supported .... .0.. = MC: NOT multicast capable .... ..1. = E: ExternalRoutingCapability .... ...0 = MT 1w0d: OSPF: NBR Negotiation Done. We are the MASTER 1w0d: OSPF: Send DBD to 8.8.8.8 on TenGigabitEthernet6/4 seq 0x2012 opt 0x52 flag 0x3 len 1452!---定义更新报文中的flag类型,详细参考TCP/IP卷一,这里0x3如下所示 Flags: 0x03 (E) .... .0.. = V: NO Virtual link endpoint .... ..1. = E: AS boundary router .... ...1 = B: NO Area border router!---正确的解释在回复中 1w0d: OSPF: Database request to 8.8.8.8 1w0d: OSPF: sent LS REQ packet to 78.1.1.8, length 204 1w0d: OSPF: Rcv DBD from 8.8.8.8 on TenGigabitEthernet6/4 seq 0x201D opt 0x2 flag 0x2 len 1472 mtu 0 state EXCHANGE 1w0d: OSPF: Send DBD to 8.8.8.8 on TenGigabitEthernet6/4 seq 0x201E opt 0x52 flag 0x3 len 1452 !---这里面的length是除去了20字节的ip header包头 1w0d: OSPF: Rcv DBD from 8.8.8.8 on TenGigabitEthernet6/4 seq 0x201E opt 0x2 flag 0x2 len 1472 mtu 0 state EXCHANGE 1w0d: OSPF: Send DBD to 8.8.8.8 on TenGigabitEthernet6/4 seq 0x201F opt 0x52 flag 0x3 len 1452 ...... Jan 1 06:21:34: %OSPF-4-FLOOD_WAR: Process 99 flushes LSA ID 1.1.1.1 type-2 adv-rtr 8.8.8.8 in area 12 Jan 1 06:23:13: %OSPF-4-FLOOD_WAR: Process 99 flushes LSA ID 1.1.1.1 type-2 adv-rtr 8.8.8.8 in area 12
从信息中能总结出以下几点:
1. 关于opt、flag和len这三个值,会出现在“debug ip ospf ad”中,我在上面已简单总结了
2. 在本例中,7.7.7.7是本地路由器,此处是DR;8.8.8.8是对端路由器,此处是BRD
3. 在本例中,78.1.1.7是本路由器的地址;78.1.1.8是互联设备的地址
4. LSA ID也可以缩写成LSID,这个就是LSA,可在数据库中查看
5. “adv-rtr”就是“Advertising Router” ,从这里可看出此LSID发送于哪个路由器
OSPF-4-FLOOD_WAR
%OSPF-4-FLOOD_WAR: Process 99 flushes LSA ID 1.1.1.1 type-2 adv-rtr 8.8.8.8 in area 12
Refer to bug: CSCsi11438
If router receives a network LSA whose LSA ID is same as IP address on his interface, router should flush such LSA out of the network. Previously we flushed LSA with a sequence number which had LSA in the dbase, which in some cases was not the highest number therefore we could end up in the situation when SQ# in dbase was smaller than in the rest of the area but age was huge. LSA was in stuck on the retransmission list.
With this fix router flushes LSA using highest SQ#, so in the case of duplicate IP addresses a flooding war can be expected (one router originates an LSA, second one fluses it).
This fix also introduces error message to detect a flooding war.
分析
根据上面的官方解释,可以分析出8.8.8.8发送的type2的LSA 1.1.1.1跟7.7.7.7路由器的地址冲突了。检查配置发现确实有一个端口的地址被配置了1.1.1.1并network了,移除此配置后,路由器恢复正常。
那么8.8.8.8的路由器在什么情况下会发送type2的LSA 1.1.1.1呢?
正常情况下,type2的LSA应该是直连的局域网地址,在此例中,8.8.8.8应该发送type2的LSA 78.1.1.8(对于type2的结构可以看我之前的文章,里面有分析,可做参考《CCIE SP-OSPF 小结2-数据库》)。
还有一种情况可以产生其他type2的LSA,如下图所示:
虽然8.8.8.8把type2的1.1.1.1 LSA发送给了另一台设备,但是为了同步数据库,他也会发送给7.7.7.7,这样就会存在此文讨论的问题了。
我居然一个都看不懂,自我反省一下
1w0d: OSPF: Send DBD to 8.8.8.8 on TenGigabitEthernet6/4 seq 0x2012 opt 0x52 flag 0x3 len 1452
!—定义更新报文中的flag类型,详细参考TCP/IP卷一,这里0x3如下所示
Flags: 0x03 (E)
…. .0.. = V: NO Virtual link endpoint
…. ..1. = E: AS boundary router
…. …1 = B: NO Area border router
————————————————————————
你的这个解释不正解,这里的ox3应该是
I M M/S
0 1 1
并且DBD分组中不含:V E B位,V E B应该包含在LSU中
多谢纠正!DBD的Flags确实不是VEB:
Open Shortest Path First
OSPF Header
OSPF DB Description
Interface MTU: 1500
Options: 0x02 (E)
DB Description: 0x07 (I, M, MS)
…. 0… = R: OOBResync bit is NOT set
…. .1.. = I: Init bit is SET
…. ..1. = M: More bit is SET
…. …1 = MS: Master/Slave bit is SET
DD Sequence: 1098361214