Merge "Armoury Project Documentation"
[docs.git] / manuals / getting-started-guide / src / main / asciidoc / general_installation.adoc
1 == Getting and Installing OpenDaylight
2
3 === Downloading and installing OpenDaylight
4 The default distribution can be found on the OpenDaylight software
5 download page: http://www.opendaylight.org/software/downloads
6
7 The Karaf distribution has no features enabled by default. However, all
8 of the features are available to be installed.
9
10 NOTE: For compatibility reasons, you cannot enable all the features
11 simultaneously. We try to document known incompatibilities
12 <<_installing_the_components,below>>.
13
14 ==== Running the karaf distribution
15 To run the Karaf distribution:
16
17 . Unzip the zip file.
18 . Navigate to the directory.
19 . run `./bin/karaf`.
20
21 For Example:
22
23 [frame="none"]
24 |===
25 a|
26 ----
27 $ ls distribution-karaf-0.3.0-Lithium.zip
28 distribution-karaf-0.3.0-Lithium.zip
29 $ unzip distribution-karaf-0.3.0-Lithium.zip
30 Archive:  distribution-karaf-0.3.0-Lithium.zip
31    creating: distribution-karaf-0.3.0-Lithium/
32    creating: distribution-karaf-0.3.0-Lithium/configuration/
33    creating: distribution-karaf-0.3.0-Lithium/data/
34    creating: distribution-karaf-0.3.0-Lithium/data/tmp/
35    creating: distribution-karaf-0.3.0-Lithium/deploy/
36    creating: distribution-karaf-0.3.0-Lithium/etc/
37    creating: distribution-karaf-0.3.0-Lithium/externalapps/
38 ...
39   inflating: distribution-karaf-0.3.0-Lithium/bin/start.bat
40   inflating: distribution-karaf-0.3.0-Lithium/bin/status.bat
41   inflating: distribution-karaf-0.3.0-Lithium/bin/stop.bat
42 $ cd distribution-karaf-0.3.0-Lithium
43 $ ./bin/karaf
44
45     ________                       ________                .__  .__       .__     __
46     \_____  \ ______   ____   ____ \______ \ _____  ___.__.\|  \| \|__\| ____ \|  \|___/  \|_
47      /   \|   \\____ \_/ __ \ /    \ \|    \|  \\__  \<   \|  \|\|  \| \|  \|/ ___\\|  \|  \   __\
48     /    \|    \  \|_> >  ___/\|   \|  \\|    `   \/ __ \\___  \|\|  \|_\|  / /_/  >   Y  \  \|
49     \_______  /   __/ \___  >___\|  /_______  (____  / ____\|\|____/__\___  /\|___\|  /__\|
50             \/\|__\|        \/     \/        \/     \/\/            /_____/      \/
51
52
53 ----
54 * Press *tab* for a list of available commands
55 * Typing *[cmd] --help* will show help for a specific command.
56 * Press *ctrl-d* or type *system:shutdown* or *logout* to shutdown OpenDaylight.
57 |===
58
59 === Installing the components
60
61 The section describes a list of components in OpenDaylight Lithium and
62 the relevant Karaf feature to install in order to enable that component.
63
64 To install a feature use the following command:
65 -----
66 feature:install
67 -----
68 For Example:
69
70 -----
71 feature:install <feature-name>
72 -----
73
74 Multiple features can be installed using the following command:
75
76 -----
77 feature:install <feature1-name> <feature2-name> ... <featureN-name>
78 -----
79
80 .Lithium Components
81 [options="header",cols="18%,50%,18%,14%"]
82 |====
83 | Component Name                     | Component Description | Karaf feature name | Compatibility
84 | ALTO                               | Enable support for Application-Layer Traffic Optimization | odl-alto-all | self+all
85 | BGP                                | Enables support for BGP | odl-bgpcep-bgp-all | all
86 | CAPWAP                             | Enables control of supported wireless APs | odl-capwap-ac-rest | all
87 | DIDM                               | Device Identification and Driver Management | odl-didm-identification-api, odl-didm-identification, and odl-didm-drivers-api | all
88 | Group Based Policy                 | Enable Endpoint Registry and Policy Repository REST APIs and associated functionality for Group Based Policy | odl-groupbasedpolicy-ofoverlay | self+all
89 | Internet of Things Data Management | Enables support for the oneM2M specification | odl-iotdm-onem2m | all
90 | L2 Switch                          | Provides L2 (Ethernet) forwarding across connected OppenFlow switches and support for host tracking | odl-l2switch-switch-ui | self+all
91 | LACP                               | Enable support for the Link Aggregation Control Protocol | odl-lacp-ui | self+all
92 | LISP Flow Mapping                  | Enable LISP control plane services including the mapping system services REST API and LISP protocol SB plugin | odl-lispflowmapping-all | all
93 | MD-SAL Clustering                  | Provides support for operating a cluster of OpenDaylight instances | odl-mdsal-clustering | special
94 | NETCONF over SSH                   | Provides support to manage NETCONF-enabled devices over SSH | odl-netconf-connector-ssh | all
95 | Network Intent Composition         | Enable support for high-level network control via intents | odl-nic-core | self+all
96 | OVS Management                     | Enables OVS management using OVSDB plugin and its associated OVSDB northbound APIs | odl-ovsdb-all | all
97 | OVSDB OpenStack Neutron            | OpenStack Network Virtualization using OpenDaylight's OVSDB support | odl-ovsdb-openstack | self+all
98 | OpFlex                             | Enables support for the OpFlex protocol | special (see user/developer guide) | all
99 | OpenFlow Flow Programming          | Enables discovery and control of OpenFlow switches and the topology between them | odl-openflowplugin-flow-services-ui | all
100 | OpenFlow Table Type Patterns       | Allows OpenFlow Table Type Patterns to be manually associated with network elements | odl-ttp-all | all
101 | PCEP                               | Enables support for PCEP | odl-bgpcep-pcep-all | all
102 | Packetcable PCMM                   | Enables flow-based dynamic QoS management of CMTS using in the DOCSIS infrastructure | odl-packetcable-all | self+all
103 | Packetcable Policy Server          | Enables support for the PacketCable policy server | odl-packetcable-policy-server-all | self+all
104 | RESTCONF API Support               | Enables REST API access to the MD-SAL including the data store | odl-restconf | all
105 | SDN Interface                      | Provides support for interaction and sharing of state between (non-clustered) OpenDaylight instances | odl-sdninterfaceapp-all | all
106 | SFC over L2                        | Supports implementing SFC using Layer 2 forwarding | odl-sfcofl2 | self+all
107 | SFC over LISP                      | Supports implementing SFC using LISP | odl-sfclisp | all
108 | SFC over REST                      | Supports implementing SFC using REST CRUD operations on network elements | odl-sfc-sb-rest | all
109 | SFC over VXLAN                     | Supports implementing SFC using VXLAN tunnels | odl-sfc-ovs | self+all
110 | SNMP Plugin                        | Enables monitoring and control of network elements via SNMP | odl-snmp-plugin | all
111 | SNMP4SDN                           | Enables OpenFlow-like control of network elements via SNMP | odl-snmp4sdn-all | all
112 | SSSD Federated Authentication      | Enable support for federated authentication using SSSD | odl-aaa-sssd-plugin | all
113 | Secure Networking Bootstrap        | Defines a SNBI domain and associated white lists of devices to be accommodated to the domain | odl-snbi-all | self+all
114 | Secure tag eXchange Protocol (SXP) | Enables distribution of shared tags to network devices | odl-sxp-controller | all
115 | Service Flow Chaining (SFC)        | Enables support for applying chains of network services to certain traffic | odl-sfc-all | all
116 | Time Series Data Repository (TSDR) | Enables historical tracking of OpenFlow statistics | odl-tsdr-all | self+all
117 | Topology Processing Framework      | Enables merged and filtered views of network topologies | odl-topoprocessing-framework | all
118 | Unified Secure Channel (USC)       | Enables support for secure, remote connections to network devices | odl-usc-channel-ui | all
119 | VPN Service                        | Enables support for OpenStack VPNaaS | odl-vpnservice-core | all
120 | VTN Manager                        | Enables Virtual Tenant Network support | odl-vtn-manager-rest | self+all
121 | VTN Manager Neutron                | Enables OpenStack Neutron support of VTN Manager | odl-vtn-manager-neutron | self+all
122 |====
123
124 In the table a compatibility value of *all* means that it can be run with other features. A value of *self+all* indicates that the feature can be installed with other features with a value of *all*, but may interact badly other features with a value of *self+all*.
125
126 .Experimental Lithium Components
127 [options="header",cols="18%,50%,18%,14%"]
128 |====
129 | Component Name                     | Component Description | Karaf feature name | Compatibility
130 | Persistence                        | Enables saving of data to external databases | odl-persistence-api | self+all
131 | Reservation                        | Enables bandwidth calendaring using the TL1 protocol | odl-reservation-models | all
132 |====
133
134 ==== Listing available features
135 To find the complete list of Karaf features, run the following command:
136
137 ----
138 feature:list
139 ----
140
141 To list the installed Karaf features, run the following command:
142
143 ----
144 feature:list -i
145 ----
146
147 // Commenting out this section until we can actually provide some content.
148 //
149 // === Verifying your installation
150 // TBD
151
152 === Installing support for REST APIs
153 Most components that offer REST APIs will automatically load the RESTCONF API Support
154 component, but if for whatever reason they seem to be missing, you can activate this
155 support by installing the `odl-restconf` feature.
156
157 // Commenting out this section until we can actually provide a tutorial that a
158 // user could follow
159 //
160 // === Making RESTCONF calls
161 // RESTCONF is a protocol that provides a programmatic interface over HTTP to access data that is defin
162 // ed in a YANG model and stored in data stores defined in the NETCONF protocol.
163 // RESTCONF protocol is implemented in `sal-rest-connector` artifact that is packed with the Karaf bundle.
164 // For more information on the RESTCONF protocol, refer to http://tools.ietf.org/html/draft-bierman-net
165 // conf-restconf-02
166 //
167 // RESTCONF allows access to datastores in the controller.
168 // The datastores available are:
169 //
170 // * config - contains data inserted using controller
171 // * operational - contains other data
172 //
173 // ==== Making a RESCONF call using cURL
174 //
175 // TBD
176
177 // Commenting this out as it appears to be out of date and there is already
178 // information about installing and using DLUX above.
179 //
180 //=== Installing the DLUX web interface
181 //
182 //The OpenDaylight web interface; DLUX, draws information from topology and host databases to display information about the topology of the network,
183 //flow statistics, host locations. You can either use DLUX as a stand-alone plug-in or integrate with OpenDaylight.
184 //To install DLUX as a standalone application, refer to  https://wiki.opendaylight.org/view/OpenDaylight_DLUX:Setup_and_Run
185 //To integrate with OpenDaylight you must enable DLUX Karaf feature. You can enable AD-SAL, MD-SAL and various other bundles within Karaf depending on the features you
186 //would like to access using DLUX. Each feature can be enabled or disabled separately.
187 //
188 //[IMPORTANT]
189 //Ensure that you have created a topology and enabled MD-SAL feature in the Karaf distribution before you use DLUX for network management.
190 //For more information about enabling the Karaf features for DLUX, refer to https://wiki.opendaylight.org/view/OpenDaylight_DLUX:DLUX_Karaf_Feature
191
192 === Installing MD-SAL clustering
193 The MD-SAL clustering feature has "special" compatibility criteria. You *must*
194 install clustering, before other features are installed. To install clustering,
195 run the following command on the Karaf CLI console:
196
197 ----
198 feature:install odl-mdsal-clustering
199 ----
200
201 // Commenting out this section until we can actually provide a tutorial that
202 // walks through getting everything set up. Maybe we should just point to the
203 // L2 Switch docs?
204 //
205 // === Getting started with OpenFlow and Mininet
206 //
207 // ==== Downloading and installing Mininet
208 //
209 // Mininet downloads are available at: http://mininet.org
210 //
211 // The OVS version must be 2.1 or earlier.
212 //
213 // The instructions for installation are available at: http://mininet.org.
214 //
215 // ===== Verifying mininet installation
216 // To verify your mininet installation run the following command:
217 // `test=pingall`
218 //
219 // ----
220 // odluser@odl-vm:~\$ sudo mn --test=pingall
221 // *** Creating network
222 // *** Adding controller
223 // *** Adding hosts:
224 // h1 h2
225 // *** Adding switches:
226 // s1
227 // *** Adding links:
228 // (h1, s1) (h2, s1)
229 // *** Configuring hosts
230 // h1 h2
231 // *** Starting controller
232 // *** Starting 1 switches
233 // s1 OVSswitch opts:
234 // *** Ping: testing ping reachability
235 // h1 -> h2
236 // h2 -> h1
237 // *** Results: 0% dropped (2/2 received)
238 // *** Stopping 1 switches
239 // s1 ..
240 // *** Stopping 2 hosts
241 // h1 h2
242 // *** Stopping 1 controllers
243 // c0
244 // *** Done
245 // completed in 0.541 seconds
246 // ----
247 //
248 // ==== Enabling the OpenFlow plugin and L2 Switch
249 //
250 // To enable these features, run:
251 //
252 // ----
253 // feature:install odl-l2switch-switch-ui
254 // ----
255 //
256 // This will install the OpenFlow plugin and the L2 Switch application.
257 //
258 // ==== Running Mininet using OpenDaylight as the controller
259 //
260 // TODO