Bài tập lớn cơ sở truyền số liệu, đo băng thông của nhiều luồng lưu lượng gửi qua một mạng gồm nhiều nút. Sử dụng phần mềm NS2 để lập trình mô phỏng trên hệ điều hành ubuntu. Học cách cài đặt ubuntu, NS2 và sử dụng các lệnh cơ bản trên NS2.
Trang 1Nhóm 9 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN
CƠ SỞ TRUYỀN SỐ LIỆU
Đề tài 5 : Đo băng thông của nhiều luồng lưu lượng
gửi qua một mạng gồm nhiều nút
Giáo viên hướng dẫn :TS TRƯƠNG THU HƯƠNG
Sinh viên : Dương Văn Vinh 20122804
Lê Văn Kiên 20121940 Nguyễn Thị Thiên Trang 20122593
Đỗ Trung Kiên 20101737 Phạm Thị Lan Hương 20121880
Hà nội, ngày 01/12/2015
Trang 2Nhóm 9 2
MỤC LỤC
MỤC LỤC 2
I Giới thiệu về nhóm và bài tập lớn thực hiện 3
1 Giới thiệu về nhóm 3
2 Đề tài thực hiện 3
II Phân công công việc và tiến độ: 4
1 Phân công công việc 4
2 Tiến độ công việc 4
III Quá trình thực hiện 5
1.Xây dụng đồ hình gồm các Nut,Agent truyền và nhận dữ liệu 5
2.Tạo các luồng lưu lượng 7
3.Xây dựng các hàm tính băng thông 8
4.Xây dựng các hàm tính tốc độ mất gói 9
5.Sử dụng hàm làm đứt link3 10
6.Xây dựng biểu đồ tính lưu lượng của link1 và link3 10
7 Kết thúc chương trình, vẽ đồ thị 10
8 Chạy chương trình 11
IV Kết quả 12
4.1 Sau khi mô phỏng thành công thu đựợc kêt quả như sau: 12
4.2 Vẽ đồ thị ( kết quả mô phỏng sau 100s ) 14
4.3 Đồ thị tốc độ mất gói tại nút 2(S3-D3) 14
4.4 Kết luận 15
V Tài liệu tham khảo 16
Trang 3Nhóm 9 3
I Giới thiệu về nhóm và bài tập lớn thực hiện.
1 Giới thiệu về nhóm
Tên nhóm : Nhóm 9 Thành viên :
1 Dương Văn Vinh 20122804
2 Lê Văn Kiên 20121940
3 Nguyễn Thị Thiên Trang 20122593
4 Đỗ Trung Kiên 20101737
5 Phạm Thị Lan Hương 20121880
2 Đề tài thực hiện
Đề tài thực hiện : Bài tập 5 Đo băng thông của nhiều luồng lưu lượng gửi qua một mạng gồm nhiều nút
Đề bài :
Cho một mạng gồm 5 nút như hình vẽ Nút 1, 2, 3, 4, 5 là các hàng đợi đơn hoạt động theo nguyên tắc LIFO với độ lớn hàng đợi K=6 gói Có 3 luồng dữ liệu được gửi qua mạng tương ứng là (S1, D1), (S2, D2) và (S3,D3) Trong đó Si là nguồn phát dữ liệu còn Di là đích Các nguồn Si đều phát gói với độ dài cố định là 145byte, khoảng
Trang 4Nhóm 9 4
thời gian giữa các gói tuân theo phân bố Poisson với tốc độ trung bình: λS1=450kbit/s, λS2=250kbit/s, λS3=600kbit/s Các đường nối giữa các nút mạng L1, L2, L3, L4, L5 đều có dung lượng và trễ lan truyền bằng nhau và bằng 1Mb/s, 130ms
5.1 Dựng kịch bản mô phỏng để mô phỏng mạng trên Chạy mô phỏng trong vòng 100s, tại thời gian t=45s, đường liên kết L3 bị đứt, tại thời gian t=95s, đường L3 lại trở lại hoạt động bình thường
5.2 Vẽ đồ thị băng thông ri(t) mà các luồng (S1, D1), (S2, D2) và (S3, D3) sử dụng Vẽ đồ thị lưu lượng tổng cộng C1(t) tại liên kết L1 và L3
5.3 Vẽ đồ thị tốc độ mất gói e(t) tại nút 2
II Phân công công việc và tiến độ:
1 Phân công công việc
Dương Văn Vinh, Phạm Thị Lan Hương: Tìm hiểu cách thức đo băng thông,vẽ đồ thị (sử dụng xgraph) trong NS2 Dựng kịch bản mô phỏng để mô phỏng mạng trên Chạy mô phỏng trong vòng 100s, tại thời gian t=45s, đường liên kết L3 bị đứt, tại thời gian t=95s, đường L3 lại trở lại hoạt động bình thường
Lê Văn Kiên, Đỗ Trung Kiên: vẽ đồ thị băng thông ri(t) mà các luồng (S1, D1), (S2, D2) và (S3, D3) sử dụng Vẽ đồ thị lưu lượng tổng cộng C1(t) tại liên kết L1 và L3.Vẽ đồ thị tốc độ mất gói e(t) tại nút 2
Nguyễn Thị Thiên Trang : Mô phỏng, viết báo cáo
2 Tiến độ công việc
Tuần 5 : Tìm hiểu đo băng thông của nhiều luồng lưu lượng gửi qua một mạng gồm nhiều nút
Tuần 5-12 : Học cài đặt ns2 trên ubuntu và các thao tác trên ns2
Tuần 13 : Viết chương trình mô phỏng bằng ns2, viết báo cáo
Trang 5Nhóm 9 5
III Quá trình thực hiện
Sử dụng công cụ NS2 mô phỏng hệ thống gồm 3 luồng lưu lượng gửi qua 5 nút Giả thiết :
* Độ dài hàng đợi: K = 6
* 3 luồng dữ liệu (S1,D1),(S2,D2),(S3,D3) phát gói với độ dài 145 bytes
Và khoảng thời gian giữa các gói là λ(S1)= 450; λ(S2)=250kbit/s; λ(S3)=600kbit/s
* Các link đều có dung lượng và trễ như nhau và bằng:1Mb/s và 130ms
1.Xây dụng đồ hình gồm các Nut,Agent truyền và nhận dữ liệu
# Tạo 5 nút:
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
#Tạo đường link giữa các nút:
$ns duplex-link $s1 $n1 10Mb 130ms DropTail
$ns duplex-link $s2 $n3 10Mb 130ms DropTail
$ns duplex-link $s3 $n3 10Mb 130ms DropTail
$ns duplex-link $n2 $d3 10Mb 130ms DropTail
$ns duplex-link $n4 $d1 10Mb 130ms DropTail
$ns duplex-link $n4 $d2 10Mb 130ms DropTail
$ns duplex-link $n1 $n2 1Mb 130ms DropTail
$ns duplex-link $n1 $n3 1Mb 130ms DropTail
$ns duplex-link $n2 $n4 1Mb 130ms DropTail
$ns duplex-link $n3 $n5 1Mb 130ms DropTail
$ns duplex-link $n4 $n5 1Mb 130ms DropTail
#Thiết lập vị trí hàng đợi:
$ns duplex-link-op $n1 $n2 queuePos 0.5
Trang 6Nhóm 9 6
$ns duplex-link-op $n1 $n3 queuePos 0.5
$ns duplex-link-op $n2 $n4 queuePos 0.5
$ns duplex-link-op $n3 $n5 queuePos 0.5
$ns duplex-link-op $n4 $n5 queuePos 0.5 #Sắp xếp vị trí các nút, đích và nguồn:
$ns duplex-link-op $n1 $n2 orient right
$ns duplex-link-op $n2 $n4 orient down
$ns duplex-link-op $n1 $n3 orient left-down
$ns duplex-link-op $n3 $n5 orient right
$ns duplex-link-op $n4 $n5 orient left
$ns duplex-link-op $s1 $n1 orient right-down
$ns duplex-link-op $s2 $n3 orient right-down
$ns duplex-link-op $s3 $n3 orient right
$ns duplex-link-op $n2 $d3 orient right-up
$ns duplex-link-op $n4 $d1 orient right
$ns duplex-link-op $n4 $d2 orient right-up
#Tạo nguồn phát và kết nối nó vào hệ thống
set udp0 [new Agent/UDP]
$udp0 set class_ 1
$ns attach-agent $s1 $udp0 set udp1 [new Agent/UDP]
$udp1 set class_ 2
$ns attach-agent $s2 $udp1 set udp2 [new Agent/UDP]
$udp2 set class_ 3
$ns attach-agent $s3 $udp2
#Tạo đối tượng LossMonitor duy trì thông tin và thống kê dữ liệu nhận được
Trang 7Nhóm 9 7
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
#Kết nối nguồn tới các đích theo dõi
$ns connect $udp0 $sink0
$ns connect $udp1 $sink1
$ns connect $udp2 $sink2
2.Tạo các luồng lưu lượng
#Tốc độ phát gói (goi/s) của các nguồn lần lượt là:
set lambdas1 450.0 set lambdas2 250.0 set lambdas3 600.0
#Thời gian để phát đi một gói sẽ là:
set InterArrivalTime0 [new RandomVariable/Exponential]
$InterArrivalTime0 set avg_ [expr 1/$lambdas1]
set InterArrivalTime1 [new RandomVariable/Exponential]
$InterArrivalTime1 set avg_ [expr 1/$lambdas2]
set InterArrivalTime2 [new RandomVariable/Exponential]
$InterArrivalTime2 set avg_ [expr 1/$lambdas3]
#Kích thước mỗi gói (bytes) là:
set pksize 145.0
#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 InterArrivalTime0 pksize
Trang 8Nhóm 9 8
set time [$ns now]
$ns at [expr $time + [$InterArrivalTime0 value]] "sendpacket0"
$udp0 send $pksize }
proc sendpacket1 {} {
global ns udp1 InterArrivalTime1 pksize set time [$ns now]
$ns at [expr $time + [$InterArrivalTime1 value]] "sendpacket1"
$udp1 send $pksize }
proc sendpacket2 {} {
global ns udp2 InterArrivalTime2 pksize set time [$ns now]
$ns at [expr $time + [$InterArrivalTime2 value]] "sendpacket2"
$udp2 send $pksize
}
3.Xây dựng các hàm tính băng thông
#hàm tính toán dữ liệu để vẽ đồ thị băng thông
proc record_bw {} {
global sink0 sink1 sink2 f0 f1 f2 f3 set ns [Simulator instance]
#cài đặt thời gian để các thủ tục được thực hiện lại set time 1
#có bao nhiêu bytes đã được nhận tại đích
Trang 9Nhóm 9 9
set bw0 [$sink0 set bytes_]
set bw1 [$sink1 set bytes_]
set bw2 [$sink2 set bytes_]
set now [$ns now]
#tính toán băng thông (Kbit/s) của tuyến (Si, Di) và ghi lại kết quả #S1-D1
puts $f0 "$now [expr $bw0/$time*8/1000]"
#S2-D2
puts $f1 "$now [expr $bw1/$time*8/1000]"
#S3-D3
puts $f2 "$now [expr $bw2/$time*8/1000]"
#(reset) thiết lập lại các giá trị tại đích nhận
$sink0 set bytes_ 0
$sink1 set bytes_ 0
$sink2 set bytes_ 0
#sau khi reset lặp lại các thủ tục trên
$ns at [expr $now + $time] "record_bw"
}
4.Xây dựng các hàm tính tốc độ mất gói
proc record_lost {} {
global sink0 sink1 sink2 l0 l1 l2 set ns [Simulator instance]
set time 1
#có bao nhiêu gói bị mất set lost0 [$sink0 set nlost_]
set lost1 [$sink1 set nlost_]
set lost2 [$sink2 set nlost_]
Trang 10Nhóm 9 10
set now [$ns now]
#tính toán số gói bị mất puts $l2 "$now [expr $lost2]"
$sink0 set nlost_ 0
$sink1 set nlost_ 0
$sink2 set nlost_ 0
$ns at [expr $now + $time] "record_lost"
}
5.Sử dụng hàm làm đứt link3
$ns rtmodel-at 45 down $n4 $n5
$ns rtmodel-at 95.0 up $n4 $n5
6.Xây dựng biểu đồ tính lưu lượng của link1 và link3
#băng thông tổng cộng của link L3+L1 puts $f3 "$now [expr ($bw0+$bw1+$bw2)/$time*8/1000]"
7 Kết thúc chương trình, vẽ đồ thị
#hàm kết thúc chương trình và vẽ đồ thị
proc finish {} {
global ns namFile f0 f1 f2 f3 TraceAll
$ns flush-trace
#đóng các tệp tin đầu ra close $namFile
close $f0 close $f1 close $f2
Trang 11Nhóm 9 11
close $f3 close $TraceAll
#thủ tục để vẽ nam dựa trên dấu vết tệp tin exec nam -a out.nam &
#thủ tục vẽ đồ thị băng thông và mất gói exec xgraph Flow_S1-D1.tr Flow_S2-D2.tr Flow_S3-D3.tr Flow_L1+L3.tr -geometry 1280x720 -t "đồ thị băng thông các link" -x "Time(s)" -y "Speed(Kbit/s)" &
exec xgraph Lost_S3-D3.tr -geometry 1280x720 -t
"đồ thị mất gói tại nút 2" -x "Time(s)" -y "Packets" &
exit 0 }
8 Chạy chương trình
#thiết lập thời gian hoạt động của hệ thống
$ns at 0.0 "record_bw"
$ns at 0.0 "record_lost"
$ns at 1.0 "sendpacket0"
$ns at 1.0 "sendpacket1"
$ns at 1.0 "sendpacket2"
$ns rtmodel-at 45.0 down $n4 $n5
$ns rtmodel-at 95.0 up $n4 $n5
$ns at 100.0 "finish"
#chạy chương trình
$ns run
Sau 5 lần thay biến timer bằng các giá trị:0.05;0.1;0.5;0.75 ;1; cuối cùng đặt biến timer có giá trị bằng 1s và mô phỏng trong 100s.thì thu được kết quả dễ quan sát nhất
Trang 12Nhóm 9 12
Đơn vị của băng thông và lưu lượng là Kbit/s
Đơn vị tốc độ mất gói là e(goi/s)
Quy định màu :(S1,D1)-red;(S2,D2):green;(S3,D3):blue
IV Kết quả
4.1 Sau khi mô phỏng thành công thu đựợc kêt quả như sau:
Hình 1.Mô hình theo kịch bản:
Trang 13Nhóm 9 13
Hình 2.Mô hình sau khi chạy ( trước khi L3 bị đứt)
Hình 3.Mô hình sau khi L3 bị đứt:
Trang 14Nhóm 9 14
4.2 Vẽ đồ thị ( kết quả mô phỏng sau 100s )
Hình 4:Đồ thị băng thông của các luồng (S1,D1), (S2,D2), (S3,D3), L1+L3 :
H4: Đồ thị băng thông 3 nguồn S1,S2,S3 và L1+L3
- nguồn S1
- nguồn S2
- nguồn S3
L1+L3
4.3 Đồ thị tốc độ mất gói tại nút 2(S3-D3)
Trang 15Nhóm 9 15
Hình 5 Đồ thị tốc độ mất gói tại nút 2
4.4 Kết luận
Các nguồn lưu lượng phân chia tài nguyên băng thông rất phù hợp thực tế và lý thuyết
Tuy đã tìm hiểu trên nhiều trang mạng và cũng đã tham khảo các bài tập mẫu để hiểu rõ bản chất, tuy nhiên có nhiều phần code chúng em vẫn là làm theo chứ chưa thể hiểu bản chất cụ thể Chưa hoàn thành tuyệt đối yêu cầu của cô giáo Vì vậy chúng em kính mong cô giáo sẽ chỉ bảo thêm để chúng em hoàn thiện bài tập lớn này, cũng như các kiến thức của bản thân
Trang 16Nhóm 9 16
V Tài liệu tham khảo
http://www.isi.edu/nsnam/ns/tutorial/index.html
http://nile.wpi.edu/NS/
http://www-sop.inria.fr/maestro/personnel/Eitan.Altman/COURS-NS/n3.pdf
http://www.isi.edu/nsnam/ns/tutorial/nsscript4.html
http://www.isi.edu/nsnam/ns/ns-build.html
http://www.isi.edu/nsnam/ns/ns-problems.html
http://www.svbkol.org/forum/showthread.php?t=11106