一种基于Openflow的报文转发方法及设备与流程

    专利2022-07-07  132

    本发明涉及网络通信
    技术领域
    :,特别涉及一种基于openflow的报文转发方法及设备。
    背景技术
    ::云计算一个重要的技术就是虚拟化,虚拟化是指通过虚拟化技术,将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。其中,这些逻辑计算机在云计算中称为云主机,为云主机提供基础网络服务的交换机称为虚拟交换机;其完全通过软件实现,运行在计算资源的宿主机中。此外,场景的虚拟交换机有openvswitch、linuxbridge、nexus1000v等。在云计算中,云主机对外提供服务,比如,阿里云、腾讯云、移动云等云服务供应商,基于高安全、可控制、易运维等考虑,往往需要对云主机进行控制和监控。常见的控制和监控功能如下:对于安全组的监控可以是对数据包进行过滤和状态检测,通过一系列的安全组规则来允许或者禁止安全组内的云主机对公网或私网访问;对于网络安全机制服务质量(qualityofservice,qos),可以是通过对云主机的出、入流量进行限制,来提供更好的服务能力;对于运维的监控可以是对所提供的业务流量进行实时监控。对于传统的物理服务器,其安全组、qos都是在物理交换机上实现,业务流量监控也是管理平台通过snmp协议从物理交换机上获取监控信息。而云计算场景中,由于vswitch传统交换功能本身并没有实现类似于物理交换机的功能,这部分功能都是通过linux内核的基本功能来满足,比如,安全组功能通过linux内核的iptables实现,qos借助于linux内核的htb功能实现,这样的话,云主机的数据转发都通过内核协议栈来完成,如此一来数据转发效率低。为了提升云服务的性能,目前主要引入openvswitch集成dpdk的方案,将用户态的数据不经过内核直接转发到网卡,从而提高了用户转发效率,但是却无法兼顾安全、控制、运维等。可见,如何在保证数据转发效率的同时,兼顾数据的控制和监控就显得十分重要。技术实现要素:本发明实施例提供了一种基于openflow的报文转发方法及设备,用于在保证数据转发效率的同时,兼顾数据的控制和监控。第一方面,一种基于openflow的报文转发方法,包括:接收待转发报文;按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每级流表包括至少一个子流表,每个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括按照预设控制动作对报文进行控制的多个表项,所述报文转发流表中每个子流表包括按照预设转发路径对报文进行路径转发的多个表项;若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。在其中一种可能的实现方式中,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储,所述第一网络标识符用于标识所述arp报文来源于所述第一租户;由所述入口流表跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址为本地网关的mac地址,则由所述入口控制流表跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;由所述报文转发流表跳转至所述出口控制流表,若所述arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。在其中一种可能的实现方式中,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址与本地网关的mac地址不同,在由所述入口流表跳转至所述入口控制流表之后,所述方法还包括:由所述入口控制流表跳转至所述报文转发流表中用于表征报文转发路径分发的子流表;根据所述用于表征报文转发路径分发的子流表确定针对所述arp应答报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至所述报文转发流表中用于表征二层桥转发的子流表;根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,并将所述处理后的arp应答报文泛洪到本地端口;由所述用于表征二层桥转发的子流表跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;从所述出口流表所包括的多个表项中查找与所述处理后的arp应答报文匹配的目标表项,按照所述目标表项对应的出隧道口,将所述处理后的arp应答报文从所述出隧道口转发出去。在其中一种可能的实现方式中,若所述第一租户与所述第二租户为不同的租户,在所述将所述arp应答报文从所述报文入端口转发出去之后,所述方法还包括:构造所述第一租户向所述第二租户发送的icmp报文,其中,所述icmp报文的ip地址为所述第二租户的ip地址,所述icmp报文的目的mac地址为本地网关的mac地址;在所述icmp报文进入所述报文转发流表中的用于表征报文转发路径分发的子流表时,确定针对所述icmp报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至用于表征三层路由转发的子流表;根据所述用于表征三层路由转发的子流表确定针对所述icmp报文的三层转发路径,对所述icmp报文进行三层转发处理,将所述icmp报文的源mac地址修改为网关的mac地址,获得处理后的icmp报文;由所述报文转发流表跳转至所述出口控制流表,若所述处理后的icmp报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;从所述出口流表所包括的多个表项中查找与所述处理后的icmp报文匹配的目标表项,按照所述目标表项对应的路由端口,将所述处理后的icmp报文从所述路由端口转发出去。在其中一种可能的实现方式中,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:若由所述入口流表跳转至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。在其中一种可能的实现方式中,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:若由所述入口流表跳转至所述入口控制流表中的用于表征入方向服务质量的子流表或跳转至所述出口控制流表中用于表征出方向服务质量的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为限速时,若所述待转发报文的接收速率大于限速速率,则丢弃所述待转发报文。在其中一种可能的实现方式中,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:若跳转至所述入口控制流表中的用于表征入方向报文统计的子流表或跳转至所述入口控制流表中的用于表征出方向报文统计的子流表,从所述子流表表项中查找与所述待转发报文匹配的目标表项,在所述目标表项对应的转发动作为报文统计时,则对所述待转发报文进行统计。第二方面,本发明实施例提供了一种基于openflow的报文转发设备,包括:接收单元,用于接收待转发报文;处理单元,用于按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括用于表征对报文进行控制的多个表项,所述报文转发流表中每个子流表包括用于表征对报文进行路径转发的多个表项;若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。在其中一种可能的实现方式中,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,所述处理单元用于:将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储;跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;跳转至所述出口控制流表,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,且所述arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表;从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。在其中一种可能的实现方式中,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,所述处理单元用于:若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征二层桥转发的子流表;根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,以及所述处理后的arp应答报文的出隧道口;跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述出隧道口转发出去。在其中一种可能的实现方式中,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符不相同,所述处理单元用于:若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征三层路由转发的子流表;根据所述用于表征三层路由转发的子流表确定针对所述arp应答报文的三层转发路径,对所述arp应答报文进行三层转发处理,获得处理后的arp应答报文,以及处理后的arp应答报文的路由端口;跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述路由端口转发出去。在其中一种可能的实现方式中,所述入口控制流表包括用于表征安全组入规则的子流表、用于表征入方向服务质量的子流表和用于表征入方向报文统计的子流表中的至少一个子流表。在其中一种可能的实现方式中,所述出口控制流表包括用于表征安全组出规则的子流表、用于表征出方向服务质量的子流表和用于表征出方向报文统计的子流表中的至少一个子流表。在其中一种可能的实现方式中,所述报文转发流表包括用于表征报文转发路径分发的子流表、用于表征报文应答的子流表、用于表征二层桥转发的子流表和用于表征三层路由转发的子流表。在其中一种可能的实现方式中,所述处理单元用于:若由所述入口流表跳转至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。在其中一种可能的实现方式中,所述处理单元用于:若由所述入口流表跳转至所述入口控制流表中的用于表征入方向服务质量的子流表或跳转至所述出口控制流表中用于表征出方向服务质量的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为限速时,若所述待转发报文的接收速率大于限速速率,则丢弃所述待转发报文。在其中一种可能的实现方式中,所述处理单元用于:若跳转至所述入口控制流表中的用于表征入方向报文统计的子流表或跳转至所述入口控制流表中的用于表征出方向报文统计的子流表,从所述子流表表项中查找与所述待转发报文匹配的目标表项,在所述目标表项对应的转发动作为报文统计时,则对所述待转发报文进行统计。本发明的有益效果如下:本发明实施例提供了一种基于openflow的报文转发方法及设备,首先,接收待转发包括,然后,按照预先确定的依次串行设置的多级流表的先后次序跳转至每一级流表,对该待转发报文进行处理,该多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每级流表包括至少一个子流表,每个子流表包括多个表项,其中,入口控制流表和/或出口控制流表中每个子流表包括按照预设控制动作对报文进行控制的多个表项,报文转发流表中每个子流表包括按照预设转发路径对报文进行路径转发的多个表项,若跳转至该多级流表中每一级流表的目标子流表,则从目标子流表所包括的多个表项中查找与待转发报文匹配的目标表项,按照该目标表项对应的转发动作对该待转发报文进行处理。也就是说,通过至少包括五级流表的多级流表在保证对待转发报文转发的同时,实现对待转发报文的监控和控制,从而在保证数据转发效率的同时,兼顾数据的控制和监控。附图说明图1为本发明实施例提供的一种基于openflow的报文转发方法的方法流程图;图2为本发明实施例提供的一种基于openflow的报文转发方法中步骤s102的方法流程图;图3为基于表2中openflow转发模型的其中一种拓扑结构示意图;图4为本发明实施例提供的一种基于openflow的报文转发方法中步骤s201的方法流程图;图5为本发明实施例提供的一种基于openflow的报文转发方法中在步骤s204之后的方法流程图;图6为本发明实施例提供的一种基于openflow的报文转发设备的其中一种结构示意图。具体实施方式本发明的说明书和权利要求书及上述附图中的“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。现有主要引入openvswitch集成dpdk的方案,将用户态的数据不经过内核直接转发到网卡,由于数据的转发路径都运行在用户态,从而提高了用户转发效率,但是其无法使用linux内核的功能,导致无法同时兼顾安全、控制、运维等。鉴于此,本发明实施例提供了一种基于openflow的报文转发方法及设备,用于在保证数据转发效率的同时,兼顾数据的控制和监控。如图1所示,本发明实施例提供了一种基于openflow的报文转发方法,所述方法包括:s101:接收待转发报文;在本发明实施例中,所述待转发报文可以是地址解析协议报文(addressresolutionprotocol,arp),还可以是网络控制消息协议报文(internetcontrolmessageprotocol,icmp),在此不做限定。s102:按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每级流表包括至少一个子流表,每个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括按照预设控制动作对报文进行控制的多个表项,所述报文转发流表中每个子流表包括按照预设转发路径对报文进行路径转发的多个表项;在本发明实施例中,openflow支持多级流表,每个子流表对应一类流表,所述入口控制流表可以包括用于表征安全组入规则的子流表、用于表征入方向服务质量的子流表和用于表征入方向报文统计的子流表中的至少一个子流表。所述出口控制流表可以包括用于表征安全组出规则的子流表、用于表征出方向服务质量的子流表和用于表征出方向报文统计的子流表中的至少一个子流表。所述报文转发流表可以包括用于表征报文应答的子流表、用于表征报文转发路径分发的子流表、用于表征二层桥转发的子流表、用于表征三层路由转发的子流表。其中,在所述至少一个子流表为多个时,不同子流表之间按顺序设置。如表1所示为本发明实施例中基于openflow的多级流表的其中一种结构示意图。入口流表入口控制流表报文转发流表出口控制流表出口流表表1在本发明实施例中,可以将报文转发、安全、控制及运维的功能转化成流表,挂载在流水线上,从而实现对数据的控制和监控。此外,在具体实施过程中,还可以实际应用需要在流水线上记载其它流表,以此来提高基于openflow的报文转发的性能。s103:若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。在本发明实施例中,在接收所述待转发报文之后,按照预先确定的依次串行设置的所述多级流表的先后次序跳转至每一级流表,若跳转至所述多级流表中每一级流表的目标子流表,则从该目标子流表所包括的多个表项中查找与待转发报文匹配的目标表项,然后,按照所述目标表项对应的转发动作对所述待转发报文进行处理。在具体实施过程中,所述多级流表的各个流表依次串行设置,所述多级流表的跳转可以是由前一级流表来控制,比如,在通过“table”值来表征对应流表的id时,可以通过“goto_table”指令来控制流表a跳转至流表b。当然,在实际应用中,还可以根据实际应用需要来控制流表间的跳转。在具体实施过程中,通过多级流表可以在保证报文转发功能的同时,实现对报文的监控和控制,从而在保证数据转发效率的同时,兼顾了数据的控制和监控。在本发明实施例中,如表2为基于openflow的其中一种报文转发模型,在表2中,第一列表示流表名称,第二列表示唯一标识流表的id,第三列表示流表说明。ingressport表示入口流表,该入口流表对应的流表id为0,该入口流表可以记录报文的网络标识符(vxlannetworkidentifier,vni)信息到metadata,且该入口流表包括多个报文入口表项;入口控制流表包括ingressacl、ingressqos和ingressstatistics这三个子流表,且入口控制流表包括多个表征入规则的表项,其中,ingressacl表示入口控制流表中用于表征安全组入规则的子流表,其包括多个安全组入规则表项,且其对应的流表id为10,ingressqos表示入口控制流表中用于表征入方向服务质量的子流表,其对应的流表id为20,ingressstatistics表示入口控制流表中用于表征入方向报文统计的子流表,其包括多个入方向报文统计表项,统计值可以基于云主机、租户等,主要为管理平台提供监控信息,且其对应的流表id为30;报文转发流表包括terminationmac、arpresponder、unicastrouting和bridging这四个子流表,其主要包括多个转发路径分发表项,可以将报文分发到二层转发路径、三层转发路径和arp处理路径,其中,terminationmac表示报文转发流表中用于表征报文转发路径分发的子流表,其包括多个转发路径分发表项,且其对应的流表id为40,arpresponder表示报文转发流表中用于表征报文应答的子流表,其包括多个arp/ns应答表项,主要实现网关本地应答,且其对应的流表id为50,unicastrouting表示报文转发流表中用于表征三层路由转发的子流表,其对应的流表id为60,bridging表示报文转发流表中用于表征二层桥转发的子流表,其对应的流表id为70;出口控制流表包括engressacl、engressqos和engressstatistics这三个子流表,且出口控制流表包括多个表征出规则的表项,其中,engressacl表示出口控制流表中用于表征安全组出规则的子流表,其对应的流表id为80,engressqos表示出口控制流表中用于表征出方向服务质量的子流表,其对应的流表id为90,engressstatistics表示出口控制流表中用于表征出方向报文统计的子流表,其对应的流表id为100;egressport表示出口流表,其包括多个报文出口表项,将报文输出(output)后正确的出口其对应的流表id为110。对于流表id的设置情况,以及多级流表所包括的级数子流表的划分还可以根据实际应用需要来设置,在此不做限定。表2此外,在具体实施过程中,本发明实施例中所设计的多级流表除了可以是表2中所示的转发模型外,还可以根据实际应用需要将其它功能转发成流表挂载到流水线正确的位置,相应地,该多级流表构成的转发模型还可以扩展控制,满足用户对数据的各种控制。在本发明实施例中,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,如图2所示,步骤s103中所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:s201:将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储,所述第一网络标识符用于标识所述arp报文来源于所述第一租户;s202:由所述入口流表跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址为本地网关的mac地址,则由所述入口控制流表跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;s203:由所述报文转发流表跳转至所述出口控制流表,若所述arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;s204:从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。在具体实施过程中,步骤s201至步骤s204的具体实现过程如下:具体地,结合如图3所示的拓扑结构示意图来说明一下步骤s201至步骤s204的具体实现过程,图3具体为基于表2中openflow的转发模型的其中一种拓扑结构示意图,比如,在通过ping探测检测来探测第一租户和第二租户之间的链路状态时,仍然以图3所示为例,第一租户可以为vm1,第二租户可以是vm2,在vm1pingvm2的过程中,若vm1和vm2为同一租户,且所述待转发报文为vm1向vm2发送的地址解析协议arp请求的arp报文,也就是说,触发vm1发送arp请求,将所述arp报文首先与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储,仍然以图3所示为例,vm1的第一网络标识符vni为0xa,0xa用于标识所述arp报文来源于vm1。在实际应用中,本领域技术人员可以根据实际需要来设置相应的流表,在具体实施过程中,表2所示的入口流表的可以设置为:ovs-ofctladd-flowbr-int"priority=1table=0in_port=vhu1actions=write_metadata:0xa/0xffffffff,goto_table:10"-oopenflow13其中,“priority=1table=0in_port=vhu1”表示匹配域,该匹配域中“priority”表示优先级,“in_port”表示入端口,“table”表示流表id,该匹配域可以用于匹配所述待转发报文从哪个端口进来,优先级等。其中,“actions=write_metadata:0xa/0xffffffff,goto_table:10”表示动作域,用于匹配所述待转发报文由当前流表跳转至下一个流表。然后,在将所述arp报文与所述入口流表中的表项进行匹配并处理后,由所述入口流表跳转至所述入口控制流表,比如,可以通过入口流表中的“goto_table”指令来实现入口流表到入口控制流表的跳转。仍以表2所示的例子为例,通过“goto_table:10”指令可以使tableid为“0”对应的入口流表跳转至tableid为“10”的入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,其中,入规则可以是安全组入规则,可以是服务质量入规则,还可以是报文统计入规则。在所述arp报文的目的媒体存取控制位址(mediaaccesscontroladdress,mac)为本地网关的mac地址,则由所述入口控制流表跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文。也就是说,arp请求网关跳转至arp应答,构造arp应答报文。在具体实施过程中,转发模型中的所述入口控制流表在默认情况下未设置有入规则,一旦有优先级较高的规则写入,则相应地入口控制流表中设置有相应的入规则。在具体实施过程中,表2所示的入口控制流表包括三个子流表,这三个子流表分别在默认情况下可以设置为:ovs-ofctladd-flowbr-int"priority=0table=10actions=goto_table:20"-oopenflow13;ovs-ofctladd-flowbr-int"priority=0table=20actions=goto_table:30"-oopenflow13;ovs-ofctladd-flowbr-int"priority=0table=30actions=goto_table:40"-oopenflow13,其中,“priority=0”表示优先级为最低优先级。在具体实施过程中,若所述arp报文在入口控制流表中所匹配的表项未设置有入规则,则arp请求网关跳转至arp应答,所述arp报文的目的mac地址为本地网关的mac地址,则入口控制流表直接跳转至报文转发流表中用于表征报文应答的子流表,构造arp应答报文。然后,在构造arp应答报文之后,由所述报文转发流表跳转至所述出口控制流表,若所述arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表,然后,从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。如此一来,通过表2所示的基于openflow的转发模型便实现了对arp报文的直接转发。在具体实施过程中,转发模型中的所述出口控制流表在默认情况下未设置有出规则,一旦有优先级较高的规则写入,则相应地出口控制流表中设置有相应的安全组规则。在具体实施过程中,表2所示的出口控制流表包三个子流表,这三个子流表分别在默认情况下可以设置为:ovs-ofctladd-flowbr-int"priority=0table=80actions=goto_table:90"-oopenflow13;ovs-ofctladd-flowbr-int"priority=0table=90actions=goto_table:100"-oopenflow13;ovs-ofctladd-flowbr-int"priority=0table=100actions=goto_table:110"-oopenflow13,其中,“priority=0”表示优先级为最低优先级。在本发明实施例中,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址与本地网关的mac地址不同,如图4所示,步骤s201中在由所述入口流表跳转至所述入口控制流表之后,所述方法还包括:s301:由所述入口控制流表跳转至所述报文转发流表中用于表征报文转发路径分发的子流表;s302:根据所述用于表征报文转发路径分发的子流表确定针对所述arp应答报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至所述报文转发流表中用于表征二层桥转发的子流表;s303:根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,并将所述处理后的arp应答报文泛洪到本地端口;s304:由所述用于表征二层桥转发的子流表跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;s305:从所述出口流表所包括的多个表项中查找与所述处理后的arp应答报文匹配的目标表项,按照所述目标表项对应的出隧道口,将所述处理后的arp应答报文从所述出隧道口转发出去。在具体实施过程中,步骤s301中步骤s305的具体实现过程如下:首先,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址与本地网关的mac地址不同,在由所述入口流表跳转至所述入口控制流表之后,由所述入口控制流表跳转至所述报文转发流表中用于表征报文转发路径分发的子流表,然后根据所述用于表征报文转发路径分发的子流表确定针对所述arp应答报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至所述报文转发流表中用于表征二层桥转发的子流表。也就是说,在arp请求的是同租户下的云主机时,二层广播处理。具体地,根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应道报文,并将所述处理后的arp应答报文泛洪到本地端口。然后,由所述用于表征二层桥转发的子流表跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项中未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为目标子流表,然后,从所述出口流表所包括的多个表项中查找与所述处理后的arp应答报文匹配的目标表项,按照所述目标表项对应的出隧道口,将所述处理后的arp应答报文从所述出隧道口转发出去,比如,出隧道口为图3中的ot1。在具体实施过程中,表2所示的用于表征二层桥转发的子流表的可以设置为:ovs-ofctladd-flowbr-int"priority=0table=110actions=write_metadata:0/0"-oopenflow13在本发明实施例中,仍以图3为例,在vm1pingvm2过程中,在通过arp报文学习到对端的mac地址后,vm1发出的icmp请求报文通过二层转发路径发送到vm2,其中,对icmp报文的二层转发路径的处理仍采用图4所示的处理方法,在此不做详述了,此外,vm2的icmp应答报文同icmp请求报文的处理过程原理相同,在此不做赘述了。在本发明实施例中,若所述第一租户与所述第二租户为不同的租户,如图5所示,在步骤s204在所述将所述arp应答报文从所述报文入端口转发出去之后,所述方法还包括:s401:构造所述第一租户向所述第二租户发送的icmp报文,其中,所述icmp报文的ip地址为所述第二租户的ip地址,所述icmp报文的目的mac地址为本地网关的mac地址;s402:在所述icmp报文进入所述报文转发流表中的用于表征报文转发路径分发的子流表时,确定针对所述icmp报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至用于表征三层路由转发的子流表;s403:根据所述用于表征三层路由转发的子流表确定针对所述icmp报文的三层转发路径,对所述icmp报文进行三层转发处理,将所述icmp报文的源mac地址修改为网关的mac地址,获得处理后的icmp报文;s404:由所述报文转发流表跳转至所述出口控制流表,若所述处理后的icmp报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;s405:从所述出口流表所包括的多个表项中查找与所述处理后的icmp报文匹配的目标表项,按照所述目标表项对应的路由端口,将所述处理后的icmp报文从所述路由端口转发出去。在具体实施过程中,步骤s401至步骤s405的具体实现过程如下:仍然以图3所示为例,若所述第一租户与所述第二租户为不同的租户,比如,vm1为所述第一租户,vm3为所述第二租户,在vm1pingvm3的过程中,由于进行的为跨租户ping探测,首先,vm1发送arp请求,目的mac地址是本地网关的mac地址,可以通过流表进行网关应答,具体地,将arp请求报文分发至表2中的用于表征报文转发路径分发的子流表。在通过该子流表学习到本地网关的arp信息之后,vm1发出的icmp请求报文,具体地,构造vm1向vm3发送的icmp报文,其中,所述icmp报文的ip地址为vm3的ip地址,所述icmp报文的目的mac地址为本地网关的mac地址,通过相应流表进行网关应答,在所述icmp报文进入所述报文转发流表中的用于表征报文转发路径分发的子流表时,确定针对所述icmp报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至用于表征三层路由转发的子流表。在具体实施过程中,用于表征报文转发路径分发的子流表可以设置为:ovs-ofctladd-flowbr-int"priority=0table=50metadata=0xa/0xffffffffin_port=vhu1arparp_tpa=1.1.1.1actions=write_actions(set_field:0x2->arp_op,set_field:1.1.1.2->arp_tpa,set_field:1.1.1.1->arp_spa,set_field:00:00:00:22:11:13->arp_tha,set_field:00:8c:fa:fa:fa:fa->arp_sha,output:input),goto_table:80"-oopenflow13其中,1.1.1.1为本地网关ip,00:8c:fa:fa:fa:fa为本地网关mac,input为所述icmp报文进来的端口。然后,根据所述用于表征三层路由转发的子流表确定针对所述icmp报文的三层转发路径,对所述icmp报文进行三层转发处理,将所述icmp报文的源mac地址修改为网关的mac地址,获得处理后的icmp报文。在具体实施过程中,在学习到本地网关的arp信息之后,vm1封装icmp请求报文,其中,所述icmp报文的ip地址为vm3的ip地址,目的mac地址为本地网关的mac地址,所述icmp报文进入用于表征三层路由转发的子流表之后,通过该子流表中所匹配到的表项对所述icmp报文的二层信息重新封装,将其源mac地址修改为网关的mac地址,目的mac地址不变,生存时间值(timetolive,ttl)减一。在实际应用中,所述icmp报文需要经过三层路由转发,其每经过一个路由,生存时间值就要减一,从而实现了对所述icmp报文三层路由转发。在获得处理后的icmp报文之后,由所述报文转发流表跳转至所述出口控制流表,若所述处理后的icmp报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表,然后从所述出口流表所包括的多个表项中查找与所述处理后的icmp报文匹配的目标表项,按照所述目标表项对应的路由端口,将所述处理后的icmp报文从所述路由端口转发出去。在本发明实施例中,步骤s102的流处理可以是安全组控制,具体包括:若由所述入口流表跳转至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。在具体实施过程中,若由所述入口流表跳至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。其中,所述待转发报文的预设地址可以是源ip地址、目的ip地址、源mac地址、目的mac地址,在此不做限定。仍以图3所示的vm1、vm2和vm3为例,比如,禁止vm3访问vm1,所述入口控制流表中的用于表征安全组入规则的子流表可以设置为:ovs-ofctladd-flowbr-int"priority=0table=10ip_src=2.1.1.3dl_dst=00:00:00:22:11:13actions=drop"-oopenflow13再比如,禁止vm1访问vm2,则所述出口控制流表中的用于表征安全组出规则的子流表可以设置为:ovs-ofctladd-flowbr-int"priority=0table=80in_port=vhu1dl_dst=00:00:00:22:11:14actions=drop"-oopenflow13在本发明实施例中,步骤s102的流处理可以是qos限速,具体包括:若由所述入口流表跳转至所述入口控制流表中的用于表征入方向服务质量的子流表或跳转至所述出口控制流表中用于表征出方向服务质量的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为限速时,若所述待转发报文的接收速率大于限速速率,则丢弃所述待转发报文。在具体实施过程中,以图3中的vm1为例,比如,对vm1的发送和接收速率进行限制,限速速率为1000pps/s,所述入口控制流表中用于表征入方向服务质量的子流表可以是:ovs-ofctladd-meterbr-intmeter=1,pktps,stats,burst,band=type=drop,rate=1000,burst_size=10000-oopenflow13;ovs-ofctladd-flowbr-int"table=20priority=0dl_dst=00:00:00:22:11:13actions=meter:1,goto_table:30"-oopenflow13;所述出口控制流表中用于表征出方向服务质量的子流表可以是:ovs-ofctladd-flowbr-int"table=90priority=0in_port=vhu1actions=meter:1,goto_table:100"-oopenflow13在本发明实施例中,步骤s102的流处理可以是报文统计,具体包括:若跳转至所述入口控制流表中的用于表征入方向报文统计的子流表或跳转至所述入口控制流表中的用于表征出方向报文统计的子流表,从所述子流表表项中查找与所述待转发报文匹配的目标表项,在所述目标表项对应的转发动作为报文统计时,则对所述待转发报文进行统计。在具体实施过程中,仍以图3中所示的vm1为例,比如,对进入vm1的报文进行统计,所述入口控制流表中的用于表征入方向报文统计的子流表可以为:ovs-ofctladd-flowbr-int"table=30priority=0dl_dst=00:00:00:22:11:13actions=goto_table:40"-oopenflow13再比如,对从vm1出去的报文进行统计,所述出口控制流表中用于表征出方向服务质量的子流表可以为:ovs-ofctladd-flowbr-int"table=100priority=0in_port=vhu1actions=goto_table:110"-oopenflow13基于同一发明构思,如图6所示,本发明实施例还提供了一种openflow报文转发设备,包括:接收单元10,用于接收待转发报文;处理单元20,用于按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括用于表征对报文进行控制的多个表项,所述报文转发流表中每个子流表包括用于表征对报文进行路径转发的多个表项;若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。在具体实施过程中,由于接收单元10以及处理单元20所执行的相关步骤在前述转发方法中已经进行了详尽的描述,在此就不再赘述了。在本发明实施例中,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,所述处理单元用于:将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储;跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;跳转至所述出口控制流表,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,且所述arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表;从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。在本发明实施例中,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,所述处理单元用于:若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征二层桥转发的子流表;根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,以及所述处理后的arp应答报文的出隧道口;跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述出隧道口转发出去。在本发明实施例中,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符不相同,处理单元20用于:若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征三层路由转发的子流表;根据所述用于表征三层路由转发的子流表确定针对所述arp应答报文的三层转发路径,对所述arp应答报文进行三层转发处理,获得处理后的arp应答报文,以及处理后的arp应答报文的路由端口;跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述路由端口转发出去。在本发明实施例中,所述入口控制流表包括用于表征安全组入规则的子流表、用于表征入方向服务质量的子流表和用于表征入方向报文统计的子流表中的至少一个子流表。在本发明实施例中,所述出口控制流表包括用于表征安全组出规则的子流表、用于表征出方向服务质量的子流表和用于表征出方向报文统计的子流表中的至少一个子流表。在本发明实施例中,所述报文转发流表包括用于表征报文转发路径分发的子流表、用于表征报文应答的子流表、用于表征二层桥转发的子流表和用于表征三层路由转发的子流表。在本发明实施例中,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址与本地网关的mac地址不同,处理单元20还用于:由所述入口控制流表跳转至所述报文转发流表中用于表征报文转发路径分发的子流表;根据所述用于表征报文转发路径分发的子流表确定针对所述arp应答报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至所述报文转发流表中用于表征二层桥转发的子流表;根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,并将所述处理后的arp应答报文泛洪到本地端口;由所述用于表征二层桥转发的子流表跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;从所述出口流表所包括的多个表项中查找与所述处理后的arp应答报文匹配的目标表项,按照所述目标表项对应的出隧道口,将所述处理后的arp应答报文从所述出隧道口转发出去。在本发明实施例中,若所述第一租户与所述第二租户为不同的租户,处理单元20还用于:构造所述第一租户向所述第二租户发送的icmp报文,其中,所述icmp报文的ip地址为所述第二租户的ip地址,所述icmp报文的目的mac地址为本地网关的mac地址;在所述icmp报文进入所述报文转发流表中的用于表征报文转发路径分发的子流表时,确定针对所述icmp报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至用于表征三层路由转发的子流表;根据所述用于表征三层路由转发的子流表确定针对所述icmp报文的三层转发路径,对所述icmp报文进行三层转发处理,将所述icmp报文的源mac地址修改为网关的mac地址,获得处理后的icmp报文;由所述报文转发流表跳转至所述出口控制流表,若所述处理后的icmp报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;从所述出口流表所包括的多个表项中查找与所述处理后的icmp报文匹配的目标表项,按照所述目标表项对应的路由端口,将所述处理后的icmp报文从所述路由端口转发出去。在本发明实施例中,所述入口控制流表包括用于表征安全组入规则的子流表、用于表征入方向服务质量的子流表和用于表征入方向报文统计的子流表中的至少一个子流表。在本发明实施例中,所述出口控制流表包括用于表征安全组出规则的子流表、用于表征出方向服务质量的子流表和用于表征出方向报文统计的子流表中的至少一个子流表。在本发明实施例中,所述报文转发流表包括用于表征报文转发路径分发的子流表、用于表征报文应答的子流表、用于表征二层桥转发的子流表和用于表征三层路由转发的子流表。在本发明实施例中,处理单元20用于:若由所述入口流表跳转至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。在本发明实施例中,处理单元20用于:若由所述入口流表跳转至所述入口控制流表中的用于表征入方向服务质量的子流表或跳转至所述出口控制流表中用于表征出方向服务质量的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为限速时,若所述待转发报文的接收速率大于限速速率,则丢弃所述待转发报文。在本发明实施例中,处理单元20用于:若跳转至所述入口控制流表中的用于表征入方向报文统计的子流表或跳转至所述入口控制流表中的用于表征出方向报文统计的子流表,从所述子流表表项中查找与所述待转发报文匹配的目标表项,在所述目标表项对应的转发动作为报文统计时,则对所述待转发报文进行统计。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页1 2 3 当前第1页1 2 3 
    技术特征:

    1.一种基于openflow的报文转发方法,其特征在于,包括:

    接收待转发报文;

    按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每级流表包括至少一个子流表,每个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括按照预设控制动作对报文进行控制的多个表项,所述报文转发流表中每个子流表包括按照预设转发路径对报文进行路径转发的多个表项;

    若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。

    2.如权利要求1所述的方法,其特征在于,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:

    将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储,所述第一网络标识符用于标识所述arp报文来源于所述第一租户;

    由所述入口流表跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址为本地网关的mac地址,则由所述入口控制流表跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;

    由所述报文转发流表跳转至所述出口控制流表,若所述arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;

    从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。

    3.如权利要求2所述的方法,其特征在于,若所述arp报文在所述入口控制流表中所匹配的表项未设置入规则,且所述arp报文的目的mac地址与本地网关的mac地址不同,在由所述入口流表跳转至所述入口控制流表之后,所述方法还包括:

    由所述入口控制流表跳转至所述报文转发流表中用于表征报文转发路径分发的子流表;

    根据所述用于表征报文转发路径分发的子流表确定针对所述arp应答报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至所述报文转发流表中用于表征二层桥转发的子流表;

    根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,并将所述处理后的arp应答报文泛洪到本地端口;

    由所述用于表征二层桥转发的子流表跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;

    从所述出口流表所包括的多个表项中查找与所述处理后的arp应答报文匹配的目标表项,按照所述目标表项对应的出隧道口,将所述处理后的arp应答报文从所述出隧道口转发出去。

    4.如权利要求2所述的方法,其特征在于,若所述第一租户与所述第二租户为不同的租户,在所述将所述arp应答报文从所述报文入端口转发出去之后,所述方法还包括:

    构造所述第一租户向所述第二租户发送的icmp报文,其中,所述icmp报文的ip地址为所述第二租户的ip地址,所述icmp报文的目的mac地址为本地网关的mac地址;

    在所述icmp报文进入所述报文转发流表中的用于表征报文转发路径分发的子流表时,确定针对所述icmp报文的转发路径,由所述用于表征报文转发路径分发的子流表跳转至用于表征三层路由转发的子流表;

    根据所述用于表征三层路由转发的子流表确定针对所述icmp报文的三层转发路径,对所述icmp报文进行三层转发处理,将所述icmp报文的源mac地址修改为网关的mac地址,获得处理后的icmp报文;

    由所述报文转发流表跳转至所述出口控制流表,若所述处理后的icmp报文在所述出口控制流表中所匹配的表项未设置出规则,则由所述出口控制流表跳转至所述出口流表,将所述出口流表作为所述目标子流表;

    从所述出口流表所包括的多个表项中查找与所述处理后的icmp报文匹配的目标表项,按照所述目标表项对应的路由端口,将所述处理后的icmp报文从所述路由端口转发出去。

    5.如权利要求1所述的方法,其特征在于,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:

    若由所述入口流表跳转至所述入口控制流表中的用于表征安全组入规则的子流表或跳转至所述出口控制流表中的用于表征安全组出规则的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为禁止访问时,则丢弃所述待转发报文。

    6.如权利要求1所述的方法,其特征在于,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:

    若由所述入口流表跳转至所述入口控制流表中的用于表征入方向服务质量的子流表或跳转至所述出口控制流表中用于表征出方向服务质量的子流表,从对应子流表表项中查找与所述待转发报文的预设地址匹配的目标表项,在所述目标表项对应的转发动作为限速时,若所述待转发报文的接收速率大于限速速率,则丢弃所述待转发报文。

    7.如权利要求1所述的方法,其特征在于,所述按照所述目标表项对应的转发动作对所述待转发报文进行处理,包括:

    若跳转至所述入口控制流表中的用于表征入方向报文统计的子流表或跳转至所述入口控制流表中的用于表征出方向报文统计的子流表,从所述子流表表项中查找与所述待转发报文匹配的目标表项,在所述目标表项对应的转发动作为报文统计时,则对所述待转发报文进行统计。

    8.一种基于openflow的报文转发设备,其特征在于,包括:

    接收单元,用于接收待转发报文;

    处理单元,用于按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对所述待转发报文进行处理,所述多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,每个子流表包括多个表项,其中,所述入口控制流表和/或所述出口控制流表中每个子流表包括用于表征对报文进行控制的多个表项,所述报文转发流表中每个子流表包括用于表征对报文进行路径转发的多个表项;

    若跳转至所述多级流表中每一级流表的目标子流表,则从所述目标子流表所包括的多个表项中查找与所述待转发报文匹配的目标表项,按照所述目标表项对应的转发动作对所述待转发报文进行处理。

    9.如权利要求8所述的转发设备,其特征在于,若所述待转发报文为第一租户向第二租户发送地址解析协议arp请求的arp报文,所述处理单元用于:

    将所述arp报文与所述入口流表中的表项进行匹配并处理,确定出所述第一租户的第一网络标识符并存储;

    跳转至所述入口控制流表,若所述arp报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中用于表征报文应答的子流表,构造arp应答报文;

    跳转至所述出口控制流表,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,且所述arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表;

    从所述出口流表所包括的多个表项中查找与所述arp应答报文匹配的目标表项,按照所述目标表项对应的报文入端口,将所述arp应答报文从所述报文入端口转发出去。

    10.如权利要求9所述的转发设备,其特征在于,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符相同,所述处理单元用于:

    若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;

    根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征二层桥转发的子流表;

    根据所述用于表征二层桥转发的子流表确定针对所述arp应答报文的二层转发路径,对所述arp应答报文进行二层广播处理,获得处理后的arp应答报文,以及所述处理后的arp应答报文的出隧道口;

    跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述出隧道口转发出去。

    11.如权利要求9所述的转发设备,其特征在于,若所述第一租户的所述第一网络标识符与所述第二租户的第二网络标识符不相同,所述处理单元用于:

    若所述arp应答报文在所述入口控制流表中所匹配的表项无对应转发动作,则跳转至所述报文转发流表中的用于表征报文转发路径分发的子流表;

    根据所述子流表确定针对所述arp应答报文的转发路径,跳转至用于表征三层路由转发的子流表;

    根据所述用于表征三层路由转发的子流表确定针对所述arp应答报文的三层转发路径,对所述arp应答报文进行三层转发处理,获得处理后的arp应答报文,以及处理后的arp应答报文的路由端口;

    跳转至所述出口控制流表,若所述处理后的arp应答报文在所述出口控制流表中所匹配的表项无对应转发动作,则跳转至所述出口流表,将所述处理后的arp应答报文从所述路由端口转发出去。

    12.如权利要求8所述的转发设备,其特征在于,所述入口控制流表包括用于表征安全组入规则的子流表、用于表征入方向服务质量的子流表和用于表征入方向报文统计的子流表中的至少一个子流表。

    13.如权利要求8所述的转发设备,其特征在于,所述出口控制流表包括用于表征安全组出规则的子流表、用于表征出方向服务质量的子流表和用于表征出方向报文统计的子流表中的至少一个子流表。

    14.如权利要求8所述的转发设备,其特征在于,所述报文转发流表包括用于表征报文转发路径分发的子流表、用于表征报文应答的子流表、用于表征二层桥转发的子流表和用于表征三层路由转发的子流表。

    技术总结
    本发明实施例提供了一种基于Openflow的报文转发方法及设备,方法包括:接收待转发报文;按照预先确定的依次串行设置的多级流表的先后次序依次跳转至每一级流表,对待转发报文进行处理,多级流表至少包括按顺序设置的入口流表、入口控制流表、报文转发流表、出口控制流表和出口流表在内的五级流表,入口控制流表和/或出口控制流表中每个子流表包括按照预设控制动作对报文进行控制的多个表项,报文转发流表中每个子流表包括按照预设转发路径对报文进行路径转发的多个表项;若跳转至多级流表的先后次序跳至目标子流表,从目标子流表所包括的多个表项中查找与待转发报文匹配的目标表项,按照目标表项对应的转发动作对待转发报文进行处理。

    技术研发人员:郭风光
    受保护的技术使用者:锐捷网络股份有限公司
    技术研发日:2020.11.09
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8362.html

    最新回复(0)