1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever

36 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Hệ Mô Phỏng Mạng OMNeT++ Và Mô Phỏng Ứng Dụng UDPClient/Sever
Tác giả Nguyễn Văn Trâm
Người hướng dẫn Mai Cường Thọ
Trường học Trường Đại Học Nha Trang
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo thực tập
Năm xuất bản 2022
Thành phố Khánh Hòa
Định dạng
Số trang 36
Dung lượng 3,43 MB

Cấu trúc

  • CHƯƠNG 1 TÌM HIỂU VỀ HỆ MÔ PHỎNG MẠNG OMNeT++ (7)
    • 1.1 Tổng quan về OMNET++ (7)
      • 1.1.1 Giới thiệu (7)
      • 1.1.2. Các thành phần chính của OMNET++ (7)
      • 1.1.3. Ứng dụng (8)
    • 1.2. Mô hình trong OMNET++ (8)
      • 1.2.1. Cấu trúc phân cấp của các module (8)
      • 1.2.2. Kiểu module (9)
      • 1.2.3. Message, cổng, liên kết (10)
      • 1.2.4. Mô hình truyền gói tin (11)
      • 1.2.5. Tham số (12)
    • 1.3. Sử dụng OMNET++ (13)
      • 1.3.1. Xây dựng và chạy thử các mô hình mô phỏng (13)
      • 1.3.2. Hệ thống file (16)
    • 1.4. Ngôn ngữ NED (17)
      • 1.4.1. Các chỉ dẫn import (17)
      • 1.4.2. Khai báo các kênh (18)
      • 1.4.3. Khai báo các module đơn giản (19)
    • 1.5. Tictoc trong OMNeT++ (20)
  • CHƯƠNG 2 TÌM HIỂU VỀ INET FRAMEWORK (22)
    • 2.1. Giới thiệu (22)
    • 2.2. Mô phỏng mạng trong OMNeT++ sử dụng INET (23)
    • 2.3. Mô phỏng lắp ráp (27)
  • CHƯƠNG 3 TÌM HIỂU VỀ HỆ MÔ PHỎNG ỨNG DỤNG UDPCLIENT/SEVER (27)
    • 3.1. UDP là gì ? (27)
    • 3.2. Các thuật ngữ UDP (28)
      • 3.2.1. Packet (28)
      • 3.2.2. Datagram (28)
      • 3.2.3 MTU (28)
      • 3.2.4. Port (29)
      • 3.2.5. TTL (Time To Live) (29)
      • 3.2.6. Multicasting (30)
      • 3.2.7. Hoạt động của giao thức UDP (30)
    • 3.3. Các ứng dụng của UDP (30)
    • 3.4. Các tính năng của giao thức gói dữ liệu người dùng (31)
    • 3.5. UDP trong OMNeT++ (31)
      • 3.5.1. UDPApp (31)
      • 3.5.2. UDPBasicApp (32)
      • 3.5.3. UdpEchoApp (33)
      • 3.5.4. UdpRequestResponseApp (33)
      • 3.5.5. UdpSink (34)
      • 3.5.6. UdpSocketIo (35)
      • 3.5.7. UdpVideoStreamClient (35)
      • 3.5.8. UdpVideoStreamServer (35)
  • CHƯƠNG 4 KẾT LUẬN VÀ KIẾN NGHỊ (36)
    • 4.1. Kết luận (36)
      • 4.1.1. Ưu điểm (36)
      • 4.1.2. Hạn chế (36)

Nội dung

TÌM HIỂU VỀ HỆ MÔ PHỎNG MẠNG OMNeT++

Tổng quan về OMNET++

OMNeT++ là viết tắt của cụm từ Objective Modular Network Testbed in C+ + OMNeT++ là một ứng dụng cung cấp cho người sử dụng môi trường để tiến hành mô phỏng hoạt động của mạng Mục đích chính của ứng dụng là mô phỏng hoạt động mạng thông tin, tuy nhiên do tính phổ cập và linh hoạt của nó, OMNeT++ còn được sử dụng trong nhiều lĩnh vực khác như mô phỏng các hệ thống thông tin phức tạp, các mạng kiểu hàng đợi (queueing networks) hay các kiến trúc phần cứng OMNeT++ cung cấp sẵn các thành phần tương ứng với các mô hình thực tế Các thành phần này (còn được gọi là các module) được lập trình theo ngôn ngữ C++, sau đó được tập hợp lại thành những thành phần hay những mô hình lớn hơn bằng một ngôn ngữ bậc cao (NED) OMNeT++ hỗ trợ giao diện đồ hoạ, tương ứng với các mô hình cấu trúc của nó đồng thời phần nhân mô phỏng (simulation kernel) và các module của OMNeT++ cũng rất dễ dàng nhúng vào trong các ứng dụng khác.

