Ubuntu安装NS2-计网实验Tahoe与Reno 运行机制对比分析

2023-10-20 23:20

本文主要是介绍Ubuntu安装NS2-计网实验Tahoe与Reno 运行机制对比分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

环境参数:

一、预备操作:换为国内镜像

二、安装NS2(2.35)

step1:更新系统安装包

step2:安装ns2运行时依赖包

step3:编译ns2.35安装包

step5:验证安装是否成功

三、你以为结束了?​

附录 lab11.tcl


环境参数:

VMWARE Ubuntu16.04

一、预备操作:换为国内镜像

此步操作主要是为了防止apt-get无法定位软件包以及下载速度贼慢等问题

cd /etc/apt

上面是备份好的截图(多个sources.list.old);在修改source.list前先备份一下

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

打开source.list sudo vim /etc/apt/source.list

复制源(清空原来的source.list中的内容,用下面的内容覆盖);网上有多种源,这里我用清华大学的

deb-src http://mirror.neu.edu.cn/ubuntu/ xenial main restricted #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial multiverse
deb http://mirror.neu.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted
deb-src http://mirror.neu.edu.cn/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security universe
deb http://mirror.neu.edu.cn/ubuntu/ xenial-security multiverse

然后更新即可 sudo apt-get update

二、安装NS2(2.35)

先下载安装包:下载地址 https://www.isi.edu/nsnam/ns/ns-build.html#allinone

下载慢怎么办?用迅雷啊

step1:更新系统安装包

sudo apt-get update #更新源列表
sudo apt-get upgrade #更新已经安装的包
sudo apt-get dist-upgrade #更新软件,升级系统

第一步之前做了,第二步有点久,第三步反正我是没做...

step2:安装ns2运行时依赖包

sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev  #for tcl and tk
sudo apt-get install libxmu-dev libxmu-headers  #for nam

step3:编译ns2.35安装包

把之前下好的安装包拖到Home目录下直接解压,这个目录其实就是 /home/用户名,放哪都行吧只要你环境变量懂配...

tar xvfz ns-allinone-2.35.tar.gz 或者右键解压

解压后文件夹改个名字叫ns,如上图(不改随意,环境变量把ns换成解压后的文件夹名即可)

然后cd进去之后发现有个install

cd ns 或者 cd ns-allinone-2.35(没改文件夹名字的话)

安装前先修改ls文件,位置是:ns-2.35/linkstate/ls.h 


第137行 
void eraseAll() { erase(baseMap::begin(), baseMap::end()); }

改为:void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }

保存后,再回去执行 ./install 


step4:配置环境变量

sudo gedit ~/.bashrc # ~ 这个符号为当前用户根目录,即/home/用户名

最后加上,用户名用你自己的代替;因为之前改了文件夹名,下面的NS_HOME就是/home/用户名/ns了

export NS_HOME=/home/用户名/ns 
export PATH=$PATH:$NS_HOME/bin:$NS_HOME/tcl8.5.10/unix:$NS_HOME/tk8.5.10/unix
export LD_LIBRARY_PATH=$NS_HOME/otcl-1.14:$NS_HOME/lib  
export TCL_LIBRARY=$NS_HOME/tcl8.5.10/library:$NS_HOME/tk8.5.10/library

然后注意TCL_LIBRARY这个环境变量跟网上其他的可能不一样(后面加了:$NS_HOME/tk8.5.10/library),反正我不加后面nam命令会出错

配置好环境变量记得 source ~/.bashrc

step5:验证安装是否成功

重新打开一个新的终端:

cd ns/ns-2.35/tcl/ex/
ns simple.tcl

弹出下图应该就成功了

还要验证下nam命令

如果nam没有的话参考下 https://blog.csdn.net/circle2015/article/details/52490582

最后再看下gunplot安装了没有,没有就sudo apt install gunplot

安装成功后如下

PS:如果你在安装过程中遇到了各种莫名奇妙的问题,请自行百度,毕竟......

 

三、实验记录

实验报告给的lab11.tcl是错的,注意换成附录的(无力吐槽)

然后就OK了

Gnuplot>set title “Tahoe”
Gnuplot>set xlabel “time”
Gnuplot>set ylabel “cwnd”
Gnuplot>set terminal gif
Gnuplot>set output “cwnd-Tahoe.gif”
Gnuplot>plot “cwnd-Tahoe.tr” with linespoints 1

附录 lab11.tcl

if {$argc != 1} {puts"Usage: ns lab11.tcl TCPversion"puts"Example:ns lab11.tcl Tahoe or ns lab11.tcl Reno"exit
}set par1 [lindex $argv 0]#产生一个仿真的对象
set ns [new Simulator]#打开一个trace file, 用来记录封包传送的过程
set nd [open out-$par1.tr w]
$ns trace-all $nd#打开一个文件用来记录cwnd 变化情况
set f0 [open cwnd-$par1.tr w]#定义一个结束的程序
proc finish {} {global ns nd f0 tcp#显示最后的平均吞吐量puts [format "average throughput:%.1f Kbps"\[expr [$tcp set ack_]*([$tcp set packetSize_])*8/1000.0/10]]$ns flush-trace#关闭文件close $nd close $f0exit 0
}#定义一个记录的程序
#每格0.01s就去记录当时的cwnd
proc record {} {global ns tcp f0set now [$ns now]puts $f0 "$now [$tcp set cwnd_]"$ns at [expr $now+0.01] "record"
}#产生传送结点,路由器r1,r2和接收结点
set r0 [$ns node]
set r1 [$ns node]
set n0 [$ns node]
set n1 [$ns node]#建立链路
$ns duplex-link $n0 $r0 10Mb 1ms DropTail
$ns duplex-link $r0 $r1 1Mb 4ms DropTail
$ns duplex-link $r1 $n1 10Mb 1ms DropTail#设置队列长度为18个封包大小
set queue 18
$ns queue-limit $r0 $r1 $queue#根据用户的设置,指定TCP版本
if {$par1 == "Tahoe"} {set tcp [new Agent/TCP]
} else {set tcp [new Agent/TCP/Reno]
}
$ns attach-agent $n0 $tcpset tcpsink [new Agent/TCPSink]$ns attach-agent $n1 $tcpsink$ns connect $tcp $tcpsink#建立FTP应用程序
set ftp [new Application/FTP]
$ftp attach-agent $tcp#在0.0s时,开始传送
$ns at 0.0 "$ftp start"#在10.0s时,结束传送
$ns at 10.0 "$ftp stop"#在0.0s时调用record来记录TCP的cwnd变化情况
$ns at 0.0 "record"#在第10.0s时调用finish来结束模拟
$ns at 10.0 "finish"#执行模拟
$ns run

 

 

这篇关于Ubuntu安装NS2-计网实验Tahoe与Reno 运行机制对比分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/250344

相关文章

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

如何安装 Ubuntu 24.04 LTS 桌面版或服务器? Ubuntu安装指南

《如何安装Ubuntu24.04LTS桌面版或服务器?Ubuntu安装指南》对于我们程序员来说,有一个好用的操作系统、好的编程环境也是很重要,如何安装Ubuntu24.04LTS桌面... Ubuntu 24.04 LTS,代号 Noble NumBAT,于 2024 年 4 月 25 日正式发布,引入了众

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件