Các giao thức định tuyến
Các giải thuật định tuyến
TS. Trương Diệu Linh
Bộ môn Mạng thông Cn & Truyền thông
Viện Công nghệ thông Cn
Các gi
ả
i thu
ậ
t tìm
đườ
ng
Link-state: Dijkstra
Distance vector: Bellman Ford
Flooding
Gi
ả
i thu
ậ
t tìm
đườ
ng phân c
ấ
p
Gi
ả
i thu
ậ
t tìm hai
đườ
ng
đ
i phân bi
ệ
t Suurball
Gi
ả
i thu
ậ
t Prim-Dijktra
Các gi
ả
i thu
ậ
t
đị
nh tuy
ế
n
Thu
ậ
t toán
đị
nh tuy
ế
n/ tìm
đườ
ng là m
ộ
t b
ộ
ph
ậ
n
c
ủ
a t
ầ
ng m
ạ
ng có nhi
ệ
m v
ụ
quy
ế
t
đị
nh
đườ
ng ra/
vào c
ả
m
ộ
t gói tin có th
ể
đượ
c truy
ề
n lên
đ
ó,
Thu
ậ
t toán tìm
đườ
ng
đ
òi h
ỏ
i các tính ch
ấ
t sau:
Tính chính xác,
Tính
đơ
n gi
ả
n,
Kh
ả
n
ă
ng m
ở
r
ộ
ng
Tính
ổ
n
đị
nh,
Tính công b
ằ
ng và t
ố
i
ư
u
Cây
đườ
ng
đ
i ng
ắ
n nh
ấ
t - SPT
SPT – Shortest Path Tree
Các c
ạ
nh xu
ấ
t phát t
ừ
nút g
ố
c và t
ớ
i các lá
Đườ
ng
đ
i duy nh
ấ
t t
ừ
nút g
ố
c t
ớ
i nút v, là
đườ
ng
đ
i ng
ắ
n nh
ấ
t
gi
ữ
a nút g
ố
c và nút v
M
ỗ
i nút s
ẽ
có m
ộ
t SPT c
ủ
a riêng nút
đ
ó
y
x
w
u
z
u
y
x
w
v
z
2
2
1 3
1
1
2 5 3
5
Các gi
ả
i thu
ậ
t tìm
đườ
ng
Tìm
đườ
ng
đ
i t
ừ
1 ngu
ồ
n
đế
n
t
ấ
t c
ả
các nút khác th
ườ
ng
d
ự
a trên cây khung
Cây khung là 1 cây có g
ố
c là
ngu
ồ
n
đ
i qua t
ấ
t c
ả
các
đỉ
nh
c
ủ
a m
ộ
t
đồ
th
ị
Nguyên t
ắ
c t
ố
i
ư
u c
ủ
a các gi
ả
i
thu
ậ
t tìm
đườ
ng:
Cây khung t
ố
i thi
ể
u: t
ổ
ng tr
ọ
ng
s
ố
min.
M
ộ
t cây khung t
ố
i thi
ể
u có th
ể
không ph
ả
i là duy nh
ấ
t.
M
ộ
t cây khung t
ố
i thi
ể
u không
ch
ứ
a b
ấ
t k
ỳ
m
ộ
t vòng l
ặ
p nào,
Bi
ể
u di
ễ
n m
ạ
ng b
ở
i
đồ
th
ị
Đồ
th
ị
v
ớ
i các nút (b
ộ
đị
nh tuy
ế
n) và các c
ạ
nh (liên
k
ế
t)
Chi phí cho vi
ệ
c s
ử
d
ụ
ng m
ỗ
i liên k
ế
t c(x,y)
B
ă
ng thông,
độ
tr
ễ
, chi phí, m
ứ
c
độ
t
ắ
c ngh
ẽ
n
…
Gi
ả
thu
ậ
t ch
ọ
n
đườ
ng: Xác
đị
nh
đườ
ng
đ
i ng
ắ
n nh
ấ
t
gi
ữ
a hai nút b
ấ
t k
ỳ
u
w
v
z
2
2
1 3
1
5 3
Các gi
ả
i thu
ậ
t tìm
đườ
ng ki
ể
u
link-state: Dijkstra
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng
đ
i ng
ắ
n nh
ấ
t Dijkstra (1959):
Thu
ậ
t toán Dijkstra, mang tên c
ủ
a nhà khoa h
ọ
c máy tính ng
ườ
i
Hà Lan Edsger Dijkstra, là m
ộ
t thu
ậ
t toán gi
ả
i quy
ế
t bài toán
đườ
ng
đ
i ng
ắ
n nh
ấ
t ngu
ồ
n
đơ
n trong m
ộ
t
đồ
th
ị
có h
ướ
ng.
Thu
ậ
t toán th
ự
c hi
ệ
n tìm
đườ
ng
đ
i t
ừ
m
ộ
t
đỉ
nh
đế
n t
ấ
t c
ả
các
đỉ
nh còn l
ạ
i c
ủ
a
đồ
th
ị
có tr
ọ
ng s
ố
không âm.
Thu
ậ
t toán Dijkstra bình th
ườ
ng s
ẽ
có
độ
ph
ứ
c t
ạ
p là
trong
đ
ó m là s
ố
c
ạ
nh, n là s
ố
đỉ
nh c
ủ
a
đồ
th
ị
đ
ang xét.
Để
minh h
ọ
a các gi
ả
i thu
ậ
t tìm
đườ
ng, thông th
ườ
ng ng
ườ
i ta
k
ý
hi
ệ
u N là s
ố
nodes trong m
ạ
ng, i và j là nhãn c
ủ
a các node
trong m
ạ
ng.
Dijkstra
K
ý
hi
ệ
u:
G = (V,E)
:
Đồ
th
ị
v
ớ
i t
ậ
p
đỉ
nh
V
và t
ậ
p c
ạ
nh
E
c(x,y):
chi phí c
ủ
a liên k
ế
t
x
t
ớ
i
y
; =
∞
n
ế
u không
ph
ả
i 2 nút k
ế
nhau
d(v):
chi phí hi
ệ
n th
ờ
i c
ủ
a
đườ
ng
đ
i t
ừ
nút ngu
ồ
n t
ớ
i
nút
đ
ích.
v
p(v):
nút ngay tr
ướ
c nút
v
trên
đườ
ng
đ
i t
ừ
ngu
ồ
n t
ớ
i
đ
ích
T:
T
ậ
p các nút mà
đườ
ng
đ
i ng
ắ
n nh
ấ
t
đ
ã
đượ
c xác
Dijkstra
Init():
V
ớ
i m
ỗ
i nút v,
d[v]
=
∞
,
p[v]
= NIL
d[s]
= 0
Update(
u,v
),
trong dó (
u,v
) u, v là m
ộ
t
c
ạ
nh nào
đ
ó c
ủ
a
G
if
d[v] > d[u] + c(u,v)
then
d[v] = d[u] + c(u,v)
p[v] = u
Dijkstra
1.
Init()
;
2.
T
=
Φ
;
3. Repeat
4.
u:
u
∈
T
|
d(u)
là bé nh
ấ
t ;
5.
T = T
∪
{u};
6. for all
v
∈
neighbor(u) và
v
∉
T
7.
update(u,v)
;
11
Step
0
1
2
3
4
5
T
u
ux
uxy
uxyv
uxyvw
uxyvwz
d(v),p(v)
2,u
2,u
2,u
d(w),p(w)
5,u
4,x
3,y
3,y
d(x),p(x)
1,u
d(y),p(y)
∞
2,x
d(z),p(z)
∞ ∞4,y
4,y
4,y
y x wu z
u y x w v z 2 2 1 3 1 1 2 5 3 5 v v x y w z (u,v) (u,x) (u,x) (u,x) (u,x) destination link
B
ả
ng ch
ọ
n
đườ
ng c
ủ
a u:
SPT c
ủ
a u:
Dijsktra
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng
đ
i ng
ắ
n nh
ấ
t
Dijkstra (1959):
Dijsktra
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng
đ
i ng
ắ
n nh
ấ
t
Dijkstra (1959):
1/23/14 13
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t
(link-state routing protocols):
1.
Khám phá các láng gi
ề
ng và h
ọ
c các
đị
a ch
ỉ
m
ạ
ng c
ủ
a chúng
2.
Đ
o
độ
tr
ễ
(delay), hay giá (cost) t
ớ
i các láng
gi
ề
ng
3.
Xây d
ự
ng m
ộ
t gói tin báo cho các tr
ạ
ng thái/
thông tin v
ừ
a h
ọ
c
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t (link-state routing
protocols):
1.
Khám phá các láng gi
ề
ng và h
ọ
c các
đị
a ch
ỉ
m
ạ
ng c
ủ
a chúng
Khám phá các routers láng giềng bằng cách gửi 1 gói tin HELLO trên mỗi đường dẫn,
Khi 2 hay nhiều routers kết nối bởi một LAN, tình huống sẽ phức tạp hơn.
1/23/14 15
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t (link-state
routing protocols):
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t (link-state routing
protocols):
3.
Xây d
ự
ng m
ộ
t gói tin báo cho các tr
ạ
ng thái/ thông tin v
ừ
a h
ọ
c:
Gói tin bắt đầu với định danh của máy gửi, theo sau là thứ tự trạng thái, tuổi (age) và một danh sách các láng giềng. Thông thường các gói tin trạng thái được xây dựng một cách định kỳ.
1/23/14 17
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t (link-state routing
protocols):
4.
G
ử
i gói tin c
ậ
p nh
ậ
t
đế
n t
ấ
t c
ả
các routers khác:
Sử dụng thuật toán ngập lụt (flooding) để gửi các gói tin trạng thái, Các gói tin chứa thông tin về tuổi (age) để tránh trùng lặp và cập nhật
thông tin. Khi bộ đếm tuổi quay về zero, thông tin về routers đấy sẽ bị hủy.
Trường tuổi cũng giảm theo từng routers trong quá trình ngập lụt để
đảm bảo không có gói tin nào có thể tồn tại vô hạn,
Các gói tin trạng thái thường được lưu vào bộ nhớ đệm để xử lý tuần tự, nếu có trùng lặp sẽ bị loại bỏ.
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t
(link-state routing protocols):
5.
Tính
đườ
ng d
ẫ
n ng
ắ
n nh
ấ
t cho t
ừ
ng routers:
Sau khi các routers có
đầ
y
đủ
thông tin tr
ạ
ng thái các
đườ
ng d
ẫ
n s
ẽ
s
ử
d
ụ
ng thu
ậ
t toán Dijkstra
để
tính toán/
xây d
ự
ng
đườ
ng d
ẫ
n ng
ắ
n nh
ấ
t cho m
ọ
i n
ơ
i
đế
n có
th
ể
,
Ch
ọ
n
đườ
ng tr
ạ
ng thái liên ki
ế
t (link-state)
đượ
c dùng nhi
ề
u trong các m
ạ
ng hi
ệ
n nay,
Các giao th
ứ
c ch
ọ
n
đườ
ng tr
ạ
ng thái liên k
ế
t ph
ổ
bi
ế
n
là OSPF (Open Shortest Path First) và IS-IS
(Intermediate System-Intermediate System).
Gi
ả
i thu
ậ
t tìm
đườ
ng link-state
Gi
ả
i thu
ậ
t tìm
đườ
ng tr
ạ
ng thái liên k
ế
t
(link-state routing protocols)
B
ộ
đị
nh tuy
ế
n dùng nhi
ề
u b
ộ
nh
ớ
và th
ự
c thi
nhi
ề
u h
ơ
n so v
ớ
i các giao th
ứ
c
đị
nh tuy
ế
n
theo vect
ơ
kho
ả
ng cách.
L
ý
do c
ầ
n thi
ế
t ph
ả
i l
ư
u tr
ữ
thông tin c
ủ
a t
ấ
t
c
ả
các láng gi
ề
ng, c
ơ
s
ở
d
ữ
li
ệ
u m
ạ
ng
đế
n t
ừ
các n
ơ
i khác và vi
ệ
c th
ự
c thi các thu
ậ
t toán
đị
nh tuy
ế
n tr
ạ
ng thái.
Các nhu c
ầ
u v
ề
b
ă
ng thông c
ầ
n ph
ả
i tiêu t
ố
n
Bellman-Ford
Ph
ươ
ng trình Bellman-Ford (quy hoach
độ
ng)
Đị
nh ngh
ĩ
a
d
x
(y) := chi phí c
ủ
a
đườ
ng
đ
i ng
ắ
n nh
ấ
t
t
ừ
x t
ớ
i y
Ta có
d
x
(y) = min {c(x,v) + d
v
(y) }
cho t
ấ
t c
ả
các v là hàng xóm c
ủ
a x
21
Bellman-Ford
u
y
x
w
v
z
2
2
1 3
1
1
2 5 3
5
D
ễ
th
ấ
y, d
v(z) = 5, d
x(z) = 3, d
w(z) = 3
d
u(z) = min { c(u,v) + d
v(z),
c(u,x) + d
x(z),
c(u,w) + d
w(z) }
= min {2 + 5,
1 + 3,
5 + 3} = 4
Nút nào làm giá tr
ị
trên nh
ỏ
nh
ấ
t
➜
L
ự
a ch
ọ
n là
nút k
ế
ti
ế
p trong b
ả
ng ch
ọ
n
đườ
ng
Gi
ả
i thu
ậ
t tìm
đườ
ng vector kho
ả
ng cách
Gi
ả
i thu
ậ
t tìm
đườ
ng vector kho
ả
ng cách
(distance-vector):
M
ỗ
i router duy trì m
ộ
t b
ả
ng
đị
nh tuy
ế
n vector kho
ả
ng cách
cho c
ự
ly t
ố
t nh
ấ
t t
ớ
i t
ừ
ng
đ
ích và
đườ
ng truy
ề
n dùng
để
t
ớ
i ngu
ồ
n
đ
ích
đ
ó,
Các b
ả
ng
đị
nh tuy
ế
n
đượ
c c
ậ
p nh
ậ
t thông tin nh
ờ
trao
đổ
i
đị
nh k
ỳ
v
ớ
i các láng gi
ề
ng c
ủ
a nó,
S
ử
d
ụ
ng thu
ậ
t toán Bellman-Ford Fulkerson,
Là thu
ậ
t toán ch
ọ
n
đườ
ng g
ố
c cho m
ạ
ng ARPANET và
đượ
c dùng r
ộ
ng rãi trong
đị
nh tuy
ế
n IP trong giao th
ứ
c
đị
nh tuy
ế
n RIP (Routing Information Protocol), IDX c
ủ
a
Novell.
Đượ
c s
ử
d
ụ
ng
đế
n n
ă
m 1979 sau
đ
ó
đượ
c thay th
ế
b
ở
i
các gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng tr
ạ
ng thái liên k
ế
t do
độ
tr
ễ
l
ớ
n,
th
ờ
i gian h
ộ
i t
ụ
lâu do
đ
òi h
ỏ
i c
ẩ
n ph
ả
i trao
đổ
i các thông
đ
i
ệ
p
đị
nh tuy
ế
n l
ớ
n.
Gi
ả
i thu
ậ
t tìm
đườ
ng d
ạ
ng distance-vector
ý tưởng cơ bản:
DV: Vector kho
ả
ng cách, t
ạ
m
coi là
đườ
ng
đ
i ng
ắ
n nh
ấ
t c
ủ
a
t
ừ
m
ộ
t nút t
ớ
i nh
ữ
ng nút khác
M
ỗ
i nút
đị
nh k
ỳ
g
ử
i DV c
ủ
a nó
t
ớ
i các nút bên c
ạ
nh
Khi nút x nh
ậ
n
đượ
c 1 DV, nó
s
ẽ
c
ậ
p nh
ậ
t DV c
ủ
a nó qua pt
Bellman-ford
V
ớ
i m
ộ
t s
ố
đ
i
ề
u ki
ệ
n,
ướ
c
l
ượ
ng
D
x(y) s
ẽ
h
ộ
i t
ụ
d
ầ
n
đế
n
giá tr
ị
nh
ỏ
nh
ấ
t
d
x(y)
Ch
ờ
(Thay
đổ
i trong DV c
ủ
a
nút bên c
ạ
nh)
Tính l
ạ
i
ướ
c l
ượ
ng DV
N
ế
u DV thay
đổ
i,
Báo
cho
nút bên c
ạ
nh
25
x y z
x y z
0 2 7
∞ ∞ ∞
∞ ∞ ∞
t
ừ
chi phí tới
t
ừ
t
ừ
x y z
x y z 0 t ừ
chi phí tới
x y z
x y z
∞ ∞
∞ ∞ ∞
chi phí tới
x y z
x y z
∞ ∞ ∞
7 1 0 chi phí tới
∞
2 0 1
∞ ∞ ∞
2 0 1 7 1 0
thờigian
x
z
1 2 7y
nút x nút y nút zDx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)} = min{2+0 , 7+1} = 2
Dx(z) = min{c(x,y) +
Dy(z), c(x,z) + Dz(z)} = min{2+1 , 7+0} = 3 3
x y z
x y z
0 2 7
∞ ∞ ∞
∞ ∞ ∞
t
ừ
chi phí tới
t
ừ
t
ừ
x y z
x y z
0 2 3
t
ừ
chi phí tới x y z
x y z
0 2 3
t
ừ
chi phí tới
x y z
x y z
∞ ∞
∞ ∞ ∞
chi phí tới
x y z
x y z
0 2 7
t
ừ
chi phí tới
x y z
x y z
0 2 3
t
ừ
chi phí tới
x y z
x y z
0 2 3
t
ừ
chi phí tới x y z
x y z
0 2 7
t
ừ
chi phí tới
x y z
x y z
∞ ∞ ∞
chi phí tới
∞
2 0 1
∞ ∞ ∞
2 0 1 7 1 0
2 0 1 7 1 0
2 0 1 3 1 0
2 0 1 3 1 0
2 0 1
3 1 0 2 0 1 3 1 0
x
z
1 2 7y
nút x nút y nút zDx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)} = min{2+0 , 7+1} = 2
Dx(z) = min{c(x,y) +
So sánh link-state và distance
vector
Thông
đ
i
ệ
p trao
đổ
i
•
LS:
n nút, E c
ạ
nh, O(nE)
thông
đ
i
ệ
p
•
DV:
Ch
ỉ
trao
đổ
i gi
ữ
a các
hàng xóm
–
Th
ờ
i gian h
ộ
i t
ụ
thay
đổ
i
T
ố
c
độ
h
ộ
i t
ụ
•
LS:
Thu
ậ
t toán: O(n
2) c
ầ
n
O(nE) thông
đ
i
ệ
p
•
DV
: Thay
đổ
i
S
ự
ch
ắ
c ch
ắ
n:
Gi
ả
i s
ử
m
ộ
t
router ho
ạ
t
độ
ng sai
LS:
–
nút g
ử
i các chi phí sai
–
M
ỗ
i nút tính riêng b
ả
ng
ch
ọ
n
đườ
ng -> có v
ẻ
ch
ắ
c
ch
ắ
n h
ơ
n
DV:
–
DV có th
ể
b
ị
g
ử
i sai
–
M
ỗ
i nút tính toán d
ự
a trên
các nút khác
• Lỗi bị lan truyền trong mạng
Các gi
ả
i thu
ậ
t tìm
đườ
ng
T
ổ
ng k
ế
t v
ề
các giao th
ứ
c
đị
nh tuy
ế
n ph
ổ
d
ụ
ng trên m
ạ
ng IP:
Đặc trưng RIPv1 RIPv2 IRGP EIGRP OSPF
Distance‐vector X X X X
Link‐state X
Tự động tóm tắt định tuyến X X X X
Hỗ trợ VLSM X X X
3rd party compaCble X X X
Thích hợp Nhỏ Nhỏ Vừa Lớn Lớn
Thời gian hội tụ Chậm Chậm Chậm Nhanh Nhanh
Giá trị định tuyến Hop count Hop count BW+D BW+D 10E8/BW
Giới hạn hop 15 15 100 100
Cân bằng tải cùng giá trị đt X X X X X
Cân bằng tải ko cùng giá trị đt X X
Gi
ả
i thu
ậ
t ng
ậ
p l
ụ
t
Gi
ả
i thu
ậ
t ng
ậ
p l
ụ
t (flooding):
M
ỗ
i nút v
ừ
a là nút nh
ậ
n v
ừ
a là
nút g
ử
i.
M
ỗ
i nút g
ử
i gói tin nó nh
ậ
n
đượ
c ra t
ấ
t c
ả
các nút k
ề
tr
ừ
nút mà t
ừ
đ
ó nó
đ
ã nh
ậ
n gói tin.
Gi
ả
i thu
ậ
t có th
ể
có thêm các
c
ơ
ch
ế
ch
ố
ng l
ặ
p, ch
ố
ng v
ậ
n
chuy
ể
n vòng tròn, c
ơ
ch
ế
h
ế
t
h
ạ
n
…
Gi
ả
i thu
ậ
t này th
ườ
ng
đượ
c s
ử
d
ụ
ng trên các m
ạ
ng ad hoc,
sensor networks.
selective flooding algorithm:
ch
ỉ
g
ử
i gói tin trên các
đườ
ng
đ
i
theo h
ướ
ng c
ủ
a thi
ế
t b
ị
đ
ích
Giải thuật ngập lụt
•
Ngập lụt có điều khiển
–
SNCF(Sequence‐number‐controlled flooding)
•
Nút gửi đưa địa chỉ của nó và số hiệu gói vào gói Cn
broadcast.
•
Mỗi nút lưu địa chỉ và số hiệu của gói Cn nó đã gửi đi.
•
Nếu nút gặp lại gói Cn nó đã gửi, nó sẽ bỏ gói Cn mà
Gia
ỉ
thu
ậ
t tìm
đườ
ng phân c
ấ
p
Tìm
đườ
ng trong m
ạ
ng
đ
a mi
ề
n
Phân c
ấ
p: m
ứ
c inter-domain, intra-domain
Ả
o hóa các domain:
•
Ả
o hóa ki
ể
u nút:
– Mỗi miền được ảo hóa thành 1 nút
•
Ả
o hóa hình sao
– Một số nút của miền gọi là nút biên, có các kết nối inter-domain
đến các miền khác
– Mỗi miền ảo hóa thành 1 hình sao, có 1 nút ảo trung tâm nối hình sao đến các nút biên.
•
Ả
o hóa hình l
ướ
i
– Một số nút của miền gọi là nút biên, có các kết nối inter-domain
đến các miền khác
– Mỗi miền được ảo hóa thành một đồ thị gồm các nút biên được nối nhau được bởi các liên kết ảo.
Gi
ả
i thu
ậ
t tìm
đườ
ng phân c
ấ
p
M
ạ
ng m
ứ
c liên mi
ề
n tr
ở
thành m
ạ
ng c
ủ
a các
mi
ề
n
đ
ã
đượ
c
ả
o hóa và các liên k
ế
t liên mi
ề
n
Gi
ả
i thu
ậ
t tìm
đườ
ng phân c
ấ
p
!" ! !# !$ !% !& !' !! !" # $ ( !) !* % " $ # !" & ) * %&'()&*+,-#.& * #
! ( !! !' ) " + $ !& !) !* % !" !$ &) !( && &! &' ( &% &* !# !% !* !) !& !! !' $ " # * % ) & 34%%,-+. ! & ) * ( " $ % # #$ + + !( !$ !# !) !% !* 56 5 6 5 6 56 + !" + !! !& + + + %&78%8/,-6. !' ! & % $ # !! ( !' !% " !) * !$ !& !( !# 7&<)='()=>' <>?* &
Gi
ả
i thu
ậ
t tìm
đườ
ng phân c
ấ
p
!"
! #
$
!%
!$ &
&(
$
!&
!#
& #
!&
!
!'
( %
Gi
ả
i thu
ậ
t tìm
đườ
ng phân c
ấ
p
Path vector
S
ử
d
ụ
ng
để
đị
nh tuy
ế
n trong các m
ạ
ng
đ
a mi
ề
n
M
ỗ
i mi
ề
n
đượ
c
ả
o hóa thành m
ộ
t nút m
ạ
ng g
ọ
i là
speaker
Nút m
ạ
ng
ả
o này trao
đổ
i thông tin
đị
nh tuy
ế
n v
ớ
i
các nút m
ạ
ng khác:
•
thông tin v
ề
đườ
ng
đ
i
•
Không trao
đổ
i thông tin v
ề
đơ
n v
ị
đị
nh tuy
ế
n (tr
ọ
ng s
ố
)
T
ươ
ng t
ự
gi
ả
i thu
ậ
t lo
ạ
i distance vector
Gi
ả
i thu
ậ
t tìm 2
đườ
ng
đ
i phân bi
ệ
t
Giải thuật tìm 2 đường đi cạnh phân biệt
Với một cặp nguồn, đích tìm 2 đường đi không có cạnh chung Thuật toán dùng cho định tuyến có dự phòng
Giải thuật tối ưu Suurballe trong đồ thị có hướng với trọng số không âm
Đồ thị G, trọng số các cạnh w(u,v). Nguồn s. Đích t Tìm cây đường đi ngắn nhất T từ đỉnh s bằng Dijkstra. P1 là đường đi ngắn nhất từ s đến t.
Điều chỉnh trọng số các cạnh của G • w'(u,v) = w(u,v) − d(s,v) + d(s,u).
• Mọi cạnh cảu cây T đều có trọng số 0,
• Các cạnh không thuộc cây T có trọng số không âm
Tạo đồ thị Gt từ G bằng cách bỏ đi các cạnh hướng vào s và đảo ngược chiều các cạnh có
trọng số 0 trên đường đi P1.
Tìm đường đi ngắn nhất P2 trên Gt bằng Dijkstra’s.
Bỏ các cạnh ngược với chiều của P2 trên cả 2 đường đi.
Các cạnh còn lại cuả P1 và P2 tạo thành 2 đường đi không chung cạnh
Gi
ả
i thu
ậ
t tìm 2
đườ
ng
đ
i phân bi
ệ
t
A: Đồ thị G.
B: Tính đường đi ngắn nhất C: Cây T
D: Điều chỉnh trọng số E: Tính P2 trên Gt. F: thu được P1,P2.
Các gi
ả
i thu
ậ
t tìm
đườ
ng
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng qu
ả
ng bá (broadcast routing):
Trong m
ộ
t s
ố
ứ
ng d
ụ
ng, host c
ầ
n g
ử
i m
ộ
t s
ố
thông
đ
i
ệ
p
đế
n m
ộ
t
nhóm hay t
ấ
t c
ả
các host khác trong m
ộ
t subnet hay m
ộ
t liên
m
ạ
ng,
G
ử
i gói tin
đế
n t
ấ
t c
ả
các host m
ộ
t cách
đồ
ng th
ờ
i
đượ
c g
ọ
i là
broadcast routing, có m
ộ
t s
ố
cách th
ứ
c
để
th
ự
c hi
ệ
n broadcast
routing:
• Flooding: giải thuật ngập lụt có thể được sử dụng nhưng giải thuật này thường sinh nhiều gói tin thừa và gây lãng phí băng thông,
• Multi-destination routing: địa chỉ gói tin gửi định nghĩa một tập các địa chỉ gốc mà ánh xạ tới một nhóm hay một nhóm các mạng đích.
• Spanning tree: sử dụng cây khung nhỏ nhất, phương pháp này khá hiệu quả do không chứa vòng lòng lặp, tạo số gói tin vừa đủ để gửi tuy nhiên nhược điểm là mỗi router còn chứa thông tin về cây khung nhỏ nhất này.
• Reserve path forwarding: các router trung chuyển xác định đã nhận gói tin từ cổng nào của router. Nếu đó là cổng router dùng để gửi thông tin theo chiều ngược lại về phía nguồn thì gói tin sẽ được lặp lại trên tất cả các cổng khác. Nếu không gói tin sẽ bị hủy đi. Điều này đảm bảo gói tin
đi theo đường tốt nhất.
Các gi
ả
i thu
ậ
t tìm
đườ
ng
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng qu
ả
ng bá (broadcast routing):
Cây khung (Spanning tree)
•
Cây khung của một đồ thị là cây đi qua tất cả
các đỉnh của đồ thị
1/23/14 41
1
2
4 3
5
1
2
4 3
5
Giải thuật xây dựng cây khung
•
Cho đồ thị G=(N, A)
–
1) Chọn một nút bất kỳ n trong tập N, N’={n}, A’={}
–
2) Nếu N’=N, thật toán dừng, cây T=(N’,A’) là cây
khung
–
3) Chọn một cung (i,j)
∈
A, i
∈
N', j
∈
̸ N'
N' := N'
∪
{j}; A' := A'
∪
{(i,j)};
Lặp lại bước 2.
Cây khung nhỏ nhất
•
Cây có tổng trọng số trên các cạnh là nhỏ nhất
•
Các giải thuật
–
Prim‐Dijsktra:
•
Bắt đầu từ một nút bất kỳ, nút trở thành 1 phần cây.
•
Thêm vào cây cạnh có trọng số nhỏ nhất nối một nút
của cây với 1 nút chưa có trong cây
Prim‐Dijkstra
7 8
9 5 4
1 2
3
2 2
1
8
7 2
1
3
1 1
2
1
3 3
8 Step
Step 3
Step
Step 4 Step 5
Cây khung nhỏ nhất
•
Giải thuật Kruskal
–
Tạo một rừng F, mỗi đỉnh của đồ thị coi như 1 cây
–
Tập
A
chứa tất cả các cạnh của đồ thị.
–
Chừng nào A còn chưa rỗng lặp lại:
•
Lấy 1 cạnh có trọng số nhỏ nhất từ A
•
Nếu cạnh đó nối 2 cây của F thì cho cho cạnh vào rừng
F và nối 2 cây thành 1 cây. Nếu không, bỏ cạnh đó
–
Kết quả thu được cây khung nhỏ nhất F.
Gi
ả
i thu
ậ
t tìm
đườ
ng multicast
Việc gửi gói tin đến một nhóm các dịch vụ/ nhóm địa chỉ định trước
được gọi là multicasting và giải thuật gửi gói tin multicast được gọi là chọn đường đa hướng/ multicast routing,
Multicasting khác với gói tin quảng bá (broadcasting) bởi số lượng đích
đến cần chuyển tiếp, và broadcasting thì gửi gói tin đến một subnet, hay một liên mạng cụ thể.
Để multicasting thì cần phải quản lý nhóm, một số cách thức cơ bản là
tham gia nhóm, tạo nhóm, hủy nhóm và rời nhóm. Những tác vụ này thì ko liên quan đến các cách thức định tuyến.
Để thực hiện chọn đường multicasting, các router phải tính toán được
một spanning tree bao trùm tất cả các router khác trong subnet, ví dụ hình 30.a và 30.b
Sau khi xây dựng spanning tree, router xây dựng các cây cắt tỉa cho
Gi
ả
i thu
ậ
t tìm
đườ
ng multicast
1/23/14 47
Gi
ả
i thu
ậ
t tìm
đườ
ng multicast
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho các host di
độ
ng
1/23/14 49
Hình 31: Một WAN cho các LAN, MAN và các cell vô tuyến
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho các
host di
độ
ng
Mỗi thiết bị di động đều có một home location
Toàn bộ không gian được chia thành các vùng (area)
Mỗi vùng có foreign agent, quản lý các thiết bị đang đến thăm vùng
Mỗi vùng có một home agent quản lý các thiết bị của vùng đang di chuyển
thăm vùng khác
Khi một thiết bị di động đi vào một vùng mới thiết bị di động đó phải đăng ký
với một foreign agent (hoặc base station), thủ tục đăng ký thông thường như sau:
1. Foreign agent quảng bá định kỳ 1 gói tin báo hiệu sự tồn tại của nó. Các thiết bị đầu
cuối di động có thể tóm các gói tin này, hoặc ngược lại có thể gửi một gói tin báo
hiệu, “Có 1 foreign agent ở vị trí này không”,
2. Host di động đăng ký với foreign agent để cung cấp địa chỉ và các thủ tục xác thực,
3. Foreign agent liên lạc với home agent để xác thực các thông tin nàt
4. Home agent kiểm tra thông tin bảo mật, sau đó báo hiệu ngược với foreign agent
5. Foreign nhận được thông báo từ Home agent, nó thông báo cho host di động các
xác thực và thủ tục đã hoàn tất và cho phép việc kết nối được thực thi với host di
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho các
host di
độ
ng
Khi m
ộ
t gói tin
đượ
c g
ử
i
đế
n thi
ế
t b
ị
độ
ng, gói
tin s
ẽ
đượ
c
đị
nh tuy
ế
n
đế
n vùng home c
ủ
a
thi
ế
t b
ị
Home agent xác
đị
nh
đị
a ch
ỉ
c
ủ
a foreign
agent
đ
ang qu
ả
n l
ý
thi
ế
t b
ị
di
độ
ng
Home agent
đ
óng gói l
ạ
i gói tin, g
ử
i cho
foreign agent
Foreign agent chuy
ể
n gói tin cho thi
ế
t b
ị
nh
ậ
n
Home agent c
ũ
ng g
ử
i cho ng
ườ
i g
ử
i
đị
a ch
ỉ
c
ủ
a foreign agent.
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho các
host di
độ
ng
Gi
ả
i thu
ậ
t tìm
đườ
ng m
ạ
ng adhoc
M
ạ
ng tùy bi
ế
n không dây (mobile wireless ad-hoc network:
MANET) là m
ộ
t t
ậ
p h
ợ
p g
ồ
m nhi
ề
u h
ơ
n m
ộ
t thi
ế
t b
ị
/ nút m
ạ
ng
v
ớ
i kh
ả
n
ă
ng n
ố
i m
ạ
ng qua các giao ti
ế
p không dây v
ớ
i nhau
mà không theo m
ộ
t h
ạ
t
ầ
ng
đị
nh s
ẵ
n
M
ỗ
i nút trong m
ộ
t m
ạ
ng ad hoc ho
ạ
t
độ
ng v
ừ
a nh
ư
m
ộ
t máy
ch
ủ
(host) v
ừ
a nh
ư
m
ộ
t thi
ế
t b
ị
đị
nh tuy
ế
n chuy
ể
n ti
ế
p d
ữ
li
ệ
u
Vi
ệ
c quy
ế
t
đị
nh xem nút nào s
ẽ
th
ự
c hi
ệ
n vi
ệ
c chuy
ể
n ti
ế
p d
ữ
li
ệ
u
đượ
c d
ự
a trên tình tr
ạ
ng k
ế
t n
ố
i c
ủ
a m
ạ
ng,
Topo c
ủ
a m
ạ
ng ad-hoc nói chung là
độ
ng, do s
ự
chuy
ể
n
độ
ng
c
ủ
a nút, s
ự
xu
ấ
t hi
ệ
n c
ủ
a nút m
ớ
i và vi
ệ
c nút c
ũ
r
ờ
i kh
ỏ
i
m
ạ
ng.
Các nút m
ạ
ng ph
ả
i th
ườ
ng xuyên khám phá topo: nghe thông
báo v
ề
s
ự
xu
ấ
t hi
ệ
n c
ủ
a nút khác, thông báo v
ề
s
ự
xu
ấ
t hi
ệ
n
c
ủ
a b
ả
n thân.
Các giao th
ứ
c
đị
nh tuy
ế
n k
ế
th
ừ
a các gi
ả
i thu
ậ
t
đị
nh tuy
ế
n
truy
ề
n th
ố
ng nh
ư
ng t
ố
i
ư
u/ thay
đổ
i
để
phù h
ợ
p v
ớ
i
đặ
c
đ
i
ể
m
m
ạ
ng ad-hoc
Hình 33: Mô hình ứng dụng của mạng ad hoc
Gi
ả
i thu
ậ
t tìm
đườ
ng m
ạ
ng adhoc
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho m
ạ
ng ad hoc
Các giao th
ứ
c
đượ
c thi
ế
t k
ế
cho m
ạ
ng ad hoc c
ầ
n
đượ
c
đả
m
b
ả
o các tiêu chí sau:
Thích
ứ
ng nhanh khi topo m
ạ
ng thay
đổ
i.
Trong trường hợp các nút mạng di chuyển nhanh, yêu cầu kết nối tăng lên thì các giao thức hoạt động theo cơ chế tiếp cận tập trung sẽ giảm hiệu quả rõ rệt do phải tốn nhiều thời gian để thu thập thông tin về trạng thái hiện tại và phát tán lại nó trong khi đó cấu hình mạng có thể đã thay đổi khác đi rồi,
Đả
m b
ả
o hi
ệ
u qu
ả
trong môi tr
ườ
ng truy
ề
n khi các nút
đứ
ng yên,
Các gói tin không b
ị
l
ặ
p gây nên hi
ệ
n t
ượ
ng t
ắ
c ngh
ẽ
n, hao h
ụ
t
b
ă
ng thông trong m
ạ
ng trong khi tài nguyên c
ủ
a các nút m
ạ
ng ad
hoc th
ườ
ng h
ạ
n ch
ế
,
B
ả
o m
ậ
t gói tin: truy
ề
n d
ẫ
n trong môi tr
ườ
ng không dây s
ẽ
d
ễ
nguy
c
ơ
b
ị
t
ấ
n công b
ằ
ng các ph
ươ
ng pháp nh
ư
xâm nh
ậ
p
đườ
ng
truy
ề
n, phát l
ạ
i, thay
đổ
i các gói tin tiêu
đề
,
đ
i
ề
u h
ướ
ng các thông
đ
i
ệ
p
đị
nh tuy
ế
n.
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng cho m
ạ
ng ad hoc
•
Table driven (proacCve) rouCng
–
Bảng định tuyến duy trì một danh sách các đích và
đường đi. Bảng định tuyến thường xuyên được
trao đổi. Nhược điểm
•
Lượng dữ liệu phải duy trì
•
Phản ứng chậm với sự thay đổi cấu trúc mạng và lỗi
•
OLSR, DSDV
•
On demand (reacCve) rouCng
–
Tìm đường khi có yêu cầu bằng cách gửi gói Cn
Route Request đi toàn mạng
–
Nhược điểm:
•
Độ trễ để ™m kiếm đường đi lớn
•
Quá nhiều gói Cn trên mạng khi yêu cầu đường đi
•
Hybrid (proacCve, reacCve) rouCng:
–
Một số đường đi triển vọng được chuẩn bị sẵn
theo kiểu proacCve
–
Với những yêu cầu từ những nút mạng mới,
đường đi được ™m kiếm theo kiểu reacCve
•
Các giao thức phân cấp
–
Lựa chọn hình thức định tuyến proacCve hay
reacCve tùy theo độ sâu của các nút mạng
–
VD: Cluster based rouCng
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng m
ạ
ng ad hoc
– AODV: Ad hoc On‐Demand Distance Vector RouCng (RFC 3561)
– là giao thức định tuyến phổ biến trên mạng ad hoc, sử dụng các gói tin route request, route reply để xây dựng các thông tin định tuyến
Gi
ả
i thu
ậ
t ch
ọ
n
đườ
ng m
ạ
ng ad hoc
•
Mạng im lặng cho đến khi có một yêu cầu kết nối
•
Nút cần truyền Cn phát gói Cn Route request
broadcast toàn bộ mạng
•
Các nút chuyển Cếp gói Cn đồng thời lưu lại thông Cn
nút gửi
•
Nếu nút chuyển Cếp đã có đường đi đến đích, nút
này gửi lại nguồn đường đi tạm thời.
•
Nút nguồn chọn đường đi ngắn nhất
AODV
Hình 35.a: Định dạng các gói tin RouteRequest trong AODV
AODV
•
DesCnaCon sequence number
–
Tăng mỗi khi 1 nút gửi yêu cầu ™m đường đến nút
đích
–
Tăng mỗi khi nút đích gửi trả lời cho một yêu cầu
™m đường
•
DesCnaCon sequence number là chỉ số xác
định nh cập nhật của một đường đi đến một
đích.
AODV
K
ế
t lu
ậ
n
Các giao th
ứ
c
đị
nh tuy
ế
n v
ớ
i tr
ọ
ng tâm v
ẫ
n k
ế
các gi
ả
i
thu
ậ
t tìm
đườ
ng, xây d
ự
ng
đườ
ng
đ
i ng
ắ
n nh
ấ
t, cây
khung nh
ỏ
nh
ấ
t nh
ư
Ford-Bellman Fulkerson, Dijkstra.
Các giao th
ứ
c
đị
nh tuy
ế
n khác nhau ch
ủ
y
ế
u do:
Môi tr
ườ
ng,
đườ
ng d
ẫ
n m
ạ
ng khác nhau
Topo m
ạ
ng khác nhau
Các thi
ế
t b
ị
đầ
u cu
ố
i có
đặ
c t
ả
khác nhau
Các giao th
ứ
c
đị
nh tuy
ế
n nâng cao s
ẽ
h
ướ
ng
đế
n:
Ch
ấ
t l
ượ
ng d
ị
ch v
ụ
(cost, bandwidth, delay, etc)
B
ả
o m
ậ
t
Tiêu hao n
ă
ng l
ượ
ng/ tài nguyên s
ử
d
ụ
ng