虚拟机网络模型简介: 在大多数的虚拟化解决方案,如xen,kvm,waware中使用的虚拟网络模型都包括了以下几种方式,下面我们来一一进行介绍。

桥接模型: 介绍:这种模式将物理网卡当做交换机使用,工作于混杂模式中。此时必须虚拟出一个设备,用作host的网卡。这个网卡通常称为网桥设备(一般称为br0)。在vmware中,这个网桥设备会自动创建,而在xen和kvm中,这个网桥需要手动进行创建。文章后半部分将介绍如何创建该网桥设备。其他虚拟机的虚拟网卡也接到由物理网卡虚拟成的交互机上。 工作过程: 如果网络报文的目标mac是br0的mac,则交给物理机进行网络报文处理;目标mac是虚拟网卡mac,则物理网卡接收数据后,转发数据给虚拟机。此时物理网卡相当于一台虚拟换机。

仅主机模型: 介绍: 在host上,使用软件的方式创建虚拟交换机。各虚拟机网卡连接到虚拟交换机上。而host使用软件模拟出一张网卡(一般称为vnet0),也连接到虚拟交换机上。因此各虚拟机实例能相互通信,虚拟机和物理机能通信。但是和外部网络隔离,因为物理网卡和虚拟机交换机不连接。 工作过程:各虚拟机的网络报文通过虚拟交换机进行通信,并且虚拟机和host之间也通过虚拟交换机通信。

路由模型: 介绍:在仅主机的模型下,如果虚拟交换机打开转发功能,让host的虚拟网卡将虚拟机的数据转发到外界。 工作过程:虚拟机(也称为guest)的网关指向host的虚拟网卡vnet0。Vnet0进行报文转发,到达外部网络。当外部设备将报文响应给内部的虚拟机时,外部设备需要将网关,或者使用静态路由的方式说明来自guest网段地址的数据必须通过vnet0作为网关。如此才能正常通信。因此这种模型很少使用。

Nat模型: 介绍:在host上,使用软件的方式创建虚拟交换机, 而host使用软件模拟出一张网卡(一般称为vnet8)。Host通过vnet8连接到虚拟交换机中,然后host中提供nat服务器功能。 工作过程:Vnet8将数据包发送给host的物理网卡(也称为pnet0),并且将数据包的源地址转换为pnet0,发往外部。外部将数据包回送给pnet0,pnet0再将数据包转换为vnet8. 因此guest的网关必须指向vnet8。

完全隔离模型: 介绍:在host上创建虚拟交换机,只有各guest将网卡连接到虚拟交换机上。 工作过程:类似仅主机工作模式,唯一的区别是host和各guest无法通信。仅在虚拟机内核做虚拟通道使用。

虚拟化场景中网卡的工作模式: 当启动一个虚拟机时,在host中会显示一张虚拟网卡。虚拟网卡和host网卡建立关联关系。实际上,虚拟网卡分成两部分,一部分在guest中,另一部分在host中。然后二者建立关联关系。如此guest和host就能互联起来,而Host中的两张虚拟网卡连接到虚拟交换机上,两个guest就能相互通信。 一般的,host中的虚拟网卡称为tap设备。

在linux上创建物理网桥: 将eth0作为虚拟交换机使用,而br0当做网桥设备,接收发往host的报文。 注:不支持NetworkManager管理,必须将其关闭。 步骤: 1、安装bridge-utils:

yum install bridge-utils

2、创建br0和eth0配置文件:

cp ifcfg-eth0 ifcfg-br0

vim ifcfg-et0

DEVICE="eth0" BOOTPROTO="static" MTU="1500" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" BRIDGE="br0"

vim ifcfg-br0

DEVICE="br0"
BOOTPROTO="static" DNS1="114.114.114.114" GATEWAY="192.168.89.254" IPADDR="192.168.89.5" MTU="1500" NETMASK="255.255.255.0" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Bridge"

3、重启网络服务:

service network restart

kvm windows网络性能 kvm的网络模型_关联关系

可知br0已经绑定在eth0接口上。

为了避免在物理网络中出现环路,启用对生成树协议的支持:

[root@API_Server ~]# brctl stp br0 on
[root@API_Server ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.22cd421d3c79 yes eth0
通过命令行方式临时配置:

brctl addbr br0

ifconfig eth0 0 up

brctl addif br0 eth0

ifconfig br0 192.168.89.5 up

提示:可通过脚本的方式,实现br0的快速创建和移除。

创建完毕后,使用xen或者kvm时各虚拟机就能通过br0来和外部网络通信了。