Câu chuyện CCIE Lab EI tại Brussels: 20 phút trước giờ nghỉ trưa và bài học nhớ đời về OSPF Redistribution
Có một bài học mà tôi vẫn thường chia sẻ với các học viên CCIE Enterprise Infrastructure sau mỗi kỳ thi Lab.
Không phải là EVPN, không phải Segment Routing hay SDA Fabric.
Mà là... Route Redistribution.
Đó là một tình huống xảy ra trong buổi thi CCIE Lab kéo dài 8 giờ tại Brussels. Khi đồng hồ chỉ còn khoảng 20 phút nữa là đến giờ nghỉ trưa (Lunch Time), tôi gặp một bài yêu cầu khá quen thuộc: redistribute EIGRP vào OSPF. Đọc đề xong, tôi nghĩ: "Phần này chắc chỉ mất vài phút."
Nhưng rồi mọi thứ lại không đơn giản như vậy.
Bước đầu tiên: Đừng nhìn vào lệnh redistribute
Đây là sai lầm mà rất nhiều người mắc phải.
Khi route không xuất hiện trong OSPF, phản xạ đầu tiên thường là kiểm tra:
redistribute eigrp 100 subnets
hoặc:
show ip protocols
Nhưng trong Lab CCIE, nếu đi theo hướng này ngay từ đầu, bạn rất dễ mất hàng chục phút.
Điều đầu tiên tôi luôn tự hỏi là:
Đó là quy luật đầu tiên của Redistribution.
Redistribution không lấy route trực tiếp từ EIGRP Topology Table hay OSPF LSDB.
Nó chỉ lấy route từ:
Routing Protocol
│
▼
IP Routing Table
│
▼
Routing Protocol
Nếu route chưa được cài vào IP Routing Table thì Redistribution hoàn toàn không có gì để làm.
Kiểm tra giao thức nguồn trước
Tôi bắt đầu với giao thức nguồn.
Nếu đang redistribute từ EIGRP sang OSPF thì việc đầu tiên là kiểm tra EIGRP đã học route hay chưa.
Ví dụ:
show ip eigrp topology
Nếu là OSPF thì sẽ là:
show ip ospf database
Nếu là RIP:
show ip rip database
Nếu là BGP:
show ip bgp
May mắn là trong bài thi hôm đó, EIGRP đã học đầy đủ các route.
Vậy vấn đề không nằm ở giao thức nguồn.
Route đã vào Routing Table chưa?
Bước tiếp theo:
show ip route
hoặc
show ip route <prefix>
Đây mới là nơi quyết định Redistribution có diễn ra hay không.
Trong bài thi hôm đó, route đã nằm trong Routing Table.
Điều đó đồng nghĩa:
Đến đây tôi mới bắt đầu kiểm tra phần Redistribution.
OSPF có rất nhiều tùy chọn và cũng rất nhiều "cái bẫy"
So với RIP hay EIGRP, OSPF có nhiều tham số hơn trong lệnh redistribute.
Ví dụ:
router ospf 1
redistribute eigrp 100 ?
Cisco IOS sẽ hiển thị:
metric
metric-type
nssa-only
route-map
subnets
tag
Mỗi tham số đều có thể là nguyên nhân khiến Redistribution hoạt động không đúng như mong muốn.
Seed Metric không phải là thủ phạm
Khác với EIGRP và RIP, OSPF đã có Seed Metric mặc định.
Giá trị mặc định là:
20
Điều đó có nghĩa là nếu bạn quên:
metric
thì OSPF vẫn redistribute bình thường.
Đây là khác biệt rất lớn so với EIGRP.
Trong bài Lab hôm đó, metric hoàn toàn không phải nguyên nhân.
Kiểm tra Metric-Type
OSPF hỗ trợ hai loại External Route. Type 2 (E2)
Đây là mặc định.
Ví dụ trong Routing Table:
O E2 10.1.3.0/24
Với E2, mọi router đều giữ nguyên Seed Metric.
Ví dụ Seed Metric bằng 20.
Dù router cách ASBR một hop hay mười hop thì Metric vẫn là 20.
Type 1 (E1)
Nếu cấu hình:
metric-type 1
thì Metric cuối cùng sẽ bằng:
Seed Metric
+
Toàn bộ Cost OSPF đến ASBR
Các router càng xa ASBR thì Cost càng lớn.
Điều này rất quan trọng trong các mạng có nhiều điểm Redistribution.
Cái bẫy thật sự: Thiếu từ khóa subnets
Sau khoảng vài phút kiểm tra, tôi nhìn lại cấu hình và phát hiện đúng một dòng:
redistribute eigrp 100
Thiếu đúng một từ.
subnets
Đây là một lỗi kinh điển.
Trong OSPFv2:
Nếu không có từ khóa:
subnets
OSPF chỉ redistribute các mạng classful.
Ví dụ:
10.0.0.0/8
hoặc
172.16.0.0/16
hoặc
192.168.1.0/24
Trong khi toàn bộ bài Lab đều sử dụng VLSM.
Ví dụ:
10.1.3.0/24
10.1.23.0/24
Những route này sẽ không bao giờ được redistribute nếu thiếu subnets.
Chỉ cần thêm đúng một từ:
redistribute eigrp 100 subnets
toàn bộ bài bắt đầu hoạt động.
Đó là một bài học mà tôi không bao giờ quên.
Kiểm tra bằng show ip protocols
Sau khi sửa cấu hình, tôi luôn xác nhận bằng:
show ip protocols
Kết quả mong muốn là:
Routing Protocol is "ospf 1"
Redistributing External Routes from
eigrp 100, includes subnets
Nếu không thấy dòng:
includes subnets
thì tôi biết mình vẫn còn thiếu cấu hình.
Kiểm tra LSDB
Bước tiếp theo:
show ip ospf database
Nếu Redistribution thành công thì các route sẽ xuất hiện trong:
Type-5 AS External Link States
Ví dụ:
10.1.3.0
10.1.23.0
Nếu là NSSA thì trước tiên chúng sẽ xuất hiện dưới dạng:
Type-7 LSA
sau đó được ABR chuyển đổi thành Type-5 LSA khi quảng bá sang các Area khác.
Kiểm tra trên ASBR
Một lệnh mà tôi gần như luôn sử dụng trong Lab là:
show ip route 10.1.3.0
Tôi muốn nhìn thấy:
Known via "eigrp 100"
Redistributing via eigrp 100, ospf 1
Advertised by ospf 1 subnets
Ba dòng này xác nhận toàn bộ chuỗi xử lý:
Kiểm tra trên router khác
Trên các router không phải ASBR:
show ip route
Tôi mong đợi thấy:
O E2 10.1.3.0/24 [110/20]
Nếu dùng:
metric-type 1
thì route sẽ hiển thị:
O E1
Nếu đi qua NSSA:
O N1
O N2
Nhìn vào ký hiệu trong Routing Table là có thể biết ngay loại External Route đang được sử dụng.
Với OSPFv3 thì sao?
Nếu là IPv6, tôi sẽ dùng:
show ipv6 protocols
Để kiểm tra:
hay không.
Sau đó kiểm tra:
show ipv6 ospf database
Các route redistribute sẽ xuất hiện trong:
Type-5 AS External Link States
Cuối cùng xác nhận trên router khác bằng:
show ipv6 route
với các ký hiệu:
OE2
OE1
ON1
ON2
giống như OSPFv2 nhưng áp dụng cho IPv6.
Một lưu ý rất dễ mất điểm trong Lab
Nếu redistribute từ BGP vào OSPF, EIGRP hoặc RIP, Cisco chỉ redistribute eBGP routes theo mặc định.
Các route học từ iBGP sẽ không được redistribute.
Muốn đưa iBGP vào Redistribution phải cấu hình:
router bgp <ASN>
bgp redistribute-internal
Đây là chi tiết nhỏ nhưng hoàn toàn có thể khiến bạn mất điểm nếu không để ý.
Kết thúc trước giờ nghỉ trưa
Tôi sửa lại cấu hình, kiểm tra lại toàn bộ các bước một lần cuối:
Tất cả hoàn tất trước khi giám thị thông báo nghỉ trưa.
Sau nhiều năm làm việc và hướng dẫn CCIE, tôi nhận ra rằng những bài Redistribution hiếm khi đánh đố bằng cú pháp. Chúng đánh vào tư duy xử lý sự cố. Người mất nhiều thời gian nhất thường là người bắt đầu từ lệnh redistribute. Còn người giải nhanh thường bắt đầu từ câu hỏi rất đơn giản:
Chỉ cần trả lời đúng câu hỏi đó, bạn đã loại bỏ được hơn một nửa các nguyên nhân gây lỗi trong những bài Redistribution của CCIE Lab.
Có một bài học mà tôi vẫn thường chia sẻ với các học viên CCIE Enterprise Infrastructure sau mỗi kỳ thi Lab.
Không phải là EVPN, không phải Segment Routing hay SDA Fabric.
Mà là... Route Redistribution.
Đó là một tình huống xảy ra trong buổi thi CCIE Lab kéo dài 8 giờ tại Brussels. Khi đồng hồ chỉ còn khoảng 20 phút nữa là đến giờ nghỉ trưa (Lunch Time), tôi gặp một bài yêu cầu khá quen thuộc: redistribute EIGRP vào OSPF. Đọc đề xong, tôi nghĩ: "Phần này chắc chỉ mất vài phút."
Nhưng rồi mọi thứ lại không đơn giản như vậy.
Bước đầu tiên: Đừng nhìn vào lệnh redistribute
Đây là sai lầm mà rất nhiều người mắc phải.
Khi route không xuất hiện trong OSPF, phản xạ đầu tiên thường là kiểm tra:
redistribute eigrp 100 subnets
hoặc:
show ip protocols
Nhưng trong Lab CCIE, nếu đi theo hướng này ngay từ đầu, bạn rất dễ mất hàng chục phút.
Điều đầu tiên tôi luôn tự hỏi là:
"Route cần redistribute đã thực sự tồn tại trong Routing Table chưa?"
Đó là quy luật đầu tiên của Redistribution.
Redistribution không lấy route trực tiếp từ EIGRP Topology Table hay OSPF LSDB.
Nó chỉ lấy route từ:
Routing Protocol
│
▼
IP Routing Table
│
▼
Routing Protocol
Nếu route chưa được cài vào IP Routing Table thì Redistribution hoàn toàn không có gì để làm.
Kiểm tra giao thức nguồn trước
Tôi bắt đầu với giao thức nguồn.
Nếu đang redistribute từ EIGRP sang OSPF thì việc đầu tiên là kiểm tra EIGRP đã học route hay chưa.
Ví dụ:
show ip eigrp topology
Nếu là OSPF thì sẽ là:
show ip ospf database
Nếu là RIP:
show ip rip database
Nếu là BGP:
show ip bgp
May mắn là trong bài thi hôm đó, EIGRP đã học đầy đủ các route.
Vậy vấn đề không nằm ở giao thức nguồn.
Route đã vào Routing Table chưa?
Bước tiếp theo:
show ip route
hoặc
show ip route <prefix>
Đây mới là nơi quyết định Redistribution có diễn ra hay không.
Trong bài thi hôm đó, route đã nằm trong Routing Table.
Điều đó đồng nghĩa:
- Neighbor OK.
- EIGRP hoạt động bình thường.
- Administrative Distance không có vấn đề.
- Route Selection cũng không có vấn đề.
Đến đây tôi mới bắt đầu kiểm tra phần Redistribution.
OSPF có rất nhiều tùy chọn và cũng rất nhiều "cái bẫy"
So với RIP hay EIGRP, OSPF có nhiều tham số hơn trong lệnh redistribute.
Ví dụ:
router ospf 1
redistribute eigrp 100 ?
Cisco IOS sẽ hiển thị:
metric
metric-type
nssa-only
route-map
subnets
tag
Mỗi tham số đều có thể là nguyên nhân khiến Redistribution hoạt động không đúng như mong muốn.
Seed Metric không phải là thủ phạm
Khác với EIGRP và RIP, OSPF đã có Seed Metric mặc định.
Giá trị mặc định là:
20
Điều đó có nghĩa là nếu bạn quên:
metric
thì OSPF vẫn redistribute bình thường.
Đây là khác biệt rất lớn so với EIGRP.
Trong bài Lab hôm đó, metric hoàn toàn không phải nguyên nhân.
Kiểm tra Metric-Type
OSPF hỗ trợ hai loại External Route. Type 2 (E2)
Đây là mặc định.
Ví dụ trong Routing Table:
O E2 10.1.3.0/24
Với E2, mọi router đều giữ nguyên Seed Metric.
Ví dụ Seed Metric bằng 20.
Dù router cách ASBR một hop hay mười hop thì Metric vẫn là 20.
Type 1 (E1)
Nếu cấu hình:
metric-type 1
thì Metric cuối cùng sẽ bằng:
Seed Metric
+
Toàn bộ Cost OSPF đến ASBR
Các router càng xa ASBR thì Cost càng lớn.
Điều này rất quan trọng trong các mạng có nhiều điểm Redistribution.
Cái bẫy thật sự: Thiếu từ khóa subnets
Sau khoảng vài phút kiểm tra, tôi nhìn lại cấu hình và phát hiện đúng một dòng:
redistribute eigrp 100
Thiếu đúng một từ.
subnets
Đây là một lỗi kinh điển.
Trong OSPFv2:
Nếu không có từ khóa:
subnets
OSPF chỉ redistribute các mạng classful.
Ví dụ:
10.0.0.0/8
hoặc
172.16.0.0/16
hoặc
192.168.1.0/24
Trong khi toàn bộ bài Lab đều sử dụng VLSM.
Ví dụ:
10.1.3.0/24
10.1.23.0/24
Những route này sẽ không bao giờ được redistribute nếu thiếu subnets.
Chỉ cần thêm đúng một từ:
redistribute eigrp 100 subnets
toàn bộ bài bắt đầu hoạt động.
Đó là một bài học mà tôi không bao giờ quên.
Kiểm tra bằng show ip protocols
Sau khi sửa cấu hình, tôi luôn xác nhận bằng:
show ip protocols
Kết quả mong muốn là:
Routing Protocol is "ospf 1"
Redistributing External Routes from
eigrp 100, includes subnets
Nếu không thấy dòng:
includes subnets
thì tôi biết mình vẫn còn thiếu cấu hình.
Kiểm tra LSDB
Bước tiếp theo:
show ip ospf database
Nếu Redistribution thành công thì các route sẽ xuất hiện trong:
Type-5 AS External Link States
Ví dụ:
10.1.3.0
10.1.23.0
Nếu là NSSA thì trước tiên chúng sẽ xuất hiện dưới dạng:
Type-7 LSA
sau đó được ABR chuyển đổi thành Type-5 LSA khi quảng bá sang các Area khác.
Kiểm tra trên ASBR
Một lệnh mà tôi gần như luôn sử dụng trong Lab là:
show ip route 10.1.3.0
Tôi muốn nhìn thấy:
Known via "eigrp 100"
Redistributing via eigrp 100, ospf 1
Advertised by ospf 1 subnets
Ba dòng này xác nhận toàn bộ chuỗi xử lý:
- Route được học từ EIGRP.
- Route đang được redistribute vào OSPF.
- OSPF quảng bá route với tùy chọn subnets.
Kiểm tra trên router khác
Trên các router không phải ASBR:
show ip route
Tôi mong đợi thấy:
O E2 10.1.3.0/24 [110/20]
Nếu dùng:
metric-type 1
thì route sẽ hiển thị:
O E1
Nếu đi qua NSSA:
O N1
O N2
Nhìn vào ký hiệu trong Routing Table là có thể biết ngay loại External Route đang được sử dụng.
Với OSPFv3 thì sao?
Nếu là IPv6, tôi sẽ dùng:
show ipv6 protocols
Để kiểm tra:
- Giao thức nào đang được redistribute.
- Seed Metric.
- Có sử dụng:
hay không.
Sau đó kiểm tra:
show ipv6 ospf database
Các route redistribute sẽ xuất hiện trong:
Type-5 AS External Link States
Cuối cùng xác nhận trên router khác bằng:
show ipv6 route
với các ký hiệu:
OE2
OE1
ON1
ON2
giống như OSPFv2 nhưng áp dụng cho IPv6.
Một lưu ý rất dễ mất điểm trong Lab
Nếu redistribute từ BGP vào OSPF, EIGRP hoặc RIP, Cisco chỉ redistribute eBGP routes theo mặc định.
Các route học từ iBGP sẽ không được redistribute.
Muốn đưa iBGP vào Redistribution phải cấu hình:
router bgp <ASN>
bgp redistribute-internal
Đây là chi tiết nhỏ nhưng hoàn toàn có thể khiến bạn mất điểm nếu không để ý.
Kết thúc trước giờ nghỉ trưa
Tôi sửa lại cấu hình, kiểm tra lại toàn bộ các bước một lần cuối:
- Giao thức nguồn đã học route.
- Route đã được cài vào IP Routing Table.
- Redistribution đã có subnets.
- show ip protocols xác nhận đang redistribute EIGRP và includes subnets.
- LSDB đã xuất hiện Type-5 LSA.
- Router khác học được route với ký hiệu O E2.
Tất cả hoàn tất trước khi giám thị thông báo nghỉ trưa.
Sau nhiều năm làm việc và hướng dẫn CCIE, tôi nhận ra rằng những bài Redistribution hiếm khi đánh đố bằng cú pháp. Chúng đánh vào tư duy xử lý sự cố. Người mất nhiều thời gian nhất thường là người bắt đầu từ lệnh redistribute. Còn người giải nhanh thường bắt đầu từ câu hỏi rất đơn giản:
"Route này đã thực sự đi vào IP Routing Table chưa?"
Chỉ cần trả lời đúng câu hỏi đó, bạn đã loại bỏ được hơn một nửa các nguyên nhân gây lỗi trong những bài Redistribution của CCIE Lab.