本公开涉及云计算,尤其涉及一种基于ebpf的网络流量治理方法、系统、设备及介质。
背景技术:
::1、近年来,随着互联网经济的飞速发展,云计算已然成为企业整合网络、计算、存储等基础设施的关键纽带,是企业数字化转型的必然选择。诸如云厂商已建立了庞大规模的数据中心,为广大用户提供云服务,越来越多的企业倾向于选择按需、弹性、便捷的云平台运行其业务系统。2、容器虚拟化技术作为云计算发展的重要成果,基于linux的cgroups和namespace技术实现进程的资源限制和视图隔离,通过沙箱机制使得进程运行于独立的环境中,避免相互干扰。3、与传统的hypervisor虚拟化技术相比,容器虚拟化技术在实现应用隔离方面更加轻量化、占用资源更少、更加灵活。2013年,docker项目通过将应用的配置文件和运行环境打包成镜像,实现一处打包、处处运行,解决了云平台应用可移植性的问题,这一创新引领了云计算基础设施领域的技术变革,以docker为代表的容器虚拟化技术在云平台中迅速占据主导地位。4、随着docker项目的兴起,容器即服务这一概念逐渐受到人们的关注,许多公司推出了容器编排系统参与竞争,将传统的云计算基础设施即服务(iaas)与平台即服务(paas)相结合,为容器应用提供运行环境。最终,google于2014年开源的容器编排平台kubernetes(简称k8s),凭借其强大的容器编排能力、支持用户自定义组件及优秀的系统架构等优势,逐渐取代swarm、mesos、cattle等项目成为容器编排系统的事实标准。5、kubernetes的service网络模型默认的网络流量转发方案,存在访问延迟高、资源消耗大等问题,无法有效支撑大规模流量的应用场景,现有的一些网络方案,虽然解决了大规模支撑的问题,但却忽略了网络性能的提升和使用的轻便性。ebpf在网络流量优化方面具有巨大潜力,它突破了用户态系统调用的限制来提升性能,但由于操作系统内核对安全性要求极高的原因,ebpf存在着程序大小受限、不支持无限循环等诸多限制。6、目前业界采用的解决方案能够支持service网络模型进行流量转发等基础功能,但在实现过程中缺乏对性能和有效性的综合考虑,仍然存在网络延迟高、资源占用多等问题,无法满足云平台网络流量治理的高性能需求。已有负载均衡算法虽然解决了特定场景下的问题,但对应的实现方式和依赖指标复杂,不满足service网络模型流量治理的轻量级要求。技术实现思路1、本发明的目的是提供一种基于ebpf的网络流量治理方法、系统、设备及介质,该方法能够实现无缝嵌入到云平台,将原本基于iptables规则治理的流量交由ebpf程序进行治理,提升流量转发的效率。2、为了实现上述目的,本公开实施例的第一方面,提供一种基于ebpf的网络流量治理方法,所述方法包括:3、流量拦截、从ebpf程序在内核挂载点拦截网络流量数据包,并筛选出访问集群service的所述网络流量数据包,判断所述网络流量数据包目的地址是否为service地址,若是所述集群service的网络流量数据包,则执行流量转发方案,若不是则释放所述网络流量数据包不影响主机其他网络功能;4、负载均衡、响应于所述执行流量转发方案,获取访问集群service后端的多个真实服务实例的endpoint信息,并进行负载均衡算法选择的endpoint信息;5、地址转换、根据所述负载均衡算法选择的endpoint信息,对所述endpoint信息进行地址转换,完成nat转换;6、连接跟踪、根据地址转换的所述网络流量数据包进行连接跟踪,所述ebpf程序收到响应所述网络流量数据包时根据连接跟踪信息修改数据包五元组,将endpoint信息的响应信息正确返回给请求客户端。7、在一种实施方式中,所述从ebpf程序在内核挂载点拦截网络流量数据包,具体为,包括:8、根据网络流量路径不同,所述集群service包括clusterip service网络模型和nodeport service网络模型;9、创建socket进程,采用容器方式部署的微服务,并具有对应的进程控制组;10、构建cgroup网络数据包过滤机制,对所述进程控制组内多个进程实现网络控制,拦截connect和send系统调用实现网络数据包转发;11、根据所述cgroup网络数据包过滤机制在挂载点处中拦截socket的connect、send系统调用,获取挂载点的网络包信息,并提取目的ip和目的port;12、根据集群的clusterip service网络模型,在ebpf映射中获取pod信息进行dnat,经dnat处理后的数据包,正常进入网络协议栈,并按照主机路由规则实现网络数据包转发;13、构建xdp网络数据包过滤机制;根据将所述xdp网络数据包过滤机制挂载到网卡、网卡的网络驱动程序以及内核网络协议栈,分别对应offloaded、native、generic三种性能表现从高到低的工作模式;14、根据集群的nodeport service网络模型接收云平台内外访问流量,通过在宿主机开放端口的方式,监听请求信息,kubernetes集群内外网络流量会到达节点的网卡硬件。15、在一种实施方式中,所述xdp网络数据包过滤机制的nodeport service网络模型流量治理包括访问主机端口的流量经过所述负载均衡算法选择的pod位于同一主机和访问主机端口的流量经过所述负载均衡算法选择的pod位于另外的节点;16、所述访问主机端口的流量经过所述负载均衡算法选择的pod位于同一主机为所述xdp网络数据包过滤机制在网卡接收层拦截网络流量数据包,若是请求建立连接的网络流量数据包,则执行dnat(目的地址转换)过程,将网络五元组的目的地址更换为负载均衡算法选择的pod地址,重新计算头部校验和维护conntrack连接跟踪信息,让后续网络流量转发到相同pod;若收到请求断开连接的网络流量数据包,则清除conntrack连接跟踪信息;17、所述访问主机端口的流量经过所述负载均衡算法选择的pod位于另外的节点拦截网络流量数据包,对网络流量数据包执行dnat过程并进行snat(源地址转换)过程,所述snat过程之后,查询转发信息库更新数据包的mac地址,将网络流量数据包转发到输出网卡。18、在一种实施方式中,所述负载均衡算法为基于熵权法的优先级负载均衡算法,采用内核态用户态协同机制动态评定当前pod的优先级,当负载均衡进行决策时,依赖内核态信息完成流量治理过程,包括:19、对pod的资源指标进行标准化处理,将指标分为正向指标和逆向指标;20、通过正向指标和逆向指标计算公式,表示指标对评分之间的影响,计算出每个指标的熵;21、计算各个指标的冗余度,再由冗余度计算出各个指标的权重,通过权重计算出各个pod的优先级。22、本公开实施例的第二方面,提供一种基于ebpf的网络流量治理系统,应用于所述的方法,所述系统包括:23、控制面,所述控制面位于用户态,其中,所述控制面用于负责订阅kubernetes集群的service、endpoints资源对象,经过数据处理过程之后,将大小端化后的资源对象同步到数据面;24、数据面,所述数据面位于内核态,其中,所述数据面包括ebpf程序、ebpf映射和内核挂载点,其中,所述ebpf程序以ebpf映射中的资源对象信息作为流量治理依据,用于在网络流量数据包经过的内核挂载点实现数据包转发功能;25、流量拦截模块,用于从ebpf程序在内核挂载点拦截网络流量数据包,并筛选出访问集群service的所述网络流量数据包,判断所述网络流量数据包目的地址是否为service地址,若是所述集群service的网络流量数据包,则执行流量转发方案,若不是则释放所述网络流量数据包;26、负载均衡、响应于所述执行流量转发方案,获取访问集群service后端的多个真实服务实例的endpoint信息,并进行负载均衡算法选择的endpoint信息;27、地址转换模块,用于根据所述负载均衡算法选择的endpoint信息,对所述endpoint信息进行地址转换,完成nat转换;28、连接跟踪模块,用于根据地址转换的所述网络流量数据包进行连接跟踪,所述ebpf程序收到响应所述网络流量数据包时根据连接跟踪信息修改数据包五元组,将endpoint信息的响应信息正确返回给请求客户端。29、在一种实施方式中,所述数据面包括slot(槽位)算法优化映射存储方法,所述方法包括:30、将endpoints列表拆分成单个pod元素进行存储;31、调谐pod元素的过程中,将ebpf映射的更新粒度变为单个pod元素,用slot算法维护service与pod的一对多关系;32、流量转发过程中,根据槽位选择单个pod元素作为后端服务,通过将endpoints的元素标记为删除、保留、新增三种状态,在endpoints列表的元素动态改变时,对所述三种状态的元素统一处理。33、在一种实施方式中,所述ebpf程序为cgroup类型,所述内核挂载点为cgroupv2。34、在一种实施方式中,所述nat转换包括dnat转换过程和snat转换过程。35、本公开实施例的第三方面,提供一种电子设备,包括:36、微控制器;37、用于存储微控制器可执行指令的存储器;38、其中,所述微控制器被配置为执行所述存储器中存储的可执行指令,以执行第一方面中任一项所述的方法。39、本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现第一方面中任一项所述方法的步骤。40、本发明提供了一种基于ebpf的网络流量治理方法、系统、设备及介质。与现有技术相比具备以下有益效果:41、1)本发明是针对云平台微服务流量治理的方法,该方法能适应动态的流量治理环境,同时满足高性能和高吞吐量的需求。42、2)本发明提出了slot算法,能够有效减少pod元信息的更新次数,优化了对存储空间的操作,提升了系统稳定性,适用于大量、频繁更新endpoints列表的应用场景。43、3)本发明提出了基于熵权法法的优先级负载均衡算法,在高并发应用场景下,基于熵权法实现的优先级算法能够避开负载高的服务端,选择资源相对充足的服务端进行负载分配,解决了复杂请求下负载的不均衡问题。44、本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。当前第1页12当前第1页12
技术特征:1.一种基于ebpf的网络流量治理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述从ebpf程序在内核挂载点拦截网络流量数据包,具体为,包括:
3.根据权利要求2所述的方法,其特征在于,所述xdp网络数据包过滤机制的nodeportservice网络模型流量治理包括访问主机端口的流量经过所述负载均衡算法选择的pod位于同一主机和访问主机端口的流量经过所述负载均衡算法选择的pod位于另外的节点;
4.根据权利要求3所述的方法,其特征在于,所述负载均衡算法为基于熵权法的优先级负载均衡算法,采用内核态用户态协同机制动态评定当前pod的优先级,当负载均衡进行决策时,依赖内核态信息完成流量治理过程,包括:
5.一种基于ebpf的网络流量治理系统,应用于根据权利要求1-4中任一项所述的方法,其特征在于,所述系统包括:
6.根据权利要求5所述的系统,其特征在于,所述数据面包括slot(槽位)算法优化映射存储方法,所述方法包括:
7.根据权利要求5所述的系统,其特征在于,所述ebpf程序为cgroup类型,所述内核挂载点为cgroupv2。
8.根据权利要求5所述的系统,其特征在于,所述nat转换包括dnat转换过程和snat转换过程。
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
技术总结本发明涉及一种基于eBPF的网络流量治理方法、系统、设备及介质,包括:流量拦截、从eBPF程序在内核挂载点拦截网络流量数据包,并筛选出访问集群Service的所述网络流量数据包,判断所述网络流量数据包目的地址是否为Service地址,若是所述集群Service的网络流量数据包,则执行流量转发方案,若不是则释放所述网络流量数据包不影响主机其他网络功能;负载均衡、响应于所述执行流量转发方案,获取访问集群Service后端的多个真实服务实例的Endpoint信息,并进行负载均衡算法选择的Endpoint信息;本发明提出了slot算法,能够有效减少Pod元信息的更新次数,优化了对存储空间的操作,提升了系统稳定性,适用于大量、频繁更新Endpoints列表的应用场景。
技术研发人员:杨军阳
受保护的技术使用者:苏州旗开得电子科技有限公司
技术研发日:技术公布日:2024/11/11