在ns3中创建两个节点之间的无线链接

问题描述:

我必须构建一个拓扑,其中2个节点通过WiFi网络或蜂窝网络连接。在ns3中创建两个节点之间的无线链接

在ns-3中我找不到这样做的例子。

我该如何构建拓扑结构?

NS3只有4G网络模块,WiMax和LTE。 NS3没有2G或3G模块。

以下是创建向蜂窝网络和Wifi网络组合的汇聚节点发送UDP数据包的源节点拓扑的示例。

LTE网络+ WIFI网络

#include "ns3/lte-helper.h" 
#include "ns3/epc-helper.h" 

#include "ns3/core-module.h" 
#include "ns3/point-to-point-module.h" 
#include "ns3/wifi-module.h" 
#include "ns3/csma-module.h" 
#include "ns3/network-module.h" 
#include "ns3/applications-module.h" 
#include "ns3/mobility-module.h" 
#include "ns3/config-store-module.h" 
#include "ns3/wimax-module.h" 
#include "ns3/internet-module.h" 
#include "ns3/global-route-manager.h" 
#include "ns3/ipcs-classifier-record.h" 
#include "ns3/service-flow.h" 
#include <iostream> 
#include "ns3/ipv4-global-routing-helper.h" 
#include "ns3/mobility-module.h" 
#include "ns3/lte-module.h" 
#include "ns3/point-to-point-helper.h" 
#include <iomanip> 
#include <string> 
#include <fstream> 
#include <vector> 

NS_LOG_COMPONENT_DEFINE ("WimaxSimpleExample"); 

using namespace ns3; 



int main (int argc, char *argv[]) 
{ 
Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010)); 
    bool verbose = false; 

    int duration = 500, schedType = 0; 


    uint16_t numberOfUEs=2;    //Default number of ues attached to each eNodeB   

    Ptr<LteHelper> lteHelper;  //Define LTE  
    Ptr<EpcHelper> epcHelper; //Define EPC 

    NodeContainer remoteHostContainer;   //Define the Remote Host 
    NetDeviceContainer internetDevices; //Define the Network Devices in the Connection between EPC and the remote host 

    Ptr<Node> pgw;        //Define the Packet Data Network Gateway(P-GW) 
    Ptr<Node> remoteHost;   //Define the node of remote Host 

    InternetStackHelper internet;     //Define the internet stack  
    PointToPointHelper p2ph;        //Define Connection between EPC and the Remote Host 
    Ipv4AddressHelper ipv4h;        //Ipv4 address helper 
    Ipv4StaticRoutingHelper ipv4RoutingHelper; //Ipv4 static routing helper  
    Ptr<Ipv4StaticRouting> remoteHostStaticRouting; 

    Ipv4InterfaceContainer internetIpIfaces;  //Ipv4 interfaces 




    CommandLine cmd; 
    cmd.AddValue ("scheduler", "type of scheduler to use with the network devices", schedType); 
    cmd.AddValue ("duration", "duration of the simulation in seconds", duration); 
    cmd.AddValue ("verbose", "turn on all WimaxNetDevice log components", verbose); 
    cmd.Parse (argc, argv); 
    LogComponentEnable ("UdpClient", LOG_LEVEL_INFO); 
    LogComponentEnable ("UdpServer", LOG_LEVEL_INFO); 
    //LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); 
    //LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); 

    NodeContainer ssNodes; 
    NodeContainer bsNodes; 

    ssNodes.Create (2); 
    bsNodes.Create (1); 


uint32_t nCsma = 3; 

    NodeContainer p2pNodes; 
    p2pNodes.Create (2); 

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

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

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

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

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

    NodeContainer wifiApNode = p2pNodes.Get (0); 

    YansWifiChannelHelper channel = YansWifiChannelHelper::Default(); 
    YansWifiPhyHelper phy = YansWifiPhyHelper::Default(); 
    phy.SetChannel (channel.Create()); 

    WifiHelper wifi = WifiHelper::Default(); 
    wifi.SetRemoteStationManager ("ns3::AarfWifiManager"); 

    NqosWifiMacHelper mac = NqosWifiMacHelper::Default(); 

    Ssid ssid = Ssid ("ns-3-ssid"); 
    mac.SetType ("ns3::StaWifiMac", 
      "Ssid", SsidValue (ssid), 
      "ActiveProbing", BooleanValue (false)); 

    NetDeviceContainer staDevices; 
    staDevices = wifi.Install (phy, mac, ssNodes); 

    mac.SetType ("ns3::ApWifiMac", 
      "Ssid", SsidValue (ssid)); 

    NetDeviceContainer apDevices; 
    apDevices = wifi.Install (phy, mac, wifiApNode); 

    MobilityHelper mobility1; 

    mobility1.SetPositionAllocator ("ns3::GridPositionAllocator", 
          "MinX", DoubleValue (0.0), 
          "MinY", DoubleValue (0.0), 
          "DeltaX", DoubleValue (5.0), 
          "DeltaY", DoubleValue (10.0), 
          "GridWidth", UintegerValue (3), 
          "LayoutType", StringValue ("RowFirst")); 




    mobility1.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); 
    mobility1.Install (wifiApNode); 
