GIẢI THUẬT ĐỀ XUẤT
Chương 3 thể hiện ý tưởng chương trình và nội dung code đã hiện thực. Phần cuối cùng sẽ đánh giá tính hiệu quả của phần mềm và đưa ra hướng phát triển sau này cho các bản thương mại.
3.1 Ý tưởng chương trình
Chương trình gồm có 2 thread chính:
Thread 1: dùng để tính tố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 tố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 tố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:
Hình 3.1: Lưu đồ xử lý của chương trình “Best QoS”
3.2 Nội dung chương trình
Class Main: chứa hàm main
Class Routing: Chứa các phương thức cần thiết liên quan đến định tuyến như: Tính tốn QoS cho một địa chỉ IP, hiện thị bảng định tuyến,… Những class khác sẽ thường sử dụng các phương thức trong class này.
Class LoadBalancer: thực hiện việc bắt gói tin, phân tích QoS và điều phối gói tin. Class này đóng vai trị là thread 1
Class DatabaseUpdate: thực hiện việc cập nhật cơ sở dữ liệu để đảm bảo trạng thái QoS trên cơ sở dữ liệu và trên thực tế là giống nhau. Class này đóng vai trị là thread 2
Phần dưới đây sẽ phân tích từng class:
3.2.1 Class Main
Trong class này chứa một phương thức rất quan trọng mà bất kỳ chương trình nào cũng cần đến, đó là phương thức main(). Phương thức main() sẽ thực hiện hai cơng việc chính:
Cơng việc 1: Khởi tạo hai thread cần thiết cho chương trình. Trong đó, một thread dùng để cân bằng tải, gọi là thread Loadbalancer. Thread cịn lại có chức năng liên tục cập nhật nội dung file database theo đúng trạng thái QoS hiện tại. Thread này chính là DatabaseUpdate().
Cơng việc 2: Kích hoạt hai thread này để chạy song song. Chính nhờ việc cân tải và việc cập nhật file database được xử lý đồng thời mà dữ liệu luôn được điều phối một cách chính xác đúng hướng có QoS tốt.
Hình 3.2: Phương thức main() của chương trình
command()
isInteger()
Chức năng của từng phương thức như sau: