无线局域网的应用

无线局域网的应用
无线局域网的应用

无线网络技术及其应用无线局域网的应用

专业:

班级:

姓名:

学号:

成绩:

项目任务:

1、无线局域网的隐藏节点的问题应用

2、无线局域网的暴露节点的问题应用

项目分析:

1、无线网络隐藏节点若节点0和节点2同时要传送给节点1,,但节点0和节点都不在对方的传送范围之内,所以当节点0传送分组给节点1时,由于节点2不在节点0的覆盖范围内,他不能侦听到1在发送分组,这种情况下,若2向1发送分组,则发送碰撞,像这样因为传输距离而发生误判的问题就成为节点隐藏问题。

2、无线网络暴露节点,当某节点要发送数据给另一个节点时,因邻节点也正在发送数据,影响了自身的潜在传输。节点0、1、2、3.其中节点2、3均不在对方的传输范围内,而节点0、1均在彼此的传输范围内。因此当节点0发送数据给节点3时,节点1却不能将数据发送给节点3,因此节点1会检测到节点0正传输数据,如果其也发送数据,则会影响节点0的传输。而事实上,节点1可以将数据传输到节点3,因此节点1并不在节点2的传输激励内。

项目实施:

1、无线局域网的隐藏节点

#仿真环境的参数设置

#Threshold是界限的意思

#RTSThreshold是规定了低频射频信号的包大小,设置的越小,那么相同的数据就需要越多的包来发送。

Mac/802_11 set RTSThreshold_ 0

#设定无限节点的通信半径

Antenna/OmniAntenna set X_ 0

Antenna/OmniAntenna set Y_ 0

Antenna/OmniAntenna set Z_ 1.5

Antenna/OmniAntenna set Gt_ 1.0

Antenna/OmniAntenna set Gr_ 1.0

#引用了WirelessPhy类,设定信号传输范围

#RXThresh_ :由节点传输范围250m计算出来的

#RXThresh_ :由载波侦听范围550m计算出来的

#这两个值设置的是否合理,将影响到数据是否能正确传输到MAC层Phy/WirelessPhy set CPThresh_ 10.0

Phy/WirelessPhy set CSThresh_ 8.91754e-10

Phy/WirelessPhy set RXThresh_ 2.81838e-9

#带宽2Mbps

Phy/WirelessPhy set bandwidth_ 2e6

@传输功率

Phy/WirelessPhy set Pt_ 0.281838

Phy/WirelessPhy set freq_ 9.14e+6

#system_loss

Phy/WirelessPhy set L_ 1.0

#仿真变量设置

set val(chan) Channel/WirelessChannel

set val(prop) Propagation/TwoRayGround

set val(netif) Phy/WirelessPhy

set val(mac) Mac/802_11

set val(ifq) Queue/DropTail/PriQueue

set val(ll) LL

set val(ant) Antenna/OmniAntenna

set val(ifqlen) 100

set val(rp) DSDV#广播路由信息

#ns实例化合trace文件设置

#单播节点的定义set ns[new Simulator]

#组播节点的定义set ns[new Simulator -multicast on]

set ns [new Simulator]

set f [open Hidden_Terminal.tr w]

$ns trace-all $f

$ns eventtrace-all

set nf [open Hidden_Terminal.nam w]

$ns namtrace-all-wireless $nf 500 500

#仿真拓扑设置

#设置拓扑的范围和全局节点记录,便于控制节点的位置和运动范围

set topo [new Topography]

$topo load_flatgrid 500 500

create-god 3

#配置节点

#在节点实例化前对节点的参数进行配置,包括路由协议,天线类型,物理层模型等,实现正确有效的隐藏节点实验分析

set chan [new $val(chan)]

