目录
- 模块
- 基于floodlight的入侵防御系统
- Floodlight源码解读含所有模块
- FloodLight使用感受
- Floodlight 启动及下发流表流程分析
- 解决Floodlight1.2+Mininet问题及使用安装
- ubuntu12.04环境下Floodlight+mininet搭建OpenFlow测试平台
- mininet+floodlight搭建sdn环境并创建简单topo
- floodlight添加模块实验
- SDN之QoS--3:网络基础信息的测量(Floodlight)
- SDN启蒙3:openVswitch(OVS)源代码分析之简介
- 基于SDN的网络状态测量
- 使用
- How To Connect Mininet Software OpenFlow Switches To Floodlight
注意:做完试验后,建议把floodlight和mininet关闭,别直接关机,否则后果自负。
模块
https://blog.csdn.net/zhangmeimei_pku/article/details/98207940
controller主要有这几个关键模块:模块管理;设备管理;拓扑管理和路由;链路发现
基于floodlight的入侵防御系统
https://www.sdnlab.com/20836.html
配置版本
操作系统
Ubuntu-16.04LTS(Java1.8)
控制器
Floodlight-1.2
交换机
Openvswitch-2.3.0(2.3.90)
模拟环境
Mininet-2.2.0(mn2.3.0)
snort
Snort-2.9.9.0
或者Floodlight0.91+Ubuntu14(Java1.7)
完整代码链接:
链接:https://github.com/ZhiYiFang/Intrusion-prevention-system-based-on-floodlight
Floodlight源码解读含所有模块
https://wenku.baidu.com/view/498c65bd7f1922791688e8fe.html
FloodLight使用感受
https://www.cnblogs.com/mahuan2/p/4703260.html
一个使用java语言编写的基于Openflow协议的SDN控制器。
基本架构同webserver一样,有一个维护交换机连接信息的底层模块,当有交换机同控制器连接时,floodlight会将此连接保存到连接池中,并通过NIO的方式同交换机进行通信。
控制器还包含其他交换机数据包存储处理模块,比如网络拓扑模块(计算最短通信路径)、链路发现模块(使用LLDP协议发现网络的拓扑的变化)、设备管理模块(负责完成MAC地址同IP地址之间的映射)、存储模块(负载存储每台交换机的存储状态,比如保存的流表项等)、RESTAPI模块(负责通过RESTAPI的形式,完成流表项的管理)、webui模块(提供一个web界面,查询控制器状态)。
floodlight通过配置信息决定加载哪些模块,模块同时会注册其会理哪些消息。
Floodlight总体上有两个主要功能:
1、处理交换机连接并将OpenFlow消息转换为事件(events)以使其他模块能够监听处理。比如发现交换机、链路失效、端口失效、接收到数据包等消息。
2、决策某些特定OpenFlow消息(例如,PacketIn, FlowRemoved, PortStatus等),并将其按顺序转发到配置的监听模块。然后每个模块决定是否处理此消息并传递到下一个监听者或者停止处理消息。
能够处理的事件消息,需要处理OpenFlow消息的模块实现IOFMessageListener接口。
事件中有交换机的连接信息,可通过对交换机进行操作,同时还可通过全局方法获取其他交换机的信息,并对其进行操作。
总体感觉,其与webserver的模式很像。
有维护客户端连接的模块,java中的servlet管理所有的用户连接(控制器维护交换机的连接,netty)
有处理客户端请求的模块,客户端将request发送到服务端,服务端将response发送给客户端(控制器将交换机的变化、请求信息抽象成事件,发送给相应模块处理,模块处理时可以对交换机进行操作)
不足:目前控制器的自定义模块网络编程模式依然需要编写大量的代码,是一种面向计算机语言的程序编写模式,而不是面向网络的。导致实现自定义模块的编写工作量巨大,开发周期长,并且不易调试并发现流表项决策的错误。
Floodlight 启动及下发流表流程分析
https://www.kancloud.cn/zhaoshuo2016/ovs/248213
解决Floodlight1.2+Mininet问题及使用安装
https://www.sdnlab.com/19189.html
ubuntu12.04环境下Floodlight+mininet搭建OpenFlow测试平台
https://blog.csdn.net/sherkyoung/article/details/23540017
mininet+floodlight搭建sdn环境并创建简单topo
https://www.cnblogs.com/cing/p/7443076.html
floodlight添加模块实验
https://blog.csdn.net/sherkyoung/article/details/43054375
如果module not found 可以试试执行 sudo ant clean ,然后再执行 sudo ant
http://www.jackielee.cn/posts/2335eb7f.html
1、在floodlight项目的src/main/java包上右键新建Java类,填上包路径和Java类名以及继承的类(继承的类一般都包括”IOFMessageListener” 和 “IFloodlightModule”),然后就会自动生成一些需要重写的函数。
2、为了使我们新建的这个类监听到OpenFlow消息,需要在FloodlightProvider (一个IFloodlightProviderService类)注册我们的类。
3、我们需要修改getModuleDependencies()函数,用来告诉模块装载器我们依赖它。getModuleDependencies()函数是第一步添加父类后自动生成的函数。
4、接着编写init方法,init方法在控制器启动的时候就会调用,用来加载依赖模块和初始化数据结构。
5、然后实现基本的监听器,在startUP方法中注册PACKET_IN消息
6、为OFMessage监听器加上一个ID,这步在getName()中实现
7、关键的一步,定义接收到PACKET_IN消息后的行为,在receive()中实现,返回Command.CONTINUE以允许这个消息继续被其他的消息处理模块接收到。
8、我们还需要为之前我们创建的模块注册,这样floodlight启动的时候就可以加载我们的模块,在这一步,首先我们得告诉加载器我们的模块的存在,这可以在src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule文件里添加我们的模块的类
9、最后,我们还必须在floodlight模块配置文件中添加我们创建的模块,这个是在src/main/resources/floodlightdefault.properties文件里的floodlight.modules里添加我们的包和类的全路径。
SDN之QoS–3:网络基础信息的测量(Floodlight)
https://blog.csdn.net/xjtuse2014/article/details/53784362
https://blog.csdn.net/xjtuse2014/article/details/53913224
https://blog.csdn.net/xjtuse2014/article/details/53968726
https://blog.csdn.net/xjtuse2014/article/details/100696366
SDN启蒙3:openVswitch(OVS)源代码分析之简介
https://blog.csdn.net/