专利名称:一种报文处理装置和报文处理方法、及预处理器的制作方法
技术领域:
本发明涉及报文处理技术领域,特别涉及一种报文处理装置和报文处理方法、及预处理器。
背景技术:
目前,服务器作为多数网络数据的源头,对服务器的整体性能要求比较高,因而服务器对应用到其中的处理器的性能要求也比较高,从而现有服务器多采用高性能的处理器并行工作的方式,而高性能的处理器功耗也比较高,从而使得服务器的性能功耗比会比较低。现有低功耗的处理器由于性能也比较低,因此,一般只应用于消费类电子等领域, 而并没有在服务器领域中的应用。
发明内容
有鉴于此,本发明提供了一种报文处理装置,在保持服务器高性能的同时,不仅能够降低服务器的功耗,而且还简化了处理器的处理流程。本发明还提供了一种报文处理方法和一种预处理器,不仅能够降低服务器的功耗,而且还简化了处理器的处理流程。为了达到上述目的,本发明提出的技术方案为—种报文处理装置,应用于服务器中,该装置包括预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。所述预处理器,还用于当所述接收到的报文所属的流存在相关流时,将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的处理器相同的处理器中。所述预处理器包括报文接收模块、报文处理模块、流分类模块和流表维护模块, 其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息, 直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。所述预处理器还包括报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和 DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。所述预处理器还包括处理器监控模块,其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。一种报文处理方法,应用于包括预处理器和两个以上的低功耗处理器的服务器中,该方法包括预处理器判断接收到的外部输入的报文是否是分片的报文,如果是,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息后,根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中;否则,直接根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中。对所述分片的报文进行处理,得到分片的报文的完整的五元组信息包括根据所述分片的报文的报文头标识信息判断出为所述分片的报文为首片还是后续分片,当所述分片的报文为报文的首片时,记录首片的五元组信息和因特网协议的身份标识IPID信息;当所述分片的报文为报文的后续分片时,根据所述后续分片的五元组信息中的源因特网协议SIP、目的因特网协议DIP、协议号PR0T0CAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的源端口号SPORT和目的端口号 DPORT信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的 SIP、DIP、PR0T0CAL信息和IPID信息查询对应的五元组信息,获取所述首片的五元组信息中的SPORT和DPORT信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和 DPORT信息作为后续分片的完整的五元组信息。所述根据报文的五元组信息确定处理所述报文的处理器包括判断是否存在与该报文的五元组信息对应的流表表项,如果有,则将流表表项中的处理器标识所对应的处理器作为确定处理所述报文的处理器;否则,选择一个处理器,根据将所述选择的处理器和报文的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述报文的处理器。所述选择的处理器为处理器中当前负载能力最大的处理器。所述接收到报文后,该方法还包括判断所述报文所属的流是否存在相关流,如果是,则选择一个处理器,并根据所述选择的处理器和流的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述流的处理器。按照处理器标识相同选择处理所述流的处理器和处理所述报文的处理器。所述选择处理器后,该方法还包括更新所述处理器的当前负载能力信息。一种预处理器,应用于服务器中,该预处理器包括报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息, 直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。所述预处理器还包括报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和 DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。所述预处理器还包括处理器监控模块,其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。综上所述,本发明所采用的报文处理装置,是通过将预处理器和多个并行的低功耗处理器组合起来应用到服务器中,预处理器将来自外部的报文预先进行分流,分别分配给各个低功耗处理器,并且将同一个流的报文分配给同一个处理器进行处理。这样,一方面,多个低功耗处理器能够并行处理预处理器分配给自身的报文,从整体上可以达到比较高的性能;另一方面,由于应用到服务器中并行的处理器是低功耗的处理器,从而在整体上可以降低服务器的功耗。同时,本发明方案通过预处理器的预先分流使得属于同一个流的报文都能够由一个处理器来处理,而不会出现由不同的处理器来处理,则同一个流的报文还需要在处理器间转发的问题,也就简化了处理器的处理流程。进一步地,本发明方案通过对各个处理器的状态信息进行监控,从而能够在各个处理器之间进行协调运行,减少相互之间的干扰,使得系统运行更加稳定。
图1为本发明所采用的报文处理装置的组成结构示意图;图2为本发明所采用的预处理器的组成结构示意图;图3为本发明报文处理方法实施例的工作流程图。
具体实施例方式为了解决现有技术中存在的问题,本发明提出了一种新的报文处理装置,即通过将预处理器和多个并行的低功耗处理器组合起来应用到服务器中。预处理器将来自外部的报文预先进行分流,分别分配给各个低功耗处理器,并且将同一个流的报文分配给同一个处理器进行处理。这样,一方面,多个低功耗处理器能够并行处理预处理器分配给自身的报文,从整体上可以达到比较高的性能;另一方面,由于应用到服务器中并行的处理器是低功耗的处理器,从而在整体上可以降低服务器的功耗。基于上述介绍,本发明所述方案的具体实现包括预处理器通过高速互连接口与多个低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。图1为本发明所采用的报文处理装置的组成结构示意图。如图1所示,该装置包括预处理器11和两个以上的低功耗的处理器12。其中,预处理器11通过高速互连接口与两个以上的低功耗处理器12并行相连,用于接收外部接口输入的报文,将接收到的报文预先进行分流,并将分流后的报文分配给处理器12,且将属于同一个流的所有报文都发送到同一个处理器12中;所述每一个处理器12,用于对由预处理器11发送过来的报文进行处理,且所述处理器12的个数以实际应用为准。进一步地,所述预处理器11,还用于当所述接收到的报文所属的流存在相关流时, 将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的处理器 12相同的处理器12中。例如在本发明中,将Altera公司的EP2AGX125作为预处理器11,10颗1. 5Ghz主频的四核心的Marvell MV78460作为处理器12,则将它们按照如图1所述的组合应用到服务器中,总功耗大约也只有82瓦。但如果采用目前典型的处理器,比如六核心的2. 266Ghz的htel XeonE6540,不仅性能上不如本发明所采用的报文处理装置,且单颗处理器的典型功耗就能够达到105 瓦。从而将本发明报文处理装置应用到服务器中,在保持了服务器高性能的同时,还能够大大降低服务器的功耗。在本实施例中,预处理器11可采用图2所示的组成结构,如图2所示,该预处理器 11可包括报文接收模块21、报文处理模块22、流分类模块23和流表维护模块M,其中,所述报文接收模块21,用于接收外部接口输入的报文,并将所述接收到的分片的报文发送给报文处理模块22、将所述接收到的不分片的报文发送给流分类模块23。在实际应用中,服务器接收到的由外部接口输入的报文不但量大,而且种类繁多, 从报文格式的完整性来看,可以有分片的报文和不分片的报文两种,这些报文可以属于同一个流,也可以属于不同的流,且不同的流之间可能是相关的,也可能是不相关的,在本实施例中,可将报文作为流的最小单位来处理。由于不分片的报文的五元组信息是完整的,而分片的报文的首片和后续分片格式略有不同,即首片的五元组信息是完整的,而后续分片的五元组信息是不完整的,因此,需要对分片的报文进行处理。需要说明的是,完整的报文的五元组信息包括源因特网协议(SIP)、目的因特网协议(DIP)、协议号(PR0T0CAL)、源端口号(SPORT)和目的端口号(DPORT),其中,分片的报文的后续分片仅仅包含了五元组信息中的SIP、DIP和PR0T0CAL这三个信息,并不包含SPORT 和DPORT这两个信息。所述报文处理模块22,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识(IPID)信息,并将所述首片发送给流分类模块23 ; 当所述分片的报文为报文的后续分片时,根据所述后续分片中的SIP、DIP、PR0T0CAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的SPORT和 DPORT信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,并将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块23,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、 PR0T0CAL信息和IPID信息查询对应的五元组信息,获取所述五元组信息中的SPORT和 DPORT信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT 信息依次发送给流分类模块23。所述流分类模块23,用于将由报文接收模块21发送的报文的五元组信息和报文处理模块22发送的报文的五元组信息发送给流表维护模块对,接收流表维护模块M发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器。所述流表维护模块对,用于接收流分类模块23发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识, 将所述处理器标识发送给流分类模块23 ;如果没有,则根据流分类模块23发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。进一步地,该预处理器11还可包括报文解析模块25,则,所述报文接收模块21,还用于将所述接收到的不分片的报文发送给报文解析模块 25。
所述报文处理模块22,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块25 ;当所述分片的报文为报文的后续分片时,且当获取到后续分片的 SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块25,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块25。所述报文解析模块25,用于对由报文接收模块21发送的报文和报文处理22模块发送的所述接收到的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块M发送五元组信息指示流表维护模块M创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。在本实施例中,假设至少存在流1和流2两条流,则确定所述报文所属的流存在相关流的情况可以有以下几种1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前, 解析出接收到的流2的报文中存在流1的五元组信息,此时,即可确定流2存在相关的流, 即为流1。比如解析出FTP控制连接的PORT报文中存在数据连接的五元组信息,则数据连接必然是控制连接的相关流。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,此时,如果预先设定SIP地址相同的流为相关流,当解析出流2的第一个报文的SIP与流1的相同时,即可认为流2存在相关流、即为流1。这种情况可以应用于黑客攻击服务器中,比如流1来自于某个用户,当发现该用户是黑客恶意攻击时,那么由于流1的 SIP即为该用户的IP地址,为了防止黑客的恶意攻击,需要对该用户发出的所有数据都视为无效数据进行处理,即将SIP相同的所有流都视为该用户的数据流,即可认为SIP相同的所有流都是相关的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,即可确定流2存在相关的流,为流1。以上三种情况仅为举例说明,实际中还可以根据业务情况确定,总之可以从某个流的报文中解析出该报文所属的流是否存在相关流即可,以不影响本发明实施例的实现为准。需要说明的是,在本实施例中,当确定出所述报文所属的流存在相关流时,则需要报文解析模块25向流表维护模块M发送五元组信息来指示流表维护模块M创建流表表项,由于确定所述报文所属的流存在相关流的情况不同,发送的五元组信息也是不同的,具体可以对应有以下几种情况1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前, 解析出接收到的流2的报文中存在流1的五元组信息,则报文解析模块25向流表维护模块 24发送的是相关流、即流1的五元组信息。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,且流2的第一个报文的SIP与流1的相同时,则报文解析模块25向流表维护模块M发送的是报文所属的流、即流2的五元组信息。
3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,则报文解析模块25 向流表维护模块M发送的是报文所属的流或相关流中其中一个流的五元组信息。当为其它情况时,则应根据实际需要来确定发送哪个流的五元组信息,并不是严格确定的。所述流表维护模块M,进一步用于接收报文解析模块25发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。在本实施例中,创建流表表项可以为重新为流创建一个新的流表表项,也可以为修改流之前的流表表项。比如当相关的流中的报文之前没有任何一个被处理过时,需要创建相关的流的流表表项;而修改流表表项的情况则为假设有两个流,分别为流1和流2,流 1采用处理器1进行处理,流2采用处理器2进行处理,在处理流1的时候接收到流2的报文,而对流2的报文进行解析发现流2中存在相关的流1,此时,为了使得相关的两个流能够使用同一个处理器进行处理,则需修改流1的流表表项,即将流1也采用处理器2来进行处理;或者修改流2的流表表项,即将流2也采用处理器1来进行处理。需要说明的是,由于报文解析模块25发送的五元组信息的不同,创建流表表项也可对应不同的情况,有以下几种1、当流1后于流2到达服务器,即流2先到达服务器时,在流1到达服务器之前, 解析出接收到的流2的报文中存在流1的五元组信息,则由于发送的是相关流的五元组信息,此时,即可根据相关流的五元组信息为相关流创建流表表项,且流表表项中的处理器标识与流2的流表表项的处理器标识是相同的。2、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的第一个报文时,且流2的第一个报文的SIP与流1的相同时,则由于发送的是流2的五元组信息,此时需要根据流2的五元组信息为流2创建流表表项,且流表表项中的处理器标识与流 1的流表表项的处理器标识是相同的。3、当流1先于流2到达服务器,即在接收到流1的部分报文后才接收到流2的报文时,当解析出接收到的流2的某个报文中存在流1的五元组信息时,此时可有两种情况: 当发送流2的五元组信息时,需要根据流2的五元组信息对应地修改流2的流表表项中的处理器标识,使其与流1的流表表项的处理器标识相同;当发送流1的五元组信息时,需要根据流1的五元组信息对应地修改流1的流表表项中的处理器标识,使其与流2的流表表项的处理器标识相同。还需说明的是,在本实施例中,所述报文的流表表项中的处理器标识与所述报文所属的流相关流的流表表项中的处理器标识也可以是不相同的,比如,当在创建流表表项时,如果该处理器的当前负载能力已经达到极限,也可通过其它的处理器来处理,在实际中,以不影响本发明实施例的实现为准。在本实施例中,处理器11还可包括处理器监控模块沈,所述处理器监控模块沈,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器当前负载能力。所述流表维护模块对,还用于从处理器监控模块沈中获取处理器的处理器标识,
13根据该处理器标识和五元组信息创建流表表项。在本实施例中,流表维护模块M从处理器监控模块沈中获取的处理器标识可以为当前负载能力最大的处理器对应的处理器标识,从而使得各处理器之间实现负载均衡, 具体实现时以实际应用为准。进一步地,所述流表维护模块M,还用于设置流表表项的最大使用周期,每个流表表项都对应了一个最大使用周期,且这些周期可以是相同的,也可以是不同的。当在最大使用周期内该流表表项被使用时,则重新开始计时该流表表项的使用时间;当达到最大使用周期时,将该流表表项删除。在本实施例中,所述流表表项的格式可参见表1。表 权利要求
1.一种报文处理装置,其特征在于,应用于服务器中,该装置包括预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。
2.根据权利要求1所述的装置,其特征在于,所述预处理器,还用于当所述接收到的报文所属的流存在相关流时,将后续接收到的相关流中的所有报文都发送到与处理所述接收到的报文所采用的处理器相同的处理器中。
3.根据权利要求1所述的装置,其特征在于,所述预处理器包括报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。
4.根据权利要求3所述的装置,其特征在于,所述预处理器还包括报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT 信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。
5.根据权利要求4所述的装置,其特征在于,所述预处理器还包括处理器监控模块, 其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。
6.根据权利要求5所述的装置,其特征在于,所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。
7.根据权利要求5所述的装置,其特征在于,所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。
8.一种报文处理方法,其特征在于,应用于包括预处理器和两个以上的低功耗处理器的服务器中,该方法包括预处理器判断接收到的外部输入的报文是否是分片的报文,如果是,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息后,根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中;否则,直接根据报文的五元组信息确定处理所述报文的处理器,将所述报文分配到所述确定的处理器中。
9.根据权利要求8所述的方法,其特征在于,对所述分片的报文进行处理,得到分片的报文的完整的五元组信息包括根据所述分片的报文的报文头标识信息判断出为所述分片的报文为首片还是后续分片,当所述分片的报文为报文的首片时,记录首片的五元组信息和因特网协议的身份标识 IPID信息;当所述分片的报文为报文的后续分片时,根据所述后续分片的五元组信息中的源因特网协议SIP、目的因特网协议DIP、协议号PR0T0CAL信息和IPID信息查询是否存在对应的五元组信息,如果有,获取所述五元组信息中的源端口号SPORT和目的端口号DPORT 信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息,如果没有,则缓存所述后续分片,直到当接收到所述分片的报文为报文的首片时,记录所述首片的五元组信息和IPID信息,根据所述后续分片中的SIP、DIP、 PR0T0CAL信息和IPID信息查询对应的五元组信息,获取所述首片的五元组信息中的SPORT 和DPORT信息,将后续分片中的SIP、DIP、PR0T0CAL信息和获取到的SPORT和DPORT信息作为后续分片的完整的五元组信息。
10.根据权利要求9所述的方法,其特征在于,所述根据报文的五元组信息确定处理所述报文的处理器包括判断是否存在与该报文的五元组信息对应的流表表项,如果有,则将流表表项中的处理器标识所对应的处理器作为确定处理所述报文的处理器;否则,选择一个处理器,根据将所述选择的处理器和报文的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述报文的处理器。
11.根据权利要求10所述的方法,其特征在于,所述选择的处理器为处理器中当前负载能力最大的处理器。
12.根据权利要求10所述的方法,其特征在于,所述接收到报文后,该方法还包括判断所述报文所属的流是否存在相关流,如果是,则选择一个处理器,并根据所述选择的处理器和流的五元组信息创建流表表项,并将所述选择的处理器作为确定处理所述流的处理器。
13.根据权利要求10所述的方法,其特征在于,按照处理器标识相同选择处理所述流的处理器和处理所述报文的处理器。
14.根据权利要求10或12所述的方法,其特征在于,所述选择处理器后,该方法还包括更新所述处理器的当前负载能力信息。
15.一种预处理器,其特征在于,应用于服务器中,该预处理器包括报文接收模块、报文处理模块、流分类模块和流表维护模块,其中,所述报文接收模块,用于接收外部输入的报文,并将所述接收到的分片的报文发送给报文处理模块、将所述接收到的不分片的报文发送给流分类模块;所述报文处理模块,用于当所述分片的报文为报文的首片时,记录所述首片的五元组信息和因特网协议的身份标识IPID信息,并将所述首片发送给流分类模块;当所述分片的报文为报文的后续分片时,获取所述后续分片的五元组信息中的源端口号SPORT和目的端口号DPORT信息,如果获取到,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块,如果没有获取到,则缓存所述后续分片,并继续获取SPORT和DPORT信息,直到获取到SPORT和DPORT信息后,将所述后续分片和所述获取到的SPORT和DPORT信息发送给流分类模块;所述流分类模块,用于将由报文接收模块发送的报文的五元组信息和报文处理模块发送的报文的五元组信息发送给流表维护模块,接收流表维护模块发送的与所述报文的五元组信息对应的处理器标识,并将报文发送给所述获取到的处理器标识所对应的处理器;所述流表维护模块,用于接收流分类模块发送的报文的五元组信息,查询是否存在与所述五元组信息对应的流表表项,如果有,则获取所述流表表项中的处理器标识,将所述处理器标识发送给流分类模块;如果没有,则根据流分类模块发送来的报文的五元组信息创建流表表项,所述流表表项中至少包括报文的五元组信息和处理该报文的处理器对应的处理器标识。
16.根据权利要求15所述的预处理器,其特征在于,所述预处理器还包括报文解析模块,其中,所述报文接收模块,还用于将所述接收到的不分片的报文发送给报文解析模块;所述报文处理模块,还用于当所述分片的报文为报文的首片时,将所述首片发送给报文解析模块;当所述分片的报文为报文的后续分片时,且当获取到后续分片的五元组信息中的SPORT和DPORT信息时,将所述后续分片和所述获取到的SPORT和DPORT信息发送给报文解析模块,否则,直到当接收到所述分片的报文为报文的首片时,获取所述首片的五元组信息中的SPORT和DPORT信息后,再将所述首片、后续分片和所述获取到的SPORT和DPORT信息依次发送给报文解析模块;所述报文解析模块,用于对由报文接收模块发送的报文和报文处理模块发送的报文进行解析,如果根据解析结果确定所述报文所属的流存在相关流时,向流表维护模块发送五元组信息指示流表维护模块创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识;所述流表维护模块,进一步用于接收报文解析模块发送的五元组信息,并根据五元组信息创建流表表项,使得流表表项中所述报文的五元组信息和相关流的五元组信息对应相同的处理器标识。
17.根据权利要求16所述的预处理器,其特征在于,所述预处理器还包括处理器监控模块,其中,所述处理器监控模块,用于获取每一个处理器的信息,所述处理器的信息至少包括处理器标识、处理器是否正常工作和处理器负载能力;所述流表维护模块,还用于从处理器监控模块中获取处理器的处理器标识,根据该处理器标识和五元组信息创建流表表项。
18.根据权利要求16所述的预处理器,其特征在于,所述流表维护模块从处理器监控模块中获取的处理器标识为当前负载能力最大的处理器对应的处理器标识。
19.根据权利要求16所述的预处理器,其特征在于,所述流表维护模块,还用于设置流表表项的最大使用周期,或当流表表项达到最大使用周期时,删除流表表项。
全文摘要
本发明公开了一种报文处理装置,应用于服务器中,该装置包括预处理器和两个以上的低功耗处理器,其中,预处理器通过高速互连接口与两个以上的低功耗处理器并行相连,所述预处理器,用于将接收到的外部输入的报文预先进行分流,将分流的报文分配给处理器,并将属于同一个流的所有报文都发送到同一个处理器中;所述每一个处理器,用于接收并处理由所述预处理器发送的报文。本发明同时公开了一种报文处理方法和预处理器,应用本发明所述的报文处理装置和报文处理方法、及预处理器,通过由预处理设备对报文进行预处理,使得多个低功耗的处理器可以并行应用到服务器中,降低了服务器的功耗。
文档编号H04L12/56GK102377640SQ20101025065
公开日2012年3月14日 申请日期2010年8月11日 优先权日2010年8月11日
发明者葛长忠 申请人:杭州华三通信技术有限公司