CHƯƠNG 9: GIAO THỨC ĐỊNH TUYẾN EIGRP (PHẦN 1)
EIGRP được triển khai rộng rãi và đã được mô tả đầy đủ trong khóa học CCNP BSCI. Chương này chỉ mô tả các thuật ngữ chủ chốt và các khái niệm nhưng không mô tả các chi tiết hoặc các ví dụ cụ thể của hoạt động của EIGRP trên một router. Cuối của chương này là một vài đặc điểm chủ yếu của EIGRP.
I. ĐẶC TÍNH CỦA EIGRP
Đặc điểm |
Mô tả |
Vận chuyển |
IP, giao thức số 88. Không dùng UDP hay TCP. Cơ chế phân phối đảm bảo bằng cách dùng thuật toán multicast về địa chỉ 224.0.0.10. Các router láng giềng khi nhận được gói tin multicast thì phải gửi gói tin công nhận ACK. Các gói tin được gửi theo thứ tự bằng cách dùng hai chỉ số tuần tự trong gói tin. Từng gói tin bao gồm một chỉ số tuần tự được gán bởi router gửi. Chỉ số tuần tự này gia tăng mỗi lần router gửi ra một gói tin mới. Thêm vào đó, các router gửi sẽ đặt trong gói tin chỉ số tuần tự của gói tin cuối cùng mà nó nhận được từ router đích. Trong một vài trường hợp, RTP có thể dùng cơ chế truyền không tin cậy và không có chỉ số tuần tự nào được dùng. Nếu có bất kỳ gói tin nào được gửi theo kiểu multicast nhưng không nhận được ACK, gói tin sẽ được truyền lại theo cơ chế unicast tới những router láng giềng không trả lời. Nếu một ACK không nhận được sau 16 lần truyền lại, router láng giềng sẽ được xem là đã chết. Thời gian để chờ 1 ACK trước khi chuyển từ multicast sang unicast được chỉ ra bởi thời gian luồng multicast. Thời gian giữa hai lần gửi unicast tuần tự được chỉ ra bởi thông số thời gian hết dạn truyền lại (RTO). Cả hai thời gian luồng multicast và RTO được tính toán cho từng láng giềng từ khoảng thời gian xoay vòng SRTT là khoảng thời gian trung bình, tính bằng miligiây giữa hai lần truyền một gói tin và nhận ACK. Công thức để tính giá trị chính xác của SRTT, RTO và thông số luồng multicast là độc quyền. |
Chi phí |
Dựa trên các băng thông và độ trễ. Có thể tham khảo đến tải, độ tin cậy và MTU. |
Thời gian gửi gói tin Hello |
Là khoảng thời gian mà một router gửi các thông điệp Hello trên một giao tiếp. |
Thời gian đợi |
Là khoảng thời gian được dùng để xác định khi nào một router láng giềng không còn hoạt động khi router không nhận được bất kỳ một thông điệp EIGRP nào, bao gồm cả hello. |
Địa chỉ mạng đích của thông tin cập nhật |
Thường được gửi đến 224.0.0.10. Việc truyền lại thường được gửi cho mỗi địa chỉ unicast láng giềng. |
Cập nhật toàn bộ hay cập nhật toàn phần |
Khi có một láng giềng mới, sẽ có thông điệp cập nhật đầy đủ được dùng. Nếu không, chỉ có thông điệp cập nhật từng phần. Mặc dù các thông điệp cập nhật của EIGRP vẫn là dạng vector khoảng cách truyền trực tiếp đến các láng giềng, các cập nhật loại này là không theo chu kỳ (nonperiodic), một phần (partial) và giới hạn (bounded). Không theo chu kỳ nghĩa là các cập nhật không được gửi ở các khoảng thời gian định kỳ. Thay vào đó, các cập nhật được gửi chỉ khi có chi phí thay đổi hay sự thay đổi trong sơ đồ mạng diễn ra. Một phần có nghĩa là thông điệp cập nhật chỉ bao gồm những tuyến đã thay đổi, không bao gồm mọi tuyến trong bảng định tuyến. Giới hạn có nghĩa là các cập nhật chỉ được gửi đến các router bị ảnh hưởng. Do các đặc điểm này, EIGRP dùng rất ít băng thông so với các giao thức nhóm vector khoảng cách khác. Đặc điểm này đặc biệt quan trọng trong các kết nối WAN. |
Xác thực |
Chỉ hỗ trợ kiểu xác thực MD5. |
Hỗ trợ VLSM/không phân lớp |
EIGRP có bao gồm từ địa chỉ mặt nạ mạng con trong các thông điệp cập nhật của nó, điều này giúp cho EIGRP hỗ trợ các mạng không liên tục và giải quyết được vấn đề mạng không liên tục. |
Đánh dấu tuyến |
Cho phép EIGRP đánh dấu các tuyến khi nó được quảng bá vào trong EIGRP. |
Chặng kế tiếp |
Hỗ trợ việc quảng bá các tuyến với các giá trị chặng kế tiếp khác với địa chỉ của router quảng bá. |
Tóm tắt tuyến thủ công |
Cho phép tóm tắt các tuyến ở bất kỳ trong điểm nào của mạng. |
Đa giao thức |
Hỗ trợ việc quảng bá các địa chỉ IPX và AppleTalk |
Bảng 9.1: Các đặc điểm của EIGRP
1. Một số khái niệm
Sau khi router đã được cấu hình dùng EIGRP và các cổng của nó đã ổn định, router sẽ cố gắng tìm các router láng giềng bằng cách gửi các gói tin Hello của EIGRP về địa chỉ đích là 224.0.0.10. Khi một cặp router đã nghe các thông điệp Hello, cả hai sẽ trở thành láng giềng, với giả sử là vài điều kiện chủ chốt đã đáp ứng.
Các router láng giềng sau khi đã vượt qua các phép kiểm tra trong danh sách dưới đây sẽ được xem như là láng giềng. Ở thời điểm đó, các router có thể trao đổi tuyến và sẽ được hiển thị trong kết quả của lệnh show ip eigrp neighbor.
Phải vượt qua tiến trình xác thực.
Phải có cùng chỉ số AS.
Phải tin rằng địa chỉ nguồn IP của gói tin Hello nhận được là địa chỉ chính (primary) của cổng kết nối trực tiếp trên router đó.
Giá trị hệ số K phải giống nhau.
Thuật ngữ địa chỉ chính (primary subnet) ngầm định rằng đây là địa chỉ của một cổng trên router được chỉ ra bởi câu lệnh ip address mà không có câu lệnh secondary. Một router EIGRP tìm địa chỉ IP nguồn của gói tin Hello, nếu địa chỉ nguồn là một phần của địa chỉ chính của cổng vào trên router, gói tin Hello sẽ vượt qua được phép kiểm tra của địa chỉ IP.
Cơ chế này làm cho xuất hiện một vài khả năng cần quan tâm. Ví dụ, nếu router bị cấu hình sai với các giá trị mặt nạ mạng con khác nhau, phép kiểm tra vẫn thành công. Nếu một router được cấu hình với địa chỉ 10.1.2.1/24 và router kia cấu hình 10.1.2.2/23, cả hai vẫn có thể hình thành quan hệ láng giềng, nếu tất cả các phép kiểm tra khác đều đạt. Mặc dù EIGRP vẫn hỗ trợ cơ chế địa chỉ phụ (secondary) và các mạng con, EIGRP vẫn gán địa chỉ nguồn của tất cả các thông điệp của nó bằng địa chỉ chính và địa chỉ IP của router láng giềng phải nằm trong cùng địa chỉ mạng của mạng con.
Mục cuối cùng trong danh sách các mục cần kiểm tra là các giá trị K. Các giá trị K là các hằng số định nghĩa hệ số nhân được dùng bởi EIGRP khi tính toán chi phí. Việc cài đặt có thể được thay đổi bằng lệnh metric weights tos k1 k2 k3 k4 k5. Ở chế độ mặc định, lệnh này gán giá trị 0 1 0 1 0 0, nghĩa là chỉ có băng thông và độ trễ được dùng để tính metric. Ví dụ trong chương này sẽ đổi giá trị thiết lập về 0 0 0 1 0 0, trong đó loại bỏ thông số băng thông ra khỏi việc tính toán và giúp cho khái niệm chi phí trở nên rõ ràng hơn một chút.
Bên cạnh việc đơn giản kiểm tra xem thông số đúng có được dùng hay không, các thông điệp Hello cũng được phục vụ như một cơ chế duy trì (keepalive). Các router láng giềng tiếp tục gửi gói tin Hello theo kiểu multicast dựa trên thông số hello-interval của từng cổng. Nếu một router không nghe được từng láng giềng sau một khoảng thời gian, còn được gọi là thời gian đợi của EIGRP (holdtime) cho láng giềng đó, tất cả các tuyến thông qua router láng giềng được xem là không hoạt động.
Ví dụ dưới đây mô tả một router hiển thị vài thông tin cơ bản liên quan đến hoạt động của EIGRP. Ví dụ bắt đầu bằng bốn router R1, R2, S1 và S2 trong đó chỉ có các cổng LAN chung đã hoạt động tốt để kiểm tra quá trình gửi gói Hello. Cuối của ví dụ, kết nối PVC từ R2 đến R5 sẽ được bật lên, nhưng EIGRP sẽ không hoạt động do giá trị K bị lệch.
Đầu tiên, lệnh debug sẽ được bật trên R1.
R1# debug eigrp packet hello
EIGRP Packets debugging is on
(HELLO)
Jan 11 13:27:19.714: EIGRP: Received HELLO on FastEthernet0/0 nbr 172.31.11.201
Jan 11 13:27:19.714: AS 1, Flags 0x0, Seq 0/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ
un/rely 0/0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Cổng LAN của S2 sẽ được bật lên nhưng không hiển thị. Dưới đây là một vài thông điệp sẽ xuất hiện do có lệnh interface brought up, không hiển thị lệnh eigrp log-neighbor-changes.
Jan 11 13:27:19.995: EIGRP: New peer 172.31.11.202
Jan 11 13:27:19.995: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.11.202
(FastEthernet0/0) is up: new adjacency
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Kế tiếp, chỉ có vài router trở thành quan hệ láng giềng. Các router này là các router đã vượt qua quá trình kiểm tra tất cả các thông số. Giá trị bộ định thời được hiển thị, tất cả các thông số thời gian này đều được gán về giá trị tối đa và trừ dần về 0. Thông số thời gian sẽ được tái thiết lập khi router nhận được bất cứ thông điệp nào từ láng giềng của nó. Cột H bên trái chỉ ra thứ tự trong đó các router trở thành láng giềng.
R1# show ip eigrp neighbors
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 172.31.11.2 Fa0/0 4 00:03:10 1 4500 0 233
1 172.31.11.202 Fa0/0 11 00:04:43 1 4500 0 81
0 172.31.11.201 Fa0/0 14 00:05:11 1927 5000 0 84
Dưới đây, mạch PVC giữa R2 và R5 được bật lên nhưng giá trị K của R5 không giống của R2. Cả hai thông điệp đều là các thông điệp log nhưng không có lệnh debug nào được thực hiện trên cả hai router.
Kế tiếp là thông điệp trên R5.
03:55:51: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.25.2 (Serial0) is down: K-value mismatch
Kế tiếp là thông điệp trên R2
Jan 11 13:21:45.643: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.25.5 (Serial0/0.5) is down: Interface Goodbye received
Chú ý rằng khi PVC giữa R2 và R5 được bật lên, thông điệp hiện ra trên R5 là khá rõ ràng nhưng thông điệp trên R2 thì không hiển thị bất cứ thông tin nào về giá trị K. Một vài phiên bản sau của IOS Cisco đã chỉ sai các thông điệp gán sai giá trị K như là một loại thông điệp mới có tên là Goodbye. Các thông điệp Goodbye cho các router khác thông báo cho nhau rằng nó đang hủy quan hệ một cách êm thắm. Bạn hãy nhớ rằng các thông điệp này chỉ đơn giản là kết quả của giá trị K-value không khớp nhau.
Một điều thú vị là các thông số Hello và Holdtime không cần thiết phải giống nhau cho các router quan hệ láng giềng EIGRP hình thành. Thật ra một router không dùng các thông số thời gian của chính nó khi giám sát một quan hệ láng giềng. Thay vào đó, một router dùng các thông số thời gian của láng giềng, như được trao đổi trong thông điệp Hello. Ví dụ, trong hình 9-1, R2 đã được cấu hình với các thông số Hello và Holdtime được gán bằng 2 và 6. R1 được gán các thông số tương ứng là 5 và 15. Khi R1 giám sát kết nối của nó đến R2, R1 sẽ thiết lập lại khoảng thời gian holdtime bằng 6 giây khi nhận được một thông điệp EIGRP. Với khoảng thời gian Hello bằng 2 giây, R1 liệt kê khoảng thời gian Holdtime của R2 như là một giá trị thay đổi giữa 6 và 4, với giả thiết là không có gói Hello nào bị mất.
Bạn hãy chú ý lệnh show ip eigrp neighbor trên R1 gần cuối của ví dụ. Trong tình trạng hoạt động bình thường, giá trị này thay đổi giữa 6 giây và 4 giây. Các giá trị khác mặc định bằng 5 giây và 15. Vì vậy giá trị Holdtime của R1 trong kết quả lệnh trên thay đổi giữa 15 và 10 giây cho các router láng giềng, giả sử rằng không có gói Hello nào bị mất.
2. Cập nhật EIGRP
Khi các router là láng giềng, các router có thể trao đổi các tuyến dùng các thông điệp cập nhật EIGRP. Tiến trình diễn ra theo thứ tự sau:
Ban đầu, các thông điệp cập nhật đầy đủ được gửi, bao gồm tất cả các tuyến ngoại trừ những tuyến nào bị ảnh hưởng bởi luật split horizon.
Khi tất cả các tuyến đã được trao đổi, quá trình cập nhật tạm dừng.
Các gói tin cập nhật từng phần diễn ra khi một hoặc nhiều tuyến thay đổi.
Nếu các router láng giềng bị lỗi và khôi phục lại, hoặc nếu có nhiều quan hệ láng giềng mới được hình thành, các gói tin cập nhật đầy đủ sẽ được gửi.
EIGRP dùng giao thức vận chuyển tin cậy (Reliable Transport Protocol - RTP) để gửi các thông điệp cập nhật EIGRP. EIGRP gửi cập nhật, chờ thông tin xác nhận ACK từ mỗi router nhận. Hình 9.2 mô tả một ý tưởng cơ bản trên LAN.
RTP cho phép các thông điệp cập nhật được gửi như dạng multicast. Nếu có bất kỳ router láng giềng nào không gửi ACK, RTP sẽ gửi các cập nhật như là dạng unicast chỉ đến các láng giềng này. Các bước như sau:
Bên gửi EIGRP (R1) trong ví dụ này bắt đầu một bộ định thời thời gian hết hạn truyền lại (RTO) cho từng láng giềng khi gửi các thông điệp tin cậy như cập nhật. (IOS của Cisco thực sự tính toán khoảng thời gian SRTT đến từng láng giềng và tính ra thông số thời gian RTO từ SRTT; cả hai giá trị được hiển thị trong lệnh show ip eigrp neighbor. Các giá trị này thay đổi theo thời gian).
R1 gửi ra các thông điệp cập nhật EIGRP.
R1 lưu ý các láng giềng có gửi ACK cho các thông điệp cập nhật.
Thông số thời gian RTO hết hạn trước khi router R2 gửi ACK.
R1 gửi lại thông điệp Update, lần này như dạng Unicast và chỉ đến những láng giềng không có trả lời trong khoảng thời gian RTO (là R2 trong trường hợp này).
Tiến trình này cho phép các cơ chế gửi các thông điệp cập nhật hiệu quả trong tình huống bình thường và truyền lại khi các gói ACK không đến đúng lúc.
EIGRP và RTP dùng một tiến trình công nhận đơn giản với kích thước của sổ là một thông điệp. Mỗi gói tin cập nhật có một chuỗi tuần tự, với giá trị ACK trả về xác nhận việc nhận các thông điệp bằng cách chỉ ra cùng chỉ số tuần tự đó.
Ví dụ dưới đây mô tả vị trí của thông tin về chỉ số tuần tự trong kết quả của lệnh show và debug. Trong ví dụ này, R1 thực hiện một lệnh no shut trên cổng loopback có địa chỉ là 172.31.151.1/24 trong khi R1 gửi một cập nhật quảng bá chỉ những tuyến mới.
Đầu tiên hãy chú ý lệnh show ip eigrp trên R2. Cột cuối cùng liệt kê số thứ tự được dùng cuối cùng bởi router láng giềng đó. Vì vậy R2 mong đợi R1 gửi thông điệp EIGRP để có số thứ tự 225. Ngoài ra, phép tính RTO được liệt kê cho từng láng giềng. Chú ý rằng giá trị SRTT bằng 0 cho đến khi nào có vài gói tin được trao đổi, vì SRTT được tính toán dựa trên thông số round-trip time.
R2# sh ip eigrp neighbor
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 172.31.11.1 Fa0/0 5 01:14:03 1 200 0 224
1 172.31.11.202 Fa0/0 13 01:15:36 1 200 0 92
0 172.31.11.201 Fa0/0 13 01:16:04 257 1542 0 96
Kế tiếp, lệnh debug được dùng trên R1 để kiểm tra các gói cập nhật và Ack.
R1# debug eigrp packet update ack
EIGRP Packets debugging is on
(UPDATE, ACK)
Dưới đây, cổng loopback của R1 được bật lên, địa chỉ cổng là 172.31.151.1/24. Thông điệp debug hiển thị các cập nhật của R1 và các ACK của các router khác. Chú ý các cập nhật của R1 có chỉ số tuần tự là 255 và danh sách ACK cũng liệt kê cùng một số đó sau dấu “ / ”.
Jan 11 14:43:35.844: EIGRP: Enqueueing UPDATE on FastEthernet0/0 iidbQ un/rely 0/1 serno 207-207
Jan 11 14:43:35.848: EIGRP: Sending UPDATE on FastEthernet0/0
Jan 11 14:43:35.848: AS 1, Flags 0x0, Seq 225/0 idbQ 0/0 iidbQ un/rely 0/0 serno 207-207
Jan 11 14:43:35.848: EIGRP: Received ACK on FastEthernet0/0 nbr 172.31.11.202
Jan 11 14:43:35.852: AS 1, Flags 0x0, Seq 0/225 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1
Jan 11 14:43:35.852: EIGRP: Received ACK on FastEthernet0/0 nbr 172.31.11.2
Jan 11 14:43:35.852: AS 1, Flags 0x0, Seq 0/225 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1
3. Bảng sơ đồ mạng của EIGRP
EIGRP dùng ba bảng: bảng chứa các router láng giềng, bảng sơ đồ và bảng định tuyến. Bảng láng giềng chứa các thông tin trạng thái liên quan đến láng giềng và hiển thị bằng lệnh show ip eigrp neighbor. Các thông điệp cập nhật của EIGRP sẽ lấp đầy bảng sơ đồ của EIGRP. Dựa trên thông tin của bảng sơ đồ, mỗi router sẽ chọn lựa đường đi tốt nhất và cài đặt các tuyến này vào trong bảng định tuyến.
Một router EIGRP tính toán chi phí cho từng tuyến dựa trên các thành phần của chi phí. Khi một router láng giềng quảng bá một tuyến, thông điệp cập nhật bao gồm giá trị chi phí cho từng tuyến. Router sau đó sẽ xem xét giá trị chi phí nhận được và các thiết lập chi phí của chính nó cho từng tuyến. Giá trị chi phí mặc định là giá trị cộng dồn, đơn vị là hàng chục micro giây và băng thông nhỏ nhất của toàn bộ tuyến đường, đơn vị là bit trên giây. Bằng cách thiết lập giá trị K chính xác trong câu lệnh metric weights, EIGRP cũng có thể xem xét tải, độ tin cậy và MTU. Cisco khuyến cáo không dùng các giá trị này do sự chập chờn khi các giá trị chi phí thay đổi và việc tính toán lại quá trình hội tụ.
Hình 9.3 mô tả tiến trình tổng quát liên quan đến các thành phần của chi phí trong cập nhật bảng định tuyến, hiển thị đơn vị của băng thông (bandwidth) và độ trễ (delay) với nội dung của bản cập nhật.
Một router xem xét các thiết lập độ trễ của cổng router bằng lệnh delay. Đơn vị tính của lệnh delay là hàng chục micro giây, vì vậy lệnh delay 1 sẽ gán độ trễ của một cổng là 10 micro giây.
Bởi vì các thông điệp cập nhật nhận được bao gồm các thành phần của router láng giềng, một router có thể tính toán chi phí của một tuyến của láng giềng đang quảng bá, giá trị này được gọi là khoảng cách báo cáo (Reported Distance – RD). Dĩ nhiên là một router có thể tính toán giá trị chi phí của chính nó cho một tuyến đặc biệt, sau khi đã thêm vào độ trễ của giao tiếp và xem xét có nên hiệu chỉnh giá trị băng thông giới hạn hay không. Ví dụ, ta hãy xem xét bốn bước liệt kê dưới đây:
R1 quảng bá một tuyến, với giá trị băng thông là 10.000 và độ trễ là 100.
R2 tính toán giá trị RD cho tuyến này dựa trên giá trị K nhận được.
R2 cập nhật bảng định tuyến của nó, thêm vào độ trễ 1000 bởi vì cổng của router trên đó R2 nhận cập nhật có độ trễ 1000. Nó cũng dùng băng thông mới bởi vì băng thông cập nhật (10.000) là lớn hơn băng thông của cổng vào R2 (1.544).
Cập nhật của R2 đến các láng giềng khác bao gồm các giá trị độ trễ được cộng dồn và các giới hạn băng thông mới. Giả sử giá trị K là mặc định, công thức tính toán giá trị chi phí là:
Chi phí = 256 x (107/băng thông) + 256 x độ trễ
Lệnh show ip eigrp topology liệt kê giá trị RD và các chi phí tính toán cục bộ cho toàn bộ các hàng trong bảng sơ đồ của EIGRP. Ví dụ dưới đây sẽ mô tả một vài chi tiết khi nào giá trị RD và giá trị cục bộ có thể thấy trong lệnh show.
Ví dụ dựa trên hình 9.1, trong đó tất cả các router và tất cả các cổng đều đã làm việc chính xác. Ngoài ra, để giữ đơn giản, lệnh delay đã được dùng để gán tất cả các liên kết có độ trễ bằng 1 (LAN), delay 2 (WAN) hoặc delay 3 (loopback). Ngoài ra, lệnh metric weights 0 0 0 1 0 0 được dùng trên từng router, loại bỏ băng thông ra khỏi quá trình tính toán chi phí, làm cho việc tính toán chi phí có thêm 1 chút ý nghĩa trong kết quả lệnh.
Đầu tiên, các số trong dấu ngoặc này hiển thị cách tính chi phí của R1, sau đó là một dấu “ / ”, và sau đó là giá trị RD. Ví dụ, S1 quảng bá tuyến đường đến 211.0/24, trong đó R1 tính toán chi phí về S1 là 768. Giá trị độ trễ delay 3 được gán trên cổng loopback của S1 (là địa chỉ 211.0/24), vì vậy giá trị chi phí là 3x256=768. R1 sẽ thêm vào độ trễ bằng 1 để ra giá trị chi phí là 4x256=1024.
R1# show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(172.31.16.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 172.31.151.0/24, 1 successors, FD is 768
via Connected, Loopback1
P 172.31.211.0/24, 1 successors, FD is 1024
via 172.31.11.201 (1024/768), FastEthernet0/0
P 172.31.24.0/30, 1 successors, FD is 768
via 172.31.11.2 (768/512), FastEthernet0/0
via 172.31.14.2 (1024/512), Serial0/0.4
Dưới đây, giá trị trong bảng định tuyến IP sẽ so trùng với số đầu tiên trong ngoặc, cũng như đúng bằng với giá trị được liệt kê trong “FD is”.
R1# show ip route
! omitted legend for brevity
172.31.0.0/16 is variably subnetted, 9 subnets, 2 masks
D 172.31.211.0/24 [90/1024] via 172.31.11.201, 00:29:42, FastEthernet0/0
D 172.31.24.0/30 [90/768] via 172.31.11.2, 00:29:44, FastEthernet0/0
! Lines omitted for brevity
Lệnh show ip eigrp topology liệt kê vài khái niệm và thuật ngữ quan trọng liên quan đến cách thức EIGRP chọn lựa giữa những đường đi tốt nhất đến cùng một mạng. Đầu tiên, thuật ngữ khoảng cách khả thi (feasible distance - FD) muốn mô tả đến giá trị chi phí tốt nhất tính toán được giữa tất cả các tuyến đến một mạng nào đó. Giá trị FD được liệt kê là x trong kết quả lệnh. Tuyến đường có giá trị FD tốt nhất được gọi là tuyến ưu tiên (successor route) và nó được đưa vào bảng định tuyến. Giá trị chi phí của tuyến ưu tiên được gọi là khoảng cách khả thi sao cho chi phí là giá trị được hiển thị trong bảng định tuyến. Các thuật ngữ khác liên quan đến tiến trình EIGRP hội tụ sẽ được giải thích kế tiếp.
4. Quá trình hội tụ của EIGRP
Khi tất cả các router chạy EIGRP đã học tất cả các tuyến trong mạng và đặt các tuyến ưu tiên vào bảng định tuyến, tiến trình EIGRP đơn giản tiếp tục gửi Hello, mong đợi nhận Hello từ láng giềng. Router quan tâm mọi sự thay đổi bất kỳ trong mạng. Khi những sự thay đổi này diễn ra, EIGRP phải hội tụ để dùng những đường đi tốt nhất. Ba thành phần chính được khảo sát trong phần này: các sự kiện vào, tính toán nội bộ và quá trình truy vấn để tìm ra các đường đi dự phòng. Bảng dưới đây liệt kê ra vài thuật ngữ EIGRP chủ chốt liên quan đến quá trình hội tụ.
Chức năng hội tụ của EIGRP |
Mô tả |
Khoảng cách báo cáo RD |
Chi phí của một tuyến được quảng bá bởi router láng giềng |
Khoảng cách khả thi FD |
Giá trị chi phí cho đường đi ngắn nhất về một mạng nào đó. |
Điều kiện khả thi |
Đây là trường hợp mà giá trị RD của một tuyến thì nhỏ hơn FD khi có nhiều tuyến đến một mạng con tồn tại. |
Tuyến ưu tiên |
Tuyến đi về mạng đích trong đó chi phí thấp nhất. |
Tuyến dự phòng |
Là một tuyến không phải là tuyến tối ưu nhưng thoả mãn điều kiện khả thi có thể được dùng khi tuyến chính bị lỗi, mà không gây ra vòng lặp định tuyến. |
Sự kiện tác động |
Bất kỳ sự kiện nào có thể làm thay đổi bảng sơ đồ của EIGRP. |
Tính toán cục bộ |
Phản ứng của một router chạy EIGRP, dẫn đến việc sử dụng các tuyến dự phòng hoặc đưa tuyến về trạng thái truy vấn. |
Bảng 9.2: Các thông số tính toán tuyến tối ưu của EIGRP
Các sự kiện tác động và tính toán cục bộ
Một router chạy EIGRP cần phải phản ứng khi có một biến cố xảy ra. Một biến cố rõ ràng nhất là khi router học được một mạng mới thông qua các cập nhật định tuyến, hoặc khi một cổng của router bị hỏng hoặc router láng giềng gặp sự cố.
Bởi vì EIGRP gửi cập nhật như là kết quả của những thay đổi hay các thông tin mới về sơ đồ, một router phải xem xét các cập nhật và quyết định nếu có bất kỳ tuyến nào của nó đã thay đổi.
Khi một biến cố xảy ra để chỉ ra rằng một tuyến đã bị lỗi, router thực hiện một phép tính toán nội bộ, là một thuật ngữ để chỉ một quá trình có thể cô đọng lại thành một thuật toán đơn giản. Nói một cách ngắn gọn, kết quả của phép tính này là router sẽ có khả năng thay thế một tuyến một cách cục bộ mà không cần hỏi router láng giềng hoặc không cần yêu cầu láng giềng trợ giúp.
Đối với một tuyến bị mất, phép tính cục bộ thực hiện những việc sau:
Nếu FS tồn tại, hãy đặt tuyến FS vào trong bảng định tuyến và gửi cập nhật đến những láng giềng để thông báo về tuyến mới.
Nếu không có FS tồn tại, chủ động truy vấn những router láng giềng những thông tin về tuyến mới.
Để là một tuyến FS, một tuyến phải thoả mãn điều kiện khả thi, được định nghĩa như sau: Giá trị RD phải nhỏ hơn giá trị FD hiện hành của một tuyến trong router. Việc tính toán nội bộ được hiểu tốt nhất bằng cách xem xét một ví dụ.
Hình 9.4 hiển thị cùng một sơ đồ mạng như ví dụ trước, nhưng với giá trị độ trễ như được chỉ ra. Ví dụ bắt đầu với R4 dùng một tuyến tối ưu đến 172.31.211.0/24, thông qua R1. R4 cũng có một tuyến FS về 172.31.211.0/24 thông qua R2. Ví dụ cho thấy điều gì xảy ra khi PVC từ R1 đến R4 bị lỗi và quan hệ giữa R4 và R1 lỗi làm cho R4 thực hiện phép tính toán nội bộ và bắt đầu sử dụng các tuyến FS của nó thông qua R2.
Chú ý rằng router không dùng băng thông trong quá trình tính toán chi phí của EIGRP, vì vậy tất cả các chi phí trong ví dụ này đều là bội số của 256.
R4# show ip route
! lines omitted for brevity
172.31.0.0/16 is variably subnetted, 9 subnets, 2 masks
D 172.31.211.0/24 [90/2048] via 172.31.14.1, 00:01:46, Serial0/0.1
Dưới đây, giá trị FD được liệt kê như là 2048. Các tuyến là tối ưu cũng có cùng giá trị chi phí là 2048. Giá trị thứ hai là RD trên R1 (1280). Hàng thứ hai trong bảng sơ đồ cho tuyến này liệt kê giá trị 2560, RD 1280 với RD trong hàng thứ hai sẽ nhỏ hơn FD, với tuyến thứ hai này sẽ thõa mãn điều kiện khả thi, làm cho nó trở thành tuyến FS.
R4# show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(172.31.104.4)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
! lines omitted for brevity
P 172.31.211.0/24, 1 successors, FD is 2048
via 172.31.14.1 (2048/1280), Serial0/0.1
via 172.31.24.2 (2560/1792), Serial0/0.2
Kế tiếp, R4 mất quan hệ láng giềng với R1. Xem kết quả của lệnh debug.
R4# debug eigrp fsm
EIGRP FSM Events/Actions debugging is on
Jan 12 07:17:42.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.14.1 (Serial0/0.1) is down: holding time expired
Dưới đây, thông điệp debug đã được làm gọn lại chỉ để hiển thị những thông điệp liên quan đến tuyến đường 172.31.211.0/24. R4 tìm kiếm một FS, tìm ra nó và sau đó thay thế các tuyến tối ưu cũ bằng FS, sau đó gửi cập nhật cho láng giềng về tuyến đường mới.
Jan 12 07:17:42.399: DUAL: Destination 172.31.211.0/24
Jan 12 07:17:42.399: DUAL: Find FS for dest 172.31.211.0/24. FD is 2048, RD is 2048
Jan 12 07:17:42.399: DUAL: 172.31.14.1 metric 4294967295/4294967295
Jan 12 07:17:42.399: DUAL: 172.31.24.2 metric 2560/1792 found Dmin is 2560
Jan 12 07:17:42.399: DUAL: Removing dest 172.31.211.0/24, nexthop 172.31.14.1
Jan 12 07:17:42.403: DUAL: RT installed 172.31.211.0/24 via 172.31.24.2
Jan 12 07:17:42.403: DUAL: Send update about 172.31.211.0/24. Reason: metric chg
Jan 12 07:17:42.403: DUAL: Send update about 172.31.211.0/24. Reason: new if
Cuối cùng, hãy lưu ý rằng giá trị FD là không thay đổi. Giá trị FD không bao giờ tăng cho tới khi nào tuyến bị rơi vào trạng thái truy vấn (active). Các thông tin về tuyến mới được đặt vào trong bảng định tuyến.
R4# show ip eigrp topology
! lines omitted for brevity
P 172.31.211.0/24, 1 successors, FD is 2048
via 172.31.24.2 (2560/1792), Serial0/0.2
R4# show ip route
! Lines omitted for brevity
D 172.31.211.0/24 [90/2560] via 172.31.24.2, 00:00:25, Serial0/0.2
Tuyến rơi vào tình trạng truy vấn
Một nhánh thứ hai trong thuật toán tính toán nội bộ làm cho EIGRP hỏi các láng giềng của nó về đường đi tốt nhất về một mạng, hy vọng là tìm ra một đường đi dự phòng về mạng đó. Khi không có FS nào được tìm thấy, EIGRP sẽ đưa tuyến về trạng thái truy vấn. Going active là một thuật ngữ để chỉ quá trình chuyển trạng thái của một tuyến sang truy vấn. Khi router ở trạng thái truy vấn, EIGRP sẽ phát tán các thông điệp truy vấn đến các láng giềng của nó, hỏi rằng các láng giềng có một tuyến hợp lệ đến mạng con đó không. Các router láng giềng phải trả lời bằng các gói tin EIGRP trả lời (Reply) ngược về router nguồn, chỉ ra rằng nó có một đường đi về mạng đó hay không. Khi router đã nhận thông điệp trả lời từ tất cả các láng giềng để gửi thông điệp truy vấn, router cập nhật bảng sơ đồ của nó với tất cả các thông tin mới nhận được, tính toán lại chi phí cho bất kỳ tuyến nào đã biết và chọn lựa các tuyến tối ưu mới. Dĩ nhiên nếu không có tuyến nào về mạng đó được tìm thấy, router này chỉ đơn giản không thêm tuyến đó vào trong bảng định tuyến.
Chú ý thuật ngữ active muốn ám chỉ đến một tuyến mà router đang dùng tiến trình truy vấn để tìm ra đường đi dự phòng. Ngược lại, một tuyến trong trạng thái passive khi nó không trong trạng thái active.
Các router láng giềng xem bất kỳ một thông điệp truy vấn nào như một biến cố. Trạng thái của từng router láng giềng khi nhận một thông điệp truy vấn có thể được tóm tắt như sau:
Bước 1: Nếu router không có một hàng trong bảng sơ đồ mạng đi về mạng con đó, router gửi ra một gói tin EIGRP trả lời chỉ ra rằng nó không có tuyến.
Bước 2: Nếu tuyến tối ưu của mạng con đó trên router đó là không thay đổi, hoặc nếu có một FS là tìm thấy, láng giềng sẽ gửi ngược lại một thông điệp EIGRP trả lời, chứa các thông tin chi tiết của tuyến.
Nếu các điều kiện trong bước 1 hoặc 2 không tồn tại, chính router đó sẽ đưa tuyến vào trạng thái truy vấn và bỏ các trả lời đến các thông điệp truy vấn ban đầu cho đến khi nào tất cả các láng giềng của nó trả lời.
Chú ý rằng cơ chế trong bước thứ 3 có thể dẫn đến một tuyến sẽ trong tình trạng truy vấn truy vấn mà không bao giờ hoàn tất. Các tuyến trong trạng thái truy vấn quá lâu sẽ bị xem như là bị mắc vào trạng thái truy vấn (stuck-in-active). Các khái niệm liên quan sẽ được mô tả trong phần kế tiếp.
Ví dụ dưới đây hiển thị quá trình truy vấn. Ví dụ bắt đầu một lần nữa với giả thiết là R4 mất tình trạng quan hệ láng giềng của nó đến R1. Trong trường hợp này, phép tính cục bộ của R4 sẽ không tìm thấy một FS cho những tuyến đường đi về mạng 172.31.151.0/24 đã mất, vì vậy tuyến này đi vào trạng thái truy vấn.
Đầu tiên lệnh show ip eigrp topology chỉ liệt kê những tuyến dạng tối ưu và không hiển thị tuyến FS. Lệnh này không liệt kê các tuyến không phải là FS.
R4# show ip eigrp topo
! Lines omitted for brevity
P 172.31.151.0/24, 1 successors, FD is 1536
via 172.31.14.1 (1536/768), Serial0/0.1
Dưới đây, lệnh show ip eigrp topology all-links bao gồm tất cả các tuyến không phải FS về mạng 151.0/24 thông qua R2. Chú ý rằng giá trị RD của tuyến không phải FS là 1792, lớn hơn 1536.
R4# show ip eigrp topology all-links
! Lines omitted for brevity
P 172.31.151.0/24, 1 successors, FD is 1536, serno 175
via 172.31.14.1 (1536/768), Serial0/0.1
via 172.31.24.2 (2560/1792), Serial0/0.2
Kế tiếp, lệnh debug được bật lên và R4 mất quan hệ láng giềng R1.
R4# debug eigrp fsm
Jan 12 07:16:04.099: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.14.1 (Serial0/0.1) is down: holding time expired
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Dưới đây, R4 tìm kiếm một tuyến FS về 172.31.151.0/24 và không tìm thấy tuyến nào. Vì vậy nó đi vào trạng thái truy vấn. R4 gửi ra một truy vấn đến tất cả những láng giềng còn lại và theo dõi số thông điệp truy vấn đã gửi ra. Khi nhận được trả lời từ R2, nó có thể cập nhật bảng sơ đồ mạng của nó và lập lại quá trình tính toán nội bộ. Sau đó router sẽ dùng đường đi tốt nhất thông qua R2.
Jan 12 07:17:42.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 172.31.14.1 (Serial0/0.1) is down: holding time expired
Jan 12 07:17:42.391: DUAL: linkdown: start - 172.31.14.1 via Serial0/0.1
Jan 12 07:17:42.391: DUAL: Destination 172.31.151.0/24
Jan 12 07:17:42.391: DUAL: Find FS for dest 172.31.151.0/24. FD is 1536, RD is 1536
Jan 12 07:17:42.395: DUAL: 172.31.14.1 metric 4294967295/4294967295
Jan 12 07:17:42.395: DUAL: 172.31.24.2 metric 2560/1792 not found Dmin is 2560
Jan 12 07:17:42.395: DUAL: Dest 172.31.151.0/24 entering active state.
Jan 12 07:17:42.395: DUAL: Set reply-status table. Count is 1.
Jan 12 07:17:42.395: DUAL: Not doing split horizon
Jan 12 07:17:42.459: DUAL: rcvreply: 172.31.151.0/24 via 172.31.24.2 metric 2560/1792
Jan 12 07:17:42.459: DUAL: reply count is 1
Jan 12 07:17:42.459: DUAL: Clearing handle 0, count now 0
Jan 12 07:17:42.463: DUAL: Freeing reply status table
Jan 12 07:17:42.463: DUAL: Find FS for dest 172.31.151.0/24. FD is 4294967295, RD is 4294967295 found
Jan 12 07:17:42.463: DUAL: Removing dest 172.31.151.0/24, nexthop 172.31.14.1
Jan 12 07:17:42.463: DUAL: RT installed 172.31.151.0/24 via 172.31.24.2
Jan 12 07:17:42.467: DUAL: Send update about 172.31.151.0/24. Reason: metric chg
Jan 12 07:17:42.467: DUAL: Send update about 172.31.151.0/24. Reason: new if
Kế tiếp, chú ý rằng bởi vì R4 truy vấn đến các tuyến, vì vậy FD có thể thay đổi
R4# show ip eigrp topo
IP-EIGRP Topology Table for AS(1)/ID(172.31.104.4)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 172.31.151.0/24, 1 successors, FD is 2560
via 172.31.24.2 (2560/1792), Serial0/0.2
Trong ví dụ này có một chú ý đặc biệt. Hãy xem các thông điệp debug bắt đầu bằng “Dual: rcvreply:”. Thông điệp này có nghĩa là router đã nhận một thông điệp trả lời EIGRP, trong trường hợp này là R2. Thông điệp bao gồm các thông tin định tuyến hợp lệ của R2 về mạng 172.31.151.0/24. Cũng lưu ý rằng giá trị FD được tính toán lại. Điều này khác với ví dụ trước, lúc đó tuyến FS được tìm thấy.
Trạng thái bị mắc ở tình trạng truy vấn
Bất kỳ router nào trong trạng thái truy vấn phải chờ cho thông điệp trả lời của từng thông điệp truy vấn. Một router có thể phải chờ vài phút để có thể nhận được tất cả các truy vấn, bởi vì tất cả các router láng giềng có thể cần đi vào trạng thái truy vấn và sau đó các router láng giềng cũng có thể cần phải vào trạng thái truy vấn và cứ thế tiếp tục. Mỗi láng giềng sẽ giữ các thông điệp trả lời cho đến khi nào nó nhận đầy đủ các thông điệp trả lời.
Trong trạng thái hoạt động bình thường, tiến trình này phải hoàn tất. Để quản lý các trường hợp ngoại lệ, EIGRP có bao gồm một thông số thời gian được gọi là thời gian truy vấn, giới hạn tổng số thời gian trong đó một tuyến có thể trong trạng thái truy vấn. Nếu thời gian truy vấn bị hết trước khi một router nhận được tất cả các thông điệp trả lời, router sẽ đặt tuyến đó trong trạng thái stuck-in-active.
Router cũng sẽ hủy quan hệ với các láng giềng nào mà nó không nhận được thông điệp trả lời, vì nghĩ rằng bất kỳ láng giềng nào không gửi ra một thông điệp trả lời có nghĩa là có vấn đề. Trong một vài điều kiện các hệ thống mạng lớn, dự phòng cao, các cổng chập chờn hoặc mạng bị mất gói tin, các router láng giềng làm việc tốt nhưng các thông điệp trả lời của nó có thể không hoàn tất trong khoảng thời gian truy vấn. Để tránh tình trạng tuyến trong trạng thái stuck-in-active và mất tất cả các tuyến từ một láng giềng có thể vẫn trong tình trạng hoạt động, bạn có thể tắt thông số thời gian truy vấn bằng cách dùng lệnh timers active-time disabled trong chế độ cấu hình router.
Giới hạn tầm vực truy vấn
Mặc dù việc tắt thời gian truy vấn có thể ngăn ngừa các tuyến stuck-in-active, một giải pháp tốt hơn cho việc chờ đợi kéo dài các thông điệp trả lời là giới hạn tầm vực của thông điệp truy vấn. Bằng cách giảm số láng giềng nhận được thông điệp, và bằng cách giới hạn số chặng mà các thông điệp truy vấn đến, bạn có thể giảm thời gian yêu cầu để nhận tất cả các thông điệp trả lời.
Có hai phương thức có thể được dùng để giới hạn tầm vực truy vấn. Phương thức thứ nhất là dùng tóm tắt tuyến. Khi một gói tin truy vấn đến một router đã có tuyến tóm tắt nhưng không có tuyến cụ thể đang bị truy vấn, router ngay lập tức sẽ trả lời rằng nó không có tuyến đó. Ví dụ, một router có tuyến 172.31.0.0/16 trong bảng sơ đồ, sau khi nhận được truy
Thông tin khác