1.1.2 Các thành phần chính của OMNET++

 Thư viện phần nhân mô phỏng (simulation kernel)

 Trình biên dịch cho ngôn ngữ mô tả hình trạng (topology description language) - NED (nedc)

 Trình biên tập đồ hoạ (graphical network editor) cho các file NED (GNED)

 Giao diện đồ hoạ thực hiện mô phỏng, các liên kết bên trong các file thực hiện mô phỏng (Tkenv)

 Giao diện dòng lệnh thực hiện mô phỏng (Cmdenv)

 Công cụ (giao diện đồ hoạ) vẽ đồ thị kết quả vector ở đầu ra (Plove)

 Công cụ (giao diện đồ hoạ) mô tả kết quả vô hướng ở đầu ra (Scalars)

 Công cụ tài liệu hoá các mô hình

 Các tài liệu hướng dẫn, các ví dụ mô phỏng…

OMNeT++ là một công cụ mô phỏng các hoạt động mạng bằng các module đuợc thiết kế hướng đối tượng OMNeT++ thường được sử dụng trong các ứng dụng chủ yếu như:

 Mô hình hoạt động của các mạng thông tin

 Mô hình hoá các mạng kiểu hàng đợi

 Mô hình hoá các hệ thống đa bộ vi xử lý (multiprocesser) hoặc các hệ thống phần cứng theo mô hình phân tán khác (distributed hardware systems)

 Đánh giá kiến trúc phần cứng

 Đánh giá hiệu quả hoạt động của các hệ thống phức tạp…

Mô hình trong OMNET++

1.2.1 Cấu trúc phân cấp của các module

Một mô hình trong OMNeT++ chứa các module lồng nhau có cấu trúc phân cấp, trao đổi thông tin với nhau bằng cách gửi các message Mỗi mô hình này thường biểu diễn cho một hệ thống mạng Module mức cao nhất trong cấu trúc phân cấp được gọi là module hệ thống Module này có thể chứa các module con, các module con cũng có thể chứa các module con của riêng nó Độ sâu phân cấp đối với các module là không giới hạn, điều này cho phép người sử dụng có thể dễ dàng biểu diễn một cấu trúc logic của một hệ thống trong thực tế bằng cấu trúc phân cấp của OMNeT++.Cấu trúc của mô hình có thể được mô tả bằng ngôn ngữ NED củaOMNeT++.

Hình 1.1 Các module đơn giản và kết hợp

Các module có thể chứa nhiều module con và được gọi là module kết hợp Các module đơn giản là các module có cấp thấp nhất trong cấu trúc phân cấp Các module đơn giản chứa các thuật toán của mô hình. Người sử dụng triển khai các module đơn giản bằng ngôn ngữ C++, sử dụng các thư viện mô phỏng của OMNeT++.

Tất cả các module dù là đơn giản hay phức tạp đều là các đối tượng cụ thể của các kiểu module Trong khi mô tả các mô hình, người sử dụng định nghĩa ra các kiểu module; các đối tượng cụ thể của các kiểu module này được sử dụng như các thành phần của các kiểu module phức tạp hơn. Cuối cùng, người sử dụng tạo module hệ thống như một đối tượng cụ thể của kiểu module đã được định nghĩa trước đó, tất cả các module của mạng đều là module con (hoặc là con của module con) của module hệ thống.

Khi một kiểu module được sử dụng như một khối dựng sẵn (building block), sẽ không thể phân biệt đó là một module đơn giản hay phức tạp.Điều này cho phép người sử dụng có thể tách các module đơn giản ra thành nhiều module đơn giản được nhúng trong một module kết hợp, và ngược lại có thể tập hợp các chức năng của một module kết hợp trong một module đơn giản mà không ảnh hưởng gì đến các kiểu module đã được người sử dụng định nghĩa Kiểu module có thể được lưu trữ trong một file riêng rẽ Điều này cho phép người sử dụng có thể nhóm các kiểu module lại và tạo ra một thư viện thành phần.

