- Cho đồ thị vô hướng G(V,E), V: tập đỉnh, E: tập cạnh với các trọng số..
- Yêu cầu tìm đường đi ngắn nhất từ đỉnh s bất kỳ, s V, đến đỉnh d bất kỳ, d V. Sao cho, chi phí là nhỏ nhất. hay tổng trọng số các cạnh trên đường đi là nhỏ nhất.
b. Tƣ tƣởng chính của giải thuật Dijkstra:
Xây dựng các đƣờng đi ngắt nhất xuất phát từ một nút gốc bất kỳ đến một nút đích xác định trong mạng:
- Bƣớc khởi đầu (bƣớc 0): Chọn nút khởi đầu là nút A nào đó. Gán nhãn cho nút này giá trị là 0, các nút khác gán nhãn với giá trị là ∞. Ký hiệu: L0(A) = 0 và L0(V) = ∞ cho tất cả các nút khác. Xác định độ dài từ A đến V, trong đƣờng đi bắt
- L: là ký hiệu xác định số đo khoảng cách từ một nút đến nút khác. - Bƣớc lặp thứ i: Gọi Si là tập các nút sau i bƣớc thực hiện gán nhãn.
Khởi đầu: Đặt Si = ,
Bƣớc tiếp: Si thu đƣợc từ Si – 1 bằng cách thêm vào một nút U không thuộc Si- 1 có nhãn Li(U) nhỏ nhất. Khi U đã thuộc vào Si ta sửa lại các nút còn lại sao cho nhãn của chúng có độ dài các đƣờng đi ngắn nhất từ Nút A khởi đầu đến các nút đó. Giả sử đó là một nút V bất kỳ thì ở bƣớc i+1 nhãn Li+1(V) đƣợc sửa theo công thức:
Li+1(A,V) = min {Li(A,V), Li(A,U) + w(U,V)}
Trong đó w(U,V) là trọng số của đƣờng đi từ nút U đến nút V.
Thủ tục trên lặp lại liên tiếp cho đến khi tìm đƣợc đƣờng đi ngắn nhất đến tất cả các nút khác trong mạng.
c. Thực hiện giải thuật trên đồ thị:
Gọi c(i,j): Là số chi phí xác định liên kết từ i đến j, giá trị là ∞ nếu i,j không nối trực tiếp, D(v): Giá trị chi phí của đƣờng đi từ nút nguồn đến nút v, p(v): nút trƣớc dọc theo đƣờng đi từ nguồn đến v. S: Tập các nút các đƣờng đi chi phí ít nhất đã nhận đƣợc.
Xuất phát với đồ thị trong hình trên và chọn Nút A là nút khởi đầu, bài toán đặt ra là: Khởi đầu từ nút A , hãy tìm đường đi ngắn nhất từ Nút A đến tất cả các nút khác trong đồ thị theo giải thuật Dijkstra.
Bài toán trên đƣợc giải theo cách xây dựng bảng với nội dung nhƣ sau:
A A ––D D ––E E ––B B ––C C ––FF 5 5 4, E 4, E A A ––D D ––E E ––B B ––C C 4 4 4, E 4, E 3,E 3,E A, D, E, B A, D, E, B 3 3 4, E 4, E 3, E 3, E 2, A 2, A A A ––D D ––E E 2 2 ∞ ∞ 2, D 2, D 1,A 1,A 4, D 4, D 2, A 2, A A A ––D D 1 1 ∞ ∞ ∞ ∞ 1,A 1,A 5,A 5,A 2,A 2,A A A 0 0 D(F), p(F) D(F), p(F) D(E), p(E) D(E), p(E) D(D), p(D) D(D), p(D) D(C), p(C) D(C), p(C) D(B), p(B) D(B), p(B) Start Start Step Step A A ––D D ––E E ––B B ––C C ––FF 5 5 4, E 4, E A A ––D D ––E E ––B B ––C C 4 4 4, E 4, E 3,E 3,E A, D, E, B A, D, E, B 3 3 4, E 4, E 3, E 3, E 2, A 2, A A A ––D D ––E E 2 2 ∞ ∞ 2, D 2, D 1,A 1,A 4, D 4, D 2, A 2, A A A ––D D 1 1 ∞ ∞ ∞ ∞ 1,A 1,A 5,A 5,A 2,A 2,A A A 0 0 D(F), p(F) D(F), p(F) D(E), p(E) D(E), p(E) D(D), p(D) D(D), p(D) D(C), p(C) D(C), p(C) D(B), p(B) D(B), p(B) Start Start Step Step
Ý nghĩa của các cột của bảng kết quả trên là:
- Step: Mô tả các bƣớc của giải thuật với khởi đầu là bƣớc 0 từ Nút A. - Start: Nút khởi đầu (từ A).
- Các cột còn lại : Có dạng [D(U),p(U)] mô tả các nhãn của nút khác với D(U) là khoảng cách đích đến nút đích đƣợc chọn, p(U) là nút gần nhất trƣớc đó của U trong tập Si các nút đã đƣợc chọn.
Kết thúc, tìm đƣợc một cây khung của đồ thị, xây dựng cây đƣờng đi ngắn nhất đến các nút đích xuất phát từ nút khởi đầu.
Hình 2.14: cây đường đi ngắn nhất : A – D – E – B – C – F.
Mỗi một nút trong mạng đều thực hiện việc tìm đƣờng đi ngắn nhất dựa theo giải thuật trên, toàn bộ các nút đều có một bản sao kiến trúc tổng thể toàn mạng. Mỗi nút bất kỳ đều có thể xác định đƣờng đi ngắn nhất đến mỗi nút khác trong mạng.
2.3.3. Giao thức định tuyến hoạt động theo trạng thái liên kết:
Khắc phục các nhƣợc điểm của giao thức vector khoảng cách (định tuyến lặp, độ hội tụ chậm, không thích hợp với mạng lớn và phức tạp có đơn vị đo thay đổi, khi kiến trúc mạng không ổn định...) Các kỹ thuật cơ bản nhƣ sau:
- Mỗi nút trong mạng, là các router, thu nhận toàn bộ cơ sở dữ liệu về trạng thái các đƣờng liên kết giữa các mạng quá trình này đƣợc gọi là học mạng. Các đƣờng liên kết có các đơn vị đo khoảng cách khác nhau. Tuỳ thuộc vào băng thông, độ trễ, tính ổn định của mạng...Để xây dựng cơ sở dữ liệu kiến trúc mạng.
- Các nút tính toán đƣờng đi tối ƣu đến các nút khác dựa theo giải thuật Dijkstra, còn gọi là giải thuật SPF (Shortest Path First). Từ đó xây dựng ra cây đƣờng đi ngắn nhất đến các nút mạng khác. A A B B DD E E F F CC 1 1 1 1 1 1 2 2 2 2
- Các nút tạo ra bảng định tuyến đến các nút khác từ vị trí của nó. Bảng định tuyến cũng có dạng chung giống với bảng định tuyến của giao thức vector khoảng cách, có 3 trƣờng quan trọng là (Dest, Nexthop, Cost).
- Khi có thay đổi xảy ra trong kiến trúc mạng, nếu một nút phát hiện ra nó sẽ loan truyền quảng bá đến tất cả các nút khác trên mạng để cập nhật ngay.
a. Xây dựng cơ sở dữ liệu kiến trúc mạng:
Trong quá trình học thông tin về mạng, mỗi cổng giao diện của router khi kết nối với một mạng đƣợc định danh địa chỉ IP theo mạng. router lấy địa chỉ IP thấp nhất hoặc cao nhất làm định danh cho nó trên mạng. Giao thức định tuyến link-state duy trì một cơ sở dữ liệu về mọi liên kết với các router khác trong mạng nhờ quá trình trao đổi các LSAs với nhau theo phƣơng thức loan truyền quảng bá.
Mọi bộ định tuyến tự xây dựng cơ sở dữ liệu về kiến trúc mạng thông qua các LSA nhận đƣợc. Mọi thay đổi về kiến thức mạng, nhƣ thêm nút mạng, một nút mạng bị gãy… đều đƣợc cập nhật một cách tức thời. Nhóm Micorosft TechNet [7] mô tả hệ tự trị theo hình minh hoạ sau:
Hình 2.15: mô hình một hệ tự trị [7]
Sơ đồ mạng này có 5 router R1, R2, R3, R4, R5. Các router này đƣợc nối với nhau bởi các mạng Net 1, Net 2, Net 3, Net 4, Net 5, Net 6, Net 7. Các router có các interface để liên kết các net với nhau. Chú ý ở đây các đƣờng link giữa hai router có tính chất 2 chiều bất đối xứng, đƣợc gán các giá trị số đo khác nhau phản ánh các tính chất của đƣờng truyền (nhƣ : băng thông, độ trễ, tính tin cậy….) gắn vào các cổng của router. Ví
dụ với Net1, từ router R1 đến Net1 thì cost của đƣờng link là 2, từ router R2 đến Net 1 thì cost của đƣờng link chỉ là 1.
Bước khởi tạo:
Mỗi router tự nhận diện các mạng kết nối trực tiếp với nó. Các trƣờng thông tin bao gồm : Net (đích đến) – Cost (Chi phí đến). Cụ thể gồm:
Bảng 2.2: Router tự nhận diện các nút kết nối
Router Mạng – Cost (chi phí để đến mạng)
R1 Net 1- Cost 2, Net 3-Cost 5, Net 4-Cost 2 R2 Net 1-Cost 1, Net 2-Cost 4, Net 6-Cost 2
R3 Net 2-Cost 4, Net 3-Cost 2, Net 5-Cost 3, Net 7-Cost 2 R4 Net 4-Cost 3, Net 5-Cost 2
R5 Net 6-Cost 2, Net 7-Cost 3
Các bước kế tiếp:
Các router trao đổi cho nhau các gói LSA để thông báo về trạng thái các mạng kết nối trực tiếp. Kết quả trong tất cả các router trong AS hình thành nên một cơ sở dữ liệu kiến trúc mạng giống nhau. Quá trình duy trì sự ổn định của cơ sở dữ liệu đƣợc thực hiện thông qua các LSA cập nhật mỗi khi có sự thay đổi trong mạng. Việc thực hiện cập nhật đảm bảo cho cơ sở dữ liệu luôn phản ánh đúng trạng thái của kiến trúc mạng trong AS. Cơ sở dữ liệu này phản ánh cách di chuyển đến mạng đích của tất cả các router.
Bảng 2.3 Bảng cơ sở dữ liệu trạng tháí liên kết
Router Destination Nexthop Cost
R1 Net 1 R2 2 R1 Net 3 R3 5 R1 Net 4 R4 2 R2 Net 1 R1 1 R2 Net 2 R3 4 R2 Net 6 R5 2 R3 Net 2 R2 4 R3 Net 3 R1 2 R3 Net 5 R4 4
R3 Net 7 R5 2
R4 Net 4 R1 3
R4 Net 5 R3 2
R5 Net 6 R2 2
R5 Net 7 R3 3
b. Tính toán cây SPF dựa vào giải thuật Dijkstra
Hình 2.14: cây SPF của sồ trên Hình 2.14: cây SPF của sồ trên
Trên cơ sở dữ liệu kiến trúc mạng thu đƣợc, từng router áp dụng giải thuật Dijkstra để tính toán đƣờng đi ngắn nhất đến tất cả các mạng đích. Sau đó, các router xây dựng ra cây định tuyến SPF với bản thân nó là gốc mô tả đƣờng đi ngắn nhất đến đích. Hình trên thể hiện chọn R1 làm gốc
c. Xây dựng bảng định tuyến đến các nút khác:
Với cấu trúc bảng định tuyến bao gồm 3 trƣờng chính là Dest, Nexthop, Cost từ cây SPF của nút đƣợc chọn tạo ra bảng định tuyến với mỗi danh mục tuyến đến các mạng kết nối vào các nút khác.Các mạng này đƣợc lấy dữ liệu từ cơ sở dữ liệu kiến trúc mạng.
Bảng 2.4: Bảng định tuyến của router R1
2.3.5. Hoạt động của giao thức OSPF a. Tổng quan : a. Tổng quan :
Giao thức OSPF là một giao thức định tuyến theo link-state đƣợc IETF phát triển, đây là giao thức mở và đƣợc phát triển để sử dụng chung.Đƣợc phát triển để thay thế cho RIPv1 và RIPv2, OSPF đƣợc định nghĩa trong tài liệu RFC 2328. Giao thức OSPF có nhiều ƣu điểm hơn RIP trong hoạt động, tuy nhiên nó lại đòi hỏi các thiết bị là các bộ định tuyến làm việc trên mạng cài đặt giao thức này phải có cấu hình cao hơn và sự hoạt động phức tạp và xử lý nhiều hơn.
b. Các đối tƣợng và thành phần hoạt động trong định tuyến OSPF:
Theo tài liệu RFC 2328 [8], tài liệu chuẩn ban hành của tổ chức IETF về giao thức OSPF, định nghĩa các đối tƣợng nhƣ sau
Hệ tự trị AS (autonomoust system): Nhóm các router trao đổi thông tin định tuyến qua một chiến lƣợc định tuyến (cùng chung một chiến lƣợc định tuyến).
IGP (Interior Getway Procotol): Giao thức định tuyến nội vùng AS, đƣợc các router trong AS sử dụng. Mỗi hệ AS có một giao thức định tuyến nội vùng. Các hệ tự trị khác nhau có thể sử dụng các giao thức IGP khác nhau.
Router và Router ID: Router là thiết bị chuyển mạch định tuyến thuộc lớp 3. Router ID là một số 32 bits đƣợc gán cho mỗi router sử dụng giao thức OSPF trong định tuyến. Số ID này phải là duy nhất cho mỗi router trong một hệ AS.
Network: Là mạng IP trong định tuyến, có thể là Network, subnet hoặc supernet. Có thể là một mạng vật lý đƣợc gán nhiều số địa chỉ IP theo khuôn dạng network/subnet.
Network mask: Là số 32 bits xác định phạm vi của địa chỉ IP trong địa chỉ IP của network/subnet/supernet.
Point-to-Point Network: Mạng kết nối một cặp router.
Broadcast Network: Mạng có nhiều (hơn hai) router kết nối với nhau, có khả năng đặt địa chỉ để một thông báo chuyển đƣợc đến tất cả các router nối kết, gọi là thông báo broadcast. Các router lân cận nhau có thể đƣợc phát hiện tự động trên các mạng này bởi thông báo Hello của giao thức OSPF
Non-broadcast Network: Là các mạng có khả năng gắn kết nhiều router nhƣng lại không có khả năng thông báo broadcast. Các router lân cận nhau đƣợc
duy trì bằng cách sử dụng giao thức Hello của OSPF. Trong các mạng non- broadcast, các gói dữ liệu của giao thức OSPF đƣợc gửi multicast đến router lân cận.
Giao thức OSPF có thể chạy một trong hai chế độ trong các mạng non- broadcast: Thứ nhất là chế độ non-broadcast multi-access hay NBMA, tƣơng tự nhƣ hoạt động của OSPF trong mạng broadcast. Thứ hai là chế độ Point-to-MultiPoint, xem mạng non-broadcast nhƣ là một tập hợp của nhiều đƣờng link Point-to-Point. Việc chạy chế độ nào phụ thuộc vào chế độ hoạt động của OSPF trên mạng.
Neighboring Router: Là hai router có interface gắn chung vào một mạng. Mối quan hệ lân cận (neighboring router) đƣợc phát hiện, duy trì bởi giao thức Hello của OSPF.
Adjacency: Là mối quan hệ đƣợc hình thành bởi hai router lân cận trong các mạng broadcast và NBMA, dùng để trao đổi thông tin định tuyến. Không phải mọi cặp router lân cận - neighboring router - đều trở thành liền kề (adjacency).
Link state advertisement (LSA): Khối dữ liệu (gồm nhiều gói) mô tả trạng thái của router hay mạng. Với router, bao gồm trạng thái của các interface với các nút liền kề của nó. Mỗi LSA đƣợc thông báo loan truyền quảng bá đến toàn bộ miền định tuyến. Tập hợp các LSAs của tất cả các router và mạng hình thành lên cơ sở dữ liệu trạng thái liên kết của giao thức định tuyến OSPF.
Hello procotol: là một phần của giao thức OSPF đƣợc dùng để thiết lập và duy trì mối quan hệ lân cận giữa các router. Trong các mạng broadcast và NBMA nó còn đƣợc dùng để phát hiện các router lân cận và bầu chọn Designated Router và Backup Designated Router.
Flooding: Một dạng truyền dữ liệu trong giao thức OSPF từ một nút đến các nút lân cận theo cách quảng bá thông tin (làm tràn). Dùng để phân phối và đồng bộ hoá cơ sở dữ liệu trạng thái liên kết giữa các router OSPF.
Designated Router (DR): Là một dạng router trong các mạng broadcast và NBMA, dùng để phát sinh các LSA từ nó đến tất cả các router lân cận trong mạng. DR đƣợc bầu chọn qua giao thức Hello giữa các router lân cận. Trong một mạng
cần có ít nhất 2 router dạng DR. Các router này sinh ra để giảm bớt lƣu lƣợng truyền dữ liệu trên mạng và kích của cơ sở dữ liệu trạng thái liên kết.
Nhóm Microsoft TechNet [7] đƣa thêm một số thuật ngữ mô tả.
Internal router: Là một OSPF router có hai hay nhiều interface kết nối với các mạng bên trong một vùng OSPF. Tất cả các router trong vùng chia sẻ chung một cơ sở dữ liệu trạng thái mạng LSDB.
Area border router (ABR): Là một OSPF router có hai hay nhiều interface kết nối trực tiếp với các mạng thuộc hai hay nhiều vùng OSPF khác nhau. Phải có một interface của router này kết nối với vùng backbone; Do đó, một ABR luôn luôn là một backbone router, nhƣng ngƣợc lại backbone router không nhất thiết phải là ABR. Một ABR lƣu trữ nhiều LSDB, mỗi một LSDB dành cho một vùng, trong đó có một LSDB là dành cho vùng backbone.
Một ABR gửi lƣu lƣợng dữ liệu giữa vùng backbone và tất cả các vùng khác kết nối vào backbone bằng cách gửi các tuyến trong vùng đó đến backbone, và ngƣợc lại phân phối các tuyến cho backbone đến các vùng khác. Nhờ sự hoạt động ABR, vấn đề định tuyến vùng, hay định tuyến thứ bậc, đƣợc thực hiện.
Border router: Là router có ít nhất một interface kết nối đến vùng backbone và có các tuyến trong vùng backbone. Tất cả các internal router của vùng backbone và các ABR là các backbone router.
Autonomous system boundary router (ASBR): Thực hiện nhập thông tin định tuyến từ các nguồn bên ngoài và thông báo các đích bên ngoài đến toàn bộ hệ tự trị AS. Một ASBR trong hệ tự trị định tuyến OSPF có thể kết nối, trao đổi thông tin định tuyến với:
- Một ASBR trong hệ tự trị OSPF khác bằng cách kết nối hai hệ tự trị.
- Các nguồn không định tuyến OSPF (Non-OSPF), bằng cách kết nối giữa hệ tự trị của nó với nguồn ngoài sử dụng giao thức định tuyến khác (nhƣ RIP, IGRP…) Chỉ có vùng OSPF chuẩn mới có thể chứa ASBR. Mỗi router trong hệ tự trị