Machine Learning Based Proactive Flow Entry Deletion for OpenFlow
来源:IEEE 2018 作者:Hemin Yang and George F.Riley
摘要: 流表容量有限,因此高效管理流表至关重要。本文重点讨论了OpenFlow中定义的一种流表管理机制,即能够主动删除流表条目。 挑战:确定删除哪些流表项条目。 为了应对这一挑战,提出了基于机器学习的主动流输入删除方法,可以从流表条目的历史数据中学习,从而预测最后引用流表条目的时间。最后根据预测,最后引用时间的最小的流表条目将被删除。我们的方法是利用机器学习,从历史删除流表项中学习,从而预测最后引用流入口的时间。
主动流条目的删除
A. 主动流删除的挑战
要应用主动流的删除,需要解决两个问题:第一是,控制器什么时候该主动删除流条目,例如说可以设定一个阈值,当流表的利用率超过阈值时就开始主动删除流表项;第二,应该删除哪些流项?希望删除的就是不活动的流表项。
B. 为什么机器学习会有帮助?
虽然我们不能确切知道流表条目访问的顺序,但是我们是否可以利用机器学习技术来推断基于历史流删除的访问顺序呢?一旦流表项从流表中删除,控制器就可以配置交换机发送一个FlowRemodes消息,该消息包含删除的原因、表项的持续时间、条目匹配的数据包数、空闲超时、硬超时、条目匹配的数据包中的字节数以及其他特定于实验者的统计信息。
C. 主动流输入删除的开销
主要包括两个部分。一是何时开始主动删除的开销,我们假设主动删除开始于超过控制器所设定的流表阈值时开始删除。空缺时间可以警告控制器提前作出反应,以避免流表溢出。开销的另一部分来自于决定应该主动删除哪些流条目。若采用随机或FIFO的策略,他们不需要开销,但如果没有删除的条目作为参考,控制器可能就会指示交换机删除实际上不存在流表中的条目,错误的指令,会加剧交换机和控制器的工作负荷,若表中没有流表项被删除,流表可能会溢出,对网络产生严重的影响。相反,如果启用了发送流删除的消息,则不会出现这样的错误指令,因为控制器知道开关的流表中有哪些流项。
我们的做法
基于机器学习的主动流条目的删除,如图1所示,做法包括两个部分:离线模型训练和基于训练模型的在线主动流删除。
A. 离线模型训练
为了训练机器学习的模型,我们首先需要收集合适的数据集。其中每个数据样本包含先前流删除的特征和标签(tLastVisitf 即最后一次引用流条目的时间)tLastVisitf 由tStartf + tPktActivef相加所得,tStartf 是流表中安装流f的当前流条目的时间,tPktActivef是所引用的流条目经过的时间。 tPktActivef作为标签。使用FlowRemoved消息所携带的统计数据的均值和标准差,即流条目匹配的数据包数(number ofpackets matched by a flow entry (𝑛𝑢𝑚𝑃𝑘𝑡)),条目的期限(𝑡𝐷𝑢𝑟𝑎𝑡𝑖𝑜𝑛),和删除的结果(𝑟𝑒𝑚𝑜𝑣𝑒𝑅𝑒𝑎𝑠𝑜𝑛)。此外,还使用了两个连续条目删除之间间隔的均值和标准差(𝑡𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙),还使用了流条目删除数量(𝑛𝑢𝑚𝑅𝑒𝑚𝑜𝑣𝑎𝑙)和最近一次流条目删除与当前流条目安装之间的间隔(𝑐𝑢𝑟 𝑡𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙)作为另外两个特性。
通过所识别的特性,我们即可以从真实网络数据包跟踪中生成用于训练的数据集。数据集生成过程由两个步骤组成。第一步是使用openflow模拟器重放数据包跟踪,该模拟器可以模拟数据包跟踪中的数据包时的控制器和交换机的行为,从而获取每个流的所有流的清除状态(the stats of all flow removals for every flow)。这些统计数据存储在几个统计向量中,vf-tStart(流f的流条目安装时间向量、 vf-removeReason(流f移除流条目的结果向量)、 vf-tDuration(流f的流条目经过的向量、 vf-numPkt(流f的流条目匹配的数据包数的向量)、 vf-tInterval(流f连续两次流删除间隔的向量)、 vf-tPktaAvtive (流f引用的经过时间流条目的向量)。
收集到数据集,我们需要选择合适的机器学习算法和调整其假设参数。正如我们所见,学习问题即回归问题,很多算法可以用于回归,本文使用随机森林来作为学习模型。随机森林是一种包含多个不相关决策树的集合学习方法,该学习方法具有无输入准备、训练速度快、解释性好、对噪声具有鲁棒性等优点。
B. 在线主动流条目删除
一旦在线学习完成, 我们就可以运用这种训练模型来用于在线主动流条目的删除。与数据集生成相似,控制器使用stat向量记录其控制下每个开关中所有流清除的状态。当一个来自交换机的FlowRemoved消息到达时,控制器将会更新交换机的stat向量。另外,当流条目从流表总删除后,控制器可以更新交换机的流表的实用程序。当消息到达时,控制器首先检查一个判定,如果是,控制器将启动主动输入删除的过程。然后就进行删除过程。