Author: bakari  Date: 2011.11.23

很久之前自己写的一个NS2 的例子,(一个有线和无线相结合的例子,对于初学很有帮助)欢迎交流!

# Define options

set val(chan) Channel/WirelessChannel ;# 物理信道类型

set val(prop) Propagation/TwoRayGround ;# 设定无限传输模型

set val(netif) Phy/WirelessPhy ;# 网络接口类型

set val(mac) Mac/802_11 ;# MAC 层类型

set val(ifq) Queue/DropTail/PriQueue ;# 接口队列类型

set val(ll) LL ;# LLC 层类型

set val(ant) Antenna/OmniAntenna ;# 天线模型

set val(ifqlen) 50 ;# 网络接口队列的大小

set val(severnode) 1 ;# servre节点的数目

set val(nn) 10 ;# 移动节点的数目

set val(rp) DSDV ;# 设定无线路由协议

set val(x) 1000 ;# 设定拓扑范围

set val(y) 1000 ;# 设定拓扑范围

set val(stop) 31 ;#模拟的总时间

set AgentTrace ON

set RouterTrace ON

set MacTrace OFF

#设定模拟器类型

set ns [new Simulator]

#设定跟踪文件

set tracefd [open simple.tr w]

nstrace−allnstrace−alltracefd

set namtrace [open simwrls.nam w]

nsnamtrace−allnsnamtrace−allnamtrace

nsnamtrace−all−wirelessnsnamtrace−all−wirelessnamtrace val(x)val(x)val(y)

#设定拓扑对象

set topo [new Topography]

topoloadflatgridtopoloadflatgridval(x) $val(y)

set chan [new $val(chan)]

#设定god对象

# 建立一个God对象。God对象主要用来对路由协议做性能评价,它存储了节点总数,

#节点间最短路径等信息。节点的MAC对象会调用God对象,因此即使不使用也仍然要建立此对象

create-god $val(nn)

#设定sever节点

set SerNode [$ns node]

$SerNode set X_ 500

$SerNode set Y_ 800

$SerNode set Z_ 0

#nsinitialnodeposnsinitialnodeposSerNode 10

#设置移动节点的属性

nsnode−config−adhocRoutingnsnode−config−adhocRoutingval(rp) \

-llType $val(ll) \

-macType $val(mac) \

-ifqType $val(ifq) \

-ifqLen $val(ifqlen) \

-antType $val(ant) \

-propType $val(prop) \

-phyType $val(netif) \

-channel $chan \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace OFF \

-movementTrace OFF \

-wiredRouting ON

# !如果一个节点放在移动节点属性之前,它就成为了有线链路的节点,如果放在移动节点属性下边,它就成了无线节点。

for {set i 1} {i<i<val(nn) } {incr i} {

set node_(i)[i)[ns node]

#nsinitialnodeposnsinitialnodeposnode_($i) 10

}

#设定节点的初始位置

$node_(1) set X_ 100

$node_(1) set Y_ 300

$node_(1) set Z_ 0

$node_(2) set X_ 500

$node_(2) set Y_ 300

$node_(2) set Z_ 0

#$node_(3) set X_ 120

#$node_(3) set Y_ 80

#$node_(3) set Z_ 0

$node_(4) set X_ 900

$node_(4) set Y_ 300

$node_(4) set Z_ 0

$node_(5) set X_ 200

$node_(5) set Y_ 100

$node_(5) set Z_ 0

$node_(6) set X_ 100

$node_(6) set Y_ 100

$node_(6) set Z_ 0

$node_(7) set X_ 800

$node_(7) set Y_ 100

$node_(7) set Z_ 0

$node_(8) set X_ 300

$node_(8) set Y_ 300

$node_(8) set Z_ 0

$node_(9) set X_ 700

$node_(9) set Y_ 300

$node_(9) set Z_ 0

#设定有线链路的带宽,时延,队列类型

nsduplex−linknsduplex−linkSerNode $node_(1) 2Mb 150ms DropTail

nsduplex−linknsduplex−linkSerNode $node_(2) 2Mb 150ms DropTail

nsduplex−linknsduplex−linkSerNode $node_(4) 2Mb 150ms DropTail

nsduplex−linknsduplex−linkSerNode $node_(8) 2Mb 150ms DropTail

nsduplex−linknsduplex−linkSerNode $node_(9) 2Mb 150ms DropTail

#设定链路队列大小

nsqueue−limitnsqueue−limitSerNode $node_(1) 20

nsqueue−limitnsqueue−limitSerNode $node_(2) 20

nsqueue−limitnsqueue−limitSerNode $node_(4) 20

nsqueue−limitnsqueue−limitSerNode $node_(8) 20

nsqueue−limitnsqueue−limitSerNode $node_(9) 20

#监测节点间的队列

#数据包进入队列的方位设置,此表示数据包从上到下进入队列

nsduplex−link−opnsduplex−link−opSerNode $node_(1) queuePos 0.5

nsduplex−link−opnsduplex−link−opSerNode $node_(2) queuePos 0.5

