上海品茶

黄富-XDP ACL 在虾皮虚拟网络网关上的实战经验分享.pdf

编号:161340 PDF 24页 1.16MB 下载积分:VIP专享
下载报告请您先登录!

黄富-XDP ACL 在虾皮虚拟网络网关上的实战经验分享.pdf

1、XDP ACL 在在 Shopee 虚拟网虚拟网络网关上的实战经验分享络网关上的实战经验分享第二届第二届 eBPF开发者大会开发者大会中国中国西安西安黄富,13 Apr.2024第二届第二届 eBPF开发者大会开发者大会中国中国西安西安1 虚拟网络与 XDP 网关简介2 XDP ACL 背景简介3 XDP ACL 方案研究4 XDP ACL 方案实现讲解5 XDP ACL 方案落地效果AGENDA第二届第二届eBPF开发者大会开发者大会虚拟网络与虚拟网络与XDP 网关简介网关简介第二届第二届eBPF开发者大会开发者大会虚拟网络与 XDP 网关简介跨网络通信:允许虚拟网络终端(e.g.Kuber

2、netes pod)和物理网络终端(e.g.baremetal server)之间通信。网络地址转换:将私有 IP 地址转换为公网 IP 地址,提供面向公网的网络通信能力。安全性功能:主要提供访问控制列表(ACL)的能力,保护集群中的数据和资源安全。虚拟网络网关:是一种用于连接虚拟网络与外部网络的设备或服务。虚拟网络网关:是一种用于连接虚拟网络与外部网络的设备或服务。在在 Shopee,基于,基于 XDP 实现的虚拟网络网关提供了如下能力:实现的虚拟网络网关提供了如下能力:第二届第二届eBPF开发者大会开发者大会XDP ACL背景简介背景简介第二届第二届eBPF开发者大会开发者大会XDP AC

3、L 背景简介在在 Shopee,虚拟网络的用户有不少,虚拟网络的用户有不少 VPC 维度的维度的 ACL 需求,比如:需求,比如:1.VPC A 拒绝来自拒绝来自 VPC B 的流量访问的流量访问2.VPC A 只对外提供提供只对外提供提供 TCP dport 6379 的的 Redis 服务服务3.VPC A 允许访问公网,但不允许公网的流量主动访问允许访问公网,但不允许公网的流量主动访问 VPC A第二届第二届eBPF开发者大会开发者大会XDP ACL方案研究方案研究第二届第二届eBPF开发者大会开发者大会XDP ACL 方案研究eBPF/XDP based firewall and pa

4、cket filteringSecuring Linux with a Faster and Scalable IptablesTupleMerge:Fast Software Packet Processing for Online Packet ClassificationGitHub hi-glenn/xdp_aclGitHub Asphaltt/xdp_aclRFC PATCH bpf:introduce new bpf map type BPF_MAP_TYPE_WILDCARDXDP ACL 相关论文:相关论文:XDP ACL 相关开源项目:相关开源项目:eBPF技术实践:高性能A

5、CLeBPF Talk:再论高性能 eBPF ACLeBPF Talk:低性能 eBPF ACLXDP ACL 相关博客文章:相关博客文章:第二届第二届eBPF开发者大会开发者大会XDP ACL 方案研究对比对比 3 个个 XDP ACL 方案:方案:匹配方式匹配方式One by oneiptables-like approachTuple matchbitmap approachMerged Space SearchTupleMerge approach实现难度实现难度低低高高支持的规则复杂度支持的规则复杂度低高高低千条规则匹配耗时千条规则匹配耗时高低低低低第二届第二届eBPF开发者大会开发