(wifiApNode.Get(0) -> GetObject<ConstantPositionMobilityModel>()) -> SetPosition(Vector(100.0, 501.0, 0.0)); 
    InternetStackHelper stack1; 
    stack1.Install (csmaNodes); 
    stack1.Install (wifiApNode); 
    stack1.Install (ssNodes); 

    Ipv4AddressHelper address1; 

    address1.SetBase ("11.1.1.0", "255.255.255.0"); 
    Ipv4InterfaceContainer p2pInterfaces; 
    p2pInterfaces = address1.Assign (p2pDevices); 

    address1.SetBase ("11.1.2.0", "255.255.255.0"); 
    Ipv4InterfaceContainer csmaInterfaces; 
    csmaInterfaces = address1.Assign (csmaDevices); 

    address1.SetBase ("11.1.3.0", "255.255.255.0"); 
    address1.Assign (staDevices); 
    address1.Assign (apDevices); 

    UdpEchoServerHelper echoServer (9); 

    ApplicationContainer serverApps1 = echoServer.Install (csmaNodes.Get (nCsma)); 
    serverApps1.Start (Seconds (1.0)); 
    serverApps1.Stop (Seconds (duration+0.1)); 

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

    ApplicationContainer clientApps1 = 
    echoClient.Install (ssNodes.Get (0)); 
    clientApps1.Start (Seconds (2.0)); 
    clientApps1.Stop (Seconds (duration+0.1)); 

    Ipv4GlobalRoutingHelper::PopulateRoutingTables(); 


    //pointToPoint.EnablePcapAll ("third"); 
    phy.EnablePcap ("third", apDevices.Get (0)); 
    //csma.EnablePcap ("third", csmaDevices.Get (0), true); 




    lteHelper = CreateObject<LteHelper>(); 
    epcHelper = CreateObject<EpcHelper>(); 

    lteHelper->SetEpcHelper (epcHelper); 
    lteHelper->SetSchedulerType("ns3::RrFfMacScheduler"); 
    lteHelper->SetAttribute ("PathlossModel", 
          StringValue ("ns3::FriisPropagationLossModel")); 
     pgw = epcHelper->GetPgwNode(); 

    remoteHostContainer.Create (1); 
    remoteHost = remoteHostContainer.Get (0); 
    internet.Install (remoteHostContainer); 

     p2ph.SetDeviceAttribute ("DataRate", DataRateValue (DataRate ("100Gb/s"))); 
     p2ph.SetDeviceAttribute ("Mtu", UintegerValue (1500)); 
     p2ph.SetChannelAttribute ("Delay", TimeValue (Seconds (0.010))); 
     internetDevices = p2ph.Install (pgw, remoteHost); 

     ipv4h.SetBase ("1.0.0.0", "255.0.0.0"); 
     internetIpIfaces = ipv4h.Assign (internetDevices); 

     remoteHostStaticRouting = ipv4RoutingHelper.GetStaticRouting (remoteHost->GetObject<Ipv4>()); 
     remoteHostStaticRouting->AddNetworkRouteTo (Ipv4Address ("7.0.0.0"), Ipv4Mask ("255.0.0.0"), 1); 

     std::cout << "2. Installing LTE+EPC+remotehost. Done!" << std::endl; 


MobilityHelper mobility; 
    Ptr<ListPositionAllocator> positionAlloc; 
    positionAlloc = CreateObject<ListPositionAllocator>(); 

    positionAlloc->Add (Vector (0.0, 500.0, 0.0)); //STA 

    mobility.SetPositionAllocator (positionAlloc); 
    mobility.SetMobilityModel ("ns3::ConstantVelocityMobilityModel"); 
    mobility.Install(ssNodes.Get(0)); 

    Ptr<ConstantVelocityMobilityModel> cvm = ssNodes.Get(0)->GetObject<ConstantVelocityMobilityModel>(); 
    cvm->SetVelocity(Vector (5, 0, 0)); //move to left to right 10.0m/s 

    positionAlloc = CreateObject<ListPositionAllocator>(); 

    positionAlloc->Add (Vector (0.0, 500.0, 10.0)); //MAG1AP 
    positionAlloc->Add (Vector (0.0, 510.0, 0.0)); //MAG2AP 

    mobility.SetPositionAllocator (positionAlloc); 
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); 

    mobility.Install (NodeContainer(bsNodes.Get(0),ssNodes.Get(1))); 





