Tải bản đầy đủ (.doc) (17 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (424.69 KB, 17 trang )

CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

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)


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

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


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

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.


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

II.

Trang 4

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ị
trí trong hàng đợi: minth và maxth. Hoạt động của RED được mô tả bởi ba quy tắc để xác

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

maxp
minth

maxth

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:
0 ≤ avg < min th
0 ,
 (avg − min ) max

th
p
p=
, min th ≤ avg ≤ max th
 max th − min th
1 ,
max th < avg

-

Nếu số lượng gói tin trong hàng đợi nằm giữa các giá trị min th và maxth thì hủy bỏ gói
tin một cách ngẫu nhiên tùy theo một hàm xác suất p.

-


Nếu hàng đợi chứa ít hơn min th gói tin thì thêm gói tin mới vào hàng đợi và xác suất
hủy bỏ là 0.

-

Nếu hàng đợi chứa nhiều hơn max th gói tin thì hủy bỏ những gói tin mới và xác suất
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.
Nếu giá trị trung bình lớn hơn maxth, toàn bộ các gói tin sẽ bị rơi


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

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.
FRED tương tự như RED nhưng có cải tiến theo luồng. FRED xác định 2 ngưỡng min q và
maxq đặt 2 ngưỡng nhỏ nhất và lớn nhất cho các luồng; sử dụng qlen i để đếm số gói tin của
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
trên hàng đợi; sử dụng biến strike i để đếm số lần mà luồng i có số lượng vượt quá ngưỡng
cho phép trên hàng đợi.

-

Nếu số lượng gói tin trong hàng đợi lớn hơn max th thì FRED sẽ xác định ngưỡng
maxq = 2

-

FRED sẽ đánh rơi gói tin ở một trong các trường hợp sau:
o Số gói tin của mỗi luồng trên hàng đợi lớn hơn hoặc bằng maxq (qleni>=maxq)
o Số gói tin trung bình của hàng đợi lớn hơn max th và số gói tin của luồng i trên
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ó
trên hàng đợi và luồng này cũng đã từng bị đánh rơi trước đó (qlen i>=avgcq)
and (strikei>1)

-

Nếu số lượng gói tin trong hàng đợi nằm giữa ngưỡng min th và maxth thì FRED sẽ
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))

-

Nếu số lượng gói tin trong hàng đợi nhỏ hơn minth thì sẽ không có gói tin nào bị rơi

2. Thuật toán:
Các hằng 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 = 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;
maxq: giá trị lớn nhất cho phép trên mỗi luồng ở hàng đợi;
Các biến trên mỗi hàng đợi:
qleni: số lượng gói tin của luồng i trên hàng đợi;
strikei: số lần hàng đợi i vượt quá 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 <= 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 6


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 == 0 && packet departed
q_time = time;

Trang 7


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

IV.

Trang 8

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
Cùng sử dụng bộ đệm qsize= 16 gói tin, min th= qsize/4, maxth= minth *2, w=0.002, lần lượt
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ở
Số gói tin
Số gói tin
Số gói tin Tỷ lệ % gói tin
hàng đợi
được gửi
mất
rơi
rơi
RED
16
11698
28
0
0%
FRED
16
11666
32
4
0.034%
RED
32
11698
28
0
0%
FRED
32

11698
28
0
0%
RED
64
11698
28
0
0%
FRED
64
20195
215
182
0%
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


CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

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.
• Với trường hợp thay giao thức TCP bằng giao thức UDP thì sẽ thấy rõ các gói tin sẽ
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



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

Thông lượng chung

CƠ CHẾ QUẢN LÝ HÀNG ĐỢI FRED

Chú thích:


____:

RED

____:FRED
Thời gian mô phỏng [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 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

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ô phỏng [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 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.


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] - “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 1 – HƯỚNG DẪN CÀI ĐẶT FRED TRONG NS-2.29
Download File fred.h và fred.cc từ địa chỉ
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


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

Trang 17



×