• Murphy replied to the topic Routing modules in NOX in the forum NOX 12 hours, 19 minutes ago

    I don’t think a version of discovery for the new NOX has ever been released. You could write one yourself, of course.

    NOX-Classic has discovery and shortest-path forwarding. But the shortest-path forwarding component would need some work to give backup paths, depending on how you wanted them computed. I’d recommend you just use POX unless you…[Read more]

  • l2_multi and topo_proactive are the closest to a “routing” module and demonstrate some of what you need to know to implement more complex ones built for specific purposes.

  • Murphy replied to the topic Help: controller + simple listener in the forum POX 2 weeks ago

    Right, but you need to build pxpcap. Did you follow the instructions in the manual in the “Building pxpcap” section?

    They’re pretty vague. Often you can get away with something like:
    cd pox/lib/pxpcap/pxpcap_c
    ./build_linux # or ./build_mac or build_win.bat

  • Sure. You need pxpcap. See “Working with pcap/libpcap: pxpcap” in the manual.

  • Typically, POX is used with either a hardware switch or a software switch. Undoubtedly, the most common scenario is to use POX with Open vSwitch. For educational purposes, this is usually in the context of Mininet (which runs the Open vSwitch instances on a software network).

    But it sounds like what you want isn’t quite OpenFlow — you want to…[Read more]

  • Hmm. I’m a bit confused. You say that you want to connect to something that’s not necessarily a switch. But you want to use OpenFlow, which is a protocol specifically for communicating with switches. Can you clarify?

  • Thanks for making your code available! I’ve linked it from the POX manual.

  • It sounds like from peer1, you’re telnetting to 192.168.0.4/peer2, but… is probably reaching peer1 (itself). And from peer4, it seems like you can’t reach peer1.

    These results don’t make a lot of sense to me unless you have your peers/IPs mixed up, or something very unexpected is happening.

  • Offhand, the above looks right to me, so I have no simple explanation here.

    Is the code you’re trying exactly the code you posted above? I copy/pasted it into a new file and it doesn’t seem to have the issue.

    Also, does the forwarding/hub.py component that comes with POX work for you?

  • Are you running curl from the same machine you’re trying to telnet from?

    I suggest the following test:

    Get the latest POX dart.

    Run POX with
    ./pox.py log.level –DEBUG openflow web

    From the same machine, try:
    telnet localhost 6633

    It should connect.

    From the same machine, try:
    telnet localhost 8000

    It should connect.

    Now from the remote…[Read more]

  • Just to be sure: you were running POX at the time, right? You should run POX on your controller machine (“./pox.py log.level –DEBUG openflow” is a good place to start if you’re using POX dart), and then try “telnet 6633″ from the switch machine.

    If that doesn’t work, the problem would seem to be in the network configuration — the switch…[Read more]

  • From the machine that’s supposed to be running the switch, see if you can connect to the controller using telnet… telnet 6633

    If it connects, hit enter a bunch of times. POX will probably give you an error message about a bad OpenFlow version. If this all happens, then the problem is probably in the switch configuration.

    If that doesn’t…[Read more]

  • Why not just install them to use the right queues in the first place? Or if the queues are changing, have the controller track which entries should be there, and just reinstall them using the right queues, rather than installing them from the controller, reading them back into the controller from the switch, altering them, and writing them back.

  • You’re creating an ofp_flow_mod and setting msg to be a reference to it. You’re then throwing it away and making msg reference f which is an ofp_flow_stats. But ofp_flow_stats isn’t an OpenFlow command/message. You don’t want to send it.

    Additionally, it’s not clear what you’re really trying to do here. You’re only sending one thing, which…[Read more]

  • 1) Yes, it’s possible to set two controllers for a single Mininet topology. In general, Mininet just uses Open vSwitch, so you can always simply run ovs-vsctl to configure the switches however you want — including using different controllers. I think you can actually do it with the Mininet Python API too, but don’t remember how off the top of…[Read more]

  • Murphy started the topic Read before posting here! in the forum NOX 4 months ago

    Just a note that the best way to get support for current versions of NOX is through the issue tracker on the github repository. You’re welcome to post here, you just might wait a long time for a reply. :)

    (NOX-Classic and POX posts are still answered here relatively quickly, though nox-dev and pox-dev mailing lists are probably faster.)

  • The issue is with OpenFlow 1.0. It doesn’t do matches based on IPv6 — it’s simply not part of the specification. As far as I can figure, the flows being installed will just be matching ethernet addresses and the IPv6 ethertype — not the IP addresses. This seems very likely to be very problematic.

    Possible solutions are:
    1) Use something…[Read more]

  • Ah, that’d do it.

    First, the updated DNS parser should be in the POX dart branch. You’d need to ugprade. dns_spy hasn’t been updated to handle IPv6, though. You’d have to modify it to track AAAA records.

    Also, you can’t base such a solution on l2_learning while using IPv6. l2_learning only uses OpenFlow 1.0, which has no IPv6 support, so the…[Read more]

  • I hadn’t tested it at all. I’ve tested and made a minor fix now. It works for me. Try it again?

  • What does this do?
    ./pox.py forwarding.l2_learning no_facebook proto.dns_spy

    # ext/no_facebook.py

    from pox.core import core
    import pox.forwarding.l2_learning as l2l

    class BlockingSwitch (l2l.LearningSwitch):
    def _handle_PacketIn (self, event):
    ipp = event.parsed.find(‘ipv4′)
    if ipp:
    for name in…[Read more]

  • Load More