自动OpenFlow超时消息

这个问题可能会稍微假设一下,但是我不知道怎么去问这个问题。

OpenFlow协议有一项function,可以在没有stream量匹配的情况下将其规则删除。 这个function被称为“空闲超时”。

在一篇论文中指出,典型的OpenFlow链路发现是不可扩展的,因为Controller必须与很多数据包进行交互。 所以我开始考虑一种方法来不断地轮询链接,而不用让控制器持续查看发生的事情。 我提出了以下想法:

检测所有新的端口(例如,每5分钟或某事),然后在2秒内安装空闲超时的规则,并且在每个链路上准确地发送一个数据包。 空闲时间规则将使得数据包在链路上循环。

除了可能存在滥用的情况,以及使用单个数据包吸取每秒兆字节stream量的可能性之外,理想的行为应该是明确的:

如果链路断开或链路饱和,则数据包将丢失,规则将在两秒钟后空闲 – 超时 。 这可以通过控制器检测到,似乎比连续发送数据包以确保“一切正常”更优雅。

我的问题是,这仍然需要控制器轮询相关表上的已安装的规则,这仍然感觉像一个恼人的工作量。

如果在卸载特定规则时OpenFlow可以被命令通告,这不是更简单吗?

考虑到OpenFlow的当前实现(或者已经实现),这是否会成为一个现实的附加组件

通过devise,似乎OpenFlow已经接近能够进行这种消息传递了,而且OpenFlow的实现方式看起来非常重要(尽pipe不是全部)。

我在openflow 1.1规范中发现了这个,我一定错过了:

当stream表项被删除时,交换机必须检查stream表项的OFPFF_SEND_FLOW_REM标志。 如果这个标志被设置,交换机必须发送一个stream去除消息给控制器。 每个已删除的stream消息都包含stream条目的完整说明,删除(到期或删除)的原因,删除时的stream入口持续时间以及删除时的stream量统计信息。

因此,我想在OpenFlow中明确实现(至less从1.1版开始)。

当我使用OpenDaylight,并且不确定ODL是否被devise为对这些消息作出反应时,这完全回答了我的问题。