The last couple of weeks I have read various documents about various things related to openflow, trying to work out what was actually usable and not just mentioned but not actually ever implemented.
In the end I came up with a really, really nasty solution to getting the switch to learn with fewer than n^2 rules, that involved the switch forwarding packets out one port and in another. So I talked to Jamie and Richard about it, and Jamie pointed out that there is support for multiple tables with openvs despite it not being supported in openflow 1.0.
It also turns out openvs has a resubmit command which seems to be how packets are moved to new tables, which for my purposes kinda resolves the need for multiple tables itself.
So next thing is to actually work out how to use this, considering the controller platforms seem to mostly be designed for openflow 1.0 which doesnt have that option.. I think..