Kỹ thuật truyền thống để quản lý kích thƣớc hàng đợi là dựa vào cơ chế FIFO (nhƣ đã trình bày tại mục 2.1 trên). Theo cơ chế này, tất cả các gói tin đến đƣợc xếp vào hàng đợi; khi hàng đợi đầy thì các gói tin đến sau đều bị loại bỏ; để chọn các gói tin truyền đi thì gói tin nào đến trƣớc đƣợc phục vụ trƣớc. Trong bộ mô phỏng NS, kỹ thuật này đƣợc cài đặt với tên gọi “DropTail”. Do tính đơn giản của nó, kỹ thuật này đƣợc sử dụng nhiều năm trên Internet, tuy nhiên nó có 2 nhƣợc điểm cơ bản sau đây:
3.1.1 Hiện tƣợng Lock-Out và Global Synchronization
Theo cơ chế “DropTail” thì trong nhiều trƣờng hợp, có thể có một hoặc một vài dòng lƣu lƣợng độc quyền chiếm hàng đợi, làm cho các gói tin của các kết nối khác không thể đƣợc nhận vào, ta nói rằng chúng bị “Lock-out”. Khi xảy ra hiện tƣợng “lock-out”, nếu thực thể gửi lƣu lƣợng sử dụng giao thức TCP thì chúng sẽ bị timeout khi đi qua hàng đợi đó, khi đó theo thuật toán tránh tắc nghẽn, chúng sẽ đồng thời giảm kích thƣớc cửa sổ phát và thực hiện rút lui theo hàm mũ, làm cho lƣu lƣợng trên mạng giảm mạnh, gây lãng phí dải thông của mạng. Hiện tƣợng đồng loạt giảm lƣu lƣợng đó đƣợc gọi là hiện tƣợng đồng bộ toàn cầu - “global synchronization”.
3.1.2 Hiện tƣợng Full Queues
Cơ chế “DropTail” làm cho hàng đợi có thể thƣờng xuyên ở trạng thái đầy hoặc gần đầy trong khoảng thời gian dài, vì việc loại bỏ gói tin đến chỉ thực hiện khi hàng đợi đã đầy. Ngoài ra, vì lƣu lƣợng trên Internet thƣờng xuyên có sự bùng nổ, các gói tin thƣờng đến theo từng cụm (bursts) – hàng loạt gói tin đến cùng lúc, nên bộ đệm tại các nút mạng phải có kích thƣớc đủ lớn để có thể hấp thu đƣợc sự bùng nổ này. Tuy nhiên, việc này làm tăng kích thƣớc hàng đợi dẫn đến việc độ trễ và thăng giáng độ trễ của các gói tin đi qua mạng cao. Nhƣ vậy điều quan trọng là phải có cơ chế quản trị hàng đợi tốt, hơn là chỉ đơn giản tăng kích thƣớc của nó.
Ngoài “DropTail”, hai phƣơng pháp khác có thể đƣợc áp dụng khi hàng đợi đầy là loại bỏ ngẫu nhiên Random Drop hoặc loại bỏ ở đầu khi đầy Drop Front. Theo phƣơng pháp Random Drop, router loại bỏ ngẫu nhiên một gói tin trong hàng đợi khi hàng đợi đầy để dành chỗ cho gói tin đến. Còn với phƣơng pháp Drop Font thì ngƣợc lại với DropTail, router sẽ loạt bỏ gói tin ở đầu hàng đợi khi đầy và một gói tin đến. Cả hai cơ chế này có thể giải quyết đƣợc vấn đề “lock-out” nhƣng không giải quyết đƣợc vấn đề thứ hai là “full-queues” nhƣ đã nói ở trên.
3.2 Chiến lƣợc AQM
Các chiến lƣợc truyền thống chỉ thực hiện loại bỏ gói tin khi hàng đợi đầy, điều này không hợp lý vì khi đó tình trạng tắc nghẽn đã ở mức khó kiểm soát. Giải pháp cho vấn đề này là cho phép gateway loại bỏ các gói tin trƣớc khi hàng đợi đầy, khi đó các thực thể đầu cuối có thể phản ứng lại tắc nghẽn khi hiện tƣợng này mới chớm có dấu hiệu xuất hiện. Đây là tƣ tƣởng chính của chiến lƣợc quản trị hàng đợi động – Active Queues Manegement AQM. Điều cần phải chú ý là, AQM phải đƣợc gắn với các giao thức vận chuyển có áp dụng các cơ chế điều khiển lƣu lƣợng và tránh tắc nghẽn kiểu end-to-end (nhƣ TCP), và nó không có tác dụng đối với các giao thức vận chuyển không áp dụng cơ chế điều khiển lƣu lƣợng (nhƣ UDP).
Nhìn chung, các chiến lƣợc AQM đem lại các lợi ích sau:
3.2.1 Giảm số gói tin bị loại bỏ tại router
Sự bùng nổ các gói tin là không thể tránh đƣợc trong mạng chuyển mạch gói, đặc biệt là trong các ứng dụng tƣơng tác thời gian thực. Với chiến lƣợc quản lý hàng đợi truyền thống, các gói tin bị loại tăng nhanh khi hàng đợi đầy. Điều này gây ra những bất lợi sau: 1/ sự giảm lƣu lƣợng toàn cầu dẫn tới hiệu suất của việc sử dụng đƣờng truyền thấp và thông lƣợng giảm; 2/ TCP sẽ gặp khó khăn hơn trong việc khôi phục hàng loạt gói tin bị mất hơn là khôi phục từng gói tin bị mất một cách đơn lẻ; 3/ lãng phí dải thông của mạng. Bằng việc giữ kích thƣớc trung bình của hàng đợi nhỏ, AQM sẽ cung cấp khoảng không gian vùng đệm lớn hơn để hấp thu các bùng nổ lƣu lƣợng đƣa vào mạng xảy ra một cách ngẫu nhiên mà không phải loại bỏ hàng loạt gói tin đến khi hàng đợi bị đầy.
3.2.2 Giảm độ trễ
Bằng việc giữ kích thƣớc hàng đợi trung bình nhỏ, AQM có thể giảm độ trễ trung bình của các gói tin một cách đáng kể (theo công thức Little). Điều này đặc
biệt quan trọng với các ứng dụng tƣơng tác nhƣ Web, Telnet, hoặc những ứng dụng audio-video tƣơng tác thời gian thực,.. những ứng dụng mà hiệu quả đƣợc đánh giá là tốt khi độ trễ thấp.
3.2.3 Tránh hiện tƣợng Lock-Out
Nhƣ trên đã trình bày, Lock-out là hiện tƣợng gói tin đến không vào đƣợc hàng đợi vì không còn chỗ trống. AQM đảm bảo rằng hầu nhƣ luôn luôn có vị trí trống trong bộ đệm khi một gói tin đến, do đó tránh đƣợc hiện tƣợng Lock-Out. Cũng với lý do đó, AQM có thể làm cho router không chống lại các dòng có thông lƣợng thấp nhƣng có độ đột biến cao.
Trong chƣơng này chúng ta sẽ nghiên cứu và đánh giá một số thuật toán tiêu biểu thuộc họ AQM, đó là RED, A-RED và RIO; chƣơng tiếp theo sẽ trình bày về A-RIO, là sự phát triển của các thuật toán đề cập trong chƣơng này và đây là nội dung chính của Luận văn này.
3.3 Thuật toán RED
3.3.1 Giới thiệu
RED (Random Early Detection of congestion; Random Early Drop) là một trong những thuật toán AQM đầu tiên đƣợc đề xuất vào năm 1993 bởi Sally Floyd và Van Jacobson, hai nhà khoa học của Phòng thí nghiệm Lawrence Berkeley, thuộc Đại học Califonia, Mỹ [32]. Do những ƣu điểm nổi bật so với các thuật toán quản lý hàng đợi trƣớc đó, RED đã đƣợc cài đặt và triển khai trên mạng Internet.
Điểm cơ bản nhất trong công trình của họ là cho rằng nơi hiệu quả nhất để phát hiện tắc nghẽn và phản ứng lại hiện tƣợng này chính là tại các gateway. Các thực thể nguồn cũng có thể làm điều này thông qua thời gian phục vụ ƣớc lƣợng tại nút cổ chai (gateway), thông qua độ trễ end-to-end, qua sự thay đổi thông lƣợng, hoặc từ các gói tin bị loại bỏ. Tuy nhiên, khung nhìn của một kết nối cụ thể bị giới
hạn bởi thời gian phát tin (mỗi kết nối có một thời gian phát gói tin nhất định) và số lƣợng dữ liệu phát, ngoài ra nó cũng không biết những gateway nào đang bị tắc nghẽn, không phân biệt đƣợc độ trễ lan truyền và độ trễ hàng đợi (độ trễ mà gói tin phải chờ trong hàng đợi). Chỉ có gateway mới có cái nhìn đúng đắn về trạng thái của hàng đợi, sự chia sẻ đƣờng truyền của các kết nối đi qua nó tại mọi thời điểm, cũng nhƣ yêu cầu chất lƣợng dịch vụ của các dòng lƣu lƣợng. RED gateway theo dõi độ dài trung bình của hàng đợi, dựa vào đó để phát hiện sớm dấu hiệu tắc nghẽn sắp xảy ra (chiều dài trung bình của hàng đợi vƣợt quá một ngƣỡng định trƣớc) và phản ứng một cách thích hợp theo một trong hai cách: 1/ Loại bỏ các gói tin đến theo một xác suất nhất định, để gián tiếp báo cho nguồn về sự tắc nghẽn, cần giảm tốc độ phát và giữ cho hàng đợi khỏi đầy, để có thể hấp thu đƣợc sự đột biến lƣu lƣợng đến. 2/ Đánh dấu “có tắc nghẽn” theo một xác suất nhất định vào trƣờng ECN (Explicit Congestion Notification) trong header của các gói tin để báo cho bên nguồn biết.
3.3.2 Mục tiêu và nguyên tắc thíết kế
Phần này sẽ trình bày hai ý sau: 1/ tóm tắt một số mục tiêu mà RED gateway cần đạt đƣợc; 2/ một số nguyên tắc thiết kế cho các gateways có cài đặt cơ chế tránh tắc nghẽn, đó là những nguyên tắc cho việc thiết kế RED.
Mục tiêu chính của RED là tránh tắc nghẽn bằng cách điều khiển kích thƣớc hàng đợi trung bình nằm trong một vùng đủ nhỏ và ổn định. Ngoài ra các mục tiêu bổ sung bao gồm: tránh hiện tƣợng đồng bộ toàn cục, không chống lại các dòng lƣu lƣợng có đặc tính đột biến (tức là dòng có thông lƣợng trung bình thấp nhƣng độ thăng giáng cao) và duy trì cận trên của kích thƣớc hàng đợi trung bình ngay cả khi không có đƣợc sự hợp tác từ các giao thức tầng giao vận.
Để đạt đƣợc các mục tiêu trên, các gateways tránh tắc nghẽn phải làm đƣợc các công việc sau:
Việc đầu tiên là phát hiện sớm tắc nghẽn, giữ cho kích thƣớc hàng đợi trung bình đủ nhỏ, làm cho mạng hoạt động ở vùng có độ trễ thấp và thông lƣợng cao, trong khi vẫn cho phép kích thƣớc hàng đợi dao động trong một miền nhất định để hấp thụ các thăng giáng ngắn hạn. Nhƣ đã phân tích ở phần 3.3.1, gateway là nơi thích hợp nhất để phát hiện tắc nghẽn và cũng là nơi thích hợp nhất để quyết định chọn kết nối cụ thể nào để thông báo tắc nghẽn.
Việc thứ hai là thông báo tắc nghẽn tới nguồn phát. Việc này đƣợc thực hiện bằng cách đánh dấu và thông báo cho nguồn phát giảm lƣu lƣợng xuống. Thông thƣờng gateway sẽ loại bỏ gói tin. Tuy nhiên, nếu tắc nghẽn đƣợc phát hiện trƣớc khi hàng đợi đầy thì nên đánh dấu gói tin thay vì loại bỏ nó để báo hiệu tắc nghẽn. RED gateway có hai tuỳ chọn: loại bỏ hoặc đánh dấu; trong đó việc đánh dấu đƣợc thực hiện bằng cách đánh dấu vào trƣờng ECN của gói tin với một xác suất nhất định, để báo hiệu cho nguồn giảm lƣu lƣợng đƣa vào mạng.
Một mục tiêu quan trọng mà các gateway cần đạt đƣợc là tránh hiện tƣợng đồng bộ toàn cầu và không chống lại các dòng lƣu lƣợng có đặc tính đột biến. Nhƣ đã trình bày trong mục 2.1.1, 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ổ phát, dẫn tới thông lƣợng giảm sút ở cùng một thời điểm. Mặt khác, các chiến lƣợc Drop Tail hay Random Drop rất nhạy cảm với các luồng đột biến; tức là hàng đợi tại gateway thƣờng sẽ bị tràn khi có các gói tin từ các luồng này đến. Để tránh hai hiện tƣợng này, các gateway có thể dùng các thuật toán đặc 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ể tỉ lệ với phần băng thông đƣợc chia sẻ của kết nối đó tại gateway.
Một mục tiêu nữa là điều khiển đƣợ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 thực thể nguồn phát. Điều này có thể đƣợc thực hiện bằng cách loại bỏ gói tin khi kích thƣớc trung bình vƣợt quá ngƣỡng trên
(thay vì đánh dấu nó). Phƣơng pháp này là cần thiết trong trƣờng hợp 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 các thực thể nguồn không có khả năng giảm lƣu lƣợng để phản ứng với việc đánh dấu hoặc loại bỏ gói tin (nhƣ các luồng UDP chẳng hạn).
3.3.3 Giải thuật
Phần này sẽ mô tả giải thuật cho các RED gateways. RED gateways tính kích thƣớc hàng đợi trung bình, bằng cách dùng một bộ lọc thông thấp. Kích thƣớc hàng đợi trung bình này đƣợc so sánh với hai ngƣỡng: ngƣỡng dƣới minthvà ngƣỡng trên
maxth. Khi kích thƣớc hàng đợi trung bình bé hơn ngƣỡng dƣới thì không gói tin đến nào bị đánh dấu; khi kích thƣớc hàng đợi trung bình lớn hơn ngƣỡng trên thì tất cả các gói tin đến đều bị đánh dấu. Nếu tất cả các gói tin bị đánh dấu đều bị loại bỏ, và nếu tất cả các nút nguồn đồng thực hiện thì kích thƣớc hàng đợi trung bình không vƣợt quá ngƣỡng trên. Khi kích thƣớc hàng đợi trung bình nằm giữa ngƣỡng dƣới và ngƣỡng trên thì mỗi gói tin đến đƣợc đánh dấu theo một xác suất pa, trong đó pa là một hàm theo kích thƣớc hàng đợi trung bình avg; xác suất đánh dấu một gói tin của một kết nối cụ thể tỷ lệ 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:
Nhƣ vậy, giải thuật tại RED gateway gồm hai giải thuật tách biệt: Giải thuật tính kích thƣớc hàng đợi trung bình quyết định mức độ bùng nổ cho phép trong
For each packet arrival
Caculate the average queue size avg If minth avg < maxth
Caculate propability pa With propability pa:
mark the ariving packet else maxth avg
mark the ariving packet
hàng đợi tại gateway và giải thuật tính xác suất đánh dấu quyết định mức độ thƣờng xuyên của việc đánh dấu gói tin của gateway. Giải thuật tính xác suất đánh dấu phải đảm bảo sao cho các gói tin đƣợc đánh dấu tại những khoảng không gian đều nhau, để tránh hiện tƣợng đồng bộ toàn cầu, trong khi vẫn giữ kích thƣớc hàng đợi trung bình ở một giới hạn nhất định.
Giải thuật chi tiết tại RED gateway đƣợc mô tả nhƣ hình 3.2 dƣới đây.
Khởi tạo:
avg 0
count -1
for mỗi gói tin đến
Tính kích thƣớc hàng đợi trung bình avg: if hàng đợi không rỗng
avg (1- wq) avg + wq*q
else
m f(time – q_time) avg (1-wq)m avg
ifminth avg maxth
count ++
Tính xác suất pa:
pb maxp(agv – minth)/ (maxth - minth) pa pb / (1 – count.pb)
với xác suất pa:
đánh dấu gói tin đến count 0
else ifavg maxth đánh dấu gói tin đến count 0
elsecount -1
Khi hàng đợi trở nên rỗng
q_time time
Các biến thay đổi:
avg: kích thƣớc hàng đợi trung bình
q_time: thời gian hàng đợi bắt đầu rỗng
count: số gói tin từ gói cuối cùng bị đánh dấu
Các tham số cố định:
wq: trọng số hàng đợi
minth: ngƣỡng dƣới của hàng đợi
maxth: ngƣỡng trên của hàng đợi
maxp: xác suất loại bỏ tối đa
Các tham số khác:
pa: xác suất đánh dấu gói tin hiện tạ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 t
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 bộ lọc thông thấp:
avg (1 – wq) * avg + wq * q,
trong đó: q là kích thƣớc hàng đợi hiện thời; wq là trọng số hàng đợi, nhận giá trị trong miền 0..1, wq còn đƣợc gọi là hệ số làm trơn, wq càng nhỏ thì mức độ làm trơn càng cao, wq càng lớn thì avg càng bám sát giá trị tức thời của q. Nhƣ vậy wq quyết định độ lớn và độ kéo dài cho phép của sự bùng nổ lƣu lƣợng.
Khi avg chạy từ minth đến maxththì 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 số gói tin từ gói cuối cùng đƣợc đánh dấu count tăng lên: pa pb / (1 – count.pb), điều này đảm bảo cho gateway không phải đợi quá lâu trƣớc khi đánh dấu một gói tin. RED gateway đánh dấu tất cả các gói tin đến nếu nhƣ avg vƣợt quá maxth.
RED có một tuỳ chọn: để đảm bảo xác suất một gói bị loại bỏ tỉ lệ với thông lƣợng tính bằng bit/s chứ không phải packet/s, pb đƣợc tính nhƣ sau:
Trong trƣờng hợp này, một gói tin lớn dễ bị loại bỏ hơn là một gói tin nhỏ.
3.3.4 Thiết lập các tham số
Theo thuật toán chi tiết chúng ta thấy có bốn tham số cố định cần đƣợc đặt trƣớc. Vấn đề thiết lập các tham số cố định cho giải thuật RED là rất quan trọng, quyết định tới chất lƣợng của thuật toán. Phần này chúng tôi sẽ trình bày song song