一个使用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的模式很像。

  1. 有维护客户端连接的模块,java中的servlet管理所有的用户连接(控制器维护交换机的连接,netty)
  2. 有处理客户端请求的模块,客户端将request发送到服务端,服务端将response发送给客户端(控制器将交换机的变化、请求信息抽象成事件,发送给相应模块处理,模块处理时可以对交换机进行操作)

不足:目前控制器的自定义模块网络编程模式依然需要编写大量的代码,是一种面向计算机语言的程序编写模式,而不是面向网络的。导致实现自定义模块的编写工作量巨大,开发周期长,并且不易调试并发现流表项决策的错误。

FloodLight使用感受的更多相关文章

  1. 【初码干货】【Azure系列】1、再次感受Azure,体验Windows Server 2016并部署BlogEngine.NET

    上个月末,在某人的建议下,重新注册了一个1元试用账户(包含1个月期限的1500元订阅),并充值了1000元转为了正式账户,相当于1000元得到了2500的订阅,于是又一次开启了Azure之旅. 在这不 ...

  2. 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!

    写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...

  3. "传成老树白茶"献礼母亲节 邀市民品茗感受茶文化

    5月8日下午,传成老树白茶巡回中国公益品鉴会第七十站,走进福州马尾区东方名城传成老树白茶文化馆. 本次品鉴会活动以“感恩母亲节”为主题,以马尾船政文化为背景,邀福州市民一起品鉴白茶,感受中国茶文化. ...

  4. C# 项目提交过程中感受

    C# 项目提交过程中感受 新到一家互联网公司,昨天第一次提交代码,遇到了不少问题,而且大多数是代码格式问题,特此将范的错误记录下来,自我警示. 1. 代码对齐,这个虽然一直也都在注意,不过还是有一行代 ...

  5. Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释

    代码1如下: #深度学习入门课程之感受神经网络(上)代码解释: import numpy as np import matplotlib.pyplot as plt #matplotlib是一个库,p ...

  6. 微信小程序开发感受

    研究了大概有一个多星期的小程序了,说一下感受,之后会随时更新,一边学习,一边加上一部分学习代码和心得.我是一个前端厂里的新手,搬砖的时间不是很长,所以到一部分知识的理解浅之又浅,所以只能说自己的理解, ...

  7. 在GMIC听“移动互联网+医疗”的感受 2015-04-29

    “互联网+”这个词挺火的,基本格式是“互联网+传统行业”,比如医疗.教育.交通等等.就更别说电子商务.金融这些领域了,相比已经和互联网分不 开了.在我看来,互联网+的背后,是信息化.智能化.信息沟通的 ...

  8. windows 8.1 试用感受:蛋疼感大幅降低

    众所周知windows 8 的最大使用感受就是蛋疼. 无论是微软MVP,还是我这样的万年不悔微软小白鼠,普通用户,小白用户,或多或少的都对这款操作系统感到蛋疼. 槽点太多,以至于大家都懒得批判了.好在 ...

  9. HTML5 模拟现实物理效果,感受 Web 技术魅力

    Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...

随机推荐

  1. hdu 1012:u Calculate e(数学题,水题)

    u Calculate e Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. PHP定时执行任务的实现

    config.php<?php ; ?> cron.phpignore_user_abort(););*;// 每隔半小时运行 do{ $run = include 'config.php ...

  3. android 拨号

    public class CallActivity extends Activity { @Override public void onCreate(Bundle savedInstanceStat ...

  4. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性

    转自:http://blog.csdn.net/testcs_dn/article/details/27237509 本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链 ...

  5. Mosquitto关于Connection lost的问题。

    文章发自:http://www.cnblogs.com/hark0623/p/4175048.html  转发请注明 如果当你的客户端订阅(sub)mqtt时,发现出现Connection lost ...

  6. python 类的初始化

    虽然我们可以自由地给一个实例绑定各种属性,但是,现实世界中,一种类型的实例应该拥有相同名字的属性.例如,Person类应该在创建的时候就拥有 name.gender 和 birth 属性,怎么办? 在 ...

  7. 在Windows下利用Eclipse调试FFmpeg

    目录 [隐藏]  1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...

  8. BZOJ1103 [POI2007]大都市meg(DFS序)

    题目:一颗树,单边修改,链上查询..实际上链是根到结点的链.网上好像有其他做法,我的想法是这样的: 先不看修改,毫无疑问查询只是查询结点的深度:而修改一条边会有什么影响:影响是且只是以边上深度最深结点 ...

  9. 算法教程(3)zz

    First off, we can use our Line-Point Distance code to test for the "BOUNDARY" case. If the ...

  10. bzoj1019 [SHOI2008]汉诺塔

    1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1030  Solved: 638[Submit][Status] ...