添加流以通过 ODL 控制器的 RESTCONF API 推送 MPLS

Adding Flows to push MPLS via RESTCONF API of ODL controller

我是 SDN 和 ODL 的初学者,我正在尝试将 OpenFlow 流添加到 mininet 中的 OVS 交换机,但是当我在 Wireshark 中检查数据包时,没有反映出流。这是我的场景。

我想做的是手动配置MPLS。例如,作为起点,我尝试为从 Host1 到 Host3 的数据包添加 MPLS 标签。我正在尝试使用 RESTCONF API 来完成此操作,并且我正在为我发送的请求获取状态代码 200 (OK)。以下是 RESTCONF 请求的 XML body。

对于从Switch1的端口1进入的IP数据包,压入值为12的MPLS标签并从端口2转发出去: 0 0 0x8847 1 12 2 2 0 100 0x800 1 0 10 真 0 flow-action-push-mpls 220

URL = "http://localhost:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table0/flow/100"

Headers = {'content-type': 'application/xml','accept': 'application/json'}

请求类型 = PUT

身份验证 = 基本身份验证

然后当我在交换机 1 的端口 2 上使用 wireshark 检查数据包时,我看不到 MPLS header。

ODL 中安装了 OpenFlow 和 RestConf 插件。添加的流量不作用于数据包的可能原因是什么?

PS。我使用包管理器安装了 mininet,而不是使用预构建的 VM。

我发现我的主机上 运行 没有 OpenvSwitch!我不得不在 /etc/init.d/openvswitch-switch 重新启动服务。我使用 $sudo /etc/init.d/openvswitch-switch status 检查状态,通常它应该说 openvswitch 是 运行 但事实并非如此。重启服务我做了sudo /etc/init.d/openvswitch-switch restart

在此之后,我能够在交换机和控制器之间进行连接。但是我的流没有从控制器推送到交换机,原因是我仍然不确定它是什么,但我想我缺少一些 xml 标签,当我参考 ODL 时它被修复了端到端流程示例 https://wiki.opendaylight.org/view/Editing_OpenDaylight_OpenFlow_Plugin:End_to_End_Flows:Example_Flows,采用我感兴趣的示例,并根据我的需要对其进行自定义。