网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

NS2以及Otcl/tcl脚本的基础知识

更新时间:2026年03月27日   作者:spoto   标签(Tag):

仿真所谓“通过实践来学习”的过程,就是每当世界上出现新的事物时,我们都会先对其进行分析研究,从而从中学习到很多东西。整个课程就是如此。仿真
与此过程相关的是,为了理解其中的所有复杂性,就需要以计算机模拟的形式来建模整个角色扮演的过程。为此,需要创建一些虚拟对象,并让这些对象动态地承担各种角色。
计算机模拟是指在数字计算机上对物理系统进行建模的过程,其核心在于模型的构建、执行以及分析。在建立数学模型之后,最重要的步骤就是编写计算机程序,以随时间推移来更新状态变量和事件信息(即通过时间分割或事件调度来实现)。如果这种模拟是在多台并行计算机上连续进行的,那么这种模拟方式就被称为并行或分布式模拟。
网络仿真NS是一种仿真技术,用于模拟各种网络环境,比如MANET、VANET等。它可以为有线和无线网络的路由和多播协议提供仿真功能。NS的许可使用遵循GNU通用公共许可证的第2版,因此被广泛使用。NS2它是一款面向对象的、基于离散事件的模拟器,采用C++和Otcl/Tcl语言编写而成。
NS-2可以用于实现各种网络协议,例如TCP和UDP。此外,它还可以模拟各种流量源的行为,比如FTP、Telnet、Web、CBR和VBR等。NS-2还支持对路由器队列进行管理,比如Drop Tail、RED和CBQ等机制。此外,NS-2还包含了许多路由算法等功能。在NS-2中,C++被用来实现具体的协议功能,而Otcl则用于程序的配置工作。经过编译后的C++代码可以被Otcl解释器访问,这样,我们就可以从Otcl层面来控制这些C++对象了。
  
请使用以下命令来安装NS-2:

sudo apt-get install ns2


还需要安装它。Nam网络动画师这是一种用于以图形方式展示网络结构和数据包传输过程的动画工具。可以使用以下命令来使用它:

sudo apt-get install nam


 一些基本的 Otcl 脚本语法: 

基本命令: 

Python
设置/设定 a 8设置/设定 b [表达式/公式 $a/8]


说明:在第一行中,变量a它被赋予了值 8。在第二行中,命令[expr $a/8]的结果,即 1,被用作另一个命令的参数。而该命令则会将某个值赋给该变量。b“$”符号用于获取变量中的值,而方括号则用于表示命令的替换。

以新的流程来定义过程/程序命令/指令 :
 

Python
 过程/程序 阶乘 事实 {    if {$事实/真相 <= 1} {        返回 1    }表达式/公式 $事实 * [阶乘 [表达式 $事实-1]]}

要打开一个文件进行读取的话:
 

Python
设置/选定 testfile [开放的 你好.数据 r]


同样地,放置/安置“command”用于将数据写入文件中。
 

Python
设置/选择 testfile [开放的 你好.数据 w]放置/安置 $testfile 你好1


为了调用另一个进程中的子进程,执行/实施它被使用起来,从而形成一个子进程,然后等待该子进程的完成。
 

Python
执行 rm $testfile


  
为了能够运行模拟场景,首先必须创建一个网络拓扑结构。在ns2中,该拓扑结构由一系列节点和链接组成。
 

Python
设置/选定 ns [新的 模拟器]


该模拟器对象具有一些成员函数,这些函数可以用来创建各个节点,并定义它们之间的连接关系。simulator类包含了所有基本的函数。由于ns被定义为用于处理模拟器对象,因此使用$ns命令来调用与模拟器类相关的函数。
在网络拓扑结构中,可以按照以下方式添加节点:
 

Python
设置/选择 n0 [$ns 节点]设置/选择 n1 [$ns 节点]


如果节点不是路由器,那么必须配置相应的传输协议(如TCP、UDP等)以及传输源(如FTP、CBR等)。这样,就可以使用UDP作为传输协议来创建CBR传输源,或者使用TCP作为传输协议来创建FTP传输源。
 

使用UDP的CBR流量来源:

Python
设置/选择 udp0 [新的 代理人/联络人/UDP]$ns 附加-代理人 $n0 $udp0设置/选择 cbr0 [新的 应用程序/软件/交通/CBR]$cbr0 附加-代理人 $udp0$cbr0 设置/选定 packet_size_ 512


  
使用TCP协议的FTP流量来源:
 

