I recently found a technique I'd used with OVS 1.9 no longer worked under OVS built from master a few days ago. Here's a pretty minimal example:
table=0, actions=resubmit(,2),resubmit(,1) table=1, reg1=0 actions=learn(table=2,hard_timeout=1,load:1->NXM_NX_REG1[]),controller In this example, it's a poor man's controller rate limiter. The previous (and expected) behavior is that you can spam packets (e.g., ping -i 0.1) and only one per second goes to the controller. The observed behavior on new versions of OVS is that nothing ever comes to the controller. Adding a reg1=1 match to table 1, it was clear the matching was working right (the packet counts of the table 1 rules summed to the packet count of the table 0 rule). But still nothing at the controller. A flood action, however, works just fine -- one per second. This got me thinking it's a fast path/slow path issue. I did some digging and found: Before 4dff909 (Move odp_actions from subfacet to facet), things worked as expected. After this commit, it didn't work, but I found a workaround based on a glance through the diff and a hunch: if I put a controller action in the table 0 rule too, both controller actions worked. I was inspired to try this by the change around line 5027. Without the table 0 controller action, facet_revalidate() gives up when the facet goes from fast path to slow path. With it, I am guessing it starts out on the slow path and never changes. Whether any of that is significant or not, by sending to a nonexistent controller ID in table 0, I had the behavior I wanted again. Unfortunately, this workaround didn't work on master. So more digging. It turns out that after 3d9c5e5 (Handle learn action flow mods asynchronously), the workaround wasn't required anymore and things were back to working as expected. Obviously this didn't last forever. Specifically, when 9129672 (Move "learn" actions into individual threads) more or less undid the previous, even the workaround doesn't work. I tried to find anything related on the mailing list and didn't come up with anything. Is it unknown? Is there any reason why this *shouldn't* work? Any thoughts on getting it to work again? -- Murphy _______________________________________________ discuss mailing list [email protected] http://openvswitch.org/mailman/listinfo/discuss
