Machine Learning Based Proactive Flow Entry Deletion for OpenFlow

时间:2024-01-04 14:47:50

来源:IEEE 2018 作者:Hemin Yang and George F.Riley

摘要: 流表容量有限,因此高效管理流表至关重要。本文重点讨论了OpenFlow中定义的一种流表管理机制,即能够主动删除流表条目。 挑战:确定删除哪些流表项条目。 为了应对这一挑战,提出了基于机器学习的主动流输入删除方法,可以从流表条目的历史数据中学习,从而预测最后引用流表条目的时间。最后根据预测,最后引用时间的最小的流表条目将被删除。我们的方法是利用机器学习,从历史删除流表项中学习,从而预测最后引用流入口的时间。

主动流条目的删除

A. 主动流删除的挑战

要应用主动流的删除,需要解决两个问题:第一是,控制器什么时候该主动删除流条目,例如说可以设定一个阈值,当流表的利用率超过阈值时就开始主动删除流表项;第二,应该删除哪些流项?希望删除的就是不活动的流表项。

B. 为什么机器学习会有帮助?

虽然我们不能确切知道流表条目访问的顺序,但是我们是否可以利用机器学习技术来推断基于历史流删除的访问顺序呢?一旦流表项从流表中删除,控制器就可以配置交换机发送一个FlowRemodes消息,该消息包含删除的原因、表项的持续时间、条目匹配的数据包数、空闲超时、硬超时、条目匹配的数据包中的字节数以及其他特定于实验者的统计信息。

C. 主动流输入删除的开销

主要包括两个部分。一是何时开始主动删除的开销,我们假设主动删除开始于超过控制器所设定的流表阈值时开始删除。空缺时间可以警告控制器提前作出反应,以避免流表溢出。开销的另一部分来自于决定应该主动删除哪些流条目。若采用随机或FIFO的策略,他们不需要开销,但如果没有删除的条目作为参考,控制器可能就会指示交换机删除实际上不存在流表中的条目,错误的指令,会加剧交换机和控制器的工作负荷,若表中没有流表项被删除,流表可能会溢出,对网络产生严重的影响。相反,如果启用了发送流删除的消息,则不会出现这样的错误指令,因为控制器知道开关的流表中有哪些流项。

我们的做法

基于机器学习的主动流条目的删除,如图1所示,做法包括两个部分:离线模型训练和基于训练模型的在线主动流删除。
Machine Learning Based Proactive Flow Entry Deletion for OpenFlow

A. 离线模型训练

为了训练机器学习的模型,我们首先需要收集合适的数据集。其中每个数据样本包含先前流删除的特征和标签(tLastVisitf 即最后一次引用流条目的时间)tLastVisitf 由tStartf + tPktActivef相加所得,tStartf 是流表中安装流f的当前流条目的时间,tPktActivef是所引用的流条目经过的时间。 tPktActivef作为标签。使用FlowRemoved消息所携带的统计数据的均值和标准差,即流条目匹配的数据包数(number ofpackets matched by a flow entry (