Tải bản đầy đủ (.docx) (10 trang)

bài tập lớn môn cơ sở mạng thông tin tính tốc độ dữ liệu truyền gửi qua mạng

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 (384.19 KB, 10 trang )

BÁO

CÁO

MÔN


SỞ

MẠNG

THÔNG

TIN
tính

tốc

độ

các

luồng

dữ

liệu

gửi

qua



mạng

để

các

luồng

chia

sẽ

băng
thông

kênh

truyền

dựa

theo

nguyên



công


bằng

cực

đại

cực

tiểu

(max-
min

fairness)



dựng

kịch

bản



phỏng

bằng

công


cụ

NS2.
M



c


đ

ích
Trong

môn



sở

mạng

thông

tin,

chúng


ta

đã

làm

quen

với

phương

pháp
đánh

giá

hoạt

động

của

một

hệ

thống

thông


tin

bằng

phương

pháp

phân

tích
toán

học,

đặc

biệt



các



hình

liên


quan

đến

hệ

thống

hàng

đợi

đơn,

mạng
hàng

đợi,cơ

sở

cho

các



chế

điều


khiển

luồng



định

tuyến

trong

mạng.
Trong

phần

bài

tập

lớn

này,

chúng

ta


sẽ

được

làm

quen

với

một

phương

pháp
khác

để

đánh

giá

hiệu

năng,

đó




phương

pháp



phỏng.
Bài

tập

lớn

này



một

số

mục

đích

sau:
-

Kiểm


nghiệm

các

kết

quả

phân

tích,

đánh

giá

hệ

thống

khi

dùng

phương
pháp

phân


tích

toán

học



phương

pháp



phỏng
-
Làm

quen

với

công

cụ



phỏng


NS-2



công

cụ



phỏng

mạng

thông
dụng

nhất

hiện

nay
-
Làm

quen

với

hệ


điều

hành

Linux



lập

trình

trong

môi

trường

GNU.
-

Phát

triển

kỹ

năng


làm

việc

theo

nhóm.
-
Phát

triển

kỹ

năng

làm

việc

độc

lập.
Yêu c ầu



của




BTL:
BTL

của

nhóm

yêu

cầu

tính

tốc

độ

các

luồng dữ

liệu

gửi

qua

mạng


để

các
luồng chia sẽ băng thông kênh truyền dựa theo nguyên lý công bằng cực đại cực
tiểu (max-min fairness) và dựng kịch bản mô phỏng bằng công cụ NS2.
Các



thành



viên



trong



nhóm







nhiệm




vụ



của



từng



thành



viên
1.Lương Xuân Tiến
Tìm hiểu nguyên lý công bằng cực đại cực tiểu Max-min fairness và tính toán
các tham số
λ
S1,
λ
S2,
λ
S3 dựa theo nguyên lý trên .
2.Lê Duy Tân

Tìm hiểu công cụ mô phỏng NS-2 và dựng kịch bản mô phỏng dựa theo các
thông số
λ
S1,
λ
S2,
λ
S3 đã tính.
3.Võ Văn Thế
Tìm hiểu công cụ mô phỏng NS-2 và dựng kịch bản mô phỏng.
4.Trần Hải Anh
Vẽ đồ thị băng thông và vẽ đồ thị tốc độ mất gói.
Th

ực



hiện



bài



t

ập




lớn:
I.Tìm



hi

ểu



về



nguy

ên







công




b

ằng



cực



đại



cực



tiểu



(max

-min



fairness)

Trong trao đổi thông tin, khi phía phát truyền dữ liệu đến phía thu thì dữ liệu
đầu tiên được lưu trong bộ đêm phía thu. Dữ liệu trong bộ đệm này sau khi được
xử lý và chuyển lên các lớp phía trên thì sẽ được xóa đi, để dành bộ đệm cho các
dữ liệu kế tiếp.
Trên thực tế trao đổi thông tin trong mạng, có thể xảy ra tình trạng phía phát
truyền dữ liệu với tốc độ cao hơn khả năng xử lý của phía thu, dẫn đến bộ đệm của
phía

thu

sẽ

đầy

dần



bị

tràn.

Trong trường

hợp

này,

phía


thu

không

thể

nhận
thêm các gói dữ liệu từ phía phát dẫn đến việc phía phát phải thực hiện truyền lại
dữ liệu, gây lãng phí băng thông trên đường truyền.
Nhằm giảm thiểu việc phải truyền lại thông tin và mất gói do tràn hàng đợi,
cần có cơ chế thực hiện kiểm soát

và điều

khiển lưu lượng thông tin đi đến

một
thiết

bị/mạng.

Chức

năng

này

được

thực


hiện

bởi

kỹ

thuật

điều

khiển

luồng


kiểm soát tắc nghẽn.
Một

trong

những

