1 总述
一个Openflow交换机包括一个或者多个流表flow table和一个组表group table。每个流表中每个流条目包括三个部分:(1) 匹配match—使用ingress port,packet header以及前一个flow table传递过来的metadata;(2) 计数counter---对匹配成功的包进行计数;(3) 操作instruction—修改action set或者流水线处理.
数据包从第一个流表开始匹配,可能会经历多个流表,这叫做流水线处理pipeline processing。流水线处理的好处就是允许数据包被发送到接下来的流表中做进一步处理或者元数据信息在表中流动。首先,找到流表中优先级最高的流条目完成匹配,这将根据ingress port,包头packet header,以及有上一个流表指定的metadata三类匹配域进行。如果某个数据包成功匹配了流表中某个流条目,则更新这个流条目的conter计数,同时这个流条目中的instruction操作将被应用生效。
Pipeline processing终结于instruction中没有指定下一个流表,这时数据包通常会被所带有的动作集合action set处理后转发。
如果数据包发生table miss现象,通常会通过控制通道和packet-in消息发送给控制器。
组表里往往代表一组额外的处理,如flooding、multipath、fast reroute、link ag