Cách tính route filter

Đôi khi bạn phải tính toán các route filter phức tạp, nếu không quen tính bạn sẽ mất rất nhiều thời gian.
Ví dụ cần filter một số route sau với yêu cầu sử dụng “one-line filter”: 102.17.63.0, 126.22.61.0, 111.22.57.0, 125.33.101.0.

Đầu tiên đổi ra dạng nhị phân:

102.17.63.0 = 01100110. 00010001. 00111111.00000000
126.22.61.0 = 01111110. 00010110. 00111101.00000000
111.22.57.0 = 01101111. 00010110. 00111001.00000000
125.33.101.0 = 01111101. 00100001. 01100101.00000000

Để tìm subnet ta so sánh theo cột, nếu tất cả là 1 thì subnet là 1, trường hợp còn lại thì subnet là 0.

=> Subnet Address: 01100100.00000000.00100001.00000000 =100.0.33.0

Để tìm wildcard mask ta so sánh theo cột, nếu tất cả là 0 hay tất cả là 1 thì mask là 0, trường hợp vừa 0 vừa 1 thì mask là 1. (octet cuối cùng ta không match nên mask sẽ là tất cả các bit 1).

Wildcasd Mask: 00011011.00110111.01011110.11111111 => 27.55.94.255

=> Filter dạng: 100.0.33.0 27.55.94.255

Sau đó ta cần kiểm tra lại trên lab bằng cách tạo interface loopback, sử dụng access-list, distribute-list,…
Access-list 1 [permit | deny] 100.0.33.0 27.55.94.255

Ngoài ra có thể tính toán để biết mạng nào sẽ bị filter bằng cách thực hiện phép OR (all 0’s => 0, else => 1).
Chú ý nếu wildcard mask là bit 1 => không cần kiểm tra(not match), bit 0 => cần kiểm tra(match).

100.0.33.0 = 01100100. 00000000. 00100001.00000000
27.55.94.255 = 00011011. 00110111. 01011110.11111111
Kết quả: 011xx1xx.00xx0xxx.0x1xxxx1.00000000

Nghĩa là ngoài các mạng 102.17.63.0, 126.22.61.0, 111.22.57.0, 125.33.101.0 thì các mạng khác có dạng trên cũng sẽ bị filter!

Cheers,