Openflow协议工作流程举例

以具体的例子描述OpenFlow交换机在工作时,收到一个未知数据包后与控制器交互的过程。网络拓扑如图所示;若主机1需要与主机2进行通信,需要进行如下五个步骤:

Openflow协议工作流程举例

(1) 主机1向OpenFlow交换机1发送数据包;
(2) OpenFlow交换机1查询流表,无法找到与数据流相匹配的转发规则;将来自主机1的数据包封装在Packet-In消息中上发给控制器;
(3) 控制器收到Packet-In消息后,根据使用的路由算法,计算得到该数据流的转发策略,并通过Packet-Out消息下发给OpenFlow交换机1;
(4) OpenFlow交换机1执行控制器下发的转发策略,按照策略将数据包转发给交换机2;
(5) OpenFlow交换机2查询流表,若存在与数据流匹配的流规则,则按照流规则的规则进行转发;否则执行步骤(2)-(4);最终将来自主机1的数据包转发给主机2。


从上面OpenFlow交换机转发数据包的过程中,可以看出,对于未知数据包,交换机会将其上发给控制器,由控制器根据自身的策略制定转发规则。若该数据流从未在网络中出现过,则对于转发路径中的所有交换机都需要与控制器进行通信来获取转发所需的流规则。

在以上步骤中,Packet-In消息和Packet-Out消息起到了重要作用。在OpenFlow协中,Packet-In消息的功能是将到达OpenFlow交换机的数据包发送给OpenFlow控制器。根据OpenFlow协议,有两种情况可能在网络中产生Packet-In消息。第一种是数据流与流表中的所有匹配规则都不一致;另一种是匹配的流表规则执行的行为是发送到OpenFlow控制器。OpenFlow交换机将数据包发送到控制器时,可以选择缓存或者不缓存数据包两种方式。