Chương 8
GIẢI THUẬT ĐỊNH TUYẾN
(ROUTING ALGORITHM)
Giải thuật ñịnh tuyến
4-1
NỘI DUNG
Tổng quan
Link state
Distance Vector
Hierarchical routing
Giải thuật ñịnh tuyến
4-2
Tổng quan: Phối hợp giữa routing và
forwarding
routing algorithm
local forwarding table
header value output link
0100
0101
0111
1001
3
2
2
1
Tham số trong
header của gói ñến
0111
1
3 2
Giải thuật ñịnh tuyến
4-3
Tổng quan: Đồ thị mạng
5
2
u
2
1
Graph: G = (N,E)
v
x
3
w
3
1
5
z
1
y
2
N = tập các router = { u, v, w, x, y, z }
E = tập các liên kết={ (u,v), (u,x), (v,x), (v,w), (x,w), (x,y), (w,y), (w,z), (y,z) }
Đồ thị mạng cũng hữu dụng trong các ngữ cảnh mạng khác
Ví dụ: P2P, với N là tâp các peer và E là tập các kết nối TCP
Giải thuật ñịnh tuyến
4-4
Tổng quan: Chi phí liên kết (cost)
5
2
u
v
2
1
x
• c(x,x’) = chi phí của liên kết (x,x’)
3
w
3
1
5
z
1
y
- ví dụ c(w,z) = 5
2
• chi phí ñược xác ñịnh tùy theo
các yếu tố như băng thông, mức ñộ
nghẽn...
Chi phí của ñường ñi (x1, x2, x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp)
Câu hỏi: Đâu là ñường ñi có chi phí nhỏ nhất giữa u và z ?
Giải thuật ñịnh tuyến sẽ xác ñịnh ñường ñi có chi phí nhỏ nhất
Giải thuật ñịnh tuyến
4-5
Tổng quan: Phân loại giải thuật ñịnh tuyến
Thông tin toàn cục hay
phân tán?
Toàn cục:
❒ Tất cả các router biết toàn
bộ topo với thông tin về chi
phí
❒ Các giải thuật “link state”
Phân tán:
❒ router biết các láng giềng và
chi phí nối ñến ñó
❒ Quá trình tính toán lặp lại,
trao ñổi thông tin với các
láng giềng
❒ Các giải thuật “distance
vector”
Tĩnh hay ñộng?
Tĩnh:
❒ Các tuyến ñược xác lập và
thay ñổi bởi người quản trị
Động:
❒ Các tuyến thay ñổi nhanh,
tự ñộng
❍ Cập nhật theo thời gian
❍ Thích ứng với các thay
ñổi của chi phí trên liên
kết
Giải thuật ñịnh tuyến
4-6
NỘI DUNG
Tổng quan
Link state
Distance Vector
Hierarchical routing
Giải thuật ñịnh tuyến
4-7
Một giải thuật Link-State
Giải thuật Dijkstra
❒ Các node biết tất cả topo
mạng
❍ Có ñược qua "quảng bá
trạng thái liên kết
❍ Tất cả các node có cùng
thông tin
❒ Tính toán các ñường ñi có chi
phí thấp nhất từ một node
ñến tất cả các node khác
❍ Tạo forwarding table cho
node ñó
❒ Lặp : sau k lần lặp, biết ñường
ñi có chi phí thấp nhất ñến k
node ñích
Ký hiệu:
❒ c(x,y): chi phí từ node x
ñến y; = ∞ nếu không nối
trực tiếp
❒ D(v): chi phí hiện hành từ
nguồn ñến node v
❒ p(v): nút ngay trước nút v
trên ñường ñi từ nguồn tới
ñích
❒ N: Tập các nút mà ñường ñi
ngắn nhất ñã ñược xác ñịnh
Giải thuật ñịnh tuyến
4-8
Giải thuật Dijsktra
1 Initialization:
2 N = {u}
3 for all nodes v
4
if v adjacent to u
5
then D(v) = c(u,v)
6
else D(v) = ∞
7
8 Loop
9 find w not in N such that D(w) is a minimum
10 add w to N
11 update D(v) for all v adjacent to w and not in N :
12
D(v) = min( D(v), D(w) + c(w,v) )
13 /* new cost to v is either old cost to v or known
14 shortest path cost to w plus cost from w to v */
15 until all nodes in N'
Giải thuật ñịnh tuyến
4-9
Ví dụ (1)
Bước
0
1
2
3
4
5
N
u
ux
uxy
uxyv
uxyvw
uxyvwz
D(v),p(v) D(w),p(w)
2,u
5,u
2,u
4,x
2,u
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
5
2
u
v
2
1
x
3
w
3
1
5
z
1
y
2
Giải thuật ñịnh tuyến 4-10
Ví dụ (2)
Kết quả có cây SPT (shortest-path tree) từ u:
v
w
u
z
x
y
Xây dựng forwarding table cho u:
ñích
link
v
x
(u,v)
(u,x)
y
(u,x)
w
(u,x)
z
(u,x)
Giải thuật ñịnh tuyến
4-11
NỘI DUNG
Tổng quan
Link state
Distance Vector
Hierarchical routing
Giải thuật ñịnh tuyến 4-12
Giải thuật Distance Vector (1)
Phương trình Bellman-Ford (qui hoạch ñộng)
Định nghĩa:
If dx(y) := chi phí nhỏ nhất từ x ñến y
Then
dx(y) = min
{c(x,v) + dv(y) }
v
Trong ñó min lấy tất cả các láng giềng v của x
ñể xét
Giải thuật ñịnh tuyến
4-13
Ví dụ Bellman-Ford
5
2
u
v
2
1
x
3
w
3
1
Đã biết, dv(z) = 5, dx(z) = 3, dw(z) = 3
5
z
1
y
2
Theo phương trình B-F:
du(z) = min { c(u,v) + dv(z),
c(u,x) + dx(z),
c(u,w) + dw(z) }
= min {2 + 5,
1 + 3,
5 + 3} = 4
Node ñạt min là chặng kế tiếp trên ñường ñi
ngắn nhất, dùng ñể lập bảng forwarding table
Giải thuật ñịnh tuyến 4-14
Giải thuật Distance Vector (2)
❒ Dx(y) = ước lượng chi phí nhỏ nhất từ x ñến y
❒ Node x biết chi phí ñến mỗi láng giềng v của
nó: c(x,v)
❒ Node x lưu giữ một distance vector:
Dx = [Dx(y): y є N ]
❒ Node x cũng lưu giữ các distance vector của
các láng giềng
❍
Đối với mỗi láng giềng v, x lưu giữ:
Dv = [Dv(y): y є N ]
Giải thuật ñịnh tuyến 4-15
Giải thuật Distance vector (3)
Cơ sở:
❒ Theo thời gian, mỗi node gửi ước lượng distance
vector của nó ñến các láng giềng
❒ Bất ñồng bộ
❒ Khi node x nhận một ước lượng DV mới từ láng giềng,
nó cập nhật DV của nó bằng phương trình B-F:
Dx(y) ← minv{c(x,v) + Dv(y)}
cho mỗi node y ∊ N
❒ Dưới các ñiều kiện tự nhiên, ước lượng
dần về chi phí nhỏ nhất thực sự dx(y)
Dx(y) hội tụ
Giải thuật ñịnh tuyến 4-16
Giải thuật Distance vector (4)
Lặp, bất ñồng bộ: mỗi hoạt
ñộng lặp cục bộ là do:
❒ Thay ñổi chi phí liên kết
cục bộ
❒ Thông ñiệp cập nhật (DV
update message) từ láng
giềng
Phân tán:
Mỗi node:
Chờ (Thay ñổi trong DV của
nút bên cạnh)
Tính lại ước lượng DV
❒ Mỗi node chỉ thông báo cho
láng giềng khi thay ñổi DV
của nó
❍
Đến lượt các láng giềng
thông báo cho các láng
giềng của chúng nếu cần
Nếu DV thay ñổi, Báo cho
nút bên cạnh
Giải thuật ñịnh tuyến 4-17
Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)}
= min{2+0 , 7+1} = 2
node x table
cost to
x y z
= min{2+1 , 7+0} = 3
cost to
x y z
from
from
x 0 2 7
y ∞∞ ∞
z ∞∞ ∞
node y table
cost to
x y z
Dx(z) = min{c(x,y) +
Dy(z), c(x,z) + Dz(z)}
x 0 2 3
y 2 0 1
z 7 1 0
2
x ∞ ∞ ∞
y 2 0 1
z ∞∞ ∞
node z table
cost to
x y z
from
from
x
x ∞∞ ∞
y ∞∞ ∞
z 71 0
y
7
1
z
time
Giải thuật ñịnh tuyến 4-18
Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)}
= min{2+0 , 7+1} = 2
x ∞∞ ∞
y ∞∞ ∞
z 71 0
x 0 2 3
y 2 0 1
z 7 1 0
x 0 2 3
y 2 0 1
z 3 1 0
from
cost to
x y z
cost to
x y z
cost to
x y z
x 0 2 7
y 2 0 1
z 7 1 0
x 0 2 3
y 2 0 1
z 3 1 0
from
from
cost to
x y z
cost to
x y z
x 0 2 7
y 2 0 1
z 3 1 0
= min{2+1 , 7+0} = 3
2
x
y
7
1
z
cost to
x y z
from
from
from
x ∞ ∞ ∞
y 2 0 1
z ∞∞ ∞
node z table
cost to
x y z
from
from
x 0 2 7
y ∞∞ ∞
z ∞∞ ∞
node y table
cost to
x y z
from
node x table
cost to
x y z
Dx(z) = min{c(x,y) +
Dy(z), c(x,z) + Dz(z)}
x 0 2 3
y 2 0 1
z 3 1 0
time
Giải thuật ñịnh tuyến 4-19
Thay ñổi chi phí liên kết
Các thay ñổi chi phí liên kết:
❒ node phát hiện thay ñổi chi phí liên
kết nội bộ
❒ Cập nhật thông tin ñịnh tuyến, tính
toán lại distance vector
❒ Nếu DV thay ñổi, thông báo cho láng
giềng
1
4
x
y
50
1
z
Tại t0, y phát hiện thay ñổi link-cost, cập nhật DV của nó, và thông
báo cho các láng giềng của nó.
Tại t1, z nhận cập nhật từ y và cập nhật bảng của nó.
Nó tính lại chi phí nhỏ nhất ñến x và gửi DV mới cho các láng giềng.
Tại t2, y nhận cập nhật từ z và cập nhật bảng của nó. Chi phí nhỏ
nhất của y không thay ñổi và do ñó y không gửi bất kỳ thông ñiệp
nào ñến z
Giải thuật ñịnh tuyến 4-20
NỘI DUNG
Tổng quan
Link state
Distance Vector
Hierarchical routing
Giải thuật ñịnh tuyến 4-21
Hierarchical Routing
Qui mô: với hàng
trăm triệu ñích:
Nhu cầu tự quản:
❒ Không thể lưu tất cả
các mạng
❒ Mỗi quản trị mạng
muốn kiểm soát ñịnh
tuyến bên trong
mạng của họ
các ñích trong bảng
ñịnh tuyến!
❒ Việc trao ñổi bảng
ñịnh tuyến sẽ làm
tràn ngập các liên
kết!
❒ internet = mạng của
Định tuyến phân cấp
Giải thuật ñịnh tuyến 4-22
Hierarchical Routing
❒ Tập hợp các router vào
các vùng, “autonomous
systems” (AS)
❒ Các router trong cùng
AS
❍
❍
Gateway router
❒ Kết nối trực tiếp ñến
router trong AS khác
“intra-AS” routing
protocol: giao thức ñịnh
tuyến nội vùng
Các router trong AS
khác nhau chạy các
intra-AS routing
protocol khác nhau
Giải thuật ñịnh tuyến 4-23
Liên kết giữa các AS
3c
3a
3b
AS3
2a
1c
1a
1d
2c
AS2
1b
Intra-AS
Routing
algorithm
AS1
Inter-AS
Routing
algorithm
2b
❒ forwarding table ñược xây
dựng nhờ vào giao thức ñịnh
tuyến nội vùng và liên vùng
(intra-AS và inter-AS
routing protocol)
❍
Forwarding
table
❍
intra-AS cài ñặt các mục
cho các ñích nội vùng
inter-AS & intra-As cài
ñặt các mục cho các ñích
nằm bên ngoài
Giải thuật ñịnh tuyến 4-24
Các tác vụ liên AS
❒ Giả sử router trong
AS1 nhận datagram có
ñích nằm ngoài AS1:
❍ router nên chuyển
gói ñến gateway
router, nhưng ñến
gateway nào?
AS1 phải:
1. Học ñể biết các ñích nào
có thể ñến ñược thông
qua AS2, ñích nào có thể
ñến ñược thông qua AS3
2. Phát tán thông tin về khả
năng ñến ñược này ñến
tất cả các router trong
AS1
Đây là một nhiệm vụ của giao
thức ñịnh tuyến inter-AS
3c
3b
3a
AS3
2a
1c
1a
1d
2c
AS2
1b
2b
AS1
Giải thuật ñịnh tuyến 4-25