Gói tin (packet)

Một phần của tài liệu Nghiên cứu khả năng tương tác với mạng thực của bộ mô phỏng NS-2 (Trang 52 - 53)

Gói tin là đơn vị cơ sở để trao đổi giữa các đối tượng trong hệ thống mô phỏng. Một gói tin bao gồm một ngăn xếp các header và một không gian lưu dữ liệu.

Hình 3.7 Cấu trúc gói tin

Mỗi header trong ngăn xếp tương ứng với một lớp cụ thể. Thêm vào đó, một header chung cho tất cả các tầng, một trace header chứa thông tin hỗ trợ việc dò vết (trace) của người nghiên cứu. Người sử dụng có thể thêm vào các giao thức mới, tạo các header riêng cho gói tin hoặc sử dụng các header đã có bằng cách thêm trường.

Trong C++, mỗi header là một biến kiểu bản ghi, được trang bị hàm access cho phép truy xuất header tương ứng của một gói tin. Thí dụ, ta có thể sử dụng các biến con trỏ th, iph, tcph, rh để trỏ đến các header tương ứng nhờ hàm access như sau:

hdr_cmn *th = hdr_cmn::access(p); hdr_ip *iph = hdr_ip::access(p); hdr_tcp *tcph = hdr_tcp::access(p); header Packet data (option) cmn header ip header tcp header rtp header trace header ... uid_ : unique id ptype_ : pkt type

size_ : simulated pkt size ts_ : time stamp . . . src_ : source address dst_ : destination address ttl_ : time to live fid_ : flow id . . .

seqno_ : sequence number reason_ : reason for a retransmit hlen_ : header length

hdr_rtp *rh = hdr_rtp::access(p);

Khi đó, biến iph->src_ và iph->dst_ là địa chỉ IP nguồn và IP đích của gói tin p,... Các đối tượng header trên cũng được trang bị thêm hàm accessdata() để trỏ đến dữ liệu thực của gói tin.

Trong thực tế, một gói tin phải chứa dữ liệu của ứng dụng, nhưng trong mô phỏng điều này không cần thiết. Hầu hết các ứng dụng và các agent có trong NS không hỗ trợ việc tạo gói tin mang dữ liệu thực. Tuy nhiên, trong mô phỏng có tương tác với mạng thực, cần sử dụng dữ liệu thực trong gói tin NS. Khi đó ta cần sửa lại các agent hoặc sử dụng các agent có hỗ trợ việc tạo gói tin có dữ liệu thực.

Một phần của tài liệu Nghiên cứu khả năng tương tác với mạng thực của bộ mô phỏng NS-2 (Trang 52 - 53)