Các module trao đổi thông tin bằng việc gửi các message Trong thực tế, message có dạng khung (frame) hoặc là các gói tin (packet) được truyền đi trong mạng Các message có thể có cấu trúc phức tạp tuỳ ý Các module đơn giản có thể gửi các message đi một cách trực tiếp đến vị trí nhận hoặc gửi đi theo một đường dẫn định sẵn thông qua các cổng và các liên kết.

“Thời gian mô phỏng địa phương” (local simulation time) của một module tăng lên khi module nhận được một message Message có thể đến từ một module khác hoặc đến từ cùng một module (message của chính bản thân module - self-message được dùng để thực hiện bộ định thời).

Cổng (gate) là các giao tiếp vào ra của module Message được gửi đi qua các cổng ra và được nhận vào thông qua các cổng vào.

Mỗi kết nối (connection) hay còn gọi là liên kết (link) được tạo bên trong một mức đơn trong cấu trúc phân cấp của các module: bên trong một module kết hợp, một kết nối có thể được tạo ra giữa các cổng tương ứng của hai module con, hoặc giữa cổng của module con với cổng của module kết hợp.

Tương ứng với cấu trúc phân cấp của một mô hình, các message thường di chuyển qua một loạt các kết nối với điểm bắt đầu và kết thúc là các module đơn giản Tập các kết nối đi từ một module đơn giản và đến một module đơn giản được gọi là route Các module kết hợp hoạt động giống như các “cardboard box” trong mô hình, “trong suốt” trong việc chuyển tiếp các message giữa các thành phần bên trong và thế giới bên ngoài.

1.2.4 Mô hình truyền gói tin

Một kết nối có thể có ba tham số đặc trưng Những tham số này rất thuận tiện cho các mô hình mô phỏng mạng thông tin nhưng không hữu dụng lắm cho các kiểu mô hình khác Ba tham số này bao gồm:

 Độ trễ đường truyền (propagation delay) tính bằng giây

 Tỉ số lỗi bit, được tính bằng số lỗi/bit.

 Tỉ số dữ liệu, được tính bằng số bit/s.

Các tham số này là tuỳ chọn Giá trị của các tham số này là khác nhau trên từng kết nối, phụ thuộc vào kiểu của liên kết (hay còn gọi là kiểu của kênh truyền - channel type). Độ trễ đường truyền là tổng thời gian đến của message bị trễ đi khi truyền qua kênh.

Tỉ số lỗi bit ảnh hưởng đến quá trình truyền message qua kênh Tỉ số này là xác suất các bit bị truyền sai Do đó xác suất để một message độ dài n bit truyền đi chính xác là: P(message gửi đi được nhận chính xác) (1 - BER)n trong đó BER là tỉ số lỗi bit và n là số bit của message.

Các message truyền đi đều có một cờ lỗi, cờ này sẽ được thiết lập khi việc truyền message có lỗi.

Tỉ số dữ liệu được tính theo đơn vị bit/s, và nó được sử dụng để tính thời gian để truyền một gói tin Khi tỉ số này được sử dụng, quá trình gửi message đi trong mô hình sẽ tương ứng với việc truyền bit đầu tiên và message được tính là đến nơi sau khi bên nhận đã nhận được bit cuối cùng.

Các module có thể các tham số.Các tham số này có thể được đặt giá trị trong các file NED hoặc các file cấu hình ompnetpp.ini.

Các tham số này có thể được dùng để thay đổi các thuộc tính của các module đơn giản hoặc dùng để biểu diễn cho topology của mô hình

Các tham số có thể có kiểu là chuỗi, số học, giá trị logic hoặc cũng có thể chứa cây dữ liệu XML (XML data tree) Các biến kiểu số trong các biểu thức có thể nhận giá trị từ các tham số khác, gọi hàm, sử dụng các biến ngẫu nhiên từ các nguồn phân tán hoặc nhận giá trị trực tiếp được nhập vào bởi người sử dụng.

Các tham số có kiểu số có thể được dùng để cấu hình topology rất dễ dàng Nằm trong các module kết hợp, các tham số này có thể được dùng để chỉ ra số module con, số cổng giao tiếp và cách các kết nối nội bộ được tạo ra.

Sử dụng OMNET++

1.3.1 Xây dựng và chạy thử các mô hình mô phỏng

