Thuật toán RIO 7 6-

Một phần của tài liệu Thuật toán quản lý hàng đợi A - RIO (Trang 76)

4.2.1 Ý tƣởng của RIO

RIO là một mở rộng của RED để bƣớc đầu hỗ trợ cho đảm bảo chất lƣợng dịch vụ QoS. Chúng ta biết rằng RED (hay A-RED) gateway đối xử với các gói tin đến một cách bình đẳng, không có sự phân biệt theo các mức ƣu tiên của chúng. Trên thực tế, ngƣời dùng hoàn toàn có quyền yêu cầu các mức chất lƣợng dịch vụ khác nhau tuỳ theo mức giá cả thoả thuận với nhà cung cấp và những nhà cung cấp dịch vụ phải có trách nhiệm đáp ứng đƣợc điều đó. Tuy nhiên nếu chỉ đơn thuần áp dụng RED (hoặc A-RED) sẽ dẫn tới không công bằng đối với các luồng lƣu lƣợng: luồng phải trả nhiều tiền hơn cũng chỉ đƣợc cung cấp cùng một dịch vụ nhƣ các luồng trả ít hơn. Từ nhu cầu đó, David D. Clark và Wenjia Fang đã đề xuất thuật toán RIO [10] cải tiến RED bằng cách phân loại các gói tin đến theo hai mức ƣu tiên. Việc này đƣợc thực hiện bằng cách gắn thẻ “In” hoặc “Out” cho mỗi gói tin đến dựa trên hồ sơ dịch vụ (service profile) đã đƣợc thoả thuận giữa khách hàng và nhà cung cấp dịch vụ. Theo đó, gói tin đƣợc gắn thẻ “In” (in-profile) nếu nó là gói tin nằm trong hồ sơ dịch vụ đã đƣợc thoả thuận; ngƣợc lại gói tin đƣợc gắn thẻ “Out” (out-of-profile) khi nó nằm ngoài hồ sơ dịch vụ, cũng có thể coi đó nhƣ những gói tin không hợp lệ đƣợc đƣa vào mạng. Khi tắc nghẽn xảy ra thì mạng sẽ “ƣu tiên” loại bỏ gói tin “Out” nhanh hơn. Và không giống nhƣ đối với các chính sách phục vụ WFQ, tại các router trong mạng không có sự phân tách lƣu lƣợng thành các luồng hay các hàng đợi khác nhau; mà các gói tin của tất cả ngƣời dùng

đƣợc gộp chung vào trong một hàng đợi duy nhất, điều này, theo [10], là phù hợp đối với mạng ngày nay.

RIO viết tắt của RED with In/Out bit. RIO sở hữu tất cả những thuộc tính hấp dẫn của RED nhƣ đạt đƣợc thông lƣợng cao và độ trễ thấp trong khi giữ kích thƣớc hàng đợi trung bình nhỏ, ngoài ra nó còn phân biệt đối xử với các gói tin Out

trong thời gian tắc nghẽn. Ở những giờ cao điểm (thời điểm có mức tắc nghẽn cao), RIO sử dụng bộ đôi thuật toán RED cho việc loại bỏ gói tin, một cho các gói In và một cho các gói Out. Bằng cách thiết lập các bộ tham số cho hai thuật toán khác nhau, RIO có khả năng ƣu tiên các gói In và loại bỏ tích cực các gói Out hơn.

4.2.2 Thuật toán RIO

RIO sử dụng cùng một cơ chế nhƣ RED, nhƣng đƣợc thiết lập hai bộ ba tham số, một cho các gói In, một cho các gói Out. Khi các gói tin đến gateway, nó kiểm tra xem gói tin đƣợc gắn thẻ In hay Out. Nếu là gói In, gateway sẽ tính avg_in, kích thƣớc hàng đợi trung bình của các gói tin In; ngƣợc lại, gateway tính avg_total, kích thƣớc hàng đợi trung bình cho tất cả các gói tin đến (cả In Out). Xác suất loại bỏ các gói tin In phụ thuộc vào avg_in, còn xác suất loại bỏ các gói tin Out phụ thuộc vào avg_total. Thuật toán RIO đƣợc biểu diễn bằng giả ngôn ngữ nhƣ trong hình 4.1.

