搜索

pdf文档 Containers and BPF: twagent story

427.42 KB 9 页 0 下载 78 浏览 0 评论 0 收藏
语言 格式 评分
英语
.pdf
3
摘要
本文档介绍了Facebook的twagent系统,该系统用于管理所有Facebook容器,并通过cgroup-bpf程序实现多种网络功能。cgroup-bpf程序主要用于网络相关功能,如IP分配、透明代理、防火墙和网络故障注入测试。此外,twagent还集成了BPF技术,用于监控和控制容器的网络流量,并通过BPF工具链进行测试和资源监控。文档还展示了如何通过BPF实现容器的IP配置和网络隔离。
AI总结
## 《Containers and BPF: twagent story》总结 ### 1. **twagent 简介** - **twagent** 是 Facebook 的一个守护进程,运行在每一台服务器上,负责管理所有 Facebook 容器。 - 它是 TW 系统的一部分,相关论文已发表于 OSDI'20。 ### 2. **容器(task)** - 容器通过命名空间(cgroup、mount、pid 等)实现隔离。 - 使用 cgroup v2 和 cgroup-bpf 程序进行分组和管理。 ### 3. **cgroup-bpf 的应用** - 大部分 twagent 任务启用了 cgroup-bpf 功能,主要用于网络相关场景: - IP 分配(当未使用 netns 时) - 主机服务连接器(使用 netns 时) - 透明代理(主要用于 TLS) - 容器防火墙 - 网络故障注入 - 网络计数(按机架、数据中心、区域) - 其他功能: - sysctl 访问控制 ### 4. **cgroup-bpf 实现细节** - **BPF 附加**:通过 API 调用按需附加到任务,动作可按概率执行,用于测试灾难恢复准备情况。 - **资源监控**:通过 `bpf tax` 工具监控资源使用情况(CPU、内存锁),并设置警报。 - **垃圾回收**:通过 `BPF_TCP_CLOSE` 或 socket 本地存储自动清理映射条目。 ### 5. **容器防火墙(twfw)** - **需求**:IP 防火墙应仅影响容器状态,且任务停止时自动清理规则。 - **实现**:使用 BPF CGROUP INET {EGRESS, INGRESS},支持基于 socket 层的过滤(BPF CGROUP INET6 {CONNECT, SENDMSG})。 - **功能**:支持基于 IP、端口、协议、TCP 标志的过滤,集成服务发现(动态 IP:port 端点)。 ### 6. **网络故障注入** - 使用相同的 per-packet 防火墙,按需附加到任务,动作可按概率执行,用于测试灾难恢复准备情况。 ### 7. **任务 IP 分配(IP-per-task)** - Facebook 采用 IPv6 网络。 - 每个任务分配唯一 IPv6 地址,便于 QoS 标记。 - 通过 BPF_PROG_TYPE_CGROUP_SOCK_ADDR 和 BPF_CGROUP_SOCK_OPS 程序实现 TCP/UDP 服务器和客户端的 IP 绑定。 ### 8. **总结** - **twagent** 使用 cgroup-bpf 实现了高效的容器网络管理,包括 IP 分配、防火墙、透明代理等功能。 - BPF 的灵活和高性能使其成为容器网络管理的理想选择,同时通过资源监控和故障注入测试提升了系统的可靠性和可维护性。
来源 ebpf.io
P1
P2
P3
P4
P5
P6
P7
P8
P9
下载文档到本地,方便使用
文档评分
请文明评论,理性发言.