NS2网络仿真环境的搭建和使用

article/2025/10/10 0:15:53

实验概述:

1学会安装和使用NS2;熟悉NS2的文档结构;掌握NS2的仿真环境、使用界面和操作方法。

2学会安装NS2仿真环境和配置。

3了解NS2的工作原理和程序组成。

4熟悉NS2中的脚本语言TclOtcl

5学习分裂对象模型和TclCL

6NS的时间调度机制学习。

7学习节点,链路,定时器,代理和应用层等在NS2中的使用。

8学习nam的使用。

9案例分析,学习应用之前的知识搭建网络演示拓扑和完成发包实验。

 

实验内容

  1. 运行example.tcl初步体验NS2网络仿真环境和nam的使用

      2学习OTcl脚本语言的基本语法与控制流程

proc test() { #一般过程的构造

set a 43 #定义a变量 ,并赋值43

set b 27 #定义b变量 ,并赋值27

set c [expr $a +$b] #定义c变量 ,并赋值a+b

set d [expr [expr $a-$b] * $c] #定义d变量 ,并赋值(a-b*c

for {set k 0} {$k < 10} {incr k} { #一个for循环过程

if ($k < 5} {

puts “k < 5 ,pow =[expr pow ($d,$k)] #输出”k<5,pow=d^k”

else {

puts “k>5 ,mod=[expr $d % $ k]” #输出”k>5,pow=d%k”

         }

    }

}

输出结果

3学习OTcl脚本语言的面向对象的语言特性

输出结果

4 Trace 分析

cat out.tr |grep "2.3 cbr"|grep ^r| column 1 10 |

#处理数据,将数据记录到jitter.txt文件中

awk '{diff =$2-old2; if (diff==0 )diff =1 ;if(diff>0){

printf("%d\t%f\n,$2,($1-old1)/diff);old1=$1;

old2=$2}}]>jitter.txt

cat out.tr |grep "2.3 cbr"|grep ^r|

awk '{diff =$11-old11; if (diff==0 )diff =1 ;if(diff>0){

printf("%d\t%f\n,$11,($11-old11)/diff);old2=$2;

old11=$11}}]>jitter.txt

#作图命令

gunplot

输出

5完整体验

set ns [new Simulator] #新建一个ns模拟器

set node_(s1) [$ns node] #定义多个节点

set node_(s2) [$ns node]

set node_(s3) [$ns node]

set node_(s4) [$ns node]

set node_(r1) [$ns node]

set node_(r2) [$ns node]

 

$ns duplex-link node_(s1) $node_(r1) 10Mb 2ms DropTail

#定义s1r1之间带宽10Mb时延2ms,丢包方式DropTail

$ns duplex-linktail node_(s2) $node_(r1) 10Mb 3ms DropTail

$ns duplex-link node_(r1) $node_(r2) 1.5Mb 2ms RED

$ns queue-limit node_(r1) $node_(r2) 25 #队列最大长度25

$ns queue-limit node_(r2) $node_(r1) 25

$ns duplex-link node_(s3) $node_(r2) 10Mb 4ms DropTail

$ns duplex-link node_(s4) $node_(r2) 10mb 5ms DropTail

#对于TCP变量使用痕迹跟踪

Set tcp1 [$ns create-connection TCP/Reno $node_(s1) TCPSink $node_(s3) 0]

# s1 s3结点建立tcp连接

$tcp1 window_ 15

Set tcp2 [$ns create-connection TCP/Reno $node_(s1) TCPSink $node_(s3) 1]

$tcp2 window_15

set ftp1 {$tcp1 attach-source FTP}

set ftp2 {$tcp2 attach-source FTP}

#跟踪队列

set redq [[$ns link $node_(r1) $node_(r2) ] queue]

set tchan_ [open all.q w] #打开 可写文件all.q

$redq trace curq

$redq trace ave_

$redq attach $tchan_ #将 踪迹写入all.q文件

 

$ns at 0.0 “$ftp1 start” #定义ns模拟器的开始与结束时间

$ns at 0.0 “$ftp2 start”

$ns at 10 “finish”

