数据包的转发方法、装置及网络设备与流程

文档序号:28168225发布日期:2021-12-24 23:02阅读:239来源:国知局
数据包的转发方法、装置及网络设备与流程

1.本技术涉及通信技术领域,尤其是涉及一种数据包的转发方法、装置及网络设备。


背景技术:

2.目前,对于通信链路的品质,可以通过链路的质量参数进行判断,并在判断出当前使用的通信链路存在网络质量不佳的情况下能够进行网络切换,以便于保证链路的通常。
3.但是,在有些情况下,是难以获取到链路的质量参数的,例如,在网络完全不通时,则无法统计网络的延迟数据。因此,在遇到网络完全不通的时候,就难以做到一个完美的网络分配,导致网络不顺畅,降低了用户的体验度。


技术实现要素:

4.有鉴于此,本技术提供一种数据包的转发方法、装置及网络设备,以缓解上述技术问题。
5.第一方面,本技术实施例提供了一种数据包的转发方法,应用于网络设备,该方法包括:获取所述网络设备接收的网络封包,判断所述网络封包是否为异常封包;如果是,为所述异常封包设置异常标识;在预设的路由表中查找与所述异常标识对应的路由信息,根据查找到的所述路由信息对所述网络封包进行转发。
6.在本技术的一种实施方式中,上述网络设备配置有防火墙架构,所述防火墙架构包括多个检测节点,每个所述检测节点注册有预设的回调函数,多个所述检测节点依次连接,以组成所述网络封包的传播链路。
7.在本技术的一种实施方式中,上述判断所述网络封包是否为异常封包的步骤包括:提取所述网络封包的封包信息;其中,所述封包信息包括以下至少之一:协议类型和身份id;根据所述封包信息判断所述网络封包是否为异常封包。
8.在本技术的一种实施方式中,上述根据所述封包信息判断所述网络封包是否为异常封包的步骤包括:如果所述网络封包的协议类型为icmp封包,获取所述icmp封包的类别标识;判断所述类别标识是否为预设的异常标识;如果是,确定所述网络封包为异常封包。
9.在本技术的一种实施方式中,上述根据所述封包信息判断所述网络封包是否为异常封包的步骤包括:如果所述网络封包的协议类型为dns封包,获取所述dns封包的dns代码;判断所述dns代码是否为预设的异常代码;如果是,确定所述网络封包为异常封包。
10.在本技术的一种实施方式中,上述根据所述封包信息判断所述网络封包是否为异常封包的步骤包括:如果所述网络封包的身份id为游戏封包,判断接收所述游戏封包的时间间隔是否大于预设的时间间隔;如果是,确定所述网络封包为异常封包。
11.在本技术的一种实施方式中,上述根据查找到的所述路由信息对所述网络封包进行转发的步骤包括:根据查找到的所述路由信息将所述网络设备当前使用的第一网络切换至备用的第二网络;通过所述第二网络按照所述路由信息对所述网络封包进行转发。
12.在本技术的一种实施方式中,上述方法还包括:将所述网络设备当前使用的第一
网络切换至备用的第二网络之后,记录通过所述第二网络转发的所述网络封包的数量;如果所述第二网络转发的所述网络封包的数量超过预设的数量阈值,将所述第二网络切换至所述第一网络。
13.第二方面,本技术实施例提供了一种数据包的转发装置,应用于网络设备,该装置包括:判断模块,用于获取所述网络设备接收的网络封包,判断所述网络封包是否为异常封包;设置模块,用于所述判断模块的判断结果为是时,为所述异常封包设置异常标识;转发模块,用于在预设的路由表中查找与所述异常标识对应的路由信息,根据查找到的所述路由信息对所述网络封包进行转发。
14.第三方面,本技术实施例提供了一种网络设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
15.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面所述的方法。
16.本技术实施例提供的数据包的转发方法、装置及网络设备,能够获取到网络设备接收的网络封包,并在判断出网络封包为异常封包时,为异常封包设置异常标识;进而在预设的路由表中查找与该异常标识对应的路由信息,根据查找到的路由信息对网络封包进行转发,仍然能够对网络封包进行转发,进而保证网络的顺畅,提高用户的体验度。
17.为使本技术的实施方案更明显易懂,下文以各个实施例,并配合所附附图,作详细说明如下。
附图说明
18.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例提供的一种数据包的转发方法的流程图;
20.图2为本技术实施例提供的一种防火墙架构的示意图;
21.图3为本技术实施例提供的另一种数据包的转发方法的流程图;
22.图4为本技术实施例提供的一种数据包的转发装置的结构示意图;
23.图5为本技术实施例提供的一种网络设备的结构示意图。
具体实施方式
24.为使本技术实施例的技术方案更加清楚,下面将结合附图对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
25.目前,现有技术中,多通过链路的质量参数来判断该链路的品质,例如,针对应用的延迟做一个判断等等。但是有些情况是无法判断延迟性的,如在网络完全不通时,是无法
针对tcp(transmission control protocol,传输控制协议)交互来统计延迟数据,因此在遇到网络完全不通的时候,就无法做到一个完美的网络分配。
26.此外,还有的方案是针对tcp本身就有统计每个tcp流的rtt(round trip time,往返传输时间)时间,通过统计这些rtt时间,也可以判断出当前的网络质量,rtt越高代表该网络质量越差。但是这种方式也具有一定的局限性,例如,在当前手游盛行的时代,由于大多数的手游实现方式都是使用udp(user datagram protocol,用户数据报协议)的协议去实现,使得统计rtt时间的技术仅限于侦测tcp类型的封包,并无法针对udp类型的封包做判断,这是因为udp协议不具备所谓的rtt时间,因此,对于udp协议的情形,则难以通过统计rtt时间的方式来判断链路的品质。
27.基于此,本技术实施例提供的一种数据包的转发方法、装置及网络设备,可以有效缓解上述技术问题。
28.为便于对本实施例进行理解,首先对本技术实施例所公开的一种数据包的转发方法进行详细介绍。
29.具体地,本技术实施例提供了一种数据包的转发方法,该方法应用于网络设备,如图1所示的一种数据包的转发方法的流程图,该方法包括:
30.步骤s102,获取网络设备接收的网络封包,判断该网络封包是否为异常封包;
31.步骤s104,如果是,为异常封包设置异常标识;
32.具体地,本技术实施例中的网络封包,指的是在网络中用指定的协议传输的数据包,如,icmp(internet control message protocol,internet控制报文协议)封包、dns(域名系统服务协议,domain name system)封包、游戏封包等等,这些封包在网络链路中传输时都遵循一定的网络协议,并携带相应的封包信息,如,协议类型、身份标识、ip地址等等,上述步骤s102中的异常封包的判断过程,则可以根据相应的封包信息实现,进而判断出是否为异常封包,并在判断出为异常封包的情况下,继续执行下述步骤s106,对异常封包进行转发。
33.步骤s106,在预设的路由表中查找与异常标识对应的路由信息,根据查找到的路由信息对网络封包进行转发。
34.具体地,该预设的路由表,通常是预先存储在网络设备中的路由表,包括异常标识,以及,与异常标识对应的路由信息,以便于在查找到相应的路由信息时,能够根据查找到的路由信息确定出该异常封包的下一跳,以便于进行异常封包的转发。
35.本技术实施例提供的数据包的转发方法,能够获取到网络设备接收的网络封包,并在判断出网络封包为异常封包时,为异常封包设置异常标识;进而在预设的路由表中查找与该异常标识对应的路由信息,根据查找到的路由信息对网络封包进行转发,上述为异常封包查找路由信息的方式,能够在网络封包出现异常时,仍然能够对网络封包进行转发,进而保证网络的顺畅,提高用户的体验度。
36.在实际使用时,上述网络设备通常包括连接到网络中的物理实体设备,如交换机、网桥、路由器、网关等等,并且,为了给用户提供安全的网络使用环境,网络设备通常配置有防火墙架构,而防火墙架构一般包括多个检测节点,每个检测节点还注册有预设的回调函数,多个检测节点依次连接,以组成网络封包的传播链路。
37.为了便于理解,图2示出了一种防火墙架构的示意图,具体地,本技术实施例中以
该防火墙架构为linux kernel netfilter防火墙架构为例进行说明,该防火墙架构相当于是一个过滤器架构,能够对接收到的网络封包进行分析处理,具体地,该防火墙架构是基于netfilter防火墙技术实现的,可以在内核kernel端实现所有封包的进出。具体实现时,该防火墙架构在网络封包的收发及路由的链路上,可以有多个节点,本技术实施例中的检测节点,则是多个节点中的部分或者全部的节点,以实现本技术实施例提供的数据包的转发方法。
38.在实际使用时,该netfilter防火墙通常是linux操作系统核心层内部的一个数据包处理模块,通常具有如下功能:网络地址转换、数据包内容修改,以及数据包过滤等等,而上述节点也称为挂载点,或者,回调函数点,以便于挂载注册的回调函数,当网络封包到达这些位置的时候,可以主动调用回头调数,以便于能在网络封包路由的时候改变路由方向。具体地,如图2所示,linux kernel netfilter防火墙架构的节点包括pre_routing、local_in、local_out、forward、post_routing等,而本技术实施例中,判断网络封包的异常,以及,对网络封包的转发过程,都是基于这些节点实现的。因此,在图1和图2的基础上,图3还示出了另一种数据包的转发方法的流程图,对本技术实施例的数据转发过程进行进一步的说明,如图3所示,包括以下步骤:
39.步骤s302,获取网络设备接收的网络封包;
40.具体地,基于图2所示的防火墙架构,网络封包可以在二层处理模块进入到该网络设备,然后按照箭头所指的方向沿着传播链路传输到下一个节点,以进一步执行后面的步骤。
41.步骤s304,提取网络封包的封包信息;其中,封包信息包括以下至少之一:协议类型和身份id;
42.步骤s306,根据封包信息判断该网络封包是否为异常封包;
43.步骤s308,如果是,为异常封包设置异常标识;
44.在实际使用时,考虑到网络封包的协议类型可以有多种,因此,对于不同协议类型的网络封包,在判断是否为异常封包时,其判断过程也有一定的区别,具体地,如果网络封包的协议类型为icmp封包,则在提取到封包信息之后,可以获取该icmp封包的类别标识;然后判断该类别标识是否为预设的异常标识;如果是,则确定网络封包为异常封包。
45.进一步,为了便于判断该icmp封包是否为异常封包,网络设备中一般预先存储有icmp封包的类别标识的对照表,以便于在提取到网络封包的封包信息时,通过查询的方式判断该类别标识是否为异常标识,进而确定出icmp封包是否为异常封包。
46.为了便于理解,表1示出了一种icmp封包的类别标识的对照表,如表1所示:
47.[0048][0049]
其中,上述表1中,第一列的message type为类别标识,第二列为对应的icmp讯息功能,通常,如果步骤s304中提取到的icmp封包的类别标识为第一列中的类别标识,则可以确定该icmp封包为异常封包,然后继续执行步骤s308,为异常封包设置异常标识,如果步骤s304中提取到的icmp封包的类别标识并不是表1中第一列中的任何一个类别标识,则说明该icmp封包为正常的网络封包,则按照图2所示的传播链路正常转发即可,此时防火墙架构的各个节点按照常规的处理方式对网络封包进行处理和转发。
[0050]
应当理解,表1示出的仅仅是一种可行的icmp封包的类别标识的对照表,在其他实施方式中,该对照表的内容可以根据实际使用情况进行设置,如类别标识还可以有其他的标识,或者去掉一些已停用的标识等等,具体根据实际使用情况进行设置,本技术实施例对此不进行限制。
[0051]
在实际使用时,基于图2所示的防火墙架构,上述对icmp封包的处理过程可以在pre_routing节点实现,此时pre_routing节点作为本技术实施例的一个检测节点,可以对icmp封包的类别标识进行检测,进而确定该icmp封包是否为异常封包。
[0052]
进一步,如果上述网络封包的协议类型为dns封包,则获取dns封包的dns代码;并判断该dns代码是否为预设的异常代码;如果是,则确定该网络封包为异常封包。
[0053]
具体实现时,上述网络设备也会预先存储dns封包的异常代码表当通过封包信息的协议类型判断出该网络封包为dns封包时,则可以进一步获取该dns封包的dns代码,并通过查询异常代码表来确定该dns封包是否为异常封包。
[0054]
进一步,上述dns代码通常指dns封包中的rcode,上述对dns封包的处理过程,也可以在图2所示的防火墙架构的pre_routing节点实现,此时pre_routing节点仍然是本技术
实施例的一个检测节点,可以对dns封包的dns代码进行检测,进而确定该dns封包是否为异常封包。
[0055]
此外,本技术实施例提供的数据包的转发方法,还可以对游戏封包进行处理,具体地,如果上述网络封包的身份id为游戏封包,则判断接收该游戏封包的时间间隔是否大于预设的时间间隔;如果是,则确定网络封包为异常封包。
[0056]
具体地,以手游的游戏封包为例,现在的手游本身大多数也具备侦测网络等待时间的功能,主要是透过常见的几种方式来侦测,如,建立特殊的udp端口来专门定时收送游戏封包、或者定时发送固定大小的游戏封包等等。而本技术实施例则利用linux kernel netfilter防火墙架构,在kernel端监控所有游戏封包的进出,因此,本技术实施例中,可以通过上述步骤s304~步骤s306,在kernel端通过判断身份id来判断出哪些网络封包为手游应用的游戏封包,具体地,可以通过每款游戏的特殊定时监测行为来判断出当前网络是否异常,如,通过特殊定时监测行为来判断接收该游戏封包的时间间隔是否大于预设的时间间隔等等。若大于预设的时间间隔,则说明网络异常,此时接收的网络封包为异常封包,此时,可以将接下来的网络封包,打上不同的mark值,透过匹配不同的mark值,查询不同的路由表,使数据包可以走不同的接口访问网络。
[0057]
具体地,基于图2所示的防火墙架构,上述对游戏封包的处理过程,可以在图2中的local_in节点进行,网络封包通过图2中的数据包入口进入到网络设备之后,可以沿着传播链路经pre_routing节点传输至local_in节点,进而在该local_in节点判断接收游戏封包的时间间隔是否大于预设的时间间隔,如果是,则确定网络封包为异常封包。
[0058]
此外,对于游戏封包,还可以透过该游戏封包携带的封包信息判断游戏类型,由此来检测该游戏是否发送特殊的udp封包行为,若侦测到定时发送的行为,就可以藉由这样的行为来判断每个封包的间格时间是否规律。假如不规律,代表当时网络环境可能较差,导致封包丢失或者延迟。举例:a游戏应用,每3秒会发送一个长度为60的封包,所以我们在kernel端应该可以监控到每3秒会有一个长度为60的udp封包接收进来。若突然这个间格时间拉长了或者丢失了,我们就可以判断为网络质量差导致延迟,此时,则可以继续执行下述步骤s310,对游戏封包进行转发,来保持游戏体验。
[0059]
步骤s310,在预设的路由表中查找与异常标识对应的路由信息,根据查找到的路由信息对所述网络封包进行转发。
[0060]
具体地,该步骤中,根据查找到的路由信息对网络封包进行转发的步骤包括:根据查找到的路由信息将网络设备当前使用的第一网络切换至备用的第二网络;通过第二网络按照路由信息对网络封包进行转发。
[0061]
在实际使用时,上述在第一网络和第二网络可以是无线wifi网络和电信数据网络,因此,第一网络切换至备用的第二网络,可以是无线wifi网络切换至电信数据网络。上述在第一网络和第二网络还可以是5g电信数据网络和4g电信数据网络,因此,第一网络切换至备用的第二网络,可以是无线5g电信数据网络切换至4g电信数据网络。
[0062]
进一步,将网络设备当前使用的第一网络切换至备用的第二网络之后,还可以继续记录通过第二网络转发的网络封包的数量;如果第二网络转发的网络封包的数量超过预设的数量阈值,还可以进一步将第二网络切换至第一网络,即,实现无线wifi网络和电信数据网络之间进行切换,或实现5g电信数据网络和4g电信数据网络之间进行切换。
[0063]
在实际使用时,上述切换过程相当是退场机制,以免网络切换到第二个网络后,就无法返回第一个网络接口做传送,具体实现时,可以在每10个或20个封包/dns query/传送中,自动切回的一个接口尝试做传送。若第一个接口有正常交互,则可以将之后的网络封包切回第一网络进行发送。若第一网络依旧异常,则继续保持使用第二网络接口发送网络封包,以此来保持网络发送正常。
[0064]
进一步,在上述实施例的基础上,本技术实施例还提供了一种数据包的转发装置,应用于网络设备,如图4所示的一种数据包的转发装置的结构示意图,该装置包括:
[0065]
判断模块40,用于获取所述网络设备接收的网络封包,判断所述网络封包是否为异常封包;
[0066]
设置模块42,用于所述判断模块的判断结果为是时,为所述异常封包设置异常标识;
[0067]
转发模块44,用于在预设的路由表中查找与所述异常标识对应的路由信息,根据查找到的所述路由信息对所述网络封包进行转发。
[0068]
本技术实施例提供的数据包的转发装置,与上述实施例提供的数据包的转发方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
[0069]
进一步,本技术实施例还提供了一种网络设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,该处理器执行所述计算机程序时实现上述图1或图3所述的方法。
[0070]
进一步,本技术实施例还提供了一种网络设备的结构示意图,如图5所示,为该网络设备的结构示意图,其中,该网络设备包括处理器101和存储器100,该存储器100存储有能够被该处理器101执行的计算机可执行指令,该处理器101执行该计算机可执行指令以实现上述数据包的转发方法。
[0071]
在图5示出的实施方式中,该网络设备还包括总线102和通信接口103,其中,处理器101、通信接口103和存储器100通过总线102连接。
[0072]
其中,存储器100可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线102可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0073]
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或
者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器101读取存储器中的信息,结合其硬件完成前述实施例的数据包的转发方法的步骤。
[0074]
进一步,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述图1或图3所示的方法。
[0075]
本技术实施例所提供的数据包的转发方法、装置及网络设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0076]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的网络设备和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0077]
另外,在本技术实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。
[0078]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0079]
在本技术的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述,而不能理解为指示或暗示相对重要性。
[0080]
最后应说明的是:以上实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1