我在openvswitch-testcontroller中使用单一拓扑,因此启动mininet的命令是: sudo mn --topo = single --controller = remote,127.0.0.1:6653
我追踪了交换机和控制器之间的通信。从h1 ping h2后,对于FLOW_MOD OPF消息,我检测到空闲超时设置为60秒。
下一系列的ping是后来的(通过60秒后),并且由于没有匹配而来自switch的PACKET_IN消息 - 这意味着先前的流匹配模式(从h1 ping h2)已被删除。
但我无法找到指示交换机因超时到期而删除流量的数据包!为什么呢?
答案 0 :(得分:1)
Switch会在到期后删除流,不需要为此获取数据包。
从Openflow official documentation :( 5.5流量移除部分)
交换机运行的交换机流量到期机制 独立于控制器,基于状态和 流条目的配置。每个流条目都有一个idle_timeout和 与之相关的hard_timeout。如果任何一个值都不为零,那么 交换机必须注意流量条目的到达时间,因为它可能需要 稍后逐出。非零hard_timeout字段导致流 无论如何,在给定的秒数后删除条目 它匹配了多少个数据包。一个非零的idle_timeout字段导致 在没有匹配的数据包时要删除的流条目 给定的秒数。交换机必须实现流量到期和 当其中一个超时时,从流表中删除流条目 超出。