noxrepo / pox

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

Regarding some failed ping packet and l2_multi model #264

Closed iBacklight closed 2 years ago

iBacklight commented 3 years ago

Hi murphy,

I'm currently using pox controller to study some networks. Right now I'm exploiting forwarding.l2_learning method along with openflow.discovery and spasnning_tree components. It quite useful but I still encounter two problems:

a. The first two ping packets from pingall command are always dropped, which looks like:

   $ h0 -> X  X  h3 h4 h5 h6 h7 h8 h9
     h1 -> h0 h2 h3 h4 h5 h6 h7 h8 h9
    .....
Is this normal? It seems that this will not affect the iperf test or following ping test?

b. I also tried to use l2_multi method with exact same components mentioned above. However, that always led to failed ping and iperf test. Any reasons or suggestions to handle this problem?

Thanks!!

MurphyMc commented 3 years ago

a. Discovery takes a while to complete, and depending on your configuration, may drop packets until then (it really should). So if it's just a matter of some pings failing before discovery completes and the spanning tree is built, that's normal/expected.

b. That's sort of surprising and I don't have an immediate explanation (though I don't do this stuff much anymore, so it's possible I'm forgetting something obvious).

At a higher level, I don't really recommend using any of the off-the-shelf forwarding components for anything; they're just demos. But if I were going to, I'd use spanning_forest instead of spanning_tree (forest was written as a replacement, though it hasn't been super well tested), and I'd be more likely to use l2_pairs or l2_nx or topo_proactive as starting points.

iBacklight commented 3 years ago

Hi Murphy,

Thanks for your quick reply! I followed your instruction above and turns out that the pairs indeed performed better than learning, though the multi, nx, topo_proactive still failed ping test in my networks even using forest. I'll keep trying though.

Apart from that, since I'm using pythion3 environment, the pox always give me like (dns) parsing questions: ord() expected string of length 1, but int found errors. And after I modifyied a little bit from the source code to aovid this happening, the pox cannot work well. Any ideas why this always shows in the console? It seems that it doesn't affect the controller's performance but still annoying me lol.

Thanks!!

MurphyMc commented 3 years ago

Note that topo_proactive probably requires a bit more work on your part. Be sure to read its documentation.

It's surprising that nx doesn't work. Maybe there's a Python 3 bug there. No interesting log messages?

As far as DNS, make sure you're using the DNS code from this fork: https://github.com/MurphyMc/pox/tree/gar-wip3 It has a lot of Python 3 fixes for DNS (and other stuff?) which haven't been merged yet.