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 ### create traces functions ###
81 def p2pascii_trace(testbed_instance, guid, trace_id):
82 node_guid = _get_node_guid(testbed_instance, guid)
83 interface_number = _get_dev_number(testbed_instance, guid)
84 element = testbed_instance._elements[guid]
85 filename = "trace-p2p-node-%d-dev-%d.tr" % (node_guid, interface_number)
86 testbed_instance.follow_trace(guid, trace_id, filename)
87 filepath = testbed_instance.trace_filename(guid, trace_id)
88 helper = testbed_instance.ns3.PointToPointHelper()
89 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
90 stream = asciiHelper.CreateFileStream (filepath)
91 helper.EnableAscii(stream, element)
93 def p2ppcap_trace(testbed_instance, guid, trace_id):
94 node_guid = _get_node_guid(testbed_instance, guid)
95 interface_number = _get_dev_number(testbed_instance, guid)
96 element = testbed_instance._elements[guid]
97 filename = "trace-p2p-node-%d-dev-%d.pcap" % (node_guid, interface_number)
98 testbed_instance.follow_trace(guid, trace_id, filename)
99 filepath = testbed_instance.trace_filename(guid, trace_id)
100 helper = testbed_instance.ns3.PointToPointHelper()
101 helper.EnablePcap(filepath, element, explicitFilename = True)
103 def _csmapcap_trace(testbed_instance, guid, trace_id, promisc):
104 node_guid = _get_node_guid(testbed_instance, guid)
105 interface_number = _get_dev_number(testbed_instance, guid)
106 element = testbed_instance._elements[guid]
107 filename = "trace-csma-node-%d-dev-%d.pcap" % (node_guid, interface_number)
108 testbed_instance.follow_trace(guid, trace_id, filename)
109 filepath = testbed_instance.trace_filename(guid, trace_id)
110 helper = testbed_instance.ns3.CsmaHelper()
111 helper.EnablePcap(filepath, element, promiscuous = promisc,
112 explicitFilename = True)
114 def csmapcap_trace(testbed_instance, guid, trace_id):
116 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
118 def csmapcap_promisc_trace(testbed_instance, guid, trace_id):
120 _csmapcap_trace(testbed_instance, guid, trace_id, promisc)
122 def fdpcap_trace(testbed_instance, guid, trace_id):
123 node_guid = _get_node_guid(testbed_instance, guid)
124 interface_number = _get_dev_number(testbed_instance, guid)
125 element = testbed_instance._elements[guid]
126 filename = "trace-fd-node-%d-dev-%d.pcap" % (node_guid, interface_number)
127 testbed_instance.follow_trace(guid, trace_id, filename)
128 filepath = testbed_instance.trace_filename(guid, trace_id)
129 helper = testbed_instance.ns3.FileDescriptorHelper()
130 helper.EnablePcap(filepath, element, explicitFilename = True)
132 def yanswifipcap_trace(testbed_instance, guid, trace_id):
133 dev_guid = testbed_instance.get_connected(guid, "dev", "phy")[0]
134 node_guid = _get_node_guid(testbed_instance, dev_guid)
135 interface_number = _get_dev_number(testbed_instance, dev_guid)
136 element = testbed_instance._elements[dev_guid]
137 filename = "trace-yanswifi-node-%d-dev-%d.pcap" % (node_guid, interface_number)
138 testbed_instance.follow_trace(guid, trace_id, filename)
139 filepath = testbed_instance.trace_filename(guid, trace_id)
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 testbed_instance.follow_trace(guid, trace_id, filename)
149 filepath = testbed_instance.trace_filename(guid, trace_id)
150 helper = testbed_instance.ns3.WimaxHelper()
151 asciiHelper = testbed_instance.ns3.AsciiTraceHelper()
152 stream = asciiHelper.CreateFileStream (filepath)
153 helper.EnableAscii(stream, element)
154 #helper.EnableLogComponents()
156 def wimaxpcap_trace(testbed_instance, guid, trace_id):
157 node_guid = _get_node_guid(testbed_instance, guid)
158 interface_number = _get_dev_number(testbed_instance, guid)
159 element = testbed_instance._elements[guid]
160 filename = "trace-wimax-node-%d-dev-%d.pcap" % (node_guid, interface_number)
161 testbed_instance.follow_trace(guid, trace_id, filename)
162 filepath = testbed_instance.trace_filename(guid, trace_id)
163 helper = testbed_instance.ns3.WimaxHelper()
164 helper.EnablePcap(filepath, element, explicitFilename = True)
166 def rtt_trace(testbed_instance, guid, trace_id):
167 element = testbed_instance._elements[guid]
168 helper = testbed_instance.ns3.PlotHelper()
169 prefix = "trace-app-%d" % (guid, )
170 filename = helper.GetFilenameFromSource(prefix, element, trace_id)
171 testbed_instance.follow_trace(guid, trace_id, filename)
172 filepath = testbed_instance.trace_filename(guid, trace_id)
173 prefix = filepath[:filepath.find(prefix)+len(prefix)]
174 helper.EnableTrace(element, trace_id, prefix, "T")
177 trace_functions = dict({
178 "P2PPcapTrace": p2ppcap_trace,
179 "P2PAsciiTrace": p2pascii_trace,
180 "CsmaPcapTrace": csmapcap_trace,
181 "CsmaPcapPromiscTrace": csmapcap_promisc_trace,
182 "FileDescriptorPcapTrace": fdpcap_trace,
183 "YansWifiPhyPcapTrace": yanswifipcap_trace,
184 "WimaxPcapTrace": wimaxpcap_trace,
185 "WimaxAsciiTrace": wimaxascii_trace,
189 ### Creation functions ###
191 def create_element(testbed_instance, guid):
192 element_factory = testbed_instance.ns3.ObjectFactory()
193 factory_id = testbed_instance._create[guid]
194 element_factory.SetTypeId(factory_id)
195 construct_parameters = testbed_instance._get_construct_parameters(guid)
196 for name, value in construct_parameters.iteritems():
197 ns3_value = testbed_instance._to_ns3_value(guid, name, value)
198 element_factory.Set(name, ns3_value)
199 element = element_factory.Create()
200 testbed_instance._elements[guid] = element
202 def create_node(testbed_instance, guid):
203 create_element(testbed_instance, guid)
204 element = testbed_instance._elements[guid]
205 element.AggregateObject(testbed_instance.ns3.PacketSocketFactory())
207 def create_wifi_standard_model(testbed_instance, guid):
208 create_element(testbed_instance, guid)
209 element = testbed_instance._elements[guid]
210 parameters = testbed_instance._get_parameters(guid)
211 if "Standard" in parameters:
212 standard = parameters["Standard"]
214 element.ConfigureStandard(wifi_standards[standard])
216 def create_ipv4protocol(testbed_instance, guid):
217 create_element(testbed_instance, guid)
218 element = testbed_instance._elements[guid]
219 list_routing = testbed_instance.ns3.Ipv4ListRouting()
220 element.SetRoutingProtocol(list_routing)
221 static_routing = testbed_instance.ns3.Ipv4StaticRouting()
222 list_routing.AddRoutingProtocol(static_routing, 1)
224 def create_element_no_constructor(testbed_instance, guid):
225 """ Create function for ns3 classes for which
226 TypeId.HasConstructor == False"""
227 factory_id = testbed_instance._create[guid]
228 factory_name = factory_id.replace("ns3::", "")
229 constructor = getattr(testbed_instance.ns3, factory_name)
230 element = constructor()
231 testbed_instance._elements[guid] = element
233 def create_base_station(testbed_instance, guid):
234 node_guid = _get_node_guid(testbed_instance, guid)
235 node = testbed_instance._elements[node_guid]
236 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
237 if len(phy_guids) == 0:
238 raise RuntimeError("No PHY was found for station %d" % guid)
239 phy = testbed_instance._elements[phy_guids[0]]
240 uplnk_guids = testbed_instance.get_connected(guid, "uplnk", "dev")
241 if len(uplnk_guids) == 0:
242 raise RuntimeError("No uplink scheduler was found for station %d" % guid)
243 uplnk = testbed_instance._elements[uplnk_guids[0]]
244 dwnlnk_guids = testbed_instance.get_connected(guid, "dwnlnk", "dev")
245 if len(dwnlnk_guids) == 0:
246 raise RuntimeError("No downlink scheduler was found for station %d" % guid)
247 dwnlnk = testbed_instance._elements[dwnlnk_guids[0]]
248 element = testbed_instance.ns3.BaseStationNetDevice(node, phy, uplnk, dwnlnk)
249 testbed_instance._elements[guid] = element
251 def create_subscriber_station(testbed_instance, guid):
252 node_guid = _get_node_guid(testbed_instance, guid)
253 node = testbed_instance._elements[node_guid]
254 phy_guids = testbed_instance.get_connected(guid, "phy", "dev")
255 if len(phy_guids) == 0:
256 raise RuntimeError("No PHY was found for station %d" % guid)
257 phy = testbed_instance._elements[phy_guids[0]]
258 element = testbed_instance.ns3.SubscriberStationNetDevice(node, phy)
259 element.SetModulationType(testbed_instance.ns3.WimaxPhy.MODULATION_TYPE_QAM16_12)
260 testbed_instance._elements[guid] = element
262 def create_wimax_channel(testbed_instance, guid):
263 element = testbed_instance.ns3.SimpleOfdmWimaxChannel(testbed_instance.ns3.SimpleOfdmWimaxChannel.COST231_PROPAGATION)
264 testbed_instance._elements[guid] = element
266 def create_wimax_phy(testbed_instance, guid):
267 element = testbed_instance.ns3.SimpleOfdmWimaxPhy()
268 testbed_instance._elements[guid] = element
270 def create_service_flow(testbed_instance, guid):
271 parameters = testbed_instance._get_parameters(guid)
273 if "Direction" in parameters:
274 direction = parameters["Direction"]
275 if direction == None:
276 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
278 if "SchedulingType" in parameters:
279 sched = parameters["SchedulingType"]
281 raise RuntimeError("No SchedulingType was found for service flow %d" % guid)
282 ServiceFlow = testbed_instance.ns3.ServiceFlow
283 direction = service_flow_direction[direction]
284 sched = service_flow_scheduling_type[sched]
285 element = ServiceFlow(direction)
286 element.SetCsSpecification(ServiceFlow.IPV4)
287 element.SetServiceSchedulingType(sched)
288 element.SetMaxSustainedTrafficRate(100)
289 element.SetMinReservedTrafficRate(1000000)
290 element.SetMinTolerableTrafficRate(1000000)
291 element.SetMaximumLatency(100)
292 element.SetMaxTrafficBurst(2000)
293 element.SetTrafficPriority(1)
294 element.SetUnsolicitedGrantInterval(1)
295 element.SetMaxSustainedTrafficRate(70)
296 element.SetToleratedJitter(10)
297 element.SetSduSize(49)
298 element.SetRequestTransmissionPolicy(0)
299 testbed_instance._elements[guid] = element
301 def create_ipcs_classifier_record(testbed_instance, guid):
302 parameters = testbed_instance._get_parameters(guid)
304 if "SrcAddress" in parameters:
305 src_address = parameters["SrcAddress"]
306 if src_address == None:
307 raise RuntimeError("No SrcAddress was found for classifier %d" % guid)
308 src_address = testbed_instance.ns3.Ipv4Address(src_address)
310 if "SrcMask" in parameters:
311 src_mask = parameters["SrcMask"]
313 raise RuntimeError("No SrcMask was found for classifier %d" % guid)
314 src_mask = testbed_instance.ns3.Ipv4Mask(src_mask)
316 if "DstAddress" in parameters:
317 dst_address = parameters["DstAddress"]
318 if dst_address == None:
319 raise RuntimeError("No Dstddress was found for classifier %d" % guid)
320 dst_address = testbed_instance.ns3.Ipv4Address(dst_address)
322 if "DstMask" in parameters:
323 dst_mask = parameters["DstMask"]
325 raise RuntimeError("No DstMask was found for classifier %d" % guid)
326 dst_mask = testbed_instance.ns3.Ipv4Mask(dst_mask)
328 if "SrcPortLow" in parameters:
329 src_port_low = parameters["SrcPortLow"]
330 if src_port_low == None:
331 raise RuntimeError("No SrcPortLow was found for classifier %d" % guid)
333 if "SrcPortHigh" in parameters:
334 src_port_high = parameters["SrcPortHigh"]
335 if src_port_high == None:
336 raise RuntimeError("No SrcPortHigh was found for classifier %d" % guid)
338 if "DstPortLow" in parameters:
339 dst_port_low = parameters["DstPortLow"]
340 if dst_port_low == None:
341 raise RuntimeError("No DstPortLow was found for classifier %d" % guid)
343 if "DstPortHigh" in parameters:
344 dst_port_high = parameters["DstPortHigh"]
345 if dst_port_high == None:
346 raise RuntimeError("No DstPortHigh was found for classifier %d" % guid)
348 if "Protocol" in parameters:
349 protocol = parameters["Protocol"]
350 if protocol == None or protocol not in l4_protocols:
351 raise RuntimeError("No Protocol was found for classifier %d" % guid)
353 if "Priority" in parameters:
354 priority = parameters["Priority"]
356 raise RuntimeError("No Priority was found for classifier %d" % guid)
357 element = testbed_instance.ns3.IpcsClassifierRecord(src_address, src_mask,
358 dst_address, dst_mask, src_port_low, src_port_high, dst_port_low,
359 dst_port_high, l4_protocols[protocol], priority)
360 testbed_instance._elements[guid] = element
362 ### Start/Stop functions ###
364 def start_application(testbed_instance, guid):
365 element = testbed_instance.elements[guid]
366 # BUG: without doing this explicit call it doesn't start!!!
367 # Shouldn't be enough to set the StartTime?
370 def stop_application(testbed_instance, guid):
371 element = testbed_instance.elements[guid]
372 now = testbed_instance.ns3.Simulator.Now()
373 element.SetStopTime(now)
375 ### Status functions ###
377 def status_application(testbed_instance, guid):
378 if guid not in testbed_instance.elements.keys():
379 raise RuntimeError("Can't get status on guid %d" % guid )
380 now = testbed_instance.ns3.Simulator.Now()
382 return STATUS_NOT_STARTED
383 app = testbed_instance.elements[guid]
384 parameters = testbed_instance._get_parameters(guid)
385 if "StartTime" in parameters and parameters["StartTime"]:
386 start_value = parameters["StartTime"]
387 start_time = testbed_instance.ns3.Time(start_value)
388 if now.Compare(start_time) < 0:
389 return STATUS_NOT_STARTED
390 if "StopTime" in parameters and parameters["StopTime"]:
391 stop_value = parameters["StopTime"]
392 stop_time = testbed_instance.ns3.Time(stop_value)
393 if now.Compare(stop_time) < 0:
394 return STATUS_RUNNING
396 return STATUS_FINISHED
397 return STATUS_UNDETERMINED
399 ### Configure functions ###
401 def configure_traces(testbed_instance, guid):
402 traces = testbed_instance._get_traces(guid)
403 for trace_id in traces:
404 trace_func = trace_functions[trace_id]
405 trace_func(testbed_instance, guid, trace_id)
407 def configure_element(testbed_instance, guid):
408 configure_traces(testbed_instance, guid)
410 def configure_device(testbed_instance, guid):
411 configure_traces(testbed_instance, guid)
413 element = testbed_instance._elements[guid]
415 parameters = testbed_instance._get_parameters(guid)
416 if "macAddress" in parameters:
417 address = parameters["macAddress"]
418 macaddr = testbed_instance.ns3.Mac48Address(address)
420 macaddr = testbed_instance.ns3.Mac48Address.Allocate()
421 element.SetAddress(macaddr)
423 if not guid in testbed_instance._add_address:
425 # search for the node asociated with the device
426 node_guid = _get_node_guid(testbed_instance, guid)
427 node = testbed_instance.elements[node_guid]
428 # search for the Ipv4L3Protocol asociated with the device
429 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, node_guid)
430 ipv4 = testbed_instance._elements[ipv4_guid]
431 ns3 = testbed_instance.ns3
433 addresses = testbed_instance._add_address[guid]
434 for address in addresses:
435 (address, netprefix, broadcast) = address
436 # TODO: missing IPV6 addresses!!
437 ifindex = ipv4.AddInterface(element)
438 inaddr = ns3.Ipv4InterfaceAddress(ns3.Ipv4Address(address),
439 ns3.Ipv4Mask("/%d" % netprefix))
440 ipv4.AddAddress(ifindex, inaddr)
441 ipv4.SetMetric(ifindex, 1)
444 def _add_static_route(ns3, static_routing,
445 address, netprefix, nexthop_address, ifindex):
447 # Default route: 0.0.0.0/0
448 static_routing.SetDefaultRoute(nexthop_address, ifindex)
449 elif netprefix == 32:
450 # Host route: x.y.z.w/32
451 static_routing.AddHostRouteTo(address, nexthop_address, ifindex)
453 # Network route: x.y.z.w/n
454 mask = ns3.Ipv4Mask("/%d" % netprefix)
455 static_routing.AddNetworkRouteTo(address, mask, nexthop_address,
458 def _add_static_route_if(ns3, static_routing, address, netprefix, ifindex):
460 # Default route: 0.0.0.0/0
461 static_routing.SetDefaultRoute(ifindex)
462 elif netprefix == 32:
463 # Host route: x.y.z.w/32
464 static_routing.AddHostRouteTo(address, ifindex)
466 # Network route: x.y.z.w/n
467 mask = ns3.Ipv4Mask("/%d" % netprefix)
468 static_routing.AddNetworkRouteTo(address, mask, ifindex)
470 def configure_node(testbed_instance, guid):
471 configure_traces(testbed_instance, guid)
473 element = testbed_instance._elements[guid]
474 if not guid in testbed_instance._add_route:
476 # search for the Ipv4L3Protocol asociated with the device
477 ipv4_guid = _get_ipv4_protocol_guid(testbed_instance, guid)
478 ipv4 = testbed_instance._elements[ipv4_guid]
479 list_routing = ipv4.GetRoutingProtocol()
480 (static_routing, priority) = list_routing.GetRoutingProtocol(0)
481 ns3 = testbed_instance.ns3
482 routes = testbed_instance._add_route[guid]
484 (destination, netprefix, nexthop) = route
485 address = ns3.Ipv4Address(destination)
487 nexthop_address = ns3.Ipv4Address(nexthop)
489 # TODO: HACKISH way of getting the ifindex... improve this
490 nifaces = ipv4.GetNInterfaces()
491 for ifidx in xrange(nifaces):
492 iface = ipv4.GetInterface(ifidx)
493 naddress = iface.GetNAddresses()
494 for addridx in xrange(naddress):
495 ifaddr = iface.GetAddress(addridx)
496 ifmask = ifaddr.GetMask()
497 ifindex = ipv4.GetInterfaceForPrefix(nexthop_address, ifmask)
501 # Check previous ptp routes
502 for chaindest, chainprefix, chainhop in routes:
503 if chaindest == nexthop and chainprefix == 32:
504 chainhop_address = ns3.Ipv4Address(chainhop)
505 for ifidx in xrange(nifaces):
506 iface = ipv4.GetInterface(ifidx)
507 naddress = iface.GetNAddresses()
508 for addridx in xrange(naddress):
509 ifaddr = iface.GetAddress(addridx)
510 ifmask = ifaddr.GetMask()
511 ifindex = ipv4.GetInterfaceForPrefix(chainhop_address, ifmask)
515 raise RuntimeError, "Cannot associate interface for routing entry:" \
516 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
517 _add_static_route(ns3, static_routing,
518 address, netprefix, nexthop_address, ifindex)
520 mask = ns3.Ipv4Mask("/%d" % netprefix)
521 ifindex = ipv4.GetInterfaceForPrefix(address, mask)
523 raise RuntimeError, "Cannot associate interface for routing entry:" \
524 "%s/%s -> %s. At node %s" % (destination, netprefix, nexthop, guid)
525 _add_static_route_if(ns3, static_routing,
526 address, netprefix, nexthop_address, ifindex)
528 def configure_station(testbed_instance, guid):
529 configure_device(testbed_instance, guid)
530 element = testbed_instance._elements[guid]
535 factories_order = ["ns3::BasicEnergySource",
536 "ns3::WifiRadioEnergyModel",
537 "ns3::BSSchedulerRtps",
538 "ns3::BSSchedulerSimple",
539 "ns3::UdpTraceClient",
545 "ns3::flame::FlameProtocol",
546 "ns3::flame::FlameRtable",
547 "ns3::dot11s::AirtimeLinkMetricCalculator",
548 "ns3::dot11s::HwmpProtocol",
549 "ns3::dot11s::HwmpRtable",
550 "ns3::dot11s::PeerManagementProtocol",
551 "ns3::dot11s::PeerLink",
552 "ns3::MeshWifiInterfaceMac",
553 "ns3::MeshPointDevice",
556 "ns3::UanPhyCalcSinrDual",
557 "ns3::UanPhyPerGenDefault",
559 "ns3::UanPropModelThorp",
561 "ns3::UanNoiseModelDefault",
563 "ns3::UanPropModelIdeal",
564 "ns3::UanTransducerHd",
565 "ns3::UanPhyCalcSinrDefault",
567 "ns3::UanPhyCalcSinrFhFsk",
568 "ns3::UanPhyPerUmodem",
571 "ns3::AthstatsWifiTraceSink",
574 "ns3::NonCommunicatingNetDevice",
575 "ns3::HalfDuplexIdealPhy",
576 "ns3::AlohaNoackNetDevice",
577 "ns3::SpectrumAnalyzer",
578 "ns3::WaveformGenerator",
579 "ns3::MultiModelSpectrumChannel",
580 "ns3::SingleModelSpectrumChannel",
581 "ns3::MsduStandardAggregator",
585 "ns3::QadhocWifiMac",
586 "ns3::MinstrelWifiManager",
587 "ns3::CaraWifiManager",
588 "ns3::AarfcdWifiManager",
589 "ns3::OnoeWifiManager",
590 "ns3::AmrrWifiManager",
591 "ns3::ConstantRateWifiManager",
592 "ns3::IdealWifiManager",
593 "ns3::AarfWifiManager",
594 "ns3::ArfWifiManager",
595 "ns3::WifiNetDevice",
601 "ns3::YansWifiChannel",
603 "ns3::NistErrorRateModel",
604 "ns3::YansErrorRateModel",
605 "ns3::WaypointMobilityModel",
606 "ns3::ConstantAccelerationMobilityModel",
607 "ns3::RandomDirection2dMobilityModel",
608 "ns3::RandomWalk2dMobilityModel",
609 "ns3::SteadyStateRandomWaypointMobilityModel",
610 "ns3::RandomWaypointMobilityModel",
611 "ns3::GaussMarkovMobilityModel",
612 "ns3::ConstantVelocityMobilityModel",
613 "ns3::ConstantPositionMobilityModel",
614 "ns3::ListPositionAllocator",
615 "ns3::GridPositionAllocator",
616 "ns3::RandomRectanglePositionAllocator",
617 "ns3::RandomBoxPositionAllocator",
618 "ns3::RandomDiscPositionAllocator",
619 "ns3::UniformDiscPositionAllocator",
620 "ns3::HierarchicalMobilityModel",
621 "ns3::aodv::RoutingProtocol",
622 "ns3::UdpEchoServer",
623 "ns3::UdpEchoClient",
625 "ns3::OnOffApplication",
626 "ns3::VirtualNetDevice",
627 "ns3::FileDescriptorNetDevice",
628 "ns3::Nepi::TunChannel",
630 "ns3::BridgeChannel",
631 "ns3::BridgeNetDevice",
634 "ns3::CsmaNetDevice",
635 "ns3::PointToPointRemoteChannel",
636 "ns3::PointToPointChannel",
637 "ns3::PointToPointNetDevice",
638 "ns3::NscTcpL4Protocol",
639 "ns3::Icmpv6L4Protocol",
640 "ns3::Ipv6OptionPad1",
641 "ns3::Ipv6OptionPadn",
642 "ns3::Ipv6OptionJumbogram",
643 "ns3::Ipv6OptionRouterAlert",
644 "ns3::Ipv6ExtensionHopByHop",
645 "ns3::Ipv6ExtensionDestination",
646 "ns3::Ipv6ExtensionFragment",
647 "ns3::Ipv6ExtensionRouting",
648 "ns3::Ipv6ExtensionLooseRouting",
649 "ns3::Ipv6ExtensionESP",
650 "ns3::Ipv6ExtensionAH",
651 "ns3::Ipv6L3Protocol",
652 "ns3::LoopbackNetDevice",
653 "ns3::Icmpv4L4Protocol",
654 "ns3::RttMeanDeviation",
655 "ns3::ArpL3Protocol",
656 "ns3::TcpL4Protocol",
657 "ns3::UdpL4Protocol",
658 "ns3::Ipv4L3Protocol",
659 "ns3::SimpleNetDevice",
660 "ns3::SimpleChannel",
662 "ns3::DropTailQueue",
664 "ns3::FriisSpectrumPropagationLossModel",
665 "ns3::Cost231PropagationLossModel",
666 "ns3::JakesPropagationLossModel",
667 "ns3::RandomPropagationLossModel",
668 "ns3::FriisPropagationLossModel",
669 "ns3::TwoRayGroundPropagationLossModel",
670 "ns3::LogDistancePropagationLossModel",
671 "ns3::ThreeLogDistancePropagationLossModel",
672 "ns3::NakagamiPropagationLossModel",
673 "ns3::FixedRssLossModel",
674 "ns3::MatrixPropagationLossModel",
675 "ns3::RangePropagationLossModel",
676 "ns3::RandomPropagationDelayModel",
677 "ns3::ConstantSpeedPropagationDelayModel",
678 "ns3::RateErrorModel",
679 "ns3::ListErrorModel",
680 "ns3::ReceiveListErrorModel",
682 "ns3::EnergySourceContainer",
683 "ns3::BSSchedulerRtps",
684 "ns3::BSSchedulerSimple",
685 "ns3::SimpleOfdmWimaxChannel",
686 "ns3::SimpleOfdmWimaxPhy",
687 "ns3::UplinkSchedulerMBQoS",
688 "ns3::UplinkSchedulerRtps",
689 "ns3::UplinkSchedulerSimple",
690 "ns3::IpcsClassifierRecord",
692 "ns3::BaseStationNetDevice",
693 "ns3::SubscriberStationNetDevice",
696 factories_info = dict({
698 "category": "Application",
699 "create_function": create_element,
700 "configure_function": configure_element,
702 "connector_types": [],
703 "stop_function": stop_application,
704 "start_function": start_application,
705 "status_function": status_application,
706 "box_attributes": ["MaxPackets",
714 "ns3::UdpL4Protocol": dict({
715 "category": "Protocol",
716 "create_function": create_element,
717 "configure_function": configure_element,
719 "connector_types": ["node"],
720 "box_attributes": ["ProtocolNumber"],
722 "ns3::RandomDiscPositionAllocator": dict({
723 "category": "Mobility",
724 "create_function": create_element,
725 "configure_function": configure_element,
727 "connector_types": [],
728 "box_attributes": ["Theta",
732 "tags": [tags.MOBILE],
735 "category": "Topology",
736 "create_function": create_node,
737 "configure_function": configure_node,
739 "connector_types": ["devs", "apps", "protos", "mobility"],
740 "allow_routes": True,
741 "box_attributes": [],
743 "ns3::GridPositionAllocator": dict({
744 "category": "Mobility",
745 "create_function": create_element,
746 "configure_function": configure_element,
748 "connector_types": [],
749 "box_attributes": ["GridWidth",
755 "tags": [tags.MOBILE],
757 "ns3::TapBridge": dict({
758 "category": "Device",
759 "create_function": create_element,
760 "configure_function": configure_element,
762 "connector_types": [],
763 "allow_addresses": True,
764 "box_attributes": ["Mtu",
773 "ns3::FlowMonitor": dict({
775 "create_function": create_element,
776 "configure_function": configure_element,
778 "connector_types": [],
779 "box_attributes": ["MaxPerHopDelay",
782 "PacketSizeBinWidth",
783 "FlowInterruptionsBinWidth",
784 "FlowInterruptionsMinTime"],
786 "ns3::ConstantVelocityMobilityModel": dict({
787 "category": "Mobility",
788 "create_function": create_element,
789 "configure_function": configure_element,
791 "connector_types": ["node"],
792 "box_attributes": ["Position",
794 "tags": [tags.MOBILE],
796 "ns3::V4Ping": dict({
797 "category": "Application",
798 "create_function": create_element,
799 "configure_function": configure_element,
801 "connector_types": ["node"],
802 "stop_function": stop_application,
803 "start_function": start_application,
804 "status_function": status_application,
805 "box_attributes": ["Remote",
813 "ns3::dot11s::PeerLink": dict({
815 "create_function": create_element,
816 "configure_function": configure_element,
818 "connector_types": [],
819 "box_attributes": ["RetryTimeout",
826 "ns3::PointToPointNetDevice": dict({
827 "category": "Device",
828 "create_function": create_element,
829 "configure_function": configure_device,
831 "connector_types": ["node", "err", "queue", "chan"],
832 "allow_addresses": True,
833 "box_attributes": ["Mtu",
837 "traces": ["p2ppcap", "p2pascii"]
839 "ns3::NakagamiPropagationLossModel": dict({
841 "create_function": create_element,
842 "configure_function": configure_element,
844 "connector_types": [],
845 "box_attributes": ["Distance1",
851 "ns3::AarfWifiManager": dict({
852 "category": "Manager",
853 "create_function": create_element,
854 "configure_function": configure_element,
856 "connector_types": [],
857 "box_attributes": ["SuccessK",
859 "MaxSuccessThreshold",
861 "MinSuccessThreshold",
866 "FragmentationThreshold",
869 "ns3::Ipv6OptionJumbogram": dict({
871 "create_function": create_element,
872 "configure_function": configure_element,
874 "connector_types": [],
875 "box_attributes": ["OptionNumber"],
877 "ns3::TwoRayGroundPropagationLossModel": dict({
879 "create_function": create_element,
880 "configure_function": configure_element,
882 "connector_types": [],
883 "box_attributes": ["Lambda",
888 "ns3::OnOffApplication": dict({
889 "category": "Application",
890 "create_function": create_element,
891 "configure_function": configure_element,
893 "connector_types": ["node"],
894 "stop_function": stop_application,
895 "start_function": start_application,
896 "status_function": status_application,
897 "box_attributes": ["DataRate",
907 "ns3::AdhocWifiMac": dict({
909 "create_function": create_element,
910 "configure_function": configure_element,
912 "connector_types": [],
913 "box_attributes": ["CtsTimeout",
915 "BasicBlockAckTimeout",
916 "CompressedBlockAckTimeout",
921 "MaxPropagationDelay",
924 "ns3::ConstantAccelerationMobilityModel": dict({
925 "category": "Mobility",
926 "create_function": create_element,
927 "configure_function": configure_element,
929 "connector_types": ["node"],
930 "box_attributes": ["Position",
932 "tags": [tags.MOBILE],
934 "ns3::GaussMarkovMobilityModel": dict({
935 "category": "Mobility",
936 "create_function": create_element,
937 "configure_function": configure_element,
939 "connector_types": [],
940 "box_attributes": ["Bounds",
951 "tags": [tags.MOBILE],
953 "ns3::dot11s::HwmpProtocol": dict({
954 "category": "Protocol",
955 "create_function": create_element,
956 "configure_function": configure_element,
958 "connector_types": [],
959 "box_attributes": ["RandomStart",
961 "Dot11MeshHWMPmaxPREQretries",
962 "Dot11MeshHWMPnetDiameterTraversalTime",
963 "Dot11MeshHWMPpreqMinInterval",
964 "Dot11MeshHWMPperrMinInterval",
965 "Dot11MeshHWMPactiveRootTimeout",
966 "Dot11MeshHWMPactivePathTimeout",
967 "Dot11MeshHWMPpathToRootInterval",
968 "Dot11MeshHWMPrannInterval",
970 "UnicastPerrThreshold",
971 "UnicastPreqThreshold",
972 "UnicastDataThreshold",
976 "ns3::NscTcpL4Protocol": dict({
977 "category": "Protocol",
978 "create_function": create_element,
979 "configure_function": configure_element,
981 "connector_types": [],
982 "box_attributes": ["Library",
985 "ns3::dot11s::AirtimeLinkMetricCalculator": dict({
987 "create_function": create_element,
988 "configure_function": configure_element,
990 "connector_types": [],
991 "box_attributes": ["Dot11sMeshHeaderLength"],
993 "ns3::UanMacCw": dict({
995 "create_function": create_element,
996 "configure_function": configure_element,
998 "connector_types": [],
999 "box_attributes": ["CW",
1002 "ns3::AthstatsWifiTraceSink": dict({
1004 "create_function": create_element,
1005 "configure_function": configure_element,
1007 "connector_types": [],
1008 "box_attributes": ["Interval"],
1010 "ns3::FlameStack": dict({
1012 "create_function": create_element,
1013 "configure_function": configure_element,
1015 "connector_types": [],
1016 "box_attributes": [],
1018 "ns3::UanMacRc": dict({
1020 "create_function": create_element,
1021 "configure_function": configure_element,
1023 "connector_types": [],
1024 "box_attributes": ["RetryRate",
1031 "NumberOfRetryRates",
1034 "ns3::WaypointMobilityModel": dict({
1035 "category": "Mobility",
1036 "create_function": create_element,
1037 "configure_function": configure_element,
1039 "connector_types": [],
1040 "box_attributes": ["WaypointsLeft",
1043 "tags": [tags.MOBILE],
1045 "ns3::FileDescriptorNetDevice": dict({
1046 "category": "Device",
1047 "create_function": create_element,
1048 "configure_function": configure_device,
1049 "help": "Network interface associated to a file descriptor",
1050 "connector_types": ["node", "->fd"],
1051 "allow_addresses": True,
1052 "box_attributes": ["Address",
1053 "LinuxSocketAddress",
1054 "tun_proto", "tun_addr", "tun_port", "tun_key"],
1055 "traces": ["fdpcap"]
1057 "ns3::Nepi::TunChannel": dict({
1058 "category": "Channel",
1059 "create_function": create_tunchannel,
1060 "preconfigure_function": preconfigure_tunchannel,
1061 "configure_function": postconfigure_tunchannel,
1062 "start_function": wait_tunchannel,
1063 "help": "Channel to forward FileDescriptorNetDevice data to "
1064 "other TAP interfaces supporting the NEPI tunneling protocol.",
1065 "connector_types": ["fd->", "udp", "tcp"],
1066 "allow_addresses": False,
1067 "box_attributes": ["tun_proto", "tun_addr", "tun_port", "tun_key"]
1069 "ns3::CsmaNetDevice": dict({
1070 "category": "Device",
1071 "create_function": create_element,
1072 "configure_function": configure_device,
1073 "help": "CSMA (carrier sense, multiple access) interface",
1074 "connector_types": ["node", "chan", "err", "queue"],
1075 "allow_addresses": True,
1076 "box_attributes": ["Address",
1080 "traces": ["csmapcap", "csmapcap_promisc"]
1082 "ns3::UanPropModelThorp": dict({
1084 "create_function": create_element,
1085 "configure_function": configure_element,
1087 "connector_types": [],
1088 "box_attributes": ["SpreadCoef"],
1090 "ns3::NqstaWifiMac": dict({
1092 "create_function": create_element,
1093 "configure_function": configure_element,
1095 "connector_types": [],
1096 "box_attributes": ["ProbeRequestTimeout",
1097 "AssocRequestTimeout",
1101 "BasicBlockAckTimeout",
1102 "CompressedBlockAckTimeout",
1107 "MaxPropagationDelay",
1110 "ns3::Icmpv6L4Protocol": dict({
1111 "category": "Protocol",
1112 "create_function": create_element,
1113 "configure_function": configure_element,
1115 "connector_types": ["node"],
1116 "box_attributes": ["DAD",
1119 "ns3::SimpleNetDevice": dict({
1120 "category": "Device",
1121 "create_function": create_element,
1122 "configure_function": configure_element,
1124 "connector_types": ["node", "chan"],
1125 "allow_addresses": True,
1126 "box_attributes": [],
1128 "ns3::FriisPropagationLossModel": dict({
1130 "create_function": create_element,
1131 "configure_function": configure_element,
1133 "connector_types": [],
1134 "box_attributes": ["Lambda",
1138 "ns3::Ipv6OptionRouterAlert": dict({
1140 "create_function": create_element,
1141 "configure_function": configure_element,
1143 "connector_types": [],
1144 "box_attributes": ["OptionNumber"],
1146 "ns3::UniformDiscPositionAllocator": dict({
1147 "category": "Mobility",
1148 "create_function": create_element,
1149 "configure_function": configure_element,
1151 "connector_types": [],
1152 "box_attributes": ["rho",
1155 "tags": [tags.MOBILE],
1157 "ns3::RandomBoxPositionAllocator": dict({
1158 "category": "Mobility",
1159 "create_function": create_element,
1160 "configure_function": configure_element,
1162 "connector_types": [],
1163 "box_attributes": ["X",
1166 "tags": [tags.MOBILE],
1168 "ns3::Ipv6ExtensionDestination": dict({
1170 "create_function": create_element,
1171 "configure_function": configure_element,
1173 "connector_types": [],
1174 "box_attributes": ["ExtensionNumber"],
1176 "ns3::LoopbackNetDevice": dict({
1177 "category": "Device",
1178 "create_function": create_element,
1179 "configure_function": configure_element,
1181 "connector_types": [],
1182 "box_attributes": [],
1184 "ns3::ConstantSpeedPropagationDelayModel": dict({
1185 "category": "Delay",
1186 "create_function": create_element,
1187 "configure_function": configure_element,
1189 "connector_types": ["chan"],
1190 "box_attributes": ["Speed"],
1192 "ns3::Ipv6ExtensionHopByHop": dict({
1194 "create_function": create_element,
1195 "configure_function": configure_element,
1197 "connector_types": [],
1198 "box_attributes": ["ExtensionNumber"],
1200 "ns3::BridgeChannel": dict({
1201 "category": "Channel",
1202 "create_function": create_element,
1203 "configure_function": configure_element,
1205 "connector_types": [],
1206 "box_attributes": [],
1208 "ns3::Radvd": dict({
1210 "create_function": create_element,
1211 "configure_function": configure_element,
1213 "connector_types": [],
1214 "box_attributes": ["StartTime",
1217 "ns3::PacketSocket": dict({
1219 "create_function": create_element,
1220 "configure_function": configure_element,
1222 "connector_types": [],
1223 "box_attributes": ["RcvBufSize"],
1225 "ns3::flame::FlameProtocol": dict({
1226 "category": "Protocol",
1227 "create_function": create_element,
1228 "configure_function": configure_element,
1230 "connector_types": [],
1231 "box_attributes": ["BroadcastInterval",
1234 "ns3::Cost231PropagationLossModel": dict({
1236 "create_function": create_element,
1237 "configure_function": configure_element,
1239 "connector_types": [],
1240 "box_attributes": ["Lambda",
1246 "ns3::Ipv6ExtensionESP": dict({
1248 "create_function": create_element,
1249 "configure_function": configure_element,
1251 "connector_types": [],
1252 "box_attributes": ["ExtensionNumber"],
1254 "ns3::CaraWifiManager": dict({
1255 "category": "Manager",
1256 "create_function": create_element,
1257 "configure_function": configure_element,
1259 "connector_types": [],
1260 "box_attributes": ["ProbeThreshold",
1268 "FragmentationThreshold",
1272 "ns3::RttMeanDeviation": dict({
1274 "create_function": create_element,
1275 "configure_function": configure_element,
1277 "connector_types": [],
1278 "box_attributes": ["Gain",
1280 "InitialEstimation",
1283 "ns3::Icmpv4L4Protocol": dict({
1284 "category": "Protocol",
1285 "create_function": create_element,
1286 "configure_function": configure_element,
1288 "connector_types": ["node"],
1289 "box_attributes": ["ProtocolNumber"],
1291 "ns3::WaveformGenerator": dict({
1293 "create_function": create_element,
1294 "configure_function": configure_element,
1296 "connector_types": [],
1297 "box_attributes": ["Period",
1300 "ns3::YansWifiChannel": dict({
1301 "category": "Channel",
1302 "create_function": create_element,
1303 "configure_function": configure_element,
1305 "connector_types": ["phys", "delay", "loss"],
1306 "box_attributes": [],
1308 "ns3::SimpleChannel": dict({
1309 "category": "Channel",
1310 "create_function": create_element,
1311 "configure_function": configure_element,
1313 "connector_types": ["devs"],
1314 "box_attributes": [],
1316 "ns3::Ipv6ExtensionFragment": dict({
1318 "create_function": create_element,
1319 "configure_function": configure_element,
1321 "connector_types": [],
1322 "box_attributes": ["ExtensionNumber"],
1324 "ns3::Dot11sStack": dict({
1326 "create_function": create_element,
1327 "configure_function": configure_element,
1329 "connector_types": [],
1330 "box_attributes": ["Root"],
1332 "ns3::FriisSpectrumPropagationLossModel": dict({
1334 "create_function": create_element,
1335 "configure_function": configure_element,
1337 "connector_types": [],
1338 "box_attributes": [],
1340 "ns3::RandomRectanglePositionAllocator": dict({
1341 "category": "Mobility",
1342 "create_function": create_element,
1343 "configure_function": configure_element,
1345 "connector_types": [],
1346 "box_attributes": ["X",
1348 "tags": [tags.MOBILE],
1350 "ns3::NqapWifiMac": dict({
1352 "create_function": create_element,
1353 "configure_function": configure_element,
1355 "connector_types": [],
1356 "box_attributes": ["BeaconInterval",
1360 "BasicBlockAckTimeout",
1361 "CompressedBlockAckTimeout",
1366 "MaxPropagationDelay",
1369 "ns3::HierarchicalMobilityModel": dict({
1370 "category": "Mobility",
1371 "create_function": create_element,
1372 "configure_function": configure_element,
1374 "connector_types": ["node"],
1375 "box_attributes": ["Position",
1377 "tags": [tags.MOBILE],
1379 "ns3::ThreeLogDistancePropagationLossModel": dict({
1381 "create_function": create_element,
1382 "configure_function": configure_element,
1384 "connector_types": [],
1385 "box_attributes": ["Distance0",
1393 "ns3::UanNoiseModelDefault": dict({
1395 "create_function": create_element,
1396 "configure_function": configure_element,
1398 "connector_types": [],
1399 "box_attributes": ["Wind",
1402 "ns3::dot11s::HwmpRtable": dict({
1404 "create_function": create_element,
1405 "configure_function": configure_element,
1407 "connector_types": [],
1408 "box_attributes": [],
1410 "ns3::PacketBurst": dict({
1412 "create_function": create_element,
1413 "configure_function": configure_element,
1415 "connector_types": [],
1416 "box_attributes": [],
1418 "ns3::RandomPropagationDelayModel": dict({
1419 "category": "Delay",
1420 "create_function": create_element,
1421 "configure_function": configure_element,
1423 "connector_types": [],
1424 "box_attributes": ["Variable"],
1426 "ns3::ArpL3Protocol": dict({
1427 "category": "Protocol",
1428 "create_function": create_element,
1429 "configure_function": configure_element,
1431 "connector_types": ["node"],
1432 "box_attributes": [],
1434 "ns3::SteadyStateRandomWaypointMobilityModel": dict({
1435 "category": "Mobility",
1436 "create_function": create_element,
1437 "configure_function": configure_element,
1439 "connector_types": [],
1440 "box_attributes": ["MinSpeed",
1450 "tags": [tags.MOBILE],
1452 "ns3::BaseStationNetDevice": dict({
1453 "category": "Device",
1454 "create_function": create_base_station,
1455 "configure_function": configure_station,
1456 "help": "Base station for wireless mobile network",
1457 "connector_types": ["node", "chan", "phy", "uplnk", "dwnlnk"],
1458 "allow_addresses": True,
1459 "box_attributes": ["InitialRangInterval",
1465 "MaxRangCorrectionRetries",
1469 "traces": ["wimaxpcap", "wimaxascii"],
1471 "ns3::UdpServer": dict({
1472 "category": "Application",
1473 "create_function": create_element,
1474 "configure_function": configure_element,
1476 "connector_types": ["node"],
1477 "stop_function": stop_application,
1478 "start_function": start_application,
1479 "status_function": status_application,
1480 "box_attributes": ["Port",
1485 "ns3::AarfcdWifiManager": dict({
1486 "category": "Manager",
1487 "create_function": create_element,
1488 "configure_function": configure_element,
1490 "connector_types": [],
1491 "box_attributes": ["SuccessK",
1493 "MaxSuccessThreshold",
1494 "MinTimerThreshold",
1495 "MinSuccessThreshold",
1498 "TurnOffRtsAfterRateDecrease",
1499 "TurnOnRtsAfterRateIncrease",
1504 "FragmentationThreshold",
1507 "ns3::UanTransducerHd": dict({
1509 "create_function": create_element,
1510 "configure_function": configure_element,
1512 "connector_types": [],
1513 "box_attributes": [],
1515 "ns3::LogDistancePropagationLossModel": dict({
1517 "create_function": create_element,
1518 "configure_function": configure_element,
1520 "connector_types": ["prev", "next"],
1521 "box_attributes": ["Exponent",
1522 "ReferenceDistance",
1525 "ns3::EmuNetDevice": dict({
1526 "category": "Device",
1527 "create_function": create_element,
1528 "configure_function": configure_element,
1530 "connector_types": ["node", "queue"],
1531 "box_attributes": ["Mtu",
1538 "ns3::Ipv6ExtensionLooseRouting": dict({
1539 "category": "Routing",
1540 "create_function": create_element,
1541 "configure_function": configure_element,
1543 "connector_types": [],
1544 "box_attributes": ["ExtensionNumber"],
1546 "ns3::RandomWaypointMobilityModel": dict({
1547 "category": "Mobility",
1548 "create_function": create_element,
1549 "configure_function": configure_element,
1551 "connector_types": ["node"],
1552 "box_attributes": ["Speed",
1556 "tags": [tags.MOBILE],
1558 "ns3::RangePropagationLossModel": dict({
1560 "create_function": create_element,
1561 "configure_function": configure_element,
1563 "connector_types": [],
1564 "box_attributes": ["MaxRange"],
1566 "ns3::AlohaNoackNetDevice": dict({
1567 "category": "Device",
1568 "create_function": create_element,
1569 "configure_function": configure_element,
1571 "connector_types": [],
1572 "box_attributes": ["Address",
1575 "ns3::MatrixPropagationLossModel": dict({
1577 "create_function": create_element,
1578 "configure_function": configure_element,
1580 "connector_types": [],
1581 "box_attributes": ["DefaultLoss"],
1583 "ns3::WifiNetDevice": dict({
1585 "create_function": create_element,
1586 "configure_function": configure_device,
1588 "connector_types": ["node", "mac", "phy", "manager"],
1589 "allow_addresses": True,
1590 "box_attributes": ["Mtu"],
1592 "ns3::CsmaChannel": dict({
1593 "category": "Topology",
1594 "create_function": create_element,
1595 "configure_function": configure_element,
1597 "connector_types": ["devs"],
1598 "box_attributes": ["DataRate",
1601 "ns3::BridgeNetDevice": dict({
1602 "category": "Device",
1603 "create_function": create_element,
1604 "configure_function": configure_element,
1606 "connector_types": ["node"],
1607 "allow_addresses": True,
1608 "box_attributes": ["Mtu",
1612 "ns3::Ipv6ExtensionRouting": dict({
1613 "category": "Routing",
1614 "create_function": create_element,
1615 "configure_function": configure_element,
1617 "connector_types": [],
1618 "box_attributes": ["ExtensionNumber"],
1620 "ns3::QstaWifiMac": dict({
1622 "create_function": create_wifi_standard_model,
1623 "configure_function": configure_element,
1624 "help": "Station Wifi MAC Model",
1625 "connector_types": ["dev"],
1626 "box_attributes": ["ProbeRequestTimeout",
1627 "AssocRequestTimeout",
1631 "BasicBlockAckTimeout",
1632 "CompressedBlockAckTimeout",
1637 "MaxPropagationDelay",
1641 "ns3::UdpEchoClient": dict({
1642 "category": "Application",
1643 "create_function": create_element,
1644 "configure_function": configure_element,
1646 "connector_types": ["node"],
1647 "stop_function": stop_application,
1648 "start_function": start_application,
1649 "status_function": status_application,
1650 "box_attributes": ["MaxPackets",
1658 "ns3::UdpClient": dict({
1659 "category": "Application",
1660 "create_function": create_element,
1661 "configure_function": configure_element,
1663 "connector_types": ["node"],
1664 "stop_function": stop_application,
1665 "start_function": start_application,
1666 "status_function": status_application,
1667 "box_attributes": ["MaxPackets",
1675 "ns3::PointToPointChannel": dict({
1676 "category": "Channel",
1677 "create_function": create_element,
1678 "configure_function": configure_element,
1680 "connector_types": ["dev2"],
1681 "box_attributes": ["Delay"],
1683 "ns3::Ipv6StaticRouting": dict({
1684 "category": "Routing",
1685 "create_function": create_element,
1686 "configure_function": configure_element,
1688 "connector_types": [],
1689 "box_attributes": [],
1691 "ns3::DropTailQueue": dict({
1692 "category": "Queue",
1693 "create_function": create_element,
1694 "configure_function": configure_element,
1696 "connector_types": ["dev"],
1697 "box_attributes": ["MaxPackets",
1700 "ns3::ConstantPositionMobilityModel": dict({
1701 "category": "Mobility",
1702 "create_function": create_element,
1703 "configure_function": configure_element,
1705 "connector_types": ["node"],
1706 "box_attributes": ["Position",
1708 "tags": [tags.MOBILE],
1710 "ns3::FixedRssLossModel": dict({
1712 "create_function": create_element,
1713 "configure_function": configure_element,
1715 "connector_types": [],
1716 "box_attributes": ["Rss"],
1718 "ns3::EnergySourceContainer": dict({
1719 "category": "Energy",
1720 "create_function": create_element,
1721 "configure_function": configure_element,
1723 "connector_types": [],
1724 "box_attributes": [],
1726 "ns3::RandomWalk2dMobilityModel": dict({
1727 "category": "Mobility",
1728 "create_function": create_element,
1729 "configure_function": configure_element,
1731 "connector_types": ["node"],
1732 "box_attributes": ["Bounds",
1740 "tags": [tags.MOBILE],
1742 "ns3::ListPositionAllocator": dict({
1744 "create_function": create_element,
1745 "configure_function": configure_element,
1747 "connector_types": [],
1748 "box_attributes": [],
1750 "ns3::dot11s::PeerManagementProtocol": dict({
1751 "category": "Protocol",
1752 "create_function": create_element,
1753 "configure_function": configure_element,
1755 "connector_types": [],
1756 "box_attributes": ["MaxNumberOfPeerLinks",
1757 "MaxBeaconShiftValue",
1758 "EnableBeaconCollisionAvoidance"],
1760 "ns3::MeshPointDevice": dict({
1761 "category": "Topology",
1762 "create_function": create_element,
1763 "configure_function": configure_element,
1765 "connector_types": [],
1766 "allow_addresses": True,
1767 "box_attributes": ["Mtu"],
1769 "ns3::BasicEnergySource": dict({
1770 "category": "Energy",
1771 "create_function": create_element,
1772 "configure_function": configure_element,
1774 "connector_types": [],
1775 "box_attributes": ["BasicEnergySourceInitialEnergyJ",
1776 "BasicEnergySupplyVoltageV",
1777 "PeriodicEnergyUpdateInterval"],
1779 "ns3::Ipv6OptionPadn": dict({
1781 "create_function": create_element,
1782 "configure_function": configure_element,
1784 "connector_types": [],
1785 "box_attributes": ["OptionNumber"],
1787 "ns3::QapWifiMac": dict({
1789 "create_function": create_wifi_standard_model,
1790 "configure_function": configure_element,
1791 "help": "Access point Wifi MAC Model",
1792 "connector_types": ["dev"],
1793 "box_attributes": ["BeaconInterval",
1797 "BasicBlockAckTimeout",
1798 "CompressedBlockAckTimeout",
1803 "MaxPropagationDelay",
1807 "ns3::YansErrorRateModel": dict({
1808 "category": "Error",
1809 "create_function": create_element,
1810 "configure_function": configure_element,
1812 "connector_types": [],
1813 "box_attributes": [],
1815 "ns3::WifiMacQueue": dict({
1816 "category": "Queue",
1817 "create_function": create_element,
1818 "configure_function": configure_element,
1820 "connector_types": [],
1821 "box_attributes": ["MaxPacketNumber",
1824 "ns3::NonCommunicatingNetDevice": dict({
1825 "category": "Device",
1826 "create_function": create_element,
1827 "configure_function": configure_element,
1829 "connector_types": [],
1830 "allow_addresses": True,
1831 "box_attributes": [],
1833 "ns3::RateErrorModel": dict({
1834 "category": "Error",
1835 "create_function": create_element,
1836 "configure_function": configure_element,
1838 "connector_types": [],
1839 "box_attributes": ["ErrorUnit",
1844 "ns3::MeshWifiInterfaceMac": dict({
1846 "create_function": create_element,
1847 "configure_function": configure_element,
1849 "connector_types": [],
1850 "box_attributes": ["BeaconInterval",
1855 "BasicBlockAckTimeout",
1856 "CompressedBlockAckTimeout",
1861 "MaxPropagationDelay",
1864 "ns3::UanPhyCalcSinrDual": dict({
1866 "create_function": create_element,
1867 "configure_function": configure_element,
1869 "connector_types": [],
1870 "box_attributes": [],
1872 "ns3::Ipv6ExtensionAH": dict({
1874 "create_function": create_element,
1875 "configure_function": configure_element,
1877 "connector_types": [],
1878 "box_attributes": ["ExtensionNumber"],
1880 "ns3::SingleModelSpectrumChannel": dict({
1881 "category": "Channel",
1882 "create_function": create_element,
1883 "configure_function": configure_element,
1885 "connector_types": [],
1886 "box_attributes": [],
1888 "ns3::YansWifiPhy": dict({
1890 "create_function": create_wifi_standard_model,
1891 "configure_function": configure_element,
1893 "connector_types": ["dev", "err", "chan"],
1894 "box_attributes": ["EnergyDetectionThreshold",
1895 "CcaMode1Threshold",
1902 "ChannelSwitchDelay",
1905 "traces": ["yanswifipcap"]
1907 "ns3::WifiRadioEnergyModel": dict({
1908 "category": "Energy",
1909 "create_function": create_element,
1910 "configure_function": configure_element,
1912 "connector_types": [],
1913 "box_attributes": ["TxCurrentA",
1918 "ns3::EdcaTxopN": dict({
1920 "create_function": create_element,
1921 "configure_function": configure_element,
1923 "connector_types": [],
1924 "box_attributes": ["BlockAckThreshold",
1929 "ns3::UanPhyPerGenDefault": dict({
1931 "create_function": create_element,
1932 "configure_function": configure_element,
1934 "connector_types": [],
1935 "box_attributes": ["Threshold"],
1937 "ns3::IdealWifiManager": dict({
1938 "category": "Manager",
1939 "create_function": create_element,
1940 "configure_function": configure_element,
1942 "connector_types": [],
1943 "box_attributes": ["BerThreshold",
1948 "FragmentationThreshold",
1951 "ns3::MultiModelSpectrumChannel": dict({
1952 "category": "Channel",
1953 "create_function": create_element,
1954 "configure_function": configure_element,
1956 "connector_types": [],
1957 "box_attributes": [],
1959 "ns3::HalfDuplexIdealPhy": dict({
1961 "create_function": create_element,
1962 "configure_function": configure_element,
1964 "connector_types": [],
1965 "box_attributes": ["Rate"],
1967 "ns3::UanPhyCalcSinrDefault": dict({
1969 "create_function": create_element,
1970 "configure_function": configure_element,
1972 "connector_types": [],
1973 "box_attributes": [],
1975 "ns3::ReceiveListErrorModel": dict({
1976 "category": "Error",
1977 "create_function": create_element,
1978 "configure_function": configure_element,
1980 "connector_types": [],
1981 "box_attributes": ["IsEnabled"],
1983 "ns3::SpectrumAnalyzer": dict({
1985 "create_function": create_element,
1986 "configure_function": configure_element,
1988 "connector_types": [],
1989 "box_attributes": ["Resolution",
1990 "NoisePowerSpectralDensity"],
1992 "ns3::ConstantRateWifiManager": dict({
1993 "category": "Manager",
1994 "create_function": create_element,
1995 "configure_function": configure_element,
1997 "connector_types": ["dev"],
1998 "box_attributes": ["DataMode",
2004 "FragmentationThreshold",
2007 "ns3::Ipv6OptionPad1": dict({
2009 "create_function": create_element,
2010 "configure_function": configure_element,
2012 "connector_types": [],
2013 "box_attributes": ["OptionNumber"],
2015 "ns3::UdpTraceClient": dict({
2017 "create_function": create_element,
2018 "configure_function": configure_element,
2020 "connector_types": [],
2021 "box_attributes": ["RemoteAddress",
2027 "ns3::RraaWifiManager": dict({
2028 "category": "Manager",
2029 "create_function": create_element,
2030 "configure_function": configure_element,
2032 "connector_types": [],
2033 "box_attributes": ["Basic",
2061 "FragmentationThreshold",
2064 "ns3::RandomPropagationLossModel": dict({
2066 "create_function": create_element,
2067 "configure_function": configure_element,
2069 "connector_types": [],
2070 "box_attributes": ["Variable"],
2072 "ns3::UanChannel": dict({
2073 "category": "Channel",
2074 "create_function": create_element,
2075 "configure_function": configure_element,
2077 "connector_types": [],
2078 "box_attributes": [],
2080 "ns3::MinstrelWifiManager": dict({
2081 "category": "Manager",
2082 "create_function": create_element,
2083 "configure_function": configure_element,
2085 "connector_types": [],
2086 "box_attributes": ["UpdateStatistics",
2096 "FragmentationThreshold",
2099 "ns3::UanPhyDual": dict({
2101 "create_function": create_element,
2102 "configure_function": configure_element,
2104 "connector_types": [],
2105 "box_attributes": ["CcaThresholdPhy1",
2111 "SupportedModesPhy1",
2112 "SupportedModesPhy2"],
2114 "ns3::ListErrorModel": dict({
2115 "category": "Error",
2116 "create_function": create_element,
2117 "configure_function": configure_element,
2119 "connector_types": ["dev"],
2120 "box_attributes": ["IsEnabled"],
2122 "ns3::VirtualNetDevice": dict({
2123 "category": "Device",
2124 "create_function": create_element,
2125 "configure_function": configure_element,
2127 "connector_types": [],
2128 "allow_addresses": True,
2129 "box_attributes": ["Mtu"],
2131 "ns3::UanPhyGen": dict({
2133 "create_function": create_element,
2134 "configure_function": configure_element,
2136 "connector_types": [],
2137 "box_attributes": ["CcaThreshold",
2143 "ns3::Ipv6L3Protocol": dict({
2144 "category": "Protocol",
2145 "create_function": create_element,
2146 "configure_function": configure_element,
2148 "connector_types": ["node"],
2149 "box_attributes": ["DefaultTtl",
2152 "ns3::PointToPointRemoteChannel": dict({
2153 "category": "Channel",
2154 "create_function": create_element,
2155 "configure_function": configure_element,
2157 "connector_types": [],
2158 "box_attributes": ["Delay"],
2160 "ns3::UanPhyPerUmodem": dict({
2162 "create_function": create_element,
2163 "configure_function": configure_element,
2165 "connector_types": [],
2166 "box_attributes": [],
2168 "ns3::OnoeWifiManager": dict({
2169 "category": "Manager",
2170 "create_function": create_element,
2171 "configure_function": configure_element,
2173 "connector_types": [],
2174 "box_attributes": ["UpdatePeriod",
2176 "AddCreditThreshold",
2181 "FragmentationThreshold",
2184 "ns3::QadhocWifiMac": dict({
2186 "create_function": create_element,
2187 "configure_function": configure_element,
2189 "connector_types": [],
2190 "box_attributes": ["CtsTimeout",
2192 "BasicBlockAckTimeout",
2193 "CompressedBlockAckTimeout",
2198 "MaxPropagationDelay",
2201 "ns3::JakesPropagationLossModel": dict({
2203 "create_function": create_element,
2204 "configure_function": configure_element,
2206 "connector_types": [],
2207 "box_attributes": ["NumberOfRaysPerPath",
2208 "NumberOfOscillatorsPerRay",
2212 "ns3::PacketSink": dict({
2213 "category": "Application",
2214 "create_function": create_element,
2215 "configure_function": configure_element,
2217 "connector_types": ["node"],
2218 "stop_function": stop_application,
2219 "start_function": start_application,
2220 "status_function": status_application,
2221 "box_attributes": ["Local",
2226 "ns3::RandomDirection2dMobilityModel": dict({
2227 "category": "Mobility",
2228 "create_function": create_element,
2229 "configure_function": configure_element,
2231 "connector_types": ["node"],
2232 "box_attributes": ["Bounds",
2237 "tags": [tags.MOBILE],
2239 "ns3::UanMacAloha": dict({
2241 "create_function": create_element,
2242 "configure_function": configure_element,
2244 "connector_types": [],
2245 "box_attributes": [],
2247 "ns3::MsduStandardAggregator": dict({
2249 "create_function": create_element,
2250 "configure_function": configure_element,
2252 "connector_types": [],
2253 "box_attributes": ["MaxAmsduSize"],
2255 "ns3::DcaTxop": dict({
2257 "create_function": create_element,
2258 "configure_function": configure_element,
2260 "connector_types": [],
2261 "box_attributes": ["MinCw",
2265 "ns3::UanPhyCalcSinrFhFsk": dict({
2267 "create_function": create_element,
2268 "configure_function": configure_element,
2270 "connector_types": [],
2271 "box_attributes": ["NumberOfHops"],
2273 "ns3::UanPropModelIdeal": dict({
2275 "create_function": create_element,
2276 "configure_function": configure_element,
2278 "connector_types": [],
2279 "box_attributes": [],
2281 "ns3::UanMacRcGw": dict({
2283 "create_function": create_element,
2284 "configure_function": configure_element,
2286 "connector_types": [],
2287 "box_attributes": ["MaxReservations",
2295 "NumberOfRetryRates",
2300 "ns3::NistErrorRateModel": dict({
2301 "category": "Error",
2302 "create_function": create_element,
2303 "configure_function": configure_element,
2305 "connector_types": ["phy"],
2306 "box_attributes": [],
2308 "ns3::Ipv4L3Protocol": dict({
2309 "category": "Protocol",
2310 "create_function": create_ipv4protocol,
2311 "configure_function": configure_element,
2313 "connector_types": ["node"],
2314 "box_attributes": ["DefaultTtl",
2318 "ns3::aodv::RoutingProtocol": dict({
2319 "category": "Protocol",
2320 "create_function": create_element,
2321 "configure_function": configure_element,
2323 "connector_types": [],
2324 "box_attributes": ["HelloInterval",
2327 "NodeTraversalTime",
2329 "ActiveRouteTimeout",
2336 "PathDiscoveryTime",
2345 "ns3::TcpL4Protocol": dict({
2346 "category": "Protocol",
2347 "create_function": create_element,
2348 "configure_function": configure_element,
2350 "connector_types": ["node"],
2351 "box_attributes": ["RttEstimatorFactory",
2354 "ns3::olsr::RoutingProtocol": dict({
2355 "category": "Protocol",
2356 "create_function": create_element,
2357 "configure_function": configure_element,
2359 "connector_types": [],
2360 "box_attributes": ["HelloInterval",
2366 "ns3::UdpEchoServer": dict({
2367 "category": "Application",
2368 "create_function": create_element,
2369 "configure_function": configure_element,
2371 "connector_types": ["node"],
2372 "stop_function": stop_application,
2373 "start_function": start_application,
2374 "status_function": status_application,
2375 "box_attributes": ["Port",
2379 "ns3::AmrrWifiManager": dict({
2380 "category": "Manager",
2381 "create_function": create_element,
2382 "configure_function": configure_element,
2384 "connector_types": [],
2385 "box_attributes": ["UpdatePeriod",
2388 "MaxSuccessThreshold",
2389 "MinSuccessThreshold",
2394 "FragmentationThreshold",
2397 "ns3::ArfWifiManager": dict({
2398 "category": "Manager",
2399 "create_function": create_element,
2400 "configure_function": configure_element,
2402 "connector_types": ["dev"],
2403 "box_attributes": ["TimerThreshold",
2409 "FragmentationThreshold",
2412 "ns3::SubscriberStationNetDevice": dict({
2413 "category": "Device",
2414 "create_function": create_subscriber_station,
2415 "configure_function": configure_station,
2416 "help": "Subscriber station for mobile wireless network",
2417 "connector_types": ["node", "chan", "phy", "sflows"],
2418 "allow_addresses": True,
2419 "box_attributes": ["LostDlMapInterval",
2420 "LostUlMapInterval",
2430 "MaxContentionRangingRetries",
2434 "traces": ["wimaxpcap", "wimaxascii"],
2436 "ns3::flame::FlameRtable": dict({
2438 "create_function": create_element,
2439 "configure_function": configure_element,
2441 "connector_types": [],
2442 "box_attributes": ["Lifetime"],
2444 "ns3::BSSchedulerRtps": dict({
2445 "category": "Service Flow",
2446 "create_function": create_element,
2447 "configure_function": configure_element,
2448 "help": "Simple downlink scheduler for rtPS flows",
2449 "connector_types": ["dev"],
2450 "box_attributes": [],
2452 "ns3::BSSchedulerSimple": dict({
2453 "category": "Service Flow",
2454 "create_function": create_element,
2455 "configure_function": configure_element,
2456 "help": "simple downlink scheduler for service flows",
2457 "connector_types": ["dev"],
2458 "box_attributes": [],
2460 "ns3::SimpleOfdmWimaxChannel": dict({
2461 "category": "Channel",
2462 "create_function": create_wimax_channel,
2463 "configure_function": configure_element,
2464 "help": "Wimax channel",
2465 "connector_types": ["devs"],
2466 "box_attributes": [],
2468 "ns3::SimpleOfdmWimaxPhy": dict({
2470 "create_function": create_wimax_phy,
2471 "configure_function": configure_element,
2472 "help": "Wimax Phy",
2473 "connector_types": ["dev"],
2474 "box_attributes": [],
2476 "ns3::UplinkSchedulerSimple": dict({
2477 "category": "Service Flow",
2478 "create_function": create_element_no_constructor,
2479 "configure_function": configure_element,
2480 "help": "Simple uplink scheduler for service flows",
2481 "connector_types": ["dev"],
2482 "box_attributes": [],
2484 "ns3::UplinkSchedulerRtps": dict({
2485 "category": "Service Flow",
2486 "create_function": create_element_no_constructor,
2487 "configure_function": configure_element,
2488 "help": "Simple uplink scheduler for rtPS flows",
2489 "connector_types": ["dev"],
2490 "box_attributes": [],
2492 "ns3::IpcsClassifierRecord": dict({
2493 "category": "Service Flow",
2494 "create_function": create_ipcs_classifier_record,
2495 "configure_function": configure_element,
2496 "help": "Classifier record for service flow",
2497 "connector_types": ["sflow"],
2498 "box_attributes": ["ClassifierSrcAddress",
2499 "ClassifierSrcMask",
2500 "ClassifierDstAddress",
2501 "ClassifierDstMask",
2502 "ClassifierSrcPortLow",
2503 "ClassifierSrcPortHigh",
2504 "ClassifierDstPortLow",
2505 "ClassifierDstPortHigh",
2506 "ClassifierProtocol",
2507 "ClassifierPriority"],
2509 "ns3::ServiceFlow": dict({
2510 "category": "Service Flow",
2511 "create_function": create_service_flow,
2512 "configure_function": configure_element,
2513 "help": "Service flow for QoS",
2514 "connector_types": ["classif", "dev"],
2515 "box_attributes": ["ServiceFlowDirection",
2516 "ServiceFlowSchedulingType"],