51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1466|回复: 0
打印 上一主题 下一主题

OFTest(一):如何忽略一些字段在端口poll报文

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-9-17 15:16:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


    作者简介:刘敬一,盛科网络SDN交换机产品线测试主管

    </p>前言

      关于OFTest的介绍,请戳这里总的来说,就是用python写的测试Openflow协议一致性的测试套件可以将OFTest扩展为测试Openflow的测试平台,例如做压力测试
    遇到的问题

      OFTest的verify_packets,会要求给定期望报文的全部str,然后通过poll来判断是否capture到报文,并且capture的报文的每个字段是否和期望值完全一致。但是对于一些封装后的报文,例如NVGRE封装,封装后的外层IP header的Identity字段是无法预知的,当然IP header的checksum也是无法预知的。还有VXLAN的报文,除了上面说到的两个field之外,UDP的source-port也是未知的(当然dest-port一定是4789),同时UDP header的checksum也是未知的如果要检查封装后的报文,必须提供忽略指定字段的API。本例采用的是传入一个tuple的list,每个tuple包含需要忽略字段的起始offset和终止offset


    具体解决


        抓包相关的函数定义在/src/python/oftest/testutils里面追溯函数调用verify_packets->verify_packets->poll->match_exp_pktmatch_exp_pkt很简单,就是return str(pkt)==str(exp_str),意味着哪怕有一个字段不相符,OFTest都会认为是没有抓到期望报文添加上面各个函数对应的新定义函数,例如match_exp_pkt_ignore_parts,同时末尾增加一个参数,就是ignore_list,用来传递需要忽略的字段offset的起至点match_exp_pkt_ignore_part定义如下
          
        Shell


        def match_exp_pkt_ignore_parts(exp_pkt,pkt,ignore_list):
        e = str(exp_pkt)
        p = str(okt)
        if len(e)<60:
        p = p[:len(e)]
        start_p = 0
        for (u,v) in ignore_list:
        if (e[start_p:u]!=p[start_p:u]):
        return False
        start_p=v
        if (e[start_p:-1]!=p[start_p:-1]):
        return False
        return True



        例如capture封装成nvgre格式的报文


    Shell
    verify_packets_ignore_list(self,str(exp_pkt),str(pkt),out_port,[ip_id_field,ip_checksum_field,gre_hash_field])
    Shell
    ip_id_field = (18,20)
    ip_checksum_field = (24,26)
    gre_hash_field = (41,42)
      如果遇到包含vlan_tag,这些field都要增加4,就不累述了

    --------------华丽的分割线------------------
    本文系《SDNLAB原创文章奖励计划》投稿文章,该计划旨在鼓励广大从业人员在SDN/NFV/Cloud网络领域创新技术、开源项目、产业动态等方面进行经验和成果的文字传播、分享、交流。有意向投稿的同学请通过官方唯一指定投稿通道进行文章投递,投稿细则请参考《SDNLAB原创文章奖励计划》
    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 22:44 , Processed in 0.069703 second(s), 33 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表