vấn

đề

khó

khăn


nhất

của

thực

hiện

điều

khiển

luồng


kiểm soát tắc nghẽn là đảm báo tính công bằng cho các kết nối hoặc người dùng
khi xảy ra tắc nghẽn. Khái niệm tính công bằng thể hiện ở chỗ các kết nối, người
dùng được sử dụng tài nguyên mạng với cơ hội như nhau
Việc sử dụng tài nguyên mạng hiệu quả nhất có thể trong khi vẫn có thể đảm
bảo

được

tính

công bằng cho

các


kết

nối

được

thực

hiện

bởi



chế

điều

khiển
luồng cực đại – cực tiểu (max–min flow control). Cơ chế này được xây dựng trên
mô hình công bằng cực đại – cực tiểu (max-min fairness).
Nguyên tắc hoạt động cơ bản của cơ chế điều khiển luồng cực đại – cực tiểu
như sau:
Nguyên

tắc
:
Sau khi người dùng với yêu cầu ít nhất về tài nguyên đó được đáp ứng công
bằng,


các tài nguyên còn lại được tiếp tục phân chia (một cách công bằng) cho
những người dùng còn lại. Trong nhóm người dùng này, tài nguyên lại được phân
chia sao cho người dùng có yêu cầu ít nhất được đáp ứng, và quá trình cứ tiếp tục
đến hết. Nói một cách khác, việc cấp phát tài nguyên mạng cho một người dùng i
không được làm ảnh hưởng đến tài nguyên đó cấp các ngườii dùng khác với yêu
cầu ít hơn i.
Thuật

toán:
1.Khởi tạo tất cả các kết nối với tốc độ = 0
Tăng tốc độ của tất cả các kết nối với một lượng nhỏ bằng nhau
δ
, lặp lại quá
trình này cho đến khi tồn tại các liên kết có tổng băng thông đạt đến giá trị băng
thông cực đại (Fa = Ca). Lúc này:
Tất cả các kết nối chia sẻ liên kết này đều sử dụng băng thông bằng nhau
Liên kết này là điểm tắc nghẽn đối với tất cả các kết nối sử dụng liên kết này
Ngừng việc tăng băng thông cho các

kết nối này vỡ

các kết nối này đạt đến
trạng thái cân bằng cực đại – cực tiểu
2.Lặp

lại

quá

trình


tăng

tốc

độ

cho

các

kết

nối

khác

chưa

đạt

đến

điểm

tắc
nghẽn cho đến khi lại tìm thấy các điểm tắc nghẽn ứng với các kết nối khác (lặp lại
bước này)
3.Thuật toán kết thúc khi tất cả các kết nối đều đó tìm được điểm tắc nghẽn
n

a
:=

số

lượng

đường

p



P
k

với

δ
p
(a)

=

1
r
k
:
=
min

(C
a



F
a
k1
)

/

n
a
a∈A
k
k

r
p
1
+

r
k
(

p




P
k
)
r
p

=



k −1 k

r
p

(

p



P

)
(a).r
a∈A
k+1
P
k1

:
=

{

p

|

δ
p
(a)

=

0,

for

all

a



A
k+1
}
k := k +1
Nếu P

k
là tập hợp rỗng thì dừng lại, nếu không thì quay lại bước 1.
II.



Th

ực



hiện

:
1.

Yêu

cầu:
F
a
k
:
=

δ
p p
k
A


:
=

{
a

|

C
a ak

>

0
}
− F
k

k
 k

Với các tham số:
Đường

nối

L1




dung

lượng


C1=
1MB/s

trễ

lan

truyền

100ms
Đường

nối

L2



dung

lượng
l à

C2 =0,6MB/s,


trễ

lan

truyền

50ms
Nút

1,

2,

3



các

hàng

đợi

đơn

hoạt

động


theo

nguyên

tắc

FIFO

với

độ

lớn
hàng

đợi

K=5

gói.
Các

nguồn

Si

phát

gói


với

độ

dài

cố

định

125byte,tuân

theo

phân

bố

Poisson.
Băng

thông

đối

đa

tổng

cộng




các

luồng

được

chiếm

trên

một

kênh

truyền
vật





bằng

95%

dung


lượng

kênh

truyền

=>

C1sd=95%*1MB/s=0.95MB/s
C2sd=95%*0.6MB/s=0.57MB/s
λ
S1,
λ
S2,
λ
S3

=?
Tính toán:
-Các

đường

liên

kết

(1,2),(2,3)
-Các


kết

nối

(S1,D1),(S2,D2),(S3,D3)
-
P
k
là tập hợp các kết nối không đi qua liên kết bão hòa nào, tính tại lúc bắt đầu
của bước k
-nka là số lượng kết nối trong P
k
sử dụng liên kết a
Liên kết (1,2) nka =2
Liên kết (2,3) nka =2
- r
k
là phần băng thông tăng lên cho mỗi kết nối trong P
k
tại bước thứ k
Bước

