Giới Thiệu NS2 Và Cài Đặt NS2 Nhóm Inpg12


Giới Thiệu NS2 Và Cài Đặt NS2 Nhóm Inpg12
5 (100%) 3 votes

Phần mềm mô phỏng mạng NS2

  • NS2 là phần mềm mô phỏng mạng điều khiển sự kiện riêng rẽ hướng đối tượng, được phát triển tại đại học Califonia, Berkely.
  • NS2 được viết bằng ngôn ngữ C++ và OTcl. Trong đó, C++ dùng để xử lí dữ liệu, các thao tác về gói tin còn Octl được sử dụng để định dạng cấu hình mô phỏng, điều khiển mô phỏng.
  • NS rất hữu ích cho việc mô phỏng mạng diện rộng (WAN) và mạng local (LAN). Bốn lợi ích lớn nhất của NS2 phải kể đến đầu tiên là:
    • Khả năng kiểm tra tính ổn định của các giao thức mạng đang tồn tại
    • Khả năng đánh giá các giao thức mạng mới trước khi đưa vào sử dụng
    • Khả năng thực thi những mô hình mạng lớn mà gần như ta không thể thực thi được trong thực tế

Khả năng mô phỏng nhiều loại mạng khác nhau

  • NS2 là phần mềm mã nguồn mở có sẵn cho môi trường Linux.Để chạy NS-2 trong Windowns ta cần dùng phần mềm giả lập môi trường.
  • NS thực thi các giao thức mạng như:
    • Các mô hình mạng: LAN, WLAN, di động, vệ tinh,…
    • Các giao thức mạng như: TCP, UDP…
    • Các dịch vụ nguồn lưu lượng như: FTP, CBR, VBR, Telnet, http…
    • Các kỹ thuật quản lý hàng đợi: Vào trước Ra trước (Drop Tail), Loại bỏ sớm ngẫu nhiễn – RED (Random Early Drop) và Xếp hàng dựa trên sự phân lớp – CBQ (Class-Based Queueing)…
    • Các thuật toán định tuyến như: Dijkstra, Distance Vector, Link State…
    • Các Chuẩn IEEE 802.11, IEEE 802.3,…
    • NS-2 cũng thực thi multicasting và vài giao thức lớp Điều khiển truy cập đường truyền (MAC) đối với mô phỏng LAN.

Kiến trúc thư mục NS-2 và NAM trong môi trường Linux. NS-2 và NAM đều là các thư mục con của ns-allinone-2.28. NS-2 bao gồm các thực thi mô phỏng (bằng mã C++ và mã OTcl), các kịch bản Otcl kiểm tra tính hiệu lực và các kịch bản OTcl minha

