Add reminder comment to lib/learning-switch.c.
[sliver-openvswitch.git] / README
1         OpenFlow Reference Release <http://openflowswitch.org>
2
3 What is OpenFlow?
4 -----------------
5
6 OpenFlow is a flow-based switch specification designed to enable
7 researchers to run experiments in live networks.  OpenFlow is based on a
8 simple Ethernet flow switch that exposes a standardized interface for
9 adding and removing flow entries.
10
11 An OpenFlow switch consists of three parts: (1) A "flow table" in
12 which each flow entry is associated with an action telling the switch
13 how to process the flow, (2) a "secure channel" connecting the switch
14 to a remote process (a controller), allowing commands and packets to
15 be sent between the controller and the switch, and (3) an OpenFlow
16 protocol implementation, providing an open and standard way for a
17 controller to talk to the switch.
18
19 An OpenFlow switch can thus serve as a simple datapath element that
20 forwards packets between ports according to flow actions defined by
21 the controller using OpenFlow commands.  Example actions are:
22
23     - Forward this flow's packets to the given port(s)
24     - Drop this flow's packets
25     - Encapsulate and forward this flow's packets to the controller.
26
27 The OpenFlow switch is defined in detail in the OpenFlow switch
28 Specification [2].
29
30 What's here?
31 ------------
32
33 This distribution includes three different reference implementations
34 of an OpenFlow switch.  The first implementation, which is closely
35 tied to Linux because it is partially implemented in the Linux kernel,
36 has the following components:
37
38         - A Linux kernel module that implements the flow table and
39           OpenFlow protocol, in the datapath directory.
40
41         - secchan, a program that implements the secure channel
42           component of the reference switch.
43
44         - dpctl, a tool for configuring the kernel module.
45
46 The second implementation has the following components:
47
48         - udatapath, which implements the same functionality as the
49           Linux kernel module in userspace, at a cost in performance.
50
51         - secchan, a program that implements the secure channel
52           component of the reference switch (the same program used in
53           the kernel-based implementation).
54
55 The third implementation is a single userspace program, named
56 "switch", that integrates all three parts of an OpenFlow switch.  This
57 implementation is deprecated.  It lacks features present in the other
58 two implementations.
59
60 This distribution includes some additional software as well:
61
62         - controller, a simple program that connects to any number of
63           OpenFlow switches, commanding them to act as regular MAC
64           learning switches.
65
66         - vlogconf, a utility that can adjust the logging levels of a
67           running secchan or controller.
68
69         - ofp-pki, a utility for creating and managing the public-key
70           infrastructure for OpenFlow switches.
71
72         - A patch to tcpdump that enables it to parse OpenFlow
73           messages.
74
75 For installation instructions, read INSTALL.  Each userspace program
76 is also accompanied by a manpage.
77
78 Platform support
79 ----------------
80
81 Other than the Linux kernel module and userspace switch
82 implementation, the software in the OpenFlow distribution should
83 compile under Unix-like environments such as Linux, FreeBSD, Mac OS X,
84 and Solaris.  Our primary test environment is Debian GNU/Linux.
85 Please contact us with portability-related bug reports or patches.
86
87 The Linux kernel module is, of course, Linux-specific, and the dpctl
88 utility will not be useful without the kernel module.  The testing of
89 the kernel module has focused on Linux 2.6.26.  Linux 2.6 releases
90 from 2.6.15 onward and Linux 2.4 releases from 2.4.20 onward should
91 also work.
92
93 The userspace datapath implementation should be easy to port to
94 Unix-like systems.  The interface to network devices, in netdev.c, is
95 the code most likely to need changes.  So far, only Linux is
96 supported.  We welcome ports to other platforms.
97
98 GCC is the expected compiler.
99
100 Bugs/Shortcomings
101 -----------------
102
103 - The flow table does not support the "normal processing" action.
104
105 References
106 ----------
107
108     [1] OpenFlow: Enabling Innovation in College Networks.  Whitepaper.
109         <http://openflowswitch.org/documents/openflow-wp-latest.pdf>
110
111     [2] OpenFlow Switch Specification.
112         <http://openflowswitch.org/documents/openflow-spec-latest.pdf>
113
114 Contact 
115 -------
116
117 e-mail: info@openflowswitch.org
118 www: http://openflowswitch.org/