Nhƣ minh họa trên hình 4.2, có ba tham số cho mỗi thuật toán con xác định ba miền kích thƣớc hàng đợi trung bình tƣơng ứng với ba pha xử lý của thuật toán. Ba tham số min_in, max_in và Pmax_in xác định 3 miền: miền bình thƣờng [0, min_in), miền trách tắc nghẽn [min_in, max_in), và miền điều khiển tắc nghẽn [max_in, ) cho các gói tin In. Tƣơng tự ba tham số min_out, max_out, và Pmax_outxác định ba pha ứng với thuật toán cho các gói tin Out.

Việc phân biệt đối xử với các gói tin Out đƣợc thực hiện bằng cách lựa chọn cẩn thận các tham số (min_in, max_in, Pmax_in), và (min_out, max_out, Pmax_out). Nhƣ

minh hoạ trên hình 4.2, RIO gateway tích cực loại bỏ các gói tin Out thể hiện ở ba điểm: thứ nhất, nó loại bỏ các gói tin Out nhanh hơn so với các gói In, bằng cách chọn min_out bé hơn min_in; thứ hai, trong pha tránh tắc nghẽn, nó loại bỏ gói tin

Out với xác suất lớn hơn so, bằng cách thiết lập pmax_out lớn hơn pmax_in; thứ ba, nó đi vào pha điều khiển tắc nghẽn đối với các gói tin Out sớm hơn so với các gói tin In, bằng cách cho max_out nhỏ hơn max_in.

Hình 4.2: Các thuật toán RED và RIO

For mỗi gói tin đến if nó là gói tin In

tính kích thƣớc trung bình hàng đợi In: avg_in; tính kích thƣớc trung bình hàng đợi tổng avg_total; if nó là gói tin In

if min_in < avg_in < max_in

tính xác suất Pin;

loại bỏ gói tin này với xác suất Pin; else if max_in < avg_in

loại bỏ gói tin này. if nó là gói tin Out

if min_out <avg_total < max_out

tính xác suất Pout;

loại bỏ gói tin này với xác suất Pout; else if max_out <avg_total

loại bỏ gói tin này.

Thực chất, RIO gateway đầu tiên loại bỏ các gói Out khi nó phát hiện tắc nghẽn chớm xảy ra, và loại bỏ tất cả các gói tin Out khi tắc nghẽn kéo dài. RIO gateway chỉ thực sự phải loại bỏ các gói In nhƣ một phƣơng kế cuối cùng khi nó bị ngập bởi các gói In. Đối với một mạng đƣợc điều khiển tốt thì không bao giờ xảy ra tình huống này. Khi gateway luôn phải thực hiện pha điều khiển tắc nghẽn bằng việc loại bỏ các gói In thì mạng có thể coi nhƣ không chấp nhận đƣợc.

Việc lựa chọn avg_total để quyết định xác suất loại bỏ các gói tin Out là một lựa chọn tinh tế. Không giống nhƣ các gói tin In, các gói mà mạng phải có trách nhiệm phục vụ, các gói tin Out chính là lƣu lƣợng của những ngƣời dùng “cơ hội” (không đăng ký nhƣng vẫn sử dụng mạng!), và không có một dấu hiệu hợp lệ nào cho việc quyết định bao nhiêu gói tin Out là thích hợp. Nếu ta dùng kích thƣớc hàng đợi trung bình của các gói Out cho việc loại bỏ các gói tin Out, thì việc chọn các tham số tƣơng ứng rất khó, và không có sự tƣơng quan rõ ràng nào so với các tham số đối với các gói In. Bằng cách sử dụng avg_total gateway có thể giữ đƣợc kích thƣớc hàng đợi nhỏ và thông lƣợng cao bất kể lƣu lƣợng nào trộn lẫn vào.

4.2.3 Nghiên cứu RIO bằng mô phỏng

Cấu hình mạng mô phỏng

S1

Q

Hình 4.3: Cấu hình mạng mô phỏng RIO

S 2 S10 G1 G2 D 1 D10 TSW Tagger 100Mbps 100Mbps 35Mbps, 5ms 5ms D2