Một mô hình OMNeT++ bao gồm những phần sau:

 Ngôn ngữ mô tả topology - NED (file có phần mở rộng ned): mô tả cấu trúc của module với các tham số, các cổng Các file ned có thể được viết bằng bất kỳ bộ soạn thảo hoặc sử dụng chương trình GNED có trong OMNeT++

 Định nghĩa cấu trúc của các message (các file có phần mở rộng msg): Người sử dụng có thể định nghĩa rất nhiều kiểu messsage và thêm các trường dữ liệu cho chúng OMNeT++ sẽ dịch những định nghĩa này sang các lớp C++ đầy đủ

 Mã nguồn của các module đơn giản Đây là các file C++ với phần mở rộng là h hoặc cc. o Hệ thống mô phỏng cung cấp cho ta các thành phần sau:

 Phần nhân mô phỏng Phần này chứa code để quản lý quá trình mô phỏng và các thư viện lớp mô phỏng Nó được viết bằng C++, được biên dịch và được đặt cùng dạng với các file thư viện (các file có phần mở rộng là a hoặc lib).

 Giao diện người sử dụng Giao diện này được sử dụng khi thực hiện quá trình mô phỏng, tạo sự dễ dàng cho quá trình sửa lỗi, biểu diễn (demonstration) hoặc khi thực hiện mô phỏng theo từng khối (batch execution of simulations).

Có một vài kiểu giao diện trong OMNeT++, tất cả đều được viết bằng C++, được biên dịch và đặt cùng nhau trong các thư viện (các file có phần mở rộng là a hoặc lib). a, Thực hiện mô phỏng và phân tích kết quả

Các chương trình thực hiện mô phỏng (the simulation executable) là các chương trình độc lập, tức là nó có thể chạy trên các máy khác không cài đặt OMNeT++ hay các file mô hình tương ứng Khi chương trình khởi động, nó bắt đầu đọc file cấu hình (thông thường là file omnetpp.ini) File này chứa các thiết lập để điều khiển quá trình mô phỏng thực hiện, các biến cho các tham số của mô hình File cấu hình cũng có thể được sử dụng để điều khiển nhiều quá trình mô phỏng, trong trường hợp đơn giản nhất là các quá trình mô phỏng này sẽ được thực hiện lần lượt bởi một chương trình mô phỏng (simulation program). Đầu ra của quá trình mô phỏng là các file dữ liệu Các file này có thể là các file vector, các file vô hướng hoặc các file của người sử dụng OMNeT++ cung cấp một công cụ đồ hoạ Plove để xem và vẽ ra nội dung của các file vector Tuy nhiên chúng ta cũng nên hiểu rằng khó mà có thể xử lý đầy đủ các file kết quả mà chỉ dùng riêng OMNeT++; các file này đều là các file có định dạng để có thể đọc được bởi các gói xử lý toán học của các chương trình như Matlab hay Octave, hoặc có thể được đưa vào bảng tính của các chương trình như OpenOffice Calc, Gnumeric hay

Microsoft Excel Tẩt cả các chương trình này đều có chức năng chuyên dụng trong việc phân tích số hoá, vẽ biểu diễn (visualization) vượt qua khả năng của OMNeT++ Các file vô hướng cũng có Đồ án tốt nghiệp Sinh viên:Trần Thị Hoài Lớp: CT1002 Ngành :Công nghệ thông tin 46 thể được biểu diễn bằng công cụ Scalar Nó có thể vẽ được các biểu đồ, các đồ thị dựa vào tập hợp các toạ độ (x, y) và có thể xuất dữ liệu vào clipboard để có thể sử dụng trong các chơng trình khác nhằm đưa những phân tích chi tiết hơn. b, Giao diện người sử dụng

Mục đích chính của giao diện người sử dụng là che những phần phức tạp bên trong cấu trúc của các mô hình đối với người sử dụng, dễ dàng điều khiển quá trình mô phỏng, và cho phép người sử dụng có khả năng thay đổi các biến hay các đối tượng bên trong của mô hình Điều này là rất quan trọng đối với pha phát triển và sửa lỗi trong dự án Giao diện đồ hoạ cũng có thể được sử dụng để trình diễn hoạt động của mô hình Cùng một mô hình người sử dụng có thể trên nhiều giao diện khác nhau mà không cần phải thay đổi gì trong các file mô hình Người sử dụng có thể kiểm thử và sửa lỗi rất dễ dàng qua giao diện đồ hoạ, cuối cùng có thể chạy nó dựa trên một giao diện đơn giản và nhanh chóng có hỗ trợ thực hiện theo khối (batch execution). c, Các thư viện thành phần

Các kiểu module có thể được lưu tại những vị trí độc lập với chỗ mà chúng thực sự được sử dụng Đặc điểm này cung cấp cho người sử dụng khả năng nhóm các kiểu module lại với nhau và tạo ra các thư viện thành phần. d, Các chương trình mô phỏng độc lập

