Search code examples
sdnmininetopenflowopenvswitchryu

Openvswitch create queue can't reach bit rate limitation


all: I'm new to SDN and also new to stackoverflow.

Here is my topology: mytopology When I setting the queue for mytopo, I notice that when the maximum bit lower than 300000, the iperf value become strange. Cant't reach the maximum bit rate setting.

let max-rate= ppp setting order:

ovs-vsctl -- set Port s1-eth1 qos=@newqos -- \
--id=@newqos create QoS type=linux-htb other-config:max-rate=1000000 queues=0=@q0 -- \
--id=@q0 create Queue other-config:min-rate= ppp other-config:max-rate= ppp 

Test ppp = 1000000,800000,600000,400000,300000,250000,200000. results are here

Are there something wrong? or it's ovs's limitation? ovs-vswitchd --version ovs-vswitchd (Open vSwitch) 2.0.2 Compiled Dec 9 2015 14:08:11 OpenFlow versions 0x1:0x1

mininet python file:

#!/usr/bin/python
import re
import sys
from mininet.cli import CLI
from mininet.log import setLogLevel, info, error
from mininet.net import Mininet
from mininet.link import TCLink
from mininet.topolib import TreeTopo
from mininet.util import quietRun
from mininet.node import RemoteController
from mininet.topo import Topo

topos = { 'mytopo': ( lambda: MyTopo() ) }


class MyTopo( Topo ):
#    "this topo is used for Scheme_1"

    def __init__( self ):
        "Create custom topo."

        # Initialize topology
        Topo.__init__( self )

        # Add hosts 
        h1 = self.addHost( 'h1' , ip="192.168.254.11/24", mac="00:00:00:00:00:01", defaultRoute="via 10.0.0.254")
        h2 = self.addHost( 'h2' , ip="192.168.254.12/24", mac="00:00:00:00:00:02", defaultRoute="via 10.0.0.254")
        h3 = self.addHost( 'h3' , ip="192.168.254.13/24", mac="00:00:00:00:00:03", defaultRoute="via 10.0.0.254")

        # Add switches
        s1 = self.addSwitch( 's1' )

        # Add links
        self.addLink( s1, h1 )
        self.addLink( s1, h2 )
        self.addLink( s1, h3 )



if __name__ == '__main__':
    setLogLevel( 'info' )
    info( '*** Creating network\n' )
    net = Mininet( topo=MyTopo(),controller=None, link=TCLink) 
    c0 = RemoteController( 'c0', ip='127.0.0.1', port=6653 )
    net.addController(c0)
    net.start()
    CLI( net )
    net.stop()

Solution

  • I miss take the queue usage: in the doc mentions that :

    The port s1-eth1 is the switch port linked to h3. Running iperf with h3 server, h4 client: h4 → h3 (client to server) throttled to 4Mbit/s h3 → h4 (server to client) not throttled

    I was miss-leading by the mininnet: iperf h1 h2.(although I don't know what does the number means).