第15期-直播回顾丨通过FD.io VSAP构建用户态协议栈
FD.io项目诞生于2016年2月,该项目提供了一个IO服务框架,迎接下一个网络和存储软件的浪潮。经过多年的发展,FD.io凭借高性能的代名词迅速成长为网络数据平面炙手可热的开源项目,FD.io内的开源生态也在逐渐丰富,用户态协议栈一直是大家很关心的话题,把协议栈构建在用户空间是协议栈实现的另一种思路,可以很大程度上减少操作系统的额外开销和内存拷贝开销,且定制灵活。
本周,在SDNLAB直播活动【 一期一会】中,英特尔资深软件工程师——虞平与大家进行了在线交流,分享有关通过FD.io VSAP构建用户态协议栈的主题,介绍FD.io社区中VSAP的架构,应用模型和性能数据,并提出用户态协议栈加速的总体解决方案。
(文末有PPT下载方式)
视频回顾和PPT分享
直播问题总结
Q:
build_in app是不是app逻辑和协议栈逻辑在一个进程内?build-in app是不是可以直接用rte_mbuf?
A:
是的,build_in app是和协议栈逻辑完全融合在一起构建的app。app的主要处理逻辑是接受协议栈的callback,可以参考echo server, 和echo client 进行编程。external app,也即VSAP项目的主要领域,是通过VPP协议栈去enable一个已有的app,如app,这类app因为本身有很大的关注度,不太可能通过build-in的办法来实现。
build-in app因为处理的是L4的协议,这种情况下不需要和底层的报文打交道,另外一方面,rte_mbuf是提供给DPDK处理的报文的数据结构,而VPP则使用了自己的vlib_buf来出来网络metadata,所以不能直接使用。
Q:
支持SCTP吗?
A:
支持的,VPP host stack提供了L4的多种协议,如TCP,UDP,SCTP,QUIC,甚至把TLS也作为一个session底层的transport 协议。
Q:
TCP的拥塞控制算法有哪些?可以做哪些优化?
A:
目前支持了Cubic,社区同时在加入BBR。目前VSAP的小包性能相对于内核有非常明显的提升,对于大报文,我们发现copy占比比较高,所以我们采用了CBDMA做了硬件级别的加速。
Q:
使用cut-through进行容器间通信,需要app改造吗?看到有ebpf上提速容器网络。ebpf和DPDK会不会竞争?
A:
如果采用LD_PRELOAD方式,对app不需要进行改造,但对app底层的链接库需要更改为vpp的库。用户态的cut-through是一个更高效的方式,和ebpf相比,不需要进行kernel,在用户层直接进行通信。
Q:
FD.io对开发者要求高吗?怎么参加这个开源项目?
A:
需要了解网络的基本概念、进程间通信,套接字编程等,参与这个项目的方式在第一页胶片中已经提及,具体的参与方式如下:
Wiki:
https://wiki.fd.io/view/VSAP
mailing list:
https://lists.fd.io/g/vsap-dev
若视频无法播放可扫描下方二维码,从B站观看
扫码关注【SDNLAB】公众号????,在后台回复“第15期直播”即可获取课件。
——————————————————————