CN111224878A - 路由转发方法、装置、电子设备及存储介质 - Google Patents
路由转发方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111224878A CN111224878A CN201911414287.1A CN201911414287A CN111224878A CN 111224878 A CN111224878 A CN 111224878A CN 201911414287 A CN201911414287 A CN 201911414287A CN 111224878 A CN111224878 A CN 111224878A
- Authority
- CN
- China
- Prior art keywords
- data packet
- target
- information
- application
- communication information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004891 communication Methods 0.000 claims abstract description 102
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及通信技术领域,公开了一种路由转发方法,包括:接收数据流的数据包,获取所述数据包的通信信息;获取所述数据包对应的目的应用的应用信息;根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;通过所述目标路由标识对应的目标路由表项转发所述数据包。本发明还提出一种路由转发装置、电子设备以及一种计算机可读存储介质。本发明提供的路由转发方法、路由转发装置、电子设备以及计算机可读存储介质可以对数据包进行更精准的转发控制。
Description
技术领域
本发明实施例涉及通信技术领域,特别涉及一种路由转发方法、装置、电子设备及计算机可读存储介质。
背景技术
在用户访问网络资源时,通常需要对用户的访问数据包进行路由转发,在路由转发之前,需要进行路由匹配,以确定通过何种路由方式转发该数据包。发明人发现,随着移动互联网的发展,用户的访问需求越来越多样化,而目前在进行路由匹配进而进行路由转发时,往往只能根据源IP或目的IP进行路由匹配进而进行路由转发,无法对数据包进行更精细的转发控制。
发明内容
本发明实施方式的目的在于提供一种路由转发方法、装置、电子设备及计算机可读存储介质,可以对数据包进行更精准的转发控制。
为解决上述技术问题,本发明的实施方式提供了一种路由转发方法,所述方法包括:接收数据流的数据包,获取所述数据包的通信信息;获取所述数据包对应的目的应用的应用信息;根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;通过所述目标路由标识对应的目标路由表项转发所述数据包。
本发明的实施方式还提供了一种路由转发装置,所述装置包括:接收模块,用于接收数据流的数据包;第一获取模块,用于获取所述数据包的通信信息;第二获取模块,用于获取所述数据包对应的目的应用的应用信息;确定模块,用于根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;转发模块,用于通过所述目标路由标识对应的目标路由表项转发所述数据包。
本发明的实施方式还提供了一种电子设备,所述电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的路由转发方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述路由转发。
本发明实施方式相对于现有技术而言,其接收数据流的数据包,获取所述数据包的通信信息;获取所述数据包对应的目的应用的应用信息;根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;通过所述目标路由标识对应的目标路由表项转发所述数据包。由于通过数据包的通信信息和目的应用的应用信息来获取目标路由标识,因此,对于每个数据包可以不仅基于源IP或目的IP进行路由转发,还能针对不同通信信息和不同的应用选取不同的路由策略进而进行不同的路由转发,提高了数据包转发控制的精细度,实现了对数据包进行更精准的转发控制的目的。
进一步的,数据包对应的目标路由标识无需人工配置,避免了路由标识的匹配错误。
优选地,所述获取所述数据包的通信信息之前,所述方法还包括:判断所述数据包是否为所述数据流的首包;若所述数据包不为所述数据流的首包,从所述数据流的连接跟踪表中读取所述数据包对应的目标路由标识,通过所述目标路由标识对应的目标路由表项转发所述数据包;若所述数据包为所述数据流的首包,执行所述获取所述数据包的通信信息的操作。
优选地,所述通信信息包括源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项。
优选地,所述获取所述数据包对应的目的应用的应用信息包括:根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息,所述第一关系表用于对应保存由DPI分析至少一个数据包之后下发的通信信息和应用信息;若存在,从所述第一关系表中获取所述目标应用的应用信息。
优选地,所述根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息之前,所述方法还包括:判断所述数据流的连接跟踪表中是否存在所述数据包对应的目的应用的应用信息,其中,所述连接跟踪表用于保存由DPI分析至少一个数据包之后下发的应用信息,所述连接跟踪表存储信息的失效时间短于所述第一关系表存储信息的失效时间;若存在,从所述连接跟踪表获取所述数据包对应的目的应用的应用信息;若不存在,执行所述根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息的操作。
优选地,所述第一关系表为第一哈希表,所述第一哈希表以所述通信信息中的三元组信息进行哈希运算得到的值作为所述第一哈希表的key值,以所述三元组信息对应的应用信息作为所述第一哈希表的value值。
优选地,所述目标路由标识保存在第二哈希表中,所述第二哈希表以所述目标路由标识对应的目标网关IP进行哈希运算得到的值作为所述第二哈希表的key值,以所述目标路由标识作为所述第二哈希表的value值,所述目标路由标识对应的目标路由表项包含的网关IP为所述目标网关IP。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本发明第一实施例提供的一种路由转发方法的流程示意图;
图2为本发明第二实施例提供的一种路由转发方法的流程示意图;
图3为本发明第三实施例提供的一种路由转发方法的流程示意图;
图4为本发明第四实施例提供的一种路由转发方法的流程示意图;
图5为本发明第五实施例提供的一种路由转发装置的功能模块示意图;
图6为本发明第六实施例提供的电子设备的内部结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
下面对本实施方式的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
请参见图1,图1为第一实施例提供的路由转发方法的流程示意图。本实施例中路由转发方法包括:
S10,接收数据流的数据包。
在本实施例中,所述数据流是在网络中进行访问时产生的连续的数据包的集合。数据包是TCP/IP协议通信传输中的数据单位。
例如,当访问某搜索网站时,A终端向发送访问该搜索网站的访问请求,该访问请求以数据包的形式在网络间传送。
S20,获取所述数据包的通信信息。
本实施例中,所述数据包的通信信息可以直接直接通过解析数据包的内容获取。
本实施例中,数据包的通信信息可以包括源IP地址、源端口、传输协议等信息。
进一步的,在本发明一实施例中,所述通信信息包括源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项。
例如,数据包的通信信息包括目的IP地址(dip)、目的端口(dport)、传输层协议;或者,数据包的通信信息包括源IP地址(sip)、源端口(sport)、目的IP地址(dip)、目的端口(dport)、传输层协议(proto)。
S30,获取所述数据包对应的目的应用的应用信息。
本实施例中,可以根据源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项获取数据包对应的目的应用的应用信息。
其中,数据包对应的目的应用是指通过该数据包要访问的应用。目的应用的应用信息可以是应用的名称、应用的版本号、应用的类型等信息。
进一步的,在本发明一实施例中,目的应用的应用信息为目的应用的应用标识(appid)。
在本发明实施例中,可以通过DPI分析工具对数据包进行分析从而获取数据包对应的目的应用的应用信息。
进一步的,在本发明第二实施例中,参阅图2所示,所述获取所述数据包对应的目的应用的应用信息包括:
S33,根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息,所述第一关系表用于对应保存由DPI分析至少一个数据包之后下发的通信信息和应用信息;
S34,若存在,从所述第一关系表中获取所述目标应用的应用信息。
本实施例中,当没有获取到目标应用的应用信息时,表示不存在目标应用对应的策略路由,可以仅通过常规路由的方式进行转发。
在本实施例中,在Linux内核的子系统netfilter框架的转发(FORWARD)流程中添加hook接口,将每条数据流的至少一个数据包(例如每条流数据流的5个数据包)从Linux的内核到Linux的用户空间进行DPI分析,通过DPI分析得到数据包的通信信息以及数据包对应的目的应用的应用信息,并下发至Linux内核,在Linux内核中将该应用信息和通信信息对应保存在第一关系表中。
当DPI分析之后接收到数据包时,可以直接从第一关系表中获取通信信息对应的应用信息。
通过本实施例,可以在接收到数据包之后,快速地获取到数据包对应的目的应用的应用信息,进而有利于提高路由匹配和转发的速度。
进一步的,在本发明一实施例中,所述第一关系表为第一哈希表,所述第一哈希表以所述通信信息中的三元组信息进行哈希运算得到的值作为所述第一哈希表的key值,以所述三元组信息对应的应用信息作为所述第一哈希表的value值。
本实施例中,第一关系表为哈希(hash)表。哈希表,又称散列表,是根据关键码值(key value)而直接进行访问的数据结构。
进一步的,三元组信息包括目的IP地址(dip)、目的端口(dport)、传输层协议(proto)。
本实施例中,第一关系表为哈希表,通过哈希表可以快速的进行数据访问和数据存储。
进一步的,在本发明第三实施例中,参阅图3所示,所述S34根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息之前,所述方法还包括:
S31,判断所述数据流的连接跟踪表中是否存在所述数据包对应的目的应用的应用信息,其中,所述连接跟踪表用于保存由DPI分析至少一个数据包之后下发的应用信息,所述连接跟踪表存储信息的失效时间短于所述第一关系表存储信息的失效时间;
S32,若存在,从所述连接跟踪表获取所述数据包对应的目的应用的应用信息;
若不存在,执行所述S33根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息。
本实施例中,连接跟踪表又称为connrack,当接收到一个数据流时,新建一个连接跟踪表。
在本实施例中,当接收到数据流的至少一个数据包时,数据包都从Linux的内核态发送至Linux的用户态进行DPI分析,通过DPI分析得到数据包对应的目的应用的应用信息之后,将该应用信息保存在连接跟踪表中,则在接收到该数据流的每个数据包时,直接从连接跟踪表中查找该数据包对应的目的应用的应用信息。
通过本实施例,可以在接收到数据包之后,直接从连接跟踪表中获取到目的应用的应用信息,可以快速地获取到数据包对应的目的应用的应用信息,进而有利于提高路由匹配和转发的速度。
在本实施例中,连接跟踪表存储信息的失效时间短于第一关系表存储信息的失效时间。
例如,当用户打开应用访问某搜索网站时,新建连接跟踪表,此时,通过DPI可以基于连续的数据包进行分析,并在下发应用信息至linux内核之后,存储在连接跟踪表以及第一关系表中,当用户关闭应用之后,连接跟踪表随即销毁,但第一关系表中由于缓存信息的时间更长,此时仍能通过第一关系表获取到目的应用的应用信息。
S40,根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的。
在本实施例中,路由标识即mark。由于目标路由标识是预先根据目标应用的应用信息和数据包的通信信息生成的,因此,存在应用信息、数据包的通信信息于路由标识的对应关系,根据应用信息和数据包的通信信息查找该对应关系可以获取到数据包对应的目标路由标识。
通过本实施例,可以对每次同样的源访问方访问同一应用时,匹配同样的目的路由标识,进而通过同样的路由方式进行转发,即避免了路由转发出现错误也提高了路由转发速度。
进一步的,在本发明一实施例中,所述目标路由标识保存在第二哈希表中,所述第二哈希表以所述目标路由标识对应的目标网关IP进行哈希运算得到的值作为所述第二哈希表的key值,以所述目标路由标识作为所述第二哈希表的value值。
在本实施例中,存在目标路由标识与目标网关IP的对应关系。
本实施例中,目标路由标识保存在哈希表中,在该哈希表中,key值是由网关IP进行哈希运算得到的,value值是路由标识,则不同的网关IP可以唯一对应一个路由标识。
在本实施例中,路由标识可以根据网关IP对应自动生成,并存储在哈希表中,无需用户手动配置路由标识,提高了路由标识生成效率,降低由于人工分配导致的错误率。
具体的,在写入时,可以通过”set_mark(hashKey)=set_mark_list_head()”写入网关IP(即下一跳IP地址)对应的路由标识。
S50,通过所述目标路由标识对应的目标路由表项转发所述数据包。
在本实施例中,可以预先下发策略路由匹配规则至Linux内核,在策略路由匹配规则中存在不同路由表项与不同路由标识的对应关系。
则在获取到目标路由标识之后,可以通过策略路由匹配规则获取到目标路由对应的目标路由表项,进而通过该路由表项转发数据包。
优选的,本实施例中目标路由标识对应的目标路由表项包含的网关IP为所述目标网关IP。
例如,A网关IP对应A mark,A mark以序列方式生成并保存在A网关IP进行哈希运算得到的地址中,在路由策略匹配库中与A mark匹配的路由表项包含的网关IP为A网关IP,则A网关IP对应的路由标识通过A网关IP地址进行转发。
在本实施例中,由于目标路由标识是根据与目标网IP对应关系生成并保存的,在匹配之后,又根据目标路由标识匹配到的目标路由表项中目标网关IP进行路由转发,则可以在生成目标路由标识或者进行路由转发时对目标路由标识是否与目标网关IP对应进行校验,避免了路由标识使用出错。
进一步的,在本发明第四实施例中,参阅图4所示,所述S20获取所述数据包的通信信息之前,所述方法还包括:
S11,判断所述数据包是否为所述数据流的首包;
S12,若所述数据包不为所述数据流的首包,从所述数据流的连接跟踪表中读取所述数据包对应的目标路由标识,通过所述目标路由标识对应的目标路由表项转发所述数据包;
若所述数据包为所述数据流的首包,执行所述S20获取所述数据包的通信信息的操作。
在本实施例中,当接收到数据包之后,对数据包是否为数据流的首包进行判断,即判断接收到的数据包是否为该数据流的第一个数据包,当不为第一个数据包时,直接查找连接跟踪表。
在本实施例中,当接收到数据流的数据包之后,新建连接跟踪表,并在连接跟踪表中进行首包标识,从而再接收到数据包时,可以判断各个数据包是否为首包。
在本实施例中,当对数据包匹配了目标路由标识之后,在连接跟踪表中保存该数据流的数据包的目标路由标识。
在本实施例中,同一个数据流中已经确定了目标路由标识之后,无需再匹配查找目标路由标识,直接从连接跟踪表中读取目标路由标识,提高了准确获取数据包对应的目标路由表项的速度,进而提高了对该数据包的转发速度。
本发明实施例中,接收数据流的数据包,获取所述数据包的通信信息;获取所述数据包对应的目的应用的应用信息;根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;通过所述目标路由标识对应的目标路由表项转发所述数据包。由于通过数据包的通信信息和目的应用的应用信息来获取目标路由标识,因此,对于每个数据包可以不仅基于源IP或目的IP进行路由转发,还能针对不同通信信息和不同的应用选取不同的路由策略进而进行不同的路由转发,提高了数据包转发控制的精细度,实现了对数据包进行更精准的转发控制的目的。
请参考图5,图5为本发明第五实施例提供的路由转发装置的结构示意图。本实施方式中的路由转发装置包括:
接收模块510,用于接收数据流的数据包。
在本实施例中,所述数据流是在网络中进行访问时产生的连续的数据包的集合。数据包是TCP/IP协议通信传输中的数据单位。
例如,当访问某搜索网站时,A终端向发送访问该搜索网站的访问请求,该访问请求以数据包的形式在网络间传送。
第一获取模块520,用于获取所述数据包的通信信息。
本实施例中,所述数据包的通信信息可以直接直接通过解析数据包的内容获取。
本实施例中,数据包的通信信息可以包括源IP地址、源端口、传输协议等信息。
进一步的,在本发明一实施例中,所述通信信息包括源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项。
例如,数据包的通信信息包括目的IP地址(dip)、目的端口(dport)、传输层协议;或者,数据包的通信信息包括源IP地址(sip)、源端口(sport)、目的IP地址(dip)、目的端口(dport)、传输层协议(proto)。
第二获取模块530,用于获取所述数据包对应的目的应用的应用信息。
本实施例中,可以根据源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项获取数据包对应的目的应用的应用信息。
其中,数据包对应的目的应用是指通过该数据包要访问的应用。目的应用的应用信息可以是应用的名称、应用的版本号、应用的类型等信息。
进一步的,在本发明一实施例中,目的应用的应用信息为目的应用的应用标识(appid)。
在本发明实施例中,可以通过DPI分析工具对数据包进行分析从而获取数据包对应的目的应用的应用信息。
进一步的,在本发明另一实施例中,继续参阅图5所示,所述第二获取模块530包括:
第一判断单元531,用于根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息,所述第一关系表用于对应保存由DPI分析至少一个数据包之后下发的通信信息和应用信息;
第一获取单元532,若存在,从所述第一关系表中获取所述目标应用的应用信息。
本实施例中,当没有获取到目标应用的应用信息时,表示不存在目标应用对应的策略路由,可以仅通过常规路由的方式进行转发。
在本实施例中,在Linux内核的子系统netfilter框架的转发(FORWARD)流程中添加hook接口,将每条数据流的至少一个数据包(例如每条流数据流的5个数据包)从Linux的内核到Linux的用户空间进行DPI分析,通过DPI分析得到数据包的通信信息以及数据包对应的目的应用的应用信息,并下发至Linux内核,在Linux内核中将该应用信息和通信信息对应保存在第一关系表中。
当DPI分析之后接收到数据包时,可以直接从第一关系表中获取通信信息对应的应用信息。
通过本实施例,可以在接收到数据包之后,快速地获取到数据包对应的目的应用的应用信息,进而有利于提高路由匹配和转发的速度。
进一步的,在本发明一实施例中,所述第一关系表为第一哈希表,所述第一哈希表以所述通信信息中的三元组信息进行哈希运算得到的值作为所述第一哈希表的key值,以所述三元组信息对应的应用信息作为所述第一哈希表的value值。
本实施例中,第一关系表为哈希(hash)表。哈希表,又称散列表,是根据关键码值(key value)而直接进行访问的数据结构。
进一步的,三元组信息包括目的IP地址(dip)、目的端口(dport)、传输层协议(proto)。
本实施例中,第一关系表为哈希表,通过哈希表可以快速的进行数据访问和数据存储。
进一步的,在本发明另一实施例中,继续参阅图5所示,所述第二获取模块530还包括:
第二判断单元533,用于根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息之前,判断所述数据流的连接跟踪表中是否存在所述数据包对应的目的应用的应用信息,其中,所述连接跟踪表用于保存由DPI分析至少一个数据包之后下发的应用信息,所述连接跟踪表存储信息的失效时间短于所述第一关系表存储信息的失效时间;
第二获取单元534,用于若存在,从所述连接跟踪表获取所述数据包对应的目的应用的应用信息;
触发单元535,用于若不存在,触发第一判断单元531根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息。
本实施例中,连接跟踪表又称为connrack,当接收到一个数据流时,新建一个连接跟踪表。
在本实施例中,当接收到数据流的至少一个数据包时,数据包都从Linux的内核态发送至Linux的用户态进行DPI分析,通过DPI分析得到数据包对应的目的应用的应用信息之后,将该应用信息保存在连接跟踪表中,则在接收到该数据流的每个数据包时,直接从连接跟踪表中查找该数据包对应的目的应用的应用信息。
通过本实施例,可以在接收到数据包之后,直接从连接跟踪表中获取到目的应用的应用信息,可以快速地获取到数据包对应的目的应用的应用信息,进而有利于提高路由匹配和转发的速度。
在本实施例中,连接跟踪表存储信息的失效时间短于第一关系表存储信息的失效时间。
例如,当用户打开应用访问某搜索网站时,新建连接跟踪表,此时,通过DPI可以基于连续的数据包进行分析,并在下发应用信息至linux内核之后,存储在连接跟踪表以及第一关系表中,当用户关闭应用之后,连接跟踪表随即销毁,但第一关系表中由于缓存信息的时间更长,此时仍能通过第一关系表获取到目的应用的应用信息。
确定模块540,用于根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的。
在本实施例中,路由标识即mark。由于目标路由标识是预先根据目标应用的应用信息和数据包的通信信息生成的,因此,存在应用信息、数据包的通信信息于路由标识的对应关系,根据应用信息和数据包的通信信息查找该对应关系可以获取到数据包对应的目标路由标识。
通过本实施例,可以对每次同样的源访问方访问同一应用时,匹配同样的目的路由标识,进而通过同样的路由方式进行转发,即避免了路由转发出现错误也提高了路由转发速度。
进一步的,在本发明一实施例中,所述目标路由标识保存在第二哈希表中,所述第二哈希表以所述目标路由标识对应的目标网关IP进行哈希运算得到的值作为所述第二哈希表的key值,以所述目标路由标识作为所述第二哈希表的value值。
在本实施例中,存在目标路由标识与目标网关IP的对应关系。
本实施例中,目标路由标识保存在哈希表中,在该哈希表中,key值是由网关IP进行哈希运算得到的,value值是路由标识,则不同的网关IP可以唯一对应一个路由标识。
在本实施例中,路由标识可以根据网关IP对应自动生成,并存储在哈希表中,无需用户手动配置路由标识,提高了路由标识生成效率,降低由于人工分配导致的错误率。
具体的,在写入时,可以通过”set_mark(hashKey)=set_mark_list_head()”写入网关IP(即下一跳IP地址)对应的路由标识。
转发模块550,用于通过所述目标路由标识对应的目标路由表项转发所述数据包。
在本实施例中,可以预先下发策略路由匹配规则至Linux内核,在策略路由匹配规则中存在不同路由表项与不同路由标识的对应关系。
则在获取到目标路由标识之后,可以通过策略路由匹配规则获取到目标路由对应的目标路由表项,进而通过该路由表项转发数据包。
优选的,本实施例中目标路由标识对应的目标路由表项包含的网关IP为所述目标网关IP。
例如,A网关IP对应A mark,A mark以序列方式生成并保存在A网关IP进行哈希运算得到的地址中,在路由策略匹配库中与A mark匹配的路由表项包含的网关IP为A网关IP,则A网关IP对应的路由标识通过A网关IP地址进行转发。
在本实施例中,由于目标路由标识是根据与目标网IP对应关系生成并保存的,在匹配之后,又根据目标路由标识匹配到的目标路由表项中目标网关IP进行路由转发,则可以在生成目标路由标识或者进行路由转发时对目标路由标识是否与目标网关IP对应进行校验,避免了路由标识使用出错。
进一步的,在本发明另一实施例中,继续参阅图5所示,所述装置还包括:
判断模块560,用于获取所述数据包的通信信息之前,判断所述数据包是否为所述数据流的首包;
读取模块570,用于若所述数据包不为所述数据流的首包,从所述数据流的连接跟踪表中读取所述数据包对应的目标路由标识,通过所述目标路由标识对应的目标路由表项转发所述数据包;
触发模块580,用于若所述数据包为所述数据流的首包,触发获取模块520获取所述数据包的通信信息。
在本实施例中,当接收到数据包之后,对数据包是否为数据流的首包进行判断,即判断接收到的数据包是否为该数据流的第一个数据包,当不为第一个数据包时,直接查找连接跟踪表。
在本实施例中,当接收到数据流的数据包之后,新建连接跟踪表,并在连接跟踪表中进行首包标识,从而再接收到数据包时,可以判断各个数据包是否为首包。
在本实施例中,当对数据包匹配了目标路由标识之后,在连接跟踪表中保存该数据流的数据包的目标路由标识。
在本实施例中,同一个数据流中已经确定了目标路由标识之后,无需再匹配查找目标路由标识,直接从连接跟踪表中读取目标路由标识,提高了准确获取数据包对应的目标路由表项的速度,进而提高了对该数据包的转发速度。
本发明实施例中,接收接收数据流的数据包,获取所述数据包的通信信息;获取模块根据获取所述数据包对应的目的应用的应用信息;确定模块根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;转发模块通过所述目标路由标识对应的目标路由表项转发所述数据包。由于通过数据包的通信信息和目的应用的应用信息来获取目标路由标识,因此,对于每个数据包可以不仅基于源IP或目的IP进行路由转发,还能针对不同通信信息和不同的应用选取不同的路由策略进而进行不同的路由转发,提高了数据包转发控制的精细度,实现了对数据包进行更精准的转发控制的目的。
本发明第六实施例还提供一种电子设备。图6为本发明第六实施例提供的电子设备的内部结构示意图。
在本实施例中,所述电子设备6可以是PC(Personal Computer,个人电脑),或者是智能手机、平板电脑、便携计算机等终端设备,也可以是一种服务器等。该电子设备6至少包括存储器61、处理器62,通信总线63,以及网络接口64。
其中,存储器61至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器61在一些实施例中可以是电子设备6的内部存储单元,例如该电子设备6的硬盘。存储器61在另一些实施例中也可以是电子设备6的外部存储设备,例如电子设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器61还可以既包括电子设备6的内部存储单元也包括外部存储设备。存储器61不仅可以用于存储安装于电子设备6的应用软件及各类数据,例如路由转发程序06的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器62在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器61中存储的程序代码或处理数据,例如执行路由转发程序06等。
通信总线63用于实现这些组件之间的连接通信。
网络接口64可选地可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该电子设备6与其他电子设备之间建立通信连接。
可选地,该电子设备6还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选地用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备6中处理的信息以及用于显示可视化的用户界面。
图6仅示出了具有组件61-64以及路由转发程序06的电子设备6,本领域技术人员可以理解的是,图6示出的结构并不构成对电子设备6的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在图6所示的电子设备6实施例中,存储器61中存储有路由转发程序06;处理器62执行存储器61中存储的路由转发程序06时实现如下步骤:
步骤一、接收数据流的数据包,获取所述数据包的通信信息;
步骤二、获取所述数据包对应的目的应用的应用信息;
步骤三、根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;
步骤四、通过所述目标路由标识对应的目标路由表项转发所述数据包。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
此外,本发明第七实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有路由转发程序,所述路由转发程序可被一个或多个处理器执行,以实现如下操作:
接收数据流的数据包,获取所述数据包的通信信息;
获取所述数据包对应的目的应用的应用信息;
根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;
通过所述目标路由标识对应的目标路由表项转发所述数据包。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种路由转发方法,其特征在于,所述方法包括:
接收数据流的数据包,获取所述数据包的通信信息;
获取所述数据包对应的目的应用的应用信息;
根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;
通过所述目标路由标识对应的目标路由表项转发所述数据包。
2.如权利要求1所述的方法,其特征在于,所述获取所述数据包的通信信息之前,所述方法还包括:
判断所述数据包是否为所述数据流的首包;
若所述数据包不为所述数据流的首包,从所述数据流的连接跟踪表中读取所述数据包对应的目标路由标识,通过所述目标路由标识对应的目标路由表项转发所述数据包;
若所述数据包为所述数据流的首包,执行所述获取所述数据包的通信信息的操作。
3.如权利要求1所述的方法,其特征在于,所述通信信息包括源IP地址、源端口、目的IP地址、目的端口、传输层协议之中的至少三项。
4.如权利要求1至3任一项所述的方法,其特征在于,所述获取所述数据包对应的目的应用的应用信息包括:
根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息,所述第一关系表用于对应保存由DPI分析至少一个数据包之后下发的通信信息和应用信息;
若存在,从所述第一关系表中获取所述目标应用的应用信息。
5.如权利要求4所述的方法,其特征在于,所述根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息之前,所述方法还包括:
判断所述数据流的连接跟踪表中是否存在所述数据包对应的目的应用的应用信息,其中,所述连接跟踪表用于保存由DPI分析至少一个数据包之后下发的应用信息,所述连接跟踪表存储信息的失效时间短于所述第一关系表存储信息的失效时间;
若存在,从所述连接跟踪表获取所述数据包对应的目的应用的应用信息;
若不存在,执行所述根据所述通信信息判断第一关系表中是否存在所述数据包对应的目的应用的应用信息的操作。
6.如权利要求4所述的方法,其特征在于,所述第一关系表为第一哈希表,所述第一哈希表以所述通信信息中的三元组信息进行哈希运算得到的值作为所述第一哈希表的key值,以所述三元组信息对应的应用信息作为所述第一哈希表的value值。
7.如权利要求1至3任一项所述的方法,其特征在于,所述目标路由标识保存在第二哈希表中,所述第二哈希表以所述目标路由标识对应的目标网关IP进行哈希运算得到的值作为所述第二哈希表的key值,以所述目标路由标识作为所述第二哈希表的value值,所述目标路由标识对应的目标路由表项包含的网关IP为所述目标网关IP。
8.一种路由转发装置,其特征在于,所述装置包括:
接收模块,用于接收数据流的数据包;
第一获取模块,用于获取所述数据包的通信信息;
第二获取模块,用于获取所述数据包对应的目的应用的应用信息;
确定模块,用于根据所述应用信息和所述数据包的通信信息确定所述数据包对应的目标路由标识,所述目标路由标识是预先根据所述目标应用的应用信息和所述数据包的通信信息生成的;
转发模块,用于通过所述目标路由标识对应的目标路由表项转发所述数据包。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一所述的路由转发方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一所述的路由转发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414287.1A CN111224878B (zh) | 2019-12-31 | 2019-12-31 | 路由转发方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414287.1A CN111224878B (zh) | 2019-12-31 | 2019-12-31 | 路由转发方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111224878A true CN111224878A (zh) | 2020-06-02 |
CN111224878B CN111224878B (zh) | 2022-05-13 |
Family
ID=70829252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911414287.1A Active CN111224878B (zh) | 2019-12-31 | 2019-12-31 | 路由转发方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111224878B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039778A (zh) * | 2020-07-14 | 2020-12-04 | 北京天融信网络安全技术有限公司 | 一种应用路由转发方法、装置、电子设备及存储介质 |
CN112702270A (zh) * | 2020-12-18 | 2021-04-23 | 深圳赛安特技术服务有限公司 | 基于事件分发机制的节点调用方法、系统及存储介质 |
CN115695307A (zh) * | 2022-10-28 | 2023-02-03 | 中国农业银行股份有限公司 | 一种数据传输方法及装置 |
CN116546557A (zh) * | 2023-06-29 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 数据包处理方法、系统、设备和存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006242A (zh) * | 2010-12-24 | 2011-04-06 | 山石网科通信技术(北京)有限公司 | 路由器的选路方法及路由器 |
CN102035745A (zh) * | 2010-12-23 | 2011-04-27 | 北京星网锐捷网络技术有限公司 | 策略路由实现方法、装置及网络设备 |
CN102164078A (zh) * | 2011-03-25 | 2011-08-24 | 北京星网锐捷网络技术有限公司 | 策略路由方法、装置及系统 |
CN102497321A (zh) * | 2011-12-19 | 2012-06-13 | 江苏奇异点网络有限公司 | 基于客户端复杂应用的路由器 |
US8873556B1 (en) * | 2008-12-24 | 2014-10-28 | Palo Alto Networks, Inc. | Application based packet forwarding |
US20150188810A1 (en) * | 2013-12-30 | 2015-07-02 | Google Technology Holdings LLC | Method and device for policy-based routing |
CN105471748A (zh) * | 2015-12-29 | 2016-04-06 | 北京神州绿盟信息安全科技股份有限公司 | 一种应用分流方法和装置 |
US9419920B1 (en) * | 2013-02-04 | 2016-08-16 | The United States Of America, As Represented By The Secretary Of The Navy | Gateway router and method for application-aware automatic network selection |
CN107005834A (zh) * | 2015-01-30 | 2017-08-01 | 华为技术有限公司 | 数据处理的方法和设备 |
CN107087006A (zh) * | 2017-05-24 | 2017-08-22 | 全讯汇聚网络科技(北京)有限公司 | 一种协议分流方法、系统及服务器 |
CN107204923A (zh) * | 2017-05-24 | 2017-09-26 | 全讯汇聚网络科技(北京)有限公司 | 一种协议分流方法、系统及路由器 |
CN108737557A (zh) * | 2018-05-29 | 2018-11-02 | Oppo(重庆)智能科技有限公司 | 一种数据包传输方法、终端及计算机存储介质 |
CN109388499A (zh) * | 2017-08-04 | 2019-02-26 | 东软集团股份有限公司 | 报文转发方法及装置、计算机可读存储介质、电子设备 |
-
2019
- 2019-12-31 CN CN201911414287.1A patent/CN111224878B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8873556B1 (en) * | 2008-12-24 | 2014-10-28 | Palo Alto Networks, Inc. | Application based packet forwarding |
CN102035745A (zh) * | 2010-12-23 | 2011-04-27 | 北京星网锐捷网络技术有限公司 | 策略路由实现方法、装置及网络设备 |
CN102006242A (zh) * | 2010-12-24 | 2011-04-06 | 山石网科通信技术(北京)有限公司 | 路由器的选路方法及路由器 |
CN102164078A (zh) * | 2011-03-25 | 2011-08-24 | 北京星网锐捷网络技术有限公司 | 策略路由方法、装置及系统 |
CN102497321A (zh) * | 2011-12-19 | 2012-06-13 | 江苏奇异点网络有限公司 | 基于客户端复杂应用的路由器 |
US9419920B1 (en) * | 2013-02-04 | 2016-08-16 | The United States Of America, As Represented By The Secretary Of The Navy | Gateway router and method for application-aware automatic network selection |
US20150188810A1 (en) * | 2013-12-30 | 2015-07-02 | Google Technology Holdings LLC | Method and device for policy-based routing |
CN107005834A (zh) * | 2015-01-30 | 2017-08-01 | 华为技术有限公司 | 数据处理的方法和设备 |
CN105471748A (zh) * | 2015-12-29 | 2016-04-06 | 北京神州绿盟信息安全科技股份有限公司 | 一种应用分流方法和装置 |
CN107087006A (zh) * | 2017-05-24 | 2017-08-22 | 全讯汇聚网络科技(北京)有限公司 | 一种协议分流方法、系统及服务器 |
CN107204923A (zh) * | 2017-05-24 | 2017-09-26 | 全讯汇聚网络科技(北京)有限公司 | 一种协议分流方法、系统及路由器 |
CN109388499A (zh) * | 2017-08-04 | 2019-02-26 | 东软集团股份有限公司 | 报文转发方法及装置、计算机可读存储介质、电子设备 |
CN108737557A (zh) * | 2018-05-29 | 2018-11-02 | Oppo(重庆)智能科技有限公司 | 一种数据包传输方法、终端及计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
DO-HYEON LEE;JEOM-GOO KIM: "Analysis of Packet Forwarding Approaches for QoS Routing in Ad Hoc Wireless Networks", 《2013 INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND APPLICATIONS (ICISA)》 * |
明芳: "基于上层数据服务的Zigbee路由算法", 《信息技术与信息化》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039778A (zh) * | 2020-07-14 | 2020-12-04 | 北京天融信网络安全技术有限公司 | 一种应用路由转发方法、装置、电子设备及存储介质 |
CN112702270A (zh) * | 2020-12-18 | 2021-04-23 | 深圳赛安特技术服务有限公司 | 基于事件分发机制的节点调用方法、系统及存储介质 |
CN115695307A (zh) * | 2022-10-28 | 2023-02-03 | 中国农业银行股份有限公司 | 一种数据传输方法及装置 |
CN116546557A (zh) * | 2023-06-29 | 2023-08-04 | 阿里巴巴(中国)有限公司 | 数据包处理方法、系统、设备和存储介质 |
CN116546557B (zh) * | 2023-06-29 | 2023-11-17 | 阿里巴巴(中国)有限公司 | 数据包处理方法、系统、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111224878B (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111224878B (zh) | 路由转发方法、装置、电子设备及存储介质 | |
CN111193749B (zh) | 一种攻击溯源方法、装置、电子设备和存储介质 | |
WO2017114206A1 (zh) | 短链接处理方法、装置及短链接服务器 | |
CN103118003B (zh) | 一种基于资产的风险扫描方法、装置及系统 | |
CN107239701B (zh) | 识别恶意网站的方法及装置 | |
CN105635073B (zh) | 访问控制方法、装置和网络接入设备 | |
WO2022179353A1 (zh) | 域名解析方法、装置及计算机设备 | |
CN103475746A (zh) | 一种终端服务方法及装置 | |
CN107124483A (zh) | 域名解析方法及服务器 | |
CN111478984B (zh) | 服务器ip地址获取方法、装置及计算机可读存储介质 | |
CN113890879A (zh) | 数据访问的负载均衡方法、装置、计算机设备及介质 | |
CN113242331A (zh) | 不同类型的地址转换方法、装置、计算机设备及存储介质 | |
CN104618388A (zh) | 快速注册登录方法及对应的重置服务器、信息服务器 | |
CN106878311B (zh) | Http报文的重写方法及装置 | |
CN107623693B (zh) | 域名解析防护方法及装置、系统、计算设备、存储介质 | |
CN110677506B (zh) | 网络访问方法、装置、计算机设备及存储介质 | |
US10318745B2 (en) | Access control system and access control method | |
CN110851091A (zh) | 基于vdi的打印方法、装置、设备及存储介质 | |
CN113873057A (zh) | 数据处理方法和装置 | |
WO2020224108A1 (zh) | Url拦截转换方法、装置以及计算机设备 | |
CN111385360A (zh) | 终端设备的识别方法、装置及计算机可读存储介质 | |
KR102032958B1 (ko) | 취약점 점검 장치, 방법 및 시스템 | |
CN111447080B (zh) | 私有网络去中心化控制方法、装置及计算机可读存储介质 | |
CN105519069A (zh) | 数据处理系统、中心装置以及程序 | |
CN114124883A (zh) | 基于云存储地址的数据访问方法、装置、计算机设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |