当前位置: 首页 > news >正文

在虚拟机Ubuntu18.04中安装NS2教程及应用

NS2简介

一、主要组成部分:

1.NS2:模拟器本身,负责执行TCL脚本进行模拟,并生成trace文件输出结果。

2.NAM:网络动画模拟器,用于将模拟结果可视化。

二、使用的语言:

1.C++:NS2中最重要和核心的部分,使用C++编程可以直接访问和控制底层的网络协议和数据包。

2.Otcl:Object Tcl,主要用于配置和控制NS2的模拟场景,可以更方便地创建和配置网络拓扑、分配IP地址、设置传输协议等。

三、结构目录:

一、安装ns2

第一步:下载

下载链接:https://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/

在/home下新建文件夹/NS2(文件名与后面添加环境相关)

第二步:解压到新建的文件夹中

tar -zxvf ns-allinone-2.35.tar.gz

第三步:检查系统更新

sudo apt update

sudo apt upgrade(检查以前有的软件的更新)

sudo apt dist-upgrade(检查更新后软件是否冲突)

第四步:安装必要软件包

sudo apt install tcl8.5

sudo apt install tk8.5

sudo apt install build-essential

sudo apt install make

sudo apt install libx11-dev(不安装会出现76号错误)

sudo apt install libxmu-dev

第五步:在137行修改ls.h文件

apt install vim

cd /home/xxx/NS2/ns-allinone-2.35/ns-2.35/linkstate

vim ls.h(在vim里:点击 i或a 进入编辑模式;点击esc退出编辑模式,输入 :wq 保存并退出)

在erase前加 this-> 

第六步:降低gcc和g++的版本

由于18.04自带的版本是7版本,而NS2只支持gcc/g++4.4-5.4版本,我们可以在刚下载好虚拟机时先安装5版本再用命令行安装7版本,这样可以避免后续产生安装问题

下好后我们会发现有两个版本

切换版本:

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50

update-alternatives --config gcc

接着设置g++,确保gcc和g++的版本同时处在相同的版本

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 40

update-alternatives --config g++

第七步:配置环境

gedit /home/xxx/.bashrc

在最后加上:(改成自己命名的文件夹名)

# add path for ns2
export PATH=”$PATH:/home/NS2/ns-allinone-2.35/bin:/home/NS2/ns-allinone-2.35/tcl8.5.10/unix:/home/NS2/ns-allinone-2.35/tk8.5.10/unix
export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/home/NS2/ns-allinone-2.35/otcl-1.14:/home/ns2/ns-allinone-2.35/lib”
export TCL_LIBRARY=”$TCL_LIBRARY:/home/NS2/ns-allinone-2.35/tcl8.5.10/library”

更新完成后重启虚拟机

第八步:最后安装

cd /home/xxx/NS2/ns-allinone-2.35

./install

(保险起见)再用命令行下载ns2:apt install ns2

出现%符号说明安装成功

二、安装nam(图像化界面)

输入nam出现弹框说明安装成功

 测试一下样本

cd /home/NS2/ns-allinone-2.35/ns-2.35/tcl/ex 

ns simple.tcl

三、简单应用

 了解一下代码

构造两个节点的有线网络

#创造一个模拟器

set ns [new Simulator]

#打开nam

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 DropTall

#设置UDP头并连接到n0点

set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0

#设置CBR(恒定比特率)并连接到n0点

set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0

#连接交通源头

$ns connect $udp0 $null0

#设置时间

$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"

$ns at 5.0 "finish"

#运行

$ns run

参考阅读:

在 Ubuntu18.04 lts 下安装 NS2(含 nam) - 小学还没毕业呢 - 博客园

ubuntu17.10安装lnmp安装包的核心问题-gcc版本、g++版本 - 黑熊一只 - 博客园

http://www.xdnf.cn/news/417547.html

相关文章:

  • Spark SQL 读取 CSV 文件,并将数据写入 MySQL 数据库
  • niushop单商户V5多门店版V5.5.0全插件+商品称重、商家手机端+搭建环境教程
  • Unity引擎源码-物理系统详解-其一
  • centos中libc.so.6No such file的解决方式
  • AI+企业应用级PPT生成(实战)
  • 初识XML
  • 软件测试(概念1)
  • 使用CAS操作实现乐观锁的完整指南
  • C++的历史与发展
  • 原创-业务接口数据监控
  • MyBatis-Plus的批量插入与原生JDBC效率对比
  • git 怎么更改本地的存储的密码
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
  • Yarn-概述
  • 用自写的jQuery库+Ajax实现了省市联动
  • 专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
  • 实现 STM32 PWM 输出:原理、配置与应用详解
  • 美学心得(第二百七十六集) 罗国正
  • RDD案例数据清洗
  • 【SpringBoot】从零开始全面解析Spring MVC (一)
  • 飞书配置表数据同步到数据库中
  • 《微机原理与接口技术》第 6 章 半导体存储器
  • 【Python 中文编码】
  • Jupyter Notebook 配置学习笔记
  • Spark缓存-cache
  • 【github】主页显示star和fork
  • Unity3d 打包安卓平台(Android apk)报错Gradle build failed解决方法
  • 多模态RAG与LlamaIndex——1.deepresearch调研
  • STM32 HAL驱动程序 内部Flash
  • ansible进阶版01