[General] network = BabelShowcase scheduler-class = "inet::RealTimeScheduler" sim-time-limit = 3600s # set number of babeld hosts *.numHosts = 3 # unshare user and network namespaces unshare-namespaces = true # disable loopback interfaces *.*.numLoInterfaces = 0 # turn off unused protocols *.*.hasTcp = false *.*.hasUdp = false *.*.hasIpv4 = false *.*.hasIpv6 = false # configure mobility *.host[*].mobility.constraintAreaMinX = 0m *.host[*].mobility.constraintAreaMinY = 0m *.host[*].mobility.constraintAreaMinZ = 0m *.host[*].mobility.constraintAreaMaxX = 600m *.host[*].mobility.constraintAreaMaxY = 400m *.host[*].mobility.constraintAreaMaxZ = 0m *.host[*].mobility.initFromDisplayString = false *.host[0].mobility.typename = "CircleMobility" *.host[0].mobility.speed = 10mps *.host[0].mobility.cx = 150m *.host[0].mobility.cy = 200m *.host[0].mobility.r = 120m *.host[0].mobility.startAngle = 180deg *.host[1].mobility.typename = "StationaryMobility" *.host[1].mobility.initialX = 300m *.host[1].mobility.initialY = 200m *.host[2].mobility.typename = "CircleMobility" *.host[2].mobility.speed = 13mps *.host[2].mobility.cx = 450m *.host[2].mobility.cy = 200m *.host[2].mobility.r = 120m *.host[2].mobility.startAngle = 0deg # configure external environments *.host[*].hasEnvironment = true *.host[*].environment.namespace = nodeFullName() *.host[*].environment.setupCommand = "ip tuntap add mode tap dev tap0 && " + "ip link set lo up && " + "ip link set dev tap0 up && " + "ip addr add 192.168.1" + string(nodeIndex()) + ".1/24 dev tap0" *.host[*].environment.teardownCommand = "ip link set dev tap0 down && " + "ip tuntap del mode tap dev tap0" # configure network interfaces *.host[*].wlan[0].typename = "ExtUpperIeee80211Interface" *.host[*].wlan[0].device = "tap0" *.host[*].wlan[0].namespace = nodeFullName() *.host[*].wlan[0].copyConfiguration = "copyFromExt" *.host[*].wlan[*].mac.fcsMode = "computed" *.host[*].wlan[*].radio.transmitter.power = 2mW # reduces communication range to get non-trivial paths # configure ping application *.host[0].numApps = 2 *.host[0].app[1].typename = "ExternalApp" *.host[0].app[1].display-name = "ping" *.host[0].app[1].process.namespace = nodeFullName() *.host[0].app[1].process.command = "ping 192.168.12.1" *.host[0].app[1].process.onExit = "relaunch" *.host[0].app[1].process.relaunchDelay = 1s *.host[0].app[1].process.printStdout = true # configure babeld applications *.host[*].numApps = 1 *.host[*].app[0].typename = "ExternalApp" *.host[*].app[0].display-name = "babeld" *.host[*].app[0].environment.setupCommand = "rm -f babel-state" + string(nodeIndex()) + " ; " + "rm -f babel" + string(nodeIndex()) + ".pid" *.host[*].app[0].environment.teardownCommand = "rm -f babel-state" + string(nodeIndex()) + " ; " + "rm -f babel" + string(nodeIndex()) + ".pid" *.host[*].app[0].process.namespace = nodeFullName() *.host[*].app[0].process.command = "babeld -d 1 -I babel" + string(nodeIndex()) + ".pid -S babel-state" + string(nodeIndex()) + " -r -w -h 2 -M 0 -C 'reflect-kernel-metric true' -C 'interface tap0 link-quality false'" # configure visualization *.visualizer.interfaceTableVisualizer[0].displayInterfaceTables = true *.visualizer.mediumVisualizer[0].displayCommunicationRanges = true *.visualizer.numDataLinkVisualizers = 2 *.visualizer.dataLinkVisualizer[0].displayLinks = true *.visualizer.dataLinkVisualizer[0].lineColor = "red1" *.visualizer.dataLinkVisualizer[0].packetFilter = "*ICMPv4*" *.visualizer.dataLinkVisualizer[1].displayLinks = true *.visualizer.dataLinkVisualizer[1].lineColor = "darkcyan" *.visualizer.dataLinkVisualizer[1].packetFilter = "*BABEL*" *.visualizer.mobilityVisualizer[*].displayMovementTrails = true *.visualizer.mobilityVisualizer[*].trailLength = 100000 *.visualizer.mobilityVisualizer[*].movementTrailLineColor = "green blue" # radio medium *.radioMedium.sameTransmissionStartTimeCheck = "ignore"