基于virtio的网卡使用.docx

上传人:b****6 文档编号:6969754 上传时间:2023-01-13 格式:DOCX 页数:8 大小:68.72KB
下载 相关 举报
基于virtio的网卡使用.docx_第1页
第1页 / 共8页
基于virtio的网卡使用.docx_第2页
第2页 / 共8页
基于virtio的网卡使用.docx_第3页
第3页 / 共8页
基于virtio的网卡使用.docx_第4页
第4页 / 共8页
基于virtio的网卡使用.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

基于virtio的网卡使用.docx

《基于virtio的网卡使用.docx》由会员分享,可在线阅读,更多相关《基于virtio的网卡使用.docx(8页珍藏版)》请在冰豆网上搜索。

基于virtio的网卡使用.docx

基于virtio的网卡使用

基于virtio的网卡使用

基于virtio的网卡使用

0.1版

 

Contents

 

1.概要

在QEMU中,默认使用的网卡配置为virtio网卡。

virtio本身是一个framework,使用QEMU加上KVM来进行虚拟I/O,概而言之,virtio是半虚拟化hypervisor中位于设备之上的抽象层。

而virtio网卡则是挂载在virtio模拟的pci总线上的一个虚拟网卡。

在虚拟机开发中一般推荐使用virtio网卡,因为virtio网卡是在虚拟化中速度最快、功能最全面的虚拟网卡。

2.使用virtio的前提

使用virtio需要Guest虚拟机的kernel和Host机的kernel包含相应的驱动,virtio驱动包含前段和后端,也就是说需要在Host的Kernel中添加Back-end的驱动,并在Guest的kernel中添加Front-end的驱动。

2.1前端驱动

Guest机使用的kernel在编译时(makemenuconfig)需要添加如下选项:

[*]Virtualization--->

<*>PCIdriverforvirtiodevices

DeviceDrivers--->

[*]Networkdevicesupport--->

<*>Virtionetworkdriver

DeviceDrivers--->

[*]Blockdevices--->

<*>Virtioblockdriver

第一个选项是在内核中添加virtioPCI驱动,第二个选项时再内核中添加virtio网卡驱动,第三个选项时为了支持virtio的块设备驱动,如virtio硬盘等。

上面是使用virtio所需要选择的最小选项集,另外还可以选择的有:

[*]Virtualization--->

<*>Virtioballoondriver(EXPERIMENTAL)

[*]KVMsupportforPowerPCE500processors

2.2后端驱动

由于Guest使用virtio网卡与外部通讯,所以通讯方式一般选用桥接方式,而为了支持桥接模式,Host机使用的kernel必须支持一下选项:

Networkingsupport--->

Networkingoptions--->

<*>802.1dEthernetBridging

DeviceDrivers--->

[*]Networkdevicesupport--->

<*>UniversalTUN/TAPdevicedriversupport

第一个选项是为了支持桥接模式,第二个选项时为了使用TUN和TAP的功能,其中TUN主要用于NAT穿越,TAP主要用于Host机与Guest虚拟机之间的网络。

2.3使用QEMU创建virtio网卡

qemu-system-ppc-netnic,model=virtio,macaddr=00:

0B:

5D:

99:

82:

2B

其中-netnic为QEMU中创建网卡的选项,model指定为使用virtio网卡,macaddr是指定网卡的MAC地址,以防止创建多个虚拟机时产生MAC地址冲突。

在成功使用virtio网卡之后,Guest虚拟机中会生成指定的网卡数量,使用ifconfig-a查看创建的网卡

3virtio网卡的使用场景

网卡的使用范围一般分为Host机与Guest虚拟机通讯、Guest虚拟机与Guest虚拟机通讯、Guest虚拟机通过Host与外部网络通讯。

目前QEMU支持三种方式的网络连接,分别是NAT、TAP、Bridge。

NAT方式是QEMU默认的网络连接方式,使用这种方式创建的Guest虚拟机只能与外部网络通讯,而无法与Host机以及Host机所在局域网中的其他机器通讯。

使用TAP方式连接相当于vmware中的Host-only,使用这种方法创建的Guest虚拟机只能与Host机通讯,处在一个封闭的环境中,多用于调试使用。

使用Bridge方式连接首先要通过TAP方式创建网卡,然后通过另一个桥接网卡使Guest虚拟机与外部通讯。

3.1Guest虚拟机与Host机通讯

