PDA

View Full Version : Avoiding Loops with Distance Vector Protocol



huytn
07-06-2003, 11:21 AM
Bạn nào biết có thể giải thích sơ cho mình cơ chế hoạt động của các giải pháp nhằm tránh "loop" trong giải thuật Distance Vector như: Split Horizon, Route poisoning, Hold-down timer, Triggered Update.
Thân chào, cảm ơn trước bạn nào sẽ trả lời :roll:

Mikami
07-06-2003, 02:31 PM
Trước khi nói về các solution cho routing loop , ta hãy bàn về routing loop là gì :
( Mời bạn xem cái topology được attach theo bài này )

1. Trước khi network 1 bị down thì thì tất cả router đều xem đường route tới network là GOOD. Và router C nhận định rằng muốn tới network 1 thì fải qua router B ( metric đây là 3 ( ví dụ ta chạy RIP )

2.Khi network 1 bị down xuống thì router E mới gửi 1 bản update tới A là : N1 down rồi. Nhưng router B C D không biết. Nhưng B và D có thể nhận biết được N1 down 1 cách nhanh chónh vì nó connect trực tiếp tới A nên nhận update nhanh hơn. Tuy nhiên do C không nhận được update là N1 down nến vẫn gửi 1 bản update tới B và D là đường tới N1 vẫn GOOD. Và như thế B và D update lại bản routing table của mình là N1 vẫn good. Như thế là sai và quá trình này cứ lặp đi lặp lại( vì A sẽ gửi lại 1 update nói với B và D rằng la N1 vẫn good) ===> routing loop

Nguyên nhân :
1. Chúng ta thấy rằng nguyên nhân routing loop là B và D có thể nhận được update từ A còn C thì không , bởi vì 1 "HÔI TỤ CHẬM" ( SLOW CONVERGENCE)

Vậy convergence là gì : sau khi topology change thì tất cả router cần 1 time để tính toán lại các đường route của mình, và quá trình và thời gian đó gọi là TIME TO CONVERGENCE

Bây giờ ta bắt đầu nói vê các solution để tránh loop :

1. SPLIT HORIZON :là solution mô tả rằng khi nhận update về Network nào thì sẽ không gửi ngược lại những bản update về Network đó.
Cũng dựa vào topologyy trên : router B và D nhận update về N1( down) sẽ không gửi lại update về N1(up, sau khi nhận được từ C ) tới cho router A.

2. HOLD DOWN TIMER
- Cũng với topology trên ta thấy rằng 1 packet cứ đi từ C tới B ( vì nó cho rằng muốn tới N1 fải qua B và metric là 4 , nhưng khi tới B thì nó lại hiểu rằng là đường tới N1 đã down , nhung cùng lúc đó B lại nhận được update từ C rằng đường tới N1 vẫn good thông qua đường route là D ( mặc dù metric đã tằng lên là 5 nhưng vẫn fải đi vì không đi thì lấy đường nào mà đi tới N1 ) Cứ như thế metric tới 1 lúc nào đó sẽ là infinity
- Để giải quyết vấn đề này có 1 giải fáp là Hold-Down Timer : nghĩa là mỗi packet được set cho time , và sau time đó mà không tới thì sẽ bị crop.
- Và HD Timer sẽ được reset lại trong các trường hợp sau đấy :
+ Khi router nhận được update từ 1 neighbor ( mà hồi nãy đã gửi 1 update về 1 network nào đó down ) bây giờ thì network đó good.
+ Nhận được 1 update với metric tốt hơn về network nào đó từ những neighbor khác.

3. POSION REVERSE UPDATE :
Là bản update đặc biệt được gửi từ router connect với 1 network down tới các router neighbor của mình ( khong bao gồm router có network bị down ) rằng đường route tới network đó là infinity

4. TRIGGER UPDATE :
Là bản update được gửi tới các router chỉ ra rằng giảm tỷ lệ update định kỳ giữa các router để làm tăng tốc độ hội tụ ( speed up convergence )


http://www.vnpro.org/forum/download.php?id=16

bestirboy
15-11-2003, 10:15 AM
1. SPLIT HORIZON :là solution mô tả rằng khi nhận update về Network nào thì sẽ không gửi ngược lại những bản update về Network đó.
Cũng dựa vào topologyy trên : router B và D nhận update về N1( down) sẽ không gửi lại update về N1(up, sau khi nhận được từ C ) tới cho router A.





Mikami có nhầm không nhỉ? Network hay interface? bản update đi ra từ int nào thì không quay về int đấy chớ không phải net. Đúng không nào?

phieudu
15-11-2003, 10:35 AM
mình nghĩ là các interface trên router thực ra cũng là một mạng riêng ,bạn cấu hình trên router thì thường là các interface này được gán các subnet khác nhau ,ko có 2 interface nào cùng một subnet ,cũng có thể hiểu là 2 interface thuộc 2 mạng khác nhau được chứ.

TageOniR
15-11-2003, 04:55 PM
Mình có thắc mắc thế này , khi network giữa A và E up trở lại , A sẽ gửi thông tin triggered update đến B và D để báo rằng network đó đã up trở lại . Lúc này , B và D nhận được thông tin và vì sao nó phải đợi hết holddown timer mới up routing đến network đó trở lại chứ không update liền . Có phải lúc đó , B và D đều thấy metric của routing đến network đó vẫn như cũ , không tốt hơn metric cũ ( metric trước lúc network đó down ) nên không update liền không?
Theo mình nghĩ , các router B và D có thể update liền được bởi vì thông tin từ A rất trustworthy ???

bestirboy
15-11-2003, 05:10 PM
2. HOLD DOWN TIMER
- Cũng với topology trên ta thấy rằng 1 packet cứ đi từ C tới B ( vì nó cho rằng muốn tới N1 fải qua B và metric là 4 , nhưng khi tới B thì nó lại hiểu rằng là đường tới N1 đã down , nhung cùng lúc đó B lại nhận được update từ C rằng đường tới N1 vẫn good thông qua đường route là D ( mặc dù metric đã tằng lên là 5 nhưng vẫn fải đi vì không đi thì lấy đường nào mà đi tới N1 ) Cứ như thế metric tới 1 lúc nào đó sẽ là infinity
- Để giải quyết vấn đề này có 1 giải fáp là Hold-Down Timer : nghĩa là mỗi packet được set cho time , và sau time đó mà không tới thì sẽ bị crop.
- Và HD Timer sẽ được reset lại trong các trường hợp sau đấy :
+ Khi router nhận được update từ 1 neighbor ( mà hồi nãy đã gửi 1 update về 1 network nào đó down ) bây giờ thì network đó good.
+ Nhận được 1 update với metric tốt hơn về network nào đó từ những neighbor khác.



Bạn đọc lại đoạn này sẽ hiểu ngay mà. Metric khi mà Network 1 up trở lại sẽ nhỏ hơn metric hiện tại bởi vì metric hiện tại là infinity.

Chia sẻ cùng bạn!

TageOniR
16-11-2003, 02:19 AM
Mình không nghĩ khi so sánh metric thì sẽ so sánh với infinity ( bởi vì đã là infinity thì luôn luôn lớn hơn rồi đâu cần phải đưa ra 1 case như vậy ??). Trong ICND có nhắc đến originally recorded ( p.270 607 Step 2)có nghĩa là sao ???

Holddown timer có phải set để remove update đâu đúng không ??Mình nghĩ Holddown được set để keep state của routing trên router ( chẳng hạn là possibly down )
Mong được hiểu kỹ hơn , cám ơn bạn nhiều !

it_email
16-11-2003, 11:47 AM
Uh!Đúng là holdtime dùng để giữ tình trạng routing trên router.
Với posion reverse update thì vẫn áp dụng cơ chế split horizon,trigger update thì bỏ cơ chế này.

nguyenthanhtung32
12-01-2004, 07:59 AM
Mong nhận được ý kiến các bạn.

mình vừa học xong các solution chống loop trong kĩ thuật dynamic routing table.

ờ đay có 4 solution: max, split, poisson reverse, update.
theo mình nghĩ không cần thiết phải sử dụng poisson reverse bởi bản thân của slip và update đã giải quyết được vấn đề của poisson reverse rồi.
mong nhận được ý kiến

sinhvienngheo
13-01-2004, 05:33 PM
hi

thử xem một thảo luận của mikami và it-email. Nếu bạn ko rõ thì bạn quay lại thread này đặt câu hỏi tiếp nha.

http://vnpro.org/forum/viewtopic.php?t=252

mến,

nguyenthanhtung32
15-01-2004, 05:24 AM
cám ơn bạn đã giúp mình xem xong bài của bạn mikami và mình hiểu như thế này có một số điểm không giống với bạn mikami.
theo giáo trình slide ICND thì mình hiểu như sau: (xin chomột chút hình tượng để thêm phần thú vị)
-max hop count : dùng để tránh việc matrix của 1 entry trong routing table cứ lòng vòng tăng mãi khi có hiện tượng loop xảy ra trong topology
-để tăng cường thêm cho mac hop count, slip horizon dùng để báo rằng đừng gởi “tình yêu (entry trong routing table ) của anh ấy lại cho anh ấy (router)” vì “anh ấy không hợp với mình”
-vấn đề nằm chỗ này đây ( chuyện đời khó nói) poisson reverse : dám gởi “tình yêu” lại cho “người mình không yêu” hahahaha phá vỡ plit horizon!!!. Để báo rằng “tình yêu ấy không hy vọng thôi hãy quên em đi” (rút entry ra khỏi routing table)
-hold timer: lại phà cỡ poisson reverse, “lại chờ tình yêu của người đã quên mình hy vong rằng anh ấy lại nhớ tới mình”(thật ra đó là thời gian chờ xem một network trong topology có thật sự bi down hay không hay là nó sẽ up lại ngay sau đó
-trigger update : gởi ngay những “tình yêu mới nhận được để bà con cùng yêu cho nó vui” (gởi ngay routing table cho những neighbors khi có sự thay đổi của topology)
mong nhận đuợc ý kiến

BlackTSB
15-01-2004, 08:23 AM
không có sự trùng lặp hay xung đột trong vấn đề này...thời gian thực hiện của các solution là khác nhau nên no ko hề trùng lặp nhau.

nguyenthanhtung32
15-01-2004, 02:56 PM
ở đây mình muốn nói tại sao theo plit horizon thì không đuợc phép gởi lại cho router những entry mà router này đã gởi cho mình những poisson reverse lại gởi ngược lại

SKijuto
16-01-2004, 09:10 AM
hãy xem plit horizon là một phó thường dân và đi trên đường 1 chiều (cannot reversed), phải tuân thủ luật pháp, gặp đèn đỏ thì phải dừng lại chờ (holdowntime).

Còn poisson reverse là xe cảnh sát, khi cần thiết (update) có quyền chạy mọi ngã, kể cả vượt đèn đỏ (và tiện tay cũng reset lại đèn đỏ luôn).

nguyenthanhtung32
19-01-2004, 09:48 AM
the co ban nao giai thich y nghia that su cua poisson reverse khong??

minhtit
19-01-2004, 12:06 PM
Hi,

Mình thử giải thích nôm na thế này: Giả sử trước đây bạn biết một route từ A đến B, và tại một thời điểm nào đó bạn không biết route đó nữa. Có hai cách để bạn thông báo điều này tới hàng xóm:
- Cách 1: Im lặng, không nói gì. Sau một khoảng thời gian nào đó, mọi người sẽ "tự hiểu" là bạn không biết đường từ A tới B.
- Cách 2: Bạn la toáng lên là "tôi không biết đường đâu" ==> mọi người "biết ngay" là bạn không biết đường và tìm cách khác nếu có thể (KHÔNG PHẢI CHỜ).

Đối với các topology đơn giản thì điều này không có ý nghĩa gì lớn lắm, tuy nhiên nếu mạng phức tạp lên thì các distance-vector routing protocol sẽ gây ra nhiều vấn đề liên quan đến loop. Nguyên nhân chủ yếu theo mình là do thời điểm cập nhật/quảng bá route trên các router là khác nhau. Do vậy việc đưa thông tin chính xác càng sớm càng tốt sẽ loại bỏ phần nào được các nguy cơ tiềm ẩn của việc tạo loop trong mạng.

Hi vọng giải thích này có thể giúp bạn.
Chúc vui vẻ.

nguyenthanhtung32
19-01-2004, 06:32 PM
cam on , mình hiểu rồi

lehuytoan
28-01-2004, 08:41 AM
4. TRIGGER UPDATE :
Là bản update được gửi tới các router chỉ ra rằng giảm tỷ lệ update định kỳ giữa các router để làm tăng tốc độ hội tụ ( speed up convergence )

Mikami, mình đọc trong sách về Triggered updates như sau:
Distance vector protocols typically send updates based on a regular update interval. However, most looping problems occur when a route fails, particularly when some routers have not heard the bad news! Therefore, some distance vector protocols send Triggered updates, also known as flash updates, meaning that the router send the new updates as soon as a route fails.
Mình hiểu là trigger updates là bản update được gửi ngay khi có route bị fail, không cần chờ đến thời gian định kỳ để gửi update. Nó không phải là bản update yêu cầu giảm tỷ lệ update định kỳ, vì mình nghĩ sau bản trigger update thì thời gian update định kỳ vẫn giữ nguyên hay nói cách khác là giá trị update timer không thay đổi.
Mong được hiểu thêm.

lehuytoan
28-01-2004, 09:20 AM
Tôi có một thắc mắc là:
Có phải Holddown timer chỉ được kích hoạt sau khi router nhận được một route với metric là infinity?
Theo như tôi biết thì trong bản update chỉ có 2 thông tin là subnet number và metric, mình không hiểu set time cho mỗi bản update là như thế nào. Làm sao biết là time đã hết để crop nó???

- Để giải quyết vấn đề này có 1 giải fáp là Hold-Down Timer : nghĩa là mỗi packet được set cho time , và sau time đó mà không tới thì sẽ bị crop.

Không biết khi không có route nào được update với metric là infinity thì holddown timer có được sử dụng không???
Mong nhận được câu trả lời sớm. :roll: :roll:

minhtit
28-01-2004, 02:24 PM
Hi,

Hơ hơ, tớ cũng nghe nói "triggered update" và "hold-down timer" chỉ liên quan đến failed route thôi. Chắc là như vậy, vì chỉ việc update vòng quanh cho thằng failed route mới gây loop.

nhaque321
29-03-2004, 04:41 PM
Woooh, mình chui vô thread này muộn quá! Cho mình có một chút ý kiến như sau:
Về vấn đề Tại sao phải có các biện pháp chống loop?, Mikami đã nói rõ ràng rồi. Sau đây là ý kiến của mình về các giải pháp chống loop (sử dụng hình do Mikami cung cấp)

1. Route poisoning:
----- Khi một router phát hiện ra một route R bị down (router không nhận được bản tin update từ router neighbor mà từ đó nó học được route R), router sẽ đặt giá trị metric của route R bằng infinite và gửi đi trong bản tin cập nhật định tuyến để thông báo với các router trên mạng rằng route R unreachable.
----- Trong hình vẽ, router E không nhận được thông tin về route đến N1, nó đặt metric của route đến N1 là infinite rồi gửi đi trong bản tin định tuyến. Đồng thời, E hủy bỏ route đến N1 trong bảng định tuyến của nó.

2. Split horizon:
----- Split horizon được sử dụng để đảm bảo rằng thông tin về một route do một router phát ra không quay lại chính nó. Ví dụ, khi network 1 chưa down, router E gửi thông tin update đến router A. Router A sẽ không gửi lại thông tin update đến N1 quay lại E vì nếu làm như thế, đương nhiên E sẽ không dùng thông tin đó ==> lãng phí. Còn trong trường hợp route bị poison ==> Do có Split horizon, thông tin về route đến N1 không bị lặp đi lặp lại trên link giữa A và E (count-to-infinite)
----- Split horizon with Poison reverse: Bình thường, A không gửi lại cho E thông tin về route đến N1. Nhưng khi A nhận được bản tin update nói rằng route đến N1 là unreachable --> A gửi lại cho E thông tin về route đến N1 với metric là infinite.

3. Hold-down Timer:
----- Khi router nhận được thông tin về một route là unreachable, router sẽ đánh dấu route đó và đặt nó vào trạng thái hold-down (Router đặt bộ định thời = thời gian hold-down). Trong thời gian hold-down, router vẫn tiếp tục dùng route đó để forward gói tin, nhưng sẽ bỏ qua tất cả các thông tin về route với thông số metric bằng hoăc xấu hơn metric router đang có về route đó.
----- Hold-down timer bị reset khi: thời gian hold-down đã hết, hoặc router nhận được thông tin về route với metric tốt hơn metric nó đang giữ.
----- Ví dụ: Khi A nhận được thông tin route đến N1 bị down, hold-down timer cho route đó được thiết lập. Tương tự với B, D. Do đó khi D nhận được update từ C, vì metric mà C gửi lớn hơn (xấu hơn) metric D đang có về route N1 nên D bỏ qua ==> Không còn loop

4. Triggered update:
Triggered update được tạo ra khi router nhận được thông tin về một route down ==> Không cần chờ đến đúng thời gian cập nhật để gửi update ==> tăng tốc độ hội tụ.
.
.
Trong quá trình tìm hiểu, mình có một số thắc mắc như sau, mong mọi người giải đáp:
1. Với poison reverse, liệu B và D có gửi poison reverse lại cho A không? Vì sao có, vì sao không?
2. Sau khi hết hold-down, nếu router không nhận được bản tin update nào về route thì router làm gì tiếp theo? Một số tài liệu nói rằng router chuyển sang trạng thái garbage collection. Đó là trạng thái gì vậy, và nó thực hiện remove route như thế nào?

Mong mọi người đóng góp ý kiến!

elvisduong
08-05-2004, 03:22 AM
Mong nhận được ý kiến các bạn.

mình vừa học xong các solution chống loop trong kĩ thuật dynamic routing table.

ờ đay có 4 solution: max, split, poisson reverse, update.
theo mình nghĩ không cần thiết phải sử dụng poisson reverse bởi bản thân của slip và update đã giải quyết được vấn đề của poisson reverse rồi.
mong nhận được ý kiến
Giả sử có 3 router A, B, C và router B có 1 Network bị down. nếu không có poison reverse thì vẫn có khả năng router A và C vẫn gửi 1 update về path tới B thông qua A or C với metric vẫn nhỏ hơn 16. Do đó B sẽ cập nhật lại routing table dựa trên path mới do A or C gửi đến, sau đó nó sẽ gửi path mới này đến cho A và C với metric được tăng thêm 1... dẫn đến LOOP do A và C sẽ cập nhật lại theo path mới này và chỉ chấm dứt khi metric đạt tới giá trị infinitive. Vì vậy bản thân router B cũng cần có 1 update cho chính nó :lol:

mmx
13-05-2004, 06:14 PM
không có sự trùng lặp hay xung đột trong vấn đề này...thời gian thực hiện của các solution là khác nhau nên no ko hề trùng lặp nhau.

Nhất trí, không có chuyện thừa ở đây. Người ta đã tính đến các giải pháp này để cái nọ hỗ trợ cái kia. Cứ yên tâm xem nó thế nào, đừng lo đến chuyện nó có thừa hay không.

admin
06-07-2004, 10:30 AM
Admin tổng kết một số ý kiến thảo luận chủ chốt trong loạt bài này.



CƠ CHẾ HOẠT ĐỘNG CỦA CÁC GIẢI PHÁP NHẰM TRÁNH "LOOP" TRONG GIẢI THUẬT DISTANCE VECTOR

I. Routing Loop là gì?

http://www.vnpro.org/forum/download.php?id=752

Trước khi network 1 bị down thì thì tất cả router đều xem đường route tới network là tốt. Router C nhận định rằng muốn tới network 1 thì fải qua router B với metric là 3 (ví dụ ta đang dùng RIP).

Khi network 1 bị down thì router E mới gửi 1 bản update tới A là: N1 down rồi nhưng router C không biết. B và D có thể nhận biết được N1 down 1 cách nhanh chóng vì nó connect trực tiếp tới A (nên nhận update nhanh hơn). Tuy nhiên do C không nhận được update là N1 down nến vẫn gửi 1 bản update tới B và D là đường tới N1 vẫn tồn tại. Và như thế B và D update lại bản routing table của mình là N1 vẫn tốt. Muốn đến N1 hãy đi qua C. Như thế là sai và quá trình này cứ lặp đi lặp lại (vì A sẽ gửi lại 1 update nói với B và D rằng la N1 vẫn good) ===> routing loop

Nguyên nhân:

B và D có thể nhận được update từ A còn C thì không , bởi vì 1 "HÔI TỤ CHẬM" ( SLOW CONVERGENCE)

Vậy convergence là gì : sau khi topology change thì tất cả router cần 1 time để tính toán lại các đường route của mình, và quá trình và thời gian đó gọi là TIME TO CONVERGENCE

II. CÁC GIẢI PHÁP ĐỂ TRÁNH LOOP

1. SPLIT HORIZON:

Router B và D nhận update về N1(down) sẽ không gửi lại update về N1 (up, sau khi nhận được từ C) tới cho router A.

Split horizon được sử dụng để đảm bảo rằng thông tin về một route do một router phát ra không quay lại chính nó. Ví dụ, khi network 1 chưa down, router E gửi thông tin update đến router A. Router A sẽ không gửi lại thông tin update đến N1 quay lại E vì nếu làm như thế, đương nhiên E sẽ không dùng thông tin đó ==> lãng phí. Còn trong trường hợp route bị poison ==> Do có Split horizon, thông tin về route đến N1 không bị lặp đi lặp lại trên link giữa A và E (count-to-infinite)

Split horizon with Poison reverse : Bình thường, A không gửi lại cho E thông tin về route đến N1. Nhưng khi A nhận được bản tin update nói rằng route đến N1 là unreachable --> A gửi lại cho E thông tin về route đến N1 với metric là infinite.


2. HOLD DOWN TIMER :

Khi router nhận được thông tin về một route là unreachable, router sẽ đánh dấu route đó và đặt nó vào trạng thái hold-down (Router đặt bộ định thời = thời gian hold-down). Trong thời gian hold-down, router vẫn tiếp tục dùng route đó để forward gói tin, nhưng sẽ bỏ qua tất cả các thông tin về route với thông số metric bằng hoăc xấu hơn metric router đang có về route đó .

Hold-down timer bị reset khi thời gian hold-down đã hết, hoặc router nhận được thông tin về route với metric tốt hơn metric nó đang giữ.

Ví dụ: Khi A nhận được thông tin route đến N1 bị down, hold-down timer cho route đó được thiết lập. Tương tự với B, D. Do đó khi D nhận được update từ C, vì metric mà C gửi lớn hơn (xấu hơn) metric D đang có về route N1 nên D bỏ qua ==> Không còn loop

3. POSION REVERSE UPDATE :


Là bản update đặc biệt được gửi từ router connect với 1 network down tới các router neighbor của mình ( khong bao gồm router có network bị down ) rằng đường route tới network đó là infinity.

Khi một router phát hiện ra một route R bị down (router không nhận được bản tin update từ router neighbor mà từ đó nó học được route R), router sẽ đặt giá trị metric của route R bằng giá trị không xác định (infinite) và gửi đi trong bản tin cập nhật định tuyến để thông báo với các router trên mạng rằng route R unreachable.

Trong hình vẽ, router E không nhận được thông tin về route đến N1, nó đặt metric của route đến N1 là infinite rồi gửi đi trong bản tin định tuyến. Đồng thờ, E hủy bỏ route đến N1 trong bảng định tuyến của nó.

4. TRIGGER UPDATE:

Trigger updates là bản update được gửi ngay khi có route bị fail, không cần chờ đến thời gian định kỳ để gửi update.

mazel
18-07-2004, 05:51 AM
Poison Reverse là 1 cơ chế hoạt động trong Route Poisoning (preventing routing loop Solution).

Khi 1 Router nhận được 1 triggered update từ 1 neighboring Router (thấy 1 entry nào đó có số Hop count nhảy đến Infinity) nó sẽ bật Holddown timer lên để lưu ý rằng Network tương ứng với entry trên đang trong tình trạng inaccessble "Possibly down" , Và nó sẽ gởi triggered update đi cho các neighboring routers (dĩ nhiên không gởi ngược lại cho router đã gởi triggered update cho nó). sau đó nó sẽ gởi Poison Reverse lại cho router mà đã gởi triggered update cho nó, Mục đích của việc gởi Poison Reverse ngượi lại là để báo cáo rằng : " Tôi đã nhận được thông tin và cũng đã gởi thông tin này cho những người khác (neighboring routers), tức là không bao lâu thì toàn bộ routers trong segment này sẽ nhận được thông tin ".

sskkb
04-12-2004, 08:52 AM
Admin tổng kết một số ý kiến thảo luận chủ chốt trong loạt bài này.

1. SPLIT HORIZON:

Router B và D nhận update về N1(down) sẽ không gửi lại update về N1 (up, sau khi nhận được từ C) tới cho router A.

Split horizon được sử dụng để đảm bảo rằng thông tin về một route do một router phát ra không quay lại chính nó. Ví dụ, khi network 1 chưa down, router E gửi thông tin update đến router A. Router A sẽ không gửi lại thông tin update đến N1 quay lại E vì nếu làm như thế, đương nhiên E sẽ không dùng thông tin đó ==> lãng phí. Còn trong trường hợp route bị poison ==> Do có Split horizon, thông tin về route đến N1 không bị lặp đi lặp lại trên link giữa A và E (count-to-infinite)



Cái vụ lãng phí này không thích hợp lắm :-) Nguyên nhân chính để A không gửi thông tin về N1 quay lại E là để tránh trường hợp "counting-to-infinite" << cái này đã nói rất rõ ràng trong ICND rồi. Chẳng có lãng phí gì ở đây cả.



Split horizon with Poison reverse : Bình thường, A không gửi lại cho E thông tin về route đến N1. Nhưng khi A nhận được bản tin update nói rằng route đến N1 là unreachable --> A gửi lại cho E thông tin về route đến N1 với metric là infinite.


Vì E gửi thông báo cho A biết N1 bị down, vậy thì A gửi ngược lại thông báo đó cho E để làm gì :-) ? Theo như cách giải thích của nhaque321 thì chẳng phải điều này là lãng phí hay sao?


Ý kiến riêng của mình : hình như mọi người khi đọc Poison Reverse chỉ tập trung đến việc nó gửi update ngược lại chính interface nó nhận được update đó mà quên mất định nghĩa trong sách ICND : Khi một router nhận được thông tin về một infinite route, nó sẽ gửi update về route đó ra TẤT CẢ CÁC INTERFACE kể cả interface đã nhận được update đó.
Như vậy là câu hỏi 1 của bạn nhaque321 đã có đáp án rồi nhé :-)

Và câu hỏi của mình là : Distance Vector Protocol sử dụng Poison Reverse để làm gì, điều này có thực sự chống loop được hay không?

extreme
09-01-2005, 08:22 AM
hi sskkb: poison reverse ko thể thiếu trong các solutions anti loop đuọc (nhưng vai trò của nó ko quan trọng,chỉ mang tính bảo đảm mà thôi) ,vì khi 1 network bị down,A sẽ gửi trigger update đến B&D,B&D sẽ lại gửi trigger update đến C.Sau khi đảm bảo tất cả các R trong mạng đều đã nhận được trigger update(vì nếu chỉ 1R chưa nhận được triger update thì sẽ lại xảy ra loop) thì R cuối cùng nhận được trigger update sẽ gửi poison update rằng N1 unreachable và cứ thế theo phản ứng dây chuyền cho đến khi A nhận được poison reverse update.

extreme
09-01-2005, 09:01 AM
à,cho mình hỏi nếu ko muốn dùng 1 trong các biện pháp chống loop trên thì dùng lệnh gì để disable nó? và dùng lệnh gì để kiểm tra xem solutions anti loop nào đang hoạt động vậy?thanks

infin
01-06-2005, 05:42 PM
Route Poisoning

Một trong những phưng pháp người ta đưa vào các giao thức định tuyến để tránh loop đó là “Route poisoning”. Route poisoning bắt đầu hoạt động khi Router nhận thấy một mạng nối tới nó bị down. Nó sẽ qung bá tới tất t các Router lân cận nó rằng: Mạng đó là không thể tới được. Ví dụ với RIP: nó sẽ gửi thông báo tới các Router lân cận của nó với hop count = 16. Kết qu là mạng đó sẽ được xoá khỏi bảng định tuyến.

Split Horizon

Tuy nhiên trong một số trường hợp thì Route Poisoning không thể giải quyết được. Như trường hợp dưới đây :

Người ta đưa ra phưng pháp Split Horizon, tránh các Router không gửi lại các thông tin định tuyến quay trở lại Router mà nó đã “học” được đường đi từ Rouer đó (vẫn có thể xảy ra với cấu trúc mạng vòng).

Hold-Down Timer

Để giải quyết trường hợp mà Split Horizon không gii quyết được người ta đưa ra phương pháp Hold-Down Timer. Tránh việc thay đổi tuyến được thực hiện trước khi mạng hội tụ từ sự thay đổi đó. Tránh cập nhật thông tin từ việc thiết lập lại các thông tin không đúng. Khi một Router nhận được một cập nhật mà chứa một cấu trúc thay đổi, hold-down timer sẽ bắt đầu. Bất cứ cập nhật nào trong thời gian này sẽ bị huỷ bỏ. Thời gian hold-timer được đặt ít nhất phi lớn hơn 3 lần thời gian cập nhật thông tin toàn bộ tuyến trong mạng.

Triggered (Flash) Updates

Để ngăn chặn tình trạng hết thời gian hold-timer mà thông tin update mới tới. Người ta đưa ra phưng pháp Triggered (Flash) Updates tức là ngay sau khi nhận được thông cập nhật mà chứa một cấu trúc thay đổi nó sẽ gửi ngay lập tức broadcast update tới các Router lân cận.

hoanglenhan
22-03-2006, 03:41 PM
Bài viết này mô tả các phương pháp chống loop trong môi trường Distance vector network . Trong phần này ta sẽ khảo sát các kĩ thuật sau đây :
• Counting to infinity
• Using holddown
• Using split horizon and poison reverse
• Using triggered updates
Trước hết ta hãy tìm hiểu xem thế nào là hiện tượng loop và tại sao lại xảy ra loop ?

Bản chất của giao thức distance vector là quảng bá broadcast có định kì toàn bộ bảng định tuyến ra khỏi các interface cho các router neighbor ( interface đã enable giao thức định tuyến ) .
http://i1.tinypic.com/s12gb7.jpg
Khi một router quảng bá tất cả các route mà nó biết cho neighor thì cũng có nghĩa là những route được học từ neighbor trước đó cũng sẽ được quảng bá ngược lại cho neighbor đó . Khi có 1 route bị fail , sẽ có 2 router là next hop của nhau khi đi đến một network . Đây chính là hiện tượng Routing loop . Cụ thể hơn , ta hãy xem ví dụ sau :
http://i1.tinypic.com/s12gcm.jpg
Ba router RT1 , RT2 , RT3 được kết nối theo dạng đường thẳng như hình vẽ .Các router dùng metric là hop-count . Router RT3 quảng bá Dest 3 cho RT2 , RT2 lại quảng bá Dest3 cho RT1 biết . RT2 có metric đến Dest3 là 1 . RT1 có metric đến Dest3 là 2 . Do cả 3 router đều chạy giao thức distance vector nên RT1 sẽ quảng bá thông tin về Dest3 cho RT2 với metric là 2 . Router RT2 cộng thêm vào giá trị này thêm 1 đơn vị , RT2 thấy rằng nó có thể đến Dest3 qua 3 hops . Tuy nhiên , thông tin này không có giá trị bằng thông tin mà nó đang lưu trong Routing table ( metric đến Dest3 bằng 1 ) . RT2 sẽ bỏ qua thông tin này . Mạng đang chạy ổn định cho đến khi kết nối giữa RT2 và RT3 bị down .

Router RT2 nhận thấy đường đi đến Dest3 không còn nữa , nhưng nó phải đợi đến thời gian update định kì mới gửi thông tin này cho RT1 biết được . Trong khi router RT2 chưa gửi kịp thông tin , thì tại Router RT1 thời gian update định kì đã đến , nó tiếp tục broadcast thông tin định tuyến cho RT2 biết rằng : Dest3 có thể đến được với metric là 2 . Router RT2 apply ngay thông tin này , Router RT2 nghĩ rằng Dest 3 đã up trở lại và có thể đến được thông qua Router RT1 với metric là 3 . Trong khi đó Router RT1 lại có next hop là RT2 . Như vậy hiện tượng Routing loop đã xảy ra giữa 2 router RT1 và RT2 . Một packet gửi cho Dest 3 sẽ bị loop giữa RT1 và RT2 , nó chỉ bị drop khi TTL = 0 .

Để giải quyêt vấn đề Routing loop trong distance vector , kĩ thuật đầu tiên cần dùng là Count-to-infinity . Hop count được tăng lên liên tục giữa 2 router RT1 và RT2 . Người ta định nghĩa ra một giá trị là Infinity . Nghĩa là khi hop count của một route được tăng lên đến giá trị này , route đó sẽ bị coi là unreachable và remove ra khỏi bảng định tuyến . Với giao thức RIP thì giá trị Infinity là 16 .


Kĩ thuật thứ 2 được dùng là Holddown timer . Kĩ thuật này được phát biểu như sau :
Khi một router nhận được update từ neighbor báo rằng có một network lúc trước accessible thì bây giờ đã inaccessible , Router lập tức đánh dấu network đó là inaccessible và bật holddown timer lên . Trong khoảng thời gian holddown , router sẽ không nhận bất kì một update nào thông báo rằng network đó đã access trở lại với metric cao hơn metric hiện tại đến network đó . Khoảng thời gian holddown này sẽ đủ cho thông tin về network bị down được lan truyền đến toàn bộ router trong mạng biết . Thời gian holddown chỉ bị remove đi khi một trong 2 khả năng sau xảy ra :
- Router được cùng neighbor đó báo rằng network đã access trở lại
- Router nhận được thông tin network đó access trở lại thông qua một neighbor khác , nhưng metric này thấp hơn metric hiện tại .
Với ví dụ trên , Router RT2 khi nhận biết Dest3 là inaccessible , nó sẽ start holddown timer lên . Khi thời gian holddown đang còn có hiệu lực , RT2 sẽ không nhận update từ RT1 báo rằng Dest3 là accessible với metric là 3 . Metric này cao hơn metric hiện tại của RT2 ( đến Dest3 với metric = 1 ) . Trong khoảng thời gian chờ đợi và hi vọng rằng Dest3 down thì đủ để RT1 nhận biết được Dest3 đã bị down . Sau khi holddown hết hạn , Dest3 sẽ không còn được dùng đến và remove ra khỏi Routing table .

Kĩ thuật thứ 3 là Split horizon with Poison reverse . Trước hết ta hãy tìm hiểu về 2 version khác nhau của Split horizon là : Simple Split Horizon và Split horizon with Poison Reverse .

conai
11-04-2007, 09:25 AM
topology sao vào không được, link này bị hư rồi
http://www.vnpro.org/forum/download.php?id=16

netbaby
12-03-2009, 04:44 PM
Khi 1 Router nhận được 1 triggered update từ 1 neighboring Router (thấy 1 entry nào đó có số Hop count nhảy đến Infinity) nó sẽ bật Holddown timer lên để lưu ý rằng Network tương ứng với entry trên đang trong tình trạng inaccessble "Possibly down" , Và nó sẽ gởi triggered update đi cho các neighboring routers (dĩ nhiên không gởi ngược lại cho router đã gởi triggered update cho nó). sau đó nó sẽ gởi Poison Reverse lại cho router mà đã gởi triggered update cho nó, Mục đích của việc gởi Poison Reverse ngượi lại là để báo cáo rằng : " Tôi đã nhận được thông tin và cũng đã gởi thông tin này cho những người khác (neighboring routers), tức là không bao lâu thì toàn bộ routers trong segment này sẽ nhận được thông tin ".

Distance Vector Protocol sử dụng Poison Reverse để làm gì, điều này có thực sự chống loop được hay không?
Túm lại, trả lời cho việc reverse lại là để đảm bảo cho chắc ăn là đã nhận đựơc (tương tự như ACK). Vậy, không có reverse kiểu này thì có ảnh hưởng gì đến hòa bình thế giới không?

hole
22-08-2009, 01:21 AM
trigger update cũng có những nội dung như 1 bản update bình thường là gửi toàn bộ bảng định tuyến phải hok

phamminhtuan
22-08-2009, 06:07 AM
Chào bạn,

Đối với dạng distance vector như RIP thì trigger update sẽ gửi tất cả, bao gồm luôn những thay đổi.
Đối với dạng Link state như OSPF thì trigger update chỉ gửi những gì thay đổi.

Đối với dạng lai như EIGRP (lai distance vector nhiều hơn) thì nó gửi toàn bộ hay gửi những gì thay đổi bạn tìm thử xem.

netbaby
22-08-2009, 08:37 PM
Khi 1 Router nhận được 1 triggered update từ 1 neighboring Router (thấy 1 entry nào đó có số Hop count nhảy đến Infinity) nó sẽ bật Holddown timer lên để lưu ý rằng Network tương ứng với entry trên đang trong tình trạng inaccessble "Possibly down" , Và nó sẽ gởi triggered update đi cho các neighboring routers (dĩ nhiên không gởi ngược lại cho router đã gởi triggered update cho nó). sau đó nó sẽ gởi Poison Reverse lại cho router mà đã gởi triggered update cho nó, Mục đích của việc gởi Poison Reverse ngượi lại là để báo cáo rằng : " Tôi đã nhận được thông tin và cũng đã gởi thông tin này cho những người khác (neighboring routers), tức là không bao lâu thì toàn bộ routers trong segment này sẽ nhận được thông tin ".

Distance Vector Protocol sử dụng Poison Reverse để làm gì, điều này có thực sự chống loop được hay không?
Túm lại, trả lời cho việc reverse lại là để đảm bảo cho chắc ăn là đã nhận đựơc (tương tự như ACK). Vậy, không có reverse kiểu này thì có ảnh hưởng gì đến hòa bình thế giới không?
Up cho ngày hôm nay!

itdongnai
19-10-2009, 05:04 PM
Bài viết này thật hay.Mỗi người 1 ý kiến đưa ra đều có giá trị cả.Thanks

duc_bkav
31-10-2009, 09:55 AM
mình xin bổ sung thêm... theo mình biết thì trong EIGRP, kĩ thuật "thỏa mãn điều kiện feasibility condition" để bầu feasible sucessor và "interface Null0" cũng là để chống loop đó bạn :D





Khi 1 Router nhận được 1 triggered update từ 1 neighboring Router (thấy 1 entry nào đó có số Hop count nhảy đến Infinity) nó sẽ bật Holddown timer lên để lưu ý rằng Network tương ứng với entry trên đang trong tình trạng inaccessble "Possibly down" , Và nó sẽ gởi triggered update đi cho các neighboring routers (dĩ nhiên không gởi ngược lại cho router đã gởi triggered update cho nó). sau đó nó sẽ gởi Poison Reverse lại cho router mà đã gởi triggered update cho nó, Mục đích của việc gởi Poison Reverse ngượi lại là để báo cáo rằng : " Tôi đã nhận được thông tin và cũng đã gởi thông tin này cho những người khác (neighboring routers), tức là không bao lâu thì toàn bộ routers trong segment này sẽ nhận được thông tin ".

Distance Vector Protocol sử dụng Poison Reverse để làm gì, điều này có thực sự chống loop được hay không?
Túm lại, trả lời cho việc reverse lại là để đảm bảo cho chắc ăn là đã nhận đựơc (tương tự như ACK). Vậy, không có reverse kiểu này thì có ảnh hưởng gì đến hòa bình thế giới không?




"Mục đích của việc gởi Poison Reverse ngượi lại là để báo cáo rằng : " Tôi đã nhận được thông tin và cũng đã gởi thông tin này cho những người khác (neighboring routers)"

nếu thực sự gói tin poison reverse trả ngược lại chỉ mang tính chất trên thì mình cũng chưa hiểu việc poison reverse để làm j,đúng là chả ảnh hưởng j đến hòa bình thế jới như bạn netbaby nói cả

và nếu thế bản chất Split horizon wiht poison reverse có khác j route poisoning đâu :|