采用了OXM,支持了IPv6,支持了多控制器。
从OpenFlow1.2开始取消了此前版本中固定长度的匹配字段,改为采用具有TLV结构的OXM。使用OXM TLV的新ofp_match结构体如下:
type(匹配类型,16位) | length(不包含填充的ofp_match结构体的大小,16位) | 任意数量的OXM TLV(长度可变,但整个结构体要求64位对齐,需要填充) |
---|
各OXM TLV由OXM TLV头及之后的BODY部分构成。OXM TLV的字节序列是网络字节序列。OXM TLV头具有如下结构:
oxm_class(匹配类,成员类或保留类,16位) | oxm_field(类中的字段,7位) | oxm_hasmask(有效负载中包含掩码相关的信息时,设置该位,1位) | oxm_length(OXM有效负载的长度,8位) |
---|
各OXM_TLV的内容通过oxm_class和oxm_field的组合来确定。
OpenFlow1.2取消了之前一直存在的匹配字段解析规范,对各匹配字段增加了Pre-requisite(前提条件/必要条件)。Pre-requisite增加了对各匹配字段进行解析的前提条件,需要事先描述成为该前提条件的匹配字段的OXM TLV。
OpenFlow1.2中定义了36中匹配字段作为基本匹配类。字段中必须支持输入端口、目标及发送源以太网地址、以太网类型、IP协议号、IPv4和IPv6的目标及发送源地址、TCP和UDP的目标及发送源端口号等13个字段。
未通过OXM TLV明确指定的字段都将被处理为通配符。
开始定义通用的Set-Field行动,将OXM匹配字段中使用的类型直接用作Set-Field行动的类型。OXM匹配字段中不存在的操作则继续被个别定义(操作 IPv4 TTL,IPv6 Hop Limit的行动,进行头及标签的Push/Pop的行动)。
添加了对IPv6数据包的匹配及头改写功能。对于IPv6的支持可以通过导入OXM功能来实现。注意,并非IPv6头的所有字段都可以进行操作。
从OpenFlow1.2开始,1台OpenFlow交换机可以连接多台OpenFlow控制器。通过使用该功能,可使OpenFlow控制器的冗余及负载均衡成为可能。
分为EQUAL、MASTER、SLAVE三种。
默认为EQUAL。各EQUAL控制器发挥相同作用,允许其对交换机进行完全访问。SLAVE控制器只能对交换机进行Read-Only访问。MASTER虽然和EQUAL具有完全相同的权限,但只能同时存在一台MASTER,且以太交换机连接一台MASTER时,其他MASTER会自动变为SLAVE。一台MASTER也可以和多台EQUAL进行连接。
Role请求消息,Role响应消息。
OpenFlow1.2取消了“虚拟端口”的说法,将其分为“逻辑端口”和“保留端口”。
逻辑端口,并不与OpenFlow交换机的物理性接口对应,而是链路聚合组就、隧道、环回接口等逻辑性概念。
保留端口,ALL、CONTROLLER、LOCAL、TABLE、NORMAL、IN_PORT、FLOOD等端口。
OpenFlow1.2开始,Flow-Mod的MODIFY/MODIFY_STRICT在不存在匹配流表项时,不会再添加新的流表项。
此外,还添加了OFPFF_RESET_STRICT标志,可通过Flow-Mod消息对计数器值进行重置。
添加了各种功能进行实验性扩展的机制,如:
参考自《图解OpenFlow》
转载请注明出处