zoukankan      html  css  js  c++  java
  • Floodlight+Mininet的SDN实验平台搭建初探

    平台环境说明:

    CpuIntel Core 2 Duo T6570

    Mem4.00GB

    Os Ubuntu 14.04

     

    1.Floodlight

    Floodlight是一个比较成熟的sdn控制器实现,其中opendaylight项目中也采用了它的很多实现方法,官方网站:http://www.projectfloodlight.org/floodlight/本文采用它作为控制器,采用包含mininet的虚拟机作网络拓扑,两者结合模拟显示网络。

    Floodlight安装:

    A. $ sudo apt-get install build-essential default-jdk ant python-dev //由于控制器由java实现,故需要一些java环境需要先安装上;

    B. $ git clone git://github.com/floodlight/floodlight.git //然后git下载源码,如果没有git,需要安装:sudo apt-get install git ;

    C. $ cd floodlight

    D. $ ant

    E. $ java -jar target/floodlight.jar //然后依次完成命令,就会将控制器打开,这时输入网址:http://localhost:8080/ui/index.html即可看到控制器的ui界面,此时控制器未检测到网络拓扑(switchs hosts个数都是0)

     

     

    2.Mininet

           Mininet为研究人员提供轻量级的网络拓扑实现,其支持包扩openflow协议的switch,支持可打开终端界面的host等等。官方主页:http://mininet.org/,其中Mininet集成于一个虚拟机中(其中还集成了wireshark),官方提供了几个可下载版本:https://github.com/mininet/mininet/wiki/Mininet-VM-Images本文采用的是Ubuntu14.04版本。本文采用的是Ubuntu14.04版本。

    本文采用的是Ubuntu14.04版本,解压缩取得其中.ovf文件。

     

    Mininet安装

    A. $ sudo apt-get install virtualbox //如果未安装虚拟机软件,先按上。

    B. $ su - root

    C. # virtualbox //以root身份打开,这是参考网上的,普通用户貌似有bug

    D. 在virtualbox图形界面:file ->import virtual appliance

       导入mininet的.ovf文件,直接就算装好了。。。。。。

    初始用户名密码均为mininet(此时可以激活一下root权限),关于mininet软件的操作相见官方主页:http://mininet.org/walkthrough/

     

    3.平台整合

    floodlightvirtualbox等软件启动完毕后,可在实体机上ssh登录至虚拟机实现各种操作:

    A.$ ifconfig //可于实体机虚拟机分别执行取得pc-ip,vm-ip

    B.$ ssh -X root@vm-ip //-X表示X11转发,这样可以出现wireshark图形界面

    C.$ wireshark & //在实体机调出了vm中带有的支持openflow的wireshark,可开始对eth0口抓包ofp协议

    D.$ sudo mn --controller=remote,ip=pc-ip,port=6633 //将mininet连接上远程controller(floodlight,此时默认监听于实体机的6633端口),此时mininet将默认创建一个switch,两个hosts。

    I.此时可见wireshark中出现ofp数据,说明floodlightmininet正用openflow协议通信。

    II.此时打开http://localhost:8080/ui/index.html可见控制器已发现下层网络结构中的switchhost

    III.此时在mininetpingall,发现全通,floodlight控制器默认使交换机全通。

     

    4.下发流表

    Floodlight将自己的API通过Rest Api的形式向外暴露,关于Rest Api,简单来讲,就是讲程序的API封装成为通用的http GET/PUT的形式,这样的话无需关注程序实现细节,通过发送http请求即可完成API操作。

    所以,我们可以通过FloodlightRestful api来向Floodlight请求各种信息,包括交换机状态,能力,拓扑等等,而static flow pusher这套机制则是通过Restful api来进行流表的操作,包括添加,删除流表等等。

    A.生成流表

    $ sudo curl -d {“switch”: “00:00:00:00:00:00:00:01″, “name”:”flow-mod-1″, “cookie”:”0″, “priority”:”32768″, “ingress-port”:”1″,”active”:”true”, “actions”:”output=1″}’ http://<pc_ip>:8080/wm/staticflowentrypusher/json //这里将入口为1的数据包都发回1,即将连在1口的host隔绝。此时在mn中pingall发现不通了。

     

    B.查看流表

    $ sudo curl http://<pc_ip>:8080/wm/staticflowentrypusher/list/all/json

     

    C.删除流表

    $ sudo curl -X DELETE -d ‘{“name”:”flow-mod-1″}’ http://<pc_ip>:8080/wm/staticflowentrypusher/json //此时发现又能都ping通,这些过程中wireshark中都可见openflow协议交互流程,提供了很好的研究环境。

     

  • 相关阅读:
    进程总结
    三大流程
    canvas简介
    时钟
    vim
    马拉车
    模拟退火
    洛谷P2055假期的宿舍
    洛谷P2320鬼谷子的钱袋.
    洛谷P2278操作系统
  • 原文地址:https://www.cnblogs.com/renzherushe/p/4069909.html
Copyright © 2011-2022 走看看