CN117579547A - 报文路由加速方法、装置、主设备及介质 - Google Patents

报文路由加速方法、装置、主设备及介质 Download PDF

Info

Publication number
CN117579547A
CN117579547A CN202311610413.7A CN202311610413A CN117579547A CN 117579547 A CN117579547 A CN 117579547A CN 202311610413 A CN202311610413 A CN 202311610413A CN 117579547 A CN117579547 A CN 117579547A
Authority
CN
China
Prior art keywords
target
address
message
hop
routing
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.)
Pending
Application number
CN202311610413.7A
Other languages
English (en)
Inventor
郎爽
黄明亮
鄢贵海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202311610413.7A priority Critical patent/CN117579547A/zh
Publication of CN117579547A publication Critical patent/CN117579547A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/76Routing in software-defined topologies, e.g. routing between virtual machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/695Types of network addresses using masks or ranges of addresses
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供了一种报文路由加速方法、装置、主设备及介质。该报文路由加速方法包括:执行与目标报文的收发关联的目标应用程序,在目标应用程序内设置挂钩点;当目标应用程序执行到挂钩点时,执行伯克利包滤波程序,获取目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址;校验目标子网地址和目标子网掩码;将目标报文的下一跳目标地址修改为下一跳网关地址,并基于下一跳目标地址确定下一跳网络接口;将目标报文经由下一跳网络接口路由到下一跳目标地址,从而进入专用数据处理器。本公开实施例能够减少报文路由加速中的主设备处理负荷,减少资源浪费,提高路由效率。

Description

