Định tuyến là công việc hết sức quan trọng trong mạng quang WDM, nó thực hiện tìm đường cho lightpath mang lưu lượng thông tin từ nguồn đến đích với mục
đích tối ưu mạng. Trong phần này, dựa trên phần mềm Visual C++, đề tài mô phỏng phần định tuyến cho các lightpath với hàm mục tiêu chúng ta có thể tuỳ chọn như chi phí, độ trễ, lượng lưu lượng… qua các tuyến từ nguồn đến đích. Thuật toán sử dụng để thực hiện định tuyến là thuật toán Dijkstra.
Các trọng số trên các tuyến không chỉ là độ dài đường đi của tuyến mà tuỳ theo một tiêu chí nào đó của mạng như chi phí tuyến, độ trễ, băng thông, lưu lượng thông tin... Nếu lấy theo tiêu chí là chi phí thấp nhất thì trọng số trên các tuyến (cạnh) là chí phí của tuyến đó.
4.2 GIỚI THIỆU VỀ Visual C++ 6.0
Visual C++ 6.0 nằm trong bộ Microsoft Visual Studio 6.0. Đây là một môi trường lập trình đa năng dành cho ngôn ngữ C/C++ và vì là một môi trường lập trình trên hệ điều hành Windows nên Visual C++ 6.0 cho phép lập trình viên thực hiện rất nhiều công việc, hỗ trợ lập trình viên việc coding, thiết kế giao diện… Trong VC++ 6.0 chúng ta có thể tạo được : các ứng dụng trên Windows, ActiveX, hay thư viện liên kết động DLL…VC++ 6.0 có nhiều công cụ giúp việc thiết kế giao diện cho chương trình, kiểm lỗi và sửa lỗi.
4.3 LƯU ĐỒ THUẬT TOÁN
Giả sử bộ định tuyến mô phỏng tìm đường đi với đường đi ngắn nhất qua các tuyến giữa node nguồn và node đích. Các trọng số trên các cạnh là độ dài của tuyến thông tin từ node này đến node kia.
Bắt đầu
Xác định node nguồn và đích như V1 và V2
Thiết lập V1 là T-node
Thiết lập nhãn của T-node sang cố định, sau đó cập nhật bảng trạng thái
các node lân cận.
Xác định node tạm thời nối với V1 mà có trọng số nhỏ nhất và thiết lập thành
T-node
Dựa vào thông tin trong bảng trạng thái, làm như thế cho đến khi tới node V1, dãy các node đó là đường đi ngắn nhất
NO
YES
T-node có phải là V2
Thuật toán sẽ thực hiện tìm đỉnh u trong tập hợp Q mà có giá trị d[u] nhỏ nhất. Đỉnh này được loại ra khỏi Q và được đưa vào tập S. Tập S chứa một bảng các đỉnh tạo thành một trong những đường đi ngắn nhất từ s đến node nguồn t nào đó.
1 function Dijkstra(G, w, s)
2 for each vertex v in V[G]
3 d[v] := infinity // Gán các giá trị ban đầu 4 previous[v] := undefined
5 d[s] := 0 // Khoảng cách từ s đến s bằng 0
7 Q := V[G] // Tập Q chứa tất cả các node của đồ thị 8 while Q is not an empty set
9 u := Extract_Min(Q) 10 S := S union {u}
11 for each edge (u,v) outgoing from u 12 if d[u] + w(u,v) < d[v] 13 d[v] := d[u] + w(u,v) 14 previous[v] := u
4.4 KẾT QUẢ MÔ PHỎNG
Thuật toán Dijkstra tìm đường đi ngắn nhất từ node nguồn đến node đích được thực hiện như sau:
- Khởi động chương trình mô phỏng sẽ có giao diện sau:
- Click vào biểu tượng “DUONG NGAN NHAT” thực hiện tìm đường ngắn nhất giữa hai cặp node bất kì: