Khắc phục sự cố liên quan đến OSPF Adjacency – Phần 2

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      0 
thuongndh@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 traceoptionsmonitor 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)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 detailInterface     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)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

Leave a Reply

Your email address will not be published. Required fields are marked *