Phần lớn sự cố định tuyến sau tác động không đến từ một dòng lệnh sai cú pháp, mà từ việc hai router không khớp nhau: đầu này khai area 0, đầu kia khai area 10; đầu này chờ peer AS 64512, đầu kia lại đang chạy AS 64513. Từng file cấu hình nhìn riêng đều “đúng”. Vì vậy, muốn kiểm tra cấu hình BGP OSPF cho chắc, phải soát chéo: ghép các router lại thành một mạng rồi đối chiếu từng liên kết, từng phiên. Đây cũng là ý tưởng của các công cụ phân tích cấu hình như Batfish.
Trong bài, địa chỉ IP dùng dải tài liệu (192.0.2.0/24, 198.51.100.0/24), số AS dùng dải private, tên router là ký hiệu như R1, PE-A.
1. Vì sao nên soát từ file cấu hình thay vì vào từng thiết bị
Cách quen thuộc là đăng nhập từng router và chạy lệnh xem trạng thái phiên:
| Hãng | Xem phiên BGP | Xem láng giềng OSPF |
|---|---|---|
| Cisco | show ip bgp summary | show ip ospf neighbor |
| Huawei VRP | display bgp peer | display ospf peer |
| Nokia SR OS | show router bgp summary | show router ospf neighbor |
| Juniper Junos | show bgp summary | show ospf neighbor |
Các lệnh này cho biết phiên đang lên hay xuống, nhưng có ba hạn chế:
- Chỉ thấy khi đã lỗi. Trước giờ tác động, cấu hình mới chưa áp dụng thì chưa có gì để xem. Soát file cấu hình dự kiến giúp bắt lỗi trước khi chạy CR.
- Mỗi lần một thiết bị. Với hàng chục router, đối chiếu đầu A với đầu B bằng mắt rất dễ sót.
- Cần quyền truy cập. Kỹ sư thiết kế, người duyệt CR hay đối tác thường chỉ có file cấu hình, không có quyền vào thiết bị thật.
Lấy file cấu hình của từng hãng thế nào đã có trong bài lệnh xuất cấu hình router, switch theo từng hãng. Nhớ tắt phân trang để file không bị cắt.
2. Nguyên tắc soát chéo: ghép interface thành liên kết
Bước nền của mọi phép soát chéo là dựng lại sơ đồ liên kết từ chính cấu hình: hai interface ở hai router có IP thuộc cùng một subnet (ví dụ 192.0.2.1/30 trên R1 và 192.0.2.2/30 trên R2) được coi là hai đầu của một liên kết. Khi đã có danh sách liên kết, việc kiểm tra trở thành so từng cặp thuộc tính: MTU, OSPF area, có bật OSPF hay không, IP neighbor BGP có trỏ đúng đầu kia không.
Cách ghép này cũng phát hiện luôn lỗi trùng IP: một địa chỉ xuất hiện trên hai thiết bị là dấu hiệu copy cấu hình mẫu mà quên sửa. Nếu cần soát riêng các dải IP thì dùng IP Toolbox để kiểm tra chồng lấn; nếu muốn có sơ đồ vật lý thật thì vẽ từ LLDP/CDP như bài vẽ sơ đồ mạng tự động từ LLDP, CDP.
3. Lỗi OSPF hay gặp: lệch area, lệch MTU, bật một đầu
Ví dụ hai đầu một liên kết trên Cisco IOS:
! R1
interface GigabitEthernet0/0/1
ip address 192.0.2.1 255.255.255.252
mtu 9000
router ospf 1
network 192.0.2.0 0.0.0.3 area 0
! R2
interface GigabitEthernet0/0/1
ip address 192.0.2.2 255.255.255.252
router ospf 1
network 192.0.2.0 0.0.0.3 area 10
Đoạn này có hai lỗi cùng lúc:
- Lệch area: R1 đưa liên kết vào area 0, R2 đưa vào area 10. Hai router không thành láng giềng vì area trong gói Hello không khớp.
- Lệch MTU: R1 đặt
mtu 9000, R2 để mặc định. Với OSPF, MTU khai trong gói DBD khác nhau thường làm láng giềng kẹt ở trạng thái EXSTART/EXCHANGE, không lên FULL. Ngay cả khi giao thức không kiểm tra MTU, lệch MTU vẫn gây rớt gói lớn rất khó đoán.
Lỗi thứ ba hay gặp là chỉ bật OSPF ở một đầu: R1 có lệnh network phủ liên kết nhưng R2 thì không (hoặc cổng bị đặt passive). Lệnh network trên Cisco dùng wildcard mask; nếu chưa chắc cách tính thì xem lại bài wildcard mask là gì, vì gõ sai wildcard là cách phổ biến khiến một cổng lọt ra ngoài OSPF mà không ai để ý.
4. Lỗi BGP hay gặp: sai remote-as, peering một chiều
! R1 (AS 64512)
router bgp 64512
neighbor 198.51.100.2 remote-as 64514
! R2 (AS 64513), interface có IP 198.51.100.2
router bgp 64513
neighbor 198.51.100.1 remote-as 64512
Soát chéo cho thấy ngay các vấn đề mà xem riêng từng file không thấy:
| Lỗi | Dấu hiệu trong cấu hình | Hậu quả |
|---|---|---|
| Sai remote-as | R1 khai remote-as 64514 nhưng router giữ IP 198.51.100.2 có local AS 64513 | Phiên không lên, thiết bị báo peer sai AS |
| Peering một chiều | R1 có neighbor trỏ tới R2 nhưng R2 không có neighbor trỏ lại R1 | Phiên không lên (trừ khi đầu kia cố ý dùng cấu hình nhận peer động) |
| Neighbor không tồn tại | IP neighbor không có trên bất kỳ thiết bị nào trong bộ cấu hình | Gõ sai IP, hoặc thiếu file cấu hình của đầu kia |
Dòng cuối cần đọc có chọn lọc: neighbor là router của nhà mạng khác hay của khách hàng thì đương nhiên không có trong bộ file của mình. Khi đó chỉ cần đánh dấu là “ngoài phạm vi”, không phải lỗi.
5. Lỗi VRF: trùng RD, route-target xuất mà không ai nhập
! PE-A
vrf definition KH-XANH
rd 64512:100
address-family ipv4
route-target export 64512:100
route-target import 64512:100
! PE-B
vrf definition KH-DO
rd 64512:100
address-family ipv4
route-target export 64512:200
route-target import 64512:201
- Trùng route-distinguisher giữa hai VRF khác nhau: KH-XANH và KH-DO dùng chung RD
64512:100. RD là thứ để phân biệt prefix trùng nhau giữa các khách hàng; trùng RD thì khi hai khách dùng cùng dải private, route của họ có thể bị coi là một và chỉ một bên được chọn. - Route-target xuất mà không ai nhập: KH-DO xuất
64512:200nhưng không VRF nào trong mạng nhập RT này, nên route của KH-DO không đi tới đâu. Ngược lại, RT nhập64512:201mà không ai xuất là dấu hiệu gõ nhầm số.
Lưu ý: cùng một VRF dùng chung RD trên nhiều PE là cách làm có chủ ý ở một số mạng; công cụ soát nên báo để người đọc xác nhận, không nên tự kết luận là lỗi.
6. So sánh các cách soát: Batfish, vào thiết bị và công cụ trên trình duyệt
| Cách | Ưu điểm | Hạn chế |
|---|---|---|
| Đăng nhập từng thiết bị | Thấy trạng thái thật đang chạy | Chỉ thấy sau khi áp dụng; chậm với nhiều node; cần quyền truy cập |
| Batfish (mã nguồn mở) | Mô hình hóa sâu, truy vấn được đường đi gói tin | Cần cài đặt (Docker, Python), cần thời gian làm quen |
| Soát Định Tuyến trên trình duyệt | Nạp file là xem; đọc được Cisco, Huawei, Nokia SR OS, Juniper; xuất Excel | Tập trung vào các lỗi khớp cấu hình phổ biến, không mô phỏng đường đi gói tin |
Với nhu cầu hằng ngày như duyệt CR hay rà lại sau ca tác động, cách nhanh nhất thường là soát tĩnh trên file. Quy trình gợi ý:
- Lấy cấu hình dự kiến (hoặc cấu hình hiện tại) của mọi router trong phạm vi, mỗi router một file.
- Nạp cả bộ vào công cụ soát, đọc danh sách lỗi theo liên kết và theo phiên.
- Sửa trong file, soát lại đến khi sạch, rồi mới đưa vào hồ sơ CR theo mẫu CR tác động mạng.
- Sau tác động, so sánh cấu hình trước và sau để chắc chỉ đổi đúng những dòng đã duyệt.
Công cụ Soát Định Tuyến Nhiều Router (BGP / OSPF / VRF) làm đúng các bước trên ngay trên trình duyệt: ghép interface theo subnet thành liên kết, báo lệch MTU, trùng IP, lệch area hoặc OSPF chỉ bật một đầu, sai remote-as, peering một chiều, neighbor không có trên thiết bị nào, trùng RD và route-target không ai nhập, kèm bảng tổng hợp theo thiết bị xuất Excel. Kết hợp với So sánh cấu hình mạng và Vẽ sơ đồ mạng từ LLDP / CDP là đủ bộ rà soát cho một ca tác động.
Câu hỏi thường gặp
Có kiểm tra cấu hình BGP, OSPF được khi không có quyền vào router không?
Được, nếu có file cấu hình của từng router. Công cụ soát tĩnh ghép interface theo subnet thành liên kết rồi đối chiếu area, MTU, remote-as, RD, route-target giữa các thiết bị mà không cần đăng nhập.
Vì sao láng giềng OSPF kẹt ở EXSTART hoặc EXCHANGE?
Nguyên nhân hay gặp nhất là hai đầu khai MTU khác nhau trên liên kết. Kiểm tra lệnh mtu ở cả hai interface và đặt cho bằng nhau.
Trùng route-distinguisher có phải luôn là lỗi?
Không hẳn. Hai VRF khác nhau dùng chung RD là lỗi nên sửa. Cùng một VRF dùng chung RD trên nhiều PE là lựa chọn thiết kế ở một số mạng, cần người vận hành xác nhận.
Soát cấu hình trên trình duyệt có thay được Batfish không?
Với các lỗi khớp cấu hình phổ biến (area, MTU, remote-as, RD, route-target) thì đủ dùng và nhanh hơn vì không cần cài đặt. Nếu cần mô phỏng đường đi gói tin hay chính sách phức tạp, Batfish vẫn mạnh hơn.