标签:
一个使用java语言编写的基于Openflow协议的SDN控制器。
基本架构同webserver一样,有一个维护交换机连接信息的底层模块,当有交换机同控制器连接时,floodlight会将此连接保存到连接池中,并通过NIO的方式同交换机进行通信。
控制器还包含其他交换机数据包存储处理模块,比如网络拓扑模块(计算最短通信路径)、链路发现模块(使用LLDP协议发现网络的拓扑的变化)、设备管理模块(负责完成MAC地址同IP地址之间的映射)、存储模块(负载存储每台交换机的存储状态,比如保存的流表项等)、RESTAPI模块(负责通过RESTAPI的形式,完成流表项的管理)、webui模块(提供一个web界面,查询控制器状态)。
floodlight通过配置信息决定加载哪些模块,模块同时会注册其会理哪些消息。
Floodlight总体上有两个主要功能:
能够处理的事件消息,需要处理OpenFlow消息的模块实现IOFMessageListener接口。
事件中有交换机的连接信息,可通过对交换机进行操作,同时还可通过全局方法获取其他交换机的信息,并对其进行操作。
总体感觉,其与webserver的模式很像。
不足:目前控制器的自定义模块网络编程模式依然需要编写大量的代码,是一种面向计算机语言的程序便携模式,而不是面向网络的。导致实现自定义模块的编写工作量巨大,开发周期长,并且不易调试并发现流表项决策的错误。
标签:
原文地址:http://www.cnblogs.com/mahuan2/p/4703260.html