Modular SDN Programming with Pyretic Flashcards
enables innovation in network management by giving a programmable controller direct control over the underlying switches through an open, standard API, like Open- Flow.
Software-Defined Networking (SDN)
a programming platform that raises the level of abstraction and enables the creation of modular software, allowing programmers to create
sophisticated SDN applications.
Pyretic
a controller application uses a standard, open interface, such as OpenFlow, to specify how network elements or switches should handle incoming packets. Programmers develop their own new controller applications on top of a controller platform, which provides a programming API built on top of OpenFlow. Separating the controller platform and
applications from the network elements allows anyone—not just the equipment vendors—to
program new network control software.
Software-Defined Networking (SDN)
SDN has enabled a wealth of innovation, including prominent commercial successes such as…
Nicira’s network virtualization platform and Google’s wide-area traffic engineering system.
Python-based platform that enables systems
programmers to create sophisticated SDN applications.
Pyretic
open-source software that offers a BSD-style license compatible with the needs of both commercial and research developers.
Pyretic
defines how the controller and switches
interact
The OpenFlow protocol
An OpenFlow switch has a rule table, where each rule includes:
1) a bit pattern: including wildcards, for matching header fields—for example, MAC and IP addresses, protocol, TCP/UDP port numbers, physical input port, etc.;
2) a priority: to break ties between overlapping patterns;
3) a list of actions: for example, forward out a port, flood, drop, send to controller, assign a new value to a header field, etc.;
4) optional hard and soft timeouts to evict stale rules;
5) byte and packet counters that collect information about how much traffic is flowing through each rule.
returns original packet
identity
returns empty set
drop
identity if field f matches v, drop otherwise
match(f=v)
returns packet with field f set to v
modify(f=v)
modify (port=a)
fwd(a)
returns one packet for each local port on
the network spanning tree
flood()
has enabled a wealth of controller applications, including flexible access control, Web server load balancing, energy efficient networking, billing, intrusion detection, seamless mobility and virtual-machine migration, and network virtualization.
OpenFlow