环境说明:
笔记本A、B均运行Ubuntu 14.04,两台笔记本通过无线网卡上网,用一根网线连接两台笔记本的有线网卡。
网络拓扑:
其中,vm1 vm2 S1位于笔记本A,vm3 vm4 S2位于笔记本B。
所有VM均为virtualBox虚拟机(CorePlus.iso是一个很轻量的Linux版本)。
操作步骤:
(1)在两台笔记本上安装OVS
sudo apt-get install openvswitch-switch
(2)在两台笔记本上新建网桥,并将有线网卡eth0添加到网桥中
(注意以下s1、s2分别是两个笔记本上创建的网桥的名字)
笔记本A:
sudo ovs-vsctl add-br s1
sudo ovs-vsctl add-port s1 eth0
笔记本B:
sudo ovs-vsctl add-br s2
sudo ovs-vsctl add-port s2 eth0
(3)在两台笔记本上创建虚拟机,并且连接到ovs交换机上
笔记本A:
以下脚本首先创建了两个虚拟网卡,并将此网卡桥接到ovs交换机中
#!/bin/bash function add_port() { ovs=${1}; node=${2}; echo $ovs --tap port-- $node; port=vnet-${ovs}-${node}; sudo ip tuntap add mode tap $port; sudo ip link set $port up; sudo ovs-vsctl add-port $ovs $port; } add_port s1 h1; add_port s1 h2;
运行脚本之后,ifconfig能看到vnet-s1-h1 vnet-s1-h2两块网卡。
然后在VirtualBox创建虚拟机vm1和vm2,每个虚拟机的网络配置为:
vm1、vm2的第一块网卡均选择NAT,这是为了虚拟机能够访问外网,以便安装软件等。
vm1的第二块网卡设置为桥接,然后网卡选择vnet-s1-h1;
vm2的第二块网卡设置为桥接,然后网卡选择vnet-s1-h2;
笔记本A上的两个虚拟机便创建好了。为两个vm设置ip为10.0.0.1和10.0.0.2。
笔记本B同上,只需把s1改为s2即可。为两个vm设置ip为10.0.0.3和10.0.0.4。
(4)虚拟机开起来之后,分别在A、B上设置网桥s1、s2的控制器地址:
运行控制器的机器需要A、B均能访问,所以在A、B上运行都行。
假设在A上运行控制器:
java -jar target/floodlight.jar
(floodlight是一个SDN控制器)
然后为A、B上的网桥s1、s2设置控制器地址:
A:
sudo ovs-vsctl set-controller s1 tcp:<controller_ip>:6653
B:
sudo ovs-vsctl set-controller s2 tcp:<controller_ip>:6653
其中,controller_ip是运行控制器的机器的ip。(此处即为A的IP地址)
注意:6653是floodlight控制器监听的端口,在1.0版本以前,监听端口为6633。
(5)访问<controller_ip>:8080/ui/index.html,在floodlight的web界面查看拓扑。
如:http://155.98.39.126:8080/ui/index.html
完。