发明内容
本发明提供了一种数据包处理方法及装置,以至少解决相关技术中无法检测数据包和包信息不一一对应而导致的降低包处理器性能的问题。
根据本发明的一个方面,提供了一种数据包处理方法,其包括:接收待处理的数据包,并提取出与数据包对应的包信息;在数据包和与数据包对应的包信息中添加标识,其中,标识用于确定数据包和包信息是否对应;在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,根据包信息对数据包进行处理。
优选地,上述数据包处理方法还包括:在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息,指示信息用于指示处理数据包的设备输出错误。
优选地,上述数据包处理方法还包括:接收复位指示,其中,复位指示是接收指示信息的设备在确定数据包和包信息出现不对应的次数到达阈值的情况下发送的;根据复位指示对处理数据包的设备进行功能复位。
优选地,在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息包括:按照与生成标识对应的编码规则生成数据包的预期标识;将预期标识与数据包中携带的标识进行匹配;如果匹配失败,则数据包出现乱序,确定数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和数据包。
优选地,在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息包括:按照与生成标识对应的编码规则生成包信息的预期标识;将预期标识与包信息中携带的标识进行匹配;如果匹配失败,则包信息出现乱序,确定数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和包信息。
优选地,在数据包和与数据包对应的包信息中添加标识包括:在数据包和包信息中添加相同的标识。
优选地,标识和预期标识包括:序列号。
根据本发明的另一方面,提供了一种数据包处理装置,其包括:接收模块,用于接收待处理的数据包,并提取出与数据包对应的包信息;添加模块,用于在数据包和与数据包对应的包信息中添加标识,其中,标识用于确定数据包和包信息是否对应;处理模块,用于在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,根据包信息对数据包进行处理。
优选地,上述数据包处理装置还包括:发送模块,用于在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息,指示信息用于指示处理数据包的设备输出错误。
优选地,上述数据包处理装置还包括:接收模块,用于接收复位指示,其中,复位指示是接收指示信息的设备在确定数据包和包信息出现不对应的次数到达阈值的情况下发送的;功能复位模块,用于根据复位指示对处理数据包的设备进行功能复位。
优选地,发送模块包括:第一生成单元,用于按照与生成标识对应的编码规则生成数据包的预期标识;第一匹配单元,用于将预期标识与数据包中携带的标识进行匹配;第一发送单元,用于在预期标识与数据包中携带的标识进行匹配失败的情况下,则数据包出现乱序,确定出数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和数据包。
优选地,发送模块包括:第二生成单元,用于按照与生成标识对应的编码规则生成包信息的预期标识;第二匹配单元,用于将预期标识与包信息中携带的标识进行匹配;第二发送单元,用于在预期标识与包信息中携带的标识进行匹配失败的情况下,则包信息出现乱序,确定出数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和包信息。
在本发明中,在接收到待处理的数据包后,从该数据包中提取出与该数据包对应的包信息,并在数据包和与数据包对应的包信息中添加标识,该标识用于确定数据包和包信息是否对应,在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,再根据包信息对数据包进行处理,避免了在数据包和包信息不对应的情况下根据包信息对数据包进行处理,从而提高了包处理器的性能,有助于提高包处理器的数据处理质量。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本实施例提供了一种数据包处理方法,如图2所示,该数据包处理方法包括步骤S202至步骤S206。
步骤S202:接收待处理的数据包,并提取出与数据包对应的包信息。
步骤S204:在数据包和与数据包对应的包信息中添加标识,其中,标识用于确定数据包和包信息是否对应。
步骤S206:在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,根据包信息对数据包进行处理。
通过上述步骤,在接收到待处理的数据包后,从该数据包中提取出与该数据包对应的包信息,并在数据包和与数据包对应的包信息中添加标识,该标识用于确定数据包和包信息是否对应,在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,再根据包信息对数据包进行处理,避免了在数据包和包信息不对应的情况下根据包信息对数据包进行处理,从而提高了包处理器的性能,有助于提高包处理器的数据处理质量。
优选地,在数据包和与数据包对应的包信息中添加标识之前,按照预设的编码规则生成标识,该预设的编码规则可以根据需求由外围控制平台来选择,生成标识后在数据包和包信息中添加上述生成的标识,以便于后续确定数据包和包信息是否对应。
优选地,在网络数据包进行转发和修改的应用中,作为包处理器功能的FPGA器件或ASIC专用芯片通常将对数据包提取出包信息,并且将数据包和包信息分成两个通道进行传输。在数据包和包信息进行分离的时候分别为其打上相同的序列号(标识)。在为数据包和包信息添加序列号的时候,序列号按照一定的编码规则进行变化,可以通过数据包处理设备外围的控制平台来选择需要使用的编码方式,数据包和包信息在传输和处理的过程中都将携带这一序列号,序列号在整个传送处理过程中也不会改变。当包信息处理完成,并在对数据包进行处理的时候,将数据包和包信息的序列号进行比较:如果二者序列号一致,则认为没有出现乱序;如果二者序列号不一致,则认为数据包和包信息已经出现乱序,数据包和包信息不再对应,系统已经出错。
为了在数据包和包信息不对应的场景下准确地指示出数据包和包信息不对应,在本优选实施例中,提供了一种指示方法,例如,在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息,指示信息用于指示处理数据包的设备输出错误。
在上述优选实施例中,在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,不根据包信息对数据包进行处理,发送指示信息以指示处理数据包的设备输出错误,该指示信息可以发送给外围控制平台,避免了在数据包和包信息不对应的情况下继续对数据进行处理而导致包处理器因出现不可逆转的错误而瘫痪的现象,从而在数据包和包信息不对应的场景下准确地指示出数据包和包信息不对应,进而可以有助于提高包处理器的性能。
为了进一步地提高包处理器的性能,在本优选实施例中提供了一种复位包处理器的性能的方法,例如,接收复位指示,其中,复位指示是接收指示信息的设备在确定数据包和包信息出现不对应的次数到达阈值的情况下发送的;根据复位指示对处理数据包的设备进行功能复位。
在上述优选实施例中,在数据包和包信息不对应的情况下发送指示信息后,接收复位指示,该复位指示是接收指示信息的设备在确定数据包和包信息出现不对应的次数到达阈值的情况下发送的,例如,可以是外围控制平台发送复位指示,以指示处理数据包的设备进行功能复位,使数据包处理设备能恢复正常工作,避免出现乱序后引起网络传输错误,增强本实施例的适用性,此外,为了满足不同场景的应用需求,可以预设一个阈值,在数据包和包信息出现不对应的次数到达该阈值时,再发送复位指示以指示处理数据包的设备进行功能复位,在具体实施中,可以通过对数据包和包信息出现不对应的次数进行计数,在计数到达阈值时,再发送复位指示,同时,复位指示的时间长度也可以根据不同的应用场景的需求进行设置,以满足不同应用场景的需求,增强本实施例的灵活性。
为了可以准确地确定出数据包处理中的乱序点,确定出错的数据包,在本优选实施例中提供了一种检测方法,该方法可以检测出是否是由于数据包乱序而导致的数据包和包信息出现不对应的现象,例如,按照与生成标识对应的编码规则生成数据包的预期标识;将预期标识与数据包中携带的标识进行匹配;如果匹配失败,则数据包出现乱序,确定数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和数据包。
在上述优选实施例中,按照与生成标识对应的编码规则生成数据包的预期标识,即按照上述生成标识的编码规则再次生成数据包的预期标识,将数据包的预期标识与数据包中携带的标识进行匹配,如果匹配成功了,例如预期标识与数据包中携带的标识一致,则确定数据包没有出现乱序,在匹配失败的情况下,例如预期标识与数据包中携带的标识不一致,则确定数据包出现乱序,由于数据包出现乱序导致数据包和包信息不对应,并发送指示信息,同时,该指示信息中包括有数据包的预期标识和数据包,以便于准确地确定出具体出现乱序的数据包。
为增强灵活性,在本优选实施例中,提供了一种检测方法,该方法可以检测出是否是由于包信息乱序而导致的数据包和包信息出现不对应的现象,例如,在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息包括:按照与生成标识对应的编码规则生成包信息的预期标识;将预期标识与包信息中携带的标识进行匹配;如果匹配失败,则包信息出现乱序,确定数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和包信息。
在上述优选实施例中,按照与生成标识对应的编码规则生成包信息的预期标识,即按照上述生成标识的编码规则再次生成包信息的预期标识,将包信息的预期标识与包信息中携带的标识进行匹配,如果匹配成功了,例如预期标识与包信息中携带的标识一致,则确定包信息没有出现乱序,在匹配失败的情况下,例如预期标识与包信息中携带的标识不一致,则确定包信息出现乱序,由于包信息出现乱序导致数据包和包信息不对应,并发送指示信息,同时,该指示信息中包括有包信息的预期标识和包信息,以便于准确地确定出具体出现乱序的包信息。
为了便于操作,降低设备根据数据包和包信息中携带的标识确定数据包和包信息是否对应所需的时间,在本优选实施例中,在数据包和包信息中添加相同的标识,即通过预设的编码规则生成标识,在数据包和与数据包对应的包信息中添加相同的标识,此时,只要确定数据包和包信息中携带的标识是否一致即可确定数据包和包信息是否对应了,从而降低了操作复杂性,有助于降低设备根据数据包和包信息中携带的标识确定数据包和包信息是否对应所需的时间,提高数据处理效率。
优选地,上述标识和预期标识可以但不限于包括:序列号,即标识和预期标识可以是序列号的形式,例如,标识的序列号可以为0、1、2、3……,在数据包1中添加标识号“0”,在与数据包1对应的包信息中也添加标识号“0”,在数据包2中添加标识号“1”,在与数据包2对应的包信息中也添加标识号“1”,依次类推,预期标识的序列号为0、1、2、3……,在处理第二个数据包时(此处第二个数据包不一定是数据包2,在数据包乱序时,第二个数据包则不是数据包2,在数据包没有乱序时,第二个数据包则是数据包2),检测该第二个数据包中的标识与数据包的预期标识的序列号“1”是否一致,如果一致,则数据包没有乱序,如果不一致,则数据包乱序。
本实施例提供了一种数据包处理装置,如图3所示,该数据包处理装置包括:接收模块302,用于接收待处理的数据包,并提取出与数据包对应的包信息;添加模块304,连接至接收模块302,用于在数据包和与数据包对应的包信息中添加标识,其中,标识用于确定数据包和包信息是否对应;处理模块306,连接至添加模块304,用于在根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,根据包信息对数据包进行处理。
在上述实施例中,在接收模块302接收到待处理的数据包后,从该数据包中提取出与该数据包对应的包信息,添加模块304在数据包和与数据包对应的包信息中添加标识,该标识用于确定数据包和包信息是否对应,在处理模块306根据数据包和包信息中携带的标识确定数据包和包信息对应的情况下,再根据包信息对数据包进行处理,避免了在数据包和包信息不对应的情况下根据包信息对数据包进行处理,从而提高了包处理器的性能,有助于提高包处理器的数据处理质量。
为了在数据包和包信息不对应的场景下准确地指示出数据包和包信息不对应,在本优选实施例中,如图4所示,上述数据包处理装置还包括:发送模块308,连接至添加模块304,用于在根据数据包和包信息中携带的标识确定数据包和包信息不对应的情况下,发送指示信息,指示信息用于指示处理数据包的设备输出错误。
为了进一步地提高包处理器的性能,在本优选实施例中,如图5所示,上述数据包处理装置还包括:接收模块310,连接至发送模块308,用于接收复位指示,其中,复位指示是接收指示信息的设备在确定数据包和包信息出现不对应的次数到达阈值的情况下发送的;功能复位模块312,连接至接收模块310,用于根据复位指示对处理数据包的设备进行功能复位。
为了可以准确地确定出数据包处理中的乱序点,确定出错的数据包,在本优选实施例中,如图6所示,上述发送模块308包括:第一生成单元3082,用于按照与生成标识对应的编码规则生成数据包的预期标识;第一匹配单元3084,连接至第一生成单元3082,用于将预期标识与数据包中携带的标识进行匹配;第一发送单元3086,连接至第一匹配单元3084,用于在预期标识与数据包中携带的标识进行匹配失败的情况下,则数据包出现乱序,确定出数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和数据包。
为增强灵活性,在本优选实施例中,如图6所示,上述发送模块308还包括:第二生成单元3088,用于按照与生成标识对应的编码规则生成包信息的预期标识;第二匹配单元30810,连接至第二生成单元3088,用于将预期标识与包信息中携带的标识进行匹配;第二发送单元30812,连接至第二匹配单元30810,用于在预期标识与包信息中携带的标识进行匹配失败的情况下,则包信息出现乱序,确定出数据包和包信息不对应,发送指示信息,其中,指示信息包括:预期标识和包信息。
下面结合附图和实例对上述各优选实施例进行详细的描述。
首先,本发明是作用于已有的数据包处理设备上的,并不是独立存在的。如图1所示,现有的数据包处理设备处理数据包的功能框图,数据包接收模块102(相当于接收模块302)接收进入数据包处理设备的数据包,数据包接收模块102对数据包进行缓存,并将数据包中的部分信息提取送入包信息提取模块110。此后数据包进入数据通道,并通过数据包传输模块104进行缓存和传送,此处图中只画出了一级数据包传输模块104,以一级数据包传输模块104为例,在实际的数据包处理设备100中根据不同的需求可能使用多级串联的数据包传输模块104。同时,从数据包中提取出来的信息送入包信息提取模块110后,提取出来的信息进入了包信息处理通道,通过包信息处理模块112和包信息传输模块114对提取出来的信息进行存储、处理和传输,此处图中只画出了一级包信息处理模块112和包信息传输模块114,以一级包信息处理模块112和包信息传输模块114为例,但在实际的数据包处理设备中根据不同的需求可能使用多级串联的包信息处理模块112和包信息传输模块114。当包信息处理完成之后,在数据包修改模块106中,将进行了若干级传输的数据包内容和处理完成的包信息内容读出,并根据包信息对数据包内容进行相关处理,通过数据包输出模块108将处理后的数据包输出。然而在上述数据包处理设备中处理数据包时,在数据包和包信息不对应时,数据包处理设备无法检测出数据包和包信息不对应,会依然根据包信息对数据包进行处理,可能导致包处理器因出现不可逆转的错误而瘫痪。
因此,在不影响数据包处理设备的原有功能的基础上,能够有效检测出数据包和包信息的乱序并快速恢复数据包处理设备是十分重要的,因此,本实例提出了一种作用于现有的数据包处理设备的数据包处理装置,以有效检测出数据包和包信息的乱序并快速恢复数据包处理设备。如图7所示,上述数据包处理装置的使用是针对数据包处理设备的,但是硬件结构是独立于原有的数据包处理设备的。所以使用或者不使用该装置,不会影响数据包处理设备原有的功能。
使用上述数据包处理装置后的数据包处理设备100,原有功能不变,处理数据包的流程如下:当数据包输入到数据包接收模块102时,数据包入口序列号生成模块702将检测数据包接收模块102的信号,当接收到新数据包(相当于待处理的数据包)时,按照一定的编码规则产生一个序列号(相当于标识)送给数据包接收模块102,数据包接收模块102(相当于添加模块204)将此序列号添加到数据包中指定的域,该域在整个数据包处理设备中都将不被处理。在包信息处理通道上,包信息提取模块110每次接收到一个包信息,将被包信息入口序列号生成模块704检测到,此时包信息入口序列号生成模块704将按照和数据包入口序列号生成模块702相同的编码规则产生一个序列号(相当于标识)送给包信息提取模块110。包信息提取模块110(相当于添加模块204)将该序列号添加到包信息数据中的指定域,该域在整个数据包处理设备中将不被处理。在数据包修改模块106中,将读出数据包内容和包信息内容,出口序列号比较模块706将检测这两路数据中的序列号,并进行比较,同时将数据包序列号送给数据包出口序列号检测模块710,将包信息序列号送给包信息出口序列号检测模块712。出口序列号比较模块706比较出数据包序列号和包信息序列号不一致时,会发送错误信息给复位恢复模块708。
复位恢复模块708(相当于功能复位模块312)将对错误进行计数,输出给外围控制平台700去读取,同时,复位恢复模块708将根据数据包处理设备的实际需求,产生一定时间长度的复位信号,完成对数据包处理设备的复位。由于不同的数据包处理设备100所需要的复位时间长度不同,可由外围控制平台700输入不同参数来控制复位恢复模块产生的复位信号的时间长度。
数据包出口序列号检测模块710(相当于第一生成单元3082、第一匹配单元3084以及第一发送单元3086)和包信息出口序列号检测模块712(相当于第二生成单元3088、第二匹配单元30810以及第二发送单元30812)在接收到各自的序列号之后将按照入口序列号生成模块中所使用的规则产生一个预期的序列号,并将预期序列号和接收到的序列号进行比较,如果不一致,将输出错误信息以及预期序列号和实际序列号的数据,输出给外围控制平台700分析定位。
优选地,上述数据包入口序列号生成模块702和包信息入口序列号生成模块704统称为入口序列号生成模块,图8是入口序列号生成模块的功能结构框图,如图8所示,该入口序列号生成模块800中的序列号生成控制器802检测到数据包处理设备100接收到待处理数据包或包信息时,接收到控制信息模块804发送的控制信息(该控制信息是外围控制平台700发送给控制信息模块804的),根据控制信息选择编码规则,并按照编码规则生成标识,将生成的标识发送给数据包处理设备100,以便将标识添加到数据包或包信息中。
优选地,上述复位恢复模块708(相当于功能复位模块312)的功能结构框图如图9所示,出口序列号比较模块706在数据包序列号和包信息序列号比较不一致时将输出错误信息(相当于指示信息),以指示将数据包处理设备100全部或是部分功能复位。出口序列号比较模块706在数据包序列号和包信息序列号比较不一致时输出错误信息给错误计数输出模块906,错误计数输出模块906将数据包序列号和包信息序列号比较不一致的次数统计发送给外围控制平台700,外围控制平台700根据数据包序列号和包信息序列号比较不一致的次数统计和需要发送控制信息给控制信息模块904,控制信息模块904将控制信息发送给复位恢复模块708内部的可产生不同时间长度的复位信号(相当于复位指示)的复位信号产生控制器902,复位信号产生控制器902根据控制信息生成复位信号,并将复位信号发送给数据包处理设备100,以指示对数据包处理设备100进行复位,使之能恢复正常工作,避免系统进入不可逆转的错误而瘫痪,上述错误计数输出模块906还可以包含对错误次数进行计数的计数器,以便将准确的错误次数发送给外围控制平台700。
优选地,数据包出口序列号检测模块710和和包信息出口序列号检测模块712统称为出口序列号检测模块,数据包出口序列号检测模块710和和包信息出口序列号检测模块712的功能和结构可以完全相同,只是输入信号不同。图10是出口序列号检测模块的功能结构框图,如图10所示,出口序列号检测模块1002中的预期序列号产生器1006(相当于第一生成单元3082或第二生成单元3088)按照入口序列号产生模块800中使用的编码规律(选择哪种规则由外围控制平台700来控制,需要和入口一致)产生预期序列号(相当于预期标识),每产生一个预期序列号,比较模块1004将预期序列号和出口处输入的数据包序列号和包信息序列号进行比较(数据包序列号和包信息序列号是出口序列号比较模块706发送给比较模块1004的),如果数据包序列号和产生的预期序列号不一致,则表示数据包出现了丢包或是包出错的情况,送出相关出错信息;如果包信息序列号和产生的预期序列号不一致,则表示包信息出现了丢失或是出错的情况,送出相关出错信息。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。