Kiến trúc của NS

Một phần của tài liệu Đánh giá hiệu năng một số giao thức Proactive của công nghệ mạng Ad-Hoc (Trang 45 - 50)

NS là một phần mềm hướng đối tượng sử dụng hai ngôn ngữ C++ và OTcl.Phần dữ liệu và phần điều khiển được tách biệt

+ C++ cho phần dữ liệu :Xử lý mỗi gói tin ,thực thi nhanh chóng ,chi tiết hóa ,bổ sung đầy đủ cho việc điều khiển ,các thuật toán đối với bộ dữ liệu lớn + OTcl cho phần điều khiển :

-Mô phỏng các cấu hình cho kịch bản -Thực thi nhanh chóng ,dễ dàng cấu hình lại

-Thao tác với các đối tượng C++ hiện tại -Viết mã nhanh chóng và thay đổi dễ dàng

Hình 3.2 Đơn giản hoá cách nhìn của người sử dụng

NS không những được viết bởi OTcl mà còn được viết bởi C++. Vì lý do hiệu quả NS phân ra sự thực thi đường dẫn dữ liệu từ những sự thực thi đường dẫn điều khiển. Để giảm bớt thời gian xử lý gói và sự kiện (không phải là thời gian mô phỏng )lịch biểu sự kiện và các đối tượng thành phần cơ bản của mạng trong phần dữ liệu được viết và biên dịch sử dụng C++.Những đối tượng đã được biên dịch này được làm sẵn cho trình biên dịch OTcl qua một lien kết OTcl để tạo ra một đối tượng OTcl thích hợp với mỗi đối tượng C++ và thực hiện các chức năng điều khiển ,các biến cấu hình được cung cấp bởi đối tượng C++ hoạt động như các hàm thành viên và các biến thành viên của đối tượng OTcl tương ứng.

Hình 3.3 Tính đối ngẫu của C++ và OTcl

Hình 3.3 cho thấy một ví dụ phân cấp đối tượng trong C++ và OTcl. Một điều cần lưu ý trong hình là các đối tượng C++ cho phép một sự kết nối OTcl

hình thành một sự phân cấp. Sự phân cấp đối tượng OTcl rất giống với sự phân cấp đối tượng C++

Hình 3.3 cho thấy kiến trúc chung của NS

Hình 3.4 Kiến trúc chung của NS

Trong hình này một người dung chung (không phải là người phát triển NS) có thể đứng ở góc đáy trái thiết kế và thực thi những sự mô phỏng trong Tcl sử dụng các đối tượng mô phỏng trong thư viện OTcl. Các lịch biểu sự kiện và hầu hết các thành phần của mạng được thực hiện trong C++ và đưa đến OTcl qua một lien kết OTcl được thực hiện bởi sự sử dụng Tclcl. Toàn bộ những cái tạo nên NS là trình biên dịch Tcl hướng đối tượng mở rộng và các thư viện mô phỏng mạng.

Các thành phần của mạng

Như đã nói nhiều đến trong phần trên. Mục này sẽ trình bày về các thành phần của NS ,hầu hết là các thành phần cấu thành mạng .

Hình 3.5 cho thấy một sự phân cấp lớp OTcl bộ phận của NS điều này sẽ giúp cho ta hiểu rõ các thành phần của mạng. Gốc của sự phân cấp là lớp TclObject là lớp gốc của tất cả các đối tượng thư viện OTcl (lịch biểu,các thành phần mạng,bộ định giờ và các đối tượng khác bao gồm cả NAM).Tương tự như lớp gốc OTcl NsObject là lớp gốc của tất cả các đối tượng thành phần mạng cơ bản điều khiển các gói tin mà có thể tạo ra các đối tượng cấu thành mạng cơ bản như là các nút và các liên kết. Các thành phần mạng cơ bản lại được chia ra thành hai lớp con gồm có Connector và Classifier dựa vào số đường dẫn dữ liệu đầu ra. Các đối tượng cơ bản cơ bản của mạng có thể có duy nhất một đường dẫn dữ liệu đầu ra đối với lớp Connector ,các đối tượng chuyển đổi có thể có nhiều đường dẫn dữ liẹu đầu ra đối với lớp Classifier