Mạng mô phỏng gồm 10 luồng TCP xuất phát từ các nút nguồn S1, S2, .. , S10 tới các nút đích D1, D2, .., D10 thông qua kênh truyền chung (còn gọi là kênh tắc nghẽn) giữa hai gateway G1, G2, ở đây chúng tôi dùng TCP phiên bản Newreno. Mỗi nút nguồn đƣợc nối với G1 bằng kênh truyền 100Mbps, với RTT đƣợc chia thành 5 cặp khác nhau nhƣ trong bảng 4.1. Mỗi nút đích nối với G2 qua kênh truyền 100Mbps, 5ms. Kênh chung nối hai gateway là 35Mbps, 5ms (có thể coi kênh này là đƣờng truyền chuẩn E3 với băng thông là 34.368 Mbps). Hàng đợi Q giữa G1, G2 có kích thƣớc tối đa 100 gói tin. Chúng tôi lần lƣợt áp dụng RED và RIO vào Q để so sánh hiệu năng của hai cơ chế. Các luồng TCP đƣợc đƣa vào mạng ở các thời điểm ngẫu nhiên từ 0-3s với kích thƣớc gói tin là 1000 bytes.

Để mô phỏng RIO, tại G1 chúng tôi áp dụng cơ chế đánh dấu TSW (Time Sliding Windows) ứng với mỗi nút nguồn và G1. TSW đƣợc trình bày trong [10], theo đó các gói tin đƣợc đánh dấu là “In” hay “Out” tuỳ theo tốc độ đến của chúng so với một tốc độ trung bình RT nào đó, nếu tốc độ của gói tin nào vƣợt quá tốc độ này thì sẽ bị đánh dấu là “Out”, ngƣợc lại là “In”. Ở đây chúng tôi sử dụng 10 bộ đánh dấu nhƣ vậy đƣợc đặt ở gateway G1 tại giao diện với từng nút nguồn (hình 4.3), trong đó có 5 bộ ứng với các nguồn 1, 3, 5, 7 có RT = 1 Mbps, và 5 bộ còn lại có RT = 5 Mbps, đây đƣợc coi nhƣ chúng ta đang phục vụ cho hai lớp ngƣời sử dụng, trong đó một lớp trả tiền nhiều hơn lớp kia 5 lần để yêu cầu đƣợc đáp ứng băng thông nhiều hơn.

Các tham số RED đƣợc sử dụng: minth = 20, maxth = 60, maxp = 0.1, wq = 0.002. Các tham số RIO đƣợc sử dụng: min_in = 40, max_in = 80, pmaxin = 0.02, wqin = 0.002; min_out = 10, max_in = 30, pmaxin = 0.1, wqout = 0.01;

Các kết quả mô phỏng đƣợc chỉ ra trên bảng 4.1 và các đồ thị ở hình 4.4 và 4.5 dƣới đây.

Kết quả mô phỏng

Bảng 4.1: So sánh RED và RIO-TSW với 10 luồng TCP

Luồng RTT (ms) RED gateway (Mbps) RT (Mbps) RIO-with TSW (Mbps) 1 5 3.59 1 2.24 2 5 4.42 5 5.26 3 10 3.33 1 1.69 4 10 3.40 5 4.44 5 15 2.89 1 1.81 6 15 2.40 5 4.32 7 20 2.69 1 1.80 8 20 3.05 5 4.64 9 25 2.33 1 1.46 10 25 2.16 5 4.58 Total 30.26 32.25

Bảng 4.1 trình bày kết quả mô phỏng với hai chiến lƣợc RED và RIO-TSW. Cột 1 là số thứ tự các luồng TCP từ 1 đến 10, cột 2 là RTT ứng với mỗi luồng, cột 3 là thông lƣợng trung bình từng luồng qua gateway G1 khi dùng RED, cột 4 và 5 liên quan đến hàng đợi RIO với thuật toán đánh dấu TSW: cột 4 là tốc độ trung bình cho trƣớc (RT) của mỗi bộ đánh dấu TSW, và cột cuối cùng là thông luợng trung bình của mỗi luồng thu đƣợc.

