CN117544506B - 一种基于eBPF技术的容器云DNS性能优化方法 - Google Patents

一种基于eBPF技术的容器云DNS性能优化方法 Download PDF

Info

Publication number
CN117544506B
CN117544506B CN202311493816.8A CN202311493816A CN117544506B CN 117544506 B CN117544506 B CN 117544506B CN 202311493816 A CN202311493816 A CN 202311493816A CN 117544506 B CN117544506 B CN 117544506B
Authority
CN
China
Prior art keywords
dns
socket
query
container cloud
energy consumption
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.)
Active
Application number
CN202311493816.8A
Other languages
English (en)
Other versions
CN117544506A (zh
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.)
Beijing Cecf Technology Co ltd
Original Assignee
Beijing Cecf 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 Beijing Cecf Technology Co ltd filed Critical Beijing Cecf Technology Co ltd
Priority to CN202311493816.8A priority Critical patent/CN117544506B/zh
Publication of CN117544506A publication Critical patent/CN117544506A/zh
Application granted granted Critical
Publication of CN117544506B publication Critical patent/CN117544506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于eBPF技术的容器云DNS性能优化方法,通过创建eBPF程序并加载eBPF程序到内核,将DNS每个节点上进行部署,将传统DNS查询的路径大大缩短,提升了DNS查询的效率,并将内核态socket层直接进行DNS的socket连接处理,避免通过iptables进行DNAT环节造成的性能损耗,从而显著降低了DNS查询的能耗,将业务请求中的DNS请求提取出来单独处理,提升了处理优先级,同时能够快速进行异常处理,从而减少异常情况的发生概率及异常影响,通过eBPF程序以及容器云DNS数据监测和DNS性能评估,获取在不影响原应用和宿主机的性能、不影响Linux内核的稳定性,并且eBPF程序占用的系统性能低,使得容器云DNS的性能提升程度高,容器云DNS性能好。

Description

