当前位置: 首页 > 软件库 > 管理和监控 > eBPF >

Merbridge

使用 eBPF 加速服务网格
授权协议 Apache-2.0
开发语言 C/C++ Google Go
所属分类 管理和监控、 eBPF
软件类型 开源软件
地区 不详
投 递 者 逑衡
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Merbridge 旨在让 Service Mesh 的流量拦截和转发更加高效。借助 Merbridge,开发人员可以使用 eBPF 而不是 iptables 来加速他们的服务网格,而无需任何额外的操作或代码更改。目前,Merbridge 已经支持 Istio、Linkerd 和 Kuma。

功能:

  • 处理outbound流量
    • Merbridge使用eBPF的connect程序来修改user_ip和user_port,从而改变连接的目的地址,确保流量可以发送到新的接口。为了帮助Envoy识别原始目的地,应用程序(包括Envoy)在接收连接时将调用get_sockopt函数来获取ORIGINAL_DST。
  • 处理inbound 流量
    • Inbound流量的处理方式与 outbound流量的处理方式类似。eBPF 无法像 iptables 那样在指定的命名空间中生效,因此更改将是全局的。这意味着如果将 eBPF 应用于原本不是由 Istio 管理的 Pod,或者外部 IP,将会出现严重的问题,例如无法建立连接。为了解决这个问题,开发团队设计了一个小小的控制平面,作为DaemonSet部署。它可以帮助观察并获得节点上所有的Pod列表,类似于kubelet。然后,注入sidecar的Pod IP将被写入local_pod_ips地图中。对于目的地地址不在地图中的流量,Merbridge将不会拦截它。
  • 加速联网

    • 在Istio中,Envoy通过当前的podIP和端口号访问应用程序。因为podIP存在于local_pod_ips地图中,流量将被重定向到15006端口的podIP,产生一个无限循环。eBPF有什么方法可以获得当前命名空间的IP地址吗?开发团队已经设计了一个反馈机制。当Envoy试图建立一个连接时,会将其重定向到15006端口。当它转移到sockops时,将检查源IP和目标IP是否相同。如果是,这意味着发送了错误的请求,则将在sockops进程中丢弃它。同时,当前的ProcessID和IP将被写入process_ip map中,使eBPF支持进程和IP之间的对应关系。当下一个请求被发送时,将直接从process_ip map中检查目的地是否与当前IP相同。当请求失败时,Envoy将重试。这个重试过程只会发生一次,后续的连接会非常快。

 相关资料
  • eBPF(extended Berkeley Packet Filter)起源于BPF,它提供了内核的数据包过滤机制。 BPF的基本思想是对用户提供两种SOCKET选项:SO_ATTACH_FILTER和SO_ATTACH_BPF,允许用户在sokcet上添加自定义的filter,只有满足该filter指定条件的数据包才会上发到用户空间。SO_ATTACH_FILTER插入的是cBPF代码,SO_

  • 我是使用selenium进行网络抓取的新手,我正在抓取SeeTicket。我们的刮刀工作原理如下。 < li >登录 < li >搜索事件 < li >单击每个事件 < li >收集数据 回来吧 < li >单击下一个事件 < li >重复 现在的问题是,某些事件不包含某些元素,例如此事件:https://wl.seetickets.us/event/Beta-Hi-Fi/484490?afflk

  • 15.1 概述 假如你已在某台机器上运行了原始服务器,就必须将它移到不同的IP地址或TCP端口。例如,可以这样做:(1)在独立的主机上安装squid;(2)给原始服务器分配一个新的IP地址;(3)将旧的IP地址分配给squid。为了安全起见,在squid和后台服务器通信的链路上,可使用私网地址。见图15-1。 Figure 15-1. How to replace your origin serv

  • WebCL为计算而生,其可以使用在浏览器中,也可以使用与单独的JavaScript应用和服务中。Node.js是一款基于Chrome编译出的JavaScript运行时,其有运行速度快和网络应用可扩展能力强的特性。Node.js使用事件驱动,无阻塞输入/输出模型,让其集高性能和轻量化于一身。其实现的数据敏感、实时性的应用,在分布设备上的表现十分出色[1]。Node.js具有很好的模块化,其已经有超过

  • BPF Compiler Collection (BCC)是基于eBPF的Linux内核分析、跟踪、网络监控工具。其源码存放于https://github.com/iovisor/bcc。 BCC包括一些列的工具 安装BCC Ubuntu: echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main

  • Go eBPF 主要用于与 Linux 内核 4.15+ 中的 eBPF 和 XDP 进行交互。 支持的 eBPF 特性: eBPF programs SocketFilter XDP Kprobe / Kretprobe tc-cls / tc-act Perf Events 在她的 examples 目录中有上述特性的使用示例。