网络编程之XDP、TC和IO_URING以及DPDK

一、网络编程常见的技术

在前面已经分析过了XDP、TC和eBPF。也基本把三者间的关系理清了,但现在又有一个疑惑涌了上来。在前面提到过的IO_URING和DPDK与这些技术有什么关系呢?其实只要认真的看过分析文章可能大家心里都已经基本清楚了。
正如在前面不断提到的,网络编程不是简单的一个部分在努力,它是一个系统工程,从网卡到驱动,从驱动到内核的协议栈再到上层的应用。它是一整套完整的流程,在这个流程上,就如学计算机知识的都明白的木桶原理,只要有一个不够给力,那么其它人的努力可能就大为减弱甚至是失效。
明白了上述的说明,基本也就弄明白了几者之间的关系。

二、技术间的关系

仍然按照传统的用户层、内核和驱动(硬件NIC)三层来说明几者的关系:
1、IO_URING是一个异步编程框架,可以认为是提供给应用层使用的一个网络编程框架,一如开发经常使用epoll,select,poll等。它更多的是向上层提供一套更高效的网络通信接口。
2、DPDK:DPDK属于用户层程序可以直接处理网络数据的一种框架,它可以略过大多数的和内核交互的过程。DPDK的优秀之处已经在应用中体现出来,但是DPDK的不足也同样暴露了出来,
3、XDP、TC(eBPF)则可以认为是与DPDK不同的另外一种方案,DPDK是尽量减少和内核的交互,直接连接用户层和网络数据(驱动或网卡),而XDP等则在仍然与内核保持较强的联系
可以简单理解为,IO_URING是为应用层服务的。后两者是在内核层次上的一次优化。虽然DPDK也实现了用户层的网络数据处理,但从数据处理的方式来看,仍然可以将其划到内核逻辑中去。而XDP等则可以看作内核对DPDK一种快速的应变。
下面是三者的关系图:

在这里插入图片描述

三、应用分析

针对这三类技术,做一下整体的技术应用分析:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值