Date post: | 02-Jul-2015 |
Category: |
Technology |
Upload: | joan-a-garcia-espin |
View: | 243 times |
Download: | 0 times |
www.opennaas.orghttp://www.opennaas.org/
Overview
Pau Minoves, September 2012
Objective
• A software project, that feeds from research.– Enable long-term research to happen on top of it.
• And leverage past research and assets.
• Create a community that allows several stakeholders tocontribute and benefit from a common NaaS software stack.• Open Source, Open community.
– Solid base functionality that can be used on a productionenvironement.• Users increase life span.
• Faster research output adoption.
THE COMMUNITY
3
www.opennaas.org• All pointers to
relevant information and news at our homepage.
• You are welcome to the mailing list!
4
Open forge• Code, both stable
and development branches available online.
• One-click fork.
Open forge• All code
contributions (internal and external) are queued for public review and discussion.
6
Developer tools• Continuous
build system is available online.
7
get & compile & install
• Built it from scratch:
8
$ git clone git://github.com/dana-i2cat/opennaas.git$ cd opennaas$ git checkout develop # optional$ mvn install
$ cd opennaas$ mvn clean$ git pull git://github.com/dana-i2cat/opennaas.git$ mvn install
$ cp –r platform/target/opennaas-0.10 /srv$ cd /srv/opennaas-0.10$ ./bin/opennaas.sh
• Update from source:
• Run it:
Fetch code
Fetch unstableBuilt it
Clean past builtFetch updatesBuilt it
Enjoy!
Distribution Overview
9
• OSGi
– List, start, stop
– --help
• Features.
• Configuration.
THE APPROACH
10
OpenNaaS Key Requirements
• On demand (commonly user-triggered) provisioning of network resources.
• Recursive delegation of access right over managed resources.
• Lightweight Abstracted operational model.– Decoupled from actual vendor-specific details.
– Flexible enough to accomodate diferent designs and orientations
– Fixed enough so common tools can be build and reused acrossplugins.• Security.
• Lifecycle.
• Monitoring.
• Deployment and upgrade.
• Service orchestration.
OpenNaaS Stakeholders
• Network Operators with an interest on NaaS:– NREN.
– Cloud Datacenter.
– New services for ISP’s.
• ISV and integrators– middleware-network
orchestration.
• Developers and network researchers.
FUSE ServiceMix
Platform
Extensions
Third Party plugins
OTS
dis
trib
uti
on
OpenNaaS Platform
• For developers and researchers:– Modern IDEs available– Maven based build system and
dependency management– Plugin howto documentation– Several available open source
plugins as reference– An open OpenNaaS community– Comercial support for underlying
technologies
• Leverage building blocks, both usingexisting resources or for creatingnew ones.– Resource Respository and Manager– Protocol Session Manager– Standard Capabilities– Protocol Endpoints for remoting
(SOAP, REST, etc).– Platform manager– *.apache.org deployment ready
libraries.• While plugins can chose to use
technologies like hibernate, spring orESB, they don’t have to.
NETWORK INTELIGENCE
See Mantychore FP7 use cases
THE TOOL
NaaS Lightweight Abstraction
Capability
Resource
RPC
Platform
CLI
Per
sist
en
ce
Qu
eue
Res
ou
rce
Man
ager
. . .
Security
Protocol Session Manager
Resource Lifecycle
Resource Layer
Ro
ute
r R
eso
urc
e
Net
wo
rk R
eso
urc
e
Bo
DR
eso
urc
e
Op
tica
l Sw
itch
R
eso
urc
e
. . .
Remoting
Scri
pti
ng
GU
I
Op
enN
ebu
la
Op
enSt
ack
NS
NSA
(N
SI)
. . .
3P Extensions
3P Middleware
OpenNaaS ArchitectureNetwork Intelligence• Integration with Northbound
Middleware• IaaS/Cloud managers• Other NMS.
• The user
NaaS Layer• Network HAL abstraction to
infrastructure.• Resources manageable by the user.
• Access controlled by the Sec. Manager.
Platform• Reusable building blocks, common to
all extensions.• Controls access to the infrastructure.
• Integrity, Policy, etc..
Managed infrastructure
BoD
OpenNaaS Platform Base Components
• ResourceManager.– Manages the persistence and lifecycle of Resources.– There is a ResourceManager repository implementation for
each ResourceType.• Which acts as a Factory for that type.
– Implements also Profiles, we’ll see that later.– Which brings us to the NaaS abstraction reusable concepts;
• Resource• Resource Type• Capability• Action• ActionSet• Profile
OpenNaaS Platform Base Components
• Reusable concepts:– A Resource represents a manageable unit inside the NaaS
concept.• A Resource can be a switch, a router, a link, a logical router, a
network, etc…– Instantiations of a Resource Type.
• Resources share a simple lifecycle:– Initialized, loaded in memory.– Active, accepts calls.
CapabilityResourceRPC
Router
OpenNaaS Platform Base Components
• Reusable concepts:– A Resource represents a
manageable unit inside the NaaS concept.• A Resource is decomposed in:
– A model– An array of Capabilities.
• The ResourceType defines:– The model.– Which Capabilities are allowed.
• Which Capabilities are actually callable will depend on that actual Resource instance.
» The Resource can be interrogated.
CapabilityResourceRPC
Router
Chassis
GRE
OSPF
OpenNaaS Platform Base Components
• Reusable concepts:– A Capability is an interface to a given
Resource functionality.• I.e. for a router:
– OSPF, IPv6, Create/manage logical routers, etc.
• Callable by the user.
– This interface is, as the Model, abstracted and vendor neutral.
– Internally the Capability, is implemented for each kind of device.• Hence, some capabilities might not be
available for some vendors.
– The Capability is the HAL limit for OpenNaaS.
CapabilityResourceRPC
Router
Chassis
GRE
OSPF
OpenNaaS Platform Base Components
• Internally, Capabilities need a way to abstract implementation details of the devices.– They use Actions.
• An Action is a vendor (and protocol) specific implementation of a configuration modification.– It can be Queue’d.– It can be undone (rollback).
• Actions are grouped into an ActionSet.• On Action.execute(), the action usually
asks to the ProtocolSessionManagerfor an appropriate ProtocolSession to communicate with the device.
CapabilityResourceRPC
OpenNaaS Platform Base Components
• An Action can be implemented from scratch:– Just fill the execute() method with
some code.
• Or reused from some adaptors we have.– Most importantly, netconf actions
are very XML-intensive.
– They use a digester rule set for XML processing
– And Velocity for XML creation.CapabilityResourceRPC
OpenNaaS Platform Base Components
• A Profile is an alternative set of ActionSets.
• They can be deployed at runtime to the container.
• On creation time, a Profile can be specified for a given Resource.
• When looking for an Action to execute (or queue), Capabilities will first check the Profile for an alternative Action.– If found, it will be executed instead of
the default one.
• This is a mechanism for OpenNaaS administrators to modify behaviour of default capabilities.
CapabilityResourceRPC
OpenNaaS Platform Base Components
• The QueueManager is used to stack all Actions to be executed.– All modifications can be done over
the network at once.– Allows rollback of Actions.– Objective: the network-wide
rollback of actions.– It is both a Capability and a OSGI
Service.• The user can check and manipulate
the Queue as a Capability.• The rest of Capabilities can work
with it via the OSGi registry.– Saves a lot of serialization.
CapabilityResourceRPC
PLATFORM
Fuse ServiceMix• Standards based
• Open Source
• State of the art technologies– OSGi, Java 6, Apache SF, Scala, etc
– Roll your own
• Componetized compilation of Apache library.
• Documented
• Comercial support.
• Portable– Linux, Windows, Mac.
• Not always the latest library versions…
Platform• Based on a component container:
– OSGi R4 (Apache Felix’s implementation)
• Mainly, this allows:– The application is split components, and they are:
• Started and stopped at runtime.– Which can be explored and manipulated via the CLI– Which can be handled programmatically (via events, RPC, etc).
• Installed and updated from a (remote) repository.
– Components are isolated from each other.• Classes from a bundle cannot import from other bundles.• Unless explicitly allowed to.• There is a service publication/consumption registry.
• On OSGi, these components are called bundles.– A bundle is a jar + some special lines on the MANIFEST.– Features.xml allow to specify a version of the platform + an initial set
bundles.
Component Architecture
Operating System
Java 6 VM
OSGi Container
OSGi
FUSE
NaaS
NaaS
Plug-in
FUSE
NaaS
NaaS
Plug-in
Plug-in
FUSE
NaaS
Plug-in
Plug-in
Plug-in
Bu
nd
les
OSG
iDis
trib
.
Exported functionality
Deploy, Upgrade, Monitor, etc
Modern IDE, Remote debug, etc
Unix, Linux, MacOS, Windows, etc
Bundle lifecycle
OpenNaaS Platform
• Embeddable and interoperable.– Component of a bigger middleware
• i.e. a cloud management infrastructure.
– L-GPLv3 for the platform.
• Foundation of the NaaS layer.
• Reusable concepts across plugins– Resource, Capability, Action, Lifecycle.
– A command toolset and remoting layer is built around thisconcepts.
– Etc
• Shared but defined roadmap.
OpenNaaS Platform Base Components
• Leverage building blocks:– Resource Respository and Manager
• Handles lifecycle and persistence.
– Protocol Session Manager• Mantains protocol session lifecycle, with an eye on session reusability.
• Additional protocols can be added
– Standard Capabilities• Queue (for configuration deployment).
– Protocol Endpoints for remoting (SOAP, REST, etc).
– Platform manager
– *.apache.org deployment ready libraries.• While plugins can chose to use technologies like hibernate, spring or ESB,
they don’t have to.
OpenNaaS Platform Base Components
• Protocol Session Manager– Implements the ProtocolSession abstraction
• Currently we have these implementations:– Netconf (IRTF).– Onesys (EMS Module).– CLI (Telnet, SSH).– TL1 (TCP, SSL).
– Manages ProtocolSession lifecycle.• Performs pooling, if possible.• Reuses sessions (keeps them alive for some minutes).• ProtocolSession events.
– Isolates ProtocolSession usage from credentials.• Loads and pairs ProtocolSessionContexts with appropiate device.• transport://user:password@ip:port/subsystem
Transactional Queue
35
Network
Queue
Router
Queue
Router
Queue
Router
Queue
Client begin
Write candidateConfiguration and validate
Write candidateConfigurationand validate
Write candidateConfigurationand validate
Transactional Queue
36
Network
Queue
Router
Queue
Router
Queue
Router
Queue
Client begin
Activate newconfiguration
Activate newconfiguration
Activate newconfiguration
Ok
commit
Ok
Transactional Queue
37
Network
Queue
Router
Queue
Router
Queue
Router
Queue
Client begin
Discard changes,load previous confif necessary
Discard changes,load previous confif necessary
Discard changes,load previous confif necessary
Fail!
SAMPLE WORKFLOW
workflow
Client
Router
Queue
OSPFospf.activate(…)
Queue.addAction( OSPFAction.ACTIVATE, …)
> resource:list> ospf:activate router:A …
GET http://opennaas/resourceManager/list
resources {router [ “A”, “B” ]}
GET http://opennaas/router/A/ospf
activated = false
POST http://opennaas/router/A/ospf/activateospfservice {
running.mospf = true.area { … }
}
200 OK
workflow
Client
Router
Queue
OSPFqueue.list()
> queue:list router:A…
GET http://opennaas/router/A/queue
queue [ OSPFAction.ACTIVATE ]
Actions[]
workflow
Client
Router
Queue
OSPFqueue.execute()
> queue:execute router:APOST http://opennaas/router/A/queue/executetimeout = 0
200 OK
workflow
Client
Router
Queue
OSPFqueue.execute()
> queue:execute router:APOST http://opennaas/router/A/queue/executetimeout = 0
200 OK
getConnection( router:A, “netconf”);
workflow
Client
Router
Queue
OSPFqueue.execute() Execute Action
UserParams
<configuration>#set($logicalRouter = "false")#if(!$elementName.equals(""))
#set($logicalRouter = "true")#end#if($logicalRouter.equals("true"))
<logical-systems><name>$elementName</name>
#end
<protocols><ospf>
#foreach($ospfAreaConfig in $param.getOSPFAreaConfiguration())#set($ospfArea = $ospfAreaConfig.getOSPFArea())<area>
<name>$ipUtilsHelper.ipv4LongToString($ospfArea.getAreaID())</name>#foreach($ospfPep in $ospfArea.getEndpointsInArea())##replace the content on interface with given name<interface operation="replace">
<name>$ospfPep.getName()</name>##ENABLED/DISABLED#if($ospfPep.getEnabledState().toString().equals($disabledState))<disable/>#end
</interface>#end
</area>#end
</ospf></protocols>#if($logicalRouter.equals("true"))
</logical-systems>#end
</configuration>
workflow
Client
Router
Queue
OSPFospf.getConfiguration() Parse new configuration into the model
> queue:execute router:AOK>
POST http://opennaas/router/A/queue/executetimeout = 0
200 OK
GET http://opennaas/router/A/ospf/info
ospfservice {running.mospf = true.area { … }
}
EXTENSIONS
NaaS Lightweight Abstraction
Capability
Resource
RPC
Router
47
OSPF• activate• deactivate• configure• getConfiguration• configureArea• addInterfaces• ....
IPV4• setipv4• setInterfaceDescrip
Chassis• upPhysicInterface• downPhysicInterface• createSubInterface• setEncapsulation• createLogicalRouter• addInterfacesToLR• ....
GRE Tunnel• createGRETunnel• deleteGRETunnel• showGRETunnelConf
Static Route• createStaticRoute
• removeStaticRoute
BoD
48
L2BOD
• requestConnection
• shutDownConnection
Network
49
Basic Network
• addResource
• removeResource
• L2attach
• l2detach
Net OSPF
• activateOSPF
• deactivateOSPF
ROADM
50
Connections
• makeConnection
• removeConnection
Monitoring
• clearAlarms
• getAlarms
MACBridge
51
VLAN Aware Bridge
• createVLANConfiguration
• deleteVLANConfiguration
• addStaticVLANRegistration
• deleteStaticVLANRegistration
ROADMAP
Roadmap
• Extensions and platform upgrades are performed according to:
– Research projects
– Internal initiatives from i2CAT
– Initiatives from third party extensions
– Privately funded projects from industry
• The roadmap is open to discussion on the usual project forums (i.e. mailing lists).
Extensions RoadmapDone Current Short-term (<6m) Mid-Term (>6m)
L1 ROADM
L2 BoD Domain client• AutoBAHN
BoD Domain Server• Porting Harmony IDB
BoD Domain Server• NSI interface.
L2 / L3 Router
L3 Network
Manager GUI
Security Manager• SAML Idp
Cloud Manager connectors• OpenStack NetworkS
ervice drop-in replacement
• OpenNebula 3.0
• Energy consumption metrics.
• Infrastructure Marketplace.
OpenFlow Controller
Extensions Roadmap by Project
2012 2013 2014 2015 2016
Mantychore UC1 UC2
NOVI SFA Adapter
GEYSERS MAC Bridge
CONTENT
OFERTIE
SODALES
GN3+
Wifi/TDM Resources
OpenFlow SLA Manager
Wifi/TDM Orchestrator
ARN Resource
GN3
Third Party Extensions
• Mantychore extensions are ASLv2, so they can be used as foundation for additional extensions– Additional extensions can have any license.
• New extensions can have any license.
• Possibility to be hosted on private repositories.– And both be installed with a platform well-known
command• feature:install http://net.biz/3rd.party.feature
• Can leverage both platform functionality and default extensions.
BACKUP
57