ĐỊNH TUYẾN ĐỘNG

Một phần của tài liệu GIAO THỨC THÔNG TIN ĐỊNH TUYẾN RIP, OSPF RONG MẠNG IP (Trang 67)

Trong phương phỏp định tuyến động, cỏc Router sẽ thu thập thụng tin về tỡnh trạng của mạng và tựđộng xõy dựng nờn thực thể trong bảng định tuyến.Cỏc router sẽ

trao đổi thụng tin để chỳng tự quyết định việc xõy dựng thực thể trong bảng định tuyến Phương phỏp này cú lợi thế khi mạng phức tạp.Định tuyến động đem đến sự linh hoạt , cú thể thớch ứng với việc mạng thay đổi kiến trỳc và lưu lượng, tạo ra một lưu lượng thụng tin phục vụ trao đổi thụng tin định tuyến.

Sự thành cụng của định tuyến động tựy thuộc vào hai chức năng router cơ bản:

♦ Duy trỡ một bảng định tuyến.

♦ Phõn tỏn tri thức mạng theo định kỡ, dưới dạng cập nhật định tuyến, cho cỏc router khỏc.

Định tuyến động dựa vào một giao thức định tuyến để chia sẻ tri thức mạng cho cỏc router.Một giao thức định tuyến định ra một tập nguyờn tắc được ỏp dụng vào mỗi router khi nú thụng tin với cỏc router lỏng giềng.

Giao thức định tuyến là một tập cỏc qui chế về việc trao đổi thụng tin định tuyến và lựa chọn đường đi được coi là “ngắn nhất”

Cỏc tham sốđược tớnh đến khi chọn đường đi ngắn nhất bao gồm:

♦ Hop count ( số lượng bước nhảy )

♦ Bandwidth ( Băng thụng )

♦ Load ( Tải )

♦ Reliability ( Độ tin cậy )

♦ Delay ( Độ trễ )

Căn cứ vào việc trao đổi thụng tin và lựa chọn đường đi “ngắn nhất” cú thể chia

định tuyến động thành cỏc loại sau:

♦ Distance-vector

♦ Link-state

♦ Hybrid kết hợp hai loại trờn

2.3 Cỏc thut toỏn chn đường 2.3.1 Giới thiệu

Cú rất nhiều thuật toỏn chọn đường khỏc nhau. Mỗi thuật toỏn cú những ưu điểm cũng như hạn chế riờng. Người thiết kế khi thiết kế mạng sẽ căn cứ vào mạng của mỡnh (đặc điểm của mạng, cỏc tiờu chớ đối với việc truyền thụng tin trong mạng...) để lựa chọn thuật toỏn chọn đường cho phự hợp. Người ta cú thể đỏnh giỏ thuật toỏn chọn

đường theo những khớa cạnh sau :

Ti ưu

Cú những thuật toỏn chọn ra được những đường truyền tối ưu, cũng cú thuật toỏn chỉ chọn ra được những đường truyền gần tối ưu.. Đểđỏnh giỏ được mức độ tối ưu của tuyến đường, khi triển khai thuật toỏn phải xỏc định rừ là tối ưu theo cỏi gỡ? Cú nhiều tham số hay được sử dụng đểđỏnh giỏ một tuyến đường:

Số node phải đi qua. Khoảng cỏch vật lý. Giỏ thành truyền dẫn. Độ trễ truyền lan. Độ tin cậy. Băng thụng. Hỡnh 2.6 Cỏc thành phn đo lường định tuyến

Hiệu suất sử dụng mạng.

Mức độ xử lý tại node.

.v.v…

Để đơn giản khi mụ tả cỏc thuật toỏn, người ta đưa ra một khỏi niệm: ‘độ dài’. ‘Độ dài’ của tuyến đường là một hàm phụ thuộc vào một hoặc nhiều tham sốở trờn. Do

đú, việc chọn tuyến đường tối ưu cũng chớnh là chọn con đường cú ‘độ dài ngắn nhất’. Nhiều khi, ‘độ dài’ (length) của link cũn được gọi là cost, hoặc weight. Cỏc cỏch gọi này mang ý nghĩa như nhau.

Lượng tài nguyờn mng s dng để phc v vic chn đường (adsbygoogle = window.adsbygoogle || []).push({});