Hình 1: Kiến trúc thư mục cài đặt của NS-2 và NAM

 

  • Cấu trúc của NS-2 bao gồm các thành phần được chỉ ra dưới Hình 2b

                        Hình 2: Tổng quan về NS dưới góc độ người dùng

     

    • chức năng của chúng được mô tả như sau:
    • OTcl Scrip Kịch bản OTcl
    • Simulation Program Chương trình Mô phòng
    • OTcl Bộ biên dịch Tcl mở rộng hướng đối tượng
    • NS Simulation Library Thư viện Mô phỏng NS
    • Event Scheduler Objects Các đối tượng Bộ lập lịch Sự kiện
    • Network Component Object Các đối tượng Thành phần Mạng
    • Network Setup Helping Module          Các mô đun Trợ giúp Thiết lập Mạng
    • Plumbling Modules Các mô đun Plumbling
    • Simulation Results Các kết quả Mô phỏng
    • Analysis Phân tích
    • NAM Network Animator Minh họa Mạng NAM
    • NS là Bộ biên dịch Tcl mở rộng hướng đối tượng: bao gồm các đối tượng Bộ lập lịch Sự kiện, các đối tượng Thành phần Mạng và các mô đun Trợ giúp Thiết lập Mạng (hay các mô đun Plumbing). Để sử dụng NS-2, user lập trình bằng ngôn ngữ kịch bản OTcl. User có thể thêm các mã nguồn Otcl vào NS-2 bằng cách viết các lớp đối tượng mới trong OTcl. Những lớp này khi đó sẽ được biên dịch cùng với mã nguồn gốc. Kịch bản OTcl có thể thực hiện những việc sau:
      • Khởi tạo Bộ lập lịch Sự kiện
      • Thiết lập Mô hình mạng dùng các đối tượng Thành phần Mạng
      • Báo cho nguồn traffic khi nào bắt đầu truyền và ngưng truyền packet trong Bộ lập lịch Sự kiện
    • Thuật ngữ plumbing được dùng để chỉ việc thiết lập mạng, vì thiết lập một mạng nghĩa là xây dựng các đường dữ liệu giữa các đối tượng mạng bằng cách thiết lập con trỏ “neighbour” cho một đối tượng để chỉ đến địa chỉ của đối tượng tương ứng. Mô đun plumbing OTcl trong thực tế thực hiện việc trên rất đơn giản. Plumbing làm nên sức mạnh của NS.
    • Thành phần lớn khác của NS bên cạnh các đối tượng Thành phần Mạng là Bộ lập lịch Sự kiện. Bộ lập lịch Sự kiện trong NS-2 thực hiện những việc sau:
      • Tổ chức Bộ định thời Mô phỏng
      • Huỷ các sự kiện trong hàng đợi sự kiện
      • Triệu gọi các Thành phần Mạng trong mô phỏng
    • Phụ thuộc vào mục đích của user đối với kịch bản mô phỏng OTcl mà kết quả mô phỏng có thể được lưu trữ như file trace. Định dạng file trace sẽ được tải vào trong các ứng dụng khác để thực hiện phân tích:
      • File nam trace (file.nam) được dùng cho công cụ Minh họa mạng NAM
      • File Trace (file.tr) được dùng cho công cụ Lần vết và Giám sát Mô phỏng XGRAPH hay TRACEGRAPH

c

Hình 3: Luồng các sự kiện cho file Tcl chạy trong NS

  • Hình 4 là kiến trúc chung của NS. User có thể tưởng tượng mình đang đứng ở góc trái dưới, thiết kế và chạy các mô phỏng trong Tcl. Tcl dùng các đối tượng mô phỏng trong OTcl. Các đối tượng Bộ lập lịch Sự kiện và hầu hết các đối tượng Thành phần Mạng thực thi bằng C++ và sẵn có cho OTcl qua một liên kết OTcl. Liên kết OTcl này được thực thi dùng TclCL. Tất cả đã làm nên NS, bộ biên dịch Tcl mở rộng hướng đối tượng và các thư viện mô phỏng mạng.

d

Hình 4: Kiến trúc của NS-2

  • NS sử dụng hai ngôn ngữ lập trình: Ngôn ngữ kịch bản (Tcl – Tool Command Language, đọc là tickle) và Ngôn ngữ lập trình hệ thống (C/C++). Trong đó
    • Ngôn ngữ C++:
    • Mô phỏng giao thức chi tiết yêu cầu ngôn ngữ lập trình hệ thống
    • Thao tác trên byte, xử lý gói, thực thi thuật toán
    • Tốc độ thời gian thực là quan trọng nhất
    • Thực hiện bất kỳ việc gì mà cần phải xử lý tứng packet của một luồng.
    • Thay đổi hành vi của lớp C++ đang tồn tại theo những hướng đã không được lường trước.
    • Ngôn ngữ Otcl:
    • Mô phỏng những thông số hay cấu hình thay đổi
    • Tham dò nhanh một số tình huống
    • Thời gian tương tác (thay đổi mô hình hay chạy lại) là quan trọng
    • Cấu hình, thiết lập hay những gì chỉ làm một lần.
  • Bằng cách sử dụng C++/OTcl, bộ mô phỏng mạng phải hoàn toàn là hướng đối tượng

 

  • Các đặc tính của NS-2

