Mục lục
ụ
c đ
ích
Trong
môn
Cơ
sở
mạng
t
hông
tin,
chúng ta
đã
làm
quen
vớ
i
phân
tí
ch toán
học,
đặc
biệ
t
là
các
mô
hình
liên
quan
đến
hệ
thống
hàng
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ộ
i
t
ập
l
ớn
này
có
mộ
t
số
mục
đích
sau:
- Kiểm
nghiệm
các
kế
t
phương
pháp
mô
phỏng
-
Làm
quen
vớ
i
công
cụ
mô
phỏng
NS-2
–
công
cụ
l
ập
t
rình
trong
mô
i
trường
GNU.
- Phát
triển
kỹ
năng
làm
việc
theo
nhóm.
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 lý 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.
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 (F
a
= C
a
). 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
k
a
n
:= số lượng đường
k
p P∈
với
( ) 1
−
+ ∈
=
∉
%
: ( ).
k k
a p p
a A
F a r
δ
∈
=
∑
{ }
k+1
A : | 0
k
a a
a C F
= − >
{ }
1 k+1
: | ( ) 0, or all a A
k
t
rễ
lan
truyền
100ms
Đường
nối
L2
có dung
l
ượng
là C2=
0,6MB/s,
trễ
lan
t
ruyền
50ms
Nú
t
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
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)
-
0
2
=0, r
0
p
= 0, P
1
=[(S1,D1),(S2,D2),(S3,D3)] và A
1
= A
k
r
%
=min(
(0.57-0)/2,(0.95-0)/2
)=
0.285 MB/s
sMBr /285.0
1
1
=
sMBr /285.0
1
2
=
sMBr /285.0
1
3
=
Bước 2: k=2,
S2
,
S3
theo nguyên lý
max-min fairness
2. Mô phỏng
Tạo đối tượng mô phỏng:
set ns [new Simulator]
Tạo namfile lưu dữ liệu hệ thống khi mô 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]
và đồ 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 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 và đí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]
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]"
$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ả mô phỏng:
Kết quả mô phỏng trên nam
Đồ thị băng thông của các luồng
Tốc độ mất gói