一种IP数据包的处理方法和装置与流程

文档序号:12809390阅读:365来源:国知局
一种IP数据包的处理方法和装置与流程

本发明涉及通信技术领域,尤其涉及一种ip数据包的处理方法和装置。



背景技术:

mtu(maximumtransmissionunit,最大传输单元)是一条链路上能够传输的ip数据包的最大值。在ip数据包的传输过程中,需要根据mtu对ip数据包进行合理的分片,以确保ip数据包能够在链路上进行传输。

如图1所示,针对包含ip头和ip数据的ip数据包,如果该ip数据包的长度大于mtu,则将该ip数据包中的ip数据拆分成ip数据1和ip数据2,并将ip数据包分成ip数据包1和ip数据包2,ip数据包1中包括ip头和ip数据1,ip数据包2中包括ip头和ip数据2。ip数据包1的长度不大于mtu,且ip数据包2的长度不大于mtu。ip数据包1的ip头与ip数据包2的ip头相同,均为ip数据包中的ip头。其中,将拆分后的第一个ip数据包(即ip数据包1)称为ip数据包的首数据包,将第一个ip数据包之外的其它ip数据包(即ip数据包2)称为ip数据包的后续数据包。



技术实现要素:

本发明提供一种ip数据包的处理方法,所述方法包括以下步骤:

接收经过分片处理的ip数据包,并确定所述ip数据包的业务类型;

当所述业务类型为依赖端口信息进行业务处理的业务类型时,判断所述ip数据包是否为首数据包;

如果是,则建立分片转发表项,并在所述分片转发表项中记录所述ip数据 包的ip头信息和端口信息,利用所述端口信息对所述ip数据包进行业务处理;

如果否,则将所述ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与所述ip数据包进行对应,并利用所述端口信息对所述ip数据包进行业务处理。

本发明提供一种ip数据包的处理装置,所述装置具体包括:

确定模块,用于接收经过分片处理的ip数据包,并确定所述ip数据包的业务类型;

判断模块,用于当所述业务类型为依赖端口信息进行业务处理的业务类型时,判断所述ip数据包是否为首数据包;

处理模块,用于当判断结果为是时,则建立分片转发表项,并在所述分片转发表项中记录所述ip数据包的ip头信息和端口信息,并利用所述端口信息对所述ip数据包进行业务处理;当判断结果为否时,则将所述ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与所述ip数据包进行对应,并利用所述端口信息对所述ip数据包进行业务处理。

基于上述技术方案,本发明实施例中,在接收到分片处理的ip数据包后,可以区分ip数据包的业务类型,针对依赖端口信息进行业务处理的业务类型,可以先等待首数据包,并基于首数据包的端口信息,将该端口信息与后续数据包进行对应,使得能够获得分片处理的所有ip数据包的端口信息,继而利用端口信息对各ip数据包进行业务处理。在满足业务处理需求的同时,不需要对所有ip数据包进行重组,尽可能减少ip数据包的缓存,提升系统整体处理效率和转发效率。

附图说明

图1是根据mtu对ip数据包进行合理的分片的示意图;

图2是本发明一种实施方式中的应用场景示意图;

图3是本发明一种实施方式中的ip数据包的处理方法的流程图;

图4是本发明另一种实施方式中的ip数据包的处理方法的流程图;

图5是本发明一种实施方式中的网络设备的硬件结构图;

图6是本发明一种实施方式中的ip数据包的处理装置的结构图。

具体实施方式

针对现有技术中存在的问题,本发明实施例中提出一种ip数据包的处理方法,该方法可以应用在源设备与目的设备之间的网络设备上。以图2为本发明实施例的应用场景示意图,该方法可以应用在网络设备1或者网络设备2上,以应用在网络设备2为例。在源设备发送ip数据包时,可以根据mtu对ip数据包进行合理的分片,以确保ip数据包能够传输到目的设备。以图1为例,源设备将ip数据包分成ip数据包1和ip数据包2,网络设备1分别收到ip数据包1和ip数据包2,并分别将ip数据包1和ip数据包2发送给网络设备2,以网络设备2接收到ip数据包1和ip数据包2的处理为例。在上述应用场景下,如图3所示,该ip数据包的处理方法包括以下步骤:

步骤301,接收经过分片处理的ip数据包,确定ip数据包的业务类型。

