Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

OpenNaaS defines these elements as basic components of its core architecture, but does not implement any of them. Instead of it, each implementation of resource and capability are developed as extensions of OpenNaaS.

Core components

OpenNaaS define basic core components providing common model to develop extension on the top of it. They are placed in core project.

Resource

A Resource is the logical representation of a physical or virtual device. It has a descriptor, a model and one or more capabilities. A resource can be a router, a switch, etc.

...

In OpenNaaS source code, resource manager is defined by org.opennaas.core.resources.IResourceManager Java interface and implemented by org.opennaas.core.resources.ResourceManager Java class in org.opennaas.core.resources project.

Resource Repository

The Resource Manager creates a new Resource Repository are created for each type of resource. Each repository has the responsibility of managing resources of a concrete type. The Resource Manager interacts with each repository. Moreover, when a resource repository is created, it publishes itself as an OSGi service to provide to Resource Manager a way to instantiate resources of each type.

In OpenNaaS source code, resource repository is defined by org.opennaas.core.resources.IResourceRepository Java interface and implemented by org.opennaas.core.resources.ResourceRepository Java class in org.opennaas.core.resources project.

...

A Capability represents a feature or an ability which a resource can do. Each resource's type has a set of capabilities which define its features. 

In OpenNaaS source code, capability is defined by org.opennaas.core.resources.capability.ICapability Java interface in interface and partially implemented by org.opennaas.core.resources.capability.AbstractCapability Java abstract class in org.opennaas.core.resources project. Each concrete capability implements this Java class defining its own implementation.

Capability Life Cycle

Capabilities have Capability Life Cycle defined by its states (Instantiated, Initialized, Active, Inactive, Shutdown and Error).

In OpenNaaS source code, capability life cycle is defined by org.opennaas.core.resources.capability.ICapabilityLifecycle Java interface, that extends ICapability Java interface in org.opennaas.core.resources project.

Capability Factory

Capabilities have Capability Factory allowing instantiating and initializing capabilities of a resource.

In OpenNaaS source code, capability factory is defined by org.opennaas.core.resources.capability.ICapabilityFactory Java interface and partially implemented by org.opennaas.core.resources.capability.AbstractCapabilityFactory Java abstract class in org.opennaas.core.resources project. Each concrete capability implements this Java class defining its own implementation.

...

In OpenNaaS source code, action is defined by org.opennaas.core.resources.action.IAction Java interface and implemented by org.opennaas.core.resources.action.Action Java class in org.opennaas.core.resources project. In the same project, action set is defined by org.opennaas.core.resources.action.IActionSet Java interface and implemented by org.opennaas.core.resources.action.IActionSetActionSet Java class. Finally, in the same project, command is defined by org.opennaas.core.resources.command.ICommand Java interface and implemented by org.opennaas.core.resources.command.Command Java class.

Finally action Finally, action can be UML modelled as:

Protocol Manager and Protocol Session Manager

OpenNaaS uses lots of different protocols in its operations. The Protocol Manager copes with each protocol and session. A Protocol Session Manager is instantiated for each session established with each concrete device. The user can interact with OpenNaaS creating, removing, editing or getting information of each session and protocol.

In OpenNaaS source code, protocol manager is defined by org.opennaas.core.resources.protocol.IProtocolManager Java interface and implemented by org.opennaas.core.protocols.sessionmanager.ProtocolManager Java class in org.opennaas.core.resources project. In the same project, protocol session manager is defined by

Extension components

Each resource type and concrete capability are developed as extensions of OpenNaaS. Extensions are placed in extensions project. In current OpenNaaS development, there are a set of resources, each of them has one ore more capabilities with zero or one driver developed. More information can be found in Compatibility Matrix.

Queue Manager

The Queue Manager is  is mandatory capability of each resource. It is a transaction execution engine (sometimes simply misnamed queue) that queues actions and executes them. If anything goes wrong, the operation is rolled back. It has an state diagram defined by four states:

...

In OpenNaaS source code, queue manager is defined by org.opennaas.extensions.queuemanager.IQueueManagerCapability Java interface which defines the capability itself and implemented by by org.opennaas.extensions.queuemanager.QueueManager in  in queuemanager extension project.

Protocol Manager and Protocol Session Manager

Router resource

The Router resource is the most used resource in OpenNaaS, it represents a router device with some capabilities.

In OpenNaaS source code, there are resource descriptor examples for router resources in the project folder utils/examples. There are this resource descriptor examples:

Capabilities

Chassis capability

Chassis capability allows doing operations with router like activating/deactivating interfaces, creating/deleting sub-interfaces, creating/deleting logical routers, adding/removing interfaces in logical routers or setting interface encapsulation labels.

In OpenNaaS source code, IP capability is defined by org.opennaas.extensions.router.capability.chassis.IChassisCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.router.capability.chassis.ChassisCapability in router.capability.chassis extension project.

IP capability

IP capability allows setting IP addresses (defined by RFC 791) and setting interface description in a given router interfaceOpenNaaS uses lots of different protocols in its operations. The Protocol Manager copes with each protocol and session. A Protocol Session Manager is instantiated for each session established with each concrete device. The user can interact with OpenNaaS creating, removing, editing or getting information of each session and protocol.

In OpenNaaS source code, protocol manager IP capability is defined by org.opennaas.extensions.corerouter.resourcescapability.protocolip.IIPCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.router.capability.ip.IPCapability in router.capability.ip extension project.

