Linux神器之eBPF/XDP技术(连载一)

2023-02-23新闻来源:云尖信息平台 点击数:229次

在早期,为了维护内核的稳定性,复杂的应用程序——例如网络流量分析软件都是通过Linux用户进程运行的。为了分析仅在内核空间运行的数据,它们必须将这些数据从内核空间复制到用户空间的内存中去,并进行上下文切换。

这样复杂的流程带来的是巨大的性能开销,同时大大降低网络处理效率。

随着各类高速率网卡的出现,传统Linux的这种性能消耗瓶颈日趋明显。

高速公路有了,跑车也有了,但发动机却跟不上,车速自然提升不上去。要想在网络这条高速公路上愉快的飙车,必须从根源出发,对症下药,解决发动机的“病因”。

“病因”分析:提升性能的关键在于释放内核

当服务器逐步进10Gbps/40Gbps/100Gbps网卡时代,大量数据被很快地收入,内核协议栈复杂、冗长的处理逻辑,效率捉襟见肘,把大量报文堵在了内核里。

由于内核协议栈背负了太多历史包袱,再怎么优化,也跟不上带宽的增加。只有将数据层面的工作从内核的任务清单中拿掉,交由专“人”处理,让内核专心回归“本职工作”,才能提升整体效率。

神器登场——eBPF/XDP技术提升效率

从以上分析来看,重构的思路很显然有两个:

01上移

别让应用程序等内核了,让应用程序自己去网卡直接拉数据。例如DPDK技术,让用户态程序直接处理网络流量,bypass掉内核,使用独立的CPU专门干这个事。

02下沉

别让内核处理网络逻辑了,让网卡驱动自己处理。这就是eBPF/XDP技术,让灌入网卡的eBPF程序直接处理网络流量,bypass掉内核,使用网卡NPU专门干这个事。

其中,下沉方案的效率会更高。这也就是 eBPF/ XDP 技术如今被广泛应用的原因。

 eBPF相当于在内核构建了一个通用虚拟机,在保证效率的同时,还能保证安全性,目前在流量工程、轻量隧道、内核调试、性能调优等领域应用广泛,特别是云原生kubernetes网络领域,更是不可或缺的利器。

想知道更多关于eBPF/XDP技术的秘密?下期为您揭晓!