【问题标题】:How to implement DSR protocol in ns2 simulator in ubuntu如何在ubuntu的ns2模拟器中实现DSR协议
【发布时间】:2013-12-22 12:42:18
【问题描述】:

我们项目的标题是 MANET 中用于路由协议 (DSR) 的人工免疫系统。

在这个项目中,我们的目标是检测 MANET 中行为不端的节点。

我们熟悉TCL,想知道如何在Ubuntu的ns2模拟器中实现DSR。

接下来我应该做什么,或者我接下来应该在哪里搜索,或者我接下来应该阅读什么,请务必提供帮助,即使是一个简单的链接也会很有意义。

【问题讨论】:

标签: c++ ubuntu routing tcl ns2


【解决方案1】:

对于 DSR 协议的实现你不需要做任何事情,因为它已经在所有 ns2 版本中可用,你可以在 TCL 脚本中使用下面的行来使用 DSR 协议。

$ns node-config  -adhocRouting DSR \

恶意节点实现参考以下链接

http://elmurod.net/en/index.php/archives/196

他们在 AODV 中实现了恶意(行为不端)节点。对 DSR 做同样的事情。

【讨论】:

  • 谢谢。能否请您指导我们如何在 tcl 脚本中添加攻击(例如黑洞)。
【解决方案2】:

我也开始研究 DSR。在这里,我发现要理解任何内置协议都必须通过这些文件。它也是 ns 2.35 中任何协议的创建/克隆流程。

  1. ns-allinone-2.35\ns-2.35\common\packet.h
  2. ns-allinone-2.35\ns-2.35\trace\cmu-trace.h
  3. ns-allinone-2.35\ns-2.35\trace\cmu-trace.cc
  4. ns-allinone-2.35\ns-2.35\tcl\lib\ns-packet.tcl
  5. ns-allinone-2.35\ns-2.35\tcl\lib\ns-lib.tcl
  6. ns-allinone-2.35\ns-2.35\queue\priqueue.cc
  7. ns-allinone-2.35\ns-2.35\Makefile
  8. ns-allinone-2.35\ns-2.35\tcl\lib\ns-agent.tcl
  9. ns-allinone-2.35\ns-2.35\tcl\lib\ns-mobilenode.tc
  10. ns-allinone-2.35\ns-2.35\queue\rtqueue.cc
  11. ns-allinone-2.35\ns-2.35\routing\rtable.h
  12. ns-allinone-2.35\ns-2.35\wpan\p802_15_4nam.cc
  13. ns-allinone-2.35\dei80211mr-1.1.4\src\InitTCL.cc
  14. .h 和 .cc 文件

DSR 仍然是一个可选案例。我以后可能会再次发表评论,提供更多信息。

