借助SDN开放的北向接口,用户可以按需定制北向应用,通过应用快速有效地将带宽策略下发到SDN交换机设备,实现带宽策略的快速自动化部署。其架构如下图所示:
OpenDaylight中的OpenFlow实现分为OpenFlowJava和OpenFlowPlugin两部分,其中OpenFlowJava负责面向南向设备完成OpenFlow协议的序列化、反序列化、端口监听以及消息分发,而OpenFlowPlugin负责完成OpenFlow协议的状态管理、会话管理、事务处理等,向SAL层提供服务。
OpenFlowPlugin实现了OpenFlow协议,它提供了REST API接口,这里需要关注添加流表项、添加计量表项等接口;OpenFlowPlugin提供了SalFlowService和SalMeterService服务,在这两个服务接口中定义了插入、删除和更新流表项、计量表项的方法。因此,流量限速插件可以通过组合这些基础功能完成限速功能。
- 数据层
数据平面交换节点通过OpenvSwitch实现,通过OpenFlow协议与控制器连接。
- 控制层
控制平面是由Java语言编写,基于OpenDaylight架构的控制器,通过OpenFlow协议及OVSDB与数据平面交互,通过HTTP REST API与应用层交互。
- 应用层
应用层是通过Python语言编写,可视化的呈现拓扑信息,交换机信息及实时流量统计。
这是本次试验的逻辑框架:
控制层的设计
- 拓扑管理
控制器需要将拓扑信息收集至拓扑结构库中,作为后续的路由算法、转发规则的知识库,保证其更加稳定、高效地工作。控制器需要合理地管理网元设备信息,保证网元设备的连接的稳定性,并实现合理的错误反馈,保证与网元设备通信时的稳定性与正确性。建立OpenFlow连接后,需要保证交换机与控制器之间通信的稳定性。
- 链路状态检测