netphony-topology v1.3.3

Repository branch build status:

Master Develop
Build Status Build Status

Latest Maven Central Release:

Maven Central

Netphony-topology is a BGP-LS Speaker, a Java based Traffic Engineering Database and a Topology Module (collection of TEDs and plugins to export and import the TEDs).

BGP-LS is used for distributing Network Topologies to external elments, for example, a Path Computation Element.

The BGP-LS speaker can be run as a standalone application, or as a module attached to other software.

The Topology Module can export the topologies via BGP-LS or RESCONF based APIs following standard formats.

Latest news!

Traffic Engineering Database

The traffic Engineering Database (TED) is a collection of nodes and links, each of them with Traffic Engineering Attributes. The TED has as an attribute a domain identifier and a network layer.

Compilation and use

The library can be built using the maven tool. Thus, all the dependencies are included in the pom.xml file. There is a Junit test included that performs the following tests:

To build the .jar file and run the tests, you can proceed as a regular maven install:

    git clone https://github.com/telefonicaid/netphony-topology.git
    cd netphony-topology
    mvn install

BGP-LS Speaker

The BGPPeerMain is an example of a main class to run a BGP Speaker. It represents a BGP4 peer. It launches the BGP connections with its peers and waits for incoming connections.

To run the BGP Peer as a standalone application use the class BGPPeerMain. You can use maven to create an autoexecutable jar that includes all dependencies in a single file. There is a specific profile called bgp-ls-speaker for this sole purpose. Plase be aware that if you use the real BGP port (179) you need to start as root.

    git clone https://github.com/telefonicaid/netphony-topology.git
    cd netphony-topology
    mvn clean package -P bgp-ls-speaker assembly:single
    sudo java -Dlog4j.configurationFile=target/log4j2.xml  -jar target/bgp-ls-speaker-jar-with-dependencies.jar target/bgpls_example1/BGP4Parameters_1.xml

Before running, you should configure the parameteres. The parameters are configured in an xml file. By default, if used with BGPPeerMain, or it is not specified a file name, BGP4Parameters.xml should be used. An example of the file is located in examples/BGP4Parameters.xml (and with the maven assembly build, it is copied in the target directory).

Configuration parameters

The parameters to be configured are:

Topology Module

The Topology Module is a collection of Traffic Engineering Databases with a set of plugins that can import or export the TEDs. The available plugins are:

To run the Topology Module as a standalone application use the class es.tid.topologyModuleBase.TopologyModuleMain. You can use maven to create an autoexecutable jar that includes all dependencies in a single file. There is a specific profile called generate-full-jar for this sole purpose. Please be aware that if you use the BGP-LS Plugin and need to use the standar port (179) you need to start as root.

    git clone 
    git clone https://github.com/telefonicaid/netphony-topology.git
    cd netphony-topology
    mvn clean package -P generate-full-jar
    cd target

For example, to launch a Topology module with BGP-LS import and RECONF COP export (be sure to be in the target directory):

 sudo java -Dlog4j.configurationFile=log4j2.xml  -jar topology-1.3.2-shaded.jar TMConfiguration_BGPLSreader_COPwriter.xml

Sample configuration files are included.

Logging

The software is built using the slf4j, Simple Logging Facade for Java (SLF4J), which serves as a facade for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end final to plug in the desired logging framework at deployment time. See http://www.slf4j.org/manual.html for more details.

Thus, you can choose your favourite logging framework.

However, as an example, there is a profile included (bgp-ls-speaker) to build an autoexecutable version of a BGP Peer that uses log4j http://logging.apache.org/log4j/2.x/ A sample configuration file (log4j2.xml) is provided and copied to the target directory.

If no logging framework is added, by default it will log to /dev/null

Examples

See Examples for several Test scenarios of the BGP-LS Speaker and the Topology Modules.

XML Format to describe the topology

See TopologyFileDescription

Acknowledgements

The software has been developed by Telefonica I+D Core & Transport Team, led by Juan Pedro Fernandez Palacios, in internal innovation projects and through several EU funded research proyects, which continuously added functionality. The Core & Transport Team group of Telefonica working with the topology is formed by Juan Pedro Fernandez Palacios (team leader), Victor Lopez, Oscar Gonzalez de Dios, Felipe Jiménez, Luis Miguel Contreras, Michel Carnero and Eduardo Yusta. All of them have contributed to the code, either directly of with ideas and as beta-testers.

The effort to release as open source of the code was funded by the E.U. CSA PACE. The code has been upgraded in the E.U. projects STRONGEST, PACE, IDEALIST, ACINO and 5GEx, as well as Telefonica Innovation activities. The effort to release version 1.3.3 has been partially funded by 5GEx. Special thanks for the 5GEx team in the integration efforts.

The developers of the code are (some of them developed code before it was published in github, so they do not appear there as members): Oscar Gonzalez de Dios, Marta Cuaresma, Arturo Mayoral, Sergio, Alejandro Aguado, Jaume Marhuenda, Maria Victoria, Ruben Rosales, Jose Manuel Gran Josa, Victor Uceda, Andrea Sgambelluri (KTH) AND Victor Lopez.

The institutions contributing to the code are: Telefonica I+D (www.tid.es), KTH (https://www.kth.se/).

As the software is now open source, all contributors, indviduals and insititution will be listed in the Acknowledgement section.