Khi thực hiện tóm tắt địa chỉ (summary) với các giao thức định tuyến, ta để ý rằng trên các router thực hiện tóm tắt địa chỉ thường xuất hiên một route tương ứng cho subnet summary và chỉ đường về Null0. Trong bài viết này, chúng ta sẽ cùng tìm hiểu vai trò của route Null0 này.
Sơ đồ
Như thường lệ, chúng ta cùng trao đổi về vấn đề quan tâm thông qua một bài lab ví dụ.

Sơ đồ bài lab gồm hai router mô phỏng một phần của một mạng doanh nghiệp. ∙ Các loopback 0 và 1 trên router R1 được sử dụng để giả lập các mạng LAN kết nối vào R1. Router Host được sử dụng để giả lập một host thuộc mạng LAN 172.16.2.0/24 của R2.
Router biên R2 được thực hiện kết nối đi Internet thông qua cổng S0/0/0. R1 và R2 chạy định tuyến RIPv2 và R2 sẽ thực hiện quảng bá default – route từ nó vào R1 để đảm bảo các địa chỉ bên trong có thể đi được Internet. ∙ Trên sơ đồ lab này, chúng ta sẽ khảo sát vai trò của route Null0.
Thực hiện
Bước 1: Cấu hình ban đầu cho sơ đồ lab
Cấu hình đặt địa chỉ IP trên các cổng của các router R1 và R2 theo quy hoạch IP được chỉ ra trên hình 1.
Câu hình định tuyến RIPv2 giữa R1 và R2 đảm bảo mọi địa chỉ của mạng doanh nghiệp thấy nhau.
R2 thực hiện chỉ default – route lên gateway Internet 100.0.0.1 và quảng bá default – route này vào trong mạng doanh nghiệp.
Cấu hình
Trên R1:
R1(config)#interface f0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 172.16.12.1 255.255.255.252
R1(config-if)#exit
R1(config)#interface loopback 0
R1(config-if)#ip address 172.16.0.1 255.255.255.0
R1(config-if)#exit
R1(config)#interface loopback 1
R1(config-if)#ip address 172.16.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#network 172.16.0.0
R1(config-router)#exit
Trên R2:
R2(config)#interface f0/0
R2(config-if)#no shutdown
R2(config-if)#ip address 172.16.12.2 255.255.255.252
R2(config-if)#exit
R2(config)#interface f0/1
R2(config-if)#ip address 172.16.2.1 255.255.255.0
R2(config-if)#exit
R2(config)#interface s0/0/0
R2(config-if)#ip address 100.0.0.2 255.255.255.252
R2(config-if)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.1
R2(config)#router rip
R2(config-router)#version 2
R2(config-router)#network 172.16.0.0
R2(config-router)#default-information originate
R2(config-router)#exit
Trên router Host:
Host(config)#interface f0/0
Host(config-if)#no shutdown
Host(config-if)#ip address 172.16.2.2 255.255.255.0
Host(config-if)#exit
Host(config)#ip route 0.0.0.0 0.0.0.0 172.16.2.1
Kiểm tra
Chúng ta kiểm tra rằng định tuyến đã hội tụ trên hai router:
R1#show ip route rip
172.16.0.0/16 is variably subnetted, 4 subnets, 3 masks
R 172.16.2.0/24 [120/1] via 172.16.12.2, 00:00:25, FastEthernet0/1
R* 0.0.0.0/0 [120/1] via 172.16.12.2, 00:00:25, FastEthernet0/1
R2#show ip route rip
172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
R 172.16.0.0/24 [120/1] via 172.16.12.1, 00:00:11, FastEthernet0/0
R 172.16.1.0/24 [120/1] via 172.16.12.1, 00:00:11, FastEthernet0/0
Các địa chỉ trong mạng doanh nghiệp đã đi đến được nhau:
R1#ping 172.16.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/40/48 ms
R1#ping 172.16.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 48/86/144 ms
R2#ping 172.16.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/61/108 ms
R2#ping 172.16.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/47/96 ms
Bước 2: Tóm tắt địa chỉ với RIPv2
Thực hiện tóm tắt địa chỉ trên router R1 đảm bảo router R2 sẽ chỉ nhìn thấy một route duy nhất để đi đến cả hai subnet loopback của R1.
Cấu hình
Trên R1:
R1(config)#interface f0/1
R1(config-if)#ip summary-address rip 172.16.0.0 255.255.254.0
R1(config-if)#exit
Ghi chú
Giao thức RIP cho phép thực hiện manual summarization trên từng cổng của router. Khi thực hiện thành công summary trên cổng, mọi route được gửi ra khỏi cổng mà là route thành phần của subnet summary sẽ được triệt thoái, chỉ còn route summary được gửi ra khỏi cổng này để đi đến láng giềng.
Nếu bạn đọc đã nắm vững về cách tính toán IP, ta có thể dễ dàng xác định được subnet summary bao trùm hai subnet 172.16.0.0/24 và 172.16.1.0/24 là subnet 172.16.0.0/23. Nếu chưa quen, chúng ta có thể sử dụng phương pháp summary cơ bản như sau: thực hiện đối chiếu từng octet một của các subnet thành phần từ trái sang phải và thực hiện phân tích nhị phân octet khác nhau đầu tiên. Trong ví dụ của chúng ta, octet khác nhau đầu tiên của hai địa chỉ mạng thành phần là octet thứ 3, do đó ta phân tích nhị phân octet này:
172.16.|00000000|.0/24
172.16.|00000001|.0/24
Ta thấy rằng các địa chỉ mạng này ngoài hai octet đầu, còn giống nhau thêm 7 bit của octet thứ 3. Vậy, địa chỉ subnet bao trùm cả 2 subnet này sẽ gồm có hai octet đầu là octet 172 và 16, cộng thêm 6 bit giống nhau của octet thứ 3: 172.16.0.0/23. Subnet – mask tương ứng với giá trị prefix – length 23 là 255.255.254.0, do đó ta có câu lệnh summary trên cổng F0/1 của R1 là:
R1(config-if)#ip summary-address rip 172.16.0.0 255.255.254.0
Kiểm tra
Ta kiểm tra rằng router R2 chỉ còn thấy route summary cho hai route thành phần chỉ đến các subnet loopback của R1:
R2#show ip route rip
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
R 172.16.0.0/23 [120/1] via 172.16.12.1, 00:00:19, FastEthernet0/0
Lưu ý rằng, do hoạt động của các timer của RIP, nên phải mất một khoảng thời gian (dưới 4 phút), các route thành phần cũ mới được gỡ khỏi bảng định tuyến của R2.
Ta thấy, nếu summary được thực hiện hợp lý, kích thước bảng định tuyến của các router sẽ giảm đi rất nhiều.
Bước 3: Vai trò của route Null0
Shutdown interface loopback 0 của R1.
Thực hiện traceroute từ router Host để quan sát hiện tượng loop của các gói tin. ∙ Cấu hình một static route summary chỉ đến Null0 để giải quyết vấn đề này.
Thực hiện
Trong bước này, chúng ta sẽ cùng thực hiện một vài thao tác test để thấy rõ vai trò của route Null0. Đầu tiên, chúng ta thực hiện shutdown interface loopback 0 của R1:
R1(config)#interface loopback 0
R1(config-if)#shutdown
R1(config-if)#exit
R1(config)#
*Mar 1 00:28:57.975: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar 1 00:28:58.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
Vì loopback 1 vẫn còn tồn tại nên route summary vẫn được quảng bá bình thường từ R1 đến R2, R2 không hay biết gì về sự cố shutdown vừa thực hiện trên R1:
R2#show ip route rip
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
R 172.16.0.0/23 [120/1] via 172.16.12.1, 00:00:17, FastEthernet0/0
Do đó nếu R2 nhận được lưu lượng cần đi đến loopback 0 của R1, R2 sẽ vẫn đẩy lưu lượng này về phía R1 theo thông tin trong bảng định tuyến của mình. Khi R1 nhận đươc lưu lượng này, nó forward lưu lượng này theo default – route để đi đến R2 vì default – route là route duy nhất trong bảng định tuyến của R1 mà match với đích đến của lưu lượng. R2 khi nhận đươc lại lưu lượng này lại theo bảng định tuyến mà chuyển về cho R1,… Và như vậy loop đã xảy ra.
Ta quan sát hiện tượng này bằng cách sử dụng traceroute từ Host đến loopback 0 của R1:
Host#traceroute 172.16.0.1
Type escape sequence to abort.
Tracing the route to 172.16.0.1
1 172.16.2.1 44 msec 56 msec 48 msec
2 172.16.12.1 104 msec 60 msec 64 msec
3 172.16.12.2 52 msec 72 msec 56 msec
4 172.16.12.1 76 msec 132 msec 120 msec
5 172.16.12.2 152 msec 184 msec 192 msec
6 172.16.12.1 204 msec 168 msec 136 msec
Kết quả traceroute cho thấy gói tin bị loop qua lại giữa R1 và R2.
Để khắc phục hiện tượng này, chúng ta cần phải không để R1 sử dụng default – route để chuyển đi gói tin đi đến loopback 0 nữa. Ta thực hiện cấu hình một static route cho subnet summary chỉ đến Null0. Null0 là một interface luận lý trên router, mọi gói tin đẩy đến Null0 sẽ bị router drop bỏ.
R1(config)#ip route 172.16.0.0 255.255.254.0 null0
R1#show ip route static
172.16.0.0/16 is variably subnetted, 4 subnets, 3 masks
S 172.16.0.0/23 is directly connected, Null0
Với route mới tạo ra này, ta đã khắc phục được hiện tượng loop vừa rồi. Thật vậy, xét lại trường hợp R2 nhận được lưu lượng đi đến loopback 0 của R1, R2 sẽ theo route summary mà đẩy lưu lượng này về R1. Khi R1 nhận được lưu lượng này, R1 sẽ tra bảng định tuyến để tìm ra đường đi tương ứng cho lưu lượng. Lần này, bên cạnh default – route, R1 còn có thêm một route match với đích đến của gói tin là static route ta mới cấu hình ở trên. Vì default – route có độ ưu tiên kém nhất và luôn được sử dụng sau cùng khi mà không còn route nào thỏa mãn đích đến của gói tin, static route null0 sẽ được sử dụng và gói tin đi đến loopback 0 của R1 lần này sẽ bị đẩy đến null0 rồi bị drop và không còn xảy ra loop nữa.
Ta thử lại hoạt động traceroute vừa rồi:
Host#traceroute 172.16.0.1
Type escape sequence to abort.
Tracing the route to 172.16.0.1
1 172.16.2.1 80 msec 44 msec 48 msec
2 172.16.12.1 120 msec 88 msec 124 msec
3 172.16.12.1 !H * !H
Kết quả của lệnh traceroute cho thấy loop không còn xảy ra.
Như vậy ta thấy vai trò của route Null0 được tạo thêm trên router thực hiện summary này là ngăn chặn loop xảy ra khi một trong các route thành phần của route summary không còn trong bảng định tuyến của router summary nữa.
Với giao thức định tuyến RIP, chúng ta phải tự tay cấu hình route Null0 như đã thực hiện ở trên.
Với các giao thức OSPF và EIGRP, chúng ta không cần phải cấu hình tay route null0. Mỗi khi chúng ta thực hiện summary với OSPF và EIGRP, tiến trình định tuyến của các giao thức này sẽ tự động phát sinh ra route Null0 tương ứng cho subnet summary.
Cảm ơn các bạn!
Hẹn gặp lại các bạn trong các bài viết tiếp theo!