最近在接触SDN(软件定义网络),本文针对SDN南向接口中的OpenFlow协议消息类型进行简单整理,参考链接为http://www.opennetworking.org/wp-content/uploads/2014/10/openflow-switch-v1.5.1.pdf。文中存在诸多不足,仅供参考。
OpenFlow协议支持三种消息类型,分别为:controller-to-switch,asychronous(异步)和symmetric(对称),每一类消息又有多个子消息类型。其中,controller-to-swicth消息是由交换机发起的,用于管理和检查交互就状态;asychnomous消息是由交互就发起的,用于将网络事件和交换机状态改变信息更新到控制器;symmetric消息是由控制器或交换机发起的。每类消息包含的子消息类型如下所述。
1、Controller-to-Switch
Features: 控制器通过向交换机发送features消息,用于请求交换机身份和基本能力信息,且交换机必须对此类消息进行应答。features消息通常在安全通道建立时执行。
Configuration: 控制器设置或查询交换机上的配置信息,交换机仅需要应答查询信息。
Modify-State: 控制器通过发送Modify-State消息管理交换机流表项和端口状态等。
Read-State: Read-State消息用于控制器收集交换机上的各种信息,包括配置、统计等信息。
Packet-Out: 用于控制器通过交换机指定端口转发数据包。
Barrier: 用于控制器确保消息依赖满足,或接收完成操作的通知。
Role-Request: 用于控制器设置或查询安全通道的角色信息。当交换机连接多个控制器时,此类消息是非常有用的。
Asynchronous-Configuration: 用于针对从安全通道接收到的异步消息添加额外的控制器或查询该控制器。此类消息通常在安全 通道建立时执行,且在交换机连接多个控制器时非常有用。
2、Asynchronous
Packet-In: 交换机收到一个网络数据包,在流表中没有匹配项,则发送Packet-In消息给控制器。如果交换机缓存足够多,网络数据包被临时存放在缓存中,网络数据包部分内容和在交换机缓存中的序号一同发给控制器;如果交换机缓存不足则将整个数据包发送给控制器。
Flow-Removed: 交换机中的流表因为超时或者修改等原因被删除掉,会触发flow-removed消息。
Port-Status: 交换机端口状态发送变化时触发port-status消息。
Error: 交换机发生故障时触发error消息。
3、Symmetric
Hello: 用于交换机和控制器建立连接。
Echo: 交换机和控制器均可发送echo消息,接收者需要回复echo reply。该消息用于测量延迟、带宽等。
Experimenter: 用于在OpenFlow消息类型空间中为OpenFlow交换机提供额外的功能。