45 cmd = ns.core.CommandLine()
52 terminals = ns.network.NodeContainer()
55 csmaSwitch = ns.network.NodeContainer()
59 csma = ns.csma.CsmaHelper()
60 csma.SetChannelAttribute(
"DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
61 csma.SetChannelAttribute(
"Delay", ns.core.TimeValue(ns.core.MilliSeconds(2)))
65 terminalDevices = ns.network.NetDeviceContainer()
66 switchDevices = ns.network.NetDeviceContainer()
69 link = csma.Install(ns.network.NodeContainer(ns.network.NodeContainer(terminals.Get(i)), csmaSwitch))
70 terminalDevices.Add(link.Get(0))
71 switchDevices.Add(link.Get(1))
74 switchNode = csmaSwitch.Get(0)
75 bridgeDevice = ns.bridge.BridgeNetDevice()
76 switchNode.AddDevice(bridgeDevice)
78 for portIter
in range(switchDevices.GetN()):
79 bridgeDevice.AddBridgePort(switchDevices.Get(portIter))
82 internet = ns.internet.InternetStackHelper()
83 internet.Install(terminals)
88 ipv4 = ns.internet.Ipv4AddressHelper()
89 ipv4.SetBase(ns.network.Ipv4Address(
"10.1.1.0"), ns.network.Ipv4Mask(
"255.255.255.0"))
90 ipv4.Assign(terminalDevices)
98 inet_sock_address = ns.network.InetSocketAddress(ns.network.Ipv4Address(
"10.1.1.2"), port)
99 onoff = ns.applications.OnOffHelper(
"ns3::UdpSocketFactory",
100 ns.network.Address(ns.addressFromInetSocketAddress(inet_sock_address)))
101 onoff.SetConstantRate (ns.network.DataRate (
"500kb/s"))
103 app = onoff.Install(ns.network.NodeContainer(terminals.Get(0)))
105 app.Start(ns.core.Seconds(1.0))
106 app.Stop(ns.core.Seconds(10.0))
109 inet_address = ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port)
110 sink = ns.applications.PacketSinkHelper(
"ns3::UdpSocketFactory",
111 ns.network.Address(ns.addressFromInetSocketAddress(inet_address)))
112 app = sink.Install(ns.network.NodeContainer(terminals.Get(1)))
113 app.Start(ns.core.Seconds(0.0))
118 inet_address = ns.network.InetSocketAddress(ns.network.Ipv4Address(
"10.1.1.1"), port)
119 onoff.SetAttribute(
"Remote",
120 ns.network.AddressValue(ns.addressFromInetSocketAddress(inet_address)))
121 app = onoff.Install(ns.network.NodeContainer(terminals.Get(3)))
122 app.Start(ns.core.Seconds(1.1))
123 app.Stop(ns.core.Seconds(10.0))
125 app = sink.Install(ns.network.NodeContainer(terminals.Get(0)))
126 app.Start(ns.core.Seconds(0.0))
143 csma.EnablePcapAll(
"csma-bridge",
False)
149 ns.core.Simulator.Run()
150 ns.core.Simulator.Destroy()
155if __name__ ==
'__main__':