在SDN技术中,Controller是重中之重的产品。Controller的主要功能,通过南向接口管理下面连接的设备资源(VM、vSwitch、NFV),通过北向接口根据租户的需求,划分不同的资源给某一租户。Controller进行各租户的资源的拓扑管理和路由计算。Controller接收vSwitch上报的Packet_In报文,根据各租户的拓扑、报文业务流程和路由,计算出最优转发路径,形成表项下发给相关设备指导各个租户的报文转发。
对Controller的性能测试主要包括以下几点。
Controller是SDN网络中最繁忙的大脑,所有的控制平面的处理都是它进行的,其他设备(一般是vSwitch)把无法处理的报文都通过Packet_In报文上送给Controller处理。如果把选购Controller比喻选购电脑的话,那么Packet_In处理速度相当于电脑CPU的主频速度。
测试组网如图所示,测试单台或者一个region内两台集群控制器的Packet_In处理速度,可以使用Ixia测试仪器端口或者华三通信的性能测试套件OVSSimulator和Controller进行连接。OVSSimulator测试工具也是基于Java开发的,和开源的SDN Controller性能测试工具Cbench有类似功能,运行在高性能服务器上,模拟N个vSwitch和VM(一般1000-2000个vSwitch)向Controller发送测试报文。测试的报文最主要是两类:ARP请求报文和IP数据报文。当Controller收到ARP请求报文后,会查找自己拓扑和ARP表项,给出回应,并发送Packet_Out报文告诉vSwitch。当Controller收到IP数据报文后,会查找路由表,给出回应,并下发表项给vSwitch指导其转发。
由于Controller和vSwitch之间Openflow会话是通过TCP协议建立的,因此如果打入的packet_in报文的速率超过Controller的性能时,Controller上报文缓冲区就会慢慢变小,为了防止缓冲区溢出,就会存在TCP抑制现象,Controller会通过TCP协议通知发送端降低发送速率,那么实际发包速率是达不到设置的速率的,因此存在TCP抑制的情况下,不能用设置的packet_in报文发送速率来计算Controller pacekt_in报文的处理性能。经过多次验证,pacekt_in性能测试方法固化为:打入一定速率的packet_in报文,计算这些报文全部packet_out需要多少时间,然后再用报文总数除以这个时间得出报文处理速率,即packet_in性能。
现在主流的Controller,包括华三通信的Controller都是基于JAVA语言开发的。因此运行Controller的服务器的性能高低对Controller的性能有很大的影响。影响较大的包括:CPU频率、Controller实际使用的线程数[c01] 、接口上送的端口带宽(GE、10GE、还是聚合接口)。
实际使用的线程数:我司Controller可以定义VCE使用的线程数是固定的处理器线程数,还是总的处理器线程数减去某个值。比如,Controller软件定义了处理Packet_in的线程数为22个,那么在24处理器线程的服务器上,实际使用的就是22个线程,但是在8处理器线程的服务器上,实际使用的就是8个线程。
Controller做为整个SDN网络的大脑,必须有可靠的备份恢复机制,从链路故障、单点故障都有快速的检测和切换机制来保证用户业务。我司的Flare Controller采用集群设计,多个regeion组成一个集群,每个region里面有主备Controller。SDN网络典型的业务测试组网图如图3所示。
需要使用的H3C SDN Overlay网络虚拟化技术组件如下:
1、SDN Controller:H3C VCF Controller ,提供SDN Overlay网络的管理部署窗口,北向开放云控制系统REST接口实现和Openstack云等平台的对接,南向通过Openflow/NETCONF/OVSDB实现对物理或虚拟的网络设备进行统一部署配置和转发策略下发。SDN控制器通过集群技术实现高可靠性,并支持集群成员的平滑扩容/缩减。支持Vxlan网络和Vlan网络两种类型网络的创建部署。
2、Vxlan VTEP:H3C s1020v vSwitch,支持标准的Openflow和OVSDB,被H3C VCF 控制器统一管理,作为VM接入Overlay网络的虚拟交换机,接受VCF控制器的统一配置和策略下发,实现出入VM流量的转发。同时支持Vxlan类型网络转发和Vlan类型网络的转发。Vlan类型网络租户虚机在S1020v vSwitch上走传统转发流程。
3、VxLAN GW:H3C S6800交换机,提供物理实体服务器接入Overlay网络的VTEP设备,支持NETCONF&Openflow,接受VCF控制器的统一配置和策略下发,实现出入物理服务器的流量转发。
4、Vxlan IP GW:H3C S12500-F高端交换机,支持Openflow和NETCONF,接受VCF控制器统一配置和策略下发,作为Overlay网络网关,即虚拟网络的VM以及S6800下挂的物理服务器的物理网关,实现虚拟网络和非虚拟网络(Internet)之间的流量转发。H3C SDN Overlay方案支持多个S12500-F设备组成网关组备份,Overlay网络信息在网关组内同步,网关组对Overlay网络提供统一的VTEP IP地址,Overlay网络无需感知具体的GW成员设备,当一个网关成员故障,流量在Underlay网络自动切换到另一个网关成员上。网关之间无需协议交互各自状态,网关成员的状态由控制器统一管理,控制器同时部署网关组内所有成员设备且保证数据的一致性,真正实现网关组设备的无状态迁移。网关组VTEP IP地址由各个网关组成员通过传统的路由协议发布到Underlay网络,天然支持Overlay网络业务流量在Underlay网络上的ECMP负载分担。同时H3C SDN Overlay方案支持多个VXLAN IP GW网关组之间的负载分担,灵活承载Overlay网络的扩容。
如图所示,虚线代表的管理网络就是控制平面,控制平面的恢复要测试如下内容:
Region内主控制器故障倒换到备控制器时间
vSwitch从感知主控制器故障切换到被控制器时间
集群内主Leader控制器故障倒换到备Leader控制器时间
在采用Vxlan的Overlay解决方案中,数据平面的故障恢复时间要测试如下内容:
vSwitch和VM迁移至其他物理服务器时间
GW主备倒换流量中断时间;
VxLAN IP GW 单台GW故障;
VxLAN IP GW 故障恢复。
一台控制器管理的设备和VM数量是有限的,大规模的组网,需要管理的设备和VM更多,就需要Controller集群。集群核心机制是通过同时运行多个具备完整控制平面能力的实体并保持实体间的数据同步,达到在主用实体故障时备用实体快速接替工作的效果。集群是高可靠性之一,也是Controller测试的重点和难点。难点在于怎样在各种情况下,保证集群各节点的数据的一致性,同时保证实时消息反映数据的变化过程,是实时准确的备份到各个节点。同时实时数据的备份需要占用大量的计算资源,有些数据采用批量消息进行备份,实时备份和批量备份一般使用不同的通道,多通道数据传送不能严格保序,使得批量消息的时效性问题可能影响数据的正确性,这也是测试的难点之一。
一般来说集群有如下一些性能指标,单控制器管理Openflow设备数量、控制器集群管理Openflow设备数量以及Controller新建会话性能。
设备及主机学习能力:SDN控制器要和所有管理的设备建立Openflow会话,维持vSwitch端口和VM端口状态,IP地址等信息。
SDN Controller的核心还是在于设备的拓扑管理和路由路径的计算能力。这些协议和传统的路由协议类型。目前来看,主要是Openflow、BGP、arp、DHCP、DLDP、Netconf、PECP、SNMP等协议。这一块和传统的路由器所支持的协议差不多,也是华三通信优势之一。
安全防护能力有两个方面的防护要求:
第一个是服务器层面的安全防护能力,Controller程序现在一般基于Java开发,运行在Linux操作系统的宿主服务器上,因此防范宿主服务器遭受攻击,这个安全技术和其他的Linux服务器的防范技术相同。
第二个层面是针对Controller程序的攻击,这个攻击比如利用大量合法有效报文让Controller进行无效的计算和浪费资源,影响Controller的性能,这个攻击防范计算,华三通信移植和创新了大量的传统路由器和交换机的防攻击技术在Controller中。比如传统的arp攻击行为,在VM上可能依然存在,Controller及OVS怎样协作完成arp攻击行为的识别和处理。
除了综上所述的四方面关键性能指标,对于SDN Controller南北向接口的兼容性、丰富性和易用性也是需要考虑的因素。对于SDN Controller的选择,Packet_in性能是一个重要的性能参数,由于现在主流Controller都基于Java语言开发,其性能和运行服务器的性能有很大关系,各主流厂家的控制器经过各自努力比较容易先后都会达到相同数量级。但是对于Controller的可靠性技术,拓扑管理和路径计算,这些性能指标都类似传统路由器交换机的主要衡量指标,网络厂商在这些具有天然优势。
理念层面主要有:iperf、Cbench、sFlow。
iperf是一款测试网络性能的工具,基于服务器和客户端模式,可以测试两个虚拟机之间的TCP和UDP带宽质量,提供网络延时抖动、数据包丢失等信息。
Cbench是一款测试openflow控制器性能的工具,模拟一定数量的交换机连接控制器,发送packet-in消息,并等待控制器下发flow-mod消息,以此来衡量控制器的性能。
Cbench有两种工作方式,分别是latency和throughput。latency指Cbench发送一个packet_in消息并等待控制器回复匹配的flow mod消息,如此反复,统计每秒钟收到的flow mod数量。throughput指Cbench一直发送packet_in消息直到控制器缓存满了为止,计算返回的flow mod的数量,统计每秒控制器处理事务的数量。
sFlow是一种网络流量分析协议,sFlow流量监控工具监测设备端口进行数据流随机采样,并且提供各接口的流量信息。sFlow分为sFlow agent和sFlow collector。sFlow内嵌在网络设备中,获取设备的实时信息后封装成sFlow报文发送给sFlow collector。collector作为远端服务器,负责汇总、分析sFlow报文并且生成流量报告。
sFlow可以提供完整的第二层到第四层甚至全网范围内的实时流量信息,而且适用于超大网络流量环境下的流量分析,能够详细、实时地为用户分析网络流量的性能、趋势以及可能存在的问题。且几乎不会对被统计的设备造成任何负担、管理成本极低。