X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=README;h=8b9b7bd22cb9edfc136251e9bbe598a4661ff0b5;hb=refs%2Fheads%2Ffor-nox%2F0.4;hp=36f91878dc0f86f63d9a0d5dec53fba756983a8a;hpb=70da0ae2789f6d68485066b9b2c2ff3c74298225;p=sliver-openvswitch.git diff --git a/README b/README index 36f91878d..8b9b7bd22 100644 --- a/README +++ b/README @@ -8,7 +8,7 @@ researchers to run experiments in live networks. OpenFlow is based on a simple Ethernet flow switch that exposes a standardized interface for adding and removing flow entries. -An OpenFlow Switch consists of three parts: (1) A "flow table" in +An OpenFlow switch consists of three parts: (1) A "flow table" in which each flow entry is associated with an action telling the switch how to process the flow, (2) a "secure channel" connecting the switch to a remote process (a controller), allowing commands and packets to @@ -16,7 +16,7 @@ be sent between the controller and the switch, and (3) an OpenFlow protocol implementation, providing an open and standard way for a controller to talk to the switch. -An OpenFlow Switch can thus serve as a simple datapath element that +An OpenFlow switch can thus serve as a simple datapath element that forwards packets between ports according to flow actions defined by the controller using OpenFlow commands. Example actions are: @@ -24,30 +24,41 @@ the controller using OpenFlow commands. Example actions are: - Drop this flow's packets - Encapsulate and forward this flow's packets to the controller. -The OpenFlow Switch is defined in detail in the OpenFlow Switch +The OpenFlow switch is defined in detail in the OpenFlow switch Specification [2]. What's here? ------------ -This distribution includes a Linux-specific reference implementation -of an OpenFlow switch, comprising: +This distribution includes two reference implementations of an +OpenFlow switch. The first implementation, which is closely tied to +Linux because it is partially implemented in the Linux kernel, has the +following components: - A Linux kernel module that implements the flow table and - OpenFlow protocol. + OpenFlow protocol, in the datapath directory. - secchan, a program that implements the secure channel component of the reference switch. - dpctl, a tool for configuring the kernel module. +The second implementation has the following components: + + - udatapath, which implements the same functionality as the + Linux kernel module in userspace, at a cost in performance. + + - secchan, a program that implements the secure channel + component of the reference switch (the same program used in + the kernel-based implementation). + This distribution includes some additional software as well: - controller, a simple program that connects to any number of OpenFlow switches, commanding them to act as regular MAC learning switches. - - vlogconf, a utility that can adjust the logging levels of a + - vlogconf, a utility that can adjust the logging levels of a running secchan or controller. - ofp-pki, a utility for creating and managing the public-key @@ -56,49 +67,44 @@ This distribution includes some additional software as well: - A patch to tcpdump that enables it to parse OpenFlow messages. -For installation instructions, read INSTALL. This distribution also -includes manpages for each of its userspace programs, in the man/ -directory. +For installation instructions, read INSTALL. Each userspace program +is also accompanied by a manpage. Platform support ---------------- -Other than the Linux kernel module, the software in the OpenFlow -distribution should compile under Unix-like environments such as -Linux, FreeBSD, Mac OS X, and Solaris. Our primary test environment -is Debian GNU/Linux. Please contact us with portability-related bug -reports or patches. +Other than the Linux kernel module and userspace switch +implementation, the software in the OpenFlow distribution should +compile under Unix-like environments such as Linux, FreeBSD, Mac OS X, +and Solaris. Our primary test environment is Debian GNU/Linux. +Please contact us with portability-related bug reports or patches. + +The Linux kernel module is, of course, Linux-specific, and the dpctl +utility will not be useful without the kernel module. The testing of +the kernel module has focused on Linux 2.6.26. Linux 2.6 releases +from 2.6.15 onward and Linux 2.4 releases from 2.4.20 onward should +also work. -The Linux kernel module is, of course, Linux-specific, and the secchan -and dpctl utilities will not be as useful without the kernel module. -The testing of the kernel module has focused on Linux 2.6.23. Linux -2.6 releases from 2.6.15 onward and Linux 2.4 releases from 2.4.20 -onward should also work. +The userspace datapath implementation should be easy to port to +Unix-like systems. The interface to network devices, in netdev.c, is +the code most likely to need changes. So far, only Linux is +supported. We welcome ports to other platforms. GCC is the expected compiler. Bugs/Shortcomings ----------------- -- The current flowtable does not support all statistics messages - mentioned in the Type 0 OpenFlow spec. - -- The flowtable does not support the "normal processing" action. - -- Configure/build system does not support separate build directory for - the datapath. ./configure must be run from the source root. - -- dpctl dump-flows may freeze when large numbers of flows are in the - flow table. This has no effect on the datapath. +- The flow table does not support the "normal processing" action. References ---------- [1] OpenFlow: Enabling Innovation in College Networks. Whitepaper. - + [2] OpenFlow Switch Specification. - + Contact -------