The fifth experiment adds a new class of nodes to the known AP and STA node: Mesh Points (MPs). In contrast to APs and STAs, MPs can neither be source nor sink of a traffic flow. In fact, MPs do not have an IP layer, but use a layer 2 path selection protocol to find the optimal path in the network between an AP and a STA or between two STAs. Therefore, the mesh network is completely transparent for the IP layer and all layers above.
In the next steps, the scenario in the following figure shall be simulated: A STA wants to communicate with an AP that is out of its communication range. Hence, it uses the intermediate MPs which provide service for association and transparent data forwarding between the AP and the STA. The distance between the nodes in the line can be varied; furthermore, the number of hops (and thus the number of MPs) can be changed.
Scenario of experiment 5
We recommend to create a new sub-campaign for experiment 5 and to copy the config.py and the campaignConfiguration.py from experiment 4 into the new simulation directory.
The transceiver configuration of a MP is the same as the configuration for an AP; hence, the same specialised configuration class from experiment 4 can be used; we choose to rename it to MyMeshTransceiver:
####################
# Node configuration
# configuration class for AP and MP BSS transceivers
class MyMeshTransceiver(wifimac.support.Transceiver.Mesh):
def __init__(self, beaconDelay):
super(MyMeshTransceiver, self).__init__(frequency = networkFrequency)
# Transmission power
self.txPower = dBm(20)
# set the inital start delay of the beacon so that beacons from multiple APs do not collide
self.layer2.beacon.delay = beaconDelay
# rate adaptation strategy: Constant BPSK 1/2
self.layer2.ra.raStrategy = Constant()
# For frames above this threshold (in bit) RTS/CTS will be used
self.layer2.rtsctsThreshold = 8e6
Then, the MPs can be created using a for-loop; the only difference to the creation of an AP is the usage of the createMP function of the node creator:
for i in xrange(numHops-1):
mpConfig = wifimac.support.Node(position = openwns.geometry.position.Position((i+1)*distance,0,0))
mpConfig.transceivers.append(MyMeshTransceiver(beaconDelay = 0.001+(i+1)*0.001))
mp = nc.createMP(idGen, managerPool, mpConfig)
mp.logger.level = commonLoggerLevel
mp.dll.logger.level = dllLoggerLevel
WNS.simulationModel.nodes.append(mp)
mpIDs.append(mp.id)
mpAdrs.extend(mp.dll.addresses)
print "Created MP at (", (i+1)*distance, ",0,0)",
print "with id ", mp.id, " and addresses ", mp.dll.addresses
Please note that it is ensured that beacons are transmitted by the MPs at different points in time so that collisions of beacons with other beacons are impossible.
The rest of the scenario configuration resembles the setting of the experiment 1: Only one AP and one STA has to be created; this time, the specialised configuration classes should be used for convenience.
Other changes to the configuration file are:
For the experiments, the campaignConfiguration of experiment 2 can be used; only the new parameter numHops has to be added. In the following, the nodes shall be separated by a distance so that the neighbours can communicate with each other, but the neighbor’s neighbors cannot. Hence, the 2-hop neighborhood shall be hidden nodes.
Note
An example config.py and campaignConfiguration.py can be found in myOpenWNS/tests/system/wifimac-tests/PyConfig/experiment5.