1:
k = 1, F01 = 0, F02 =0, r0p = 0, P
1
=[(S1,D1),(S2,D2),(S3,D3)] và A
1
= A
r
k

=min((0.57-0)/2,(0.95-0)/2)=
0.285

MB/s
r
11

=

0.285MB

/

s
r
2

=

0.285MB

/

s
r
3

=

0.285MB


/

s
Bước

2:

k=2,
F
11
=0.285+0.285=0.57

MB/s
F
21
=0.285+0.285=0.57

MB/s
P
2

=[(S1,D1),(S2,D2)]
Liên

kết

(2,3)

đã


bão

hòa

do

vậy

các

đặt

giá

trị
λ
S1
=0.285

MB/s
λ
S3
=0.285

MB/s
Để

liên


kết

(1,2)

bão

hòa

tăng

λ
S2
lên

giá

trị
λ
S2=0.95-0.285=0.665
MB/s
Như

vậy

ta

đã

tính


được

các

tham

số

λ
S1,

λ
S2,

λ
S3

theo

nguyên



max-min
fairness
2.



phỏng

Tạo

đối

tượng



phỏng:


1
1
set ns [new Simulator]
Tạo

namfile

lưu

dữ

liệu

hệ

thống

khi




phỏng
set nf [open out.nam w]
$ns namtrace-all $nf
Tạo

tracefile

lưu

dữ

liệu

để

vẽ

đồ

thị

băng

thông
set f0 [open S1_D1_Band.tr w]
set f1 [open S2_D2_Band.tr w]
set f2 [open S3_D3_Band.tr w]



đồ

thị

tốc

độ

mất

gói
set l0 [open S1_D1_Lost.tr w]
set l1 [open S2_D2_Lost.tr w]
set l2 [open S3_D3_Lost.tr w]
Tạo

9

nút
set s1 [$ns node]
set d1 [$ns node]
set s2 [$ns node]
set d2 [$ns node]
set s3 [$ns node]
set d3 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
Tạo


liên

kết

cho

các

nút

với

băng

thông

(MBits/s)



trễ

truyền

dẫn

(ms):
$ns duplex-link $s1 $n1 1Mb 10ms DropTail
$ns duplex-link $n1 $n2 1Mb 100ms DropTail

$ns duplex-link $n2 $n3 0.6Mb 50ms DropTail
$ns duplex-link $n3 $d1 1Mb 10ms DropTail
$ns duplex-link $n1 $s2 1Mb 10ms DropTail
$ns duplex-link $n2 $d2 1Mb 10ms DropTail
$ns duplex-link $n2 $s3 1Mb 10ms DropTail
$ns duplex-link $n3 $d3 1Mb 10ms DropTail
Thiết

lập

vị

trí

cho

các

nút

như

trên
$ns duplex-link-op $s1 $n1 orient right
$ns duplex-link-op $n1 $n2 orient right
$ns duplex-link-op $n2 $n3 orient right
$ns duplex-link-op $n3 $d1 orient right
$ns duplex-link-op $n1 $s2 orient down
$ns duplex-link-op $n2 $d2 orient down
$ns duplex-link-op $n2 $s3 orient up

$ns duplex-link-op $n3 $d3 orient up
Thiết

lập

vị

trí

hàng

đợi



kích

thước

hàng

đợi
$ns duplex-link-op $n2 $n1 queuePos 1.5
$ns duplex-link-op $n3 $n2 queuePos 1.5
$ns queue-limit $n1 $n2 5
$ns queue-limit $n2 $n3 5
Xây

dựng


Agent

cho

các

nút

s1,

s2,

s3,

d1,

d2,

d3
#Create a UDP agent and attach it to node s1
set udp0 [new Agent/UDP]
$udp0 set class_ 1
$ns attach-agent $s1 $udp0
#Create a UDP agent and attach it to node s2
set udp1 [new Agent/UDP]
$udp1 set class_ 2
$ns attach-agent $s2 $udp1
#Create a UDP agent and attach it to node s3
set udp2 [new Agent/UDP]
$udp2 set class_ 3

$ns attach-agent $s3 $udp2
#Create a Sink agent (a traffic sink) and attach it to node d1, d2, d3
set sink0 [new Agent/LossMonitor]
$ns attach-agent $d1 $sink0
set sink1 [new Agent/LossMonitor]
$ns attach-agent $d2 $sink1
set sink2 [new Agent/LossMonitor]
$ns attach-agent $d3 $sink2
Liên

kết

các

nguồn



đích

tương

ứng
#Connect the traffic sources with the traffic sink
$ns connect $udp0 $sink0
$ns connect $udp1 $sink1
$ns connect $udp2 $sink2
Các

gói


truyền

đi

từ

các

nút

s1,

s2,

s3

tuân

theo

phân

bố

Poisson

được

thiết


lập
bởi

các

hàm

sendpacket:
proc sendpacket0 {} {
global ns udp0 ArrivalTime1 pksize
set time [$ns now]
$ns at [expr $time + [$ArrivalTime1 value]] "sendpacket0"
$udp0 send $pksize
}
proc sendpacket1 {} {
global ns udp1 ArrivalTime2 pksize
set time [$ns now]
$ns at [expr $time + [$ArrivalTime2 value]] "sendpacket1"
$udp1 send $pksize
}
proc sendpacket2 {} {
global ns udp2 ArrivalTime1 pksize
set time [$ns now]
$ns at [expr $time + [$ArrivalTime1 value]] "sendpacket2"
$udp2 send $pksize
}
Với

tốc


độ

phát

gói

của

các

nút

được

xác

định

bởi

các

biến

sau,

đơn

vị


gói/s:
set lambda1 300.0
set lambda2 500.0
thời

gian

để

phát

đi

một

gói

sẽ

là:
Set ArrivalTime1 [new RandomVariable/Exponential]
$ArrivalTime1 set avg_ [expr 1/$lambda1]
set ArrivalTime2 [new RandomVariable/Exponential]
$ArrivalTime2 set avg_ [expr 1/$lambda2]
kích

thước

mỗi


gói

(bytes)

xác

định

bởi
set pksize 125.0
Các

hàm

sau

lọc

dữ

liệu



lưu

vào

tracefile


để

vẽ

đồ

thị

băng

thông



đồ

thị

tốc
độ

mất

gói:
proc recordbw {} {
global sink0 sink1 sink2 f0 f1 f2
#Get an instance of the simulator
set ns [Simulator instance]
#Set the time after which the procedure should be called again

set time 0.5
#How many bytes have been received by the traffic sinks?
set bw0 [$sink0 set bytes_]
set bw1 [$sink1 set bytes_]
set bw2 [$sink2 set bytes_]
#Get the current time
set now [$ns now]
#Calculate the bandwidth (in MBit/s) and write it to the files
puts $f0 "$now [expr $bw0/$time*8/1000000]"
puts $f1 "$now [expr $bw1/$time*8/1000000]"
puts $f2 "$now [expr $bw2/$time*8/1000000]"
#Reset the bytes_ values on the traffic sinks
$sink0 set bytes_ 0
$sink1 set bytes_ 0
$sink2 set bytes_ 0
#Re-schedule the procedure
$ns at [expr $now+$time] "recordbw"
}
proc recordlost {} {
global sink0 sink1 sink2 l0 l1 l2
#Get an instance of the simulator
set ns [Simulator instance]
#Set the time after which the procedure should be called again
set time 0.5
#How many packet have been lost?
set lost0 [$sink0 set nlost_]
set lost1 [$sink1 set nlost_]
set lost2 [$sink2 set nlost_]
#Get the current time
set now [$ns now]

#Calculate number of packet lost
puts $l0 "$now [expr $lost0]"
puts $l1 "$now [expr $lost1]"
puts $l2 "$now [expr $lost2]"
#Reset the nlost_ values on the traffic sinks
$sink0 set nlost_ 0
$sink1 set nlost_ 0
$sink2 set nlost_ 0
#Re-schedule the procedure
$ns at [expr $now+$time] "recordlost"
}
Hàm

finish

dùng

để

kết

thúc

chương

trình



vẽ


đồ

thị:
proc finish {} {
global ns nf f0 f1 f2
$ns flush-trace
#Close the output files
close $f0
close $f1
close $f2
close $nf
#Execute nam on the trace file
exec nam out.nam &
#Call xgraph to display the results
exec xgraph S1_D1_Band.tr S2_D2_Band.tr S3_D3_Band.tr -geometry 800x400
-t "BandWidth" -x "s" -y "Mbit/s" &
exec xgraph S1_D1_Lost.tr B2_D2_Lost.tr S3_D3_Lost.tr -geometry 800x400 -t
"LostPacket" -x "s" -y "Packet" &
exit 0
}
Thực

hiện

chạy



phỏng


trong

100s
#Schedule events for the CBR agents
$ns at 0.0 "recordbw"
$ns at 0.0 "recordlost"
$ns at 0.5 "sendpacket0"
$ns at 0.5 "sendpacket1"
$ns at 0.5 "sendpacket2"
#Call the finish procedure
$ns at 100 "finish"
#Run the simulation
$ns run
3.

Kết

quả



phỏng:
Kết

quả



phỏng


trên

nam
Đồ

thị

băng

thông

của

các

luồng
Tốc

độ

mất

gói

×