6、者大会XDP ACL 方案研究因为因为 bitmap 方案满足高方案满足高 ACL 规则复杂度、低匹配耗时的需求,所以需要在规则复杂度、低匹配耗时的需求,所以需要在 XDP 网关项目中做网关项目中做 POC,确认能够在确认能够在 XDP 网关项目中落地。网关项目中落地。确认点:确认点:1.ACL 规则能从规则能从 ETCD 下发到下发到 XDP bpf maps。2.XDP bpf maps 正确保存正确保存 ACL 规则的数据。规则的数据。3.网络包能匹配到网络包能匹配到 ACL 规则。规则。第二届第二届eBPF开发者大会开发者大会XDP ACL方案实现讲解方案实现讲解第二届第二届eBPF开

7、发者大会开发者大会XDP ACL 方案实现讲解Match ACL rules for one directionFind ACL policy for the matched bitmapsMatch ACL rules for two directionsAggregate data from ETCDSort ACL rules by priorityPrepare data to save to bpf mapsUpdate acl PROG_ARRAYXDP ACLGo acl module基于基于 bitmap 的的 XDP ACL 方案比较复杂,实现难方案比较复杂,实现难度较高,难

8、点较多:度较高,难点较多:第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Match ACL rules for one direction对于一个网络包,有 2 个方向的规则需要匹配:通过目的 IP 地址可以查找到 VPC B,然后去匹配 VPC B 的 INGRESS 方向的 ACL 规则;通过源 IP 地址可以查找到 VPC A,然后去匹配 VPC A 的 EGRESS 方向的 ACL 规则。匹配 VPC A EGRESS 方向的 ACL 规则的示例:第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Match ACL rules for one

9、 direction对于一个网络包,有 2 个方向的规则需要匹配:通过目的 IP 地址可以查找到 VPC B,然后去匹配 VPC B 的 INGRESS 方向的 ACL 规则;通过源 IP 地址可以查找到 VPC A,然后去匹配 VPC A 的 EGRESS 方向的 ACL 规则。匹配 VPC A EGRESS 方向的 ACL 规则的示例:VPC A 的的 bpf prog 的的 EGRESS 方向有方向有 4 个个 bpf map:1.daddr:lpm trie map,保存 VPC B 的所有 CIDR2.sport:hash map,保存所有 ACL 规则里的 sport3.dport

10、:hash map,保存所有 ACL 规则里的 dport4.protocol:array map,保存所有 ACL 规则里的 protocol 信息5.action:array map,保存所有 ACL 规则里的 action 信息其中,daddr、sport、dport、protocol 等 bpf map 的 value 是 bitmap。网络包匹配网络包匹配 ACL 规则的过程:规则的过程:1.通过 saddr 查找到 VPC A2.通过 tailcall 运行 VPC A 的 acl bpf prog,并指定匹配 EGRESS 方向的规则3.通过 daddr 在 daddr map

11、中查找,得到 bitmap14.通过 sport 在 sport map 中查找,得到 bitmap25.通过 dport 在 dport map 中查找,得到 bitmap36.通过 protocol 在 protocol map 中查找,得到 bitmap47.将得到的 4 个 bitmap 进行按位与操作,得到 bitmap58.计算 bitmap5 中第一个值为 1 的比特的索引9.使用该索引到 action map 中查找,得到最终的 action网络包匹配网络包匹配 INGRESS 方向的方向的 ACL 规则的过程与此类似。规则的过程与此类似。第二届第二届eBPF开发者大会开发者大

12、会XDP ACL 方案实现讲解:Find ACL policy for the matched bitmapsbitmap:是一个 uint64 数组,每一个比特位都对应一条 ACL 规则。数组之间如何进行按位与操作?同时遍历 bitmap1,bitmap2,bitmap3,bitmap4,然后对遍历中的 4 个 uint64 进行按位与操作,保存到 bitmap5。把 bitmap1 当作 bitmap5 使用,就不需要额外的 bitmap 了。如何计算 bitmap 中第一个值为 1 的比特的索引?遍历该 bitmap,如果第 n 个 uint64 不为 0,则索引计算方式:(n 6)+f

