- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
「eBPF」专场
本期议题:使用eBPF代替iptables实现服务网格加速
刘齐均2023年05月28日
目录
Merbridge项目介绍
实现原理
实现效果
未来展望
Merbridge项目介绍
Merbridge是什么?
Merbridge在服务网格中使
用eBPF技术代替iptables,
实现流量拦截。
借助eBPF和msg_redirect
技术,Merbridge可以提高
Sidecar和应用之间的传输速
度,降低延迟。
Merbridge项目介绍
目前生态
•支持IstioAmbient模式
•支持Kumamesh
•支持OpenServiceMesh
•支持Linkerd2
来自:devstats
实现原理
如何实现流量拦截
•什么流量需要拦截?
•App发出的流量(通过UID
判断)
•拦截到哪里?
•怎么拦截?
•通过connect程序修改发起
连接的目的地址为
127.0.0.1:15001
•如何获取原地址?
•通过get_sockopt程序返回原
始目的地址。
实现原理
如何加速?
eBPF提供了bpf_msg_redirect_hash相关的
helper函数,可以将主机上的两个socket传输
路径进行短接,绕过内核态协议栈,从而加速
进程间的访问。
Helper函数依赖一个内核级别的map保存连接
信息,需要确保每个连接在map中的key互
不冲突。
在容器这种场景下,如果四元组冲突怎么办?
P1:127.0.0.1:56789=127.0.0.1:15001
P2:127.0.0.1:56789=127.0.0.1:15001
实现原理
通过CNI获取PodIP解决四元组冲突问题
•Merbridge会通过CNI插件的能力,在Pod
创建的时候,将Pod的IP写入一个Map,
同时,在Pod的Netns监听一个特定的端
口,并设置这个socket的mark为刚才IP
的Key。
•当Merbridge的mb_connect程序在处理请
求时,通过获取当前Netns的指定端口
socket的mark,再根据mark从map中读
取IP,即可获得当前IP。
•通过将sourceip替换成PodIP即可解决四
元组冲突问题。
实现原理
Ambient模式支持难题
•Ambient模式下,加入/移除网格将
更加灵活,CNI模式将不再适用
(CNI只会在Pod创建的时候生效,
Ambient模式允许通过修改
您可能关注的文档
- GOTC2023ebpf冷升级-让低版本内核用上新特性.pdf
- GOTC2023eBPF与私密计算的生态结合.pdf
- GOTC2023Java机密计算 – 为Java应用打造安全金钟罩.pdf
- GOTC2023KubeEdge车云协同平台创新实践-OpenSDV 软件定义汽车专场.pdf
- GOTC2023-LF APAC 开源布道者开源教育 SIG.pdf
- GOTC2023LFOSSA为中国开源人才发展而生.pdf
- GOTC2023RISC-V云计算软件开源现状及中国电信探索.pdf
- GOTC2023-RT-Thread Smart 操作系统的实践_OpenSDV 软件定义汽车专场.pdf
- GOTC2023础光系列操作系统 「软件定义汽车」专场.pdf
- GOTC2023从 C++ 新特性的实现与实践谈起:C++ 生态的发展趋势及其影响.pdf
文档评论(0)