Im trying to add queues (bound to ports) to several switches of an emulated network environment by mininet. The used switch implemention is ofsoftswitch13
Command to start mininet:
sudo mn --custom mininet-mesh-topology.py --topo test --controller remote,ip=192.168.56.1,port=6653 --switch=user,protocols=OpenFlow13 --link tc
When i try using:
sudo dpctl unix:/tmp/s1 queue-mod 1 1 10
it returns :
SENDING (xid=0xF0FF00F0):
expmodqueue{port="1", queue={q="1", props=[minrate{rate="10"}]}}
RECEIVED (xid=0xF0FF00F0):
error{type="QUEUE_OP_FAILED", code="EPERM", dlen="56"}
The error message indicates, that there is probably a permission error, but I dont know how to solve this. Flow inserting / modification works as expected, whether done by dpctl or an sdn controller.
Can anyone help ?
I managed now to solve my own question. For those, who are interested:
The ofsoftswitch13 utilizes two main components:
It appears that default settings of mininet includes the usage of the ´´no--slicing´´ option within the ofdatapath cmd, which prevents me from adding queues. So the basic solution is to run ofdatapath without the mentioned option flag. As I create my virtual network with mininet, i had to change one line of mininet python files.
In ./mininet/mininet/node.py change the line 923 from:
def __init__( self, name, dpopts='--no-slicing', **kwargs ):
to
def __init__( self, name, dpopts='', **kwargs ):
Afterwards rebuild mininet with
sudo make install
If you use now mininet to create your network, the mentioned flag isnt used anymore and adding queues is possible!
Hope it helps, if anyone struggles the same issue.