摘要

在SDN中,作为网络大脑的Controller,不仅为下层转发节点Switch提供数据转发流表,还为上层应用程序提供各类网络基本信息,负担繁重.特别是当网络规模较大时,Controller会成为网络性能的瓶颈.实验表明,当一个Controller管理300个Switch节点时,平均首ping时延超过300ms,而访问百度、新浪等网站仅需20ms左右,可见其对Controller负载造成相当大的影响,因此,有必要对其进行优化.已有工作表明,通过选取少量关键节点可实现对网络状态的可观性与网络行为的可控性.因此,减轻Controller负载的一个有效途径是对其所管辖的网络节点进行重要性排序,选取出重要节点,通过收集重要节点的网络服务信息去评估全网节点的网络状态,Controller再根据全网状态向这些重要节点下发相关控制策略,通过重要节点把控制策略扩散到全网节点从而实现全网控制.无论是信息采集还是下发控制流的过程,Controller仅仅操纵这些重要节点,既减少了信息采集工作又减少了控制流的下发工作,从而达到降低Controller负担的目的,因此,该文提出了一种面向服务的网络节点重要性排序方法.对于每一种网络服务,结合SDN集中控制以及获取全局参数的特性,不但考虑了Switch的网络信息,如通信量、网络拓扑等,而且结合了具体的网络服务选取对应的服务参数,对Switch进行重要性排序.Controller仅仅需要对排名靠前的Switch节点进行信息的收集与控制,从而达到降低自身负担的目的.该文以SDN网络中检测TCP洪泛攻击这一网络服务为例,进行了大量的实验,实验证实了参数选取的有效性,并且将该方案与已有方案进行了实验对比,该方案优于已有的排序方案.当选取排名在前40%的Switch节点进行信息收集时,不仅能够减少控制器60%的负担,还可以保证攻击检测程序成功率高达94%,同时,所提方案本身给Controller带来的负担仅占2%.