历时1年3个月,从零学习EBPF到写了一个HTTP接口生成器

imainba · · 1091 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

如题,去年6月一次偶然的机会从同事口中得知了DPDK可以高性能处理网络数据(非常感谢这位同事,哈哈),然后进行了一番搜索发现了ebpf这个黑科技,从此踏入ebpf的不归路(又掉了不少头发)。 首先从xdp开始学起,了解到了 <https://github.com/xdp-project/xdp-tutorial> 这个项目,安装编译环境就是一个大坑,直接劝退3个月,直到去年9月份又重新捡起来,把环境搭建成功,开始专研xdp-tutorial中的每个实验。 后面又接触到cilium/ebpf这个库,然后把xdp-tutorial中的实验用这个库抄袭实现了一遍,顺便还把其它几个库的实验也抄了一遍,感兴趣的可以看看 <https://github.com/Zhouchaowen/ebpf_labs> 。 在后面接着断断续续的了解xdp的一些知识,有一次想通过xdp实现L4层的负载均衡功能,搞了几天也没有成功(好像是校验和的问题),再次被劝退,后面也陆陆续续在了解,但是相关资料还是太少了。 直到今年4月开始学习k8s,接触到cilium这个网络插件,看了看它的源码,简直爆鸡儿难(这是人能看懂的吗?)。后来经过反复放弃,慢慢的看懂了一点点,了解到了tc ebpf和如何加载它的知识。碰巧又看到了 <https://github.com/gojue/ecapture> 这个项目,发现很有趣,交流群里cfc4n大佬非常热心,问了不少问题都回答了(非常感谢),又结合刚了解的tc ebpf然后产生了实现一个http接口生成器的想法(其实是我们内部一直缺少接口文档,全靠手撸,我懒就不想写这个接口文档,哈哈哈哈),然后立刻动手建立项目,一个星期后写了第一版代码简单测试修改了一些bug发了第一个版本v0.0.1。 目前在Linux 5.4.0-156-generic x86_64以上的内核版本应可以使用,但项目还非常初始,可能会有许多问题,希望使用的过程中有问题可以反馈,哈哈哈。 项目地址:<https://github.com/Zhouchaowen/prism> 直接运行: ``` prism -n <device_name> # device_name 网卡名称 ``` Docker方式运行: ``` docker run --net host --privileged --name prism -itd zmosquito/prism:v0.0.1 ./prism -n <device_name> ``` 演示视频:<https://www.bilibili.com/video/BV1tK4y1c7rh/> 感谢star,哈哈

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1091 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传