OpenFlow交换机的分类
依照对OpenFlow的支持程度,OpenFlow交换机可以分为两类:
一、专用的OpenFlow交换机:
它是专门为支持OpenFlow而设计的。它不支持现有的商用交换机上的正常处理流程,所有经过该交换机的数据都依照OpenFlow的模式进行转发。专用的OpenFlow交换机中不再具有控制逻辑,因此专用的OpenFlow交换机是用来在端口间转发数据包的一个简单的路径部件。
二、支持OpenFlow的交换机:
它是在商业交换机的基础上添加流表、安全通道和OpenFlow协议来取得了OpenFlow特性的交换机。其既具有经常使用的商业交换机的转发模块,又具有OpenFlow的转发逻辑,因此支持OpenFlow的交换机可以采取两种不同的方式处理接收到的数据包。
依照OpenFlow交换机的发展程度来分,OpenFlow交换机也能够分为两类:
“Type0”交换机:
它仅仅支持十元组和以下四个操作:
1.转发这个流的数据包给一个给定的端口(还是几个端口);
2.紧缩并转发这个流的数据包给控制器;
3.抛弃这个流的数据包;
4.通过交换机的正常处理流程来转发这个流的数据包。
“Type1”交换机:
由于“Type0”交换机的这些功能是不能满足复杂实验要求的,因此就定义“Type1”交换机来支持更多的功能,从而支持复杂的网络实验,“Type1”交换机将具有一个新的功能集合。
在一条规则中,可以根据网络包在L2、L3还是L4等网络报文头的任意字段进行匹配,比如以太网帧的源MAC地址,IP包的协议类型和IP地址,还是TCP/UDP的端口号等。目前OpenFlow的规范中还规定了Switch装备厂商可以选择性地支持通配符进行匹配。听说,OpenFlow在未来还计划支持对全部数据包的任意字段进行匹配。
所有OpenFlow的规则都被组织在不同的FlowTable中,在同一个FlowTable中按规则的优先级进行前后匹配。一个OpenFlow的Switch可以包括一个还是多个FlowTable,从0顺次编号排列。OpenFlow规范中定义了流水线式的处理流程,以下图所示。当数据包进入Switch后,一定要从FlowTable0开始顺次匹配;
FlowTable可以顺次序从小到大越级跳转,但不能从某一FlowTable向前跳转至编号更小的FlowTable。当数据包成功匹配一条规则后,将首先更新该规则对应的统计数据(如成功匹配数据包总数目和总字节数等),然后根据规则中的指令进行相应操作比如跳转至后续某一FlowTable继续处理,修改还是立即履行该数据包对应的ActionSet等。
当数据包已处于最后一个FlowTable时,其对应的ActionSet中的所有Action将被履行,包括转发至某一端口,修改数据包某一字段,抛弃数据包等。OpenFlow规范中对目前所支持的Instructions(指令)和Actions进行了完全详细的说明和定义。
另外,OpenFlow规范中还定义了很多其他功能和行动,比如OpenFlow对QoS的支持(即MeterTable和MeterBands的定义等),对GroupTable的定义,和规则的超时处理等。