一种基于eBPF技术的容器云DNS性能优化方法
技术领域
本发明涉及云计算技术领域,尤其涉及一种基于eBPF技术的容器云DNS性能优化方法。
背景技术
DNS(Domain Name System)是一个用于解析和转换域名和IP地址之间关联关系的分布式数据库系统,在互联网中,设备使用IP地址进行通信,而人们更习惯使用易记的域名来访问网站或其他网络服务;
在现代基于K8S的容器云当中,由于其运行原理决定容器需要经常启动、停止、重新调度,其容器的IP地址会频繁变动,在容器云中部署的微服务在这种动态稳定的情况下进行大量的服务间请求,需要依赖容器云DNS来实现服务动态发现、负载均衡等能力;
由于现代应用运用的微服务架构,内部服务进行了拆解,外部一个请求在内部会对应至少3个微服务调用,在同等QPS(指每秒查询率)并发压力下,内部的DNS(指域名系统)请求量也相应的会是外部请求的3倍以上,基于此,在大规模的容器云集群,面对极大并发场景下,内部DNS的性能损耗已经成为一个无法忽视的问题,在实际生产中,很多业务延迟、效率低下问题都是由于内部DNS性能引起;
但是,现有的微服务内部进行DNS查询时,从服务侧发起查询请求至请求完全发出,经过路由到DNS服务器网卡,从收到网络包到解析至DNS应用,需要反复经过多层网络栈,每层协议都需要内核模块调度CPU资源进行处理,耗费大量能耗,在整个环节当中,高并发情况下耗时比较高的环节包括:网络协议栈帧封解、iptables(指IP信息过滤系统)DNAT(指目的地址转换)、router(指路由器)寻址环节、DNA序列正常数据包处理排队以及其他异常网络延迟;
因此,如何减少中间网络路径,优化或减少中间的高耗时环节对资源的消耗,就是提升DNS查询性能的关键;
针对上述的技术背景,现提出一种解决方案。
发明内容
本发明的目的在于:解决了现有的微服务内部进行DNS查询时需要反复经过多层网络栈,每层协议都需要内核模块调度CPU资源进行处理,耗费大量性能的问题,从而解决了DNS查询效率低、能耗高以及异常突发情况严重的缺陷,通过减少中间网络路径,优化或减少中间的高耗时环节对资源的消耗,综合提升了DNS查询性能。
为了实现上述目的,本发明采用了如下技术方案:
一种基于eBPF技术的容器云DNS性能优化方法,包括以下步骤:
步骤一,创建eBPF程序:通过创建sock_map、存储socket描述文件、注册sockops回调函数、查找本地DNS的socket的文件描述符、获取本地DNS的sock对象、将数据写入本地DNS的socket以及返回解析数据,构建eBPF程序;
步骤二,加载eBPF程序到内核:通过bpftool工具将eBPF程序加载到内核中进行正常的服务请求,通过该程序截获并处理本地应用发起的DNS查询请求;
步骤三,容器云DNS数据监测:构建容器云DNS,容器云DNS数据包括查询效率参数、能耗参数和异常参数,通过访问DNS服务器的日志和性能监控工具采集容器云DNS数据;
步骤四,DNS性能评估:建立曲线分析模型,通过对比分析容器云DNS在应用eBPF程序前后的容器云DNS数据,以综合评估容器云DNS性能提升的程度;
容器云DNS的构建和数据监测的具体过程为:
容器云DNS系统包括CoreDNS镜像组件和Linux二进制程序组件,针对K8S容器云集群内部服务的DNS使用需求,将CoreDNS依据DaemonSet方式部署于集群的Node节点中,将微服务容器内部的nameserver设置为127.0.0.1,在容器内部查看/etc/resolv.conf指向本机;
再设置数据采集周期Tc,对容器云DNS数据进行定时采集,将容器云DNS应用eBPF程序的时间节点标记为特殊时间节点,建立容器云DNS数据的动态曲线变化图;
DNS性能评估的具体过程为:
B1:先建立曲线分析模型:
输入动态曲线Sa,标记特殊时间节点为t0,以特殊时间节点t0为中心划定调整区间,预设调整区间V0,获取调整区间V0的左端点和右端点,将左端点标记为前时间节点v1,将右端点标记为后时间节点v2;
进而通过前时间节点v1和后时间节点v2获取曲线Sa上相应的点及坐标:标记前时间节点v1对应的点为p(v1,a1),后时间节点v2对应的点为q(v2,a2),进而获取点p和点q之间的斜率k0;
从p点的左侧截取n1个信息采集周期,并获取动态曲线Sa与n1个信息采集周期对应的n1个点,通过求取n1个点的纵坐标平均值,将其标记为前整体参数指标值m1;
从q点的右侧截取n2个信息采集周期,并获取动态曲线Sa与n2个信息采集周期对应的n2个点,通过求取n2个点的纵坐标平均值,将其标记为后整体参数指标值m2;
进而通过斜率k0、前整体参数指标值m1和后整体参数指标值m2相结合,并赋予参数指标变化幅度的转化因子系数,建立公式获取动态曲线Sa的变化系数BH;
B2:先对查询效率参数、能耗参数和异常参数分别进行对比分析,具体过程为:
B2-1:通过对比查询效率参数,评估效率提升程度;
B2-2:通过对比能耗参数,评估能耗降低程度;
B2-3:通过对比异常参数,评估异常损耗降低程度;
B3:再通过效率提升程度、能耗降低程度和异常损耗降低程度相结合,综合评估容器云DNS性能提升程度。
进一步的,构建eBPF程序的具体过程为:
A1,定义sock_map:创建一个sock_map,用于存储本地应用的socket文件描述符和对应的DNS的socket文件描述符之间的映射关系;
A2,存储socket描述文件:调用bpf_map_update_elem()函数将服务的socket文件描述符存储到sock_map中,将服务的socket文件描述符作为键,将本地DNS的socket文件描述符作为值;
A3,注册sockops回调函数:在eBPF程序中注册sockops回调函数,该函数将在本地应用的socket收到数据时被调用,当本地应用的socket收到DNS查询请求时,eBPF程序的sockops回调函数被触发,读取其中的本地应用发送的数据;
A4,查找本地DNS的socket的文件描述符:调用bpf_map_lookup_elem()函数来查找与之关联的本地DNS的socket的文件描述符,通过遍历系统中的所有socket,匹配DNS服务的IP地址和端口号;
A5,获取本地DNS的sock对象:找到与服务的socket关联的本地DNS的socket文件描述符,则通过调用bpf_sk_lookup_fd_key()函数来获取对应的sock对象;
A6,将数据写入本地DNS的socket:使用bpf_msg_redirect_hash调用将DNS请求从本地应用的socket发送到对应DNS的socket;
A7,返回解析数据:本地对应DNS的socket将收到服务发送的数据,并进行相应的处理,解析域名并返回结果。
进一步的,评估效率提升程度的具体过程为:
B2-11:获取查询效率参数:
查询效率参数包括DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th;
B2-12:对比分析查询效率参数:
B2-12-1:先建立第一组动态曲线图:
构建数据采集周期Tc分别与DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th的动态曲线变化图;
B2-12-2:将第一组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-13:获取效率提升评估系数X1:
通过DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th相结合,赋予相应的权重因子系数和变化系数,建立公式获取效率提升评估系数X1。
进一步的,评估能耗降低程度的具体过程为:
B2-21:获取能耗参数:
能耗参数包括电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld,通过性能监控工具采集获取能耗参数的数据值;
B2-22:对比分析能耗参数:
B2-22-1:先建立第二组动态曲线图;
构建数据采集周期Tc分别与电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld的动态曲线变化图;
B2-22-2:将第二组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-23:获取能耗降低评估系数X2:
通过电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld相结合,赋予相应的权重因子系数和变化系数,建立公式获取能耗降低评估系数X2。
进一步的,评估异常损耗降低程度的具体过程为:
B2-31:获取异常参数:
异常参数包括查询错误率Lc、响应时间异常次数C1和查询量异常次数C2;
B2-32:对比分析异常参数:
B2-32-1:先建立第三组动态曲线图:
构建数据采集周期Tc分别与查询错误率Lc、响应时间异常次数C1和查询量异常次数C2的动态曲线变化图
B2-32-2:将第三组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-33:获取异常降低评估系数X3:
通过查询错误率Lc、响应时间异常次数C1和查询量异常次数C2相结合,赋予相应的权重因子系数和变化系数,建立公式获取异常降低评估系数X3。
进一步的,综合评估容器云DNS性能提升程度的具体过程为:
为效率提升评估系数X1、能耗降低评估系数X2和异常降低评估系数X3相结合,并分别赋予相应的权重因子系数,综合获取性能提升评估系数Xxn。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
一、本发明通过将DNS每个节点上进行部署,解决了router寻址问题,并通过eBPF程序将应用的DNS请求通过socket层转发至DNS的socket层,避免了中间的协议层、传输层、数据链路层的封解损耗,将传统DNS查询的路径大大缩短,避免了网络封装、数据帧封装等环节,提升了DNS查询的效率,操作方便;
二、本发明将内核态socket层直接进行DNS的socket连接处理,通过将内核态的操作在用户态进行处理,避免通过iptables进行DNAT环节造成的性能损耗,从而显著降低了DNS查询的能耗,将业务请求中的DNS请求提取出来单独处理,提升了处理优先级,同时能够快速进行异常处理,从而减少异常情况的发生概率及异常影响;
三、本方面通过eBPF程序实现技术方案,不影响原应用和宿主机的性能、不影响Linux内核的稳定性,并且eBPF程序的占用的系统性能低,使得容器云DNS的性能提升程度高,容器云DNS性能好。
附图说明
图1示出了本发明的流程图;
图2示出了本发明的方案部署结构图;
图3示出了本发明的eBPF程序内部逻辑图;
图4示出了本发明在方案应用前后进行DNS查询的实际路径对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1:
如图1-3所示,一种基于eBPF技术的容器云DNS性能优化方法,包括以下步骤:
S1,创建eBPF程序:通过创建sock_map、存储socket描述文件、注册sockops回调函数、查找本地DNS的socket的文件描述符、获取本地DNS的sock对象、将数据写入本地DNS的socket以及返回解析数据,构建eBPF程序;
S1-1,构建eBPF程序的具体过程为:
A1,定义sock_map:创建一个sock_map(文件描述符数据地图),用于存储本地应用的socket文件描述符和对应的DNS的socket文件描述符之间的映射关系,sock_map是一种特殊的数据结构,它能够在内核中跟踪和管理多个socket文件描述符;
A2,存储socket描述文件:调用bpf_map_update_elem()函数将服务的socket文件描述符存储到sock_map中,将服务的socket文件描述符作为键,将本地DNS的socket文件描述符作为值;
A3,注册sockops回调函数:在eBPF程序中注册sockops回调函数,该函数将在本地应用的socket收到数据时被调用,当本地应用的socket收到DNS查询请求时,eBPF程序的sockops回调函数被触发,读取其中的本地应用发送的数据;
A4,查找本地DNS的socket的文件描述符:调用bpf_map_lookup_elem()函数来查找与之关联的本地DNS的socket文件描述符,通过遍历系统中的所有socket,匹配DNS服务的IP地址和端口号;
A5,获取本地DNS的sock对象:找到与服务的socket关联的本地DNS的socket文件描述符,则通过调用bpf_sk_lookup_fd_key()函数来获取对应的sock对象;
A6,将数据写入本地DNS的socket:使用bpf_msg_redirect_hash调用将DNS请求从本地应用的socket发送到DNS的socket;
A7,返回解析数据:本地DNS的socket将收到服务发送的数据,并进行相应的处理,解析域名并返回结果,结果返回时,同请求发出时处理路径一致,方向相反;
以上函数都是现有的BPF的库函数,本发明利用eBPF的库函数组合能力,将DNS请求的socket做了缓存,按照上述程序的执行逻辑开始进行本地DNS请求的转发,可以显著提升并发的DNS查询性能;
S2,加载eBPF程序到内核:通过bpftool工具将eBPF程序加载到内核中进行正常的服务请求,通过该程序截获并处理本地应用发起的DNS查询请求;
S3,容器云DNS数据监测:构建容器云DNS,容器云DNS数据包括查询效率参数、能耗参数和异常参数,通过访问DNS服务器的日志和性能监控工具采集容器云DNS数据;
S3-1,容器云DNS的构建具体过程为:
容器云DNS系统包括CoreDNS镜像组件和Linux二进制程序组件,针对K8S(指kubernetes应用软件)容器云集群内部服务的DNS使用需求,将CoreDNS依据DaemonSet(指守护进程集)方式部署于集群的Node节点中,将微服务容器内部的nameserver(指名称服务器)设置为127.0.0.1,在容器内部查看/etc/resolv.conf(指DNS配置文件)指向本机;
S3-2,容器云DNS数据监测具体过程为:
设置数据采集周期Tc,对容器云DNS数据进行定时采集,将容器云DNS应用eBPF程序的时间节点标记为特殊时间节点,建立容器云DNS数据的动态曲线变化图;
S3-3,采集容器云DNS数据具体过程为:
B2-11:获取查询效率参数:
查询效率参数包括DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th;
预设数据采集周期Tc内有N0个查询请求,查询吞吐量为单位时间内的查询请求量,则数据采集周期Tc内采集查询吞吐量Tt=N0;
通过性能监控工具获取N0个查询请求的响应时间,再通过求取平均值获取DNS查询响应时间Tx;
通过性能监控工具获取N0个查询请求的处理时间,再通过求取平均值获取DNS查询处理时间Th;
通过访问DNS服务器的日志获取数据采集周期Tc内的解析成功率Jx;
B2-21:获取能耗参数:
能耗参数包括电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld,通过性能监控工具采集获取能耗参数的数据值;
B2-31:获取异常参数:
异常参数包括查询错误率、响应时间异常次数和查询量异常次数;
B2-31-1:通过访问DNS服务器的日志,获取查询错误率Lc;
B2-31-2:标记响应时间异常次数为C1,预设响应时间异常值Z1,通过设置DNS查询响应时间Tx的异常阈值Y1,当DNS查询响应时间Tx超出异常阈值Y1时,则判定响应时间异常,标记响应时间异常值Z1=1,反之,则标记响应时间异常值Z1=0;
对N0个查询请求的响应时间依次进行对比分析,再累加相应的N0个响应时间异常值Z1,获取响应时间异常次数C1;
B2-31-3:标记查询量异常次数为C2,设置查询吞吐量Tt的标准区间Y2为[tf,th],经阈值对比获取查询量异常次数:
标记任一个数据采集周期内的查询吞吐量为Tt,当查询吞吐量Tt位于标准区间Y2时,判定查询量正常,则标记查询量异常次数C2=0;反之,判定查询量异常,则获取查询量异常次数C2:
若查询吞吐量Tt低于标准区间的最低值tf,则查询量异常次数C2=tf-Tt;
若查询吞吐量Tt高于标准区间的最高值th,则查询量异常次数C2=Tt-th;
S4,DNS性能评估:建立曲线分析模型,通过对比分析容器云DNS在应用eBPF程序前后的容器云DNS数据,来综合评估容器云DNS性能提升程度,具体过程为:
B1:先建立曲线分析模型:
输入动态曲线Sa,标记特殊时间节点为t0,以特殊时间节点t0为中心划定调整区间,预设调整区间V0,获取调整区间V0的左端点和右端点,将左端点标记为前时间节点v1,将右端点标记为后时间节点v2;
进而通过前时间节点v1和后时间节点v2获取曲线Sa上相应的点及坐标:标记前时间节点v1对应的点为p(v1,a1),后时间节点v2对应的点为q(v2,a2);
从p点的左侧截取n1个信息采集周期,并获取动态曲线Sa与n1个信息采集周期对应的n1个点,通过求取n1个点的纵坐标平均值,将其标记为前整体参数指标值m1;
从q点的右侧截取n2个信息采集周期,并获取动态曲线Sa与n2个信息采集周期对应的n2个点,通过求取n2个点的纵坐标平均值,将其标记为后整体参数指标值m2;
获取点p和点q之间的斜率k0:
进而获取动态曲线Sa的变化系数BH:VH=ε*k02*|m2-m1|
其中,通过前整体参数指标值m1与后整体参数指标值m2之间差值的绝对值,获取调整区间的参数指标变化幅度,ε为参数指标变化幅度的转化因子,通过实验测算进行预设,且ε大于0,对于不同参数指标的动态曲线,分别赋予不同的转化因子ε;
B2:先对查询效率参数、能耗参数和异常参数分别进行对比分析,具体过程为:
B2-1:通过对比查询效率参数,评估效率提升程度;
B2-12:对比分析查询效率参数:
B2-12-1:先建立第一组动态曲线图:
构建DNS查询响应时间Tx-数据采集周期Tc的动态曲线变化图Sa1,构建解析成功率Jx-数据采集周期Tc的动态曲线变化图Sa2,构建查询吞吐量Tt-数据采集周期Tc的动态曲线变化图Sa3,构建DNS查询处理时间Th-数据采集周期Tc的动态曲线变化图Sa4;
B2-12-2:将第一组动态曲线代入曲线分析模型:
将动态曲线Sa1、动态曲线Sa2、动态曲线Sa3和动态曲线Sa4依次代入曲线分析模型,分别获取DNS查询响应时间变化系数BH1、解析成功率变化系数BH2、查询吞吐量变化系数BH3和DNS查询处理时间变化系数BH4;
当变化系数越高,则表示提升程度越高,提升效果越好;
B2-13:获取效率提升评估系数X1:
通过DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th相结合,赋予相应的权重因子系数和变化系数,建立公式获取效率提升评估系数X1:
预设效率提升评估系数X1的公式为:
其中,α1、α2、α3和α4分别为DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th的权重因子系数,且α1、α2、α3和α4均大于0;
当DNS查询响应时间Tx和DNS查询处理时间Th越低时,且解析成功率Jx和查询吞吐量Tt越高时,则效率提升评估系数X1越高,表示效率提升程度越高;
基于eBPF技术将传统DNS查询的路径大大缩短,避免了网络封装、数据帧封装等环节,大大提升了DNS查询的效率;
B2-2:通过对比能耗参数,评估能耗降低程度;
B2-22:对比分析能耗参数:
B2-22-1:先建立第二组动态曲线图;
构建电能消耗量Xh-数据采集周期Tc的动态曲线变化图Sb1,构建CPU利用率Ly-数据采集周期Tc的动态曲线变化图Sb2,构建网络带宽利用率Ld-数据采集周期Tc的动态曲线变化图Sb3;
B2-22-2:将第二组动态曲线代入曲线分析模型:
将动态曲线Sb1、动态曲线Sb2和动态曲线Sb3依次代入曲线分析模型,分别获取电能消耗变化系数BH5、CPU利用率变化系数BH6和网络带宽利用率变化系数BH7;
当变化系数越高,则表示能耗降低程度越高,性能提升效果越好;
B2-23:获取能耗降低评估系数X2:
通过电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld相结合,赋予相应的权重因子系数和变化系数,建立公式获取能耗降低评估系数X2:
其中,β1、β2和β3分别为电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld的权重因子系数,且β1、β2和β3均大于0;
当电能消耗量Xh越低,而CPU利用率Ly和网络带宽利用率Ld越高时,则能耗降低评估系数X2越高,表示能耗降低程度越高;
将内核态socket层直接可进行DNS的socket连接处理,避免通过iptables进行DNAT环节造成的性能损耗,从而显著降低了DNS查询的能耗;
B2-3:通过对比异常参数,评估异常损耗降低程度;
B2-32:对比分析异常参数:
B2-32-1:先建立第三组动态曲线图:
构建查询错误率Lc-数据采集周期Tc的动态曲线变化图Sc1,构建响应时间异常次数C1-数据采集周期Tc的动态曲线变化图Sc2,构建查询量异常次数C2-数据采集周期Tc的动态曲线变化图Sc3;
B2-32-2:将第三组动态曲线代入曲线分析模型:
将动态曲线Sc1、动态曲线Sc2和动态曲线Sc3依次代入曲线分析模型,分别获取查询错误率变化系数BH8、响应时间异常变化系数BH9和查询量异常变化系数BH0;
当变化系数越高,则表示异常降低程度越高,性能提升效果越好;
B2-33:获取异常降低评估系数X3:
通过查询错误率Lc、响应时间异常次数C1和查询量异常次数C2相结合,赋予相应的权重因子系数和变化系数,建立公式获取异常降低评估系数X3:
其中,ω1、ω2和ω3分别为查询错误率Lc、响应时间异常次数C1和查询量异常次数C2的权重因子系数,且ω1、ω2和ω3均大于0;
当查询错误率Lc、响应时间异常次数C1和查询量异常次数C2越低时,则异常降低评估系数X3越高,表示异常情况降低越明显;
将业务请求中的DNS请求提取出来单独处理,可以提升处理优先级,同时可以快速进行异常处理,从而减少异常情况的发生概率;
B3:再通过效率提升程度、能耗降低程度和异常损耗降低程度相结合,综合评估容器云DNS性能提升程度,具体过程为:
为效率提升评估系数X1、能耗降低评估系数X2和异常降低评估系数X3相结合,并分别赋予相应的权重因子系数,综合获取性能提升评估系数Xxn:
Xxn=λ1*X1+λ2*X2+λ3*X3
其中,λ1、λ2和λ3分别为效率提升评估系数X1、能耗降低评估系数X2和异常降低评估系数X3的权重因子系数,且λ1、λ2和λ3均大于0;
当效率提升评估系数X1、能耗降低评估系数X2和异常降低评估系数X3越高时,则表示性能提升程度越高,容器云DNS性能越好,使用eBPF程序不影响Linux内核的稳定性,并且经大量实验测算eBPF程序占用的系统性能低于5%。
综上所述:本发明通过将DNS每个节点上进行部署,解决了router寻址问题,并通过eBPF程序将应用的DNS请求通过socket层转发至DNS的socket层,避免了中间的协议层、传输层、数据链路层的封解损耗,将传统DNS查询的路径大大缩短,避免了网络封装、数据帧封装等环节,提升了DNS查询的效率,操作方便;
本发明将内核态socket层直接进行DNS的socket连接处理,通过将内核态的操作在用户态进行处理,避免通过iptables进行DNAT环节造成的性能损耗,从而显著降低了DNS查询的能耗,将业务请求中的DNS请求提取出来单独处理,提升了处理优先级,同时能够快速进行异常处理,从而减少异常情况的发生概率及异常影响;
本方面通过eBPF程序实现技术方案,不影响原应用和宿主机的性能、不影响Linux内核的稳定性,并且eBPF程序的占用的系统性能低,使得容器云DNS的性能提升程度高,容器云DNS性能好。
区间、阈值的大小的设定是为了便于比较,关于阈值的大小,取决于样本数据的多少及本领域技术人员对每一组样本数据设定基数数量;只要不影响参数与量化后数值的比例关系即可。
上述公式均是去量纲取其数值计算,公式是由采集大量数据进行软件模拟得到最近真实情况的一个公式,公式中的预设参数由本领域的技术人员根据实际情况进行设置;
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (6)