Bất kỳ thuật toỏn chọn đường nào, để hoạt động được đều phải sử dụng tài nguyờn mạng. Để đỏnh giỏ lượng tài nguyờn mạng sử dụng, người ta thường dựa trờn những thụng tin như: độ phức tạp tớnh toỏn khi xõy dựng bảng chọn đường, lượng bộ

nhớ yờu cầu, lượng thụng tin trao đổi để phục vụ chọn đường.

Mnh và n định

Thuật toỏn phải mạnh và ổn định, nghĩa là nú phải hoạt động tốt trong mọi tỡnh huống, ngay cả trong những trường hợp bất thường, khụng thể dự bỏo trước như: lỗi truyền dẫn, lưu lượng tăng cao đột ngột...

Tc độ hi t ( Thi gian hi t)

Giải thuật định tuyến là cơ sở cho định tuyến động . Bất cứ khi nào tụpo của mạng thay đổi thỡ cơ sở tri thức mạng cũng phải thay đổi.Tri thức này cần được phản ỏnh qua tầm nhỡn chớnh xỏc ổn định về một tụpụ mới.Tầm nhỡn này gọi là sự hội tụ.

Việc sử dụng một giao thức định tuyến (động) luụn đũi hỏi cỏc Router nhận thức một cỏch chớnh xỏc về mạng.Khi mới khởi động hoặc cú sự thay đổi về mạng, cỏc router phải mất 1 khoảng thời gian để nhận biết chớnh xỏc về mạng. Đõy là thời gian hội tụ của mạng

Khi tất cả cỏc router trong một liờn mạng đang hoạt động với cựng một tri thức, liờn mạng được gọi là đó hội tụ.Hội tụ nhanh là một đặc tớnh mạng luụn được mong muốn bởi nú giảm đi khoảng thời gian trong đú cỏc router sẽ tiếp tục đưa ra cỏc quyết

định khụng chớnh xỏc và vụ bổ.

Thời gian hội tụ phụ thuộc vào thời gian trao đổi thụng tin và thời gian hoàn thành thuật toỏn. Ta cần cú sự cõn nhắc giữa giảm thiểu thời gian hội tụ và lưu lượng

định tuyến.

Đối với những mạng thay đổi liờn tục, việc định tuyến cũng cần phải cập nhật thụng tin thường xuyờn và sau đú thỡ đưa ra quyết định chọn đường mới. Do đú, nếu tốc

độ hội tụ của thuật toỏn thấp, khụng đỏp ứng kịp thời với sự thay đổi của mạng, cú thể

gõy ra tỡnh trạng cú những vũng lặp đi lặp lại trong tuyến đường, làm cho hoạt động của mạng bịđỡnh trệ. Ta cú thể xem một vớ dụđơn giản sau ( Xem Hỡnh 2.7 )

Hỡnh 2.7 Tc độ hi t thp dn ti định tuyến vũng

Giả sử việc chọn đường được thực hiện tại từng node, mỗi lần mạng thay đổi hoặc trong một khoảng thời gian nào đú thỡ thụng tin về mạng được cập nhật, và sau đú thỡ cỏc bộ chọn đường phải tớnh toỏn lại. Nhưng do độ hội tụ của thuật toỏn thấp nờn cỏc bảng chọn đường ở mỗi node được tạo ra ở những thời điểm khỏc nhau. Nếu ta cần chuyển một tin tới node X trong mạng, con đường tới node X đó được xỏc định là phải qua node R1. Khi gúi tin tới R1, bảng chọn đường vừa được cập nhật và xỏc định node tiếp theo trờn con đường đi tới node X là phải qua node R2, nú sẽ được chuyển tới R2. Nhưng khi tới node R2, do chưa cú bảng chọn đường cập nhật, nờn lại xỏc định node tiếp theo trờn con đường đi tới node X là node R1 (theo thụng tin cũ), gúi tin lại được chuyển trở lại node R1. Điều này làm cho việc chọn đường của chỳng ta bị luẩn quẩn ở

hai node R1, R2 này, gúi tin khụng thể tới đớch.

Linh hot

Chọn đường linh hoạt cú nghĩa là mỗi khi trong mạng cú sự thay đổi, việc chọn

đường phải nhanh chúng phỏt hiện được thay đổi này và điều chỉnh lại cỏc thụng tin chọn đường cho phự hợp.

2.3.2 Thuật toỏn tỡm đường ngắn nhất

