Network Simulator.

Slides:



Advertisements
Similar presentations
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
Advertisements

朝阳区统计系统 网络基础知识培训 计算机中心
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
6 Copyright © Oracle Corporation, All rights reserved. 维护控制文件.
NS-2.
Ns2 一個常用的網路模擬器 台灣科技大學資管系資料庫實驗室 洪振洲.
Tool Command Language --11级ACM班 金天行.
進階網路系統 作業 題目: 組別:第二組 組員: 蘇俊吉 盧柏崴 黃明煜 李德偉
作者:陳建民 指導教授:蘇民揚 教授 報告者 : 李承駿
中国家电行业 专业化与多元化道路         第9组               黄超               张黎江               鲍天钰               孙蓉               汤娜                 制作  黄超         
企业的创新 2011级会计学三班 姓名: 吴思思 学号:
路由器繞送協定- 第三章 路由器動態繞送服務
AODV路由协议的正确性研究 蔡雪莲.
Network Simulator 助教:赵俊民.
J2EE与中间件技术 ——Lab.
Author: Shigeki Takeuchi,Hiroyuki Koga, Katsuyoshi Iida,
An Adaptive Cross-Layer Multi-Path Routing Protocol for Urban VANET
指導教授:許子衡 教授 報告學生:翁偉傑 Qiangyuan Yu , Geert Heijenk
Wife Certificate Agenda Why Wi-Fi ? Install and operation chariot.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
計算機網路實驗- 使用NS2模擬多媒體通訊與無線網路(實驗四)
NS2入门与提高 柯志亨 SeaSon 哈尔滨工业大学 计算机学院-数据库中心 SeaSon.
刘世华 导师:方路平 浙江工业大学软件学院 2018年9月20日星期四
網路概論.
网络仿真工具介绍
Computer Network Lab 資碩一 黃麒瑋
亂數函數(Random-Number Function)
Chapter 5 Verilog硬體描述語言
Installation, advance wireless module and evaluation 2008/11/11
打开光盘,点击6100U-Driver文件夹 Open the CD, click the 6100U-Driver to run software.
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
创建型设计模式.
大学计算机基础 典型案例之一 构建FPT服务器.
第4章 OSI傳輸層.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第九單元 Classes and data abstraction I
第七讲 网际协议IP.
NS2 - Basic Ming-Feng Yang.
NS2 – TCP/IP Simulation How-Wei Wu.
校園網路架構介紹與資源利用 主講人:趙志宏 圖書資訊館網路通訊組.
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
PaPaPa项目架构 By:Listen 我在这.
第十三章 TCP/IP 與 Internet 網路連結技術
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
Advisor : Prof. Frank Y.S. Lin Presented by Yen-Yi, Hsu
无线传感器网络的仿真 仿真模块 ①无线信道模块:Channel/WirelessChannel;
程序设计工具实习 Software Program Tool
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
105-1 Data Structure Exam /12/27.
C语言程序设计 主讲教师:陆幼利.
NS2 (Network Simulator - version 2)
Source: Journal of Network and Computer Applications, Vol. 125, No
Speaker: Wang,Song-Ferng Advisor: Dr. Ho-Ting Wu 2015/7/6
分裂对象模型 C++ otcl.
WIRELESS LAN B 邱培哲 B 張宏安.
Toward realistic MPEG4 video transmission simulations
Distance Vector vs Link State
Chapter 10 Mobile IP TCP/IP Protocol Suite
網路模擬技術與應用 授課老師:潘仁義 日期:2014/02/18.
Create and Use the Authorization Objects in ABAP
Visual Basic程序设计 第13章 访问数据库
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
Experiment setup Leverage entities in Dbpedia and compute the cohesiveness among the properties used to describe these entities Set up gold standard for.
Delphi 7.0开发示例.
Distance Vector vs Link State Routing Protocols
大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编.
NS3 & NS2 (network simulator)
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
學生宿舍網路連線設定說明 問題檢測DIY 106/08/28 學校宿舍網路設定說明.
SAS 統計程序實作 PROC MEANS (一個母體)
Presentation transcript:

Network Simulator

NS简介 NS(Network Simulator)它是由LBNL ( Lawrence Berkeley National Laboratory ) 的网络研究小组开发的仿真工具。 NS具有可扩展、易配置、可编程等特点。 NS是面向对象的,离散事件驱动的网络环境模拟器,开发于UC Berkeley,它可以模拟各种IP网络环境。 NS实现了对许多网络协议的模拟,如TCP,UDP,和数据源发生器(traffic source)如FTP,WWW,Telnet,Web,CBR和VBR等。

Ns简介(续) NS也实现了Multicasting和一些应用于局域网的在MAC层的协议。 NS-2由C++和Otcl(加上面向对象特性的TCL脚本程序设计语言,开发于MIT)两种程序设计语言实现。

