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.
Dựa trên các kiểu sự kiện có các kiểu cờ khác nhau theo cờ thời gian.
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 X11(user/X11/lib/rgb.txt)
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
- 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
+ -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}
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 NACK Tạo một bỏ 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)
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
+ 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:
f -t <time> -a <agent name> -n <var name> -o <prev value> -X
Phần III : Các bài toán mô phỏng