virtio+ovs转发原理和性能分析

本文深入探讨virtio和ovs的转发原理,讲解了virtio作为半虚拟化I/O解决方案如何与ovs配合实现云计算环境中的网络通信。通过vhost-net、vhost-user和vdpa等技术,分析了它们的性能特点,并指出vdpa在性能上的优势,同时讨论了各方案在实际应用中的优缺点和适用场景。
摘要由CSDN通过智能技术生成

virtio是一种I/O半虚拟化解决方案,ovs是一个虚拟交换机,利用软件的方式实现交换功能。本文将对virtio+ovs的转发原理进行介绍和并对其性能展开分析。

1. virtio和ovs介绍

传统数据中心的硬件服务器上运行着linux,linux使用硬件网卡收发包,硬件网卡连接的硬件交换机进行包转发实现服务器之间的互通。硬件网卡有broadcom、mellanox和intel等各种品牌,硬件交换机有H3C、cisco等品牌。

在云计算环境下,对计算资源进行了切分,服务器上运行的是一个个虚拟机,虚拟机也要有网卡实现互连互通,但虚拟机的网卡不是物理的,它通过虚拟的网卡连接到虚拟的交换机上,虚拟的交换机对同一个服务器上的虚拟机之间流量进行转发,如果虚拟交换机再连接到服务器的硬件网卡,那么虚拟机就可以和服务器外面通信了。

硬件网卡收包时,CPU先分配内存,然后告诉硬件网卡内存的地址,报文从硬件交换机出来后进入硬件网卡的队列,硬件网卡通过DMA功能把包从物理网卡搬运到内存中。然后中断CPU说报文收上来了,CPU处理中断,软中断执行内核协议栈处理,最后通知应用程序收包。

虚拟网卡是CPU模拟出来的,它的队列也是模拟出来的,就是服务器上的一块内存。要模拟DMA功能就得进行一次特殊的内存拷贝,从服务器上拷贝到虚拟机里,虚拟机运行在服务器上,用的也是服务器上的物理内存,相当于服务器上物理内存之间的拷贝,只是地址转换比较复杂。

应用程序调用发包时,内核协议栈模块分配一块内存,把用户态要发的内容拷贝到内核。然后经过复杂的协议处理,最后地址告诉硬件网卡说我要发包,你发完了告诉我一声,硬件网卡的DMA就把要发的数据从内存中搬运到物理网卡的队列中,然后告诉CPU说发完了,你可以回收内存了。

虚拟网卡发包和物理网卡发包类似,包从虚拟机中搬运到物理服务器内存中,然后经过软件交换机,最后从物理网卡出去。虚拟网卡有e1000、virtio等,为什么云计算环境最终选择了virtio?首先virtio提供了一种虚拟机和物理服务器数据交换的通用机制,虚拟网卡、虚拟硬盘、虚拟显卡和虚拟串口等都可以用。其次virtio分frontend和backend,frontend运行在虚拟机中,backend运行在物理服务器上,frontend和backend配合实现具体的网络功能,frontend和backend之间用virtio通用机制交换数据,设计巧妙。因此virtio得到了大多数hypervisor的支持,成了虚拟化事实上的标准。

硬件交换机是通过学习MAC进行二层转发的,使用STP协议防止环路出现,为了减小arp这样的广播风暴又增加了vlan隔离。软件交换机有linux bridge、vpp和ovs等。为什么云计算环境中大多使用ovs?因为云计算是最自然的SDN应用场景,不再需要复杂的控制面协议,如STP。另外云计算要求灵活,vpp pipeline和linux bridge设计时考虑更多的是二三层转发原理和转发性能,要加入新功能异常艰难,而ovs采用了openflow pipeline,多table和多group灵活跳转。pipeline设计考虑更多的是功能实现,性能方面由datapath支撑,并且datapath upstream到kernel中顺手就可使用,所以选择ovs。

2、vhost-net

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值