1.一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:包括以下步骤:
步骤一,创建eBPF程序:通过创建sock_map、存储socket描述文件、注册sockops回调函数、查找本地DNS的socket的文件描述符、获取本地DNS的sock对象、将数据写入本地DNS的socket以及返回解析数据,构建eBPF程序;
步骤二,加载eBPF程序到内核:通过bpftool工具将eBPF程序加载到内核中进行正常的服务请求,通过该程序截获并处理本地应用发起的DNS查询请求;
步骤三,容器云DNS数据监测:构建容器云DNS,容器云DNS数据包括查询效率参数、能耗参数和异常参数,通过访问DNS服务器的日志和性能监控工具采集容器云DNS数据;
步骤四,DNS性能评估:建立曲线分析模型,通过对比分析容器云DNS在应用eBPF程序前后的容器云DNS数据,以综合评估容器云DNS性能提升的程度;
容器云DNS的构建和数据监测的具体过程为:
容器云DNS系统包括CoreDNS镜像组件和Linux二进制程序组件,针对K8S容器云集群内部服务的DNS使用需求,将CoreDNS依据DaemonSet方式部署于集群的Node节点中,将微服务容器内部的nameserver设置为127.0.0.1,在容器内部查看/etc/resolv.conf指向本机;
再设置数据采集周期Tc,对容器云DNS数据进行定时采集,将容器云DNS应用eBPF程序的时间节点标记为特殊时间节点,建立容器云DNS数据的动态曲线变化图;
DNS性能评估的具体过程为:
B1:先建立曲线分析模型:
输入动态曲线Sa,标记特殊时间节点为t0,以特殊时间节点t0为中心划定调整区间,预设调整区间V0,获取调整区间V0的左端点和右端点,将左端点标记为前时间节点v1,将右端点标记为后时间节点v2;
进而通过前时间节点v1和后时间节点v2获取曲线Sa上相应的点及坐标:标记前时间节点v1对应的点为p(v1,a1),后时间节点v2对应的点为q(v2,a2),进而获取点p和点q之间的斜率k0;
从p点的左侧截取n1个信息采集周期,并获取动态曲线Sa与n1个信息采集周期对应的n1个点,通过求取n1个点的纵坐标平均值,将其标记为前整体参数指标值m1;
从q点的右侧截取n2个信息采集周期,并获取动态曲线Sa与n2个信息采集周期对应的n2个点,通过求取n2个点的纵坐标平均值,将其标记为后整体参数指标值m2;
进而通过斜率k0、前整体参数指标值m1和后整体参数指标值m2相结合,并赋予参数指标变化幅度的转化因子系数,建立公式获取动态曲线Sa的变化系数BH;
B2:先对查询效率参数、能耗参数和异常参数分别进行对比分析,具体过程为:
B2-1:通过对比查询效率参数,评估效率提升程度;
B2-2:通过对比能耗参数,评估能耗降低程度;
B2-3:通过对比异常参数,评估异常损耗降低程度;
B3:再通过效率提升程度、能耗降低程度和异常损耗降低程度相结合,综合评估容器云DNS性能提升程度。
2.根据权利要求1所述的一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:构建eBPF程序的具体过程为:
A1,定义sock_map:创建一个sock_map,用于存储本地应用的socket文件描述符和对应的DNS的socket文件描述符之间的映射关系;
A2,存储socket描述文件:调用bpf_map_update_elem()函数将服务的socket文件描述符存储到sock_map中,将服务的socket文件描述符作为键,将本地DNS的socket文件描述符作为值;
A3,注册sockops回调函数:在eBPF程序中注册sockops回调函数,该函数将在本地应用的socket收到数据时被调用,当本地应用的socket收到DNS查询请求时,eBPF程序的sockops回调函数被触发,读取其中的本地应用发送的数据;
A4,查找本地DNS的socket的文件描述符:调用bpf_map_lookup_elem()函数来查找与之关联的本地DNS的socket的文件描述符,通过遍历系统中的所有socket,匹配DNS服务的IP地址和端口号;
A5,获取本地DNS的sock对象:找到与服务的socket关联的本地DNS的socket文件描述符,则通过调用bpf_sk_lookup_fd_key()函数来获取对应的sock对象;
A6,将数据写入本地DNS的socket:使用bpf_msg_redirect_hash调用将DNS请求从本地应用的socket发送到对应DNS的socket;
A7,返回解析数据:本地对应DNS的socket将收到服务发送的数据,并进行相应的处理,解析域名并返回结果。
3.根据权利要求2所述的一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:评估效率提升程度的具体过程为:
B2-11:获取查询效率参数:
查询效率参数包括DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th;
B2-12:对比分析查询效率参数:
B2-12-1:先建立第一组动态曲线图:
构建数据采集周期Tc分别与DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th的动态曲线变化图;
B2-12-2:将第一组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-13:获取效率提升评估系数X1:
通过DNS查询响应时间Tx、解析成功率Jx、查询吞吐量Tt和DNS查询处理时间Th相结合,赋予相应的权重因子系数和变化系数,建立公式获取效率提升评估系数X1。
4.根据权利要求3所述的一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:评估能耗降低程度的具体过程为:
B2-21:获取能耗参数:
能耗参数包括电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld,通过性能监控工具采集获取能耗参数的数据值;
B2-22:对比分析能耗参数:
B2-22-1:先建立第二组动态曲线图;
构建数据采集周期Tc分别与电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld的动态曲线变化图;
B2-22-2:将第二组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-23:获取能耗降低评估系数X2:
通过电能消耗量Xh、CPU利用率Ly和网络带宽利用率Ld相结合,赋予相应的权重因子系数和变化系数,建立公式获取能耗降低评估系数X2。
5.根据权利要求4所述的一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:评估异常损耗降低程度的具体过程为:
B2-31:获取异常参数:
异常参数包括查询错误率Lc、响应时间异常次数C1和查询量异常次数C2;
B2-32:对比分析异常参数:
B2-32-1:先建立第三组动态曲线图:
构建数据采集周期Tc分别与查询错误率Lc、响应时间异常次数C1和查询量异常次数C2的动态曲线变化图
B2-32-2:将第三组动态曲线代入曲线分析模型,获取相应的变化系数;
B2-33:获取异常降低评估系数X3:
通过查询错误率Lc、响应时间异常次数C1和查询量异常次数C2相结合,赋予相应的权重因子系数和变化系数,建立公式获取异常降低评估系数X3。
6.根据权利要求5所述的一种基于eBPF技术的容器云DNS性能优化方法,其特征在于:综合评估容器云DNS性能提升程度的具体过程为:
为效率提升评估系数X1、能耗降低评估系数X2和异常降低评估系数X3相结合,并分别赋予相应的权重因子系数,综合获取性能提升评估系数Xxn。
CN202311493816.8A 2023-11-09 2023-11-09 一种基于eBPF技术的容器云DNS性能优化方法 Active CN117544506B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311493816.8A CN117544506B (zh) 2023-11-09 2023-11-09 一种基于eBPF技术的容器云DNS性能优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311493816.8A CN117544506B (zh) 2023-11-09 2023-11-09 一种基于eBPF技术的容器云DNS性能优化方法

