Traditionally the argument has been specialized hardware doing function X, will be faster (but not customizable, upgradable) compared to doing function X in software on commodity hardware (slow but upgradable).
And fpga were pointed out as somewhere in the middle ( some hw customization using sw)
What are your thoughts on the argument that by using commodity hw & implementing routing algos, etc in sw, will be more flexible but slower.
Is there a significant performance/speed cost when you implement core networking features in sw ?
The routing layer in hardware acts on a set of cached rules which are very simple. Simplified, you can imagine them to be of the form Matching Rule -> Routing Action. The matching rule selects by the packet fields such as source port or destination IP. The routing actions could be "forward to port" or "drop packet". All of this is just as fast as in every other commodity router.
What is special in OpenFlow is another possibility for the "routing action" field (or for unmatched packets): You can send certain packets up into the software level, to the OpenFlow controller. This can be a centralized server and the logic is implemented in software. The software decides about the routing of these kinds of packets and sends the answer back to the router. Here the rule is cached again and from now on the routing for this is as fast as for all the other packets.
This last bit is the only part which is slower compared to commodity routers. A really great solution in my opinion.
Perfect timing from Google.