Создать мост на станции с помощью Mininet WiFi
Я работаю по следующему сценарию:
Python-код сценария выглядит следующим образом:
#!/usr/bin/python
from mininet.node import RemoteController, OVSKernelSwitch
from mininet.log import setLogLevel, info
from mininet.wifi.node import OVSKernelAP
from mininet.wifi.cli import CLI_wifi
from mininet.wifi.net import Mininet_wifi
from mininet.link import TCLink
def topology():
"Create a network."
net = Mininet_wifi( controller=RemoteController, accessPoint=OVSKernelAP, link=TCLink)
info("*** Creating nodes\n")
h1 = net.addHost('h1', mac='00:00:00:00:00:01', ip='10.0.0.1/8')
h2 = net.addHost('h2', mac='00:00:00:00:00:02', ip='10.0.0.2/8')
sta1 = net.addStation('sta1', mac='00:00:00:00:00:03', ip='10.0.0.3/8', position='5,25,0', range =30)
sta2 = net.addStation('sta2', mac='00:00:00:00:00:04', ip='10.0.0.4/8',position='75,25,0', range=30)
s1 = net.addSwitch( 's1', dpid= "0000000000000001" )
ap1 = net.addAccessPoint('ap1', ssid='ssid-ap1', mode='g', channel='1', position='85,19,0', dpid= "0000000000000002", range=30)
c1 = net.addController( 'c1', controller=RemoteController)
print "*** Configuring Propagation Model"
net.propagationModel(model="logDistance", exp=5)
print "*** Configuring WiFi Nodes"
net.configureWifiNodes()
h1.plot(position='65,63,0')
h2.plot(position='95,10,0')
s1.plot(position='50,45,0')
c1.plot(position='50,80,0')
print "*** Creating links"
net.addLink(ap1, h2)
net.addLink(ap1, sta2)
net.addLink(h1,s1)
net.addLink(sta1,s1)
net.addLink(sta2, s1)
""" plotting graph """
net.plotGraph(max_x=100, max_y=100)
print "*** Starting network"
net.build()
c1.start()
s1.start( [c1] )
sta1.setIP('10.0.0.5/8', intf="sta1-eth1")
sta1.setMAC('00:00:00:00:00:05', intf="sta1-eth1")
sta2.setIP('10.0.0.6/8', intf="sta2-eth1")
sta2.setMAC('00:00:00:00:00:06', intf="sta2-eth1")
ap1.start( [c1] )
print "*** Running CLI"
CLI_wifi( net )
print "*** Stopping network"
net.stop()
if __name__ == '__main__':
setLogLevel( 'info' )
topology()
Проблема состоит в том, что если, например, я пытаюсь пропинговать h1 с h2, то запросы ARP отправляются h2, затем переходят к ap1, затем принимаются по интерфейсу wlan sta2, но здесь sta2 не может пересылать эти запросы ARP по своей этике. интерфейс. Я пытался решить проблему по-разному:
Я построил мост между интерфейсами wlan и eth в sta2, но затем sta2 ничего не получает через интерфейс wlan;
Я создал интерфейс veth, который я связал с eth и wlan из sta2. Это тоже не работает;
Я применил правила qdisc с tc, и с помощью этих sta2 он может пересылать запросы ARP через eth, но отправленные им ответы не принимаются ap1.
Это похоже на большой беспорядок. Я не могу выйти из этой проблемы.
Кто-нибудь может предложить решение? Спасибо