13、fs64(bitmapn)ffs64()的实现方式,请参考 内核 ffs()函数的实现。计算出该索引后,即可到 action map 中查找对应 ACL 规则的 action 信息。第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Match ACL rules for two directions网络包匹配网络包匹配 VPC A EGRESS 方向方向 ACL 规则的过程:规则的过程:1.通过 saddr 查找到 VPC A2.通过 tailcall 运行 VPC A 的 acl bpf prog,并指定匹配 EGRESS 方向的规则3.网络包匹配网络包匹配 VPC B

14、INGRESS 方向方向 ACL 规则的过程:规则的过程:1.通过 daddr 查找到 VPC B2.通过 tailcall 运行 VPC B 的 acl bpf prog,并指定匹配 INGRESS 方向的规则3.tailcall 的限制:bpf prog1 tailcall bpf prog2 后,不会返回 bpf prog1 了。问题是:如何使用 tailcall 又能拿到 2 个方向的结果呢?答案请看右边的代码片段:1._noinline:使用 tailcall in bpf2bpf 特性。2.volatile:禁止 clang 编译器对 acl_action()函数返回值的优化处理。

15、3.xdp:使用 XDP metadata 特性传递方向信息。第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Aggregate data from ETCD在在 Go acl module 里,需要聚合里,需要聚合 vpc,acl,subnet 信息:信息:1.将 vpc 和 acl 规则关联起来。2.每个 vpc 有其唯一的 ID,用来当作 acl PROG_ARRAY 的索引。3.如果 acl 规则里的目标地址是另一个 vpc,则需要将该 vpc 展开成它的 subnet 列表。第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Sort ACL

16、rules by priority在在 Go acl module 里,需要根据里,需要根据 priority 排序排序 ACL 规则:规则:1.根据 priority 以及其它字段进行排序。2.排序是为了确定 ACL 规则在 bitmap 中的相对位置;在 bitmap 中的索引越小代表优先级越高。第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Prepare data to save to bpf maps在在 Go acl module 里,将排序后的里,将排序后的 ACL 规则信息保存到规则信息保存到 bpf maps 里:里:1.将排序后的 ACL 规则的索引按

17、照 addr,sport,dport,protocol 等维度保存到 bitmap 中。2.按方向将 addr,sport,dport,protocol 的 bitmap 保存到对应的 bpf map 中。3.以 ACL 规则的索引为 key,ACL 规则 action 为 value 保存到 action bpf map 中。第二届第二届eBPF开发者大会开发者大会XDP ACL 方案实现讲解:Update acl PROG_ARRAY在在 Go acl module 里,将排序后的里,将排序后的 ACL 规则信息都保存到规则信息都保存到 bpf maps 后,更新后,更新 acl PROG

18、_ARRAY 中对应的中对应的 bpf prog:1.每个 VPC 有个唯一的 ID 充当 acl PROG_ARRAY 的索引。2.每次更新 ACL 规则时,使用一个全新的 bpf prog,并将 ACL 规则信息保存到新的 bpf maps 中。3.以 VPC ID 为索引,更新 acl PROG_ARRAY。第二届第二届eBPF开发者大会开发者大会XDP ACL方案落地效果方案落地效果第二届第二届eBPF开发者大会开发者大会XDP ACL 方案落地效果支持配置比较复杂的支持配置比较复杂的 ACL 规则:规则:如下规则,不需要拆分成:1.80+10.1.1.0/24+02.8080+10.1.1.0/24+03.443+10.1.1.0/24+04.第二届第二届eBPF开发者大会开发者大会XDP ACL 方案落地效果配置配置 4096 条条 ACL 规则,不同规则,不同 payload 长度的每次匹配长度的每次匹配 ACL 规则的耗时:规则的耗时:环境:25G Mellanox NIC x2Q&A第二届第二届 eBPF开发者大会开发者大会

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(黄富-XDP ACL 在虾皮虚拟网络网关上的实战经验分享.pdf)为本站 (张5G) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
会员动态
会员动态 会员动态:

wei**n_...  升级为至尊VIP    wei**n_... 升级为至尊VIP

