OpenFlow Flowtable

Flow table

在这里插入图片描述
Match Fields:匹配域,可能包含ingress port、数据包头信息以及前继Flow Table传过来的Metadata值域等

Priority:匹配优先级

Counters:计数器,统计与该Flow Entry成功匹配的包数量

Instructions:指令集,应用到与该Flow Entry成功匹配的数据包

Timeouts:在该Flow Entry过期前的最大有效时间或者空闲时间

Cookie:被Remote Controller用来筛选Flow Statistics、Flow Modification或者Flow Deletion行为的指示值

一个Flow Entry在Flow Table中通过Match Fields和Priority两个字段来唯一标识(或称为联合主键)。这里注意,每个Flow Table中可能会有一个Table Miss Flow Entry,它是专门用来处理该Flow Table中没有其他Flow Entry能否匹配成功的数据包的,它的特点是它的Match Fields能够匹配任何数据包,并且Priority一定是0。

The processing of Flow table

OpenFlow Flowtable_第1张图片
当一个数据包被一个Flow Table处理时,数据包会被逐次地依据Priority与该Flow Table里的所有Flow Entry进行匹配,当发现匹配成功的Flow Entry时,该Flow Entry相关联的Instructions Set将会被执行,这些Instructions可能会将该数据包显示地直接转发到后续的其他Flow Table里(通过Goto指令)继续处理,在那里继续采取同样的方式来处理数据包。这里需要注意的是,Flow Entry只会将数据包继续往前(往索引号比当前大的Flow Table)转发,而不会倒序转发,因此,OpenFlow Pipeline的最后一个Flow Table不能再包含Goto指令,如果某个匹配成功的Flow Entry不能将数据包继续转发到后续的Flow Table,那么整个Pipeline Processing将在此终止,此时与该数据包关联的Actions将会被执行,通常是数据包被转发走。

假若一个数据包在一个Flow Table里没有发现能够匹配成功的Flow Entry,那么这叫作一次Table Miss,至于发生Table Miss后的动作取决于这个Flow Table的配置:1)直接丢弃,2)继续转发给后续的Flow Table,3)封装成 packet-in 消息发送给Remote Controller。

参考文献: https://www.cnblogs.com/CasonChan/p/4620652.html

你可能感兴趣的:(SDN,and,Malware)