ĐẠ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
Bài 12: Mạng hàng đợi
Giảng viên hướng dẫn: TS. Trần Thị Ngọc Lan
Nhóm sinh viên thực hiện:
Trịnh Văn Hiệp
Lê Anh Quân
Lê Thị Ánh Ngọc
Vương Xuân Hồng
Nguyễn Ngọc Hải
20091087
20092113
20091907
20091198
20090951
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hà Nội, 11/2012
Page 2
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Mục Lục
Page 3
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Danh sách hình vẽ
Page 4
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Trong quá trình học môn cơ sở truyền số liệu chúng em đã được tiếp xúc với
các mạng hàng đợi và được phân tích tính toán các thông số của mạng theo lý
thuyết. Mục đích thực hiện bài tập này nhằm củng cố kiến thức lý thuyết đã
được học và tìm hiểu thêm phương pháp đánh giá mạng hàng đợi sử dụng
phương pháp mô phỏng. Công cụ mô phỏng được sử dụng trong bài tập này là
OmNET ++ là một công cụ mô phỏng mạng thông tin được sử dụng rất nhiều
hiện nay. OmNET sẽ giúp chúng ta thực hiện mô phỏng các hệ thống mạng
thông tin dễ dàng, tổng hợp và phân tích kết quả nhằm đánh giá so sánh giữa 2
phương pháp. Để thực hiện bài tập này chúng em sử dụng thư viện INET giúp
thực hiện truyền các luồng UDP theo phân bố Poisson.
Chúng em xin chân thành cảm ơn TS Trần Thị Ngọc Lan đã giúp đỡ chúng em
hoàn thành bài tập này!
Page 5
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Phần 1: Yêu cầu đề bài và kế hoạch thực
hiện
1.1 Yêu cầu đề bài
Hình Đề 12: Mạng hàng đợi
Nút s1 phát ra luồng gói gửi đến đầu cuối d1, trong khi nút s2 tạo ra 2 luồng
gói gửi tới nút d1 và d2.cả 3 luồng thông tin đều truyền đi với giao thức UDP
(phân bố mũ) . Kích thước gói do s1, s2 phát ra tương ứng là 1300bytes và
1000bytes. Số lượng gói phát ra trên mỗi luồng tuân theo phân bố Poison, tốc
độ 1000 gói/s.
1. Dựng kịch bản mô phỏng hệ thống thông tin nói trên vói thời gian mô phỏng
100s.
2. Vẽ đồ thị độ trễ của các gói tại từng nút và trễ trên toàn đường truyền.
3. Vẽ đồ thị biểu diễn số lượng gói đến d1 d2 bị trễ nhiều hơn 0.5s.
4. Thay đổi tham số chiều dài gói tin và tốc độ phát sinh gói của từng luồng
thông tin trong khi giữ nguyên các luồng khác.Vẽ đồ thị biểu diễn thông lượng,
tỷ lệ mất thông tin của từng luồng. Nhận xét kết quả thu được.
Page 6
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
1.2 Kế hoạch thực hiện
STT
Mô tả công việc
Người thực
hiện
Bắt đầu
Dự kiến
kết thúc
Kết thúc
1
Tìm hiểu và học
Omnet++
Cả nhóm
1/10/2012
7/10/2012
7/10/2012
2
Phân tích yêu cầu
đề bài, dựng kịch
bản
Cả nhóm
5/10/2012
7/10/2012
10/10/2012
3
Tìm hiểu về UDP Ngọc
trong Inet và phân
bố poisson
10/10/201
2
17/10/2012 17/10/2012
4
Mô phỏng hệ
thống
Hiệp &
Quân
10/10/201
2
20/10/2012 21/10/2012
5
Tìm hiểu cách
tính và cách mô
phỏng trễ
Hồng
10/10/201
2
17/10/2012 17/10/2012
6
Tìm hiểu cách
Hải
tính và cách mô
phỏng thông
lượng và tỷ lệ mất
thông tin
10/10/201
2
17/10/2012 17/10/2012
7
Thống kê và tính
toán kết quả
Cả nhóm
22/10/201
2
30/10/2012 30/10/2012
8
Báo cáo
Cả nhóm
30/10/201
2
07/11/2012 07/11/2012
Page 7
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Phần 2: Quá trình thực hiện
2.1 Xây dựng kịch bản và mô phỏng
Mô phỏng mạng hàng đợi truyền các luồng dữ liệu qua các node (hàng đợi)
để đến được đích. Các thông số cụ thể của mạng:
• Kích thước gói UDP tại s1 và s2 tương ứng là 1000 bytes và 1300
•
•
bytes
S1 truyền đến d1 , s2 truyền 2 luồng đến d1 và d2
Thời gian phát gói của từng luồng theo phân bố poisson và với tốc
•
•
độ 1000 gói/s
Kích thước hàng đợi ở các node:
Tốc độ của các kênh truyền giữa các node
a. Để mô phỏng mạng hàng đợi truyền các luồng UDP ta sử dụng thư viện
Inet với các gói:
•
ned.DatarateChannel;
để mô phỏng định nghĩa các kênh truyền giữa
các host và node
•
•
inet.nodes.inet.Router;để định nghĩa các node
inet.nodes.inet.StandardHost; để định nghĩa
trong mạng
nguồn s1,s2 và đích
d1,d2
•
inet.networklayer.autorouting.ipv4.IPv4NetworkConfigurator; để
cấu
hình địa chỉ của các thành phần trong mạng để truyền các gói theo
phương thức UDP
package udp_test;
import ned.DatarateChannel;
import inet.networklayer.autorouting.ipv4.IPv4NetworkConfigurator;
import inet.nodes.inet.Router;
import inet.nodes.inet.StandardHost;
network UDP_test
{
types:
channel A extends DatarateChannel
{
datarate = 6Mbps;
delay = 0.1us;
}
channel B extends DatarateChannel
{
datarate = 4Mbps;
delay = 0.1us;
Page 8
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
}
channel C extends DatarateChannel
{
datarate = 1.5Mbps;
delay = 0.1us;
}
channel D extends DatarateChannel
{
datarate = 2Mbps;
delay = 0.1us;
}
channel E extends DatarateChannel
{
datarate = 100Mbps;
delay = 0.1us;
}
submodules:
s1: StandardHost {
parameters:
@display("i=device/pc3;p=58,76");
}
s2: StandardHost {
parameters:
@display("i=device/pc3;p=59,426");
}
d1: StandardHost {
parameters:
@display("p=766,78;i=device/pc2");
}
d2: StandardHost {
parameters:
@display("p=785,387;i=device/pc2");
}
router1: Router {
parameters:
@display("p=181,149");
}
router2: Router {
parameters:
@display("p=186,328");
}
router3: Router {
parameters:
@display("p=329,233");
}
router4: Router {
parameters:
@display("p=520,228");
}
router5: Router {
parameters:
@display("p=655,140");
}
router6: Router {
parameters:
@display("p=663,319");
}
configurator: IPv4NetworkConfigurator {
Page 9
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
parameters:
config = xmldoc("config.xml");
@display("p=408,135");
}
connections:
s1.pppg++ <-->
s2.pppg++ <-->
router1.pppg++
router2.pppg++
router3.pppg++
router4.pppg++
router4.pppg++
router5.pppg++
router6.pppg++
E <-->
E <-->
<--> A
<--> A
<--> B
<--> C
<--> D
<--> E
<--> E
router1.pppg++;
router2.pppg++;
<--> router3.pppg++;
<--> router3.pppg++;
<--> router4.pppg++;
<--> router5.pppg++;
<--> router6.pppg++;
<--> d1.pppg++;
<--> d2.pppg++;
b. Gán địa chỉ cho các thành phần của mạng
Địa chỉ của các thành phần mạng được định nghĩa trong file config.xml
theo từng kênh truyền
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
Page 10
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
netmask="255.255.255.0" mtu="1500"/>
hosts="router6"
towards="d2"
address="192.123.1.2"
netmask="255.255.255.0" mtu="1500"/>
Với các địa chỉ của các router và host được định nghĩa như trên ta tiến
hành đinh tuyến cho các luồng theo yêu cầu:
• Luồng 1: s1-d1: 1000bytes/packet
gateway="router1" metric="0" interface="ppp0"/>
gateway="router3" metric="0" interface="ppp1"/>
gateway="router4" metric="0" interface="ppp2"/>
gateway="router5" metric="0" interface="ppp1"/>
•
Luồng 2: s2-d1: 1300bytes/packet
gateway="router1" metric="0" interface="ppp0"/>
gateway="router3" metric="0" interface="ppp1"/>
gateway="router4" metric="0" interface="ppp2"/>
gateway="router5" metric="0" interface="ppp2"/>
•
Luồng 3: s2-d2: 1300bytes/packet
gateway="router2" metric="0" interface="ppp0"/>
gateway="router3" metric="0" interface="ppp1"/>
gateway="router4" metric="0" interface="ppp2"/>
hosts="router4" destination="192.123.1.1" netmask="/32"
gateway="router6" metric="0" interface="ppp2"/>
c. Khởi tạo các thông số của mạng
• Phân bố poisson của các gói
Số lượng gói phát ra tại mỗi luồng phân theo phân bố poisson có
nghĩa là thời gian phát giữa các gói phân bố poisson và giá trị
trung bình là 0.001s (tương đương 1000 packets/s)
**.s1.udpApp[0].sendInterval = exponential(0.001s)
Page 11
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
**.s2.udpApp[0].sendInterval = exponential(0.001s)
**.s2.udpApp[1].sendInterval = exponential(0.001s)
•
Độ dài hàng đợi tại các node
**.ppp[*].queueType = "DropTailQueue"# in routers
**.ppp[*].queue.frameCapacity = 48 # in routers
Ở đây với mỗi node chúng ta quy định như là một hàng đợi với
•
kích thước hàng đợi là 48
Các luồng UDP
Có 3 luồng được phát ra trừ 2 nguồn s1 và s2 để truyền đến đích
d1 và d2. Trong file *.ini chúng ta sẽ định nghĩa kích thước gói,
địa chỉ đích:
#luồng 1
**.s1.numUdpApps = 1
**.s1.udpApp[*].typename = "UDPBasicApp"
**.s1.udpApp[0].destAddresses = "192.128.1.6"#d1
**.s1.udpApp[0].destPort = 1000
**.s1.udpApp[0].messageLength = 1300 bytes
**.s1.udpApp[0].sendInterval = exponential(0.001s)
#luồng 2
**.s2.numUdpApps = 2
**.s2.udpApp[*].typename = "UDPBasicApp"
**.s2.udpApp[0].destAddresses = "192.128.1.6"#d1
**.s2.udpApp[0].destPort = 1000
**.s2.udpApp[0].messageLength = 1000 bytes
**.s2.udpApp[0].sendInterval = exponential(0.001s)
#luồng 3
**.s2.udpApp[1].destAddresses = "192.123.1.1"#d2
**.s2.udpApp[1].destPort = 100
**.s2.udpApp[1].messageLength = 1000 bytes
**.s2.udpApp[1].sendInterval = exponential(0.001s)
Kết quả mô phỏng mạng:
Page 12
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hình Mô phỏng mạng hàng đợi UDP
2.2 Tính toán độ trễ của từng gói tại các nút và toàn đường truyền
a. Thời gian trễ tại các node
Hình Thời gian trễ của các gói tại các node
Page 13
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hình Thời gian trễ của các gói tại các node (trung bình)
Từ đồ thị ta thấy:
• Node 5 và node 6 không bị trễ vì ở cuối mạng với kích thước
•
hàng đợi của các node đều là 48 nên dữ liệu được qua luôn.
Node 4 có 2 hàng đợi ra node 5 và node 6,
o Hàng đợi ra node 5 (d1) trễ nhiều nhất (0.3s) vì có luồng 1
và luồng 2 đều truyền qua đây.
o Hàng đợi ra node 6 (d2) gần như không trễ vì chỉ có luồng
3 đi qua đây.
• Node 2do có 2 luồng của s2 ( 2 luồng 1300 bytes) truyền qua đây
•
nên có độ trễ lớn hơn so với node 1 (1000 bytes)
Node 3 có độ trễ 0.1s.
b. Thời gian trễ toàn tuyến
Page 14
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hình Thời gian trễ toàn tuyến của 3 luồng
•
•
Thời gian trễ của 3 luồng đối với kích thước hàng đợi là 48
Ta thấy thời gian trễ của luồng 3 (s2-d2) là thấp nhất (khoảng
0.2s) và 2 luồng 1 và 2 cỡ khoảng gần 0.5s
• Nếu giảm kích thước hàng đợi xuống thì thời gian trễ sẽ giảm
xuống (với kích thước 10 thì các luồng trễ khoảng 0.1s)
• Nếu tăng kích thước hàng đợi thì thời gian trễ tăng (50 thì trễ đều
trên 0.5s)
2.3 Thống kê số lượng gói đến đích trễ hơn 0.5s
Luồng
S1-D1
S2-D1
S2-D2
Số lượng gói gửi
100246
100225
100031
Page 15
Số lượng gói trễ hơn 0.5s
9049
1006
0
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hình Số lượng gói trễ nhiều hơn 0.5s
Nhận xét:
Ta thấy 3 luồng đều có số lượng gói gửi đi khoảng 100000packets
Với luồng 1 thì có số lượng gói trễ lớn hơn 0.5s lớn nhất sau đó là luồng 2 và
luồng 3 không có gói nào trễ lớn hơn 0.5s
2.4 Thông lượng của từng luồng và tỉ lệ mất gói
Thực hiện mô phỏng và tổng hợp kết quả tỉ lệ mất gói và tính toán thông
lượng khi thay đổi kích thước gói và tốc độ phát gói.
Cách thực hiện:
• Tại mỗi luồng sẽ tính toán đối với 2 kích thước gói
o Luồng 1: 1300 bytes và 600 bytes
o Luồng 2 và luồng 3: 1000 bytes và 500 bytes
• Với mỗi kích thước gói sẽ thực hiện tính toán và mô phỏng với các
sendInterval có giá trị trung bình là 0.1s, 0.01s, 0.001s
• Tính toán tỉ lệ mất gói dựa vào số lượng gói phát đi và số lượng gói
nhận được
• Thông lượng sẽ là lượng dữ liệu được truyền qua mạng từ nguồn đến
đích
Page 16
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
•
So sánh giá trị trung bình của thông lượng của các lần mô phỏng tính
toán với nhau (cùng số lượng gói truyền đi)
a. Luồng 1 s1-d1
size=1300byte
s
sendInterval
s1 sent
exp(0.1s)
1004
exp(0.001s)
exp(0.0001s)
exp(0.1s)
size=600bytes
exp(0.001s)
exp(0.0001s)
100246
998683
1004
100246
998683
s1-d1
d1[0]
received
258
9305
9257
210
17146
19603
loss
74.30%
90.72%
99.07%
79.08%
82.90%
98.04%
throughput(bps)
throughput/pa
cket sent
26832
26.7250996
967720
9.653452507
962728
0.963997585
10080
10.03984064
823008
8.209883686
940944
0.942184857
Hình Thông lượng của luồng 1 khi thay đổi kích thước và tốc dộ phát gói
Page 17
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
b. Luồng 2 s2-d1
size=1000byte
s
size=500bytes
sendInterval
exp(0.1s)
S2 sent
969
S2-d1
d1[0]
received
195
exp(0.001s)
100225
6113
93.90%
489040
4.879421302
exp(0.0001s)
999182
8733
99.13%
698640
0.699211955
exp(0.1s)
969
116
88.03%
4640
4.788441692
exp(0.001s)
100225
5955
94.06%
238200
2.376652532
exp(0.0001s)
999182
11085
98.89%
443400
0.443762998
loss
79.88%
throughput(bps
)
15600
throughput/packe
t sent
16.09907121
Hình Thông lượng luồng 2 khi thay đổi kích thước và tốc độ phát gói
Page 18
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
c. Luồng 3 s2-d2
S2-d2
size=1000byte
s
size=500bytes
D2[0] recv
291
loss
72.47%
throughput(bps)
23280
throughput/pack
et sent
22.0246
100031
13588
86.42%
1087040
10.86703
exp(0.0001s)
998331
24140
97.58%
1931200
1.934429
exp(0.1s)
1057
186
82.40%
7440
7.038789
exp(0.001s)
100031
13045
86.96%
521800
5.216383
exp(0.0001s)
998331
38711
96.12%
1548440
1.551029
sendInterval
exp(0.1s)
S2 sent
1057
exp(0.001s)
Page 19
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Hình Thông lượng luồng 3 khi thay đổi kích thước và tốc độ phát gói
Nhận xét:
•
Thông lượng là lượng dữ liệu thực sự được truyền qua mạng trên
một đơn vị thời gian
Page 20
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
•
Khi thay đổi kích thước của mỗi gói trên từng luồng và giữ nguyên
giá trị đối với các luồng còn lại ta thấy với tất cả các luồng thì thông
•
lượng đều giảm khi giảm kích thước gói
Khi tăng tốc độ phát gói thì tỉ lệ mất gói tăng dần và thông lượng
cũng giảm dần. Điều này hoàn toàn phù hợp với lý thuyết
Page 21
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
Kết Luận
Qua bài tập này chúng em đã hiểu rõ hơn về hoạt động của mạng hàng đợi,
phương thức truyền UDP thông qua phương pháp mô phỏng trên OmNET++.Nắm
được phương pháp đánh giá thông lượng của các giao thức đó dựa trên công mô
phỏng OMNET++. Do thời gian có hạn chế chưa thể mô phỏng được nhiều lần nên
kết quả có thể có sai số so với lý thuyết. Ngoài ra bài tập có thể mở rộng cho việc tính
toán đối với những hệ thống mạng hàng đợi lớn hơn hoặc sử dụng các giao thức
khác.Chúng em rất mong nhận được ý kiến đóng góp của cô giáo cùng các bạn để có
thể hoàn thiện hơn bài tập lớn này.
Page 22
Bài tập lớn cơ sở truyền số liệu – Nhóm 12
TÀI LIỆU THAM KHẢO
1.
2.
3.
4.
5.
Bài giảng cơ sở truyền số liệu – Viện Điện Tử Viễn Thông – ĐHBKHN
/>Omnet++ Tutorial.
Page 23