Các chương trình thực hiện quá trình mô phỏng có thể được lưu nhiều lần, không phụ thuộc vào các mô hình, sử dụng cùng mộtthiết lập cho các module đơn giản Người sử dụng có thể chỉ ra trong file cấu hình mô hình nào sẽ được chạy Điều này tạo khả năng cho người sử dụng có thể xây dựng những chương trình thực hiện lớn bao gồm nhiều quá trình mô phỏng, và phân phối nó như một công cụ mô phỏng độc lập Khả năng linh hoạt của ngôn ngữ mô tả topology cũng hỗ trợ cho hướng tiếp cận này.

Sau khi cài đặt OMNet++, thư mục omnetpp trên hệ thống máy của bạn nên chứa các thư mục con dưới đây.Hệ thống mô phỏng:

 omnetpp/ thư mục gốc của OMNeT++

 bin/ các công cụ trong OMNeT++ (GNED, nedtool )

 include/ các file header cho mô hình mô phỏng

 lib/ các file thư viện

 bitmaps/ các biểu tượng đồ hoạ

 doc/ các file hướng dẫn, readme

 manual/ file hướng dẫn dạng HTML

 tictoc-tutorial/ giới thiệu sử dụng OMNeT++

 api/ API tham chiếu dạng HTML

 nedxml-api/ API tham chiếu cho thư viện NEDXML

 src/ mã nguồn của tài liệu

 src/ mã nguồn của OMNeT++

 nedc/ nedtool, trình biên dịch message

 sim/ phần nhân mô phỏng

 parsim/ các file dành cho việc thực hiện phân tán

 netbuilder/ các file dành cho việc đọc động các file NED

 envir/ mã nguồn cho giao diện người sử dụng

 cmdenv/ giao diện người dùng dòng lệnh

 tkenv/ giao diện người sử dụng dựa trên Tcl/tk

 gned/ công cụ soạn thảo file NED

 plove/ công cụ vẽ và phân tích đầu ra dạng vector

 scalars/ công cụ vẽ và phân tích đầu ra dạng vô hướng

 utils/ các tiện ích khác

 test/ bộ kiểm thử lùi

 core/ bộ kiểm thử lùi cho thư viện mô phỏng

 distrib/ bộ kiểm thử lùi

 samples/ thư mục chứa các mô hình mô phỏng mẫu

 aloha/ mô hình của giao thức Aloha

 Thư mục contrib chứa các chương trình có thể kết hợp với OMNeT++ contrib/

 octave/ script của Octave dùng để xử lý kết quả

 emacs/ bộ đánh dấu cú pháp NED cho Emacs

Ngôn ngữ NED

Từ khoá import được sử dụng để thêm các khai báo trong các file mô tả khác Sau khi đã import, người sử dụng có thể sử dụng tất cả các thành phần đã được định nghĩa trong file mô tả đó.

Chú ý khi thêm một file mô tả, chỉ có các thông tin khai báo được sử dụng Cũng tương tự như vậy khi một file được thêm vào không có nghĩa là nó sẽ được dịch khi file chứa nó được dịch Người sử dụng sẽ phải dịch tất cả các file chứ không phải chỉ là file ở mức cao nhất.

Có thể xác định một file thêm vào mà có hoặc không viết phần mở rộng.

Ví dụ: import “ethenet”; //import ethernet.ned

Cũng có thể sử dụng đường dẫn trong khi sử dụng từ khoá import hoặc tốt hơn là sử dụng trình biên dịch của NED với tham số -I để đặt tên cho thư mục chứa các file muốn import.

Một định nghĩa kênh được dùng để xác định kiểu kết nối Tên của kênh có thể được sử dụng sau đó trong file để tạo các liên kết với các tham số khác.

Cú pháp: channel Tên kênh

Ba tham số có thể được gán giá trị trong phần thân của đoạn mã khai báo kênh, tất cả các tham số này đều là các tuỳ chọn: độ trễ, lỗi và tốc độ dữ liệu (datarate) Độ trễ là thời gian trễ trên đường truyền được tính bằng giây Lỗi là tham số đặc trưng cho xác suất truyền sai một bit trên đường truyền Tốc độ dữ liệu là tham số được tính bằng độ rộng băng thông của kênh truyền, được tính bằng bit/s và được dùng để tính thời gian truyền của một gói tin Các thuộc tính có thể xuất hiện theo bất kỳ thứ tự nào trong khai báo Giá trị của các tham số (thuộc tính) nên là các hằng số.