NetDeviceContainer ssDevs, bsDevs; 

      bsDevs = lteHelper->InstallEnbDevice (bsNodes); 
      ssDevs=lteHelper->InstallUeDevice (ssNodes); 

      for (uint16_t j=0; j < numberOfUEs; j++) 
      { 
        lteHelper->Attach (ssDevs.Get(j), bsDevs.Get(0)); 
      } 


      Ipv4InterfaceContainer iueIpIface; 
      iueIpIface = epcHelper->AssignUeIpv4Address (NetDeviceContainer (ssDevs)); 

    lteHelper->ActivateEpsBearer (ssDevs, EpsBearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT), EpcTft::Default()); 



UdpServerHelper udpServer; 
    ApplicationContainer serverApps; 
    UdpClientHelper udpClient; 
    ApplicationContainer clientApps; 

    udpServer = UdpServerHelper (100); 

    serverApps = udpServer.Install (ssNodes.Get (0)); 
    serverApps.Start (Seconds (6)); 
    serverApps.Stop (Seconds (duration)); 

    udpClient = UdpClientHelper (iueIpIface.GetAddress (0), 100); 
    udpClient.SetAttribute ("MaxPackets", UintegerValue (200000)); 
    udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.004))); 
    udpClient.SetAttribute ("PacketSize", UintegerValue (1024)); 

    clientApps = udpClient.Install (remoteHost); 
    clientApps.Start (Seconds (6)); 
    clientApps.Stop (Seconds (duration)); 
    lteHelper->EnableTraces(); 




    NS_LOG_INFO ("Starting simulation....."); 
Simulator::Stop(Seconds(duration)); 

    Simulator::Run(); 





    Simulator::Destroy(); 
    NS_LOG_INFO ("Done."); 

    return 0; 
} 

WiMAX网络+ WIFI网络

#include "ns3/core-module.h" 
#include "ns3/point-to-point-module.h" 
#include "ns3/wifi-module.h" 
#include "ns3/csma-module.h" 
#include "ns3/network-module.h" 
#include "ns3/applications-module.h" 
#include "ns3/mobility-module.h" 
#include "ns3/config-store-module.h" 
#include "ns3/wimax-module.h" 
#include "ns3/internet-module.h" 
#include "ns3/global-route-manager.h" 
#include "ns3/ipcs-classifier-record.h" 
#include "ns3/service-flow.h" 
#include <iostream> 

NS_LOG_COMPONENT_DEFINE ("WimaxSimpleExample"); 

using namespace ns3; 

int main (int argc, char *argv[]) 
{ 
    bool verbose = false; 

    int duration = 1000, schedType = 0; 
    WimaxHelper::SchedulerType scheduler = WimaxHelper::SCHED_TYPE_SIMPLE; 

    CommandLine cmd; 
    cmd.AddValue ("scheduler", "type of scheduler to use with the network devices", schedType); 
    cmd.AddValue ("duration", "duration of the simulation in seconds", duration); 
    cmd.AddValue ("verbose", "turn on all WimaxNetDevice log components", verbose); 
    cmd.Parse (argc, argv); 
    LogComponentEnable ("UdpClient", LOG_LEVEL_INFO); 
    LogComponentEnable ("UdpServer", LOG_LEVEL_INFO); 
    //LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO); 
    //LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO); 

    switch (schedType) 
    { 
    case 0: 
     scheduler = WimaxHelper::SCHED_TYPE_SIMPLE; 
     break; 
    case 1: 
     scheduler = WimaxHelper::SCHED_TYPE_MBQOS; 
     break; 
    case 2: 
     scheduler = WimaxHelper::SCHED_TYPE_RTPS; 
     break; 
    default: 
     scheduler = WimaxHelper::SCHED_TYPE_SIMPLE; 
    } 

    NodeContainer ssNodes; 
    NodeContainer bsNodes; 

    ssNodes.Create (2); 
    bsNodes.Create (1); 


uint32_t nCsma = 3; 

    NodeContainer p2pNodes; 
    p2pNodes.Create (2); 

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

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

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

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

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

    NodeContainer wifiApNode = p2pNodes.Get (0); 

    YansWifiChannelHelper channel = YansWifiChannelHelper::Default(); 
    YansWifiPhyHelper phy = YansWifiPhyHelper::Default(); 
    phy.SetChannel (channel.Create()); 

    WifiHelper wifi = WifiHelper::Default(); 
    wifi.SetRemoteStationManager ("ns3::AarfWifiManager"); 

    NqosWifiMacHelper mac = NqosWifiMacHelper::Default(); 

    Ssid ssid = Ssid ("ns-3-ssid"); 
    mac.SetType ("ns3::StaWifiMac", 
      "Ssid", SsidValue (ssid), 
      "ActiveProbing", BooleanValue (false)); 

    NetDeviceContainer staDevices; 
    staDevices = wifi.Install (phy, mac, ssNodes); 

    mac.SetType ("ns3::ApWifiMac", 
      "Ssid", SsidValue (ssid)); 

    NetDeviceContainer apDevices; 
    apDevices = wifi.Install (phy, mac, wifiApNode); 

    MobilityHelper mobility1; 

    mobility1.SetPositionAllocator ("ns3::GridPositionAllocator", 
          "MinX", DoubleValue (0.0), 
          "MinY", DoubleValue (0.0), 
          "DeltaX", DoubleValue (5.0), 
          "DeltaY", DoubleValue (10.0), 
          "GridWidth", UintegerValue (3), 
          "LayoutType", StringValue ("RowFirst")); 




    mobility1.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); 
    mobility1.Install (wifiApNode); 
