我在上一篇文章也提到过,对于全虚拟化和半虚拟化,需要分配给虚拟机一个虚拟网络接口,这些就需要一个虚拟交换机vswitch(可以和hypervisor一同使用),从而将虚拟网络接口的数据包从物理接口转发出去。但是在复杂的系统中,这个虚拟交换机的性能往往并不好。开源项目netmap[1]做了一个高性能网络框架,并且同样使用这个原理完成了高性能虚拟网络交换机vale的设计[2],在多种场景下Vale测量的性能[3]也非常好。
note:由于项目需要,我常常思考一个高性能的虚拟交换机应该怎么做。从netmap和Vale这些设计和论述中我受益匪浅,我把我浅薄的理解记录并分享,希望也能给大家帮助。