当下SDN架构中,控制器通过OpenFlow协议与交换机交互,交换机通过安装控制器下发的流表对数据执行转发动作。控制器对交换机下发流表分为两种模式,一种是主动下发,另一种是被动下发。主动下发指得是控制器通过对底层网络拓扑的感知,在数据没有到达之前,预先在交换机上下发完备的流表信息。那么实现SD-WAN有哪些重点工作?
1、统计信息收集模块
该模块的主要功能是控制器通过OpenFlow协议与底层OVS设备进行交互,记录控制域内各个OVS交换机上历史流量的到达情况,此接口在原生Floodlight控制器中并不存在,在系统实现中,在Floodlight控制器上添加一个流量统计的模块,该模块解析底层ovs交换机上流表的统计信息,包括源IP地址、目的IP地址、源端口、目的端口、协议类型,统计字段等。从接口获得的流量信息将会记录到数据库的flow表中,该功能由类FlowService中的getFlows函数完成。统计信息收集模块为控制器提供流量迁移的判决依据。
2、迁移目的控制器计算模块
该模块的主要是对超过阈值时的流量迁移提供服务,这也是系统的核心模块之一,由类PathService的getInterPath函数完成。首先,按照相应方法获得待迁移的流量对应的信息;其次,从数据库表a_s中获得各个邻居控制器的负载情况并选择负载较小的邻居控制器作为迁移对象;把计算出来的目的控制器插入表statistic对应的条目中。迁移目的控制器计算模块作为原型系统的核心模块,可以快速降低控制器的负载。
如此当数据到达交换机时,无需请求控制器的处理,从而减少了控制器与交换机的消息传递时延开销,但是预下发需要交换机安装全部的流表条目,且绝大多数流表在预先安装之后不会使用,因此这种SD-WAN方法存在交换机存储空间浪费问题,由于交换机的流表安装空间是有限的,实际上在交换机上只能存储部分流表信息,因此当前控制器与交换机之间主要是通过被动下发的方式安装流表。