CHƯƠNG 2 CÁC CƠ CHẾ QOS VÀ CẤU TRÚC TRONG VYOS
2.2. Cấu trúc file hệ thống trong VyOS
Bên trong lõi của một router VyOS chia làm 2 phần chính: phần nhân hệ điều hành Debian chứa các file hệ thống, các lệnh chạy của hệ thống, được mount vào thư mục /root và phần nhân lõi Vyatta chứa các file, lệnh và được mount vào bên trong thư mục /opt/vyatta (Hình 4).
Để thay đổi mã nguồn của VyOS, chủ yếu ta sẽ làm việc bên trong
/opt/vyatta. Trong này, ta cần quan tâm đến một số thư mục quan trọng như sau: bin/ và sbin/ là 2 thư mục chứa các file cấu hình , etc/ chứa các cài đặt cơ bản, share/ chứa các file định nghĩa phục vụ cho các file cấu hình ở bin/ và sbin/ có thể kế thừa và sử dụng và config/ chứa các cài đặt hiện đang được người dùng sử dụng. Bên trong mỗi thư mục sẽ có rất nhiều các module nhỏ, tuy nhiên luận
văn này sẽ chỉ đề cập đến những phần quan trọng có thể áp dụng được để đưa vào sử dụng.
Hình 4: Cấu trúc File system của VyOS.
2.2.1. Thư mục /opt/vyatta/bin
Bin là thư mục chứa các file thực thi của VyOS (Hình 5).
Ta có thể thấy ở đây có một số file thực thi câu lệnh giống nhau, ví dụ câu lệnh show interfaces có 2 file thực thi là vyatta-show-interfaces và vyatta-show- interfaces.pl. Bản chất hai file này cùng cho ra kết quả giống nhau, nhưng chúng được viết trên hai ngôn ngữ khác nhau, một sử dụng bash shell và một sử dụng ngôn ngữ Perl.
2.2.2. Thư mục /opt/vyatta/sbin
Phần lớn các file thực thi câu lệnh của VyOS nằm trong thư mục này, bao gồm cả các file thực thi câu lệnh liên quan đến QoS đó là vyatta-qos-up, vyatta- qos-util.pl và vyatta-qos.pl (Hình 6).
Hình 6: Cấu trúc file bên trong sbin/
File vyatta-qos-up được viết bằng bin/sh. Khi nhận câu lệnh cấu hình qos, tùy theo interfaces in hay out mà nó sẽ chạy file vyatta-qos.pl với tham số tương ứng (Hình 7).
Quan trọng nhất là file vyatta-qos.pl, đây là file cấu hình toàn bộ qos cho router. 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 sẽ được 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. (Hình 8)
Hình 8: Cấu trúc file vyatta-qos.pl
2.2.3. Thư mục /opt/vyatta/share
Thư mục này chứa các file định nghĩa sử dụng bởi các file thực thi ở hai thư mục bin/ và sbin/. Cụ thể, các file này sẽ nằm tiếp trong thư mục perl5/Vyatta (Hình 9). Ngoài ra thư mục share còn chứa các cấu hình templates trong thư mục /vyatta-cfg/templates. 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.
Với mỗi loại chức năng sẽ có một tập hơn các file định nghĩa riêng. Ví dụ QoS sẽ có một tập hơn các file liên quan bên trong thư mục QoS/ (hình 10). Các file định nghĩa bên trong này còn có thể tự kết thừa lẫn nhau. Trong QoS/ có file TrafficShaper.pm chứa các hàm khởi tạo một yêu cầu cấu hình về Shaper, hàm chỉnh sửa cấu hình Shaper, các lựa chọn nhánh câu lệnh phụ bên trong các câu lệnh lớn. Các hàm này lại kế thừa các hàm trong file ShaperClass.pm và Config.pm, trong đó ShaperClass.pm chứa các hàm tạo mới một yêu cầu cấu hình cơ bản chung, hàm khởi tạo các biến, hàm kiểm tra các Rules đặt ra, và Config.pm cũng có hàm tạo mới, hàm kiểm tra sự tồn tại của câu lệnh giống câu lệnh đưa vào, hàm kiểm tra trạng thái…
Hình 10: Cấu trúc bên trong share/QoS