第一范文网 - 专业文章范例文档资料分享平台

第五组 - 基于NS-2的差异式服务网络仿真 - 图文 (3)

来源:用户分享 时间:2020-06-18 本文由暴风使命 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

?? 保存退出,使环境变量生效source .bashrc(可省略)? ?6)验证(测试) ?? (1)打开一个新的终端 ?? (2)输入ns并回车 ?? $ns (如果正常,回出现\操作提示符) ?? (3)输入一段测试用的Tcl脚本代码进行测试 ?? %puts \World\(输出Hello World字符串) ?? Hello World (如果正确,会显示Hello World) ?? % (然后跳到下一个\提示符等待下一条指令输入) ?7)安?? cd ?? ?? ?? sudo make install ns2 2.34安装完毕。

3.2.2在ubuntu10.04 下安装 GNUPLOT

在装有NS2程序的乌邦图虚拟机中打开终端,运行下列程序: sudo apt-get install gnuplot GNUPLOT安装完毕。

9

装nam ns-allinone-2.34/nam-1.14 ./configure make

4. 基于NS-2差异式服务网络仿真的算法实现

如图4.1仿真网络结构图所示,e1和e2是边界路由器,在此我们设置TSWTCM、SRTCM和TRTCM来测量用户数据是否符合规范,core是核心路由器。另外,这三个路由器所采用的队列管理机制是WRED(Weighted Random Early Detection),包含了三个虚拟队列(Virtual Queue),用来记录三种不同封包丢弃概率值的封包队列长度,但实际上只有一个队列(Physical Queue),这个实际的队列是真正用来暂时存放封包用的,而这三个虚拟队列设置不同的临界值(Threshold)和封包丢弃率,使具有红色标注的封包能在发生队列长度在超过临界值时优先丢弃,接着黄色标注的封包,最后才是绿色标注的封包。

图4.1仿真网络结构图

4.1TCL程序代码——TSWTCM算法的实现

(1)在装有NS2程序的乌邦图虚拟机中打开终端,运行下列程序:

set ns [new Simulator]

#开启一个trace file,用来记录封包传送的过程 set nd [open tsw3cm.tr w] $ns trace-all $nd

#设定TSWTCM的参数,在NS2中TSWTCM名称是TSW3CM #设定第一个分组的CIR为1500000 bps, PIR 为3000000 bps #设定第二个分组的CIR为1000000 bps, PIR 为2000000 bps

#设定第一个分组的CBR的传送速率为4000000 bps, 第二组的为4000000 bps set cir0 1500000 set pir0 3000000 set rate0 4000000 set cir1 1000000 set pir1 2000000 set rate1 4000000

#模拟时间为85秒,每个传送的CBR的封包大小为1000 byte set testTime 85.0 set packetSize 1000

# 设定网路模拟架构 set s1 [$ns node] set s2 [$ns node] set e1 [$ns node] set core [$ns node]

10

set e2 [$ns node] set dest [$ns node]

$ns duplex-link $s1 $e1 10Mb 5ms DropTail $ns duplex-link $s2 $e1 10Mb 5ms DropTail

#指定e1为边境路由器,core为核心路由器

$ns simplex-link $e1 $core 10Mb 5ms dsRED/edge $ns simplex-link $core $e1 10Mb 5ms dsRED/core

#指定e2为边境路由器

$ns simplex-link $core $e2 5Mb 5ms dsRED/core $ns simplex-link $e2 $core 5Mb 5ms dsRED/edge

$ns duplex-link $e2 $dest 10Mb 5ms DropTail

#设定在nam中节点的位置关系图

$ns duplex-link-op $s1 $e1 orient down-right $ns duplex-link-op $s2 $e1 orient up-right $ns duplex-link-op $e1 $core orient right $ns duplex-link-op $core $e2 orient right $ns duplex-link-op $e2 $dest orient right

#设定伫列名称

set qE1C [[$ns link $e1 $core] queue] set qE2C [[$ns link $e2 $core] queue] set qCE1 [[$ns link $core $e1] queue] set qCE2 [[$ns link $core $e2] queue]

#设定e1到core的参数

$qE1C meanPktSize $packetSize

#设定一个physical queue $qE1C set numQueues_ 1

#设定三个virtual queue $qE1C setNumPrec 3

#设定从s1到dest为第一个分组,采用TSW3CM #并把符合标准的封包标成绿色(10)