Static route capability

Static route capability allows creating/deleting static routes in the router (defined by RFC 791).

In OpenNaaS source code, IP capability is defined IProtocolManager Java interface and implemented by org.opennaas.coreextensions.router.protocolscapability.sessionmanagerstaticroute.ProtocolManager Java class in IStaticRouteCapability Java interface which defines the capability itself and implemented by org.opennaas.core.resources project. In the same project, protocol session manager is defined by

Extension components

Each resource type and concrete capability are developed as extensions of OpenNaaS. In current OpenNaaS development, there are a set of resources, each of them has one ore more capabilities with zero or one driver developed. More information can be found in Compatibility Matrix.

Router

The router resource is the most used resource in OpenNaaS, it represents a router device with some capabilities. 

BoD

TODO

Optical Switch

TODO

Mac Bridge

TODO

Network

TODO

VCPE

.extensions.router.capability.staticroute.StaticRouteCapability in router.capability.staticroute extension project.

OSPF capability

OSPF capability allows activating/deactivating Open Shortest Path First protocol in routers (also called OSPF, defined by RFC 2328). It allows too configuring or clearing current OSPF configurations. Besides it allows configuring/removing OSPF areas, adding/removing interfaces in OSPF areas, enabling/disabling OSPF interfaces. Finally, it allows getting/showing OSPF configuration.

In OpenNaaS source code, IP capability is defined by org.opennaas.extensions.router.capability.ospf.IOSPFCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.router.capability.ospf.OSPFCapability in router.capability.ospf extension project.

GRE Tunnel capability

GRE tunnel capability allows creating/deleting Generic Router Encapsulation tunnels (also called GRE tunnels, defined by RFC 2784).

In OpenNaaS source code, IP capability is defined by org.opennaas.extensions.router.capability.gretunnel.IGRETunnelCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.router.capability.gretunnel.GRETunnelCapability in router.capability.gretunnel extension project.

VRRP capability

VRRP capability allows configuring/uncofiguring VRRP protocol in router (defined by RFC 5798). Moreover, it allows updating VRRP virtual IP address and VRRP priority.

In OpenNaaS source code, IP capability is defined by org.opennaas.extensions.router.capability.vrrp.IVRRPCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.router.capability.vrrp.VRRPCapability in router.capability.vrrp extension project.

Junos 10.10 driver

OpenNaaS has developed extensions for Juniper Network Operating System (also called Junos). It provides compatibility with Juniper routers using Junos version 10.10. Each router resource capability has a Junos implementation of Action and Command.

In OpenNaaS source code, Junos action is defined by org.opennaas.extensions.router.junos.actionssets.actions.JunosAction Java abstract class in router.actionsets.junos extension project. In the same project, in actionssets/actions folder there are specific folders for each router resource capability action implementations. Moreover, in the same project, each router resource capability action set have specific implementations in actionssets folder. Finally, in the same project, in commandsets/commands folder has specific implementation of each router resource capability commands based on org.opennaas.extensions.router.junos.commandsets.commands.JunosCommand abstract Java class.

Optical Switch resource

The Optical Switch resource represents the homonymous device. Concretely, OpenNaaS define a reconfigurable optical add-drop multiplexer (also called ROADM). It has two capabilities: monitoring capability and connections capability.

Capabilities

Monitoring capability

Monitoring capability allows getting and clearing alarms of the optical switch.

In OpenNaaS source code, Monitoring capability is defined by org.opennaas.extensions.roadm.capability.monitoring.IMonitoringCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.roadm.capability.monitoring.MonitoringCapability in roadm.capability.monitoring extension project.

Connections capability

Connections capability allows creating/removing fibre optics connections in the optical switch.

In OpenNaaS source code, Monitoring capability is defined by org.opennaas.extensions.roadm.capability.connections.IConnectionsCapability Java interface which defines the capability itself and implemented by org.opennaas.extensions.roadm.capability.connections.ConnectionsCapability in roadm.capability.connections extension project.

W-onesys driver

OpenNaaS has developed extensions for W-onesys optical switches. Each ROADM switch resource capability has a W-onesys implementation of Action and Command.

n OpenNaaS source code, W-onesys action is defined by org.opennaas.extensions.roadm.wonesys.actionsets.actions.WonesysAction Java abstract class in roadm.actionsets.wonesys extension project. In the same project, in actionssets/actions folder there are specific folders for each optical switch resource capability action implementations. Moreover, in the same project, each optical switch resource capability action set have specific implementations in actionssets folder. Finally, in the same project, in commandsets/commands folder has specific implementation of each optical switch resource capability commands based on org.opennaas.extensions.roadm.wonesys.commandsets.WonesysCommand abstract Java class.TODO

------------------

- Resources: Router Junos 10.10, BoD AutoBAHN, Optical Switch W-onesys, Mac Bridge Resource IOS, VCPE, Network
- Capabilities: Obligatòria (Queue), BoD (L2BoD), (VLAN-aware Bridge), (ROADM connections, ROADM monitoring), (OSPF, BGP, Chassis, GRE Tunnel, IP, Static Route, VRRP)

-----------------

BoD resource

TODO

Mac Bridge resource

TODO

Network resource

TODO

VCPE resource

TODO

Finally, OpenNaaS can be summarized in this module diagram:

...