nsduplex−link−opnsduplex−link−opSerNode $node_(4) queuePos 0.5

nsduplex−link−opnsduplex−link−opSerNode $node_(8) queuePos 0.5

nsduplex−link−opnsduplex−link−opSerNode $node_(9) queuePos 0.5

#建立tcp连接

set tcp0 [new Agent/TCP]

$ns color 1 Yellow

$tcp0 set class_ 1

nsattach−agentnsattach−agentSerNode $tcp0

set sink0 [new Agent/TCPSink]

nsattach−agentnsattach−agentnode_(1) $sink0

nsconnectnsconnecttcp0 $sink0

set tcp1 [new Agent/TCP]

$ns color 1 Yellow

$tcp1 set class_ 1

nsattach−agentnsattach−agentSerNode $tcp1

set sink1 [new Agent/TCPSink]

nsattach−agentnsattach−agentnode_(2) $sink1

nsconnectnsconnecttcp1 $sink1

set tcp2 [new Agent/TCP]

$ns color 1 Yellow

$tcp2 set class_ 1

nsattach−agentnsattach−agentSerNode $tcp2

set sink2 [new Agent/TCPSink]

nsattach−agentnsattach−agentnode_(4) $sink2

nsconnectnsconnecttcp2 $sink2

set tcp3 [new Agent/TCP]

$ns color 1 Yellow

$tcp3 set class_ 1

nsattach−agentnsattach−agentSerNode $tcp3

set sink3 [new Agent/TCPSink]

nsattach−agentnsattach−agentnode_(8) $sink3

nsconnectnsconnecttcp3 $sink3

set tcp4 [new Agent/TCP]

$ns color 1 Yellow

$tcp4 set class_ 1

nsattach−agentnsattach−agentSerNode $tcp4

set sink4 [new Agent/TCPSink]

nsattach−agentnsattach−agentnode_(9) $sink4

nsconnectnsconnecttcp4 $sink4

#设定ftp应用程序

set ftp0 [new Application/FTP]

ftp0attach−agentftp0attach−agenttcp0

set ftp1 [new Application/FTP]

ftp1attach−agentftp1attach−agenttcp1

set ftp2 [new Application/FTP]

ftp2attach−agentftp2attach−agenttcp2

set ftp3 [new Application/FTP]

ftp3attach−agentftp3attach−agenttcp3

set ftp4 [new Application/FTP]

ftp4attach−agentftp4attach−agenttcp4

#建立udp连接

set udp0 [new Agent/UDP]

$ns set color 2 Red

$udp0 set class_ 2

nsattach−agentnsattach−agentnode_(2) $udp0

set null0 [new Agent/Null]

nsattach−agentnsattach−agentnode_(5) $null0

nsconnectnsconnectudp0 $null0

set cbr0 [new Application/Traffic/CBR]

$cbr0 set packetSize0 100

$cbr0 set rate0 2Mb

cbr0attach−agentcbr0attach−agentudp0

set udp1 [new Agent/UDP]

$ns set color 2 Red

$udp1 set class_ 2

nsattach−agentnsattach−agentnode_(1) $udp1

set null1 [new Agent/Null]

nsattach−agentnsattach−agentnode_(6) $null1

nsconnectnsconnectudp1 $null1

set cbr1 [new Application/Traffic/CBR]

$cbr1 set packetSize1 100

$cbr1 set rate1 2Mb

cbr1attach−agentcbr1attach−agentudp1

set udp2 [new Agent/UDP]

$ns set color 2 Red

$udp2 set class_ 2

nsattach−agentnsattach−agentnode_(9) $udp2

set null2 [new Agent/Null]

nsattach−agentnsattach−agentnode_(7) $null2

nsconnectnsconnectudp2 $null2

set cbr2 [new Application/Traffic/CBR]

$cbr2 set packetSize2 100

$cbr2 set rate2 2Mb

cbr2attach−agentcbr2attach−agentudp2

#模拟节点的运动位置和速度

nsat1.0"nsat1.0"node_(5) setdest 850.0 100.0 50.0"

nsat2.5"nsat2.5"node_(6) setdest 900.0 100.0 80.0"

nsat13.0"nsat13.0"node_(7) setdest 500.0 100.0 30.0"

#时间调度器设置流量发生时间

nsat1.0"nsat1.0"ftp0 start"

nsat30.5"nsat30.5"ftp0 stop"

nsat1.0"nsat1.0"ftp1 start"

nsat30.5"nsat30.5"ftp1 stop"

nsat1.0"nsat1.0"ftp2 start"

nsat30.5"nsat30.5"ftp2 stop"

nsat1.0"nsat1.0"ftp3 start"

nsat30.5"nsat30.5"ftp3 stop"

nsat1.0"nsat1.0"ftp4 start"

nsat30.5"nsat30.5"ftp4 stop"

nsat1.0"nsat1.0"cbr0 start"

nsat16.2"nsat16.2"cbr0 stop"

nsat2.0"nsat2.0"cbr1 start"

nsat13.0"nsat13.0"cbr1 stop"