步骤302,当业务类型为依赖端口信息进行业务处理的业务类型时,判断该ip数据包是否为首数据包。如果是,执行步骤303;如果否,执行步骤304。

其中,ip数据包中还可以包含分片标记、分片偏移量等信息。分片标记表示当前ip数据包是经过分片处理的ip数据包。分片偏移量表示当前ip数据包是首数据包、或者第二个ip数据包、…、或者最后一个ip数据包等。基于分片偏移量,可以判断当前ip数据包是否为首数据包。

例如,首数据包的分片偏移量为0,如果首数据包的长度为100,则第二个ip数据包的分片偏移量为101,如果第二个ip数据包的长度为100,则第三个ip数据包的分片偏移量为201,以此类推。基于此,如果当前收到的ip数据包的分片偏移量是0,则确定当前ip数据包是首数据包,如果当前收到的ip数据包的分片偏移量不是0,则确定当前ip数据包不是首数据包。

网络设备2在接收到ip数据包1时,确定ip数据包1是首数据包。网络设备2在接收到ip数据包2时,确定ip数据包2不是首数据包。ip数据包1包括 ip头和ip数据1,ip数据包2中包括ip头和ip数据2,ip数据包1的ip头与ip数据包2的ip头相同,均为ip数据包中的ip头。在实际应用中,未经分片处理的初始ip数据包(即图1所示的ip数据包)包含ip头和ip数据,ip头中包括ip头信息,而紧跟着ip头的ip数据部分会包含端口信息。基于此,经过分片处理的ip数据包1中,在紧跟着ip头的ip数据1部分会包含端口信息。

本发明实施例中,ip头信息具体可以包括但不限于以下之一或者任意组合:序列号、源ip地址、目的ip地址、协议标识。端口信息具体可以包括但不限于以下之一或者任意组合:目的端口标识和/或源端口标识。

其中,依赖端口信息进行业务处理的业务类型可以为nat(networkaddresstranslation,网络地址转换)业务,包过滤业务等。网络设备2在进行业务处理时,可以根据ip头信息和端口信息进行业务处理。例如,针对nat业务,网络设备2可以基于源ip地址和源端口标识查询nat映射表,并将源ip地址和源端口标识修改为nat映射表中记录的ip地址和端口标识,该nat业务的处理过程不再详加赘述。针对包过滤业务,网络设备2可以基于源ip地址、目的ip地址、源端口标识、目的端口标识查询过滤表,以确定是否丢弃ip数据包,该包过滤业务的处理过程不再详加赘述。

步骤303,建立分片转发表项,并在该分片转发表项中记录ip数据包的ip头信息和端口信息,并利用端口信息对该ip数据包进行业务处理。

步骤304,将ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与该ip数据包进行对应,并利用该端口信息对ip数据包进行业务处理。

针对步骤303,网络设备2在接收到ip数据包1时,建立分片转发表项,并在该分片转发表项中记录ip数据包1中包括ip头信息和端口信息。此外,由于ip数据包1中已经包括端口信息,因此,网络设备2可以直接利用端口信息对ip数据包1进行nat业务处理、包过滤业务处理等过程。

针对步骤304,网络设备2在接收到ip数据包2时,由于ip数据包2中不包含端口信息,因此,网络设备2无法直接利用端口信息对ip数据包2进行nat业务处理、包过滤业务处理等过程。基于此,网络设备2先使用ip数据包 2的ip头信息对应的分片转发表项(即包含ip数据包1中的ip头信息和端口信息的分片转发表项),找到对应的端口信息(即ip数据包1中的端口信息),并将该端口信息与该ip数据包2进行对应,并利用该端口信息对ip数据包2进行业务处理。

本发明实施例中,针对步骤304,将ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与该ip数据包进行对应的过程,具体可以包括但不限于如下方式:利用该ip数据包的ip头信息查询分片转发表项。如果分片转发表项中已经存在该ip头信息对应的端口信息,则直接将该端口信息与该ip数据包进行对应。如果分片转发表项中不存在该ip头信息对应的端口信息,则先缓存该ip数据包,并等到分片转发表项中已经存在ip头信息对应的端口信息之后,则将该端口信息与缓存的ip数据包进行对应。

本发明实施例中,将端口信息与该ip数据包进行对应的过程,具体可以包括但不限于如下方式:方式一、在本地的数据结构中记录端口信息与该ip数据包之间的对应关系。或者,方式二、将端口信息添加到该ip数据包对应的内存区域中。

