sdnmininetxtermopendaylightqos

How to create specific Qos rules?


I have the topology that is represented in the image: enter image description here

I want the hosts 1 and 2 to have high priority with max bandwidth 8mbps and the host(server) 4 to receive packets at maximum bandwidth of 4mbps. Host 3 is irrelevant for now. I have achieved the connections between h1 h2 h4 but when I turn the host 4 in a server as shown it becomes unreachable and I can't make it reachable with everything I tried so far.How can I make it reachable from h1 and h2 after making it a server? The other problem I have faced is that I can't find a way to implement the Qos rules for achieving the wanted bandwidth. Everything is implemented with mininet, ODL remote controller and for the bandwidth checks I use Xterm.

mininet> sh ovs-ofctl add-flow s2   priority=500,in_port=1,actions=output:3
mininet> sh ovs-ofctl add-flow s2 priority=500,in_port=3,actions=output:1
mininet> sh ovs-ofctl add-flow s2 priority=600,in_port=2,actions=output:3
mininet> sh ovs-ofctl add-flow s2 priority=600,in_port=3,actions=output:2
mininet> sh ovs-ofctl add-flow s2 dl_src=00:00:00:00:00:01,dl_dst=00:00:00:00:00:02,actions=output:2
mininet> sh ovs-ofctl add-flow s2 dl_src=00:00:00:00:00:02,dl_dst=00:00:00:00:00:01,actions=output:1
mininet> sh ovs-ofctl add-flow s2 dl_type=0x806,nw_proto=1,action=flood
mininet> sh ovs-ofctl add-flow s2 priority=500,dl_type=0x800,nw_src=10.0.0.0/24,nw_dst=10.0.0.0/24,actions=normal
mininet> sh ovs-ofctl add-flow s2 priority=800,dl_type=0x800,nw_src=10.0.0.4,nw_dst=10.0.0.0/24,actions=mod_nw_tos:184,normal
mininet> sh ovs-ofctl add-flow s3 priority=500,in_port=3,actions=output:2
mininet> sh ovs-ofctl add-flow s3 priority=500,in_port=2,actions=output:3
mininet> pingall
*** Ping: testing ping reachability
h1 -> h2 X h4
h2 -> h1 X h4
h3 -> X X X
h4 -> h1 h2 X
*** Results: 50% dropped (6/12 received)

Thank you in advance.


Solution

  • Since you are in a tree topology, you don't have loop, and I assume that you configured ODL correctly. I don't see the necessity to install most of the rules that you listed.

    Before adding any rule try to run the pingall and check that the controller is working correctly (since some ping are received it seems to work)

    *** Configuring hosts
    h1 h2 h3 h4
    *** Starting controller
    c0
    *** Starting 3 switches
    s1 s2 s3 ...
    *** Starting CLI:
    mininet> pingall
    *** Ping: testing ping reachability
    h1 -> h2 h3 h4
    h2 -> h1 h3 h4
    h3 -> h1 h2 h4
    h4 -> h1 h2 h3
    *** Results: 0% dropped (12/12 received)
    mininet>
    

    I think that for what you are trying to do, you need to act only on s3 or s2 with the mod_nw_tos parameter.

    sh ovs-ofctl add-flow s3 priority=500,dl_type=0x800,nw_src=10.0.0.0/24,nw_dst=10.0.0.0/24,actions=normal
    sh ovs-ofctl add-flow s3 priority=800,ip,nw_src=10.0.0.4,actions=mod_nw_tos:184,normal