ThS Âu Bửu Long
1
Mạng máy tính nâng cao-V1
Link State Routing Link State Routing
(cid:1) Dựa trên thuật
toán Dijkstra để tìm
đường đi ngắn nhất.
(cid:1) Mỗi router lưu trữ thông tin về toàn bộ
topo của mạng ◦ Gồm danh sách các router và đường kết ◦ Gồm danh sách các router và đường kết
nối giữa các router liền kề
Link State Routing Link State Routing
(cid:1) Mỗi router tạo ra gói “link state packet” (LSP) chứa địa chỉ mạng và khoảng cách đến các router kề với nó. ◦ LSP sẽ được gởi đế đến tất cả các router để
cập nhật các mẫu tin định tuyến của chúng. cập nhật các mẫu tin định tuyến của chúng.
◦ Khi router nhận LSP từ tất cả các router, nó sẽ dùng các thông tin này để quyết định đường đi.
Link State Packets Link State Packets
(cid:1) LSPs được tạo ra và gởi khi:
◦ Định kỳ. ◦ Có node mới kết nối vào router. ◦ Chi phí kết nối thay đổi. ◦ Chi phí kết nối thay đổi. ◦ Mất kết nối giữa các node (link failure). ◦ Node nào đó bị fail (node failure)
Link State Packets Link State Packets
(cid:1) LSP chứa các thông tin:
◦ Thông tin về node/mạng lân cận ◦ Thông tin về chi phí kết nối
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR
(cid:1) Đầu tiên, PATH chỉ chứa node gốc (Router
hiện tại)
(cid:1) Ứng với mỗi node N trong PATH: ◦ Với mỗi node kề M của node N:
(cid:2) Nếu M không nằm trong TENT, Thêm M vào TENT (cid:2) Nếu M không nằm trong TENT, Thêm M vào TENT (cid:2) Nếu M nằm trong TENT, và chi phí đường đi mới thấp
hơn chi phí node M trong TENT, thay thế M bởi thông tin ứng với đường qua N
(cid:2) Nếu M nằm trong TENT và chi phí mới cao hơn chi phí
đã tính thì bỏ qua.
(cid:2) Tính đường đi ngắn nhất trong TENT
(cid:2) Nếu đường đi ngắn hơn đường đã lưu trong PATH thì cập
nhật lại PATH
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Xét topo mạng sau:
6 2
A B C 5
2 1 2 G
2 2 4 4 1 D E F
Link state database:
A B 6
B A 6
C B 6
D A 2
E B 1
F C 2
G C 5
D 2
C 2
F
2
E 2
D 2
E 4
F
1
E 1
G 5
F
4
G 1
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Khởi tạo đường đi cho node C: ◦ Đầu tiên, thêm (C,0,0) vào PATH
C (0)
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Ứng với LSP của C
◦ Thêm F, G, và B vào TENT
C (0)
(2) (2) (2) (2) (5) (5) F B G
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm F vào PATH
◦ Thêm G và E vào TENT
C (0)
(2) (2) (2) (2) (5) (5) F B G
(3) (6) G E
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) G xuất hiện trong TENT 2 lần, lưu đường
tốt nhất ◦ Hướng mới đến G tốt hơn (3 < 5)
C (0)
(2) (2) (2) (2) (5) (5) F B G
(3) (6) G E
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm B vào PATH
◦ Thêm A và E vào TENT
C (0)
(2) (2) (2) (2) F B
(3) (6) (3) (8) G A E E
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) E xuất hiện 2 lần, chọn hướng tốt nhất.
◦ Đường đến E mới tốt hơn (3 < 6)
C (0)
(2) (2) (2) (2) F B
(3) (6) (3) (8) G A E E
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm E vào PATH ◦ Thêm D vào TENT
C (0)
(2) (2) (2) (2) F B
(3) (8) (3) G A E
(5)
D
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm G vào PATH
◦ Tất cả các thành phần trong LSP của G đã tồn
tại trong TENT
C (0)
(2) (2) (2) (2) F B
(3) (8) (3) G A E
(5)
D
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm D vào PATH
◦ Thêm đường mới đến A vì tốt hơn đường có sẵn
C (0)
(2) (2) (2) (2) F B
(3) (3) (8) G A E
(5)
D
(7) A
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Thêm A vào PATH
◦ Tất cả các thành phần trong LSP của G đã tồn
tại trong TENT
C (0)
(2) (2) (2) (2) F B
(3) (3) G E
(5)
D
(7) A
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Kết thúc vì tất cả các đường trong TENT
đã thêm vào PATH
C (0)
(2) (2) (2) (2) F B
(3) (3) G E
(5)
D
(7) A
Thuật toán Dijkstra’s LSR Thuật toán Dijkstra’s LSR (cid:1) Tạo ra database forward:
Forwarding Database
C (0)
Destination Port
C C
C C
F
F
(2) (2) (2) (2) F B
G
F
B
B
(3) (3) G E
E
B
(5)
D
B
D
A
B
(7) A