OFTest(二)-如何扩展OXM-match-class

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

前言

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

扩展OXM的需求

  • Openflow已经定义了很多match class,涉及到L2/L3/MPLS/TCP/UDP等
  • 有时flow需要匹配特定的情况,例如我司的交换芯片可以match mpls label的个数
  • 下面以支持match mpls_label_num为例

预备知识

  • OXM的match field,由如下字段组成
  1. class(16bits)
  2. field(7bits)
  3. has_mask(1bit) #如果是0就是没有mask
  4. length(8bits) #表明vlalue长度,单位bytes
  5. value(长度由lenghth决定)
  6. mask(长度由length决定) #可选,取决于has_mask这个bitpad(长度不定) #可选
  • 关于字段长度和格式
  1. ! 表示按原字节序
  2. B 1 byte 整数
  3. H 2 byte整数
  4. L 4 bytes整数
  • OFTest使用type_len来定义class+field+has_mask+length,是一个正整数

预定义相关参数

  • 下面参数都是已经定义好的
  1. class=0x0001 #这个是自定义的NXM,如果是openflow spec1.3规定的,这个值就是0x8000
  2. field=49=0110001 #补齐7bits
  3. has_mask=0 # 没有掩码
  4. 合并field和has_mask=0110001 0=0x62
  5. length=1=0x01
  • 得到OFTest OXM需要的type_len值为
  1. type_len=0x0001 6201=90625

添加新的OXM定义

  • 在~/src/python/loxi/of13/oxm.py中添加

验证

  • 调用新加oxm class

  • 在OVS上dump-flows,得到

  • 发送mpls报文,发现只有包含三层mpls的报文可以匹配到这条流表

--------------华丽的分割线------------------
本文系《SDNLAB原创文章奖励计划》投稿文章,该计划旨在鼓励广大从业人员在SDN/NFV/Cloud网络领域创新技术、开源项目、产业动态等方面进行经验和成果的文字传播、分享、交流。有意向投稿的同学请通过官方唯一指定投稿通道进行文章投递,投稿细则请参考《SDNLAB原创文章奖励计划》


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/16867.html
分享到:
相关文章
条评论

登录后才可以评论

ljyfree 发表于16-05-19
0