Kiến trúc QoS trong VyOS

Một phần của tài liệu (LUẬN văn THẠC sĩ) thử nghiệm các giải pháp đảm bảo chất lượng dịch vụ trên các thiết bị định tuyến sử dụng hệ điều hành nguồn mở VyOS001 (Trang 33 - 39)

CHƯƠNG 2 CÁC CƠ CHẾ QOS VÀ CẤU TRÚC TRONG VYOS

2.4. Kiến trúc QoS trong VyOS

Quy trình chung cho các cơ chế QoS được cấu hình theo 2 bước như sau:

 Bước 1 : Tạo chính sách xác định luồng lưu lượng theo loại QoS.

 Bước 2 : Áp dụng chính sách cho đầu vào hay đầu ra của một interface cụ thể.

Ở ví dụ trên hình 11, ta có thể thấy lệnh đầu tiên xác định một chính sách QoS là Fair queue và sử dụng tất cả các giá trị mặc định. Câu lệnh thứ hai áp dụng chính sách đó cho đầu ra của Ethernet eth0.

Chuỗi câu lệnh này được thực hiện theo các templates đã được xây dựng sẵn trong VyOS nằm trong thư mục /opt/vyatta/share/vyatta-cfg/templates (hình 12) và phân cấp theo hình cây thể hiện ở hình 13 [10].

Hình 12: Phân cấp thư mục template hệ thống

Hình 13: Phân cấp thư mục template hệ thống theo dạng hình cây qua 2 Câu lệnh cấu hình QoS là fair queue

Bắt đầu vào các thư mục ở /opt/vyatta/share/vyatta-cfg/templates, tùy theo cấu hình câu lệnh người dùng gõ thì VyOS sẽ thực thi câu lệnh theo phân cấp thư mục của câu lệnh đó. Ở đây theo hình 12 thì câu lệnh chỉ thực thi theo thư mục traffic-policy. Trong các thư mục này sẽ có chứa các thư mục tương đương các thông số hiển thị ra khi ta cấu hình trên hệ điều hành (hình 14).

Hình 14: Hiển thị thông số lúc cấu hình tương đương với các thư mục phân cấp trong template cấu hình

Trong thư mục các cơ chế QoS nào cũng hiển thị file “node.def” và thư mục “node.tag” (chứa các thông số bên trong đã được định nghĩa sẵn). Ví dụ như cơ chế Drop Tail, khi ta chọn cấu hình traffic-policy là droptail sẽ có 2 thông số (hình 15) là “description” và “queue-limit” tương ứng với 2 thư mục trong “node.tag” của droptail trong templates.

Trong các thư mục “description” và “queue-limit” tiếp tục có các file “node.def” theo đúng phân cấp thư mục template hệ thống ở trên. File “node.def” có thể hiển thị các đoạn text hoặc là gọi đến các module trong hệ thống. Ví dụ như đối với thông số “queue-limit” thì chỉ là hiển thị dòng text thông báo dải queue size mà có thể chọn để cấu hình (hình 16).

Hình 16: Hiển thị thông số lúc cấu hình queue-limit trong droptail

Ở đây tôi thử nghiệm thêm thử thông số “test” trong thư mục “node.tag” của droptail và hiển thị dòng thông báo “this is test”. Khi cấu hình trong VyOS sẽ hiển thị thêm phần thông số “test” so với trước khi thử nghiệm (hình 17). Đây cũng là nơi có thể cấu hình hiển thị thông số của các tính năng mới cài đặt thêm.

Trở lại với phân cấp thư mục template hệ thống theo dạng hình cây qua 2 Câu lệnh cấu hình QoS là fair queue thì cụ thể ở file “traffic-policy/fair- queue/node.def” (hình 18) đưa ra một giá trị text và gọi một kịch bản Perl cụ thể là file “/opt/vyatta/sbin/vyatta-qos.pl”để thực hiện công việc là thêm, xóa hoặc thay đổi chính sách vớitên biến phản ánh nội dung của node hiện tại $VAR(@) và $VAR(.) là Fair queue.

Hình 18: Nội dung file traffic-policy/fair-queue/node.def

Còn lệnh thứ 2 khi gán vào cho Ethernet eth0 thì trong file “interfaces/ethernet/node.tag/traffic-policy/out/node.def” (hình 19), thư mục ngoài của nút $VAR(../../@) đề cập đến tên của thiết bị ethernet (eth0) còn traffic thì luôn luôn là out và đã được định nghĩa theo các kiểu Qos trong mục 2.3 ở trên.

Hình 19: Nội dung file interfaces/ethernet/node.tag/traffic-policy/out/node.def

Khi liên quan đến traffic-policy thì đều gọi đến file perl ở đường dẫn /opt/vyatta/sbin/vyatta-qos.pl. Trong file “vyatta-qos.pl” này có định nghĩa các kiểu Qos và đối với với từng kiểu qos thì sẽ gọi đến các module .pm tương ứng (hình 20). Các module QoS sẽ thực hiện hiển thị nội dung các thông số mà câu lệnh cấu hình chất lượng dịch vụ tương ứng với các kiểu QoS mà ta chọn. Ngoài ra tùy theo interfaces in hay out mà nó sẽ chạy với tham số tương ứng và gọi các hàm như delete-interface, update-interface để cập nhật lại trạng thái interface. Như đã trình bày ở mục 2.2, Với việc sử dụng QoS, cụ thể là phân loại các gói tin, gán các giá trị ưu tiên và đưa vào hàng đợi, thì việc cấu hình thêm các tính năng mới cho router để tăng chất lượng dịch vụ có thể viết ở đây nối tiếp theo các chức năng có sẵn, hoặc tạo các file con kế thừa từ file này hoặc thêm các

thông số tạo thêm ở phần template bên trên. Ngoài ra trong các module QoS .pm được gọi đến này cũng sẽ là nơi cấu hình khai báo thêm các thông số của các tính năng mới cài đặt thêm khi đã thêm ở trong thư mục template thì lệnh mới có thể thực hiện được vì thư mục template mới chỉ là nơi để hiển thị khi thực thi câu lệnh.

Hình 20: Nội dung file vyatta-qos.pl định nghĩa các loại Qos và gọi đến module QoS tương ứng

Hình 21 là cơ chế chính sách cụ thể của Vyatta::Qos::FairQueue thể hiện qua module FairQueue.pm. Tuy nhiên các module Qos .pm này chỉ thực hiện tạo ra một cơ chế chính sách QoS cụ thể (FairQueue cho ví dụ này) và sau đó là chính sách tạo danh sách các lệnh “tc – traffic control” thay đổi trạng thái của qdisc (queue disciplines – quy tắc hàng đợi) cho QoS tương ứng và trên interface được thiết lập áp dụng chính sách QoS [11]

Hình 21: Nội dung module FairQueue.pm

Ví dụ khi cấu hình traffic policy là droptail và fairqueue, interface eth1 sẽ thay đổi trạng thái qdisc tương ứng theo danh sách (hình 22). Do vậy, muốn can thiệp vào giải thuật sẵn có hoặc thêm các giải thuật mới sẽ được phân tích ở phần tiếp theo.

Hình 22: Trạng thái qdisc thay đối khi cấu hình QoS

Một phần của tài liệu (LUẬN văn THẠC sĩ) thử nghiệm các giải pháp đảm bảo chất lượng dịch vụ trên các thiết bị định tuyến sử dụng hệ điều hành nguồn mở VyOS001 (Trang 33 - 39)