《sdn 交换机功能测试工具oftest 安装与使用总结》由会员分享,可在线阅读,更多相关《sdn 交换机功能测试工具oftest 安装与使用总结(13页珍藏版)》请在金锄头文库上搜索。
1、转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络SDN 交换机功能测试工具 OFTest 安装与使用总结【概要】SDN 功能测试工具通过发送协议数据包并根据被测试对象的反馈来判断其功能的完整性,比较典型的工具是 OFTest,它模拟控制器向交换机发送OpenFlow 协议从而达到测试 OpenFlow 交换机的目的。1 工具简介OFTest 是一个基于 Python 的测试 OpenFlow 规范的框架和测试套件,它支持1.0/1.2/1.3 版本的 OpenFlow 协议。 在测试环境中 OFTest 相当于一个控制器,它可以主动或者被动与交
2、换机连接, 获取交换机信息来测试OF交换机基本功能。OFTest对OpenFlow不同协议的支持是通过分析控制平面和数据平面的数据包来判定的,当 OFTest 模拟控制器发送消息到交换机,收到交换机的响应时,确定出交换机支持的功能。OFTest 测试框架如图 1 所示:转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络图 1 OFTest 测试框架Oftest/oft 脚本是进入 test 框架的接入点, 所有测试例都从 oft 脚本开始运行并在 test mode list 中进行匹配。运行 oftest 框架包括两个部分:(1)建立支持 OF
3、 协议的 python 库,所有测试脚本都用 python 写;(2)运行 oft 。2 安装(1)安装依赖:Python2.4/2.5/2.6/2.7、pypcap、scapy。其它可选软件:Doxygen、doxypy、lint、tcpdump。如果没有安装 pypcap可能会导致有关使用 VLAN 标签的测试失败。(2)安装 OFTest转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络OFTest 安装好后,其默认配置为一个协议为 OpenFlow1.0 的交换机一直试图连接 OFTest的控制器上, 端口是 6653, 使用虚拟端口 v
4、eth1, veth3, veth5, andveth7 连接到数据平面。(3)运行 OFTest,必须在超级用户下执行。3 使用方法表 1. OFTest 命令通用参数说明:(1)-list 详细的罗列出所有的测试用例, 包括标准用例、 非标准用例和禁用用例,非标准用例使用*标志,可要求供应商扩展或特殊的交换机配置。禁用用例通常用于试验,有某些特殊用途的,或者是太长而无法正常运行,这些都不是标准测试组的一部分。这里列出输入该参数后的部分测试列表:(2)-list-test-names 屏蔽了对每一个测试例的解释:转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 |
5、 专注软件定义网络表 2. OFTest 测试对象参数测试用例模块可以通过刚刚介绍的 list 查出来,如执行一个 load 模块:表 3. OFTest 交换机连接参数转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络说明:(1)platform 主要是定义 oft 与 switch 连接的 portmap。它使用 veth.py 脚本连接本地虚拟机,参数 platform 的默认值是“veth”,测试远程的交换机使用 remote.py,此时参数 platform 值配置为“remote”,或者使用命令行sudo ./oft -platfor
6、m=remote 修改,也可以添加自己的*.py 文件测试远程交换机,方法同 remote。(2)配置 oft 与 switch 连接使用的协议版本,OFTest 默认测试版本为 1.0, 也转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络可以手动修改为 1.2 或者 1.3 版本,如./oft V 1.2 将 OFTest 测试版本修改为1.2,测试过程中需要注意交换机和 oft 的 OF 协议版本要保持一致。表 4. OFTest 日志参数说明:log-file 参数可以用于日志的输出位置设置,默认产生的 log 输出到 oft.log 文
7、件中,修改 log-file=“”可以使 log 输出到控制台上,也可以定义自己的 log文件。转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络表 5. OFTest 测试行为参数4 应用实例下面一共例举了三个实例,分别是测试本地 OvS 交换机、物理 SDN 交换机、Mininet 自带的交换机。测试环境准备:用于测试的 3 种 OpenFlow 交换机;Root 权限运行 oft 测试工具;交换机运行 OpenFlow1.0 协议,并尝试与 oft 模拟的控制器连接;实例一:使用 OFTest 测试本地虚拟 OF 交换机转载文章请注明,转载
8、自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络通过测试本地虚拟交换机的功能初步了解 oft 的运行方式。(1)下载并运行本地虚拟交换机。run_switch.py 是 OFtest 提供的一个用于 veth 口并启动交换机进程的脚本, 在最初执行该脚本时我们可以看到如下结果。可以看出模拟的交换机一直在尝试与 OFTest 建立连接,由于 OFTest 还没启动所以日志中连接失败了。(2)运行 oft。转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络测试用例的执行方式有多种,执行./oft 为直接运行所有的测试用例
9、,运行时可以看到每个测试用例的运行结果是成功还是失败。如下:此时我们也可以从 run_switch.py 日志看出交换机的连接情况:另外我们还可以运行具体的某个测试用例,可以先用 sudo ./oft -list 列出所有的 mode 和其对应的测试用例。 例如 sudo ./oft flow_matches.UdpDstPort就表明使用 flow_matches 模块下的 UdpDstPort 测试用例。用例执行的其他方式大家可以自行研究。(3)通过抓包和日志分析虚拟交换机功能是否正常。测试的抓包分析部分截图如下图所示:转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow
10、 社区 | 专注软件定义网络(4)测试结束后,使用 sudo rmmod veth 命令删除交换机产生的虚接口。实例二:使用 OFTest 测试物理交换机该实例使用真实物理交换机,OFTest 作为控制器,测试真实的物理交换机与OFTest 交互是否正确。(1)修改 platforms/remote.py,port_map=eth0(根据自己虚拟机的环境修改,此处 eth0 为运行 oft 的虚拟机的网口),其它配置使用默认即可。( 2 ) 根 据 测 试 环 境 修 改 测 试 用 例 。 如 测 试 port_stats , 需 要 修 改OFTest/tests/port_stats.p
11、y,原测试用例要求 oftset 与被测试交换机的端口建立连接, 被测试交换机有 3 个 port, 并且需要在这 3 个 port 之间添加流表并互相收发数据包改变端口的状态,而测试物理交换机只需要向交换机发送 portstats 请求包即可,以上过程需要去除。(3)物理交换机向 OFTest 发起连接请求。例如 ovs-vsctl set-controller br0转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络tcp:192.168.5.124:6653,其中 192.168.5.124 为 OFTest 的 eth0 地址,6653为
12、监听端口。我们可以看到物理交换机与 OFTest 建立了连接关系:(4)运行测试用例,命令如下:(5)通过抓包和日志分析交换机与 OFTest 之间的交互过程。实例三:使用 OFTest 测试远端 Mininet 中的 OF 交换机该实例测试对象为 Mininet 中的虚拟交换机, 重点是为了测试交换机为 remote的情况。(1)根据实际环境修改 oft 监听交换机的 IP 地址和端口;(2)修改 oftest/platforms/remote.py,port_map=eth0(portmap 终端为运行 oft 的虚拟机的网口,根据虚拟机的实际情况修改);(3)安装远端 Mininet,运
13、行 Mininet 交换机,并向 oft 发出连接请求;转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络(4)运行 OFTest,将 platform 参数改为 remote,testmod.testcase 换成真实的测试用例:在 Mininet 中也可看出交换机与 OFTest 建立连接:一般情况下 oft 提供的测试用例与测试环境不相符, 直接使用会使测试结果不正确,建议使用 Wireshark 抓包、查看 oft.log 日志和脚本调试信息等方法分析错误原因,修改测试脚本。5 结束语由此可见 OFTest 确实是一款功能强大的 SDN
14、交换机测试工具,但这仅仅是不够的,SDN 交换机还需要从其他方面进行全面的测试,例如:图像更新测试:检查 image 的下载时间和状态、冷启动和热启动后系统的工作情况、逆向更新 image 等。复杂拓扑测试:分别在不同的 Packet bytes 下检查丢包情况。重启测试: 测试设备在各种工作状态下重启,是否可以正常重启,是否可以正确进入系统,启动过程中/启动后系统/串口无错误打印。转载文章请注明,转载自:SDN 技术社区 | SDN/Openflow 社区 | 专注软件定义网络表项测试:检查各 profile 的可配置资源数、满配检查各项是否可以满配等。性能测试:测试对 RFC2544 协议的支持、流安装和卸载、Packet-In /Out 发送接收等。互通性与压力测试:与控制器的互通情况,或者通过自动化脚本进行文件读写的操作等。