利用物理机+ovs+floodlight搭建简单的SDN网络

由于项目需要,最近在着手的搭建物理机SDN网络。在网上找了很多资料,基本都是互相抄的或者翻译官网的,实际上手遇到了很多问题,以下对整个搭建过程进行详细描述,并提供解决其中遇到的某些问题的方式。

一、实验设备

四台电脑:

       A: win10系统 作为controller,安装floodlight运行

      B:win7系统 作为HOST0,连接到交换机D

      C:win10系统 作为HOST1,连接到交换机D

      D:ubuntu16 ,安装ovs2.10 ,作为交换机

 两张usb网卡,三个网线:为了让计算机充当交换机,D需要连接其他三台计算机,需要多加两张网卡

二、网络结构图

利用物理机+ovs+floodlight搭建简单的SDN网络_第1张图片

三、配置

配置主要在D主机上,建议在充当交换机的计算机上安装linux系统,方便ovs安装,还有后续的各种脚本操作。首先看上图,D的三张网卡eth0-2,其中只有eth2配置了ip:192.168.1.7,而其他两张网卡没有配置ip,这是由于eth0,eth1都被绑定到网桥br0上,充当交换机的port,工作在混杂模式,这时候并不需要ip,因为只工作在二层。下面是详细的配置命令(默认在root权限下)

首先是eth2的配置:

ifconfig eth2 192.168.1.7 netmask 255.255.255.0

然后是eth0 和eth1的配置

ifconfig eth0 0              #重置eth0的配置

ifconfig eth0 promisc  #开启混杂模式

eth1的配置同eth0;

A的配置为

ip:192.168.1.19

掩码:255.255.255.0

网关:192.168.1.1

B的配置为

ip:192.168.0.11

掩码:255.255.255.0

网关:192.168.0.1

C的配置为

ip:192.168.0.17

掩码:255.255.255.0

网关:192.168.0.1

以上就配置完所有的网卡了,这时候利用ping验证连通性,发现

A<--->D 通

B<--->D 不通

C<--->D 不通

B<--->C 不通

这时候因为eth1和eth0已经没有ip所有BC都无法ping通D,自然B<--->C也无法ping通。

接下来利用ovs的指令创建网桥br0,并把eth0,eth1设为其端口

ovs-vsctl add-br br0                  #创建网桥

ovs-vsctl add-port br0 eth0       #添加端口eth0

ovs-vsctl add-port br0 eth1       #添加端口eth1

ifconfig br0 192.168.0.1 netmask 255.255.255.0     #配置br0的ip

这时候br0已经创建且地址为192.168.0.1,这里br0的地址为BC的网关地址,从而保证包能到达D。按道理来说这时候BC之间应该就能ping通了,然而测试后发现

B<---> D 通

C<---> D 通

B<---> C 不通

后来发现原因是没有打开linux的转发功能,利用下面命令开启转发:

方法1:

echo  1 > /proc/sys/net/ipv4/ip_forward  ##开启端口转发功能,临时生效。    

方法2:

永久生效: vim /etc/sysctl.conf   ##修改net.ipv4.ip_forward = 1 

                                sysctl  -p   ##生效配置文件。

这时候,BC之间也能ping通,网络已经联通

在A上运行floodlight,D上使用命令连接:

ovs-vsctl set-controller br0 tcp:192.168.1.19:6653

这时候,BC互相ping通,且在A的floodlight前端页面能够看到网络拓扑,已经流表。网络搭建完成。

四、遇到的主要问题

1.没有搞清eth0,eth1应该工作在混杂模式下

2.没有开启转发功能

注:以上实验结果均没有截图,因为太麻烦了

你可能感兴趣的:(利用物理机+ovs+floodlight搭建简单的SDN网络)