floodlight/indigo — pull request #24 by rlane (2013-08-05 22:31:30+00:00)
Title: RFC: Optimize OFStateManager flowtable memory consumption

Reviewer: @rlane

I don't expect this change can be merged as-is, but I want to publish it to get feedback.

@dtalayco and I discussed the main problem with removing the flow-add message from the flowtable entry, which is that we can't send a bit-for-bit exact copy back to the controller for flow stats and flow removed messages. One place this causes problems is the OF 1.0 nw src/dst wildcards. If the controller sends a /32 mask we'll send a flow stats reply with a /63 mask. This broke a few OFTests. This may cause more problems in OF 1.3 where the order of OXMs is unspecified.

We could consider storing the wire match objects that we can't recreate exactly from the of_match_t.

@jnealtowns The ind_core_ft_iter users expect to be passed the original flow-add. I think this is already problematic because the actions/instructions could have been modified. I've hacked around this by partially reconstructing a flow-add message. Can the ind_core_ft_iter functions be changed to use flow stats entries, or some other representation of the flow?

The other optimizations I want to do include moving the actions/instructions list into the same memory allocation, and compressing the of_match_t. These have to wait until I make the flowtable entries dynamically allocated.