2013-03-18 11 views
2

ns3을 배우려고하는데 onofApplication을 사용하여 Cbr 대신 Vbr을 생성하는 예제 중 하나를 수정하려고합니다. 그러나 코드가 작동하지 않고 왜 그 이유를 모르겠습니다. , 도와 줄수있으세요?ns3 poisson 트래픽 모델

#include "ns3/core-module.h" 
#include "ns3/network-module.h" 
#include "ns3/csma-module.h" 
#include "ns3/internet-module.h" 
#include "ns3/point-to-point-module.h" 
#include "ns3/applications-module.h" 
#include "ns3/ipv4-global-routing-helper.h" 
#include "ns3/random-variable.h" 
#include "ns3/socket-factory.h" 
#include "ns3/udp-socket-factory.h" 
#include "ns3/on-off-helper.h" 
#include "ns3/nstime.h" 


using namespace ns3; 

NS_LOG_COMPONENT_DEFINE ("SecondScriptExample"); 

int 
main (int argc, char *argv[]) 
{ 
    bool verbose = true; 
    uint32_t nCsma = 3; 

    CommandLine cmd; 
    cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma); 
    cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose); 

    cmd.Parse (argc,argv); 

    if (verbose) 
    { 
     LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); 
     LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); 
    } 

    nCsma = nCsma == 0 ? 1 : nCsma; 

    NodeContainer p2pNodes; 
    p2pNodes.Create (2); 

    NodeContainer csmaNodes; 
    csmaNodes.Add (p2pNodes.Get (1)); 
    csmaNodes.Create (nCsma); 

    PointToPointHelper pointToPoint; 
    pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); 
    pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms")); 

    NetDeviceContainer p2pDevices; 
    p2pDevices = pointToPoint.Install (p2pNodes); 

    CsmaHelper csma; 
    csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps")); 
    csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560))); 

    NetDeviceContainer csmaDevices; 
    csmaDevices = csma.Install (csmaNodes); 

    InternetStackHelper stack; 
    stack.Install (p2pNodes.Get (0)); 
    stack.Install (csmaNodes); 

    Ipv4AddressHelper address; 
    address.SetBase ("10.1.1.0", "255.255.255.0"); 
    Ipv4InterfaceContainer p2pInterfaces; 
    p2pInterfaces = address.Assign (p2pDevices); 

    address.SetBase ("10.1.2.0", "255.255.255.0"); 
    Ipv4InterfaceContainer csmaInterfaces; 
    csmaInterfaces = address.Assign (csmaDevices); 

    UdpEchoServerHelper echoServer (9); 

    ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma)); 
    serverApps.Start (Seconds (1.0)); 
    serverApps.Stop (Seconds (10.0)); 

    OnOffHelper onOffAP ("ns3::UdpSocketFactory", csmaInterfaces.GetAddress(nCsma)); 
    onOffAP.SetAttribute("PacketSize", UintegerValue(1024)); 
    onOffAP.SetAttribute("OffTime",RandomVariableValue(ExponentialVariable(0.01))); 
    // the packet arrivalrate on AP side is 100 pkt/sec, so we set mean value as 1/100 
    onOffAP.SetAttribute("OnTime",RandomVariableValue(ConstantVariable(0.0001583))); 
    // the constanttime for sending one packet 
    onOffAP.SetAttribute("DataRate", StringValue ("54Mbps")); 

// UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9); 
    //echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); 
    //echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); 
    //echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); 

    ApplicationContainer clientApps = onOffAP.Install (p2pNodes.Get (0)); 
    clientApps.Start (Seconds (2.0)); 
    clientApps.Stop (Seconds (10.0)); 

    Ipv4GlobalRoutingHelper::PopulateRoutingTables(); 

    pointToPoint.EnablePcapAll ("second"); 
    csma.EnablePcap ("second", csmaDevices.Get (1), true); 

    Simulator::Run(); 
    Simulator::Destroy(); 
    return 0; 
} 

나는이 오류

msg="Invalid value for attribute set (OffTime) on ns3::OnOffApplication", file=../src/core/model/object-factory.cc, line=75 
libc++abi.dylib: terminate called without an active exception 
+0

버전이? –

+0

NS3 버전 3.16을 사용하고 있습니다. – user1653150

+0

사실, 나는 OffTime (NS3 3.13)에 지수 변수를 사용하려고 노력했으며, 저 역시 잘 돌아갔습니다! –

답변

2

onOffAP.SetAttribute 얻고있다 ("OnTime"StringValue를 ("NS3 :: ConstantRandomVariable [상수 = 4]")); onOffAP.SetAttribute ("OffTime", StringValue ("ns3 :: ConstantRandomVariable [Constant = 0]")));

API 3.15부터 일부 변경되었습니다. https://groups.google.com/group/ns-3-users/tree/browse_frm/month/2012-11/be3cd40a0dc9c3a1?rnum=461&start=250&_done=/group/ns-3-users/browse_frm/month/2012-11?start%3D250%26sa%3DN%26&pli=1

에서보세요 또는 당신에게 도움이 http://code.nsnam.org/ns-3-dev/file/eb7335c2423c/examples/wireless/wifi-hidden-terminal.cc

희망에 OffTime 설정하기위한 예제 코드를 살펴 ... NS-3 사용중인의 :