报文路由加速方法、装置、主设备及介质
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种报文路由加速方法、装置、主设备及介质。
背景技术
报文在发送前或接收后需要进行路由处理,如基于目的地找到下一跳节点,封装报文头等。为了提高主节点性能和降低延迟,目前采用专用数据处理器(DPU)进行路由加速处理。主节点一部分需要加速处理的报文,拦截到DPU中进行流量加速。但是拦截到DPU中进行处理前,目前在主设备中报文也要经过内核协议栈的处理,造成重复工作,浪费资源。另外,采用传统的路由方式,当路由表中路由条目的数量过多时,可能对路由性能产生影响。
发明内容
有鉴于此,本申请实施例提供一种报文路由加速方法、装置、主设备及介质,能够减少报文路由加速中的主设备处理负荷,减少资源浪费,提高路由效率。
根据本申请实施例的第一方面,提供了一种报文路由加速方法,用于主设备,所述主设备耦接有专用数据处理器,所述报文路由加速方法包括:
执行与目标报文的收发关联的目标应用程序,在所述目标应用程序内设置挂钩点;
当所述目标应用程序执行到所述挂钩点时,执行伯克利包滤波程序,获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,所述下一跳网关地址指向所述专用数据处理器的地址;
校验所述目标子网地址和所述目标子网掩码;
将所述目标报文的下一跳目标地址修改为所述下一跳网关地址,并基于所述下一跳目标地址确定下一跳网络接口;
将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器。
可选地,所述目标应用程序还包含内核协议栈处理程序段;
所述在所述目标应用程序内设置挂钩点,包括:将所述挂钩点在所述目标应用程序内设置在所述内核协议栈处理程序段之前,以使所述目标报文未经所述内核协议栈处理而进入所述专用数据处理器。
可选地,所述获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,包括:
从所述目标报文中获取五元组信息;
在预先设置的映射库中,基于所述五元组信息,查找到所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址。
可选地,所述映射库通过以下过程预先设置:
获取用户设置的路由规则;
基于所述路由规则,确定用于构建所述映射库的键和值,其中,所述键和值关联于所述五元组信息、所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址;
基于所述键和所述值,构建所述映射库。
可选地,所述映射库的设置过程还包括:
接收对所述路由规则的定期更新;
基于定期更新的所述路由规则,修改所述映射库。
可选地,在校验所述目标子网地址和所述目标子网掩码之前,所述报文路由加速方法还包括:
从所述目标报文中获取五元组信息;
验证所述五元组信息中的协议号是目标协议号。
可选地,在校验所述目标子网地址和所述目标子网掩码之前,所述报文路由加速方法还包括:通过所述伯克利包滤波程序中的第一指针,获取当前跳网络接口;
所述基于所述下一跳目标地址确定下一跳网络接口,包括:基于所述当前跳网络接口,从所述下一跳目标地址的多个候选网络接口中确定所述下一跳网络接口。
可选地,所述将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,包括:
基于所述目标报文相对于所述主设备的传播方向、是否支持跨命名空间重定向、是否含有数据链路层地址,确定目标报文发送到所述下一跳网络接口的发送方式;
以所述发送方式,发送所述目标报文到所述下一跳网络接口,并路由到所述下一跳目标地址。
可选地,在将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器之后,所述报文路由加速方法还包括:返回下一跳进入成功标志,从而将所述目标报文传递到网络协议栈的下一阶段。
根据本申请实施例的第二方面,提供了一种报文路由加速装置,位于主设备,所述主设备耦接有专用数据处理器,所述报文路由加速装置包括:
第一执行单元,用于执行与目标报文的收发关联的目标应用程序,在所述目标应用程序内设置挂钩点;
第一获取单元,用于当所述目标应用程序执行到所述挂钩点时,执行伯克利包滤波程序,获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,所述下一跳网关地址指向所述专用数据处理器的地址;
校验单元,用于校验所述目标子网地址和所述目标子网掩码;
第一修改单元,用于将所述目标报文的下一跳目标地址修改为所述下一跳网关地址,并基于所述下一跳目标地址确定下一跳网络接口;
路由单元,用于将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器。
根据本申请实施例的第三方面,提供了一种主设备,包括:
存储器,用于存储计算机程序指令;
处理器,用于执行所述计算机程序指令,以执行如上所述的报文路由加速方法。
根据本申请实施例的第四方面,提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码被处理器运行时,使处理器执行如上所述的报文路由加速方法。
根据本申请实施例提供的报文路由加速方法,在执行与目标报文的收发关联的目标应用程序时,由于在所述目标应用程序内设置了挂钩点,程序运行到挂钩点时,跳到伯克利包滤波程序进行处理,绕过了内核协议栈的处理,相比于现有技术避免了重复处理,提高了效率。通过伯克利包滤波程序能快速获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,利用目标子网地址、目标子网掩码进行校验,利用下一跳网关地址快速找到下一跳网络接口,通过下一跳网络接口进入DPU。DPU可以继续路由。本公开实施例通过设置挂钩点绕开了内核协议栈的处理,跳到伯克利包滤波程序克服了路由表路由条目过多时的查找低效,减少了报文路由加速中的主设备处理负荷,减少了资源浪费,提高了路由效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种报文路由加速方法应用于的系统构架图;
图2是本申请实施例提供的一种报文路由加速方法的流程图;
图3是图2的步骤220的一种具体实现流程图;
图4是根据本申请一个实施例的映射库设置过程的流程图;
图5是本申请实施例提供的一种报文路由加速方法的流程图;
图6是本申请实施例提供的一种报文路由加速装置的框图;
图7是根据本申请一个实施例的主设备结构图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
报文在发送前或接收后需要进行路由处理,如基于目的地找到下一跳节点,封装报文头等。为了提高主节点性能和降低延迟,目前采用专用数据处理器(DPU)。主节点一部分需要加速处理的报文,拦截到DPU中进行流量加速。但是拦截到DPU中进行处理前,目前在主设备中报文也要经过内核协议栈的处理,造成重复工作,浪费资源。另外,采用传统的路由方式,当路由表中路由条目的数量过多时,可能对路由性能产生影响。
图1是本申请实施例提供的一种报文路由加速方法应用于的系统构架图。该体系构架包括主设备、和与主设备耦接的专用数据处理器。主设备是本公开实施例要发送或接收报文的主体。专用数据处理器是提高主设备在某一方面的处理速度的附属设备。
主设备可以是客户端,也可以是服务器。它可以体现为桌面计算机、膝上型计算机、手机、PDA、专用终端,也可以体现为若干终端组成的集群,另外,它还可以是一台终端上划分出来的一部分,如虚拟机。专用数据处理器可以体现为附属设备(如插接在卡槽上的卡),也可以体现为与主设备通过接口连接的另一台独立的设备。
主设备包括用户层和数据层。用户层是能够完成用户任务、且可接收用户的控制指令的层。数据层是执行用户层中的各种用户任务在数据层面上的处理的层。数据层在数据层面执行用户层的任务。
用户层包括虚拟机容器、应用和映射库控制器。虚拟机容器容纳虚拟机。对于云主设备来说,虚拟机是为云外的客户端维护的、执行客户端需要执行的程序的空间。一个虚拟机对应于一个云外客户端。应用是主设备完成各种任务需要执行的应用程序。例如,主设备要收发报文,就要执行与报文收发关联的目标应用程序。映射库控制器是对下面所述的映射库起控制作用的部件。
数据层包括设备驱动器、网络堆栈、映射库等。设备驱动器是对主设备进行驱动的部件。网络堆栈是用于存放在应用程序运行时需要的变量和附加程序的空间。映射库是本公开实施例中特有的用于对应存储路由加速中需要的五元组信息、目标子网地址、下一跳网关地址等路由信息的库。网络堆栈包括伯克利包滤波程序。伯克利包滤波程序(BPF)是一种过滤包的方法,能够避免在内核空间复制无用的数据到用户空间。BPF、映射库、映射库控制器是本公开实施例的报文路由加速方法的核心部件。
如图2所示,提供了一种报文路由加速方法,用于如图1中的主设备。报文路由加速方法包括:
步骤210、执行与目标报文的收发关联的目标应用程序,在目标应用程序内设置挂钩点;
步骤220、当目标应用程序执行到挂钩点时,执行伯克利包滤波程序,获取目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,下一跳网关地址指向专用数据处理器的地址;
步骤230、校验目标子网地址和目标子网掩码;
步骤240、将目标报文的下一跳目标地址修改为下一跳网关地址,并基于下一跳目标地址确定下一跳网络接口;
步骤250、将目标报文经由下一跳网络接口路由到下一跳目标地址,从而进入专用数据处理器。
步骤210中的目标报文是本公开实施例中主设备要发送或接收的报文。当目标报文发送或接收时,需要到DPU中进行路由加速处理。为了避免内核协议栈等重复处理,需要本公开实施例的报文路由加速方法。目标应用程序是执行与目标报文关联的收发处理的程序。主设备要收发目标报文,就要执行与目标报文收发关联的目标应用程序。挂钩点是指目标应用程序中的一个点,在该点设置跳转语句,跳转到程序外的另一个程序。在本公开实施例,设置的跳转语句直接跳转到伯克利包过滤程序。
在一个实施例中,目标应用程序还包含内核协议栈处理程序段。内核协议栈处理程序段是指向内核协议栈的程序段。相关技术中,即使目标报文需要拦截到DPU中进行流量加速。也要在拦截到DPU中进行处理前,经过内核协议栈的处理,造成重复执行。本实施例中,可以将挂钩点在目标应用程序内设置在内核协议栈处理程序段之前,这样目标报文就会首先在挂钩点跳转到伯克利包过滤程序进行处理,不用经内核协议栈处理,而进入专用数据处理器,避免重复执行,提高路由加速效率。
在步骤220中,当目标应用程序执行到挂钩点时,跳转到伯克利包滤波程序。伯克利包滤波程序会从图1的映射库中获取目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址。具体地,在一个实施例中,如图3所示,该过程包括:
步骤2201、从目标报文中获取五元组信息;
步骤2202、在预先设置的映射库中,基于五元组信息,查找到目标子网地址、目标子网掩码、和下一跳网关地址。
五元组信息是指目标报文的源地址、源端口号、协议号、目的地地址、目的地端口号。它指明了报文传输中关键的多个要素。源地址是发送目标报文的发送端设备的物理地址。源端口号是发送目标报文的发送端设备发出该目标报文的端口号。协议号是指示从源到目的地发送目标报文所用的传输协议的标识。目的地地址是目标报文所要到的接收端设备的物理地址。目的地端口号是目标报文所要到的接收端设备接收该目标报文的端口号。五元组信息可以包含在目标报文的报头中。在步骤2201中,可以从目标报文的报头中获取五元组信息。
目的地地址是目标报文所要到的接收端设备的物理地址。它是一个具体的地址。但是,在路由识别中,该具体的地址位于哪个网络的哪个子网,可能对于识别目标报文的下面几跳的路由更有意义。因此,在路由中更关心的不是具体的五元组,而可能是要目标报文要到的子网。目标报文的目的地地址例如32.101.37.99。目标报文要到的目的地所位于的子网地址叫做目标子网地址,例如32.101。同一子网地址的节点的地址前面的字段可能是相同的,后面的字段才显示出区别。例如,32.101.37.99和32.101.21.98是同一子网地址32.101下面的二个具体节点地址。为了确定具体节点地址所属的子网,可以将具体节点地址后面的一些字段掩住。将子网中的具体节点地址后面的字段掩住的代码叫做子网掩码,例如*.*。例如,用子网掩码*.*将具体节点地址32.101.37.99最后的字段掩上,得到32.101.*.*,就得到了目标子网地址。
下一跳网关地址是指路由中的当前跳的下一跳的网关地址。对于主设备通过DPU进行报文转发的情况,下一跳网关地址就是指DPU的地址。
由于映射库存储了五元组信息、目标子网地址、目标子网掩码、和下一跳网关地址等的映射关系,通过查找映射库,就能够基于五元组信息,查找到目标子网地址、目标子网掩码、和下一跳网关地址。这些信息是完成必要的校验和下一跳的路由所需要的。
相关技术中,在容器网络接口的配置文件中体现容器的路由明细。那么对于不同的容器明细路由不同的场景,就没有办法应用,需要通过第三方插件去实现动态的改变容器内路由。步骤2201-2202中,通过简单的查找映射库的方式,可以基于五元组信息,快速查找到后续路由所需要的目标子网地址、目标子网掩码、和下一跳网关地址,且映射库中的映射关系可以根据映射库控制器的控制动态改变。这样,就可以通过动态配置映射库中的映射关系,达到能满足不同的场景中路由规则的改变的需要。
在一个实施例中,如图4所示,映射库可以通过以下过程预先设置:
步骤310、获取用户设置的路由规则;
步骤320、基于路由规则,确定用于构建映射库的键和值,其中,键和值关联于五元组信息、目标子网地址、目标子网掩码、和下一跳网关地址;
步骤330、基于键和值,构建映射库。
步骤310中的路由规则是在目标报文路由时需要遵循的规则。例如,将目标报文先路由到与当前跳节点距离最近的下一跳网关地址,或将目标报文先路由到负载最小的下一跳网关地址等。另外,也可以直接指定目标报文需要经过的每一跳节点。该路由规则可以由用户设置,例如通过向用户呈现设置界面,用户在设置界面中输入规则,或直接输入需要经过的每一跳节点。
在步骤320中,在键值对存储中,键是指查找存储内容用的关键字,值表示存储内容。映射库要存储五元组信息、目标子网地址、目标子网掩码、和下一跳网关地址等信息。可以以其中一个信息作为键,其它信息作为值。也可以以一部分信息导出的信息作为键,其它信息作为值。但无论哪个信息作为键,哪个信息作为值,都可以基于这些信息中的一部分信息查找映射库,找到另一部分信息。例如,以下一跳网关地址作为键,以该下一跳网关地址所可能通往的目标子网地址和目标子网掩码等作为值。也可以以目标子网地址作为键,该目标子网地址可能具有的其它信息作为值。
当路由规则确定后,就可以根据该路由规则针对某一确定的键,列举出可能对应的值,从而在步骤320中构建出键和值。例如,路由规则是整个路由上节点最少。那么,对于下一跳节点A来说,就可以列出当目的地节点是哪些节点时,经过下一跳为A会使整个路径的节点最少,从而列出键对应的值。在列出键对应的值之后,就可以在步骤330中,基于键和值,构建映射库。
步骤310-330的优点是,通过对映射库的控制,可以基于路由规则将路由逻辑固化到目标应用程序的挂钩点上,实现更丰富的自定义空间。将相关技术中静态路由表的方案替换成映射库由路由规则动态调节的方案,实现了路由加速的灵活动态控制。
另外,如图4所示,在一个实施例中,映射库的设置过程还包括:
步骤340、接收对路由规则的定期更新;
步骤350、基于定期更新的路由规则,修改映射库。
步骤340中,可以向用户显示路由规则的更新界面。接收用户对更新界面上路由规则的更新。用户可以直接在更新界面上对当前的路由规则进行更改,也可以在界面上重新输入路由规则,以替代之前的路由规则。用户也可以在更新界面上增加路由规则。定期例如是每24小时更新一次。
在步骤350中,当路由规则被定期更新后,就可以遵循类似上述步骤320-330的流程,基于更新后的路由规则,确定用于构建映射库的更新的键和值,并基于更新的键和值,更新映射库。
步骤340-350的优点是,可以通过对路由规则的定期更新,实现映射库的定期更新,使得映射库的内容能够反映最新的路由要求。而且对映射库的定期更新对要发送接收报文的主设备来说是无感的,不需要进行适配,具有良好的友好度。
步骤220中获取的目标子网地址和目标子网掩码是为了校验五元组中的目的地地址是否正确。如果五元组的目的地地址不正确,则不能进行正确的路由加速。步骤220中获取的下一跳网关地址才是真正与确定路由有关的,因为在路由的当前跳,只需确定当前跳的下一跳地址,就能继续路由寻址下去。
在步骤230中,校验目标子网地址和目标子网掩码。校验方法可以是:将五元组中的目的地地址施加目标子网掩码,如果施加目标子网掩码的结果等于目标子网地址,则校验成功。例如,目的地地址是32.101.37.99,目标子网掩码是*.*。目标子网地址是32.100.*.*。由于将目标子网掩码施加于目的地地址的结果是32.101.*.*,与目标子网地址不一致,因此,校验失败,不进行后续步骤。如果校验成功,进行后续步骤。
在步骤240中,将目标报文的下一跳目标地址修改为下一跳网关地址,并基于下一跳目标地址确定下一跳网络接口。
在步骤230已经得到了下一跳网关地址,对于DPU流量加速的情形,它应该对应于DPU的地址。因此,将目标报文的下一跳目标地址字段修改为下一跳网关地址。这样,该目标报文下一跳将路由到下一跳网关地址。下一跳网络接口是指进入下一跳目标网关的接口。每个目标网关有多个候选接口。此时,需要在多个候选接口中选定用于进入下一跳网关地址的下一跳网络接口。例如,下一跳网关具有网络接口1-5。可以选择网络接口3作为下一跳网络接口。
在一个实施例中,在步骤240之前,报文路由加速方法还包括:通过伯克利包滤波程序中的第一指针,获取当前跳网络接口;步骤240包括:基于当前跳网络接口,从下一跳目标地址的多个候选网络接口中确定下一跳网络接口。
第一指针是伯克利包滤波程序中专门用于指示当前跳网络接口的指针。因此,在步骤240之前,可以通过伯克利包滤波程序中的第一指针,获取第一指针指向的当前跳网络接口,以通过该接口进入映射库等,执行相应处理。在步骤240确定下一跳网络接口时,可以根据当前跳网络接口确定其更容易跳到的网络接口,作为下一跳网络接口。
该实施例通过第一指针确定当前跳网络接口,并基于当前跳网络接口确定下一跳网络接口,操作简单,开销小,找到的下一跳网络接口更容易进入,从而节省操作开销,提高路由寻址效率。
在步骤250中,将目标报文经由下一跳网络接口路由到下一跳目标地址,从而进入专用数据处理器。
具体地,在一个实施例中,基于目标报文相对于主设备的传播方向、是否支持跨命名空间重定向、是否含有数据链路层地址,确定目标报文发送到下一跳网络接口的发送方式。然后,以该发送方式,发送目标报文到下一跳网络接口,并路由到下一跳目标地址。
当主设备发送目标报文时,目标报文相对于主设备的传播方向是流出。当主设备接收目标报文时,目标报文相对于主设备的传播方向是流入。
跨命名空间重定向是指寻址可以跨多个DPU针对多个DPU连接的多个主设备执行。例如,将DPU1将与DPU1连接的主设备1中的虚拟机3的目标报文发送给与DPU2连接的主设备2中的虚拟机5。
数据链路层即L2层,负责网络接口卡之间的通信。数据链路层地址是指L2层地址,包括MAC地址和ARP地址。
例如,可以根据下表1确定目标报文发送到下一跳网络接口的三种发送方式:bpf_redirect、bpf_redirect_peer和bpf_redirect_neighbor。
表1
上述实施例的优点是,基于目标报文相对于主设备的传播方向、是否支持跨命名空间重定向、是否含有数据链路层地址,确定目标报文发送到下一跳网络接口的发送方式,使得发送方式的确定综合考虑各种因素,比较全面,提高了路由加速效率。
如图5所示,在一个实施例中,在步骤230之前,报文路由加速方法还包括:
步骤221、从目标报文中获取五元组信息;
步骤222、验证五元组信息中的协议号是目标协议号。
目标协议号是期望进行路由加速的协议号。如果目标报文的传输遵循一些协议,例如ipv4,可能期望对其路由进行加速。如果遵循另一些协议,可能不期望对其路由进行加速。因此,在步骤221中,从目标报文中获取五元组信息。在步骤222中,验证五元组信息中的协议号是目标协议号,才对其进行路由加速,否则不予进行路由加速。
该实施例在路由到DPU加速之前,不但要检测目的地地址是否属于目标子网,还判定采用的通信协议是否是目标协议,验证的条件比较严格,使得对于确实应该进行DPU加速的目标报文才进行加速,合理地利用了资源,均衡资源占用。
另外,如图5所示,在步骤250之后,报文路由加速方法还包括:步骤260、返回下一跳进入成功标志XDP_PASS,从而将目标报文传递到网络协议栈的下一阶段。即,允许目标报文继续传输而不进行丢弃,XDP_PASS会将目标报文传递到网络协议栈的下一阶段,而不会中断正常的目标报文传输流程。
如图6所示,根据本公开的一个实施例,提供了一种报文路由加速装置400,位于主设备内,所述主设备耦接有专用数据处理器,所述报文路由加速装置400包括:
第一执行单元410,用于执行与目标报文的收发关联的目标应用程序,在所述目标应用程序内设置挂钩点;
第一获取单元420,用于当所述目标应用程序执行到所述挂钩点时,执行伯克利包滤波程序,获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,所述下一跳网关地址指向所述专用数据处理器的地址;
校验单元430,用于校验所述目标子网地址和所述目标子网掩码;
第一修改单元440,用于将所述目标报文的下一跳目标地址修改为所述下一跳网关地址,并基于所述下一跳目标地址确定下一跳网络接口;
路由单元450,用于将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器。
可选地,所述目标应用程序还包含内核协议栈处理程序段;
第一执行单元410具体用于:将所述挂钩点在所述目标应用程序内设置在所述内核协议栈处理程序段之前,以使所述目标报文未经所述内核协议栈处理而进入所述专用数据处理器。
可选地,第一获取单元420具体用于:
从所述目标报文中获取五元组信息;
在预先设置的映射库中,基于所述五元组信息,查找到所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址。
可选地,所述映射库通过以下过程预先设置:
获取用户设置的路由规则;
基于所述路由规则,确定用于构建所述映射库的键和值,其中,所述键和值关联于所述五元组信息、所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址;
基于所述键和所述值,构建所述映射库。
可选地,所述映射库的设置过程还包括:
接收对所述路由规则的定期更新;
基于定期更新的所述路由规则,修改所述映射库。
可选地,所述报文路由加速装置400还包括:
第二获取单元(未示),用于从所述目标报文中获取五元组信息;
验证单元(未示),用于验证所述五元组信息中的协议号是目标协议号。
可选地,报文路由加速装置400还包括:第二获取单元(未示),用于通过所述伯克利包滤波程序中的第一指针,获取当前跳网络接口;
第一修改单元440具体用于:基于所述当前跳网络接口,从所述下一跳目标地址的多个候选网络接口中确定所述下一跳网络接口。
路由单元450具体用于:
基于所述目标报文相对于所述主设备的传播方向、是否支持跨命名空间重定向、是否含有数据链路层地址,确定目标报文发送到所述下一跳网络接口的发送方式;
以所述发送方式,发送所述目标报文到所述下一跳网络接口,并路由到所述下一跳目标地址。
可选地,所述报文路由加速装置400还包括:返回单元(未示),用于返回下一跳进入成功标志,从而将所述目标报文传递到网络协议栈的下一阶段。
本实施例的报文路由加速装置400用于实现前述多个方法实施例中相应的报文路由加速方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的报文路由加速装置400中的各个单元的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
下面参照图7来描述根据本申请的实施方式的专用数据处理器500。图7显示的专用数据处理器500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
图7所示的专用数据处理器500可以包括但不限于:至少一个处理单元510、至少一个存储单元520、连接不同系统组件(包括存储单元520和处理单元510)的总线530。存储单元520存储有程序代码,程序代码可以被处理单元510执行,使得处理单元510,可以执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。
存储单元520可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)5201和/或高速缓存存储单元5202,还可以进一步包括只读存储单元(ROM)5203。
存储单元520还可以包括具有一组(至少一个)程序模块5205的程序/实用工具5204,这样的程序模块5205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线530可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
专用数据处理器500也可以与一个或多个外部设备600(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与专用数据处理器500交互的设备通信,和/或与使得该专用数据处理器500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,专用数据处理器500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器560通过总线530与专用数据处理器500的其它模块通信。应当明白,尽管图中未示出,专用数据处理器500可以使用其它硬件和/或软件模块实现,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。
在本申请的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本申请的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。

Claims (10)

1.一种报文路由加速方法,其特征在于,用于主设备,所述主设备耦接有专用数据处理器,所述报文路由加速方法包括:
执行与目标报文的收发关联的目标应用程序,在所述目标应用程序内设置挂钩点;
当所述目标应用程序执行到所述挂钩点时,执行伯克利包滤波程序,获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,所述下一跳网关地址指向所述专用数据处理器的地址;
校验所述目标子网地址和所述目标子网掩码;
将所述目标报文的下一跳目标地址修改为所述下一跳网关地址,并基于所述下一跳目标地址确定下一跳网络接口;
将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器。
2.根据权利要求1所述的报文路由加速方法,其特征在于,所述目标应用程序还包含内核协议栈处理程序段;
所述在所述目标应用程序内设置挂钩点,包括:将所述挂钩点在所述目标应用程序内设置在所述内核协议栈处理程序段之前,以使所述目标报文未经所述内核协议栈处理而进入所述专用数据处理器。
3.根据权利要求1所述的报文路由加速方法,其特征在于,所述获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,包括:
从所述目标报文中获取五元组信息;
在预先设置的映射库中,基于所述五元组信息,查找到所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址。
4.根据权利要求3所述的报文路由加速方法,其特征在于,所述映射库通过以下过程预先设置:
获取用户设置的路由规则;
基于所述路由规则,确定用于构建所述映射库的键和值,其中,所述键和值关联于所述五元组信息、所述目标子网地址、所述目标子网掩码、和所述下一跳网关地址;
基于所述键和所述值,构建所述映射库。
5.根据权利要求4所述的报文路由加速方法,其特征在于,所述映射库的设置过程还包括:
接收对所述路由规则的定期更新;
基于定期更新的所述路由规则,修改所述映射库。
6.根据权利要求1所述的报文路由加速方法,其特征在于,在校验所述目标子网地址和所述目标子网掩码之前,所述报文路由加速方法还包括:
从所述目标报文中获取五元组信息;
验证所述五元组信息中的协议号是目标协议号。
7.根据权利要求1所述的报文路由加速方法,其特征在于,所述将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,包括:
基于所述目标报文相对于所述主设备的传播方向、是否支持跨命名空间重定向、是否含有数据链路层地址,确定目标报文发送到所述下一跳网络接口的发送方式;
以所述发送方式,发送所述目标报文到所述下一跳网络接口,并路由到所述下一跳目标地址。
8.一种报文路由加速装置,其特征在于,位于主设备,所述主设备耦接有专用数据处理器,所述报文路由加速装置包括:
第一执行单元,用于执行与目标报文的收发关联的目标应用程序,在所述目标应用程序内设置挂钩点;
第一获取单元,用于当所述目标应用程序执行到所述挂钩点时,执行伯克利包滤波程序,获取所述目标报文对应的目标子网地址、目标子网掩码、下一跳网关地址,所述下一跳网关地址指向所述专用数据处理器的地址;
校验单元,用于校验所述目标子网地址和所述目标子网掩码;
第一修改单元,用于将所述目标报文的下一跳目标地址修改为所述下一跳网关地址,并基于所述下一跳目标地址确定下一跳网络接口;
路由单元,用于将所述目标报文经由所述下一跳网络接口路由到所述下一跳目标地址,从而进入所述专用数据处理器。
9.一种主设备,其特征在于,包括:
存储器,用于存储计算机程序指令;
处理器,用于执行所述计算机程序指令,以执行根据权利要求1-7中任一个所述的报文路由加速方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码被处理器运行时,使处理器执行根据权利要求1-7中任一个所述的报文路由加速方法。
CN202311610413.7A 2023-11-29 2023-11-29 报文路由加速方法、装置、主设备及介质 Pending CN117579547A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311610413.7A CN117579547A (zh) 2023-11-29 2023-11-29 报文路由加速方法、装置、主设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311610413.7A CN117579547A (zh) 2023-11-29 2023-11-29 报文路由加速方法、装置、主设备及介质

Publications (1)

Publication Number Publication Date
CN117579547A true CN117579547A (zh) 2024-02-20

Family

ID=89884186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311610413.7A Pending CN117579547A (zh) 2023-11-29 2023-11-29 报文路由加速方法、装置、主设备及介质

Country Status (1)

Country Link
CN (1) CN117579547A (zh)

Similar Documents

Publication Publication Date Title
US6636521B1 (en) Flexible runtime configurable application program interface (API) that is command independent and reusable
WO2020151030A1 (zh) 一种处理数据报文的方法和装置
US20120320918A1 (en) Bridge port between hardware lan and virtual switch
CN111510478B (zh) 请求处理方法、装置、系统及电子设备
US11184281B2 (en) Packet processing method and apparatus
CN113709052B (zh) 一种网络报文的处理方法、装置、电子设备和存储介质
CN113676564B (zh) 数据传输方法、装置及存储介质
US11743236B2 (en) Generating an application-based proxy auto configuration
US20050144290A1 (en) Arbitrary java logic deployed transparently in a network
CN117579547A (zh) 报文路由加速方法、装置、主设备及介质
CN111800340B (zh) 数据包转发方法和装置
CN115499889A (zh) 基于vpp的upf转发面实现方法、装置、系统及相关设备
US11436172B2 (en) Data frame interface network device
CN116264538A (zh) 数据处理方法、装置、设备及计算机存储介质
CN113169936B (zh) 用于数据流处理的服务链机制
CN113765972A (zh) 数据请求响应方法、装置、系统、服务器和存储介质
CN112615916A (zh) 文件部署方法、装置、电子设备以及存储介质
CN113890789B (zh) 适用于数据中心的udp隧道流量的分流方法、流量转发方法
CN115277558B (zh) 报文发送方法、装置、计算机存储介质及电子设备
CN114650271B (zh) 全局负载dns邻居站点学习方法及装置
CN113114565B (zh) 数据报文转发方法及装置、存储介质及电子设备
CN115766557A (zh) 一种路由系统、会话保持表的表项生成方法及相关装置
CN116961938A (zh) 通信方法及装置
CN114500058A (zh) 网络访问控制方法、系统、设备和介质
CN116405459A (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