将队列添加到 softswitch13 实现的开关不起作用
Adding queues to switch of ofsoftswitch13 implementation doesnt work
我正在尝试通过 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
它 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"}
错误消息表明,可能存在权限错误,
但我不知道如何解决这个问题。
流插入/修改按预期工作,无论是由 dpctl 还是 sdn 控制器完成。
有人可以帮忙吗?
我现在设法解决了我自己的问题。
有兴趣者:
ofsoftswitch13 利用两个主要组件:
- 协议
- 数据路径
似乎 mininet 的默认设置包括在 ofdatapath cmd 中使用“no--slicing”选项,这会阻止我添加队列。
所以基本的解决方案是 运行 ofdatapath 没有提到的选项标志。
当我用 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 创建您的网络,则不再使用上述标志并且可以添加队列!
希望对遇到同样问题的人有所帮助。
感谢分享您的答案!
我只是觉得《RYU SDN Framework》提供了另一种方法来解决这个问题(第12.4章):
class SliceableSwitch(UserSwitch):
def __init__(self,name,**kwargs):
UserSwitch.__init__(self,name, dpopts='', **kwargs)
与您的方法类似,但无需重新构建 mininet。
我正在尝试通过 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
它 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"}
错误消息表明,可能存在权限错误, 但我不知道如何解决这个问题。 流插入/修改按预期工作,无论是由 dpctl 还是 sdn 控制器完成。
有人可以帮忙吗?
我现在设法解决了我自己的问题。 有兴趣者:
ofsoftswitch13 利用两个主要组件:
- 协议
- 数据路径
似乎 mininet 的默认设置包括在 ofdatapath cmd 中使用“no--slicing”选项,这会阻止我添加队列。 所以基本的解决方案是 运行 ofdatapath 没有提到的选项标志。 当我用 mininet 创建虚拟网络时,我不得不更改一行 mininet python 文件。
在 ./mininet/mininet/node.py 中将第 923 行更改为:
def __init__( self, name, dpopts='--no-slicing', **kwargs ):
到
def __init__( self, name, dpopts='', **kwargs ):
然后用
重建 mininetsudo make install
如果您现在使用 mininet 创建您的网络,则不再使用上述标志并且可以添加队列!
希望对遇到同样问题的人有所帮助。
感谢分享您的答案! 我只是觉得《RYU SDN Framework》提供了另一种方法来解决这个问题(第12.4章):
class SliceableSwitch(UserSwitch):
def __init__(self,name,**kwargs):
UserSwitch.__init__(self,name, dpopts='', **kwargs)
与您的方法类似,但无需重新构建 mininet。