流表匹配方法、装置、系统及计算机可读存储介质与流程

文档序号:17158448发布日期:2019-03-20 00:18阅读:646来源:国知局
本发明涉及软件定义网络
技术领域
:,尤其涉及一种流表匹配方法、装置、系统及计算机可读存储介质。
背景技术
::软件定义网络sdn(softwaredefinednetwork)技术是一种有广泛应用前景的通信网络技术,其具有如下特征:第一,业务转发、处理与控制分离;第二,逻辑集中化控制;第三,网络业务可编程;第四,开放接口。sdn技术主要由onf(opennetworkingfoundation)标准组织进行规范和定义,其中,openflow协议是onf定义的重要南向接口协议,控制器通过openflow协议与网络设备进行信息交换,进行网络的控制和管理。网络设备通过openflow协议中流表的操作实现对业务的转发,在操作时,首先,根据收到分组包的类型进行流表的查找和匹配。通常,该查找和匹配的依据是分组包的头部域,如以太网的源地址、ipv4的目的地址、入端口、metadata域等。目前openflow协议中,匹配操作是基于分组数据包头中所携带的协议信息进行的。这种匹配方式,使得未来出现新的协议时,oxm_field需要增加对应新协议的定义。因此,设备也需根据新的定义进行升级,使得对未来新协议的支持不方便、不灵活。技术实现要素:有鉴于此,本发明的目的在于提供一种流表匹配方法、装置、系统及计算机可读存储介质,通过对oxm字段扩展来进行匹配,能非常灵活地定位到需要匹配的报文内任意位置,提高了匹配的准确度和匹配效率。本发明解决上述技术问题所采用的技术方案如下:根据本发明的一个方面,提供的一种流表匹配方法,包括:获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;对所述头部进行扩展,以获取匹配的起始位置;对所述报文体进行扩展,以获取匹配的偏移量和长度;根据所述起始位置、偏移量和长度对流表进行匹配。可选地,对所述头部进行扩展,以获取匹配的起始位置包括:所述头部包括oxm-class字段和oxm-field字段;在所述oxm-class字段内增加位置匹配类型定义;在所述oxm-field字段内增加位置匹配域定义;所述起始位置包括但不限于以下位置:分组报文的第一个字节、分组报文的二层头部、分组报文的三层头部、分组报文的四层头部和分组报文标签协议栈底。可选地,对所述报文体进行扩展,以获取匹配的偏移量和长度包括:在报文体中增加偏移量和长度的字段;所述偏移量是指从所述起始位置开始向左或向右移动的位置;所述长度是指从起始位置加偏移量的位置再向左或右移动预设的长度。可选地,所述头部还包括oxm-hasmask字段和oxm-length字段;所述报文体还包括oxm-value字段和mask字段。根据本发明的另一个方面,提供的一种流表匹配装置,包括:获取模块,用于获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;第一扩展模块,用于对所述头部进行扩展,以获取匹配的起始位置;第二扩展模块,用于对所述报文体进行扩展,以获取匹配的偏移量和长度;匹配模块,用于根据所述起始位置、偏移量和长度对流表进行匹配。可选地,所述第一扩展模块包括:所述头部包括oxm-class字段和oxm-field字段;在所述oxm-class字段内增加位置匹配类型定义;在所述oxm-field字段内增加位置匹配域定义;所述起始位置包括但不限于以下位置:分组报文的第一个字节、分组报文的二层头部、分组报文的三层头部、分组报文的四层头部和分组报文标签协议栈底。可选地,所述第二扩展模块包括:在报文体中增加偏移量和长度的字段;所述偏移量是指从所述起始位置开始向左或向右移动的位置;所述长度是指从起始位置加偏移量的位置再向左或右移动预设的长度。可选地,所述头部还包括oxm-hasmask字段和oxm-length字段;所述报文体还包括oxm-value字段和mask字段。根据本发明的再一个方面,提供的一种流表匹配系统,包括存储器、处理器和至少一个被存储在所述存储器中并被配置为由所述处理器执行的应用程序,所述应用程序被配置为用于执行以上所述的流表匹配方法。根据本发明的再一个方面,提供的一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以上所述的流表匹配方法。本发明实施例的一种流表匹配方法、装置、系统及计算机可读存储介质,该方法包括:获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;对所述头部进行扩展,以获取匹配的起始位置;对所述报文体进行扩展,以获取匹配的偏移量和长度;根据所述起始位置、偏移量和长度对流表进行匹配,通过对oxm字段扩展来进行匹配,能非常灵活地定位到需要匹配的报文内任意位置,提高了匹配的准确度和匹配效率。附图说明图1为本发明实施例一提供的一种流表匹配方法流程图;图2为本发明实施例一提供的流表匹配域的头部格式示意图;图3为本发明实施例一提供的流表匹配域的头部格式中各字段的释义图;图4为本发明实施例一提供的流表匹配域的报文体格式示意图;图5为本发明实施例二提供的一种流表匹配装置示范性结构框图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。实施例一如图1所示,在本实施例中,一种流表匹配方法,包括:s10、获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;s20、对所述头部进行扩展,以获取匹配的起始位置;s30、对所述报文体进行扩展,以获取匹配的偏移量和长度;s40、根据所述起始位置、偏移量和长度对流表进行匹配。在本实施例中,通过对oxm字段扩展来进行匹配,能非常灵活地定位到需要匹配的报文内任意位置,提高了匹配的准确度和匹配效率。在本实施例中,软件定义网络sdn是一种新型网络创新架构,其核心技术openflow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。在本实施例中,openflow协议将原来由交换机/路由器控制的报文转发过程转化为由openflow交换机(openflowswitch)和控制服务器(controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制openflow交换机中的流表,从而达到控制数据转发的目的。在本实施例中,流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口;其中,流表项由匹配域(也称为头域、包头域)、计数器和操作组成,所述匹配域是流表项的标识,用于对交换机接收到的数据包的包头内容进行匹配。在本实施例中,openflow协议中,使用oxm(openflowextensiblematch)tlv(type-length-value)格式来描述流表匹配域;所述流表匹配域包括头部和报文体,所述头部的长度为4字节,所述头部包括oxm-class字段和oxm-field字段;还包括oxm-hasmask字段和oxm-length字段;其格式如图2所示,头部中四个字段的长度和用途如图3所示。在本实施例中,oxm-class字段定义如下:ofpxmc_nxm_0=0x0000,/*backwardcompatibilitywithnxm*/ofpxmc_nxm_1=0x0001,/*backwardcompatibilitywithnxm*/ofpxmc_openflow_basic=0x8000,/*basicclassforopenflow*/ofpxmc_packet_regs=0x8001,/*packetregisters(pipelinefields).*/ofpxmc_experimenter=0xffff,/*experimenterclass*/。目前,sdn南向设备(网元)主要使用的是基础类型ofpxmc_openflow_basic=0x8000。在本实施例中,oxm_field字段定义了匹配的类型,比如可以是分组数据包的入端口、以太网源(目的)地址、以太网帧类型、vlanid、ip源(目的)地址、tcp源(目的)地址、udp源(目的)地址等。oxm_field字段的具体定义如下:ofpxmt_ofb_in_port=0,/*switchinputport.*/ofpxmt_ofb_in_phy_port=1,/*switchphysicalinputport.*/ofpxmt_ofb_metadata=2,/*metadatapassedbetweentables.*/ofpxmt_ofb_eth_dst=3,/*ethernetdestinationaddress.*/ofpxmt_ofb_eth_src=4,/*ethernetsourceaddress.*/ofpxmt_ofb_eth_type=5,/*ethernetframetype.*/ofpxmt_ofb_vlan_vid=6,/*vlanid.*/ofpxmt_ofb_vlan_pcp=7,/*vlanpriority.*/ofpxmt_ofb_ip_dscp=8,/*ipdscp(6bitsintosfield).*/ofpxmt_ofb_ip_ecn=9,/*ipecn(2bitsintosfield).*/ofpxmt_ofb_ip_proto=10,/*ipprotocol.*/ofpxmt_ofb_ipv4_src=11,/*ipv4sourceaddress.*/ofpxmt_ofb_ipv4_dst=12,/*ipv4destinationaddress.*/ofpxmt_ofb_tcp_src=13,/*tcpsourceport.*/ofpxmt_ofb_tcp_dst=14,/*tcpdestinationport.*/ofpxmt_ofb_udp_src=15,/*udpsourceport.*/ofpxmt_ofb_udp_dst=16,/*udpdestinationport.*/ofpxmt_ofb_sctp_src=17,/*sctpsourceport.*/ofpxmt_ofb_sctp_dst=18,/*sctpdestinationport.*/ofpxmt_ofb_icmpv4_type=19,/*icmptype.*/ofpxmt_ofb_icmpv4_code=20,/*icmpcode.*/ofpxmt_ofb_arp_op=21,/*arpopcode.*/ofpxmt_ofb_arp_spa=22,/*arpsourceipv4address.*/ofpxmt_ofb_arp_tpa=23,/*arptargetipv4address.*/ofpxmt_ofb_arp_sha=24,/*arpsourcehardwareaddress.*/ofpxmt_ofb_arp_tha=25,/*arptargethardwareaddress.*/ofpxmt_ofb_ipv6_src=26,/*ipv6sourceaddress.*/ofpxmt_ofb_ipv6_dst=27,/*ipv6destinationaddress.*/ofpxmt_ofb_ipv6_flabel=28,/*ipv6flowlabel*/ofpxmt_ofb_icmpv6_type=29,/*icmpv6type.*/ofpxmt_ofb_icmpv6_code=30,/*icmpv6code.*/ofpxmt_ofb_ipv6_nd_target=31,/*targetaddressfornd.*/ofpxmt_ofb_ipv6_nd_sll=32,/*sourcelink-layerfornd.*/ofpxmt_ofb_ipv6_nd_tll=33,/*targetlink-layerfornd.*/ofpxmt_ofb_mpls_label=34,/*mplslabel.*/ofpxmt_ofb_mpls_tc=35,/*mplstc.*/ofpxmt_ofp_mpls_bos=36,/*mplsbosbit.*/ofpxmt_ofb_pbb_isid=37,/*pbbi-sid.*/ofpxmt_ofb_tunnel_id=38,/*logicalportmetadata.*/ofpxmt_ofb_ipv6_exthdr=39,/*ipv6extensionheaderpseudo-field*/ofpxmt_ofb_pbb_uca=41,/*pbbucaheaderfield.*/ofpxmt_ofb_tcp_flags=42,/*tcpflags.*/ofpxmt_ofb_actset_output=43,/*outputportfromactionsetmetadata.*/ofpxmt_ofb_packet_type=44,/*packettypevalue.*/。在本实施例中,步骤s20包括:在所述oxm-class字段内增加位置匹配类型定义;具体定义如下:ofpxmc_openflow_position=0x8002,/*位置匹配类型*/。在所述oxm-field字段内增加位置匹配域定义;具体定义如下:ofpxmt_ofb_fist_byte=45,/*从分组报文的第一个字节为匹配起始位置*/ofpxmt_ofb_secondlayer_head=46/*从分组报文的二层头部为匹配起始位置,如以太网头部*/ofpxmt_ofb_thirdlayer_head=47/*从分组报文的三层头部为匹配起始位置,如ip头部*/ofpxmt_ofb_fourthlayer_head=48/*从分组报文的四层头部为匹配起始位置,如tcp,udp头部*/ofpxmt_ofb_lablestack_bottom=49/*从分组报文标签协议栈底为匹配起始位置,如lsp,pw标签栈底*/。也即,所述起始位置包括:分组报文的第一个字节、分组报文的二层头部、分组报文的三层头部、分组报文的四层头部和分组报文标签协议栈底。在本实施例中,步骤s30包括:在报文体中增加偏移量和长度的字段;所述偏移量是指从所述起始位置开始向左或向右移动的位置;所述长度是指从起始位置加偏移量的位置再向左或右移动预设的长度。在本实施例中,所述偏移量的字节长度为8bit,取值范围-128至127;匹配长度的字节长度也为8bit。如图4所示,在本实施例中,所述报文体还包括oxm-value字段和mask字段;这里oxm_value指具体的匹配值,mask指具体的掩码值。在本实施例中,以匹配以太网报文的第两个字节为“0x01-80-c2-00”为例,先填写oxm_tlv头部,则,oxm_class字段填0x8002(位置匹配),oxm_field字段填45(从分组报文的第一个字节为匹配起始位置),oxm_hasmask字段填0,oxm_length字段填“10字节”;再填写oxm_tlv报文体,则“偏移量”取“0”,“匹配长度”取“4字节”,“oxm_value”取“01-80-c2-00”,“mask”取“0”。作为另一种实施例,以匹配控制字为高位4个bit为“0000”为例,先填写oxm_tlv头部,则,oxm_class字段填0x8002(位置匹配),oxm_field字段填49(从pw标签结束位置为匹配起始位置),oxm_hasmask字段填1,oxm_length字段填“4字节”;再填写oxm_tlv报文体,则,“偏移量”取“0”,“匹配长度”取“1字节”,“oxm_value”取“0x00”,“mask”取“oxf0”。实施例二如图5所示,在本实施例中,一种流表匹配装置,包括:获取模块10,用于获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;第一扩展模块20,用于对所述头部进行扩展,以获取匹配的起始位置;第二扩展模块30,用于对所述报文体进行扩展,以获取匹配的偏移量和长度;匹配模块40,用于根据所述起始位置、偏移量和长度对流表进行匹配。在本实施例中,通过对oxm字段扩展来进行匹配,能非常灵活地定位到需要匹配的报文内任意位置,提高了匹配的准确度和匹配效率。在本实施例中,软件定义网络sdn是一种新型网络创新架构,其核心技术openflow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。在本实施例中,openflow协议将原来由交换机/路由器控制的报文转发过程转化为由openflow交换机(openflowswitch)和控制服务器(controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制openflow交换机中的流表,从而达到控制数据转发的目的。在本实施例中,流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口;其中,流表项由匹配域(也称为头域、包头域)、计数器和操作组成,所述匹配域是流表项的标识,用于对交换机接收到的数据包的包头内容进行匹配。在本实施例中,openflow协议中,使用oxm(openflowextensiblematch)tlv(type-length-value)格式来描述流表匹配域;所述流表匹配域包括头部和报文体,所述头部的长度为4字节,所述头部包括oxm-class字段和oxm-field字段;还包括oxm-hasmask字段和oxm-length字段;其格式如图2所示,头部中四个字段的长度和用途如图3所示。在本实施例中,所述第一扩展模块包括:在所述oxm-class字段内增加位置匹配类型定义;具体定义如下:ofpxmc_openflow_position=0x8002,/*位置匹配类型*/。在所述oxm-field字段内增加位置匹配域定义;具体定义如下:ofpxmt_ofb_fist_byte=45,/*从分组报文的第一个字节为匹配起始位置*/ofpxmt_ofb_secondlayer_head=46/*从分组报文的二层头部为匹配起始位置,如以太网头部*/ofpxmt_ofb_thirdlayer_head=47/*从分组报文的三层头部为匹配起始位置,如ip头部*/ofpxmt_ofb_fourthlayer_head=48/*从分组报文的四层头部为匹配起始位置,如tcp,udp头部*/ofpxmt_ofb_lablestack_bottom=49/*从分组报文标签协议栈底为匹配起始位置,如lsp,pw标签栈底*/。所述起始位置包括但不限于以下位置:分组报文的第一个字节、分组报文的二层头部、分组报文的三层头部、分组报文的四层头部和分组报文标签协议栈底。在本实施例中,所述第二扩展模块包括:在报文体中增加偏移量和长度的字段;所述偏移量是指从所述起始位置开始向左或向右移动的位置;所述长度是指从起始位置加偏移量的位置再向左或右移动预设的长度。在本实施例中,所述偏移量的字节为8bit,取值范围-128至127;匹配长度的字节也为8bit。在本实施例中,所述报文体还包括oxm-value字段和mask字段;这里oxm_value指具体的匹配值,mask指具体的掩码值。在本实施例中,以匹配以太网报文的第两个字节为“0x01-80-c2-00”为例,先填写oxm_tlv头部,则,oxm_class字段填0x8002(位置匹配),oxm_field字段填45(从分组报文的第一个字节为匹配起始位置),oxm_hasmask字段填0,oxm_length字段填“10字节”;再填写oxm_tlv报文体,则“偏移量”取“0”,“匹配长度”取“4字节t”,“oxm_value”取“01-80-c2-00”,“mask”取“0”。作为另一种实施例,以匹配控制字为高位4个bit为“0000”为例,先填写oxm_tlv头部,则,oxm_class字段填0x8002(位置匹配),oxm_field字段填49(从pw标签结束位置为匹配起始位置),oxm_hasmask字段填1,oxm_length字段填“4字节”;再填写oxm_tlv报文体,则,“偏移量”取“0”,“匹配长度”取“1字节”,“oxm_value”取“0x00”,“mask”取“oxf0”。实施例三在本实施例中,一种流表匹配系统,包括存储器、处理器和至少一个被存储在所述存储器中并被配置为由所述处理器执行的应用程序,所述应用程序被配置为用于执行实施例一所述的流表匹配方法。实施例四本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述流表匹配方法实施例中任一所述的方法实施例。需要说明的是,上述装置、系统实际上是和计算机可读存储介质实施例与方法实施例属于同一构思,其具体实现过程详见方法实施例,且方法实施例中的技术特征在装置实施例中均对应适用,这里不再赘述。本发明实施例的一种流表匹配方法、装置、系统及计算机可读存储介质,该方法包括:获取软件定义网络中openflow协议的流表匹配域,所述流表匹配域为oxmtlv格式,所述流表匹配域包括头部和报文体;对所述头部进行扩展,以获取匹配的起始位置;对所述报文体进行扩展,以获取匹配的偏移量和长度;根据所述起始位置、偏移量和长度对流表进行匹配,通过对oxm字段扩展来进行匹配,能非常灵活地定位到需要匹配的报文内任意位置,提高了匹配的准确度和匹配效率。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1