tcp burst
parent
9c0e3a6217
commit
44a51e10e3
|
@ -62,12 +62,18 @@ int main(int argc, char* argv[])
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if rts disabled, cts threshold to more than max ever sent
|
||||||
|
Config::SetDefault("ns3::WifiRemoteStationManager::RtsCtsThreshold", (enableRtsCts ? UintegerValue(100) : UintegerValue(2200)));
|
||||||
|
|
||||||
|
|
||||||
// All the nodes, each subnet uses a subset of these.
|
// All the nodes, each subnet uses a subset of these.
|
||||||
// A node can belong to multiple subnets
|
// A node can belong to multiple subnets
|
||||||
NodeContainer allNodes;
|
NodeContainer allNodes;
|
||||||
allNodes.Create(16);
|
allNodes.Create(16);
|
||||||
|
|
||||||
/* Topologia della Rete*/
|
|
||||||
|
/* ######################################################## */
|
||||||
|
/* ----- Start of Subnets setup ----- */
|
||||||
|
|
||||||
// Reti PTP
|
// Reti PTP
|
||||||
/* SOTTORETE PTP Node 0,2 */
|
/* SOTTORETE PTP Node 0,2 */
|
||||||
|
@ -75,7 +81,7 @@ int main(int argc, char* argv[])
|
||||||
nodes02.Add(allNodes.Get(0));
|
nodes02.Add(allNodes.Get(0));
|
||||||
nodes02.Add(allNodes.Get(2));
|
nodes02.Add(allNodes.Get(2));
|
||||||
PointToPointHelper ptph02;
|
PointToPointHelper ptph02;
|
||||||
ptph02.SetDeviceAttribute("DataRate", StringValue("00Mbps"));
|
ptph02.SetDeviceAttribute("DataRate", StringValue("10Mbps"));
|
||||||
ptph02.SetChannelAttribute("Delay", StringValue("200ms"));
|
ptph02.SetChannelAttribute("Delay", StringValue("200ms"));
|
||||||
NetDeviceContainer ptp02 = ptph02.Install(nodes02);
|
NetDeviceContainer ptp02 = ptph02.Install(nodes02);
|
||||||
/* SOTTORETE PTP Node 1,2 */
|
/* SOTTORETE PTP Node 1,2 */
|
||||||
|
@ -148,7 +154,6 @@ int main(int argc, char* argv[])
|
||||||
csmah5678.SetChannelAttribute("Delay", TimeValue(MicroSeconds(20)));
|
csmah5678.SetChannelAttribute("Delay", TimeValue(MicroSeconds(20)));
|
||||||
NetDeviceContainer csma5678 = csmah5678.Install(nodes5678);
|
NetDeviceContainer csma5678 = csmah5678.Install(nodes5678);
|
||||||
|
|
||||||
|
|
||||||
// Rete Wi-Fi AARF 802.11g
|
// Rete Wi-Fi AARF 802.11g
|
||||||
/*
|
/*
|
||||||
Wi-Fi operating in Infrastructure mode, AP is stationary, Stations nodes move with random walk mobility pattern over a bounded square of 30 meters for each side
|
Wi-Fi operating in Infrastructure mode, AP is stationary, Stations nodes move with random walk mobility pattern over a bounded square of 30 meters for each side
|
||||||
|
@ -158,7 +163,7 @@ int main(int argc, char* argv[])
|
||||||
NodeContainer wifiApNode;
|
NodeContainer wifiApNode;
|
||||||
wifiApNode.Add(allNodes.Get(9));
|
wifiApNode.Add(allNodes.Get(9));
|
||||||
|
|
||||||
// Station devices
|
// Station devices (e.g. laptops)
|
||||||
NodeContainer wifiStaNodes;
|
NodeContainer wifiStaNodes;
|
||||||
wifiStaNodes.Add(allNodes.Get(10));
|
wifiStaNodes.Add(allNodes.Get(10));
|
||||||
wifiStaNodes.Add(allNodes.Get(11));
|
wifiStaNodes.Add(allNodes.Get(11));
|
||||||
|
@ -176,23 +181,20 @@ int main(int argc, char* argv[])
|
||||||
wifi.SetRemoteStationManager("ns3::AarfWifiManager");
|
wifi.SetRemoteStationManager("ns3::AarfWifiManager");
|
||||||
// you can do in this way if you want to set a constant data rate
|
// you can do in this way if you want to set a constant data rate
|
||||||
//wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode", StringValue("OfdmRate6Mbps"));
|
//wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode", StringValue("OfdmRate6Mbps"));
|
||||||
|
|
||||||
WifiMacHelper mac;
|
WifiMacHelper mac;
|
||||||
|
|
||||||
// Infrastructure Mode
|
// Infrastructure Mode
|
||||||
Ssid ssid = Ssid("2001600");
|
Ssid ssid = Ssid("2001600");
|
||||||
|
// Stations
|
||||||
NetDeviceContainer staDevices;
|
NetDeviceContainer staDevices;
|
||||||
mac.SetType("ns3::StaWifiMac", "Ssid", SsidValue(ssid), "ActiveProbing", BooleanValue(false));
|
mac.SetType("ns3::StaWifiMac", "Ssid", SsidValue(ssid), "ActiveProbing", BooleanValue(false));
|
||||||
staDevices = wifi.Install(phy, mac, wifiStaNodes);
|
staDevices = wifi.Install(phy, mac, wifiStaNodes);
|
||||||
|
// AP
|
||||||
NetDeviceContainer apDevices;
|
NetDeviceContainer apDevices;
|
||||||
mac.SetType("ns3::ApWifiMac", "Ssid", SsidValue(ssid));
|
mac.SetType("ns3::ApWifiMac", "Ssid", SsidValue(ssid));
|
||||||
apDevices = wifi.Install(phy, mac, wifiApNode);
|
apDevices = wifi.Install(phy, mac, wifiApNode);
|
||||||
|
|
||||||
// Mobility helper
|
// Mobility helper
|
||||||
MobilityHelper mobility;
|
MobilityHelper mobility;
|
||||||
|
|
||||||
// Actually needed?
|
// Actually needed?
|
||||||
/*mobility.SetPositionAllocator("ns3::GridPositionAllocator",
|
/*mobility.SetPositionAllocator("ns3::GridPositionAllocator",
|
||||||
"MinX",
|
"MinX",
|
||||||
|
@ -206,85 +208,141 @@ int main(int argc, char* argv[])
|
||||||
"GridWidth",
|
"GridWidth",
|
||||||
UintegerValue(3),
|
UintegerValue(3),
|
||||||
"LayoutType",
|
"LayoutType",
|
||||||
StringValue("RowFirst"));
|
StringValue("RowFirst"));*/
|
||||||
*/
|
|
||||||
|
|
||||||
// Stations move with random walk over a square of 30 meters each side
|
// Stations move with random walk over a square of 30 meters each side
|
||||||
mobility.SetMobilityModel("ns3::RandomWalk2dMobilityModel",
|
mobility.SetMobilityModel("ns3::RandomWalk2dMobilityModel",
|
||||||
"Bounds",
|
"Bounds",
|
||||||
RectangleValue(Rectangle(-15, 15, -15, 15)));
|
RectangleValue(Rectangle(-15, 15, -15, 15)));
|
||||||
mobility.Install(wifiStaNodes);
|
mobility.Install(wifiStaNodes);
|
||||||
|
|
||||||
// AP is stationary
|
// AP is stationary
|
||||||
mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
|
mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
|
||||||
mobility.Install(wifiApNode);
|
mobility.Install(wifiApNode);
|
||||||
|
/* ----- End of subnets setup*/
|
||||||
|
|
||||||
// TODO: enableRtsCts
|
|
||||||
|
|
||||||
/* ######################################################## */
|
/* ######################################################## */
|
||||||
/* IP Addresses*/
|
/* ---- ROUTING ----- */
|
||||||
// InternetStackHelper for everyone!
|
// InternetStackHelper for everyone!
|
||||||
InternetStackHelper stack;
|
InternetStackHelper stack;
|
||||||
stack.Install(allNodes);
|
stack.Install(allNodes);
|
||||||
|
|
||||||
// Assign IP address to subnets
|
// Assign IP address to subnets
|
||||||
Ipv4AddressHelper address;
|
Ipv4AddressHelper address;
|
||||||
|
|
||||||
// nodes 2,4
|
// nodes 2,4
|
||||||
address.SetBase("10.1.0.0", "255.225.255.252"); // 10.1.0.0/30
|
address.SetBase(Ipv4Address("10.1.4.44"), "255.225.255.252"); // 10.1.0.0/30
|
||||||
Ipv4InterfaceContainer ipptp24;
|
Ipv4InterfaceContainer ipptp24;
|
||||||
ipptp24 = address.Assign(ptp24);
|
ipptp24 = address.Assign(ptp24);
|
||||||
|
|
||||||
// nodes 4,5
|
// nodes 4,5
|
||||||
address.SetBase("10.1.1.0", "255.225.255.252"); // 10.1.1.0/30
|
address.SetBase(Ipv4Address("10.1.4.40"), "255.225.255.252"); // 10.1.1.0/30
|
||||||
Ipv4InterfaceContainer ipptp45;
|
Ipv4InterfaceContainer ipptp45;
|
||||||
ipptp45 = address.Assign(ptp45);
|
ipptp45 = address.Assign(ptp45);
|
||||||
|
|
||||||
// nodes 3,4
|
// nodes 3,4
|
||||||
address.SetBase("10.1.2.0", "255.225.255.252"); // 10.1.2.0/30
|
address.SetBase(Ipv4Address("10.1.4.36"), "255.225.255.252"); // 10.1.2.0/30
|
||||||
Ipv4InterfaceContainer icsma34;
|
Ipv4InterfaceContainer icsma34;
|
||||||
icsma34 = address.Assign(csma34);
|
icsma34 = address.Assign(csma34);
|
||||||
|
|
||||||
// nodes 4,9
|
// nodes 4,9
|
||||||
address.SetBase("10.1.3.0", "255.225.255.252"); // 10.1.3.0/30
|
address.SetBase(Ipv4Address("10.1.4.32"), "255.225.255.252"); // 10.1.3.0/30
|
||||||
Ipv4InterfaceContainer ipptp49;
|
Ipv4InterfaceContainer ipptp49;
|
||||||
ipptp49 = address.Assign(ptp49);
|
ipptp49 = address.Assign(ptp49);
|
||||||
|
|
||||||
|
|
||||||
// nodes 0,2
|
// nodes 0,2
|
||||||
address.SetBase("10.1.4.0", "255.225.255.252"); // 10.1.4.0/30
|
address.SetBase(Ipv4Address("10.1.4.52"), "255.225.255.252"); // 10.1.4.0/30
|
||||||
Ipv4InterfaceContainer ipptp02;
|
Ipv4InterfaceContainer ipptp02;
|
||||||
ipptp02 = address.Assign(ptp02);
|
ipptp02 = address.Assign(ptp02);
|
||||||
|
|
||||||
// nodes 0,1
|
// nodes 1,2
|
||||||
address.SetBase("10.1.5.0", "255.225.255.252"); // 10.1.5.0/30
|
address.SetBase(Ipv4Address("10.1.4.48"), "255.225.255.252"); // 10.1.5.0/30
|
||||||
Ipv4InterfaceContainer ipptp12;
|
Ipv4InterfaceContainer ipptp12;
|
||||||
ipptp12 = address.Assign(ptp12);
|
ipptp12 = address.Assign(ptp12);
|
||||||
|
|
||||||
// nodes 3,5
|
// nodes 3,5
|
||||||
address.SetBase("10.1.8.0", "255.225.255.252"); // 10.1.8.0/30
|
address.SetBase(Ipv4Address("10.1.4.24"), "255.225.255.252"); // 10.1.8.0/30
|
||||||
Ipv4InterfaceContainer ipptp35;
|
Ipv4InterfaceContainer ipptp35;
|
||||||
ipptp35 = address.Assign(ptp35);
|
ipptp35 = address.Assign(ptp35);
|
||||||
|
|
||||||
// nodes 3,9
|
// nodes 3,9
|
||||||
address.SetBase("10.1.7.0", "255.225.255.252"); // 10.1.7.0/30
|
address.SetBase(Ipv4Address("10.1.4.28"), "255.225.255.252"); // 10.1.7.0/30
|
||||||
Ipv4InterfaceContainer ipptp39;
|
Ipv4InterfaceContainer ipptp39;
|
||||||
ipptp39 = address.Assign(ptp39);
|
ipptp39 = address.Assign(ptp39);
|
||||||
|
|
||||||
// csma nodes
|
// csma nodes
|
||||||
address.SetBase("10.1.9.0", "255.225.255.248"); // 10.1.9.0/29
|
address.SetBase(Ipv4Address("10.1.4.16"), "255.225.255.248"); // 10.1.9.0/29
|
||||||
Ipv4InterfaceContainer icsma5678;
|
Ipv4InterfaceContainer icsma5678;
|
||||||
icsma5678 = address.Assign(csma5678);
|
icsma5678 = address.Assign(csma5678);
|
||||||
|
|
||||||
// wifi nodes
|
// wifi nodes
|
||||||
address.SetBase("10.1.6.0", "255.225.255.240"); // 10.1.9.0/28
|
address.SetBase(Ipv4Address("10.1.4.0"), "255.225.255.240"); // 10.1.9.0/28
|
||||||
address.Assign(staDevices);
|
Ipv4InterfaceContainer iStations = address.Assign(staDevices);
|
||||||
address.Assign(apDevices);
|
Ipv4InterfaceContainer iAp = address.Assign(apDevices);
|
||||||
|
|
||||||
|
// Set up Routing Table
|
||||||
|
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
|
||||||
|
|
||||||
/* ######################################################## */
|
/* ######################################################## */
|
||||||
/* Applications*/
|
/* APPLICATIONS */
|
||||||
// TCP Burst
|
|
||||||
|
/* ----- Start of TCP Burst ----- */
|
||||||
|
// Server 0 packet sink
|
||||||
|
// TCP burst traffic of 1821 B for each packet starting at 1.15 s
|
||||||
|
// Sender: Node 11 Receiver: Server 0
|
||||||
|
int port0 = 5000;
|
||||||
|
int port1 = 5001;
|
||||||
|
// Server 0 that will receive from node 11
|
||||||
|
Address server0_address1(InetSocketAddress(ipptp02.GetAddress(0), port0));
|
||||||
|
PacketSinkHelper sinkHelper0_1("ns3::TcpSocketFactory", server0_address1);
|
||||||
|
ApplicationContainer server0_app1 = sinkHelper0_1.Install(nodes02.Get(0));
|
||||||
|
server0_app1.Start(Seconds(0));
|
||||||
|
// Server 0 that will receive from node 15
|
||||||
|
Address server0_address2(InetSocketAddress(ipptp02.GetAddress(0), port1));
|
||||||
|
PacketSinkHelper sinkHelper0_2("ns3::TcpSocketFactory", server0_address2);
|
||||||
|
ApplicationContainer server0_app2 = sinkHelper0_2.Install(nodes02.Get(0));
|
||||||
|
server0_app2.Start(Seconds(0));
|
||||||
|
// Server 1 that will receive from node 10
|
||||||
|
Address server1_address(InetSocketAddress(ipptp12.GetAddress(0), port0));
|
||||||
|
PacketSinkHelper sinkHelper1("ns3::TcpSocketFactory", server1_address);
|
||||||
|
ApplicationContainer server1_app = sinkHelper1.Install(nodes12.Get(0));
|
||||||
|
server1_app.Start(Seconds(0));
|
||||||
|
|
||||||
|
// Node 11 that sends to server 0
|
||||||
|
OnOffHelper onOffHelper_11("ns3::TcpSocketFactory", iStations.GetAddress(1));
|
||||||
|
onOffHelper_11.SetAttribute("OnTime", StringValue("ns3::ExponentialRandomVariable[Mean=1]"));
|
||||||
|
onOffHelper_11.SetAttribute("OffTime", StringValue("ns3::ExponentialRandomVariable[Mean=0]"));
|
||||||
|
onOffHelper_11.SetAttribute("PacketSize", UintegerValue(1821));
|
||||||
|
AddressValue address0_11(InetSocketAddress(ipptp02.GetAddress(0), port0));
|
||||||
|
onOffHelper_11.SetAttribute("Remote", address0_11);
|
||||||
|
onOffHelper_11.SetAttribute("StartTime", StringValue("1.15s"));
|
||||||
|
ApplicationContainer node11_app;
|
||||||
|
node11_app.Add(onOffHelper_11.Install(wifiStaNodes.Get(1)));
|
||||||
|
node11_app.Start(Seconds(1.15));
|
||||||
|
// Node 15 that sends to server 1
|
||||||
|
OnOffHelper onOffHelper_10("ns3::TcpSocketFactory", iStations.GetAddress(0));
|
||||||
|
onOffHelper_10.SetAttribute("OnTime", StringValue("ns3::ExponentialRandomVariable[Mean=1]"));
|
||||||
|
onOffHelper_10.SetAttribute("OffTime", StringValue("ns3::ExponentialRandomVariable[Mean=0]"));
|
||||||
|
onOffHelper_10.SetAttribute("PacketSize", UintegerValue(1829));
|
||||||
|
AddressValue address0_10(InetSocketAddress(InetSocketAddress(ipptp12.GetAddress(0), port0)));
|
||||||
|
onOffHelper_10.SetAttribute("StartTime", StringValue("3.39s"));
|
||||||
|
onOffHelper_10.SetAttribute("Remote", address0_10);
|
||||||
|
ApplicationContainer node10_app;
|
||||||
|
node10_app.Add(onOffHelper_10.Install(wifiStaNodes.Get(0)));
|
||||||
|
node10_app.Start(Seconds(3.39));
|
||||||
|
// Node 15 that sends to server 0
|
||||||
|
OnOffHelper onOffHelper_15("ns3::TcpSocketFactory", iStations.GetAddress(5));
|
||||||
|
onOffHelper_15.SetAttribute("OnTime", StringValue("ns3::ExponentialRandomVariable[Mean=1]"));
|
||||||
|
onOffHelper_15.SetAttribute("OffTime", StringValue("ns3::ExponentialRandomVariable[Mean=0]"));
|
||||||
|
onOffHelper_15.SetAttribute("PacketSize", UintegerValue(1099));
|
||||||
|
AddressValue address0_15(InetSocketAddress(ipptp02.GetAddress(0), port1));
|
||||||
|
onOffHelper_15.SetAttribute("StartTime", StringValue("3.71s"));
|
||||||
|
onOffHelper_15.SetAttribute("Remote", address0_15);
|
||||||
|
ApplicationContainer node15_app;
|
||||||
|
node15_app.Add(onOffHelper_15.Install(wifiStaNodes.Get(5)));
|
||||||
|
node15_app.Start(Seconds(3.71));
|
||||||
|
/* ----- End of TCP Burst ----- */
|
||||||
|
|
||||||
|
/* ----- Start of UDP Echo ----- */
|
||||||
// UDP Echo application with Client 13 and Server 3
|
// UDP Echo application with Client 13 and Server 3
|
||||||
// Size of packet: 1477 Bytes Periodicity: 20ms MaxPackets: 250
|
// Size of packet: 1477 Bytes Periodicity: 20ms MaxPackets: 250
|
||||||
|
|
||||||
|
@ -295,31 +353,35 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
// UDP Echo client
|
// UDP Echo client
|
||||||
// UDP client targeting server 3 using the IP of the interface connected to the wifi ap
|
// UDP client targeting server 3 using the IP of the interface connected to the wifi ap
|
||||||
|
|
||||||
UdpEchoClientHelper echoClient(ipptp39.GetAddress(0), 9);
|
UdpEchoClientHelper echoClient(ipptp39.GetAddress(0), 9);
|
||||||
echoClient.SetAttribute("MaxPackets", UintegerValue(250));
|
echoClient.SetAttribute("MaxPackets", UintegerValue(250));
|
||||||
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
|
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
|
||||||
echoClient.SetAttribute("PacketSize", UintegerValue(1447));
|
echoClient.SetAttribute("PacketSize", UintegerValue(1447));
|
||||||
|
|
||||||
ApplicationContainer clientApps = echoClient.Install(allNodes.Get(13));
|
ApplicationContainer clientApps = echoClient.Install(allNodes.Get(13));
|
||||||
|
echoClient.SetFill(clientApps.Get(0), "Giulia,Battioni,1986870,Emanuele,Coletta,2001600,Federico,Corsale,1985903,Francesco,Maura,2017683,Marco,Totaro,NonLoSoNonRispondeAiMessaggi");
|
||||||
clientApps.Start(Seconds(0.0));
|
clientApps.Start(Seconds(0.0));
|
||||||
|
/* ----- End of UDP Echo ----- */
|
||||||
|
|
||||||
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
|
|
||||||
|
|
||||||
/* ######################################################## */
|
/* ######################################################## */
|
||||||
/* PCAP Tracing */
|
/* ----- Start of PCAP Tracing ----- */
|
||||||
|
// Only tracing switches, routers and wifi ap
|
||||||
|
// Using promiscous mode
|
||||||
if(tracing){
|
if(tracing){
|
||||||
ptph24.EnablePcap("node2 - subnet24", ptp24.Get(0), true);
|
ptph24.EnablePcap("task-2-subnet24", ptp24.Get(0), true);
|
||||||
ptph24.EnablePcap("node4 - subnet24", ptp24.Get(1), true);
|
ptph24.EnablePcap("task-4-subnet24", ptp24.Get(1), true);
|
||||||
ptph49.EnablePcap("node4 - subnet49", ptp49.Get(0), true);
|
ptph49.EnablePcap("task-4-subnet49", ptp49.Get(0), true);
|
||||||
ptph49.EnablePcap("node9 - subnet49", ptp49.Get(1), true);
|
ptph49.EnablePcap("task-9-subnet49", ptp49.Get(1), true);
|
||||||
ptph39.EnablePcap("node3 - subnet39", ptp39.Get(0), true);
|
ptph39.EnablePcap("task-3-subnet39", ptp39.Get(0), true);
|
||||||
ptph39.EnablePcap("node9 - subnet39", ptp39.Get(1), true);
|
ptph39.EnablePcap("task-9-subnet39", ptp39.Get(1), true);
|
||||||
ptph45.EnablePcap("node4 - subnet45", ptp45.Get(0), true);
|
ptph45.EnablePcap("task-4-subnet45", ptp45.Get(0), true);
|
||||||
ptph45.EnablePcap("node5 - subnet45", ptp45.Get(1), true);
|
ptph45.EnablePcap("task-5-subnet45", ptp45.Get(1), true);
|
||||||
ptph35.EnablePcap("node3 - subnet35", ptp35.Get(0), true);
|
ptph35.EnablePcap("task-3-subnet35", ptp35.Get(0), true);
|
||||||
ptph35.EnablePcap("node5 - subnet35", ptp35.Get(1), true);
|
ptph35.EnablePcap("task-5-subnet35", ptp35.Get(1), true);
|
||||||
}
|
}
|
||||||
|
/* ----- End of PCAP Tracing ----- */
|
||||||
|
|
||||||
|
|
||||||
/* ######################################################## */
|
/* ######################################################## */
|
||||||
// Max simulation time: 15s
|
// Max simulation time: 15s
|
||||||
|
|
Loading…
Reference in New Issue