Chương trình gồm có 2 thread chính:
Thread 1: dùng để tính toán chiều đi cho gói tin
Thread 2: liên tục cập nhật file database để file này không bị lỗi thời Cách làm việc của thread 1 như sau:Khi hệ thống nhận một gói tin với địa chỉ IP đích là A, nó sẽ:
Bước 1: Đẩy gói tin đi theo hướng của luật định tuyến hiện tại
Bước 2: Sau đó, nó sẽ dò tìm trong file database để kiểm tra trước đây đã có thông tin QoS nào liên quan đến IP_A không? Nếu không, hệ thống sẽ lập tức tính toán QoS (tỉ lệ rớt gói, độ trễ, biến thiên độ trễ) của mỗi đường, sau đó xét cấp độ QoS rồi cập nhật vào file database. Nếu có, bước này sẽ được bỏ qua.
Bước 3: Hệ thống sẽ chọn hướng đi của gói tin (bằng cách route tĩnh) theo luật sau:
o Nếu giá trị QoS khác nhau và tồn tại ít nhất một hướng không bị nghẽn thì chọn hướng có “QoS cao và còn trống băng thông”
o Nếu giá trị QoS bằng nhau thì chọn hướng có băng thông theo trọng số thấp nhất
Đối với thread 2, hệ thống sẽ liên tục cập nhật QoS cho file database bằng cách thực hiện hai bước sau:
Bước 1: Đọc lần lượt từng dòng đầu tiên của file database cho đến dòng cuối cùng. Với mỗi dòng, nó sẽ tính toán lại QoS của IP đích tương ứng. Nếu kết quả QoS hiện tại khác với kết quả QoS trong file, nó sẽ cập nhật lại file.
Bước 2: Thực hiện lại bước 1
Hình 3.1 dưới đây là lưu đồ xử lý của chương trình:
Đúng IP đích đã có trong file Database? Sai Kết thúc Bắt đầu Gói tin Xác định cấp độ QoS Đọc dòng đầu tiên
Tìm đường có QoS cao và còn trống băng thông
THREAD 1
THREAD 2
Bắt đầu Cập nhật thứ tự QoS Cuối file?
trong file database Đọc dòng tiếp theo
Sai Đúng QoS các kết nối đều bằng nhau? Đúng Sai
Chọn đường có “băng thông theo trọng số” thấp nhất
Tìm thấy?
Chọn kết nối đã tìm thấy Đúng
Sai
Truyền gói tin theo bảng định tuyến hiện tại
Hình 3.1: Lưu đồ xử lý của chương trình “Best QoS”