Công cụ mô phỏng mạng NS

Một phần của tài liệu Cơ sở mạng thồng tin ppt (Trang 146 - 148)

Chương 6 KỸ THUẬT MÔ PHỎNG

6.3. Công cụ mô phỏng mạng NS

6.3.1. Cấu trúc

Hình 3. Cấu trúc của công cụ mô phỏng NS

Mô phỏng NS được xây dựng trên cơ sở hai ngôn ngữ:

C++: NS có một thư viện phong phú về đối tượng mạng và giao thức được mô tả bằng C++ (thí dụ như các nút mạng, đường nối, nguồn, hàng đợi .v.v.).

OTcl: Ngoài ra chương trình thông dịch OTcl (OTcl là ngôn ngữ mở rộng các chức năng hướng đối tượng của Tcl) cho phép người sử dụng xây dựng các kịch bản mô phỏng cụ thể và truyền tham số cho các thực thể C++. Mỗi đối tượng (tương ứng với từng thực thể) trong C++ sẽ có một đối tượng tương ứng ở lớp OTcl như thể hiện ở Hình 3.

Như vậy C++ là phần cho dữ liệu và là lõi của NS còn OTcl là phần đặt cấu hình cho chương trình mô phỏng. NS phải sử dụng 2 ngôn ngữ là do có hai nhiệm vụ khác nhau khi tiến hành mô phỏng. Một mặt, mô tả chi tiết các giao thức, các khối hoặc cơ chế của mạng yêu cầu phải sử dụng các ngôn ngữ bậc cao để xử lý số liệu, thực hiện các thuật toán. Đối với nhiệm vụ này do yêu cầu về tính hiệu quả của chương trình mô phỏng (như khoảng thời gian chạy chương trình, quản lý bộ nhớ .v.v.), các thực thể bắt buộc phải được viết dưới C++. Mặt khác, các quá trình xây dựng một kịch bản mô phỏng như đặt cấu hình cho các phần tử mạng, truyền các tham số cụ thể, thiết lập topo cho mạng thì chỉ sử dụng các phần tử đã có sẵn nên yêu cầu ở khâu này là thời gian thiết lập một cấu hình phải thấp (vì các kịch bản mô phỏng có thể lặp đi lặp lại). Vì vậy, một chương trình thông dịch như OTcl là thích hợp.

Trong một kịch bản mô phỏng dưới dạng OTcl do người dung đưa ra, chúng ta có thể thiết lập một topo mạng, những giao thức và ứng dụng cụ thể mà chúng ta muốn mô phỏng và mẫu của đầu ra mà chúng ta mong nhận được từ mô phỏng, OTcl có thể sử dụng những đối tượng được biên dịch

trong C++ qua một liên kết OTcl (sử dụng tclCL là thư viện gắn kết để dễ dàng chia sẻ chức năng và biến) để tạo ra một ánh xạ 1-1 của đối tượng OTcl cho mỗi đối tượng C++ cũng như định nghĩa sự liên hệ giữa các đối tượng đó.

Như đã trình bày ở trên, một trong những phần cơ bản của NS cũng là bản danh sách sự kiện mà ở đây người ta gọi là bộ phân hoạch sự kiện (event scheduler). NS sử dụng 4 phương pháp phân hoạch sự kiện khác nhau, được trình bày cụ thể trong [4]. Một sự kiện là một đối tượng trong C++ bao gồm một số hiệu nhận dạng (ID) duy nhất, thời gian được phân hoạch và con trỏ trỏ đến một đối tượng thực thi sự kiện đó.

Cấu trúc của một sự kiện và bộ phân hoạch sự kiện được định nghĩa như sau:

class Event { public:

Event* next_; /* event list */

Handler* handler_; /* handler to call when event ready */ double time_; /* time at which event is ready */

int uid_; /* unique ID */ Event() : time_(0), uid_(0) {} };

/*

* The base class for all event handlers. When an event’s scheduled * time arrives, it is passed to handle which must consume it.

* i.e., if it needs to be freed it, it must be freed by the handler. */

class Handler { public:

virtual void handle(Event* event); };

Các gói tin trong NS được định nghĩa từ lớp Event như sau:

class Packet : public Event { private:

friend class PacketQueue; u_char* bits_;

...

protected:

public:

Packet* next_; /* for queues and the free list */ static int hdrlen_;

Packet() : bits_(0), datalen_(0), next_(0) {} u_char* const bits() { return (bits_); } static void free(Packet*);

... };

6.3.2. Các tiện ích trong NS hỗ trợ cho mô phỏng mạng [Pending]

Các module phục vụ cho mô phỏng mạng máy tính và viễn thông: Mobile networks, mobile IP, DiffServ, IntServ, MPLS, UDP/TCP/IP, SCTP, routing protocols (mobile ad-hoc, unicast, multicast), RED, RIO, WFQ, CSMA/CD, ON/OFF source, Pareto .v.v.

Các chương trình trợ giúp trong việc khai thác số liệu mô phỏng: Nam, XGraph .v.v.

6.3.3.Thí dụ (Pending)

Một phần của tài liệu Cơ sở mạng thồng tin ppt (Trang 146 - 148)