0

我试图通过 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 控制器完成。

任何人都可以帮忙吗?

4

2 回答 2

0

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

ofsoftswitch13 使用两个主要组件:

  • 协议的
  • 数据路径

似乎 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 创建网络,则不再使用上述标志,并且可以添加队列!

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

于 2015-11-12T18:45:56.130 回答
0

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

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

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

于 2021-01-26T09:06:56.283 回答