$qE1C addPolicyEntry [$s1 id] [$dest id] TSW3CM 10 $cir0 $pir0

#设定从s2到dest为第二个分组,采用TSW3CM #并把符合标准的封包标成绿色(10)

11

$qE1C addPolicyEntry [$s2 id] [$dest id] TSW3CM 10 $cir1 $pir1

#把不符合标准的封包标注成黄色(11)和红色(12) $qE1C addPolicerEntry TSW3CM 10 11 12

#把绿色(10)的封包放到第一个实际伫列中(0)的第一个虚拟伫列(0) $qE1C addPHBEntry 10 0 0

#把黄色(11)的封包放到第一个实际伫列中(0)的第二个虚拟伫列(1) $qE1C addPHBEntry 11 0 1

#把红色(12)的封包放到第一个实际伫列中(0)的第三个虚拟伫列(2) $qE1C addPHBEntry 12 0 2

#设定第一个实际伫列中(0)的第一个虚拟伫列(0)的RED参数 #{min, max, max drop probability} = {20 packets, 40 packets, 0.02} $qE1C configQ 0 0 20 40 0.02

#设定第一个实际伫列中(0)的第二个虚拟伫列(1)的RED参数为{10, 20, 0.1} $qE1C configQ 0 1 10 20 0.10

#设定第一个实际伫列中(0)的第二个虚拟伫列(2)的RED参数为{5, 10, 0.20} $qE1C configQ 0 2 5 10 0.20

#设定e2到core的参数

$qE2C meanPktSize $packetSize $qE2C set numQueues_ 1 $qE2C setNumPrec 3

$qE2C addPolicyEntry [$dest id] [$s1 id] TSW3CM 10 $cir0 $pir0 $qE2C addPolicyEntry [$dest id] [$s2 id] TSW3CM 10 $cir1 $pir1 $qE2C addPolicerEntry TSW3CM 10 11 12 $qE2C addPHBEntry 10 0 0 $qE2C addPHBEntry 11 0 1 $qE2C addPHBEntry 12 0 2 $qE2C configQ 0 0 20 40 0.02 $qE2C configQ 0 1 10 20 0.10 $qE2C configQ 0 2 5 10 0.20

#设定core到e1的参数

$qCE1 meanPktSize $packetSize $qCE1 set numQueues_ 1 $qCE1 setNumPrec 3

$qCE1 addPHBEntry 10 0 0 $qCE1 addPHBEntry 11 0 1

12

$qCE1 addPHBEntry 12 0 2 $qCE1 configQ 0 0 20 40 0.02 $qCE1 configQ 0 1 10 20 0.10 $qCE1 configQ 0 2 5 10 0.20

#设定core到e2的参数

$qCE2 meanPktSize $packetSize $qCE2 set numQueues_ 1 $qCE2 setNumPrec 3

$qCE2 addPHBEntry 10 0 0 $qCE2 addPHBEntry 11 0 1 $qCE2 addPHBEntry 12 0 2 $qCE2 configQ 0 0 20 40 0.02 $qCE2 configQ 0 1 10 20 0.10 $qCE2 configQ 0 2 5 10 0.20

#设定s1到dest的CBR参数 set udp0 [new Agent/UDP] $ns attach-agent $s1 $udp0

set cbr0 [new Application/Traffic/CBR] $cbr0 attach-agent $udp0 $udp0 set class_ 1

$cbr0 set packet_size_ $packetSize $udp0 set packetSize_ $packetSize $cbr0 set rate_ $rate0

set null0 [new Agent/Null] $ns attach-agent $dest $null0 $ns connect $udp0 $null0

#设定s2到dest的CBR参数 set udp1 [new Agent/UDP] $ns attach-agent $s2 $udp1

set cbr1 [new Application/Traffic/CBR] $cbr1 attach-agent $udp1 $udp1 set class_ 2

$cbr1 set packet_size_ $packetSize $udp1 set packetSize_ $packetSize $cbr1 set rate_ $rate1

set null1 [new Agent/Null] $ns attach-agent $dest $null1 $ns connect $udp1 $null1

#定义一个结束的程序 proc finish {} {

13

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技第五组 - 基于NS-2的差异式服务网络仿真 - 图文 (3)全文阅读和word下载服务。

第五组 - 基于NS-2的差异式服务网络仿真 - 图文 (3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1084328.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top