108 sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this)); |
108 sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this)); |
109 return sink; |
109 return sink; |
110 } |
110 } |
111 |
111 |
112 GnuplotDataset |
112 GnuplotDataset |
113 Experiment::Run (const WifiHelper &wifi) |
113 Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy, const YansWifiChannelHelper &wifiChannel) |
114 { |
114 { |
115 m_bytesTotal = 0; |
115 m_bytesTotal = 0; |
116 |
116 |
117 NodeContainer c; |
117 NodeContainer c; |
118 c.Create (2); |
118 c.Create (2); |
119 |
119 |
120 PacketSocketHelper packetSocket; |
120 PacketSocketHelper packetSocket; |
121 packetSocket.Install (c); |
121 packetSocket.Install (c); |
122 |
122 |
123 NetDeviceContainer devices = wifi.Install (c); |
123 YansWifiPhyHelper phy = wifiPhy; |
|
124 phy.SetChannel (wifiChannel.Create ()); |
|
125 NetDeviceContainer devices = wifi.Install (phy, c); |
124 |
126 |
125 MobilityHelper mobility; |
127 MobilityHelper mobility; |
126 Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> (); |
128 Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> (); |
127 positionAlloc->Add (Vector (0.0, 0.0, 0.0)); |
129 positionAlloc->Add (Vector (0.0, 0.0, 0.0)); |
128 positionAlloc->Add (Vector (5.0, 0.0, 0.0)); |
130 positionAlloc->Add (Vector (5.0, 0.0, 0.0)); |
166 cmd.Parse (argc, argv); |
168 cmd.Parse (argc, argv); |
167 |
169 |
168 Gnuplot gnuplot = Gnuplot ("reference-rates.png"); |
170 Gnuplot gnuplot = Gnuplot ("reference-rates.png"); |
169 |
171 |
170 Experiment experiment; |
172 Experiment experiment; |
171 WifiHelper wifi; |
173 WifiHelper wifi = WifiHelper::Default (); |
|
174 YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default (); |
|
175 YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); |
172 GnuplotDataset dataset; |
176 GnuplotDataset dataset; |
173 |
177 |
174 wifi.SetMac ("ns3::AdhocWifiMac"); |
178 wifi.SetMac ("ns3::AdhocWifiMac"); |
175 |
179 |
176 NS_LOG_DEBUG ("54"); |
180 NS_LOG_DEBUG ("54"); |
177 experiment = Experiment ("54mb"); |
181 experiment = Experiment ("54mb"); |
178 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
182 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
179 "DataMode", StringValue ("wifia-54mbs")); |
183 "DataMode", StringValue ("wifia-54mbs")); |
180 dataset = experiment.Run (wifi); |
184 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
181 gnuplot.AddDataset (dataset); |
185 gnuplot.AddDataset (dataset); |
182 |
186 |
183 NS_LOG_DEBUG ("48"); |
187 NS_LOG_DEBUG ("48"); |
184 experiment = Experiment ("48mb"); |
188 experiment = Experiment ("48mb"); |
185 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
189 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
186 "DataMode", StringValue ("wifia-48mbs")); |
190 "DataMode", StringValue ("wifia-48mbs")); |
187 dataset = experiment.Run (wifi); |
191 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
188 gnuplot.AddDataset (dataset); |
192 gnuplot.AddDataset (dataset); |
189 |
193 |
190 NS_LOG_DEBUG ("36"); |
194 NS_LOG_DEBUG ("36"); |
191 experiment = Experiment ("36mb"); |
195 experiment = Experiment ("36mb"); |
192 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
196 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
193 "DataMode", StringValue ("wifia-36mbs")); |
197 "DataMode", StringValue ("wifia-36mbs")); |
194 dataset = experiment.Run (wifi); |
198 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
195 gnuplot.AddDataset (dataset); |
199 gnuplot.AddDataset (dataset); |
196 |
200 |
197 NS_LOG_DEBUG ("24"); |
201 NS_LOG_DEBUG ("24"); |
198 experiment = Experiment ("24mb"); |
202 experiment = Experiment ("24mb"); |
199 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
203 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
200 "DataMode", StringValue ("wifia-24mbs")); |
204 "DataMode", StringValue ("wifia-24mbs")); |
201 dataset = experiment.Run (wifi); |
205 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
202 gnuplot.AddDataset (dataset); |
206 gnuplot.AddDataset (dataset); |
203 |
207 |
204 NS_LOG_DEBUG ("18"); |
208 NS_LOG_DEBUG ("18"); |
205 experiment = Experiment ("18mb"); |
209 experiment = Experiment ("18mb"); |
206 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
210 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
207 "DataMode", StringValue ("wifia-18mbs")); |
211 "DataMode", StringValue ("wifia-18mbs")); |
208 dataset = experiment.Run (wifi); |
212 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
209 gnuplot.AddDataset (dataset); |
213 gnuplot.AddDataset (dataset); |
210 |
214 |
211 NS_LOG_DEBUG ("12"); |
215 NS_LOG_DEBUG ("12"); |
212 experiment = Experiment ("12mb"); |
216 experiment = Experiment ("12mb"); |
213 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
217 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
214 "DataMode", StringValue ("wifia-12mbs")); |
218 "DataMode", StringValue ("wifia-12mbs")); |
215 dataset = experiment.Run (wifi); |
219 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
216 gnuplot.AddDataset (dataset); |
220 gnuplot.AddDataset (dataset); |
217 |
221 |
218 NS_LOG_DEBUG ("9"); |
222 NS_LOG_DEBUG ("9"); |
219 experiment = Experiment ("9mb"); |
223 experiment = Experiment ("9mb"); |
220 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
224 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
221 "DataMode", StringValue ("wifia-9mbs")); |
225 "DataMode", StringValue ("wifia-9mbs")); |
222 dataset = experiment.Run (wifi); |
226 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
223 gnuplot.AddDataset (dataset); |
227 gnuplot.AddDataset (dataset); |
224 |
228 |
225 NS_LOG_DEBUG ("6"); |
229 NS_LOG_DEBUG ("6"); |
226 experiment = Experiment ("6mb"); |
230 experiment = Experiment ("6mb"); |
227 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
231 wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", |
228 "DataMode", StringValue ("wifia-6mbs")); |
232 "DataMode", StringValue ("wifia-6mbs")); |
229 dataset = experiment.Run (wifi); |
233 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
230 gnuplot.AddDataset (dataset); |
234 gnuplot.AddDataset (dataset); |
231 |
235 |
232 gnuplot.GenerateOutput (std::cout); |
236 gnuplot.GenerateOutput (std::cout); |
233 |
237 |
234 |
238 |
237 |
241 |
238 |
242 |
239 NS_LOG_DEBUG ("arf"); |
243 NS_LOG_DEBUG ("arf"); |
240 experiment = Experiment ("arf"); |
244 experiment = Experiment ("arf"); |
241 wifi.SetRemoteStationManager ("ns3::ArfWifiManager"); |
245 wifi.SetRemoteStationManager ("ns3::ArfWifiManager"); |
242 dataset = experiment.Run (wifi); |
246 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
243 gnuplot.AddDataset (dataset); |
247 gnuplot.AddDataset (dataset); |
244 |
248 |
245 NS_LOG_DEBUG ("aarf"); |
249 NS_LOG_DEBUG ("aarf"); |
246 experiment = Experiment ("aarf"); |
250 experiment = Experiment ("aarf"); |
247 wifi.SetRemoteStationManager ("ns3::AarfWifiManager"); |
251 wifi.SetRemoteStationManager ("ns3::AarfWifiManager"); |
248 dataset = experiment.Run (wifi); |
252 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
249 gnuplot.AddDataset (dataset); |
253 gnuplot.AddDataset (dataset); |
250 |
254 |
251 NS_LOG_DEBUG ("ideal"); |
255 NS_LOG_DEBUG ("ideal"); |
252 experiment = Experiment ("ideal"); |
256 experiment = Experiment ("ideal"); |
253 wifi.SetRemoteStationManager ("ns3::IdealWifiManager"); |
257 wifi.SetRemoteStationManager ("ns3::IdealWifiManager"); |
254 dataset = experiment.Run (wifi); |
258 dataset = experiment.Run (wifi, wifiPhy, wifiChannel); |
255 gnuplot.AddDataset (dataset); |
259 gnuplot.AddDataset (dataset); |
256 |
260 |
257 gnuplot.GenerateOutput (std::cout); |
261 gnuplot.GenerateOutput (std::cout); |
258 |
262 |
259 return 0; |
263 return 0; |