网络虚拟化技术与应用场景

在kvm中,默认情况下网络设备是由QEMU在Linux的用户空间模拟出来并提供给虚拟机的。这样做的好处是通过模拟可以提供给虚拟机多种类型的网卡。在实际应用中全虚拟化效率低下;半虚拟化通过对客户机操作系统的修改,使其意识到自己允许在虚拟机中。半虚拟化通过驱动对操作系统做了改造。在实际应用中,使用较多的是半虚拟化网卡技术,即Virtio技术。大概流程如下图:


如果要使用半虚拟化,需要修改配置文件。加入virt-io的说明。

macvtap技术与应用:传统的linux网络虚拟化技术采用的是tap-Linux方式,将虚拟机连接到虚拟的tap网卡,然后将tap网卡加入到bridge。bridge相当于用软件实现的交换机。这种解决方案实际上就是使用cpu通过软件模拟网络。

传统的tap+bridge虚拟好网络技术,有3个缺点:
1.每台宿主机内都存在bridge,会使网络拓扑变复杂,相当于增加了交换机的级联层数;
2. 同一宿主机上的虚拟机之间的流量直接在bridge间完成交换,使流量监控/监管困难;
3.bridge是软件实现的二层交换技术,会加大服务器的负担。

macvtap 方案:
802.1Qbg的一个核心概念是vepa,简单来说它通过汇聚和数据分类转发,把宿主机上原来由cpu和软件来做的网络处理工作转移到接入层交换机上,减少宿主级cpu负载,同时使得在一级的交换机上做虚拟机网络流量监控成为可能,从而更清晰地切割服务器与网络设备的工作范围,方便系统的管理。为支持新的虚拟化网络技术,Linux引入了新的网络设备模型:macvtap;macvtap的实现基于传统的mac vlan; 和tap设备一样,每一台macvtap设备拥有一台对应的linux字符设备,并且拥有和tap设备一样的ioctl接口,因此能直接被kvm/qemu 使用,方便地完成网络数据交换工作。引入macvtap.

macvtap设备有三种不同的工作模式:vepa(virtual Ethernet Port Aggregator),Bridge,Private.

1. vepa:在这种模式下,同一物理网卡下的MacVtap设备之间的流量也要发送到外部交换机,再有外部交换机转发回服务器;前提是交换机必须支持hairpin;
2.bridge:这种模式类似于传统的Linux bridge,同一物理网卡下的macvtap设备可以直接进行以太网帧的交换,不需要外部交换机的介入;
3.private:在private模式下,同一物理网卡下的macvtap设备互联无法连通,无论外部交换机支不支持hairpin模式。

以下是创建一个macvtap端口的过程。
#ip  link  add link eth1 name MacVTap0 type MacvTap
#ip link  set  MacVTap0  address 1a:46:0b:ca:bc:7b
#ip  link  show MacVTap0

vhost_net技术:
1.什么是vhost_net:
运行一台虚拟机是由用户空间的qemu和内核的kvm共同完成的,qemu负责模拟各种设备提供给虚拟机,kvm负责完成cpu和内存的虚拟化。virtio的后端处理程序一般是由用户空间的qemu提供的。为了进一步减少延迟/提高性能,比较新的内核中增加了一个vhost_net的驱动模块,在内核中实现了virtio的后端处理程序。






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30129545/viewspace-1808235/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30129545/viewspace-1808235/

你可能感兴趣的:(网络虚拟化技术与应用场景)