[ccna 200-301]
CÁCH THỨC ROUTER CHUYỂN TIẾP GÓI TIN BÊN TRONG.
Có một hiểu lầm rất phổ biến khi học phần định tuyến routing: nhiều bạn nghĩ rằng mỗi khi router nhận được packet, router mới bắt đầu “chạy OSPF, EIGRP” để tìm đường đi. Thực tế không phải vậy. Routing protocol đã làm việc âm thầm từ trước ở phía sau hậu trường. Khi gói tin packet thật sự đi vào router, router chỉ cần tra cứu thông tin đã có sẵn và chuyển tiếp packet càng nhanh càng tốt.
Trong router, chúng ta cần phân biệt rất rõ giữa quá trình học đường đi và quá trình chuyển tiếp packet. Các routing process chạy ở phần điều khiển, còn gọi là control plane. Chúng học route từ connected network, static route hoặc các dynamic routing protocol như RIPv2, EIGRP, OSPF, IS-IS. Sau khi học được nhiều đường đi, router chọn route tốt nhất để đưa vào routing table. Nếu cùng một destination prefix được học từ nhiều nguồn khác nhau, router sẽ ưu tiên nguồn có administrative distance thấp hơn.
Bảng Routing table là nơi router lưu các route tốt nhất mà router đã chọn. Route trong routing table được quyết định dựa trên administrative distance và metric từ routing process. Có thể hiểu routing table giống như “bản đồ chính thức” mà router dùng để biết muốn đi đến một mạng nào đó thì nên đi qua next-hop nào hoặc outgoing interface nào.
Khi packet thật sự đi vào router, forwarding process ở data plane sẽ làm việc. Data plane còn gọi là chức năng dữ liệu. Router nhìn vào địa chỉ IP đích của gói tin IP, tìm các entry phù hợp trong routing table hoặc FIB, sau đó chọn route bằng nguyên tắc longest prefix match. Longest prefix match nghĩa là route nào cụ thể hơn thì được ưu tiên hơn. Ví dụ, nếu router có route 10.1.0.0/16 và route 10.1.2.77/32, packet đi đến 10.1.2.77 sẽ chọn /32 vì đây là host route, cụ thể hơn rất nhiều so với /16.
Thứ tự tư duy (thuật toán) khi router chọn đường đi rất quan trọng. Trước tiên, longest prefix match luôn thắng. Route cụ thể nhất sẽ được chọn trước. Nếu các route có cùng prefix length cho cùng một destination prefix, lúc đó router mới xét đến administrative distance. Administrative distance thấp hơn sẽ được ưu tiên. Đây là điểm nhiều bạn dễ nhầm: AD không thắng longest prefix match. Một route /32 có AD cao hơn vẫn có thể được chọn thay vì route /16 có AD thấp hơn, vì /32 cụ thể hơn.
Administrative distance có thể được thay đổi thủ công trong nhiều trường hợp, ví dụ khi muốn static route làm backup cho dynamic route. Tuy nhiên, directly connected route có administrative distance là 0 và không thể thay đổi. Điều này hợp lý vì mạng connected là mạng nằm trực tiếp trên interface của router, router không cần học từ ai khác.
Xét ví dụ routing table trên R1:
R1 có connected route 192.168.1.0/24 qua GigabitEthernet0/0. R1 có static route đến 192.168.2.0/24 qua 192.168.1.2. R1 cũng học route 10.0.0.0/8 từ EIGRP với AD 90, route 10.1.0.0/16 từ OSPF với AD 110, và một static host route 10.1.2.77/32 qua 192.168.1.4. Ngoài ra, R1 có default route 0.0.0.0/0 qua 192.168.1.1.
Nếu packet đi đến 10.1.5.8, router sẽ so khớp được với 10.0.0.0/8 và 10.1.0.0/16. Route /16 cụ thể hơn /8, nên R1 chọn OSPF route 10.1.0.0/16 qua 192.168.1.3, dù OSPF có AD 110 cao hơn EIGRP AD 90. Đây là ví dụ rất hay để nhớ rằng longest prefix match được xét trước administrative distance.
Nếu packet đi đến 10.1.2.77, router sẽ thấy địa chỉ này match với 10.0.0.0/8, 10.1.0.0/16 và 10.1.2.77/32. Route /32 là cụ thể nhất, nên R1 chọn static route 10.1.2.77/32 qua 192.168.1.4.
Nếu static route 10.1.2.77/32 bị xóa, router sẽ không còn host route cụ thể nhất nữa. Khi đó packet đi đến 10.1.2.77 vẫn match với 10.1.0.0/16 và 10.0.0.0/8. Route 10.1.0.0/16 cụ thể hơn, nên OSPF route qua 192.168.1.3 sẽ được sử dụng.
Tóm lại, khi troubleshooting routing, chúng ta đừng chỉ nhìn vào AD rồi kết luận route nào sẽ được chọn. Hãy hỏi câu đầu tiên: “Destination IP này match với những prefix nào trong bảng định tuyến, và prefix nào dài nhất?”. Sau khi xác định được các route có cùng mức độ cụ thể, lúc đó mới xét tiếp administrative distance và metric.
Nắm chắc nguyên tắc này, bạn sẽ đọc routing table nhanh hơn, debug routing chính xác hơn và thiết kế đường đi trong mạng multi-path tự tin hơn rất nhiều. Cám ơn các bạn đã đọc.
CÁCH THỨC ROUTER CHUYỂN TIẾP GÓI TIN BÊN TRONG.
Có một hiểu lầm rất phổ biến khi học phần định tuyến routing: nhiều bạn nghĩ rằng mỗi khi router nhận được packet, router mới bắt đầu “chạy OSPF, EIGRP” để tìm đường đi. Thực tế không phải vậy. Routing protocol đã làm việc âm thầm từ trước ở phía sau hậu trường. Khi gói tin packet thật sự đi vào router, router chỉ cần tra cứu thông tin đã có sẵn và chuyển tiếp packet càng nhanh càng tốt.
Trong router, chúng ta cần phân biệt rất rõ giữa quá trình học đường đi và quá trình chuyển tiếp packet. Các routing process chạy ở phần điều khiển, còn gọi là control plane. Chúng học route từ connected network, static route hoặc các dynamic routing protocol như RIPv2, EIGRP, OSPF, IS-IS. Sau khi học được nhiều đường đi, router chọn route tốt nhất để đưa vào routing table. Nếu cùng một destination prefix được học từ nhiều nguồn khác nhau, router sẽ ưu tiên nguồn có administrative distance thấp hơn.
Bảng Routing table là nơi router lưu các route tốt nhất mà router đã chọn. Route trong routing table được quyết định dựa trên administrative distance và metric từ routing process. Có thể hiểu routing table giống như “bản đồ chính thức” mà router dùng để biết muốn đi đến một mạng nào đó thì nên đi qua next-hop nào hoặc outgoing interface nào.
Khi packet thật sự đi vào router, forwarding process ở data plane sẽ làm việc. Data plane còn gọi là chức năng dữ liệu. Router nhìn vào địa chỉ IP đích của gói tin IP, tìm các entry phù hợp trong routing table hoặc FIB, sau đó chọn route bằng nguyên tắc longest prefix match. Longest prefix match nghĩa là route nào cụ thể hơn thì được ưu tiên hơn. Ví dụ, nếu router có route 10.1.0.0/16 và route 10.1.2.77/32, packet đi đến 10.1.2.77 sẽ chọn /32 vì đây là host route, cụ thể hơn rất nhiều so với /16.
Thứ tự tư duy (thuật toán) khi router chọn đường đi rất quan trọng. Trước tiên, longest prefix match luôn thắng. Route cụ thể nhất sẽ được chọn trước. Nếu các route có cùng prefix length cho cùng một destination prefix, lúc đó router mới xét đến administrative distance. Administrative distance thấp hơn sẽ được ưu tiên. Đây là điểm nhiều bạn dễ nhầm: AD không thắng longest prefix match. Một route /32 có AD cao hơn vẫn có thể được chọn thay vì route /16 có AD thấp hơn, vì /32 cụ thể hơn.
Administrative distance có thể được thay đổi thủ công trong nhiều trường hợp, ví dụ khi muốn static route làm backup cho dynamic route. Tuy nhiên, directly connected route có administrative distance là 0 và không thể thay đổi. Điều này hợp lý vì mạng connected là mạng nằm trực tiếp trên interface của router, router không cần học từ ai khác.
Xét ví dụ routing table trên R1:
R1 có connected route 192.168.1.0/24 qua GigabitEthernet0/0. R1 có static route đến 192.168.2.0/24 qua 192.168.1.2. R1 cũng học route 10.0.0.0/8 từ EIGRP với AD 90, route 10.1.0.0/16 từ OSPF với AD 110, và một static host route 10.1.2.77/32 qua 192.168.1.4. Ngoài ra, R1 có default route 0.0.0.0/0 qua 192.168.1.1.
Nếu packet đi đến 10.1.5.8, router sẽ so khớp được với 10.0.0.0/8 và 10.1.0.0/16. Route /16 cụ thể hơn /8, nên R1 chọn OSPF route 10.1.0.0/16 qua 192.168.1.3, dù OSPF có AD 110 cao hơn EIGRP AD 90. Đây là ví dụ rất hay để nhớ rằng longest prefix match được xét trước administrative distance.
Nếu packet đi đến 10.1.2.77, router sẽ thấy địa chỉ này match với 10.0.0.0/8, 10.1.0.0/16 và 10.1.2.77/32. Route /32 là cụ thể nhất, nên R1 chọn static route 10.1.2.77/32 qua 192.168.1.4.
Nếu static route 10.1.2.77/32 bị xóa, router sẽ không còn host route cụ thể nhất nữa. Khi đó packet đi đến 10.1.2.77 vẫn match với 10.1.0.0/16 và 10.0.0.0/8. Route 10.1.0.0/16 cụ thể hơn, nên OSPF route qua 192.168.1.3 sẽ được sử dụng.
Tóm lại, khi troubleshooting routing, chúng ta đừng chỉ nhìn vào AD rồi kết luận route nào sẽ được chọn. Hãy hỏi câu đầu tiên: “Destination IP này match với những prefix nào trong bảng định tuyến, và prefix nào dài nhất?”. Sau khi xác định được các route có cùng mức độ cụ thể, lúc đó mới xét tiếp administrative distance và metric.
Nắm chắc nguyên tắc này, bạn sẽ đọc routing table nhanh hơn, debug routing chính xác hơn và thiết kế đường đi trong mạng multi-path tự tin hơn rất nhiều. Cám ơn các bạn đã đọc.