NAM TRACE

Một phần của tài liệu nghiên cứu chương trình mô phỏng mạng ns và các công cụ hỗ trợ, và cơ sở để áp dụng các bài toán ứng dụng trên ns để đánh giá tính khả thi và tối ưu của chúng trên mạng (Trang 37 - 42)

Về File vết (File trace) chúng ta đã giới thiệu qua ở trên, bây giờ chúng ta sẽ đi sâu vào tìm hiểu file vết của NAM (Nam Trace)

2.1.Định dạng Nam Trace:

Lớp Trace trong C++ đã sử dụng trong việc tìm vết của NS nay được sử dụng cho việc tìm vết của Nam. Phương thức Trace::format() định nghĩa định dạng nam sử ụng trong các File vết của nam được sử dụng cho sự hiển thị của các mô phỏng Ns. Nếu macro NAM_TRACE được định nghĩa (mặc định được định nghĩa trong trace.h), thì các mã sau đó sẽ được thực hiện trong phần hàm Trace::format

if (namChan_ != 0) sprintf(nwrk_, "%c -t "TIME_FORMAT" -s %d -d %d -p %s -e %d -c %d -i %d -a %d -x %s.%s %s.%s %d %s %s", tt, Scheduler::instance().clock(), s, d, name, th->size(), iph->flowid(), th->uid(), iph->flowid(), src_nodeaddr, src_portaddr, dst_nodeaddr, dst_portaddr, seqno,flags,sname);

Mỗi File Nam trace có một định dạng cơ bản. Mỗi dòng là một sự kiện Nam. Kí tự đầu tiên trên dòng định nghĩa kiểu sự kiện và được theo sau bởi vài cờ được thiết lập lựa chọn trên sự kiện đó. Mỗi sự kiện được kết thúc bằng một dòng kí tự mới.

<event-type> -t <time> <more flags>...

Có 2 đoạn trên File đó, Các sự kiện cấu hình khởi tạo tĩnh và các sự kiện động. Tất cả sự kiện với –t* trong chúng là các sự kiện cấu hình và nên là bắt đầu của File. Một điều chú ý rằng Nam có thể được dẫn file trace từ một dòng cho phép sử dụng các ứng dụng thời gian thực. (Xem Using Stream with Realtime Applications)

2.2. Các sự kiện khởi tạo:

Phần đầu của File vết chứa các thông tin khởi tạo. Tất cả các sự kiện khởi tạo đều bắt đầu bằng cờ -t* . Điều này nói cho Nam biết rằng sự kiện này cần phân tích trước khi bất cứ một hành động nào xảy ra.

Version : Định nghĩa Nam version khi hiển thị File Trace:

V -t <time> -v <version> -a <attr>

Thường chỉ có một chuỗi Version trong Tracefile được đưa ra, và nó thường là dòng đầu tiên của File.

Ví dụ : V -t * -v 1.0a5 -a 0

Cờ -v 1.0a5 nói Nam biết rằng đó là Script yêu cầu Version của Nam > 1.0a5.

Wireless : Nếu bạn muốn sử dụng Node Wireless trong Nam bạn cần khởi tạo sự kiện

wireless.

W -t * -x 600 -y 600

Cho chúng ta biết được kích thước của layout đối với Wireless thực sự. –x : chiều rộng ; -y : chiều cao.

Phân lớp : Thông tin địa chỉ phân lớp được định nghĩa bởi :

A -t <time> -n <levels> -o <address-space size> -c <mcastshift> -a <mcastmask> -h <nth level> -m <mask in nth level> -s <shift in nth level>

Vết này cho chúng ta nội dung của các lớp, nếu địa chỉ phân lớp được sử dụng trong mô phỏng .

- Cờ -n <levels> chỉ ra tổng số các tầng phân lớp, 1 đối với địa chỉ flat, 2 đối với địa chỉ phân lớp lớp 2.

- Cờ -o <address-space size> cho biết tổng số bits được sử dụng đối với địa chỉ flat. - Cờ -h <nth level> chỉ ra mức của phân lớp địa chỉ.

- Cờ -m <mask> và -s <shift> chỉ ra mặt nạ địa chỉ và bit dịch chuyển của lớp trong phân lớp địa chỉ. Ví dụ : A -t * -n 3 -p 0 -o 0xffffffff -c 31 -a 1 A -t * -h 1 -m 1023 -s 22 A -t * -h 2 -m 2047 -s 11 A -t * -h 3 -m 2047 -s 0

