- Each router contains a flow table(forwarding table in tradicional forwarding) that is computed and distributed by a logically centralized routing controller (control plane)
- In SDN tables are generated from the routing algorithm computation
- In tradicional forwarding we have prefix and link interface in the second collumn
- In SDN, flow tables have actions are more general, not just forwarding. Flows are entries/rows in the table. Packets that have matching headers take a certain action (drop, copy, modify, log packet)

generalized forwarding: simple packet-handling rules
- Pattern: match values in packet header fields
- Actions for matched packet: drop, forward, modify, or send to controller
- Priority: disambiguate overlapping patterns (a header might have more than one match, so more than one action)
- Counters: # bytes and # packets
- Router's flow table define router's match + action rules
OpenFlow Abstraction
OpenFlow - protocol between controller and flow table

MiddleBoxes
- initially: proprietary (closed) hardware solutions
- move towards “whitebox” hardware implementing open API -> move away from proprietary hardware solutions -> programmable local actions via match+action -> move towards innovation/differentiation in software
- SDN: (logically) centralized control and configuration management often in private/public cloud
- network functions virtualization (NFV): programmable services over white box networking, computation, storage