openflow字符串库

ofpstr的Python项目详细描述


关于

ofpstr是openflow stringer库,它将字符串转换为 openflow二进制消息,类似于ovs ofctl flow规则参数。 它还可以将二进制消息转换回字符串表示。 语法不同于ovs ofctl,使用更直接的命名 如规范中所定义。例如,ovs ofctl使用dl-vlan 对于VLAN标记,OpenFlow1.3规范中没有。 ofpstr为此使用vlan-vid。

用法

有两种模式,oxmofp_mod_u flow

oxm示例:

importofpstr.oxm# string to binary messageoxm_msg,parsed_len=ofpstr.oxm.str2oxm("in_port=1,vlan_vid=0x1,eth_type=0x0800")# binary message to stringprint(ofpstr.oxm.oxm2str(oxm_msg))

OFP_mod_flow示例:

importofpstr.ofp4# string to binary messageofp_flow_mod_msg=ofpstr.ofp4.str2mod("in_port=1,@apply,output=controller",xid=16)# binary message to stringprint(ofpstr.ofp4.mod2str(ofp_flow_mod_msg))# in_port=1,@apply,output=controller

一般语法

标记用逗号分隔,字段可以采用带分隔符的参数。 参数可能有带“/”分隔符的掩码。示例:

# integer modemetadata=0x01/0x0Ftunnel_id=10# mac modeeth_dst=01:00:00:00:00:00/01:00:00:00:00:00# ipv4 modeipv4_src=192.168.1.0/24ipv4_src=192.168.1.0/255.255.255.0# ipv6 modeipv6_src=::# port mode may use special names or integerin_port=controllerin_port=1# pkt mode use two integer representing (namespace,ns_type)packet_type=0:1# hex mode use hex string (like binascii hex)dot11_frame_ctrl=c000/ff00# ssid mode use string directlydot11_ssid=TestAP

完整的OXM列表如下:

  • 整数模式:元数据,ETH U类型,VLAN视频,VLAN PCP,IP U DSCP,IP U ECN,IP U协议, TCP_SRC、TCP_DST、UDP_SRC、UDP_DST、SCTP_SRC、SCTP_DST、ICMPv4_类型、ICMPv4_代码, arp_op,ipv6_标签,icmpv6_类型,icmpv6_代码,mpls_bale,mpls_tc,mpls_bos, pbb_isid、隧道id、ipv6_exthdr、pbb_uca、tcp_标志, NXM_In_端口,NXM_ETH_类型,NXM_VLAN_TCI,NXM_IP_TOS,NXM_IP_协议, nxm_tcp_src,nxm_tcp_dst,nxm_udp_src,nxm_udp_dst,nxm_icmp_类型,nxm_icmp_代码,nxm_arp_op, nxm_reg0、nxm_reg1、nxm_reg2、nxm_reg3、nxm_reg4、nxm_reg5、nxm_reg6、nxm_reg7, nxm_tun_id,nxm_icmpv6_type,nxm_icmpv6_code,nxm_ip_frag,nxm_ipv6_label,nxm_ip_ecn,nxm_ip_ttl, nxm_pkt_mark、nxm_tcp_flags、nxm_dp_hash、nxm_recirc_id、nxm_conj_id, nxm_tun_gbp_id,nxm_tun_gbp_标志, dot11,dot11_公共操作,dot11_标记, radiotap_tsft、radiotap_标志、radiotap_lock_质量、radiotap_tx_衰减, radiotap_db_tx_衰减,radiotap_天线,radiotap_db_antsignal,radiotap_db_antnoise, radiotap_rx_标志、radiotap_tx_标志、radiotap_rts_重试、radiotap_data_重试, radiotap_dbm_antsignal、radiotap_dbm_antnoise、radiotap_dbm_tx_power
  • mac模式:以太dst,以太src,arp_sha,arp_tha,ipv6_nd_sll,ipv6_nd_tll, NXM_eth_dst、NXM_eth_src、NXM_arp_sha、NXM_arp_tha、NXM_nd_sll、NXM_nd_tll, DOT11地址1,DOT11地址2,DOT11地址3,DOT11地址4
  • IPv4模式:IPv4 SRC、IPv4 DST、ARP SPA、ARP TPA, nxm_ip_src,nxm_ip_dst,nxm_arp_spa,nxm_arp_tpa,nxm_tun_ipv4_src,nxm_tun_ipv4_dst
  • IPv6模式:IPv6 src、IPv6 dst、IPv6 ndu target, nxm_ipv6_src、nxm_ipv6_dst、nxm_nd_target
  • 端口模式:在端口中,在物理端口中,actset输出
  • pkt模式:数据包类型
  • 十六进制模式:dot11_frame_ctrl,dot11_action_category,dot11_tag_vendor,radiotap_fhss
  • ssid模式:dot11\u ssid
  • 速率模式:radiotap_rate
  • 频道模式:RadioTap_频道
  • comp模式:radiotap_mcs,radiotap_ampdu_状态
  • vht模式:radiotap vht