NS-2 thực thi những tính năng sau:

  • Các kỹ thuật quản lý hàng đợi Router như DropTail, RED, CBQ,
  • Mô phỏng mạng không dây
  • Hành vi nguồn traffic – www, CBR, VBR
  • Các agent truyền tải – UDP, TCP
  • Định tuyến, Luồng gói dữ liệu packet
  • Mô hình mạng, Các ứng dụng – Telnet, FTP, Ping
  • Cài đặt
    • Install NS2
      Run the following commands in a terminal:

      sudo apt-get install ns2
    • Install Nam
      sudo apt-get purge nam
      wget --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" "http://technobytz.com/wp-content/uploads/2015/11/nam_1.14_amd64.zip"
      
      unzip nam_1.14_amd64.zip
      
      sudo dpkg -i nam_1.14_amd64.deb
      
      sudo apt-mark hold nam
    • Ví dụ tệp TCL
      #Create a simulator object
      set ns [new Simulator]
      
      #Define different colors for data flows
      $ns color 1 Blue
      $ns color 2 Red
      
      #Open the nam trace file
      set nf [open out.nam w]
      $ns namtrace-all $nf
      
      #Define a 'finish' procedure
      proc finish {} {
      global ns nf
      $ns flush-trace
      #Close the trace file
      close $nf
      #Execute nam on the trace file
      exec nam out.nam &
      exit 0
      }
      
      #Create four nodes
      set n0 [$ns node]
      set n1 [$ns node]
      set n2 [$ns node]
      set n3 [$ns node]
      
      #Create links between the nodes
      $ns duplex-link $n0 $n2 1Mb 10ms DropTail
      $ns duplex-link $n1 $n2 1Mb 10ms DropTail
      $ns duplex-link $n3 $n2 1Mb 10ms SFQ
      
      $ns duplex-link-op $n0 $n2 orient right-down
      $ns duplex-link-op $n1 $n2 orient right-up
      $ns duplex-link-op $n2 $n3 orient right
      
      #Monitor the queue for the link between node 2 and node 3
      $ns duplex-link-op $n2 $n3 queuePos 0.5
      
      #Create a UDP agent and attach it to node n0
      set udp0 [new Agent/UDP]
      $udp0 set class_ 1
      $ns attach-agent $n0 $udp0
      
      # Create a CBR traffic source and attach it to udp0
      set cbr0 [new Application/Traffic/CBR]
      $cbr0 set packetSize_ 500
      $cbr0 set interval_ 0.005
      $cbr0 attach-agent $udp0
      
      #Create a UDP agent and attach it to node n1
      set udp1 [new Agent/UDP]
      $udp1 set class_ 2
      $ns attach-agent $n1 $udp1
      
      # Create a CBR traffic source and attach it to udp1
      set cbr1 [new Application/Traffic/CBR]
      $cbr1 set packetSize_ 500
      $cbr1 set interval_ 0.005
      $cbr1 attach-agent $udp1
      
      #Create a Null agent (a traffic sink) and attach it to node n3
      set null0 [new Agent/Null]
      $ns attach-agent $n3 $null0
      
      #Connect the traffic sources with the traffic sink
      $ns connect $udp0 $null0  
      $ns connect $udp1 $null0
      
      #Schedule events for the CBR agents
      $ns at 0.5 "$cbr0 start"
      $ns at 1.0 "$cbr1 start"
      $ns at 4.0 "$cbr1 stop"
      $ns at 4.5 "$cbr0 stop"
      #Call the finish procedure after 5 seconds of simulation time
      $ns at 5.0 "finish"
      
      #Run the simulation
      $ns run

 

Leave a Reply