为了方便描述,后续以方式二为例进行说明。针对方式二,在实际应用中,针对每个收到的ip数据包,网络设备会在内存中划分出该ip数据包对应的内存区域,在此基础上,本发明实施例中,可以将端口信息添加到ip数据包对应的内存区域中,而在对ip数据包进行业务处理时,可以直接从该内存区域中得到该ip数据包对应的端口信息,继而利用该端口信息对ip数据包进行业务处理。

假设网络设备2先接收到ip数据包1,后接收到ip数据包2。在接收到ip数据包2时,由于已经基于ip数据包1建立了分片转发表项,因此,可以查询到ip数据包2的ip头信息对应的分片转发表项,并将该分片转发表项中记录的端口信息添加到ip数据包2对应的内存区域,之后对ip数据包2进行业务处理。

假设网络设备2先接收到ip数据包2,后接收到ip数据包1。在接收到ip数据包2时,由于当前还没有基于ip数据包1建立分片转发表项,因此,无法 在ip数据包2对应的内存区域中添加端口信息,先缓存ip数据包2。在接收到ip数据包1,并基于ip数据包1建立分片转发表项之后,则可以查询到ip数据包2的ip头信息对应的分片转发表项,因此,可以将该分片转发表项中记录的端口信息添加到ip数据包2对应的内存区域,之后对ip数据包1和ip数据包2进行业务处理。

针对步骤303,网络设备2在对ip数据包1进行业务处理后,可以直接将ip数据包1发送给目的设备。针对步骤304,网络设备2在对ip数据包2进行业务处理后,可以直接将ip数据包2发送给目的设备。

基于上述技术方案,本发明实施例中,在接收到分片处理的ip数据包后,可以区分ip数据包的业务类型,针对依赖端口信息进行业务处理的业务类型,可以先等待首数据包,并基于首数据包的端口信息,将该端口信息与后续数据包进行对应,使得能够获得分片处理的所有ip数据包的端口信息,继而利用端口信息对各ip数据包进行业务处理。在满足业务处理需求的同时,不需要对所有ip数据包进行重组,尽可能减少ip数据包的缓存,提升系统整体处理效率和转发效率。

以下结合图4所示的流程图对上述ip数据包的处理方法进行详细说明。

步骤401,接收经过分片处理的ip数据包,确定ip数据包的业务类型。当业务类型为依赖端口信息进行业务处理的业务类型时,则执行步骤402;当业务类型为依赖内容信息进行业务处理的业务类型时,则执行步骤405;当业务类型为不用进行业务处理的业务类型时,则执行步骤408。

其中,依赖端口信息进行业务处理的业务类型,可以如nat业务,包过滤业务等。依赖内容信息(如tcp(transmissioncontrolprotocol,传输控制协议)端口、http(hypertexttransferprotocol,超文本传输协议)内容等)进行业务处理的业务类型,可以如dpi(deeppacketinspection,深度包检测)业务等。不用进行业务处理的业务类型,即ip数据包可以直接进行转发。

其中,当网络设备上没有配置依赖端口信息进行业务处理的业务类型的业务,且没有配置依赖内容信息进行业务处理的业务类型的业务时,则可以认 为是不用进行业务处理的业务类型,即ip数据包直接转发。

在实际应用中,假设ip数据包的业务类型同时为多个,则可以按照各业务类型的优先级选择ip数据包的业务类型。例如,当业务类型的优先级为:依赖内容信息进行业务处理的业务类型大于依赖端口信息进行业务处理的业务类型,且依赖端口信息进行业务处理的业务类型大于不用进行业务处理的业务类型时,当ip数据包的业务类型同时为依赖内容信息进行业务处理的业务类型和依赖端口信息进行业务处理的业务类型时,如对ip数据包进行nat业务和dpi业务,则选择ip数据包的业务类型为依赖内容信息进行业务处理的业务类型。

步骤402,当业务类型为依赖端口信息进行业务处理的业务类型时,判断该ip数据包是否为首数据包。如果是,执行步骤403;如果否,执行步骤404。

其中,ip数据包中还可以包含分片标记、分片偏移量等信息。分片标记表示当前ip数据包是经过分片处理的ip数据包。分片偏移量表示当前ip数据包是首数据包、或者第二个ip数据包、…、或者最后一个ip数据包等。基于分片偏移量,可以判断当前ip数据包是否为首数据包。

