1 Installation Instructions for OpenFlow Reference Release
3 This document describes how to build, install, and execute the
4 reference implementation of OpenFlow. Please send any comments to:
6 <info@openflowswitch.org>
11 The OpenFlow reference implementation includes three separate
12 OpenFlow switch implementations:
14 - The "userspace switch": This implements an OpenFlow switch
15 as a single user program (built as switch/switch). The
16 userspace switch is the easiest to build and use but it is
17 much less featureful than the other switch implementations.
19 - The "kernel-based switch": This divides the switch into a
20 "datapath" Linux kernel module (openflow_mod.o for Linux 2.4
21 or openflow_mod.ko for Linux 2.6) and a userspace program
22 (secchan). The kernel-based switch is faster than either of
23 the other two implementations but requires building and
24 installing a kernel module, which can sometimes be
27 - The "userspace datapath-based switch": This divides the
28 switch into a userspace "datapath" (built as
29 udatapath/udatapath) and the same userspace program used by
30 the kernel-based switch (secchan). The userspace
31 datapath-based switch is as featureful as the kernel-based
32 switch and it does not require building a kernel module, but
33 it is not as fast as the kernel-based switch and it is part
34 of the OpenFlow extensions distribution, not the main
35 OpenFlow distribution.
37 The reference implementation also contains a simple OpenFlow
38 controller (built as controller/controller) and a number of related
44 There are two principal ways to build and install this distribution:
46 - Using "configure" and "make" in the ordinary way. See
47 Building Conventionally below for detailed instructions.
49 - As a set of Debian packages. Refer to Building Debian
50 Packages, below, for instructions.
55 Regardless of how it is built, OpenFlow has a common set of
56 prerequisites. To compile the userspace programs in the OpenFlow
57 reference distribution, you will need the following software:
59 - A make program, e.g. GNU make
60 (http://www.gnu.org/software/make/). BSD make should also work.
62 - The GNU C compiler (http://gcc.gnu.org/). We generally test
63 with version 4.1 or 4.2.
65 - libssl, from OpenSSL (http://www.openssl.org/), is optional but
66 recommended. libssl is required to establish confidentiality
67 and authenticity in the connections among OpenFlow switches and
68 controllers. To enable, configure with --enable-ssl=yes
70 If you are working from a Git tree or snapshot (instead of from a
71 distribution tarball), or if you modify the OpenFlow build system, you
72 will also need the following software:
74 - Autoconf version 2.59 or later (http://www.gnu.org/software/autoconf).
76 - Automake version 1.10 or later (http://www.gnu.org/software/automake).
78 - pkg-config (http://pkg-config.freedesktop.org/wiki/). We test
84 To build Debian packages from the OpenFlow distribution, you will need
85 to install a number of Debian packages in addition to the base
86 prerequisites listed above. These additional prerequisites may be
87 found listed as "Build-Depends" in debian/control in the source tree.
88 To check that they are installed, first install the dpkg-dev package,
89 then run dpkg-checkbuilddeps from the top level of the OpenFlow source
92 To build Debian packages without being root, also install the
95 Kernel-Based Switch Prerequisites
96 ---------------------------------
98 The OpenFlow distribution also includes a Linux kernel module that can
99 be used to achieve higher switching performance. To compile the
100 kernel module, you must install the following in addition to the
101 software listed in the "Base Prerequisites" section above:
103 - A supported Linux kernel version. Please refer to README for a
104 list of supported versions.
106 The OpenFlow datapath requires bridging support (CONFIG_BRIDGE)
107 to be built as a kernel module. (This is common in kernels
108 provided by Linux distributions.) The bridge module must not be
109 loaded or in use. If the bridge module is running (check with
110 "lsmod | grep bridge"), you must remove it ("rmmod bridge")
111 before starting the datapath.
113 In kernels prior to 2.6.9, VLAN support (CONFIG_VLAN_8021Q) must
114 be compiled either directly or as a module. Failure to do this
115 will cause an error on module insertion due to the
116 "dev_change_flags" symbol being undefined.
118 - The correct version of GCC for the kernel that you are building
121 * To build a kernel module for a Linux 2.6 kernel, you need
122 the same version of GCC that was used to build that kernel
123 (usually version 4.0 or later).
125 * To build a kernel module for a Linux 2.4 kernel, you need an
126 earlier version of GCC, typically GCC 2.95, 3.3, or 3.4.
128 - A kernel build directory corresponding to the Linux kernel image
129 the module is to run on. Under Debian and Ubuntu, for example,
130 each linux-image package containing a kernel binary has a
131 corresponding linux-headers package with the required build
134 Building Conventionally
135 =======================
137 This section explains how to build and install the OpenFlow
138 distribution in the ordinary way using "configure" and "make".
140 0. Check that you have installed all the prerequisites listed above in
141 the Base Prerequisites section. If you want to compile the Linux
142 kernel module, also check that the prequisites listed under
143 Kernel-Based Switch Prequisites are installed.
145 1. In the top source directory, configure the package by running the
146 configure script. You can usually invoke configure without any
151 To use a specific C compiler for compiling OpenFlow user programs,
152 also specify it on the configure command line, like so:
154 % ./configure CC=gcc-4.2
156 To build the Linux kernel module, so that you can run the
157 kernel-based switch, add --with-l26 or --with-l24 option, or both,
158 to the configure script's command line. Refer to Building the
159 Linux Kernel-Based Switch, below, for more information.
161 The configure script accepts a number of other options and honors
162 additional environment variables. For a full list, invoke
163 configure with the --help option.
165 2. Run make in the top source directory:
169 The following binaries will be built:
171 - Switch executable: switch/switch.
173 - Secure channel executable: secchan/secchan.
175 - Controller executable: controller/controller.
177 - Datapath administration utility: utilities/dpctl.
179 - Runtime logging configuration utility: utilities/vlogconf.
181 - Miscellaneous utilities: utilities/ofp-discover,
184 - Tests: various binaries in tests/.
186 If your distribution includes the OpenFlow extensions, the
187 following additional binaries will be built:
189 - Userspace datapath: ext/udatapath/udatapath.
191 - ANSI terminal support for EZIO 16x2 LCD panel:
194 - Switch monitoring UI for small text displays:
195 ext/ezio/ofp-switchui.
197 If you passed --with-l26 to configure, "make" will also build the
198 following kernel modules:
200 - datapath/linux-2.6/openflow_mod.ko
202 - datapath/linux-2.6/hwtable_<table>_mod.ko for each <table>
203 specified on --enable-hw-tables (if any).
205 If you passed --with-l24 to configure, "make" will also build the
206 following kernel modules:
208 - datapath/linux-2.4/openflow_mod.o
210 - datapath/linux-2.6/hwtable_<table>_mod.o for each <table>
211 specified on --enable-hw-tables (if any).
213 3. Run "make install" to install the executables and manpages into the
214 running system, by default under /usr/local.
216 4. If you built kernel modules, you may load them with "insmod", e.g.:
219 % insmod datapath/linux-2.6/openflow_mod.ko
222 % insmod datapath/linux-2.4/compat24_mod.o
223 % insmod datapath/linux-2.4/openflow_mod.o
225 After you load the openflow module, you may load one hardware switch
226 table module (if any were built) to enable support for that hardware
229 The insmod program must be run as root. You may need to specify a
230 full path to insmod, e.g. /sbin/insmod. To verify that the modules
231 have been loaded, run "/sbin/lsmod" and check that openflow_mod is
234 4. Test the userspace programs, as described under Testing Userspace
237 5. If you built the kernel module, test the kernel-based switch, as
238 described under Testing the Kernel-Based Implementation below.
240 Building the Linux Kernel-Based Switch
241 --------------------------------------
243 To build the kernel module, follow the build process described above,
244 but pass the location of the kernel build directory as an additional
245 argument to the configure script, as described under step 1 in that
246 section. Specify the location on --with-l26 for Linux 2.6, --with-l24
247 for Linux 2.4. For example, to build for a running instance of Linux
250 % ./configure --with-l26=/lib/modules/`uname -r`/build
252 To build for a running instance of Linux 2.4:
254 % ./configure --with-l24=/lib/modules/`uname -r`/build
256 If you wish to build OpenFlow for an architecture other than the
257 architecture used for compilation, you may specify the kernel
258 architecture string using the KARCH variable when invoking the
259 configure script. For example, to build OpenFlow for MIPS with Linux
262 % ./configure --with-l24=/path/to/linux-2.4 KARCH=mips
264 If you have hardware that supports accelerated OpenFlow switching, and
265 you have obtained a hardware table module for your hardware and
266 extracted it into the OpenFlow reference distribution source tree,
267 then you may also enable building support for the hardware switching
268 table with --enable-hw-tables. For example, if your hardware
269 switching table is in a directory named datapath/hwtable-foomatic, you
270 could compile support for it with the running Linux 2.6 kernel like
273 % ./configure --with-l26=/lib/modules/`uname -r`/build \
274 --enable-hw-tables=foomatic
276 For more information about hardware table modules, please read
277 README.hwtables at the root of the OpenFlow distribution tree.
279 Building Debian Packages
280 ========================
282 Follow these instructions to build Debian packages for OpenFlow.
284 0. Check that you have installed all the prerequisites listed above in
285 the Base Prerequisites and Debian Prerequisites sections above.
287 1. In the top source directory, run the following command, as root:
291 Alternatively, if you installed the "fakeroot" package, you may run
292 dpkg-buildpackage as an ordinary user with the following syntax:
294 % dpkg-buildpackage -rfakeroot
296 The following packages will be built in the directory above the
299 - openflow-controller: The OpenFlow controller. Depends on
300 openflow-pki (see below).
302 - openflow-switch: Install this package on a machine that acts
303 as an OpenFlow userspace or kernel switch.
305 - openflow-datapath-source: Source code for OpenFlow's Linux
308 - openflow-pki: Public-key infrastructure for OpenFlow. Install
309 this package on a machine that acts as an OpenFlow PKI server
310 (see "Establishing a Public Key Infrastructure" below).
312 - openflow-common: Files and utilities required by more than one
313 of the above packages.
315 2. To set up an OpenFlow controller, install the openflow-controller
316 package and its dependencies. You may configure it by editing
317 /etc/default/openflow-controller, e.g. to enable non-SSL
318 connections, which are disabled by default. If you change the
319 default settings, you will need to restart the controller by
322 % /etc/init.d/openflow-controller restart
324 3. To set up an OpenFlow switch, install the openflow-switch package
325 and its dependencies. If it is to be a kernel-based switch, also
326 install openflow-datapath-source, then follow the instructions in
327 /usr/share/doc/openflow-datapath-source/README.Debian to build and
328 install the kernel module.
330 You may configure the switch one of the following ways:
332 - Completely by hand, as described under the Testing section
335 For the userspace switch, this is the only supported form of
338 - By editing /etc/default/openflow-switch. You must at least
339 configure some network devices, by uncommenting NETDEVS and
340 adding the appropriate devices to the list, e.g. NETDEVS="eth0
343 After you edit this file, you will need to start the switch by
346 % /etc/init.d/openflow-switch restart
348 This form of configuration is not supported for the userspace
351 - By running the ofp-switch-setup program. This interactive
352 program will walk you through all the steps of configuring an
353 OpenFlow switch, including configuration of SSL certificates.
354 Run it without arguments, as root:
358 This form of configuration is not supported for the userspace
364 The following sets of instructions show how to use the OpenFlow
365 reference implementation as a switch on a single machine. This can be
366 used to verify that the distribution built properly. For full
367 installation instructions, refer to the Installation section below.
372 These instructions use the OpenFlow userspace switch that runs as an
373 integrated userspace program.
375 1. Start the OpenFlow controller running in the background, by running
376 the "controller" program with a command like the following:
380 This command causes the controller to bind to port 6633 (the
381 default) awaiting connections from OpenFlow switches. See
382 controller(8) for details.
384 The "controller" program does not require any special privilege, so
385 you do not need to run it as root.
387 2. The "switch" program must run as root, so log in as root, or use a
388 program such as "su" to become root temporarily.
390 3. On the same machine, use the "switch" program to start an OpenFlow
391 switch, specifying network devices to use as switch ports on the -i
392 option as a comma-separated list, like so:
394 # switch tcp:127.0.0.1 -i eth1,eth2
396 The network devices that you specify should not have configured IP
399 4. The controller causes each switch that connects to it to act like a
400 learning Ethernet switch. Thus, devices plugged into the specified
401 network ports should now be able to send packets to each other, as
402 if they were plugged into ports on a conventional Ethernet switch.
404 Troubleshooting: if the commands above do not work, try using the -v
405 or --verbose option on the controller or switch commands, which will
406 cause a large amount of debug output from each program.
411 These instructions use the OpenFlow userspace datapath ("udatapath").
412 The udatapath program is part of the OpenFlow extensions repository,
413 which is not included in every OpenFlow distribution.
415 1. Start the OpenFlow controller running in the background, by running
416 the "controller" program with a command like the following:
418 # controller punix:/var/run/controller.sock &
420 This command causes the controller to bind to the specified Unix
421 domain socket, awaiting connections from OpenFlow switches. See
422 controller(8) for details.
424 The "controller" program does not require any special privilege, so
425 you do not need to run it as root.
427 2. The commands below must run as root, so log in as root, or use a
428 program such as "su" to become root temporarily.
430 3. Create a datapath instance running in the background. The command
431 below creates a datapath that listens for connections from secchan
432 on a Unix domain socket located in /var/run and services physical
435 # udatapath punix:/var/run/dp0.sock -i eth1,eth2 &
437 4. Run secchan to start the secure channel connecting the datapath and
440 # secchan unix:/var/run/controller.sock unix:/var/run/dp0.sock &
442 5. Devices plugged into the network ports specified in step 2 should
443 now be able to send packets to each other, as if they were plugged
444 into ports on a conventional Ethernet switch.
449 This section explains how to install OpenFlow in a network with one
450 controller and one or more switches, each of which runs on a separate
451 machine. Before you begin, you must decide on one of two ways for
452 each switch to reach the controller over the network:
454 - Use a "control network" that is completely separate from the
455 "data network" to be controlled ("out-of-band control"). The
456 location of the controller must be configured manually in this
459 All three switch implementations support only out-of-band
462 - Use the same network for control and for data ("in-band
463 control"). When in-band control is used, the location of the
464 controller may be configured manually or discovered
465 automatically. We will assume manual configuration here;
466 please refer to secchan(8) for instructions on setting up
467 controller discovery.
469 The userspace datapath-based and kernel-based switch
470 implementations support in-band control. The userspace switch
476 On the machine that is to be the OpenFlow controller, start the
477 "controller" program listening for connections from switches on TCP
478 port 6633 (the default), as shown below.
480 # controller -v ptcp:
482 (See controller(8) for more details)
484 Make sure the machine hosting the controller is reachable by the
487 Userspace Switch-Based Setup
488 ----------------------------
490 To set up an OpenFlow switch using the userspace switch, follow this
491 procedure. The userspace switch must be connected to the controller
492 over a "control network" that is physically separate from the one that
493 the switch and controller are controlling. (The kernel-based and
494 userspace datapath-based switches do not have this limitation.)
496 0. The commands below must run as root, so log in as root, or use a
497 program such as "su" to become root temporarily.
499 1. Use the "switch" program to start an OpenFlow switch, specifying
500 the IP address of the controller as the first argument to the
501 switch program, and the network devices to include in the switch as
502 arguments to the -i option. For example, if the controller is
503 running on host 192.168.1.2 port 6633 (the default port), and eth1
504 and eth2 are to be the switch ports, the switch invocation would
507 # switch tcp:127.0.0.1 -i eth1,eth2
509 The network devices that you specify should not have configured IP
512 2. The controller causes each switch that connects to it to act like a
513 learning Ethernet switch. Thus, devices plugged into the specified
514 network ports should now be able to send packets to each other, as
515 if they were plugged into ports on a conventional Ethernet switch.
517 Userspace Datapath-Based Setup
518 ------------------------------
520 On a machine that is to host an OpenFlow userspace datapath-based
521 switch, follow the procedure below. These instructions require the
522 OpenFlow userspace datapath ("udatapath"). The udatapath program is
523 part of the OpenFlow extensions repository, which is not included in
524 every OpenFlow distribution.
526 0. The commands below must run as root, so log in as root, or use a
527 program such as "su" to become root temporarily.
529 1. Create a datapath instance running in the background. The command
530 below creates a datapath that listens for connections from secchan
531 on a Unix domain socket located in /var/run, services physical
532 ports eth1 and eth2, and creates a TAP network device named "tap0"
533 for use in in-band control:
535 # udatapath punix:/var/run/dp0.sock -i eth1,eth2 --local-port=tap:tap0 &
537 (See udatapath(8) for details.)
539 If the switch will connect to the controller out-of-band, then the
540 --local-port option may be omitted, or --no-local-port may be
543 3. Arrange so that the switch can reach the controller over the
546 - If you are using out-of-band control, at this point make sure
547 that the switch machine can reach the controller over the
550 - If you are using in-band control with manual configuration, at
551 this point the TAP network device created in step 1 is not
552 bridged to any physical network, so the next step depends on
553 whether connectivity is required to configure the device's IP
556 * If the switch has a static IP address, you may configure
557 its IP address now, e.g.:
559 # ifconfig tap0 192.168.1.1
561 * If the switch does not have a static IP address, e.g. its
562 IP address is obtained dynamically via DHCP, then proceed
563 to step 4. The DHCP client will not be able to contact
564 the DHCP server until the secure channel has started up.
566 - If you are using in-band control with controller discovery, no
567 configuration is required at this point. You may proceed to
570 4. Run secchan to start the secure channel connecting the datapath to
571 a remote controller. If the controller is running on host
572 192.168.1.2 port 6633 (the default port), the secchan invocation
573 would look like this:
575 # secchan unix:/var/run/dp0.sock tcp:192.168.1.2
577 - If you are using in-band control with controller discovery, omit
578 the second argument to the secchan command.
580 - If you are using out-of-band control, add --out-of-band to the
583 5. If you are using in-band control with manual configuration, and the
584 switch obtains its IP address dynamically, then you may now obtain
585 the switch's IP address, e.g. by invoking a DHCP client. The
586 secure channel will only be able to connect to the controller after
587 an IP address has been obtained.
589 6. The secure channel should connect to the controller within a few
590 seconds. It may take a little longer if controller discovery is in
591 use, because the switch must then also obtain its own IP address
592 and the controller's location via DHCP.
594 Testing the Kernel-Based Implementation
595 ---------------------------------------
597 The OpenFlow kernel module must be loaded, as described under
598 "Building Conventionally", before it may be used.
600 0. The commands below must run as root, so log in as root, or use a
601 program such as "su" to become root temporarily.
603 1. Create a datapath instance. The command below creates a datapath
604 identified as nl:0 (see dpctl(8) for more detailed usage
609 (In principle, openflow_mod supports multiple datapaths within the
610 same host which would be identified as nl:1, nl:2, etc., but this
611 is rarely useful in practice.)
613 Creating datapath nl:0 also creates a new network device named of0.
614 This network device, called the datapath's "local port", will be
615 bridged to the physical switch ports by the secchan, for use in
618 If you built a support module for hardware accelerated OpenFlow
619 switching and you want to use it, you must load it before creating
620 the datapath with "dpctl adddp".
622 2. Use dpctl to attach the datapath to physical interfaces on the
623 machine. Say, for example, you want to create a trivial 2-port
624 switch using interfaces eth1 and eth2, you would issue the following
627 # dpctl addif nl:0 eth1
628 # dpctl addif nl:0 eth2
630 You can verify that the interfaces were successfully added by asking
631 dpctl to print the current status of datapath nl:0:
635 3. Arrange so that the switch can reach the controller over the
638 - If you are using out-of-band control, at this point make sure
639 that the switch machine can reach the controller over the
642 - If you are using in-band control, then at this point you must
643 configure the of0 network device created in step 1. This
644 device is not yet bridged to any physical network (because
645 secchan does that, and it is not yet running), so the next
646 step depends on whether connectivity is required to configure
647 the device's IP address:
649 * If the switch has a static IP address, you may configure
650 its IP address now, e.g.:
652 # ifconfig of0 192.168.1.1
654 * If the switch does not have a static IP address, e.g. its
655 IP address is obtained dynamically via DHCP, then proceed
656 to step 4. The DHCP client will not be able to contact
657 the DHCP server until the secure channel has started up.
659 - If you are using in-band control with controller discovery, no
660 configuration is required at this point. You may proceed to
663 4. Run secchan to start the secure channel connecting the datapath to
664 a remote controller. If the controller is running on host
665 192.168.1.2 port 6633 (the default port), the secchan invocation
666 would look like this:
668 # secchan nl:0 tcp:192.168.1.2
670 - If you are using in-band control with controller discovery, omit
671 the second argument to the secchan command.
673 - If you are using out-of-band control, add --out-of-band to the
676 5. If you are using in-band control with manual configuration, and the
677 switch obtains its IP address dynamically, then you may now obtain
678 the switch's IP address, e.g. by invoking a DHCP client. The
679 secure channel will only be able to connect to the controller after
680 an IP address has been obtained.
682 6. The secure channel should connect to the controller within a few
683 seconds. It may take a little longer if controller discovery is in
684 use, because the switch must then also obtain its own IP address
685 and the controller's location via DHCP.
690 Secure operation over SSL
691 -------------------------
693 The instructions above set up OpenFlow for operation over a plaintext
694 TCP connection. Production use of OpenFlow should use SSL[*] to
695 ensure confidentiality and authenticity of traffic among switches and
696 controllers. The source must be configured with --enable-ssl=yes to
697 build with SSL support.
699 To use SSL with OpenFlow, you must set up a public-key infrastructure
700 (PKI) including a pair of certificate authorities (CAs), one for
701 controllers and one for switches. If you have an established PKI,
702 OpenFlow can use it directly. Otherwise, refer to "Establishing a
703 Public Key Infrastructure" below.
705 To configure the controller to listen for SSL connections on port 6633
706 (the default), invoke it as follows:
708 # controller -v pssl: --private-key=PRIVKEY --certificate=CERT \
711 where PRIVKEY is a file containing the controller's private key, CERT
712 is a file containing the controller CA's certificate for the
713 controller's public key, and CACERT is a file containing the root
714 certificate for the switch CA. If, for example, your PKI was created
715 with the instructions below, then the invocation would look like:
717 # controller -v pssl: --private-key=ctl-privkey.pem \
718 --certificate=ctl-cert.pem --ca-cert=pki/switchca/cacert.pem
720 To configure a switch to connect to a controller running on port 6633
721 (the default) on host 192.168.1.2 over SSL, invoke secchan as follows:
723 # secchan -v DATAPATH ssl:192.168.1.2 --private-key=PRIVKEY \
724 --certificate=CERT --ca-cert=CACERT
726 where DATAPATH is the datapath to connect to (e.g. nl:0 or
727 unix:/var/run/dp0.sock), PRIVKEY is a file containing the switch's
728 private key, CERT is a file containing the switch CA's certificate for
729 the switch's public key, and CACERT is a file containing the root
730 certificate for the controller CA. If, for example, your PKI was
731 created with the instructions below, then the invocation would look
734 # secchan -v DATAPATH ssl:192.168.1.2 --private-key=sc-privkey.pem \
735 --certificate=sc-cert.pem --ca-cert=pki/controllerca/cacert.pem
737 [*] To be specific, OpenFlow uses TLS version 1.0 or later (TLSv1), as
738 specified by RFC 2246, which is very similar to SSL version 3.0.
739 TLSv1 was released in January 1999, so all current software and
740 hardware should implement it.
742 Establishing a Public Key Infrastructure
743 ----------------------------------------
745 If you do not have a PKI, the ofp-pki script included with OpenFlow
746 can help. To create an initial PKI structure, invoke it as:
748 which will create and populate a new PKI directory. The default
749 location for the PKI directory depends on how the OpenFlow tree was
750 configured (to see the configured default, look for the --dir option
751 description in the output of "ofp-pki --help").
753 The pki directory contains two important subdirectories. The
754 controllerca subdirectory contains controller certificate authority
755 related files, including the following:
757 - cacert.pem: Root certificate for the controller certificate
758 authority. This file must be provided to the switch or secchan
759 program with the --ca-cert option to enable it to authenticate
762 - private/cakey.pem: Private signing key for the controller
763 certificate authority. This file must be kept secret. There is
764 no need for switches or controllers to have a copy of it.
766 The switchca subdirectory contains switch certificate authority
767 related files, analogous to those in the controllerca subdirectory:
769 - cacert.pem: Root certificate for the switch certificate
770 authority. This file must be provided to the controller program
771 with the --ca-cert option to enable it to authenticate valid
774 - private/cakey.pem: Private signing key for the switch
775 certificate authority. This file must be kept secret. There is
776 no need for switches or controllers to have a copy of it.
778 After you create the initial structure, you can create keys and
779 certificates for switches and controllers with ofp-pki. To create a
780 controller private key and certificate in files named ctl-privkey.pem
781 and ctl-cert.pem, for example, you could run:
782 % ofp-pki req+sign ctl controller
783 ctl-privkey.pem and ctl-cert.pem would need to be copied to the
784 controller for its use at runtime (they could then be deleted from
785 their original locations). The --private-key and --certificate
786 options of controller, respectively, would point to these files.
788 Analogously, to create a switch private key and certificate in files
789 named sc-privkey.pem and sc-cert.pem, for example, you could run:
790 % ofp-pki req+sign sc switch
791 sc-privkey.pem and sc-cert.pem would need to be copied to the switch
792 for its use at runtime (they could then be deleted from their original
793 locations). The --private-key and --certificate options,
794 respectively, of switch and secchan would point to these files.
799 Please report problems to:
800 info@openflowswitch.org