主要使用TAP方式来使Guest虚拟机与Host机通讯,步骤如下:

1.创建两个用于TAP启动/关闭的脚本,用于在Host机上创建一个虚拟网卡,例如

qemu-ifup中使用ifconfig命令创建网卡,$1为传入的参数,默认为tap0,也可以在QEMU命令行-nettap,ifname=tap0指定。

#!

/bin/sh

/sbin/ifconfig$1192.168.1.1netmask255.255.255.0up

sleep2

qemu-ifdown中使用ifconfig命令来关闭虚拟网卡

#!

/bin/sh

/sbin/ifconfig$1down

sleep2

2.使用QEMU启动Guest虚拟机

由于ifconfig创建网卡需要管理员权限,所以用户在使用TAP方式启动网卡时需要使用sudo命令或者本身是管理员root。

sudo/home/shir/install/qemu/bin/qemu-system-ppc-Mmpc8544ds-nographic-kerneluImage-append"root=/dev/ramrwrdinit=/linuxrc"-initrdinitrd-small-netnic,model=virtio,macaddr=00:

0B:

5D:

99:

82:

2A-nettap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/qemu-ifdown-m512

这里主要关注两个选项

-netnic用于创建网卡,model指定为使用virtio网卡,macaddr是指定网卡的MAC地址,以防止创建多个虚拟机时产生MAC地址冲突。

-nettap指定使用TAP方式启动,script指向tap网卡的启动脚本,downscript指向tap网卡的关闭脚本,在运行时尽量指定downscript,否则在虚拟机关闭后任然有tap网卡存在。

Guest虚拟机启动后,使用ifconfig-a发现会有网卡eth0存在。

3.设置网卡IP地址

eth0的IP地址网段必须和tap网卡的IP处于同一网段,如启动时tap网卡IP为192.168.1.1,则可以配置eth0为192.168.1.10。

然后使用ping命令可以看到,Guest虚拟机已经可以和Host机通过网卡通讯了。

3.2Guest虚拟机通过Host与外部网络通讯

为了使Guest虚拟机能通过Host与外部网络通讯,需要使用Bridge模式,原理即是使用桥接网卡在虚拟机之间建立一个通道,步骤如下:

1.使用QEMU启动Guest虚拟机

sudoqemu-system-ppc-Mmpc8544ds-nographic-kerneluImage-initrdinitrd-small-netnic,model=virtio,macaddr=00:

0B:

5D:

99:

82:

2A-nettap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/qemu-ifdown-m512

和3.1Guest虚拟机与Host机通讯中描述的一样,使用TAP方式创建网卡。

2.配置文件方式创建桥接网卡

由于桥接网卡是一个虚拟网卡,所以可以使用配置,也可以使用命令行来配置。

如果使用配置文件,则首先编译Host机中真实网卡eth0的配置文件:

编译/etc/sysconfig/network-scripts/ifcfg-eth0,主要修改就是注释掉UUID,IPADDR,GATEWAY,修改BOOTPROTO为none(表示不使用网络服务,static为使用静态IP,dpch为使用dhcp分配的IP),添加BRIDGE(指定在eth0和桥接网卡br0之间建立一个桥接)。

DEVICE="eth0"

HWADDR="00:

21:

86:

13:

A6:

9A"

NM_CONTROLLED="no"

TYPE="Ethernet"

#UUID="00c3a007-4b84-4abe-8cdb-8142133a8c19"

BOOTPROTO=none

#IPADDR="10.167.141.218"

#GATEWAY="10.167.141.1"

BRIDGE=br0

添加一个新的桥接网卡的配置文件:

编辑/etc/sysconfig/network-scripts/ifcfg-br0,添加如下配置

DEVICE=br0

ONBOOT=yes

TYPE=Bridge

BOOTPROTO=static

IPADDR=10.167.141.218

GATEWAY=10.167.141.1

DEVICE为设备名字,ONBOOT指定是否在网络重启时自动启动该网卡,TYPE为网络类型,这里是桥接模式,BOOTPROTO表示IP的分配形式,这里为静态IP,IPADDR指定IP地址,GATEWAY指定网关。

一般配置桥接网卡br0的IP地址为原来网卡eth0的IP地址,这样可以保证外部任然可以使用原来的IP地址访问Host。

添加完配置文件之后需要重启网络服务

servicenetworkrestart

