NS2入门与提高 柯志亨 SeaSon 哈尔滨工业大学 2006-5-28 计算机学院-数据库中心 SeaSon.

Slides:



Advertisements
Similar presentations
第七章 電信、網際網路與無線技術.
Advertisements

第一章 概 述.
四資二甲 第三週作業 物件導向程式設計.
Network Simulator.
Ns2 一個常用的網路模擬器 台灣科技大學資管系資料庫實驗室 洪振洲.
Tool Command Language --11级ACM班 金天行.
進階網路系統 作業 題目: 組別:第二組 組員: 蘇俊吉 盧柏崴 黃明煜 李德偉
计算机网络 暨南大学计算机科学系 学年 第一学期.
第1章 概述.
作者:陳建民 指導教授:蘇民揚 教授 報告者 : 李承駿
AODV路由协议的正确性研究 蔡雪莲.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
Author: Shigeki Takeuchi,Hiroyuki Koga, Katsuyoshi Iida,
An Adaptive Cross-Layer Multi-Path Routing Protocol for Urban VANET
計算機網路實驗- 使用NS2模擬多媒體通訊與無線網路(實驗四)
Chapter 4 Network Layer (網路層).
Computer Network Lab 資碩一 黃麒瑋
基於OpenWSN之無線感測網路系統的實作
網路技術管理進階班---區域網路的技術發展
亂數函數(Random-Number Function)
第二讲 搭建Java Web开发环境 主讲人:孙娜
Installation, advance wireless module and evaluation 2008/11/11
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
第4章 网络互联与广域网 4.1 网络互联概述 4.2 网络互联设备 4.3 广域网 4.4 ISDN 4.5 DDN
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
什麼是網際網路? 面臨攻擊的網路 網路邊際 總結 網路核心
走进编程 程序的顺序结构(二).
辅导课程六.
第十讲 TCP协议 协议概述 报文段格式 差错控制 流控和拥塞控制 TCP连接管理 TCP性能问题 TCP软件设计 2018/12/7
Visual Studio Team System 简介
第4讲 传输层之二 本讲目的: 本讲概述: Internet传输层的实现和实例 面向连接的传输: TCP TCP拥塞控制 拥塞控制原则
NS2 - Basic Ming-Feng Yang.
NS2 – TCP/IP Simulation How-Wei Wu.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第5讲 网络层 本讲目的: 概述: 理解网络层服务原理: 因特网的实现实例 网络层的服务 路由选择原理 分层的路由选择 IP协议
实时协议( Real-Time Protocol, RTP)
2010電資院 「頂尖企業暑期實習」 經驗分享心得報告
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
无线传感器网络的仿真 仿真模块 ①无线信道模块:Channel/WirelessChannel;
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
NS2 (Network Simulator - version 2)
Ad Hoc 网络技术 薛建彬.
Source: Journal of Network and Computer Applications, Vol. 125, No
Speaker: Wang,Song-Ferng Advisor: Dr. Ho-Ting Wu 2015/7/6
分裂对象模型 C++ otcl.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
WIRELESS LAN B 邱培哲 B 張宏安.
Toward realistic MPEG4 video transmission simulations
Distance Vector vs Link State
iSIGHT 基本培训 使用 Excel的栅栏问题
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Delphi 7.0开发示例.
Python 环境搭建 基于Anaconda和VSCode.
Distance Vector vs Link State Routing Protocols
行動寬頻介接網路與IoT實務應用-實驗課程
行動寬頻介接網路與IoT實務應用-實驗課程
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
教育部補助「行動寬頻尖端技術跨校教學聯盟第二期計畫 -- 行動寬頻網路與應用 -- 小細胞基站聯盟中心」 課程模組: 「LTE-Small Cell 核心網路架構及服務」 實驗二: QoS網路效能指標 (Delay, PLR, Throughput) 的量測 計畫主持人:許蒼嶺 (國立中山大學.
NS3 & NS2 (network simulator)
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

NS2入门与提高 柯志亨 SeaSon 哈尔滨工业大学 2006-5-28 计算机学院-数据库中心 SeaSon

目录 NS2 简介 安装 模拟流程 添加新协议 调试以及结果分析 计算机学院-数据库中心 SeaSon

NS2 简介 背景 NS2目标 NS2功能 NS2 组件 NS2体系结构 计算机学院-数据库中心 SeaSon

NS2 背景 1989 REAL network simulator 1995: DARPA VINT project at LBL,Xerox PARC, UCB, and USC/ISI Present: DARPA SAMAN project and NSF CONSER project Collaboration with other researchers including CIRI 计算机学院-数据库中心 SeaSon

NS2研究范围 支持网络协议的研究和教育 优点 与平台无关,有大量的协议、代码以及模型可供使用,开源的,不同的协议很容易进行比较。 通信协议的设计,数据流的研究等 不同协议的比较 优点 与平台无关,有大量的协议、代码以及模型可供使用,开源的,不同的协议很容易进行比较。 计算机学院-数据库中心 SeaSon

NS2目标 NS2不适合做的? 大多数任务都是单节点完成的,比如交换机的性能分析等。 计算机学院-数据库中心 SeaSon

NS2功能 有线网络 路由层 DV, LS, PIM-SM 传输层: TCP and UDP 流量产生:web, ftp, telnet, cbr, stochastic 队列模型:drop-tail, RED, FQ, SFQ QoS: IntServ and Diffserv 计算机学院-数据库中心 SeaSon

NS2功能 无线网络 网络类型:MANET, Sensor Networks 路由:AODV, DSR, DSDV,Mobile IP以及HMIPv6等 MAC: 802.11, 802.15.4,Smac等 传输层、多种数据流模拟 计算机学院-数据库中心 SeaSon

NS2 组件 ns: 网络模拟器 nam: 网络 AniMator 模拟的流程 执行tcl脚本,进行模拟,并将所有的模拟结果以trace文件的个是输出。 nam: 网络 AniMator 将ns的结果可视化。 模拟的流程 Gawk gnuplot Trace文件 Nam文件 tcl 脚本 ns-2 nam 计算机学院-数据库中心 SeaSon

NS2体系结构 面向对象的设计 分裂对象模型 支持重用 容易维护 方便扩展,如添加新协议 C++是高效的编译执行语言,功能模拟,性能较好 Otcl 解释执行的,进行场景配置。不必重新编译更灵活 计算机学院-数据库中心 SeaSon

NS2体系结构 NS2结合两者的优点 C++ otcl 计算机学院-数据库中心 SeaSon

Tcl与C++对象绑定过程 以tcp为例,当你在tcl脚本中使用以下命令创建一个Tcp对象时 set tcp0 [new Agent/TCP] 首先创建tcl对象,即解释对象 proc new { className args } { set o [SplitObject getid] # 创建分裂对象 if [catch "$className create $o $args" msg] { … } return $o 计算机学院-数据库中心 SeaSon

Tcl与C++对象绑定过程 然后通过Tcl对象的init()函数中创建对应的shadow对象 SplitObject instproc init args { $self next if [catch "$self create-shadow $args"] { error "__FAILED_SHADOW_OBJECT_" "" } 计算机学院-数据库中心 SeaSon

Tcl与C++对象绑定过程 Create-shadow怎样找到tcl对象对应的C++对象? 答案就是TclClass类!!! static class TcpClass : public TclClass { public: TcpClass() : TclClass("Agent/TCP") {} TclObject* create(int , const char*const*) { return (new TcpAgent()); } } class_tcp; 计算机学院-数据库中心 SeaSon

NS2系统结构 --离散事件模拟 把世界上的一切都看成事件 每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。 维护一个基于发生时间排序的 事件(events)队列 维护一个系统的时间[virtual time] 重复的执行以下的过程: 从对首取出一个事件, set [virtual time]=event’s time 处理这个事件 如果在处理时间过程中产生新的event,插入queue 每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。 CPU 执行的快慢不影响结果。 计算机学院-数据库中心 SeaSon

离散事件模拟示例 事件队列 S D A. 时间 事件 A. 1s S decides to send pkt to D S starts sending pkt B. C. B. 1.005s S finishes transmitting pkt to D D. C. 1.01s D begins to recv pkt D. 1.015s D recvs entire pkt and delivers to application delay value transmission 0.005s propagation 0.01s S D 计算机学院-数据库中心 SeaSon

一个数据包怎样从源节点到目的节点 同一个节点内各层协议之间传数据? 节点之间怎么传? 计算机学院-数据库中心 SeaSon

计算机学院-数据库中心 SeaSon

安装 安装环境及方法 安装问题 计算机学院-数据库中心 SeaSon

安装(1) 推荐直接安装all-inone版本(最新all-inone-2.29) windows安装方法 Linux(直接install就行了) Windows+Cygwin+Ns2 windows安装方法 柯老师网站(不要看中文安装说明,选英文的) http://140.116.72.80/~smallko/ns2/ns2.htm 计算机学院-数据库中心 SeaSon

安装(2) windows安装方法 柯老师网站上Cygwin可以成功安装的ns2版本有NS-2.26, NS-2.27, NS-2.28, ns-2.29 注:NS-2.26需要PATCH过..才能安装 柯老师的安装经验: 不過安裝的過程還是可能會有一些問題..最確保可以安裝成功的方法是:重新安裝WINDOWS..裝完馬上安裝CYGWIN + NS2,安裝後..在裝SERVICE PACK..或其他的軟件..這是我的經驗 计算机学院-数据库中心 SeaSon

安装(3) NS仿真软件-问题求助的地方 常见错误原因 http://www.netforum.com.cn/forum_topics.asp?FID=16&PN=1 常见错误原因 主要问题gcc版本 重装 计算机学院-数据库中心 SeaSon

开始进行摸拟 一个简单的无线网络的例子(1) 无线场景的产生 利用NS模拟前搞清楚的问题 添加新协议 编译NS2 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(1) 场景配置 3 个mobile nodes 平面拓扑 670mX670m ad hoc 路由协议 DSDV Random Waypoint mobility model TCP and CBR traffic 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(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 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(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 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(4) God 用来保存一个结点到另外一个结点直接的跳部数. 例如: #Create “God” set god_ [create-god 3] God 用来保存一个结点到另外一个结点直接的跳部数. 例如: $ns_ at 899.00 “$god_ setdist 2 3 1” 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(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 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(6) Use “for loop” to create 3 nodes: #Create a mobile node and attach it to the channel 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] } 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(7) #Define node movement model source movement-scenario-files #Define traffic model source traffic-scenario-files 计算机学院-数据库中心 SeaSon

一个简单的无线网络的例子(8) #Define node initial position in nam for {set i 0} {$i < 3 } { incr i} { $ns_ initial_node_position $node_($i) 20 } #Tell ns/nam the simulation stop time $ns_ at 200.00 “$ns_ halt” #Start your simulation $ns_ run 计算机学院-数据库中心 SeaSon

无线场景的产生(1) 生成节点运动模型 setdest -n <num_of_nodes> -p pausetime -s <maxspeed> -t <simtime> -x <maxx> -y <maxy> Source: See ns-2/indep-utils/cmu-scen-gen/setdest/ 网上还可以下载更多的模型,如组移动模型等 计算机学院-数据库中心 SeaSon

无线场景的产生(2) 生成无线网络数据流 CBR traffic ns cbrgen.tcl [-type cbf|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate] Source: ns-allinone-2.29\ns-2.29\indep-utils\cmu-scen-gen 计算机学院-数据库中心 SeaSon

利用NS模拟前搞清楚的问题 计算机学院-数据库中心 SeaSon

NS2 源代码目录 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 计算机学院-数据库中心 SeaSon

添加协议(1) 添加别人实现的协议 为什么我安装总是出错????? 环境问题,OS, gcc版本,ns版本 解决办法 2. 移植到新的环境,怎么移? gdb调试,没有别的办法!!! 计算机学院-数据库中心 SeaSon

添加新协议(2) 自己写协议 路由协议?应用层协议?MAC协议? 最好的方法就是模仿已有的协议,代表协议AODV, MAC802.11,Ping 添加路由协议,从Agent继承 添加应用层协议,从Agent(更灵活)或者Application(有些不能实现) 计算机学院-数据库中心 SeaSon

添加新协议(3) 示例:一个泛洪协议(Mflood) 协议类型:路由层协议 1.定义包头 struct hdr_mflood { u_int32_t seq_; //根据需要定义变量,这个灵活决定 …. // 包头访问的方法,你只需要复制下来就OK了 static int offset_; // required by PacketHeaderManager inline static int& offset() { return offset_; } inline static hdr_sptree* access(const Packet* p) { return (hdr_sptree*) p->access(offset_); } }; 计算机学院-数据库中心 SeaSon

添加新协议(4) 2. 实现协议 class MFlood: public Agent { public: MFlood(); void recv(Packet *p, Handler *); int command(int, const char *const *); protected: inline int initialized() { return 1 && target_; } //发送函数,其实就是调用目的节点的接受函数 inline void send(Packet *p){ target_->recv(p); } }; 计算机学院-数据库中心 SeaSon

添加新协议(5) 3 关联tcl对象与C++对象(模板) static class MFloodclass : public TclClass { public: MFloodclass() : TclClass("Agent/MFlood") {} TclObject* create(int argc, const char*const* argv) { assert(argc == 5); return (new MFlood((nsaddr_t) atoi(argv[4]))); // PBO agrv[4] is index_} } } class_rtProtoMFlood; 计算机学院-数据库中心 SeaSon

添加新协议(6) 4 关联tcl对象与C++对象的包头(模板) int hdr_mflood::offset_; static class MFloodHeaderClass : public PacketHeaderClass { public: MFloodHeaderClass() : PacketHeaderClass("PacketHeader/MFlood", sizeof(hdr_mflood)) { bind_offset(&hdr_mflood::offset_); } } class_mfloodhdr; 计算机学院-数据库中心 SeaSon

添加新协议(7) 目前为止,所有的代码工作都已经完成了 生下的工作就是将这个协议编译到NS2中。 需要修改一下文件 1. ns-packet.tcl (ns-allinone-2.29\ns-2.29\tcl\lib) 2. packet.h (ns-allinone-2.29\ns-2.29\common) 3 ns-lib.tcl (ns-allinone-2.29\ns-2.29\tcl\lib) 对于我们这个应用层协议不需要修改 计算机学院-数据库中心 SeaSon

添加新协议(8) 1. 修改ns-packet.tcl(ns-2.29/tcl/lib) 目的:在NS启动的时候加载我们的包头。 foreach prot { # add by season MFlood …… } 目的:在NS启动的时候加载我们的包头。 计算机学院-数据库中心 SeaSon

添加新协议(9) 2.修改 packet.h(一共修改两处ns-2.29/common) enum packet_t { // insert new packet types here //add by season PT_MFLOOD,//Trace用到 PT_NTYPE // This MUST be the LAST one } class p_info { public: p_info() { name_[PT_MFLOOD]= “MFlood”;//与前面对应 name_[PT_NTYPE]= "undefined"; 目的:Trace中使用,协议构造函数SpTreeAgent()初始化时使用 计算机学院-数据库中心 SeaSon

添加新协议(10) 如果是路由协议如(AODV) 还需要修改ns-lib.tcl Simulator instproc create-wireless-node args { MFlood { set ragent [$self create-mflood-agent $node] } …} Simulator instproc create-mflood-agent { node } { set ragent [new Agent/MFlood [$node id]] $node set ragent_ $ragent return $ragent 计算机学院-数据库中心 SeaSon

添加新协议(11) 还有这段代码(Mflood未使用)~ns-mobilenode.tcl # Special processing for AODV set aodvonly [string first "AODV" [$agent info class]] if {$aodvonly != -1 } { $agent if-queue [$self set ifq_(0)] ;# ifq between LL and MAC } 计算机学院-数据库中心 SeaSon

添加新协议总结 5c+2t+1m(521规则) 5c-必须实现的五个C++模块 MFlood与MFloodclass hdr_mflood与MFloodHeaderClass packt.h添加包头类型 2t-修改两个tcl文件 ns-lib.tcl与ns-packet.tcl 有时候还会修改ns-defaut.tcl 1m-修改Makefile,将新协议添加 计算机学院-数据库中心 SeaSon

添加新协议总结 关于添加应用协议如ping,跟路由协议类似,甚至跟简单,如果从Agent继承,除了不需要修改ns-lib.tcl之外其它类似。 但是别忘了设置包头的大小,不然你发出的所有数据包头的大小都是0!!!! PingAgent::PingAgent() : Agent(PT_PING) { bind("packetSize_", &size_); } 修改Ns-defautl.tcl Agent/Ping set packetSize_ 64 计算机学院-数据库中心 SeaSon

编译NS2(1) mflood/mflood.o mflood/mflood-seqtable.o\ 一般我们将我们所有的C++代码放在一个文件夹内,如mflood,然后放在ns-2.29/之下 修改Makefile(无任何后缀的) 添加如下红色所示代码,将mflood编译进NS2 OBJ_CC = \ # add by season mflood/mflood.o mflood/mflood-seqtable.o\ 计算机学院-数据库中心 SeaSon

编译NS2(2) 从cygwin进入ns-2.29目录下 执行 什么时候要make clean??? make clean # 删除所有的*.o文件 make depend make # 重新编译ns 如果没有错误,则可以编写场景测试 什么时候要make clean??? 计算机学院-数据库中心 SeaSon

编译NS2(3) 如果添加新协议,或者修改了多个协议公用的NS中头文件,如packet.h我们都需要重新make clean 然后make depend, make。 计算机学院-数据库中心 SeaSon

编译NS2(4) 修改了C++文件 对于NS中已有的代码修改 不需要修改makefile,只需要 make 添加新的模块或协议 Make clean Make depend Make 计算机学院-数据库中心 SeaSon

编译NS2(5) 修改了Otcl文件 修改NS中已有的代码 添加新的代码 都只需要make即可 recompile source 修改 Makefile (NS_TCL_LIB), tcl/ns-lib.tcl (source) and recompile 都只需要make即可 计算机学院-数据库中心 SeaSon

调试NS TCL的调试 Gdb的安装调试 计算机学院-数据库中心 SeaSon

调试(1) Tcl调试 C++代码的调试(segment fault) 个人觉得没什么用途,如果你感兴趣我的space有安装方法 Spaces.msn.com\wowseason C++代码的调试(segment fault) 调试工具gdb,另外自带的insight可视化界面,本质也是调用gdb 下面介绍gdb的安装调试 计算机学院-数据库中心 SeaSon

调试(2) gdb安装 安装gdb,以cygwin为例 重新运行cygwin的setup文件,选择界面中的keep(必须!!!否则会死的很惨的),然后找到gdb选择安装即可。 重新编译NS2,添加调试信息 修改Makefile在下面位置添加-g CCOPT = -g 进入ns-2.29目录下面执行 Make clean Make depend # 执行这个命令过程中如出错,不用管! Make 如果没有错误,就安装成功,V!! 计算机学院-数据库中心 SeaSon

调试(2) Gdb调试NS2 以命令行为例 进入ns-2.29(%为命令提示符) % gdb ns gdb〉 即进入调试 计算机学院-数据库中心 SeaSon

调试(3) 调试常用命令 NS中调试技巧以及演示 bt列出运行栈中信息 b sptree.cc:linenum 在sptree.cc文件linenum行设置断点,注意中间”:”不能丢 c 相当于vc中continue, n 相当于vc中next display var,显示变量var的值 其他的参看gdb文档 NS中调试技巧以及演示 计算机学院-数据库中心 SeaSon

结果分析 场景测试 工具使用及结果分析 其他 计算机学院-数据库中心 SeaSon

场景测试 为了使模拟更接近真实网络,参数选择,非常重要!可以参看相关论文 简单测试 用两三个节点测试一下首发数据,根据trace文件分析。 功能测试 测试每一个功能,对于无线网络的,要测试多跳,各种拓扑。 利用trace分析结果 计算机学院-数据库中心 SeaSon

参数选择(802.11b) The Antenna height of transmitter and receiver is 1.5m. The propagation model is TwoRayGround model. Antenna/OmniAntenna set Gt_ 1 //Transmit antenna gain Antenna/OmniAntenna set Gr_ 1 //Receive antenna gain Phy/WirelessPhy set L_ 1.0 //System Loss Factor Phy/WirelessPhy set freq_ 2.472e9 //channel-13. 2.472GHz Phy/WirelessPhy set bandwidth_ 11Mb //Data Rate Phy/WirelessPhy set Pt_ 0.031622777 //Transmit Power Phy/WirelessPhy set CPThresh_ 10.0 //Collision Threshold Phy/WirelessPhy set CSThresh_ 5.011872e-12 //Carrier Sense Power Phy/WirelessPhy set RXThresh_ 5.82587e-09 //Receive Power Threshold; calculated under TwoRayGround model by tools from NS2. *Mac/802_11 set dataRate_ 11Mb //Rate for Data Frames *Mac/802_11 set basicRate_ 1Mb //Rate for Control Frames 计算机学院-数据库中心 SeaSon

常用工具以及结果分析 看代码 画图,gnuplot,xgraph 分析trace文件 推荐sourceinsight 命令格式如下,示例演示 % gnuplot delay.plot Windows下还有origin(收费的) 分析trace文件 使用gawk 命令格式 gawk –f delay.awk output.tr 计算机学院-数据库中心 SeaSon

常用工具以及结果分析 柯老师强烈推荐 模拟wireless网络 ,可以用http://edith.cse.nsysu.edu.tw/wordpress/?p=66 生成无线网络场景,免去写tcl脚本的痛苦 WIRED NETWORK,可以建議使用NSBENCH 计算机学院-数据库中心 SeaSon

计算机学院-数据库中心 SeaSon

常用工具以及结果分析 网络性能度量 details on http://www.academ.com/nanog/june1997/performance.html 1.Bandwidth utilization The aggregate of all traffic currently being consumed on a hop or path. 2.Packets per second 3.Round Trip Time The elapsed time for transit of a signal over a closed circuit. 4.RTT variance http://www.cs.utk.edu/~dunigan/tcptour/javis/tcp_rttvar.html 5.packet loss 6.Reachability 7.Circuit Performance 8.Bandwidth Utilization and Packets Per second http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a008009496e.shtml 计算机学院-数据库中心 SeaSon

常用工具以及结果分析 必须了解各种协议的trace格式 分析协议性能的gawk代码 柯老师的网站 NS FAQ Question 14 示例 http://140.116.72.80/~smallko/ns2/tool.htm NS FAQ Question 14 http://web.syr.edu/~dchen02/FAQ.txt 示例 计算机学院-数据库中心 SeaSon

使用Gawk分析结果 Gawk简介 与NS相关的基本知识 具体例子 计算机学院-数据库中心 SeaSon

使用Gawk分析结果 无线通信的trace格式 s 10.107722800 _1_ AGT --- 22 tcp 43 [0 2 1 800] ------- [1:0 2:0 30 2] [13 0] 0 0 r 10.110474850 _2_ AGT --- 22 tcp 36 [0 2 1 800] ------- [1:0 2:0 30 2] [13 0] 1 0 计算机学院-数据库中心 SeaSon

Gawk简介 解释性的脚本语言 变量以及数组不用声明 按行处理 有pipe功能,可以将处理数据传给shell 计算机学院-数据库中心 SeaSon

Gawk相关语法 s 10.1 _1_ AGT --- 22 tcp 43 [0 2 1 800] ------- [1:0 2:0 30 2] [13 0] 0 0 (1).Gawk读入trace中的一行 $0 $1 $2 $3 $4 $5 $6 $7 … 整行 s 10.1 _1_ AGT --- 22(uid) tcp 注:列之间一般用空格区分 计算机学院-数据库中心 SeaSon

Gawk相关语法 $0 $1 $2 $3 $4 $5 $6 $7 … 整行 s 10.1 _1_ AGT --- 22 tcp (2)执行动作 Pattern1 { Actions1 } Pattern2 { Actions2 } …………………………… Pattern3 { Actions3 } 其中pattern为条件语句(或正则表达式)如: if ($1 == “s” && $4 == “AGT”) Actions为动作,如:AgtNum++; 计算机学院-数据库中心 SeaSon

Gawk相关语法 (3)IO操作 print 、 printf( ) 、getline ...... (4)控制语句 if ( ...) {...} else {…}、 while(…){…} …… 计算机学院-数据库中心 SeaSon

Gawk工作流程 Gawk反复执行以下四个步骤: 1. 自动从trace文件中读取一行。 2. 自动更新内建参数的值($n)。 3. 逐行执行程序中所有 的 Pattern { Actions } 代码。 4. 如果trace文件还有未读取的行,则循环执行上面步骤1~3。 计算机学院-数据库中心 SeaSon

Gawk程序的框架 BEGIN { AgtNum = 0; } { if ($1 == "s" && $4 == "AGT") END{ printf(" Num of AGT pkts: %d \n", AgtNum); 最后保存文agtnum.awk文件 计算机学院-数据库中心 SeaSon

执行的命令(演示) 可以在cygwin或者xwin窗口下执行 命令格式 $ gawk –f agtnum.awk out.tr 对于mflood例子,输出结果 SeaSon@ColorfulSeaSon ~/ns-allinone-2.29/ns-2.29/test/ppt $ gawk -f agtnum.awk mflood.tr Num of AGT pkts: 50 计算机学院-数据库中心 SeaSon

一个分析协议的完整例子(推荐) Performance Evaluation of Ad Hoc Routing Protocols using ns2 simulations 文章对ad hoc routing protocol进行了比較,包括DSDV, AODV, DSR 其中TORA因为測不出來..就没进行比较 作者把如何比較的程式碼都附在上面... 下载网址:ww.cs.utk.edu/~gupta/Adhoc.doc 计算机学院-数据库中心 SeaSon

其他 获得节点的位置,速度信息 获得节点能量,使节点进入休眠模式 跨层设计 将真实数据导入NS2 static Node* get_node_by_address(nsaddr_t); 获得节点能量,使节点进入休眠模式 跨层设计 将真实数据导入NS2 http://ivs.cs.uni-magdeburg.de/EuK/forschung/projekte/nse/howtos/ns2uml_userguide.pdf Tcl与C++之间相互调用(演示) Tcl中调用C++函数 Command() C++中调用tcl命令 char out[100]; sprintf(out, "%s setColor %d ", name(),level); Tcl& tcl = Tcl::instance(); tcl.eval(out); 计算机学院-数据库中心 SeaSon

其他 threshold 计算通信半径 使用前先complier threshold.cc $ cd ns-2.29/indep-utils/propagation/ $ g++ -lm threshold.cc -o threshold 示例 $ threshold -m TwoRayGround 250 distance = 250 propagation model: TwoRayGround 计算机学院-数据库中心 SeaSon

联系我 Email:yuhui.wu@163.com MSN:yuhui.wu@hotmai.com QQ:67483698 NS仿真软件-season http://www.netforum.com.cn/ 计算机学院-数据库中心 SeaSon

参考文献 Introduction to Computer Networks 柯老师的网站 http://140.116.72.80/~smallko/ns2/ns2.htm 《NS与网络模拟》 ns-2 Tutorial http://www-scf.usc.edu/~bhuang Introduction to Computer Networks Network simulator 2 (ns-2) 计算机学院-数据库中心 SeaSon

OVER 谢谢 计算机学院-数据库中心 SeaSon