Maestro是源自RICE Univ.的Openflow controller,对其关键设计解析如下:
1 View
在Maestro中,View代表了一组相关的网络状态的子集。网络状态state的一个典型例子是路由表(which determines howdata packets are forwarded in the network.)。View的目的就是提供上层控制应用并发访问网络的最小粒度。所有的View都必须重载实现下面几个重要的方法:boolean whetherInterested(Event e) – (在初始阶段创建event和view之间的注册);
Boolean processEvent(Event e) – (顾名思义,通常处理事件就是更新对应的数据结构);
Void commit(Driver driver) – (向网络中发包)。
2 Event
在Maestro中,Event是Openflow网络中数据交换的基本单元,它对应到Openflow规范中的Message。它可以由交换机产生(如对应于ofp_packet_in的PacketInEvent),也可以由控制器产生(如对应于ofp_flow_mod的FlowModEvent),因此在Maestro中需要实现每个Event的convertToBytes来与Openflow规范兼容。Event是组成View的数据单元。
(Maestro中的事件肯定要于Openflow规范中的事件相兼容的,这是一个突破点。)
3 Application
在Maestro中,一个aplication代表一个网络控制应用。这个application继承自A