自动 OpenFlow 超时消息传送

自动 OpenFlow 超时消息传送

这个问题可能听起来有点假设性,但我不知道该如何提出它。

OpenFlow 协议具有一项功能,即当没有流量匹配时,其规则将被删除。此功能称为“空闲超时”。

一篇论文,其中指出典型的 OpenFlow 链路发现不可扩展,因为控制器必须与许多数据包交互。因此,我开始思考一种连续轮询链路的方法,而无需控制器连续查看正在发生的事情。我想到了以下想法:

检测所有新端口(例如,每 5 分钟一次),然后安装空闲超时 2 秒的规则,并在每个链接上发送一个数据包。空闲超时规则将使数据包在链接上循环。

除了可能被滥用,以及可能用一个数据包吸收每秒一兆字节的流量之外,期望的行为应该很明确:

如果链接被删除,或者链接饱和,那么数据包将丢失,规则将空闲超时两秒钟后。这可以通过控制器检测到,并且似乎比不断发送数据包以确保“一切正常”更优雅。

我的问题是,这仍然需要控制器轮询相关表上已安装的规则,这仍然让人觉得是一项令人讨厌的工作。

如果可以命令 OpenFlow 在卸载特定规则时进行通告,那岂不是更简单

考虑到 OpenFlow 的当前实现(或者已经实现),这是否是一个现实的附加功能?

从设计上看,OpenFlow 似乎接近能够进行此类消息传递,而且从 OpenFlow 的实现方式来看,超时可能至关重要(尽管并非全部)。

答案1

我在openflow 1.1 规格,我肯定错过了:

当流条目被移除时,交换机必须检查流条目的 OFPFF_SEND_FLOW_REM 标志。如果设置了此标志,交换机必须向控制器发送流移除消息。每条流移除消息都包含流条目的完整描述、移除原因(到期或删除)、移除时的流条目持续时间以及移除时的流统计信息。

因此,我想要的已经在 OpenFlow 中明确实现了(至少从 1.1 版本开始)。

虽然我正在使用 OpenDaylight,并且不确定 ODL 是否设计用于对这些消息做出反应,但这完美地回答了我的问题。

相关内容