Xột một đồ thị G=(V,E,L) với V là một tập cỏc đỉnh cú N phần tử biểu thị cho cỏc node trong mạng. E là tập cỏc cung tượng trưng cho cỏc link trong mạng. W là tập giỏ trị mang độ dài của mỗi cung trong E. lijL là độ dài của cung {i,j} E nối đỉnh i

Độ dài của cỏc cung được coi là cố định, hoặc giả là cố định trong một khoảng thời gian đủ để tỡm ra con đường ngắn nhất. Mặc dầu vậy, trong một số trường hợp, độ

dài của link là một hàm phụ thuộc thời gian, tức là L={lij(ij)|(i, j)∈E}.

Đường đi ngắn nhất giữa đỉnh nguồn s và đỉnh đớch d là một chuỗi liờn tục cỏc cung nối sd với khoảng cỏch ngắn nhất trong G. Một cỏch trực quan, khoảng cỏch ngắn nhất giữa hai đỉnh s và d thấy được bằng cỏch coi cỏc cung trong graph là cỏc sợi dõy cú độ dài tương ứng; sau đú cầm hai đỉnh đú kộo căng ra. Khi đú, con đường ngắn nhất sẽ là chuỗi cỏc đoạn dõy tạo thành đường thẳng nối s với d.

Tuỳ vào đồ thị mà việc mà việc tỡm con đường ngắn nhất là đơn giản hay phức tạp. Vớ dụ, với đồ thị hỡnh cõy ( Hỡnh 2.8a), ta chỉ cú một con đường duy nhất nối hai

đỉnh, nờn đú tất nhiờn cũng là con đường ngắn nhất. Cũn với đồ thị cú chứa vũng ( Hỡnh 2.8b ), việc tỡm đường ngắn nhất sẽ phức tạp hơn, bởi từ một đỉnh nguồn, để đến được

đỉnh đớch cú thểđi qua nhiều con đường.

Hỡnh 2.8 Đồ th cõy và đồ th cú vũng (adsbygoogle = window.adsbygoogle || []).push({});

Thuật toỏn chọn đường ngắn nhất đưa ra cỏc bước để tỡm được con đường ngắn nhất giữa hai đỉnh. Với cựng một đồ thị, cựng một cặp đỉnh nguồn-đớch, cỏc thuật toỏn chọn đường ngắn nhất cú thể đưa ra cỏc con đường ngắn nhất khỏc nhau (chuỗi cỏc cung khỏc nhau), nhưng độ dài của cỏc con đường đú chắc chắn phải bằng nhau.

Cỏc thuật toỏn khỏc nhau cú cỏc bước thực hiện khỏc nhau, nhưng tất cảđều dựa trờn một nguyờn lý chung để thực hiện tớnh toỏn: Nếu k là mt đỉnh nm trờn con đường ngn nht t i đến j thỡ đon t i đến k ca con đường đú phi là con đường ngn nht t i đến k, và đon t k đến j cũng chớnh là con đường ngn nht t k ti j. Từđú, ta cú cụng thức sau: ( ik kj ) k ij d d d = min + (*)

Trong đú, dij, dik, dkj là khoảng cỏch ngắn nhất giữa hai đỉnh tương ứng.

Khi thực hiện thuật toỏn, ta coi rằng, nếu giữa hai đỉnh i, j khụng cú cung nối thỡ

∞ =

ij

đỉnh i ∈ V. Mỗi khi phỏt hiện (dj +lji <di)

, cận trờn di sẽ được làm tốt lờn:

(di =dj +lji)

. (**)

Quỏ trỡnh đú kết thỳc khi khụng cũn cận trờn nào cú thể làm tốt thờm được nữa. Khi đú, giỏ trị của di sẽ cho ta độ dài của con đường ngắn nhất từ s đến i. Việc tớnh toỏn cỏc cận trờn được gọi là gỏn nhón, quỏ trỡnh sử dụng nhón của một đỉnh để gỏn lại nhón cho cỏc đỉnh khỏc được gọi là quỏ trỡnh quột.

Một trong những thuật toỏn tỡm đường ngắn nhất hoạt động hiệu quả nhất đó

được đưa ra bởi Dijkstra. Thuật toỏn này cần cú thụng tin về toàn bộ đồ thị để cú thể

tỡm ra con đường ngắn nhất từ một đỉnh tới cỏc đỉnh cũn lại. Một thuật toỏn khỏc rất thớch hợp cho việc tớnh toỏn phõn tỏn, thuật toỏn Bellman - Ford, chỉ cần thụng tin về

