#!/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))); router = Node() node = [] for i in range(nodeCount): node.append(Node()) net = [] all = NodeContainer() all.Add(router) for i in range(nodeCount): net.append(NodeContainer()) net[i].Add(node[i]) net[i].Add(router) all.Add(node[i]) internetv6 = InternetStackHelper(); internetv6.Install(all); csma = CsmaHelper(); csma.SetChannelAttribute("DataRate", DataRateValue(DataRate(5000000))); csma.SetChannelAttribute("Delay", TimeValue(MilliSeconds(2))); d = [] for i in range(nodeCount): d.append(csma.Install(net[i])) fi = [] ipv6 = Ipv6AddressHelper(); for i in range(nodeCount): ipv6.NewNetwork(Ipv6Address("2001:"+str(i)+"::"), Ipv6Prefix(64)); fi.append(ipv6.Assign(d[i])) fi[i].SetRouter(1, True) multicastSource = fi[1].GetAddress(0, 1) multicastGroup = Ipv6Address("FF0E::2222") print "Multicast Source: ", multicastSource print "Multicast Group: ", multicastGroup outputDevices = NetDeviceContainer() for i in range(len(d)) : if i != 1 : outputDevices.Add(d[i].Get(1)) multicast = Ipv6StaticRoutingHelper() multicast.AddMulticastRoute(router, multicastSource, multicastGroup, d[1].Get(1), outputDevices ) prefix = Ipv6Address ("2001:1::0") prefix2 = Ipv6Address ("2001:2::0") packetSize = 1024; maxPacketCount = 5; interPacketInterval = Seconds(1.) ping6 = Ping6Helper() ping6.SetRemote(multicastGroup) ping6.SetAttribute("MaxPackets", UintegerValue(maxPacketCount)) ping6.SetAttribute("Interval", TimeValue(interPacketInterval)) ping6.SetAttribute("PacketSize", UintegerValue(packetSize)) apps = ping6.Install(NodeContainer(net[1].Get(0))) apps.Start(Seconds(2.0)) apps.Stop(Seconds(20.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)