proc finish {} { #构建finish方法

tchan_

awkCode{

{

if ($1==”0” &&NF>2) {

print $2,$3 >> ”temp.q”;

}

else if ($1 ==”a” && NF>2) {

print $2,$3 >> “temp.a”;

}

set f [open temp.queue w] #打开可写文件temp.queue

puts $f “TitleText: red”

puts $f “Device :P ostscript”

if { info [exists tchan_ ] } {

close $tchan_

}

 

exec rm -f temp.q temp.a #执行Linuxshell脚本作图

Exec touch temp.a temp.q

 

exec awk $awkCode all.q

puts $f \”queue

exec cat temp.q >@ $f

puts $f \n\”ave_queue

puts cat temp.a >@ $f

close $f

exec xgraph -bb -tk -x time -y queue temp.queue

exit 0

}

$ns run

 

三实验总结

在如今这个信息化时代,网络几乎无处不在。他已经延伸到社会、经济、安全的每一个角落,影响着生活的方方面面。所以对网络环境的模拟是很有必要的。

1 首先,我学会了NS2网络仿真平台的基本使用。NS2是使用OTclC++两种编程语言、面向对象的、离散时间驱动的网络环境模拟器,提供了在无线或有线网络上的TCP、路由、多播等多种协议的模拟。

2了解了OTcl脚本语言,能够写较为简单的TCL语句。并能够使用nam演示仿真过程使之能更清晰,形象了解数据传输。

3trace分析,并用Linux基本命令处理数据,并画图

4其次拓宽了视野,我对网络概念有了更深的理解,对于TCP/IPUDP

FTP 等报文传输方式有了感性的认识

5对于科学研究的方法与步骤有了初步的了解,学会了科学思维方式对于科研的重要性

6对科学研究产生了浓厚的兴趣,促进了我的学习积极性


http://chatgpt.dhexx.cn/article/DIG3jUlf.shtml

相关文章

NS2的NODE类——node

本文转自&#xff1a;http://hi.baidu.com/wirelesscat/blog/item/67c6db4633f71e016b63e59b.html 同时推荐一个很好的博客&#xff0c;这里有连载的 ns2 仿真问题&#xff0c;感谢大牛&#xff5e;&#xff5e;&#xff5e; 博客地址&#xff1a;http://hi.baidu.com/wirele…

NS2问题解决

问题一&#xff1a; When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6 but it doesnt seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfi…

NS2简单介绍

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台&#xff0c;研究人员使用它可以很容易的进行网络技术的开发&#xff0c;而且发展到今天&#xff0c;它所包含的模块已经非常丰富&#xff0c;几乎涉及到了网络技术的所有方面。所以&#xff0c;NS成了目前学术界广泛使…

NS2网络仿真

NS2安装与配置TCP/UDP比较仿真静态/动态路由仿真 1.安装与配置 1.1更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更新已经安装的包 sudo apt-get dist-upgrade #更新软件&#xff0c;升级系统 1.2安装ns2需要的几个包 sudo apt-get install build-ess…

ns2安装详细过程与网络仿真

ns2安装详细过程与网络仿真 博客分类&#xff1a; Networks TclLinuxUnixGCCVC 简单的说&#xff0c;NS&#xff0d;2是一个网络模拟器&#xff0c;所以经常被用到网络课的教学中。 NS-2是OpenSource的&#xff0c;最早的版本是在linux/unix下运行的&#xff0c;后来有了wi…

NS2教程

柯老师的NS2新网址 Due to some reasons, my NS2 website is sometimes donw and unavailable for many users. Therefore, I provide another backup website. 1. NS2 http://csie.nqu.edu.tw/smallko/ns2/ns2.htm 2. old_NS2 (backup of NS2 Learning Guide) http://csie.n…

ns2安装和若干问题的解决方法

文章目录 1. 安装与配置2. 安装nam3. 配置环境变量4. 检查是否能够成功运行参考资料 在安装ns2的过程中遇到了很多问题&#xff0c;为了记录这些问题和为同样遇到这些问题的朋友提供思路&#xff0c;写下这篇博文。 安装ns2和nam主要分为如下几个步骤&#xff1a; 安装与配置…

Linux下安装ns2

最近为了项目需要用到NS2软件用于网络仿真实验&#xff0c;从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功&#xff0c;最后放弃了&#xff0c;回到了Linux系统&#xff0c;又折腾了两天终于安装测试成功&#xff01;&#xff08;安装其实蛮…

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录&#xff0c;网上的企业微信扫码都是基于自建应用的扫码登录&#xff0c;对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员&#xff0c;可通过单点登录机制&#xff0c;登录到第三方网站。第三方可通过接口&#xff0c;…

微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

https://www.v2ex.com/amp/t/390333 微信开放平台登录与微信公众平台授权登录区别在哪? 2017-09-13 12:05:41 08:00 xoxo419 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录? 问: 两者区别在哪? 壹号店 http://m.yhd.com 微信第三方登录属…

Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

在微信开放平台注册移动应用&#xff0c;才能在APP里实现「微信登录」和「微信支付」。 近期因为业务需要&#xff0c;需要修改应用的包名&#xff0c;因此在微信开发平台重新提交了应用「基本信息」修改申请&#xff0c;顺便吐槽下&#xff0c;现在微信开发平台对应用审核真是…

微信第三方登录redirect_uri 参数错误

微信第三方登录 先说解决方案&#xff1a;redirect_uri 参数错误 在开放平台设置好回调地址&#xff0c;例如地址是 www.niezhiliang.com 那么在生成二维码的时候回调只能写该域名下的地址 在申请二维码页面回调地址(你的redirect_uri) 还必须加上http或者https&#xff0c;…

微信第三方登录接口

随着手机微信的崛起&#xff0c;腾讯发布的微信联登确实很诱惑pc端的伙伴们&#xff0c;现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步&#xff1a;获取AppID AppSecret(不做解释&#xff0c;自己去微信公众平台申请) 第二步&#xff1a;生成扫描二维码&…

微信 第三方登录

转自&#xff1a;http://www.cnblogs.com/linjunjie/p/6378166.html#3902595 从http://www.cnblogs.com/v-weiwang/p/5732423.html 申请开发者账号之内的就不累赘了&#xff0c;网上一大堆&#xff1a; 说下需求&#xff0c;一个网页要在三类容器运行&#xff0c;公司app&#…

微信第三方登录

微信第三方登录 步骤&#xff1a; 1.申请你的AppID 请到微信开放平台https://open.weixin.qq.com/注册成为开发者&#xff0c;然后创建应用并提交审核&#xff0c;只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下&#xff1a; 在build.gradle文件…

流程图了解微信第三方登录

1.首先是&#xff0c;浏览器显示微信登录 2.用户扫描&#xff0c;发送请求到微信服务器&#xff0c;前端也会发送一个请求到自己的后台服务器&#xff0c;后台服务器提供微信服务器获取第三方验证授权地址&#xff0c;携带回调路径 3.微信服务器验证成功&#xff0c;返回code…

Oracle官网下载JDK

进入Oracle官网&#xff1a;https://www.oracle.com/index.html 1、选择support&#xff08;支持&#xff09;software Download 2、选择 java 3、选择jdk 4、拉到底选择java archive&#xff08;档案文件&#xff09; 5、选择要下载的版本

解决JDK官网下载龟速的问题

在JDK的官网下载JDK时还需要登录Oracle 且下载的时候那速度相当缓慢 可以使用华为的镜像下载&#xff0c;超快的 下载仓库地址&#xff1a;x​​​​​​​ Index of java-local/jdk

如何在官网下载java JDK

1.打开Oracle官网&#xff0c;准备下载java JDK (下载时需要使用注册用户登陆&#xff0c;可以免费注册) 官网地址&#xff1a;http://www.oracle.com/ 登录Oracle账号 选择适合自己的JDK版本 选择适合的版本 勾选 下载

JDK1.8u162以及JDK1.8所有历史版本官网下载地址

很多网友想看JDK1.8里面所有的版本&#xff0c;今天我就给大家带来了所以JDK1.8版本的官方下载地址&#xff0c;其中包括Windows版本和Linux版本 JDK1.8所有版本官网下载链接 Java Archive Downloads - Java SE 8 Attention!!! Java Archive | Oraclehttps://www.oracle.c…