-
Notifications
You must be signed in to change notification settings - Fork 11
NetIDE Core
Base package: eu.netide.*
The core project is built on top of Apache Karaf and is therefore implemented as OSGi bundles. The core currently consists of the following modules:
- core.api
- core.caos
- core.connectivity
- core.management
The modules are built using Maven, the root pom.xml combines them into the core project.
This bundle contains all shared interfaces and classes for the core, structured into the following Java packages:
- core.api: Shared interfaces and classes for core services
- core.api.netip: Classes for parsing and creating messages using the NetIDE Intermediate Protocol
This bundle does not have any OSGi-dependencies (except for the framework itself), but embeds OpenFlowJ.
This bundle contains the composition and conflict resolution logic and related services inside the core.caos package in the following packages:
- core.caos: Runtime logic and services for composition and conflict resolution
- core.caos.composition: Classes for the (de-)serialization of composition specifications and their in-memory representation
It has a dependency on the core.api bundle and embeds JDOM2.
This bundle implements the services necessary to establish a connection with the shim and backends. Currently, it implements a ZeroMQ-based connector inside the core.connectivity package. It has a dependency on the core.api bundle and embeds JeroMQ.
This bundle implements the management interface for the core using ZeroMQ transport and a yet-to-be-determined protocol. It allows to set and query configuration data. Internally, it uses Blueprint configuration to dynamically adapt the running core. It has a dependency on the core.api and org.apache.karaf.config.core bundles and embeds JeroMQ and org.json.
This bundle contains the LogPub module of the core. It has a interprocess queue to receive the messages pushed by the core.connectivity and publish them to a PUB queue. The external tools (like the Logger) will subscribe to that queue.
- Java NetIP library (see lib folder)
- Maven for building the projects (especially the maven-bundle-plugin)
- Apache Karaf as the runtime OSGi container
- Apache Aries Blueprint for service discovery and injection
- Apache Aries Blueprint Configuration (using Karaf's ConfigAdmin service) for dynamic adaption to configuration changes
- In cooperation with Karaf's JMX MBeanServer for configuration changes through code
- ZeroMQ for external interfaces (using the Java-only JeroMQ library)
- OpenFlowJ from the ONOS project to parse and generate OpenFlow messages
- org.json for parsing and creating payloads for ManagementMessages
- SLF4J for logging (provided by Karaf)
- The core requires the Java NetIP library in your local Maven repository for a successful build. Therefore, go to the lib/netip/java directory and run
mvn clean install
before continuing.
- Clone the CoreImplementation branch of the repository to your machine.
- Go to the core directory and run
mvn clean install
. This will build the bundles and install them to your local Maven repository. - Download Apache Karaf. (I recommend at least version 4.0.0.0)
- Start Karaf by going into the downloaded folder and running
bin/karaf
. - Install the netide-core feature by first adding the feature repository file via
feature:repo-add mvn:eu.netide.core/core/1.0.0.0/xml/features
and then runningfeature:install netide-core
.- The output shold indicate that the core is waiting for the shim to connect.