OVS与DPDK

做个学习笔记,也算一只脚进了云计算的大门了
OVS是什么就不在说明了(软交换机),我学习的思路还是从整体到细节,从大到小。

未使用DPDK

首先说下未使用DPDK时,OVS是怎样的一个东西吧。
大概画了下OVS在单台云主机上的模型,如下图:

在单台主机上的众多虚拟机中,起着软交换的作用(想想你买的VPS,就能明白为啥需要OVS了)

然后是关于OVS内部的模块关系,以及未使用DPDK时的走包流程

总的来说,组件还是很多的。刚接触,感觉有些组件的部分功能存在重叠。不过还没怎么玩过,所以不吐槽了,既然存在那一定有他的道理,只是“功力”不到,无法领会到罢了

下面还有一张主要模块,vswitchd和DataPath模块,未使用DPDK时的模块内部详细架构

使用DPDK

当使用DPDK时,单台云主机上的OVS模型则变成下图:

图中宿主机上的NIC网卡被DPDK托管,收到的包经过OVS,再被DPDK的vhost-user模块,发送至虚拟机上的DPDK的virtio-user模块。虚拟机上的回复包则相反
(其中虚拟机上的virtio-user模块,可以替换成虚拟机内核原本就支持的virtio-net模块,这样的话在虚拟机中,数据包依然可以走内核协议栈)
特别说明一点:在linux内核中已经实现了vhost-net和virtio-net,且DPDK的vhost-user可以和linux实现的virtio-net进行交互。相对于内核的vhost-net/virtio-net全面的功能,DPDK的vhost-user/virtio-user则更加注重性能