CN113726907A - 一种路由处理方法、网元设备、装置以及可读存储介质 - Google Patents
一种路由处理方法、网元设备、装置以及可读存储介质 Download PDFInfo
- Publication number
- CN113726907A CN113726907A CN202111081924.5A CN202111081924A CN113726907A CN 113726907 A CN113726907 A CN 113726907A CN 202111081924 A CN202111081924 A CN 202111081924A CN 113726907 A CN113726907 A CN 113726907A
- Authority
- CN
- China
- Prior art keywords
- address
- route
- node
- target
- network
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 33
- 238000003672 processing method Methods 0.000 title abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 61
- 150000003839 salts Chemical class 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 59
- 238000004891 communication Methods 0.000 claims abstract description 21
- 238000004590 computer program Methods 0.000 claims description 21
- 125000004122 cyclic group Chemical group 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 230000000875 corresponding effect Effects 0.000 claims 19
- 230000002596 correlated effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000010287 polarization Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种路由处理方法、网元设备、装置以及可读存储介质,该方法包括:在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;从至少两个可用路由中,确定与散列结果相匹配的目标路由;根据目标路由对目标数据报文进行路由转发。采用本发明,可以实现路由均衡负载,同时可以提高通信效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种路由处理方法、网元设备、装置以及可读存储介质。
背景技术
随着通信技术不断发展,涌现出很多之前不存在的需求,对于不方便施工布线且对网络质量有要求的旧城区,博物馆,矿厂机器人远程控制等场景,5G(5th GenerationMobile Networks,第五代移动通信技术)上云是个很好的解决方案,通过端侧接入5G以及云端的专线能力,能够大幅提高网络质量和传输速率,满足业务低时延与高可靠的网络要求。
由于数据报文不建立长连接,是通过一跳一跳进行转发,路由是整个端到端网络连通性的关键。转发表中与应用服务匹配的可用路由可以有多条,可以称之为等价路由。当大量数据报文请求时,选择哪条等价路由来完成数据报文的转发十分重要。目前对于等价路由,通常按每个数据报文来进行均衡转发,这样能够在网关上做到更均匀的负载分担。但是,在上下游网络组网结构不均衡、时延也不均衡的场景中,这种方式导致数据报文经过不同路径到达目的地,不同路径的时延抖动差异较大,会造成接收方的报文到达乱序,从而影响通信的效率。
发明内容
本申请实施例提供了一种路由处理方法、网元设备、装置以及可读存储介质,可以实现路由均衡负载,同时可以提高通信效率。
本申请实施例一方面提供了一种路由处理方法,包括:
在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;
若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;
对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
从至少两个可用路由中,确定与散列结果相匹配的目标路由;
根据目标路由对目标数据报文进行路由转发。
本申请实施例一方面提供了一种路由处理装置,包括:
路由查询模块,用于在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;
特征获取模块,用于若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;
散列模块,用于对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
路由确定模块,用于从至少两个可用路由中,确定与散列结果相匹配的目标路由;
转发模块,用于根据目标路由对目标数据报文进行路由转发。
其中,特征获取模块,包括:
第一获取单元,用于从目标数据报文的报文头部信息中,获取目标数据报文对应的源网络地址和协议类型;
第二获取单元,用于从目标数据报文对应的以太网帧头部信息中,获取目标数据报文对应的目的物理地址和源物理地址;
确定单元,用于将目的网络地址、源网络地址、协议类型、目的物理地址以及源物理地址,确定为目标数据报文的报文特征信息。
其中,散列模块,包括:
序列生成单元,用于根据与当前网关相关联的随机盐值和报文特征信息,生成随机输入序列;
填充单元,用于基于随机输入序列的长度对随机输入序列进行填充处理,得到具有标准长度的待处理序列;
循环偏移单元,用于对待处理序列进行循环偏移处理,得到用于进行路由负载均衡的散列结果。
其中,路由确定模块,包括:
余数确定单元,用于将散列结果转换成偏移值,将偏移值与至少两个可用路由的路由总数量进行余数运算,得到目标余数;
路由选择单元,用于从至少两个可用路由中获取与目标余数对应的路由,将与目标余数对应的路由确定为与散列结果相匹配的目标路由。
其中,上述路由处理装置,还包括:
路由表获取模块,用于若在转发信息表中未查找到与目的网络地址相关联的可用路由,则获取路由信息表;路由信息表包括用于存储网络地址的字典树以及与网络地址相关联的可用路由;
层级查询模块,用于对字典树进行层级查询处理,得到与目的网络地址相关联的可用路由;
转发表更新模块,用于根据与目的网络地址相关联的可用路由更新转发信息表,得到更新转发信息表;
更新查询模块,用于在更新转发信息表中对目的网络地址进行路由查询。
其中,层级查询模块,包括:
网段确定单元,用于在第k轮查询处理中,将目的网络地址与第k轮子网掩码进行与运算,得到第k轮的网段地址;k为正整数;第k轮子网掩码的掩码位数为最长掩码位数与(k-1)的差值;
查询单元,用于根据第k轮的网段地址,对字典树进行查询;
处理单元,用于若在字典树中查询到第k轮的网段地址对应的下一跳网关地址,则停止查询处理,根据下一跳网关地址确定与目的网络地址相关联的可用路由;
处理单元,还用于若在字典树中未查询到第k轮的网段地址对应的下一跳网关地址,则执行第k+1轮查询处理。
其中,字典树的节点层数为N;N为正整数;
查询单元,包括:
划分子单元,用于对第k轮的网段地址进行划分,得到N个节点地址;
遍历子单元,用于根据N个节点地址对字典树进行N次层级节点遍历,得到第k轮的网段地址在字典树中的叶子节点;
地址确定子单元,用于若第k轮的网段地址对应的叶子节点映射有下一跳网关地址,则确定在字典树中查找到第k轮的网段地址对应的下一跳网关地址;
地址确定子单元,还用于若第k轮的网段地址对应的叶子节点中未映射有下一跳网关地址,则确定在字典树中未查找到第k轮的网段地址对应的下一跳网关地址。
其中,与目的网络地址相关联的可用路由包括至少两个路由发现协议分别对应的可用路由;
转发表更新模块,包括:
协议确定单元,用于从至少两个路由发现协议中,获取优先级最高的路由发现协议,作为最优路由发现协议;
路由获取单元,用于从与目的网络地址相关联的可用路由中,获取与最优路由发现协议对应的可用路由,作为最优可用路由;
转发表更新单元,用于将目的网络地址和最优可用路由添加进转发信息表,得到更新转发信息表。
其中,上述路由处理装置,还包括:
路由发现模块,用于基于路由发现协议获取新增网络地址和新增网络地址相关联的可用路由;可用路由包括下一跳网关地址;
节点地址确定模块,用于根据路由信息表包括的字典树的字典层数N,对新增网络地址进行节点地址划分处理,得到网络地址对应的N个具有顺序关系的节点地址;N为正整数;
字典树更新模块,用于根据N个节点地址更新字典树,得到更新后的字典树;更新后的字典树包括与新增网络地址对应的叶子节点;与新增网络地址对应的叶子节点包含N个节点地址中的最后一个节点地址;
关联存储模块,用于将下一跳网关地址与新增网络地址对应的叶子节点,关联存储至路由信息表。
其中,字典树更新模块,包括:
节点遍历单元,用于根据N个节点地址中第i个节点地址,对字典树的第i层的目标节点集合进行遍历;i为小于N的正整数;i为1时,目标节点集合中的节点与字典树的根节点具有相连关系;i不为1时,目标节点集合中的节点与第i-1层的目标节点集合中包含第i-1个节点地址的节点具有相连关系;
遍历判断单元,用于若在字典树的第i层的目标节点集合中,遍历到包含第i个节点地址的节点,则继续根据N个节点地址中第i+1个节点地址,对字典树的第i+1层中的目标节点集合进行遍历;
遍历判断单元,还用于若在字典树的第i层的目标节点集合中,未遍历到包含第i个节点地址的节点,则创建包含第i个节点地址的新增节点,将包含第i个节点地址的新增节点添加至字典树的第i层的目标节点集合,继续根据N个节点地址中第i+1个节点地址,对更新后的字典树的第i+1层中的目标节点集合进行遍历;
更新单元,用于当在第N层中的目标节点集合中遍历到包含第N个节点地址对应的节点,或者在第N层中的目标节点集合中添加了包含第N个节点地址对应的新增节点时,获取更新后的字典树。
本申请实施例一方面提供了一种网元设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信网元,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使网元设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,网元设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网元设备执行本申请实施例中的方法。
本申请实施例中,在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;从至少两个可用路由中,确定与散列结果相匹配的目标路由;根据目标路由对目标数据报文进行路由转发。采用本申请实施例提供的方法,可以使得同一路由节点将具有相同特征的数据报文分发到相同的路由上,避免数据报文经不同路径到达目的地时,接收方因为不同路径的时延抖动差异较大而接收到乱序的报文,从而提高通信效率;同时通过当前网关相关联的随机盐值来调整路由的选择,可以将不同报文特征的数据报文更大概率的路由到不同的路由节点上,实现在整个路由过程中的负载均衡。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2a是本申请实施例提供的一种路由处理的场景示意图;
图2b是本申请实施例提供的一种路由处理的场景示意图;
图3是本申请实施例提供的一种路由处理方法的流程示意图;
图4是本申请实施例提供的一种路由散列匹配的流程示意图;
图5是本申请实施例提供的一种路由处理方法的流程示意图;
图6a是本申请实施例提供的一种四层字典树结构示意图;
图6b是本申请实施例提供的一种三层字典树结构示意图;
图7是本申请实施例提供的一种转发信息表更新示意图;
图8是本申请实施例提供的一种网元装置的结构示意图;
图9是本申请实施例提供的一种网元设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
具体的,请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,该网络架构可以包括应用服务器集群、基站4000a、网关4000b以及终端设备集群。其中,应用服务器集群具体可以包括一个或者多个应用服务器,这里将不对应用服务器集群中的应用服务器的数量进行限定。如图1所示,多个应用服务器具体可以包括应用服务器2000a、应用服务器2000b、…、应用服务器2000n,应用服务器2000a、应用服务器2000b、…、应用服务器2000n可以分别与网关4000b进行专线连接,以便于每个应用服务器可以通过该专线连接与网关4000b之间进行数据交互。
可以理解的是,应用服务器集群中的应用服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云数据库、云服务、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
可以理解的是,上述网络架构可以应用于支持边缘计算(即移动边缘计算,MobileEdge Computing,简称MEC)的业务场景中,上述应用服务器集群中的应用服务器可以为边缘计算中的边缘应用服务器。边缘计算是指在靠近物或数据源头的网络边缘侧,融合网络、计算存储、应用核心能力的平台,就近提供边缘智能服务,满足行业数字化在敏捷联接、实时业务、数据优化、应用智能安全与隐私保护等方面的关键需求。边缘计算使运营商和第三方服务能够靠近终端设备的接入点进行托管,从而通过减少传输网络上的端到端延迟和负载来实现高效的服务交付。
第五代移动通信技术(5th Generation Mobile Networks,第五代移动通信技术,简称5G)是具有高速率、低时延和大连接特点的新一代宽带移动通信技术,是实现人机物互联的网络基础设施。在5G的应用场景中,5G业务的峰值速率通常超过10Gbps,带宽的要求则高达几十Gbps,故此,会对无线中传、回传移动网络造成巨大的压力。因此,5G业务需求需要将业务尽可能下沉至网络边缘,以实现业务的本地分流,且减少网络传输和多级业务转发带来的网络时延。
其中,终端设备集群具体可以包括一个或者多个终端设备(User Equipment,简称UE),这里将不对终端设备集群中的终端设备的数量进行限定。如图1所示,多个终端设备具体可以包括终端设备3000a、终端设备3000b、…、终端设备3000m,终端设备3000a、终端设备3000b、…、终端设备3000m可以分别与基站4000a通过5G传输方式进行通信连接,以便于每个终端设备可以通过该通信连接与基站4000a之间进行数据交互。
可以理解的是,终端设备集群中的终端设备可以包括民用、商用、工业、军工等领域的终端应用产品,如智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能电脑、智能车载、智能家居、无人机、ATM机、摄像头、红绿灯、发电机或各类型的传感器等。应当理解,如图1所示的终端设备集群中的每个终端设备均可以集成安装有应用客户端(即应用程序),当该应用客户端运行于各终端设备中时,可以通过基站4000a和网关4000b分别与上述图1所示的应用服务器集群中的应用服务器之间进行数据交互。其中,应用客户端具体可以包括:车载客户端、智能家居客户端、娱乐客户端(例如,游戏客户端)、多媒体客户端(例如,视频客户端)、社交客户端以及资讯类客户端(例如,新闻客户端)等。
其中,基站4000a所对应的基站的数量可以为多个,多个基站可以负责终端设备在无线侧的接入与管理,不同的终端设备可以对应于不同的基站,不同的终端设备也可以对应于相同的基站,这里不对每个终端设备所对应的基站进行限定,这里以每个终端设备所对应的基站均为基站4000a为例进行说明。
其中,网关4000b可以为5G核心网(5G Core,可简称为5GC)中的核心网网元(“网元”也可称为“网络功能”),这里的网关4000b可以为核心网网元中的UPF(User PlaneFunction,用户平面功能),5G UPF可以负责控制面(即控制平面,Control Plane,简称CP)和用户面(即数据平面,Data Plane,简称DP)的数据路由和转发,并与外部数据网络(DataNetwork)互连,例如,运营商业务、互联网或者第三方业务等。
可以理解的是,基站4000a可以在终端设备(例如,终端设备3000a)和网关4000b之间建立“控制面”连接(即控制平面),该控制平面可以用于在两者之间转发信令消息,这些信令消息包括手机身份验证、注册、移动性管理等;基站可以在终端设备3000a和网关4000b之间建立“用户面”连接(即数据平面),该数据平面可以用于在两者之间转发用户的数据流量。其中,控制面和用户面彻底分离,网关4000b可以与边缘计算一起分布式部署于更接近用户侧的边缘,从而可降低网络时延。
应当理解,在5G网络下,假设某个终端设备(例如,终端设备3000a)希望访问移动通信网外部的数据网络,该终端设备3000a可以发起访问请求,将该访问请求转发至基站4000a,基站4000a可以将终端设备3000a请求的业务流转发至5G核心网中的网关4000b,再通过网关4000b转发后,发送到外部数据网络。
其中,为了获得更高效的服务交付,可以采用边缘计算来满足不同的业务需求。需要说明的是,在边缘计算场景下,一个应用服务可能由通常部署在不同站点的多个边缘应用服务器(例如,图1所示应用服务器2000a、应用服务器2000b、…、应用服务器2000n)提供服务。要想把某个应用(例如,应用Y)的业务流路由到边缘应用服务器,终端设备需要知道为该应用Y提供服务的边缘应用服务器的IP地址(Internet Protocol Address),终端设备可以进行发现以获取合适的边缘应用服务器(比如,离终端设备最近的一个边缘应用服务器(例如,应用服务器2000a))的IP地址(比如,IP地址1),以便流量可以被网关4000b路由到该边缘应用服务器,并且可以优化服务延迟、流量路由路径和用户服务体验。基于此,边缘应用服务器发现是终端设备使用域名***查找合适的边缘应用服务器的IP地址的过程。其中,域名***(DNS,Domain Name Server)是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网。
如图1所示,终端设备通过边缘应用服务器发现得到应用Y对应的应用服务器2000a的IP地址1后,运行应用Y生成的数据报文中会携带该IP地址1。该数据报文会被转发至网关4000b。需要说明的是,网关4000b和应用服务器2000a之间不在同一网络或者距离过远时,数据报文的传输不建立长连接,需要通过一跳一跳进行转发,换言之,网关4000b和应用服务器2000a之间可能存在多个网关(图中未画出),数据报文可以从一个网关被转发至另一个网关,再由另一个网关继续转发,最终被转发至应用服务器2000a。因此,网关4000b会在获取到携带IP地址1的数据报文后,根据该IP地址1,选择合适的路由,来对该数据报文进行路由转发,即根据路由包含的下一跳网关地址,将数据报文转发至下一跳网关,再由下一跳网关继续根据IP地址1选择合适的路由,对该数据报文继续进行路由转发,以使该数据报文最终可以到达该IP地址1对应的边缘应用服务器2000a。
网关在根据网络地址(即IP地址)进行路由查询时,可用路由的数量可能为多个,当网关获取到的可用路由的数量为至少两个时,考虑到负载均衡,可以通过随机盐值来帮助选择目标路由,然后根据目标路由进行数据报文的转发。为便于理解,请一并参见图2a-图2b,图2a-图2b是本申请实施例提供的一种路由处理的场景示意图。其中,如图2a所示的终端设备20可以为上述图1所对应实施例中的终端设备集群中的任一终端设备,如终端设备20可以为终端设备3000a;图2a所示的网关21是终端设备20直接相连的网关,即终端设备的所有数据报文均会发送至网关21,则网关21可以为上述图1所对应实施例中的网关4000b;图2a所示的网关22、网关23、网关24均可以为上述图1中网关4000b和应用服务器之间进行数据报文通信时,帮忙转发数据报文的网关;图2a所示的应用服务器26可以为上述图1所对应实施例中的应用服务器集群中的任一应用服务器,如应用服务器26可以为应用服务器2000a。
如图2a所示,终端设备20中可以集成安装有应用Y,终端设备20启动应用Y时,可以通过边缘应用服务器发现得到应用Y对应的应用服务器26的网络地址为IP1。之后,终端设备20运行应用Y生成的数据报文中会携带该网络地址IP1。如图2a所示,携带网络地址IP1的数据报文要从终端设备20到达应用服务器26,有三条路径可以实现,路径一是终端设备20→网关21→网关22→网关25→应用服务器26,路径二是终端设备20→网关21→网关22→网关24→应用服务器26,路径三是终端设备20→网关21→网关23→网关24→应用服务器26。数据报文通过上述三条路径中的任一路径,均可以从终端设备20到应用服务器26。不过,可以理解的是,由于数据报文是一跳一跳进行转发的,实际上对于单个网关来说,只需要确定针对数据报文的目标路由即可,其中,目标路由包含了下一跳网关地址,根据目标路由,网关可以决定将数据报文转发至下一跳网关地址对应的网关。以网关21为例,网关21仅关心要将数据报文转发至网关22还是网关23,假设网关21根据目标路由将数据报文转发至网关22,那么之后网关22继续决策将数据报文转发至网关24还是网关25。
进一步地,以网关21确定数据报文的目标路由,然后根据目标路由转发该数据报文进行说明,该过程可以参见图2b。如图2b所示,网关21接收到终端设备20发送的携带网络地址IP1的数据报文200,网关21会在转发信息表210中对网络地址IP1进行路由查询。其中,转发信息表210中包含多个转发表项,每条转发表项都指定要到达的某个网络地址,所需要通过的端口及下一跳网络地址等信息。通过对转发信息表210的遍历查询,网关21得到可用路由1和可用路由2,其中,可用路由1对应转发信息表210中的转发表项1,表示到达网络地址IP1,网关21需要从端口1将数据报文转发至下一跳网络地址IP2对应的下一跳网关;可用路由2对应转发信息表210中的转发表项2,表示到达网络地址IP1,网关21需要从端口2将数据报文200转发至下一跳网络地址IP3对应的下一跳网关。网关21在转发信息表210中查找到了至少两条可用路由,此时,网关21会获取报文特征信息与网关21关联的随机盐值220,然后对报文特征信息和随机盐值220进行散列处理,得到用于进行路由负载均衡的散列结果230。其中,报文特征信息是指数据报文200的特征信息,比如地址信息、所使用的协议信息等等。其中,散列处理用于将数据转换为具有特定大小的随机输出。其中,随机盐值220是一串特定的字符串值,在对原始数据做散列处理时,将随机盐值220随机***原始数据中,得到的散列结果230和使用原始数据的散列结果不相同,即可以通过随机盐值来调整报文特征信息的散列结果。网关21得到散列结果230后,会选择与散列结果相匹配的目标路由,假设与散列结果230匹配的目标路由为可用路由1,则网关21会根据可用路由1来对数据报文200进行路由转发,即从端口1将数据报文200转发至下一跳网络地址IP2对应的下一跳网关。可以理解的是,报文特征信息相同的数据报文对应的散列结果相同,因此网关21会将报文特征信息相同的数据报文分发到固定的下一跳网关,可以避免接收端乱序问题。可选的,当网关21在转发信息表210中只查找到一条可用路由时,可以直接基于所查找到的这条可用路由对数据报文200进行路由转发。
一个可行的实施例中,不同网关相关联的随机盐值可以不同,这使得不同网关根据自己的随机盐值对同一数据报文的报文特征信息进行散列处理时,得到的散列结果不同。另外,在对多个数据报文的报文特征信息进行散列处理时,加入的随机盐值不同,得到的散列结果可能有很大差异,这就使得多个报文特征不同的数据报文即使在当前网关进行散列处理时,得到的散列结果匹配的路由相同,但是在下一跳网关进行散列处理时,由于下一跳网关的随机盐值和当前网关的随机盐值不同,多个报文特征不同的数据报文对应的散列结果匹配的路由就大概率不再相同,从而实现了数据报文的分流,使得整个网络中数据报文的路由实现负载均衡。例如,网关21关联随机盐值A,网关21接收到数据报文a和数据报文b,网关21通过随机盐值A对数据报文a和数据报文b分别进行散列处理,数据报文a对应的散列结果和数据报文b对应的散列结果可能相似,均可以与下一跳网关为网关22的可用路由匹配,网关21会将数据报文a和数据报文b均转发至网关22;网关22关联有随机盐值B,由于随机盐值A和随机盐值B不同,所以网关22通过随机盐值B对数据报文a和数据报文b分别进行散列处理后,所得到的数据报文a对应的散列结果和数据报文b对应的散列结果就可能会有很大差异,数据报文a对应的散列结果可以为下一跳网关为网关24的可用路由匹配,数据报文b对应的散列结果可以为下一跳网关为网关25的可用路由匹配,网关22会将数据报文a转发至网关24,将数据报文b转发至网关25。可以理解,不同报文特征的数据报文在进行散列处理时,由于加入的随机盐值不同,散列程度有很大差异,因此即使在某个网关多个数据报文均被路由到同一个下一跳网关,多个数据报文在下一跳网关进行路由时,也依然会大概率被分流到不同网关中,从而使得整个网络中的流量负载均衡。
可选的,在同一跳中的多个网关可以分别关联相同的随机盐值,也可以分别关联不同的随机盐值,这些随机盐值可以直接在每个网关中进行设置。
可选的,当出现了负载不均匀的情况时,还可以进一步对当前已设置的网关相关联的随机盐值进行调整,通过调整后的随机盐值可以重新使得整个路由过程尽可能保证负载均衡。
进一步地,请参见图3,图3是本申请实施例提供的一种路由处理方法的流程示意图,该方法可以由网元设备(例如,上述图1所示的网关4000b)执行。如图3所示,该路由处理方法至少包括以下步骤S101-S105:
步骤S101,在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对所述目的网络地址进行路由查询。
具体的,Linux(一种操作***)内存空间可以分为内核态对应的内核空间和用户态对应的用户空间。网元设备可以将路由协议从Linux内核协议层解析放到用户空间。网元设备可以在用户空间下进行数据报文和路由的处理,因此路由的查找与匹配也可以在用户态进行,从而可以避免上下文频繁切换,可以提高对报文数据的处理效率。
具体的,目的网络地址可以是IP地址,即互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
具体的,转发信息表(Forwarding Info Base,FIB)中包含有网络地址和网络地址相关联的可用路由,例如上述图2b所示的转发信息表210。网元设备在对目的网络地址进行路由查询时,会先在转发信息表中进行遍历,确认转发信息表中是否存储有目的网络地址相关联的可用路由。
步骤S102,若在所述转发信息表中查找到与所述目的网络地址相关联的至少两个可用路由,则获取所述目标数据报文的报文特征信息。
具体的,从网元设备去往目的网络地址的路径可能存在多条,因此转发信息表中可能存储有多条与目的网络地址相关联的可用路由。若网元设备在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,网元设备可以从至少两个可用路由中,根据数据报文的报文特征来选择一个可用路由作为目标路由。因此,网元设备会先获取目标数据报文的报文特征信息。
具体的,报文特征信息可以包括目的网络地址、源网络地址、协议类型、目的物理地址以及源物理地址,根据实际情况,报文特征信息的获取源头可以调整,这里仅以报文特征信息包括上述五个信息为例进行说明。其中,源网络地址是指生成该数据报文的计算机设备的IP地址;源物理地址是指生成该数据报文的计算机设备的物理地址,即媒体存取控制位址(Media Access Control Address,MAC);目的网络地址是指生成该数据报文的计算机设备需要访问的计算机设备的IP地址;目的物理地址是指生成该数据报文的计算机设备需要访问的计算机设备的MAC地址;协议类型是指数据报文的协议类型,如ICMP(InternetControl Message Protocol,因特网控制报文协议)协议、TCP(Transmission ControlProtocol,传输控制协议)协议、UDP(User Datagram Protocol,用户数据报协议)协议等等。其中,MAC地址应用在数据链路层,数据链路层协议可以通过节点的MAC地址使数据从一个节点传递到相同链路的另一个节点上;IP地址应用在网络层,网络层协议使数据可以从一个网络传递到另一个网络上。
具体的,网元设备获取目标数据报文的报文特征信息的实现过程,可以为:从目标数据报文的报文头部信息中,获取目标数据报文对应的源网络地址和协议类型;从目标数据报文对应的以太网帧头部信息中,获取目标数据报文对应的目的物理地址和源物理地址;将目的网络地址、源网络地址、协议类型、目的物理地址以及源物理地址,确定为目标数据报文的报文特征信息。其中,数据报文包括报文头部信息和报文数据信息,其中,报文头部信息通常包括为了正确传输数据而加的各种控制信息,比如协议类型标识、目的IP地址、源IP地址等等;报文数据信息则包括协议需要传输的数据。其中,不同协议类型对应的协议类型标识不同,通过协议类型标识可以确定数据报文的协议类型。其中,以太网帧是指对数据报文进行封装后得到的链路层协议数据单元,以使数据报文中的数据可以在数据链路层传输;以太网帧的头部信息中,包括有目的物理地址和源物理地址。
步骤S103,对与当前网关相关联的随机盐值和所述报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果。
具体的,当前网关即指执行本路由处理方法的网元设备,网元设备对应有一个随机盐值,即一段特定的字符串值。网元设备可以根据对应的随机盐值和报文特征信息,生成随机输入序列;然后基于随机输入序列的长度对随机输入序列进行填充处理,得到具有标准长度的待处理序列;最后对待处理序列进行循环偏移处理,得到用于进行路由负载均衡的散列结果。其中,根据对应的随机盐值和报文特征信息,生成随机输入序列的过程,可以为:将随机盐值***到报文特征信息中的某个特定位置,然后将***随机盐值的报文特征信息顺序转换为二进制序列,得到随机输入序列。其中,基于随机输入序列的长度对随机输入序列进行填充处理,得到具有标准长度的待处理序列的过程,可以为:先确定随机输入序列的长度,将随机输入序列的长度转换为二进制序列表示,填充在随机输入序列之后,若填充了长度对应的二进制序列后的随机输入序列的长度不到标准长度,则在随机输入序列和随机输入序列的长度对应的二进制序列之间进行填充,随机输入序列后面填充的第一位为1,其余为0,此时填充后的随机输入序列即为具有标准长度的待处理序列。其中,标准长度可以为512位(bit)的倍数;随机输入序列的长度对应的二进制序列的长度为64位。其中,对待处理序列进行循环偏移处理,得到用于进行路由负载均衡的散列结果的过程,可以为:对待处理序列按照标准长度分组,得到m个分组,m为正整数;然后对每一个分组进行4轮变换,以4个常数为起始变量进行计算,重新输出4个变量,以这4个变量再进行下一分组的运算,如果已经是最后一个分组,则这4个变量为最后的结果,按照地址的顺序从低到高对4个变量进行输出,得到散列结果。其中,4个常数可以为A=0x67452301,B=0x0EFCDAB89,C=0x98BADCFE,D=0x10325476,在运算前需要将其转换为二进制序列;因此,最后得到的散列结果为128位的二进制序列。
具体的,当前网关相关联的随机盐值可以与下一跳网关相关联的随机盐值不同。与当前网关处于同一跳的其他网关相关联的随机盐值,可以与当前网关相关联的随机盐值相同或不相同。为实现终端设备集群(例如,上述图1所示的终端设备集群)和应用服务器集群(例如,上述图1所示的应用服务器集群)之间的通信,网络中通常会部署有多个网元设备,以实现将发送方生成的数据报文通过一跳一跳的方式转发至接收方法,其中,发送方可以为终端设备集群中的任一终端设备或者应用服务器集群中的任一应用服务器,接收方可以为应用服务器集群中的任一应用服务器或者终端设备集群中的任一终端设备。需要说明的是,不同的网元设备关联的随机盐值不同,因为采用不同的随机盐值和同一数据报文的报文特征信息进行散列处理,对散列结果的影响程度不同;采用同一随机盐值对不同数据报文的报文特征信息进行散列处理时,随机盐值对散列结果的影响程度不同。例如,数据报文A到达关联有随机盐值a的网元设备1,网元设备1对数据报文A的报文特征信息进行散列处理,得到的散列结果对应的偏移值假设为1,随后网元设备1根据偏移值选择目标路由将数据报文A转发至关联有随机盐值b的网元设备2,网元设备2对数据报文A的报文特征信息进行散列处理,得到的散列结果对应的偏移值就可能为2了,与网元设备1得到的散列结果对应的偏移值不同,因为不同随机盐值对同一报文特征信息的数据报文的散列处理影响程度不同。另外,假设数据报文B也到达了网元设备1,其中,数据报文B的报文特征信息和数据报文A的报文特征信息不同,网元设备1对数据报文B的报文特征信息进行散列处理后,得到的散列结果对应的偏移值假设也为1,网元设备将数据报文B也转发至网元设备2。网元设备2对数据报文B的报文特征信息进行散列处理,得到的散列结果对应的偏移值就可能为3,因为同一随机盐值对不同报文特征信息的数据报文的散列处理影响程度不同。简言之,网络中的网元设备关联的随机盐值不同,有益于网元设备在进行数据报文的转发时,更好的将大量的数据报文分散至不同的网元设备上,从而实现网络的负载均衡。
步骤S104,从所述至少两个可用路由中,确定与所述散列结果相匹配的目标路由。
具体的,网元设备可以将散列结果转换成偏移值,将偏移值与至少两个可用路由的路由总数量进行余数运算,得到目标余数;从至少两个可用路由中获取与目标余数对应的路由,将与目标余数对应的路由确定为与散列结果相匹配的目标路由。上述可知,散列结果为128位的二进制序列,因此,可以将散列结果转换为十进制的偏移值,假设进制转换后得到的偏移值为327,至少两个可用路由的路由总数量为4,用327与4进行余数运算,得到的目标余数为3。可以理解,路由总数量为4,目标余数的取值可能为0,1,2,3中的任意值,每个可能的余数均对应一条可用路由,目标余数为哪个可能的余数,即选择哪个可能的余数对应的可用路由。目标余数为3,则与散列结果相匹配的目标路由为3对应的可用路由。
步骤S105,根据所述目标路由对所述目标数据报文进行路由转发。
具体的,根据目标路由,网元设备可以对目标数据报文进行路由转发,其中,目标路由指示有出接口信息和下一跳网关地址,网元设备会根据出接口信息选择端口,然后通过端口对目标数据报文进行转发,以使目标数据报文到达下一跳网关地址对应的网元设备。
通过本申请实施例提供的方法,网元设备可以在用户态线程中获取携带目的网络地址的目标数据报文,然后在转发信息表中对目的网络地址进行路由查询;若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;然后从至少两个可用路由中,确定与散列结果相匹配的目标路由;最后根据目标路由对目标数据报文进行路由转发,可以使得同一网元设备将具有相同特征的数据报文分发到相同的路由上,避免数据报文经不同路径到达目的地时,接收方因为不同路径的时延抖动差异较大而接收到乱序的报文,从而提高通信效率,同时通过该网元设备相关联的随机盐值来调整路由的选择,可以将不同报文特征的数据报文更大概率的路由到不同的路由节点上,实现在整个路由过程中的负载均衡。
为便于理解,请一并参见图4,图4是本申请实施例提供的一种路由散列匹配的流程示意图。网元设备可以根据数据报文特征,将相同特征的数据报文(例如源IP地址、目的IP地址、源MAC,目的MAC等)分发到固定一条路径,避免接收端乱序问题。该路由散列匹配可以包括以下步骤S201-S203:
步骤S201,网元设备提取五元组作为报文特征信息,并在报文特征信息中加入随机盐值,得到待处理序列。
具体的,网元设备可以根据以太网和IP报文头信息,获取源MAC地址、目的MAC地址、源IP地址、目的IP地址、传输层协议这几个参数作为报文特征信息,具体实现可以参见上述步骤S102,这里不再进行赘述。然后,在报文特征信息中加入随机盐(salt)值生成散列密钥,即上述图3所述的随机输入序列,通过加入随机盐值可以避免哈希极化,然后对散列密钥进行填充处理,得到待处理序列,具体实现可以参见上述步骤S103,这里不再进行赘述。
步骤S202,根据散列算法对待处理序列进行循环偏移处理,得到散列结果。
具体的,对待处理序列进行循环偏移处理,可以采用MD5(Message-DigestAlgorithm 5,信息摘要算法5)散列算法,此时可以在4轮偏移量在16个32位块上执行循环左移,使得相同的散列因子可以更频繁、更灵活地变化,让散列结果更加均衡。
步骤S203,根据散列结果匹配可用路由。
具体的,网元设备可以将散列结果转换成偏移值,然后将偏移值与可用路由数量进行余数运算,得到目标余数,选择与目标余数匹配的可用路由作为目标路由。通过上述路由散列匹配,网元设备可以确定这个特征的报文根据哪个可用路由进行转发。
采用本申请实施例提供的方法,将相同特征的数据报文分发至固定路径,可以避免数据报文经过不同路径到达目的地,由于不同路径的时延抖动差异较大,造成接收方的报文到达乱序问题,尤其是在上下游网络组网结构不均衡、时延也不均衡的场景中,可以极大地提高通信的效率。
进一步地,请参见图5,图5是本申请实施例提供的一种路由处理方法的流程示意图,该方法可以由网元设备(例如上述图1所示的网关4000b)执行。如图3所示,该路由处理方法至少包括以下步骤S301-S305:
步骤S301,在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对所述目的网络地址进行路由查询。
具体的,步骤S301的实现可以参见上述图3所对应实施例中步骤S101的具体描述,这里不再进行赘述。
步骤S302,若在所述转发信息表中未查找到与所述目的网络地址相关联的可用路由,则获取路由信息表;所述路由信息表包括用于存储网络地址的字典树以及与所述网络地址相关联的可用路由。
具体的,转发信息表中包含的网络地址和网络地址相关联的可用路由,均是从路由信息表(Routing Info Base,RIB)中拷贝的。路由信息表中存储网关设备获取的所有的路由信息,它与具体的路由协议无关,所有的路由协议都在这里保存它们的路由。换言之,只要网元设备上运行的路由协议学到了网络地址和网络地址相关联的新路由,就都会放到路由信息表中。由于路由信息表维护各种路由协议的网络拓扑集合,这使得路由信息表中存储了大量网络地址和网络地址相关联的可用路由,且一个网络地址就可以对应多条可用路由。可以理解,网元设备在对数据报文进行转发时,从网络地址对应的多条可用路由中选择最优的可用路由来转发数据报文即可,其余的可用路由作为备用路由,在最优的可用路由出现故障等问题时选用。因为路由信息表中存储的路由信息过多,网元设备在对路由信息表进行查询时,通常会耗费大量的时间。因此,网元设备会根据路由的前缀最长匹配原则,从路由信息表中确定网络地址相关联的可用路由,然后将符合路由的前缀最长匹配原则的与网络地址相关联的可用路由添加进转发信息表中。其中,路由的前缀最长匹配原则是指网元设备将网络地址与路由信息表进行每个bit位的匹配,直到找到匹配度最长的可用路由,例如,网元设备存储两个可用路由192.168.1.0/24,192.168.0.0/16,网元设备查找去目的地址192.168.1.5的可用路由,根据路由的前缀最长匹配原则选择192.168.1.0/24这条可用路由作为传输,即会将192.168.1.0/24这条可用路由写入转发信息表中,当192.168.1.0/24这条可用路由被删除了,再按前缀最长匹配原则将192.168.0.0/16这条可用路由写入转发信息表中。网元设备在接收到携带目的网络地址的数据报文中,可以先从转发信息表中进行路由查询,在转发信息表中未查询到目的网络地址相关联的可用路由时,才查询路由信息表。
具体的,路由信息表由网络地址、子网掩码和下一跳网关地址三个元素组成。其中,子网掩码用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码要结合IP地址一起使用。例如IP地址196.168.192.4,转换为二进制为11000000101010001100000000000100,假设其子网掩码为24,则子网掩码对应的二进制为11111111111111111111111100000000,将二者进行与运算,得到11000000101010001100000000000000,即对应的网段地址为196.168.192.0。子网掩码越长,IP地址和子网掩码匹配得到的网段地址就越精确,在进行路由转发时选择子网掩码越长的可用路由对应的下一跳网关地址,就离目的网络地址越近。考虑到路由格式的特点,可以采用字典(Trie)树分层方式来存储网络地址和网络地址相关联的可用路由。其中,字典树是一种树形结构,根节点不包含字符,除根节点外每一个节点都只包含一个字符;从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;每个节点的所有子节点包含的字符都不相同。
步骤S303,对所述字典树进行层级查询处理,得到与所述目的网络地址相关联的可用路由。
具有的,根据前缀最长匹配原则,网元设备可以从第32位子网掩码开始,对字典树进行层级查询处理,最多可以进行32轮层级查询,层级查询的实现过程,可以为:在第k轮查询处理中,将目的网络地址与第k轮子网掩码进行与运算,得到第k轮的网段地址;其中,k为正整数;第k轮子网掩码的掩码位数为最长掩码位数与(k-1)的差值,最长掩码位数即网络地址的长度,32位数;然后,根据第k轮的网段地址,对字典树进行查询;若在字典树中查询到第k轮的网段地址对应的下一跳网关地址,则停止查询处理,根据下一跳网关地址确定与目的网络地址相关联的可用路由;若在字典树中未查询到第k轮的网段地址对应的下一跳网关地址,则执行第k+1轮查询处理。
具体的,假设字典树的节点层数为N,N为正整数,则根据第k轮的网段地址,对字典树进行查询的过程,可以为:对第k轮的网段地址进行划分,得到N个节点地址;根据N个节点地址对字典树进行N次层级节点遍历,得到第k轮的网段地址在字典树中的叶子节点;若第k轮的网段地址对应的叶子节点映射有下一跳网关地址,则确定在字典树中查找到第k轮的网段地址对应的下一跳网关地址;若第k轮的网段地址对应的叶子节点中未映射有下一跳网关地址,则确定在字典树中未查找到第k轮的网段地址对应的下一跳网关地址。
为便于理解上述过程,为便于理解,请一并参见图6a,图6a是本申请实施例提供的一种四层字典树结构示意图。网络地址由32位二进制数组成,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110),因此,可以根据网络地址的每8位二进制数对应的十进制整数,来构建四层的字典树。如图6a所示,该字典树中,第一层节点可以包括256个节点,分别对应网络地址第一个八位二进制数对应的十进制整数,第一层节点中的每个节点均可以连接有256个子节点,第一层节点中所有节点对应的子节点即为字典树的第二层节点,可以理解,第二层节点中的节点个数最多可为256*256个。以此类推,字段数中的第三层节点的节点个数最多可为256*256*256个,第四层节点的节点个数最多可为256*256*256*256个。字典树中第四层节点中的节点可以称为字典树的叶子节点,叶子节点映射的数据面处理对象,可以指示下一步怎样处理数据报文,也可以存储有对应的下一跳网关地址。假设网元设备需要查找目的网络地址192.168.192.250对应的符合前缀最长匹配原则的可用路由,网元设备会通过减少子网掩码的长度,对字典树进行多轮层级查询,直到得到与目的网络地址相关联的可用路由,才停止查询。假设网元设备正在对字典树进行针对目的网络地址相关联的可用路由查询的第9轮查询,最长掩码位数为32,则第9轮子网掩码的掩码位数为24,网元设备先将24位子网掩码与目的网络地址192.168.192.250进行匹配,得到第9轮的网段地址192.168.192.0。随后,网元设备根据字典树的节点层数4对网段地址进行划分,得到192、168、168和0四个节点地址,然后,网元设备会从字典树的根节点开始进行层级节点遍历,如图6a所示,查询先从根节点出发,找到第一层节点中节点地址192对应的节点,作为路径节点一;然后,在字典树的第二层节点中,获取与路径节点一具有相连关系的节点,再从这群节点中获取节点地址168对应的节点,作为路径节点二;然后在字典树的第三层节点中,获取与路径节点二具有相连关系的节点,再从这群节点中获取节点地址192对应的节点,作为路径节点三;最后在字典树的第四层节点中,获取与路径节点三具有相连关系的节点,再从这群节点中获取节点地址0对应的节点,作为路径节点四,即网络地址对应的叶子节点,叶子节点可以映射有下一跳网关地址,假设为10.10.10.1,此时,网元设备可以得到与网络地址192.168.192.250相关联的可用路由,为192.168.192.0/24,下一跳地址为10.10.10.1。当查找到与网络地址相关联的可用路由后,网元设备会停止查询,但是倘若叶子节点未映射有下一跳网关地址,网元设备就会进行第10轮查询。
根据网络地址的结构和划分的特点,字典树的层级也可以设置为三层,为便于理解,请一并参见图6b,图6b是本申请实施例提供的一种三层字典树结构示意图。如图6b所示,根据网络地址的前16位二进制数对应的十进制整数来构建字典树的第一层,第一层节点可以包括65536个节点。然后,根据网络地址的第17位到第24位的二进制数对应的十进制整数来构建字典树的第二层,因此第一层节点中的每个节点均可以连接有256个子节点,第一层节点中所有节点对应的子节点即为字典树的第二层节点。以此类推,根据网络地址的第25位到第32位的二进制数对应的十进制整数来构建字典树的第三层。将四层字典树中的第一层和第二次合并,得到三层字典树中的第一层,可以减少了空间存储,同时在查询时间上路由匹配时最多只需要进行3层搜索,减少了路由查询时间。
步骤S304,根据所述与所述目的网络地址相关联的可用路由更新所述转发信息表,得到更新转发信息表。
具体的,网元设备会将与目的网络地址相关联的可用路由添加进转发信息表中,得到更新转发信息表。
可选的,上述叶子节点中可以映射有多个下一跳网关地址,即网元设备最终得到的与目的网络地址相关联的可用路由可以有多个,而多个可用路由中可以包括至少两个路由发现协议分别对应的可用路由,此时,根据协议优先级,网元设备从至少两个路由发现协议中,获取优先级最高的路由发现协议,作为最优路由发现协议;然后从与目的网络地址相关联的可用路由中,获取与最优路由发现协议对应的可用路由,作为最优可用路由;最后将目的网络地址和最优可用路由添加进转发信息表,得到更新转发信息表即可。
步骤S305,在所述更新转发信息表中对所述目的网络地址进行路由查询。
具体的,得到更新转发信息表后,网元设备对目的网络地址进行路由查询的过程可以参见上述步骤S102-S105,这里不再进行赘述。
可选的,为节省内存空间,字典树并不是一开始就建立所有的节点,而是在有新路由后不断***与更新字典树。网元设备基于路由发现协议获取到新增网络地址和新增网络地址相关联的可用路由时,可以根据路由信息表包括的字典树的字典层数N,对新增网络地址进行节点地址划分处理,然后得到网络地址对应的N个具有顺序关系的节点地址。其中,可用路由包括下一跳网关地址;N为正整数。然后,网元设备可以根据N个节点地址更新字典树,得到更新后的字典树。更新后的字典树包括与新增网络地址对应的叶子节点,与新增网络地址对应的叶子节点包含N个节点地址中的最后一个节点地址。最后,网元设备会将下一跳网关地址与新增网络地址对应的叶子节点,关联存储至路由信息表中。
可选的,上述根据N个节点地址更新字典树,得到更新后的字典树的过程,可以为:根据N个节点地址中第i个节点地址,对字典树的第i层的目标节点集合进行遍历;i为小于N的正整数;i为1时,目标节点集合中的节点与字典树的根节点具有相连关系;i不为1时,目标节点集合中的节点与第i-1层的目标节点集合中包含第i-1个节点地址的节点具有相连关系;若在字典树的第i层的目标节点集合中,遍历到包含第i个节点地址的节点,则继续根据N个节点地址中第i+1个节点地址,对字典树的第i+1层中的目标节点集合进行遍历;若在字典树的第i层的目标节点集合中,未遍历到包含第i个节点地址的节点,则创建包含第i个节点地址的新增节点,将包含第i个节点地址的新增节点添加至字典树的第i层的目标节点集合,继续根据N个节点地址中第i+1个节点地址,对更新后的字典树的第i+1层中的目标节点集合进行遍历;当在第N层中的目标节点集合中遍历到包含第N个节点地址对应的节点,或者在第N层中的目标节点集合中添加了包含第N个节点地址对应的新增节点时,获取更新后的字典树。
采用本申请实施例提供的方法,采用字典树结构来构建路由信息表,在进行路由查询时可以减少路由查询时间,同时根据新路由的发现来动态创建和更新字典树,可以节省内存空间,也降低查询时间。
为更好地理解上述图5所对应实施例中路由信息表和转发信息表的关系以及对目的网络地址的路由查询过程,请一并参见图7,图7是本申请实施例提供的一种转发信息表更新示意图。网元设备在计算路由信息时,不同路由协议计算出来的路径可能不同,网元设备会将所有路由协议发现的路由均写入路由信息表中,如图7所示,假设路由信息表RIB中新增3条去往网络地址2.2.2.2的路由,下一跳网关地址分别是1.1.1.1,1.1.1.2,1.1.1.3。网元设备会选择路由前缀匹配最多的路由作为最优路由,将其并置为Active(活跃)状态;而其他路由作为备份路由,置为Inactive(不活跃)状态。此时Active状态的路由表项会由路由RIB表导入转发FIB表中,作为转发依据。去往网络地址2.2.2.2的三条新增路由中,由于前缀最长匹配原则,因此2.2.2.0/30这条路由在转发FIB表中设置为Inactive。另外两条路由具有相同的前缀,均为2.2.2.2/32,可以称为等价路由(Equal Cost Multi-path,ECMP),两条等价路由ECMP的下一跳网关地址不同。网元设备会同时将这两条ECMP等价路由设置为Active状态,且将这两条ECMP等价路由添加至转发信息表;在将这两条ECMP等价路由写入转发信息表时,网元设备还会将对ECMP等价路由的下一跳网关地址进行分析,确定下一跳网关地址对应的端口和端口绑定的网络地址。如图7所示,下一跳网关地址为1.1.1.1的ECMP等价路由对应绑定网络地址10.1.1.1的端口1,下一跳网关地址为1.1.1.2的ECMP等价路由对应绑定网络地址10.1.1.2的端口2。如图7所示的转发流水线,当网元设备查询去目的网络地址2.2.2.2的路由时,会在用户态中先从转发FIB中进行路由查询,可以得到上述两条ECMP等价路由,然后网元设备会针对这两条ECMP等价路由进行负载均衡处理,即上述图3所对应实施例所述的散列处理,然后从这两条ECMP等价路由选择一条路由作为目标路由,再在用户态中基于目标路由(目标路由包含下一跳网关地址)进行路由重写,通过路由重写可以查找到下一跳网关地址的端口以及端口绑定的网络地址,进而根据端口和端口的网络地址实现对携带目的网络地址的数据报文的转发。例如,网元设备选择下一跳网关地址为1.1.1.1的ECMP等价路由,然后网元设备根据1.1.1.1进行路由重写,找到绑定网络地址10.1.1.1的端口1,通过端口1进行数据报文的转发。当路由拓扑发生变化时,路由RIB表和转发FIB表会同步进行更新,如路由2.2.2.0/30改成2.2.2.2/32时,路由RIB表将此路由设置为Active状态,然后转发FIB表中会写入该条路由。
请参见图8,是本申请实施例提供的一种网元装置的结构示意图。该网元装置可以是运行于网元设备的一个计算机程序(包括程序代码),例如该网元装置为一个应用软件;该装置可以用于执行本申请实施例提供的数据处理方法中的相应步骤。如图8所示,该网元装置1可以包括:路由查询模块101、特征获取模块102、散列模块103、路由确定模块104以及转发模块105。
路由查询模块101,用于在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;
特征获取模块102,用于若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;
散列模块103,用于对与当前路由节点相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
路由确定模块104,用于从至少两个可用路由中,确定与散列结果相匹配的目标路由;
转发模块105,用于根据目标路由对目标数据报文进行路由转发。
其中,路由查询模块101、特征获取模块102、散列模块103、路由确定模块104以及转发模块105的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S105,这里不再进行赘述。
请参见图8,特征获取模块102可以包括:第一获取单元1021、第二获取单元1022以及确定单元1023。
第一获取单元1021,用于从目标数据报文的报文头部信息中,获取目标数据报文对应的源网络地址和协议类型;
第二获取单元1022,用于从目标数据报文对应的以太网帧头部信息中,获取目标数据报文对应的目的物理地址和源物理地址;
确定单元1023,用于将目的网络地址、源网络地址、协议类型、目的物理地址以及源物理地址,确定为目标数据报文的报文特征信息。
其中,第一获取单元1021、第二获取单元1022以及确定单元1023的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请参见图8,散列模块103可以包括:序列生成单元1031、填充单元1032以及循环偏移单元1033。
序列生成单元1031,用于根据与当前路由节点相关联的随机盐值和报文特征信息,生成随机输入序列;
填充单元1032,用于基于随机输入序列的长度对随机输入序列进行填充处理,得到具有标准长度的待处理序列;
循环偏移单元1033,用于对待处理序列进行循环偏移处理,得到用于进行路由负载均衡的散列结果。
其中,序列生成单元1031、填充单元1032以及循环偏移单元1033的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
请参见图8,路由确定模块104可以包括:余数确定单元1041以及路由选择单元1042。
余数确定单元1041,用于将散列结果转换成偏移值,将偏移值与至少两个可用路由的路由总数量进行余数运算,得到目标余数;
路由选择单元1042,用于从至少两个可用路由中获取与目标余数对应的路由,将与目标余数对应的路由确定为与散列结果相匹配的目标路由。
其中,余数确定单元1041以及路由选择单元1042的具体功能实现方式可以参见上述图3所对应实施例中的步骤S104,这里不再进行赘述。
请参见图8,上述网元装置1还可以包括:路由表获取模块106、层级查询模块107、转发表更新模块108以及更新查询模块109。
路由表获取模块106,用于若在转发信息表中未查找到与目的网络地址相关联的可用路由,则获取路由信息表;路由信息表包括用于存储网络地址的字典树以及与网络地址相关联的可用路由;
层级查询模块107,用于对字典树进行层级查询处理,得到与目的网络地址相关联的可用路由;
转发表更新模块108,用于根据与目的网络地址相关联的可用路由更新转发信息表,得到更新转发信息表;
更新查询模块109,用于在更新转发信息表中对目的网络地址进行路由查询。
其中,路由表获取模块106、层级查询模块107、转发表更新模块108以及更新查询模块109的具体功能实现方式可以参见上述图5所对应实施例中的步骤S301-步骤S305,这里不再进行赘述。
请参见图8,层级查询模块107可以包括:网段确定单元1071、查询单元1072以及处理单元1073。
网段确定单元1071,用于在第k轮查询处理中,将目的网络地址与第k轮子网掩码进行与运算,得到第k轮的网段地址;k为正整数;第k轮子网掩码的掩码位数为最长掩码位数与(k-1)的差值;
查询单元1072,用于根据第k轮的网段地址,对字典树进行查询;
处理单元1073,用于若在字典树中查询到第k轮的网段地址对应的下一跳网关地址,则停止查询处理,根据下一跳网关地址确定与目的网络地址相关联的可用路由;
处理单元1073,还用于若在字典树中未查询到第k轮的网段地址对应的下一跳网关地址,则执行第k+1轮查询处理。
其中,网段确定单元1071、查询单元1072以及处理单元1073的具体功能实现方式可以参见上述图5所对应实施例中的步骤S303,这里不再进行赘述。
其中,字典树的节点层数为N;N为正整数;
请参见图8,查询单元1072可以包括:划分子单元10721、遍历子单元10722以及地址确定子单元10723。
划分子单元10721,用于对第k轮的网段地址进行划分,得到N个节点地址;
遍历子单元10722,用于根据N个节点地址对字典树进行N次层级节点遍历,得到第k轮的网段地址在字典树中的叶子节点;
地址确定子单元10723,用于若第k轮的网段地址对应的叶子节点映射有下一跳网关地址,则确定在字典树中查找到第k轮的网段地址对应的下一跳网关地址;
地址确定子单元10723,还用于若第k轮的网段地址对应的叶子节点中未映射有下一跳网关地址,则确定在字典树中未查找到第k轮的网段地址对应的下一跳网关地址。
其中,划分子单元10721、遍历子单元10722以及地址确定子单元10723的具体功能实现方式可以参见上述图5所对应实施例中的步骤S303,这里不再进行赘述。
其中,与目的网络地址相关联的可用路由包括至少两个路由发现协议分别对应的可用路由;
请参见图8,转发表更新模块108可以包括:协议确定单元1081、路由获取单元1082以及转发表更新单元1083。
协议确定单元1081,用于从至少两个路由发现协议中,获取优先级最高的路由发现协议,作为最优路由发现协议;
路由获取单元1082,用于从与目的网络地址相关联的可用路由中,获取与最优路由发现协议对应的可用路由,作为最优可用路由;
转发表更新单元1083,用于将目的网络地址和最优可用路由添加进转发信息表,得到更新转发信息表。
其中,协议确定单元1081、路由获取单元1082以及转发表更新单元1083的具体功能实现方式可以参见上述图5所对应实施例中的步骤S304,这里不再进行赘述。
请参见图8,上述网元装置1还可以包括:路由发现模块110、节点地址确定模块111、字典树更新模块112以及关联存储模块113。
路由发现模块110,用于基于路由发现协议获取新增网络地址和新增网络地址相关联的可用路由;可用路由包括下一跳网关地址;
节点地址确定模块111,用于根据路由信息表包括的字典树的字典层数N,对新增网络地址进行节点地址划分处理,得到网络地址对应的N个具有顺序关系的节点地址;N为正整数;
字典树更新模块112,用于根据N个节点地址更新字典树,得到更新后的字典树;更新后的字典树包括与新增网络地址对应的叶子节点;与新增网络地址对应的叶子节点包含N个节点地址中的最后一个节点地址;
关联存储模块113,用于将下一跳网关地址与新增网络地址对应的叶子节点,关联存储至路由信息表。
其中,路由发现模块110、节点地址确定模块111、字典树更新模块112以及关联存储模块113的具体功能实现方式可以参见上述图5所对应实施例中的可选实施例的描述,这里不再进行赘述。
请参见图8,字典树更新模块112可以包括:节点遍历单元1121、遍历判断单元1122以及更新单元1123。
节点遍历单元1121,用于根据N个节点地址中第i个节点地址,对字典树的第i层的目标节点集合进行遍历;i为小于N的正整数;i为1时,目标节点集合中的节点与字典树的根节点具有相连关系;i不为1时,目标节点集合中的节点与第i-1层的目标节点集合中包含第i-1个节点地址的节点具有相连关系;
遍历判断单元1122,用于若在字典树的第i层的目标节点集合中,遍历到包含第i个节点地址的节点,则继续根据N个节点地址中第i+1个节点地址,对字典树的第i+1层中的目标节点集合进行遍历;
遍历判断单元1122,还用于若在字典树的第i层的目标节点集合中,未遍历到包含第i个节点地址的节点,则创建包含第i个节点地址的新增节点,将包含第i个节点地址的新增节点添加至字典树的第i层的目标节点集合,继续根据N个节点地址中第i+1个节点地址,对更新后的字典树的第i+1层中的目标节点集合进行遍历;
更新单元1123,用于当在第N层中的目标节点集合中遍历到包含第N个节点地址对应的节点,或者在第N层中的目标节点集合中添加了包含第N个节点地址对应的新增节点时,获取更新后的字典树。
其中,节点遍历单元1121、遍历判断单元1122以及更新单元1123的具体功能实现方式可以参见上述图5所对应实施例中的可选描述,这里不再进行赘述。
本申请实施例中,在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;从至少两个可用路由中,确定与散列结果相匹配的目标路由;根据目标路由对目标数据报文进行路由转发。采用本申请实施例提供的方法,可以使得同一路由节点将具有相同特征的数据报文分发到相同的路由上,避免数据报文经不同路径到达目的地时,接收方因为不同路径的时延抖动差异较大而接收到乱序的报文,从而提高通信效率;同时通过当前网关相关联的随机盐值来调整路由的选择,可以将不同报文特征的数据报文更大概率的路由到不同的路由节点上,实现在整个路由过程中的负载均衡。
请参见图9,图9是本申请实施例提供的一种网元设备的结构示意图。如图9所示,该网元设备1000可以包括:处理器1001,网络端口1003和存储器1004,此外,上述网元设备1000还可以包括:至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,网络端口1003可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1004可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机可读存储介质的存储器1004中可以包括操作***、网络通信模块以及设备控制应用程序。在本申请实施例中,网元设备1000可以为网关。
在如图9所示的网元设备1000中,网络端口1003可提供网络通讯网元;而处理器1001可以用于调用存储器1004中存储的设备控制应用程序,以使网元设备1000执行:
在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对目的网络地址进行路由查询;
若在转发信息表中查找到与目的网络地址相关联的至少两个可用路由,则获取目标数据报文的报文特征信息;
对与当前网关相关联的随机盐值和报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
从至少两个可用路由中,确定与散列结果相匹配的目标路由;
根据目标路由对目标数据报文进行路由转发。
应当理解,本申请实施例中所描述的网元设备1000可执行前文图3或者图5所对应实施例中对该数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的网元装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3或者图5所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的网元装置或者上述网元设备的内部存储单元,例如网元设备的硬盘或内存。该计算机可读存储介质也可以是该网元设备的外部存储设备,例如该网元设备上配备的插接式硬盘,智能存储卡(smart mediacard,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该网元设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该网元设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。网元设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该网元设备执行前文图3、图5、任一个所对应实施例提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照网元一般性地描述了各示例的组成及步骤。这些网元究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的网元,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种路由处理方法,其特征在于,包括:
在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对所述目的网络地址进行路由查询;
若在所述转发信息表中查找到与所述目的网络地址相关联的至少两个可用路由,则获取所述目标数据报文的报文特征信息;
对与当前网关相关联的随机盐值和所述报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
从所述至少两个可用路由中,确定与所述散列结果相匹配的目标路由;
根据所述目标路由对所述目标数据报文进行路由转发。
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标数据报文的报文特征信息,包括:
从所述目标数据报文的报文头部信息中,获取所述目标数据报文对应的源网络地址和协议类型;
从所述目标数据报文对应的以太网帧头部信息中,获取所述目标数据报文对应的目的物理地址和源物理地址;
将所述目的网络地址、所述源网络地址、所述协议类型、所述目的物理地址以及所述源物理地址,确定为所述目标数据报文的报文特征信息。
3.根据权利要求1所述的方法,其特征在于,所述对与当前网关相关联的随机盐值和所述报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果,包括:
根据与当前网关相关联的随机盐值和所述报文特征信息,生成随机输入序列;
基于所述随机输入序列的长度对所述随机输入序列进行填充处理,得到具有标准长度的待处理序列;
对所述待处理序列进行循环偏移处理,得到用于进行路由负载均衡的散列结果。
4.根据权利要求1所述的方法,其特征在于,所述从所述至少两个可用路由中,确定与所述散列结果相匹配的目标路由,包括:
将所述散列结果转换成偏移值,将所述偏移值与所述至少两个可用路由的路由总数量进行余数运算,得到目标余数;
从所述至少两个可用路由中获取与所述目标余数对应的路由,将与所述目标余数对应的路由确定为与所述散列结果相匹配的目标路由。
5.根据权利要求1所述的方法,其特征在于,还包括:
若在所述转发信息表中未查找到与所述目的网络地址相关联的可用路由,则获取路由信息表;所述路由信息表包括用于存储网络地址的字典树以及与所述网络地址相关联的可用路由;
对所述字典树进行层级查询处理,得到与所述目的网络地址相关联的可用路由;
根据所述与所述目的网络地址相关联的可用路由更新所述转发信息表,得到更新转发信息表;
在所述更新转发信息表中对所述目的网络地址进行路由查询。
6.根据权利要求5所述的方法,其特征在于,所述对所述字典树进行层级查询处理,得到与目的网络地址相关联的可用路由,包括:
在第k轮查询处理中,将所述目的网络地址与第k轮子网掩码进行与运算,得到第k轮的网段地址;k为正整数;所述第k轮子网掩码的掩码位数为最长掩码位数与(k-1)的差值;
根据所述第k轮的网段地址,对所述字典树进行查询;
若在所述字典树中查询到所述第k轮的网段地址对应的下一跳网关地址,则停止查询处理,根据所述下一跳网关地址确定与目的网络地址相关联的可用路由;
若在所述字典树中未查询到所述第k轮的网段地址对应的下一跳网关地址,则执行第k+1轮查询处理。
7.根据权利要求6所述的方法,其特征在于,所述字典树的节点层数为N;N为正整数;所述根据所述第k轮的网段地址,对所述字典树进行查找,包括:
对所述第k轮的网段地址进行划分,得到N个节点地址;
根据所述N个节点地址对所述字典树进行N次层级节点遍历,得到所述第k轮的网段地址在所述字典树中的叶子节点;
若所述第k轮的网段地址对应的叶子节点映射有下一跳网关地址,则确定在所述字典树中查找到所述第k轮的网段地址对应的下一跳网关地址;
若所述第k轮的网段地址对应的叶子节点中未映射有下一跳网关地址,则确定在所述字典树中未查找到所述第k轮的网段地址对应的下一跳网关地址。
8.根据权利要求5所述的方法,其特征在于,所述与所述目的网络地址相关联的可用路由包括至少两个路由发现协议分别对应的可用路由;
所述根据所述与所述目的网络地址相关联的可用路由更新所述转发信息表,得到更新转发信息表,包括:
从所述至少两个路由发现协议中,获取优先级最高的路由发现协议,作为最优路由发现协议;
从所述与所述目的网络地址相关联的可用路由中,获取与所述最优路由发现协议对应的可用路由,作为最优可用路由;
将所述目的网络地址和所述最优可用路由添加进所述转发信息表,得到更新转发信息表。
9.根据权利要求5所述的方法,其特征在于,还包括:
基于路由发现协议获取新增网络地址和所述新增网络地址相关联的可用路由;所述可用路由包括下一跳网关地址;
根据所述路由信息表包括的字典树的字典层数N,对所述新增网络地址进行节点地址划分处理,得到所述网络地址对应的N个具有顺序关系的节点地址;N为正整数;
根据所述N个节点地址更新所述字典树,得到更新后的字典树;所述更新后的字典树包括与所述新增网络地址对应的叶子节点;与所述新增网络地址对应的叶子节点包含所述N个节点地址中的最后一个节点地址;
将所述下一跳网关地址与所述新增网络地址对应的叶子节点,关联存储至所述路由信息表。
10.根据权利要求9所述的方法,其特征在于,所述根据所述N个节点地址更新所述字典树,得到更新后的字典树,包括:
根据所述N个节点地址中第i个节点地址,对所述字典树的第i层的目标节点集合进行遍历;i为小于N的正整数;i为1时,所述目标节点集合中的节点与所述字典树的根节点具有相连关系;i不为1时,所述目标节点集合中的节点与第i-1层的目标节点集合中包含第i-1个节点地址的节点具有相连关系;
若在所述字典树的第i层的目标节点集合中,遍历到包含第i个节点地址的节点,则继续根据所述N个节点地址中第i+1个节点地址,对所述字典树的第i+1层中的目标节点集合进行遍历;
若在所述字典树的第i层的目标节点集合中,未遍历到包含第i个节点地址的节点,则创建包含第i个节点地址的新增节点,将所述包含第i个节点地址的新增节点添加至所述字典树的第i层的目标节点集合,继续根据所述N个节点地址中第i+1个节点地址,对所述更新后的字典树的第i+1层中的目标节点集合进行遍历;
当在第N层中的目标节点集合中遍历到包含第N个节点地址对应的节点,或者在第N层中的目标节点集合中添加了包含第N个节点地址对应的新增节点时,获取更新后的字典树。
11.一种网元装置,其特征在于,包括:
路由查询模块,用于在用户态线程中获取携带目的网络地址的目标数据报文,在转发信息表中对所述目的网络地址进行路由查询;
特征获取模块,用于若在所述转发信息表中查找到与所述目的网络地址相关联的至少两个可用路由,则获取所述目标数据报文的报文特征信息;
散列模块,用于对与当前网关相关联的随机盐值和所述报文特征信息进行散列处理,得到用于进行路由负载均衡的散列结果;
路由确定模块,用于从所述至少两个可用路由中,确定与所述散列结果相匹配的目标路由;
转发模块,用于根据所述目标路由对所述目标数据报文进行路由转发。
12.一种网元设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以使所述网元设备执行权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-10任一项所述的方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中,且适于由处理器读取并执行,以使得具有所述处理器的网元设备执行权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111081924.5A CN113726907B (zh) | 2021-09-15 | 2021-09-15 | 一种路由处理方法、网元设备、装置以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111081924.5A CN113726907B (zh) | 2021-09-15 | 2021-09-15 | 一种路由处理方法、网元设备、装置以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113726907A true CN113726907A (zh) | 2021-11-30 |
CN113726907B CN113726907B (zh) | 2024-03-19 |
Family
ID=78684242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111081924.5A Active CN113726907B (zh) | 2021-09-15 | 2021-09-15 | 一种路由处理方法、网元设备、装置以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113726907B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115022242A (zh) * | 2022-08-08 | 2022-09-06 | 深圳高灯计算机科技有限公司 | 网络层识别方法、装置、计算机设备和存储介质 |
CN115065632A (zh) * | 2022-03-31 | 2022-09-16 | 重庆金美通信有限责任公司 | 一种轻量化的树形网络数据转发方法 |
CN116390189A (zh) * | 2023-06-05 | 2023-07-04 | 微网优联科技(成都)有限公司 | 一种路由规划方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841485A (zh) * | 2010-05-28 | 2010-09-22 | 华为技术有限公司 | 组播流量分担的方法及相关装置 |
CN102307136A (zh) * | 2011-07-06 | 2012-01-04 | 杭州华三通信技术有限公司 | 报文处理方法及其装置 |
CN104168201A (zh) * | 2014-08-06 | 2014-11-26 | 福建星网锐捷网络有限公司 | 一种多路径转发的方法及装置 |
CN106453091A (zh) * | 2016-10-28 | 2017-02-22 | 武汉烽火网络有限责任公司 | 路由器转发平面的等价路由管理方法和装置 |
CN108259326A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 路由表更新方法、装置、分配节点以及叶报文转发设备 |
CN108809940A (zh) * | 2018-05-04 | 2018-11-13 | 四川理工学院 | 电网***服务器与客户端交互加密方法 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
-
2021
- 2021-09-15 CN CN202111081924.5A patent/CN113726907B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841485A (zh) * | 2010-05-28 | 2010-09-22 | 华为技术有限公司 | 组播流量分担的方法及相关装置 |
CN102307136A (zh) * | 2011-07-06 | 2012-01-04 | 杭州华三通信技术有限公司 | 报文处理方法及其装置 |
CN104168201A (zh) * | 2014-08-06 | 2014-11-26 | 福建星网锐捷网络有限公司 | 一种多路径转发的方法及装置 |
CN106453091A (zh) * | 2016-10-28 | 2017-02-22 | 武汉烽火网络有限责任公司 | 路由器转发平面的等价路由管理方法和装置 |
CN108259326A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 路由表更新方法、装置、分配节点以及叶报文转发设备 |
CN108809940A (zh) * | 2018-05-04 | 2018-11-13 | 四川理工学院 | 电网***服务器与客户端交互加密方法 |
CN111049746A (zh) * | 2018-10-12 | 2020-04-21 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115065632A (zh) * | 2022-03-31 | 2022-09-16 | 重庆金美通信有限责任公司 | 一种轻量化的树形网络数据转发方法 |
CN115065632B (zh) * | 2022-03-31 | 2023-11-17 | 重庆金美通信有限责任公司 | 一种轻量化的树形网络数据转发方法 |
CN115022242A (zh) * | 2022-08-08 | 2022-09-06 | 深圳高灯计算机科技有限公司 | 网络层识别方法、装置、计算机设备和存储介质 |
CN115022242B (zh) * | 2022-08-08 | 2022-11-18 | 深圳高灯计算机科技有限公司 | 网络层识别方法、装置、计算机设备和存储介质 |
CN116390189A (zh) * | 2023-06-05 | 2023-07-04 | 微网优联科技(成都)有限公司 | 一种路由规划方法、装置、电子设备及存储介质 |
CN116390189B (zh) * | 2023-06-05 | 2023-08-15 | 微网优联科技(成都)有限公司 | 一种路由规划方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113726907B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110313162B (zh) | 促进在网络环境中向多个接收者的内容递送的***和方法 | |
US11082342B2 (en) | System and method to facilitate content forwarding using Bit Index Explicit Replication (BIER) in an Information-Centric Networking (ICN) environment | |
US11277371B2 (en) | Content routing in an IP network | |
CN113726907B (zh) | 一种路由处理方法、网元设备、装置以及可读存储介质 | |
US10164910B2 (en) | Method and apparatus for an information-centric MAC layer | |
CN105721311B (zh) | 一种用于更新链路状态信息的方法及*** | |
EP2869536B1 (en) | System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers | |
US20180102965A1 (en) | Unicast branching based multicast | |
US10791051B2 (en) | System and method to bypass the forwarding information base (FIB) for interest packet forwarding in an information-centric networking (ICN) environment | |
EP2869515A1 (en) | System and method for minimum path mtu discovery in content centric networks | |
EP2869511B1 (en) | Hash-based forwarding of packets with hierarchically structured variable-length identifiers over ethernet | |
WO2018036254A1 (zh) | 报文转发方法及装置 | |
CN109547354B (zh) | 负载均衡方法、装置、***、核心层交换机及存储介质 | |
EP2869510A1 (en) | Express header for packets with hierarchically structured variable-length identifiers | |
EP3446460B1 (en) | Content routing in an ip network that implements information centric networking | |
CN101515892B (zh) | 一种对等网络中实现多资源处理的方法、设备及*** | |
CN108199960B (zh) | 组播数据报文转发方法、入口路由桥、出口路由桥及*** | |
US10986209B2 (en) | Secure and reliable on-demand source routing in an information centric network | |
US20220337519A1 (en) | Information centric network routing | |
CN102857352B (zh) | 基于叠加网的组播、广播方法及*** | |
CN117376233A (zh) | 数据处理方法、装置及*** | |
EP1938203A2 (en) | Naming system layer | |
CN115834722A (zh) | 一种数据处理方法、装置、网元设备以及可读存储介质 | |
CN116723144A (zh) | 组播业务数据传输方法及装置 | |
CN117615017A (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 |