23 except ModuleNotFoundError:
25 "Error: ns3 Python module not found;"
26 " Python bindings may not be enabled"
27 " or your PYTHONPATH might not be properly configured"
30 ns.LogComponentEnable(
"Ipv4ClickRouting", ns.LOG_LEVEL_ALL)
31 ns.LogComponentEnable(
"Ipv4L3ClickProtocol", ns.LOG_LEVEL_ALL)
33 clickConfigFolder = os.path.dirname(__file__)
35 csmaNodes = ns.NodeContainer()
39 csma = ns.CsmaHelper()
40 csma.SetChannelAttribute(
"DataRate", ns.DataRateValue(ns.DataRate(5000000)))
41 csma.SetChannelAttribute(
"Delay", ns.TimeValue(ns.MilliSeconds(2)))
42 csmaDevices = csma.Install(csmaNodes)
45 internet = ns.InternetStackHelper()
46 internet.Install(csmaNodes.Get(1))
49 clickinternet = ns.ClickInternetStackHelper()
50 clickinternet.SetClickFile(
51 csmaNodes.Get(0), clickConfigFolder +
"/nsclick-lan-single-interface.click"
53 clickinternet.SetRoutingTableElement(csmaNodes.Get(0),
"rt")
54 clickinternet.Install(csmaNodes.Get(0))
57 ipv4 = ns.Ipv4AddressHelper()
58 ipv4.SetBase(
"172.16.1.0",
"255.255.255.0")
59 ipv4.Assign(csmaDevices)
62 LocalAddress = ns.InetSocketAddress(ns.Ipv4Address.GetAny(), 50000).ConvertTo()
63 packetSinkHelper = ns.PacketSinkHelper(
"ns3::TcpSocketFactory", LocalAddress)
64 recvapp = packetSinkHelper.Install(csmaNodes.Get(1))
65 recvapp.Start(ns.Seconds(5.0))
66 recvapp.Stop(ns.Seconds(10.0))
68 onOffHelper = ns.OnOffHelper(
"ns3::TcpSocketFactory", ns.Address())
69 onOffHelper.SetAttribute(
"OnTime", ns.StringValue(
"ns3::ConstantRandomVariable[Constant=1]"))
70 onOffHelper.SetAttribute(
"OffTime", ns.StringValue(
"ns3::ConstantRandomVariable[Constant=0]"))
72 appcont = ns.ApplicationContainer()
74 remoteAddress = ns.InetSocketAddress(ns.Ipv4Address(
"172.16.1.2"), 50000).ConvertTo()
75 onOffHelper.SetAttribute(
"Remote", ns.AddressValue(remoteAddress))
76 appcont.Add(onOffHelper.Install(csmaNodes.Get(0)))
78 appcont.Start(ns.Seconds(5.0))
79 appcont.Stop(ns.Seconds(10.0))
82 csma.EnablePcap(
"nsclick-simple-lan", csmaDevices,
False)
84 ns.Simulator.Stop(ns.Seconds(20.0))
87 ns.Simulator.Destroy()