Dựa trên kết quả trên ta thấy, đối với RED thông lƣợng trung bình của mỗi kết nối giảm dần khi RTT tăng dần, rõ ràng là RED chống lại các luồng có RTT lớn. Mặt khác, trong trƣờng hợp các luồng có cùng RTT thì thông lƣợng của chúng cũng chênh lệch với một miền rộng, không thể dự đoán đƣợc, ví dụ hai kết nối 1 và 2 có

cùng RTT = 5ms, tuy nhiên độ chênh lệch thông lƣợng là 20.7%. Trong khi với RIO-TSW chúng ta thấy thông lƣợng các luồng gần nhƣ tỷ lệ với giá trị RT của chúng. Tuy thông lƣợng các luồng vẫn chịu ảnh hƣởng của RTT nhƣng chúng đã đƣợc giảm nhẹ đi đáng kể. So sánh thông lƣợng tổng cộng ta thấy RIO đạt đƣợc thông lƣợng cao hơn RED (32.25Mbps so với 30.26 Mbps, hay 92.14% so với 86.47%). Chúng ta có thể thấy rõ hơn hiệu năng của RIO so với RED thông qua đồ thị về kích thƣớc cửa sổ của các luồng tƣơng ứng đƣợc thể hiện nhƣ hình 4.5 dƣới đây. Ở đây chúng tôi đƣa ra đồ thị về kích thƣớc cửa sổ của hai trong số năm cặp kết nối tcp, đó là (tcp1, tcp2) và (tcp5, tcp6). Nhìn vào các đồ thị này chúng ta thấy rằng, khi sử dụng RED, kích thƣớc cửa sổ các luồng tcp tăng giảm một cách xen kẽ nhau, và nhìn chung kích thƣớc cửa sổ trung bình của chúng là nhƣ nhau; ngƣợc lại, khi dùng RIO-TSW, kích thƣớc cửa sổ các luồng có sự chênh lệch rõ rệt: tcp2 và tcp6 luôn đƣợc phát số gói tin nhiều hơn hẳn so với các luồng tcp1 và tcp5 tƣơng ứng. Điều này là hoàn toàn phù hợp với kết quả đƣa ra trong bảng 4.1: thông lƣợng các luồng tcp2 và tcp6 cao hơn hẳn so với các luồng tcp1 và tcp5 tƣơng ứng.

Hình 4.5: So sánh kích thước cửa sổ các cặp kết nối (bên trái: RED, bên phải: RIO)

4.3 Kiến trúc các dịch vụ phân loại DiffServ

Những năm gần đây, cùng với sự phát triển của hạ tầng mạng, ngày càng nhiều tổ chức tham gia cung cấp dịch vụ Internet với nhiều loại hình gói cƣớc khác nhau, đáp ứng đƣợc nhiều lớp ngƣời dùng khác nhau tuỳ theo khả năng chi trả của họ. Điều này thúc đẩy sự tăng trƣởng rất nhanh chóng của Internet, dẫn đến lƣu lƣợng vận chuyển trên mạng ngày càng lớn. Để đáp ứng đƣợc thực tế đó, ngoài sự tăng cƣờng về phần cứng, đặc biệt là về băng thông, điều quan trọng hơn là phải có những chính sách phục vụ tốt hơn tại các nút mạng. Ta biết rằng, Internet truyền thống chạy trên nền dịch vụ BestEffort, theo đó tất cả các gói tin đƣợc phục vụ nhƣ nhau dù chủ thuê bao trả ít hay nhiều tiền. Một kiến trúc khác là kiến trúc các dịch vụ tích hợp IntServ (Integrated Services), đƣợc phát triển bởi IETF, nhằm cung cấp khả năng đảm bảo dịch vụ cho các lƣu lƣợng bằng cách dùng giao thức đặt trƣớc tài nguyên mạng RSVP [18]. Theo kiến trúc IntServ, các luồng lƣu lƣợng sẽ đƣợc đảm bảo dịch vụ từ đầu đầu đến cuối (end-to-end) với điều kiện là có đủ tài nguyên dọc theo đƣờng đi từ nguồn đến đích. Tuy nhiên, kiến trúc mạng này có một số hạn chế, đó là: IntServ không có khả năng mở rộng theo luồng lƣu lƣợng; cài đặt router phức tạp, khó quản lý, vì nó phải đảm nhiệm rất nhiều việc; các router phải thƣờng xuyên cập nhật lại trạng thái các lƣu lƣợng qua nó, dẫn đến làm chậm tốc độ truyền. Vì vậy, IETF đã phát triển một kiến trúc mới, đó là kiến trúc dịch vụ phân loại DiffServ (Differentiated Services). Hai khả năng quan trọng nhất của DiffServ là khả năng mở rộng và khả năng linh hoạt. Khả năng mở rộng để phục vụ cho một số lƣợng lớn ngƣời dùng, cho phép hàng trăm, thậm chí hàng nghìn kết nối cùng chia sẻ đƣờng truyền chung trên Internet tại một thời điểm. Khả năng linh hoạt thể hiện trong việc cung cấp các dịch vụ khác nhau cho các lƣu lƣợng khác nhau, phân phối mềm dẻo băng thông cho mỗi kết nối khi có sự thay đổi trạng thái lƣu lƣợng qua router. Để có những khả năng đó, DiffServ đƣợc tổ chức thành các thành phần khác nhau, mỗi thành phần có chức năng, nhiệm vụ riêng. Dƣới đây chúng ta sẽ xem xét kỹ hơn về các thành phần chức năng đƣợc cài đặt bên trong kiến trúc DiffServ.

