Networking 基于UDP的TCL-CBR NS2网络模拟器

Networking 基于UDP的TCL-CBR NS2网络模拟器,networking,awk,udp,tcl,ns2,Networking,Awk,Udp,Tcl,Ns2,我正在做一个项目,我在让我的模拟工作时遇到了问题。我总共有22个节点,当我建立连接时,我在某些链接上没有收到数据包。更具体地说,我具有从节点4到节点2以及节点2的任何子节点的连接性和成功的数据包删除。当我尝试将数据包发送到其他任何地方时,都不会发送任何数据包。我已经彻底检查了我的代码,我似乎无法找出我做错了什么。任何指向正确方向的指示都将不胜感激 Main File #Create a simulator object set ns [new Simulator] #Tel

我正在做一个项目,我在让我的模拟工作时遇到了问题。我总共有22个节点,当我建立连接时,我在某些链接上没有收到数据包。更具体地说,我具有从节点4到节点2以及节点2的任何子节点的连接性和成功的数据包删除。当我尝试将数据包发送到其他任何地方时,都不会发送任何数据包。我已经彻底检查了我的代码,我似乎无法找出我做错了什么。任何指向正确方向的指示都将不胜感激

Main File

   #Create a simulator object
   set ns [new Simulator]

   #Tell the simulator to use dynamic routing 
   $ns rtproto DV

   #Create a trace file
   set tracefd [open project2trace.tr w]
   $ns trace-all $tracefd

   #Define a ‘finish’ procedure
   proc finish {} {
    global ns nf

    $ns flush-trace
    exit 0
   }


   #Create nodes
   set n1 [$ns node]
   set n2 [$ns node]
   set n3 [$ns node]
   set n4 [$ns node]
   set n5 [$ns node]
   set n6 [$ns node]
   set n7 [$ns node]
   set n8 [$ns node]
   set n9 [$ns node]
   set n10 [$ns node]
   set n11 [$ns node]
   set n12 [$ns node]
   set n13 [$ns node]
   set n14 [$ns node]
   set n15 [$ns node]
   set n16 [$ns node]
   set n17 [$ns node]
   set n18 [$ns node]
   set n19 [$ns node]
   set n20 [$ns node]
   set n21 [$ns node]
   set n22 [$ns node]


   #Create 1Mbps connections
   #Create a duplex link between the nodes 1 and subnodes
   $ns duplex-link $n1 $n11 1Mb 10ms DropTail
   $ns duplex-link $n1 $n12 1Mb 10ms DropTail
   $ns duplex-link $n1 $n13 1Mb 10ms DropTail
   $ns duplex-link $n1 $n14 1Mb 10ms DropTail

   #Create a duplex link between the nodes 2 and subnodes
   $ns duplex-link $n2 $n6 1Mb 10ms DropTail
   $ns duplex-link $n2 $n7 1Mb 10ms DropTail
   $ns duplex-link $n2 $n8 1Mb 10ms DropTail
   $ns duplex-link $n2 $n9 1Mb 10ms DropTail
   $ns duplex-link $n2 $n10 1Mb 10ms DropTail

   #Create a duplex link between the nodes 4 and subnodes
   $ns duplex-link $n4 $n19 1Mb 10ms DropTail
   $ns duplex-link $n4 $n20 1Mb 10ms DropTail
   $ns duplex-link $n4 $n21 1Mb 10ms DropTail
   $ns duplex-link $n4 $n22 1Mb 10ms DropTail

   #Create a duplex link between the nodes 5 and subnodes
   $ns duplex-link $n5 $n15 1Mb 10ms DropTail
   $ns duplex-link $n5 $n16 1Mb 10ms DropTail
   $ns duplex-link $n5 $n17 1Mb 10ms DropTail
   $ns duplex-link $n5 $n18 1Mb 10ms DropTail

   #Create 2Mbps links
   #Create a duplex link between nodes 1 and 3
   $ns duplex-link $n1 $n3 2Mb 20ms DropTail

   #Create a duplex link between nodes 3 and 5
   $ns duplex-link $n3 $n5 2Mb 20ms DropTail



   #Create 4Mbps links
   #Create a duplex link between nodes 2 and 3
   $ns duplex-link $n2 $n3 4Mb 40ms DropTail

   #Create a duplex link between nodes 2 and 4
   $ns duplex-link $n2 $n4 4Mb 40ms DropTail

   #Create a duplex link between nodes 3 and 4
   $ns duplex-link $n3 $n4 4Mb 40ms DropTail

   #Create a UDP agent and attach it to node n4 
   set udp0 [new Agent/UDP]
   $ns attach-agent $n4 $udp0

   # Create a CBR traffic source and attach it to udp0
   set cbr0 [new Application/Traffic/CBR]
   $cbr0 set packetSize_ 500
   $cbr0 set interval_ 0.005
   $cbr0 set random_ 1
   $cbr0 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n8
   set null0 [new Agent/Null]
   $ns attach-agent $n8 $null0

   #Connect CBR to Null agent
   $ns connect $udp0 $null0


   # Create a CBR traffic source and attach it to udp0
   set cbr1 [new Application/Traffic/CBR]
   $cbr1 set packetSize_ 500
   $cbr1 set interval_ 0.005
   $cbr1 set random_ 1
   $cbr1 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n18
   set null1 [new Agent/Null]
   $ns attach-agent $n18 $null1


   #Connect CBR to Null agent
   $ns connect $udp0 $null1

   # Create a CBR traffic source and attach it to udp0
   set cbr2 [new Application/Traffic/CBR]
   $cbr2 set packetSize_ 500
   $cbr2 set interval_ 0.005
   $cbr2 set random_ 1
   $cbr2 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n21
   set null2 [new Agent/Null]
   $ns attach-agent $n21 $null2

   #Connect CBR to Null agent
   $ns connect $udp0 $null2


   # Create a CBR traffic source and attach it to udp0
   set cbr3 [new Application/Traffic/CBR]
   $cbr3 set packetSize_ 500
   $cbr3 set interval_ 0.005
   $cbr3 set random_ 1
   $cbr3 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n10
   set null3 [new Agent/Null]
   $ns attach-agent $n10 $null3


   #Connect CBR to Null agent
   $ns connect $udp0 $null3


   # Create a CBR traffic source and attach it to udp0
   set cbr4 [new Application/Traffic/CBR]
   $cbr4 set packetSize_ 500
   $cbr4 set interval_ 0.005
   $cbr4 set random_ 1
   $cbr4 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n11
   set null4 [new Agent/Null]
   $ns attach-agent $n11 $null4


   #Connect CBR to Null agent
   $ns connect $udp0 $null4



   # Create a CBR traffic source and attach it to udp0
   set cbr5 [new Application/Traffic/CBR]
   $cbr5 set packetSize_ 500
   $cbr5 set interval_ 0.005
   $cbr5 set random_ 1
   $cbr5 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n16
   set null5 [new Agent/Null]
   $ns attach-agent $n16 $null5


   #Connect CBR to Null agent
   $ns connect $udp0 $null5




   # Create a CBR traffic source and attach it to udp0
   set cbr6 [new Application/Traffic/CBR]
   $cbr6 set packetSize_ 500
   $cbr6 set interval_ 0.005
   $cbr6 set random_ 1
   $cbr6 attach-agent $udp0

   #Create a Null agent (a traffic sink) and attach it to node n13
   set null6 [new Agent/Null]
   $ns attach-agent $n13 $null6


   #Connect CBR to Null agent
   #$ns connect $udp0 $null6


   #Schedule events for the CBR agent
   $ns at 1.0 "$cbr0 start"
   $ns at 1.0 "$cbr1 start"
   $ns at 1.0 "$cbr2 start"
   $ns at 2.0 "$cbr3 start"
   $ns at 2.0 "$cbr4 start"
   $ns at 2.0 "$cbr5 start"
   $ns rtmodel-at 6.0 down $n2 $n4
   $ns rtmodel-at 2.0 up $n2 $n4
   $ns at 10.0 "$cbr0 stop" 
   $ns at 10.0 "$cbr1 stop" 
   $ns at 10.0 "$cbr2 stop" 
   $ns at 2.0 "$cbr3 stop"
   $ns at 2.0 "$cbr4 stop"
   $ns at 2.0 "$cbr5 stop"
   $ns at 10.0 "finish"

   #Run the simulation
   $ns run
