noxrepo / pox

The POX network software platform
https://noxrepo.github.io/pox-doc/html/
Apache License 2.0
629 stars 473 forks source link

l2_multi always destination host unreachable error #281

Closed cagataykiziltan closed 1 year ago

cagataykiziltan commented 2 years ago

hi

ı am newbie. I can run l2_learning without any problem however try to run l2_multi but ı failed. ı couldnt find the problem.

my basic mininet topology

def myNetwork(): net = Mininet( topo=None, build=False, ipBase='10.0.0.0/8')

info( '*** Adding controller\n' )
c0=net.addController(name='c0',
                  controller=RemoteController,
                  ip='127.0.0.1',
                  protocol='tcp',
                  port=6633)

info( '*** Add switches\n')
s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

info( '*** Add hosts\n')
h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)

info( '*** Add links\n')
net.addLink(s2, s1)
net.addLink(s1, h1)
net.addLink(s2, h2)

info( '*** Starting network\n')
net.build()
info( '*** Starting controllers\n')
for controller in net.controllers:
    controller.start()

info( '*** Starting switches\n')
net.get('s1').start([c0])
net.get('s2').start([c0])

info( '*** Post configure switches and hosts\n')

CLI(net)
net.stop()

if name == 'main': setLogLevel( 'info' ) myNetwork()

and the command that ı run l2_multi

python3 ./pox.py log.level --DEBUG log --file=mylog,w openflow.discovery forwarding.l2_multi

the result after that command

POX 0.7.0 (gar) / Copyright 2011-2021 James McCauley, et al. DEBUG:core:POX 0.7.0 (gar) going up... DEBUG:core:Running on CPython (3.10.6/Aug 10 2022 11:40:04) DEBUG:core:Platform is Linux-5.15.0-50-generic-x86_64-with-glibc2.35 WARNING:version:POX requires one of the following versions of Python: 3.6 3.7 3.8 3.9 WARNING:version:You're running Python 3.10. WARNING:version:If you run into problems, try using a supported version. DEBUG:openflow.of_01:Listening on 0.0.0.0:6633 INFO:core:POX 0.7.0 (gar) is up . INFO:openflow.of_01:[00-00-00-00-00-01 1] connected DEBUG:openflow.discovery:Installing flow for 00-00-00-00-00-01 DEBUG:forwarding.l2_multi:Connect [00-00-00-00-00-01 1] INFO:openflow.of_01:[00-00-00-00-00-02 2] connected DEBUG:openflow.discovery:Installing flow for 00-00-00-00-00-02 DEBUG:forwarding.l2_multi:Connect [00-00-00-00-00-02 2] INFO:openflow.discovery:link detected: 00-00-00-00-00-01.1 -> 00-00-00-00-00-02.1 INFO:openflow.discovery:link detected: 00-00-00-00-00-02.1 -> 00-00-00-00-00-01.1

then it enters infinte loop like below, even if ı send ping h1 to h2 same issue

DEBUG:forwarding.l2_multi:Learned 52:97:c0:08:11:46 at 00-00-00-00-00-01.65534 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Learned de:89:93:80:00:45 at 00-00-00-00-00-02.65534 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Learned fe:6b:6c:db:4d:0c at 00-00-00-00-00-01.1 DEBUG:forwarding.l2_multi:Flood multicast from fe:6b:6c:db:4d:0c DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Learned 6a:ae:c2:df:b3:2f at 00-00-00-00-00-02.1 DEBUG:forwarding.l2_multi:Flood multicast from 6a:ae:c2:df:b3:2f DEBUG:forwarding.l2_multi:Flood multicast from fe:6b:6c:db:4d:0c DEBUG:forwarding.l2_multi:Learned da:15:41:67:39:22 at 00-00-00-00-00-01.2 DEBUG:forwarding.l2_multi:Flood multicast from da:15:41:67:39:22 DEBUG:forwarding.l2_multi:Learned 46:cc:6f:63:83:98 at 00-00-00-00-00-02.2 DEBUG:forwarding.l2_multi:Flood multicast from 46:cc:6f:63:83:98 DEBUG:forwarding.l2_multi:Flood multicast from 6a:ae:c2:df:b3:2f DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45 DEBUG:forwarding.l2_multi:Flood multicast from 52:97:c0:08:11:46 DEBUG:forwarding.l2_multi:Flood multicast from de:89:93:80:00:45

if ı type h1 ping h2, gets below always

DEBUG:forwarding.l2_multi:Flood multicast from da:15:41:67:39:22

and destination host unreachable

or h2 ping h1, gets below always

DEBUG:forwarding.l2_multi:Flood multicast from 46:cc:6f:63:83:98

and destination host unreachable

and when ı debug packet inner while sending ping, ı see that for all my pings

packet [00:00:00:00:00:02>ff:ff:ff:ff:ff:ff ARP]

where am i doing wrong. Thanks

cagataykiziltan commented 2 years ago

and in addition to that, when ı create loop switch connection ı can not even run l2_learning

MurphyMc commented 1 year ago

l2_learning is a learning switch. Like all learning switches, loops present problems. Look at the spanning_tree/spanning_forest modules for one type of solution.

As for the initial problem, the logs indicate many packets arriving from the "local" OpenFlow port, i.e., the interface associated with the OVS instance. This may be part of a significant problem, but I can't easily tell from just this info. The first thing I'd try is just setting those interfaces down manually.

I'm closing this issue because it's pretty old, but feel free to reopen.