Ns 简介(续) Ns前端运行Otcl Ns 用C++实现网络协议栈 Otcl:运行速度慢,容易修改 =>场景配置 => 协议栈实现

Tcl与Tk编程环境 Tcl与Tk是安装在Unix/Linux环境下的两个包,它们一起构成了一套开发系统应用程序和图形用户界面接口(GUI)应用程序的环境。 Tcl的全称是Tool Command Language。 Tk是Tcl在X Window环境下的扩展,它包含了Tcl的全部的C库函数,以及支持X Window的窗口、控件等C库函数,为用户开发图形用户界面提供了方便。

举例 proc test {} { set a 43 set b 27 set c [expr $a + $b] set d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} {…………} } # 调用上面的test test

Tcl的面向对象扩展——OTcl Otcl是Tcl的面向对象(Object Oriented)的扩展,在Otcl中加入了类的概念。 对象是类的实例,它有自己的属性和自己的内部操作 虽然和C++中对象和类以及其他面向对象程序设计语言中的概念相同,但是具体实现和语法却存在很大的差别。

举例 Tcl基础 set a 123 ;#creates a variable whose name is a and whose value is 123 set b $a ;#creates b whose value is a’s value set c [expr $b+10] ;#evaluate the characters between the brackets as a TCL script and use the result as the value of c for {set i 0} {$i < 3} {incr i} {puts $i}

举例 Class mom mom instproc greet {} { $self instvar age_ puts "$age_ years old mom say: How are you doing?" } Set a [new mom] $a greet 从实际的otcl程序入手,遇到问题再去查资料,不必从头学

Ns-2的组件体系结构 分类器(classifier) 连接器(connector)

分类器 分类器(classifier)是Ns-2基本网络组件的一个大类。它的基本派生类有地址分类器(AddrClassifier)和多播分类(McastClassifier)等。 拓扑结点(Node)是由一个结点入口对象和若干个分类器(Classifier)组成的一个复合对象。

节点(Node)

连接器(connector) 连接器——Connector是Ns-2基本网络组件中的另一个大类。它的基本派生类对象包括缓冲队列(Queue)、延迟(Delay)、各种产生和处理数据包的代理(Agent)和对象的跟踪器(Trace)。 拓扑结点连接类(Link)是Ns-2中另一个主要的复合组件对象。一个结点和另一个结点之间的简单连接(simplex-link)是单向的。一个最基本的简单连接由一个连接入口、包缓冲队列、延迟处理对象、废弃处理对象和时间处理对象(TTL)组成。 一个结点的输出队列,是通过和这个结点相连的Link中的缓冲队列来实现的。

Link

代理(Agent) UDP TCP Agent/UDP Agent/TCP Agent/TCPSink Agent/TCP/Vegas Agent/TCP/Reno

应用程序(application) Ns-2中有两种类型的“应用程序” 数据源发生器(Traffic Generator) Exponential On/Off Pareto On/Off CBR 模拟的应用程序(Simulated applications) Application/FTP Application/Telnet

举例 Set ns [new Simulator] set f [open out.tr w] $ns trace-all $f set nf [open out.nam w] $ns namtrace-all $nf set n0 [$ns node] set n1 [$ns node] $ns duplex-link $n0 $n1 1Mb 10ms DropTail

set tcp0 [new Agent/TCP] $ns attach-agent $n0 $udp0 set ftp0 [new Application/FTP] $ftp0 attach-agent $tcp0 set sink0 [new Agent/TCPSink] $ns attach-agent $n1 $sink0 $ns connect $tcp0 $sink0 $ns at 1.0 "$ftp0 start“

$ns at 3.0 "finish“ proc finish {} { global ns f nf $ns flush-trace close $f close $nf exec nam out.nam & exit 0 } $ns run

一个简单的无线仿真脚本(1) Scenario containing 3 mobile nodes moving within 670mX670m flat topology using DSDV ad hoc routing protocol TCP and CBR traffic

一个简单的无线仿真脚本(2) #Define Global Variables set ns_ [new Simulator] ; create a ns simulator instance set topo [new Topography] ; create a topology and $topo load_flatgrid 670 670 ; define it in 670x670 area

一个简单的无线仿真脚本(3) #Define standard ns/nam trace set tracefd [open 694demo.tr w] $ns_ trace-all $tracefd set namtrace [open 694demo.nam w] $ns_ namtrace-all-wireless $namtrace 670 670

一个简单的无线仿真脚本(4) #Create “God” set god_ [create-god 3] God is used to store an array of the shortest number of hops required to reach from one node to an other

一个简单的无线仿真脚本(5) #Define how a mobile node should be created $ns_ node-config -adhocRouting DSDV\ -llType LL \ -macType Mac/802_11\ -ifqLen 50 \ -ifqType Queue/DropTail/PriQueue \ -antType Antenna/OmniAntenna \ -propType Propagation/TwoRayGround \ -phyType Phy/WirelessPhy \ -channelType Channel/WirelessChannel \ -topoInstance $topo -agentTrace ON \ -routerTrace OFF \ -macTrace OFF

