一种数据包处理方法及装置的制造方法

文档序号:8285313阅读:171来源:国知局
一种数据包处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种数据包处理方法及装置。
【背景技术】
[0002]随着计算机技术的发展,中央处理器(Central Processing Unit,CPU)的发展进入了多核时代,服务器上也越来越地使用多核CPU来处理从大量的传输控制协议(Transmiss1n Control Protocol, TCP)连接上发来的数据包。
[0003]在现有技术中,网络设备可与其它设备建立TCP长连接,当该网络设备从TCP长连接上接收到数据包后,会在网络层的路由缓存中查找该数据包的路由信息,若该网络设备即为该数据包的目的地,则将该数据包去掉互联网协议(Internet Protocol,IP)头后递交给传输层,在传输层查找该数据包对应的TCP长连接的连接状态信息,若查找到该TCP长连接的连接状态信息,则根据查找到的连接状态信息,通过该连接状态信息中包含的该TCP长连接的Socket,将该数据包中携带的应用层数据递交给应用层中相应的进程处理。
[0004]但是,由于CPU对从路由缓存中查找路由信息比较耗费时间,而且使用多核CPU的网络设备上一般建立有大量TCP长连接,每个TCP长连接都可能会持续收到多个数据包,因此,分别针对每个数据包从路由缓存中查找路由信息的处理方式降低了网络设备处理数据包的效率。

【发明内容】

[0005]本发明实施例提供一种数据包处理方法及装置,用以解决现有技术中分别针对每个数据包从路由缓存中查找路由信息的处理方式降低了网络设备处理数据包的效率。
[0006]本发明实施例提供的一种数据包处理方法,包括:
[0007]接收数据包;
[0008]查找与所述数据包对应的连接状态信息;
[0009]判断查找到的所述连接状态信息中是否保存有路由信息;
[0010]若是,则将所述连接状态信息中的路由信息写入所述数据包,并对写入所述路由信息的数据包进行后续处理;
[0011]否则,在路由缓存中查找所述数据包的路由信息,将查找到的路由信息写入所述数据包,对写入所述路由信息的数据包进行后续处理,并将查找到的路由信息保存在所述数据包对应的连接状态信息中。
[0012]本发明实施例提供的一种数据包处理装置,包括:
[0013]接收模块,用于接收数据包;
[0014]第一查找模块,用于查找与所述数据包对应的连接状态信息;
[0015]判断模块,用于判断所述第一查找模块查找到的所述连接状态信息中是否保存有路由信息;若是,则将所述连接状态信息中的路由信息写入所述数据包,并对写入所述路由信息的数据包进行后续处理;否则,在路由缓存中查找所述数据包的路由信息,将查找到的路由信息写入所述数据包,对写入所述路由信息的数据包进行后续处理,并将查找到的路由信息保存在所述数据包对应的连接状态信息中。
[0016]本发明实施例提供一种数据包处理方法及装置,该方法处理设备接收数据包,查找与所述数据包对应的连接状态信息,判断查找到的所述连接状态信息中是否保存有路由信息;若是,则将所述连接状态信息中的路由信息写入所述数据包,并对写入所述路由信息的数据包进行后续处理;否则,在路由缓存中查找所述数据包的路由信息,将查找到的路由信息写入所述数据包,对写入所述路由信息的数据包进行后续处理,并将查找到的路由信息保存在所述数据包对应的连接状态信息中。通过上述方法,由于针对网络设备上的每个连接,除了通过该连接接收的第一个数据包以外,对于通过该连接接收的其它数据包,网络设备在将该其它数据包递交给网络层之前,均将保存在该连接的连接状态信息中的该第一个数据包的路由信息确定为该其它数据包的路由信息,从而,在网络层,网络设备不用从路由缓存中查找该其它数据包的路由信息,因此,提高了网络设备处理数据包的效率。
【附图说明】
[0017]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]图1为本发明实施例提供的数据包处理过程;
[0019]图2A为本发明实施例提供的对应于TCP协议栈的数据包处理主要流程示意图;
[0020]图2B为现有技术中对应于TCP协议栈的数据包处理主要流程示意图;
[0021]图3为本发明实施例提供的数据包处理的详细流程;
[0022]图4为本发明实施例提供的数据包处理装置结构示意图。
【具体实施方式】
[0023]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0024]图1为本发明实施例提供的数据包处理过程,具体包括以下步骤:
[0025]SlOl:网络设备接收数据包。
[0026]在本发明实施例中,所述的网络设备可以为服务器或客户端。其中,所述的服务器包括但不限于:使用了多核CPU的服务器、使用了多个CPU的服务器等。所述的客户端包括但不限于:个人计算机(Personal Computer,PC)、手机、平板电脑等。网络设备之间可建立连接,连接建立后,网络设备则可基于建立的连接发送和接收数据包。具体的,网络设备接收到的数据包可以是携带有IP头的数据包,则后续网络设备可在其网络层基于IP协议处理该数据包。
[0027]步骤SlOl中,网络设备通过其网卡从已建立的连接上接收数据包,然后在数据链路层,网卡针对接收到的每个数据包,校验该数据包的帧头中携带的循环冗余校验码(Cyclic Redundancy Check,CRC),并校验帧头中携带的目的物理地址,若对帧头中携带的CRC校验通过,且帧头中携带的目的物理地址与网络设备的物理地址(也即,网络设备的网卡的物理地址)相同,则确定该数据包合法,可对其进行后续处理,否则,确定该数据包非法,可直接将其丢弃。
[0028]S102:网络设备查找与该数据包对应的连接状态信息。
[0029]在数据链路层,网络设备针对上述每个合法的数据包,会为该数据包在操作系统内核中构建一个相应的套接字缓冲区(sk_buff,SKB),并将该数据包封装在该SKB中。由于后续协议栈中要处理和递交的数据包均已封装在SKB中,因此,后续协议栈中的各层协议对数据包进行相应的处理和递交也可视为对封装有该数据包的SKB进行相应的处理和递交。本发明下面所述的数据包均是指封装在SKB中的数据包。
[0030]在本发明实施例中,网络设备在将数据包从数据链路层递交至网络层之前,可查找与该数据包对应的连接状态信息(也即,接收该数据包所基于的连接的连接状态信息),进而,尝试确定该数据包的路由信息。其中,所述的连接状态信息保存在传输层,连接状态信息可包含套接字(sock)信息等。其中,数据包的路由信息可表征该数据包由本地处理,或该数据包需转发给其它设备。
[0031]S103:网络设备判断查找到的该连接状态信息中是否保存有路由信息,若是,则执行步骤S104,否则,执行步骤S105。
[0032]S104:网络设备将该连接状态信息中的路由信息写入该数据包,并对写入该路由信息的数据包进行后续处理。
[0033]在本发明实施例中,若网络设备确定查找到的该连接状态信息中保存有路由信息,则网络设备将该连接状态信息中的路由信息写入该数据包中,此时,该数据包的路由信息即为写入该数据包的路由信息,从而网络设备可根据写入的路由信息,对写入该路由信息的数据包进行后续处理。
[0034]具体的,网络设备将写入该路由信息的数据包从数据链路层递交给网络层,网络层通过读取写入该路由信息的数据包的路由目的变量可判断出该数据包中已写入路由信息,因此,不必在路由缓存中去查找该数据包的路由信息,而是可以
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1