最近由于毕业论文的事,开始了SDN之旅,SDN,软件定义网络。通过网络控制层与数据层的分离实现了对网络的集中控制。在SDN网络中存在两类对象,SDN控制器和交换机,控制器与交换机之间通过openflow进行通信。SDN网络中,交换机只负责根据控制器指令进行相应操作,所有的实现都在控制器上完成。目前主流的控制器有NOX,FLoodLight,opendaylight等。目前最火的,支持的厂商最多的要数opendaylight吧。
首先要理解opendaylight控制器结构,必须有OSGI的概念,其具体可以参考http://m.blog.csdn.net/blog/ICTCamera/18408457。其通过“容器”来管理各个功能模块,自己写的模块注册到容器中就能运行。
另外opendaylight还有一个重要机制,SAL(服务抽象层)我的理解是将底层接口提供的功能封装成项服务来供上层模块使用。其支持多种南向协议,屏蔽了协议间差异,为上层模块和应用提供一致性的服务。其提供的服务有数据包服务、拓扑服务、流编程服务、资源查询服务、连接服务、统计服务、清单服务等。其在代码中对应的是,其在南向接口openflow插件里面,用于对底层设备的一些操作。每项服务具体功能可以参考