[ovs-discuss] Way of handling rules at the OVS flow-table is there any time order?

Ben Pfaff blp at ovn.org
Thu Nov 19 17:35:41 UTC 2020

On Thu, Nov 19, 2020 at 12:20:01PM +0100, Jordi Baranda wrote:
> If I use break-before-make, there is no problem because I replace the rules
> and that is. However for the make-before-break approach, I foresee that there
> will be some flow rules with the same match fields but different action
> fields. (e.g, t0: in_port: 3 -> out_port: 2 vs t1: in_port: 3 -> out_port:4,
> where t0 means time0 and t1 means time1 and t1 > t0 (older time instant) ).  I
> know I could handle that with priorities but I think this may add further
> complexity to the SDN controller app.

I don't think this makes any sense.  You cannot have two flows in a
table with the same match fields and the same priority.  Those are the
same flow, and it has either one set of actions or another.

> I am wondering if I can skip this treatment at the SDN controller app making
> use of how OVS applies/evaluates rules in the flow table. More specifically,
> rules in the flow table of OVS (for the same priority) are evaluated in any
> time order? That is, OVS is considering "t1 rule" (which is more recent than
> the one of t0) before than "t0 rule"  (however, t0 rule will be erased
> afterwards)? Or are the flow-rules in the flow table ordered/evaluated
> "randomly"? Additionally, has this changed through the OVS versions?

I'm not sure I understand the question.  Skipping by the problem above,
let me rephrase my understanding of it in another way, and you can
correct me if I get it wrong.  I think you are saying, if a given packet
has two "best match" flows at the same priority, will OVS choose the one
added later by preference?  No, OVS doesn't work that way; it has never
used the order in which flows are added as an input into the
classification process.

More information about the discuss mailing list