Khắc phục sự cố liên quan đến OSPF Adjacency Phần 1 / Phần 2
Trong bài viết hôm nay, chúng ta sẽ tiếp tục thảo luận về các nguyên nhân có thể dẫn đến sự cố thiết lập quan hệ OSPF (OSPF adjacency), và sẽ tìm hiểu hai nguyên nhân sau:
+ Không khớp giá trị Hello và Dead Interval
+ Không khớp giá trị MTU
Chúng ta sẽ tiếp tục làm việc trên cùng một sơ đồ mạng (topology) như trước.
Không khớp giá trị Hello và Dead Interval
Như chúng ta đã biết, để thiết lập và duy trì quan hệ OSPF, các router phải có giá trị hello
và dead interval
giống nhau. OSPF không đàm phán các giá trị này — nếu không khớp, quan hệ lân cận sẽ bị coi là down (mất kết nối).
thuongndh@Router1# run show log OSPFLOG
Jan 2 00:04:47.362239 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 2 00:04:47.362261 Version 2, length 48, ID 163.121.1.2, area 0.0.0.0
Jan 2 00:04:47.362266 checksum 0x0, authtype 1
Jan 2 00:04:47.362273 mask 255.255.255.252, hello_ivl 7, opts 0x12, prio 128
Jan 2 00:04:47.362279 dead_ivl 21, DR 0.0.0.0, BDR 0.0.0.0
Jan 2 00:04:47.362285 OSPF packet ignored: hello interval mismatch 7 from 10.100.12.2 on intf ge-0/0/1.112 area 0.0.0.0
Và bằng cách kiểm tra kết quả đầu ra của lệnh show ospf interface detail
, chúng ta có thể thấy rằng Router1 đang sử dụng các giá trị mặc định
+ Hello interval: 10 giây
+ Dead interval: 40 giây
→ Điều này cho thấy rõ sự không khớp nếu router bên kia sử dụng các giá trị khác (ví dụ: 7/21 giây), và là nguyên nhân khiến quan hệ OSPF không được thiết lập.
thuongndh@Router1# run show ospf interface ge-0/0/1.112 detail
Interface State Area DR ID BDR ID Nbrs
ge-0/0/1.112 PtToPt 0.0.0.0 0.0.0.0 0.0.0.0 0
Type: P2P, Address: 10.100.12.1, Mask: 255.255.255.252, MTU: 1500, Cost: 1
Adj count: 0
Hello: 10, Dead: 40, ReXmit: 5, Not Stub
Auth type: Password
Protection type: None
Topology default (ID 0) -> Cost: 1
Bằng cách kiểm tra kết quả đầu ra của lệnh monitor traffic interface <interface> detail
, chúng ta có thể thấy rõ các giá trị Hello và Dead interval trong:
-
Các gói tin IN (nhận vào)
-
Các gói tin OUT (gửi ra)
Từ đó, chúng ta có thể đối chiếu và đảm bảo rằng các giá trị này được cấu hình giống nhau trên cả hai router.
00:22:44.059611 In IP (tos 0xc0, ttl 1, id 16613, offset 0, flags [none], proto: OSPF (89), length: 76) 10.100.12.2 > 224.0.0.5: OSPFv2, Hello, length 56 [len 44]
Router-ID 163.121.1.2, Backbone Area, Authentication Type: simple (1)
Simple text password: Jun!p3r
Options [External, LLS]
Hello Timer 7s, Dead Timer 21s, Mask 255.255.255.252, Priority 128
LLS: checksum: 0xfff6, length: 3
Extended Options (1), length: 4
Options: 0x00000001 [LSDB resync]00:22:50.412662 Out IP (tos 0xc0, ttl 1, id 25235, offset 0, flags [none], proto: OSPF (89), length: 76) 10.100.12.1 > 224.0.0.5: OSPFv2, Hello, length 56 [len 44]
Router-ID 163.121.1.1, Backbone Area, Authentication Type: simple (1)
Simple text password: Jun!p3r
Options [External, LLS]
Hello Timer 10s, Dead Timer 40s, Mask 255.255.255.252, Priority 128
LLS: checksum: 0xfff6, length: 3
Extended Options (1), length: 4
Options: 0x00000001 [LSDB resync]
Không khớp giá trị MTU
OSPF rất nhạy cảm với sự không khớp về MTU, và nếu có bất kỳ sự khác biệt nào trong giá trị MTU của family INET, thì quan hệ OSPF sẽ không được thiết lập.
Lưu ý:
+ Nếu không cấu hình MTU logic (logical MTU) cho bất kỳ family giao thức nào (ví dụ: inet
, inet6
), thì:
– MTU của family INET sẽ thấp hơn 14 byte so với MTU vật lý (physical MTU) đã cấu hình.
+ Nếu bạn sử dụng VLAN tagging hoặc inner VLAN tagging, thì:
– MTU sẽ thấp hơn 18 byte hoặc 22 byte so với MTU vật lý tương ứng.
Triệu chứng lỗi:
Khi có sự khác biệt về MTU giữa hai router
+ Router 1 sẽ bị kẹt ở trạng thái ExStart
+ Router 2 sẽ bị kẹt ở trạng thái Exchange
→ Đây là dấu hiệu kinh điển cho lỗi MTU mismatch trong OSPF.
thuongndh@Router1# run show ospf neighbor
Address Interface State ID Pri Dead
10.100.12.1 ge-0/0/1.112 ExStart 163.121.1.1 128 37
thuongndh@Router2# run show ospf neighbor
Address Interface State ID Pri Dead
10.100.12.2 ge-0/0/1.112 Exchange 163.121.1.2 128 36
Bạn có thể phát hiện và xác nhận lỗi này bằng cách dùng các lệnh:
show interfaces <interface-name> detail
show ospf neighbor
monitor traffic interface <interface-name> detail
Bằng cách xem nhật ký traceoptions, chúng ta có thể thấy rằng sự không khớp MTU chính là vấn đề.
thuongndh@Router2# run show log OSPFLOG
Jan 2 00:56:22.289619 OSPF rcvd DbD 10.100.12.1 -> 224.0.0.5 (ge-0/0/1.112 IFL 78 area 0.0.0.0)
Jan 2 00:56:22.289626 Version 2, length 172, ID 163.121.1.1, area 0.0.0.0
Jan 2 00:56:22.289632 checksum 0x0, authtype 1
Jan 2 00:56:22.289638 options 0x52, i 0, m 0, ms 0, r 0, seq 0xa377cd12, mtu 1500
Jan 2 00:56:22.289713 OSPF restart signaling: Received DBD with LLS data from nbr ip=10.100.12.1 id=163.121.1.1.
Jan 2 00:56:22.289719 OSPF packet ignored: MTU mismatch from 10.100.12.1 on intf ge-0/0/1.112 area 0.0.0.0
Jan 2 00:56:23.586559 OSPF rcvd LSUpdate 10.100.12.1 -> 224.0.0.5 (ge-0/0/1.112 IFL 78 area 0.0.0.0)
Jan 2 00:56:23.586568 Version 2, length 112, ID 163.121.1.1, area 0.0.0.0
Jan 2 00:56:23.586574 checksum 0x0, authtype 1
Jan 2 00:56:23.586580 adv count 3
Jan 2 00:56:25.459808 OSPF hello from 163.121.1.1 (IFL 78, area 0.0.0.0) absorbed
Jan 2 00:56:27.091553 OSPF resend last DBD to 10.100.12.1
Jan 2 00:56:27.091607 OSPF sent DbD 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 78 area 0.0.0.0)
Jan 2 00:56:27.091613 Version 2, length 32, ID 163.121.1.2, area 0.0.0.0
Jan 2 00:56:27.091619 options 0x52, i 1, m 1, ms 1, r 0, seq 0xa377cd12, mtu 1482
Jan 2 00:56:27.091656 OSPF restart signaling: Add LLS data for DbD packet on interface ge-0/0/1.112.
Những gì chúng ta có thể nhận thấy từ O/P bên trên là các gói mô tả cơ sở dữ liệu được gửi và nhận với kích thước MTU tương ứng, do đó OSPF đã phát lại tín hiệu do sự không khớp MTU này và sẽ bị kẹt ở trạng thái Exstart/Exchange.
Cuối cùng, chúng ta có thể sử dụng monitor traffic interface detail, tìm kiếm các gói DBD và tôi nghĩ đây là cách nhanh nhất theo tôi để giải quyết vấn đề này.
01:05:42.805146 Out IP (tos 0xc0, ttl 1, id 30892, offset 0, flags [none], proto: OSPF (89), length: 204) 10.100.12.1 > 224.0.0.5: OSPFv2, Database Description, length 184 [len 172]
Router-ID 163.121.1.1, Backbone Area, Authentication Type: simple (1)
Simple text password: Jun!p3r
Options [External, LLS, Opaque], DD Flags [none], MTU: 1500, Sequence: 0xa377cd12
Advertising Router 163.121.1.1, seq 0x80000014, age 21s, length 28
Router LSA (1), LSA-ID: 163.121.1.1
Options: [External, Demand Circuit]
Advertising Router 163.121.1.2, seq 0x80000019, age 87s, length 76
Router LSA (1), LSA-ID: 163.121.1.2
Options: [External, Demand Circuit]01:08:30.249575 In IP (tos 0xc0, ttl 1, id 20471, offset 0, flags [none], proto: OSPF (89), length: 64) 10.100.12.2 > 224.0.0.5: OSPFv2, Database Description, length 44 [len 32]
Router-ID 163.121.1.2, Backbone Area, Authentication Type: simple (1)
Simple text password: Jun!p3r
Options [External, LLS, Opaque], DD Flags [Init, More, Master], MTU: 1482, Sequence: 0xa377cd12
LLS: checksum: 0xfff6, length: 3
Extended Options (1), length: 4
Options: 0x00000001 [LSDB resync]