#!/usr/bin/env python from ns3 import * def main(argv): print "Hello World!" nodeCount = 32 # Set up our csma helper csma = CsmaHelper() csma.SetChannelAttribute("DataRate", DataRateValue(DataRate(5000000))); csma.SetChannelAttribute("Delay", TimeValue(MilliSeconds(2))); # Create our nodes node = [] node_pair = [] dev_pair = [] for i in range(nodeCount): n = NodeContainer() n.Create(1) node.append(n) for i in range(nodeCount-1): newNC = NodeContainer() newNC.Add(node[0]) newNC.Add(node[i+1]) node_pair.append(newNC) dev_pair.append(csma.Install(node_pair[i])) # set up the internet internet = InternetStackHelper() internet.InstallAll() # setup our interfaces ipv4 = Ipv4AddressHelper() ipv4IfC = [] for i in range(nodeCount-1): ipv4.SetBase(Ipv4Address("1.1."+str(i)+".0"), Ipv4Mask("255.255.255.0")) intfc = Ipv4InterfaceContainer() intfc.Add(ipv4.Assign(dev_pair[i])) ipv4IfC.append(intfc) multicastSource = Ipv4Address("1.1.1.1") multicastGroup = Ipv4Address("225.1.1.1") multicast = Ipv4StaticRoutingHelper() multicast.SetDefaultMulticastRoute(node[1].Get(0), dev_pair[0].Get(1)) outputDevices = NetDeviceContainer() outputDevices.Add(dev_pair[3].Get(0)); outputDevices.Add(dev_pair[14].Get(0)); # Adding this line breaks master with segfault outputDevices.Add(dev_pair[21].Get(0)); multicast.AddMulticastRoute(node[0].Get(0), multicastSource, multicastGroup, dev_pair[0].Get(0), outputDevices) port = 9233 onoff = OnOffHelper("ns3::UdpSocketFactory", Address(InetSocketAddress(multicastGroup, port))) onoff.SetAttribute("OnTime", RandomVariableValue(ConstantVariable(1))) onoff.SetAttribute("OffTime", RandomVariableValue(ConstantVariable(0))) app = onoff.Install(node[1].Get(0)) app.Start(Seconds(1.0)) app.Stop(Seconds(10.0)) csma.EnablePcapAll("network", True) Simulator.Stop(Seconds(10.0)) Simulator.Run() Simulator.Destroy() print "GoodBye World!" if __name__ == '__main__': import sys main(sys.argv)