[发明专利]运行在用户空间的基于EBPF的软件容器实现方法在审
申请号: | 202110040004.2 | 申请日: | 2021-01-12 |
公开(公告)号: | CN112817597A | 公开(公告)日: | 2021-05-18 |
发明(设计)人: | 谭宇翔;郝振石 | 申请(专利权)人: | 山东兆物网络技术股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F11/36 |
代理公司: | 青岛发思特专利商标代理有限公司 37212 | 代理人: | 孙佩佩 |
地址: | 255000 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 运行 用户 空间 基于 ebpf 软件 容器 实现 方法 | ||
本发明涉及一种运行在用户空间的基于EBPF的软件容器实现方法,属于数据处理技术领域;包括:步骤S1、在用户空间建立的容器端接收由在用户空间建立的客户端发送的bpf命令数据流;步骤S2A、通过验证器执行静态分析、指令验证、Map和函数关联;步骤S3A、若验证器验证通过则通过解析器将eBPF程序加载至目标平台,否则通过实时编译器编译为目标平台的机器码后加载至目标平台;步骤S2B、通过支持并发的共享Map完成bpf命令的横向访问和纵向访问;步骤S3B、将访问的bpf命令加载至目标平台的bpf命令加载至目标平台;将EBPF思想在用户层面实现,以解决现有EBPF技术只能应用在Linux内核中的不足。
技术领域
本发明涉及一种运行在用户空间的基于EBPF的软件容器实现方法,属于数据处理技术领域。
背景技术
EBPF技术基于BPF技术,BPF技术1992年诞生于美国伯克利大学,是BerkerlyPacket Filter的缩写,用于数据包过滤领域,一段bpf代码是由若干bpf指令组成,一个bpf指令共64位,有四部分组成,如图1所示。
通过多个bpf指令的精心编译可以组成一个自恰的有限状态机,其输入参数为数据包的首地址及长度,返回值是true或false可通过成熟的第三方库(例如libpcap)将格式友好的语法编译为bpf指令例如:
tcp port 80 or udp dst port 8000
可编译为
由于BPF的格式和逻辑都简单,因此非常适合做JIT(Just In Time)实时编译器,将BPF代码实时编译为目标平台的机器码,因此2000年开始各大cpu计算平台都推出了BPF的JIT版本,因此古老的BPF技术又焕发了新的活力。
虽然BPF的诞生年代久远,但是它的简洁有力的设计思想一直没有随着时代的跨越而消失,反而更加具有吸引力,2011年,随着Linux内核3.0的发布,将BPF全面JIT化,两年后Alexei Starovoitov对BPF进行彻底地改造,并增加了新的功能,改善了它的性能,这个新版本被命名为eBPF(意思是“extended BPF”),与此同时,将以前的BPF变成cBPF(意思是“classic”BPF)。几乎是同年,llvm推出了ebpf的后端编译器,让快速编写部署eBPF程序成为可能。
EBPF指令也是64位,但是其意义有了很大的变化,如图2所示。
通过图2可知,改造后的eBPF指令体积没变,但是结构更加类似现代处理器指令,由此构建的状态机也不仅仅是进行网络数据包的简单判断,而是能够可判断,可分支,可循环,可跳转和跳回(支持函数调用),可支持栈操作(取决于寄存器的选择)。又加了MAP的映射机制,与用户层程序接口简洁清晰。
再加上更新eBPF程序的“可注入”属性,使得热更新都成为可能,实际上eBPF刚推出时,在很短的时间内就在内核的各个子系统中进行了应用,从网络数据处理到文件系统追踪,从系统安全到容器应用,eBPF几乎可适应任何场景。
以上就是eBPF的应用背景。
EBPF技术的不足:
○EBPF技术只能应用在Linux内核中,其功能更新和bug修复只能等着新内核版本的发布。
○EBPF内核中的Map类型单一,只有数组,链表,哈希表和相关变种的类型,对于其他类型的Map比如ACL,LPM,PIPE等等都没有实现。
○虽然EBPF在内核的多个子系统中应用,但其应用特性还只是泛泛,深度上的应用还需要时间考量。
○对于并发的支持不好,Map对于并发的适配性和准确度存疑。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东兆物网络技术股份有限公司,未经山东兆物网络技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110040004.2/2.html,转载请声明来源钻瓜专利网。