ing, then every car could get to where
it is going without a collision. That’s
the Internet: no maps; close your eyes
and drive.
Every router is trying to infer an entire worldview based on what it hears.
Driving these complicated algorithms
requires a lot of CPU horsepower. Each
router is an expensive mainframe doing the same calculation as everyone
else just to get the slightly different result it needs. Larger networks require
more computation. As an enterprise’s
network grows, every router needs
to be upgraded to handle the additional computation. The number and
types of ports on the router haven’t
changed, but the engine no longer has
enough capacity to run its algorithms.
Sometimes this means adding RAM,
but often it means swapping in a new
and more expensive CPU. It is a good
business model for network vendors:
as you buy more routers, you need
to buy upgrades for the routers you
have already purchased. These are not
standard PCs that benefit from the
constant Dell-vs.-HP-vs.-everyone-else
price war; these are specialized, expensive CPUs that customers cannot
get anywhere else.
the Radical Simplification
of openFlow
The basic idea of OpenFlow is that
things would be better if routers were
dumb and downloaded their routing
information from a big “route compiler in the sky,” or RCITS. The CPU
horsepower needed by a router would
be a function of the speed and quantity of its ports. As the network grew,
the RCITS would need more horsepower but not the routers. The RCITS
would not have to be vendor specific,
and vendors would compete to make
the best RCITS software. You could
change software vendors if a better
one came along. The computer running the RCITS software could be off-the-shelf commodity hardware that
takes advantage of Moore’s Law, price
wars, and all that good stuff.
Obviously, it is not that simple. You
have to consider other issues such as
redundancy, which requires multiple
RCITS and a failover mechanism. An
individual router needs to be smart
enough to know how to route data
between it and the RCITS, which may
the basic idea of
openFlow is that
things would be
better if routers
were dumb and
downloaded their
routing information
from a big “route
compiler in the sky.”
be several hops away. Also, the communication channel between entities
needs to be secure. Lastly, we need a
much better name than RCITS.
The OpenFlow standard addresses
these issues. It uses the term
controller or controller platform (yawn) rather
than RCITS. The controller takes in
configuration, network, and other
information and outputs a different
blob of data for each router, which interprets the blob as a decision table:
packets are selected by port, MAC address, IP address, and other means.
Once the packets are selected, the
table indicates what to do with them:
drop, forward, or mutate then forward. (This is a gross oversimplification; the full details are in the specification, technical white papers, and
presentations at http://www.Open-Flow.org/wp/learnmore.)
Traditional networks can choose a
route based on something other than
the shortest path—perhaps because
it is cheaper, has better latency, or
has spare capacity. Even with systems
designed for such traffic engineering,
such as Multiprotocol Label Switching Traffic Engineering (MPLS TE),
it is difficult to manage effectively
with any real granularity. OpenFlow,
in contrast, enables you to program
the network for fundamentally different optimizations on a per-flow basis.
That means latency-sensitive traffic
can take the fastest path, while bulk
flows can take the cheapest. Rather
than being based on particular endpoints, OpenFlow is granular down to
the type of traffic coming from each
endpoint.
OpenFlow does not stop at traffic
engineering, however, because it is
capable of doing more than populating a forwarding table. Because an
OpenFlow-capable device can also
rewrite the packets, it can act as a
NAT or AFTR (address family transition router); and because it can drop
packets, it can act as a firewall. It can
also implement ECMP (equal-cost
multi-path) or other load-balancing
algorithms. They do not have to have
the same role for every flow going
through them; they can load-balance
some, firewall others, and rewrite a
few. Individual network elements are
thus significantly more flexible in an
OpenFlow environment, even as they