hi, I'm new to NS3, I'm trying to modify first.cc to do TCP rather than UDP. I didn't get any error, but no data exchange happened as well. Could anyone help me on this?˜˜ many thanks˜~ here is the code: in the main:
NS_LOG_INFO ("Creating Topology");
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (137));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("14kb/s"));
NodeContainer nodes;
nodes.Create (2);
//
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("100Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("20ms"));
//
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
InternetStackHelper stack;
stack.Install (nodes);
Ipv4AddressHelper address;
address.SetBase ("109.11.12.0", "255.255.255.0");//address setting
Ipv4InterfaceContainer interfaces = address.Assign (devices);
OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address
(InetSocketAddress (Ipv4Address ("255.255.255.0"), 10)));
onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
onOffHelper.SetAttribute ("DataRate",StringValue ("2Mbps"));
onOffHelper.SetAttribute ("PacketSize",UintegerValue(2000));
ApplicationContainer app = onOffHelper.Install (nodes.Get (0));
// Start the application
app.Start (Seconds (10.0));
app.Stop (Seconds (100.0));
// Create an optional packet sink to receive packets
PacketSinkHelper sink ("ns3::TcpSocketFactory",Address
(InetSocketAddress (Ipv4Address::GetAny (), 10)));
app = sink.Install (nodes.Get(1));
app.Start (Seconds (1.0));
app.Stop (Seconds (100.0));
pointToPoint.EnablePcapAll ("testtcp");
ok,I think it is solved now, first, the IP was wrong at onoff helper, they should be the same as Ipv4AddressHelper. then the app start time is wrong, and the config onoff application code are not needed. here is the code now: it might not be very right, but at least I can read result from it now.
NodeContainer nodes;
nodes.Create (2); //creat 2 nodes they are p2p
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("2Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("20ms"));
NetDeviceContainer devices;// put nodes in ndc
devices = pointToPoint.Install (nodes);
////give them an address
InternetStackHelper stack;
stack.Install (nodes);
Ipv4AddressHelper address;
address.SetBase ("109.11.12.0", "255.255.255.0");//address setting
Ipv4InterfaceContainer interfaces = address.Assign (devices);
//sink for reciever????
PacketSinkHelper sink ("ns3::TcpSocketFactory",Address
(InetSocketAddress (Ipv4Address::GetAny (), 10)));
//set a node as reciever
ApplicationContainer app = sink.Install (nodes.Get(0));
app.Start (Seconds (1.0));
app.Stop (Seconds (10.0));
OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address
(InetSocketAddress (Ipv4Address ("109.11.12.1"), 10)));
onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
onOffHelper.SetAttribute ("DataRate",StringValue ("2Mbps"));
onOffHelper.SetAttribute ("PacketSize",UintegerValue(1280));
// ApplicationContainer
app = onOffHelper.Install (nodes.Get (1));
// Start the application
app.Start (Seconds (1.0));
app.Stop (Seconds (10.0));
pointToPoint.EnablePcapAll ("testtcp");
Simulator::Run ();