NS2中仿真分析基于CSMA/CA的WLAN的捕获效应

来源:互联网 发布:ps淘宝修图兼职 编辑:程序博客网 时间:2024/06/06 07:37

[Description]

Capture effect is one of particular properties in the wireless communication networks. In traditional wired communication environment, the packets will be considered as collisions if two packets arrive in the same station at the same time. Even though the received power for one of the packets is much larger than the other one, the station still takes all the packets as collisions. Therefore, the throughput performance of the communication network will degrade. However, as for the wireless communication network, the station will receive the packet with larger received power if two packets arrive in the same station at the same time. This phenomenon is called "capture effect". The station will successfully receive the packet once the signal to interference noise ratio (SINR) of the received packet is larger than a determined threshold. Even though more than two packets arrive in the same station at the same time, the packet with high SINR still can be received successfully. Therefore, the capture effect plays an important role in enhancing the system performance of a wireless network.

 

[Have to be done before simulation]

1.      Install NOAH routing protocol

2.      Disable ARP function (please refer to http://140.116.164.80/~smallko/ns2/arp.htm)

3.      Replace the file with mac-802_11.cc and mac-802_11.h  (mac/mac-802_11.cc mac/mac-802_11.h, remember only for ns-2.31 version)

4.      Recompile the ns.

 

If you don’t want to see the message, change the value of mydebug to 1 in mac/mac-802_11.cc and recompile ns again.

#define mydebug 0

 

[Tcl Script]

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)             NOAH

 

set ns [new Simulator]

 

#disable RTS/CTS

Mac/802_11 set RTSThreshold_  3000

 

Mac/802_11 set dataRate_        11Mb

Mac/802_11 set basicRate_       1Mb

 

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

 

#set the capture effect threshold to be 10.0

Phy/WirelessPhy set CPThresh_ 10.0

Phy/WirelessPhy set CSThresh_ 2.81838e-9

Phy/WirelessPhy set RXThresh_ 6.88081e-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 f [open test.tr w]

$ns trace-all $f

$ns eventtrace-all

set nf [open test.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 ON \

                -macTrace ON \

                -movementTrace OFF

 

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

        set node_($i) [$ns node]

        $node_($i) random-motion 0

}

 

$node_(0) set X_ 10.0

$node_(0) set Y_ 50.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 130.0

$node_(1) set Y_ 50.0

$node_(1) set Z_ 0.0

$node_(2) set X_ 200.0

$node_(2) set Y_ 50.0

$node_(2) set Z_ 0.0

 

 

#define static routing

set cmd "[$node_(0) set ragent_] routing 3 0 0 1 1 2 1"

eval $cmd

 

set cmd "[$node_(1) set ragent_] routing 3 0 0 1 1 2 2"

eval $cmd

 

set cmd "[$node_(2) set ragent_] routing 3 0 1 1 1 2 2"

eval $cmd

 

set udp [new Agent/UDP]

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

set null [new Agent/Null]

$ns attach-agent $node_(1) $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_ 5Mb

$cbr set random_ false

#only send out a packet from node 0 to node 1

$cbr set maxpkts_ 1

$ns at  1.5000 "$cbr start"

$ns at 15.0 "$cbr stop"

 

#adjust the transmission power of node 2

#set phy2 [$node_(2) set netif_(0)]

#$phy2 set Pt_ 0.4

 

set udp2 [new Agent/UDP]

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

set null2 [new Agent/Null]

$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_ 5Mb

$cbr2 set random_ false

#only send out a packet from node 3 to node 2

$cbr2 set maxpkts_ 1

$ns at  1.50001 "$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

}

 

$ns run

 

[Result]

snap.jpg

Node 2 sends out a Data packet to node 1 first. Following node 0 sends out a Data packet to node 1. Then the data packets get collided at node 1. The same situation occurs again. After that, node 2 sends out a Data packet to node 1 again. This time, node 0 does not send out packet at the same time. This transmission succeeded. Finally, node 0 succeeds in sending out the data packet to node 1.

 

We do the simulation again. But we enlarge the transmission power of node 2.

Remove the # and make the tcl script looks like

 

set phy2 [$node_(2) set netif_(0)]

$phy2 set Pt_ 0.4

 

snap2.jpg

Node 2 and node 0 sends out the Data packet almost at the same time. But due to the capture effect, the signal strength of Data packet sent from node 2 is larger (we enlarge the transmission power). This packet is successfully received by the node 1. Then node 1 acks the node 2. After that, node 0 retransmits the Data packet to node 1 again.

 

[Reference]

1. http://wise.cm.nctu.edu.tw/wise_lab/research/OPNET/capture_effect.htm