Friday, November 23, 2012

Bài 3: Cách vẽ đồ thị bằng công cụ Xgraph trong NS2

Chủ đề: "Mô phỏng mạng bằng công cụ NS2"

    Bài này mình và các bạn sẽ tìm hiểu cách để vẽ một đồ thị bằng Xgraph trong mô phỏng hệ thống mạng sử dụng phần mềm NS2.

Xgraph là một công cụ vẽ đồ thị được cung cấp bởi ns. Câu lệnh gọi Xgraph có thể được khai báo trong kịch bản tcl do đó có thể xuất ra đồ thị ngay sau khi kết thúc công việc mô phỏng.
Đầu vào của Xgraph là một hoặc nhiều asccii file chứa mỗi cặp giá trị x-y trên một dòng (mỗi dòng sẽ vẽ được một điểm trên đồ thị.)
Một số lựa chọn được sử dụng trong Xgraph là:
Title: sử dụng -t "title"
Kích thước: -geometry xsize x ysize.
Tiêu đề cho các mục: -x "xtitle" (Khai báo tiêu đề cho trục x) và -y "ytitle" (khai báo tiêu đề cho trục y).
Màu của chữ và lưới: dùng với cờ -v

Ví dụ nếu ta muốn tính trễ truyền từ nguồn S1 đến đích D2, và vẽ đồ thị trễ truyền này lên file Xgraph.
     Việc trước tiên ta phải tạo 1 file delay1_2.awk để xuất ra file lưu trữ các giá trị trễ ở các thời điểm khác nhau.
Ở đây mình có viết file delay1_2.awk như sau:


BEGIN {sent[5000];receiv[5000];delay[5000]}
{
fromnode= 0;
tonode = 4;
flow = 1;
#Begin Header: Gan cac gia tri $i
event = $1; time = $2;
from = $3; to = $4;
pktype = $5; pksize = $6;
flags = $7; fid = $8;
src = $9; dst = $10;
seqnum = $11; pkid = $12;
#End Header
if ((event == "+") && (from == fromnode) && (fid == flow)) sent[pkid] = time;
if ((event == "r") && (to == tonode) && (fid == flow))
{
receiv[pkid] = time;
delay[pkid] = receiv[pkid] - sent[pkid];
printf time " "delay[pkid] "\n";
}
}
END {}

Đồng thời trong thủ tục finish{} ta phải thêm một số dòng lệnh sau:

#--------------------Khai bao thu tuc "finish"-----------------------
proc finish {} {
   global ns tracefile namfile
   $ns flush-trace
            close $tracefile
            close $namfile     
                        exec nam out.nam &
                        # Tre truyen giua cac link
                        exec awk -f delay1_2.awk out.tr > delayflow1_2.tr

            # Ve do thi bang ham Xgraph:
            # Do thi "Tre truyen end to end"
            exec xgraph delayflow1_2.tr -geometry 800x400 -t " Time Delay 1_2 " -x " Packet" -y " Time (sec) "     &

    exit 0
               
}
Trong đó dòng lệnh:     exec awk -f delay1_2.awk out.tr > delayflow1_2.tr  : file delay1_2.awk sẽ lấy các thông tin trong file bám vết out.tr tính toán sau đó ghi kết quả tìm được vào file: delayflow1_2.tr.
Sau đó lệnh: exec xgraph delayflow1_2.tr -geometry 800x400 -t " Time Delay 1_2 " -x " Packet" -y " Time (sec) "     &  sẽ vẽ đồ thị Xgraph với các giá trị được lấy từ file delayflow1_2.tr vừa tính toán được ở trên.
Các thông số của file out.tr bao gồm 12 cột có cấu trúc như sau:


Dựa vào cấu trúc của file bám vết này các bạn dẽ dàng hiểu được các câu lệnh trong hàm delay1_2.awk. Các bạn chỉ lưu ý một điều là ký hiệu: $1 là giá trị của cột một trong file out.tr và là "Event". $2, $3, $4..., $12 Là các cột tương ứng trong file out.tr

 Tương tự các bạn có thể viết tiếp cho các delay của các luồng còn lại. Đồng thời các bạn có thể tìm hiểu thuật toán để vẽ được chiều dài hàng đợi tức thời tại các node cần quan sát sự thay đổi của chiều dài hàng đợi.



Tài liệu tham khảo tiếng Việt về mô phỏng trong NS2:
 -> Tài liệu 1: Tải về 
 -> Tài liệu 2: Tải về

 -> Download file chạy .tcl và file .awk của Project này:
-> Download file .awk: Tải về
-> Download file .tcl: Tải về

Bài 4: Tạo file awk để vẽ đồ thị "Chiều dài hàng đợi và trễ truyền end to end"

