FloodLight使用感受
一个使用java语言编写的基于Openflow协议的SDN控制器。
基本架构同webserver一样,有一个维护交换机连接信息的底层模块,当有交换机同控制器连接时,floodlight会将此连接保存到连接池中,并通过NIO的方式同交换机进行通信。
控制器还包含其他交换机数据包存储处理模块,比如网络拓扑模块(计算最短通信路径)、链路发现模块(使用LLDP协议发现网络的拓扑的变化)、设备管理模块(负责完成MAC地址同IP地址之间的映射)、存储模块(负载存储每台交换机的存储状态,比如保存的流表项等)、RESTAPI模块(负责通过RESTAPI的形式,完成流表项的管理)、webui模块(提供一个web界面,查询控制器状态)。
floodlight通过配置信息决定加载哪些模块,模块同时会注册其会理哪些消息。
Floodlight总体上有两个主要功能:
- 处理交换机连接并将OpenFlow消息转换为事件(events)以使其他模块能够监听处理。比如发现交换机、链路失效、端口失效、接收到数据包等消息。
- 决策某些特定OpenFlow消息(例如,PacketIn, FlowRemoved, PortStatus等),并将其按顺序转发到配置的监听模块。然后每个模块决定是否处理此消息并传递到下一个监听者或者停止处理消息。
能够处理的事件消息,需要处理OpenFlow消息的模块实现IOFMessageListener接口。
事件中有交换机的连接信息,可通过对交换机进行操作,同时还可通过全局方法获取其他交换机的信息,并对其进行操作。
总体感觉,其与webserver的模式很像。
- 有维护客户端连接的模块,java中的servlet管理所有的用户连接(控制器维护交换机的连接,netty)
- 有处理客户端请求的模块,客户端将request发送到服务端,服务端将response发送给客户端(控制器将交换机的变化、请求信息抽象成事件,发送给相应模块处理,模块处理时可以对交换机进行操作)
不足:目前控制器的自定义模块网络编程模式依然需要编写大量的代码,是一种面向计算机语言的程序编写模式,而不是面向网络的。导致实现自定义模块的编写工作量巨大,开发周期长,并且不易调试并发现流表项决策的错误。
FloodLight使用感受的更多相关文章
- 【初码干货】【Azure系列】1、再次感受Azure,体验Windows Server 2016并部署BlogEngine.NET
上个月末,在某人的建议下,重新注册了一个1元试用账户(包含1个月期限的1500元订阅),并充值了1000元转为了正式账户,相当于1000元得到了2500的订阅,于是又一次开启了Azure之旅. 在这不 ...
- 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!
写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...
- "传成老树白茶"献礼母亲节 邀市民品茗感受茶文化
5月8日下午,传成老树白茶巡回中国公益品鉴会第七十站,走进福州马尾区东方名城传成老树白茶文化馆. 本次品鉴会活动以“感恩母亲节”为主题,以马尾船政文化为背景,邀福州市民一起品鉴白茶,感受中国茶文化. ...
- C# 项目提交过程中感受
C# 项目提交过程中感受 新到一家互联网公司,昨天第一次提交代码,遇到了不少问题,而且大多数是代码格式问题,特此将范的错误记录下来,自我警示. 1. 代码对齐,这个虽然一直也都在注意,不过还是有一行代 ...
- Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
代码1如下: #深度学习入门课程之感受神经网络(上)代码解释: import numpy as np import matplotlib.pyplot as plt #matplotlib是一个库,p ...
- 微信小程序开发感受
研究了大概有一个多星期的小程序了,说一下感受,之后会随时更新,一边学习,一边加上一部分学习代码和心得.我是一个前端厂里的新手,搬砖的时间不是很长,所以到一部分知识的理解浅之又浅,所以只能说自己的理解, ...
- 在GMIC听“移动互联网+医疗”的感受 2015-04-29
“互联网+”这个词挺火的,基本格式是“互联网+传统行业”,比如医疗.教育.交通等等.就更别说电子商务.金融这些领域了,相比已经和互联网分不 开了.在我看来,互联网+的背后,是信息化.智能化.信息沟通的 ...
- windows 8.1 试用感受:蛋疼感大幅降低
众所周知windows 8 的最大使用感受就是蛋疼. 无论是微软MVP,还是我这样的万年不悔微软小白鼠,普通用户,小白用户,或多或少的都对这款操作系统感到蛋疼. 槽点太多,以至于大家都懒得批判了.好在 ...
- HTML5 模拟现实物理效果,感受 Web 技术魅力
Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...
随机推荐
- 创建一个ASP.NET MVC OutputCache ActionFilterAttribute
在每一个web应用程序中, 有的情况下,你想在一段时间内缓存一个具体的页面HTML输出,因为相关的数据和处理并不是总是变化.这种缓存的响应是储存在服务器的内存中.因为没有必要的额外处理,它提供了非常快 ...
- Java Hour 50 日期类型
Plan List: 1 Java 中的日期类型 2 mysql 相关 3 java code style 鉴于本问题太过普通,所以参考文章满大街都是,因此本文内容基本为转载和验证. java.sql ...
- js 完全分离 window.onload=
js 完全分离 window.onload= <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ...
- 随机sample文件Python程序
经常遇到由于样本巨大,需要sample一部分文件进行案例分析的情况,下面的程序主要为了随机抽取一个大文件中的N行. #!/usr/bin/python # -*- coding: <encodi ...
- poj 1459 多源多汇点最大流
Sample Input 2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20 7 2 3 13 (0,0)1 (0,1)2 (0,2)5 (1,0)1 (1,2)8 (2,3)1 ...
- c++ queue 顺序队列的实现
#include<iostream> #include<cstdlib> #include<cstdio> using namespace std; const i ...
- 利用SQL语句查询一个数据库中的所有表
SQL : select * from information_schema.tables ORACLE: select table_name from user_tables ACCESS: s ...
- ntpd时间同步 安装与配置
1,安装 yum -y install ntp vim /etc/ntp.conf 默认配置: driftfile /var/lib/ntp/drift restrict default kod no ...
- c#日记
//返回一个指定类型的对象,该对象的值等于指定对象的值 object obj1 = Convert.ChangeType(dw[findRowIndex][cna ...
- 关于遍历javascript 中的json串浏览器输出的结果不统一的情况
我们在做项目的时候经常会用到javascript的json. 首先说一下javascript的json串是什么,json串属于javascript的一个对象,有键和值对应的对象. 一般的格式是: a ...