2.2.1通过Golang+eBPF实现无侵入应用可观测eBPF在云原生场景下的应用 第二部分 网络加速 01.网络加速 From:https://istio.io/latest/zh/blog/2022/merbridge/ eBPF 的可编程能力使其能够内核中完成包的处理和转发,而且可以添加额外扩展能力。 观测和跟踪 将 eBPF 程序附加到跟踪点以及内核和用户应用探针点的能力,使得应用程序和系统本身的 运行时行为具有前所未有的可见性 From:https://juejin 应用性能监控(APM) Kubernetes监控 Kubernetes组件异常: Scheduler, KCM, etcd,api-server, coredns… 系统调用异常:网络请 求,内存申请,文件操 作,CGroup… 内核异常:进程调度, 内存管理,文件管理, 夯机宕机,资源异 常… 应用组件异常:线程池满,数据库连接无法获取, OOM,文件读取错误… 无法自顶向下端到端 架构感知,节点和关系以及他们的属性,能够正确地反应当前运行的网络关系,帮助 用户感知架构,通过对比期望架构,发现问题,通常在新应用上线,新地区开服,整 体链路梳理等场景使用。 异常发现 节点 属性 关系 规则 异常发现,通过节点和关系颜色表达,能够快速地发现特点的节点和关系异常,进一步提升问题发 现和定位的效率,通常在应用运行时整体链路梳理和特定问题节点上下游分析等场景使用。 关联分析 上游 自身 下游 节点0 码力 | 29 页 | 3.83 MB | 1 年前3
 Cilium的网络加速秘诀hook 点上,以 VM 方式安全运行,其能过通过 map 存储结 构存储数据,能通过 map 同用户态程序交互, 最终实现内核数据进行修改,或者影响内核处 理请求的结果,或者改变内核处理请求的流程。 极大提升了内核处理事件的效率。 截止 linux 5.14 版本,eBPF 有32种类型程序。而 cilium 主要使用了如下类型程序: • sched_cls 。cilium在内核 TC 处实现数据包转发、负载均衡、过滤 cilium 使用 eBPF 程序,借助 bpf_redirect() 或 bpf_redirect_peer() 等 helper 函数,快速帮助同宿主机间 的流量转发,节省了大量的内核协议栈 处理流程 pod 1 process kernel network stack raw PREROUTING mangle PREROUTING nat PREROUTING 加速跨节点pod间通信 pod在跨节点通 信的场景下, cilium 借助 eBPF redirect 能力,帮 助数据包在主机物 理网卡和pod虚拟 网卡之间快速转发, 能够完全 bypass 内核协议族的处理。 在某测试场景下, 跨节点间的 pod 通 信的 tcp 性能,比 node间应用通信的 tcp 性能还稍高 woker node2 woker node1 pod10 码力 | 14 页 | 11.97 MB | 1 年前3
共 2 条
- 1
 