Hộp nhập bảng màu (Color Table Entry) :

Ta có thể xây dựng các hộp nhập bảng màu sử dụng: c -t <time> -i <color id> -n <color name>

Nam cho phép liên quan một một giữa màu và số nguyên. Đây là điều hết sức hữu ích trong các gói tin màu. Dòng id của một gói tin được sử dụng với màu của gói tin tương ứng với bảng màu. Chú ý rằng tên màu nên là một trong các tên trong cơ sở dữ liệu màu

2.3. Nodes:

Vết của Nam định nghĩa trạng thái Node :

n -t <time> -a <src-addr> -s <src-id> -S <state> -v <shape> -c <color> -i <l-color> -o <color>

- “n” định nghĩa trạng thái Node (adsbygoogle = window.adsbygoogle || []).push({});

- Cờ “-t” chỉ thời gian và “-a” , “-s” chỉ địa chỉ và id của Node

- “-S” cho biết trạng thái truyền của Node. Các giá trị truyền trạng thái tốt là: + UP, DOWN chỉ ra lỗi và phục hồi Node

+ COLOR chỉ ra sự thay đổi màu của Node. Nếu COLOR được đưa ra, -c <color> cho ta biết giá trị màu mới. Cũng như vậy -o <color> cho ta tìm lại vết có thể phục hồi màu cũ của Node

+ DLABEL thêm nhãn vào Node. Nếu DLABEL được đưa ra, -l <old-label> -L <new-label> chỉ nhãn cũ và nhãn mới. Shape cho ta hình dạng của Node. Màu của Node có thể nhận dạng thông qua cờ -i

- “v” là hình dạng của Node. Các giá trị có thể là: + Tròn

+ Hộp + Lục giác Ví dụ:

n -t * -a 4 -s 4 -S UP -v circle -c tan -i tan

Định nghĩa một Node với địa chỉ và Id là 4 hình dạng tròn , màu là nâu vàng(tan) và nhãn của i là màu nâu vàng

2.4. Links :

Nam trace đối với các trạng thái link được cho bởi :

l -t <time> -s <src> -d <dst> -S <state> -c <color> -o orientation -r <bw> -D <delay>

Ở đó,<state> và <color> chỉ cùng một trạng thái(và cùng một định dạng) như mô tả ở trên trong phần các vết trạng thái Node. Cờ -o cho ta các hướng của Link. Các giá trị có thể là :

_ + up + down + right + left + up-right + down-right + up-left + down-left

+ angle between 0 and 2pi

Cờ -r và –D cho ta băng thông (Mb) và độ trễ (ms) .

2.5. Queues:

Các trạng thái Queue của vết nam :

q -t <time> -s <src> -d <dst> -a <attr>

Queue được hiển thị trong Nam như một đường thẳng với các gói (các hình vuông nhỏ) được đóng gói. Trong các sự kiện vết Queue, cờ -a chỉ ra hướng của đường Queue (góc giữa đường Queue và đường nằm ngang, theo chiều kim đồng hồ.)

Ví dụ : Dòng chỉ một queue phát triển theo chiều dọc tăng lên với màn hình (0.5 có nghĩa là một góc so với đường nằm ngang là pi/2)

q -t * -s 0 -d 1 -a 0.5

2.6. Các gói tin: (Packets)

Khi một dòng một tả một gói tin, sự kiện có thể là +(tăng) ; -(giảm); r(nhận); d(bỏ) ; h(bước).

<type> -t <time> -e <extent> -s <source id> -d <destination id> -c <conv> -i <id> Trong đó, Type là một trong các kiểu sau:

+ h Hop : Gói tin bắt đầu được truyền trên Link từ nguồn tới đích và qua next hop

+ r receive : Gói tin đã kết thúc truyền và bắt đầu được nhận tại đích

+ d Drop : Gói tin đã bị bỏ từ hàng đợi hay Link từ nguồn tới đích. Drop ở đây có nghĩa

là không phân biệt giữa Drop trên Queue hay Drop trên Link. Điều này được quyết định bởi Drop time

+ Enter queue : Gói tin đã vào hàng đợi từ nguồn tới đích + Leave queue : Gói tin đã ra khỏi hàng đợi từ nguồn tới đích. Các cờ khác và các ý nghĩa :

+ -t <time> là thời gian sự kiện hoạt động (adsbygoogle = window.adsbygoogle || []).push({});