Ví dụ: channel LeasedLine delay 0.0018 // sec error 1e-8 datarate 128000 // bit/sec endchannel

1.4.3 Khai báo các module đơn giản

Các module đơn giản là các khối chương trình được xây dựng sẵn cho các module khác (có thể là các module kết hợp) Các module được khai báo bằng tên và theo quy ước tên của các module này được đặt tên bắt đầu bằng chữ cái in hoa.

Các module đơn giản được khai báo thông qua các cổng và các tham số.

Cú pháp: simple SimpleModuleName parameters:

1.4.3.1 Các tham số của module đơn giản

Các tham số là các biến phụ thuộc vào từng mô hình Tham số của các module đơn giản được sử dụng bởi các hàm (hay còn được gọi là các thuật toán của module) khai báo trong chính module Theo quy ước các tham số sẽ được đặt tên bắt đầu bằng chữ cái thường.

TÌM HIỂU VỀ INET FRAMEWORK

Giới thiệu

INET Framework là một trong những bộ sưu tập mô hình mô phỏng lâu đời nhất và lớn nhất cho OMNeT ++ Nói chung, các khung công tác cung cấp một số mô hình mô phỏng cho các trường ứng dụng cụ thể để mở rộng trình mô phỏng sự kiện rời OMNeT ++ chung và độc lập với ứng dụng INET có thể được xem như là một thư viện giao thức truyền thông tiêu chuẩn tạo điều kiện cho việc mô phỏng các kịch bản mạng truyền thông Nó có một lịch sử lâu dài và gắn bó với OMNeT ++: từ điểm khởi đầu - Bộ giao thức Internet OMNeT ++ - trở lại năm 2000, qua việc đổi tên và tạo lại thành INET Framework vào năm 2004, cho đến việc phát hành INET phiên bản 4 và 4.1 được đề cập trong cuốn sách này chương INET đã phát triển và thúc đẩy sự phát triển của OMNeT ++ giống như OMNeT ++ đã không ngừng ảnh hưởng đến sự phát triển của INET.

INET được thiết kế phù hợp để nghiên cứu và thử nghiệm trong lĩnh vực mô phỏng mạng truyền thông Nó đặc biệt hữu ích khi khám phá các kịch bản mới hoặc thiết kế và xác nhận các giao thức truyền thông mới từ tất cả các lớp của ngăn xếp giao thức.

Mô phỏng lắp ráp

INET là một khuôn khổ mở rộng và phức tạp sử dụng tính mô đun vốn có của OMNeT ++.Phần lớn các thành phần và mô hình của INET có thể được kết hợp theo nhiều cách khác nhau và được điều chỉnh / tham số hóa theo yêu cầu của kịch bản mô phỏng Do đó, việc lắp ráp một kịch bản mô phỏng với INET là khả thi và đồng thời phức tạp vì tính đa dạng và kích thước thuần túy của thư viện mô hình Người dùng có thể bắt đầu lắp ráp các cấu hình và kịch bản nhỏ và mở rộng hoặc tái sử dụng chúng để xây dựng mô phỏng mạng quy mô lớn bằng cách soạn các mô hình hiện có Phạm vi mô-đun mô phỏng có sẵn trong INET được giới thiệucùng với các bước khác nhau để tạo một kịch bản mô phỏng toàn ngăn xếp hoàn chỉnh.

TÌM HIỂU VỀ HỆ MÔ PHỎNG ỨNG DỤNG UDPCLIENT/SEVER

UDP là gì ?

UDP là viết tắt của User Datagram Protocol – một gói tương tự như một gói của thông tin Giao thức UDP làm việc tương tự như TCP, nhưng nó bao gồm tổng quan những thứ đã kiểm tra và có lỗi.

Khi tận dụng UDP, gói chỉ gửi đến bên nhận Bên gửi sẽ không chờ đợi để đảm bảo rằng bên nhận đã nhận được các gói tin – nó sẽ tiếp tục gửi các gói tiếp theo Nếu bạn là người nhận và bạn bỏ lỡ một số gói tin UDP vì quá xấu – bạn không thể yêu cầu những gói tin một lần nữa Không có gì để bảo đảm bạn đang nhận được tổng quan các gói và không có cách nào để yêu cầu một gói một lần nữa nếu bạn bỏ lỡ nó, nhưng bù vào đó, các máy tính hoàn toàn có thể giao tiếp một cách nhanh hơn bình thường hơn.

