Trong phần này, chúng ta sẽ thảo luận một số nguyên nhân ảnh hưởng đến việc thiết lập quan hệ lân cận (adjacency) OSPF giữa hai thiết bị ngang hàng (peers), và cách xử lý sự cố này trong hệ điều hành Junos của Juniper.
Trước tiên, chúng ta sẽ liệt kê các nguyên nhân có thể dẫn đến sự cố adjacency trong OSPF, và sau đó sẽ bàn chi tiết hơn tiếp theo.
1. Các nguyên nhân có thể gây ra sự cố OSPF adjacency:
– Trùng ID router (Router ID).
– Subnet mask không khớp hoặc địa chỉ IP sai.
– Không khớp xác thực (authentication).
– 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.
– Giá trị hello interval và dead interval không khớp.
– Cấu hình MTU không khớp.
2. Cách xử lý sự cố adjacency:
Có một số lệnh cơ bản để kiểm tra và tìm ra nguyên nhân sự cố mà bạn đang gặp phải, bao gồm:
show ospf neighbors
show ospf interface
show ospf interface detail
show configuration protocols ospf
Ngoài các lệnh giám sát và quản trị (A/M commands), nếu không có lý do rõ ràng gây ra sự cố adjacency, bạn có thể kiểm tra kỹ hơn hoạt động bên trong của giao thức định tuyến nội bộ (IGP) bằng lệnh:
monitor traffic interface <tên-giao-diện> detail
Ngoài ra, sử dụng traceoptions cũng là một phương pháp hữu ích để xác định chính xác vấn đề gì đang xảy ra với adjacency. Hãy cân nhắc sử dụng các cờ (flag) hello detail và error detail để hỗ trợ việc xử lý sự cố.
Trong mô hình dưới đây, chúng ta có hai router kết nối trực tiếp:
Vấn đề về trùng Router ID (RID)
Trong mạng định tuyến trạng thái liên kết (link-state), điều cực kỳ quan trọng là không có hai router nào sử dụng cùng một giá trị RID, vì những lý do sau:
– RID là một trong những phương thức để xác định xem một LSA (Link-State Advertisement) đã tồn tại trong cơ sở dữ liệu hay chưa. Nếu hai router dùng cùng một RID, cơ sở dữ liệu LSDB có thể không đồng bộ giữa các router.
– Thuật toán Dijkstra sử dụng RID để tính toán đường đi ngắn nhất. Nếu RID bị trùng, một router có thể không xây dựng được một sơ đồ định tuyến không có vòng lặp.
Trên Router1, chúng tôi đã thực hiện các lệnh sau:
thuongndh@Router1> 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
lo0.0 DR 0.0.0.0 163.121.1.1 0.0.0.0 0
thuongndh@Router1> show ospf neighbor
thuongndh@Router1> show interfaces lo0.0
Logical interface lo0.0 (Index 66) (SNMP ifIndex 16)
Flags: SNMP-Traps Encapsulation: Unspecified
Input packets : 12
Output packets: 12
Security: Zone: Null
Protocol inet, MTU: Unlimited
Flags: Sendbcast-pkt-to-re
Addresses, Flags: Is-Default Is-Primary
Local: 163.121.1.1
thuongndh@Router1> show configuration routing-options
router-id 163.121.1.1;
Trên Router 2
thuongndh@Router2> 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
lo0.0 DR 0.0.0.0 163.121.1.1 0.0.0.0 0
thuongndh@Router2> show ospf neighbors
thuongndh@Router2> show interfaces lo0.0
Logical interface lo0.0 (Index 66) (SNMP ifIndex 16)
Flags: SNMP-Traps Encapsulation: Unspecified
Input packets : 0
Output packets: 0
Security: Zone: Null
Protocol inet, MTU: Unlimited
Flags: Sendbcast-pkt-to-re
Addresses, Flags: Is-Default Is-Primary
Local: 163.121.1.2
thuongndh@Router2> show configuration routing-options
router-id 163.121.1.1;
Như bạn thấy, cả hai router đều dùng chung router-id
là 163.121.1.1
, gây ra xung đột.
Chúng tôi đã bật traceoptions
trên Router1 với cờ hello
và error
, và nhận được nhật ký sau:
Apr 29 20:16:16.391667 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0)
Apr 29 20:16:16.391678 Version 2, length 44, ID 163.121.1.1, area 0.0.0.0
Apr 29 20:16:16.391684 checksum 0x0, authtype 0
Apr 29 20:16:16.391690 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128
Apr 29 20:16:16.391696 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0
Apr 29 20:16:16.391702 OSPF packet ignored: our router ID received from 10.100.12.2 on intf ge-0/0/1.112 area 0.0.0.0
Sau khi khắc phục sự cố RID trùng, ta thấy trên Router2:
thuongndh@Router2> 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 1
lo0.0 DR 0.0.0.0 163.121.1.2 0.0.0.0 0
thuongndh@Router2> show ospf neighbor
Address Interface State ID Pri Dead
10.100.12.1 ge-0/0/1.112 Full 163.121.1.1 128 35
thuongndh@Router2>
Mặt nạ mạng không khớp (Mismatched subnet masks)
Mặt nạ mạng sai hoặc địa chỉ IP sai ở giao diện có thể khiến OSPF không thiết lập được. Trong ví dụ này, địa chỉ IP trên Router1 được cấu hình là /24
thay vì /30
. Mặc dù vẫn ping được, nhưng quan hệ OSPF không hình thành. Nhật ký traceoptions
cho biết lý do:
thuongndh@Router1> ping 10.100.12.2 rapid PING 10.100.12.2 (10.100.12.2): 56 data bytes !!!!! — 10.100.12.2 ping statistics — 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.396/0.840/2.211/0.687 ms thuongndh@Router1> show log OSPFLOG Apr 29 20:30:03.878646 OSPF rcvd Hello 10.100.12.2 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0) Apr 29 20:30:03.878668 Version 2, length 44, ID 163.121.1.2, area 0.0.0.0 Apr 29 20:30:03.878674 checksum 0x0, authtype 0 Apr 29 20:30:03.878680 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128 Apr 29 20:30:03.878686 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0 Apr 29 20:30:03.878692 OSPF packet ignored: netmask 255.255.255.252 mismatch from 10.100.12.2 on intf ge-0/0/1.112 area 0.0.0.0
Không khớp xác thực (Authentication mismatches)
Nếu có sự không khớp về xác thực (authentication), quan hệ OSPF sẽ thất bại. Nếu dùng plain-text authentication, có thể kiểm tra mật khẩu bằng lệnh: monitor traffic interface ge-0/0/1.112 detail
monitor traffic interface ge-0/0/1.112 detail Address resolution is ON. Use to avoid any reverse lookup delay. Address resolution timeout is 4s. Listening on ge-0/0/1.112, capture size 1514 bytesReverse lookup for 224.0.0.2 failed (check DNS reachability). Other reverse lookup failures will not be reported. Use to avoid reverse lookups on IP addresses.20:49:56.476501 In IP (tos 0xc0, ttl 1, id 21466, 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 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]
Nếu sử dụng xác thực mã hóa, bạn không thể giải mã khóa và cần cấu hình lại mật khẩu trên cả hai router.
Và chúng ta cũng có thể tìm thấy sự không khớp loại xác thực trong nhật ký traceoptions (Đơn giản/không xác thực) theo O/P bên dưới
Apr 29 20:49:38.784663 OSPF sent Hello 10.100.12.1 -> 224.0.0.5 (ge-0/0/1.112 IFL 71 area 0.0.0.0) Apr 29 20:49:38.784669 Version 2, length 44, ID 163.121.1.1, area 0.0.0.0 Apr 29 20:49:38.784675 mask 255.255.255.252, hello_ivl 10, opts 0x12, prio 128 Apr 29 20:49:38.784681 dead_ivl 40, DR 0.0.0.0, BDR 0.0.0.0 Apr 29 20:49:39.598405 OSPF packet ignored: authentication type mismatch (1) from 10.100.12.2
Ngoài ra, chúng ta có thể tìm thấy cờ xác thực trong lệnh show ospf interface detail O/P như sau trên cả hai bộ định tuyến.
Trên Router 1
thuongndh@Router1> 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: None Protection type: None Topology default (ID 0) -> Cost: 1
Trên Router 2
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 DR 0.0.0.0 163.121.1.2 0.0.0.0 0 Type: LAN, Address: 10.100.12.2, Mask: 255.255.255.252, MTU: 1500, Cost: 1 DR addr: 10.100.12.2, Priority: 128 Adj count: 0 Hello: 10, Dead: 40, ReXmit: 5, Not Stub Auth type: Password Protection type: None Topology default (ID 0) -> Cost: 1