发明内容
本发明实施例提供一种报文处理的方法及转发设备,能够实现解析和处理包含新的协议的报文。
第一方面,提供了一种报文处理的方法,包括:根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;执行所述与所述第i层协议头中的第一字段对应的指令,其中,所述执行所述与所述第i层协议头中的第一字段对应的指令,包括:将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
结合第一方面,在第一种可能的实现方式中,还包括:根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;根据第一偏移和第一长度,对所述报文进行处理。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据第一协议ID将报文处理窗口的起始位置移动到第一位置,包括:利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
结合第一方面,在第三种可能的实现方式中,还包括:以第一协议ID为索引查找所述协议位置表,确定第一位置;根据第一偏移和第一长度,对所述报文进行处理。
结合上述第一方面的任一种可能的实现方式,在第四种可能的实现方式中,在所述根据第一偏移和第一长度,对所述报文进行处理之前,还包括:根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
结合第一方面或者上述任一种可能的实现方式,在第五种可能的实现方式中,还包括:接收所述报文,所述报文包括所述连续的N层协议头。
结合第一方面或者上述任一种可能的实现方式,在第六种可能的实现方式中,所述与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
第二方面,提供了一种转发设备,包括:第一确定单元,用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令;执行单元,用于执行所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令,其中,所述执行单元,具体用于:将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
结合第二方面,在第一种可能的实现方式中,所述转发设备还包括:偏移单元,用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置;处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述偏移单元,具体用于:利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
结合第二方面,在第三种可能的实现方式中,所述转发设备还包括:第二确定单元,用于以第一协议ID为索引查找所述协议位置表,确定第一位置;所述处理单元,用于根据第一偏移和第一长度,对所述报文进行处理。
结合第二方面的任一种可能的实现方式,在第四种可能的实现方式中,所述转发设备还包括第三确定单元,用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
结合第二方面或者上述的任一种可能的实现方式,在第五种可能的实现方式中,所述转发设备还包括接收单元,用于接收所述报文,所述报文包括所述连续的N层协议头。
结合第二方面或者上述的任一种可能的实现方式,在第六种可能的实现方式中,所述第一确定单元确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明一个实施例的报文处理的方法的流程图。图1所示的方法的执行主体可以是网络装置。具体地,执行主体可以是网络装置中的网络处理器(Network Processer,NP),或者也可以是NP中的查找引擎。例如,该网络设备可以是路由器、网络交换机、防火墙、负载均衡器或者数据中心。其中,网络交换机可以是OpenFlow交换机。图1所示的方法包括:
101,根据报文中连续的N层协议头中的第i层协议头,查找与第i层协议头对应的流表,确定与该第i层协议头中的第一字段对应的指令。
102,执行与该第i层协议头中的第一字段对应的指令。其中,执行与该第i层协议头中的第一字段对应的指令包括:将N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的第一表项,第一表项的索引信息为第i+1层协议头的协议ID。N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该协议位置表能够用于将报文处理窗口的起始位置移动至指定的位置,以对报文进行处理。
可选地,作为一个实施例,在101之前,该执行主体可接收报文,该报文包括连续的N层协议头。
具体地,该执行主体可通过入端口接收该报文。
本发明实施例中,执行主体在接收到报文之后,需逐层解析报文中连续的N层协议头。针对N层协议头中的每一层协议头,执行101和102的过程。其中,与所述第i层协议头中的第一字段对应的指令中包含第i层协议头的长度,进而102中N层协议头中的第i+1层协议头在所述报文中的起始位置为第i层协议头的长度与第i层协议头在所述报文中的起始位置的和。
应注意,如果需要的话,与第i层协议头中的第一字段对应的指令中也可以包含其他的指令,可用于对报文进行其他的处理。本发明对此不作限定。
可选地,作为一个实施例,在101中,可将第i层协议头中的协议类型字段作为第一字段,查找与第i层协议头对应的流表,确定与该第i层协议头中的该第一字段对应的指令。可以理解为,是以第一字段作为查找关键字查找与第i层协议头对应的流表,与该第i层协议头中的该第一字段对应的指令是指与查找关键字所匹配的指令。
应注意,本发明实施例中,协议ID是由控制器动态分配的。并且控制器为不同的协议头分配不同的协议ID,一个协议头具有分配好的唯一的协议ID。
本发明实施例中,与第i层协议头对应的流表可以是由控制器下发的。并且与第i层协议头对应的流表是可配置的。当增加新的协议时,控制器为新的协议分配一个新的协议ID,并同时对相应的流表进行配置。例如,当包含N层协议头的报文增加第N+1层协议头时,控制器需在与第N层协议头对应的流表中,增加包含第N+1层协议头的协议ID的表项。
应注意,本发明实施例中,第i层协议头在所述报文中的起始位置可以是保存在寄存器中的,或者也可以是在中间变量metadata中的,或者也可以是当前报文处理窗口的起始位置。
例如,假设执行主体接收到的第一报文包括3层协议头,即N=3,如图2所示。第一报文包括第1层协议头、第2层协议头、第3层协议头和Payload。
具体地,执行主体解析第1层协议头:
执行主体在收到第一报文后,确定默认标识为0,与该默认标识0所对应的是第一流表。并且该第一流表是与该报文的第1层协议头所对应的。进一步根据第一流表的描述信息确定第二偏移(offset)和第二长度(length)。其中,第二偏移和第二长度所确定的字段为第1层协议头中的第一字段(如图2所示)。例如,该第1层协议头中的第一字段可以是第1层协议头中的协议类型字段。
随后,可以将该第1层协议头中的第一字段作为第一查找关键字(search key),再根据该第一查找关键字,查找与该第1层协议头对应的流表,从而可确定与该第一查找关键字匹配的第一指令,也就是说第一指令为在第一流表中与第1层协议头中的第一字段对应的指令。
在102中,执行该第一指令。
其中,执行该第一指令包括:将第2层协议头在所述第一报文中的起始位置写入协议位置表的第一表项。其中,该第一表项的索引信息为该第2层协议头的协议ID。
其中,该第一指令中可包含第1层协议头的长度。由于在解析第1层协议头时,报文处理窗口的起始位置在该第1层协议头的首位置(如图2所示),即该第1层协议头在该第一报文中的起始位置为0。那么,第2层协议头在所述第一报文中的起始位置为该第1层协议头的长度。
例如,该第一指令可以包括:
可以理解该第一指令的含义为:第2层协议头的协议ID为1,第1层协议头的长度为14。Write指令用于将第2层协议头在第一报文中的起始位置(Position)写入协议位置表。并且协议ID(Protocol ID)为协议位置表的索引。
同时,第一指令中还可以包括Goto-Table指令,并且该第一指令中的Goto-Table指令的立即数可以是第二流表的标识。这样可便于该执行主体解析第2层协议头。
执行主体解析第2层协议头:
执行主体根据第一指令确定第二流表的标识。例如可以是根据第一流表中的Goto-Table指令确定第二流表的标识。该第二流表是与第2层协议头所对应的流表。进一步地,可根据该第二流表的描述信息确定第三偏移和第三长度。其中,第三偏移和第三长度所确定的字段为第2层协议头中的第一字段。例如,该第2层协议头中的第一字段可以是第2层协议头中的协议类型字段。
随后,可以将该第2层协议头中的第一字段作为第二查找关键字,再根据该第二查找关键字,查找与该第2层协议头对应的流表,从而可确定与该第二查找关键字匹配的第二指令,也就是说第二指令为在第二流表中与第2层协议头中的第一字段对应的指令。
在102中,执行该第二指令。
其中,执行该第二指令包括:将第3层协议头在所述第一报文中的起始位置写入协议位置表的第二表项。其中,该第二表项的索引信息为该第3层协议头的协议ID。
其中,该第二指令中可包含第2层协议头的长度。由于在解析第2层协议头时,报文处理窗口的起始位置在该第2层协议头的首位置,即该第2层协议头在该第一报文中的起始位置为14。那么,第3层协议头在所述第一报文中的起始位置为该第2层协议头的长度与第2层协议头在该第一报文中的起始位置的和。
例如,该第二指令可以包括:
可以理解该第二指令的含义为:第3层协议头的协议ID为2,第2层协议头的长度为4。Write指令用于将第3层协议头在第一报文中的起始位置(Position)写入协议位置表。并且协议ID(Protocol ID)为协议位置表的索引。
同时,第二指令中还可以包括Goto-Table指令,并且该第二指令中的Goto-Table指令的立即数可以是第三流表的标识。这样可便于该执行主体解析第3层协议头。
执行主体解析第3层协议头:
执行主体根据第二指令确定第三流表的标识。例如可以是根据第二流表中的Goto-Table指令确定第三流表的标识。该第三流表是与第3层协议头所对应的流表。进一步地,可根据该第三流表的描述信息确定第四偏移和第四长度。其中,第四偏移和第四长度所确定的字段为第3层协议头中的第二字段。
随后,可以将该第3层协议头中的第二字段作为第三查找关键字,再根据该第三查找关键字,查找第三流表,确定与该第三查找关键字匹配的第三指令。并执行该第三指令。这样便可对该第3层协议头进行编辑或其他处理。本发明实施例对第三指令不作限定。例如,可以是查找、引用、编辑、删除等动作中的一个或多个。
具体地,针对该第一报文,所生成的协议位置表可如表1所示。
表1
Protocol ID=1,Position=14 |
Protocol ID=2,Position=18 |
这样,执行主体在逐层解析N层协议头的每一层协议头的过程中,可生成协议位置表,用于记录N层协议头的每一层协议头在报文中的起始位置。
而且,具有不同协议头的报文可能包括不同层数的协议头,或者可能包括的协议头的长度不同,那么具有不同协议头的报文所生成的协议位置表也不同。
进一步地,在102之后,执行主体可利用协议位置表,在对报文进行的转发处理流程中,能够在任何时候对报文的任何协议头位置进行处理。例如,可在对内层协议头的处理过程时,再回头对外层的协议头进行处理。
具体地,可以根据第一协议ID将报文处理窗口的起始位置移动到第一位置,该第一位置为第一协议ID对应的协议头在所述报文中的起始位置。进一步地,可根据第一偏移和第一长度,对所述报文进行处理。
例如,可首先通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到与第一协议ID所对应的协议头的首位置。其中Set PacketOffset指令中的Protocol ID即为第一协议ID。进一步,对所述报文进行处理,可理解为对报文中的第二字段进行处理。并且该第二字段的起始位置是根据第一偏移所确定的,该第二字段的长度为第一长度。
也就是说,可以根据第一协议ID,通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到特定位置,再根据第一偏移和第一长度对报文进行处理。
或者,具体地,可以以第一协议ID为索引查找协议位置表,确定第一位置。该第一位置为第一协议ID对应的协议头在所述报文中的起始位置。进一步根据第一偏移和第一长度,对所述报文进行处理。
例如,可对第一协议ID所对应的协议头中的第二字段进行处理。具体地,该第二字段的起始位置是根据第一位置和第一偏移所确定的,该第二字段的长度为第一长度。
也就是说,可以根据第一协议ID、第一偏移和第一长度,结合协议位置表,对报文进行处理。
或者,具体地,可以根据第一协议ID将报文处理窗口的起始位置移动到第一位置。再根据第一协议ID和第一域(field)的ID,查找协议域描述表,确定第一偏移和第一长度。进一步地,可根据第一偏移和第一长度,对所述报文进行处理。
应注意,协议域描述表可以是由控制器分配协议ID之后再生成的,协议域描述表中包括偏移和长度,并且是由协议ID和域的ID作为索引的。
也就是说,可以根据第一协议ID,通过Set Packet Offset(Protocol ID)指令将报文处理窗口的起始位置移动到特定位置。再根据查找协议域描述表所确定的第一偏移和第一长度对报文进行处理。
或者,具体地,可以以第一协议ID为索引查找协议位置表,确定第一位置。再根据第一协议ID和第一域的ID,查找协议域描述表,确定第一偏移和第一长度。进一步根据第一偏移和第一长度,对所述报文进行处理。
也就是说,可以根据第一协议ID和第一域的ID,结合协议位置表和协议域描述表对报文进行处理。
应注意,本发明实施例中,同一个协议头中可包含多个域,且同一个协议头中的多个域的ID是互不相同的。不同的协议头中的域的ID可以是相同的,也可以是不同的。
具体地,第一协议ID和第一域的ID可以是两个独立的ID。或者,第一协议ID和第一域的ID也可以是一个协议域ID的两部分。也就是说,一个协议域ID可以以其中的某几位表示第一协议ID,以除去第一协议ID之外的剩余位表示第一域的ID。
可选地,当报文中的N个协议头中所包含的所有的域的ID均不相同时,第一偏移和第一长度可以是只根据第一域的ID查找协议域描述表来确定的。
这样,本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
图3是本发明一个实施例的转发设备的框图。图3所示的转发设备300包括第一确定单元301和执行单元302。
第一确定单元301用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令。执行单元302用于执行第一确定单元301确定的与所述第i层协议头中的第一字段对应的指令。其中执行单元302具体用于将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
可选地,作为一个实施例,图3中的转发设备300还可包括偏移单元303和处理单元304。偏移单元303可用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置。处理单元304可用于根据第一偏移和第一长度,对所述报文进行处理。
其中,偏移单元303可具体用于利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
可选地,作为另一个实施例,图3中的转发设备300还可包括第二确定单元305和处理单元304。第二确定单元305用于以第一协议ID为索引查找所述协议位置表,确定第一位置。处理单元304用于根据第一偏移和第一长度,对所述报文进行处理。
可选地,作为另一个实施例,图3中的转发设备300还可包括第三确定单元。处理单元304中的第一偏移和第一长度是由第三确定单元所确定的。具体地,第三确定单元可用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
可选地,作为另一个实施例,图3中的转发设备300还可包括接收单元306。接收单元306可用于接收所述报文,所述报文包括所述连续的N层协议头。
可选地,作为另一个实施例,第一确定单元301所确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
转发设备300能够实现图1的实施例中由执行主体实现的各个过程,为避免重复,这里不再赘述。
图4是本发明另一个实施例的转发设备的框图。图4所示的转发设备400包括处理器401、收发电路402和存储器403。
处理器401用于根据报文中连续的N层协议头中的第i层协议头,查找与所述第i层协议头对应的流表,确定与所述第i层协议头中的第一字段对应的指令。进一步执行与所述第i层协议头中的第一字段对应的指令。其中,执行与所述第i层协议头中的第一字段对应的指令具体用于将所述N层协议头中的第i+1层协议头在所述报文中的起始位置写入协议位置表的表项,所述协议位置表的表项的索引信息为所述第i+1层协议头的协议标识ID,N为正整数,且i为小于N的任一正整数。
本发明实施例中,执行主体在通过流表逐层解析报文中连续的N层协议头时,生成协议位置表,用于记录N层协议头中的每一层协议头在报文中的起始位置。该协议位置表以协议ID作为索引,并且协议ID是由控制器分配的。当增加新的协议时,控制器分配一个新的协议ID并配置相应的流表,执行主体在协议位置表中增加一个新的表项即可。这样,该执行主体通过查询协议位置表能够获取任意一层协议头在报文中的起始位置,进而可将报文处理窗口的起始位置移动至该协议头的起始位置,以对该协议头进行引用或编辑处理。
转发设备400中的各个组件通过总线系统404耦合在一起,其中总线系统404除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统404。
上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器(Random Access Memory,RAM)、闪存、只读存储器(Read-Only Memory,ROM)、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器403,处理器401读取存储器403中的信息,结合其硬件完成上述方法的步骤。
可选地,作为一个实施例,处理器401还可用于根据第一协议ID将报文处理窗口的起始位置移动到第一位置,所述第一位置为所述第一协议ID对应的协议头在所述报文中的起始位置。进一步用于根据第一偏移和第一长度,对所述报文进行处理。
其中,根据第一协议ID将报文处理窗口的起始位置移动到第一位置可具体是利用Set Packet Offset(Protocol ID)指令将所述报文处理窗口的起始位置移动到第一位置,其中Protocol ID表示第一协议ID。
可选地,作为另一个实施例,处理器401可用于以第一协议ID为索引查找所述协议位置表,确定第一位置。并进一步用于根据第一偏移和第一长度,对所述报文进行处理。
可选地,作为另一个实施例,处理器401可用于根据所述第一协议ID和第一域的ID,查找协议域描述表,确定所述第一偏移和所述第一长度。
可选地,作为另一个实施例,收发电路402可用于接收所述报文,所述报文包括所述连续的N层协议头。
可选地,作为另一个实施例,处理器401所确定的与所述第i层协议头中的第一字段对应的指令中包含所述第i层报文头的长度,所述N层协议头中的第i+1层协议头在所述报文中的起始位置为所述第i层协议头的长度与所述第i层协议头在所述报文中的起始位置的和。
转发设备400能够实现图1的实施例中由执行主体实现的各个过程,为避免重复,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。