Cilium的网络加速秘诀
linux 5.14 版本,eBPF 有32种类型程序。而 cilium 主要使用了如下类型程序: • sched_cls 。cilium在内核 TC 处实现数据包转发、负载均衡、过滤 • xdp 。cilium在内核 XDP 处实现数据包的转发、负载均衡、过滤 • cgroup_sock_addr 。cilium在 cgroup 中实现对service解析 • sock_ops + sk_msg。记录本 iptables 等 技术,降低了访 问延时。例如在相同环境下,service 数量达到3K,kube-proxy iptables下 的的延时为0.6ms,而cilium的延时为 0.3ms XDP 加速南北向 nodePort 访问 cilium 借助 eBPF 程序 ,能快速完 成 nodePort 、 LoadBalancer service 的解析和转发,其转发性能能比肩 DPDK 压力下,节省了30%的CPU利用率 2. XDP的性能上限极高,可能是 TC 的 10 倍左右 raw PREROUTING mangle PREROUTING nat PREROUTING tc ingress conntrack filter FORWARD mangle POSTROUING nat POSTROUING tc egress routing XDP kernel0 码力 | 14 页 | 11.97 MB | 1 年前32022年美团技术年货 合辑
Storage、Network 等与内核交互之间; 2. 也可以在内核中的功能模块交互之间; 3. 又可以在内核态与用户态交互之间; 4. 更可以在用户态进程空间。 eBPF 的功能覆盖 XDP、TC、Probe、Socket 等,每个功能点都能实现内核态的 篡改行为,从而使得用户态完全致盲,哪怕是基于内核模块的 HIDS,一样无法感知 到这些行为。 基于 eBPF 的功能函数,从业 技术上,会如何实现呢? XDP/TC 层修改 TCP 包 为了让后门隐藏的更好,最好是不开进程,不监听端口(当前部分我们只讨论网络层 隐藏)。而 eBPF 技术在 XDP、TC、Socket 等内核层的功能,能够实现流量信息修 改,这些功能常被应用在 L3、L4 的网络负载均衡上。比如 Cilium 的网络策略都是 基于 eBPF XDP 实现。eBPF hook 了 XDP 点后,更改了 TCP 内核再将该数据包转发出去。 按照 XDP 与 TC 在 Linux 内核中,处理 ingress 与 egress 的位置,可以更准确地 确定 hook 点。 ● XDP 的 BPF_PROG_TYPE_XDP 程序类型,可以丢弃、修改、重传来自 ingress 的流量,但无法对 egress 起作用。 ● TC 的 BPF_PROG_TYPE_SCHED_CLS 除了拥有 XDP“BPF_PROG_0 码力 | 1356 页 | 45.90 MB | 1 年前3openEuler 21.09 技术白皮书
Path (XDP): An eBPF-based high performance, programmable network data path that processes data before network packets enter the network protocol stack to improve network performance. XDP works0 码力 | 36 页 | 3.40 MB | 1 年前3openEuler 24.03 LTS 技术白皮书
特性:允许协议栈发送更大的 TSO/GRO 数据包,实现更好的网络吞吐量性能和更低的延迟。 内核创新 17 openEuler 24.03 LTS 技术白皮书 • XDP multi-buffer 支持:允许 Jumbo frame 场景下使用 XDP 提升性能。 • Thread-based NAPI polling 支持:允许网卡 NAPI polling 移到内核线程处理,使 CPU 调度器可以合理调度提升性能。0 码力 | 45 页 | 6.18 MB | 1 年前32.2.1通过Golang+eBPF实现无侵入应用可观测
安全(内核verifier机制) • 动态可编程(无需重启) eBPF程序加载和校验 02. eBPF程序加载和校验 eBPF事件驱动 Kprobe/Kretprobe Uprobe/Uretprobe XDP Tracepoint Perf 01. eBPF事件驱动 eBPF在云原生场景下的应用 第二部分 网络加速 01.网络加速 From:https://istio.io/latest/0 码力 | 29 页 | 3.83 MB | 1 年前3严选 ServiceMesh 实践
策略执行的替代品, Istio 的 RBAC 也是可以满足一部分功能的,比如服务白名 单我们就是通过 RBAC 来实现21/24 规划与展望 /0422/24 性能优化方向 • 方案1: 采用 eBPF/xDP(sockops),优化路径为 SVC <-> Envoy,延迟性能提升10-20%。 Envoy 部署方式 per-pod,跟社区方向一致,也是目前严选采用的部署方案。 • 方案2: 采用 DPDK+Fstack0 码力 | 25 页 | 2.07 MB | 5 月前3蚂蚁金服网络代理演进之路
级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP Netscaler自研四层网络代理 2011 2014 2018 未来 Ø 全面使用DPDK技术重构 Ø EBPF,XDP Ø 可编程交换芯片(P4语言) Ø 四层负载均衡-IPVS Ø NAT网关蚂蚁七层网络代理 Google Spanner?蚂蚁七层网络接入代理 Spanner蚂蚁七层网络接入代理 AGNA0 码力 | 46 页 | 19.93 MB | 5 月前305. 李枫 用于 Linux 内核调试的 Python
sched.com/event/BCsg/making-the-kernels-networking-data- path-programmable-with-bpf-and-xdp-daniel-borkmann-covalent GCC (GCC support for eBPF is on the way) https://www.phoronix.com/scan0 码力 | 63 页 | 4.07 MB | 1 年前3openEuler 21.09 技术白皮书
验 证其内容,抵御 ROP/JOP 攻击。 支持 BTI (Branch Target Identifiers) 特性: 对间接跳转的目标进行限制。与 PA 结合使用 减少控制流攻击。 XDP(eXpress Data Path)支持:基于 ebpf 的 一种高性能、用户可编程的网络数据包传输路径, 在网络报文还未进入网络协议栈之前就对数据进行 处理,提升网络性能。可用于 DDOS0 码力 | 35 页 | 3.72 MB | 1 年前3openEuler 22.03-LTS 技术白皮书
之前验证其内容,抵 御 ROP/JOP 攻击。 • 支持 BTI(Branch Target Identifiers)特性:对间接跳转的目标进行限制。与 PA 结合使用减少控制流攻击。 • XDP(eXpress Data Path)支持:基于 ebpf 的一种高性能、用户可编程的网络数据包传输路径,在网络报文还未 进入网络协议栈之前就对数据进行处理,提升网络性能。可用于 DDOS 防御、防火墙、网络0 码力 | 17 页 | 6.52 MB | 1 年前3
共 11 条
- 1
- 2