0

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

  • 3 台具有线性拓扑的交换机和 3 台主机连接:sudo mn --topo linear --controller remote --switch ovsk,protocols=OpenFlow13
  • ODL 控制器在与 mininet 相同的 VM 上运行

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

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

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

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

请求类型 = PUT

身份验证 = 基本身份验证

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

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

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

4

1 回答 1

0

我发现 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,采用了我感兴趣的示例,并根据我的需要对其进行了定制。

于 2016-08-08T10:35:42.510 回答