1. Trang chủ
  2. » Công Nghệ Thông Tin

Tiểu luận mạng cơ chế quản lý hàng đợi fred

17 424 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 508 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ó.

Trang 1

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)

Trang 2

M C L C Ụ Ụ

MỤC LỤC 2

I.Giới thiệu 3

II.Cơ chế quản lý hàng đợi RED 4

1.Cơ chế quản lý hàng đợi RED 4

2.Những nhược điểm của cơ chế quản lý hàng đợi RED 4

III.Cơ chế quản lý hàng đợi FRED 5

1.Ý tưởng: 5

2.Thuật toán: 5

IV.Mô phỏng 8

1.Mô phỏng 1: Hệ thống có 4 nút gửi theo giao thức TCP hoặc UDP 8

2.Mô phỏng 2: Hệ thống gồm 8 nút gửi theo giao thức TCP, 8 nút gửi theo giao thức UDP 9

V.Kết luận 14

PHỤ LỤC 1 – HƯỚNG DẪN CÀI ĐẶT FRED TRONG NS-2.29 16

Trang 3

FLOW RANDOM EARLY DROP (FRED) Tóm tắt

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ó

I Gi i thi u ớ ệ

Việc truyền dữ liệu trong mạng phụ thuộc nhiều yếu tố, trong đó có chiến lược cấp phát tài nguyên của mạng (đường truyền, bộ nhớ đệm ) Nếu khả năng tài nguyên có hạn và chiến lược cấp phát không thích nghi với trạng thái luôn thay đổi của mạng thì dễ dẫn đến tình trạng, dữ liệu dồn về một trạm nào đó của mạng, gây nên tắc nghẽn do khả năng tài nguyên của trạm không đáp ứng nổi Trong khi đó, tài nguyên của một số trạm nào đó có hiệu suất

sử dụng thấp do rất ít dữ liệu được chuyển qua nó Để tránh các tình trạng trên cần thiết phải

có một cơ chế kiểm soát luồng dữ liệu áp dụng cho toàn mạng, tức là điều khiển lưu thông trên mạng Nếu có tắc nghẽn xảy ra phải tiến hành điều khiển tắc nghẽn (congestion control)

để giải quyết tắc nghẽn đưa mạng về trạng thái bình thường

Để giải quyết tránh tắc nghẽn trong quá trình truyền thông trên mạng, chúng ta cần phải nghiên cứu các biện pháp xử lý tại các nút mạng và tại các trạm đầu cuối Trong đó có cơ chế quản lý hàng đợi

Việc giải quyết bài toán xếp hàng tại bộ đệm của các nút mạng là rất quan trọng trong quá trình điều khiển lưu thông từ đầu cuối đến đầu cuối, chủ yếu các gói tin bị dồn tại các nút mạng trung tâm, nên cần phải có các giải pháp sắp xếp tại hàng đợi để nhanh chóng giải phóng các gói tin một cách cân bằng và hợp lý đối với các dịch vụ khác nhau, đáp ứng tốt yêu cầu của người sử dụng Trong NS2, ở nút mạng có các tổ chức hàng đợi như là: FIFO,

PQ, classe-based, WFQ, RED Và với cơ chế mở, cho phép người sử dụng bổ sung thêm các cơ chế quản lý hàng đợi mới

Ở trong phần tiểu luận này, chúng tôi sẽ tập trung phân tích những nhược điểm của cơ chế quản lý hàng đợi RED được cung cấp bởi NS2 và giới thiệu một cơ chế quản lý hàng đợi được cải tiến từ RED là FRED để khắc phục một số nhược điểm trên

Trang 4

II C ch qu n lý hàng đ i RED ơ ế ả ợ

1 C ch qu n lý hàng đ i RED ơ ế ả ợ

Bộ định tuyến cài đặt RED sử dụng hai giá trị là chặn trên và chặn dưới để đánh dấu các vị

định vị trí của mỗi gói tin gửi đến

Xác suất rơi gói tin được xác định theo các cách khác nhau tùy theo kích thước hàng

đợi avg:

<

<

=

avg

avg avg

avg

th th

p th

th

max ,

max min

, min max

