添加队列以切换ofsoftswitch13实现不起作用

时间:2015-11-12 16:56:36

标签: queue mininet openflow sdn

我试图通过mininet将队列(绑定到端口)添加到模拟网络环境的多个交换机。 使用的交换机实现是ofsoftswitch13

启动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

当我尝试使用时:

sudo dpctl unix:/tmp/s1 queue-mod 1 1 10

它返回:

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"}

错误消息表明可能存在权限错误, 但我不知道如何解决这个问题。 流插入/修改按预期工作,无论是由dpctl还是sdn控制器完成。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

我现在设法解决我自己的问题。 对于那些感兴趣的人:

ofsoftswitch13使用两个主要组成部分:

  • ofprotocol
  • ofdatapath

似乎mininet的默认设置包括在ofdatapath cmd中使用''no - slicing''选项,这阻止我添加队列。 所以基本的解决方案是在没有提到的选项标志的情况下运行数据库。 当我使用mininet创建我的虚拟网络时,我不得不更改一行mininet python文件。

在./mininet/mininet/node.py中更改第923行:

def __init__( self, name, dpopts='--no-slicing', **kwargs ):

def __init__( self, name, dpopts='', **kwargs ):

然后用

重建mininet
sudo make install

如果您现在使用mininet来创建网络,则不再使用上述标记,并且可以添加队列!

如果有人在解决同样的问题,希望它有所帮助。

答案 1 :(得分:0)

感谢分享您的答案! 我只是想《RYU SDN Framework》提供了另一种解决这个问题的方法(第12.4章):

class SliceableSwitch(UserSwitch):
    def __init__(self,name,**kwargs):
        UserSwitch.__init__(self,name, dpopts='', **kwargs)

与您的方式类似,但无需重建 mininet。