UDP được tận dụng khi tốc độ là nguyện ước và sửa lỗi là không cần thiết Ví dụ, UDP thường được tận dụng cho chương trình phát sóng trực tiếp và trò chơi trực tuyến.

Các thuật ngữ UDP

Trước khi kiểm tra xem giao thức UDP hoạt động ra làm sao, chúng ta cần làm quen với một số thuật ngữ Trong phần tiếp sau đây, chúng ta sẽ định nghĩa một số thuật ngữ căn bản có liên quan đến giao thức UDP.

Trong truyền dữ liệu, một packet là một dãy các số nhị phân, biểu diễn dữ liệu và các tín hiệu điều khiển và tinh chỉnh, các gói tin này được chuyển đi và chuyển tới host Trong gói tin, thông tin được sắp xếp theo một khuôn dạng cụ thể.

Một datagram là một gói tin độc lập, tự chứa, mang từ A đến Z dữ liệu để định tuyến từ nguồn tới đích mà không cần thông tin thêm.

MTU là viết tắt của Maximum Transmission Unit MTU là một đặc trưng của tầng mối liên quan mô tả số byte thông số tối đa hoàn toàn có thể truyền trong một gói tin Mặt khác, MTU là gói dữ liệu lớn nhất mà môi trường mạng cho trước rất có thể truyền Ví dụ, Ethernet có MTU cố định là 1500 byte Trong UDP, nếu kích thước của một datagram lớn hơnMTU, IP sẽ thực hiện phân đoạn, chia datagram thành các phần nhỏ hơn(các đoạn), vì vậy mỗi đoạn nhỏ có kích thước nhỏ hơn MTU.

UDP tận dụng các cổng để ánh xạ thông số đến vào một tiến trình cụ thể đang chạy trên một máy tính UDP định đường đi cho packet tại vị trí định hướng với cách dùng số hiệu cổng được định hướng trong header của datagram Các cổng được biểu hiện bởi các số 16-bit, vì thế các cổng nằm trong dải từ 0 đến 65535 Các cổng cũng được xem như là các điểm cuối của các kết nối logic, và được chia thành ba loại sau:

 Các cổng phổ biến: Từ 0 đến 1023

 Các cổng đã đăng ký: 1024 đến 49151

 Các cổng động/dành riêng 49152 đến 65535

Chú ý rằng các cổng UDP có thể nhận nhiều hơn một thông điệp ở một thời điểm Trong một số tình huống, các dịch vụ TCP và UDP rất có thể sử dụng cùng một số hiệu cổng, như 7 (Echo) hoặc trên cổng 23 (Telnet).

Chất lượng TTL cho phép chúng ta setup một hạn hẹp trên của các router mà một datagram hoàn toàn 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 trị datagram Khi TTL bằng 0, datagram bị loại bỏ.

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 tận 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.

3.2.7 Hoạt động của giao thức UDP

Giao thức UDP hoạt động tương tự như TCP, nhưng nó bỏ qua quá trình kiểm tra lỗi Khi một ứng dụng sử dụng giao thức UDP, các gói tinđược gửi cho bên nhận và bên gửi không phải chờ để đảm bảo bên nhận đã nhận được gói tin, do đó nó lại tiếp tục gửi gói tin tiếp theo.

Các ứng dụng của UDP

UDP là một giao thức lý tưởng cho các ứng dụng mạng mà trong đó độ trễ là một yếu tố tối quan trọng như trong các giao tiếp game, âm thanh và video Nhờ vậy mà các loại giao tiếp này có thể chịu được việc mất dữ liệu miễn là không ảnh hưởng đến chất lượng dữ liệu khi nhận Trong một số trường hợp, các kỹ thuật chuyển tiếp lỗi được sử dụng để cải thiện chất lượng âm thanh và video bất chấp các mất mát dữ liệu xảy ra.

UDP cũng có thể được sử dụng trong các ứng dụng đòi hỏi khả năng bảo toàn dữ liệu trong lúc truyền tin Khi đó, UDP sẽ được sử dụng trong cấu hình ứng dụng nhằm quản lý quá trình truyền lại các gói bị mất và sắp xếp chính xác các gói đã nhận Cách thức này có thể giúp cải thiện tốc độ truyền dữ liệu của các file dung lượng lớn so với TCP.