例如,首数据包的分片偏移量为0,如果首数据包的长度为100,则第二个ip数据包的分片偏移量为101,如果第二个ip数据包的长度为100,则第三个ip数据包的分片偏移量为201,以此类推。基于此,如果当前收到的ip数据包的分片偏移量是0,则确定当前ip数据包是首数据包,如果当前收到的ip数据包的分片偏移量不是0,则确定当前ip数据包不是首数据包。

步骤403,建立分片转发表项,并在该分片转发表项中记录ip数据包的ip头信息和端口信息,并利用端口信息对该ip数据包进行业务处理。

步骤404,将ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与该ip数据包进行对应,并利用该端口信息对ip数据包进行业务处理。

本发明实施例中,ip头信息具体可以包括但不限于以下之一或者任意组合:序列号、源ip地址、目的ip地址、协议标识。端口信息具体可以包括但不限于以下之一或者任意组合:目的端口标识和/或源端口标识。

本发明实施例中,针对步骤404,将ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与该ip数据包进行对应的过程,具体可以包括但不限于如下方式:利用该ip数据包的ip头信息查询分片转发表项。如果分片转发表项中已经存在该ip头信息对应的端口信息,则直接将该端口信息与该ip数据包进行对应。如果分片转发表项中不存在该ip头信息对应的端口信息,则先缓存该ip数据包,并等到分片转发表项中已经存在ip头信息对应的端口信息之后,则将该端口信息与缓存的ip数据包进行对应。

本发明实施例中,将端口信息与该ip数据包进行对应的过程,具体可以包括但不限于如下方式:方式一、在本地的数据结构中记录端口信息与该ip数据包之间的对应关系。或者,方式二、将端口信息添加到该ip数据包对应的内存区域中。

为了方便描述,后续以方式二为例进行说明。针对方式二,在实际应用中,针对每个收到的ip数据包,网络设备会在内存中划分出该ip数据包对应的内存区域,在此基础上,本发明实施例中,可以将端口信息添加到ip数据包对应的内存区域中,而在对ip数据包进行业务处理时,可以直接从该内存区域中得到该ip数据包对应的端口信息,继而利用该端口信息对ip数据包进行业务处理。

步骤402-步骤404的处理与步骤302-步骤304的处理类似,在此不再赘述。

基于步骤402-步骤404的技术方案,在接收到分片处理的ip数据包后,可以区分ip数据包的业务类型,针对依赖端口信息进行业务处理的业务类型,可以先等待首数据包,并基于首数据包的端口信息,将该端口信息与后续数据包进行对应,使得能够获得分片处理的所有ip数据包的端口信息,继而利用端口信息对各ip数据包进行业务处理。在满足业务处理需求的同时,不需要对所有ip数据包进行重组,尽可能减少ip数据包的缓存,提升系统整体处理效率和转发效率,尽可能快的转发ip数据包,缩短了时延。

步骤405,当业务类型为依赖内容信息进行业务处理的业务类型时,判断当前是否已存在ip数据包对应的所有分片ip数据包;如果否,执行步骤406; 如果是,执行步骤407。

在实际应用中,每个ip数据包中均会携带分片偏移量,且最后一个ip数据包中还会携带最后数据包的标记。基于各ip数据包的分片偏移量以及最后数据包的标记,可以判断出当前是否已存在所有分片ip数据包。

例如,假设已经收到携带最后数据包的标记的ip数据包,该ip数据包的分片偏移量为301,如果当前已经收到分片偏移量为0,数据包的长度为100的ip数据包,分片偏移量为101,数据包的长度为100的ip数据包,分片偏移量为201,数据包的长度为100的ip数据包,则这4个ip数据包正好组成一个完整的ip数据包,因此,判断出当前已存在所有分片ip数据包。

步骤406,缓存ip数据包,继续接收其它分片ip数据包。

步骤407,对ip数据包对应的所有分片ip数据包进行重组,并对重组后的ip数据包进行业务处理。

例如,网络设备2在先接收到ip数据包1时,由于还没有接收到ip数据包2,因此当前没有存在ip数据包1对应的所有分片ip数据包,缓存ip数据包1。网络设备2在接收到ip数据包2时,由于已经接收到ip数据包1,因此当前已经存在ip数据包2对应的所有分片ip数据包,对所有分片ip数据包(ip数据包1和ip数据包2)进行重组,得到重组后的ip数据包(即图1中的ip数据包),并对重组后的ip数据包进行业务处理。

