编者按:本专题上一篇《基础知识篇》介绍了控制器南向、北向、东西向的基本知识,本篇将重点介绍控制器南向接口相关功能,并根据功能点给出测试用例。
1 南向接口概述
SDN的理念被提出,其最主要的贡献之一就是定义了以OpenFlow协议为标准的南向接口,用于对网络基础设施层的交换机、路由器等设备进行抽象建模,从而把每台单独的网络设备中的控制平面集中抽取到控制层中,实现底层转发设备的控制转发分离,使得底层转发设备所依据的具体转发策略由控制器通过南向协议统一下发管理。
2 南向接口功能点介绍
SDN控制器南向网络控制技术主要包括通过南向接口协议进行链路发现、拓扑管理、策略制定、表项下发等四大功能点。
2.1 链路发现和拓扑管理
SDN控制器主要使用LLDP协议作为链路发现协议,在链路发现过程中控制器会先向每个交换机发送一个带LLDP报文的packet-out消息,然后分析交换机上报的packet-in消息得到交换机之间的链路信息并记录到链路发现表中。从而获得到全网拓扑并对其进行统一管理,动态更新。
2.2 策略制定和表项下发
策略制定和表项下发则是控制器向交换机发送控制信息从而实现统一控制。
策略制定,是SDN交换机流表的来源依据,制定不同的策略,控制器会下发相应的流表到SDN交换机。SDN交换机的流表机制打破了传统网络中的层次化概念,无论是源MAC、目的MAC、VLAN ID等传统的二层网络信息,还是源IP、目的IP等三层信息,或者是源TCP/UDP端口号、目的TCP/UDP端口号等四层信息,都被统一封装在流表中。因此,控制器需要针对不同层的网络传输需求,制定相应的转发策略并生成对应流表下发给交换机。
表项下发,控制器对SDN交换机设备的控制是通过流表下发机制进行的,SDN控制器的下发有主动和被动2种模式。主动是指数据包在到达OpenFlow交换机之前就进行流表设置,因此,当第一个数据包到达交换机后,交换机就知道如何处理数据包了。这种方式有效消除了每秒钟能处理的数据量的限制,理想情况 下,控制器需要尽可能的预扩散流表项。被动方式是指第一个数据包到达交换机时并没有发现与之匹配的流表项,只能将其送给控制器处理。一旦控制器确定了相应的方式,那么相关的信息就会返回并缓存在交换机上,同时控制器将确定这些缓存信息的保存时限。
3 测试功能点确定
根据第二节对南向接口实现功能的具体介绍,经过整理得到的南向接口测试功能点如下:
- 链路发现
- 拓扑动态更新
- L2/L3/L4层策略的制定,表项下发
- 跨网段测试
- 故障倒换
- QoS测试
4 测试用例
4.1 拓扑发现
测试编号 | 1.1 |
测试项目 | 拓扑发现 |
测试目的 | 1、 验证不同组网下控制器拓扑发现的准确性 |
测试拓扑 | 拓扑1:
拓扑2: |
工作流程描述 | 1、 交换机与控制器建立连接,控制器学习到交换机的dpid。 2、 控制器将带有LLDP报文的 packet-out 消息发送给交换机,指示交换机将LLDP报文从所有端口转发。 3、 相邻的交换机收到转发过了的LLDP报文后,由于自身无法处理,再将其发送给控制器。 4、 控制器收到LLDP报文后学习到交换机之间的连接。 |
测试步骤 | 1、 控制器为初始状态,无其它拓扑信息。 2、 按照上图拓扑构建测试组网,测试仪器模拟多个交换机与控制器连接。 3、 检查控制器上拓扑发现是否正确。 |
预期结果 | 1、 控制器上展示所发现的拓扑正确 |
测试结果 | |
测试说明 |
4.2 拓扑管理
测试编号 | 1.2 |
测试项目 | 拓扑管理 |
测试目的 | 1、 验证网络拓扑发生变化的情况下控制器能动态更新拓扑 |
测试拓扑 | |
工作流程描述 | 1、 控制器定时发送带LLDP报文的 packet-out 消息给与其相连的SDN交换机并根据交换机反馈回来的 packet-in 消息获知交换机的工作状态及其链路状态,在监测交换机工作状态的同时完成网络拓扑视图的更新。 |
测试步骤 | 1、 接用例1,使发现的交换机中两个交换机直接的link down;。 2、 再次查看控制器发现的拓扑是否正确。 |
预期结果 | 1、 控制器上查看网络拓扑更新且正确 |
测试结果 | |
测试说明 |
4.3 L2/L3/L4层策略制定
测试编号 | 1.3 |
测试项目 | 策略制定 |
测试目的 | 1、 验证制定(L2/L3/L4)不同的策略,控制器策略下发正确 |
测试拓扑 | |
工作流程描述 | 1、 对于2层转发,在SDN网络中,MAC地址学习在控制器的链路发现过程中实现,根据2层信息进行数据包转发也比较容易实现,只需控制器以目的MAC地址为依据将对应的交换机转发端口号写入对应的交换机流表项中即可。 2、 对于3层转发,在SDN网络中,控制器利用相关的路由算法计算出源地址、目的地址之间的路由信息,并以IP地址、MAC地址为依据,将对应的交换机转发端口号写入相应交换机的流表项中。 3、 对于4层转发,在SDN网络中,4层数据包解析将在控制器中完成,并以TCP/UDP端口号、IP地址、MAC地址为依据,将对应的交换机转发端口号写入相应交换机的流表项中。 |
测试步骤 | 1、 通过控制器配置策略如下几种: 组合1:以源MAC,目的MAC地址配置匹配项 组合2:以Ether Type,源IP,目的IP地址配置匹配项 组合3:以Ether Type,nw_proto,tp_src,tp_dst配置匹配项 2、 控制器配置策略后静态或者动态的下发流表项。 3、 使用host发流量验证流表项下发正确。 |
预期结果 | 1、 配置不同策略的流表项下发正确 |
测试结果 | |
测试说明 |
4.4 跨网段测试
测试编号 | 1.4 |
测试项目 | 跨网段测试 |
测试目的 | 1、 验证控制器通过配置虚拟网络和交换策略,实现跨网段通信 |
测试拓扑 | |
工作流程描述 | 1、 在控制器上配置好网关,交换机端口,虚拟网络,交换策略。 2、 源host执行ping操作,首先会发生arp报文,与其直连的交换机收到arp报文后将其发送给控制器。 3、 控制器进行arp应答,并指示其将报文发送给源host。 4、 源host收到后,构造并发送icmp报文。报文被交换机发送到控制器,控制器发送arp请求。 5、 目的host响应控制器发送的 arp 请求,控制器得到响应后,下发流表项。 6、 至此,icmp报文经过入口交换机添加vlan tag修改了源mac和目的mac后转发,出口交换机带vlan的icmp报文后将vlan tag去掉最终发送到目的host。 |
测试步骤 | 1、 控制器上配置网关地址,交换机端口,虚拟网络,host网关设置正确。 2、 在源host上执行ping操作。 3、 查看交换机上流表项是否下发正确。 |
预期结果 | 1、 可ping通,流表下发正确 |
测试结果 | |
测试说明 |
4.5 故障倒换
测试编号 | 1.5 |
测试项目 | 故障倒换 |
测试目的 | 1、 验证交换机链路状态发生拥塞或者故障时,控制器能感知网络链路的状态,下发新流表正确 |
测试拓扑 | |
工作流程描述 | 1、 源端口与目的端口之间有2条路径,2条路径都正常的情况下,控制器会选择最优路径下发流表。 2、 在发流过程中,如果最优路径链路断掉。 3、 交换机就会告知控制器端口状态改变。 4、 控制器会更新网络拓扑,删除之前下发的流表项,重新下发流表项。 |
测试步骤 | 1、 模拟源与目的之间有2条路径组网。 2、 在源host上执行ping操作。 3、 在ping期间断开流表经过的链路。 4、 继续观察ping的结果。 |
预期结果 | 1、 链路断开ping操作会产生丢包,但是能迅速恢复 |
测试结果 | |
测试说明 |
4.6 QoS测试
测试编号 | 1.6 |
测试项目 | QoS测试 |
测试目的 | 1、 验证控制器下发具有qos标记的流表项正确 |
测试拓扑 | |
工作流程描述 | 1、 给定初始带宽为10Mbps。 2、 控制器下发流具有qos标记的流表项给交换机。 3、 发送流量速率为10Mbps,查看流量通过交换机的速率,确定真实流量值为小于或者等于队列限速值。 |
测试步骤 | 1、 添加qos记录,并添加2个队列q0和q1。 2、 q0限制为1Mbps。 3、 q1限速为2Mbps。 4、 以10Mbps的速度打流,查看通过交换机的流速。 |
预期结果 | 1、 通过各队列的限速值均小于或等于限速值 |
测试结果 | |
测试说明 |
5 后语
通过对南向接口的学习,总结了以上6条控制器基本功能的测试用例,特分享出来与和大家一起讨论研究。后续会继续研究控制器南向接口的性能测试及东西向接口功能测试。希望能与大家多多讨论,共同进步。