C++ 如何在ubuntu的ns2模拟器中实现DSR协议

C++ 如何在ubuntu的ns2模拟器中实现DSR协议,c++,ubuntu,routing,tcl,ns2,C++,Ubuntu,Routing,Tcl,Ns2,我们的项目名称是MANET路由协议人工免疫系统(DSR) 在这个项目中,我们的目标是检测MANET中的一个行为异常的节点 我们熟悉TCL,我们想知道如何在Ubuntu的ns2模拟器中实现DSR 下一步我应该做什么,或者下一步我应该在哪里搜索,或者下一步我应该阅读什么,请务必提供帮助,即使是一个简单的链接也很有用。对于DSR协议实现,您无需做任何事,因为它已经在所有ns2版本中可用,您可以使用TCL脚本中的以下行来使用DSR协议 $ns node-config -adhocRouting DSR

我们的项目名称是MANET路由协议人工免疫系统(DSR)

在这个项目中,我们的目标是检测MANET中的一个行为异常的节点

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


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

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

$ns node-config  -adhocRouting DSR \
有关恶意节点的实现,请参阅下面的链接


在这里,他们在AODV中实现了恶意(错误行为)节点。对DSR执行同样的操作。

对于DSR协议实施,您无需执行任何操作,因为它已经在所有ns2版本中可用,您可以使用TCL脚本中的下线来使用DSR协议

$ns node-config  -adhocRouting DSR \
有关恶意节点的实现,请参阅下面的链接


在这里,他们在AODV中实现了恶意(错误行为)节点。对DSR做同样的事情。

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

  • ns-allinone-2.35\ns-2.35\common\packet.h
  • ns-allinone-2.35\ns-2.35\trace\cmu trace.h
  • ns-allinone-2.35\ns-2.35\trace\cmu-trace.cc
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-packet.tcl
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-lib.tcl
  • ns-allinone-2.35\ns-2.35\queue\priqueue.cc
  • ns-allinone-2.35\ns-2.35\Makefile
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-agent.tcl
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-mobilenode.tc
  • ns-allinone-2.35\ns-2.35\queue\rtqueue.cc
  • ns-allinone-2.35\ns-2.35\routing\rtable.h
  • ns-allinone-2.35\ns-2.35\wpan\p802\u 15\u 4nam.cc
  • ns-allinone-2.35\dei80211mr-1.1.4\src\InitTCL.cc
  • .h和.cc文件

  • 但DSR仍然是一个可选的案例。也许我会在以后的评论中提供更多信息

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

  • ns-allinone-2.35\ns-2.35\common\packet.h
  • ns-allinone-2.35\ns-2.35\trace\cmu trace.h
  • ns-allinone-2.35\ns-2.35\trace\cmu-trace.cc
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-packet.tcl
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-lib.tcl
  • ns-allinone-2.35\ns-2.35\queue\priqueue.cc
  • ns-allinone-2.35\ns-2.35\Makefile
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-agent.tcl
  • ns-allinone-2.35\ns-2.35\tcl\lib\ns-mobilenode.tc
  • ns-allinone-2.35\ns-2.35\queue\rtqueue.cc
  • ns-allinone-2.35\ns-2.35\routing\rtable.h
  • ns-allinone-2.35\ns-2.35\wpan\p802\u 15\u 4nam.cc
  • ns-allinone-2.35\dei80211mr-1.1.4\src\InitTCL.cc
  • .h和.cc文件

  • 但DSR仍然是一个可选的案例。也许我会在以后的评论中提供更多信息

    你能试试这个代码吗?对我来说很好

    #===================================
    #     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
    
    <代码>#=================================== #仿真参数设置 #=================================== 物理层/无线通信设置带宽10Mb#数据速率 Mac/802_11设置数据速率10Mb#数据帧的速率 设置val(chan)频道/无线信道通道类型 设置val(道具)传播/TwoRayGround;#无线传播模型 设置值(netif)物理/无线物理;#网络接口类型 设置val(mac)mac/802#11;#MAC类型 设置val(ifq)队列/DropTail/PriQueue;#接口队列类型 设置值(ll)ll;#链路层类型 设置val(ant)天线/全向天线;#天线模型 设置val(ifqlen)50;#ifq中的最大数据包 设定值(nn)25;#移动节点数 设定值(rp)DSR;#路由协议 set val(x)2146;#地形的X维 设定值(y)380;#地形的Y维 设置值(停止)10.0;#模拟结束时间 #=================================== #初始化 #=================================== #创建一个ns模拟器 设置ns[新模拟器] #设置地形对象 设置地形[新地形] $topo负载\平面网格$val(x)$val(y) 创建上帝$val(nn) #打开NS跟踪文件 设置跟踪文件[打开outm.tr w] $ns跟踪所有$tracefile #打开NAM跟踪文件 设置namfile[打开outm.nam w] $ns namtrace所有$namfile $ns namtrace所有无线$namfile$val(x)$val(y) set chan[新$val(chan)]#创建无线通道 #=================================== #移动节点参数设置 #=================================== $ns节点配置-adhocRouting$val(rp)\ -llType$val(ll)\ -macType$val(mac)\ -ifq类型$val(ifq)\ -ifqLen$val(ifqLen)\ -antType$val(ant)\ -道具类型$val(道具)\ -phyType$val(netif)\ -陈元频道\ -topo实例$topo\ -代理竞逐\ -罗特特顿赛马会\ -麦克特雷森\ -移动跟踪 #=================================== #节点定义 #=================================== #创建节点 设置n0[$ns节点] $n0套X_573 $n0套Y_357 $n0套Z_0.0 $ns首字母\节点\位置$n0 20 设置n1[$ns节点] $n1套X_u227 $n1套Y_294 $n1套Z_u0.0 $ns首字母\节点\位置$n1 20 设置n2[$ns节点] $n2套X_u103 $n2套Y_u109 $n2套Z_u0.0 $ns首字母\节点\位置$n2 20 设置n3[$ns节点] $n3套X_882 $n3套Y_