信息处理方法及电子设备与流程

文档序号:11234550阅读:238来源:国知局
本发明涉及网络
技术领域
:,尤其涉及一种信息处理方法及电子设备。
背景技术
::流交换机(openvswitch,ovs)是支持开放流(openflow)协议的交换机。如图1所示,流交换机在进行数据流传输时,先进行协议解析、流规则查找,执行动作三大步。所述协议解析包括:协议解析包括提取报文中的匹配字段值;所述流规则查找包括:将解析得到的匹配字段值,与流表中的流规则进行匹配,得到相应流规则内容的动作;所述执行动作包括:根据流规则查找的结果,执行相应的动作。这里的动作包括:转发、修改数据中的部分内容,或丢弃对应的报文。但是流交换机的使用过程中,发现依然有用户抱怨数据转发等速率慢的问题。技术实现要素:有鉴于此,本发明实施例期望提供的信息处理方法及电子设备,以至少部分解决上述问题。为达到上述目的,本发明的技术方案是这样实现的:本发明实施例第一方面提供一种信息处理方法,其特征在于,包括:获取流表的深度,其中,所述流表中包括用于控制报文转发、丢弃和/或报文修改的流规则;基于所述流表的深度获得lmax;对待处理报文进行到lmax层的协议解析,获得第一匹配字段;将所述第一匹配字段与所述流表中所述流规则的第二匹配字段进行匹配。基于上述方案,所述获取流表的深度,包括:读取所述流表中各所述流规则的解析深度字段,获取各所述流规则的深度;所述基于所述流表的深度获得lmax,,包括:根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度。基于上述方案,所述根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度,包括:统计所述流表中各所述深度对应的流规则数目;根据所述流规则数目,确定所述最深解析深度。基于上述方案,所述方法还包括:当更新所述流表中的所述流规则时,对应更新各所述深度对应的所述流规则数目;根据更新后的所述流规则数目,更新所述最深解析深度。基于上述方案,所述根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度,包括:读取所述流表中各深度的标识位;其中,所述标识位用于指示对应的深度是否需要进行协议解析;根据所述标识位,确定所述最深解析深度。基于上述方案,所述方法还包括:当更新所述流表中的所述流规则时,更新所述标识位;根据更新后的所述标识位,更新所述lmax。本发明实施例第二方面提供一种电子设备,包括:获取单元,用于获取流表的深度,其中,所述流表中包括用于控制报文转发、丢弃和/或报文修改的流规则;获得单元,用于基于所述流表的深度获得lmax;解析单元,用于对待处理报文进行到lmax层的协议解析,获得第一匹配字段;匹配单元,用于将所述第一匹配字段与所述流表中所述流规则的第二匹配字段进行匹配。基于上述方案,所述获取单元,具体用于读取所述流表中各所述流规则的解析深度字段,获取各所述流规则的深度;所述获得单元,具体用于根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度。基于上述方案,所述获得单元,具体用于统计所述流表中各所述深度对应的所述流规则数目,并根据所述流规则数目,确定所述最深解析深度。基于上述方案,所述电子设备还包括:第一更新单元,用于当更新所述流表的所述流规则时,对应更新各所述深度对应的流规则数目,并根据更新后的所述流规则数目,更新所述最深解析深度。基于上述方案,所述获得单元,具体用于读取所述流表中各深度的标识位;其中,所述标识位用于指示对应的深度是否需要进行协议解析;根据所述标识位,确定所述最深解析深度。基于上述方案,所述电子设备还包括:第二更新单元,用于当更新所述流表中的所述流规则时,更新所述标识位,并根据更新后的所述标识位,更新所述lmax。本发明实施例提供的信息处理方法及电子设备,在应用流表中的流规则之前会根据流表的深度,确定出流表的最深解析深度lmax;然后在对待处理报文进行处理时,进行lmax层的协议解析,得到需要与流表中流规则匹配的第一匹配字段。这样的话,对于那些深度小于所有流规则最深解析深度的流表而言,一方面减少了转发节点中不表要的解析操作,提前了报文被转发的时间,故提升了报文的转发、丢弃和/或内容修改的效率。另一方面,因为减少了不必要的解析操作,减少了不必要解析操作对转发节点的处理资源的占用,故转发节点有更多的资源来进行报文中待解析字段的提取和/或解析,提升了转发节点自身的解析和/或转发等处理效率,故在此提升了转发节点对报文的转发、丢弃和/或内容修改等处理效率。附图说明图1为本发明实施例提供的第一种信息处理方法的流程示意图;图2为本发明实施例提供的第二种信息处理方法的流程示意图;图3为本发明实施例提供的第三种信息处理方法的流程示意图;图4为本发明实施例提供的一种电子设备的结构示意图;图5为本发明实施例提供的一种基于ovs流表各深度解析得到的匹配字段示意图。具体实施方式以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。如图1所示,本实施例提供一种信息处理方法,步骤s110:获取流表的深度,其中,所述流表中包括用于控制报文转发、丢弃和/或报文修改的流规则;步骤s120:基于所述流表的深度获得最深解析深度lmax;步骤s130:对待处理报文进行到lmax层的协议解析,获得第一匹配字段;步骤s140:将所述第一匹配字段与所述流表中所述流规则的第二匹配字段进行匹配。本实施例所述的信息处理方法可应用于各种转发节点中,例如,交换机或路由器等等。本实施例中所述流表为用于进行数据流的转发、重新封装和/或丢弃的数据表。该流表可为各种类型的流表,具体可为ovs流表。在该流表中设置有一条或多条流规则,每一个所述流规则可包括一个或多个匹配字段。在本实施例中所述流表中的匹配字段可称之为第二匹配字段。这些第二匹配字段可用于与对报文进行解析获得字段进行匹配。这些匹配字段包括但是不限于链路层的以太网报头关键(key)值,虚拟局域网(vlan)报头的key值,网络层网络协议(ip)报头key值、传输层的传输控制协议(tcp)/ip报头key值,以及一些设备相关的如入端口,出端口等key值。第一匹配字段的获得首先需要从报文中提取对应的待解析字段,然后基于网络协议或通信协议进行一次或多次解析得到与流规则中的第二匹配字段进行匹配的第一匹配。通常所述流表的深度可大致等于从报文中提取的待解析的字段的解析层数或次数。在本实施例中对所述待处理报文的处理操作包括:提取报文中的待解析字段,通过协议解析得到所述待匹配的第一匹配字段,将所述第一匹配字段与流表中的流规则的第二匹配字段进行匹配,根据匹配的结果丢弃生命周期到期的报文或不必要再次转发的报文,或,确定出报文的转发端口,将对应的报文通过对应的转发端口丢到网络中进行后续传输,或,修改所述报文中的部分内容,例如,对所述报文进行重新封装,或报文的报头进行解封装之后,再进行转发等处理。在本实施例中获取流表的深度,当一个所述流表包括多个流规则时,则可能提取到每一个流规则的深度。步骤s120中根据提取到的各个深度,得到最深解析深度lmax。。这里的最深解析深度为一个流表中所有流规则中最深解析深度。在步骤s130中在对从报文中提取的待解析字段进行解析时,就会lmax。层的协议解析,不会如现有技术一样,不管当前流表的最深解析深度是多少,都会固定进行到所有流表的最深解析深度层次解析,从而减少了不必要的解析层次或次数,减少了因不必要解析导致的匹配的延迟和流表最终处理的延迟。例如,假设所有流表的最大解析层数为m,而当前转发节点运行的流表的最深解析深度为m,m小于m,且m和m为自然数。在一般情况下,所述转发节点都会度报文中提取的待解析字段进行m层协议解析,完成m层协议解析之后在于流表中的第二匹配字段进行匹配,而若采用本实施例中所述信息处理方法,则仅会对待解析字段进行前m层协议解析,就停止后续的m-m层解析的。故本实施例提供的信息处理方法,通过最深解析深度的获取,仅第报文中的待解析字段进行lmax层解析,一方面减少不必要的解析操作,另一方面减少了因不表要的解析操作导致匹配操作的延迟,从而导致后续的报文转发、重新封装和/或内容改写的延迟,从而解决了现有技术中转发速率慢的问题。且进一步地,由于转发节点节省了进行不必要解析的处理资源,从而以后更多的处理资源进行其他报文的解析,这样也会使得转发节点提早进行报文转发的处理,从这一层次来说也提升了基于流表对报文的处理。在一些实施例中,所述步骤s110可包括:读取所述流表中各所述流规则的解析深度字段,获取各所述流规则的深度;所述步骤s120可包括:根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度。在本实施例中转发节点会依次读取流表中各个流规则的解析深度字段,该解析深度字段记录对应流规则所需的协议解析层次,即所述流规则的深度。故在本实施例中的步骤s110中通过读取解析深度字段可以获得每一个流规则的深度,故在步骤s120中通过深度的比较或排序,简便的确定出所述最深解析深度,从而得到所述lmax。在本实施例中所述转发节点等电子设备可以将所述lmax写入到预设位置,以后只要是基于该流表进行解析,则会读取该lmax,并仅对报文进行lmax层协议解析,以避免不必要的解析。可选地,所述步骤s120可为如图2所示的步骤s121,所述步骤s121可包括:统计所述流表中各所述深度对应的流规则数目,并根据所述流规则数目,确定所述最深解析深度。通常一张流表可包括多条流规则,不同的流规则的解析深度不同。在本实施例中在进行最深解析深度的获取时,统计每个解析深度对应的流规则数目。若有一个度对应的流规则数目为零,则该解析深度是不必要的。通常情况下,深度越深,则对应的流规则数目越少。在本实施例中通过对各深度的流规则数目的统计,确定出所述最深解析深度。例如,在一些实施例中所有流表的深度包括:1、2、3及4,则利用本实施例中所述方法,则会分别统计目标流表中深度为1的流规则数目,深度为2的流规则数目、深度为3的流规则数据和深度为4的流规则数目。若当前深度为3和4对应的流规则数据均为0,而深度为1和2对应的流规则数目不为0,由于深度2的深度大于深度1的深度,则可以确定出当前目标流表的最深解析深度为2。若后续进行待处理报文进行解析,则仅需进行2层协议解析,不用在继续进行第3层和第4层的协议解析,可以减少处理节点对第3和4层不必要的协议解析。本实施例提供了一种不同直接比较各个流规则的深度获取最深解析深度的方法,具有实现更加简便的特点。在一些实施例中,如图2所示,所述方法还包括:步骤s151:当更新所述流表中的所述流规则时,对应更新各所述深度对应的所述流规则数目;步骤s161:根据更新后的所述流规则数目,更新所述最深解析深度。流表的内容根据控制器(例如,软件定义文网络(softwaredefinednetwork,sdn)控制器)的新的流规则的下发或流规则删除和更新指示的下发,需要对应的更新流表中的流规则,若流表中的流规则更新了,则流表中一个深度对应的流规则数目会发生变化。在本实施例中所述流表中的流规则的更新可博阿凯:删除所述流表中的一条或多条旧的流规则,新增加了一条或多条新的流规则的至少一项。在本实施例中若流表中的流规则更新了,则对应的更新各深度对应的流规则数目,并根据更新后的各深度对应的流规则数目,重新确定所述最深解析深度。显然,采用对各深度的流规则数目的统计方法,有新修改流规则加入流表或旧流规则从流表中删除时,就需要根据被修改的流规则的深度进行流规则数目的修改即可,不用额外的将新修改的流规则的深度与各个流规则的深度进行比较,显然简化了最深解析深度的获取。例如,目标流表中的流规则a的部分字段通过局部修改,被修改成了流规则b,此时,相当于流表中的旧的流规则a被删除了,引入了新的流规则b,则在本实施例中首先会根据流规则a的深度,对流规则a的深度对应的流规则数据执行减1操作即可,再根据流规则b的深度,对流规则b深度对应的流规则数目执行加1操作即可。若目标流表中仅新增了一条流规则c,则直接根据流规则c的深度,增加流规则c对应的深度的流规则数目执行加1操作即可,若删除了一条流规则d,则直接对流规则d对应的深度的流规则数目执行减1操作即可。在上述实施例中提供了一种通过对各深度对应的流规则数目的统计,确定最深解析深度,所述步骤s120具体为图3为所示的步骤s122:读取所述流表中各深度的标识位,并根据所述标识位,确定所述最深解析深度;其中,所述标识位用于指示对应的深度是否需要进行协议解析。流表中设置有各深度的标识位,该标识位的取值至少包括两种,即所述标识位至少为1个比特。例如,当所述标识位为第一取值时,则该深度有对应的流规则或第二匹配字段,若所述标识位为第二取值时,则该深度没有对应的流规则且第二匹配字段。这里的第一取值和第二取值不同。故在本实施例中通过标识位的维护,同样方便所述lmax的确定。在本实施例中所述方法还包括:确定所述标识位的取值。所述确定所述标识位的取值可包括:遍历所述流表中流规则的深度,当每一个所述深度至少减少到一条对应的流规则是,则停止所述流规则的遍历。这样的话,可以不同通过遍历每一条流规则,也可以简便的得到所述标识位及后续的lmax。本实施例中提供基于标识位更新流表的最深解析度的可选方式,如图3所示,所述方法还包括:步骤s152:当更新所述流表中的所述流规则时,更新所述标识位;步骤s162:根据更新后的所述标识位,更新所述lmax。在本实施例中由于标识位仅是指示对应的深度是否有对应的流规则,故在本实施例中若流表中的流规则更新时,则需要对应的更新流标识。例如,当所述流表中新加入一条流规则时,则使该新加入的流规则的深度的标志位为所述第一取值;当所述流表新删除一条流规则时,则需要查看流表中是否还有其他流规则与该条删除的流规则的深度一致,若有则保持删除的所述流规则对应的深度的标识位为所述第一取值,否则使删除的流规则的深度对应的标识位为所述第二取值。在本实施例中若所述流表中的流规则更新了,则会对应的更新所述标识位,方便步骤s120中简便的确定所述lmax。如图4所示,本实施例提供一种电子设备,包括:获取单元110,用于获取流表的深度,其中,所述流表中包括用于控制报文转发、丢弃和/或报文修改的流规则;获得单元120,用于基于所述流表的深度获得最深解析深度lmax;解析单元130,用于对待处理报文进行到lmax层的协议解析,获得第一匹配字段;匹配单元140,用于将所述第一匹配字段与所述流表中所述流规则的第二匹配字段进行匹配。本实施例提供一种电子设备,该电子设备可为各种报文处理节点,例如,报文中转节点,所述报文中转节点可包括交换机或路由器,例如,流交换机。所述获取单元110、获得单元120、解析单元130及匹配单元140可包括处理处理器或处理器电路。所述处理器可包括中央处理器(cpu)、微处理器(mcu)、应用处理器(ap)或可编程阵列(plc)等。所述处理电路可包括:专用集成电路。例如,所有流表的最深解析深度为4,若流表a的所述最深解析深度为3,则流表a的所述lmax。为3,则在所述解析单元130,用于基于流表a进行报文解析时,仅进行3层协议解析,而不是4层协议解析,相对于现有技术基于所述流表进行报文解析时,都进行4层协议解析,故至少减少了一层协议解析的操作。总之,本实施例提供的电子设备会先获取流表的深度,进而获得流表内各条流规则的最深解析深度,这样后续在进行报文解析时,仅解析到确定的所述流表的最深解析度即可,不用进行更深层次的解析,从而减少不必要的解析操作。可选地,所述获取单元110,具体用于读取所述流表中各所述流规则的解析深度字段,获取各所述流规则的深度;所述获得单元120,具体用于根据所述各所述流表的深度,获得所述流表中流规则所要求的最深解析深度。在本实施例中所述获取单元110,可通过读取流表中各流规则的解析深度字段,获得各条流规则的深度。所述获得单元120,则通过各条流规则的深度比较或排序等方式,可以获得该流表中各条流规则对应的最深解析深度。在另一些实施例中,所述获得单元120,具体用于统计所述流表中各所述深度对应的流规则数目;根据所述流规则数目,确定所述最深解析深度。在本实施例中通过统计各所述深度对应的流规则数目,若有些深度的流规则数目为0,则对应的深度可能是不需要解析到的层次,故在本实施例中通过各深度对应的流规则数目的统计,也可以简便的出最深解析深度。在一些实施例中,所述电子设备还包括:第一更新单元,用于当修改所述流表的流规则时,对应更新所述各深度对应的流规则数目,并根据更新后的所述流规则数目,更新所述最深解析深度。所述第一更新单元,可对应于处理器或处理电路,可以用于电子设备修改流表中的流规则的时候,通过根据修改的后流规则的深度更新各深度的流规则的数据,并同步更新所述最深解析深度。在一些实施例中,所述获得单元120,具体用于读取所述流表中各深度的标识位;其中,所述标识位用于指示对应的深度是否需要进行协议解析;根据所述标识位,确定所述最深解析深度。在本实施例中所述获得单元120,通过读取流表中各深度标识位,确定出所述最深解析深度。在流表除了流规则以外,还会有所述标识位,所述标识位可用于基于流表中的流规则进行报文解析时,是否需要解析到对应层。故在本实施例中还可以根据所述标识位,确定出所述最深解析深度。。在一些实施例中,所述电子设备还包括:第二更新单元,用于当更新所述流表中的所述流规则时,更新所述标识位,并根据更新后的所述标识位,更新所述lmax。这里的第二更新单元同样可对应于处理器或处理电路,该处理器或处理电路可用于进行所述标识位的更新及该流表的最深解析深度的更新,具有结构简单及实现简便的特点。以下结合上述任意实施例提供几个具体示例:示例一:图5所示为ovs流表的各深度的协议解析得到的至少部分匹配字段。在基于ovs流表中的流规则进行报文解析时,是依次从l1、l2、l3向l4层进行的,其中,l1对应的深度为1。l2对应的深度为2,l3对应的深度为3,l4对应的深度为4。在图5中l1解析得到的匹配字段包括:隧道信息、套接字缓存优先权、套接字标记、ovs入端口。l2层解析得到匹配字段包括:数据链路地址、数据链路目地址、虚拟局域网标识及数据链路类型。l3层的协议包括ipv4或ipv6协议,或则地址解析(arp)/反向地址转换(rarp)协议。针对不同的协议,所述l3的解析得到的匹配字段不同。针对ipv4或ipv6协议对应的l3层,可包括:源网络地址或源ipv6地址、目的网络层地址、网络层协议、网络层服务类型标记及网络层生存时间。针对arp/rarp协议对应l3层,可包括:地址解析协议目标协议地址或者地址解析协议发送方协议地址;以及,目标硬件地址,或者,发送方硬件地址。l4层的解析协议可分为了两类,第一类:tcp、用户数据报协议(udp)、tcp拥塞控制(sctp)协议;第二类:网络控制报文(icmp)及互联网控制信息协议版本六(icmpv6)协议。针对tcp/udp/sctp,l4层解析得到的匹配字段可包括:源端口、目的端口、tcp标识、tcp/udp/sctp协议。针对icmp/icmpv6,l4层解析得到的匹配字段可包括:icmp类型、icmp码、邻居发现发送方链路层地址及邻居发现目标链路层地址。ovs在对报文做解析时,是按照l1-l4的顺序进行的。1、本方案在ovs的每张流表内加入流表深度表,包括以下值:各层流规则的数目,以及一个流表的最深解析深度(flow-depth)的变量,来记录当前当流表的最深解析深度。当流表为空时,各个值的数目如下:l1l2l3l4flow-depth0000null例如当加入一条流表规则如下时:table=0,in_port=8actions=output:1;上述流规则中“table”表示流表,所述“in_port”表示入端口;所述actions表示操作。该流表规则中用到的匹配域只有in_port,因此,l1层流表规则的数目加1,记录当前流表的最深流表维度flow-depth为l1。l1l2l3l4flow-depth1000l12、当流表中增加、删除或更改一条流表规则时,更新流表深度表中的数目。加入下条流表规则:table=0,in_port=3,dl_type=0x0800,nw_dst=10.0.0.0/24,action=drop流表深度表各值更新如下:3、ovs在对收到的报文进行解析时,根据流表的深度表中的flow-depth判断当前解析报文的最深解析深度,对高于flow-depth的报文协议栈不进行解析。例如当前流表深度为l3,因此当解析完l3报头的相关信息后,停止解析,当前获取的信息已足够进行流表查找。本示例提中提供的携带有流表深度表的流表,可应用于openstack云环境中,计算节点上的ovs流表的flow-depth均为l2,控制节点上流表的flow-depth一般为l2,最深为l3。假设协议解析和流表查询各占一半的数据流处理时间,应用本方案后,openstack环境中,计算节点可以节省25%的时间,处理速度提高了33%,控制节点上节省了12.5%到25%的时间,处理速度提高了14.3%到33%。在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1