4.3.1 Cấu trúc DiffServ

Phần này ta sẽ mô tả các thành phần quan trọng trong kiến trúc DiffServ, để cho phần trình bày thêm trực quan, chúng tôi có đƣa ra một thí dụ minh hoạ nhƣ hình 4.6 dƣới đây. DiffServ gồm 2 thành phần chính: mạng biên và mạng lõi.

Thành phần mạng biên: Có nhiệm vụ phân loại gói tin và điều khiển lƣu lƣợng. Vị trí vào này có thể là một nguồn sinh lƣu lƣợng có cài đặt chính sách phân loại gói tin hoặc một router có hỗ trợ DiffServ đầu tiên (router biên), đƣợc gọi là mạng biên (edge network). Tại biên các gói tin đƣợc đánh dấu, cụ thể là trƣờng Diffierentiated Service (DS) trong header các gói tin đƣợc thiết lập một giá trị nào đó, gọi là Code Point (CP). Trên hình 4.6, các router R1, R2 là các router biên. Các gói tin gửi từ H1 đến H3 có thể đƣợc đánh dấu tại R1, trong khi các gói tin gửi từ H2 đến H4 đƣợc đánh dấu tại R2. Dấu mà một gói tin nhận đƣợc xác định lớp lƣu lƣợng mà nó thuộc về. Các lớp lƣu lƣợng khác nhau sẽ nhận đƣợc dịch vụ khác nhau trong phần mạng lõi (core network). Sau khi đã đƣợc đánh dấu, một packet có thể đƣợc chuyển trực tiếp vào trong

mạng, hoặc chờ một thời gian trƣớc khi đƣợc chuyển tiếp hoặc có thể bị loại bỏ.

Thành phần mạng lõi: chức năng chuyển tiếp (forwarding): Khi một gói tin đã đƣợc đánh dấu với giá trị CP ở một router có hỗ trợ DiffServ, gói tin đƣợc chuyển tiếp tới chặng tiếp theo thông qua chính sách từng chặng (PHB Per- Hop Behavior). PHB ảnh hƣởng đến việc chia sẻ băng thông và bộ đệm giữa các lớp lƣu lƣợng cạnh tranh tại router. Một nguyên lý cốt yếu của cấu trúc DiffServ là PHB của một router sẽ chỉ dựa trên duy nhất dấu của gói tin, tức là lớp lƣu lƣợng mà một gói tin thuộc về nó mà không phân biệt là các gói tin bắt nguồn từ đâu. Ví dụ, nếu các gói tin đƣợc gửi từ H1 đến H3, hoặc từ H2 đến H4 nhận đƣợc cùng một dấu, thì tại các router thuộc phần mạng lõi chúng sẽ

Một phần của tài liệu Thuật toán quản lý hàng đợi A - RIO (Trang 76)

Tải bản đầy đủ (PDF)

(119 trang)