按照现在的代码方式,将交付0个包。如果我注释掉除第一个连接以外的所有内容,我会得到数据包。当我取消注释任何其他内容时,我会丢失所有数据包。这是我的awk文件

cbr.awk

    BEGIN {
       node = 1;
       time1 = 0.0;
       time2 = 0.0;
       num_packets = 0;
    }

    {
       time2 = $2;

       if (time2 - time1 > 0.050) {
          throughput = bytes_counter / (time2 - time1);
          printf("%f \t %f\n", time2, throughput) > "dataset.xls";
          time1 = $2;
          bytes_counter = 0;
       }

       if ($1 == "r" && $4 == node && $5 == "cbr") {
          bytes_counter += $6;
          num_packets++;
       }
    }

    END {
       print("********");
       printf("Total number of packets received: \n%d\n", num_packets);
       print("********");
    }

我不知所措。真的

我认为你的问题太大了(IHMO)。如果只有节点2和4在工作,那么如果您将其简化为修复只有5个节点(大约)的测试,您可能会得到一些帮助。照目前的情况,这是一个很大的挑战。您可能还希望在顶部添加正确的“she-bang”行。(#!/bin/awk)。这样,复制/粘贴实验就更容易了。祝你好运您是否已验证问题机器上的防火墙(iptables)配置与“傻瓜”机器上的配置相同?