cỏc cung từ một đỉnh tới cỏc đỉnh lõn cận.

Hầu hết cỏc thuật toỏn chọn đường ngắn nhất được sử dụng trờn mạng thụng tin hiện nay đều dựa trờn thuật toỏn Dijkstra hoặc Bellman-Ford. Sử dụng cỏc thuật toỏn này, mỗi node trong mạng sẽ lưu giữ một bảng chọn đường, chỉ ra node tiếp theo trờn con đường ngắn nhất tới đớch, và độ dài của con đường đú. Khi mạng cú sự thay đổi, cỏc thụng tin cập nhật được chuyển qua cỏc node lõn cận hoặc được quảng bỏ trờn toàn mạng. Từđú, cỏc node sẽ tớnh lại bảng chọn đường của mỡnh.

Từ cỏc bảng chọn đường trong mỗi node, chỳng ta cú thể tạo được cõy đường ngắn nhất tới mỗi node (xem Hỡnh 2.9)

2.3.3 Thuật toỏn Dijkstra

Thuật toỏn này do Dijkstra đưa ra. Nú thớch hợp cho việc tỡm đường đi tối ưu từ

một đỉnh tới tất cả cỏc đỉnh cũn lại trong đồ thị. Hoạt động của thuật toỏn này như sau: Giả sử ta cần tỡm đường đi ngắn nhất từ đỉnh s đến tất cả cỏc đỉnh cũn lại trong

đồ thị. Thuật toỏn được xõy dựng dựa trờn cơ sở gỏn cho cỏc đỉnh cỏc nhón tạm thời. Cỏc nhón này được biến đổi theo một thủ tục lặp. Sau mỗi vũng lặp, sẽ cú một nhón tạm thời trở thành nhón cốđịnh, đú chớnh là nhón tạm thời cú giỏ trị nhỏ nhất. Nhón cốđịnh, tất nhiờn, khụng bị biến đổi trong cỏc vũng lặp, và chớnh là độ dài của con đường ngắn nhất từđỉnh nguồn tới đỉnh tương ứng với nhón đú. Đỉnh mới được gỏn nhón cố định này sẽđược quột để gỏn lại nhón tạm thời cho cỏc đỉnh khỏc.

Ta thấy rằng, việc gỏn nhón lại cho cỏc đỉnh chỉđược thực hiện mỗi khi cú thờm một đỉnh được gỏn nhón cốđịnh. Đỉnh được gỏn nhón cố định trước phải cú giỏ trị của nhón cố định nhỏ hơn nhón cố định của đỉnh được gỏn sau. Nờn, đểđảm bảo một đỉnh

đó cú nhón cố định khụng được gỏn nhón lại, phải cú yờu cầu rằng khụng cú cung nào trong mạng cú chiều dài õm.

Thuật toỏn Dijkstra được cài đặt như sau:

array[n] Dijkstra(n , root , dist [n,n]) // dist[i,j] = lij

// root: node nguồn // n: số node var pre_node[n] // Node liền trước

cur_dist[n] // Khoảng cỏch hiện tại

scanned[n] // nếu bằng TRUE, là đó được gỏn nhón cốđịnh index Findmin( )

d_min = INFINITY for each ( i , n )

if ( !scanned[i] && (cur_dist[i] < d_min) ) i_min = i (adsbygoogle = window.adsbygoogle || []).push({});

d_min = cur_dist[i] return i_min

void Scan( i ) for each ( j , n )

if (cur_dist [j] > cur_dist [i] + dist [i,j] ) cur_dist [j] = cur_dist [i] + dist [i,j] pre_node[j] = i cur_dist INFINITY pre_node -1 scanned FALSE cur_dist [root] = 0 #_scanned = 0

