> This is in facet_flush_stats(), which gets called from two contexts: > facet_remove() and facet_revalidate(). It shouldn't really matter in > facet_remove() since the facet is going away anyway, so the > facet_revalidate() case is the interesting one. That case comes up > when the facet's actions change. Now, I can see the point of view > that "we saw a FIN once, so we'll make that sticky" but the point of > view I've always taken is slightly different. My point of view is > that the ideal that Open vSwitch is trying to reach is that every > packet that goes through a flow executes the actions. That means > that, when a packet with a FIN goes through the flow, it only changes > the timeout that one time. If the FIN goes through when the actions > are different, it has no effect, and there's no "stickiness". In > reality, though, we only find out about TCP flags periodically, so we > can only approximate the ideal behavior. By resetting tcp_flags when > the actions change, we "forget" that the FIN was seen, which seems > correct to me because in fact it hasn't been seen with the new > actions.
Sounds fine to me. We can always change it if for some reason real controllers prefer the alternative behavior. My intuition is that the behavior you've written is fine. Ethan _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