网络服务重启后会生成一个br0的桥接网卡,这样可以使用br0与外部通讯了。

3.手动创建桥接网卡

#先使原来的网卡失效;

sudoifdowneth0

#添加桥接网卡br0并使它生效;

sudobrctladdbrbr0

sudoifconfigbr0up

#配置桥接网卡的IP地址,使用桥来代替原来的网卡,这样xshell等telnet工具可以使用原来的IP地址登陆Host机

sudoifconfigbr010.168.141.218

使用手动创建的桥接网卡和用脚本创建的桥接网卡效果是一样的,不同的是使用手动创建的桥接网卡不需要重启网络服务就可以使用,但是在Host机器重启后配置的网卡会失效,所以需要保存到启动文件中,使Host机器在重启时能自动配置。

4.桥接网卡创建成功后需要配置桥接,才能使虚拟机与虚拟机之间进行通讯

使用桥来连接eth0和tap0,这样虚拟机就能通过tap0和外界通讯了,而且由于使用的是tap方式,虚拟机也还是可以和主机通讯

sudobrctladdifbr0eth0

5.配置Guest虚拟机

当桥接配置完后,需要设置Guest机器的网卡eth0的IP地址,eth0的IP地址网段必须和外部网络的IP处于同一网段,如测试Guest虚拟机与Host网络中的另外一台机器进行通讯,其中,Host的IP为10.167.141.218.Host网络中另外一台机器的IP为10.167.141.216,Guest虚拟机的IP设置为10.167.141.215,测试结果如下:

测试结果为:

Guest虚拟机可以与主机通讯;

Guest虚拟机可以与主机的网络通讯。

3.3Guest虚拟机与Guest虚拟机通讯

Guest虚拟机之间的通讯原理和Guest虚拟机与外部网络通讯的原理一样,也是使用一个桥接网卡搭建一个虚拟机与虚拟机之间的桥接。

1.使用TAP方式启动两个虚拟机

先启动虚拟机1,启动成功后,Host机上会创建一个tap0网卡

sudoqemu-system-ppc-Mmpc8544ds-nographic-kerneluImage-initrdinitrd-small-netnic,model=virtio,macaddr=00:

0B:

5D:

99:

82:

2A-nettap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/qemu-ifdown-m512

先启动虚拟机2,启动成功后,Host机上会创建一个tap1网卡

sudoqemu-system-ppc-Mmpc8544ds-nographic-kerneluImage-initrdinitrd-small-netnic,model=virtio,macaddr=00:

0B:

5D:

99:

82:

2B-nettap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/qemu-ifdown-m512

需要注意的是两个虚拟机所使用的网卡要配置不同的MAC地址,tap网卡的地址不能相同。

2.创建桥接网卡

创建桥接网卡的方式和4.2.9.3.2.2Guest虚拟机通过Host与外部网络通讯中方法相同。

3.添加桥接

桥接网卡中添加网桥网卡br0到tap0网卡的接口(这一步如果已经配置,则可以跳过)

sudobrctladdifbr0tap0

桥接网卡中添加网桥网卡br0到tap1网卡的接口

sudobrctladdifbr0tap1

4.配置Guest虚拟机

当桥接配置完后,需要设置每个Guest虚拟机的网卡eth0的IP地址,各个虚拟机中的网卡的IP地址网段必须处于同一网段,如测试Guest虚拟机与Guest虚拟机进行通讯,其中,Guest虚拟机1的IP为192.168.1.10,Guest虚拟机1的IP为192.168.1.11,测试结果如下:

测试结果为:

Guest虚拟机1可以和Guest虚拟机2通讯;

Guest虚拟机2可以和Guest虚拟机1通讯。

4使用virtio的效果分析

当Guest机只需要和外部通讯时,一般使用NAT方式,因为这是QEMU默认的联网方式,功能单一;

当Guest机只需要和Host机通讯时,一般使用TAP方式。

当Guest机同时需要和Guest机通讯、和Host通讯、和外部网络通讯方式中的两种或者两种以上的方式,则使用Bridge方式,这是目前QEMU支持的最强大的通讯方式,使用4.2.9.3.2.1Guest虚拟机与Host机通讯、4.2.9.3.2.2Guest虚拟机通过Host与外部网络通讯、4.2.9.3.2.3Guest虚拟机与Guest虚拟机通讯中说明的步骤,可以同时实现所有功能,且不会相互干扰。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1