(wifiApNode.Get(0) -> GetObject<ConstantPositionMobilityModel>()) -> SetPosition(Vector(800.0, 0.0, 0.0)); 
    InternetStackHelper stack1; 
    stack1.Install (csmaNodes); 
    stack1.Install (wifiApNode); 
    stack1.Install (ssNodes); 

    Ipv4AddressHelper address1; 

    address1.SetBase ("11.1.1.0", "255.255.255.0"); 
    Ipv4InterfaceContainer p2pInterfaces; 
    p2pInterfaces = address1.Assign (p2pDevices); 

    address1.SetBase ("11.1.2.0", "255.255.255.0"); 
    Ipv4InterfaceContainer csmaInterfaces; 
    csmaInterfaces = address1.Assign (csmaDevices); 

    address1.SetBase ("11.1.3.0", "255.255.255.0"); 
    address1.Assign (staDevices); 
    address1.Assign (apDevices); 

    UdpEchoServerHelper echoServer (9); 

    ApplicationContainer serverApps1 = echoServer.Install (csmaNodes.Get (nCsma)); 
    serverApps1.Start (Seconds (1.0)); 
    serverApps1.Stop (Seconds (duration)); 

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

    ApplicationContainer clientApps1 = 
    echoClient.Install (ssNodes.Get (0)); 
    clientApps1.Start (Seconds (2.0)); 
    clientApps1.Stop (Seconds (duration)); 

    Ipv4GlobalRoutingHelper::PopulateRoutingTables(); 


    //pointToPoint.EnablePcapAll ("third"); 
    phy.EnablePcap ("third", apDevices.Get (0)); 
    //csma.EnablePcap ("third", csmaDevices.Get (0), true); 




    WimaxHelper wimax; 

    NetDeviceContainer ssDevs, bsDevs; 

    ssDevs = wimax.Install (ssNodes, 
         WimaxHelper::DEVICE_TYPE_SUBSCRIBER_STATION, 
         WimaxHelper::SIMPLE_PHY_TYPE_OFDM, 
         scheduler); 
    bsDevs = wimax.Install (bsNodes, WimaxHelper::DEVICE_TYPE_BASE_STATION, WimaxHelper::SIMPLE_PHY_TYPE_OFDM, scheduler); 

    wimax.EnableAscii ("bs-devices", bsDevs); 
    wimax.EnableAscii ("ss-devices", ssDevs); 

    Ptr<SubscriberStationNetDevice> ss[2]; 

    for (int i = 0; i < 2; i++) 
    { 
     ss[i] = ssDevs.Get (i)->GetObject<SubscriberStationNetDevice>(); 
     ss[i]->SetModulationType (WimaxPhy::MODULATION_TYPE_QAM16_12); 
    } 

    Ptr<BaseStationNetDevice> bs; 

    bs = bsDevs.Get (0)->GetObject<BaseStationNetDevice>(); 


    MobilityHelper mobility; 
    Ptr<ListPositionAllocator> positionAlloc; 
    positionAlloc = CreateObject<ListPositionAllocator>(); 

    positionAlloc->Add (Vector (-1061.0, 70.0, 0.0)); //STA 

    mobility.SetPositionAllocator (positionAlloc); 
    mobility.SetMobilityModel ("ns3::ConstantVelocityMobilityModel"); 
    mobility.Install(ssNodes.Get(0)); 

    Ptr<ConstantVelocityMobilityModel> cvm = ssNodes.Get(0)->GetObject<ConstantVelocityMobilityModel>(); 
    cvm->SetVelocity(Vector (5, 0, 0)); //move to left to right 10.0m/s 

    positionAlloc = CreateObject<ListPositionAllocator>(); 

    positionAlloc->Add (Vector (-0.0, 40.0, 0.0)); //MAG1AP 
    positionAlloc->Add (Vector (0.0, 40.0, 0.0)); //MAG2AP 

    mobility.SetPositionAllocator (positionAlloc); 
    mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); 

    mobility.Install (NodeContainer(bsNodes.Get(0),ssNodes.Get(1))); 


    InternetStackHelper stack; 
    stack.Install (bsNodes); 
    //stack.Install (ssNodes); 

    Ipv4AddressHelper address; 
    address.SetBase ("10.1.1.0", "255.255.255.0"); 

    Ipv4InterfaceContainer SSinterfaces = address.Assign (ssDevs); 
    Ipv4InterfaceContainer BSinterface = address.Assign (bsDevs); 

    if (verbose) 
    { 
     wimax.EnableLogComponents(); // Turn on all wimax logging 
    } 
    /*------------------------------*/ 
    UdpServerHelper udpServer; 
    ApplicationContainer serverApps; 
    UdpClientHelper udpClient; 
    ApplicationContainer clientApps; 

    udpServer = UdpServerHelper (100); 

    serverApps = udpServer.Install (ssNodes.Get (0)); 
    serverApps.Start (Seconds (6)); 
    serverApps.Stop (Seconds (duration)); 

    udpClient = UdpClientHelper (SSinterfaces.GetAddress (0), 100); 
    udpClient.SetAttribute ("MaxPackets", UintegerValue (1200)); 
    udpClient.SetAttribute ("Interval", TimeValue (Seconds (0.5))); 
    udpClient.SetAttribute ("PacketSize", UintegerValue (1024)); 

    clientApps = udpClient.Install (ssNodes.Get (1)); 
    clientApps.Start (Seconds (6)); 
    clientApps.Stop (Seconds (duration)); 

    Simulator::Stop (Seconds (duration + 0.1)); 

    wimax.EnablePcap ("wimax-simple-ss0", ssNodes.Get (0)->GetId(), ss[0]->GetIfIndex()); 
    wimax.EnablePcap ("wimax-simple-ss1", ssNodes.Get (1)->GetId(), ss[1]->GetIfIndex()); 
    wimax.EnablePcap ("wimax-simple-bs0", bsNodes.Get (0)->GetId(), bs->GetIfIndex()); 

    IpcsClassifierRecord DlClassifierUgs (Ipv4Address ("0.0.0.0"), 
            Ipv4Mask ("0.0.0.0"), 
            SSinterfaces.GetAddress (0), 
            Ipv4Mask ("255.255.255.255"), 
            0, 
            65000, 
            100, 
            100, 
            17, 
            1); 
    ServiceFlow DlServiceFlowUgs = wimax.CreateServiceFlow (ServiceFlow::SF_DIRECTION_DOWN, 
                 ServiceFlow::SF_TYPE_RTPS, 
                 DlClassifierUgs); 

    IpcsClassifierRecord UlClassifierUgs (SSinterfaces.GetAddress (1), 
            Ipv4Mask ("255.255.255.255"), 
            Ipv4Address ("0.0.0.0"), 
            Ipv4Mask ("0.0.0.0"), 
            0, 
            65000, 
            100, 
            100, 
            17, 
            1); 
    ServiceFlow UlServiceFlowUgs = wimax.CreateServiceFlow (ServiceFlow::SF_DIRECTION_UP, 
                 ServiceFlow::SF_TYPE_RTPS, 
                 UlClassifierUgs); 
    ss[0]->AddServiceFlow (DlServiceFlowUgs); 
    ss[1]->AddServiceFlow (UlServiceFlowUgs); 



    NS_LOG_INFO ("Starting simulation....."); 
    Simulator::Run(); 

    ss[0] = 0; 
    ss[1] = 0; 
    bs = 0; 

    Simulator::Destroy(); 
    NS_LOG_INFO ("Done."); 

    return 0; 
} 

的代码是属于这些作者GPL2下: https://code.google.com/p/tesis-ns3/source/browse/trunk/lena/scratch/?r=5