X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=README;h=2cab2634af5a5325c388695efc1db898b8ccac82;hb=cf6207b610f15e73984e94c6c84ee07730ec746b;hp=b52689179c22e38bbfc35ee080f59360a22e9ea8;hpb=9df2b7bb71e50e05f63789658c91a73c175b6787;p=openvswitch diff --git a/README b/README index b5268917..2cab2634 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ - OpenFlow Reference Release v0.1.5 + OpenFlow Reference Release What is OpenFlow? ----------------- @@ -8,13 +8,13 @@ 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 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 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 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 +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 forwards packets between ports according to flow actions defined by @@ -30,156 +30,66 @@ Specification [2]. What's here? ------------ -This software is a reference implementation of an OpenFlow Switch kernel -module for the Linux operating system, a secure channel implementation, -and an example controller that performs switching with MAC learning. +This distribution includes a Linux-specific reference implementation +of an OpenFlow switch, comprising: -The rest of this file contains the following sections: + - A Linux kernel module that implements the flow table and + OpenFlow protocol. - - Description of the directory hierarchy - - Platform support - - Quickstart build and install instructions - - Shortcomings - - References + - secchan, a program that implements the secure channel + component of the reference switch. -Directory Hierarchy -------------------- + - dpctl, a tool for configuring the kernel module. - Source: +This distribution includes some additional software as well: - datapath/ Linux kernel module implementing an OpenFlow Flow Table - that incoming packets are checked against. The - kernel module uses netlink (a socket protocol for - user-kernel communication, described in RFC 3549) to - pass OpenFlow messages with the secure channel to be - relayed to the controller. + - controller, a simple program connects to any number of + OpenFlow switches, commanding them to act as regular MAC + learning switches. - secchan/ A Secure Channel that connects to a kernel datapath - via netlink and a remote controller via TCP, - relaying OpenFlow packets received on one end to the - other. (The current implementation does not - support SSL, but this will be added in future releases.) + - vlogconf, a utility that can adjust the logging levels of a + running secchan or controller. - controller/ A simple controller that connects to a datapath via - a Secure Channel, commanding the datapath to act as - a regular MAC learning switch. + - ofp-pki, a utility for creating and managing the public-key + infrastructure for OpenFlow switches. - utilities/ Contains the sorce for "dpctl", a command-line utility - for controlling the OpenFlow datapath kernel module. - With it, you can add physical ports to the datapath, - add flows, monitor received packets, and query the - datapath state. + - A patch to tcpdump that enables it to parse OpenFlow + messages. - include/ Header files common to the datapath, secure channel, - and controller components. - - lib/ Implementation files common to the datapath, secure - channel, and controller components. - - third-party/ Contains third-party software that may be useful for - debugging. Currently, it only contains a patch to - allow tcpdump to parse OpenFlow messages. - - Documentation: - - README Text file describing this OpenFlow implementation, - aka this document. - - INSTALLATION Detailed configure, build, and installation - instructions - - man/ Man pages describing how to administer datapath, - secure channel, and controller. +For installation instructions, read INSTALL. This distribution also +includes manpages for each of its userspace programs, in the man/ +directory. Platform support ---------------- - The datapath kernel module supports Linux 2.6.15 and above, however, - testing has focused on Linux 2.6.23. Support for Linux 2.4.20 and - above is also in place, although testing has focused on Linux 2.6. - - Components have been built and tested on Debian and Ubuntu. - - If you are able to build/run the code on platforms not mentioned - here, or have problems with supported system, please report your - experiences to: - - - - GCC is required for compilation. - - -Building and Installing (Quick Start) -------------------------------------- - - Building the datapath module requires that the source for the - currently running Linux kernel be installed on the machine and - been configured. - - The following instructions assume the Linux 2.6 source is located in - /usr/src/linux-2.6.23 and Linux 2.4 in /usr/src/linux-2.4.35 - - 1. ./configure the package, passing the location of one or more - kernel source trees on the command line: - - For example, if compiling for Linux 2.6: - % ./configure --with-l26=/usr/src/linux-2.6.23 - - Or compiling for Linux 2.4: - % ./configure --with-l24=/usr/src/linux-2.4.35 +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. - 2. Run make: - - % make - - The following binaries should be built. - - Datapath kernel module: - ./datapath/linux-2.6/openflow_mod.ko (If compiling for Linux 2.6) - ./datapath/linux-2.4/openflow_mod.o (If compiling for Linux 2.4) - - Secure channel executable: - ./secchan/secchan - - Controller executable: - ./controller/controller - - dpctl utility: - ./utility/dpctl - - 3. Optionally you can "make install" to install binaries and the - man pages (/usr/local/ is the default prefix). If you just want - access to the man pages without installing, set your MANPATH to - include the openflow/ source root. - - 4. Insert the datapath kernel module into the running Linux instance. - - (Linux 2.6) - % insmod datapath/linux-2.6/openflow_mod.ko - - (Linux 2.4) - % insmod datapath/linux-2.4/openflow_mod.o - - 5. Create datapaths by running dpctl on the Linux host (see man - dpctl(8)). Start the controller on a remote host with - controller (see man controller(8)). Start the Secure Channel - on the datapath host to connect the datapath to the controller - with secchan(see man secchan(8)). - - For more detailed installation instructions, refer to [3]. +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. +GCC is the expected compiler. Bugs/Shortcomings ----------------- - The current flowtable does not support all statistics messages - mentioned in the Type 0 OpenFlow spec -- The secure channel and sample controller don't support SSL -- The flowtable does not support the "normal processing" action + 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 affect on the datapath + flow table. This has no effect on the datapath. References ---------- @@ -190,10 +100,8 @@ References [2] OpenFlow Switch Specification. - [3] Installation Instructions: INSTALL - Contact ------- e-mail: info@openflowswitch.org -www: http://openflowswitch.org/alpha/ +www: http://openflowswitch.org/