wei**n_... 升级为至尊VIP  wei**n_... 升级为高级VIP 

 wei**n_... 升级为高级VIP  177**45... 升级为至尊VIP

wei**n_... 升级为至尊VIP  wei**n_... 升级为至尊VIP 

微**...  升级为标准VIP wei**n_...  升级为标准VIP

wei**n_...  升级为标准VIP 139**16... 升级为至尊VIP  

wei**n_... 升级为标准VIP wei**n_... 升级为高级VIP 

182**00... 升级为至尊VIP   wei**n_... 升级为高级VIP 

 wei**n_... 升级为高级VIP wei**n_...  升级为标准VIP

133**67... 升级为至尊VIP  wei**n_... 升级为至尊VIP

 柯平 升级为高级VIP    shi**ey... 升级为高级VIP

 153**71... 升级为至尊VIP 132**42... 升级为高级VIP 

 wei**n_... 升级为至尊VIP  178**35... 升级为至尊VIP

wei**n_...  升级为高级VIP wei**n_... 升级为至尊VIP

wei**n_...  升级为高级VIP wei**n_...  升级为高级VIP

133**95...  升级为高级VIP 188**50... 升级为高级VIP 

 138**47... 升级为高级VIP 187**70...  升级为高级VIP

 Tom**12... 升级为至尊VIP  微**... 升级为至尊VIP

wei**n_... 升级为至尊VIP  156**93...  升级为至尊VIP

 wei**n_... 升级为高级VIP  wei**n_... 升级为至尊VIP

wei**n_... 升级为标准VIP   小敏 升级为高级VIP 

hak**a9...  升级为至尊VIP  185**56... 升级为高级VIP

 156**93...  升级为标准VIP wei**n_...  升级为至尊VIP

wei**n_...  升级为至尊VIP Br**e有...  升级为至尊VIP 

wei**n_... 升级为标准VIP  wei**n_...  升级为高级VIP

 wei**n_... 升级为至尊VIP  156**20... 升级为至尊VIP

 wei**n_...  升级为至尊VIP 微**... 升级为标准VIP 

 135**45...  升级为标准VIP wei**n_...   升级为至尊VIP

 wei**n_... 升级为高级VIP    157**60... 升级为高级VIP

150**45...  升级为至尊VIP  wei**n_... 升级为标准VIP 

wei**n_...  升级为至尊VIP  151**80... 升级为高级VIP

 135**10... 升级为标准VIP  wei**n_...  升级为高级VIP

 wei**n_... 升级为高级VIP wei**n_...  升级为至尊VIP

wei**n_...  升级为标准VIP  wei**n_...  升级为高级VIP

 wei**n_... 升级为高级VIP  135**22... 升级为高级VIP

wei**n_...  升级为至尊VIP 181**62...  升级为至尊VIP

黑**...  升级为至尊VIP wei**n_... 升级为至尊VIP 

178**61... 升级为高级VIP  186**20... 升级为高级VIP 

wei**n_...  升级为标准VIP   wei**n_... 升级为高级VIP 

  wei**n_... 升级为标准VIP  wei**n_... 升级为至尊VIP

wei**n_...  升级为标准VIP  152**94...  升级为高级VIP 

wei**n_... 升级为标准VIP  wei**n_... 升级为标准VIP  

 185**27...  升级为标准VIP 135**37... 升级为至尊VIP 

159**71... 升级为高级VIP  139**27...   升级为至尊VIP

 wei**n_... 升级为高级VIP  wei**n_... 升级为高级VIP

188**66... 升级为标准VIP wei**n_... 升级为至尊VIP 

 wei**n_... 升级为高级VIP  wei**n_...   升级为至尊VIP

wei**n_...  升级为高级VIP  wei**n_... 升级为高级VIP 

 wei**n_...  升级为至尊VIP  177**81...  升级为标准VIP

185**22...  升级为标准VIP  138**26... 升级为至尊VIP