【讨论】:

    【解决方案3】:

    你能试试这个代码吗,它对我有用

    #===================================
    #     Simulation parameters setup
    #===================================
    Phy/WirelessPhy set bandwidth_ 10Mb        ;#Data Rate
    Mac/802_11 set dataRate_ 10Mb              ;#Rate for Data Frames
    set val(chan)   Channel/WirelessChannel    ;# channel type
    set val(prop)   Propagation/TwoRayGround   ;# radio-propagation model
    set val(netif)  Phy/WirelessPhy            ;# network interface type
    set val(mac)    Mac/802_11                 ;# MAC type
    set val(ifq)    Queue/DropTail/PriQueue    ;# interface queue type
    set val(ll)     LL                         ;# link layer type
    set val(ant)    Antenna/OmniAntenna        ;# antenna model
    set val(ifqlen) 50                         ;# max packet in ifq
    set val(nn)     25                         ;# number of mobilenodes
    set val(rp)     DSR                       ;# routing protocol
    set val(x)      2146                      ;# X dimension of topography
    set val(y)      380                      ;# Y dimension of topography
    set val(stop)   10.0                         ;# time of simulation end
    
    #===================================
    #        Initialization        
    #===================================
    #Create a ns simulator
    set ns [new Simulator]
    
    #Setup topography object
    set topo       [new Topography]
    $topo load_flatgrid $val(x) $val(y)
    create-god $val(nn)
    
    #Open the NS trace file
    set tracefile [open outm.tr w]
    $ns trace-all $tracefile
    
    #Open the NAM trace file
    set namfile [open outm.nam w]
    $ns namtrace-all $namfile
    $ns namtrace-all-wireless $namfile $val(x) $val(y)
    set chan [new $val(chan)];#Create wireless channel
    
    #===================================
    #     Mobile node parameter setup
    #===================================
    $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 ON
    
    #===================================
    #        Nodes Definition        
    #===================================
    #Create  nodes
    set n0 [$ns node]
    $n0 set X_ 573
    $n0 set Y_ 357
    $n0 set Z_ 0.0
    $ns initial_node_pos $n0 20
    set n1 [$ns node]
    $n1 set X_ 227
    $n1 set Y_ 294
    $n1 set Z_ 0.0
    $ns initial_node_pos $n1 20
    set n2 [$ns node]
    $n2 set X_ 103
    $n2 set Y_ 109
    $n2 set Z_ 0.0
    $ns initial_node_pos $n2 20
    set n3 [$ns node]
    $n3 set X_ 882
    $n3 set Y_ 112
    $n3 set Z_ 0.0
    $ns initial_node_pos $n3 20
    set n4 [$ns node]
    $n4 set X_ 739
    $n4 set Y_ 46
    $n4 set Z_ 0.0
    $ns initial_node_pos $n4 20
    set n5 [$ns node]
    $n5 set X_ 830
    $n5 set Y_ -68
    $n5 set Z_ 0.0
    $ns initial_node_pos $n5 20
    set n6 [$ns node]
    $n6 set X_ 905
    $n6 set Y_ 336
    $n6 set Z_ 0.0
    $ns initial_node_pos $n6 20
    set n7 [$ns node]
    $n7 set X_ 161
    $n7 set Y_ 20
    $n7 set Z_ 0.0
    $ns initial_node_pos $n7 20
    set n8 [$ns node]
    $n8 set X_ 1187
    $n8 set Y_ 99
    $n8 set Z_ 0.0
    $ns initial_node_pos $n8 20
    set n9 [$ns node]
    $n9 set X_ 934
    $n9 set Y_ -79
    $n9 set Z_ 0.0
    $ns initial_node_pos $n9 20
    set n10 [$ns node]
    $n10 set X_ 416
    $n10 set Y_ 120
    $n10 set Z_ 0.0
    $ns initial_node_pos $n10 20
    set n11 [$ns node]
    $n11 set X_ 601
    $n11 set Y_ 151
    $n11 set Z_ 0.0
    $ns initial_node_pos $n11 20
    set n12 [$ns node]
    $n12 set X_ 354
    $n12 set Y_ 419
    $n12 set Z_ 0.0
    $ns initial_node_pos $n12 20
    set n13 [$ns node]
    $n13 set X_ 1020
    $n13 set Y_ 199
    $n13 set Z_ 0.0
    $ns initial_node_pos $n13 20
    set n14 [$ns node]
    $n14 set X_ 513
    $n14 set Y_ -54
    $n14 set Z_ 0.0
    $ns initial_node_pos $n14 20
    set n15 [$ns node]
    $n15 set X_ 1019
    $n15 set Y_ -17
    $n15 set Z_ 0.0
    $ns initial_node_pos $n15 20
    set n16 [$ns node]
    $n16 set X_ 351
    $n16 set Y_ -184
    $n16 set Z_ 0.0
    $ns initial_node_pos $n16 20
    set n17 [$ns node]
    $n17 set X_ 54
    $n17 set Y_ -84
    $n17 set Z_ 0.0
    $ns initial_node_pos $n17 20
    set n18 [$ns node]
    $n18 set X_ 278
    $n18 set Y_ 267
    $n18 set Z_ 0.0
    $ns initial_node_pos $n18 20
    set n19 [$ns node]
    $n19 set X_ 319
    $n19 set Y_ -13
    $n19 set Z_ 0.0
    $ns initial_node_pos $n19 20
    set n20 [$ns node]
    $n20 set X_ 768
    $n20 set Y_ -156
    $n20 set Z_ 0.0
    $ns initial_node_pos $n20 20
    set n21 [$ns node]
    $n21 set X_ 962
    $n21 set Y_ 198
    $n21 set Z_ 0.0
    $ns initial_node_pos $n21 20
    set n22 [$ns node]
    $n22 set X_ 747
    $n22 set Y_ 293
    $n22 set Z_ 0.0
    $ns initial_node_pos $n22 20
    set n23 [$ns node]
    $n23 set X_ 589
    $n23 set Y_ -56
    $n23 set Z_ 0.0
    $ns initial_node_pos $n23 20
    set n24 [$ns node]
    $n24 set X_ 627
    $n24 set Y_ -225
    $n24 set Z_ 0.0
    $ns initial_node_pos $n24 20
    
    
    #===================================
    #        Generate movement          
    #===================================
    
    $ns at 0.3 " $n8 setdest 750 55 50 " 
    $ns at 0.5 " $n15 setdest 739 46 80 " 
    $ns at 0.4 " $n16 setdest 742 280 50 " 
    $ns at 0.2 " $n17 setdest 720 170 80 " 
    $ns at 0.2 " $n23 setdest 450 144 50 " 
    
    #===================================
    #        Agents Definition        
    #===================================
    #Setup a UDP connection
    set udp0 [new Agent/UDP]
    $ns attach-agent $n0 $udp0
    set null1 [new Agent/Null]
    $ns attach-agent $n20 $null1
    $ns connect $udp0 $null1
    $udp0 set packetSize_ 1500
    
    #===================================
    #        Applications Definition        
    #===================================
    #Setup a CBR Application over UDP connection
    set cbr0 [new Application/Traffic/CBR]
    $cbr0 attach-agent $udp0
    $cbr0 set packetSize_ 1000
    $cbr0 set rate_ 1.0Mb
    $cbr0 set random_ null
    
    $ns at 1.0 "$cbr0 start"
    $ns at 5.0 "$cbr0 stop"
    
    #===================================
    #        Termination        
    #===================================
    #Define a 'finish' procedure
    proc finish {} {
        global ns tracefile namfile
        $ns flush-trace
        close $tracefile
        close $namfile
        exec nam out.nam &
        exit 0
    }               
    
    
    for {set i 0} {$i < $val(nn)} { incr i } {
        $ns at $val(stop) "\$n$i reset"
    }
    # malicious node add
    $ns at 0.5 "[$n11 set ragent_] hacker"
    #$ns at 0.4 "[$n7 set ragent_] hacker 99"
    #$ns at 0.4 "[$n4 set ragent_] hacker 99"
    
    $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
    $ns at $val(stop) "finish"
    $ns at $val(stop) "puts \"done\" ; $ns halt"
    $ns run
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-02
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2015-12-04
      • 2020-01-02
      • 1970-01-01
      相关资源
      最近更新 更多