其中,针对依赖内容信息进行业务处理的业务类型,例如,dpi业务,网络设备2在接收到ip数据包1或者ip数据包2时,由于ip数据包1或者ip数据包2均只包含部分ip数据,因此无法单独基于ip数据包1或者ip数据包2进行业务处理。在此基础上,需要将ip数据包1和ip数据包2重组成未经分片处理的ip数据包,并对重组后的ip数据包进行业务处理。

其中,在对ip数据包1和ip数据包2进行重组的过程中,可以根据ip数据包1中包含的源ip地址、目的ip地址、协议标识、分片标记、分片偏移量,ip数据包2中包含的源ip地址、目的ip地址、协议标识、分片标记、分片偏移量等信息,将对ip数据包1和ip数据包2进行重组后生成的ip数据包与未经 分片处理的ip数据包内容相同。

针对步骤407,网络设备2在对重组后的ip数据包进行业务处理后,可以直接将重组后的ip数据包发送给目的设备,或者,网络设备2也可以根据mtu对重组后的ip数据包进行合理的分片,将重组后的ip数据包分成ip数据包1和ip数据包2,并分别将ip数据包1和ip数据包2发送给目的设备。

步骤408,当业务类型为不用进行业务处理的业务类型时,则利用ip数据包的ip头信息转发ip数据包。其中,该ip头信息具体可以包括但不限于以下之一或者任意组合:序列号、源ip地址、目的ip地址、协议标识。

例如,网络设备2在接收到ip数据包1之后,可以利用ip数据包1中携带的序列号、源ip地址、目的ip地址、协议标识,将ip数据包1发送给目的设备。网络设备2在接收到ip数据包2之后,可以利用ip数据包2中携带的源ip地址、目的ip地址、协议标识,将ip数据包2发送给目的设备。

基于与上述方法同样的发明构思,本发明实施例中还提供了一种ip数据包的处理装置,该ip数据包的处理装置可以应用在网络设备上。其中,该ip数据包的处理装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的网络设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图5所示,为本发明提出的ip数据包的处理装置所在的网络设备的一种硬件结构图,除了图5所示的处理器、非易失性存储器外,网络设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该网络设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。

如图6所示,为本发明提出的ip数据包的处理装置的结构图,所述装置具体包括:确定模块11,用于接收经过分片处理的ip数据包,并确定所述ip数据包的业务类型;判断模块12,用于当所述业务类型为依赖端口信息进行业务处理的业务类型时,判断所述ip数据包是否为首数据包;处理模块13,用于当判断结果为是时,则建立分片转发表项,并在所述分片转发表项中记录所述ip 数据包的ip头信息和端口信息,并利用所述端口信息对所述ip数据包进行业务处理;当判断结果为否时,则将所述ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与所述ip数据包进行对应,并利用所述端口信息对所述ip数据包进行业务处理。

所述处理模块13,具体用于在将所述ip数据包的ip头信息对应的分片转发表项中记录的端口信息,与所述ip数据包进行对应的过程中,利用所述ip数据包的ip头信息查询分片转发表项;如果所述分片转发表项中存在所述ip头信息对应的端口信息,则将所述端口信息与所述ip数据包进行对应;如果所述分片转发表项中不存在所述ip头信息对应的端口信息,则缓存所述ip数据包,并在分片转发表项中存在所述ip头信息对应的端口信息后,将所述端口信息与缓存的ip数据包进行对应。

所述判断模块12,还用于当所述业务类型为依赖内容信息进行业务处理的业务类型时,则判断当前是否已经存在所述ip数据包对应的所有分片ip数据包;

所述处理模块13,还用于当判断结果为否时,则缓存所述ip数据包,继续接收其它分片ip数据包;当判断结果为是时,则对所述ip数据包对应的所有分片ip数据包进行重组,并对重组后的ip数据包进行业务处理。

所述处理模块13,还用于当所述业务类型为不用进行业务处理的业务类型时,则利用所述ip数据包的ip头信息转发所述ip数据包。

本发明实施例中,所述ip头信息具体包括以下之一或者任意组合:序列号、源ip地址、目的ip地址、协议标识;所述端口信息具体包括:目的端口标识和/或源端口标识。

其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机 软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1