Đoạn 4
Đoạn 2 Đoạn 3
Đoạn 1 Đoạn 5
Burst
Bit bảo vệ Loại dữ liệu ID của đoạn Chiều dài đoạn Phần kiểm tra Đoạn Contented burst Contenting burst
Vùng xung đột Thời gian chuyển mạch
Thời gian Những đoạn bị rớt
Trong cách rớt phần đi tail-dropping thì các đoạn chồng lấn của contented burst sẽ bị rớt còn trong cách rớt phần head-dropping đầu thì các đoạn của contenting burst chồng
lấn sẽ bị rớt. Ưu điểm của việc tail-dropping hơn head-dropping trong việc thay đổi các
gói sai thứ tự ở node đích với giả thuyết rằng các gói bị rớt được truyền lại sau đó. Việc
head-dropping làm cho các gói đến đích sai thứ tự; tuy nhiên, ưu điểm của head-dropping
là nó chắc chắn rằng một khi burst đến một node không bắt gặp một xung đột nào và sau đó các burst này tiếp tục đi đến đích mà khơng phụ thuộc vào các burst đi sau nó có mức ưu tiên nào đi chăng nữa.
Chương III
PHẦN MỀM MÔ PHỎNG MẠNG NETWORK SIMULATOR (NS2) VÀ PHẦN MÔ PHỎNG
MẠNG OBS 3.1 Giới thiệu về phần mềm Network Simulator NS2 3.1.1 Khả năng của chương trình
Chương trình mơ phỏng NS2 được xây dựng để thực hiện mạng số liệu dựa trên chuyển mạch gói. NS2 có thể mơ tả hoạt động của các giao thức mạng.
3.1.2 Việc xây dựng NS2
NS2 là một chương trình mơ phỏng hướng đối tượng, được viết bằng C++, cùng với một trình thơng dịch OTcl. Trình mơ phỏng hỗ trợ một lớp phân cấp trong C++ (cịn gọi là trình biên dịch phân cấp) và một lớp phân cấp tương tự trong trình thơng dịch OTcl (cịn gọi là trình thơng dịch phân cấp). Chúng có quan hệ chặt chẽ với nhau.
Nếu nhìn một cách khái quát ta thấy có mối quan hệ 1-1 giữa trình biên dịch và trình thơng dịch phân cấp. Nhưng chủ yếu lại là lớp TclObject. Người dùng tạo ra đối tượng mô phỏng mới thơng qua trình thơng dịch, các đối tượng đó được minh hoạ trong trình thơng dịch và được phản ánh chặt chẽ bởi đối tượng quan hệ bên trong trình biên dịch phân cấp.
Trình thơng dịch phân cấp được thiết lập một cách tự động thông qua các phương thức được định nghĩa trong lớp TclClass. Các đối tượng đã được minh hoạ của người dùng được phản ánh thông qua các phương thức định nghĩa trong lớp TclObject. Ngồi ra cịn có các cấp khác trong mã C++ và các tập lệnh OTcl nhưng các cấp bậc khác này không được phản ánh trong TclObject.
Tại sao lại có hai ngơn ngữ? NS sử dụng hai ngơn ngữ bởi vì trình mơ phỏng có hai
cơng việc cần phải làm.
Thứ nhất, về khía cạnh của q trình mơ phỏng của các giao thức yêu cầu một ngơn ngữ lập trình hệ thống có thể vận dụng hiệu quả byte, các gói header và các thuật toán thực thi trên dữ liệu lớn. Để tốc độ thực thi (run-time speed) của các tác vụ đó chiếm ưu
thế, ngược lại thời gian khứ hồi của các tác vụ đó (thời gian thực thi mơ phỏng, tìm lỗi, sửa lỗi, biên dịch lại) lại kém quan trọng hơn.
Thứ hai, phần lớn những nghiên cứu về mạng là tìm kiếm các thơng số hay cấu hình thay đổi không lớn, hay nghiên cứu trên một số địa hình mạng. Trong trường hợp này, thời gian lặp lại (thay đổi mơ hình và thực thi lại) thì quan trọng hơn. Vì quá trình cấu hình chỉ thực hiện một lần (vào lúc bắt đầu của q trình mơ phỏng), nên thời gian thực thi trong tác vụ này ít quan trọng hơn.
NS2 kết hợp các công việc cần thiết đó với hai ngơn ngữ, C++ và OTcl. C++ thực thi nhanh nhưng lại chậm hơn trong quá trình chuyển đổi, do đó nó phù hợp với khía cạnh thực thi giao thức. OTcl thực thi chậm hơn nhưng thời gian chuyển đổi của nó lại rất nhanh, do đó nó lý tưởng với việc thay đổi cấu hình trong quá trình mơ phỏng. NS2
(thơng qua tclcl) giúp liên kết các đối tượng và các biến xuất hiện trong cả hai ngơn ngữ. Tóm lại OTcl dùng để:
- Cho việc cấu hình và thiết lập các thơng số - Lấy các đối tượng có sẵn trong C++
Và C++ dùng để:
- Cho việc xử lý từng gói tin của mỗi luồng
- Cho việc thay đổi cách thể hiện của các đối tượng có sẵn
3.1.3 Cấu trúc của phần mềm NS2
Hình sau mơ tả cấu trúc của phần mềm mô phỏng bao gồm cấu trúc thư mục và chức năng của một số file quan trọng.