while ( #_scanned < n) i ( Findmin( ) Scan ( i ) return (pre_node)

Với mảng pre_node, ta sẽ thu được tất cả cỏc con đường tối ưu từ cỏc đỉnh trong mạng tới đỉnh nguồn.

2.3.4 Thuật toỏn Bellman-Ford

Khỏc với thuật toỏn Dijkstra, tỡm và quột đỉnh cú nhón nhỏ nhất, và mỗi đỉnh chỉ

phải quột một lần, thuật toỏn Bellman quột cỏc đỉnh theo thứ tự gỏn nhón của đỉnh, vỡ vậy sẽ khụng phải tỡm đỉnh nhỏ nhất, tuy nhiờn lại dẫn tới việc một đỉnh cú thể phải quột nhiều lần.

Thuật toỏn Bellman cơ bản hoạt động bằng cỏch quột lần lượt tất cả cỏc đỉnh, nhằm gỏn lại nhón cho cỏc đỉnh khỏc. Và cứ thực hiện lặp lại như vậy cho đến khi sau một vũng lặp mà khụng cú đỉnh nào được gỏn nhón lại nữa. Tuy nhiờn, làm như vậy phải thực hiện một lượng tớnh toỏn rất lớn. Thụng thường, khi quột một đỉnh, chỉ cần kiểm tra xem cú phải gỏn lại nhón cho cỏc đỉnh lõn cận hay khụng. Và chỉ cần quột những đỉnh được gỏn nhón lại trong vũng lặp trước.

Để thực hiện theo cỏch vừa núi, cú thể sử dụng một hàng đợi để lưu giữ thứ tự

quột cỏc đỉnh cần quột. Mỗi khi một đỉnh được gỏn nhón, nú lại được đưa vào hàng đợi. Vỡ hàng đợi là kho dữ liệu quản lý theo kiểu vào trước - ra trước (FIFO) nờn cỏc đỉnh sẽ được quột theo thứ tự gỏn nhón. Nếu một đỉnh được gỏn nhón lại sau khi đó quột, nú lại

được đưa vào trong hàng đợi.

Để hiểu thuật toỏn Bellman-Ford, ta xem vớ dụ sau: Xột mạng như trong Hỡnh 2.10, giả sử A là đỉnh nguồn. A được gỏn nhón 0 và được đưa vào hàng đợi. Quột A,

đỉnh B và C được gỏn nhón tương ứng là 5 và 1, và cựng được đưa vào hàng đợi. Tiếp theo, ta quột đỉnh B, gỏn nhón cho D và E cỏc giỏ trị 6 và 11. D và E cũng được đặt vào hàng đợi. Tiếp theo ta quột đỉnh C, B được gỏn nhón mới là 4 và được đưa trở lại hàng

đợi. Quột D, gỏn nhón 10 cho F và đưa F vào hàng đợi. Quột E. B được quột lần thứ 2, nú gỏn cho D và E cỏc nhón tương ứng là 5 và 10, và cả hai tiếp tục lại quay trở lại hàng

đợi. Quột F, khụng gỏn nhón mới cho đỉnh nào. Quột D, gỏn nhón 9 cho F và đưa F trở

Hỡnh 2..10 Mng vớ d

Thuật toỏn Bellman được cài đặt như sau:

array[n] Bellman (n , root , dist [n,n])

var pre_node[n] , cur_dist[n] , in_queue[n] , scan_queue[n] void Scan( i )

in_queue[ i ] = FALSE for j = 1 to n

if (cur_dist [j] > cur_dist [i] + dist [i,j] ) cur_dist [j] = cur_dist [i] + dist [i,j] pre_node [j] = i if ( ! in_queue [j] ) push (scan_queue , j) in_queue [j] = FALSE cur_dist INFINITY pre_node -1 in_queue FALSE initialize_queue (scan_queue) cur_dist [root] = 0

push (scan_queue , root) in_queue[root] = TRUE while ( ! empty (scan_queue))

i pop(scan_queue) scan (i)

return (pre_node).

Ta thấy rằng, cỏc đỉnh được quột theo thứ tự gỏn nhón, dẫn đến là cỏc đỉnh được quột theo khoảng cỏch bước (hop) tới đỉnh nguồn. Đầu tiờn, đỉnh nguồn được quột (hop = 0), tiếp theo là cỏc đỉnh lõn cận đỉnh nguồn (hop = 1). Và cứ thế tiếp tục. Do đú, ta thấy, một đỉnh cú thể cần phải quột tối đa n-1 lần.

Trong hầu hết cỏc trường hợp thực tế, số lần quột trung bỡnh của cỏc đỉnh khụng lớn, thường chỉ là 3 đến 4 lần, dự là mạng cú tới hàng ngàn đỉnh. Trong khi đú, với

Một phần của tài liệu GIAO THỨC THÔNG TIN ĐỊNH TUYẾN RIP, OSPF RONG MẠNG IP (Trang 67)