max ) min (

min 0

, 0

th th

tin một cách ngẫu nhiên tùy theo một hàm xác suất p

hủy bỏ là 0

hủy bỏ là 1

2 Nh ng nh ữ ượ c đi m c a c ch qu n lý hàng đ i RED ể ủ ơ ế ả ợ

RED thiên vị với các 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, và 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 các gói tin theo xác xuất p hoặc với xác xuất bằng 1 không phụ thuộc vào các luồng mạnh hay yếu

p 1

maxp

Trang 5

III C ch qu n lý hàng đ i FRED ơ ế ả ợ

1 Ý t ưở ng:

Ý tưởng của FRED là áp dụng RED trên từng luồng, có luồng có nhiều gói tin lưu trên hàng đợi hơn sẽ có xác xuất rơi cao hơn, các luồng yếu hơn sẽ ít rơi hơn Mục đích là để làm giảm thiểu những tác động không công bằng tại hàng đợi RED

luồng i trên hàng đợi; sử dụng biến avgcq để tính số lượng gói tin trung bình của mỗi luồng

cho phép trên hàng đợi

maxq = 2

- FRED sẽ đánh rơi gói tin ở một trong các trường hợp sau:

hàng đợi lớn hơn 2 lần số gói tin trung bình của luồng đó trên hàng đợi (avg>=maxth) and (qleni>2*avgcq)

o Số gói tin của luồng i trên hàng đợi lớn hơn số gói tin trung bình của chính nó

and (strikei>1)

xem xét việc đánh rơi ngẫu nhiên trên luồng có số lượng gói tin ở hàng đợi lớn hơn (qleni >= MAX(minq, avgcq))

2 Thu t toán: ậ

Các hằng số:

wq = 0.002;

maxth = 2*minth;

Trang 6

minq = 2 đối với các hàng đợi có kích cở nhỏ;

4 đối với các hàng đợi có kích cở lớn;

Các biến toàn cục:

q: kích cở hiện tại của hàng đợi;

time: thời gian thực hiện tại;

avg: giá trị kích thước trung bình trong hàng đợi;

count: số gói tin từ khi có gói trước đó bị rơi;

avgcq: giá trị kích thước trung bình của mỗi luồng trên hàng đợi;

Các biến trên mỗi hàng đợi:

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 <= avg < maxth) {

count = count + 1;

//only random drop from robust flows:

if (qleni >= MAX(minq, avgcq)) {

calculate probability pa:

pb = maxp(avg-minth)/(maxth-minth);

pa = pb/(1 - count * pb);

Trang 7

//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 == 0 && packet departed

q_time = time;

Trang 8

IV Mô ph ng ỏ

1.

Mô ph ng 1 ỏ : H th ng có 4 nút g i theo giao th c TCP ho c UDP ệ ố ử ứ ặ

Thiết lập hệ thống như hình 1, với các thông số như sau:

- Các đường truyền từ nút 1, 2,3,4 đến 5 có băng thông là 100mbps, độ trể là 1ms

- Đường truyền từ 5 đến 6 có băng thông là 2mbps, độ trể là 2ms

-Hình 1 – Hệ thống mạng gồm 4 đường truyền với giao thức TCP

thực hiện việc mô phỏng với hàng đợi RED và FRED, sử dụng giao thức gửi TCP, ta ghi nhận được các thông số như sau:

Kích cở hàng đợi

Số gói tin được gửi

Số gói tin mất

Số gói tin rơi

Tỷ lệ % gói tin rơi

Bảng 1 – Bảng so sánh số gói tin rơi và số gói tin mất của FRED và RED với 4 nút gửi,

giao thức truyền TCP với các kích cở hàng đợi khác nhau

Trang 9

Với kết quả mô phỏng trong trường hợp trên, ta nhận thấy với giao thức TCP trong trường hợp chỉ có ít nút gửi, và thay đổi kích thước hàng đợi lên 16/32/64 thì cơ chế quản lý hàng đợi FRED không có cải thiện đáng kể về tỉ lệ rơi gói tin so với cơ chế quản lý hàng đợi RED

rớt nhiều hơn

2.

Mô ph ng 2 ỏ : H th ng g m 8 nút g i theo giao th c TCP, 8 nút g i theo ệ ố ồ ử ứ ử giao th c UDP ứ

Ta thiết lập hệ thống gồm 16 nút gửi, 8 nút gửi theo giao thức TCP, 8 nút gửi theo giao thức UDP Cấu hình được thiết lập như sau:

- Mỗi nút gửi đến nút 17 đề có băng thông là 10mbps, độ trể là 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 các nút 19.20.21 22 đều được thiết lập với băng thông 10mbps, độ trể 2ms

Hình 2 – Hệ thống gồm 16 nút gửi, kích cở bộ đệm nút 17 là 16 gói tin

Thực hiện mô phỏng trên NS2 và sử dụng Trace Graph để phân tích kết quả, ta thấy tỷ lệ gói tin rơi của cơ chế quản lý hàng đợi RED cao hơn hẳn so với cơ chế quản lý hàng đợi FRED (Bảng 2)

Kích cở

hàng đợi

Số gói tin được gửi

Số gói tin mất

Số gói tin rơi

Tỷ lệ % gói tin rơi

Trang 10

RED 16 52045 733 634 1.2182%

Bảng 2 – Bảng so sánh số gói tin rơi và số gói tin mất của FRED và RED với giao thức

truyền TCP, UDP với kích cở hàng đợi là 16 gói tin

Đối với thông lượng chung thì RED có số gói tin truyền lớn hơn (Biểu đồ 1)

Trang 11

Chú thích: : RED

Thời gian mô phỏng [Giây]

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 của cơ chế FRED thấp và đồng đều hơn so với thông lượng gói tin rơi của cơ chế RED (Biểu đồ 2)

Trang 13

Chú thích: : RED

Thời gian mô phỏng [Giây]

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 của các nút gửi, ta nhận thấy bằng cơ chế FRED thì số gói tin rơi ở các nút khá đồng đều nhau và thấp hơn hẳn so với số gói tin rơi ở cơ 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 của các nút gửi

V K t lu n ế ậ

Qua việc thực hiện mô phỏng trên NS2, sử dụng Trace Graph để phân tích kết quả, chúng tôi

đã tìm hiểu được cơ chế của hàng đợi FRED và rút ra một số nhận xét trong một số trường hợp nhất định như sau:

+ FRED thực sự tốt hơn RED đối với các hệ thống có nhiều nút gửi

+ Với mô hình này, sử dụng FRED sẽ giảm được số gói tin rơi và tỷ lệ các gói tin rơi ở các luồng là tương đối đồng đều nhau

Trang 15

TÀI LIỆU THAM KHẢO

[1] Dong Lin and Robert Morris - “Dynamics of Random Early Detection”

[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

Trang 16

PH L C 1 – H Ụ Ụ ƯỚ NG D N CÀI Đ T FRED TRONG NS-2.29 Ẫ Ặ

Download File fred.h và fred.cc từ địa chỉ

http://www.cs.cmu.edu/~istoica/csfq/disciplines-ns2.1b7a.tar.gz và tiến hành theo các

bước sau:

Bước 1: Copy 2 file fred.h và fred.cc vào thư mục \ns-allinone-2.29\ns-2.29\queue

Bước 2: Bổ sung các 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_ 5

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_ == 0

# FREDL (FRED version for many flows): many_flows_ == 1

Queue/FRED set many-flows_ 0

Bước 3: Bổ sung đoạn code sau vào file \tcl\lib\ns-lib.tcl

Tìm đến đoạn code sau, trong phần simplex-link:

if {[string first "RED" $qtype] != -1} {

$q link [$link_($sid:$did) set link_]

}

bổ sung đoạn code sau đây 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 trong file tcl\lib\ns-queue.tcl

Trang 17

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 ngay 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 và Makefile, tìm đến đoạn

queue/red-pd.o queue/pi.o queue/vq.o queue/rem.o \ Xuống dòng và bổ sung dòng code sau và ngay sau đoạn đó:

queue/fred.o \

Bước 6: Biên dịch lại bằng các dòng lệnh sau:

./configure

make clean

make depend

make

Ngày đăng: 03/12/2017, 21:54

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w