OSPF Không Lên Neighbor? Đây Là Những Nguyên Nhân Kỹ Sư Mạng Gặp Nhiều Nhất
Khi OSPF không học được route, rất nhiều kỹ sư mạng có xu hướng kiểm tra bảng định tuyến trước. Tuy nhiên, trong phần lớn trường hợp, vấn đề thực sự nằm ở quan hệ láng giềng (neighbor adjacency). Nếu neighbor không hình thành, LSDB không thể đồng bộ và các route OSPF sẽ không bao giờ xuất hiện trong bảng định tuyến.
OSPF hoạt động như thế nào?
OSPF thiết lập quan hệ neighbor bằng cách gửi các gói Hello Packet trên các interface tham gia tiến trình OSPF. Có hai cách phổ biến để kích hoạt OSPFv2 trên một interface:
Cách 1: Cấu hình trong chế độ OSPF Process
router ospf 1
network 10.1.1.0 0.0.0.255 area 0
Lệnh trên kích hoạt OSPF trên tất cả các interface có địa chỉ IP thuộc dải 10.1.1.0/24 và đưa chúng vào Area 0.
Cách 2: Cấu hình trực tiếp trên Interface
interface GigabitEthernet1/0
ip ospf 1 area 51
Lệnh này kích hoạt OSPF Process 1 trực tiếp trên interface và đưa interface vào Area 51.
Đây là điểm rất dễ gây nhầm lẫn khi troubleshooting. Nhiều kỹ sư chỉ kiểm tra lệnh network trong tiến trình OSPF và kết luận OSPF chưa được bật trên interface. Thực tế interface có thể đã được kích hoạt OSPF bằng lệnh ip ospf process-id area area-id. Vì vậy khi xử lý sự cố OSPF, luôn kiểm tra cả hai vị trí cấu hình.
Tại sao OSPF cần Neighbor Adjacency?
OSPF là giao thức định tuyến trạng thái liên kết (Link-State Routing Protocol). Mọi router trong cùng một Area phải sở hữu một bản sao Link-State Database (LSDB) giống hệt nhau. Để làm được điều đó:
Kiểm Tra Neighbor OSPF
Lệnh cơ bản nhất:
show ip ospf neighbor
Ví dụ:
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.1.23.2 1 FULL/BDR 00:00:37 10.1.12.2 GigabitEthernet1/0
Ý nghĩa các trường:
%OSPF-5-ADJCHG: Process 1, Nbr 10.1.23.2 on GigabitEthernet1/0 from LOADING to FULL, Loading Done
Trạng thái FULL là dấu hiệu cho thấy hai router đã đồng bộ LSDB thành công.
Các Nguyên Nhân Khiến OSPF Không Lên Neighbor
1. Interface Down
Điều kiện đầu tiên là interface phải ở trạng thái up/up. Lệnh để kiểm tra:
show ip interface brief
Nếu interface bị shutdown hoặc lỗi vật lý thì OSPF không thể gửi Hello Packet.
2. Interface Không Chạy OSPF
Nếu interface chưa được kích hoạt OSPF thì nó sẽ không gửi Hello Packet. Kiểm tra:
show ip ospf interface brief
Hoặc:
show running-config
3. Hello Timer và Dead Timer Không Khớp
Hai router phải sử dụng cùng giá trị:
Router A
Hello 10
Dead 40
Router B
Hello 5
Dead 20
=> Neighbor sẽ không hình thành.
Lệnh được dùng để kiểm tra:
show ip ospf interface
4. Mismatch Area Number
Hai đầu kết nối phải thuộc cùng một Area.
Ví dụ:
Router A
area 0
Router B
area 1
=> Không thể trở thành Neighbor.
5. Mismatch Area Type
OSPF hỗ trợ nhiều loại Area:
Ví dụ:
Router A:
area 10 stub
Router B:
area 10 nssa
=> Adjacency sẽ thất bại.
6. Khác Subnet
Hai router phải nằm trong cùng subnet. Ví dụ:
Router A:
10.1.12.1/24
Router B:
10.1.13.2/24
=> Không thể tạo Neighbor.
Lệnh dùng để kiểm tra:
show ip interface brief
7. Passive Interface
Khi bật Passive Interface:
passive-interface GigabitEthernet1/0
Router vẫn quảng bá mạng vào OSPF nhưng sẽ không gửi hoặc nhận Hello Packet. Kết quả là Network vẫn xuất hiện trong cấu hình OSPF nhưng quan hệ láng giềng neighbor không hình thành.
Đây là lỗi cấu hình khá phổ biến trong môi trường doanh nghiệp.
8. Authentication Không Khớp
Nếu sử dụng xác thực OSPF Plain Text Authentication, MD5 Authentication thì cả hai đầu phải sử dụng cùng thông tin cấu hình.
Ví dụ:
Router A:
ip ospf message-digest-key 1 md5 Cisco123
Router B:
ip ospf message-digest-key 1 md5 Cisco456
=> Neighbor sẽ không lên.
9. ACL Chặn OSPF
OSPF sử dụng multicast:
224.0.0.5 (All OSPF Routers)
224.0.0.6 (All DR Routers)
Nếu ACL chặn các gói multicast này:
deny ip any 224.0.0.5
=> Hello Packet không đến được láng giềng.
10. MTU Mismatch
MTU hai đầu phải giống nhau. Ví dụ:
Router A:
MTU 1500
Router B:
MTU 9000
Khi đó neighbor có thể dừng ở trạng thái:
EXSTART
EXCHANGE
và không bao giờ lên FULL.
Kiểm tra:
show interface
show ip ospf interface
Đây là lỗi rất thường gặp trong môi trường Data Center.
11. Duplicate Router ID
Mỗi OSPF Router phải có Router ID duy nhất.
Ví dụ:
R1 = 1.1.1.1
R2 = 1.1.1.1
=> OSPF sẽ phát sinh lỗi và adjacency có thể không ổn định.
Kiểm tra:
show ip ospf
12. Mismatch Network Type
OSPF hỗ trợ nhiều Network Type:
Ví dụ:
Router A:
ip ospf network broadcast
Router B:
ip ospf network point-to-point
Tùy tình huống, adjacency có thể gặp sự cố hoặc hoạt động không đúng mong đợi.
Kinh Nghiệm Thực Chiến
Khi OSPF không lên Neighbor, hãy kiểm tra theo thứ tự sau:
Khi OSPF không học được route, rất nhiều kỹ sư mạng có xu hướng kiểm tra bảng định tuyến trước. Tuy nhiên, trong phần lớn trường hợp, vấn đề thực sự nằm ở quan hệ láng giềng (neighbor adjacency). Nếu neighbor không hình thành, LSDB không thể đồng bộ và các route OSPF sẽ không bao giờ xuất hiện trong bảng định tuyến.
OSPF hoạt động như thế nào?
OSPF thiết lập quan hệ neighbor bằng cách gửi các gói Hello Packet trên các interface tham gia tiến trình OSPF. Có hai cách phổ biến để kích hoạt OSPFv2 trên một interface:
Cách 1: Cấu hình trong chế độ OSPF Process
router ospf 1
network 10.1.1.0 0.0.0.255 area 0
Lệnh trên kích hoạt OSPF trên tất cả các interface có địa chỉ IP thuộc dải 10.1.1.0/24 và đưa chúng vào Area 0.
Cách 2: Cấu hình trực tiếp trên Interface
interface GigabitEthernet1/0
ip ospf 1 area 51
Lệnh này kích hoạt OSPF Process 1 trực tiếp trên interface và đưa interface vào Area 51.
Đây là điểm rất dễ gây nhầm lẫn khi troubleshooting. Nhiều kỹ sư chỉ kiểm tra lệnh network trong tiến trình OSPF và kết luận OSPF chưa được bật trên interface. Thực tế interface có thể đã được kích hoạt OSPF bằng lệnh ip ospf process-id area area-id. Vì vậy khi xử lý sự cố OSPF, luôn kiểm tra cả hai vị trí cấu hình.Tại sao OSPF cần Neighbor Adjacency?
OSPF là giao thức định tuyến trạng thái liên kết (Link-State Routing Protocol). Mọi router trong cùng một Area phải sở hữu một bản sao Link-State Database (LSDB) giống hệt nhau. Để làm được điều đó:
- Router tạo các LSA (Link-State Advertisement)
- Flood LSA đến toàn bộ Area
- Mọi router xây dựng cơ sở dữ liệu trạng thái kết nối LSDB giống nhau
- Từng router sẽ chạy thuật toán SPF (Dijkstra)
- Sau đó Router tính toán đường đi tối ưu
Kiểm Tra Neighbor OSPF
Lệnh cơ bản nhất:
show ip ospf neighbor
Ví dụ:
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.1.23.2 1 FULL/BDR 00:00:37 10.1.12.2 GigabitEthernet1/0
Ý nghĩa các trường:
- Neighbor ID: Router ID (RID) của láng giềng
- Pri: Priority dùng trong bầu chọn DR/BDR
- State: Trạng thái Neighbor
- Dead Time: Thời gian còn lại trước khi xem neighbor bị mất kết nối
- Address: Địa chỉ IP của neighbor
- Interface: Interface cục bộ dùng để kết nối tới neighbor
%OSPF-5-ADJCHG: Process 1, Nbr 10.1.23.2 on GigabitEthernet1/0 from LOADING to FULL, Loading Done
Trạng thái FULL là dấu hiệu cho thấy hai router đã đồng bộ LSDB thành công.
Các Nguyên Nhân Khiến OSPF Không Lên Neighbor
1. Interface Down
Điều kiện đầu tiên là interface phải ở trạng thái up/up. Lệnh để kiểm tra:
show ip interface brief
Nếu interface bị shutdown hoặc lỗi vật lý thì OSPF không thể gửi Hello Packet.
2. Interface Không Chạy OSPF
Nếu interface chưa được kích hoạt OSPF thì nó sẽ không gửi Hello Packet. Kiểm tra:
show ip ospf interface brief
Hoặc:
show running-config
3. Hello Timer và Dead Timer Không Khớp
Hai router phải sử dụng cùng giá trị:
- Hello Timer
- Dead Timer
Router A
Hello 10
Dead 40
Router B
Hello 5
Dead 20
=> Neighbor sẽ không hình thành.
Lệnh được dùng để kiểm tra:
show ip ospf interface
4. Mismatch Area Number
Hai đầu kết nối phải thuộc cùng một Area.
Ví dụ:
Router A
area 0
Router B
area 1
=> Không thể trở thành Neighbor.
5. Mismatch Area Type
OSPF hỗ trợ nhiều loại Area:
- Normal Area
- Stub Area
- Totally Stubby Area
- NSSA (Not-So-Stubby Area)
Ví dụ:
Router A:
area 10 stub
Router B:
area 10 nssa
=> Adjacency sẽ thất bại.
6. Khác Subnet
Hai router phải nằm trong cùng subnet. Ví dụ:
Router A:
10.1.12.1/24
Router B:
10.1.13.2/24
=> Không thể tạo Neighbor.
Lệnh dùng để kiểm tra:
show ip interface brief
7. Passive Interface
Khi bật Passive Interface:
passive-interface GigabitEthernet1/0
Router vẫn quảng bá mạng vào OSPF nhưng sẽ không gửi hoặc nhận Hello Packet. Kết quả là Network vẫn xuất hiện trong cấu hình OSPF nhưng quan hệ láng giềng neighbor không hình thành.
Đây là lỗi cấu hình khá phổ biến trong môi trường doanh nghiệp.
8. Authentication Không Khớp
Nếu sử dụng xác thực OSPF Plain Text Authentication, MD5 Authentication thì cả hai đầu phải sử dụng cùng thông tin cấu hình.
Ví dụ:
Router A:
ip ospf message-digest-key 1 md5 Cisco123
Router B:
ip ospf message-digest-key 1 md5 Cisco456
=> Neighbor sẽ không lên.
9. ACL Chặn OSPF
OSPF sử dụng multicast:
224.0.0.5 (All OSPF Routers)
224.0.0.6 (All DR Routers)
Nếu ACL chặn các gói multicast này:
deny ip any 224.0.0.5
=> Hello Packet không đến được láng giềng.
10. MTU Mismatch
MTU hai đầu phải giống nhau. Ví dụ:
Router A:
MTU 1500
Router B:
MTU 9000
Khi đó neighbor có thể dừng ở trạng thái:
EXSTART
EXCHANGE
và không bao giờ lên FULL.
Kiểm tra:
show interface
show ip ospf interface
Đây là lỗi rất thường gặp trong môi trường Data Center.
11. Duplicate Router ID
Mỗi OSPF Router phải có Router ID duy nhất.
Ví dụ:
R1 = 1.1.1.1
R2 = 1.1.1.1
=> OSPF sẽ phát sinh lỗi và adjacency có thể không ổn định.
Kiểm tra:
show ip ospf
12. Mismatch Network Type
OSPF hỗ trợ nhiều Network Type:
- Broadcast
- Non-Broadcast
- Point-to-Point
- Point-to-Multipoint
Ví dụ:
Router A:
ip ospf network broadcast
Router B:
ip ospf network point-to-point
Tùy tình huống, adjacency có thể gặp sự cố hoặc hoạt động không đúng mong đợi.
Kinh Nghiệm Thực Chiến
Khi OSPF không lên Neighbor, hãy kiểm tra theo thứ tự sau:
- Interface có up/up không?
- Interface có chạy OSPF không?
- Có nhận Hello Packet không?
- Area có khớp không?
- Timer có khớp không?
- Authentication có khớp không?
- MTU có giống nhau không?
- Có ACL chặn multicast OSPF không?
- Router ID có bị trùng không?
- Network Type có giống nhau không?