bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu bài tập môn cơ sỡ truyền dữ liệu
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ VIỄN THÔNG
BÀI TẬP LỚN MÔN CƠ SỞ TRUYỀN SỐ LIỆU
Lớp : ĐT10 – K54
Trang 2
A KHÁI QUÁT CHUNG
1.Yêu cầu bài tập lớn
- Tiến trình đến là tiến trình Poisson
- Node 5, 6 ,7 là các node nguồn
Đường đi của node 5 : node 5 -> 0 ->1 ->3 -> 4 ->9
Tính các tham số sau trong 2 trường hợp có lỗi và không có lỗi :
- Average delay
- Queue length
Trang 3Với sác xuất lỗi khung bằng nhau và bằng p, trễ là trễ đầu cuối
2 Nhóm bài tập lớn
Giảng viên hướng dẫn : TS Nguyễn Tài Hưng
Thành viên :
1 Đào Trọng Hiếu(Trưởng nhóm)
2 Đinh Hữu Quỳnh
3 Lê Huy Luân
2 Phân công công việc:
- 2 tuần đầu tiên cả nhóm tìm hiểu về phần mềm NS2 cũng như tìm hiểu cách cài đặt và mô phỏng trong NS2
- Đào Trọng Hiếu:Tìm hiểu và mô phỏng hàng đợi M/M/1 và cách tạo ra tiến trình đến là tiến trình Poisson,tìm cách in ra các file cần thiết cho quá trình tính toán
- Đinh Hữu Quỳnh:Tìm hiểu và mô phỏng phần khung của yêu cầu bài toán.(tạo nút,tạo nguồn,tạo link liên kết giữa các nút,tạo ra mất gói bằng cách nào…)
- Lê Huy Luân:Tìm hiểu cách tính chiều dài hàng đợi trung bình và trễ truyền của các gói tin theo lý thuyết.tìm cách tính toán các tham số trên theo mô phỏng
và so sánh kết quả thu được so với lý thuyết
Trang 4của tiến trình Poisson Tiến trình Poisson mô tả rất nhiều tiến trình trong đời sống thực tế, do nó có tính ngẫu nhiên
Đặc điểm của tiến trình Poisson:
Những đặc tính cơ bản của tiến trình Poisson là:
để biểu diến tiến trình Poisson, đó là:
+ Biểu diễn số: là số các sự kiện đến trong một khoảng thời gian với độ dài
cố định được phân bố theo tiến trình Poisson
+ Biểu diễn khoảng thời gian: là các khoảng thời gian giữu các sự kiện lien tiếp nhau được phân bố theo hàm mũ
Tiến trình đến Poisson sử dụng trong lưu lượng viễ thông của mạng chuyển mạch gói và mạng máy tính Thêm vào đó tiến trình Poisson đã được sử dụng để
mô tả các tiến trình nhiễu và để nghiên cứu hiện tượng các hố điện tử xuât hiện trong chất bán dẫn, và các ứng dụng khác……
Ba vấn đề cơ bản được sủ dụng để định nghĩa tiến trình đến Poisson Xét một khoảng thời gian nhỏ ( với Δt 0) , như hình bên:
Δt
Đó là:
Trang 5+ Xác suất của một tiến trình đến trong khoảng thời gian Δt được định nghĩa
là λΔt + o(Δt), với λΔt <<1 và λ là hằng số tỷ lệ lý thuyết
+ Xác xuất không có tiến trình đến nào trong khoảng thời gian Δt là
1-λΔ+o(Δt)
+ Tiến trình đến không có nhớ: một tiến trình đến trong khoảng thời gian Δt
là độc lập với các tiến trình trước đó và các tiến trình tương lai
Nếu lấy một chu kì T, tìm xác suất p(k) của tiến trình đến trong thời gian T được cho bởi:
Tham số λ là hằng số tỷ lệ, được xem là tham số tốc độ: λ=
Phương trình (1) mô tả tốc đọ đến trung bình của tiến trình Poisson Bình thường giá trị trung bình E(k) tiến tới không tương đương với λT lớn: /E(k) = 1/√ với nghĩa λT lớn, phân bố có quan hệ chặt chẽ với giá trị trung bình λT Do
đó nếu một thông số( ngẫu nhiên) số các tiến trình đến trong khoảng thời gian T lớn (lớn theo nghĩa λT >>1, hoặc T >> 1/λ), n/T có thể đánh giá λ Cũng chú ý là p(0) = , khi λT tang với phân bố đỉnh E(k) = λT, xác suất không có tiến trình đến trong khoảng thời gian T tiến đến không với e mũ có tiến trình đến nào trong khoảng thời gian T đến không với e mũ T
1.2 Hàng đợi M/M/1:
Trang 7+ Thời gian trung bình của 1 khách hang trong hệ thống: W
= W- =
- =
Chiều dài hàng đợi
+ Số lượng trung bình các khách hàng trong hệ thống
L =
+ Số lượng trung bình các job trong server:
= 1P(n>=1) = 1-P(n=0) = 1-(1-ρ) = ρ + Số lượng trung bình của các công việc trong hàng đợi
= L - =
=
II tính toán theo lý thuyết:
1.1 Tính toán trên lý thuyết các tham số hàng đợi M/M/1
Giải thiết:
- Tốc độ gói TB đến hàng đợi: λ = λ1+ λ2+ λ
3=30+31+32=93(packets/s)
Trang 8- Tải: ρ = 0.91
- Tốc độ phục vụ trung bình của server:
μ= λ/ρ = 93/0.91 ≈ 102(Packet/s)
1.1.1 Số yêu cầu TB có trong hệ thống
1.1.2 Thời gian TB của 1 yêu cầu nằm trong hệ thống
1.1.3 Thờigian TB của 1 yêu cầu nằm trong hàng đợi
1.1.4 Số yêu cầu TB có trong hàng đợi ( Chiều dài hàng đợi )
1.2 Tính toán trễ đầu cuối đến đầu cuối theo lý thuyết:
Định nghĩa: là khoảng thời gian kể từ lúc gói tin được gửi đi ở nguồn cho đến khi gói tin nhận được ở đích
Công thức:
Tdelay = Ttrans + Tprop + Tqueue
Trong đó: Tdelay : thời gian trễ đầu cuối đến đầu cuối
Ttrans: thời gian truyền gói tin trên đường truyền
Tprop: thời gian xử lý gói tin ở phía thu
Tqueue: thời gian gói tin nằm trong hàng đợi
Trang 9III Code
III.1,trường hợp không có lỗi:
#tao 1 doi tuong mo phong set ns [new Simulator]
#Mo file bam vet
set tf [open out1.tr w]
$ns trace-all $tf
set q1 [open qm01.tr w] set q2 [open qm12.tr w] set q3 [open qm13.tr w] set q4 [open qm34.tr w]
#danh cac mau cho packet
Trang 11#tao links giua cac nut
set link [$ns duplex-link $s0 $n0 100kb 10ms SFQ] set link [$ns duplex-link $s1 $n0 100kb 10ms SFQ] set link [$ns duplex-link $s2 $n0 100kb 10ms SFQ] set link [$ns duplex-link $n0 $n1 300kb 10ms SFQ] set link [$ns duplex-link $n1 $n2 200kb 10ms SFQ] set link [$ns duplex-link $n1 $n3 200kb 10ms SFQ] set link [$ns duplex-link $n3 $n4 200kb 10ms SFQ] set link [$ns duplex-link $n2 $d0 100kb 10ms SFQ] set link [$ns duplex-link $n4 $d1 100kb 10ms SFQ] set link [$ns duplex-link $n4 $d2 100kb 10ms SFQ]
#giam sat hang doi tren NAM
Trang 12set qmon [$ns monitor-queue $n0 $n1 [open qm01.out w] 1]; [$ns link $n0 $n1] queue-sample-timeout;
set qmon [$ns monitor-queue $n1 $n2 [open qm12.out w] 1]; [$ns link $n1 $n2] queue-sample-timeout;
set qmon [$ns monitor-queue $n1 $n3 [open qm13.out w] 1]; [$ns link $n1 $n3] queue-sample-timeout;
set qmon [$ns monitor-queue $n3 $n4 [open qm34.out w] 1]; [$ns link $n3 $n4] queue-sample-timeout;
set qmon [$ns monitor-queue $n2 $d0 [open qm34.out w] 1]; [$ns link $n2 $d0] queue-sample-timeout;
set qmon [$ns monitor-queue $n4 $d1 [open qm34.out w] 1]; [$ns link $n4 $d1] queue-sample-timeout;
set qmon [$ns monitor-queue $n4 $d2 [open qm34.out w] 1]; [$ns link $n2 $d2] queue-sample-timeout;
#dat cac node vao vi tri(NAM)
$ns duplex-link-op $s0 $n0 orient right-up
$ns duplex-link-op $s1 $n0 orient right
$ns duplex-link-op $s2 $n0 orient right-down
$ns duplex-link-op $n0 $n1 orient right
$ns duplex-link-op $n0 $n1 orient right
$ns duplex-link-op $n0 $n1 orient right
$ns duplex-link-op $n1 $n2 orient right
$ns duplex-link-op $n1 $n3 orient down
Trang 13$ns duplex-link-op $n3 $n4 orient right
$ns duplex-link-op $n2 $d0 orient right
$ns duplex-link-op $n4 $d1 orient right
$ns duplex-link-op $n4 $d2 orient right-up
# thiết lập kích thước gói và thời gian đến giữa các gói ngẫu nhiên set InterArrivalTime1 [new RandomVariable/Exponential]
$InterArrivalTime1 set avg_ [expr 1/$lambda1]
set pktSize1 [new RandomVariable/Exponential]
$pktSize1 set avg_ [expr 100000.0/(8*$mu1)]
set InterArrivalTime2 [new RandomVariable/Exponential]
$InterArrivalTime2 set avg_ [expr 1/$lambda2]
set pktSize2 [new RandomVariable/Exponential]
$pktSize2 set avg_ [expr 100000.0/(8*$mu2)]
set InterArrivalTime3 [new RandomVariable/Exponential]
$InterArrivalTime3 set avg_ [expr 1/$lambda3]
set pktSize3 [new RandomVariable/Exponential]
$pktSize3 set avg_ [expr 100000.0/(8*$mu3)]
#Setup a UDP connection
set udp11 [new Agent/UDP]
Trang 14$ns attach-agent $s0 $udp12 set null12 [new Agent/Null]
$ns attach-agent $d1 $null12
$ns connect $udp11 $null11
$ns connect $udp12 $null12
$udp11 set fid_ 1
$udp12 set fid_ 1
#Setup a UDP connection set udp2 [new Agent/UDP]
$udp2 set class_ 2
$ns attach-agent $s1 $udp2 set null3 [new Agent/Null]
$ns attach-agent $d1 $null3
$ns connect $udp2 $null3
$udp2 set fid_ 2
#Setup a UDP connection set udp3 [new Agent/UDP]
$udp3 set class_ 3
$ns attach-agent $s2 $udp3 set null4 [new Agent/Null]
$ns attach-agent $d2 $null4
$ns connect $udp3 $null4
$udp3 set fid_ 3
Trang 15#tao process 'finish'
exec nam out.nam &
exec awk -f test.awk qm01.out > qm01.dat
exec awk -f test.awk qm12.out > qm12.dat
exec awk -f test.awk qm13.out > qm13.dat
exec awk -f test.awk qm34.out > qm34.dat
exec awk -f currentdelayS1_R2.awk out1.tr > currentdelayS1_R2.dat exec awk -f currentdelayS1_R4.awk out1.tr > currentdelayS1_R4.dat exec awk -f currentdelayS2_R4.awk out1.tr > currentdelayS2_R4.dat exec awk -f currentdelayS3_R2.awk out1.tr > currentdelayS3_R2.dat exec awk -f delaye2e.awk currentdelayS1_R2.dat > delaye2eS1_R2.dat exec awk -f delaye2e.awk currentdelayS1_R4.dat > delaye2eS1_R4.dat exec awk -f delaye2e.awk currentdelayS2_R4.dat > delaye2eS2_R4.dat
Trang 16exec awk -f delaye2e.awk currentdelayS3_R2.dat > delaye2eS3_R2.dat
exec xgraph currentdelayS1_R2.dat currentdelayS1_R4.dat currentdelayS2_R4.dat currentdelayS3_R2.dat -geometry 800x400 -t "Delay" &
exit 0}
###proc sendpacket11 {}
{global ns udp11
InterArrivalTime1 pktSize1
set time [$ns now]
$ns at [expr $time + [$InterArrivalTime1 value]]
"sendpacket11"
set bytes11 [expr round ([$pktSize1 value])]
$udp11 send $bytes11
set time [$ns now]
$ns at [expr $time + [$InterArrivalTime1 value]]
"sendpacket12"
set bytes12 [expr round ([$pktSize1 value])]
$udp12 send $bytes12
Trang 17set time [$ns now]
$ns at [expr $time + [$InterArrivalTime2 value]] "sendpacket2"
set bytes2 [expr round ([$pktSize2 value])]
$udp2 send $bytes2
set time [$ns now]
$ns at [expr $time + [$InterArrivalTime3 value]] "sendpacket3"
set bytes3 [expr round ([$pktSize3 value])]
$udp3 send $bytes3
}
Trang 19Chúng em đã sử dụng câu lệnh giám sát hàng đợi và ghi dữ liệu ra file out:
set qmon [$ns monitor-queue $n3 $n4 [open qm34.out w] 1];
[$ns link $n3 $n4] queue-sample-timeout;
Câu lệnh này sẽ giám sát hàng đợi giữa n3 và n4 cứ 1s/1 lần giám sát và ghi
ra file qm34.out.file qm34.out là lưu lại tất cả kết quả của hành động giám sát.sau
đo chúng em sử dụng file awk để tính kết quả trung bình của hàng đợi:
BEGIN { FS = " "} {nl++} {s=s+$5} END {print "average:" s/nl}
Kết quả của chiều dài trung bình hàng đợi được lưu tại file delaye2e.dat,vì trong mô phỏng có 4 hàng đợi nên sẽ có 4 file trung bình hàng đợi của mỗi hàng
Để tính trễ truyền trung bình của gói tin thuộc 3 nguồn tin,chúng em sử dụng awk để lọc ra các nguồn tin riêng từ file out1.tr là file bám viết của tất cả các gói tin trong quá trình mô phỏng:
BEGIN{tg[50000];tn[50000];tt[50000]}
{if ($8 =="1")
{if (($1=="+") && ($3=="0")){
Trang 20$1=”r” && $4=”4”:gói được nhận tại nút 4
Như vậy tất cả gói tin mà có f_id là 1 và thời gian đi ra trừ đi thời gian đi vào sẽ chính là độ trễ của gói tin.tất cả các độ trễ của từng gói tin sẽ được lưu vào file currentdelay.dat.Sau đó chúng em tiếp tục viết 1 file awk để tính trung bình của file vừa có được,từ đó chính là trễ truyền trung bình của các luồng gói tin đến các đích khác nhau
Kết quả:
Luồng tin S0 đi từ nút 0 tới nút 4: average:0.123496
Luồng tin S0 đi từ nút 0 tới nút 2: average:0.085448
Luồng tin S1 đi từ nút 0 tới nút 4: average:0.294241
Luồng tin S2 đi từ nút 0 tới nút 2: average:0.255364
Chiều dài hàng đợi trung bình chúng em chỉ tính trên linh từ N0-N1 bởi trên link này mới thực sự là hàng đợi M/M/1:
File awk tính chiều dài hàng đợi trung bình từ file qm01.out:
BEGIN { FS = " "} {nl++} {s=s+$5} END {print "average:" s/nl}
Trang 21Average: 11.0937gói tin
Sai lệch so với lý thuyết cỡ 1 gói tin
Vẽ xgraph đồ thị trễ truyền của các luồng tin:
III.2,Trường hợp có lỗi:
Kịch bản mô phỏng tương tự như phần không có lỗi tuy nhiên chúng em chèn thêm module lỗi vào tất cả các link với xác suất lỗi cố định là 0.02 và để mô phỏng cho việc truyền lại,chúng em sét lamda(tiến trình đến )1 giá trị mới là lamda1với công thức:lamda1=lamda/(1-0,02):
#Set error model on link s2 to n0
set loss_module [new ErrorModel]
$loss_module set rate _0.02
$loss_module ranvar [new RandomVariable/Uniform]
$loss_module drop-target [new Agent/Null]
$ns lossmodel $loss_module $s2 $n0
Trang 22Tạo các file tính toán tương tự như trên,chúng em thu được kết quả mô phỏng như sau:
Đồ thị tương đối giống với trường hợp không có lỗi tuy nhiên trung bình về
độ trễ của các luồng tin đã tăng lên(do mất thời gian truyền lại):
Luồng tin S0 đi từ nút 0 tới nút 4: average:0.124269
Luồng tin S0 đi từ nút 0 tới nút 2: average:0.0861125
Luồng tin S1 đi từ nút 0 tới nút 4: average:0.303032
Luồng tin S2 đi từ nút 0 tới nút 2: average:0.263314
Chiều dài hàng đợi trung bình:
Average:15.0223 gói tin
Trang 23C KẾT LUẬN
Với những kiến thức được cung cấp về lý thuyết hàng đợi, tiến trình Poisson kết hợp với kết quả mô phỏng, có thể kết luận có sự tồn tại sai khác giữa lý thuyết
và mô phỏng thực tế, nhưng với một lượng có thể chấp nhận được
Hoàn thành bài tập lớn này, chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của TS Nguyễn Tài Hưng, đã giảng dạy lý thuyết cũng như trả lời các thắc mắc bài tập lớn nhiệt tình, chu đáo Hẳn trong bài còn có những điểm chưa được tối ưu, chúng em rất mong nhận được những nhận xét của thầy để chúng em có thể hoàn thiện hơn