操作可以采用函数样式的参数。带有set_u前缀的oxm将被set_field action。 有些nxm操作只接受函数样式。示例:

# alias for set_vlan_vid=10set_vlan_vid(10)# nicira extensionscnt_ids(0x1,0x2,0x3)reg_load(nxm_vlan_tci=0xa/0x0fff)reg_load2(nxm_vlan_tci=0xa/0x0fff)reg_move(nxm_eth_dst=nxm_eth_src)reg_move(nxm_eth_dst[0:4]=nxm_eth_src[4:8])resubmit(in_port)resubmit(1)resubmit_table(in_port,all)resubmit_table(1,1)set_tunnel(0x11223344)set_tunnel64(0x1122334455667788)pop_queue()note(some text)multipath(eth_src,50,hrw,12,0x0,nxm_reg0[0:4])bundle(eth_src,50,active_backup,nxm_in_port,slaves(1,2,3))bundle_load(symmetric_l4,60,hrw,nxm_in_port,nxm_reg0[0:16],slaves(2,3))output_reg(in_port)output_reg(in_port[0:1])output_reg2(in_port)output_reg2(in_port[0:1])learn(nxm_in_port=0x10,nxm_eth_dst=nxm_eth_src,reg_load(nxm_reg1[16:32]=nxm_in_port))exit()
  • 整数模式:输出、设置MPLS、推VLAN、弹出MPLS、推MPLS, 设置队列、组、设置nw ttl、push pbb、
  • 标志模式:copy_ttl_out,copy_ttl_in,dec_mpls_ttl,dec_nw_ttl,pop_pbb

高级功能

除了ofpt_flow_mod之外,还提供了几种openflow方法:

importofpstr.ofp4# OFPMP_FLOWofpstr.ofp4.text2mpflowofpstr.ofp4.mpflow2text# OFPT_GROUPofpstr.ofp4.str2groupofpstr.ofp4.group2str# OFPMP_GROUP / OFPT_MULTIPART_*ofpstr.ofp4.text2mpgroupofpstr.ofp4.mpgroup2text# OFPMP_GROUP_DESC / OFPT_MULTIPART_*ofpstr.ofp4.text2mpgroupdescofpstr.ofp4.mpgroupdesc2text

注意,这些函数是在0.2中重写的,

许可证

opfstr在apache 2.0许可证和python软件下可用 基金会执照。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
随机如何深入审查某些函数的内部Java实现?   mysql Java/GlassFish MySQLNonTransientConnectionException   java访问枚举元素的位置   Android:Java在很多类中是否效率较低   java中字节数组到短数组再返回   java AutoRotate不会在setRequestedOrientation之后更改OnConfiguration   工件部署期间发生java GlassFish4错误   java添加片段会导致崩溃   在ListView(Android)上使用OnTouchListener时java崩溃   Java接口静态变量未初始化   javafx获取Java中MediaPlayer的当前状态   java获取所有选定的JList项JFrame表单Netbeans   java重写hashcode和等于强制所有实例是相同的   java如何将此日期格式与正则表达式匹配?   Java中的异常处理是一种测试形式吗?   spring hibernate查询中的java日期   java如何维护持久的后台线程?   java以一定的比率运行方法   java添加了与GWT的集成