网络运营

虚拟化一之虚拟机网络模型简介

在大多数的虚拟化解决方案,如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管理,必须将其关闭。

步骤:

  • 安装bridge-utils:

# yum install bridge-utils

  • 创建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”

  • 重启网络服务:

# service network restart

可知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来和外部网络通信了。下篇文章将介绍xen的基本部署和使用,敬请期待~

Be the First to comment.

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注