Upload
vjanandr
View
233
Download
0
Embed Size (px)
DESCRIPTION
Introduction to Opendaylight/architecture and simple AD SAL based app development
Citation preview
ODL App DevelopmentVijay Anand R
Mobile Software Trends..
Why SDN ?
SDN
Brain child of clean slate initiative.. from Stanford.. and active contributions from UC Berekley.
The current network architecture closed for innovation.
SDN is all about abstraction. Control Plane and Data Plane completely
abstracted. Control Plane now runs in a central location and
programs the forwarding elements. OpenFlow is used to program the Forwarding
Elements – rules to handle incoming traffic.
Flow Table Entries(MATCH RULES)
H E A D E R F I E L D S
AC T I O N S C O U N T E R S
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
Ingress port
Source
MAC
Dest MAC
Ether
Type
VLAN ID
VLAN priorit
y
IPSRC
IPDEST
IP Protoco
l
IP TOS
TCP/UDPSRC
TCP/UDPDEST
1 2 3 4 5 6 7 8 9 10 11 12
HEADER F IELDS
12 Tup le key
Flow Table Entries(ACTIONS)
HEADER F IELDS
ACT IONS COUNTERS
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
ACTIONSActions To be performed upon a matchForward out all ports except input ports (flood)Forward to group of ports (multicast)Redirect to Controller (controller packet)
Forward to local CPU (punt path)Forward to destination port (unicast routing)Drop packet (limited queueing QOS capabilities)
Flow Table Entries(Counters)
HEADER F IELDS
ACT IONS COUNTERS
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
COUNTERSCounters – To keep track of stats Forward out all ports except input ports
(flood) Per Table counters (active entries, packet
lookups, packet matches) Per Flow Counters ( Received packets,
Received Bytes, Duration of the flow)
Per Queue (Transmit packets, Transmit Bytes , TX Overrun Errors)
Per Port Counters ( Received Packets, Transmit Packets, Received Bytes, Transmit Bytes, Received Drops…...
SDN Network PARADIGM
Network Virtualization
Layer
Network OS / SDN Contro l ler
APP
APP
APP
APP
Data PathForwarding
TableData Path
Forwarding Table
Data PathForwarding
Table
NETC
ON
F
ONEPK
North Bound APIs
North Bound APIs
N o r t h B o u n d A P I s
ANDROID OS
APPs
Mobile Phone
Hardware
OPEN
FLOW
ODL Controller Architecture.
ReST - REpresentational State Transfer
Its an architectural style, based on the current architecture of World Wide Web, with certain constraints.
Every resource in the web is identified by an URI.
Use traditional HTTP methods GET, PUT,POST.
Resource state represented in JSON or XML format.
https://apigee.com/console/facebook
JSON - JavaScript Object Notation
human-readable text to transmit data objects consisting of attribute–value pairs.
{"employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter", "lastName":"Jones"}]}
<employees> <employee> <firstName>John</firstName> <lastName>Doe</lastName> </employee> <employee> <firstName>Anna</firstName> <lastName>Smith</lastName> </employee> <employee> <firstName>Peter</firstName> <lastName>Jones</lastName> </employee></employees>
Environment Setup
Java Setup apt-get install git apt-get install openjdk-7-jre apt-get install openjdk-7-jdk apt-get install maven export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386/
Mininet - Network, host virtualization software. git clone git://github.com/mininet/mininet mininet/util/install.sh –a
Eclipse setup - https://www.eclipse.org/downloads/ From Eclipse, go to Help => Install New Software... Paste "http://download.eclipse.org/technology/m2e/releases" into the "Work
with:" field Select m2e and (optionally) m2e - slf4j both (1.4.0 is current as of the writing of
these instructions) Click Next, OK and Finish else until things install Restart Eclipse when it asks.
Accessing, Building and Running the
Opendaylight Controller
https://wiki.opendaylight.org/view/OpenDaylight_Controller:Pulling,_Hacking,_and_Pushing_the_Code_from_the_CLI
Pulling the code. git clone https://git.opendaylight.org/gerrit/p/controller.git cd controller/opendaylight/distribution/opendaylight/ mvn clean install (uses maven build system, POM.xml is the makefile equivalent). cd target/distribution.opendaylight-osgipackage/opendaylight/ ./run.sh
Prebuild binary download wget https://jenkins.opendaylight.org/controller/job/controller-merge/lastSuccessfulBuild/artifact/
opendaylight/distribution/ opendaylight/target/distribution.opendaylight-osgipackage.zip gunzip distribution.opendaylight-osgipackage.zip cd opendaylight ./run.sh
Run mininet instances. sudo mn --controller=remote,ip=127.0.0.1 --topo=linear,2 (topology with 2 hosts and 2 switches).
Access the Controller http://localhost:8080/ Username : admin Passwd : admin
Simple REST based application
Sample Programs
Download and add the following Jars to you Project Build Path. ODL REST API reference -
https://wiki.opendaylight.org/view/OpenDaylight_Controller:REST_Reference_and_Authentication
Jersey Download Page - The sample program was built using jersey-bundle-1.18.jar jar.
https://jersey.java.net/download.html wget
http://repo1.maven.org/maven2/com/sun/jersey/jersey-bundle/1.18/jersey-bundle-1.18.jar
JavaX Json Bundle Download Page - The sample program was build using javax.json-1.0.4.jar
http://mvnrepository.com/artifact/org.glassfish/javax.json wget http://
repo1.maven.org/maven2/org/glassfish/javax.json/1.0.4/javax.json-1.0.4.jarTopologyRest.java FlowMgr.java
OSGI - Open Service Gateway initiative
OSGi specification defines a component and service model for Java.
The components and services (bundles) can be dynamically installed, activated, de-activated, updated and de-installed.
Sample Applications.
https://github.com/fredhsu/odl-apps Go to the folder where the controller
code was downloaded using “git clone” cd controller/opendaylight and extract
mystats.tar.gz cd mystats mvn clean install The bundle is built in the target folder. Copy the bundle onto OSGI and verify as
in OSGI_OP.
mystats.tar.gz OSGI_op.txt