您好!欢迎光临某某钣金加工有限公司网站!
钣金加工一站式制造供应商
设计定制、生产加工、整机装配、设备接线
客户咨询服务热线:
400-123-4567
一种基于快速网络路径的云网络缓存加速系统和HASH GAME - Online Skill Game ET 300方法
您的位置: 首页 > 新闻中心 > hashgames > 一种基于快速网络路径的云网络缓存加速系统和HASH GAME - Online Skill Game ET 300方法

一种基于快速网络路径的云网络缓存加速系统和HASH GAME - Online Skill Game ET 300方法

作者:小编    发布时间:2025-02-17 13:02:45     浏览次数 :


  HASH GAME - Online Skill Game GET 300

一种基于快速网络路径的云网络缓存加速系统和HASH GAME - Online Skill Game GET 300方法

  ::2.随着电子商务、网络搜索、社交网络等网络服务的快速增长,网络应用创造和使用的数据越来越多。在大规模网络服务和云供应商场景中,现代数据库需要应对成百上千的请求,对吞吐量与时延都有较高要求。然而,基于硬盘的数据库的速度和延迟不足以满足当今越来越快的网络速度,高速的内存缓存应用应运而生,满足了数据库对高吞吐、低时延的需求。但随着云数据中心网络速率的不断提升,内存内缓存也开始出现性能瓶颈。这些云网络缓存应用的请求是由linux网络堆栈处理的,由于linux网络堆栈更加注重通用性,处理大量缓存请求显得低效且缓慢,云网络缓存应用受到了网络堆栈引入的延迟和吞吐量问题的困扰。3.现有解决方案主要依靠内核旁路、硬件加速以及优化现有的应用程序。内核旁路解决方案通过将网络数据包的处理转移到用户空间的网络堆栈来提高云网络缓存的性能,不同于linux操作系统的通用性,内核旁路方案专注于网络应用中数据包的高性能处理。通过让用户空间直接访问底层硬件,应用程序可以从用户空间执行数据包i/o。硬件加速使用fpga、可编程交换机或是asic等专用硬件实现高速缓存。另一方面则是通过对应用程序的直接优化,如多核处理等,以提升整体性能。4.目前,硬件加速方案需要购买专用的硬件,成本通常较高,且开发不灵活、周期长,不适用于现有的数据中心。内核旁路方案可以实现较高的性能和较低的成本,但也具有其固有的缺点。首先,用户空间的网络堆栈代替linux网络堆栈需要重新设计云网络缓存应用程序,以适应用户空间的专用堆栈,这往往需要第三方的内核模块及网络驱动。其次,放弃linux网络处理意味着放弃了linux内核提供的安全机制,如iptables和内存隔离等。为了实现同样的安全机制,我们将需要重新添加基于硬件或软件的安全组件,这增加了系统的复杂性和可维护性。第三,内核旁路方法即使在系统低负载的情况下也有很高的cpu开销,以保证网络处理的高速率。在后摩尔时代下,这样的代价是难以承受的。使用伯克利包过滤器(berkeleypacketfilter)为缓存应用加速是新提出的加速方法,使用linux内核的ebpf技术在linux网络处理的最底层实现缓存应用的加速,然而该方法仅适用于memcached应用,且仅支持基于udp协议,不具备通用性。5.现有技术中,内核旁路技术,如dpdk(dataplanedevelopmentkit),是一组快速处理数据包的开发平台及接口。传统的处理数据包的方法是cpu中断法,即网卡驱动收到数据包后通过中断通知cpu进行处理,然后cpu复制数据并交给协议栈。当有大量的数据时,这种方法将产生大量的cpu中断,这将使cpu无法运行其他程序。dpdk则采用轮询的方式来实现数据包的处理过程。dpdk重新加载网卡驱动,网卡驱动在收到数据包后不会中断通知cpu,而是通过零拷贝技术将数据包存入内存,然后应用层程序可以通过dpdk提供的接口直接从内存中读取数据包。这种方式节省了cpu中断时间和内存拷贝时间,为应用层提供了一种简单、方便、高效的数据包处理方式,使网络应用的开发更加方便。上述技术方案的缺陷在于:(1)缺乏访问硬件的安全机制;由于用户空间直接处理数据包,内核旁路方案消除了内核强制的安全策略,如内存隔离和防火墙,导致其需要额外添加特定的硬件扩展,如iommu和sr-iov,或是基于软件的隔离来维持安全策略。这会进一步加深方案的复杂程度,导致系统维护成本变高。(2)资源消耗高;需要分配内存巨页,以及独占cpu核,以轮询处理数据包,牺牲cpu利用率来获得低延迟和高吞吐。即便在低负载的情况下也会造成较高的cpu使用率,造成资源的浪费。(3)可维护性差;内核旁路方案需要对现有应用程序进行广泛的重新设计与修改,以便适用于专用的网络堆栈以实现高性能。6.现有技术中,硬件加速技术,如使用专用硬件、可编程交换机、智能网卡等进行加速或卸载,由于这些设备用作专用的卸载或处理,可以达到所有方案中最高的吞吐量和最低的延时。上述技术方案的缺陷在于:(1)成本较高;使用硬件加速方案需要额外添加专用硬件,这些硬件的成本往往偏高,并不适用于大规模的数据中心。且部分方案需要用到昂贵的片上内存资源,容易造成资源的浪费。(2)开发周期较长;专用硬件研发周期较长,无法适应快速变化的数据中心。7.可见,对于云网络缓存应用的内核网络处理,在具有高性能的同时,满足多种应用的适用性与内核安全性,是一个亟待解决的问题。技术实现要素:8.针对上述技术问题,本发明提出一种基于快速网络路径的云网络缓存加速方案。9.本发明第一方面公开了一种基于快速网络路径的云网络缓存加速系统。其中:所述系统包括主机网卡、缓存加速入路径处理模块、内核网络协议栈、缓存应用以及缓存加速出路径处理模块;所述缓存加速入路径处理模块包括主机网卡驱动层的xdp钩子,所述缓存加速出路径处理模块包括linux流量控制tc钩子,所述xdp钩子和所述tc钩子分别挂载若干ebpf程序,来实现内核内缓存信息的存储、调用和更新;所述缓存加速入路径处理模块至少还包括请求过滤模块、哈希值计算模块、无效化缓存模块、写数据包模块、第一协议处理模块、第二协议处理模块、回复应答模块;所述缓存加速出路径处理模块至少还包括返回过滤模块、更新缓存模块、第三协议处理模块。10.根据本发明第一方面的系统,所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取数据请求类型;具体包括:(1)当所述数据请求类型为get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-i)当所述内核内缓存信息中存在所述哈希值时:所述写数据包模块将所述哈希值对应的数据条目写入所述数据包,并通过所述第一协议处理模块和回复应答模块返回写入所述数据条目的数据包;其中,所述内核内缓存信息包含若干由哈希值与对应的数据条目构成的缓存信息。11.根据本发明第一方面的系统,(1)当所述数据请求类型为所述get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算所述对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-ii)当所述内核内缓存信息中不存在所述哈希值时:所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,由所述缓存应用通过计算确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块;所述缓存加速出路径处理模块的所述返回过滤模块过滤出所述写入数据条目的数据包,由所述tc钩子上挂载的ebpf程序从所述写入数据条目的数据包中提取所述数据包的键值key的哈希值,将提取出的哈希值与所述缓存应用确定的数据条目作为一条缓存信息;由所述更新缓存模块将所述一条缓存信息与缓存更新指令一同发送至所述缓存加速入路径处理模块,在所述xdp钩子上挂载的ebpf程序中更新所述一条缓存信息,用于后续get获取缓存请求的缓存加速处理。12.根据本发明第一方面的系统,所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取所述数据请求类型;具体包括:(2)当所述数据请求类型为set设定缓存条目请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(2-i)当所述内核内缓存信息中存在所述哈希值时:所述无效化缓存模块将所述哈希值对应的数据条目无效化,随后所述xdp钩子通过其pass动作将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定;(2-ii)当所述内核内缓存信息中不存在所述哈希值时:所述xdp钩子通过其pass动作直接将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定。13.根据本发明第一方面的系统,在完成所述缓存应用中对所述缓存条目的设定后,所述缓存加速入路径处理模块后续接收到的由所述主机网卡发送的数据包,其数据请求类型为get获取缓存请求且所述内核内缓存信息中不存在后续接收到的所述数据包的哈希值时,后续接收到的所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,所述缓存应用基于其中经设定的缓存条目来确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块。14.本发明第二方面公开了一种基于快速网络路径的云网络缓存加速方法。所述方法基于本发明第一方面所述的系统来实现,其中:所述系统包括主机网卡、缓存加速入路径处理模块、内核网络协议栈、缓存应用以及缓存加速出路径处理模块;所述缓存加速入路径处理模块包括主机网卡驱动层的xdp钩子,所述缓存加速出路径处理模块包括linux流量控制tc钩子,所述xdp钩子和所述tc钩子分别挂载若干ebpf程序,来实现内核内缓存信息的存储、调用和更新;所述缓存加速入路径处理模块至少还包括请求过滤模块、哈希值计算模块、无效化缓存模块、写数据包模块、第一协议处理模块、第二协议处理模块、回复应答模块;所述缓存加速出路径处理模块至少还包括返回过滤模块、更新缓存模块、第三协议处理模块。15.根据本发明第二方面的方法,所述方法具体包括:所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取数据请求类型;具体包括:(1)当所述数据请求类型为get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-i)当所述内核内缓存信息中存在所述哈希值时:调用所述写数据包模块将所述哈希值对应的数据条目写入所述数据包,并通过所述第一协议处理模块和回复应答模块返回写入所述数据条目的数据包;其中,所述内核内缓存信息包含若干由哈希值与对应的数据条目构成的缓存信息。16.根据本发明第二方面的方法,(1)当所述数据请求类型为所述get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算所述对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-ii)当所述内核内缓存信息中不存在所述哈希值时:所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,由所述缓存应用通过计算确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块;调用所述缓存加速出路径处理模块的所述返回过滤模块过滤出所述写入数据条目的数据包,由所述tc钩子上挂载的ebpf程序从所述写入数据条目的数据包中提取所述数据包的键值key的哈希值,将提取出的哈希值与所述缓存应用确定的数据条目作为一条缓存信息;由所述更新缓存模块将所述一条缓存信息与缓存更新指令一同发送至所述缓存加速入路径处理模块,在所述xdp钩子上挂载的ebpf程序中更新所述一条缓存信息,用于后续get获取缓存请求的缓存加速处理。17.根据本发明第二方面的方法,所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取所述数据请求类型;具体包括:(2)当所述数据请求类型为set设定缓存条目请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(2-i)当所述内核内缓存信息中存在所述哈希值时:调用所述无效化缓存模块将所述哈希值对应的数据条目无效化,随后所述xdp钩子通过其pass动作将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定;(2-ii)当所述内核内缓存信息中不存在所述哈希值时:所述xdp钩子通过其pass动作直接将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定。18.根据本发明第二方面的方法,在完成所述缓存应用中对所述缓存条目的设定后,对于所述缓存加速入路径处理模块后续接收到的由所述主机网卡发送的数据包,当其数据请求类型为get获取缓存请求且所述内核内缓存信息中不存在后续接收到的所述数据包的哈希值时,后续接收到的所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,所述缓存应用基于其中经设定的缓存条目来确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块。19.本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第二方面中任一项所述的一种基于快速网络路径的云网络缓存加速方法中的步骤。20.本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第二方面中任一项所述的一种基于快速网络路径的云网络缓存加速方法中的步骤。21.综上,本发明提供的技术方案基于linux的快速网络路径xdp,在网卡驱动层实现一层缓存,使得用户的请求可以在第一时间被cpu处理并返复。这种方法在实现比dpdk内核旁路方案更优性能的同时,无需独占cpu资源,无需分配巨页内存,可复用内核的安全机制,无需修改现有的云网络缓存应用,更具通用性,适用于同类云网络缓存应用。且xdp为linux内核社区维护的项目,具有更加稳定的接口。具体解决以下技术问题:(1)基于内核协同网络加速技术的云网络缓存加速架构;在无需独占cpu资源的情况下,保证云网络缓存应用的高性能,且与内核协同的设计可以复用内核的安全策略,内核中验证器的存在也使程序避免了对整个操作系统可能的影响。此外,加速程序可以实时更新到内核中执行,无需重新编译内核或使用内核模块。22.(2)设计了基于xdp的缓存请求的快速路径;由于实际使用中,云网络缓存应用大部分的请求为get请求,本方案基于xdp,在网络驱动层实现了一条快速返回get请求的快速路径。同时本方案可以与传统的内核网络协议栈协同工作,将其他复杂的请求交给内核处理,专注于对缓存应用get请求处理的加速。23.(3)设计了模块化的缓存请求处理;使用ebpf尾调用机制,将整个系统模块化,各个程序模块之间以尾调用相连。若需要更新对其他应用的支持,仅需修改协议处理模块即可,无需对缓存应用本身进行修改。附图说明24.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。25.图1为根据本发明实施例的一种基于快速网络路径的云网络缓存加速系统的结构示意图;图2为根据本发明实施例的处理缓存请求的流程示意图;图3为根据本发明实施例的处理缓存请求的模块示意图;图4为根据本发明实施例的一种电子设备的结构图。具体实施方式26.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。27.本发明第一方面公开了一种基于快速网络路径的云网络缓存加速系统。图1为根据本发明实施例的一种基于快速网络路径的云网络缓存加速系统的结构示意图;如图1所示,所述系统包括主机网卡、缓存加速入路径处理模块、内核网络协议栈、缓存应用以及缓存加速出路径处理模块;所述缓存加速入路径处理模块包括主机网卡驱动层的xdp钩子,所述缓存加速出路径处理模块包括linux流量控制tc钩子,所述xdp钩子和所述tc钩子分别挂载若干ebpf程序,来实现内核内缓存信息的存储、调用和更新;所述缓存加速入路径处理模块至少还包括请求过滤模块、哈希值计算模块、无效化缓存模块、写数据包模块、第一协议处理模块、第二协议处理模块、回复应答模块;所述缓存加速出路径处理模块至少还包括返回过滤模块、更新缓存模块、第三协议处理模块。28.其中:所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取数据请求类型;具体包括:(1)当所述数据请求类型为get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-i)当所述内核内缓存信息中存在所述哈希值时:所述写数据包模块将所述哈希值对应的数据条目写入所述数据包,并通过所述第一协议处理模块和回复应答模块返回写入所述数据条目的数据包;其中,所述内核内缓存信息包含若干由哈希值与对应的数据条目构成的缓存信息。29.(1-ii)当所述内核内缓存信息中不存在所述哈希值时:所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,由所述缓存应用通过计算确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块;所述缓存加速出路径处理模块的所述返回过滤模块过滤出所述写入数据条目的数据包,由所述tc钩子上挂载的ebpf程序从所述写入数据条目的数据包中提取所述数据包的键值key的哈希值,将提取出的哈希值与所述缓存应用确定的数据条目作为一条缓存信息;由所述更新缓存模块将所述一条缓存信息与缓存更新指令一同发送至所述缓存加速入路径处理模块,在所述xdp钩子上挂载的ebpf程序中更新所述一条缓存信息,用于后续get获取缓存请求的缓存加速处理。30.(2)当所述数据请求类型为set设定缓存条目请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(2-i)当所述内核内缓存信息中存在所述哈希值时:所述无效化缓存模块将所述哈希值对应的数据条目无效化,随后所述xdp钩子通过其pass动作将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定;(2-ii)当所述内核内缓存信息中不存在所述哈希值时:所述xdp钩子通过其pass动作直接将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定。31.在一些实施例中,在完成所述缓存应用中对所述缓存条目的设定后,所述缓存加速入路径处理模块后续接收到的由所述主机网卡发送的数据包,其数据请求类型为get获取缓存请求且所述内核内缓存信息中不存在后续接收到的所述数据包的哈希值时,后续接收到的所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,所述缓存应用基于其中经设定的缓存条目来确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块。32.具体地,在数据中心网络中,本发明选择使用内核协同的快速网络路径xdp对云网络缓存应用请求负载进行加速,在内核内实现一层缓存层,以缓解内存内缓存的网络通信性能瓶颈。在cpu能够处理网络数据包的最早时刻,即网络驱动层,对其进行解析和内核内缓存的查找,做到缓存应用get请求的快速返回,达到加速云网络缓存请求加速的目的。同时在缓存一致性方面,使用直写方案,避免缓存写入时发生缓存不一致的问题导致缓存值返回错误。本发明通过模块化的设计,对本系统最小程度的修改即可对新的云网络缓存应用和协议进行支持,无需专门定义新的数据包格式或修改现有的缓存应用,可以方便的用于现有的缓存应用实现。33.本发明相对于现有的内核旁路、硬件加速方案,无需占用内存巨页资源,无需独占cpu资源,在加速缓存应用get请求处理的同时可以保持内核强制的安全机制,可以以更优的cpu利用率实现更高的缓存应用吞吐量。且本发明对硬件要求较低,当前数据中心服务器上的linux系统均支持xdp,多数高速网卡支持xdp驱动模式,成本相对较低,可以大规模运用在现有系统。34.具体实施例1(结合图1)在主机网卡驱动层的xdp钩子和linux流量控制tc钩子上挂载了数个ebpf程序,使用ebpf映射存储内核内缓存信息及其他系统相关信息。ebpf映射中的解析信息存储当前数据包的读/写数据包相对报文起始位置的偏置量;tcp信息存储tcp传输的序列号等上下文信息;键信息存储键以及键对应的hash值;缓存信息存储键对应hash值与value值的映射;tc程序映射存储本系统挂载在tc钩子上的ebpf程序;xdp程序映射存储本系统挂载在xdp钩子上的ebpf程序;缓存状态映射存储系统收到的get、set命令数量以及get命中、未命中的数量等系统信息。35.当网卡收到任意数据包时,本系统首先根据协议类型、目的端口、缓存协议头部,过滤出来自客户端的请求,以redis应用为例,需过滤出协议类型为tcp、目的端口为redis设置的接收端口(默认6379)、协议头部解析为get或set请求的数据包;过滤来自客户端的请求类型,可以采用常用的方式来实现,在此不作具体限定。对于get请求,首先根据数据包中的键计算哈希值,判断系统内核内缓存中是否存在条目,若存在则直接将对应的值写入数据包,经过调换源、目的端口、mac地址及ip地址,并经过协议处理后直接将该数据包回复给客户端。若请求为set设定缓存条目,则无效化内核内缓存,将请求送至缓存应用处理。若缓存未命中内核内缓存,则将该请求送往缓存应用处理,若得到对应值,则在出路径更新对应的内核内缓存条目。具体流程如下:(1)数据包到达网卡后,本发明的缓存加速系统在cpu可以处理的第一时间解析数据包,根据数据包协议类型、目的端口等信息,判断该数据包是否为get获取缓存或set设置缓存条目的请求。若是去往缓存应用的get请求则执行第2步,set请求则执行第3步,否则执行第4步。36.(2)若请求为get请求,则根据数据包中键值计算对应的哈希值,并与ebpf映射中存储的内核内缓存信息进行对比,若发生命中,则将哈希值对应的缓存条目写入数据包,并经过源、目的端口、ip地址、mac地址对调和协议处理后,直接返回请求给客户端,无需经过内核协议栈的进一步处理。若未命中则继续送往内核和应用,在应用命中则截获返回的回复,并更新对应的内核内缓存条目。37.(3)若请求为set请求,则直接将内核内缓存条目无效化,并继续送往缓存应用。38.(4)若非缓存应用的get或set请求,系统直接将其送往内核协议栈,不影响正常的协议栈处理。39.具体实施例2(结合图2)设计了基于xdp的缓存请求的快速路径来实现缓存应用的加速。由于缓存应用在使用时80%以上为get缓存请求,因此我们基于xdp,在网卡驱动层就将这一部分占比最大的目标请求返回,以最小的改动获取最大的吞吐量,同时重新设计了内核内缓存的更新机制,保障了整个系统的缓存一致性。如图2所示,若get缓存请求在本系统的内核内缓存中发生命中,则通过快路径将该请求直接返回,无需经过内核网络协议栈的进一步处理,极大地降低了网络相关的处理时延。我们选择在set更新请求中无效化内核内缓存而不更新,否则缓存应用无法第一时间更新缓存,容易造成缓存不一致的问题。本系统在get请求未命中的情况下,在tc钩子处截获缓存应用的回复,以更新内核内缓存,以此保证缓存应用的条目始终保持最新。本机制具体流程如下:(1)对于get命中的情况,本系统通过linux系统的xdp快速网络数据路径挂载的ebpf程序,解析请求并得到请求中键对应的值,直接在xdp层通过tx动作回复客户端。40.(2)对于get未命中的情况,本系统通过xdp的pass动作将其送往内核协议栈和缓存应用,由缓存应用进行回复。若缓存应用中发生命中,则在tc出口处解析回复,以更新内核内缓存对应的键值条目。41.(3)对于set设置缓存条目的请求,本系统直接将对应的键值对无效化,并通过xdp的pass动作将其送往内核协议栈和缓存应用,以第一时间更新缓存应用的条目,保障系统的缓存一致性。42.具体实施例3(结合图3)设计了模块化的缓存请求处理,使用挂载在xdp和tc上的数个ebpf程序实现缓存请求处理模块化。xdp钩子上的程序用于过滤出缓存请求数据包并进行处理和快速返回,tc钩子上的程序用于过滤出云网络缓存应用发送的回复,并进行缓存的更新。通过模块化的设计,本方案可以仅修改协议处理模块,以达到云网络缓存软件的通用性。总体流程如下:(1)xdp_rx_filter模块过滤出缓存请求数据包,如果是get请求则执行第2步,set请求则执行第3步,否则执行第4步。43.(2)若请求为get请求,则调用xdp_hash模块,根据数据包中键值计算对应的哈希值,并与ebpf映射中存储的内核内缓存信息进行对比,若发生命中,则调用xdp_write_pkt模块将键值对应的缓存条目写入数据包,并经过源、目的端口、ip地址、mac地址对调和xdp_protocol_tx_process模块的协议处理后,xdp_tx_reply模块直接返回请求给客户端,无需经过内核协议栈的进一步处理。若未命中则通过xdp_protocol_rx_process模块继续送往内核和应用,在应用命中则通过tc钩子上的tc_tx_filter模块截获返回的回复,并使用tc_update_cache模块更新对应的内核内缓存条目。44.(3)若请求为set请求,则直接通过xdp_invalidate模块将内核内缓存条目无效化,并继续送往缓存应用。45.(4)若非缓存应用的get或set请求,系统直接将送往内核。46.可见,本发明第一方面的方案能够实现的有益效果包括但不限于:(1)基于网络快速路径的云网络缓存加速带来的效果:安全性增强:本方案与内核协同工作,复用内核对硬件的安全访问,且程序会经过内核的验证器,可有效避免内核的崩溃。47.无应用更改需求:本方案只需挂载程序到linux网络快速路径,不需要对云网络缓存应用进行任何额外的修改,即可对云网络缓存应用进行加速。48.cpu利用率提高:本方案无需独占主机cpu核,且相同吞吐量下所使用的cpu资源比内核旁路方案少。49.(2)云网络缓存请求通用处理模块带来的效果:可兼容不同的同类缓存应用:仅需对缓存请求协议处理模块的最小修改,即可适用新的云网络缓存应用。50.本发明第二方面公开了一种基于快速网络路径的云网络缓存加速方法。所述方法基于本发明第一方面所述的系统来实现,其中:所述系统包括主机网卡、缓存加速入路径处理模块、内核网络协议栈、缓存应用以及缓存加速出路径处理模块;所述缓存加速入路径处理模块包括主机网卡驱动层的xdp钩子,所述缓存加速出路径处理模块包括linux流量控制tc钩子,所述xdp钩子和所述tc钩子分别挂载若干ebpf程序,来实现内核内缓存信息的存储、调用和更新;所述缓存加速入路径处理模块至少还包括请求过滤模块、哈希值计算模块、无效化缓存模块、写数据包模块、第一协议处理模块、第二协议处理模块、回复应答模块;所述缓存加速出路径处理模块至少还包括返回过滤模块、更新缓存模块、第三协议处理模块。51.根据本发明第二方面的方法,所述方法具体包括:所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取数据请求类型;具体包括:(1)当所述数据请求类型为get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-i)当所述内核内缓存信息中存在所述哈希值时:调用所述写数据包模块将所述哈希值对应的数据条目写入所述数据包,并通过所述第一协议处理模块和回复应答模块返回写入所述数据条目的数据包;其中,所述内核内缓存信息包含若干由哈希值与对应的数据条目构成的缓存信息。52.根据本发明第二方面的方法,(1)当所述数据请求类型为所述get获取缓存请求时,调用所述哈希值计算模块根据所述数据包的键值key计算所述对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(1-ii)当所述内核内缓存信息中不存在所述哈希值时:所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,由所述缓存应用通过计算确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块;调用所述缓存加速出路径处理模块的所述返回过滤模块过滤出所述写入数据条目的数据包,由所述tc钩子上挂载的ebpf程序从所述写入数据条目的数据包中提取所述数据包的键值key的哈希值,将提取出的哈希值与所述缓存应用确定的数据条目作为一条缓存信息;由所述更新缓存模块将所述一条缓存信息与缓存更新指令一同发送至所述缓存加速入路径处理模块,在所述xdp钩子上挂载的ebpf程序中更新所述一条缓存信息,用于后续get获取缓存请求的缓存加速处理。53.根据本发明第二方面的方法,所述缓存加速入路径处理模块在接收到由所述主机网卡发送的数据包后,调用所述请求过滤模块对所述数据包进行解析,以获取所述数据请求类型;具体包括:(2)当所述数据请求类型为set设定缓存条目请求时,调用所述哈希值计算模块根据所述数据包的键值key计算对应的哈希值,将所述哈希值与所述xdp钩子上挂载的ebpf程序中存储的内核内缓存信息进行比对;其中:(2-i)当所述内核内缓存信息中存在所述哈希值时:调用所述无效化缓存模块将所述哈希值对应的数据条目无效化,随后所述xdp钩子通过其pass动作将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定;(2-ii)当所述内核内缓存信息中不存在所述哈希值时:所述xdp钩子通过其pass动作直接将所述数据包经所述第二协议处理模块发送至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,以完成所述缓存应用中对缓存条目的设定。54.根据本发明第二方面的方法,在完成所述缓存应用中对所述缓存条目的设定后,对于所述缓存加速入路径处理模块后续接收到的由所述主机网卡发送的数据包,当其数据请求类型为get获取缓存请求且所述内核内缓存信息中不存在后续接收到的所述数据包的哈希值时,后续接收到的所述数据包经所述第二协议处理模块被转发至所述内核网络协议栈,经处理后进一步被发送至所述缓存应用,所述缓存应用基于其中经设定的缓存条目来确定与所述数据包键值key对应的数据条目,并将由所述缓存应用确定的数据条目写入所述数据包后发送至所述缓存加速出路径处理模块。55.图4为根据本发明实施例的一种电子设备的结构图,如图4所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、近场通信(nfc)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。56.本领域技术人员可以理解,图4中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。57.本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第二方面中任一项所述的一种基于快速网络路径的云网络缓存加速方法中的步骤。58.本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第二方面中任一项所述的一种基于快速网络路径的云网络缓存加速方法中的步骤。59.综上,本发明提供的技术方案基于linux的快速网络路径xdp,在网卡驱动层实现一层缓存,使得用户的请求可以在第一时间被cpu处理并返复。这种方法在实现比dpdk内核旁路方案更优性能的同时,无需独占cpu资源,无需分配巨页内存,可复用内核的安全机制,无需修改现有的云网络缓存应用,更具通用性,适用于同类云网络缓存应用。且xdp为linux内核社区维护的项目,具有更加稳定的接口。具体解决以下技术问题:(1)基于内核协同网络加速技术的云网络缓存加速架构;在无需独占cpu资源的情况下,保证云网络缓存应用的高性能,且与内核协同的设计可以复用内核的安全策略,内核中验证器的存在也使程序避免了对整个操作系统可能的影响。此外,加速程序可以实时更新到内核中执行,无需重新编译内核或使用内核模块。60.(2)设计了基于xdp的缓存请求的快速路径;由于实际使用中,云网络缓存应用大部分的请求为get请求[8],本方案基于xdp,在网络驱动层实现了一条快速返回缓存应用get请求的快速路径。同时本方案可以与传统的内核网络协议栈协同工作,将其他复杂的请求交给内核处理,专注于对缓存应用get请求处理的加速。[0061](3)设计了模块化的缓存请求处理;使用ebpf尾调用机制,将整个系统模块化,各个程序模块之间以尾调用相连。若需要更新对其他应用的支持,仅需修改协议处理模块即可,无需对缓存应用本身进行修改。[0062]请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12