Chú ý: Để máy tính hoạt động trơn tru và được bảo dưỡng tự động thường xuyên, các bạn nên cài một số phần mềm chăm sóc hệ thống. Mình đã và đang sử dụng phần mềm chăm sóc hệ thống Glary Utilities Pro và thấy rất tốt, các bạn có thể Download và cài đặt bản full có kèm theo Key (serial) đầy đủ ( đã test) rất đơn giản tại đây: Tải về 
- Để bảo vệ máy tính tốt hơn chống lại các phần mềm gián điệp, virus độc hại mà không ngốn quá nhiều tài nguyên máy tính ngay cả ở chế độ hoạt động và chế độ chờ, mình khuyến nghị các bạn cài đặt và sử dụng phần mềm diệt Virus Avast internet security( Kèm theo key/Serial đã test): Tại đây
Click Yes nếu bạn cảm thấy bài viết này hữu ích.- Thanks!

49 comments:

  1. chào bạn Thứ Lễ. Mình đang thắc mắc câu lệnh exec awk -f delay1_2.awk out.tr > delayflow1_2.tr : file delay1_2.awk. Mình làm và đã có file delayflow1_2.tr nhưng không có dữ liệu nào được ghi trong file đó cả. Bạn có yahoo không. Mình kết bạn nhé, để tớ hỏi thêm một số vấn đề.Hj

    ReplyDelete
    Replies
    1. Bạn có thể post file delay1_2.awk mà bạn viết lên được không!. Nếu bạn cần mình sẽ gửi cho bạn các file .awk mình viết để bạn tham khảo. Đây là file BTL.tcl của mình: http://khoanhkhaccuocsongviet.blogspot.com/2012/12/bai-5-file-btltcl-cho-mo-hinh-trong-bai.html

      Delete
  2. yahoo của mình: tinhyeuhoagio_hd1989.....Mong hồi âm sớm của bạn...

    ReplyDelete
  3. Bạn cho mình yahoo đi. Hoặc add yahoo của mình vào. Mình có thể nói chuyện kĩ hơn. Mình đang làm mô phỏng giao thức LEACH trong mạng WSN. Bạn có biết về mảng này không. yahoo của mình: tinhyeuhoagio_hd1989

    ReplyDelete
  4. Nếu đọc được lời nhắn này của mình thì bạn add yahoo của mình vào nhé. Yahoo: tinhyeuhoagio_hd1989

    ReplyDelete
    Replies
    1. Mình đã add rồi mà, nếu bạn không thấy thì đây là yahoo của mình: svo_bk27
      Mình cũng vừa mới được học chuyên ngành về mạng nên chắc cũng không thể giúp bạn được nhiều đâu. Thông cảm nhé!

      Delete
  5. c ơi...c đọc đc tin nhắn này của t thì c online yahoo ngay nhé..t online đợi c suốt mà ko gặp đc c.hic..hic

    ReplyDelete
    Replies
    1. Mình đã gửi file .awk vào mail yahoo của bạn. Mình không hay vào yahoo nên hơi trễ một chút, bạn thông cảm nhé!

      Delete
  6. c cho mình số điện thoại được ko..để mình gọi cho cậu. Mình hỏi một số thứ..ok..hoặc facebook cũng được

    ReplyDelete
    Replies
    1. Bạn vào mục "Giới thiệu" của blog có link dẫn đến Facebook: Argan nhé!

      Delete
    2. anh ơi giúp em vs. em muốn vẽ đồ thị nhưng mà chạy file graph nó cứ bị lỗi ý.

      Delete
  7. c gửi file awk vào mail của mình nhé..tinhyeuhoagio_hd1989@gmail.com..cậu cho t hỏi thêm: sau khi chạy file .tcl rồi thì t có thêm 2 file là file .nam và file .tr. Bây giờ làm thế nào để đọc được file .tr đấy hả c.t muốn đọc những dữ liệu trong file .tr để lấy ra một số dữ liệu để vẽ biểu đồ như độ trễ, mức năng lượng...

    ReplyDelete
    Replies
    1. Bạn xem lại địa chỉ Email của bạn đã chính xác chưa, mình không gửi được. Để đọc file .tr thì bạn xem lại cấu trúc của file bám vết .tr ở trên: gồm 12 cột, mỗi cột là một trường cụ thể. Để lấy ra một số dữ liệu để vẽ thì trước tiên bạn phải viết 1 file đuôi .awk để trích xuất, tính toán dữ liệu từ file .tr ban đầu và xuất vào một file riêng dùng lệnh printf (hoặc print), bạn có thể tham khảo file delayflow1_1.awk của mình. Ví dụ để xuất dữ liệu trễ end to end trong delayflow1_1.awk, trong file .tcl: exec awk -f delayflow1_1.awk out.tr > delayflow1_1.tr và để vẽ bằng Xgraph thì:exec xgraph delayflow1_1.tr -geometry 800x400 -t " Time Delay 1_1 " -x " Packet" -y " Time (sec) " &

      Delete
    2. Chào b thứ lễ. E đang làm mô phỏng về giao thức định tuyến AODV, DSDV,DSR. A có tài liệu về phần này cũng như mô phỏng không ạ!! Gửi cho e tham khảo vs ạ. E cảm ơn a. :(. Mail của e: whynotme024@gmail.com

      Delete
  8. uk.email của t là cuoi2308@gmail.com..hj..bạn gửi lại cho mình nhé...t hỏi nhé: thế khi có file delayflow1_1.awk rồi thì ta đặt file đó vào mục chứa với cùng file .tcl à. và chạy file đó như thế nào. chạy trên màn hình lệnh của NS2 với dòng lệnh exec awk -f delayflow1_1.awk out.tr > delayflow1_1.tr à hay là đưa dòng lệnh này vào file .tcl. Tối nay cậu online yahoo được ko?

    ReplyDelete
    Replies
    1. Đã gửi. Bạn đặt file đó vào cùng một thư mục với file .tcl, dòng lệnh đó bạn đặt trong file .tcl nhé. Bạn tham khảo file BTL.tcl của mình ở bài 5 sẽ thấy: http://khoanhkhaccuocsongviet.blogspot.com/2012/12/bai-5-file-btltcl-cho-mo-hinh-trong-bai.html ;
      Tối mình phải đi học nên không online được, bạn thông cảm nhé!

      Delete
  9. Lúc nào bạn đi học về, bạn cứ online nhé, mình chờ bạn...hj

    ReplyDelete
  10. cậu ơi..t gửi qua mail cho cậu file .tcl và file .tr của t nhé...cậu mô phỏng bằng xgraph cho t xem được ko nhé. t làm mà nó toàn báo lỗi thôi.hic. Mong cậu giúp đỡ tớ, t sắp nộp đồ án rồi mà chưa mô phỏng được.hic. Cảm ơn cậu trước nha.

    ReplyDelete
  11. ai có bài nào đánh giá hiệu năng của 1 mô hình mạng k cho gửi cho mình với.đang làm đề tại mà k biết mô phỏng như thế nào.thanks các b nhiều.
    nick fb của m là : http://www.facebook.com/anhdao178
    bạn nào biết nhiều về phần này mong giúp đỡ :)

    ReplyDelete
  12. bạn nào có bài mô phỏng diffserv bằng ns2 không? gửi cho mình với..gmail là doanhang.dtvt@gmail.com
    cám ơn các bạn

    ReplyDelete
    Replies
    1. bạn mô phỏng đc Diffserv ah? cho mình hỏi tẹo?

      Delete
  13. chào bạn, bạn gửi cho mình xin file awk với nhé, mình làm thử nhưng lỗi.
    thanglong.ptit@gmail.com

    ReplyDelete
    Replies
    1. Đã gửi cho bạn rồi nhé!

      Delete
    2. bạn ơi .bạn có bài mô phỏng giao thức SIP trên ns2 k.gửi cho mình với
      mail của mình là:anhvu10021991@gmail.com
      tks bạn nhieuf nhé

      Delete
  14. chào bạn Thứ Lễ. Mình đang làm đồ án đánh giá hiệu năng của các giao thức định tuyến trong mạng adhoc. mình đã tạo và chạy được file.nam rùi, nhưng mình không biết làm thế nào để tính thông lượng, tỉ lệ mất gói tin...trong NS2. Bạn có thể giúp đỡ mình được không. MÌnh cảm ơn bạn nhiều!

    ReplyDelete
  15. chao ban! ban co the gui cho minh awk voi. cam on ban nha.

    ReplyDelete
  16. cái này không tính thời gian đợi hả bạn?

    ReplyDelete
  17. bạn ơi cho mình hỏi sao mình chạy file xgraph lại bị lỗi như thế này
    error in file " out.tr" at line 9567
    unknow line type
    error in file " out.tr" at line 9568
    unknow line type
    error in file " out.tr" at line 9569
    unknow line type
    error in file " out.tr" at line 95610
    unknow line type
    cứ thế bạn ah? bạn biết chỉ giúp mình với

    ReplyDelete
    Replies
    1. Ban gui chi minh file .awk nhe. Cam on truoc. Mail: longnguyenbk@gmail.com

      Delete
    2. Gửi cho bạn rồi nhé!

      Delete
  18. chào tất cả các bạn , mình vừa tham gia bên blog , mình cũng vừa tìm hiểu bên ns2 mà cũng chưa biết gì nhiều , mong pro giúp đở .
    cho mình hỏi là lưu thế này là thế nào bạn , sao mình tìm đường dẫn ko được
    Sau đó bạn chạy file này bằng cách dẫn đường dẫn đến file chứa thư mục các bạn vừa tạo rồi sau đó dùng câu lệnh: ns BTL.tcl

    ReplyDelete
    Replies
    1. Bạn nên tham khảo một chút về tập lệnh trong Linux đã nhé( Google nhiều lắm). Trước tiên bạn sẽ phải tạo và lưu project của mình ở một thư mục nào đó. Giả sử file BTL.tcl của mình được tạo nằm thư mục: Home/ArganSv/Project , để thức hiện chạy file này bạn thực hiện hai công việc sau:
      1. Mở cửa sổ dòng lệnh Terminal và gõ mở thư mục chứa file cần chạy: cd Home/ArganSv/Project
      2. Chạy file BTL.tcl ns BTL.tcl
      -> Thế là được.
      (Vì lâu rồi cũng không biết có chính xác không nữa :) )

      Delete
  19. bạn ThứLễ ơi , cho mình hỏi là sao mình chạy file.tcl rồi, nó chạy ra đồ thị xgraph mà ko hiển thị mô phỏng nam là sao bạn? mình xem đồ thị xgraph rồi mà ko biết phân tích cái trục x , trục y thế nào, miêu tả hàng đợi ra sao , mong bạn giúp đỡ

    ReplyDelete
    Replies
    1. Không hiển thị được file nam có thể cách bạn tạo đồ thị nam chưa đúng, bạn xem lại bài 1 nhé. Còn về phần đồ thị Xgraph bạn có thể mở file .tr do file .awk khi chạy đã tạo ra để quan sát các giá trị thành phần!

      Delete
  20. bạn ơi, bạn có code mô phỏng giao thức SIP trên NS-2 ko cho mình xin với

    ReplyDelete
  21. mình chạy theo ví dụ của bạn THỨ LỂ trong bài 5 mà báo là thiếu file.awk là thế nào bạn?
    can not open queuesize2_3.awk. cái này có phải là code sai hay là cái thiếu phần mềm hả bạn?

    ReplyDelete
    Replies
    1. Bạn phải tạo file queuesize2_3.awk trong cùng thư mục nhé. Phải có file thì mới open được chứ bạn.

      Delete
  22. Tiền Bối Thứ Lễ. cho em mấy cái file.awk với tính thông lượng, tỉ lệ mất gói tin, độ trễ... cho em với Mail: gacon.k3a1@gmail.com

    ReplyDelete
    Replies
    1. Đã gửi cho bạn rồi nhé!

      Delete
    2. mình làm về mạng Adhoc. giao thức DSDV và AODV bạn có thể giúp mình đc ko?
      đang rất cần gấp nạ! mong giup do

      Delete
    3. A nguyên Hung cho e hỏi, a làm được 2 giao thức đấy chưa ạ. Nếu rồi thì gửi e qua mail : whynotme024@gmail.com với ạ. E cũng đang làm về vấn đề đó. e cảm ơn a .

      Delete
    4. A nguyên Hung cho e hỏi, a làm được 2 giao thức đấy chưa ạ. Nếu rồi thì gửi e qua mail : whynotme024@gmail.com với ạ. E cũng đang làm về vấn đề đó. e cảm ơn a .

      Delete
  23. Anh có thể giải thích cho em giá trị của folow trong file awk được không ạ. Em mới làm quen với NS-2
    Em cảm ơn anh ạ!

    ReplyDelete
  24. bạn gửi cho mình các file .awk được không? cám ơn bạn rất nhiều.
    mail: hoainam.bkhnvn@gmail,com

    ReplyDelete
  25. A Thứ Lễ. cho em mấy cái file.awk với tính thông lượng, tỉ lệ mất gói tin, độ trễ... cho em với Mail: ngothanhthao91@gmail.com
    E cảm ơn a nhiều ạ!

    ReplyDelete
  26. Chào bạn, bạn có thể gửi cho tớ file .awk theo địa chỉ mail: phamhonghvkt@gmail.com ?
    Cảm ơn bạn rất nhiều !

    ReplyDelete
  27. anh chị nòa có ví dụ về giao thức định tuyến TORA có thể cho e xem tham khảo vs đc k a. thanks

    ReplyDelete
  28. chạy file.awk thì ntn vậy anh Thứ Lễ?

    ReplyDelete