Trong các bài viết trước chúng ta đã review các kỹ thuật định tuyến được
đề cập trong chương trình CCNA. Lần này chúng ta cùng review giao thức
EIGRP – một trong 03 giao thức định tuyến của chương trình.
Như thường lệ, đầu tiên chúng ta cùng nhắc lại một số đặc điểm chính của giao thức:
1) EIGRP là một giao thức định tuyến do Cisco phát triển, chỉ chạy trên
các sản phẩm của Cisco. Đây là điểm khác biệt của EIGRP so với các giao
thức đã được đề cập trước đây. Các giao thức RIP và OSPF là các giao
thức chuẩn, có thể chạy trên các router của nhiều hãng khác nhau.
2) EIGRP là một giao thức dạng Distance – vector được cải tiến (Advanced
Distance vector). EIGRP không sử dụng thuật toán truyền thống cho
Distance – vector là thuật toán Bellman – Ford mà sử dụng một thuật toán
riêng được phát triển bởi J.J. Garcia Luna Aceves – thuật toán DUAL.
Cách thức hoạt động của EIGRP cũng khác biệt so với RIP và vay mượn một
số cấu trúc và khái niệm của hiện thực OSPF như: xây dựng quan hệ láng
giềng, sử dụng bộ 3 bảng dữ liệu (bảng neighbor, bảng topology và bảng
định tuyến). Chính vì điều này mà EIGRP thường được gọi là dạng giao
thức lai ghép (hybrid). Tuy nhiên, về bản chất thì EIGRP thuần túy hoạt
động theo kiểu Distance – vector: gửi thông tin định tuyến là các route
cho láng giềng (chỉ gửi cho láng giềng) và tin tưởng tuyệt đối vào thông
tin nhận được từ láng giềng.
3) Một đặc điểm nổi bật trong việc cải tiến hoạt động của EIGRP là không
gửi cập nhật theo định kỳ mà chỉ gửi toàn bộ bảng định tuyến cho láng
giềng cho lần đầu tiên thiết lập quan hệ láng giềng, sau đó chỉ gửi cập
nhật khi có sự thay đổi. Điều này tiết kiệm rất nhiều tài nguyên mạng.
4) Việc sử dụng bảng topology và thuật toán DUAL khiến cho EIGRP có tốc độ hội tụ rất nhanh.
5) EIGRP sử dụng một công thức tính metric rất phức tạp dựa trên nhiều thông số: Bandwidth, delay, load và reliability.
6) Chỉ số AD của EIGRP là 90 cho các route internal và 170 cho các route external.
7) EIGRP chạy trực tiếp trên nền IP và có số protocol – id là 88.
Tiếp theo, chúng ta sẽ cùng điểm lại một số điểm chính trong hoạt động của EIGRP:
Thiết lập quan hệ láng giềng
Giống OSPF, ngay khi bật EIGRP trên một cổng, router sẽ gửi các gói tin
hello ra khỏi cổng để thiết lập quan hệ láng giềng với router kết nối
trực tiếp với mình. Điểm khác biệt là các gói tin hello được gửi đến địa
chỉ multicast dành riêng cho EIGRP là 224.0.0.10 với giá trị hello –
timer (khoảng thời gian định kỳ gửi gói hello) là 5s.
Hình 1 - Các router gửi gói tin hello.
Và cũng giống như OSPF, không phải cặp router nào kết nối trực tiếp với
nhau cũng xây dựng được quan hệ láng giềng. Để quan hệ láng giềng thiết
lập được giữa hai router, chúng phải khớp với nhau một số thông số được
trao đổi qua các gói tin hello, các thông số này bao gồm:
1) Giá trị AS được cấu hình trên mỗi router.
2) Các địa chỉ đấu nối giữa hai router phải cùng subnet.
3) Thỏa mãn các điều kiện xác thực.
4) Cùng bộ tham số K.
Ta cùng phân tích các tham số này:
Giá trị AS – Autonomous System
Khi cấu hình EIGRP trên các router, ta phải khai báo một giá trị dùng để
định danh cho AS mà router này thuộc về. Giá trị này buộc phải khớp
nhau giữa hai router kết nối trực tiếp với nhau để các router này có thể
thiết lập được quan hệ láng giềng với nhau. Về mặt cấu hình, giá trị AS
này nằm ở vị trí trong câu lệnh rất giống với giá trị process – id khi
so sánh với câu lệnh cấu hình OSPF. Tuy nhiên, giá trị process – id
trong cấu hình OSPF chỉ có ý nghĩa local trên mỗi router và có thể khác
nhau giữa các router nhưng giá trị AS trong cấu hình EIGRP bắt buộc phải
giống nhau giữa các router thuộc cùng một routing domain. Câu lệnh để
đi vào mode cấu hình EIGRP:
R(config)#router eigrp số AS <-- Giá trị này bắt buộc phải giống nhau giữa các router.
R(config-router)#
Chúng ta cần lưu ý rằng khái niệm AS được dùng với EIGRP không phải là
khái niệm AS được dùng trong các giao thức định tuyến ngoài (VD: BGP).
Với định tuyến ngoài, mỗi AS là một tập hợp các router thuộc về một
doanh nghiệp nào đó cùng chung một sự quản lý về kỹ thuật, sở hữu, chính
sách định tuyến và sẽ được cấp một giá trị định danh cho AS gọi là ASN –
Autonomous System Number từ tổ chức quản lý địa chỉ Internet và số hiệu
mạng quốc tế (IANA – Internet Assigned Numbers Authority). Thường các
AS theo nghĩa này là các ISP hoặc các doanh nghiệp có nhiều đường đi
Internet và muốn chạy định tuyến với các mạng khác ở quy mô Internet để
có được đường đi tối ưu đến các địa chỉ trên Internet. Ta có thể tạm coi
AS theo nghĩa này như là một hệ thống mạng của một doanh nghiệp hay một
ISP.
EIGRP là một giao thức định tuyến trong, chạy bên trong một AS đã đề cập ở trên. Kiến trúc của EIGRP cho phép tạo nhiều
process – domain
khác nhau trong một AS: một số router sẽ được gán vào một process –
domain này và một số router khác lại được gán vào một process – domain
khác. Các router sẽ chỉ trao đổi thông tin EIGRP với các router thuộc
cùng process – domain với mình. Để các router EIGRP thuộc các process –
domain khác nhau có thể biết được thông tin định tuyến của nhau, router
biên giữa hai domain phải thực hiện
redistribute
thông tin định tuyến giữa hai domain. Kỹ thuật Redistribution không
được đề cập trong chương trình CCNA mà được phân tích chi tiết trong
course Route của chương trình CCNP.
Ta quan sát một sơ đồ ví dụ trong hình 2. Có hai AS 100 và 200 chạy định
tuyến ngoài BGP với nhau. Bên trong AS 100, doanh nghiệp chạy giao thức
định tuyến trong EIGRP và chia thành hai process – domain là 100 và
200. Router biên đứng giữa process – domain 100 và 200 sẽ redistribute
thông tin giữa hai domain để các router trên hai domain này thấy được
thông tin về các subnet của nhau.
Các giáo trinh CCNA Student – guide và Offcial của Cisco đều gọi process
– domain là AS – Autonomous System. Chúng ta cần lưu ý và phân biệt
khái niệm với khái niệm AS – Autonomous System được dùng trong BGP.
Hình 2 – AS của BGP và AS của EIGRP.
Các địa chỉ đấu nối
Để hai router thiết lập được quan hệ láng giềng với nhau, hai địa chỉ
đấu nối giữa hai router phải cùng subnet. Trên hình 1, để R1 và R2 thiết
lập được quan hệ láng giềng, bắt buộc hai địa chỉ IP1 và IP2 phải cùng
subnet.
Thỏa mãn các điều kiện xác thực
Như đã trình bày trong các bài viết trước, để tăng cường tính an ninh
trong hoạt động trao đổi thông tin định tuyến, ta có thể cấu hình trên
các router các password để chỉ các router thống nhất với nhau về
password mới có thể trao đổi thông tin định tuyến với nhau. Hai router
nếu có cấu hình xác thực thì phải thống nhất với nhau về password được
cấu hình thì mới có thể thiết lập quan hệ láng giềng với nhau.
Cùng bộ tham số K
EIGRP sử dụng một công thức tính metric rất phức tạp, là một hàm của 04 biến số: bandwidth, delay, load, reliability.
Metric = f (bandwidth, delay, load, reliability)
Các biến số này lại có thể được gắn với các trọng số để tăng cường hoặc
giảm bớt ảnh hưởng của chúng gọi là các tham số K gồm 5 giá trị K1, K2,
K3, K4 và K5. Các router chạy EIGRP bắt buộc phải thống nhất với nhau về
bộ tham số K được sử dụng để có thể thiết lập quan hệ láng giềng với
nhau.
Ta thấy rằng không giống như với OSPF, EIGRP không yêu cầu phải thống
nhất với nhau về cặp giá trị Hello – timer và Dead – timer (EIGRP gọi
khái niệm này là Hold – timer) giữa hai neighbor. Các giá trị Hello và
Hold mặc định của EIGRP là 5s và 15s.
Bảng Topology, FD, AD, Successor và Feasible Successor
Sau khi đã thiết lập xong quan hệ láng giềng, các router láng giềng của
nhau ngay lập tức gửi cho nhau toàn bộ các route EIGRP trong bảng định
tuyến của chúng. Khác với RIP, bảng định tuyến chỉ được gửi cho nhau lần
đầu tiên khi mới xây dựng xong quan hệ láng giềng, sau đó, các router
chỉ gửi cho nhau các cập nhật khi có sự thay đổi xảy ra và chỉ gửi cập
nhật cho sự thay đổi ấy. Một điểm khác biệt khác nữa khi so sánh với RIP
là khi một router nhận được nhiều route từ nhiều láng giềng cho một
đích đến A nào đó thì giống như RIP, nó sẽ chọn route nào tốt nhất đưa
vào bảng định tuyến để sử dụng còn khác với RIP là các route còn lại nó
không loại bỏ mà lưu vào một “kho chứa” để sử dụng cho mục đích dự
phòng đường đi. “Kho chứa” này được gọi là bảng Topology. Vậy bảng
Topology trên một router chạy EIGRP là bảng lưu mọi route có thể có từ
nó đến mọi đích đến trong mạng và bảng định tuyến là bảng sẽ lấy và sử
dụng các route tốt nhất từ bảng Topology này.
Ta cùng điểm lại các thông tin được lưu trong bảng Topology và các thông
số được xem xét rất nhiều khi khảo sát hoạt động của EIGRP: FD, AD,
Successor và Feasible Successor. Ta cùng quan sát sơ đồ ví dụ trong hình
3:
Hình 3 – Các đường đi từ router R đến mạng 4.0.0.0/8.
Giả thiết rằng sơ đồ hình 3 chạy định tuyến EIGRP. Ta xem xét trên
router R. Từ router R đi đến mạng 4.0.0.0/8 của R4 có tổng cộng 03
đường: đường số 1 đi thông qua láng giềng là router R1, đường số 2 đi
thông qua láng giềng là router R2 và đường số 3 đi thông qua láng giềng
là router R3. Trên hình 3 cũng chỉ ra các giá trị metric cho mỗi tuyến
đường:
- Đường số 1: metric từ router đang xét đến mạng 4.0.0.0/8 là 1000,
metric từ láng giềng trên đường này (R1) đến 4.0.0.0/8 là 900.
- Đường số 2: metric từ router đang xét đến mạng 4.0.0.0/8 là 2000,
metric từ láng giềng trên đường này (R2) đến 4.0.0.0/8 là 1200.
- Đường số 3: metric từ router đang xét đến mạng 4.0.0.0/8 là 3000,
metric từ láng giềng trên đường này (R3) đến 4.0.0.0/8 là 800.
Ta có các khái niệm:
- Với mỗi đường đi, giá trị metric từ router đang xét đi đến mạng đích được gọi là FD – Feasible Distance.
- Cũng với đường đi ấy, giá trị metric từ router láng giềng (next hop)
đi đến cùng mạng đích được gọi là AD – Advertised Distance. Một số tài
liệu gọi khái niệm này bằng một tên khác là RD – Reported Distance.
Chúng ta lưu ý không được nhầm lẫn khái niệm AD này với khái niệm AD –
Administrative Distance dùng trong việc so sánh độ ưu tiên giữa các giao
thức định tuyến.
Như vậy, ta có các giá trị FD và AD rút ra từ sơ đồ hình 3 với router đang xem xét là router R như sau:
- Đường số 1: FD1 = 1000, AD1 = 900.
- Đường số 2: FD2 = 2000, AD2 = 1200.
- Đường số 3: FD3 = 3000, AD3 = 800.
Tất cả các thông tin này sẽ đều được lưu vào trong bảng Topology của router R.
Ta cùng xem xét tiếp các khái niệm: Successor và Feasible Successor.
- Successor: Trong tất cả các đường cùng đi đến một đích được lưu trong
bảng topology, đường nào có FD nhỏ nhất, đường đó sẽ được bầu chọn làm
Successor, router láng giềng trên đường này được gọi là successor router
(hoặc cũng được gọi một cách ngắn gọn là Successor). Đường Successor sẽ
được đưa vào bảng định tuyến để sử dụng chính thức làm đường đi đến
đích.
- Feasible Successor: Trong tất cả các đường còn lại có FD > FD của
Successor, đường nào có AD < FD của successor, đường đó sẽ được chọn
là Feasible Successor và được sử dụng để làm dự phòng cho Successor.
Trong ví dụ ở trên, ta thấy trong 03 đường đã nêu, đường số 1 là đường
có FD nhỏ nhất trong 03 đường, vậy đường số 1 sẽ được bầu chọn làm
Successor. Hai đường còn lại đều có FD > FD1 (FD2 = 2000, FD3 =
3000). Tuy nhiên, chỉ đường số 3 mới có AD < FD của successor (AD3 =
800 < FD1 = 1000) nên chỉ có đường số 3 mới được bầu chọn làm
Feasible Successor. Đường số 1 – Successor sẽ được đưa vào bảng định
tuyến để sử dụng làm đường đi chính thức tới mạng 4.0.0.0/8 và đường số 3
sẽ được sử dụng để làm dự phòng cho đường đi chính thức này. Nếu đường
số 1 down, router sẽ
ngay lập tức đưa đường số 3 vào sử dụng.
Lý do của luật chọn Feasible Successor phải có AD < FD của successor
là để chống loop. Người ta chứng mình được rằng trong một mạng chạy giao
thức kiểu Distance – vector, nếu metric từ điểm A đi đến một mạng nào
đấy < metric đi từ điểm B đến cùng mạng ấy thì không bao giờ trên
hành trình từ điểm A đi đến mạng nêu trên lại đi qua điểm B. Chính vì
vậy nếu AD của Feasible Successor < FD Successor thì không bao giờ dữ
liệu đi theo Feasible Successor lại đi vòng trở lại router Successor từ
đó loop không thể xảy ra.
Ta cũng lưu ý Successor là loại route duy nhất vừa nằm trong bảng định tuyến vừa nằm trong bảng Topology.
Vậy câu hỏi đặt ra là nếu trong các đường còn lại không có đường nào
thỏa mãn điều kiện Feasible Successor thì sao? Trong trường hợp này,
Successor vẫn được đưa vào bảng định tuyến để sử dụng làm đường đi chính
thức đến mạng đích nhưng nó không có đường backup. Trong trường hợp
đường chính này down, router chạy EIGRP sẽ thực hiện một kỹ thuật gọi là
Query: nó sẽ phát các gói tin truy vấn đến các láng giềng, hoạt động
truy vấn sẽ tiếp tục được lan truyền cho đến khi tìm ra được đường đi về
đích hoặc không còn đường đi nào có thể về đích được nữa. Hoạt động
Query này không được giới thiệu trong chương trình CCNA mà được đề cập
chi tiết trong course Route của chương trình CCNP.
Sau khi trao đổi thông tin định tuyến với láng giềng, cập nhật bảng
Topology, rút ra được các Successor đưa vào bảng định tuyến, hoạt động
của một router chạy EIGRP cơ bản là đã hoàn thành. Tiếp theo, chúng ta
cùng tìm hiểu cách tính toán metric với EIGRP.
Tính toán metric với EIGRP
Metric của EIGRP được tính theo một công thức rất phức tạp với đầu vào
là 04 tham số: Bandwidth min trên toàn tuyến, Delay tích lũy trên toàn
tuyến (trong công thức sẽ ghi ngắn gọn là Delay), Load và Reliabily cùng
với sự tham gia của các trọng số K:
Metric = [K1*10^7/Bandwidth min + (K2*10^7/Bandwidth min)/(256 – Load) + K3* Delay]*256*[K5/(Reliabilty + K4)]
Ta lưu ý về đơn vị sử dụng cho các tham số trong công thức ở trên:
Bandwidth: đơn vị là Kbps.
Delay: đơn vị là 10 micro second.
Load và Reliability là các đại lượng vô hướng.
Nếu K5 = 0, công thức trở thành:
Metric = [K1*10^7/Bandwidth min + (K2*10^7/Bandwidth min)/(256 – Load) + K3* Delay]*256
Mặc định bộ tham số K được thiết lập là: K1 = K3 = 1; K2 = K4 = K5 = 0 nên công thức dạng đơn giản nhất ở mặc định sẽ là:
Metric = [10^7/Bandwidth min + Delay]*256
Một số giá trị mặc định được quy định cho một số loại cổng thường sử dụng trên router:
Ethernet: Bandwidth = 10Mbps; Delay = 1000 Micro second.
Fast Ethernet: Bandwidth = 100Mbps; Delay = 100 Micro second.
Serial: Bandwidth = 1,544Mbps; Delay = 20000 Micro second.
Để hiểu rõ cách tính metric, chúng ta cùng xem xét một ví dụ:
Hình 4 – Ví dụ về tính toán metric.
Trong ví dụ này, chúng ta sẽ tính metric để đi từ R1 đến mạng
192.168.3.0/24 kết nối trực tiếp trên cổng F0/0 của router R3. Công thức
tính metric trên mỗi router được đặt ở chế độ default (K1 = K3 = 1, K2 =
K4 = K5 = 0).
Đầu tiên, chúng ta cần xác định xem trong sơ đồ trên các cổng nào trên
các router sẽ tham gia vào tiến trình tính toán metric với EIGRP. Để xác
định điều này, chúng ta thực hiện đi ngược từ đích 192.168.3.0/24 về
router đang xét là router R1 và xác định các cổng tham gia theo quy tắc:
đi vào thì tham gia, đi ra thì không tham gia (xem hình 5).
Hình 5 – Xác định các cổng tham gia tính toán metric với EIGRP.
Từ trên hình 5 ta thấy các cổng trên các router sẽ tham gia vào tiến
trình tính toán này bao gồm: cổng F0/0 của R1, cổng S2/0 của R2 và cổng
F0/0 của R3. Các cổng này có các tham số Bandwidth (BW) và Delay như
sau:
1) Cổng F0/0 của R1: BW = 100Mbps = 100000Kbps; Delay = 100 Microsecond = 10.10 Microsecond.
2) Cổng S2/0 của R2 có : BW = 1,544 Mbps = 1544 Kbps; Delay = 20000 Micro second = 2000.10 Microsecond.
3) Cổng F0/0 của R3: BW = 100Mbps = 100000Kbps; Delay = 100 Microsecond = 10.10 Microsecond.
Từ các thông số trên ta xác định được: Bandwidth min = 1544Kbps (nhỏ
nhất trong số 3 cổng tham gia); Tổng Delay = 100 + 20000 + 100 = 20200
Microsecond = 2020.10 Microsecond. Ta ráp các thông số này vào công thức
tính metric default đã nêu ở trên và tính ra kết quả:
Metric = (10^7/BWmin + Delay)*256 = (10^7/1544 + 2020)*256 = 2174976.
Ở đây ta lưu ý: với các phép chia có lẻ, ta chặt bỏ phần thập phân trong kết quả chia.
Việc xác định đúng các cổng tham gia rất quan trọng, nó cho phép chúng
ta hiệu chỉnh chính xác các giá trị tham số trên các cổng thích hợp để
hiệu chỉnh được metric nhằm phục vụ cho việc bẻ đường trong EIGRP.
Cân bằng tải trên những đường không đều nhau (Unequal Cost Load – balancing)
Một đặc điểm nổi trội của EIGRP là giao thức này cho phép cân bằng tải
ngay cả trên những đường không đều nhau. Điều này giúp tận dụng tốt hơn
các đường truyền nối đến router. Để hiểu được kỹ thuật này chúng ta cùng
khảo sát lại ví dụ trong hình 2.
Như đã phân tích trong 03 đường đi từ router R đến mạng 4.0.0.0/8 ở hình
2, đường số 1 là đường có metric tốt nhất (FD nhỏ nhất), đường này được
chọn làm Successor và đưa vào bảng định tuyến để sử dụng. Nếu để bình
thường không cấu hình gì thêm, router R sẽ luôn chọn đường 1 là đường để
đi đến mạng 4.0.0.0/8. Như vậy, hai đường số 2 và số 3 sẽ bị bỏ phí
không bao giờ được sử dụng.
Để khắc phục vấn đề này, chúng ta có thể hiệu chỉnh các tham số trên các
cổng thích hợp để metric đi theo các đường là giống nhau, khi đó cả 3
đường sẽ đều được đưa vào bảng định tuyến để sử dụng. Tuy nhiên, như
chúng ta đã thấy, trong công thức tính toán metric của EIGRP có nhiều
tham số, có phép chia lẻ thập phân và kết quả tính ra thường rất lớn và
có độ phân giải có thể đến một phần triệu nên việc hiệu chỉnh được cho
các đường chính xác bằng nhau không phải là một điều dễ dàng (Vd: một
đường có metric 2174976 và mộ đường có metric 2174977 có thể coi là tốt
như nhau nhưng EIGRP không đồng ý như vậy, với EIGRP đường 2174976 vẫn
tốt hơn 2174977 dù hai đường này metric chỉ chênh lệch nhau có 1 phần
triệu!).
Với EIGRP, ta có thể chọn một giải pháp cân bằng tải đơn giản hơn: cho
phép cân bằng tải trên cả những đường không có metric bằng nhau. Để thực
hiện điều đó, ta thực hiện chỉnh một tham số có tên là variance trên
router bằng câu lệnh:
R(config)#router eigrp AS – number
R(config-router)#variance giá trị variance
Sau khi hiệu chỉnh xong, giá trị variance này sẽ được nhân với giá trị
FD của Successor. Kết quả nhận được nếu lớn hơn metric của đường nào thì
router sẽ cân bằng tải luôn qua cả đường đó. Với ví dụ trên, giả sử ta
chỉnh variance = 4:
R(config-router)#variance 4
Khi đó, giá trị 4 sẽ được nhân với FD Successor : 4 * 1000 = 4000. Ta
thấy 4000 > 3000 là metric khi đi theo đường số 3 nên router sẽ thực
hiện cân bằng tải qua cả đường này. Ta lưu ý rằng dù đường số 2 có
metric 2000 <4000 nhưng đường này không được tham gia vào cân bằng
tải vì nó không phải là Feasible Successor. Kỹ thuật cân bằng tải trên
những đường không đều nhau của EIGRP chỉ có tác dụng giữa các Successor
và Feasible Successor.
Router chạy EIGRP cũng sẽ thực hiện một chiến lược cân bằng tải khôn
ngoan giữa các đường không đều nhau: đường có metric tốt hơn sẽ gánh tải
nhiều hơn đường có metric kém hơn theo tỉ lệ metric. Ví dụ: khi cân
bằng tải giữa các đường có metric 1000 và 3000, đường 1000 sẽ phải gánh
tải nhiều hơn gấp 3 lần so với đường 3000.
Xác thực MD5 với EIGRP
EIGRP chỉ hỗ trợ một kiểu xác thực duy nhất là MD5. Với kiểu xác thực
này, các password xác thực sẽ không được gửi đi mà thay vào đó là các
bản hash được gửi đi. Các router sẽ xác thực lẫn nhau dựa trên bản hash
này. Ta có thủ tục cấu hình xác thực trên EIGRP sẽ gồm các bước như sau:
1) Trên các router sẽ khai báo một key – chain dùng cho xác thực. Key –
chain là một tập hợp các key được sử dụng để xác thực. Câu lệnh :
R(config)#key chain tên của key-chain
R(config-keychain)#
2) Tiếp theo, với mỗi key – chain, ta sẽ khai báo lần lượt từng key được
sử dụng. Mỗi key sẽ bao gồm password và thời gian tác dụng. Key sẽ chỉ
hoạt động trong khoảng thời gian được chỉ ra. Điều này cho phép thay đổi
key xác thực một cách tự động theo thời gian. Key được định danh bằng
key – id, đơn giản chỉ là các số nguyên dương. Các câu lệnh:
R(config-keychain)#key key-id
R(config-keychain-key)#key-string password
R(config-keychain-key)#accept-lifetime start-time {infinite | end-time | duration seconds}
R(config-keychain-key)#send-lifetime start-time {infinite | end-time | duration seconds}
3) Cuối cùng ta thực hiện bật xác thực trên các cổng đấu nối và chỉ đến key – chain đã được chỉ ra ở các bước trên. Câu lệnh:
R(config-if)#ip authentication mode eigrp AS md5
R(config-if)#ip authentication key-chain eigrp AS tên-key-chain
Để đảm bảo chính xác về mặt thời gian giữa hai router, chúng ta phải
đồng bộ đồng hồ thời gian thực giữa hai router. Để làm được điều này,
chúng ta phải sử dụng một giao thức đồng bộ thời gian thực là NTP –
Network Time Protocol. Chi tiết về NTP sẽ được đề cập trong các bài viết
khác. Để hiểu rõ về việc cấu hình xác thực, chúng ta sẽ cùng xem xét
một ví dụ trong phần tiếp theo: Cấu hình ví dụ.
Cấu hình ví dụ
Hình 6 – Sơ đồ ví dụ cấu hình.
Trên hình 6 là ba router đại diện cho ba chi nhánh khác nhau của một
doanh nghiệp : R1 cho chi nhánh 1, R2 cho chi nhánh 2 và R3 cho chi
nhánh 3. R1 sử dụng cổng F0/0 của nó đấu xuống mạng LAN của chi nhánh 1,
mạng này sử dụng subnet 192.168.1.0/24. Tương tự, R2 sử dụng cổng F0/0
của nó đấu xuống mạng LAN của chi nhánh 2, mạng này sử dụng subnet
192.168.2.0/24 và R3 sử dụng cổng F0/0 đấu xuồng mạng LAN chi nhánh 3
với subnet 192.168.3.0/24. Subnet sử dụng cho các kết nối leased – line
nối giữa ba chi nhánh (qua các cổng serial của các router) lần lượt là
192.168.12.0/30, 192.168.23.0/30. Các interface loopback 0 trên mỗi
router được tạo thêm với địa chỉ IP như hình vẽ dùng để test vấn đề auto
– summary của EIGRP.
Yêu cầu:
1) Cấu hình định tuyến EIGRP 100 đảm bảo mọi địa chỉ thấy nhau.
2) Thực hiện xác thực trên các kết nối serial giữa các chi nhánh: trên
kết nối giữa R1 và R2 sử dụng password là R1R2KEY, trên kết nối giữa R2
và R3 sử dụng password R2R3KEY.
Thực hiện:
Đầu tiên, ta bật định tuyến EIGRP trên các router và cho các cổng tham gia định tuyến:
Trên R1:
R1(config)#router eigrp 100 <-- giống nhau trên các router
R1(config-router)#network 192.168.1.0
R1(config-router)#network 172.16.0.0
R1(config-router)#network 192.168.12.0 0.0.0.3
Trên R2:
R2(config)#router eigrp 100 <-- giống nhau trên các router
R2(config-router)#network 192.168.2.0
R2(config-router)#network 172.16.0.0
R2(config-router)#network 192.168.12.0 0.0.0.3
R2(config-router)#network 192.168.23.0 0.0.0.3
Trên R3:
R3(config)#router eigrp 100 <-- giống nhau trên các router
R3(config-router)#network 192.168.3.0
R3(config-router)#network 172.16.0.0
R3(config-router)#network 192.168.23.0 0.0.0.3
Ta thấy, tương tự như với các giao thức đã đề cập trước đây, để cho một
cổng nào đó của router tham gia định tuyến, ta thực hiện “network” địa
chỉ mạng có chứa subnet nằm trên cổng ấy. Một điểm thú vị trong cách cấu
hình EIGRP là ta có thể sử dụng hai kiểu cho cổng router tham gia định
tuyến: hoặc là “network” một major network có chứa subnet của cổng muốn
cho tham gia giống như với cấu hình RIP hoặc là “network” chính xác
subnet trên cổng bằng cách sử dụng thêm wildcard – mask giống như với
cấu hình OSPF. Một lần nữa, ta thấy EIGRP sử dụng khá nhiều phương pháp
tổ chức của hiện thực OSPF. Với cách thức như vậy, ta có thể có được một
sự linh hoạt đáng kể trong việc thao tác cấu hình.
Trong các thao tác cấu hình ở trên, ta thấy với các subnet loopback và
các subnet trên các mạng LAN, người quản trị đã sử dụng kiểu “network”
giống như RIP: major network; với các subnet đấu nối giữa các router,
người quản trị đã sử dụng kiểu “network” giống như với OSPF – sử dụng
thêm wildcard mask – tất nhiên, không có phần khai báo thêm Area vì
EIGRP không sử dụng kiến trúc phân vùng như OSPF.
Sau khi bật xong EIGRP trên các router, chúng thiết lập quan hệ láng
giềng với các router kết nối trực tiếp. Khác với OSPF, các router chạy
EIGRP chỉ có một loại trạng thái quan hệ láng giềng là “Adjacency”,
không chia thành nhiều cập độ neighbor như với OSPF. Có thể hiểu
“Adjacency” với EIGRP tương đương với quan hệ dạng “Full” của OSPF –
trao đổi được dữ liệu định tuyến cho nhau. Việc thiết lập quan hệ láng
giềng được chỉ rõ trên các router bằng các thông báo Syslog:
Trên R1:
*Mar 1 00:11:37.235: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.2 (Serial2/0) is up: new adjacency[/i]
Trên R2:
[i]*Mar 1 00:10:58.751: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.1 (Serial2/0) is up: new adjacency
*Mar 1 00:11:37.371: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.23.2 (Serial2/1) is up: new adjacency
Trên R3:
*Mar 1 00:11:02.671: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.23.1 (Serial2/0) is up: new adjacency
Ta có thể kiểm tra bảng láng giềng trên các router bằng cách sử dụng lệnh “show ip eigrp neighbor”:
Trên R1:
R1#show ip eigrp neighbor
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 192.168.12.2 Se2/0 12 00:22:24 139 834 0 8
Trên R2:
R2#show ip eigrp neighbor
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 192.168.23.2 Se2/1 12 00:22:45 112 672 0 2
0 192.168.12.1 Se2/0 13 00:23:23 119 714 0 2
Trên R3:
R3#show ip eigrp neighbor
IP-EIGRP neighbors for process 100
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 192.168.23.1 Se2/0 11 00:23:44 78 468 0 7
Tiếp theo ta thực hiện kiểm tra bảng định tuyến xem các router đã học được các route của nhau chưa.
Trên R1:
R1#show ip route eigrp
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.12.0/24 is a summary, 00:27:15, Null0
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.16.0.0/16 is a summary, 00:26:45, Null0
D 192.168.23.0/24 [90/2681856] via 192.168.12.2, 00:26:36, Serial2/0
D 192.168.2.0/24 [90/2195456] via 192.168.12.2, 00:26:45, Serial2/0
D 192.168.3.0/24 [90/2707456] via 192.168.12.2, 00:26:06, Serial2/0
Trên R2 :
R2#show ip route eigrp
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.12.0/24 is a summary, 00:28:02, Null0
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.16.0.0/16 is a summary, 00:27:23, Null0
192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.23.0/24 is a summary, 00:27:53, Null0
D 192.168.1.0/24 [90/2195456] via 192.168.12.1, 00:28:01, Serial2/0
D 192.168.3.0/24 [90/2195456] via 192.168.23.2, 00:27:23, Serial2/1
Trên R3:
R3#show ip route eigrp
D 192.168.12.0/24 [90/2681856] via 192.168.23.1, 00:29:10, Serial2/0
172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
D 172.16.0.0/16 is a summary, 00:29:10, Null0
192.168.23.0/24 is variably subnetted, 2 subnets, 2 masks
D 192.168.23.0/24 is a summary, 00:29:11, Null0
D 192.168.1.0/24 [90/2707456] via 192.168.23.1, 00:29:10, Serial2/0
D 192.168.2.0/24 [90/2195456] via 192.168.23.1, 00:29:10, Serial2/0
Các route được học bởi EIGRP được ký hiệu bởi ký tự “D”.
Quan sát bảng định tuyến của các router, ta nhận thấy rằng một số subnet
không được quảng bá với đúng subnet của nó, ví dụ, trên bảng định tuyến
của R3 ta thấy subnet 192.168.12.0 có prefix length là 24 trong khi giá
trị đúng phải là 30. Thêm nữa, các router đều không thấy các mạng
loopback của nhau mà thay vào đó chúng lại thấy một route summary
172.16.0.0/16 chỉ đến Null0 – một loại interface luận lý của router.
Điều này dẫn đến các router không thể đi được đến các loopback của nhau:
R1#ping 172.16.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
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 0 percent (0/5)
R2#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R3#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 0 percent (0/5)
R3#ping 172.16.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Như đã đề cập trong bài viết về giao thức RIP, các giao thức Distance –
vector mặc định có chế độ “Auto – summary”: tự động chuyển các subnet về
mạng major khi đi qua biên giới của một mạng major khác. Điều này cũng
xảy ra với EIGRP vì EIGRP cũng là một giao thức Distance – vector: khi
router quảng bá route nằm ở biên giới hai mạng major khác nhau, nó sẽ tự
động summary các route subnet về mạng major khi cập nhật cho route này
đi qua biên giới của một mạng major khác. Điều này dẫn đến những sai
lệch trong định tuyến và có thể khiến một số subnet không đi đến được.
Để khắc phục, chúng ta sử dụng câu lệnh “no auto-summary” trên mỗi
router:
R1(config)#router eigrp 100
R1(config-router)#no auto-summary
R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R3(config)#router eigrp 100
R3(config-router)#no auto-summary
Kết quả hiển thị bảng định tuyến cho thấy các route đã được học một cách đúng đắn và đầy đủ:
R1#show ip route eigrp
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.2.0 [90/2297856] via 192.168.12.2, 00:01:55, Serial2/0
D 172.16.3.0 [90/2809856] via 192.168.12.2, 00:01:42, Serial2/0
192.168.23.0/30 is subnetted, 1 subnets
D 192.168.23.0 [90/2681856] via 192.168.12.2, 00:01:55, Serial2/0
D 192.168.2.0/24 [90/2195456] via 192.168.12.2, 00:46:48, Serial2/0
D 192.168.3.0/24 [90/2707456] via 192.168.12.2, 00:46:09, Serial2/0
R2#show ip route eigrp
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/2297856] via 192.168.12.1, 00:02:47, Serial2/0
D 172.16.3.0 [90/2297856] via 192.168.23.2, 00:02:24, Serial2/1
D 192.168.1.0/24 [90/2195456] via 192.168.12.1, 00:47:29, Serial2/0
D 192.168.3.0/24 [90/2195456] via 192.168.23.2, 00:46:51, Serial2/1
R3#show ip route eigrp
192.168.12.0/30 is subnetted, 1 subnets
D 192.168.12.0 [90/2681856] via 192.168.23.1, 00:02:52, Serial2/0
172.16.0.0/24 is subnetted, 3 subnets
D 172.16.1.0 [90/2809856] via 192.168.23.1, 00:02:52, Serial2/0
D 172.16.2.0 [90/2297856] via 192.168.23.1, 00:02:52, Serial2/0
D 192.168.1.0/24 [90/2707456] via 192.168.23.1, 00:47:06, Serial2/0
D 192.168.2.0/24 [90/2195456] via 192.168.23.1, 00:47:06, Serial2/0
Lúc này, các router đã có thể đi đến được các loopback của nhau:
R1#ping 172.16.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/42/80 ms
R1#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/47/92 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 = 16/71/180 ms
R2#ping 172.16.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/59/188 ms
R3#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 = 16/66/180 ms
R3#ping 172.16.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/34/64 ms
Tiếp theo, ta thực hiện yêu cầu xác thực trên các kết nối giữa các router:
Ở đây, ta sẽ khai báo các key – chain chỉ có một key, với key – id = 1
và nếu không chỉ ra các thông số thời gian thì key này sẽ được sử dụng
vĩnh viễn.
Trên R1:
R1(config)#key chain R1chain
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string R1R2KEY
R1(config-keychain-key)#exit
R1(config-keychain)#exit
R1(config)#
R1(config)#int s2/0
R1(config-if)#ip authentication mode eigrp 100 md5
R1(config-if)#ip authentication key-chain eigrp 100 R1chain
Khi chưa thực hiện cấu hình xác thực trên R2, quan hệ láng giềng giữa R1
và R2 sẽ down vì một đầu xác thực còn đầu kia thì không. Các thông báo
Syslog chỉ ra điều này:
Trên R1:
*Mar 1 01:05:34.239: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.2 (Serial2/0) is down: authentication mode changed
Trên R2:
*Mar 1 01:05:23.259: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.1 (Serial2/0) is down: Auth failure
Nếu thực hiện câu lệnh “show ip eigrp neigbor” trên R1 và R2, ta sẽ thấy chúng sẽ không còn thấy nhau trong bảng neighbor nữa.
Ta tiến hành cấu hình xác thực trên R2:
R2(config)#key chain R2R1chain
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string R1R2KEY
R2(config-keychain-key)#exit
R2(config-keychain)#exit
R2(config)#
R2(config)#int s2/0
R2(config-if)#ip authentication mode eigrp 100 md5
R2(config-if)#ip authentication key-chain eigrp 100 R2R1chain
Sau khi tiến hành cấu hình xong trên R2, hai router thiết lập lại quan hệ láng giềng:
Trên R1:
*Mar 1 01:16:59.851: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.2 (Serial2/0) is up: new adjacency
Trên R2:
*Mar 1 01:16:21.175: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 192.168.12.1 (Serial2/0) is up: new adjacency
Ta thực hiện cấu hình tương tự trên kết nối giữa R2 và R3:
R2(config)#key chain R2R3chain
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string R2R3KEY
R2(config-keychain-key)#exit
R2(config-keychain)#exit
R2(config)#
R2(config)#int s2/1
R2(config-if)#ip authentication mode eigrp 100 md5
R2(config-if)#ip authentication key-chain eigrp 100 R2R3chain
R3(config)#key chain R3chain
R3(config-keychain)#key 1
R3(config-keychain-key)#key-string R2R3KEY
R3(config-keychain-key)#exit
R3(config-keychain)#exit
R3(config)#
R3(config)#int s2/0
R3(config-if)#ip authentication mode eigrp 100 md5
R3(config-if)#ip authentication key-chain eigrp 100 R3chain
Trên đây, chúng ta đã cùng nhau review giao thức EIGRP – một trong ba
giao thức định tuyến được đề cập tới trong chương trình CCNA. Một số vấn
đề chính chúng ta cần phải nắm vững về EIGRP: Advanced – Distance
vector, các khái niệm được sử dụng trong giao thức, cách thức tính
metric cơ bản, cân bằng tải với EIGRP và cách thức cấu hình cơ bản trên
giao thức.
Bài review này cũng đã kết thúc chuỗi bài review về các kỹ thuật định
tuyến trong chương trình CCNA. Hy vọng rằng các bài review vừa qua giúp
ích phần nào cho các bạn đang theo học chương trình CCNA hoặc đang ôn
tập để tham gia kỳ thi lấy chứng chỉ quốc tế, cũng như các bạn đang muốn
review lại một vài nét chính cơ bản của các giao thức định tuyến của
chương trình.
Chúc các bạn thành công!