1.NS-2模拟的基本流程
(1) 修改源码(这步只有在需要修改源码的时候才考虑)
(2) 编写Tcl/OTcl模拟代码(这是NS2模拟中不可缺少的一步)
创建模拟器对象,用来定义和控制模拟过程
设置跟踪文件
创建网络拓扑结构
(配置节点属性
(创建拓扑结构
设置代理和应用层协议
使用模拟器对象的at过程设置节点事件和时间的对应关系
使用模拟器对象的run过程开始模拟
(3) 分析模拟结果(非常重要的一环)
2.Tcl中的一些基本语法内容
(1)常用的关键字
set unset info
(2)组合和替代(组合一般是先在替代之前进行)
命令替代([])、 反斜杠替代(\)、组合({}和"")、
(3)组合替代总结
Tcl需要决定如何组织命令参数
在大括号组合中不允许替代,而在引号中可以替代
组合总是在替代之前进行
$是用于变量替换
中括号用于命令替代
反斜杠替代用来引用特殊的字符
在执行一个Tcl命令前先进行替代
3.NS-2基础
NS-2的离散事件调度机制(Simulator是基础)
set ns [new Simulator] #创建一个模拟器对象,同时:
(1初始化分组格式
(2创建一个事件调度器
(3创建一个空代理
相关的命令:
set ns [new Simulator] #创建一个模拟器对象
set now [$ns now] #将ns调度器的当前时间赋值给变量now
$ns run #启动调动器
$ns halt #停止或暂停调度器
$ns at <time> <event> #在一个特定的时间调度一个事件
$ns cancel <event> #取消一个事件
节点(Node)
(单播节点
一个单播节点是一个组合对象,主要包括两个Tcl对象:地址分类器(address classifier)和端口分类器(port classifier).以下是创建一个单播节点:
set ns [new Simulator]
set n0 [$ns node]
(多播节点
多播节点主要由多播分类器(Multicast Classifier)和复制器(Replicator)构成.
以下是创建一个多播节点:
set ns [new Simulator - Multicast on]
set n1 [$ns node]
注意:一旦 -Multicast设置为on,之后创建的节点都是多播节点。只有显示的将其设置为off,才能创建一个单播节点.
链路(Link)
两台网络设备之间的通信按通信方式可分为单工、半双工和全双工三种方式。相关命令如下:
$ns simplex-link <node1> <node2> <bandwidth> <delay> <queue_type> <args>
$ns duplex-link <node1> <node2> <bandwidth> <delay> <queue_type> <args>
$ns simplex-link-op <node1> <node2> <option> <args>
$ns duplex-link-op <node1> <node2> <option> <args>
代理(Agent)
代理可以构建和销毁网络层的分组,是网络层分组的起点和终点,同时代理可以实现各种不同层的网络协议。
Agent类是由C++和OTcl共同实现的。
(1 C++的Agent类包含的一系列内部状态变量:
addr_ dst_ size_ type_ fid_ prio_ flags_ defttl_
(2 仅存在于OTcl Agent类中的变量:
agent_addr_ agent_port_ dst_addr_ dst_port_
(3 UDP 和 TCP
Agent/UDP代理的创建和设置肺痿以下四步:
(1)创建一个Agent/UDP对象并将其帮定到相应的节点上作为分组的发送器
(2)设置Agent/UDP的部分内部变量
(3)创建一个Agent/Null对象并将其帮定到相应的节点上作为分组的接收器
(4)在两个发送和接收代理之间创建connect连接
在NS-2中有两类TCP代理:单向代理和双向代理。双向代理目前有FullTcp,并且还在进一步完善中。单向Tcp包括有Agent/TCP(Tahoe TCP)和 Agent/TCPSink等。设置和创建过程如下:
(1)创建一个Agent/TCP对象,作为分组的发送器
(2)设置Agent/TCP的部分内部变量
(3)创建一个Agent/TCPSink对象,作为分组的接收器
(4)在两个发送和接收代理之间创建connect连接
与Agent相关的命令:
set agent [new Agent/AgentType]
$ns attach-agent <node> <agent>
$agent port
$agent dst-port
$agent attach-app <s_type>
$ns connect <src> <dst>
$ns create-connect <srctype> <src> <dsttype> <dst> <pktclass>
$agent attach-trace <file>
应用层(Application)
在NS-2中,应用层程序构建在传输层之上,分为两大类:流产生器(traffic generator)和应用模拟器(simulated application).流产生器一般用在UDP代理之上,应用模拟器主要用于TCP代理之上。
(1 四种流产生器,一般都是建立在UDP代理之上的。
(1)指数分布流产生器(EXPOO_Traffic generator,在OTcl中对应的类是Application/Traffic/Exponential)
(2)Pareto流产生器(POO_Traffic generator,在OTcl中对应的类是Application/Traffic/Pareto)
(3)固定比特率流产生器(CBR_Traffic generator,在OTcl中对应的类是Application/Traffic/CBR)
(4)Trace文件流产生器(Traffic Trace generator,在OTcl中对应的类是Application/Traffic/Trace)
(2 FTP应用模拟器(Application/FTP)和Telnet应用模拟器(Application/Telnet)
4.TclCL机制
TclCL(OTcl C++ Linkage)把两种语言的对象和变量联系对应起来。OTcl类主要提供C++对象面向用户的配置接口,而C++用来实现网络组件的主要功能。C++类的继承关系通常和OTcl类的继承关系保持一致。
5.
6.
7.
8.
9.
10.
分享到:
相关推荐
### 网络仿真软件NS2基础教程:深入解析与应用 #### 引言 NS2(Network Simulator 2)是一款广泛使用的网络仿真工具,它为网络研究和教育提供了强大的支持。自1989年作为REAL网络模拟器首次亮相以来,NS2经过多次...
以下是一些NS2基础的关键知识点: 1. **安装与配置**:NS2通常与OTcl(Object Tcl)语言一起使用,需要安装Tcl/Tk环境。此外,还有许多附加组件和库,如NAM(Network Animator)用于可视化仿真结果,以及Xgraph用于...
《NS2基础与安装—NS2的入门资料》是一本专为初学者设计的网络仿真教程,涵盖了NS2软件的下载、安装以及基本操作。NS2(Network Simulator 2)是一款广泛使用的开源网络仿真工具,它允许研究人员和工程师模拟网络...
NS2基础学习文件, 简单易懂, 非常值得参考!
**NS2基础** NS2是一款流行的网络模拟器,主要用于研究分组网络的性能。在VANETs领域,NS2可以用来评估路由协议、MAC层策略和其他网络服务的效果。然而,NS2本身并不直接支持VANETs的动态特性。这就是VanetMobiSim...
NS2,全称为Network Simulator 2,是一款广泛应用于网络性能验证和测试的开源模拟软件。它采用面向对象、离散事件驱动的模拟方法,能够模拟各种网络环境和协议,包括链路层(LL)、媒体访问控制(MAC)层、接口队列...
1. **NS2基础概念**:理解NS2的基本架构,包括其组件如事件调度器、网络节点、链路、协议模块等,以及它们之间的交互方式。 2. **OTcl脚本**:学习OTcl语法,如何创建网络拓扑、配置协议、设定初始条件并运行模拟...
1. **NS2基础概念**:了解NS2的基本架构、工作原理和安装步骤,包括如何配置环境,安装所需的Tcl/Tk和Xgraph等依赖库。 2. **Tcl脚本语言**:NS2使用Tcl作为主要的编程语言,因此学习Tcl语法是必不可少的,包括变量...
第一部分 NS2基础 第1章 NS2概述 1.1 NS2简介 1.2 NS2的基本结构 1.3 NS2中C++和0Tcl的关系 1.4 使用NS2的流程 1.5 模拟结果的分析 1.6 NS2中对象和各种协议的对应关系 第2章 NS2安装 2.1 ...
一、ns2基础 ns2由加州大学洛杉矶分校和ISI(Information Sciences Institute)联合开发,主要用于研究TCP/IP网络的各种协议和性能。它包含了丰富的协议库,如TCP、UDP、IP、ARP等,同时支持多播、QoS、无线网络等...
2. NS2基础:熟悉NS2的安装、配置、基本命令,以及如何编写和运行tcl脚本。 3. CBR在NS2中的实现:学习如何在NS2中设置CBR流量源和目的地,以及相关的参数配置。 4. 网络模拟基础:理解网络模拟的基本原理,包括节点...
《NS2基础知识详解》 NS2,全称Network Simulator 2,是一款广泛应用于网络协议和系统研究的开源仿真工具。这个压缩包“ns2.zip_ns2_zip”包含了多个关于NS2的基础讲座材料,如“ns-lecture.ppt”、“ns-ftw-1.ppt...
2. **NS2基础知识**:理解NS2的基本结构、命令和配置文件至关重要。这包括tcl脚本语言的使用,以及如何定义网络拓扑、节点、链路、协议等。 3. **编码策略**:实例可能涵盖线性网络编码、随机网络编码、 Fountain码...
第一部分 NS2基础 第1章 NS2概述 1.1 NS2简介 1.2 NS2的基本结构 1.3 NS2中C++和0Tcl的关系 1.4 使用NS2的流程 1.5 模拟结果的分析 1.6 NS2中对象和各种协议的对应关系 第2章 NS2安装 2.1 ...
第一部分 NS2基础 第1章 NS2概述 1.1 NS2简介 1.2 NS2的基本结构 1.3 NS2中C++和0Tcl的关系 1.4 使用NS2的流程 1.5 模拟结果的分析 1.6 NS2中对象和各种协议的对应关系 第2章 NS2安装 2.1 ...
为了充分利用这些资源,你需要具备一定的NS2基础知识,包括理解其脚本语言(Tcl)和C++组件,以及WiMax的基本原理。同时,提供的说明文档会是理解和使用这些代码的关键,它可能会指导你如何配置模拟环境,解释代码...
### NS2基础与安装 #### NS2概述 NS2(Network Simulator version 2)是一款开源的网络仿真软件,由加州大学伯克利分校(UC Berkeley)最初开发。它旨在研究大规模网络及其上运行的各种网络协议之间的交互行为。NS...
1. **NS2基础知识**:介绍NS2的基本结构,如节点、网络接口、协议栈等,以及如何通过TCL脚本来创建和配置这些元素。 2. **TCL语法和命令**:讲解TCL的基本语法,如变量、控制结构、函数等,并给出NS2特有的TCL命令...
2. 学习NS2基础知识:理解NS2的事件驱动机制、节点配置、链路设定等基础概念。 3. 分析源代码:逐行阅读提供的源代码,了解多媒体数据流的创建、无线信道的模拟以及协议的实现细节。 4. 修改和运行实验:根据实验...
1. **NS2基础**:理解NS2的工作原理,掌握基本的配置文件(tcl脚本)编写和网络模型建立。 2. **蚁群优化算法原理**:熟悉ACO的基本概念,如信息素、启发式信息、蒸发率等。 3. **路由协议**:对比ACO与其他路由协议...