Publications (2)

Publication Number Publication Date
CN117544506A CN117544506A (zh) 2024-02-09
CN117544506B true CN117544506B (zh) 2024-05-24

Family

ID=89783435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311493816.8A Active CN117544506B (zh) 2023-11-09 2023-11-09 一种基于eBPF技术的容器云DNS性能优化方法

Country Status (1)

Country Link
CN (1) CN117544506B (zh)

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100071613A (ko) * 2008-12-19 2010-06-29 윤대일 유에스엔(usn) 미들웨어 질의 처리 로드 밸런싱 시스템 및 그 방법
US8200842B1 (en) * 2006-10-25 2012-06-12 Cellco Partnership Automatic traffic control using dynamic DNS update
CN109743261A (zh) * 2019-01-07 2019-05-10 中国人民解放军国防科技大学 一种基于sdn的容器网络资源调度方法
CN111464648A (zh) * 2020-04-02 2020-07-28 聚好看科技股份有限公司 一种分布式本地dns系统及域名查询方法
CN112182070A (zh) * 2020-10-13 2021-01-05 安徽极玩云科技有限公司 基于云计算的Elasticsearch查询管理系统
CN113794605A (zh) * 2021-09-10 2021-12-14 杭州谐云科技有限公司 一种基于eBPF的内核丢包检测方法、系统和装置
CN113886336A (zh) * 2021-10-25 2022-01-04 珠海市魅族科技有限公司 流量检测方法、装置、设备及介质
CN113946408A (zh) * 2021-10-26 2022-01-18 北京同创永益科技发展有限公司 云原生边缘容器控制方法、系统及存储介质
CN113986459A (zh) * 2021-10-21 2022-01-28 浪潮电子信息产业股份有限公司 一种容器访问的控制方法、系统、电子设备及存储介质
CN114338524A (zh) * 2021-12-20 2022-04-12 浪潮云信息技术股份公司 一种提升大规模容器云集群网络Service性能的方法及系统
CN114816761A (zh) * 2022-05-17 2022-07-29 昭通亮风台信息科技有限公司 基于eBPF的云服务网格资源优化方法、系统及介质
WO2022257643A1 (zh) * 2021-06-11 2022-12-15 中兴通讯股份有限公司 网络传输层数据处理方法、设备及存储介质
CN115664930A (zh) * 2022-10-12 2023-01-31 浪潮云信息技术股份公司 云原生环境下的无侵入式网络故障诊断和预测方法
CN116016702A (zh) * 2022-12-26 2023-04-25 浪潮云信息技术股份公司 一种应用可观测数据采集处理方法、装置及介质
WO2023151354A2 (zh) * 2022-12-01 2023-08-17 黄建邦 数据传输方法、系统、第一端、中间网络设备及控制设备
CN116684385A (zh) * 2023-07-17 2023-09-01 浙江大学 一种基于eBPF在内核层面的DNS缓存方法
CN116708266A (zh) * 2023-06-20 2023-09-05 爱尔眼科医院集团股份有限公司长沙爱尔眼科医院 一种云服务拓扑图实时更新方法、装置、设备及介质
CN116760834A (zh) * 2023-04-27 2023-09-15 济南浪潮数据技术有限公司 一种负载均衡方法、系统、设备以及存储介质
CN116841468A (zh) * 2023-07-14 2023-10-03 朱庆网络科技(鄄城)有限责任公司 一种数据存储及处理控制方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9906488B2 (en) * 2010-10-26 2018-02-27 Cedexis, Inc. Surrogate name delivery network

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200842B1 (en) * 2006-10-25 2012-06-12 Cellco Partnership Automatic traffic control using dynamic DNS update
KR20100071613A (ko) * 2008-12-19 2010-06-29 윤대일 유에스엔(usn) 미들웨어 질의 처리 로드 밸런싱 시스템 및 그 방법
CN109743261A (zh) * 2019-01-07 2019-05-10 中国人民解放军国防科技大学 一种基于sdn的容器网络资源调度方法
CN111464648A (zh) * 2020-04-02 2020-07-28 聚好看科技股份有限公司 一种分布式本地dns系统及域名查询方法
CN112182070A (zh) * 2020-10-13 2021-01-05 安徽极玩云科技有限公司 基于云计算的Elasticsearch查询管理系统
WO2022257643A1 (zh) * 2021-06-11 2022-12-15 中兴通讯股份有限公司 网络传输层数据处理方法、设备及存储介质
CN113794605A (zh) * 2021-09-10 2021-12-14 杭州谐云科技有限公司 一种基于eBPF的内核丢包检测方法、系统和装置
CN113986459A (zh) * 2021-10-21 2022-01-28 浪潮电子信息产业股份有限公司 一种容器访问的控制方法、系统、电子设备及存储介质
CN113886336A (zh) * 2021-10-25 2022-01-04 珠海市魅族科技有限公司 流量检测方法、装置、设备及介质
CN113946408A (zh) * 2021-10-26 2022-01-18 北京同创永益科技发展有限公司 云原生边缘容器控制方法、系统及存储介质
CN114338524A (zh) * 2021-12-20 2022-04-12 浪潮云信息技术股份公司 一种提升大规模容器云集群网络Service性能的方法及系统
CN114816761A (zh) * 2022-05-17 2022-07-29 昭通亮风台信息科技有限公司 基于eBPF的云服务网格资源优化方法、系统及介质
CN115664930A (zh) * 2022-10-12 2023-01-31 浪潮云信息技术股份公司 云原生环境下的无侵入式网络故障诊断和预测方法
WO2023151354A2 (zh) * 2022-12-01 2023-08-17 黄建邦 数据传输方法、系统、第一端、中间网络设备及控制设备
CN116016702A (zh) * 2022-12-26 2023-04-25 浪潮云信息技术股份公司 一种应用可观测数据采集处理方法、装置及介质
CN116760834A (zh) * 2023-04-27 2023-09-15 济南浪潮数据技术有限公司 一种负载均衡方法、系统、设备以及存储介质
CN116708266A (zh) * 2023-06-20 2023-09-05 爱尔眼科医院集团股份有限公司长沙爱尔眼科医院 一种云服务拓扑图实时更新方法、装置、设备及介质
CN116841468A (zh) * 2023-07-14 2023-10-03 朱庆网络科技(鄄城)有限责任公司 一种数据存储及处理控制方法
CN116684385A (zh) * 2023-07-17 2023-09-01 浙江大学 一种基于eBPF在内核层面的DNS缓存方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于eBPF的虚拟化网络与云原生网络应用;施苏峰;网络安全与数据治理;20230215;第42卷(第02期);9-18 *

