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", inet_sock_address.ConvertTo())
100 onoff.SetConstantRate (ns.network.DataRate (
"500kb/s"))
102 app = onoff.Install(ns.network.NodeContainer(terminals.Get(0)))
104 app.Start(ns.core.Seconds(1.0))
105 app.Stop(ns.core.Seconds(10.0))
108 inet_address = ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port)
109 sink = ns.applications.PacketSinkHelper(
"ns3::UdpSocketFactory", inet_address.ConvertTo())
110 app = sink.Install(ns.network.NodeContainer(terminals.Get(1)))
111 app.Start(ns.core.Seconds(0.0))
116 inet_address = ns.network.InetSocketAddress(ns.network.Ipv4Address(
"10.1.1.1"), port)
117 onoff.SetAttribute(
"Remote",
118 ns.network.AddressValue(inet_address.ConvertTo()))
119 app = onoff.Install(ns.network.NodeContainer(terminals.Get(3)))
120 app.Start(ns.core.Seconds(1.1))
121 app.Stop(ns.core.Seconds(10.0))
123 app = sink.Install(ns.network.NodeContainer(terminals.Get(0)))
124 app.Start(ns.core.Seconds(0.0))
141 csma.EnablePcapAll(
"csma-bridge",
False)
147 ns.core.Simulator.Run()
148 ns.core.Simulator.Destroy()
153 if __name__ ==
'__main__':