【问题标题】:Adding queues to switch of ofsoftswitch13 implementation doesnt work向ofsoftswitch13实现的切换添加队列不起作用
【发布时间】:2021-01-26 17:06:56
【问题描述】:

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

谁能帮忙?

【问题讨论】:

    标签: queue mininet openflow sdn


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        • 1970-01-01
        • 2018-06-24
        • 1970-01-01
        相关资源
        最近更新 更多