我的SDN之路(2):稍有头绪

随着测试工作的进行,对spec,对公司的交换机也越来越熟悉,回复起客户询问的邮件,也不必再和别人反复确认了。接下来,做些什么来提高呢?

我的目光最后停留在一款叫做OFTest的测试软件。这个项目是floodlight启动,已经开源的基于python的OpenFlow协议一致性的测试套件。它不光可以做协议交互,还可以收发报文做功能验证。此时我已经被python的优美和简洁深深折服了,也难怪网上还有社群的名字叫“python大法好”。

作为几乎没有编程基础的人,模仿肯定是最好的开始,而需求是最好的驱动。OFTest的脚本都很简单,下发流表,发包验证,十几秒就跑完一个case。那么在这个基础上,可以做些什么呢。

  • python有循环的逻辑啊,很简单地就可以下发大量的流表。稍加改动和增强,不就是测试flow/groupmeter容量的脚本了么?如果再配合发包测试仪,就可以测试添加和删除流表的速率了!
  • 在测试vxlan封装的时候,发现其中有的字段,例如L4-src-port的值是无法预测的,而OFTest本来的机制是全字段精确匹配。在查看代码后,我新加了函数,可以在验证匹配的时候忽略指定的多个字段,用起来真是得心应手!
  • 除了用OF协议报文之外,还有一些需要登陆交换机做配置,而OFTest并没有提供接口。经过比较,发现pexpect.spawn可以实现登陆交换机,下发命令,抓取回显这些功能。再配合正则表达式进行匹配,之前的测试脚本大部分都可以移植过来了!
  • Spec提供的OXM class和action比较有限。为了体现出公司芯片的能力,满足客户新的需求,需要包装出新的OXM和action。那么需要对OFTest的库进行扩展。好在OFTest已经提供了一些bsn的扩展,只要搞清楚字段是什么含义,如何拼凑出来即可。这样新开发的功能也可以在OFTest上做验证了。

回想起来,如果还是整天捧着那些如何python编程的书,恐怕早就陷入到无精打采的迷茫中了。因为给自己的定位是具备一定开发能力的测试人员,因此不需要过多执拗于追求代码的优雅,目标就是解决问题。这样将学习编程放到实际工作中,自己给自己提需求,并且能够最终解决实际问题,收获的不光是编程能力上的提高,更重要的是增强了对自己的信心。

后来客户询问ONOS的越来越多,又开始学习如何安装和使用ONOS。很多事情就是这样,只知道一个,思路会被牢牢束缚。而多了解一些,有了比较,自然就有提高。现在有了ODL和ONOS这两个“大”控制器,至少在使用的过程中,比较他们的相同点和不同点,认识又得到了加深。

此时公司内部的Wiki刚刚搭好,我发现之前自己的积累终于有了安家的地方。平时同事或是客户来问,我还要翻出自己的笔记来找,而搬到wiki上之后,自己和别人查找起来方便多了,节省了彼此的时间。如何能知道自己对一个事情的掌握是否达到一个层次,我个人抱定的一个标准就是可以给别人讲明白,或是写出来让别人看懂。

你可能感兴趣的:(我的SDN之路(2):稍有头绪)