首页 文章

OpenDaylight:OpenFlow FLOW_MOD消息

提问于
浏览
1

我正在研究SDN并使用不同的控制器(Floodlight 1.1,OpenDaylight Lithium-SR2) . 我有2个可以通过专用网络进行通信的虚拟机 . 在第一个VM中有SDN控制器,而在第二个VM中,我可以通过Python脚本使用Mininet设置网络拓扑 .

我的目标是找出控制器的行为:给定topology有5个开关(带有循环)和只有2个主机,在"ping"命令之后,哪个开关控制器选择主机之间的路径?

Mininet中的"ping"命令意味着ARP流量(发现主机的MAC地址)和ICMP回应请求/回复 . 在ARP_REPLY之后,我们从链接到应答主机的交换机看到PACKET_IN,并且控制器根据OpenFlow 1.0协议向它为路径选择的所有交换机发送FLOW_MOD消息 . 查看this序列图以获取示例 .

我使用“tcpdump”工具捕获了流量并使用Wireshark进行了研究 .

使用Floodlight我可以看到FLOW_MOD消息,其中包括“src”和“dst”MAC地址(用于创建路径),但不包含OpenDaylight(有FLOW_MOD消息,但仅在ARP流量之前,且仅与广播“src”和“dst” “MAC地址) .

我想了解为什么我无法在ARP回复(而不是BEFORE)之后看到具有正确MAC地址“src”和“dst”的FLOW_MOD消息 . 我不知道它是否依赖于控制器代码或OpenFlow协议 .

在此先感谢您的帮助 .

1 回答

  • 1

    我发现了问题:默认情况下,ODL在Proactive模式下工作,因此在ARP流量后,我无法看到带有附加MAC地址的Flow_Mod消息 . 我在 Reactive 模式下设置ODL,修改位于Controller文件夹的 [ODL-folder]/etc/opendaylight/karaf/ 目录中的一些配置文件:

    • 54-arphandler.xml :默认情况下,属性 <is-proactive-flood-mode> 设置为true,因此ODL在主动模式下工作 . 如果您希望混合模式将该属性设置为false并将 <is-hybrid-mode> 设置为true . 如果两个属性都设置为false,则ODL在Reactive模式下工作 .

    • 58-l2switchmain.xml :将属性 <is-install-dropall-flow> 设置为false . 通过这种方式,交换机将没有匹配的数据包(在交换机流表中)发送到控制器而不会丢失 .

    现在我可以看到带有附加MAC地址的Flow_Mod消息,并检查ODL选择哪个交换机来构建主机之间的路径 .

相关问题