Trong các giao tiếp của mô hình OSI (Open Systems Interconnection – hệ thống kết nối mở), UDP cũng giống như TCP thuộc layer 4 – lớp truyền tải UDP thường sẽ phối hợp với các giao thức cấp cao hơn để quản lý các dịch vụ truyền dữ liệu bao gồm Giao thức truyền tải tệp nhỏ(TFTP), Giao thức truyền tải theo thời gian thực (RTSP), giao thức mạng đơn giản (SNP) và hệ thống tên miền (DNS).

Các tính năng của giao thức gói dữ liệu người dùng

Giao thức user datagram có các thuộc tính thích hợp để sử dụng cho các ứng dụng có khả năng chịu được việc mất dữ liệu.

Giao thức cho phép các gói tin có thể được loại bỏ và nhận theo một thứ tự khác biệt so với khi chúng được truyền đi, nhờ vậy giao thức phù hợp với các ứng dụng theo thời gian thực có độ trễ là mối quan tâm hàng đầu.

User datagram cũng có thể được sử dụng cho các giao thức giao dịch, ví dụ như DNS hoặc Network Time Protocol.

Sử dụng giao thức khi một số lượng lớn máy khách được kết nối và việc sửa lỗi thời gian thực là không cần thiết, ví dụ như với gaming, hội thoại,video và truyền phát trực tuyến.

UDP trong OMNeT++

3.5.1 UDPApp Đây là mô-đun hợp chất Mô-đun này tạo lưu lượng truy cập cho một ứng dụng UDP Nguồn lưu lượng truy cập và mô-đun chìm giao thông có thể được xây dựng từ các yếu tố mô hình xếp hàng.

3.5.2 UDPBasicApp Đây là mô-đun đơn giản Gửi các gói UDP đến địa chỉ IP nhất định trong khoảng thời gian nhất định Tương thích với cả Ipv4 và Ipv6.

3.5.3 UdpEchoApp Đây là mô-đun đơn giản.Nghe trên cổng UDP và gửi lại mỗi gói nhận được cho người gửi Lưu ý: khi được sử dụng cùng với UdpBasicApp,thống kê "tuổi thọ gói nhận được" của UdpBasicAppsẽ ghi lại thời gian khứ hồi.

3.5.4 UdpRequestResponseApp Đây là mô-đun hợp chất.Mô-đun này là một ứng dụng máy chủ dựa trên yêu cầu / phản hồi chung Đối với mỗi yêu cầu mà nó nhận được, nó tạo ra một lưu lượng truy cập khác nhau dựa trên dữ liệu mà yêu cầu chứa. Ứng dụng khách hàng có thể là bất kỳ nguồn nào có khả năng tạo các gói với dữ liệu khác nhau Byte đầu tiên của dữ liệu gói xác định lưu lượng phản hồi, có thể được cấu hình để tạo ra các luồng gói phức tạp với các phân phối dữ liệu và thời gian khác nhau.

3.5.5 UdpSink Đây là mô-đun đơn giản có chức năng là iêu thụ và in các gói nhận được từ mô-đun Udp.

3.5.6 UdpSocketIo Đây là kiểu mô-đun đơn giản.Mô-đun này cung cấp xử lý ổ cắm UDP cho các ứng dụng chung.

3.5.7 UdpVideoStreamClient Đây là mô-đun đơn giản là máy khách phát trực tuyến video.Máy khách phát trực tuyến video.

3.5.8 UdpVideoStreamServer Đây là mô-đun đơn giản.Máy chủ luồng video Để được sử dụng vớiUdpVideoStreamClient.

Ngày đăng: 05/12/2022, 10:02

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Các module đơn giản và kết hợp - BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài  Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever
Hình 1.1. Các module đơn giản và kết hợp (Trang 9)
Hình 1.2. Các kết nối - BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài  Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever
Hình 1.2. Các kết nối (Trang 10)
Hình 1.3 Truyền message - BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài  Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever
Hình 1.3 Truyền message (Trang 12)
CHƯƠNG 2: TÌM HIỂU VỀ INET FRAMEWORK 2.1.Giới thiệu - BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài  Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever
2 TÌM HIỂU VỀ INET FRAMEWORK 2.1.Giới thiệu (Trang 22)
INET Framework là một trong những bộ sưu tập mơ hình mơ phỏng lâu đời nhất và lớn nhất cho OMNeT ++ - BÁO CÁO THỰC TẬP CƠ SỞ Đề Tài  Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever
ramework là một trong những bộ sưu tập mơ hình mơ phỏng lâu đời nhất và lớn nhất cho OMNeT ++ (Trang 22)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w