Hình 4.7 minh họa chức năng phân loại và đánh dấu trong router biên. Các packets đến router biên trƣớc hết đƣợc phân loại. Bộ phân loại (Classifier) lọc các gói tin dựa vào giá trị của một hoặc nhiều trƣờng tiêu đề của packet, ví dụ, địa chỉ nguồn, địa chỉ đích, cổng nguồn, cổng đích,… hoặc dựa trên tốc độ đến của gói tin so với các ngƣỡng, và hƣớng dẫn các packet tới chức năng đánh dấu thích hợp. Giá trị trƣờng DS sau đó sẽ nhận đƣợc một giá trị tại bộ đánh dấu (Marker). Trong phần mô phỏng A-RIO chúng tôi sử dụng một thuật toán đánh dấu gọi là trTCM (two rate Three Color Marking), nó sử dụng hai ngƣỡng để phân các gói tin thành 3 loại, thuật toán này sẽ đƣợc trình bày kỹ hơn ở phần sau. Ngay khi các gói tin đƣợc đánh dấu, chúng đƣợc chuyển tiếp cho router tiếp theo để đi tới đích. Tại mỗi router hỗ trợ DiffServ sau đó, những gói tin đã đƣợc đánh dấu này nhận đƣợc dịch vụ theo các dấu của chúng.
b. Đối xử theo từng chặng-PHP
Chúng ta đã xem xét các chức năng trong phần mạng biên của kiến trúc các dịch vụ phân loại. Thành phần chính thứ hai của kiến trúc DiffServ đó là chính sách đối xử từng chặng PHP đƣợc cài đặt bên trong các router ở phần mạng lõi. PHP có những đặc điểm sau:
Các lớp lƣu lƣợng khác nhau (tức là các lớp có giá trị trƣờng DS khác nhau) sẽ nhận đƣợc các dịch vụ khác nhau (cách chuyển tiếp khác nhau).
PHP không chỉ định cụ thể cơ chế nào phải đƣợc áp dụng để đạt đƣợc mục đích, vì vậy bất kỳ một cơ chế quản lý cấp phát tài nguyên (băng thông/bộ đệm) hay cơ chế chuyển tiếp nào cũng có thể đƣợc sử dụng miễn là đạt đƣợc tiêu chí hiệu năng mong muốn. Chẳng hạn, PHP không yêu cầu một chính sách quản lý hàng đợi cụ thể nào, vì vậy tất cả các chính sách nhƣ FIFO, PQ hay WFQ đều có thể đƣợc sử dụng. Nói cách khác, PHP là “đích” cần đạt, còn các cơ chế áp dụng là các “phƣơng tiện”.
Hiện tại có hai chuẩn PHP đƣợc quan tâm nhiều nhất, đó là: Expedited Forwarding (EF) và Assured Forwarding (AF).
EF PHB chỉ định rằng tốc độ ra khỏi router của một lớp lƣu lƣợng nào đó phải bằng hoặc vƣợt quá một tốc độ cho trƣớc. Nghĩa là trong mọi khoảng thời gian, lớp lƣu lƣợng đó đƣợc đảm bảo nhận đƣợc đủ băng thông sao cho tốc độ ra của nó bằng hoặc vƣợt quá tốc độ đƣợc đặt trƣớc này. EF PHB đảm bảo ngay cả khi có nhiều lớp lƣu lƣợng khác lấn át router và tài nguyên của đƣờng truyền, thì một lƣợng đủ tài nguyên vẫn phải đƣợc tạo sẵn cho lớp để đảm bảo rằng nó nhận đƣợc một tốc độ tối thiểu.
AF PHB phức tạp hơn. AF PHB chia lƣu lƣợng thành 4 lớp, trong đó mỗi lớp AF đƣợc đảm bảo đƣợc cung cấp một số lƣợng tối thiểu băng thông và bộ đệm. Trong mỗi lớp, các packet lại đƣợc phân vào một trong 3 loại “ƣu tiên loại bỏ”. Khi tắc nghẽn xuất hiện trong một lớp AF, router có thể loại bỏ các gói tin dựa trên giá trị ƣu tiên loại bỏ (drop preference) của chúng. Bằng cách thay đổi lƣợng tài nguyên cấp phát cho từng lớp, một nhà cung cấp dịch vụ Internet (ISP) có thể cung cấp các mức độ thực hiện khác nhau cho các lớp lƣu lƣợng AF khác nhau.
AF PHB có thể đƣợc sử dụng để cung cấp các mức độ dịch vụ khác nhau cho các hệ thống cuối. Trong các hệ thống này việc quyết định số lƣợng tài nguyên cấp phát cho từng lớp dịch vụ phải gắn liền với việc giới hạn các tham số liên quan. Chẳng hạn có 3 lớp dịch vụ khác nhau là A, B, C, giả sử A đƣợc cung cấp x% băng thông tổng cộng, B đƣợc cấp x/2% và không còn ràng buộc gì thêm. Nhƣ vậy bề ngoài có thể nói lớp A đƣợc cấp phát dịch vụ tốt hơn lớp B, tuy nhiên nếu lƣu lƣợng của các gói tin thuộc lớp A cao gấp nhiều lần so với lớp B, thì thực ra các gói tin lớp A đƣợc phục vụ ít hơn lớp B. Nhƣ vậy trong trƣờng hợp này, kích thƣớc tài nguyên là chƣa đủ để đánh giá chất lƣợng dịch vụ của một lớp, còn phải có thêm ràng buộc về tốc độ dữ liệu tối đa cho các gói tin của lớp đó nữa.
Trong NS-2, các lớp AF đƣợc cài đặt với các hàng đợi vật lý khác nhau, trong mỗi hàng đợi đó, các gói tin ứng với các mức ƣu tiên khác nhau đƣợc đƣa vào một hàng đợi ảo. Nhƣ vậy có tối đa 4 hàng đợi vật lý, mỗi hàng đợi vật lý sẽ có tối đa 3 hàng đợi ảo. Mỗi hàng đợi vật lý có thể đƣợc cài đặt một chính sách quản lý và phục vụ riêng, có thể là DropTail, RED, RIO-C, RIO-D,.. Chúng ta sẽ tìm hiểu chi tiết hơn trong phần tiếp theo.
4.3.2 Quản trị hàng đợi động trong kiến trúc DiffServ
Mục tiêu của AQM trong các mạng DiffServ có sự khác biệt về bản chất so với trong các mạng Best-effort. Trong khi mục tiêu của AQM trong các mạng Best- effort là để tránh tắc nghẽn thì trong các mạng DiffServ là loại bỏ có ƣu tiên.
RIO là một kỹ thuật AQM cơ bản phù hợp cho việc thiết lập xử lý từng chặng theo chuẩn AF. Xin đƣợc nhắc lại một chút về RIO: RIO là sự mở rộng của RED bằng cách sử dụng hai tập tham số để phân biệt các gói tin In (in-profile) và Out
(out-of-profile). Để quyết định loại bỏ các gói tin Out, RIO sử dụng kích thƣớc trung bình của hàng đợi tổng, cấu thành từ cả các gói In và Out. Đối với các gói In, nó sử dụng kích thƣớc trung bình của hàng đợi ảo, đƣợc tạo bởi chỉ các gói In. Nhƣ đã trình bày bằng mô phỏng trong phần 4.2.3, với RIO ngƣời dùng có thể nhận đƣợc phần băng thông đảm bảo ngay cả khi tắc nghẽn, thậm chí còn có thể nhận đƣợc nhiều hơn khi mạng không tắc nghẽn. Mô phỏng mà chúng tôi đã làm với RIO hoàn toàn có thể thực hiện trên kiến trúc DiffServ. Khi đó, mạng sẽ có hai bộ phận: một bộ đánh dấu đƣợc đặt tại mạng biên (gateway G1), đƣợc cài đặt bởi một thuật toán đánh dấu nào đó miễn là phân đƣợc hai loại gói tin In và Out; bộ phận còn lại đƣợc đặt tại gateway G1, và dùng thuật toán RIO để thực hiện chuyển tiếp (hay loại bỏ). RIO đã đƣợc mở rộng để xử lý với n > 2 mức ƣu tiên theo một nguyên lý tƣơng tự. Khi đó xác suất loại bỏ các gói tin có mức ƣu tiên j (1 j < n) phụ thuộc vào kích thƣớc trung bình của hàng đợi ảo mức j (là hàng đợi tạo bởi chỉ các gói tin có mức ƣu tiên từ 1 đến j). Đối với các gói tin có mức ƣu tiên n thì xác suất loại bỏ là
một hàm của kích thƣớc hàng đợi “vật lý” (hàng đợi tổng cộng-total queue). Phƣơng pháp gốc này có tên là RIO-C (RIO-Coupled) dùng để phân biệt với các phƣơng pháp khác đƣợc đề xuất sau đó. Chẳng hạn, Weighted RED (WRED) sử dụng kích thƣớc hàng đợi trung bình tổng cộng cho mọi mức ƣu tiên, trong khi RIO-D (RIO-Decoupled) tính xác suất loại bỏ cho các gói tin mức j nhƣ một hàm theo số các gói tin trung bình có cùng mức ƣu tiên. Hình 4.8 trình bày lƣợc đồ RIO- C với ba mức ƣu tiên đƣợc thể hiện bằng ba màu: đỏ, vàng và xanh, theo đó xanh biểu diễn mức ƣu tiên cao nhất, sau đó đến vàng và đỏ.
RIO-C phân biệt các gói tin theo các mức ƣu tiên bằng ba cách. Cách thứ nhất là dùng các ngƣỡng khác nhau cho các mức ƣu tiên khác nhau, sao cho việc loại bỏ bắt đầu sớm đối với các gói tin có mức ƣu tiên cao hơn. Cách thứ hai là dùng xác suất loại bỏ tăng lên một cách tuyến tính theo các mức ƣu tiên. Cách thứ ba dựa trên tính toán kết hợp xác suất loại bỏ; trên thực tế, việc tính xác suất loại bỏ đối với gói tin có mức ƣu tiên j sử dụng số gói tin trung bình của tất cả các gói tin có mức ƣu tiên nhỏ hơn j mang lại một cách phân biệt tốt. Hai cách đầu phụ thuộc đơn thuần vào việc chọn các tham số và chúng không loại trừ lẫn nhau.
Nhƣ đã đề cập trƣớc, không có một quy tắc chính xác nào cho việc thiết lập các tham số RED (hai ngƣỡng minth, maxth, xác suất loại bỏ tối đa maxp và trọng số hàng đợi wq); thêm vào đó, các kết quả nghiên cứu cũng chỉ ra những khó khăn để tìm đƣợc một cấu hình RED thật sự hiệu quả. Vấn đề càng trở nên nghiêm trọng hơn đối với RIO: chẳng hạn, xét RIO với n mức ƣu tiên, về nguyên tắc thì cần phải thiết lập 3n + 1 tham số (2n ngƣỡng và n xác suất loại bỏ, cộng thêm một trọng số
wq – giả sử wq đƣợc dùng cho mọi hàng đợi ảo). Rõ ràng là vấn đề thiết lập các tham số trở nên phức tạp hơn và trở thành một chủ đề nghiên cứu. Nhiều nghiên cứu chỉ ra sự khó khăn trong việc hiệu chỉnh RIO để đạt đƣợc một hiệu năng có thể dự đoán trƣớc.
4.4 Thuật toán A-RIO
Bây giờ chúng ta sẽ trình bày chi tiết về A-RIO. A-RIO là một mở rộng trực tiếp cả hai thuật toán A-RED và RIO-C. A-RIO theo cách tiếp cận của A-RED, thực hiện một hiệu chỉnh tự động on-line nhằm đạt đƣợc một hiệu năng có thể dự đoán trƣớc. Có nhiều cách tiếp cận đã đƣợc đƣa ra nhằm hiệu chỉnh RED, ở đây A-RED đƣợc chọn vì tính đơn giản và hiệu quả của nó (cả về tƣ tƣởng và cài đặt).
Cũng nhƣ A-RED ở chế độ tự động, A-RIO chỉ cần một tham số đầu vào là độ trễ đích, nó sẽ tự động ánh xạ sang tập các tham số router. Đặc trƣng này rất có ý nghĩa đối với nhà cung cấp dịch vụ phân loại: cấu hình router theo độ trễ - một độ đo QoS liên quan trực tiếp đến đặc tả dịch vụ và đặc tả yêu cầu của ngƣời dùng- chắc chắn dễ hiểu hơn nhiều so với các tham số trừu tƣợng nhƣ ngƣỡng hàng đợi, xác suất loại bỏ, hoặc trọng số trung bình...Về hiệu năng, A-RIO cố gắng đạt đƣợc thông lƣợng cao trong khi giữ cho độ trễ trong một khoảng có thể dự đoán đƣợc ngay cả khi tải nặng.
Thuật toán A-RIO dựa trên hai nguyên lý chính. Nguyên lý thứ nhất là sử dụng một thể hiện đầy đủ của A-RED cho mỗi mức ƣu tiên trong lớp AF (hàng đợi vật lý). Nguyên lý thứ hai là sử dụng các ngƣỡng chồng nhau hoàn toàn cho tất cả
các mức ƣu tiên. Mã giả của A-RIO đƣợc trình bày trong hình 4.9, một thí dụ của A-RIO với ba mức ƣu tiên đƣợc thể hiện trong hình 4.10. Dƣới đây là những điểm chính của A-RED đƣợc giữ không đổi cho A-RIO:
Tham số xác suất loại bỏ tối đa maxp (i)
chạy từ 0.01 đến 0.5
Ngƣỡng dƣới minth đƣợc tính theo một hàm của độ trễ đích dt và dung lƣợng đƣờng truyền C (packets/s) với cận dƣới là 5 gói tin: minth = max(5, dt.C/2).
Ngƣỡng trên maxth đƣợc tính cố định bằng 3.minth.
wq cũng đƣợc tính theo dung lƣợng đƣờng truyền: wq = 1– exp(-1/C)
Khoảng gentle củaRED đƣợc sử dụng từ đầu đến cuối. Khoảng này, nhƣ trên hình 4.9, là maxth avg (i) 2.maxp
Hàm hiệu chỉnh maxp(i) sử dụng luật AIMD (tăng theo cấp số cộng giảm theo cấp số nhân). Luật này nhằm tránh sự thay đổi đột ngột của maxp
(i)
dẫn tới sự dao động mạnh của kích thƣớc hàng đợi.
Nếu tải thay đổi một cách đột ngột, kích thƣớc hàng đợi trung bình có thể nằm ngoài miền mục tiêu. Ở đây, miền mục tiêu là (qlow, qhigh), trong đó: qlow = minth + 0.4(maxth – minth); qhigh = minth + 0.6(maxth – minth). Các tham số
, đƣợc chọn cố định sao cho kích thƣớc hàng đợi trung bình quay lại miền mục tiêu trong vòng 25 giây.
Một trong các mục tiêu khi thiết kế A-RIO là đảm bảo đƣợc độ trễ luôn nằm trong một miền mong muốn cho trƣớc, miền này đƣợc gọi là độ trễ đích (target delay). Để làm đƣợc điều này thì phải đảm bảo kích thƣớc hàng đợi trung bình nằm trong miền mục tiêu (qlow, qhigh) nhƣ đã chỉ ra ở trên.
Để làm rõ điều này, chúng ta hãy xem xét trong kịch bản RIO-C với các ngƣỡng không chồng nhau. Các mức ƣu tiên là 1 (In) và 2 (Out). Nếu tỉ lệ các gói In
là thấp so với dung lƣợng đƣờng truyền, khi tải nặng thì các ngƣỡng và xác xuất loại bỏ ứng với các gói Out sẽ đƣợc kích hoạt, giữ kích thƣớc hàng đợi nằm trong khoảng min2 và max2. Tuy nhiên, nếu phần lớn lƣu lƣợng là các gói In, kích thƣớc
trung bình sẽ nằm trong khoảng min1 và max1. Các ngƣỡng so le này làm cho kích thƣớc hàng đợi trung bình luôn thay đổi khi thay đổi lƣu lƣợng trộn lẫn. Điều này dẫn tới không đảm bảo đƣợc độ trễ đích trong mọi kịch bản. Bởi vậy, A-RIO sử dụng ngƣỡng chung cho tất cả các mức ƣu tiên. Theo đó, cơ chế hiệu chỉnh A-RED kéo cho kích thƣớc hàng đợi trung bình về một khoảng giới hạn, dẫn tới đảm bảo đƣợc độ trễ đích, bất kể lƣu lƣợng đƣợc trộn lẫn nhƣ thế nào.
for mỗi gói tin đến với độ ƣu tiên i,
for mỗi mức ƣu tiên j = i, i + 1, .., n
cập nhật avg(j): avg(j) avg(j) * (1 - wq) + q(j) *wq
với mỗi đơn vị thời gian interval cập nhật maxp(j): if avg(j) > qhigh and maxp(j) < 0.5
tính hệ số tăng: min(0.01, maxp(j)/4) tăng maxp(j) : maxp(j) maxp(j) +
if j < n then: maxp(j) min(maxp(j), maxp(j+1)) elseif avg(j) < qlow and maxp(j) > 0.01
giảm maxp(j) : maxp(j) maxp(j) *
if j > 0 then: maxp(j) max(maxp(j), maxp(j-1)) if minth < avg(i) maxth
tính p(i) nhƣ trong A-RED loại gói tin này với xác suất p(i)
else if maxth < avg(i) 2*maxth
tính p(gentlei) nhƣ trong A-RED loại gói tin này với xác suất (i)
gentle
p
else if avg(i) > 2 * maxth
loại gói tin này
Các biến:
avg(i): kích thƣớc trung bình ứng với mức ƣu tiên i (là tổng số gói tin của các mức ƣu tiên từ 1 đến i)
maxp(i) : xác suất lạo bỏ tối đa ứng với mức ƣu tiên i ( khi avg(i) = maxp(i))
p(i): xác suất loại bỏ ứng với mức ƣu tiên i
) (i gentle
p : xác suất loại bỏ ứng với mức ƣu tiên i trong vùng gentle
Các tham số cố định:
interval: 0.5 s;
(hệ số giảm): 0.9
Tuy nhiên, việc sử dụng các ngƣỡng chồng nhau có ảnh hƣởng đến việc phân biệt mức độ ƣu tiên các gói tin. Nhƣ đã đề cập trong phần 4.3.2, RIO phân biệt các mức ƣu tiên theo ba cách: dùng các ngƣỡng khác nhau, dùng hàm loại bỏ khác nhau, và dùng hàng đợi ảo kết hợp. Với việc dùng các ngƣỡng chồng nhau, A-RIO loại trừ cách thứ nhất. Mặt khác, A-RIO dựa vào hiệu chỉnh maxp và việc sử dụng các maxp
(i)
khác nhau cho các mức ƣu tiên khác nhau đƣa ra một phƣơng pháp phân loại khác. Nhƣ mô tả trong hình 4.9, thuật toán A-RIO hiệu chỉnh sao cho maxp(i)
maxp(i+1), i {1,..., n-1}; cùng với các hàng đợi ảo kết hợp, A-RIO cung cấp một
sự đảm bảo cho việc phân loại.
Về vấn đề cài đặt, độ phức tạp của A-RIO tƣơng đƣơng với độ phức tạp của A-RED và RIO kết hợp. Hơn nữa, A-RIO không lƣu hoặc tính toán thông tin từng luồng, nên việc mở rộng (về lý thuyết) là không thành vấn đề.
4.5 Nghiên cứu A-RIO bằng mô phỏng
Bằng bộ mô phỏng NS-2 có hỗ trợ A-RIO trong module DifServ, chúng tôi đã tiến hành nghiên cứu bằng mô phỏng, mục đích là để thẩm định lại các đánh giá bằng nghiên cứu lý thuyết, đặc biệt là nghiên cứu hiệu quả của A-RIO trong việc giữ kích thƣớc hàng đợi của router AF nằm trong một khoảng mong muốn với sự đa dạng của kiểu và tải lƣu lƣợng, trong khi vẫn bảo vệ các gói tin có độ ƣu tiên cao và