Also Published As

Publication number Publication date
CN117544506A (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
EP3389219B1 (en) Access request conversion method and device
CN101820451B (zh) 一种动态域名服务优化系统
CN111107081B (zh) 基于dpdk的多进程dns服务方法和系统
CN104620539B (zh) 用于通过集群支持snmp请求的系统和方法
WO2004036344A3 (en) System and method for the optimization of database
CN104182288A (zh) 一种服务器集群系统功耗自动化测试的方法
CN111543038A (zh) 使用中间设备流拼接的网络流拼接
EP2564306A1 (en) System and methods for mapping and searching objects in multidimensional space
US20020059169A1 (en) System for quickly collecting operational data for internet destinations
WO2020186807A1 (zh) 一种基于区块链技术的电力数据链接系统及方法
EP3065343B1 (en) Network monitoring method and apparatus, and packet filtering method and apparatus
CN111371920A (zh) Dns前端解析方法及系统
CN114389792B (zh) 一种web日志nat前后关联方法及系统
CN113900810A (zh) 分布式图处理方法、系统及存储介质
CN111010460A (zh) 域名解析方法和装置
CN111585786A (zh) 一种大数据集群免密搭建方法的实现
CN111557087A (zh) 使用业务流拼接发现中间设备
CN112583895A (zh) Tcp通信方法、系统及装置
WO2012092765A1 (zh) 一种域名系统及其提供负荷均衡的方法
CN117544506B (zh) 一种基于eBPF技术的容器云DNS性能优化方法
CN109413224B (zh) 报文转发方法和装置
CN113014573B (zh) Dns服务器的监控方法、系统、电子装置和存储介质
CN113946587A (zh) 句柄标识解析缓存方法、查询方法及其句柄标识解析系统
JP4758302B2 (ja) ネットワークノード
US11973738B2 (en) Domain name system analysis on edge network devices

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