Queue 向ofsoftswitch13实现的交换机添加队列不起作用

Queue 向ofsoftswitch13实现的交换机添加队列不起作用,queue,mininet,openflow,sdn,Queue,Mininet,Openflow,Sdn,我试图通过mininet将队列(绑定到端口)添加到模拟网络环境的多个交换机中。 所使用的交换机实现是 启动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-m

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

启动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控制器执行,流插入/修改都按预期工作


有人能帮忙吗

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

ofsoftswitch13使用两个主要部件:

  • 原生质体
  • 数据通路
mininet的默认设置似乎包括在ofdatapath cmd中使用´´否--slicing´´选项,这会阻止我添加队列。 因此,基本的解决方案是在不使用所提到的选项标志的情况下运行数据路径。 当我用mininet创建虚拟网络时,我不得不更改一行mininet python文件

在./mininet/mininet/node.py中,将923行更改为:

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

然后用

sudo make install
如果您现在使用mininet创建网络,则不再使用上述标志,并且可以添加队列


如果有人遇到同样的问题,希望能有所帮助。

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

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

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