Các công cụ quản lý tuyến (route-map), danh sách tiền tố (prefix-list) và giá trị khoảng cách quản trị (Administrative Distance - AD) phải được hiểu rõ khi làm việc với quá trình phân phối lại tuyến (route redistribution) trong môn thi CCIE lý thuyết về Định tuyến và Chuyển mạch.
Công cụ route-map trong IOS của Cisco cung cấp một thuật toán tương tự như luận lý Nếu/Thì/Nếu không thường thấy trong các ngôn ngữ lập trình. Một route-map chứa một hoặc nhiều câu lệnh route-map và router sẽ xử lý các câu lệnh route-map dựa vào thứ tự đi kèm với chúng.
Mỗi câu lệnh route-map có những thông số so trùng (match) bên trong được cấu hình bằng câu lệnh match. (Để so trùng tất cả gói tin, một mệnh đề route-map chỉ đơn giản đưa ra một câu lệnh match). Đồng thời, câu lệnh route-map cũng có một hoặc nhiều câu lệnh tùy chọn set dùng để áp đặt thông tin, chẳng hạn áp đặt chi phí cho một số tuyến được phân phối lại.
Các quy luật tổng quát của route-map như sau:
Để giúp người đọc hiểu rõ hơn về cấu trúc luận lý của một route-map, ví dụ trong hình 11.1 sẽ mô tả quá trình xử lý tuyến của một route-map. Trong hình, router R1 có 8 goap tiếp kiểu loopback có địa chỉ lớp A, từ mạng 32 đến mạng 39.
Hình 11.1: Quá trình xử lý tuyến của một route-map
Lưu đồ hình 11.1 có một số đánh dấu giúp người đọc dễ theo dõi quá trình xử lý của route-map. Trên cùng là một tập các mạng kết nối trực tiếp (connected network) từ 32 đến 39, được đánh dấu bằng chữ B, đang được xem xét để phân phối lại. Đi dần xuống phía dưới là 4 câu lệnh route-map nằm trong cùng một route-map. Mỗi mệnh đề route-map (bao gồm cả các thông số so trùng (match) và câu lệnh set lại chia các tuyến từ nhóm B ban đầu thành một nhóm các tuyến được phân phối lại (đánh dấu bằng chữ A) và/hoặc một nhóm các tuyến không được phân phối lại (đánh dấu bằng chữ C). Cuối cùng, tất cả các tuyến từ ban đầu phải được đánh dấu rõ ràng là “được phân phối lại” hoặc “không được phân phối lại”.
Route-map chỉ chọn phân phối một tuyến nếu câu lệnh route-map có chọn lựa cho phép, nếu câu lệnh route-map có chọn lựa là bỏ qua thì đó là lần duy nhất route-map sẽ chọn tuyến đang xét là không được phân phối lại. Tạm thời bỏ qua quy luật so trùng, 2 câu lệnh route-map đầu tiên (số 10 và 25) đều có chọn lựa là cho phép.
Kết quả của 2 câu lệnh này là: các tuyến được phân thành 2 nhóm, 1 nhóm được phân phối lại (nhóm A) và nhóm còn lại được để yên trong danh sách chờ xét tiếp (nhóm B), 2 câu lệnh route-map sau (số thứ tự 33 và 40) sử dụng chọn lựa bỏ qua. Kết quả là sau 2 câu lệnh này, các tuyến nằm trong danh sách chờ xử lý lại chia thành 2 nhóm: 1 nhóm không được phân phối lại (đánh dấu bằng chữ C), nhóm kia nằm lại trong danh sách chờ xử lý (nhóm B). Khi một tuyến đã được so trùng trong route-map, nó phải được đánh dấu hoặc là được phân phối lại, hoặc là không được phân phối lại, sau đó nó sẽ không bị route-map xử lý nữa.
Một điểm thường gây nhầm lẫn khi sử dụng route-map là: nếu một tuyến bị bỏ qua bởi một ACL đi kèm với câu lệnh so trùng, thì không có nghĩa tuyến đó sẽ không được phân phối lại. Lấy ví dụ, lệnh match ip address 32 trong mệnh đề 10 tham chiếu đến ACL 32, trong đó cho phép mạng 32, còn lại ngầm định bỏ qua các mạng 33 đến 39. Tuy nhiên, các mạng từ 33 đến 39 không bị gán là không được phân phối lại mà chỉ đơn giản là không so trùng với mệnh đề 10 và do đó, chúng nằm chờ những mệnh đề sau xử lý tiếp.
Câu lệnh route-map với tùy chọn cho phép:
Câu lệnh route-map với tùy chọn bỏ qua:
Nếu câu lệnh so trùng của một mệnh đề sử dụng ACL, trong ACL lại so trùng một tuyến với tùy chọn bỏ qua, thì tuyến đó chỉ đơn giản là không bị so trùng trong route-map chứ không có nghĩa là không được phân phối lại. Câu lệnh route-map chứa một tùy chọn bỏ qua ngầm định cuối cùng; nếu muốn cấu hình cho phép tất cả phải dùng một route-map khác với tùy chọn cho phép, trong route-map này không có tùy chọn so trùng gì cả.
Route-map dùng lệnh so trùng (match) để định nghĩa các trường và giá trị bị so trùng khi xử lý tuyến. Nếu có hơn 1 lệnh so trùng trong một route-map đơn, tuyến chỉ được so trùng nếu thỏa mãn tất cả các câu lệnh so trùng này này (luận lý VÀ - AND). Trong một câu lệnh so trùng cũng có thể có nhiều thông số, các thông số hay điều kiện này được hiểu theo luận lý HOẶC (OR). Bảng 11.1 liệt kê các tùy chọn của câu lệnh so trùng khi sử dụng cho phân phối lại tuyến trong IGP.
Lệnh so trùng |
Mô tả |
match interface interface-type interface-number s [... interface-type interface-number] |
Xem xét cổng ra của tuyến |
*match ip address {[access-list-number | access-list-name] | prefix-list prefix-list-name} |
Kiểm tra tiền tố của tuyến và chiều dài tiền tố
|
*match ip next-hop {access-list-number | access-list-name} |
Kiểm tra điạ chỉ chặng kế tiếp của tuyến |
*match ip route-source {access-list-number | access-list-name} |
So trùng địa chỉ IP mà router dùng để quảng bá tuyến |
match metric metric-value |
So trùng chi phí của tuyến |
match route-type {internal | external [type-1 | type-2] | level-1 | level-2} |
So trùng kiểu tuyến |
match tag tag-value [...tag-value] |
Việc thêm thẻ (đánh dấu) phải được thiết lập lên trước đó. |
Khi sử dụng cho phân phối lại tuyến, route-map có một hành động ngầm định:
Việc chọn lựa này diễn ra thông qua tùy chọn cho phép hay là bỏ qua trong câu lệnh route-map. Route-map cũng có thể dùng lệnh thiết lập (set) để thay đổi thông tin của các tuyến được phân phối lại. Bảng 11.2 liệt kê các tùy chọn của lệnh thiết lập khi dùng để phân phối lại các tuyến của giao thức định tuyến nội vùng (IGP).
Lệnh set |
Mô tả |
set level {level-1 | level-2 | level-1-2 | stub-area | backbone} |
Định nghĩa cấp độ mà tuyến sẽ được phân phối lại |
set metric metric-value |
Định chi phí cho các tuyến OSPF, RIP, IS-IS |
set metric bandwidth delay reliability loading mtu |
Định chi phí cho các tuyến IGRP, EIGRP |
set metric-type {internal | external | type-1 | type-2} |
Định kiểu cho các tuyến IS-IS và OSPF |
set tag tag-value |
Định giá trị các thẻ cho tuyến |
Bảng 11.2: Các tuỳ chọn của lệnh thiết lập
Danh sách tiền tố IP (IP prefix list) cung cấp các phương thức để so trùng 2 thành phần của một tuyến IP:
Lệnh phân phối lại redistribute không thể tham chiếu trực tiếp đến một danh sách tiền tố, nhưng một route-map có thể tham chiếu đến một danh sách tiền tố bằng câu lệnh match. Bản thân danh sách tiền tố có những đặc tính tương tự như route-map. Danh sách tiền tố chứa một hay nhiều phát biểu với cùng tên gọi. Mỗi phát biểu có một số thứ tự để cho phép xóa bỏ từng phát biểu riêng, hoặc chèn vào giữa các phát biểu đã có. Mỗi câu lệnh cũng có một hành động cho phép hoặc bỏ qua, nhưng do chỉ sử dụng để so trùng các gói tin nên các từ khóa cho phép hoặc bỏ qua ở đây chỉ ngầm định là tuyến có được so trùng hay không.
Cú pháp tổng quát của câu lệnh này như sau:
ip prefix-list list-name [seq seq-value] {deny network/length | permit network/length} [ge ge-value] [le le-value]
Đôi khi, sự lắt léo và thú vị của danh sách tiền tố nằm ở ý nghĩa của sự thay đổi các thông số network/length, ge-value, le-value. Thông số network/length định nghĩa giá trị dùng để so trùng với tiền tố của tuyến tức là địa chỉ đường mạng con. Ví dụ, network/length 10.0.0.0/8 có nghĩa là “tất cả các tuyến có byte đầu là 10”. Tùy chọn ge và le dùng để so sánh với độ dài tiền tố, nói cách khác, so sánh với số bit 1 trong mặt nạ mạng con. Chẳng hạn, ge 20 le 22 chỉ so trùng với những tuyến có mặt nạ mạng con là /20,/21 và /22.
Danh sách tiền tố có thể được tóm tắt thành một quá trình so sánh 2 bước cho mỗi tuyến như sau:
Bảng 11.3 trình bày về cách sử dụng các giá trị ge, le, trong đó bao gồm cả giá trị mặc định của 2 thông số này. Lưu ý, conf-length là chiều dài của tiền tố được cấu hình qua thông số network/prefix (yêu cầu), route-length là chiều dài tiền tố của tuyến đang được kiểm tra bởi danh sách tiền tố.
Thông số prefix-list |
Tầm của prefix length |
Không dùng ge, le (mặc định) |
Conf-length = chiều dài tuyến |
Chỉ có le |
Conf-length ≤ chiều dài tuyến ≤ giá trị le |
Chỉ có ge |
Giá trị ge ≤ chiều dài tuyến ≤ 32 |
Dùng cả ge và le |
Giá trị ge ≤ chiều dài tuyến ≤ giá trị le |
Một vài ví dụ nhỏ sau có thể giúp người đọc hiểu rõ cách sử dụng prefix-list. Những tuyến sau đây sẽ được kiểm tra bởi nhiều danh sách tiền tố:
(1) 10.0.0.0/8
(2) 10.128.0.0/9
(3) 10.1.1.0/24
(4) 10.1.2.0/24
(5) 10.128.10.4/30
(6) 10.128.10.8/30
Bảng 11.4 đưa ra kết quả của 7 danh sách tiền tố khác nhau áp dụng cho 6 tuyến ở trên. Ở đây chỉ liệt kê các thông số cần so trùng và giải thích những tuyến nào sẽ được so trùng trong danh sách tiền tố.
Thông số |
Tuyến được so trùng |
Kết quả |
10.0.0.0/8 |
1 |
Không sử dụng ge và le, cả tiền tố (10.0.0.0) và độ dài (8) phải giống nhau. |
10.128.0.0/9 |
2 |
Không sử dụng ge và le, tiền tố (10.128.0.0) và độ dài (9) phải giống nhau. |
10.0.0.0/8 ge 9 |
2,3,4,5,6 |
10.0.0.0/8 có nghĩa là ”tất cả tuyến có byte đầu tiên bằng 10”. Chiều dài của tiền tố phải là giá trị nằm giữa 9 và 32. |
10.0.0.0/8 ge 24 le 24 |
3,4 |
10.0.0.0/8 có nghĩa là ”tất cả tuyến có byte đầu tiên bằng 10”. độ dài tiền tố từ 24 đến 24. Như vậy chỉ có 2 tuyến có mặt nạ mạng con bằng 24 thỏa mãn điều kiện của danh sách tiền tố. |
10.0.0.0/8 le 28 |
1,2,3,4 |
Chiều dài tiền tố từ 8 đến 28. Do đó chỉ có 4 tuyến 1,2,3,4 thỏa mãn điều kiện. |
0.0.0.0/0 |
Không có |
0.0.0.0/0 có nghĩa là ”so trùng tất cả tiền tố, với chiều dài tiền tố chính xác là 0”. Do đó, mặc dù so trùng tất cả các tuyến nhưng không có tuyến nào có mặt nạ mạng con bằng 0 cả, kết quả vẫn là không có tuyến nào trong 6 tuyến đã cho thỏa mãn. Lưu ý, chỉ có tuyến mặc định mới thỏa mãn điều kiện này. |
0.0.0.0/0 le 32 |
Tất cả |
Giống như giải thích ở trên, tất cả các tuyến đều so trùng. Do mặt nạ mạng con bây giờ chạy từ 0 đến 32 nên cả 6 tuyến trên đều thỏa điều kiện. |
Một router có thể học các tuyến thông qua nhiều giao thức định tuyến IP khác nhau cũng như qua cả mạng kết nối trực tiếp (connected) và tuyến tĩnh (static route). Khi router học một tuyến cụ thể qua nhiều cách như vậy, nó không thể sử dụng chi phí để chọn lựa tuyến tốt nhất, bởi vì giá trị chi phí trong mỗi giao thức được tính toán khác nhau. Do vậy, router phải dùng thêm giá trị AD (administrative distance) của từng tuyến để xác định tuyến tốt nhất mà router sẽ dùng, và giá trị AD càng nhỏ càng tốt. Nếu có hai hoặc nhiều tuyến có giá trị AD bằng nhau thì giá trị chi phí mới được dùng.
Loại tuyến |
Giá trị AD |
Kết nối trực tiếp hoặc tuyến tĩnh với cấu hình ngõ ra là cổng ra |
0 |
Tuyến tĩnh với cấu hình chỉ ra địa chỉ IP của chặng kế tiếp |
1 |
Tuyến EIGRP được tóm tắt |
5 |
EBGP |
20 |
EIGRP (nội vùng) |
90 |
IGRP |
100 |
OSPF |
110 |
IS-IS |
115 |
RIP |
120 |
EIGRP (liên vùng) |
170 |
IBGP |
200 |
Không xác định |
255 |
Các giá trị mặc định có thể thay đổi bằng câu lệnh distance. Câu lệnh distance hơi khác nhau đối với mỗi giao thức IGP. Cú pháp tổng quát tương ứng cho RIP, EIGRP và OSPF như sau:
distance distance
distance eigrp internal-distance external-distance
distance ospf {[intra-area dist1] [intra-area dist2] [external dist3]}
Có thể thấy rằng, EIGRP và OSPF định giá trị AD tùy theo loại tuyến trong khi RIP thì không có tính năng như vậy. Có thể dùng câu lệnh distance để định giá trị AD cho từng tuyến.