DANH MỤC CÁC TỪ VIẾT TẮT. 5
DANH MỤC CÁC HÌNH VẼ. 6
DANH MỤC CÁC BẢNG . 8
MỞ ĐẦU . 9
CHƯƠNG 1. TỔNG QUAN VỀ QOS VÀ 1 SỐ CƠ CHẾ QOS CƠ BẢN. 11
1.1. Tổng quan về QoS [1,4]. 11
1.2. Các tham số hiệu suất QoS [1,4]. 12
1.3. Các cơ chế QoS cơ bản . 13
1.3.1. Cơ chế bỏ đuôi - DropTail .13
1.3.2. Cơ chế loại bỏ ngẫu nhiên –‘ RED [5].13
1.3.3. Cơ chế Adaptive-RED (A-RED) [6].20
1.4. Kết chương . 24
CHƯƠNG 2. CÁC CƠ CHẾ QOS VÀ CẤU TRÚC TRONG VYOS. 25
2.1. Giới thiệu chung về thiết bị định tuyến hệ điều hành nguồn mở VyOS. 25
2.2. Cấu trúc file hệ thống trong VyOS . 25
2.2.1. Thư mục /opt/vyatta/bin.26
2.2.2. Thư mục /opt/vyatta/sbin .27
2.2.3. Thư mục /opt/vyatta/share.28
2.3. Các kiểu QoS trong VyOS [8,9] . 29
2.4. Kiến trúc QoS trong VyOS . 31
2.5. Xác định mã nguồn giải thuật QoS trong kernel VyOS. 37
2.6. Kết chương . 41
CHƯƠNG 3. THỰC HIỆN THỬ NGHIỆM VÀ KẾT QUẢ. 42
3.1. Tổng quan về chương trình giả lập EVE-NG [13]. 42
3.2. Xây dựng sơ đồ mạng mô phỏng hệ thống . 43
3.4. Thực hiện thử nghiệm . 45
3.4.1. Cấu hình .45
3.4.2. Kết quả kiểm thử.46
55 trang |
Chia sẻ: honganh20 | Ngày: 21/02/2022 | Lượt xem: 522 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận văn 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ở vyos, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Drop gateway có sự sai
lệch chống lại lưu lượng truy cập đột biến. Khi lưu lượng truy cập từ
một kết nối cụ thể càng tăng thì càng có nhiều khả năng hàng đợi
15
gateway sẽ bị tràn. Còn hiện tượng đồng bộ toàn cục xảy ra khi tất cả
các kết nối đồng loạt giảm kích thước cửa sổ, dẫn tới mất thông lượng
trong mạng ở cùng một thời điểm. Để tránh hai hiện tượng này, các
gateway có thể dùng các thuật toán riêng biệt để phát hiện tắc nghẽn
và quyết định kết nối nào sẽ được thông báo tắc nghẽn tại gateway.
RED gateway chọn ngẫu nhiên các gói tin đến để đánh dấu; với
phương pháp này xác suất đánh dấu một gói tin từ một kết nối cụ thể
gần như tỉ lệ thuận với phần băng thông được chia sẻ của kết nối đó
tại gateway. Phương pháp này có thể được thực hiện một cách hiệu
quả mà không cần duy trì trạng thái mỗi kết nối tại gateway.
− Một công việc nữa là khả năng kiểm soát được kích thước hàng đợi
trung bình ngay cả khi không có sự hợp tác từ các nguồn phát. Điều
này có thể được thực hiện nếu gateway loại bỏ gói tin đến khi kích
thước trung bình vượt quá ngưỡng tối đa (thay vì đánh dấu bằng cách
đặt bit trong header gói tin). Phương pháp này có thể được sử dụng để
kiểm soát kích thước hàng đợi trung bình ngay cả khi hầu hết các kết
nối có khoảng thời gian phát nhỏ hơn khoảng thời gian khứ hồi, hoặc
ngay cả khi các kết nối không giảm lưu lượng để đáp ứng với việc
đánh dấu hoặc loại bỏ gói tin.
1.3.2.2. Giải thuật
RED gateways tính kích thước hàng đợi trung bình bằng một bộ lọc thông
thấp (Low-Pass Filter). Kích thước hàng đợi trung bình này được so sánh với hai
ngưỡng: ngưỡng tối thiểu minth và ngưỡng tối đa maxth. Khi kích thước hàng đợi
trung bình bé hơn ngưỡng tối thiểu thì không gói tin đến nào bị đánh dấu hay
loại bỏ; khi kích thước hàng đợi trung bình lớn hơn ngưỡng tối đa thì tất cả các
gói tin đến đều bị loại bỏ. Khi kích thước hàng đợi trung bình nằm giữa minthvà
maxth thì mỗi gói tin đến được đánh dấu hoặc loại bỏ theo một xác suất pa, trong
đó pa là một hàm của kích thước hàng đợi trung bình avg; xác suất đánh dấu
hoặc loại bỏ một gói tin của một kết nối cụ thể sẽ tỷ lệ thuận với phần băng
thông chia sẻ của kết nối đó tại gateway. Giải thuật tổng quát của RED gateway
được mô tả như sau:
16
Hình 1: Giải thuật tổng quát RED
Giải thuật tại RED gateway gồm hai giải thuật riêng biệt:
− Giải thuật tính kích thước hàng đợi trung bình xác định mức độ bùng
nổ cho phép trong hàng đợi tại gateway.
− Giải thuật tính xác suất đánh dấu gói tin xác định mức độ thường
xuyên của việc đánh dấu gói tin của gateway với mức độ tắc nghẽn
hiện tại. Mục tiêu của việc đánh dấu gói tin của gateway phải đảm bảo
sao cho các gói tin được đánh dấu tại những khoảng thời gian đều
nhau, để tránh hiện tượng sai lệch, đồng bộ toàn cầu và đánh dấu các
gói thường xuyên đủ để kiểm soát kích thước hàng đợi trung bình.
Giải thuật chi tiết của RED tại gateway được mô tả như hình 2
dưới đây.
17
Hình 2: Giải thuật chi tiết RED
Các biến thay đổi:
avg: kích thước hàng đợi trung bình
q_time: điểm bắt đầu hàng đợi rỗng
count: số lượng các gói đến ngay sau gói cuối cùng bị đánh dấu
Các tham số cố định:
wq: trọng số hàng đợi
minth: chiều dài ngưỡng nhỏ nhất của hàng đợi
maxth: chiều dài ngưỡng lớn nhất của hàng đợi
maxp: xác suất loại bỏ tối đa
Các tham số khác:
18
pa: xác suất đánh dấu gói tin hiện tại
pb: xác suất đánh dấu hoặc loại bỏ tạm thời
q: kích thước hàng đợi hiện tại
time: thời gian hiện tại
f(t): một hàm tuyến tính của thời gian
Theo giải thuật, mỗi khi có một gói tin đến, sẽ tính kích thước hàng đợi
trung bình – avg bằng công thức:
avg (1 – wq) * avg + wq * q
Khi avg chạy từ minth đến maxth thì xác suất pb thay đổi tuyến tính từ 0 đến
maxp:
pb maxp * (avg – minth) / (maxth - minth)
Xác suất đánh dấu gói tin pa tăng chậm khi count tăng kể từ gói cuối cùng
được đánh dấu:
pa pb / (1 – count * pb)
Một tùy chọn cho cổng RED là đo hàng đợi theo byte thay vì theo gói. Với
tùy chọn này, kích thước hàng đợi trung bình phản ánh chính xác độ trễ trung
bình tại gateway. Khi tùy chọn này được sử dụng, thuật toán sẽ được sửa đổi để
đảm bảo rằng xác suất gói được đánh dấu tỷ lệ thuận với kích thước gói theo
byte như sau:
pb maxp * (avg – minth) / (maxth - minth)
pb pb * PacketSize / MaximumPacketSize
pa pb / (1 – count * pb)
1.3.2.3. Các tham số của RED
a. Trọng số hàng đợi wq:
RED gateway sử dụng bộ lọc thông thấp để tính toán kích thước hàng đợi
trung bình. Theo đó, sự gia tăng ngắn hạn trong kích thước hàng đợi xuất phát từ
lưu lượng truy cập lớn hoặc do tắc nghẽn tạm thời không sẽ ít ảnh hưởng lớn
đến kích thước hàng đợi trung bình. Bộ lọc thông thấp là trung bình dịch chuyển
có trọng số tăng theo cấp số nhân
avg (1 – wq) * avg + wq * q
19
Trọng số hàng đợi wq xác định hằng số thời gian của bộ lọc thông thấp.
Tiếp theo là phần lập luận cho việc thiết lập các cận trên hoặc dưới cho tham số
wq.
Cận trên cho wq:
Nếu wq quá lớn, khi đó quy trình lấy trung bình sẽ không lọc được tắc
nghẽn thoáng qua tại cổng.. Giả sử ban đầu hàng đợi rỗng (kích thước trung bình
bằng 0), sau khi có các gói, số gói tin trong hàng đợi sẽ tăng từ 0 đến L (có L gói
tin trong hàng đợi). Sau khi gói tin thứ L đến gateway, kích thước hàng đợi trung
bình avgL được tính như sau :
avgL = ∑ 𝑖wq(1 − wq)
(𝐿−𝑖)𝐿
𝑖=1
= wq (1 − wq)
𝐿
∑ 𝑖 (
1
1−wq
)
𝑖
𝐿
𝑖=1
Áp dụng công thức ∑ 𝑖𝑥𝑖
𝐿
𝑖=1
=
𝑥+ (𝐿𝑥−𝐿−1)𝑥𝐿+1
(1−𝑥)2
thì ta sẽ có
avgL = 𝐿 + 1 +
(1−wq)
𝐿+1
−1
wq
Cận dưới cho wq:
Cổng RED được thiết kế để giữ kích thước hàng đợi trung bình được tính
dưới một ngưỡng nhất định. Tuy nhiên sẽ không đạt được mục đích nếu như avg
không phản ánh hợp lý kích thước hàng đợi trung bình hiện tại. Nếu wq được
thiết lập quá thấp, thì giá trị avg sẽ phản ứng rất chậm với sự thay đổi kích thước
hàng đợi trong thực tế. Trong trƣờng hợp này, RED gateway không phát hiện
thấy sự bắt đầu của tắc nghẽn. Khi đưa ra giá trị ngưỡng dưới minth, tức là đã
cho phép hấp thu bùng nổ đến L gói tin. Sau đó trọng số wq phải được chọn thoả
mãn bất phương trình avgL < minth:
𝐿 + 1 +
(1−wq)
𝐿+1
−1
wq
< minth
Theo các kết quả tính toán của các nghiên cứu về RED, giá trị cho wq
thường sử dụng là 0.002.
b. Các giá trị ngưỡng minth và maxth
Giá trị tối ưu cho minth và maxth phụ thuộc vào kích thước hàng đợi trung
bình mong muốn. Nếu lưu lượng truy cập bùng nổ, thì minth phải lớn tương ứng
để cho phép việc sử dụng liên kết được duy trì ở mức cao chấp nhận được. Giá
20
trị tối ưu cho maxth phụ thuộc một phần vào độ trễ trung bình tối đa có thể được
cho phép bởi RED gateway. RED gateway sẽ làm việc hiệu quả nhất khi (maxth -
minth) lớn hơn mức gia tăng thông thường của kích thước hàng đợi trung bình
trong một khoảng thời gian khứ hồi (roundtrip time). Quy tắc nên tuân theo là
thiết lập cho maxth ít nhất gấp đôi minth.
c. Xác suất loại bỏ tối đa maxp
Giá trị maxp sẽ quyết định tần số loại bỏ gói là lớn hay nhỏ, nó quyết định
avg sẽ nằm ở mức nào trong khoảng từ minth đến maxth. Vì vậy tùy từng yêu cầu
mà có thể thiết lập maxp cho phù hợp.
1.3.3. Cơ chế Adaptive-RED (A-RED) [6]
1.3.3.1. Tổng quan
Một trong những mục tiêu chính của RED là sử dụng kết hợp trung bình
chiều dài hàng đợi (có thể điều chỉnh lưu lượng truy cập cao) và thông báo tắc
nghẽn sớm (giúp giảm độ dài hàng đợi trung bình) để đạt được độ trễ hàng đợi
trung bình thấp và thông lượng cao. Các thí nghiệm mô phỏng và kinh nghiệm
vận hành cho thấy RED khá thành công trong vấn đề này. Tuy nhiên RED cũng
có các điểm yếu cơ bản cần phải được khắc phục.
Điểm yếu thứ nhất là kích thước hàng đợi trung bình thay đổi theo các mức
độ tắc nghẽn và việc thiết lập các tham số cho RED router. Khi đường truyền
tắc nghẽn nhẹ và/hoặc maxp cao thì kích thước hàng đợi trung bình sẽ gần minth;
khi đường truyền tắc nghẽn nặng hơn, và/hoặc maxp thấp, kích thước hàng đợi
trung bình gần, hoặc thậm chí cao hơn maxth. Kết quả là, độ trễ hàng đợi trung
bình của RED rất nhạy cảm với lưu lượng tải và các tham số, dẫn tới không thể
đoán trước được. Độ trễ là một yếu tố rất quan trọng đảm bảo đến chất lượng
dịch vụ cho khách hàng, nhà mạng phải có một sự ước lượng tốt để có thể ước
lượng chính xác độ trễ trung bình trong các router khi xảy ra tắc nghẽn. Để đạt
được độ trễ trung bình có thể đoán trước được như vậy với RED thì sẽ cần phải
điều chỉnh liên tục các tham số RED để đáp ứng sự thay đổi của lưu lượng mạng
hiện tại.
Điểm yếu thứ hai của RED là thông lượng cũng nhạy cảm với lưu lượng tải
và các tham số RED. Cụ thể, RED thường không hoạt động tốt khi hàng đợi
trung bình trở nên lớn hơn maxth và dẫn đến thông lượng giảm đáng kể và tỉ lệ
21
loại bỏ gói tin tăng. Để tránh nhược điểm này cũng cần đến sự điều chỉnh liên
tục các tham số RED.
Mục đích của tác giả là tìm kiếm một thay đổi tối thiểu hơn cho RED có
thể làm giảm bớt các vấn đề về thay đổi độ trễ và độ nhạy tham số được đề cập ở
trên, đó cũng là nguyên tắc cốt lõi của giải thuật A-RED cải tiến từ giải thuật
RED gốc.
1.3.3.2. Giải thuật A-RED
Các mục tiêu của A-RED khác với RED ban đầu theo bốn cách:
maxp được thay đổi không chỉ để giữ cho kích thước hàng đợi trung
bình nằm trong khoảng minth và maxth mà còn giữ cho kích thước hàng
đợi trung bình nằm trong khoảng một nửa giữa minth và maxth.
maxp được thay đổi chậm, với khoảng thời gian lớn hơn thời gian khứ
hồi (round-trip time) và trong các bước nhỏ.
maxp phải được khống chế để duy trì trong miền [0.01, 0.5] (tương ứng
với [1%, 50%]).
Thay vì phải nhân lên nhiều lần khi tăng và giảm maxp, thuật toán sử
dụng chính sách tăng theo cấp số cộng giảm theo cấp số nhân (additive-
increase multiplicativedecrease - AIMD).
Nguyên tắc chính của A-RED là thay đổi các giá trị maxp không thường
xuyên và thay đổi chậm. maxp chỉ được thay đổi khi cần thiết sau những khoảng
thời gian dài thường là sau khi có sự thay đổi mạnh về mức độ tắc nghẽn. Để
đảm bảo rằng hiệu suất của A-RED sẽ không bị suy giảm quá mức trong giai
đoạn thay đổi mạnh này, maxp nên hạn chế ở trong phạm vi [0,01, 0,5]. Điều này
đảm bảo rằng trong trong suốt thời gian thay đổi trạng thái của mạng, hiệu suất
tổng thể của RED vẫn có thể được chấp nhận, mặc dù kích thước hàng đợi trung
bình có thể không nằm trong phạm vi mục tiêu của nó và độ trễ hoặc thông
lượng trung bình có thể bị giảm nhẹ tức là ở một mức độ chấp nhận được. Hình
3 dưới đây thể hiện giải thuật chi tiết cho A-RED.
22
Hình 3: Giải thuật chi tiết A-RED
1.3.3.3. Các tham số của A-RED
a) Phạm vi của maxp
Cận trên của giá trị maxp được giới hạn là 0.5 theo hai căn cứ. Đầu tiên là
để cố gắng tối ưu hóa RED để tốc độ loại bỏ gói tin không vượt quá 50% bởi
nếu tốc độ này vượt quá 50% là không thể chấp nhận được. Ngoài ra khi tỉ lệ
loại bỏ gói tin thay đổi từ 1 đến maxp khi kích thước hàng đợi trung bình chạy từ
minth đến maxth, và tỉ lệ loại bỏ gói thay đổi từ maxp→ 1 khi kích thước hàng đợi
trung bình thay đổi từ giá trị maxth → 2maxth. Do đó với giá trị maxp được thiết
lập tới giá trị 0.5 thì xác suất loại bỏ các gói thay đổi từ 0→ 1 khi kích thước
hàng đợi thay đổi từ minth→ 2maxth. Điều này giúp tăng hiệu năng truyền lớn
ngay cả khi tốc độ loại bỏ gói vượt quá 50%. Cận trên của maxp được thiết lập là
0.5 có nghĩa là khi tỉ lệ gói tin vượt quá 25%, kích thước hàng đợi trung bình có
thể vượt quá phạm vi cho phép lên tới bốn lần1.
Cận dưới của maxp được thiết lập 0.01 với mong muốn hạn chế phạm vi của
maxp. Bằng mô phỏng chúng tôi thấy rằng đối với những kịch bản với tỉ lệ loại
bỏ gói tin nhỏ, RED thực hiện rất tốt với maxp được thiết lập là 0.01.
23
b) Tham số α, β
Khi đề xuất các giá trị cho α và β, yêu cầu đặt ra là trong điều kiện bình
thường, nếu maxp có thay đổi 1 lần cũng không dẫn đến sự thay đổi của kích
thước hàng đợi trung bình hoặc ngược lại. Khi maxp được điều chỉnh, xác suất
loại bỏ gói ở trạng thái ổn định p vẫn giữ nguyên và kích thước hàng đợi trung
bình avg chỉ đơn giản là thay đổi để phù hợp với giá trị mới của maxp. Do đó p <
maxp khi maxp tăng lên bởi hệ số α, và giá trị hàng đợi trung bình avg có thể giảm
từ minth +
𝑝
maxp
(maxth − minth) đến minth +
𝑝
maxp + α
(maxth − minth).
Nó là sự giảm của giá trị :
α
maxp + α
+
𝑝
maxp
(maxth − minth)
Miễn là giá trị maxp < 0.2(maxth - minth), kích thước hàng đợi trung bình sẽ
không bị thay đổi từ giá trị biên trên xuống giá trị biên dưới trong một khoảng
thời gian duy nhất.
Khuyến nghị nên chọn α sao cho:
α
maxp + α
< 0.2 hay α < 0.25 maxp
Tương tự như vậy phải kiểm tra việc giảm maxp theo cấp số nhân để không
gây ra hiện tượng kích thước hàng đợi trung bình tăng từ giá trị biên dưới tới giá
trị biên trên sau một lần điều chỉnh maxp. Phân tích tương tự như α cho thấy
p (1−β)
maxp β
(maxth − minth) < 0.2(maxth − minth) và kích thước hàng đợi
trung bình không nên thay đổi từ giá trị biên dưới tới giá trị biên trên trong một
khoảng thời gian duy nhất.
Khuyến nghị nên chọn β sao cho:
1− β
β
0.83 . Giá trị mặc định
cho β là 0.9.
c) Thiết lập các tham số maxth và wq
Như đã mô tả ở trên, A-RED loại bỏ sự phụ thuộc của RED vào tham số
maxp. Để giảm nhu cầu điều chỉnh tham số khác cho RED, ta có thể tự động đặt
tối đa các tham số RED là maxth và wq. Giá trị maxth được khuyến nghị nên gấp
ba lần minth. .Trong trường hợp này, kích thước hàng đợi trung bình sẽ được tập
trung vào khoảng 2minth và do đó chỉ được xác định bởi tham số minth của RED.
24
1.4. Kết chương
Trong chương này luận văn đã nêu ra tổng quan về QoS, các tham số QoS,
tổng quan về các loại cơ chế QoS cơ bản phổ biến hiện nay như DropTail, RED,
A-RED, đánh giá các cơ chế DropTail, RED và nêu ra các giải thuật của RED,
A-RED cũng như phân tích về các tham số của chúng. Đây sẽ là tiền đề để phục
vụ cho việc tiến hành thử nghiệm đánh giá hiệu năng của một số giải thuật quản
lý hàng đợi tích cực tiêu biểu trên thiết bị định tuyến VyOS cụ thể kịch bản thử
nghiệm được tham khảo theo tài liệu [15] tức là sẽ chọn các kiểu QoS để đánh
giá (trong phạm vi luận văn sẽ chọn các cơ chế DropTail, RED, A-RED) và đưa
ra các tham số đầu vào rồi so sánh kết quả đầu ra như về thông lượng, queue
delay hay lượng gói tin bị loại bỏ (trong phạm vi luận văn sẽ chọn đưa ra kết quả
đầu ra về lượng gói tin bị loại bỏ). Các tham số lựa chọn phải đáp ứng các phân
tích ở mục 1.3 của các cơ chế. Kết quả thử nghiệm và nhận xét sẽ được mô tả
chi tiết hơn ở chương 3.
Chương tiếp theo sẽ tập trung nghiên cứu về cấu trúc file, các kiểu cơ chế
quản lý dịch vụ trên thiết bị định tuyến hệ điều hành nguồn mở VyOS, kiến trúc
khi áp dụng cơ chế QoS và xác định những file, module chứa mã nguồn cũng
như phân tích những nơi có thể can thiệp được để cài đặt thêm những tính năng
mới trong thiết bị định tuyến hệ điều hành nguồn mở VyOS từ đó có thể áp dụng
cài đặt các giải pháp nhằm tăng chất lượng dịch vụ chống tắc nghẽn hiệu quả
hơn.
25
CHƯƠNG 2. CÁC CƠ CHẾ QOS VÀ CẤU TRÚC TRONG VYOS
2.1. Giới thiệu chung về thiết bị định tuyến hệ điều hành nguồn mở VyOS
VyOS là một thiết bị định tuyến có hệ điều hành mã nguồn mở và có thể
được cài đặt trên các phần cứng vật lý hoặc trên máy ảo hoặc trên Cloud. Nó
được xây dựng dựa trên GNU/Linux và kết hợp nhiều ứng dụng bên trong như
Quagga (bộ phần mềm định tuyến, cung cấp các giao thức OSPF, RIP, BGP),
Open VPN và được tổ chức trên một giao diện quản lý chung duy nhất.
Trong hoàn cảnh vào cuối năm 2103 sau khi Brocade Communications
ngừng việc phát triển Vyatta Core của phần mềm Vyatta Routing, một nhóm
những thành viên nhiệt huyết của dự án này đã sử dụng phiên bản cuối cùng của
Vyatta và cùng nhau xây dựng một nhánh mã nguồn mở mới dựa trên nền tảng
Vytta Core, lấy tên là VyOS và lần đầu tiên VyOS được công bố vào ngày 22
tháng 12 năm 2013. Các phiên bản mới vẫn liên tục được cập nhật và cho đến
nay, phiên bản mới nhất là VyOS Crux1.2.0 được phát hành ngày 28 tháng 01
năm 2019. Toàn bộ mã nguồn được lưu trên trang https://github.com/vyos [7] và
vẫn liên tục được cập nhật hằng ngày, hằng giờ.
So sánh với các loại router mã nguồn đóng của các hãng sản xuất lớn,
VyOS nói riêng có thể không có bộ câu lệnh cấu hình phong phú, chi tiết, cũng
như không hỗ trợ nhiều tính năng như router của các hãng lớn. Nhưng đổi lại nó
cho ta một tiềm năng lớn trong việc sử dụng và thay đổi mã nguồn cho mục đích
riêng của mỗi cá nhân, mỗi tập thể. Do đó, việc cài đặt, sửa đổi một giải thuật
mới nâng cao chất lượng dịch vụ chống tắc nghẽn vào VyOS là khả thi.
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
26
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.
Hình 5: Cấu trúc file bên trong bin/.
27
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).
Hình 7: Cấu trúc file vyatta-qos-up
28
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.
Hình 9: Cấu trúc bên trong share/perl5/Vyatta
29
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
2.3. Các kiểu QoS trong VyOS [8,9]
Chất lượng dịch vụ (QoS) là một tính năng cho phép người quản trị xác
định các luồng lưu lượng khác nhau và sau đó xử lý chúng theo chính sách riêng
thay vì chỉ sử dụng cơ chế mặc định. Trên hệ thống VyOS sử dụng câu lệnh “tc”
– traffic control làm phụ trợ cho QoS. VyOS cung cấp cho người dùng cấu hình
các node cho các quy tắc sau đây: cơ chế QoS mặc định dựa trên mức độ ưu tiên
hàng đợi. Ngoài cơ chế xếp hàng mặc định, hệ thống VyOS cung cấp nhiều cơ
chế QoS khác nhau để xác định, xử lý các luồng lưu lượng khác nhau đi qua một
interface và được phân loại thành các cơ chế áp dụng cho lưu lượng truy cập in
và cho lưu lượng truy cập out.
Theo mặc định, tất cả lưu lượng truy cập được gửi bởi hệ thống VyOS
được ưu tiên dựa trên giá trị trong trường Type of Service (ToS) của nó. Trong
mỗi hàng đợi, tất cả các gói được gửi trên cơ sở First In First Out (FIFO). Lưu
lượng dữ liệu được chia theo cách này vì việc cung cấp các mức dịch vụ bằng
nhau cho tất cả lưu lượng. Tuy nhiên trên thực tế một số loại lưu lượng, theo bản
chất của chúng nên được đối xử khác với những loại khác. Ví dụ: lưu lượng
thoại rất nhạy cảm với độ trễ và nếu không được xử lý tương ứng, có thể không
thể hiểu được nội dung.
30
Hệ thống VyOS hỗ trợ các cơ chế QoS sau đây để kiểm soát lưu lượng truy
cập in và out:
Cơ chế bỏ đuôi (Drop Tail) là một thuật toán cung cấp hàng đợi
thuần túy có độ dài xác định theo thứ tự FIFO (First In First Out);
nói cách khác, các gói dữ liệu được truyền theo đúng thứ tự mà
chúng đến. Nếu hàng đợi đầy, thì đuôi của hàng đợi (nghĩa là tập hợp
các gói đến saukhi hàng đợi được lấp đầy) sẽ bị hủy. Với hàng đợi
drop-tail, có một hàng đợi duy nhất và tất cả lưu lượng được xử lý
như nhau; lưu lượng truy cập không được ưu tiên như trong trường
hợp mặc định và chỉ dùng trong traffic out.
Cơ chế hàng đợi công bằng (Fair Queue) là một cơ chế xếp hàng gói
phân tách các luồng lưu lượng dựa trên địa chỉ IP nguồn/đích của
chúng và/hoặc giao thức IP. Băng thông được phân bổ công bằng
giữa các luồng dựa trên thuật toán xếp hàng công bằng ngẫu nhiên
(Stochastic fairness Queuing) sao cho không có luồng nào được phép
sử dụng phần lớn băng thông và chỉ dùng trong traffic out.
Cơ chế hàng đợi vòng tròn (Round Robin) là một thuật toán lập lịch
đơn giản. Trong hàng đợi vòng tròn, lưu lượng cho các lớp (class)
được xác định và băng thông được chia đều cho các lớp đó và chỉ
dùng trong traffic out.
Cơ chế điều hoà lưu lượng (Traffic Shaper) cung cấp hàng đợi dựa
trên thuật toán Hierarchical Token Bucket để phân bổ lượng băng
thông khác nhau cho các lớp lưu lượng khác nhau. Khác biệt giữa
Traffic Shaper và Round Robin là Traffic shaper giới hạn phân bổ
băng thông theo lớp lưu lượng trong khi Round robin chia tổng băng
thông có sẵn giữa các lớp và chỉ dùng trong traffic out.
Cơ chế giới hạn tốc độ (Rate Limiting) là cung cấp hàng đợi dựa trên
thuật toán Token Bucket Filter (TBF) để giới hạn lưu lượng gói ở tốc
độ đã đặt. Thuật toán này chỉ chuyển các gói đến với tốc độ không
vượt quá tốc độ được đặt và chỉ dùng trong traffic out.
Cơ chế giả lập mạng mô phỏng (Network Emulator) cung cấp chính
sách giả lập mạng mô phỏng lưu lượng mạng WAN, rất hữu ích cho
mục đích thử nghiệmvà chỉ dùng trong traffic out.
31
Cơ chế phát hiện ngẫu nhiên (Random Detect) là một cơ chế tránh
tắc nghẽn bao gồm Phát hiện sớm ngẫu nhiên (RED) và Phát hiện
sớm ngẫu nhiên có trọng số (WRED). RED làm giảm khả năng tắc
nghẽn mạng sẽ xảy ra bằng cách loại bỏ ngẫu nhiên các gói khi đầu
ra interface bắt đầu có dấu hiệu tắc nghẽn, do đó sử dụng băng thông
mạng tốt hơn. WRED phân biệt giữa các lớp lưu lượng trong một
hàng đợi và gán mức độ ưu tiên khác nhau cho các luồng lưu lượng
tương ứng; các gói ưu tiên thấp được loại bỏ khỏi hàng đợi sớm hơn
các gói ưu tiên cao. Điều này đạt được bằng cách sử dụng ba bit đầu
tiên của trường ToS (Type of services) để phân loại luồng dữ liệu và
theo các tham số ưu tiên đã xác định, quyết định được đưa ra và chỉ
dùng trong traffic out.
Cơ chế hàng đợi ưu tiên (Priority queue) : Có tối đa bảy hàng đợi với
các mức độ trọng số ưu tiên khác nhau từ 1 đến 7 (trong đó 1 là mức
ưu tiên thấp nhất) , các gói được đặt vào hàng đợi dựa trên trọng số
được gán. Các gói được truyền từ hàng đợi theo thứ tự ưu tiên. Hàng
đợi với thứ tự cao hơn được lấp đầy liên tục các gói, các gói từ hàng
đợi ưu tiên thấp hơn sẽ chỉ được truyền sau khi lưu lượng truy cập từ
hàng đợi ưu tiên
Các file đính kèm theo tài liệu này:
- luan_van_thu_nghiem_cac_giai_phap_dam_bao_chat_luong_dich_vu.pdf