2 # -*- coding: utf-8 -*-
4 from nepi.util import tags
5 from nepi.util.constants import AF_INET, STATUS_NOT_STARTED, STATUS_RUNNING, \
6 STATUS_FINISHED, STATUS_UNDETERMINED
7 from nepi.util.tunchannel_impl import \
8 preconfigure_tunchannel, postconfigure_tunchannel, \
9 wait_tunchannel, create_tunchannel
11 wifi_standards = dict({
12 "WIFI_PHY_STANDARD_holland": 5,
13 "WIFI_PHY_STANDARD_80211p_SCH": 7,
14 "WIFI_PHY_STANDARD_80211_5Mhz": 4,
15 "WIFI_PHY_UNKNOWN": 8,
16 "WIFI_PHY_STANDARD_80211_10Mhz": 3,
17 "WIFI_PHY_STANDARD_80211g": 2,
18 "WIFI_PHY_STANDARD_80211p_CCH": 6,
19 "WIFI_PHY_STANDARD_80211a": 0,
20 "WIFI_PHY_STANDARD_80211b": 1
24 "Icmpv4L4Protocol": 1,
29 service_flow_direction = dict({
31 "SF_DIRECTION_DOWN": 0,
34 service_flow_scheduling_type = dict ({
44 def _get_ipv4_protocol_guid(testbed_instance, node_guid):
45 # search for the Ipv4L3Protocol asociated with the device
46 protos_guids = testbed_instance.get_connected(node_guid, "protos", "node")
47 if len(protos_guids) == 0:
48 raise RuntimeError("No protocols where found for the node %d" % node_guid)
50 for proto_guid in protos_guids:
51 proto_factory_id = testbed_instance._create[proto_guid]
52 if proto_factory_id == "ns3::Ipv4L3Protocol":
53 ipv4_guid = proto_guid
56 raise RuntimeError("No Ipv4L3Protocol associated to node %d. \
57 can't add Ipv4 addresses" % node_guid)
60 def _get_node_guid(testbed_instance, guid):
61 # search for the node asociated with the device
62 node_guids = testbed_instance.get_connected(guid, "node", "devs")
63 if len(node_guids) == 0:
64 raise RuntimeError("Can't instantiate interface %d outside netns \
66 node_guid = node_guids[0]
69 def _get_dev_number(testbed_instance, guid):
70 node_guid = _get_node_guid(testbed_instance, guid)
71 dev_guids = testbed_instance.get_connected(node_guid, "devs", "node")
73 for guid_ in dev_guids:
77 return interface_number
79 def _follow_trace(testbed_instance, guid, trace_id, filename):
80 testbed_instance.follow_trace(guid, trace_id, filename)
81 filepath = testbed_instance.trace_filepath(guid, trace_id)
84 ### create traces functions ###
86 def p2pascii_trace(testbed_instance, guid, trace_id):
87 node_guid = _get_node_guid(testbed_instance, guid)
88 interface_number = _get_dev_number(testbed_instance, guid)
89 element = testbed_instance._elements[guid]
90 filename = "trace-p2p-node-%d-dev-%d.tr" % (node_guid, interface_number)
91 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
92 helper = testbed_instance.ns3.PointToPointHelper()
93 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
94 stream = asciiHelper.CreateFileStream(filepath)
95 helper.EnableAscii(stream, element)
97 def p2ppcap_trace(testbed_instance, guid, trace_id):
98 node_guid = _get_node_guid(testbed_instance, guid)
99 interface_number = _get_dev_number(testbed_instance, guid)
100 element = testbed_instance._elements[guid]
101 filename = "trace-p2p-node-%d-dev-%d.pcap" % (node_guid, interface_number)
102 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
103 helper = testbed_instance.ns3.PointToPointHelper()
104 helper.EnablePcap(filepath, element, explicitFilename = True)
106 def _csmapcap_trace(testbed_instance, guid, trace_id, promisc):
107 node_guid = _get_node_guid(testbed_instance, guid)
108 interface_number = _get_dev_number(testbed_instance, guid)
109 element = testbed_instance._elements[guid]
110 filename = "trace-csma-node-%d-dev-%d.pcap" % (node_guid, interface_number)
111 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
112 helper = testbed_instance.ns3.CsmaHelper()
113 helper.EnablePcap(filepath, element, promiscuous = promisc,
114 explicitFilename = True)
116 def csmapcap_trace(testbed_instance, guid, trace_id):
118 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
120 def csmapcap_promisc_trace(testbed_instance, guid, trace_id):
122 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
124 def fdpcap_trace(testbed_instance, guid, trace_id):
125 node_guid = _get_node_guid(testbed_instance, guid)
126 interface_number = _get_dev_number(testbed_instance, guid)
127 element = testbed_instance._elements[guid]
128 filename = "trace-fd-node-%d-dev-%d.pcap" % (node_guid, interface_number)
129 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
130 helper = testbed_instance.ns3.FileDescriptorHelper()
131 helper.EnablePcap(filepath, element, explicitFilename = True)
133 def yanswifipcap_trace(testbed_instance, guid, trace_id):
134 dev_guid = testbed_instance.get_connected(guid, "dev", "phy")[0]
135 node_guid = _get_node_guid(testbed_instance, dev_guid)
136 interface_number = _get_dev_number(testbed_instance, dev_guid)
137 element = testbed_instance._elements[dev_guid]
138 filename = "trace-yanswifi-node-%d-dev-%d.pcap" % (node_guid, interface_number)
139 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
140 helper = testbed_instance.ns3.YansWifiPhyHelper()
141 helper.EnablePcap(filepath, element, explicitFilename = True)
143 def wimaxascii_trace(testbed_instance, guid, trace_id):
144 node_guid = _get_node_guid(testbed_instance, guid)
145 interface_number = _get_dev_number(testbed_instance, guid)
146 element = testbed_instance._elements[guid]
147 filename = "trace-wimax-node-%d-dev-%d.tr" % (node_guid, interface_number)
148 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
149 helper = testbed_instance.ns3.WimaxHelper()
150 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
151 stream = asciiHelper.CreateFileStream (filepath)
152 helper.EnableAscii(stream, element)
153 #helper.EnableLogComponents()
155 def wimaxpcap_trace(testbed_instance, guid, trace_id):
156 node_guid = _get_node_guid(testbed_instance, guid)
157 interface_number = _get_dev_number(testbed_instance, guid)
158 element = testbed_instance._elements[guid]
159 filename = "trace-wimax-node-%d-dev-%d.pcap" % (node_guid, interface_number)
160 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
161 helper = testbed_instance.ns3.WimaxHelper()
162 helper.EnablePcap(filepath, element, explicitFilename = True)
164 def rtt_trace(testbed_instance, guid, trace_id):
165 element = testbed_instance._elements[guid]
166 helper = testbed_instance.ns3.PlotHelper()
167 prefix = "trace-app-%d" % (guid, )
168 filename = helper.GetFilenameFromSource(prefix, element, trace_id)
169 filepath = _follow_trace(testbed_instance, guid, trace_id, filename)
170 prefix = filepath[:filepath.find(prefix)+len(prefix)]
171 helper.EnableTrace(element, trace_id, prefix, "T")
173 trace_functions = dict({
174 "P2PPcapTrace": p2ppcap_trace,
175 "P2PAsciiTrace": p2pascii_trace,
176 "CsmaPcapTrace": csmapcap_trace,
177 "CsmaPcapPromiscTrace": csmapcap_promisc_trace,
178 "FileDescriptorPcapTrace": fdpcap_trace,
179 "YansWifiPhyPcapTrace": yanswifipcap_trace,
180 "WimaxPcapTrace": wimaxpcap_trace,
181 "WimaxAsciiTrace": wimaxascii_trace,
185 ### Creation functions ###
187 def create_element(testbed_instance, guid):
188 element_factory = testbed_instance.ns3.ObjectFactory()
189 factory_id = testbed_instance._create[guid]
190 element_factory.SetTypeId(factory_id)
191 construct_parameters = testbed_instance._get_construct_parameters(guid)
192 for name, value in construct_parameters.iteritems():
193 ns3_value = testbed_instance._to_ns3_value(guid, name, value)
194 element_factory.Set(name, ns3_value)
195 element = element_factory.Create()
196 testbed_instance._elements[guid] = element
198 def create_node(testbed_instance, guid):
199 create_element(testbed_instance, guid)
200 element = testbed_instance._elements[guid]
201 element.AggregateObject(testbed_instance.ns3.PacketSocketFactory())
203 def create_wifi_standard_model(testbed_instance, guid):
204 create_element(testbed_instance, guid)
205 element = testbed_instance._elements[guid]
206 parameters = testbed_instance._get_parameters(guid)
207 standard = parameters.get("Standard")
209 raise RuntimeError("No wifi standard set for %d" % guid)
210 element.ConfigureStandard(wifi_standards[standard])
212 def create_waypoint_mobility(testbed_instance, guid):
213 create_element(testbed_instance, guid)
214 element = testbed_instance._elements[guid]
215 parameters = testbed_instance._get_parameters(guid)
216 ns3 = testbed_instance.ns3
217 waypoints = parameters.get("WaypointList", "")
218 waypoints = waypoints.replace(" ","")
219 for swp in waypoints.split(","):
223 pos = ns3.Vector(float(dwp[1]), float(dwp[2]), float(dwp[3]))
224 waypoint = ns3.Waypoint(time, pos)
225 element.AddWaypoint(waypoint)
227 def create_ipv4protocol(testbed_instance, guid):
228 create_element(testbed_instance, guid)
229 element = testbed_instance._elements[guid]
230 list_routing = testbed_instance.ns3.Ipv4ListRouting()
231 element.SetRoutingProtocol(list_routing)
232 static_routing = testbed_instance.ns3.Ipv4StaticRouting()
233 list_routing.AddRoutingProtocol(static_routing, 1)
235 def create_element_no_constructor(testbed_instance, guid):
236 """ Create function for ns3 classes for which
237 TypeId.HasConstructor == False"""
238 factory_id = testbed_instance._create[guid]
239 factory_name = factory_id.replace("ns3::", "")
240 constructor = getattr(testbed_instance.ns3, factory_name)
241 element = constructor()
242 testbed_instance._elements[guid] = element
244 def create_base_station(testbed_instance, guid):
245 node_guid = _get_node_guid(testbed_instance, guid)
246 node = testbed_instance._elements[node_guid]
247 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
248 if len(phy_guids) == 0:
249 raise RuntimeError("No PHY was found for station %d" % guid)
250 phy = testbed_instance._elements[phy_guids[0]]
251 uplnk_guids = testbed_instance.get_connected(guid, "uplnk", "dev")
252 if len(uplnk_guids) == 0:
253 raise RuntimeError("No uplink scheduler was found for station %d" % guid)
254 uplnk = testbed_instance._elements[uplnk_guids[0]]
255 dwnlnk_guids = testbed_instance.get_connected(guid, "dwnlnk", "dev")
256 if len(dwnlnk_guids) == 0:
257 raise RuntimeError("No downlink scheduler was found for station %d" % guid)
258 dwnlnk = testbed_instance._elements[dwnlnk_guids[0]]
259 element = testbed_instance.ns3.BaseStationNetDevice(node, phy, uplnk, dwnlnk)
260 testbed_instance._elements[guid] = element
262 def create_subscriber_station(testbed_instance, guid):
263 node_guid = _get_node_guid(testbed_instance, guid)
264 node = testbed_instance._elements[node_guid]
265 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
266 if len(phy_guids) == 0:
267 raise RuntimeError("No PHY was found for station %d" % guid)
268 phy = testbed_instance._elements[phy_guids[0]]
269 element = testbed_instance.ns3.SubscriberStationNetDevice(node, phy)
270 element.SetModulationType(testbed_instance.ns3.WimaxPhy.MODULATION_TYPE_QAM16_12)
271 testbed_instance._elements[guid] = element
273 def create_wimax_channel(testbed_instance, guid):
274 element = testbed_instance.ns3.SimpleOfdmWimaxChannel(testbed_instance.ns3.SimpleOfdmWimaxChannel.COST231_PROPAGATION)
275 testbed_instance._elements[guid] = element
277 def create_wimax_phy(testbed_instance, guid):
278 element = testbed_instance.ns3.SimpleOfdmWimaxPhy()
279 testbed_instance._elements[guid] = element
281 def create_service_flow(testbed_instance, guid):
282 parameters = testbed_instance._get_parameters(guid)
283 direction = parameters.get("Direction")
284 if direction == None:
285 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
286 sched = parameters.get("SchedulingType")
288 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
289 ServiceFlow = testbed_instance.ns3.ServiceFlow
290 direction = service_flow_direction[direction]
291 sched = service_flow_scheduling_type[sched]
292 element = ServiceFlow(direction)
293 element.SetCsSpecification(ServiceFlow.IPV4)
294 element.SetServiceSchedulingType(sched)
295 element.SetMaxSustainedTrafficRate(100)
296 element.SetMinReservedTrafficRate(1000000)
297 element.SetMinTolerableTrafficRate(1000000)
298 element.SetMaximumLatency(100)
299 element.SetMaxTrafficBurst(2000)
300 element.SetTrafficPriority(1)
301 element.SetUnsolicitedGrantInterval(1)
302 element.SetMaxSustainedTrafficRate(70)
303 element.SetToleratedJitter(10)
304 element.SetSduSize(49)
305 element.SetRequestTransmissionPolicy(0)
306 testbed_instance._elements[guid] = element
308 def create_ipcs_classifier_record(testbed_instance, guid):
309 parameters = testbed_instance._get_parameters(guid)
310 src_address = parameters.get("SrcAddress")
311 if src_address == None:
312 raise RuntimeError("No SrcAddress was found for classifier %d" % guid)
313 src_address = testbed_instance.ns3.Ipv4Address(src_address)
314 src_mask = parameters.get("SrcMask")
316 raise RuntimeError("No SrcMask was found for classifier %d" % guid)
317 src_mask = testbed_instance.ns3.Ipv4Mask(src_mask)
318 dst_address = parameters.get("DstAddress")
319 if dst_address == None:
320 raise RuntimeError("No Dstddress was found for classifier %d" % guid)
321 dst_address = testbed_instance.ns3.Ipv4Address(dst_address)
322 dst_mask = parameters.get("DstMask")
324 raise RuntimeError("No DstMask was found for classifier %d" % guid)
325 dst_mask = testbed_instance.ns3.Ipv4Mask(dst_mask)
326 src_port_low = parameters.get("SrcPortLow")
327 if src_port_low == None:
328 raise RuntimeError("No SrcPortLow was found for classifier %d" % guid)
329 src_port_high = parameters.get("SrcPortHigh")
330 if src_port_high == None:
331 raise RuntimeError("No SrcPortHigh was found for classifier %d" % guid)
332 dst_port_low = parameters.get("DstPortLow")
333 if dst_port_low == None:
334 raise RuntimeError("No DstPortLow was found for classifier %d" % guid)
335 dst_port_high = parameters.get("DstPortHigh")
336 if dst_port_high == None:
337 raise RuntimeError("No DstPortHigh was found for classifier %d" % guid)
338 protocol = parameters.get("Protocol")
339 if protocol == None or protocol not in l4_protocols:
340 raise RuntimeError("No Protocol was found for classifier %d" % guid)
341 priority = parameters.get("Priority")
343 raise RuntimeError("No Priority was found for classifier %d" % guid)
344 element = testbed_instance.ns3.IpcsClassifierRecord(src_address, src_mask,
345 dst_address, dst_mask, src_port_low, src_port_high, dst_port_low,
346 dst_port_high, l4_protocols[protocol], priority)
347 testbed_instance._elements[guid] = element
349 ### Start/Stop functions ###
351 def start_application(testbed_instance, guid):
352 element = testbed_instance.elements[guid]
353 # BUG: without doing this explicit call it doesn't start!!!
354 # Shouldn't be enough to set the StartTime?
357 def stop_application(testbed_instance, guid):
358 element = testbed_instance.elements[guid]
359 now = testbed_instance.ns3.Simulator.Now()
360 element.SetStopTime(now)
362 ### Status functions ###
364 def status_application(testbed_instance, guid):
365 if guid not in testbed_instance.elements.keys():
366 raise RuntimeError("Can't get status on guid %d" % guid )
367 now = testbed_instance.ns3.Simulator.Now()
369 return STATUS_NOT_STARTED
370 app = testbed_instance.elements[guid]
371 parameters = testbed_instance._get_parameters(guid)
372 start_value = parameters.get("StartTime")
373 if start_value != None:
374 start_time = testbed_instance.ns3.Time(start_value)
375 if now.Compare(start_time) < 0:
376 return STATUS_NOT_STARTED
377 stop_value = parameters.get("StopTime")
378 if stop_value != None:
379 stop_time = testbed_instance.ns3.Time(stop_value)
380 if now.Compare(stop_time) < 0:
381 return STATUS_RUNNING
383 return STATUS_FINISHED
384 return STATUS_UNDETERMINED
386 ### Configure functions ###
388 def configure_traces(testbed_instance, guid):
389 traces = testbed_instance._get_traces(guid)
390 for trace_id in traces:
391 trace_func = trace_functions[trace_id]
392 trace_func(testbed_instance, guid, trace_id)
394 def configure_element(testbed_instance, guid):
395 configure_traces(testbed_instance, guid)
397 def configure_device(testbed_instance, guid):
398 configure_traces(testbed_instance, guid)
400 element = testbed_instance._elements[guid]
402 parameters = testbed_instance._get_parameters(guid)
403 address = parameters.get("macAddress")
405 macaddr = testbed_instance.ns3.Mac48Address(address)
407 macaddr = testbed_instance.ns3.Mac48Address.Allocate()
408 element.SetAddress(macaddr)
410 if not guid in testbed_instance._add_address:
412 # search for the node asociated with the device
413 node_guid = _get_node_guid(testbed_instance, guid)
414 node = testbed_instance.elements[node_guid]
415 # search for the Ipv4L3Protocol asociated with the device
416 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, node_guid)
417 ipv4 = testbed_instance._elements[ipv4_guid]
418 ns3 = testbed_instance.ns3
420 addresses = testbed_instance._add_address[guid]
421 for address in addresses:
422 (address, netprefix, broadcast) = address
423 # TODO: missing IPV6 addresses!!
424 ifindex = ipv4.AddInterface(element)
425 inaddr = ns3.Ipv4InterfaceAddress(ns3.Ipv4Address(address),
426 ns3.Ipv4Mask("/%d" % netprefix))
427 ipv4.AddAddress(ifindex, inaddr)
428 ipv4.SetMetric(ifindex, 1)
431 def _add_static_route(ns3, static_routing,
432 address, netprefix, nexthop_address, ifindex):
434 # Default route: 0.0.0.0/0
435 static_routing.SetDefaultRoute(nexthop_address, ifindex)
436 elif netprefix == 32:
437 # Host route: x.y.z.w/32
438 static_routing.AddHostRouteTo(address, nexthop_address, ifindex)
440 # Network route: x.y.z.w/n
441 mask = ns3.Ipv4Mask("/%d" % netprefix)
442 static_routing.AddNetworkRouteTo(address, mask, nexthop_address,
445 def _add_static_route_if(ns3, static_routing, address, netprefix, ifindex):
447 # Default route: 0.0.0.0/0
448 static_routing.SetDefaultRoute(ifindex)
449 elif netprefix == 32:
450 # Host route: x.y.z.w/32
451 static_routing.AddHostRouteTo(address, ifindex)
453 # Network route: x.y.z.w/n
454 mask = ns3.Ipv4Mask("/%d" % netprefix)
455 static_routing.AddNetworkRouteTo(address, mask, ifindex)
457 def configure_node(testbed_instance, guid):
458 configure_traces(testbed_instance, guid)
460 element = testbed_instance._elements[guid]
461 if not guid in testbed_instance._add_route:
463 # search for the Ipv4L3Protocol asociated with the device
464 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, guid)
465 ipv4 = testbed_instance._elements[ipv4_guid]
466 list_routing = ipv4.GetRoutingProtocol()
467 (static_routing, priority) = list_routing.GetRoutingProtocol(0)
468 ns3 = testbed_instance.ns3
469 routes = testbed_instance._add_route[guid]
471 (destination, netprefix, nexthop) = route
472 address = ns3.Ipv4Address(destination)
474 nexthop_address = ns3.Ipv4Address(nexthop)
476 # TODO: HACKISH way of getting the ifindex... improve this
477 nifaces = ipv4.GetNInterfaces()
478 for ifidx in xrange(nifaces):
479 iface = ipv4.GetInterface(ifidx)
480 naddress = iface.GetNAddresses()
481 for addridx in xrange(naddress):
482 ifaddr = iface.GetAddress(addridx)
483 ifmask = ifaddr.GetMask()
484 ifindex = ipv4.GetInterfaceForPrefix(nexthop_address, ifmask)
488 # Check previous ptp routes
489 for chaindest, chainprefix, chainhop in routes:
490 if chaindest == nexthop and chainprefix == 32:
491 chainhop_address = ns3.Ipv4Address(chainhop)
492 for ifidx in xrange(nifaces):
493 iface = ipv4.GetInterface(ifidx)
494 naddress = iface.GetNAddresses()
495 for addridx in xrange(naddress):
496 ifaddr = iface.GetAddress(addridx)
497 ifmask = ifaddr.GetMask()
498 ifindex = ipv4.GetInterfaceForPrefix(chainhop_address, ifmask)
502 raise RuntimeError, "Cannot associate interface for routing entry:" \
503 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
504 _add_static_route(ns3, static_routing,
505 address, netprefix, nexthop_address, ifindex)
507 mask = ns3.Ipv4Mask("/%d" % netprefix)
508 ifindex = ipv4.GetInterfaceForPrefix(address, mask)
510 raise RuntimeError, "Cannot associate interface for routing entry:" \
511 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
512 _add_static_route_if(ns3, static_routing,
513 address, netprefix, nexthop_address, ifindex)
515 def configure_station(testbed_instance, guid):
516 configure_device(testbed_instance, guid)
517 element = testbed_instance._elements[guid]
522 factories_order = ["ns3::BasicEnergySource",
523 "ns3::WifiRadioEnergyModel",
524 "ns3::BSSchedulerRtps",
525 "ns3::BSSchedulerSimple",
526 "ns3::UdpTraceClient",
532 "ns3::flame::FlameProtocol",
533 "ns3::flame::FlameRtable",
534 "ns3::dot11s::AirtimeLinkMetricCalculator",
535 "ns3::dot11s::HwmpProtocol",
536 "ns3::dot11s::HwmpRtable",
537 "ns3::dot11s::PeerManagementProtocol",
538 "ns3::dot11s::PeerLink",
539 "ns3::MeshWifiInterfaceMac",
540 "ns3::MeshPointDevice",
543 "ns3::UanPhyCalcSinrDual",
544 "ns3::UanPhyPerGenDefault",
546 "ns3::UanPropModelThorp",
548 "ns3::UanNoiseModelDefault",
550 "ns3::UanPropModelIdeal",
551 "ns3::UanTransducerHd",
552 "ns3::UanPhyCalcSinrDefault",
554 "ns3::UanPhyCalcSinrFhFsk",
555 "ns3::UanPhyPerUmodem",
558 "ns3::AthstatsWifiTraceSink",
561 "ns3::NonCommunicatingNetDevice",
562 "ns3::HalfDuplexIdealPhy",
563 "ns3::AlohaNoackNetDevice",
564 "ns3::SpectrumAnalyzer",
565 "ns3::WaveformGenerator",
566 "ns3::MultiModelSpectrumChannel",
567 "ns3::SingleModelSpectrumChannel",
568 "ns3::MsduStandardAggregator",
572 "ns3::QadhocWifiMac",
573 "ns3::MinstrelWifiManager",
574 "ns3::CaraWifiManager",
575 "ns3::AarfcdWifiManager",
576 "ns3::OnoeWifiManager",
577 "ns3::AmrrWifiManager",
578 "ns3::ConstantRateWifiManager",
579 "ns3::IdealWifiManager",
580 "ns3::AarfWifiManager",
581 "ns3::ArfWifiManager",
582 "ns3::WifiNetDevice",
588 "ns3::YansWifiChannel",
590 "ns3::NistErrorRateModel",
591 "ns3::YansErrorRateModel",
592 "ns3::WaypointMobilityModel",
593 "ns3::ConstantAccelerationMobilityModel",
594 "ns3::RandomDirection2dMobilityModel",
595 "ns3::RandomWalk2dMobilityModel",
596 "ns3::SteadyStateRandomWaypointMobilityModel",
597 "ns3::RandomWaypointMobilityModel",
598 "ns3::GaussMarkovMobilityModel",
599 "ns3::ConstantVelocityMobilityModel",
600 "ns3::ConstantPositionMobilityModel",
601 "ns3::ListPositionAllocator",
602 "ns3::GridPositionAllocator",
603 "ns3::RandomRectanglePositionAllocator",
604 "ns3::RandomBoxPositionAllocator",
605 "ns3::RandomDiscPositionAllocator",
606 "ns3::UniformDiscPositionAllocator",
607 "ns3::HierarchicalMobilityModel",
608 "ns3::aodv::RoutingProtocol",
609 "ns3::UdpEchoServer",
610 "ns3::UdpEchoClient",
612 "ns3::OnOffApplication",
613 "ns3::VirtualNetDevice",
614 "ns3::FileDescriptorNetDevice",
615 "ns3::Nepi::TunChannel",
617 "ns3::BridgeChannel",
618 "ns3::BridgeNetDevice",
621 "ns3::CsmaNetDevice",
622 "ns3::PointToPointRemoteChannel",
623 "ns3::PointToPointChannel",
624 "ns3::PointToPointNetDevice",
625 "ns3::NscTcpL4Protocol",
626 "ns3::Icmpv6L4Protocol",
627 "ns3::Ipv6OptionPad1",
628 "ns3::Ipv6OptionPadn",
629 "ns3::Ipv6OptionJumbogram",
630 "ns3::Ipv6OptionRouterAlert",
631 "ns3::Ipv6ExtensionHopByHop",
632 "ns3::Ipv6ExtensionDestination",
633 "ns3::Ipv6ExtensionFragment",
634 "ns3::Ipv6ExtensionRouting",
635 "ns3::Ipv6ExtensionLooseRouting",
636 "ns3::Ipv6ExtensionESP",
637 "ns3::Ipv6ExtensionAH",
638 "ns3::Ipv6L3Protocol",
639 "ns3::LoopbackNetDevice",
640 "ns3::Icmpv4L4Protocol",
641 "ns3::RttMeanDeviation",
642 "ns3::ArpL3Protocol",
643 "ns3::TcpL4Protocol",
644 "ns3::UdpL4Protocol",
645 "ns3::Ipv4L3Protocol",
646 "ns3::SimpleNetDevice",
647 "ns3::SimpleChannel",
649 "ns3::DropTailQueue",
651 "ns3::FriisSpectrumPropagationLossModel",
652 "ns3::Cost231PropagationLossModel",
653 "ns3::JakesPropagationLossModel",
654 "ns3::RandomPropagationLossModel",
655 "ns3::FriisPropagationLossModel",
656 "ns3::TwoRayGroundPropagationLossModel",
657 "ns3::LogDistancePropagationLossModel",
658 "ns3::ThreeLogDistancePropagationLossModel",
659 "ns3::NakagamiPropagationLossModel",
660 "ns3::FixedRssLossModel",
661 "ns3::MatrixPropagationLossModel",
662 "ns3::RangePropagationLossModel",
663 "ns3::RandomPropagationDelayModel",
664 "ns3::ConstantSpeedPropagationDelayModel",
665 "ns3::RateErrorModel",
666 "ns3::ListErrorModel",
667 "ns3::ReceiveListErrorModel",
669 "ns3::EnergySourceContainer",
670 "ns3::BSSchedulerRtps",
671 "ns3::BSSchedulerSimple",
672 "ns3::SimpleOfdmWimaxChannel",
673 "ns3::SimpleOfdmWimaxPhy",
674 "ns3::UplinkSchedulerMBQoS",
675 "ns3::UplinkSchedulerRtps",
676 "ns3::UplinkSchedulerSimple",
677 "ns3::IpcsClassifierRecord",
679 "ns3::BaseStationNetDevice",
680 "ns3::SubscriberStationNetDevice",
683 factories_info = dict({
685 "category": "Application",
686 "create_function": create_element,
687 "configure_function": configure_element,
689 "connector_types": [],
690 "stop_function": stop_application,
691 "start_function": start_application,
692 "status_function": status_application,
693 "box_attributes": ["MaxPackets",
701 "ns3::UdpL4Protocol": dict({
702 "category": "Protocol",
703 "create_function": create_element,
704 "configure_function": configure_element,
706 "connector_types": ["node"],
707 "box_attributes": ["ProtocolNumber"],
709 "ns3::RandomDiscPositionAllocator": dict({
710 "category": "Mobility",
711 "create_function": create_element,
712 "configure_function": configure_element,
714 "connector_types": [],
715 "box_attributes": ["Theta",
719 "tags": [tags.MOBILE],
723 "create_function": create_node,
724 "configure_function": configure_node,
726 "connector_types": ["devs", "apps", "protos", "mobility"],
727 "allow_routes": True,
728 "box_attributes": [],
730 "ns3::GridPositionAllocator": dict({
731 "category": "Mobility",
732 "create_function": create_element,
733 "configure_function": configure_element,
735 "connector_types": [],
736 "box_attributes": ["GridWidth",
742 "tags": [tags.MOBILE],
744 "ns3::TapBridge": dict({
745 "category": "Device",
746 "create_function": create_element,
747 "configure_function": configure_element,
749 "connector_types": [],
750 "allow_addresses": True,
751 "box_attributes": ["Mtu",
760 "ns3::FlowMonitor": dict({
762 "create_function": create_element,
763 "configure_function": configure_element,
765 "connector_types": [],
766 "box_attributes": ["MaxPerHopDelay",
769 "PacketSizeBinWidth",
770 "FlowInterruptionsBinWidth",
771 "FlowInterruptionsMinTime"],
773 "ns3::ConstantVelocityMobilityModel": dict({
774 "category": "Mobility",
775 "create_function": create_element,
776 "configure_function": configure_element,
778 "connector_types": ["node"],
779 "box_attributes": ["Position",
781 "tags": [tags.MOBILE],
783 "ns3::V4Ping": dict({
784 "category": "Application",
785 "create_function": create_element,
786 "configure_function": configure_element,
788 "connector_types": ["node"],
789 "stop_function": stop_application,
790 "start_function": start_application,
791 "status_function": status_application,
792 "box_attributes": ["Remote",
800 "ns3::dot11s::PeerLink": dict({
802 "create_function": create_element,
803 "configure_function": configure_element,
805 "connector_types": [],
806 "box_attributes": ["RetryTimeout",
813 "ns3::PointToPointNetDevice": dict({
814 "category": "Device",
815 "create_function": create_element,
816 "configure_function": configure_device,
818 "connector_types": ["node", "err", "queue", "chan"],
819 "allow_addresses": True,
820 "box_attributes": ["Mtu",
824 "traces": ["p2ppcap", "p2pascii"]
826 "ns3::NakagamiPropagationLossModel": dict({
828 "create_function": create_element,
829 "configure_function": configure_element,
831 "connector_types": [],
832 "box_attributes": ["Distance1",
838 "ns3::AarfWifiManager": dict({
839 "category": "Manager",
840 "create_function": create_element,
841 "configure_function": configure_element,
843 "connector_types": [],
844 "box_attributes": ["SuccessK",
846 "MaxSuccessThreshold",
848 "MinSuccessThreshold",
853 "FragmentationThreshold",
856 "ns3::Ipv6OptionJumbogram": dict({
858 "create_function": create_element,
859 "configure_function": configure_element,
861 "connector_types": [],
862 "box_attributes": ["OptionNumber"],
864 "ns3::TwoRayGroundPropagationLossModel": dict({
866 "create_function": create_element,
867 "configure_function": configure_element,
869 "connector_types": [],
870 "box_attributes": ["Lambda",
875 "ns3::OnOffApplication": dict({
876 "category": "Application",
877 "create_function": create_element,
878 "configure_function": configure_element,
880 "connector_types": ["node"],
881 "stop_function": stop_application,
882 "start_function": start_application,
883 "status_function": status_application,
884 "box_attributes": ["DataRate",
894 "ns3::AdhocWifiMac": dict({
896 "create_function": create_element,
897 "configure_function": configure_element,
899 "connector_types": [],
900 "box_attributes": ["CtsTimeout",
902 "BasicBlockAckTimeout",
903 "CompressedBlockAckTimeout",
908 "MaxPropagationDelay",
911 "ns3::ConstantAccelerationMobilityModel": dict({
912 "category": "Mobility",
913 "create_function": create_element,
914 "configure_function": configure_element,
916 "connector_types": ["node"],
917 "box_attributes": ["Position",
919 "tags": [tags.MOBILE],
921 "ns3::GaussMarkovMobilityModel": dict({
922 "category": "Mobility",
923 "create_function": create_element,
924 "configure_function": configure_element,
926 "connector_types": [],
927 "box_attributes": ["Bounds",
938 "tags": [tags.MOBILE],
940 "ns3::dot11s::HwmpProtocol": dict({
941 "category": "Protocol",
942 "create_function": create_element,
943 "configure_function": configure_element,
945 "connector_types": [],
946 "box_attributes": ["RandomStart",
948 "Dot11MeshHWMPmaxPREQretries",
949 "Dot11MeshHWMPnetDiameterTraversalTime",
950 "Dot11MeshHWMPpreqMinInterval",
951 "Dot11MeshHWMPperrMinInterval",
952 "Dot11MeshHWMPactiveRootTimeout",
953 "Dot11MeshHWMPactivePathTimeout",
954 "Dot11MeshHWMPpathToRootInterval",
955 "Dot11MeshHWMPrannInterval",
957 "UnicastPerrThreshold",
958 "UnicastPreqThreshold",
959 "UnicastDataThreshold",
963 "ns3::NscTcpL4Protocol": dict({
964 "category": "Protocol",
965 "create_function": create_element,
966 "configure_function": configure_element,
968 "connector_types": [],
969 "box_attributes": ["Library",
972 "ns3::dot11s::AirtimeLinkMetricCalculator": dict({
974 "create_function": create_element,
975 "configure_function": configure_element,
977 "connector_types": [],
978 "box_attributes": ["Dot11sMeshHeaderLength"],
980 "ns3::UanMacCw": dict({
982 "create_function": create_element,
983 "configure_function": configure_element,
985 "connector_types": [],
986 "box_attributes": ["CW",
989 "ns3::AthstatsWifiTraceSink": dict({
991 "create_function": create_element,
992 "configure_function": configure_element,
994 "connector_types": [],
995 "box_attributes": ["Interval"],
997 "ns3::FlameStack": dict({
999 "create_function": create_element,
1000 "configure_function": configure_element,
1002 "connector_types": [],
1003 "box_attributes": [],
1005 "ns3::UanMacRc": dict({
1007 "create_function": create_element,
1008 "configure_function": configure_element,
1010 "connector_types": [],
1011 "box_attributes": ["RetryRate",
1018 "NumberOfRetryRates",
1021 "ns3::WaypointMobilityModel": dict({
1022 "category": "Mobility",
1023 "create_function": create_waypoint_mobility,
1024 "configure_function": configure_element,
1025 "help": "Waypoint-based mobility model.",
1026 "connector_types": ["node"],
1027 "box_attributes": ["WaypointsLeft",
1031 "tags": [tags.MOBILE],
1033 "ns3::FileDescriptorNetDevice": dict({
1034 "category": "Device",
1035 "create_function": create_element,
1036 "configure_function": configure_device,
1037 "help": "Network interface associated to a file descriptor",
1038 "connector_types": ["node", "->fd"],
1039 "allow_addresses": True,
1040 "box_attributes": ["Address",
1041 "LinuxSocketAddress",
1042 "tun_proto", "tun_addr", "tun_port", "tun_key"],
1043 "traces": ["fdpcap"]
1045 "ns3::Nepi::TunChannel": dict({
1046 "category": "Channel",
1047 "create_function": create_tunchannel,
1048 "preconfigure_function": preconfigure_tunchannel,
1049 "configure_function": postconfigure_tunchannel,
1050 "start_function": wait_tunchannel,
1051 "help": "Channel to forward FileDescriptorNetDevice data to "
1052 "other TAP interfaces supporting the NEPI tunneling protocol.",
1053 "connector_types": ["fd->", "udp", "tcp"],
1054 "allow_addresses": False,
1055 "box_attributes": ["tun_proto", "tun_addr", "tun_port", "tun_key"]
1057 "ns3::CsmaNetDevice": dict({
1058 "category": "Device",
1059 "create_function": create_element,
1060 "configure_function": configure_device,
1061 "help": "CSMA (carrier sense, multiple access) interface",
1062 "connector_types": ["node", "chan", "err", "queue"],
1063 "allow_addresses": True,
1064 "box_attributes": ["Address",
1068 "traces": ["csmapcap", "csmapcap_promisc"]
1070 "ns3::UanPropModelThorp": dict({
1072 "create_function": create_element,
1073 "configure_function": configure_element,
1075 "connector_types": [],
1076 "box_attributes": ["SpreadCoef"],
1078 "ns3::NqstaWifiMac": dict({
1080 "create_function": create_wifi_standard_model,
1081 "configure_function": configure_element,
1083 "connector_types": ["dev"],
1084 "box_attributes": ["ProbeRequestTimeout",
1085 "AssocRequestTimeout",
1089 "BasicBlockAckTimeout",
1090 "CompressedBlockAckTimeout",
1095 "MaxPropagationDelay",
1098 "ns3::Icmpv6L4Protocol": dict({
1099 "category": "Protocol",
1100 "create_function": create_element,
1101 "configure_function": configure_element,
1103 "connector_types": ["node"],
1104 "box_attributes": ["DAD",
1107 "ns3::SimpleNetDevice": dict({
1108 "category": "Device",
1109 "create_function": create_element,
1110 "configure_function": configure_element,
1112 "connector_types": ["node", "chan"],
1113 "allow_addresses": True,
1114 "box_attributes": [],
1116 "ns3::FriisPropagationLossModel": dict({
1118 "create_function": create_element,
1119 "configure_function": configure_element,
1121 "connector_types": [],
1122 "box_attributes": ["Lambda",
1126 "ns3::Ipv6OptionRouterAlert": dict({
1128 "create_function": create_element,
1129 "configure_function": configure_element,
1131 "connector_types": [],
1132 "box_attributes": ["OptionNumber"],
1134 "ns3::UniformDiscPositionAllocator": dict({
1135 "category": "Mobility",
1136 "create_function": create_element,
1137 "configure_function": configure_element,
1139 "connector_types": [],
1140 "box_attributes": ["rho",
1143 "tags": [tags.MOBILE],
1145 "ns3::RandomBoxPositionAllocator": dict({
1146 "category": "Mobility",
1147 "create_function": create_element,
1148 "configure_function": configure_element,
1150 "connector_types": [],
1151 "box_attributes": ["X",
1154 "tags": [tags.MOBILE],
1156 "ns3::Ipv6ExtensionDestination": dict({
1158 "create_function": create_element,
1159 "configure_function": configure_element,
1161 "connector_types": [],
1162 "box_attributes": ["ExtensionNumber"],
1164 "ns3::LoopbackNetDevice": dict({
1165 "category": "Device",
1166 "create_function": create_element,
1167 "configure_function": configure_element,
1169 "connector_types": [],
1170 "box_attributes": [],
1172 "ns3::ConstantSpeedPropagationDelayModel": dict({
1173 "category": "Delay",
1174 "create_function": create_element,
1175 "configure_function": configure_element,
1177 "connector_types": ["chan"],
1178 "box_attributes": ["Speed"],
1180 "ns3::Ipv6ExtensionHopByHop": dict({
1182 "create_function": create_element,
1183 "configure_function": configure_element,
1185 "connector_types": [],
1186 "box_attributes": ["ExtensionNumber"],
1188 "ns3::BridgeChannel": dict({
1189 "category": "Channel",
1190 "create_function": create_element,
1191 "configure_function": configure_element,
1193 "connector_types": [],
1194 "box_attributes": [],
1196 "ns3::Radvd": dict({
1198 "create_function": create_element,
1199 "configure_function": configure_element,
1201 "connector_types": [],
1202 "box_attributes": ["StartTime",
1205 "ns3::PacketSocket": dict({
1207 "create_function": create_element,
1208 "configure_function": configure_element,
1210 "connector_types": [],
1211 "box_attributes": ["RcvBufSize"],
1213 "ns3::flame::FlameProtocol": dict({
1214 "category": "Protocol",
1215 "create_function": create_element,
1216 "configure_function": configure_element,
1218 "connector_types": [],
1219 "box_attributes": ["BroadcastInterval",
1222 "ns3::Cost231PropagationLossModel": dict({
1224 "create_function": create_element,
1225 "configure_function": configure_element,
1227 "connector_types": [],
1228 "box_attributes": ["Lambda",
1234 "ns3::Ipv6ExtensionESP": dict({
1236 "create_function": create_element,
1237 "configure_function": configure_element,
1239 "connector_types": [],
1240 "box_attributes": ["ExtensionNumber"],
1242 "ns3::CaraWifiManager": dict({
1243 "category": "Manager",
1244 "create_function": create_element,
1245 "configure_function": configure_element,
1247 "connector_types": [],
1248 "box_attributes": ["ProbeThreshold",
1256 "FragmentationThreshold",
1260 "ns3::RttMeanDeviation": dict({
1262 "create_function": create_element,
1263 "configure_function": configure_element,
1265 "connector_types": [],
1266 "box_attributes": ["Gain",
1268 "InitialEstimation",
1271 "ns3::Icmpv4L4Protocol": dict({
1272 "category": "Protocol",
1273 "create_function": create_element,
1274 "configure_function": configure_element,
1276 "connector_types": ["node"],
1277 "box_attributes": ["ProtocolNumber"],
1279 "ns3::WaveformGenerator": dict({
1281 "create_function": create_element,
1282 "configure_function": configure_element,
1284 "connector_types": [],
1285 "box_attributes": ["Period",
1288 "ns3::YansWifiChannel": dict({
1289 "category": "Channel",
1290 "create_function": create_element,
1291 "configure_function": configure_element,
1293 "connector_types": ["phys", "delay", "loss"],
1294 "box_attributes": [],
1296 "ns3::SimpleChannel": dict({
1297 "category": "Channel",
1298 "create_function": create_element,
1299 "configure_function": configure_element,
1301 "connector_types": ["devs"],
1302 "box_attributes": [],
1304 "ns3::Ipv6ExtensionFragment": dict({
1306 "create_function": create_element,
1307 "configure_function": configure_element,
1309 "connector_types": [],
1310 "box_attributes": ["ExtensionNumber"],
1312 "ns3::Dot11sStack": dict({
1314 "create_function": create_element,
1315 "configure_function": configure_element,
1317 "connector_types": [],
1318 "box_attributes": ["Root"],
1320 "ns3::FriisSpectrumPropagationLossModel": dict({
1322 "create_function": create_element,
1323 "configure_function": configure_element,
1325 "connector_types": [],
1326 "box_attributes": [],
1328 "ns3::RandomRectanglePositionAllocator": dict({
1329 "category": "Mobility",
1330 "create_function": create_element,
1331 "configure_function": configure_element,
1333 "connector_types": [],
1334 "box_attributes": ["X",
1336 "tags": [tags.MOBILE],
1338 "ns3::NqapWifiMac": dict({
1340 "create_function": create_wifi_standard_model,
1341 "configure_function": configure_element,
1343 "connector_types": ["dev"],
1344 "box_attributes": ["BeaconInterval",
1348 "BasicBlockAckTimeout",
1349 "CompressedBlockAckTimeout",
1354 "MaxPropagationDelay",
1357 "ns3::HierarchicalMobilityModel": dict({
1358 "category": "Mobility",
1359 "create_function": create_element,
1360 "configure_function": configure_element,
1362 "connector_types": ["node"],
1363 "box_attributes": ["Position",
1365 "tags": [tags.MOBILE],
1367 "ns3::ThreeLogDistancePropagationLossModel": dict({
1369 "create_function": create_element,
1370 "configure_function": configure_element,
1372 "connector_types": [],
1373 "box_attributes": ["Distance0",
1381 "ns3::UanNoiseModelDefault": dict({
1383 "create_function": create_element,
1384 "configure_function": configure_element,
1386 "connector_types": [],
1387 "box_attributes": ["Wind",
1390 "ns3::dot11s::HwmpRtable": dict({
1392 "create_function": create_element,
1393 "configure_function": configure_element,
1395 "connector_types": [],
1396 "box_attributes": [],
1398 "ns3::PacketBurst": dict({
1400 "create_function": create_element,
1401 "configure_function": configure_element,
1403 "connector_types": [],
1404 "box_attributes": [],
1406 "ns3::RandomPropagationDelayModel": dict({
1407 "category": "Delay",
1408 "create_function": create_element,
1409 "configure_function": configure_element,
1411 "connector_types": [],
1412 "box_attributes": ["Variable"],
1414 "ns3::ArpL3Protocol": dict({
1415 "category": "Protocol",
1416 "create_function": create_element,
1417 "configure_function": configure_element,
1419 "connector_types": ["node"],
1420 "box_attributes": [],
1422 "ns3::SteadyStateRandomWaypointMobilityModel": dict({
1423 "category": "Mobility",
1424 "create_function": create_element,
1425 "configure_function": configure_element,
1427 "connector_types": [],
1428 "box_attributes": ["MinSpeed",
1438 "tags": [tags.MOBILE],
1440 "ns3::BaseStationNetDevice": dict({
1441 "category": "Device",
1442 "create_function": create_base_station,
1443 "configure_function": configure_station,
1444 "help": "Base station for wireless mobile network",
1445 "connector_types": ["node", "chan", "phy", "uplnk", "dwnlnk"],
1446 "allow_addresses": True,
1447 "box_attributes": ["InitialRangInterval",
1453 "MaxRangCorrectionRetries",
1457 "traces": ["wimaxpcap", "wimaxascii"],
1459 "ns3::UdpServer": dict({
1460 "category": "Application",
1461 "create_function": create_element,
1462 "configure_function": configure_element,
1464 "connector_types": ["node"],
1465 "stop_function": stop_application,
1466 "start_function": start_application,
1467 "status_function": status_application,
1468 "box_attributes": ["Port",
1473 "ns3::AarfcdWifiManager": dict({
1474 "category": "Manager",
1475 "create_function": create_element,
1476 "configure_function": configure_element,
1478 "connector_types": [],
1479 "box_attributes": ["SuccessK",
1481 "MaxSuccessThreshold",
1482 "MinTimerThreshold",
1483 "MinSuccessThreshold",
1486 "TurnOffRtsAfterRateDecrease",
1487 "TurnOnRtsAfterRateIncrease",
1492 "FragmentationThreshold",
1495 "ns3::UanTransducerHd": dict({
1497 "create_function": create_element,
1498 "configure_function": configure_element,
1500 "connector_types": [],
1501 "box_attributes": [],
1503 "ns3::LogDistancePropagationLossModel": dict({
1505 "create_function": create_element,
1506 "configure_function": configure_element,
1508 "connector_types": ["prev", "next"],
1509 "box_attributes": ["Exponent",
1510 "ReferenceDistance",
1513 "ns3::EmuNetDevice": dict({
1514 "category": "Device",
1515 "create_function": create_element,
1516 "configure_function": configure_element,
1518 "connector_types": ["node", "queue"],
1519 "box_attributes": ["Mtu",
1526 "ns3::Ipv6ExtensionLooseRouting": dict({
1527 "category": "Routing",
1528 "create_function": create_element,
1529 "configure_function": configure_element,
1531 "connector_types": [],
1532 "box_attributes": ["ExtensionNumber"],
1534 "ns3::RandomWaypointMobilityModel": dict({
1535 "category": "Mobility",
1536 "create_function": create_element,
1537 "configure_function": configure_element,
1539 "connector_types": ["node"],
1540 "box_attributes": ["Speed",
1544 "tags": [tags.MOBILE],
1546 "ns3::RangePropagationLossModel": dict({
1548 "create_function": create_element,
1549 "configure_function": configure_element,
1551 "connector_types": [],
1552 "box_attributes": ["MaxRange"],
1554 "ns3::AlohaNoackNetDevice": dict({
1555 "category": "Device",
1556 "create_function": create_element,
1557 "configure_function": configure_element,
1559 "connector_types": [],
1560 "box_attributes": ["Address",
1563 "ns3::MatrixPropagationLossModel": dict({
1565 "create_function": create_element,
1566 "configure_function": configure_element,
1568 "connector_types": [],
1569 "box_attributes": ["DefaultLoss"],
1571 "ns3::WifiNetDevice": dict({
1572 "category": "Device",
1573 "create_function": create_element,
1574 "configure_function": configure_device,
1576 "connector_types": ["node", "mac", "phy", "manager"],
1577 "allow_addresses": True,
1578 "box_attributes": ["Mtu"],
1580 "ns3::CsmaChannel": dict({
1581 "category": "Channel",
1582 "create_function": create_element,
1583 "configure_function": configure_element,
1585 "connector_types": ["devs"],
1586 "box_attributes": ["DataRate",
1589 "ns3::BridgeNetDevice": dict({
1590 "category": "Device",
1591 "create_function": create_element,
1592 "configure_function": configure_element,
1594 "connector_types": ["node"],
1595 "allow_addresses": True,
1596 "box_attributes": ["Mtu",
1600 "ns3::Ipv6ExtensionRouting": dict({
1601 "category": "Routing",
1602 "create_function": create_element,
1603 "configure_function": configure_element,
1605 "connector_types": [],
1606 "box_attributes": ["ExtensionNumber"],
1608 "ns3::QstaWifiMac": dict({
1610 "create_function": create_wifi_standard_model,
1611 "configure_function": configure_element,
1612 "help": "Station Wifi MAC Model",
1613 "connector_types": ["dev"],
1614 "box_attributes": ["ProbeRequestTimeout",
1615 "AssocRequestTimeout",
1619 "BasicBlockAckTimeout",
1620 "CompressedBlockAckTimeout",
1625 "MaxPropagationDelay",
1629 "ns3::UdpEchoClient": dict({
1630 "category": "Application",
1631 "create_function": create_element,
1632 "configure_function": configure_element,
1634 "connector_types": ["node"],
1635 "stop_function": stop_application,
1636 "start_function": start_application,
1637 "status_function": status_application,
1638 "box_attributes": ["MaxPackets",
1646 "ns3::UdpClient": dict({
1647 "category": "Application",
1648 "create_function": create_element,
1649 "configure_function": configure_element,
1651 "connector_types": ["node"],
1652 "stop_function": stop_application,
1653 "start_function": start_application,
1654 "status_function": status_application,
1655 "box_attributes": ["MaxPackets",
1663 "ns3::PointToPointChannel": dict({
1664 "category": "Channel",
1665 "create_function": create_element,
1666 "configure_function": configure_element,
1668 "connector_types": ["dev2"],
1669 "box_attributes": ["Delay"],
1671 "ns3::Ipv6StaticRouting": dict({
1672 "category": "Routing",
1673 "create_function": create_element,
1674 "configure_function": configure_element,
1676 "connector_types": [],
1677 "box_attributes": [],
1679 "ns3::DropTailQueue": dict({
1680 "category": "Queue",
1681 "create_function": create_element,
1682 "configure_function": configure_element,
1684 "connector_types": ["dev"],
1685 "box_attributes": ["MaxPackets",
1688 "ns3::ConstantPositionMobilityModel": dict({
1689 "category": "Mobility",
1690 "create_function": create_element,
1691 "configure_function": configure_element,
1693 "connector_types": ["node"],
1694 "box_attributes": ["Position",
1696 "tags": [tags.MOBILE],
1698 "ns3::FixedRssLossModel": dict({
1700 "create_function": create_element,
1701 "configure_function": configure_element,
1703 "connector_types": [],
1704 "box_attributes": ["Rss"],
1706 "ns3::EnergySourceContainer": dict({
1707 "category": "Energy",
1708 "create_function": create_element,
1709 "configure_function": configure_element,
1711 "connector_types": [],
1712 "box_attributes": [],
1714 "ns3::RandomWalk2dMobilityModel": dict({
1715 "category": "Mobility",
1716 "create_function": create_element,
1717 "configure_function": configure_element,
1719 "connector_types": ["node"],
1720 "box_attributes": ["Bounds",
1728 "tags": [tags.MOBILE],
1730 "ns3::ListPositionAllocator": dict({
1732 "create_function": create_element,
1733 "configure_function": configure_element,
1735 "connector_types": [],
1736 "box_attributes": [],
1738 "ns3::dot11s::PeerManagementProtocol": dict({
1739 "category": "Protocol",
1740 "create_function": create_element,
1741 "configure_function": configure_element,
1743 "connector_types": [],
1744 "box_attributes": ["MaxNumberOfPeerLinks",
1745 "MaxBeaconShiftValue",
1746 "EnableBeaconCollisionAvoidance"],
1748 "ns3::MeshPointDevice": dict({
1749 "category": "Device",
1750 "create_function": create_element,
1751 "configure_function": configure_element,
1753 "connector_types": [],
1754 "allow_addresses": True,
1755 "box_attributes": ["Mtu"],
1757 "ns3::BasicEnergySource": dict({
1758 "category": "Energy",
1759 "create_function": create_element,
1760 "configure_function": configure_element,
1762 "connector_types": [],
1763 "box_attributes": ["BasicEnergySourceInitialEnergyJ",
1764 "BasicEnergySupplyVoltageV",
1765 "PeriodicEnergyUpdateInterval"],
1767 "ns3::Ipv6OptionPadn": dict({
1769 "create_function": create_element,
1770 "configure_function": configure_element,
1772 "connector_types": [],
1773 "box_attributes": ["OptionNumber"],
1775 "ns3::QapWifiMac": dict({
1777 "create_function": create_wifi_standard_model,
1778 "configure_function": configure_element,
1779 "help": "Access point Wifi MAC Model",
1780 "connector_types": ["dev"],
1781 "box_attributes": ["BeaconInterval",
1785 "BasicBlockAckTimeout",
1786 "CompressedBlockAckTimeout",
1791 "MaxPropagationDelay",
1795 "ns3::YansErrorRateModel": dict({
1796 "category": "Error",
1797 "create_function": create_element,
1798 "configure_function": configure_element,
1800 "connector_types": [],
1801 "box_attributes": [],
1803 "ns3::WifiMacQueue": dict({
1804 "category": "Queue",
1805 "create_function": create_element,
1806 "configure_function": configure_element,
1808 "connector_types": [],
1809 "box_attributes": ["MaxPacketNumber",
1812 "ns3::NonCommunicatingNetDevice": dict({
1813 "category": "Device",
1814 "create_function": create_element,
1815 "configure_function": configure_element,
1817 "connector_types": [],
1818 "allow_addresses": True,
1819 "box_attributes": [],
1821 "ns3::RateErrorModel": dict({
1822 "category": "Error",
1823 "create_function": create_element,
1824 "configure_function": configure_element,
1826 "connector_types": [],
1827 "box_attributes": ["ErrorUnit",
1832 "ns3::MeshWifiInterfaceMac": dict({
1834 "create_function": create_element,
1835 "configure_function": configure_element,
1837 "connector_types": [],
1838 "box_attributes": ["BeaconInterval",
1843 "BasicBlockAckTimeout",
1844 "CompressedBlockAckTimeout",
1849 "MaxPropagationDelay",
1852 "ns3::UanPhyCalcSinrDual": dict({
1854 "create_function": create_element,
1855 "configure_function": configure_element,
1857 "connector_types": [],
1858 "box_attributes": [],
1860 "ns3::Ipv6ExtensionAH": dict({
1862 "create_function": create_element,
1863 "configure_function": configure_element,
1865 "connector_types": [],
1866 "box_attributes": ["ExtensionNumber"],
1868 "ns3::SingleModelSpectrumChannel": dict({
1869 "category": "Channel",
1870 "create_function": create_element,
1871 "configure_function": configure_element,
1873 "connector_types": [],
1874 "box_attributes": [],
1876 "ns3::YansWifiPhy": dict({
1878 "create_function": create_wifi_standard_model,
1879 "configure_function": configure_element,
1881 "connector_types": ["dev", "err", "chan"],
1882 "box_attributes": ["EnergyDetectionThreshold",
1883 "CcaMode1Threshold",
1890 "ChannelSwitchDelay",
1893 "traces": ["yanswifipcap"]
1895 "ns3::WifiRadioEnergyModel": dict({
1896 "category": "Energy",
1897 "create_function": create_element,
1898 "configure_function": configure_element,
1900 "connector_types": [],
1901 "box_attributes": ["TxCurrentA",
1906 "ns3::EdcaTxopN": dict({
1908 "create_function": create_element,
1909 "configure_function": configure_element,
1911 "connector_types": [],
1912 "box_attributes": ["BlockAckThreshold",
1917 "ns3::UanPhyPerGenDefault": dict({
1919 "create_function": create_element,
1920 "configure_function": configure_element,
1922 "connector_types": [],
1923 "box_attributes": ["Threshold"],
1925 "ns3::IdealWifiManager": dict({
1926 "category": "Manager",
1927 "create_function": create_element,
1928 "configure_function": configure_element,
1930 "connector_types": [],
1931 "box_attributes": ["BerThreshold",
1936 "FragmentationThreshold",
1939 "ns3::MultiModelSpectrumChannel": dict({
1940 "category": "Channel",
1941 "create_function": create_element,
1942 "configure_function": configure_element,
1944 "connector_types": [],
1945 "box_attributes": [],
1947 "ns3::HalfDuplexIdealPhy": dict({
1949 "create_function": create_element,
1950 "configure_function": configure_element,
1952 "connector_types": [],
1953 "box_attributes": ["Rate"],
1955 "ns3::UanPhyCalcSinrDefault": dict({
1957 "create_function": create_element,
1958 "configure_function": configure_element,
1960 "connector_types": [],
1961 "box_attributes": [],
1963 "ns3::ReceiveListErrorModel": dict({
1964 "category": "Error",
1965 "create_function": create_element,
1966 "configure_function": configure_element,
1968 "connector_types": [],
1969 "box_attributes": ["IsEnabled"],
1971 "ns3::SpectrumAnalyzer": dict({
1973 "create_function": create_element,
1974 "configure_function": configure_element,
1976 "connector_types": [],
1977 "box_attributes": ["Resolution",
1978 "NoisePowerSpectralDensity"],
1980 "ns3::ConstantRateWifiManager": dict({
1981 "category": "Manager",
1982 "create_function": create_element,
1983 "configure_function": configure_element,
1985 "connector_types": ["dev"],
1986 "box_attributes": ["DataMode",
1992 "FragmentationThreshold",
1995 "ns3::Ipv6OptionPad1": dict({
1997 "create_function": create_element,
1998 "configure_function": configure_element,
2000 "connector_types": [],
2001 "box_attributes": ["OptionNumber"],
2003 "ns3::UdpTraceClient": dict({
2005 "create_function": create_element,
2006 "configure_function": configure_element,
2008 "connector_types": [],
2009 "box_attributes": ["RemoteAddress",
2015 "ns3::RraaWifiManager": dict({
2016 "category": "Manager",
2017 "create_function": create_element,
2018 "configure_function": configure_element,
2020 "connector_types": [],
2021 "box_attributes": ["Basic",
2049 "FragmentationThreshold",
2052 "ns3::RandomPropagationLossModel": dict({
2054 "create_function": create_element,
2055 "configure_function": configure_element,
2057 "connector_types": [],
2058 "box_attributes": ["Variable"],
2060 "ns3::UanChannel": dict({
2061 "category": "Channel",
2062 "create_function": create_element,
2063 "configure_function": configure_element,
2065 "connector_types": [],
2066 "box_attributes": [],
2068 "ns3::MinstrelWifiManager": dict({
2069 "category": "Manager",
2070 "create_function": create_element,
2071 "configure_function": configure_element,
2073 "connector_types": [],
2074 "box_attributes": ["UpdateStatistics",
2084 "FragmentationThreshold",
2087 "ns3::UanPhyDual": dict({
2089 "create_function": create_element,
2090 "configure_function": configure_element,
2092 "connector_types": [],
2093 "box_attributes": ["CcaThresholdPhy1",
2099 "SupportedModesPhy1",
2100 "SupportedModesPhy2"],
2102 "ns3::ListErrorModel": dict({
2103 "category": "Error",
2104 "create_function": create_element,
2105 "configure_function": configure_element,
2107 "connector_types": ["dev"],
2108 "box_attributes": ["IsEnabled"],
2110 "ns3::VirtualNetDevice": dict({
2111 "category": "Device",
2112 "create_function": create_element,
2113 "configure_function": configure_element,
2115 "connector_types": [],
2116 "allow_addresses": True,
2117 "box_attributes": ["Mtu"],
2119 "ns3::UanPhyGen": dict({
2121 "create_function": create_element,
2122 "configure_function": configure_element,
2124 "connector_types": [],
2125 "box_attributes": ["CcaThreshold",
2131 "ns3::Ipv6L3Protocol": dict({
2132 "category": "Protocol",
2133 "create_function": create_element,
2134 "configure_function": configure_element,
2136 "connector_types": ["node"],
2137 "box_attributes": ["DefaultTtl",
2140 "ns3::PointToPointRemoteChannel": dict({
2141 "category": "Channel",
2142 "create_function": create_element,
2143 "configure_function": configure_element,
2145 "connector_types": [],
2146 "box_attributes": ["Delay"],
2148 "ns3::UanPhyPerUmodem": dict({
2150 "create_function": create_element,
2151 "configure_function": configure_element,
2153 "connector_types": [],
2154 "box_attributes": [],
2156 "ns3::OnoeWifiManager": dict({
2157 "category": "Manager",
2158 "create_function": create_element,
2159 "configure_function": configure_element,
2161 "connector_types": [],
2162 "box_attributes": ["UpdatePeriod",
2164 "AddCreditThreshold",
2169 "FragmentationThreshold",
2172 "ns3::QadhocWifiMac": dict({
2174 "create_function": create_element,
2175 "configure_function": configure_element,
2177 "connector_types": [],
2178 "box_attributes": ["CtsTimeout",
2180 "BasicBlockAckTimeout",
2181 "CompressedBlockAckTimeout",
2186 "MaxPropagationDelay",
2189 "ns3::JakesPropagationLossModel": dict({
2191 "create_function": create_element,
2192 "configure_function": configure_element,
2194 "connector_types": [],
2195 "box_attributes": ["NumberOfRaysPerPath",
2196 "NumberOfOscillatorsPerRay",
2200 "ns3::PacketSink": dict({
2201 "category": "Application",
2202 "create_function": create_element,
2203 "configure_function": configure_element,
2205 "connector_types": ["node"],
2206 "stop_function": stop_application,
2207 "start_function": start_application,
2208 "status_function": status_application,
2209 "box_attributes": ["Local",
2214 "ns3::RandomDirection2dMobilityModel": dict({
2215 "category": "Mobility",
2216 "create_function": create_element,
2217 "configure_function": configure_element,
2219 "connector_types": ["node"],
2220 "box_attributes": ["Bounds",
2225 "tags": [tags.MOBILE],
2227 "ns3::UanMacAloha": dict({
2229 "create_function": create_element,
2230 "configure_function": configure_element,
2232 "connector_types": [],
2233 "box_attributes": [],
2235 "ns3::MsduStandardAggregator": dict({
2237 "create_function": create_element,
2238 "configure_function": configure_element,
2240 "connector_types": [],
2241 "box_attributes": ["MaxAmsduSize"],
2243 "ns3::DcaTxop": dict({
2245 "create_function": create_element,
2246 "configure_function": configure_element,
2248 "connector_types": [],
2249 "box_attributes": ["MinCw",
2253 "ns3::UanPhyCalcSinrFhFsk": dict({
2255 "create_function": create_element,
2256 "configure_function": configure_element,
2258 "connector_types": [],
2259 "box_attributes": ["NumberOfHops"],
2261 "ns3::UanPropModelIdeal": dict({
2263 "create_function": create_element,
2264 "configure_function": configure_element,
2266 "connector_types": [],
2267 "box_attributes": [],
2269 "ns3::UanMacRcGw": dict({
2271 "create_function": create_element,
2272 "configure_function": configure_element,
2274 "connector_types": [],
2275 "box_attributes": ["MaxReservations",
2283 "NumberOfRetryRates",
2288 "ns3::NistErrorRateModel": dict({
2289 "category": "Error",
2290 "create_function": create_element,
2291 "configure_function": configure_element,
2293 "connector_types": ["phy"],
2294 "box_attributes": [],
2296 "ns3::Ipv4L3Protocol": dict({
2297 "category": "Protocol",
2298 "create_function": create_ipv4protocol,
2299 "configure_function": configure_element,
2301 "connector_types": ["node"],
2302 "box_attributes": ["DefaultTtl",
2306 "ns3::aodv::RoutingProtocol": dict({
2307 "category": "Protocol",
2308 "create_function": create_element,
2309 "configure_function": configure_element,
2311 "connector_types": [],
2312 "box_attributes": ["HelloInterval",
2315 "NodeTraversalTime",
2317 "ActiveRouteTimeout",
2324 "PathDiscoveryTime",
2333 "ns3::TcpL4Protocol": dict({
2334 "category": "Protocol",
2335 "create_function": create_element,
2336 "configure_function": configure_element,
2338 "connector_types": ["node"],
2339 "box_attributes": ["RttEstimatorFactory",
2342 "ns3::olsr::RoutingProtocol": dict({
2343 "category": "Protocol",
2344 "create_function": create_element,
2345 "configure_function": configure_element,
2347 "connector_types": [],
2348 "box_attributes": ["HelloInterval",
2354 "ns3::UdpEchoServer": dict({
2355 "category": "Application",
2356 "create_function": create_element,
2357 "configure_function": configure_element,
2359 "connector_types": ["node"],
2360 "stop_function": stop_application,
2361 "start_function": start_application,
2362 "status_function": status_application,
2363 "box_attributes": ["Port",
2367 "ns3::AmrrWifiManager": dict({
2368 "category": "Manager",
2369 "create_function": create_element,
2370 "configure_function": configure_element,
2372 "connector_types": [],
2373 "box_attributes": ["UpdatePeriod",
2376 "MaxSuccessThreshold",
2377 "MinSuccessThreshold",
2382 "FragmentationThreshold",
2385 "ns3::ArfWifiManager": dict({
2386 "category": "Manager",
2387 "create_function": create_element,
2388 "configure_function": configure_element,
2390 "connector_types": ["dev"],
2391 "box_attributes": ["TimerThreshold",
2397 "FragmentationThreshold",
2400 "ns3::SubscriberStationNetDevice": dict({
2401 "category": "Device",
2402 "create_function": create_subscriber_station,
2403 "configure_function": configure_station,
2404 "help": "Subscriber station for mobile wireless network",
2405 "connector_types": ["node", "chan", "phy", "sflows"],
2406 "allow_addresses": True,
2407 "box_attributes": ["LostDlMapInterval",
2408 "LostUlMapInterval",
2418 "MaxContentionRangingRetries",
2422 "traces": ["wimaxpcap", "wimaxascii"],
2424 "ns3::flame::FlameRtable": dict({
2426 "create_function": create_element,
2427 "configure_function": configure_element,
2429 "connector_types": [],
2430 "box_attributes": ["Lifetime"],
2432 "ns3::BSSchedulerRtps": dict({
2433 "category": "Service Flow",
2434 "create_function": create_element,
2435 "configure_function": configure_element,
2436 "help": "Simple downlink scheduler for rtPS flows",
2437 "connector_types": ["dev"],
2438 "box_attributes": [],
2440 "ns3::BSSchedulerSimple": dict({
2441 "category": "Service Flow",
2442 "create_function": create_element,
2443 "configure_function": configure_element,
2444 "help": "simple downlink scheduler for service flows",
2445 "connector_types": ["dev"],
2446 "box_attributes": [],
2448 "ns3::SimpleOfdmWimaxChannel": dict({
2449 "category": "Channel",
2450 "create_function": create_wimax_channel,
2451 "configure_function": configure_element,
2452 "help": "Wimax channel",
2453 "connector_types": ["devs"],
2454 "box_attributes": [],
2456 "ns3::SimpleOfdmWimaxPhy": dict({
2458 "create_function": create_wimax_phy,
2459 "configure_function": configure_element,
2460 "help": "Wimax Phy",
2461 "connector_types": ["dev"],
2462 "box_attributes": [],
2464 "ns3::UplinkSchedulerSimple": dict({
2465 "category": "Service Flow",
2466 "create_function": create_element_no_constructor,
2467 "configure_function": configure_element,
2468 "help": "Simple uplink scheduler for service flows",
2469 "connector_types": ["dev"],
2470 "box_attributes": [],
2472 "ns3::UplinkSchedulerRtps": dict({
2473 "category": "Service Flow",
2474 "create_function": create_element_no_constructor,
2475 "configure_function": configure_element,
2476 "help": "Simple uplink scheduler for rtPS flows",
2477 "connector_types": ["dev"],
2478 "box_attributes": [],
2480 "ns3::IpcsClassifierRecord": dict({
2481 "category": "Service Flow",
2482 "create_function": create_ipcs_classifier_record,
2483 "configure_function": configure_element,
2484 "help": "Classifier record for service flow",
2485 "connector_types": ["sflow"],
2486 "box_attributes": ["ClassifierSrcAddress",
2487 "ClassifierSrcMask",
2488 "ClassifierDstAddress",
2489 "ClassifierDstMask",
2490 "ClassifierSrcPortLow",
2491 "ClassifierSrcPortHigh",
2492 "ClassifierDstPortLow",
2493 "ClassifierDstPortHigh",
2494 "ClassifierProtocol",
2495 "ClassifierPriority"],
2497 "ns3::ServiceFlow": dict({
2498 "category": "Service Flow",
2499 "create_function": create_service_flow,
2500 "configure_function": configure_element,
2501 "help": "Service flow for QoS",
2502 "connector_types": ["classif", "dev"],
2503 "box_attributes": ["ServiceFlowDirection",
2504 "ServiceFlowSchedulingType"],