nsat13.0"nsat13.0"cbr2 start"

nsat24.0"nsat24.0"cbr2 stop"

#结束nam和simulator

nsatnsatval(stop) "stop"

nsatnsatval(stop) "puts \"end simulator\"; $ns halt"

proc stop {} {

global ns tracefd namtrace

$ns flush-trace

close $tracefd

close $namtrace

exec nam simwrls.nam &

exit 0

}

#开始模拟

$ns run

有图有真相:

转载于:https://www.cnblogs.com/zhangyuhang3/p/6868448.html

有线节点与无线节点的混合仿真模拟实验相关推荐

  1. 模拟仿真最终利用计算机,基于计算机仿真模拟实验的应用分析

    计算机技术应用 t h e A p p l i c a t i o n o f C o mp u t e r T e c h n o l o g y 基于计算机仿真模拟实验的应用分析 文/吴婷 Mi ...

  2. 计算机物理仿真模拟培养方案,中学物理仿真模拟实验.doc

    中央电大毕业设计 毕 业 论 文 专 业:计算机基础与应用 年 级:2004年春计算机本科 学 号:041060219 姓 名:倪亚非 指导老师:李征 2005年12月28日 物理仿真模拟实验 --- ...

  3. Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形

    Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形 文章目录 Proteus 8微机接口仿真模拟实验,8086,8255A,DAC0832输出四种波形 一.设计名 ...

  4. 实验七 隐藏节点和暴露节点仿真实验

    无线网络技术教程第四版实验七 隐藏节点和暴露节点仿真实验 目录 无线网络技术教程第四版实验七 隐藏节点和暴露节点仿真实验 1 实验目的和要求 2 实验原理和背景 2.1 隐藏节点问题 2.2 暴露节点 ...

  5. 无线节点的空中唤醒技术解析

    无线网络应用中,通常要求节点尽可能休眠,最大限度降低功耗,但又希望节点能尽可能及时地收发无线数据,这似乎是个不可调和的矛盾. 但是有个神奇的功能,空中唤醒.节点即使处于休眠,当需要节点工作时可以直接通 ...

  6. 无线网络传输问题:隐藏节点和暴露节点

    1.什么是隐藏节点和暴露节点问题 (1)隐藏节点(隐终端) 隐藏终端是指在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点.隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在 ...

  7. matlab节点连通率,利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系

    一.目的 ①在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线. ②在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线. 二.方法描述 在1x1的单位矩形中 ...

  8. 具体对比智能家居有线技术和无线技术,各自优劣势在哪?

    在技术层面,无线技术都能搞定的厂商做有线技术其实应该不是很大的门槛,同时毫无疑问,有线技术的厂商以后肯定会慢慢向无线技术伸展. 一.智能家居有线(总线)技术 1.现场总线 现场总线是现代控制技术.计算 ...

  9. 计算机网络中的节点有转接节点和传输节点,计算机网络技术复习材料带答案全套...

    计算机网络技术复习材料 第一章:计算机网络概述 一.填空题: 1.从物理结构看,计算机网络可看做在各方都认可的通信协议控制下,由若干拥有独立_操作系统的计算机._终端设备_._数据传输_.和通信控制处 ...

最新文章

  1. QT学习笔记(-): 利用QHttp进行http下载(1)
  2. SVM针对中文文本分类
  3. [css] img标签是行内元素,为什么却能设置宽高
  4. C语言指定初始化器解析及其应用
  5. 再谈谈ADO.NET Data Service
  6. this关键字在构建错误实例时使用说明
  7. Software--WCF
  8. 为表单加上即时通讯的能力
  9. php 简繁体转换类库,简体中文转换为繁体中文的PHP函数
  10. 自学单片机编程(三) 流水灯代码
  11. php pmp是什么,pmp 总时差 自由时差 说明 和计算
  12. 微信公众号用户标签php,C#微信开发之微信公众号标签管理功能
  13. 基于 AWS 的一站式分布式数据库测试体系,简单易上手|TiDB Hackathon 2020 优秀项目分享
  14. 网站管理后台帐号密码找回方法
  15. Python中的while循环
  16. 第二章02:初识批处理
  17. 知足而乐,不知足亦乐
  18. Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism
  19. python宿舍管理保存_学生宿舍管理信息系统详细报告
  20. R语言文本挖掘tm包详解(附代码实现)

热门文章

  1. 解决RHEL sendmail服务启动慢
  2. html css移动位置,html – 如何使用CSS移动对象?
  3. php 5.6 新特性,PHP 5.6正式发布:新特性、及功能改进介绍
  4. 差动机器人毕业设计_双轮差动机器人曲线算法设计与实现
  5. 云原生 Serverless Database 使用体验
  6. 从零开始入门 K8s | etcd 性能优化实践
  7. linux系统编译安装mysql_Linux下编译安装MySQL
  8. c语言程序 实现简单计算器功能,C语言实现简单计算器小项目
  9. python format 槽中槽_printf中的槽和实参--对比python struct包
  10. NFS服务器主配置文件名,NFS服务器的搭建与配置