AncerHaides
最近使用基于netfpga的openflow交换机做了一个实验,实验不大却也用了六台计算机,配置起来十分麻烦,做实验的时候实验室买了两台性能比较强悍的工作站,索性就把实验转移到虚拟环境中,一来可以减少给各个机器做配置的时间,把一个机器做好,其它的只需要clone即可,二来还可以学习一些虚拟化的东西,对自己也是一种提高,废话到此结束,下面进入正题。
下边所有步骤都假设你可以使用root权限执行命令,本文中的命令均使用root用户执行。
一、安装所需软件
①安装kvm
#apt-get install kvm virtinst libvirt-bin
②安装openvswitch
# apt-get install openvswitch-datapath-source openvswitch-controller openvswitch-brcompat openvswitch-switch
③安装其它相关软件
#apt-get install virt-top virt-manager python-libvirt
其中virt-manager是gui界面管理虚拟机的,建议安装,本文就是使用virt-manager操作的,当然也可是不安装使用命令行运行kvm,virt-top是查看虚拟机运行状态的,本文中没有用到,python-libvirt是是用python管理虚拟机的类库,安装它是因为我要使用程序获取虚拟机的一些运行信息,如果你习惯用java写程序,需要安装libjna-java,然后下载java版的libvirt,当然安装过程中也会遇到一些问题,这不属于本文的范畴,请自行百度。
二、配置openvswitch
①首先删除默认的网桥,名字是virtbr0,这个网桥是linux的birdge模块建立的,如果使用openvswitch就用不到,而且还可能引起一些不兼容的问题,命令如下:
#virsh net-destroy default
#virsh net-autostart --disable default
②删除bridge模块,因为我们使用了openvswitch的,所有用不到bridge,而且这个模块的存在会引起一些错误。命令:
#apt-purge ebtables
③启用brcompat模块
打开/etc/default/openvswitch-switch文件,把#BRCOMPAT=no改为BRCOMPAT=yes,保存退出
④编译openvswitch-datapath模块
#module-assistant auto-install openvswitch-datapath
这一步并非必须,如果在安装openvswitch前就把virbr0删除,可能就不需要这一步了,如果启动openvswitch-switch服务时出现错误,就需要运行此命令。
⑤添加网桥
使用openvswitch建立网桥,kvm使用,命令如下:
建立网桥br
#ovs-vsctl add-br br0
把eth0(物理机上网的网卡)添加到br0
#ovs-vsctl add-port br0 eth0
如果不出意外的话现在机器就不能上网了,可以按照以下方法解决
删除eth0的配置
#ifconfig eth0 0
为br0分配ip
#dhclient br0
因为我使用的是dhcp获取ip的,所以执行了此命令,如果你的ip是自己手动配置的,请把eth0的配置写到br0上。
⑥需要注意的一些问题
启动openvswitch-switch服务的时候看一下有没有出现bridge module is loaded not load brcompat,这一行提示,可以运行modprobe -r bridge命令,然后运行#apt-purge ebtables,之后再次启动该服务即可
启动openvswitch-switch服务前可以使用lsmod | grep brcompat命令看一下brcompat模块有没有加载,如果没有加载,请确认一下前四步是否都正确的执行了。
三、安装虚拟机
打开virt-manager,新建虚拟机,因为是图形界面操作,过程比较简单,不做过多的介绍,按照提示信息一步一步进行即可
①填写虚拟机名称
②选择安装光盘的镜像、选择操作系统类型
③填写cpu、内存信息
④创建新的磁盘
⑤配置网络
在Advanced options中默认的网络配置是NAT方式,点击下拉菜单,选择Specify shared deivce name将网络改为桥接方式,在下边的bridge 那么中填写br0(刚才用openvswitch建立的网桥),点击finish开始装系统即可。
注意:如果在配置openvswitch的时候有些地方没有做好,这里可能会出现错误,说是找不到br0。错误信息为:Unable to complete install:'Cannot get interface MUT on 'br;':No such device'。出现这个错误提示有两种可能,一种是系统中确实没有br0,也就是说你没用使用openvswitch建立br0,可是用ifconfig br0,或者ovs-vsctl show命令看一下,如果确实没有br0,回到配置openvswitch中的第五步;另一种是系统加载了bridge模块,而不是brcompat模块,你用openvswitch建立的网桥bridge是找不到的,此时可使用lsmod | grep brcompat看看,如果没有加载brcompat模块,回到配置openvswitch中,重新配置。
四、总结
使用openvswitch + kvm可以很快的建立一个虚拟环境,而且该环境支持openflow,这也是我使用这个方法的原因,毕竟我是做openflow的,当然你也可以使用mininet以更快的方式建立一个openflow环境,但是mininet还是太单薄了,只能用来测试网络的通与不同,其它许多东西都没法做。
使用openvswitch + kvm的时候主要问题在与openvswitch的配置,因为linux系统中已经有了一个bridge模块,该模块引起openvswitch出现一些问题,本文的主要内容也是来解决这些问题的。希望能够帮助有需要的人。