+ -s<source id> Node khởi tạo.

+ -d<destination id> Node đích

+ -p<pkt-type> là tên mô tả của kiểu gói tin quan sát được

+ -e<extent> là kichs thước của gói tin (bytes)

+ -c<conv> là conversation id và flow-id của phiên đó

+ -i<id> là id của gói tin trong conversation

+ -a<attr> là thuộc tính gói tin, được sử dụng như màu của id

+ -x<src-na.pa><dst-sa.na><seq><flags><sname> được chuyển từ File vết của Ns và

nó cho Node nguồn, đích và các địa chỉ cổng, sequence number, các cờ và các kiểu thông điệp.

Ví dụ: -x {0.1 -2147483648.0 -1 --- SRM_SESS}

Cho biết một thông điệp SRM đựơc gửi từ node 0 (port 1) Các cờ thêm vào cho vài giao thức:

+ -P <packet type> cho ta một chuỗi ASCII chỉ rõ một dấu phẩy phân biệt danh sách

các kiểu gói tin. Dưới đây là một vài giá trị :

o TCP Một gói tin TCP.

o ACK Tạo ACK.

o SRM Gói tin dữ liệu SRM.

+ -n <sequence number> Cho ta thứ tự của gói tin

2.7. Đánh dấu Node :

Đánh dấu Node được tô màu ở tâm các Node hình tròn, hình hộp hay các hình lục giác. Chúng được tạo bởi :

m -t <time> -n <mark name> -s <node> -c <color> -h <shape> -o <color> và được xoá bởi :

m -t <time> -n <mark name> -s <node> -X

Chú ý là mỗi lần tạo, một Node đã đánh dấu không thể thay đổi hình dạng của nó. Một vết Nam thể hiện đánh dấu Node là :

m -t 4 -s 0 -n m1 -c blue -h circle

chỉ ra node 0 đuợc đánh dấu với hình tròn xanh tại thời điểm 1.4ms. Tên của dấu là m1.

2.8. Tìm vết Agent: (Agent Tracing )

Các sự kiện vết Agent được dùng để hiển thị trạng thái giao thức. Chúng luôn được liên kết với các Nodes. Một sự kiện Agent có một tên, với một định danh duy nhất cho agent. Một Agent được thể hiện như một hình vuông với tên trong đó, và một đường Link giữa nó và Node. Các sự kiện Agent được xây dựng sử dụng các định dạng sau đây:

a -t <time> -n <agent name> -s <src>

Bởi vì trong ns , các Agent có lẽ được đính vào trong Node, một Agent có lẽ được xoá trong Nam với câu lệnh:

a -t <time> -n <agent name> -s <src> -X

Ví dụ, Dòng dưới tạo mọt agent tên là srm(50 nối với Node 5 tại thời điểm 0 a -t 0.00000000000000000 -s 5 -n srm(5) (adsbygoogle = window.adsbygoogle || []).push({});

2.9. Tìm vết biến (Variable Tracing):

Để hiển thị các biến trạng thái lien quan tới các agent protocol, chúng ta sử dụng các sự kiện vết. Hiện tại chúng ta cho phép một đặc tính hiển thị một biến đơn giản, …, một biến với một biến đơn. Chú ý rằng biến đơn giản được coi như chuỗi (không kể khoảng trống). Mọi đặc tính được yêu cầu liên quan tới Agent. Sau đó, nó có thể thêm hay thay đổi bất cứ khi nào sau khi agent của nó được tạo ra. Dòng vết tạo một đặc tính :

f -t <time> -s <src> -a <agentname> -T <type> -n <varname> -v <value> -o <prev value> Cờ <Type> là :

+ v đôí với biến đơn giản

+ l đối với danh sách

+ s đối với bộ dừng thời gian

+ u thời gian khởi tạo bộ đếm thời gian

+ d bỏ bộ đếm thời gian.

Ví dụ:

f -t 0.00000000000000000 -s 1 -n C1_ -a srm(1) -v 2.25000 -T v Các đặc tính xoá được sử dụng:

Phần III : Các bài toán mô phỏng

Một phần của tài liệu nghiên cứu chương trình mô phỏng mạng ns và các công cụ hỗ trợ, và cơ sở để áp dụng các bài toán ứng dụng trên ns để đánh giá tính khả thi và tối ưu của chúng trên mạng (Trang 37 - 42)