Trong bài tiểu luận này chúng tôi sẽ trình bày Flow Random Early Drop (FRED) một biến thể của RED. Mục đích của nó là làm giảm những tác động không công bằng tại hàng đợi RED. Thay vì việc loại bỏ các gói tin một cách ngẫu nhiên trong hàng đợi, FRED tạo ra các phản hồi có chọn lọc để lọc ra những kết nối mà có một số lượng lớn các gói tin đang ở trong hàng đợi. Trong phạm vi của bài tiểu luận, chúng tôi sẽ trình bày lại ý tưởng và giải thuật của hàng đợi RED, những hạn chế của nó và những cải tiến trong hàng đợi FRED. Chúng tôi cũng sẽ sử dụng NS2 để mô phỏng cơ chế của nó.
CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang TIỂU LUẬN MÔN HỌC MẠNG VÀ KỸ THUẬT TRUYỀN DỮ LIỆU Đề tài: TÌM HIỂU CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED (FLOW RANDOM EARLY DROP) CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang MỤC LỤC MỤC LỤC I.Giới thiệu II.Cơ chế quản lý hàng đợi RED 1.Cơ chế quản lý hàng đợi RED 2.Những nhược điểm chế quản lý hàng đợi RED .4 III.Cơ chế quản lý hàng đợi FRED 1.Ý tưởng: 2.Thuật toán: IV.Mô 1.Mơ 1: Hệ thống có nút gửi theo giao thức TCP UDP 2.Mô 2: Hệ thống gồm nút gửi theo giao thức TCP, nút gửi theo giao thức UDP .9 V.Kết luận 14 PHỤ LỤC – HƯỚNG DẪN CÀI ĐẶT FRED TRONG NS-2.29 16 CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang FLOW RANDOM EARLY DROP (FRED) Tóm tắt Trong tiểu luận chúng tơi trình bày Flow Random Early Drop (FRED) - biến thể RED Mục đích làm giảm tác động khơng cơng hàng đợi RED Thay việc loại bỏ gói tin cách ngẫu nhiên hàng đợi, FRED tạo phản hồi có chọn lọc để lọc kết nối mà có số lượng lớn gói tin hàng đợi Trong phạm vi tiểu luận, trình bày lại ý tưởng giải thuật hàng đợi RED, hạn chế cải tiến hàng đợi FRED Chúng sử dụng NS2 để mơ chế I Giới thiệu Việc truyền liệu mạng phụ thuộc nhiều yếu tố, có chiến lược cấp phát tài nguyên mạng (đường truyền, nhớ đệm ) Nếu khả tài nguyên có hạn chiến lược cấp phát khơng thích nghi với trạng thái ln thay đổi mạng dễ dẫn đến tình trạng, liệu dồn trạm mạng, gây nên tắc nghẽn khả tài nguyên trạm khơng đáp ứng Trong đó, tài ngun số trạm có hiệu suất sử dụng thấp liệu chuyển qua Để tránh tình trạng cần thiết phải có chế kiểm sốt luồng liệu áp dụng cho tồn mạng, tức điều khiển lưu thơng mạng Nếu có tắc nghẽn xảy phải tiến hành điều khiển tắc nghẽn (congestion control) để giải tắc nghẽn đưa mạng trạng thái bình thường Để giải tránh tắc nghẽn q trình truyền thơng mạng, cần phải nghiên cứu biện pháp xử lý nút mạng trạm đầu cuối Trong có chế quản lý hàng đợi Việc giải toán xếp hàng đệm nút mạng quan trọng q trình điều khiển lưu thơng từ đầu cuối đến đầu cuối, chủ yếu gói tin bị dồn nút mạng trung tâm, nên cần phải có giải pháp xếp hàng đợi để nhanh chóng giải phóng gói tin cách cân hợp lý dịch vụ khác nhau, đáp ứng tốt yêu cầu người sử dụng Trong NS2, nút mạng có tổ chức hàng đợi là: FIFO, PQ, classe-based, WFQ, RED Và với chế mở, cho phép người sử dụng bổ sung thêm chế quản lý hàng đợi Ở phần tiểu luận này, tập trung phân tích nhược điểm chế quản lý hàng đợi RED cung cấp NS2 giới thiệu chế quản lý hàng đợi cải tiến từ RED FRED để khắc phục số nhược điểm CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED II Trang Cơ chế quản lý hàng đợi RED Cơ chế quản lý hàng đợi RED Bộ định tuyến cài đặt RED sử dụng hai giá trị chặn chặn để đánh dấu vị trí hàng đợi: minth maxth Hoạt động RED mô tả ba quy tắc để xác định vị trí gói tin gửi đến p maxp minth maxth Xác suất rơi gói tin xác định theo cách khác tùy theo kích thước hàng đợi avg: ≤ avg < th 0 , (avg − ) max th p p= , th ≤ avg ≤ max th max th − th 1 , max th < avg - Nếu số lượng gói tin hàng đợi nằm giá trị th maxth hủy bỏ gói tin cách ngẫu nhiên tùy theo hàm xác suất p - Nếu hàng đợi chứa th gói tin thêm gói tin vào hàng đợi xác suất hủy bỏ - Nếu hàng đợi chứa nhiều max th gói tin hủy bỏ gói tin xác suất hủy bỏ Những nhược điểm chế quản lý hàng đợi RED RED thiên vị với kết nối khơng tương thích (các kết nối yêu cầu băng thông rộng, tốc độ truyền khơng phụ thuộc vào việc có bị tắt nghẽn hay khơng) Việc làm rơi gói tin theo xác xuất p với xác xuất không phụ thuộc vào luồng mạnh hay yếu Nếu giá trị trung bình lớn maxth, tồn gói tin bị rơi CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang III Cơ chế quản lý hàng đợi FRED Ý tưởng: Ý tưởng FRED áp dụng RED luồng, có luồng có nhiều gói tin lưu hàng đợi có xác xuất rơi cao hơn, luồng yếu rơi Mục đích để làm giảm thiểu tác động không công hàng đợi RED FRED tương tự RED có cải tiến theo luồng FRED xác định ngưỡng q maxq đặt ngưỡng nhỏ lớn cho luồng; sử dụng qlen i để đếm số gói tin luồng i hàng đợi; sử dụng biến avgcq để tính số lượng gói tin trung bình luồng hàng đợi; sử dụng biến strike i để đếm số lần mà luồng i có số lượng vượt ngưỡng cho phép hàng đợi - Nếu số lượng gói tin hàng đợi lớn max th FRED xác định ngưỡng maxq = - FRED đánh rơi gói tin trường hợp sau: o Số gói tin luồng hàng đợi lớn maxq (qleni>=maxq) o Số gói tin trung bình hàng đợi lớn max th số gói tin luồng i hàng đợi lớn lần số gói tin trung bình luồng hàng đợi (avg>=maxth) and (qleni>2*avgcq) o Số gói tin luồng i hàng đợi lớn số gói tin trung bình hàng đợi luồng bị đánh rơi trước (qlen i>=avgcq) and (strikei>1) - Nếu số lượng gói tin hàng đợi nằm ngưỡng th maxth FRED xem xét việc đánh rơi ngẫu nhiên luồng có số lượng gói tin hàng đợi lớn (qleni >= MAX(minq, avgcq)) - Nếu số lượng gói tin hàng đợi nhỏ minth khơng có gói tin bị rơi Thuật tốn: Các số: wq = 0.002; minth = MIN(kích cở hàng đợi / 4, RTT); maxth = 2*minth; maxp = 0.02; CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED minq = hàng đợi có kích cở nhỏ; hàng đợi có kích cở lớn; Các biến tồn cục: q: kích cở hàng đợi; time: thời gian thực tại; avg: giá trị kích thước trung bình hàng đợi; count: số gói tin từ có gói trước bị rơi; avgcq: giá trị kích thước trung bình luồng hàng đợi; maxq: giá trị lớn cho phép luồng hàng đợi; Các biến hàng đợi: qleni: số lượng gói tin luồng i hàng đợi; strikei: số lần hàng đợi i vượt giới hạng maxq; for each arriving packet P: if flow i = conn(P) has no state table qleni = 0; strikei = 0; if queue is empty calculate average queue length avg maxq = minth; // define the next three lines as block A if (avg >= maxth) { maxq = 2; } //identify and manage non-adaptive flows: if (qleni >= maxq || // define the next line as line B (avg >= maxth && qleni > 2*avgcq) || (qleni >= avgcq && strikei > 1)) { strikei++; drop packet P; return; } //operate in random drop mode: if (minth = MAX(minq, avgcq)) { calculate probability pa: pb = maxp(avg-minth)/(maxth-minth); pa = pb/(1 - count * pb); Trang CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED //with probability pa: drop packet P; count = 0; return; } } else if (avg < minth) { //no drop mode: count = -1; } else { // define this clause as block C //drop-tail mode: count = 0; //drop packet P; return; } if(qleni == 0) Nactive++; calculate average queue length accept packet P; for each departing packet P: //calculate average queue length if (qleni == 0) { Nactive ; delete state table for flow i; } //calculate average queue length: if (q || packet departed) avg = (1-wq)*avg + wq*q; else { m = f(time - q_time); avg = (1-wq)m * avg; // original RED missed the following // action q_time = time; } if (Nactive) avgcq = avg / Nactive; else avgcq = avg; avgcq = MAX(avgcq, 1); if q == && packet departed q_time = time; Trang CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED IV Trang Mô Mơ 1: Hệ thống có nút gửi theo giao thức TCP UDP Thiết lập hệ thống hình 1, với thơng số sau: - Các đường truyền từ nút 1, 2,3,4 đến có băng thơng 100mbps, độ trể 1ms - Đường truyền từ đến có băng thơng 2mbps, độ trể 2ms Hình – Hệ thống mạng gồm đường truyền với giao thức TCP Cùng sử dụng đệm qsize= 16 gói tin, th= qsize/4, maxth= minth *2, w=0.002, thực việc mô với hàng đợi RED FRED, sử dụng giao thức gửi TCP, ta ghi nhận thông số sau: Kích cở Số gói tin Số gói tin Số gói tin Tỷ lệ % gói tin hàng đợi gửi rơi rơi RED 16 11698 28 0% FRED 16 11666 32 0.034% RED 32 11698 28 0% FRED 32 11698 28 0% RED 64 11698 28 0% FRED 64 20195 215 182 0% Bảng – Bảng so sánh số gói tin rơi số gói tin FRED RED với nút gửi, giao thức truyền TCP với kích cở hàng đợi khác CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang Với kết mô trường hợp trên, ta nhận thấy với giao thức TCP trường hợp có nút gửi, thay đổi kích thước hàng đợi lên 16/32/64 chế quản lý hàng đợi FRED khơng có cải thiện đáng kể tỉ lệ rơi gói tin so với chế quản lý hàng đợi RED • Với trường hợp thay giao thức TCP giao thức UDP thấy rõ gói tin rớt nhiều Mô 2: Hệ thống gồm nút gửi theo giao thức TCP, nút gửi theo giao thức UDP Ta thiết lập hệ thống gồm 16 nút gửi, nút gửi theo giao thức TCP, nút gửi theo giao thức UDP Cấu hình thiết lập sau: - Mỗi nút gửi đến nút 17 đề có băng thơng 10mbps, độ trể 2ms - Từ nút 17 đến nút 18, ta thiết lập băng thông 8mbps, độ trể 10ms - Từ nút 18 đến nút 19.20.21 22 thiết lập với băng thơng 10mbps, độ trể 2ms Hình – Hệ thống gồm 16 nút gửi, kích cở đệm nút 17 16 gói tin Thực mơ NS2 sử dụng Trace Graph để phân tích kết quả, ta thấy tỷ lệ gói tin rơi chế quản lý hàng đợi RED cao hẳn so với chế quản lý hàng đợi FRED (Bảng 2) Kích cở hàng đợi Số gói tin gửi Số gói tin Số gói tin rơi Tỷ lệ % gói tin rơi CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang 10 RED 16 52045 733 634 1.2182% FRED 16 50724 459 376 0.7413% Bảng – Bảng so sánh số gói tin rơi số gói tin FRED RED với giao thức truyền TCP, UDP với kích cở hàng đợi 16 gói tin Đối với thơng lượng chung RED có số gói tin truyền lớn (Biểu đồ 1) Trang 11 Thông lượng chung CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Chú thích: : RED :FRED Thời gian mô [Giây] CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang 12 Biểu đồ 1: Biểu đồ so sánh thông lượng chung Đối với thơng lượng gói tin bị rơi chế FRED thấp đồng so với thông lượng gói tin rơi chế RED (Biểu đồ 2) Trang 13 Thơng lượng gói tin rơi CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Chú thích: : RED :FRED Thời gian mô [Giây] CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang 14 Biểu đồ 2: Biểu đồ so sánh thơng lượng gói tin rơi Đối với số gói tin bị rơi nút gửi, ta nhận thấy chế FRED số gói tin rơi nút đồng thấp hẳn so với số gói tin rơi chế RED (Biểu đồ 3) Cơ chế hàng đợi RED Cơ chế hàng đợi FRED Biểu đồ 3: Biểu đồ so sánh số gói tin rơi nút gửi V Kết luận Qua việc thực mô NS2, sử dụng Trace Graph để phân tích kết quả, chúng tơi tìm hiểu chế hàng đợi FRED rút số nhận xét số trường hợp định sau: + FRED thực tốt RED hệ thống có nhiều nút gửi + Với mơ hình này, sử dụng FRED giảm số gói tin rơi tỷ lệ gói tin rơi luồng tương đối đồng CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang 15 TÀI LIỆU THAM KHẢO [1] Dong Lin and Robert Morris - “Dynamics of Random Early Detection” [2] http://www.cs.cmu.edu/~istoica/csfq/ - “Core-Stateless Fair Queueing” [3] Floyd, S., Jacobson V - “Random Early Detection for Con-gestion Avoidance” IEEE/ACM Transactions on Networking August 1993 [4] Slide “Adaptive Adaptive RED” [5] Slide “Random Early Detection”, Presented by Bob Kinicki CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang 16 PHỤ LỤC – HƯỚNG DẪN CÀI ĐẶT FRED TRONG NS-2.29 Download File fred.h fred.cc từ địa http://www.cs.cmu.edu/~istoica/csfq/disciplines-ns2.1b7a.tar.gz tiến hành theo bước sau: Bước 1: Copy file fred.h fred.cc vào thư mục \ns-allinone-2.29\ns-2.29\queue Bước 2: Bổ sung giá trị mặt định vào file \tcl\lib\ns-default.tcl # Ion Stoica (06/11/98) FRED/FREDL parameters # -Queue/FRED set bytes_ false Queue/FRED set queue-in-bytes_ false Queue/FRED set thresh_ Queue/FRED set maxthresh_ 15 Queue/FRED set mean_pktsize_ 500 Queue/FRED set q_weight_ 0.002 Queue/FRED set wait_ true Queue/FRED set linterm_ 10 Queue/FRED set setbit_ false Queue/FRED set drop-tail_ false Queue/FRED set doubleq_ false Queue/FRED set dqthresh_ 50 # FRED: many-flows_ == # FREDL (FRED version for many flows): many_flows_ == Queue/FRED set many-flows_ Bước 3: Bổ sung đoạn code sau vào file \tcl\lib\ns-lib.tcl Tìm đến đoạn code sau, phần simplex-link: if {[string first "RED" $qtype] != -1} { $q link [$link_($sid:$did) set link_] } bổ sung đoạn code sau sau đọa code trên: # FRED-begin if {[string first "FRED" $qtype] != -1} { $q link [$link_($sid:$did) set link_] } if {[string first "FREDL" $qtype] != -1} { $q link [$link_($sid:$did) set link_] } # FRED-end Bước 4: Bổ sung đọan code sau file tcl\lib\ns-queue.tcl CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Tìm đến đoạn code sau (trong phần new-flow) if { $type == "RED" } { set bw [$link_ set bandwidth_] $q set ptc_ [expr $bw / (8 * [$q set mean_pktsize_])] } bổ sung đoạn code sau sau phần trên: # FRED-begin if { $type == "FRED" } { set bw [$link_ set bandwidth_] $q set ptc_ [expr $bw / (8 * [$q set mean_pktsize_])] } if { $type == "FREDL" } { set bw [$link_ set bandwidth_] $q set ptc_ [expr $bw / (8 * [$q set mean_pktsize_])] } # FRED-end Bước 5: Mở file Makefile.in Makefile, tìm đến đoạn queue/red-pd.o queue/pi.o queue/vq.o queue/rem.o \ Xuống dòng bổ sung dòng code sau sau đoạn đó: queue/fred.o \ Bước 6: Biên dịch lại dòng lệnh sau: /configure make clean make depend make Trang 17 ... hàng đợi RED cung cấp NS2 giới thiệu chế quản lý hàng đợi cải tiến từ RED FRED để khắc phục số nhược điểm CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED II Trang Cơ chế quản lý hàng đợi RED Cơ chế quản lý hàng đợi. .. tin rơi chế quản lý hàng đợi RED cao hẳn so với chế quản lý hàng đợi FRED (Bảng 2) Kích cở hàng đợi Số gói tin gửi Số gói tin Số gói tin rơi Tỷ lệ % gói tin rơi CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang...CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED Trang MỤC LỤC MỤC LỤC I.Giới thiệu II .Cơ chế quản lý hàng đợi RED 1 .Cơ chế quản lý hàng đợi RED