BK Install Guide Opendaylight
BK Install Guide Opendaylight
BK Install Guide Opendaylight
ii
Beryllium
Beryllium
Table of Contents
1. Getting and Installing OpenDaylight ............................................................................ 1
Downloading and installing OpenDaylight ............................................................... 1
Installing the components ....................................................................................... 2
Installing support for REST APIs ............................................................................... 2
Installing MD-SAL clustering .................................................................................... 2
I. Getting to know OpenDaylight .................................................................................... 3
OpenDaylight Overview .......................................................................................... 5
2. Using the OpenDaylight User Interface (DLUX) .................................................... 6
Getting Started with DLUX ............................................................................. 6
Logging In ...................................................................................................... 6
Working with DLUX ........................................................................................ 6
Viewing Network Statistics .............................................................................. 7
Viewing Network Topology ............................................................................. 7
Interacting with the YANG-based MD-SAL datastore ....................................... 8
3. Running XSQL Console Commands and Queries ................................................. 15
XSQL Overview .............................................................................................. 15
Installing XSQL .............................................................................................. 15
XSQL Console Commands .............................................................................. 15
XSQL Queries ................................................................................................ 16
4. Setting Up Clustering ........................................................................................ 18
Clustering Overview ...................................................................................... 18
Single Node Clustering .................................................................................. 18
Multiple Node Clustering ............................................................................... 19
5. Security Considerations ...................................................................................... 24
Overview of OpenDaylight Security ............................................................... 24
OpenDaylight Security Resources ................................................................... 25
Deployment Recommendations ..................................................................... 25
Securing OSGi bundles ................................................................................... 26
Securing the Karaf container ......................................................................... 26
Securing Southbound Plugins ........................................................................ 27
Securing OpenDaylight using AAA ................................................................. 27
Security Considerations for Clustering ............................................................ 28
II. Project-specific Installation Guides ............................................................................. 29
6. OpFlex agent-ovs Install Guide ........................................................................... 31
Required Packages ........................................................................................ 31
Host Networking Configuration ..................................................................... 31
OVS Bridge Configuration ............................................................................. 32
Agent Configuration ..................................................................................... 33
7. OVSDB OpenStack Installation Guide ................................................................. 36
Overview ....................................................................................................... 36
Preparing for Installation ............................................................................... 36
Installing OVSDB OpenStack .......................................................................... 36
Verifying your Installation ............................................................................. 37
Uninstalling OVSDB OpenStack ...................................................................... 37
8. OVSDB Service Function Chaining Installation Guide ........................................... 38
Overview ....................................................................................................... 38
Preparing for Installation ............................................................................... 38
Installing OVSDB Service Function Chaining ................................................... 38
iii
Beryllium
iv
38
38
40
40
40
40
40
40
42
42
42
42
42
43
43
43
43
44
44
45
45
45
46
46
46
46
48
48
49
49
50
51
Beryllium
List of Figures
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.
2.9.
Beryllium
List of Tables
3.1. Supported XSQL Console Commands ...................................................................... 15
3.2. Supported XSQL Query Criteria Operators .............................................................. 16
vi
Beryllium
Note
For compatibility reasons, you cannot enable all the features simultaneously.
We try to document known incompatibilities below.
1
2
2
2
Beryllium
\_______ /
__/ \___ >___| /_______ (____ / ____||____/__\___ /|___| /__|
\/|__|
\/
\/
\/
\/\/
/_____/
\/
For Example:
feature:install <feature-name>
Beryllium
Table of Contents
OpenDaylight Overview .................................................................................................. 5
2. Using the OpenDaylight User Interface (DLUX) ............................................................ 6
Getting Started with DLUX ..................................................................................... 6
Logging In .............................................................................................................. 6
Working with DLUX ................................................................................................ 6
Viewing Network Statistics ...................................................................................... 7
Viewing Network Topology ..................................................................................... 7
Interacting with the YANG-based MD-SAL datastore ............................................... 8
3. Running XSQL Console Commands and Queries ......................................................... 15
XSQL Overview ...................................................................................................... 15
Installing XSQL ...................................................................................................... 15
XSQL Console Commands ...................................................................................... 15
XSQL Queries ........................................................................................................ 16
4. Setting Up Clustering ................................................................................................ 18
Clustering Overview .............................................................................................. 18
Single Node Clustering .......................................................................................... 18
Multiple Node Clustering ....................................................................................... 19
5. Security Considerations .............................................................................................. 24
Overview of OpenDaylight Security ....................................................................... 24
OpenDaylight Security Resources ........................................................................... 25
Deployment Recommendations ............................................................................. 25
Securing OSGi bundles ........................................................................................... 26
Securing the Karaf container ................................................................................. 26
Securing Southbound Plugins ................................................................................ 27
Securing OpenDaylight using AAA ......................................................................... 27
Security Considerations for Clustering .................................................................... 28
Beryllium
OpenDaylight Overview
The OpenDaylight project is a collaborative open source project that aims to accelerate
adoption of Software-Defined Networking (SDN) and Network Functions Virtualization
(NFV) with a transparent approach that fosters new innovation.
OpenDaylight mainly consists of software designed to be run on top of a Java Virtual
Machine (JVM) and can be run on any operating system and hardware as there is a Java
Runtime Environment (JRE) available for it.
For a more detailed information about OpenDaylight, see the and OpenDaylight User Guie,
OpenDaylight Developer Guide.
Beryllium
6
6
6
7
7
8
This section introduces you to the OpenDaylight User Experience (DLUX) application.
Logging In
To log in to DLUX, after installing the application:
1. Open a browser and enter the login URL http://<your-karaf-ip>:8181/index.html in your
browser (Chrome is recommended).
2. Login to the application with your username and password credentials.
Note
OpenDaylights default credentials are admin for both the username and
password.
Note
To make sure topology displays all the details, enable the odl-l2switch-switch
feature in Karaf.
DLUX has other applications such as node, yang UI and those apps wont show up, until
you enable their features odl-dlux-node and odl-dlux-yangui respectively in the Karaf
distribution.
6
Beryllium
Figure2.1.DLUX Modules
Note
If you install your application in dlux, they will also show up on the left hand
navigation after browser page refresh.
Beryllium
Note
DLUX does not allow for editing or adding topology information. The
topology is generated and edited in other modules, e.g., the OpenFlow plugin.
OpenDaylight stores this information in the MD-SAL datastore where DLUX can
read and display it.
To view network topology:
1. Select Topology on the left pane. You will view the graphical representation on the right
pane. In the diagram blue boxes represent the switches, the black represents the hosts
available, and lines represents how the switches and hosts are connected.
2. Hover your mouse on hosts, links, or switches to view source and destination ports.
3. Zoom in and zoom out using mouse scroll to verify topology for larger topologies.
Figure2.2.Topology Module
Beryllium
Figure2.3.Yang UI
Note
Not every subAPI can call every function. For example, subAPIs in the
operational store have GET functionality only.
Inputs can be filled from OpenDaylight when existing data from OpenDaylight is
displayed or can be filled by user on the page and sent to OpenDaylight.
Buttons under the API tree are variable. It depends on subAPI specifications. Common
buttons are:
GET to get data from OpenDaylight,
PUT and POST for sending data to OpenDaylight for saving
DELETE for sending data to OpenDaylight for deleting.
You must specify the xpath for all these operations. This path is displayed in the same
row before buttons and it may include text inputs for specific path element identifiers.
Beryllium
3. The bottom part of the right pane displays inputs according to the chosen subAPI.
Lists are handled as a special case. For example, a device can store multiple flows. In
this case "flow" is name of the list and every list element is identified by a unique key
value. Elements of a list can, in turn, contain other lists.
In Yang UI, each list element is rendered with the name of the list it belongs to, its key,
its value, and a button for removing it from the list.
10
Beryllium
4. After filling in the relevant inputs, click the Show Preview button under the API tree to
display request that will be sent to OpenDaylight. A pane is displayed on the right side
with text of request when some input is filled.
11
Beryllium
12
Beryllium
3. In the YANG-based data store all elements of a list must have a unique key. If you try to
assign two or more elements the same key, a warning icon ! is displayed near their name
buttons.
4. When the list contains at least one list element, after the + icon, there are buttons to
select each individual list element. You can choose one of them by clicking on it. In
13
Beryllium
addition, to the right of the list name, there is a button which will display a vertically
scrollable pane with all the list elements.
14
Beryllium
15
15
15
16
XSQL Overview
XSQL is an XML-based query language that describes simple stored procedures which parse
XML data, query or update database tables, and compose XML output. XSQL allows you to
query tree models like a sequential database. For example, you could run a query that lists
all of the ports configured on a particular module and their attributes.
The following sections cover the XSQL installation process, supported XSQL commands, and
the way to structure queries.
Installing XSQL
To run commands from the XSQL console, you must first install XSQL on your system:
1. Navigate to the directory in which you unzipped OpenDaylight
2. Start Karaf:
./bin/karaf
3. Install XSQL:
feature:install odl-mdsal-xsql
Description
15
Beryllium
list vtables
Lists the schema node containers that are currently installed. Whenever an
OpenDaylight module is installed, its YANG model is placed in the schema context.
At that point, the XSQL receives a notification, confirms that the modules YANG
model resides in the schema context and then maps the model to XSQL by setting
up the necessary vtables and vfields. This command is useful when you need to
determine vtable information for a query.
Lists the vfields present in a specific vtable. This command is useful when you need
to determine vfields information for a query.
When the ODL server is behind a firewall, and the JDBC client cannot connect to
the JDBC server, run this command to start the client as a server and establish a
connection.
exit
tocsv
filename <filename>
Specifies the .tocsv file to which the query data is exported. If you do not specify a
value for this option when the toccsv option is enabled, the filename for the query
data file is generated automatically.
XSQL Queries
You can run a query to extract information that meets the criteria you specify using the
information provided by the list vtables and list vfields <vtable name> commands. Any
query you run should be structured as follows:
select <vfields you want to search for, separated by a comma and a space> from <vtables
you want to search in, separated by a comma and a space> where <criteria> *<criteria
operator>;*
For example, if you want to search the nodes/node ID field in the nodes/node-connector
table and find every instance of the Hardware-Address object that contains BA in its text
string, enter the following query:
select nodes/node.ID from nodes/node-connector where Hardware-Address like
'%BA%';
Description
!=
like
Lists results that contain the substring you specify. For example, if you specify like %BC%, every
string that contains that particular substring is displayed.
<
Lists results that are less than the value you specify.
>
Lists results that are more than the value you specify.
and
or
Lists results that match either of the two values you specify.
>=
Lists results that are more than or equal to the value you specify.
Lists results that are less than or equal to the value you specify.
is null
not null
skip
Use this operator to list matching results from a child node, even if its parent node does not
meet the specified criteria. See the following example for more information.
16
Beryllium
17
Beryllium
4. Setting Up Clustering
Table of Contents
Clustering Overview ...................................................................................................... 18
Single Node Clustering .................................................................................................. 18
Multiple Node Clustering ............................................................................................... 19
Clustering Overview
Clustering is a mechanism that enables multiple processes and programs to work together
as one entity. For example, when you search for something on google.com, it may seem
like your search request is processed by only one web server. In reality, your search request
is processed by may web servers connected in a cluster. Similarly, you can have multiple
instances of OpenDaylight working together as one entity.
Advantages of clustering are:
Scaling: If you have multiple instances of OpenDaylight running, you can potentially do
more work and store more data than you could with only one instance. You can also
break up your data into smaller chunks (shards) and either distribute that data across the
cluster or perform certain operations on certain members of the cluster.
High Availability: If you have multiple instances of OpenDaylight running and one of
them crashes, you will still have the other instances working and available.
Data Persistence: You will not lose any data stored in OpenDaylight after a manual
restart or a crash.
The following sections describe how to set up clustering on both individual and multiple
OpenDaylight instances.
Note
This will enabled the cluster-ready version of the MD-SAL data store, but will
not actually create a cluster of multiple instances. The result is that you will get
data persistence, but not the scaling or high availability advantages.
18
Beryllium
Deployment Considerations
To implement clustering, the deployment considerations are as follows:
To set up a cluster with multiple nodes, we recommend that you use a minimum of three
machines. You can set up a cluster with just two nodes. However, if one of the two
nodes fail, the cluster will not be operational.
Note
This is because clustering in OpenDaylight requires a majority of the nodes to
be up and one node cannot be a majority of two nodes.
Every device that belongs to a cluster needs to have an identifier. OpenDaylight uses the
nodes role for this purpose. After you define the first nodes role as member-1 in the
akka.conf file, OpenDaylight uses member-1 to identify that node.
Data shards are used to contain all or a certain segment of a OpenDaylights MD-SAL
datastore. For example, one shard can contain all the inventory data while another shard
contains all of the topology data.
If you do not specify a module in the modules.conf file and do not specify a shard
in module-shards.conf, then (by default) all the data is placed in the default
shard (which must also be defined in module-shards.conf file). Each shard has
replicas configured. You can specify the details of where the replicas reside in moduleshards.conf file.
If you have a three node cluster and would like to be able to tolerate any single node
crashing, a replica of every defined data shard must be running on all three cluster
nodes.
Note
This is because OpenDaylights clustering implementation requires a majority
of the defined shard replicas to be running in order to function. If you define
data shard replicas on two of the cluster nodes and one of those nodes goes
down, the corresponding data shards will not function.
If you have a three node cluster and have defined replicas for a data shard on each
of those nodes, that shard will still function even if only two of the cluster nodes are
running. Note that if one of those remaining two nodes goes down, the shard will not be
operational.
It is recommended that you have multiple seed nodes configured. After a cluster member
is started, it sends a message to all of its seed nodes. The cluster member then sends a
join command to the first seed node that responds. If none of its seed nodes reply, the
cluster member repeats this process until it successfully establishes a connection or it is
shut down.
19
Beryllium
After a node is unreachable, it remains down for configurable period of time (10
seconds, by default). Once a node goes down, you need to restart it so that it can rejoin
the cluster. Once a restarted node joins a cluster, it will synchronize with the lead node
automatically.
Note
The value you need to specify will be different for each node in the
cluster.
b. Find the following lines and replace 127.0.0.1 with the hostname or IP address of any
of the machines that will be part of the cluster:
cluster {
seed-nodes = ["akka.tcp://[email protected]:2550"]
c. Find the following section and specify the role for each member node. Here we assign
the first node with the member-1 role, the second node with the member-2 role, and
the third node with the member-3 role:
roles = [
"member-1"
]
Note
This step should use a different role on each node.
d. Open the configuration/initial/module-shards.conf file and update the replicas so that
each shard is replicated to all three nodes:
20
Beryllium
replicas = [
"member-1",
"member-2",
"member-3"
]
7. Enable clustering by running the following command at the Karaf command line:
feature:install odl-mdsal-clustering
OpenDaylight should now be running in a three node cluster. You can use any of the three
member nodes to access the data residing in the datastore.
21
Beryllium
send-buffer-size = 52428800
receive-buffer-size = 52428800
}
}
cluster {
seed-nodes = ["akka.tcp://[email protected]:2550"]
auto-down-unreachable-after = 10s
roles = [
"member-1"
]
}
}
}
odl-cluster-rpc {
bounded-mailbox {
mailbox-type = "org.opendaylight.controller.cluster.common.actor.
MeteredBoundedMailbox"
mailbox-capacity = 1000
mailbox-push-timeout-time = 100ms
}
metric-capture-enabled = true
akka {
loglevel = "INFO"
loggers = ["akka.event.slf4j.Slf4jLogger"]
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
log-remote-lifecycle-events = off
netty.tcp {
hostname = "10.194.189.96"
port = 2551
}
}
cluster {
seed-nodes = ["akka.tcp://[email protected]:2551"]
auto-down-unreachable-after = 10s
}
}
}
22
replicas = [
"member-1",
"member-2",
"member-3"
]
}
]
},
{
name = "topology"
shards = [
{
name="topology"
replicas = [
"member-1",
"member-2",
"member-3"
]
}
]
},
{
name = "inventory"
shards = [
{
name="inventory"
replicas = [
"member-1",
"member-2",
"member-3"
]
}
]
},
{
name = "toaster"
shards = [
{
name="toaster"
replicas = [
"member-1",
"member-2",
"member-3"
]
}
]
}
]
23
Beryllium
Beryllium
5. Security Considerations
Table of Contents
Overview of OpenDaylight Security ...............................................................................
OpenDaylight Security Resources ...................................................................................
Deployment Recommendations .....................................................................................
Securing OSGi bundles ...................................................................................................
Securing the Karaf container .........................................................................................
Securing Southbound Plugins ........................................................................................
Securing OpenDaylight using AAA .................................................................................
Security Considerations for Clustering ............................................................................
24
25
25
26
26
27
27
28
This document discusses the various security issues that might affect OpenDaylight. The
document also lists specific recommendations to mitigate security risks.
This document also contains information about the corrective steps you can take if you
discover a security issue with OpenDaylight, and if necessary, contact the Security Response
Team, which is tasked with identifying and resolving security threats.
24
Beryllium
Note
While both previous advantages improve security, they also make
an OpenDaylight deployment an attractive target for attack making
understanding these security considerations even more important.
The ability to more rapidly evolve southbound protocols and how they are used provides
more and faster mechanisms to enact appropriate security mitigations and remediations.
OpenDaylight is built from OSGi bundles and the Karaf Java container. Both Karaf and
OSGi provide some level of isolation with explicit code boundaries, package imports,
package exports, and other security-related features.
OpenDaylight has a history of rapidly addressing known vulnerabilities and a well-defined
process for reporting and dealing with them.
Deployment Recommendations
We recommend that you follow the deployment guidelines in setting up OpenDaylight to
minimize security threats.
The default credentials should be changed before deploying OpenDaylight.
OpenDaylight should be deployed in a private network that cannot be accessed from the
internet.
Separate the data network (that connects devices using the network) from the
management network (that connects the network devices to OpenDaylight).
Note
Deploying OpenDaylight on a separate, private management network
does not eliminate threats, but only mitigates them. By construction, some
messages must flow from the data network to the management network,
e.g., OpenFlow packet_in messages, and these create an attack surface
even if it is a small one.
Implement an authentication policy for devices that connect to both the data and
management network. These are the devices which bridge, likely untrusted, traffic from
the data network to the management network.
25
Beryllium
Beryllium
The remote management capabilities are present in Apache Karaf by default, however they
can be disabled by using various configuration alterations. These configuration options may
be applied to the OpenDaylight Karaf distribution.
Note
Refer to the following list of publications for more information on
implementing security for the Karaf container.
For role-based JMX administration, refer to http://karaf.apache.org/manual/latest/usersguide/monitoring.html.
For remote SSH access configuration, refer to http://karaf.apache.org/manual/latest/
users-guide/remote.html.
For WebConsole access, refer to http://karaf.apache.org/manual/latest/users-guide/
webconsole.html.
For Karaf security features, refer to http://karaf.apache.org/manual/latest/developersguide/security-framework.html.
Beryllium
28
Beryllium
Table of Contents
6. OpFlex agent-ovs Install Guide ...................................................................................
Required Packages ................................................................................................
Host Networking Configuration .............................................................................
OVS Bridge Configuration .....................................................................................
Agent Configuration .............................................................................................
7. OVSDB OpenStack Installation Guide .........................................................................
Overview ...............................................................................................................
Preparing for Installation .......................................................................................
Installing OVSDB OpenStack ..................................................................................
Verifying your Installation .....................................................................................
Uninstalling OVSDB OpenStack ..............................................................................
8. OVSDB Service Function Chaining Installation Guide ..................................................
Overview ...............................................................................................................
Preparing for Installation .......................................................................................
Installing OVSDB Service Function Chaining ...........................................................
Verifying your Installation .....................................................................................
Uninstalling OVSDB Service Function Chaining .......................................................
9. OVSDB NetVirt Hardware VTEP Installation Guide .....................................................
Overview ...............................................................................................................
Preparing for Installation .......................................................................................
Installing OVSDB NetVirt Hardware VTEP ..............................................................
Verifying your Installation .....................................................................................
Uninstalling OVSDB NetVirt Hardware VTEP ..........................................................
10. TSDR H2 Default Datastore Installation Guide ..........................................................
Overview ...............................................................................................................
Pre Requisites for Installing TSDR with default H2 datastore ...................................
Preparing for Installation .......................................................................................
Installing TSDR with default H2 datastore .............................................................
Verifying your Installation .....................................................................................
Post Installation Configuration ..............................................................................
Upgrading From a Previous Release .......................................................................
Uninstalling TSDR with default H2 datastore .........................................................
11. TSDR HBase Data Store Installation Guide ................................................................
Overview ...............................................................................................................
Prerequisites for Installing TSDR HBase Data Store .................................................
Preparing for Installation .......................................................................................
Installing TSDR HBase Data Store ..........................................................................
Verifying your Installation .....................................................................................
Post Installation Configuration ..............................................................................
Upgrading From a Previous Release .......................................................................
Uninstalling HBase Data Store ...............................................................................
12. VTN Installation Guide .............................................................................................
Overview ...............................................................................................................
Preparing for Installation .......................................................................................
Installing VTN ........................................................................................................
Verifying your Installation .....................................................................................
Uninstalling VTN ...................................................................................................
30
31
31
31
32
33
36
36
36
36
37
37
38
38
38
38
38
38
40
40
40
40
40
40
42
42
42
42
42
43
43
43
43
44
44
45
45
45
46
46
46
46
48
48
49
49
50
51
Beryllium
31
31
32
33
Required Packages
Youll need to install the following packages and their dependencies:
libuv
openvswitch-gbp
openvswitch-gbp-lib
openvswitch-gbp-kmod
libopflex
libmodelgbp
agent-ovs
Packages are available for Red Hat Enterprise Linux 7 and Ubuntu 14.04 LTS. Some of the
examples below are specific to RHEL7 but you can run the equivalent commands for upstart
instead of systemd.
Note that many of these steps may be performed automatically if youre deploying this
along with a larger orchestration system.
31
Beryllium
Next, create the infrastructure interface using the infrastructure VLAN (4093 by default).
Well need to create a vlan subinterface of your uplink interface, the configure DHCP
on that interface. Run the following commands. Be sure to replace the variable values if
needed. If youre not using NIC teaming, replace the variable team0 below
UPLINK_IFACE=team0
INFRA_VLAN=4093
nmcli connection add type vlan ifname $UPLINK_IFACE.$INFRA_VLAN dev
$UPLINK_IFACE id $INFRA_VLAN
nmcli connection mod vlan-$UPLINK_IFACE.$INFRA_VLAN \
ethernet.mtu 1600 ipv4.routes '224.0.0.0/4 0.0.0.0 1000'
sed "s/CLIENT_ID/01:$(ip link show $UPLINK_IFACE | awk '/ether/ {print $2}')/"
\
> /etc/dhcp/dhclient-$UPLINK_IFACE.$INFRA_VLAN.conf <<EOF
send dhcp-client-identifier CLIENT_ID;
request subnet-mask, domain-name, domain-name-servers, host-name;
EOF
If you were successful, you should be able to see an IP address when you run:
ip addr show dev $UPLINK_IFACE.$INFRA_VLAN
32
Beryllium
Next, we can create an OVS bridge (you may wish to use a different bridge name):
# ovs-vsctl add-br br0
# ovs-vsctl show
34aa83d7-b918-4e49-bcec-1b521acd1962
Bridge "br0"
Port "br0"
Interface "br0"
type: internal
ovs_version: "2.3.90"
Agent Configuration
Before enabling the agent, well need to edit its configuration file, which is located at "/etc/
opflex-agent-ovs/opflex-agent-ovs.conf".
First, well configure the Opflex protocol parameters. If youre using an ACI fabric, youll
need the OpFlex domain from the ACI configuration, which is the name of the VMM
domain you mapped to the interface for this hypervisor. Set the "domain" field to this
value. Next, set the "name" field to a hostname or other unique identifier for the VM host.
Finally, set the "peers" list to contain the fixed static anycast peer address of 10.0.0.30 and
port 8009. Here is an example of a completed section (bold text shows areas youll need to
modify):
"opflex": {
// The globally unique policy domain for this agent.
"domain": "[CHANGE ME]",
// The unique name in the policy domain for this agent.
"name": "[CHANGE ME]",
// a list of peers to connect to, by hostname and port. One
// peer, or an anycast pseudo-peer, is sufficient to bootstrap
// the connection without needing an exhaustive list of all
// peers.
"peers": [
{"hostname": "10.0.0.30", "port": 8009}
],
33
Beryllium
"ssl": {
// SSL mode. Possible values:
// disabled: communicate without encryption
// encrypted: encrypt but do not verify peers
// secure: encrypt and verify peer certificates
"mode": "encrypted",
// The path to a directory containing trusted certificate
// authority public certificates, or a file containing a
// specific CA certificate.
"ca-store": "/etc/ssl/certs/"
}
},
Next, configure the appropriate policy renderer for the ACI fabric. Youll want to use a
stitched-mode renderer. Youll need to configure the bridge name and the uplink interface
name. The remote anycast IP address will need to be obtained from the ACI configuration
console, but unless the configuration is unusual, it will be 10.0.0.32.
// Renderers enforce policy obtained via OpFlex.
"renderers": {
// Stitched-mode renderer for interoperating with a
// hardware fabric such as ACI
"stitched-mode": {
"ovs-bridge-name": "br0",
// Set encapsulation type. Must set either vxlan or vlan.
"encap": {
// Encapsulate traffic with VXLAN.
"vxlan" : {
// The name of the tunnel interface in OVS
"encap-iface": "br0_vxlan0",
// The name of the interface whose IP should be used
// as the source IP in encapsulated traffic.
"uplink-iface": "eth0.4093",
// The vlan tag, if any, used on the uplink interface.
// Set to zero or omit if the uplink is untagged.
"uplink-vlan": 4093,
// The IP address used for the destination IP in
// the encapsulated traffic. This should be an
// anycast IP address understood by the upstream
// stitched-mode fabric.
"remote-ip": "10.0.0.32"
}
},
// Configure forwarding policy
"forwarding": {
// Configure the virtual distributed router
"virtual-router": {
// Enable virtual distributed router. Set to true
// to enable or false to disable. Default true.
"enabled": true,
// Override MAC address for virtual router.
// Default is "00:22:bd:f8:19:ff"
"mac": "00:22:bd:f8:19:ff",
34
Beryllium
The agent is now running and ready to enforce policy. You can add endpoints to the local
VM hosts using the OpFlex Group-based policy plugin from OpenStack, or manually.
35
Beryllium
36
36
36
37
37
Overview
This guide is geared towards installing OpenDaylight to use the OVSDB project to provide
Neutron support for OpenStack.
Open vSwitch (OVS) is generally accepted as the unofficial standard for Virtual Switching in
the Open hypervisor based solutions. For information on OVS, see Open vSwitch.
With OpenStack within the SDN context, controllers and applications interact using two
channels: OpenFlow and OVSDB. OpenFlow addresses the forwarding-side of the OVS
functionality. OVSDB, on the other hand, addresses the management-plane. A simple
and concise overview of Open Virtual Switch Database (OVSDB) is available at: http://
networkstatic.net/getting-started-ovsdb/
36
| x
| odl-
| x
| odl-
| x
| odl-
| x
| odl-
odl-ovsdb-openstack
| 1.1.0-SNAPSHOT
1.0-SNAPSHOT
OpenDaylight :: OVSDB :: OpenStack Network Virtual
Beryllium
| x
| ovsdb-1.
Troubleshooting
There is no easy way to troubleshoot an installation of odl-ovsdb-openstack. Perhaps a
combination of log:display | grep -i ovsdb in karaf, Open vSwitch commands (ovs-vsctl) and
OpenStack logs will be useful but will not explain everything.
37
Beryllium
38
38
38
38
38
Overview
TBD
Troubleshooting
TBD
38
39
Beryllium
Beryllium
40
40
40
40
40
Overview
TBD
Troubleshooting
TBD
40
41
Beryllium
Beryllium
42
42
42
42
43
43
43
43
This document is for the user to install the artifacts that are needed for using Time Series
Data Repository (TSDR) functionality in the ODL Controller by enabling the default JPA (H2)
Datastore. TSDR is new functionality added in OpenDaylight in Lithium Release.
Overview
In Lithium Release the time deries data records of OpenFlow statistics are collected
periodically and stored in a persistent store. For non-production usage, the bundled default
JPA based datastore (H2) is utilized based on odl-tsdr-all feature installation. The TSDR
records get persisted in H2 store in <install folder>/tsdr/ folder by default.
Beryllium
Troubleshooting
Check the ../data/log/karaf.log for any exception related to TSDR or JPA related features
43
Beryllium
44
45
45
45
46
46
46
46
This document is for the user to install the artifacts that are needed for using HBase Data
Store in Time Series Data Repository, which is a new feature available in OpenDaylight
Lithium release.
Overview
The Time Series Data Repository (TSDR) project in OpenDaylight (ODL) creates a
framework for collecting, storing, querying, and maintaining time series data in the
OpenDaylight SDN controller. It contains the following services and components:
Data Collection Service
Data Storage Service
TSDR Persistence Layer with data stores as plugins
TSDR Data Stores
Data Query Service
Data Aggregation Service
Data Purging Service
Data Collection Service handles the collection of time series data into TSDR and hands it
over to Data Storage Service. Data Storage Service stores the data into TSDR through TSDR
Persistence Layer. TSDR Persistence Layer provides generic Service APIs allowing various
data stores to be plugged in. Data Aggregation Service aggregates time series fine-grained
raw data into course-grained roll-up data to control the size of the data. Data Purging
Service periodically purges both fine-grained raw data and course-granined aggregated
data according to user-defined schedules.
In Lithium, we implemented Data Collection Service, Data Storage Service, TSDR Persistence
Layer, TSDR HBase Data Store, and TSDR H2 Data Store. Among these services and
components, time series data is communicated using a common TSDR data model, which
is designed and implemented for the abstraction of the time series data commonalities.
44
Beryllium
With these functions, TSDR will be able to collect the data from the data sources and store
them into one of the TSDR data stores: either HBase Data Store or H2 Data Store. We also
provided a simple query command from Karaf console for the user to retrieve TSDR data
from the data stores.
A future release will contain Data Aggregation service, Data Purging Service, and a fullfledged Data Query Service with Norghbound APIs.
/usr/lib/hbase
45
Beryllium
b. remove the file directory that contains the HBase server installation.
46
rm -r <hbase-installation-directory>
47
Beryllium
Beryllium
48
49
49
50
51
Overview
OpenDaylight Virtual Tenant Network (VTN) is an application that provides multi-tenant
virtual network on an SDN controller.
Conventionally, huge investment in the network systems and operating expenses are
needed because the network is configured as a silo for each department and system.
Therefore various network appliances must be installed for each tenant and those boxes
cannot be shared with others. It is a heavy work to design, implement and operate the
entire complex network.
The uniqueness of VTN is a logical abstraction plane. This enables the complete separation
of logical plane from physical plane. Users can design and deploy any desired network
without knowing the physical network topology or bandwidth restrictions.
VTN allows the users to define the network with a look and feel of conventional L2/L3
network. Once the network is designed on VTN, it will automatically be mapped into
underlying physical network, and then configured on the individual switch leverage SDN
control protocol. The definition of logical plane makes it possible not only to hide the
complexity of the underlying network but also to better manage network resources.
It achieves reducing reconfiguration time of network services and minimizing network
configuration errors. OpenDaylight Virtual Tenant Network (VTN) is an application that
provides multi-tenant virtual network on an SDN controller. It provides API for creating a
common virtual network irrespective of the physical network.
It is implemented as two major components
VTN Manager
VTN Coordinator
VTN Manager
An OpenDaylight Controller Plugin that interacts with other modules to implement
the components of the VTN model. It also provides a REST interface to configure VTN
components in ODL controller. VTN Manager is implemented as one plugin to the
OpenDaylight controller. This provides a REST interface to create/update/delete VTN
components. The user command in VTN Coordinator is translated as REST API to VTN
48
Beryllium
Manager by the ODC Driver component. In addition to the above mentioned role, it also
provides an implementation to the OpenStack L2 Network Functions API.
VTN Coordinator
The VTN Coordinator is an external application that provides a REST interface for a
user to use the VTN Virtualization. It interacts with VTN Manager plugin to implement
the user configuration. It is also capable of multiple controller orchestration. It realizes
Virtual Tenant Network (VTN) provisioning in OpenDaylight Controllers (ODC). In
the OpenDaylight architecture VTN Coordinator is part of the network application,
orchestration and services layer. VTN Coordinator has been implemented as an external
application to the OpenDaylight controller. This component is responsible for the VTN
virtualization. VTN Coordinator will use the REST interface exposed by the VTN Manger to
realize the virtual network using the OpenDaylight controller. It uses OpenDaylight APIs
(REST) to construct the virtual network in ODCs. It provides REST APIs for northbound VTN
applications and supports virtual networks spanning across multiple ODCs by coordinating
across ODCs.
VTN Coordinator
Arrange a physical/virtual server with any one of the supported 64-bit OS environment.
RHEL 6 / 7
CentOS 6 / 7
Fedora 20 / 21 / 22
Install these packages
yum install perl-Digest-SHA uuid libxslt libcurl unixODBC json-c
rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdgredhat93-9.3-1.noarch.rpm
yum install postgresql93-libs postgresql93 postgresql93-server postgresql93contrib postgresql93-odbc
Installing VTN
VTN Manager
Install Feature
49
Beryllium
Note
The above command will install all features of VTN Manager. You can install
only REST or Neutron also.
VTN Coordinator
Enter into the externalapps directory in the top directory of Lithium
cd distribution-karaf-0.2.1-Lithium-SR1/externalapps
Run the below command to extract VTN Coordinator from the tar.bz2 file in the
externalapps directory.
tar C/ -jxvf distribution.vtn-coordinator-6.0.0.1-Lithium-SR1-bin.tar.bz2
This will install VTN Coordinator to /usr/local/vtn directory. The name of the tar.bz2 file
name varies depending on the version. Please give the same tar.bz2 file name which is
there in your directory.
Configuring database for VTN Coordinator
/usr/local/vtn/sbin/db_setup
50
VTN Coordinator
ps ef | grep unc will list all the vtn apps
Run any REST API for VTN Coordinator version
Uninstalling VTN
VTN Manager
Feature:uninstall odl-vtnmanager-all
VTN Coordinator
/usr/local/vtn/bin/vtn_stop
Remove the usr/local/vtn folder
51
Beryllium