SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发

SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建、流表下发(流表下发成功但ovs看不到流表)@TOC

参考原文链接:

https://cyneliu.gitee.io/2019/05/16/%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84SDN%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83/

虚拟机1(mininet+ovs)

1.安装mininet:

  • 使用apt 安装 git时出现
    在这里插入图片描述

解决办法如下:
首先运行下面的命令来移除 /var/lib/dpkg/ 文件夹下的锁定文件:

sudo rm /var/lib/dpkg/lock

之后像下面这样强制重新配置软件包:

sudo dpkg --configure -a

最后sudo apt update

  • 从github上获取Mininet源码
    在这里插入图片描述
    git clone git://github.com/mininet/mininet

  • 选择版本、获取源码树并安装Mininet
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第1张图片SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第2张图片

git checkout -b 2.2.1 2.2.1
  • 安装Mininet、基于OpenFlow的交换机和Open vSwitch
    使用./util/install.sh –nfv 报错:
    在这里插入图片描述

解决方法如下:

 apt-get update
 apt-get upgrade
 apt-get install iproute
使用apt-get upgrade报错:
Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

解决办法:

sudo apt-get clean
sudo apt-get update
  • 安装结束
    在这里插入图片描述

  • 安装测试
    失败:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第3张图片

解决方法:
在这里插入图片描述

sudo apt-get install mininet

安装成功
SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第4张图片

2.安装ovs

  • 采用二进制安装的方法,用ubuntu安装OVS极其简单
    在这里插入图片描述
    在这里插入图片描述
sudo apt-get update
sudo apt-get install openvswitch-switch openvswitch-common
  • 安装成功
    在这里插入图片描述

ovs-vsctl --version

虚拟机2(opendaylight+连接+下发流表)

1.OpenDaylight基础工作

  • 安装基础包
sudo apt-get install unzip lrzsz
  • 安装jdk
sudo apt-get install openjdk-7-jdk

报错,解决方法:

sudo add-apt-repository ppa:openjdk-r/ppa
apt install software-properties-common
sudo apt-get update
sudo apt-get install openjdk-7-jdk

再次使用该命令:

在这里插入图片描述sudo apt-get install openjdk-7-jdk

解决办法,参照虚拟机1 ,仍然失败
转而安装openjdk-8-jdk

  • 配置Java环境变量
    在这里插入图片描述

  • 重启

reboot
  • 安装成功
    在这里插入图片描述

2.安装odl

  • 解压
    在这里插入图片描述代码如图所示

  • 启动控制器,并进入karaf控制台:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第5张图片

  • 安装组件:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第6张图片`> feature:install odl-restconf

feature:install odl-l2switch-switch
feature:install odl-openflowplugin-all
feature:install odl-dlux-all
feature:install odl-mdsal-all
feature:install odl-adsal-northbound
`

  • 安装成功
    输入网址:http://localhost:8181/index.html
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第7张图片

初始用户名、密码:admin登录
SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第8张图片

3.连接尝试

(此时虚拟机2 ip为192.168.160.156,后因虚拟机瘫痪重建虚拟机2)

  • 在虚拟机1上运行:
mn --controller=remote,ip=192.168.160.156,port=6633 –mac
  • 在虚拟机2上新开一个terminal:输入netstat -an|grep 6633
    已连接:
    在这里插入图片描述

4.创建拓扑结构

(此时用的新建的虚拟机2,IP为192.168.160.158)

  • 在虚拟机1中建立linear.py文件:
sudo vi linear.py
  • 编辑python文件:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第9张图片
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第10张图片

  • 保存退出:
    Exit —>:wq

  • 修改为可执行文件:
    在这里插入图片描述sudo chmod +x linear.py

  • 运行、连接:

sudo mn --controller=remote,ip=192.168.160.158,port=6633 --custom ./linear.py --topo mytopo --switch ovs,protocols=OpenFlow10 --mac

SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第11张图片

  • 查看连接情况:
    在虚拟机1 新开一个terminal:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第12张图片ovs-vsctl show

is_connected:true 已连接

  • 在虚拟机2上登录http://localhost:8181/index.html查看:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第13张图片

  • 在虚拟机1上pingall
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第14张图片

  • 在虚拟机2上查看拓扑结构:
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第15张图片

    成功!

5.流表下发

(mininet与odl已连接)

  • 打开虚拟机2 访问OpenDaylight Web页面

  • 查看节点信息,记录Node Id
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第16张图片

  • 查看具体节点
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第17张图片

  • 选择模块
    展开“opendaylight-inventory rev.2013-08-19”,选择“config ——> nodes ——> node{id} ——> table{id} ——> flow{id}”
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第18张图片

  • 补全id
    在这里插入图片描述
    在这里插入图片描述

  • 单击flow list后面的“+”,展开流表相关的参数。填写第一个框id,路径中的flow id也会随之同步
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第19张图片

  • 展开“match ——> ethernet-match ——> ethernet -type”,填写“type”为“0x0800”
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第20张图片

  • 填写匹配参数,在“layer-3-match”后面的下拉框中选择“ipv4-match”,使用IP匹配
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第21张图片

  • 展开“instructions”,并单击“instruction list”后面的“+”,在“instruction”后面下拉框中选择“apply-actions-case”
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第22张图片

  • 展开“apply-actions”,单击“action list”后面的“+”,在action后面的下拉框中选择“drop-action-case”,action order和instruction order都设置为0
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第23张图片

  • 设置“priority”为27,“idle-timeout”为0,“hard-timeout”为0,“cookie”为100000000,“table_id”为0
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第24张图片

  • 向右滚动Actions栏,在路径后面有动作类型GET、PUT、POST、DELETE,下发流表则选择PUT动作,然后单击“Send”
    在这里插入图片描述

  • 发送成功(后面发生了意外,在ovs上面并没有接收到流表)
    在这里插入图片描述

  • 在虚拟机1中执行如下命令查看流表
    SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第25张图片

在ovs上看不到流表,经百度后发现一个与我情况相同的例子:
SDN虚拟机安装mininet+ovs+opendaylight及拓扑图的创建和流表下发_第26张图片

给予的建议为:
在这里插入图片描述

可是查了opendaylight的log还是没有发现问题,下发流表失败,拓扑图建立成功。

你可能感兴趣的:(linux,虚拟机,ubuntu)