Trong bài viết trước (Khắc phục sự cố liên quan đến OSPF Adjacency – Phần 1) , chúng ta đã thảo luận về một số lý do có thể dẫn đến vấn đề thiết lập OSPF neighbors, trong bài viết hôm nay, chúng ta sẽ xem xét các lý do dưới đây và sẽ tiếp tục đề cập đến các lý do còn lại trong bài viết tiếp theo trong phần 3.
– Kiểu giao diện (interface type) không khớp.
– OSPF priority được đặt là 0 ở cả hai phía.
– ID vùng (area ID) hoặc loại vùng (area type) không khớp.
Chúng ta sẽ tiếp tục làm việc trên cùng một mô hìng như phần 1
Kiểu giao diện (interface type) không khớp.
Các loại giao diện không khớp nhau có thể gây ra lỗi thiết lập quan hệ OSPF (OSPF adjacency), tuy nhiên một số tổ hợp vẫn có thể hoạt động, và quan hệ OSPF có thể đạt đến trạng thái Full.
Ví dụ:
– Một bên của kết nối OSPF được cấu hình ở chế độ point-to-point (điểm-điểm)
– Bên còn lại được cấu hình ở chế độ point-to-multipoint (điểm-đa điểm),
→ Trong một số trường hợp, vẫn có thể thiết lập quan hệ OSPF thành công.
thuongndh@Router1# show protocols ospf
area 0.0.0.0 {
interface ge-0/0/1.112 {
interface-type p2p;
authentication {
simple-password “$9$uXoJBRcKMXbs4B1X-ws4oz36”; ## SECRET-DATA
}
}
interface lo0.0;
thuongndh@Router2# show protocols ospf
area 0.0.0.0 {
interface lo0.0;
interface ge-0/0/1.112 {
interface-type p2mp;
authentication {
simple-password “$9$ZyDH.QF/0BEDj/tOBEhVwY”; ## SECRET-DATA
}
}
Và chúng ta có thể thấy OSPF đang hoạt động như sau.
thuongndh@Router2# run show ospf neighbor detail
Address Interface State ID Pri Dead
10.100.12.1 ge-0/0/1.112 Full 163.121.1.1 128 36
Area 0.0.0.0, opt 0x52, DR 0.0.0.0, BDR 0.0.0.0
Up 00:02:40, adjacent 00:02:35
Tuy nhiên, nếu một phía của router trong OSPF được cấu hình ở chế độ mặc định là broadcast, trong khi phía còn lại được cấu hình ở chế độ point-to-point hoặc point-to-multipoint, thì quan hệ OSPF sẽ không được thiết lập (sẽ thất bại).
Điều này có thể được kết luận thông qua:
– Kết quả lệnh show ospf interfaces
cho thấy sự không tương thích cấu hình
– Nhật ký từ traceoptions
cho thấy lỗi,
– Kết quả lệnh monitor traffic interface detail
giúp xác định vấn đề.
Ngoài ra, ta cũng có thể nhận thấy trên một trong hai router, quan hệ OSPF bị kẹt ở trạng thái Init, như hiển thị trong kết quả lệnh show ospf neighbor
.
Trên Router 1
thuongndh@Router1# run show ospf interface
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 0thuongndh@Router1> show ospf neighbor
thuongndh@Router1> show log OSPFLOG
Jan 1 20:50:23 Router1 clear-log[1166]: logfile cleared
Jan 1 20:50:24.565357 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 1 20:50:24.565388 Version 2, length 48, ID 163.121.1.2, area 0.0.0.0
Jan 1 20:50:24.565394 checksum 0x0, authtype 1
Jan 1 20:50:24.565400 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128
Jan 1 20:50:24.565406 dead_ivl 40, DR 10.100.12.2, BDR 0.0.0.0
Jan 1 20:50:24.565412 OSPF packet ignored: configuration mismatch from 10.100.12.2 on intf ge-0/0/1.112 area 0.0.0.0
Router 02
thuongndh@Router2> show ospf interface
Interface State Area DR ID BDR ID Nbrs
ge-0/0/1.112 DR 0.0.0.0 163.121.1.2 0.0.0.0 1
thuongndh@Router2> show ospf neighbor
Address Interface State ID Pri Dead
10.100.12.1 ge-0/0/1.112 Init 163.121.1.1 128 36
thuongndh@Router2> monitor traffic detail interface ge-0/0/1.112
20:54:52.997098 Out IP (tos 0xc0, ttl 1, id 4355, offset 0, flags [none], proto: OSPF (89), length: 80) 10.100.12.2 > 224.0.0.5: OSPFv2, Hello, length 60 [len 48]
Router-ID 163.121.1.2, 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
Designated Router 10.100.12.2
Neighbor List:
163.121.1.1
LLS: checksum: 0xfff6, length: 3
Extended Options (1), length: 4
Options: 0x00000001 [LSDB resync]
20:54:58.775551 In IP (tos 0xc0, ttl 1, id 1718, 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]
OSPF priority được đặt là 0 ở cả hai phía
Trong OSPF, mỗi router trên một mạng kiểu broadcast (ví dụ như Ethernet) đều có một giá trị gọi là priority (ưu tiên), được dùng để bầu chọn
– DR (Designated Router) – Router đại diện chín
– BDR (Backup Designated Router) – Router dự phòng
Ý nghĩa của OSPF Priority
– Giá trị priority càng cao, càng ưu tiên được chọn làm DR.
– Giá trị 0 có nghĩa là không tham gia bầu chọn DR/BDR.
Vấn đề: Cả hai router đều có priority = 0
– Không có router nào đủ điều kiện làm DR hoặc BDR
– Do đó, quan hệ OSPF sẽ không được thiết lập, vì không thể có DR để điều phối trao đổi thông tin.
Chúng ta có thể giải quyết vấn đề trên thông qua lệnh show ospf interfaces detail và sử dụng lệnh traceoptions và monitor traffic detail interface.
Nếu giá trị OSPF priority được đặt là 0 trên các giao diện kiểu broadcast, quan hệ OSPF sẽ bị kẹt ở trạng thái 2-Way
Điều này xảy ra vì cả hai router đều tin rằng trên phân đoạn mạng (segment) đang có những router khác có thể đóng vai trò là DR (Designated Router) và BDR (Backup Designated Router).→ Kết quả là không router nào tiến hành xây dựng quan hệ đầy đủ (Full adjacency) với nhau.
thuongndh@Router2# run show ospf neighbor
Address Interface State ID Pri Dead
10.100.12.1 ge-0/0/1.112 2Way 163.121.1.1 0 32
thuongndh@Router2# run show ospf interface detail
Interface State Area DR ID BDR ID Nbrs
ge-0/0/1.112 DRother 0.0.0.0 0.0.0.0 0.0.0.0 1
Type: LAN, Address: 10.100.12.2, Mask: 255.255.255.252, MTU: 1500, Cost: 1
Priority: 0
Adj count: 0
Hello: 10, Dead: 40, ReXmit: 5, Not Stub
Auth type: Password
Protection type: None
Topology default (ID 0) -> Cost: 1
Jan 1 21:34:01.861330 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 1 21:34:01.861334 Version 2, length 48, ID 163.121.1.2, area 0.0.0.0
Jan 1 21:34:01.861339 checksum 0x0, authtype 1
Jan 1 21:34:01.861346 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 0
Jan 1 21:34:01.861351 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Jan 1 21:34:01.861397 RPD_OSPF_NBRUP: OSPF neighbor 10.100.12.2 (realm ospf-v2 ge-0/0/1.112 area 0.0.0.0) state changed from Init to 2Way due to 2WayRcvd (event reason: neighbor detected this router)Jan 1 21:34:01.861562 OSPF sent Hello 10.100.12.1 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 1 21:34:01.861568 Version 2, length 48, ID 163.121.1.1, area 0.0.0.0
Jan 1 21:34:01.861574 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 0
Jan 1 21:34:01.861580 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Không khớp Area ID hoặc không khớp loại Area (Area Type)
+ Area ID không khớp: Hai router nằm cùng một liên kết (interface) nhưng được cấu hình với ID vùng khác nhau (ví dụ: một bên là 0.0.0.0
, bên kia là 0.0.0.1
) thì sẽ không thiết lập được quan hệ OSPF.
+ Loại vùng không khớp (mismatched area types): Cả hai router có thể cùng Area ID, nhưng nếu một bên cấu hình là Stub Area, còn bên kia là Regular Area, thì cũng sẽ không hình thành adjacency.
Không khớp Area ID sẽ khiến quan hệ OSPF không được thiết lập. Để kiểm tra vấn đề này, bạn có thể sử dụng lệnh: show ospf interface Lệnh này sẽ giúp bạn xác minh Area ID đang được cấu hình trên từng giao diện, từ đó dễ dàng phát hiện nếu hai thiết bị ở hai phía đang sử dụng Area ID khác nhau, dẫn đến lỗi không hình thành quan hệ lân cận (adjacency) trong OSPF.
thuongndh@Router2# run show ospf interface ge-0/0/1.112
Interface State Area DR ID BDR ID Nbrs
ge-0/0/1.112 PtToPt 0.0.0.1 0.0.0.0 0.0.0.0 0
thuongndh@Router1# run show ospf interface ge-0/0/1.112
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
Sử dụng traceoptions
Jan 1 21:54:04.694379 OSPF sent Hello 10.100.12.1 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 1 21:54:04.694384 Version 2, length 44, ID 163.121.1.1, area 0.0.0.0
Jan 1 21:54:04.694391 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128
Jan 1 21:54:04.694396 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Jan 1 21:54:11.599084 OSPF packet ignored: area mismatch (0.0.0.1) from 10.100.12.2 on intf ge-0/0/1.112 area 0.0.0.0
Jan 1 21:54:11.599152 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Jan 1 21:54:11.599158 Version 2, length 44, ID 163.121.1.2, area 0.0.0.1
Jan 1 21:54:11.599164 checksum 0x46a6, authtype 1
Jan 1 21:54:11.599170 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128
Jan 1 21:54:11.599176 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Không khớp loại vùng (Stub Flag) cũng có thể ảnh hưởng đến quan hệ OSPF
Trường Options trong gói tin Hello của OSPF sẽ thông báo loại vùng (area type) mà giao diện thuộc về. Nếu hai router cấu hình giao diện trong các loại vùng khác nhau — ví dụ: một bên là stub area, bên kia là normal area — thì các router sẽ không nhận diện nhau là hàng xóm (neighbor) và quan hệ adjacency sẽ không được thiết lập.
Chúng tôi đã thay đổi Area ID từ 0
sang 1
để bật stub flag, cụ thể
+ Router2 được đặt trong area 1 (stub),
+ Router1 được đặt trong area 1 nssa (Not-So-Stubby Area).
Bạn có thể thấy sự khác biệt này khi kiểm tra đầu ra của lệnh show ospf interface detail
thuongndh@Router2# 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.1 0.0.0.0 0.0.0.0 0
Type: P2P, Address: 10.100.12.2, Mask: 255.255.255.252, MTU: 1500, Cost: 1
Adj count: 0
Hello: 10, Dead: 40, ReXmit: 5, Not Stub
Auth type: None
Protection type: None
Topology default (ID 0) -> Cost: 1
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.1 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, Stub NSSA
Auth type: None
Protection type: None
Topology default (ID 0) -> Cost: 1
traceoptions
ali@Router1# run show log OSPFLOG | last 10
Jan 1 22:22:55.285989 OSPF periodic xmit from 10.100.12.1 to 224.0.0.5 (IFL 71 area 0.0.0.1)
Jan 1 22:22:57.548326 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.1)
Jan 1 22:22:57.548440 Version 2, length 44, ID 163.121.1.2, area 0.0.0.1
Jan 1 22:22:57.548446 checksum 0x0, authtype 0
Jan 1 22:22:57.548452 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128
Jan 1 22:22:57.548458 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Jan 1 22:22:57.548464 OSPF packet ignored: area stubness mismatch from 10.100.12.2 on intf ge-0/0/1.112 area
Lệnh monitor traffic detail
cho thấy sự khác biệt về loại vùng OSPF
Trong trường Options của gói tin OSPF Hello, lệnh monitor traffic interface detail
sẽ hiển thị các thông tin cho biết loại vùng mà mỗi router đang tham gia.
Ví dụ:
+ Một bên hiển thị: External, LLS → Tức là router đó thuộc vùng bình thường (Normal Area)
+ Bên còn lại hiển thị: NSSA, LLS → Tức là router đó thuộc vùng NSSA (Not-So-Stubby Area)
Nếu một router nằm trong Stub area, nó sẽ chỉ báo hiệu LLS (Link Local Signaling) mà không có External hay NSSA, như minh họa bên dưới.
→ Điều này dẫn đến không thể thiết lập quan hệ lân cận (adjacency) nếu hai bên thuộc các loại vùng khác nhau.
ali@Router2# run monitor traffic detail interface ge-0/0/1.112
22:24:56.832460 In IP (tos 0xc0, ttl 1, id 12439, 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, Area 0.0.0.1, Authentication Type: none (0)
Options [NSSA, 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]
22:24:57.998158 Out IP (tos 0xc0, ttl 1, id 10319, 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, Area 0.0.0.1, Authentication Type: none (0)
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]
Trong bài viết tiếp theo, chúng ta sẽ tiếp tục hành trình cùng nhau kiểm tra những lý do khác gây ra vấn đề OSPF không thiết lập neighbor với hy vọng có thể hoàn thiện chủ đề này.
Tôi hy vọng điều này có giá trị với các bạn