(1) 修改源码(这步只有在需要修改源码的时候才考虑)
(2) 编写Tcl/OTcl模拟代码(这是NS2模拟中不可缺少的一步)
(创建拓扑结构
2.Tcl中的一些基本语法内容
(1)常用的关键字
set unset info
(2)组合和替代(组合一般是先在替代之前进行)
命令替代([])、 反斜杠替代(\)、组合({}和"")、
(3)组合替代总结
Tcl需要决定如何组织命令参数
在大括号组合中不允许替代,而在引号中可以替代
组合总是在替代之前进行
$是用于变量替换
中括号用于命令替代
反斜杠替代用来引用特殊的字符
在执行一个Tcl命令前先进行替代
3.NS-2基础
(1初始化分组格式
(2创建一个事件调度器
(3创建一个空代理
相关的命令:
set ns [new Simulator] #创建一个模拟器对象
set now [$ns now] #将ns调度器的当前时间赋值给变量now
$ns run #启动调动器
$ns halt #停止或暂停调度器
$ns at <time> <event> #在一个特定的时间调度一个事件
$ns cancel <event> #取消一个事件
一个单播节点是一个组合对象,主要包括两个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,才能创建一个单播节点.
$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类是由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>
(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.