+ Nút và sự định tuyến :

Một nút là một đối tượng hỗn hợp bao gồm toàn bộ đối tượng nút và các đối tượng phân loại như trong hình 3.6

Hình 3.6 Nút (Unicast và Multicast)

Có hai loại nút trong NS. Một là nút Unicast có một bộ phân loại địa chỉ thực hiện việc định tuyến Unicast và một bộ phân loại cổng. Một nut Multicast bổ sung thêm một bộ phân loại để phân loại các gói tin Multicast từ các gói tin Unicast và bộ phân loại Multicast để thực hiện định tuyến Multicast. Trong NS các nút Unicast là các nút được mặc định. Để tạo ra các nút Multicast người dung phải khai báo rõ rang trong kịch bản OTcl đầu vào ngay sau khi tạo ra một đối tượng lịch biểu. Khi đó tất cả các nút sẽ được tạo ra là các nút Multicast. Sau

khi chỉ rõ kiểu nút người dùng cũng có thể lựa chọn một giao thức định tuyến đặc biệt khác hơn là sử dụng một giao thức định tuyến mặc định

+ Liên kết

Một liên kết là một đối tượng cấu thành chính khác trong NS. Khi một người dung tạo ra một liên kết sử dụng một hàm thành viên duplex-link của đối tượng mô phỏng. Hai liên kết Simplex theo cả hai hướng được tạo ra :

Hình 3.7 Liên kết

Một điều cần lưu ý là một hàng đợi đầu ra của một nút được thực hiện thực sự như một phần của đối tượng liên kết duplex-link. Các gói tin được lấy ra từ một hang đợi được đưa tới đối tượng Delay đóng vai trò độ trễ của mối liên kết ,các gói tin bị thả tại hang đợi được gửi tới đối tượng NullAgent và được giải phóng ở đó. Cuối cùng đối tượng TTL tính toán các thông số time to live cho mỗi gói tin nhận được và cập nhật trường TTL của gói tin

- Tracing:

Trong NS các hoạt động của mạng được mô tả xung quanh các liên kết Simplex. Nếu sự mô phỏng được định hướng mô tả các hoạt động của mạng (Sử dụng $ns trace-allfile hoặc $ns namtrace –allfile )Các liên kết được tạo ra sau dòng lệnh này sẽ được chèn các đối tượng trace như trong hình 3.8

Người dùng cũng có thể tạo ra một đối tượng trace đặc biệt giữa nút nguồn và nút đích khi sử dụng câu lệnh creat-trace(type file src dst).

Khi mỗi đối tượng trace được chèn (Ví dụ EnqT,DeqT,DrpT,và RecvT)nhận một gói tin nó ghi vào một file trace đặc biệt mà không tiêu thụ bất kì thời gian mô phỏng nào và gửi gói tin đó đến đối tượng mạng kế tiếp (adsbygoogle = window.adsbygoogle || []).push({});

- Queue monitor (giám sát hàng đợi)

Về cơ bản các đối tượng tracing được tạo ra để ghi lại thời gian chuyển đến của gói tin tại nơi mà chúng đã được định vị. Mặc dù một người dung có đủ thông tin từ trace ,anh ta có thể quan tâm đến những gì đang diễn ra bên trong một hang đợi đầu ra đặc biệt. Ví dụ một người dung quan tâm đến hành vi của hàng đợi RED có thể muốn đo kích thước động trung bình của hàng đợi và kích thước hiện thời của hang đợi RED(cần thiết cho sự giám sát hang đợi ).Việc giám sát hang đợi có thể đạt được nhờ sử dụng các đối tượng monitor queue và các đối tượng snoop queue như trong hình 3.9

Hình 3.9 Giám sát hàng đợi

Khi một gói tin được chuyển đến một đối tượng snoop queue thong báo cho đối tượng queue monitor sử dụng thong tin này để theo dõi hang đợi. Lưu ý rằng đối tượng snoop queue có thể được sử dụng song song với các đối tượng tracing mặc dù nó không được chỉ ra trong hình 3.9

Một phần của tài liệu Đánh giá hiệu năng một số giao thức Proactive của công nghệ mạng Ad-Hoc (Trang 45 - 50)