Python
设置/选择 tcp0 [新的 代理人/代表/TCP]$ns 附加-代理人 $n0 $tcp0设置/选定 ftp0 [新的 应用程序/软件/FTP]$ftp0 附加-代理人 $tcp0$tcp0 设置/设定 packet_size_ 512


以下是使用FTP和TCP在源文件和目标文件之间建立链接的实现方式:
 

Python
# 创建一个模拟器对象设置/选定 ns [新的 模拟器]# 定义不同的颜色# 用于数据流处理(适用于NAM系统)$ns 颜色 1 蓝色$ns 颜色 2 红色# 打开NAM跟踪文件设置/选择 nf [开放的 出去/离开.娜姆 w]$ns namtrace-全部 $nf# 定义一个名为“finish”的过程过程/程序 完成 {} {    全球 ns nf    $ns 刷新/清除-痕迹/踪迹        # 关闭NAM跟踪文件    关闭 $nf        # 对跟踪文件执行NAM操作    执行 名字 外出/离开.娜姆 &    退出/离开 0}# 创建四个节点设置/选定 n0 [$ns 节点]设置/选定 n1 [$ns 节点]设置/选定 n2 [$ns 节点]设置/选定 n3 [$ns 节点]# 在各个节点之间创建连接$ns 双拼-链接 $n0 $n2 2Mb 10ms DropTail$ns 双拼-链接 $n1 $n2 2Mb 10ms DropTail$ns 双拼-链接 $n2 $n3 1.7Mb 20ms DropTail# 将链接中的队列大小设置为10 (n2-n3)$ns 队列-限制/界限 $n2 $n3 10# 请提供节点的位置信息(用于NAM系统)$ns 双拼-链接-op $n0 $n2 东方 正确/正确的-向下$ns 双拼-链接-op $n1 $n2 东方 正确/正确的-up$ns 双拼-链接-op $n2 $n3 东方 正确/正确的# 监控连接(n2-n3)的队列情况。(适用于NAM)$ns 双拼-链接-op $n2 $n3 队列位置 0.5# 建立TCP连接设置/选定 TCP [新的 代理人/联络人/TCP]$TCP 设置/选定 类/类别 2$ns 附加-代理人 $n0 $TCP设置/选择 沉没/倒塌 [新的 代理人/联络人/TCPSink]$ns 附加-代理人 $n3 $沉没/倒塌$ns 连接 $TCP $沉没/倒塌$TCP 设置/设定 fid_ 1# 建立基于TCP的FTP连接设置/选择 FTP [新的 应用程序/软件/FTP]$FTP 附加-代理人 $TCP$FTP 设置/选择 类型/种类 FTP# 建立UDP连接设置/选择 UDP [新的 代理人/助手/UDP]$ns 附加-代理人 $n1 $UDP设置/选择  [新的 代理人/代表/]$ns 附加-代理人 $n3 $$ns 连接 $UDP $$UDP 设置/选择 fid_ 2# 通过UDP连接来建立CBR连接设置/选定 cbr [新的 应用程序/软件/交通/CBR]$cbr 附加-代理人 $UDP$cbr 设置/选择 类型/种类 CBR$cbr 设置/选择 数据包大小 1000$cbr 设置/选择 利率 1mb$cbr 设置/设定 随机的/无规律的 错误的/不正确的# 为CBR和FTP代理程序安排相关活动$ns at 0.1 “$cbr start”$ns at 1.0 “$ftp start”$ns at 4.0 “$ftp stop”$ns at 4.5 “$cbr停止”# 分离TCP和接收代理# (其实并不必要)$ns at 4.5 “$ns detach-agent $n0 $tcp”; “$ns detach-agent $n3 $sink”# 在完成相关程序之后进行调用。# 5秒的模拟时间$ns at 5.0 完成/结束# 打印 CBR 数据包的大小以及其传输间隔放置/安置 CBR数据包的大小 = [$cbr set packet_size_]放置/安置 CBR间隔 = [$cbr设置间隔_]# 运行模拟程序$ns 

输出: 
 

NS2的特点:

  • 这是一种用于网络研究的离散事件模拟器。
  • 该工具拥有许多用于模拟各种协议的功能,包括 TCP、FTP、UDP、HTTPS 以及 DSR 等协议。
  • 它能够模拟有线和无线网络的情况。
  • 它主要基于Unix操作系统构建的。
  • 它的脚本语言是TCL。
  • Tclcl是一种结合了C++和OTCL特性的编程语言。
  • 离散事件调度器。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料