LỜI MỞ ĐẦU 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.. 1.1.3 Hoạt độn
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - TRUYỀN THÔNG
-*** -
BÁO CÁO BÀI TẬP LỚN CƠ SỞ TRUYỀN SỐ LIỆU Đề tài 11: 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 – Nhóm 11 Nguyễn Cao Cường 20111221
Trần Mạnh Toàn 20112344
Giang Văn Hiến 20111561
Phan Bá Duy 20111348
Phan Văn Đồng 20112575
Hà Nội, 11/2014
Trang 2
Mục lục LỜI MỞ ĐẦU 2
Phần 1: Yêu cầu đề bài và kế hoạch thực hiện 3
1.1 Tìm hiểu về giao thức UDP: 3
1.1.1 Tổng quan về giao thức UDP: 3
1.1.2 Một số thuật ngữ UDP: 4
1.1.3 Hoạt động của giao thức UDP: 6
1.1.4 Các ưu điểm của UDP: 6
1.1.5 Các nhược điểm của giao thức UDP: 9
1.1.6 Khi nào thì nên sử dụng UDP: 7
1.2.Yêu cầu đề bài 8
1.3 Phân công công việc 8
Phần 2: Quá trình thực hiện 9
2.1 Xây dựng kịch bản và mô phỏng 9
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: 18
- Thời gian trễ tại các node 18
2.3 Vẽ đồ thị biểu diễn số lượng gói đến d1 từ s1 có trễ lớn hơn 0.03s 21
2.4 Thống kê số lượng gói đến d1và d2 trễ nhỏ hơn 0.1s 21
2.5 Thông lượng của từng luồng và tỉ lệ mất gói 22
KẾT LUẬN 32
TÀI LIỆU THAM KHẢO 33
Trang 3
LỜI MỞ ĐẦU
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++ phiên bản 4.4.1 - 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
Trong quá trình làm bài tập lớn nhóm em rất cảm ơn cô Trần Thị Ngọc Lan đã hướng dẫn tận tình, để nhóm em có thể hoàn thành công việc được giao một cách tốt nhất và đùng thời hạn
Em xin chân thành cảm ơn!
Trang 4
Phần 1: Yêu cầu đề bài và kế hoạch thực hiện
1.1 Tìm hiểu về giao thức UDP:
1.1.1 Tổng quan về giao thức UDP:
TCP/IP là một họ các giao thức được gọi là họ giao thức IP, bao gồm bốn tầng Cần nhớ rằng TCP/IP không phải là một giao thức mà thực sự là một họ các giao thức, và bao gồm các giao thức mức thấp khác như IP, TCP và UDP UDP nằm ở tầng giao vận, phía trên giao thức IP Tầng giao vận cung cấp khả năng truyền tin giữa các mạng thông qua các gateway Nó sử dụng các địa chỉ IP để gửi các gói tin trên Internet hoặc trên mạng thông qua các trình điều khiển thiết bị khác nhau TCP và UDP là một phần của họ giao thức TCP/IP; mỗi giao thức có những
ưu và nhược điểm riêng của nó
Giao thức UDP là giao thức đơn giản, phi liên kết và cung cấp dịch vụ trên tầng giao vận với tốc độ nhanh Nó hỗ trợ liên kết một-nhiều và thường được sử dụng thường xuyên trong liên kết một-nhiều bằng cách sử dụng các datagram multicast và unicast
Giao thức IP là giao thức cơ bản của Internet TCP và UDP đều là hai giao thức tầng giao thức vận trên cơ sở của giao thức IP Hình dưới đây chỉ ra cách ánh
xạ mô hình OSI ánh xạ vào kiến trúc TCP/IP và họ giao thức TCP/IP
Trang 53 Tầng mạng Tầng Internet ICMP,IP, IGMP
2 Tầng liên kết dữ liệu
Tầng mạng
Ethernet, ATM, Frame Relay,
Trang 6số hiệu cổng, như 7 (Echo) hoặc trên cổng 23 (Telnet)
UDP có các cổng thông dụng sau:
15 Netstat- Network Status-Tình trạng mạng
53 DNS-Domain Name Server
69 TFTP-Trivial File Transfer Protocol
Giao thức truyền tệp thông thường
137 NetBIOS Name Service
138 Dịch vụ Datagram NetBIOS
Trang 7
TTL (Time To Live)
Giá trị TTL cho phép chúng ta thiết lập một giới hạn trên của các router mà một datagram có thể đi qua Giá trị TTL ngăn ngừa các gói tin khỏi bị kẹt trong các vòng lặp định tuyến vô hạn TTL được khởi tạo bởi phía gửi và giá trị được giảm đi bởi mỗi router quản lý datagram Khi TTL bằng 0, datagram bị loại bỏ Multicasting
Multicasting là phương pháp dựa trên chuẩn có tính chất mở để phân phối các thông tin giống nhau đến nhiều người dùng Multicasting là một đặc trưng chính của giao thức UDP Multicasting cho phép chúng ta truyền tin theo kiểu một nhiều, ví dụ gửi tin hoặc thư điện tử tới nhiều người nhận, đài phát thanh trên Internet, hoặc các chương trình demo trực tuyến
1.1.3 Hoạt động của giao thức UDP:
Khi một ứng dụng dựa trên giao thức UDP gửi dữ liệu tới một host khác trên mạng, UDP thêm vào một header có độ dài 8 byte chứa các số hiệu cổng nguồn và đích, cùng với tổng chiều dài dữ liệu và thông tin checksum IP thêm vào header của riêng nó vào đâu mỗi datagram UDP để tạo lên một datagram IP:
1.1.4 Các ƣu điểm của UDP:
Không cần thiết lập liên kết UDP là giao thức phi liên kết, vì thế không cần phải thiết lập liên kết Vì UDP không sử dụng các tín hiệu handshaking, nên
có thể tránh được thời gian trễ Đó chính là lý do tại sao DNS thường sử dụng giao thức UDP hơn là TCP-DNS sẽ chậm hơn rất nhiều khi dùng TCP Tốc độ UDP nhanh hơn so với TCP Bởi vì điều này, nhiều ứng dụng thường được cài đặt trên giao thức UDP hơn so với giao thức TCP
Hỗ trợ hình trạng (Topology) UDP hỗ trợ các liên kết 1-1, 1-n, ngược lại TCP chỉ hỗ trợ liên kết 1-1
Kích thước header UDP chỉ có 8 byte header cho mỗi đoạn, ngược lại TCP cần các header 20 byte, vì vậy sử dụng băng thông ít hơn
Trang 8
1.1.6 Khi nào thì nên sử dụng UDP:
Rất nhiều ứng dụng trên Internet sử dụng UDP Dựa trên các ưu và nhược điểm của UDP chúng ta có thể kết luận UDP có ích khi:
Sử dụng cho các phương thức truyền broadcasting và multicasting khi chúng
ta muốn truyền tin với nhiều host
Kích thước datagram nhỏ và trình tự đoạn là không quan trọng
Không cần thiết lập liên kết
Ứng dụng không gửi các dữ liệu quan trọng
Không cần truyền lại các gói tin
Băng thông của mạng đóng vai trò quan trọng
Việc cài đặt ứng dụng UDP trong Java cần có hai lớp là DatagramPacket và DatagramSocket DatagramPacket đóng gói các byte dữ liệu vào các gói tin UDP được gọi là datagram và cho phép ta mở các datagram khi nhận được Một DatagramSocket đồng thời thực hiện cả hai nhiệm vụ nhận và gửi gói tin Để gửi
dữ liệu, ta đặt dữ liệu trong một DatagramPacket và gửi gói tin bằng cách sử dụng DatagramSocket Để nhận dữ liệu, ta nhận một đối tượng DatagramPacket từ DatagramSocket và sau đó đọc nội dung của gói tin
UDP không có bất kỳ khái niệm nào về liên kết giữa hai host Một socket gửi tất cả dữ liệu tới một cổng hoặc nhận tất cả dữ liệu từ một cổng mà không cần quan tâm host nào gửi Một DatagramSocket có thể gửi dữ liệu tới nhiều host độc lập hoặc nhận dữ liệu từ nhiều host độc lập Socket không dành riêng cho một liên kết cụ thể thể nào cả như trong giao thức TCP Các socket TCP xem liên kết mạng như là một luồng: ta gửi và nhận dữ liệu với các luồng nhập và luồng xuất nhận được từ socket UDP không cho phép điều này; ta phải làm việc với từng gói tin Tất cả dữ liệu được đặt trong datagram được gửi đi dưới dạng một gói tin Gói tin này cũng có thể nhận được bởi một nhóm hoặc cũng có thể bị mất Một gói tin
Trang 9
không nhất thiết phải liên quan đến gói tin tiếp theo Cho trước hai gói tin, không
có cách nào để biết được gói tin nào được gửi trước và gói tin nào được gửi sau
1.2.Yêu cầu đề bài
1 Mạng hàng đợi
Nút s1 phát ra luồng gói gửi đến đầu cuối d1 và d2, 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à 1200bytes và 900bytes Tốc độgói phát ra từluồng s1 đến d1 plà 900 gói/s.Còn tốc độgói phát ra trên các luồng còn lại là 1000 gói/s Giảsửcác gói phát đều tuân theo phân bốPoisson
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 300s
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 từs1 có trễlớn hơn 0.03s
4 Vẽ đồ thị biểu diễn số lượng gói đến d1 d2 bị trễ nhỏ hơn 0.1s
5 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
1.3 Phân công công việc
Trang 10
2 Phân tích yêu cầu đề bài, dựng kịch bản Cả nhóm
3 Tìm hiểu về UDP trong inet và phân bố Poisson Cả nhóm
5 Tìm hiểu cách tính và cách mô phỏng trễ Cường, Toàn
6 Tìm hiểu cách tính và cách mô phỏng thông lượng và tỉ lệ mất gói Cường, Duy
7 Thống kê và tính toán kết quả Hiến, Duy
Phần 2: Quá trình thực hiện
1.1.5 Các nhƣợc điểm của giao thức UDP:
So với giao thức TCP, UDP có những nhược điểm sau:
Thiếu các tín hiệu bắt tay Trước khi gửi một đoạn, UDP không gửi các tín hiệu bắt tay giữa bên gửi và bên nhận Vì thế phía gửi không có cách nào để biết datagram đã đến đích hay chưa Do vậy, UDP không đảm bảo việc dữ liệu đã đến đích hay chưa
Sử dụng các phiên Để TCP là hướng liên kết, các phiên được duy trì giữa các host TCP sử dụng các chỉ số phiên (session ID) để duy trì các liên kết giữa hai host UDP không hỗ trợ bất kỳ phiên nào do bản chất phi liên kết của nó
Độ tin cậy UDP không đảm bảo rằng chỉ có một bản sao dữ liệu tới đích Để gửi
dữ liệu tới các hệ thống cuối, UDP phân chia dữ liệu thành các đoạn nhỏ UDP không đảm bảo rằng các đoạn này sẽ đến đích đúng thứ tự như chúng đã được tạo
ra ở nguồn Ngược lại, TCP sử dụng các số thứ tự cùng với số hiệu cổng và các gói tin xác thực thường xuyên, điều này đảm bảo rằng các gói tin đến đích đúng thứ tự
mà nó đã được tạo ra
Trang 11
Bảo mật TCP có tính bảo mật cao hơn UDP Trong nhiều tổ chức, firewall và router cấm các gói tin UDP, điều này là vì các hacker thường sử dụng các cổng UDP
Kiểm soát luồng UDP không có kiểm soát luồng; kết quả là, một ứng dụng UDP được thiết kế tồi có thể làm giảm băng thông của mạng
Bảng dưới đây tổng kết những sự khác nhau giữa hai giao thức TCP và UDP:
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 từ s1 và s2 tương ứng là 1200 bytes và 900 bytes
s1 truyền đến d1 và d2, s2 truyền hai 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à tốc độgói phát ra từluồng s1 đến d1 plà 900 gói/s.Còn tốc độgói phát ra trên các luồng còn lại
là 1000 gói/s
Tốc độ của các kênh truyền giữa các node
node 1 - node 3: 6 Mbps node 2 - node 3: 6 Mbps node 3 - node 4: 4 Mbps node 4 - node 5: 1,5 Mbps
Trang 12
node 4 - node 6: 2 Mbps
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 trong mạng
inet.nodes.inet.StandardHost; định nghĩa 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
Trang 14b 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
Trang 17
metric="0" interface="ppp2"/>
<route hosts="node4" destination="192.128.1.6" netmask="/32"
gateway="node5" metric="0" interface="ppp1"/>
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.0s và giá trị trung bình là 0.001s (tương đương 1000 gói/s)
**.s1.udpApp[ 0 ].sendInterval = exponential ( 0 00111 s)
**.s1.udpApp[ 1 ].sendInterval = exponential ( 0 001 s)
**.s2.udpApp[ 0 ].sendInterval = exponential ( 0 001 s)
**.s2.udpApp[ 1 ].sendInterval = exponential ( 0 001 s)
Độ dài hàng đợi tại các node:
**.ppp[*].queueType = "DropTailQueue"# in routers
Trang 18**.s1.udpApp[ 0 ].messageLength = 1200 bytes
**.s1.udpApp[ 0 ].sendInterval = exponential ( 00111 s)
#Luong 2: Gui tu s1-d2
**.s1.udpApp[ 1 ].destAddresses = "192.123.1.1"#d2
**.s1.udpApp[ 1 ].destPort = 100
**.s1.udpApp[ 1 ].messageLength = 1200 bytes
**.s1.udpApp[ 1 ].sendInterval = exponential ( 001 s)
**.s2.udpApp[ 0 ].messageLength = 900 bytes
**.s2.udpApp[ 0 ].sendInterval = exponential ( 001 s)
#Luong 4: Gui tu s2-d2
**.s2.udpApp[ 1 ].destAddresses = "192.123.1.1"#d2
**.s2.udpApp[ 1 ].destPort = 100
**.s2.udpApp[ 1 ].messageLength = 900 bytes
**.s2.udpApp[ 1 ].sendInterval = exponential ( 001 s)
Trang 19
Kết quả mô phỏng mạng:
2 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:
- Thời gian trễ tại các node
Thời gian trễ tại các hàng đợi được biểu diễn bằng tham số vector queueingTime
có tại mỗi node Sử dụng tham số trên ta có thể vẽ được đồ thị thời gian trễ tại các node như sau:
Trang 20Node 4 có trễ hàng đợi lớn nhất và có 2 hàng đợi ra node 5 và node 6:
- Hàng đợi ra node 5 (d1) trễ nhiều nhất
- Hàng đợi ra node 6 (d2) trễ ít hơn
Node 3 có trễ hàng đợi nhỏ hơn node 4 nhưng lớn hơn tại node 1 và node 2
Node 2 có trễ nhỏ hơn node 1
- Thời gian trễ toàn tuyến:
Thời gian trễ toàn tuyến của từng luồng được lưu vào tham số vector
endToEndDelay, chỉ trễ của gói tin gửi từ nguồn tới hai đích d1 và d2.Tuy nhiên đối với d1 có 2 luồng gửi đến từ nguồn s1 và s2, do vậy trong tham số
endToEndDelay của d1 ta phải lọc được trễ nào là từ gói của s1 hay s2 gửi đến
Dữ liệu của tham số endToEndDelay có thể hiển thị qua tab Output Vector của OMNeT++, song ta cần phải xuất dữ liệu ra file Excel để vẽ được đồ thị
Trang 215 Thời gian trễ toàn tuyến của 4 luồng
Trang 22
2.3 Vẽ đồ thị biểu diễn số lƣợng gói đến d1 từ s1 có trễ lớn hơn 0.03s
6 số lượng gói đến d1 từ s1 có trễ lớn hơn 0.03s
2.4 Thống kê số lƣợng gói đến d1và d2 trễ nhỏ hơn 0.1s.
Trang 23Tại mỗi luồng sẽ tính toán đối với 2 kích thước gói:
- Luồng 1: 1200 bytes,1000 bytes và 800 bytes
- Luồng 2 và luồng 3: 900 bytes, 700 bytes và 500 bytes
Thay đổi tốc độ phát gói tin tương ứng với các luông như sau:
- Luồng từ s1-d1 lần lượt là: 0.00111, 0.003, 0.005(s) Tức tốc độ phát sinh gói lần lượt là : 900, 333,200(goi/s)
- Luồng từ s1-d2, s2-d1, s2-d2 lần lượt là: 0.001, 0.003, 0.005(s).Tức tốc
độ phát sinh gói lần lượt là : 1000, 333,200(goi/s)
Tính toán tỉ lệ mất gói tin của từng luồng, dưạ vào số lượng gói phát đi từ nguồn và số lượng gói nhận được tại đích của luồng đó
Thông lượng sẽ là lượng dữ liệu được truyền qua mạng từ nguồn đến đích
0 0.02 0.04 0.06 0.08 0.1 0.12