$ns node-config -adhocRouting $val(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 OFF \

-macTrace ON \

-movementTrace OFF

#$ns node对节点进行实例化

for {set i 0} {$i < 3} {incr i} {

set node_($i) [$ns node]

$node_($i) random-motion 0

}

#对节点位置进行设置,不能超过拓扑范围

$node_(0) set X_ 30.0

$node_(0) set Y_ 130.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 180.0

$node_(1) set Y_ 130.0

$node_(1) set Z_ 0.0

$node_(2) set X_ 330.0

$node_(2) set Y_ 130.0

$node_(2) set Z_ 0.0

#代理和数据流的设置

#设置了两条传输层mUDP的数据流

#Agent代理,表示了网络层的分组的起点和终点,并被用于各层协议的实现。set udp [new Agent/mUDP]

$udp set_filename sd1

$ns attach-agent $node_(0) $udp

set null [new Agent/mUdpSink]

$null set_filename rd1

$ns attach-agent $node_(1) $null

$ns connect $udp $null

#设置应用层是CBR

#CBR:Constant Bitrate,固定码率,静态比特率的意思。

#CBR:是指编码器的每秒钟的输出数据量(或解码器的输入码率)应该是固定值(常数)。

#VBR:可变码率,Variable Bitrate

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1000

$cbr set rate_ 1Mb

$cbr set random_ false

$ns at 1.5 "$cbr start"

$ns at 15.0 "$cbr stop"

set udp2 [new Agent/mUDP]

$udp2 set_filename sd2

$ns attach-agent $node_(2) $udp2

set null2 [new Agent/mUdpSink]

$null2 set_filename rd2

$ns attach-agent $node_(1) $null2

$ns connect $udp2 $null2

set cbr2 [new Application/Traffic/CBR] $cbr2 attach-agent $udp2

$cbr2 set type_ CBR

$cbr2 set packet_size_ 1000

$cbr2 set rate_ 1Mb

$cbr2 set random_ false

$ns at 2.0 "$cbr2 start"

$ns at 15.0 "$cbr2 stop"

#对节点进行设置

for {set i 0} {$i < 3} {incr i} {

$ns initial_node_pos $node_($i) 30

$ns at 20.0 "$node_($i) reset"

}

#

$ns at 20.0 "finish"

$ns at 20.1 "puts \"NS EXITING...\"; $ns halt"

proc finish {} {

global ns f nf val

$ns flush-trace

close $f

close $nf

exec nam Hidden_Terminal.nam &

exit 0

}

$ns run

2、无线局域网的暴露节点

Mac/802_11 set RTSThreshold_ 0

#Mac/802_11 set RTSThreshold_ 3000

Antenna/OmniAntenna set X_ 0

Antenna/OmniAntenna set Y_ 0

Antenna/OmniAntenna set Z_ 1.5

Antenna/OmniAntenna set Gt_ 1.0

Antenna/OmniAntenna set Gr_ 1.0

Phy/WirelessPhy set CPThresh_ 10.0

Phy/WirelessPhy set CSThresh_ 6.88081e-9

Phy/WirelessPhy set RXThresh_ 1.42681e-9

Phy/WirelessPhy set bandwidth_ 2e6

Phy/WirelessPhy set Pt_ 0.281838

Phy/WirelessPhy set freq_ 9.14e+6

Phy/WirelessPhy set L_ 1.0

set val(chan) Channel/WirelessChannel set val(prop) Propagation/TwoRayGround set val(netif) Phy/WirelessPhy

set val(mac) Mac/802_11

set val(ifq) Queue/DropTail/PriQueue set val(ll) LL

set val(ant) Antenna/OmniAntenna

set val(ifqlen) 100

set val(rp) DSDV

set ns [new Simulator]

set f [open Exposed_Terminal.tr w]

$ns trace-all $f

$ns eventtrace-all

set nf [open Exposed_Terminal.nam w] $ns namtrace-all-wireless $nf 500 500

set topo [new Topography]

$topo load_flatgrid 500 500

create-god 4

set chan [new $val(chan)]

$ns node-config -adhocRouting $val(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 OFF \

-macTrace ON \

-movementTrace OFF

for {set i 0} {$i < 4} {incr i} {

set node_($i) [$ns node]

$node_($i) random-motion 0

}

$node_(0) set X_ 30.0

$node_(0) set Y_ 200.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 130.0

$node_(1) set Y_ 200.0

$node_(1) set Z_ 0.0

$node_(2) set X_ 230.0

$node_(2) set Y_ 200.0

$node_(2) set Z_ 0.0

$node_(3) set X_ 330.0

$node_(3) set Y_ 200.0

$node_(3) set Z_ 0.0

set udp [new Agent/mUDP]

$udp set_filename sd1

$ns attach-agent $node_(1) $udp

set null [new Agent/mUdpSink] $null set_filename rd1

$ns attach-agent $node_(0) $null $ns connect $udp $null

set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1000

$cbr set rate_ 1Mb

$cbr set random_ false

$ns at 1.5 "$cbr start"

$ns at 15.0 "$cbr stop"

set udp2 [new Agent/mUDP]

$udp2 set_filename sd2

$ns attach-agent $node_(2) $udp2

set null2 [new Agent/mUdpSink]

$null2 set_filename rd2

$ns attach-agent $node_(3) $null2

$ns connect $udp2 $null2

set cbr2 [new Application/Traffic/CBR] $cbr2 attach-agent $udp2

$cbr2 set type_ CBR

$cbr2 set packet_size_ 1000

$cbr2 set rate_ 1Mb

$cbr2 set random_ false

$ns at 2.0 "$cbr2 start"

$ns at 15.0 "$cbr2 stop"

for {set i 0} {$i < 4} {incr i} {

$ns initial_node_pos $node_($i) 30

$ns at 20.0 "$node_($i) reset"

}

$ns at 20.0 "finish"

$ns at 20.1 "puts \"NS EXITING...\"; $ns halt"

proc finish {} {

global ns f nf val

$ns flush-trace

close $f

close $nf

exec nam Exposed_Terminal.nam &

exit 0

}

$ns run

项目结果:

1、隐藏节点的结果图如下所示:

2、暴露节点的结果图如下所示:

项目总结:

1、隐藏节点

1、为了解决隐藏节点问题,可以使用请求发送(Request to Send,RTS)和清除发送(Clear to Send,CTS)的控制信息来避免冲突。发送方发出数据前,先送出一个RTS包,告知在传输范围内的所有节点不要有任何发送操作。如果接收方目前空

闲,则响应一个CTS包,告诉发送方可开始发送数据,此CTS包也会告知所有在接收方信号传输范围内的其它节点不要进行任何传输操作。隐藏节点是指在接收接点的覆盖范围内而在发送节点的覆盖范围外的节点。隐藏终端由于听不到发送节点的发送而可能向相同的接收节点发送分组,导致分组在接收节点处冲突。冲突后发送节点要重传冲突的分组,这降低了信道的利用率。隐藏终端又可以分为隐发送终端和隐接收终端两种。在单信道条件下,隐发送终端通在发送数据报文前的控制报文握手来解决。但是隐接收终端问题在单信道条件下无法解决。

2、暴露节点

为缓解暴露节点问题的影响,同样可采用RTS/CTS机制。当某个节点侦听到邻节点发送的RTS,但未监听到对应CTS时,可判定它本身是一个暴露节点,所以允许传送数据到其它邻近节点。该节点可成功送出RTS,但相应CTS不一定能被成功地收到。当节点1收到节点0发出的RTS,但未收到对应CTS时,节点1可推测自己是暴露节点,则可同时发送数据。暴露节点是指在发送接点的覆盖范围内而在接收节点的覆盖范围外的节点。暴露终端因听到发送节点的发送而可能延迟发送。但是,它其实是在接收节点的通信范围之外,它的发送不会造成冲突。这就引入了不必要的时延。暴露终端又可以分为暴露发送终端和暴露接收终端两种。在单信道条件下,暴露接收终端问题是不能解决的,因为所有发送给暴露接收终端的报文都会产生冲突;暴露发送终端问题也无法解决,因为暴露发送终端无法与目的节点成功握手。

无线网络技术及其应用

子项目2:无线城域网的应用

专业:

班级:

姓名:

学号:

成绩:

项目任务:

无线城域网的应用

项目分析:

用文字描述在该项目中的任务都用到了什么基本知识和基本概念。项目实施:

解释任务的代码含义。

项目结果:

将项目的结果截图

项目总结:

总结有什么特点,运行时有什么需要注意的。

相关文档
最新文档