计算机系统应用教程网站

网站首页 > 技术文章 正文

DPDK 的虚拟交换机框架 OvS 的基础知识《学习路线图》

btikc 2024-11-17 07:17:56 技术文章 24 ℃ 0 评论

DPDK简介

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

DPDK是X86平台报文快速处理的库和驱动的集合,不是网络协议栈,不提供二层,三层转发功能,不具备防火墙ACL功能,但通过DPDK可以轻松的开发出上述功能。

DPDK的优势在于,可以将用户态的数据,不经过内核直接转发到网卡,实现加速目的。主要架构如图所示:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

传统的socket方式与DPDK对比:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

DPDK关键技术点:总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

使用大页缓存支持来提高内存访问效率。

利用UIO支持,提供应用空间下驱动程序的支持,也就是说网卡驱动是运行在用户空间 的,减小了报文在用户空间和应用空间的多次拷贝。

利用LINUX亲和性支持,把控制面线程及各个数据面线程绑定到不同的CPU核,节省了线程在各个CPU核来回调度。

LOCKLESS, 提供无锁环形缓存管理,加快内存访问效率。

收发包批处理 ,多个收发包集中到一个cache line,在内存池中实现,无需反复申请和释放。

PMD驱动,用户态轮询驱动,可以减小上下文切换开销,方便实现虚拟机和主机零拷贝。

OVS+DPDK

OpenvSwitch 以其丰富的功能,作为多层虚拟交换机,已经广泛应用于云环境中。Open vSwitch的主要功能是为物理机上的VM提供二层网络接入,和云环境中的其它物理交换机并行工作在Layer 2。

传统host ovs工作在内核态,与guest virtio的数据传输需要多次内核态和用户态的数据切换, 带来性能瓶颈.

Ovs+Dpdk和Ovs本身之间的区别可以由下图简单来表示:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

OVS的版本中,为缓解多级流表查表慢的问题,OVS在内核态采用Microflow Cache方法。Microflow Cache是基于Hash的精确匹配查表(O(1)),表项缓存了多级查表的结果,维护的是每条链接粒度的状态。Microflow Cache减少了报文进用户态查多级表的次数。一条流的首报文进入用户态查表后,后续的报文都会命中内核中的Microflow Cache,加快了查表速度。但是对于大量短流的网络环境来说,Microflow Cache命中率很低,导致大部分报文仍然需要到用户态进行多级流表查找,因此转发性能提升有限。

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

DPDK 高性能(user space) 网卡驱动、大页内存、无锁化结构设计,可以轻易实现万兆网卡线速的性能。ovs-dpdk使vm到vm和nic到vm的整个数据传输都工作在用户态,极大的提升了ovs的性能。

另外,ovs-dpdk 结合了DPDK和vhost-user技术的优势。vhost-user是一个用户态的vhost-backend程序,从虚拟机到host上实现了数据零拷贝(zero copy)。

原生ovs与ovs-dpdk比较

(1)原生ovs数据流处理过程如下:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)

数据包到达网卡后,上传给Datapath;

Datapath 会检查缓存中的精确流表是否可以直接转发这个包,如果在缓存中没有找到记录,内核通过netlink发送一个upcall给用户空间的vswitchd;

vswitchd检查数据库以查看数据包的目的端口在哪里。这里要操作openflow流表,需要和ovsdb以及ovs-ofctl交互;

刷新内核态流表内容;

Reinject给datapath,重发数据包;

再次查询流表,获取数据包精确转发规则后,按规则转发

(2)ovs-dpdk方式:

总结送免费学习资料(包含视频、技术学习路线图谱、文档等)


用户态进程直接接管网卡收发数据,采用“IO独占核”技术,即每个端口分配一个核专门用于数据收发,轮询式处理方式代替中断式处理,显著提高IO性能。

总结:

更多学习资料(包含视频、技术学习路线图谱、文档等)

技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等方面。

后台私信《资料》免费领取



使用ovs-dpdk


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表