一个简单的无线仿真脚本(6) Use “for loop” to create 3 nodes: #Create a mobile node set node [$ns_ node] $node random-motion 0 ;# disable random motion Use “for loop” to create 3 nodes: for {set i < 0} {$i<3} {incr i} { set node_($i) [$ns_ node] }

一个简单的无线仿真脚本(7) Mobile Movement Generator Random movement #Define node movement model Mobile Movement Generator $node_(0) set X_ 10.0 $node_(0) set Y_ 400.0 $node_(0) set Z_ 0.0 $node_(0) setdest 400.0 10.0 1.0 Random movement $node start

一个简单的无线仿真脚本(8) #Define traffic model(cbr) set udp1 [new Agent/UDP] $ns_ attach-agent $node_(0) $udp1 set null1 [new Agent/Null] $ns_ attach-agent $node_(2) $null1 set cbr1 [new Application/Traffic/CBR] $cbr1 set packetSize_ 1024 $cbr1 set rate_ 1048576 $cbr1 attach-agent $udp1 $ns_ connect $udp1 $null1 $ns_ at 10.0 "$cbr1 start“

一个简单的无线仿真脚本(9) #Define traffic model(tcp) set tcp1 [new Agent/TCP/Newreno] set sink1 [new Agent/TCPSink] $ns_ attach-agent $node_(0) $tcp1 $ns_ attach-agent $node_(2) $sink1 $ns_ connect $tcp1 $sink1 $tcp1 set fid_ 1 set ftp1 [new Application/FTP] $ftp1 attach-agent $tcp1 $ns_ at 10.0 "$ftp1 start"

一个简单的无线仿真脚本(10) # Tell nodes when the simulation ends for {set i 0} {$i < 3 } {incr i} { $ns_ at200.0 "$node_($i) reset"; } #Tell ns/nam the simulation stop time $ns_ at 200.0 “$ns_ nam-end-wireless 200.00” $ns_ at 200.00 “$ns_ halt” #Start your simulation $ns_ run

数据流

Ns的安装 以2.1b8为例(redhat7.2) 先在网上找到ns-allinone-2.1b8a.tar.gz tar –zxvf ns-allinone-2.1b8a.tar.gz,得到ns-allinone-2.1b8a的目录 Cd ns-allinone-2.1b8a ./install 安装结束

问题的解决 如果在安装过程中遇到问题,可以到www.isi.edu/nsnam上查询 需要注意的是,在不同的系统下安装出现的问题会有所不同

更改设置 Vi .bash_profile PATH=原有的+$HOME/ns-allinone-2.1b8a/bin:$HOME/ns-allinone-2.1b8a/tk8.3.2/unix LD_LIBRARY_PATH=$HOME/ns-allinone-2.1b8a/otcl-1.0a7:$HOME/ns-allinone-2.1b8a/lib

更改设置(续) TCL_LIBRARY=$HOME/ns-allinone-2.1b8a/tcl8.3.2/library Export PATH LD_LIBRARY_PATH TCL_LIBRARY

Ns命令的使用 在任何路径下,直接键入ns 如果要运行某个tcl程序(比如example.tcl,那么: ns example.tcl

程序的查找(以MPLS为例) 相关的C程序 相关的TCL程序 Cd ns-allinone-2.1b8a Cd ns-2.1b8a Ls *mpls* 相关的TCL程序 Cd tcl

对ns的重新编译 不修改程序名字,只修改代码 修改了程序名字(或增加新的文件) Cd ns-allinone-2.1b8a Cd ns-2.1b8a Make 修改了程序名字(或增加新的文件) Cd ns*8a/ns*8a Vi Makefile.in Old.o -> new.o (加入new.o) ./configure

节点层次结构

节点层次结构(续)

ns-2目录结构 sim tk8.0 otcl Tcl tcl8.0 ns-2 nam-1 tcl ex test lib ... tcl code C++ code example validation test tcl code core

Tracing Trace packets on all links $ns trace-all [open test.out w] <event> <time> <from> <to> <pkt> <size>--<flowid> <src> <dst> <seqno> <aseqno> + 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0 - 1 0 2 cbr 210 ------- 0 0.0 3.1 0 0 r 1.00234 0 2 cbr 210 ------- 0 0.0 3.1 0 0 Trace packets on all links in nam-1 format $ns namtrace-all [open test.nam w]

文档资料 www.isi.edu/nsnam 文档 进入Web resources->mailing lists->ns-users ,可以找到一些问题的解答,也可以进行提问 在Subscribing to Ns-users 中,可以登记你的邮箱,以后通过邮箱直接发问,也可以通过邮箱收到其他人的问题和解答 文档 Ns-doc3的前三章是一些基本的东西,如ns的体系结构等。其余章节是针对某一部分,可以进行实际工作时边做边看