Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The Telefonica Netphony suite is a set of java based libraries that enable to create a PCE/GMPLS/ABNO based control plane. It comprises a set of components, distributed as jar files, which are hosted in publicly available github repositories. All the repositories follow the same structure:
- Src folder containing the source code
- Doc forder including the detailed documentation
- Pom.xml to compile the project with maven.
- LICENSE file
- VERSION: version of the source code
- CHANGELOG: track of the changes
All the repositories can be compiled with the assistance of the maven tool. See maven website for more details on how to use maven. There are two branches, the master branch that contains the stable code, updated to the latest release, and the development branch, which includes all latest developments. There is a tag per release that contains a pointer to the commit of the release.
How to contribute
The contribution to netphony follows the github philosophy. The contributor has to create a fork in his own github account, perform the changes in a new branch, and make a pull request against the develop branch of the desired repository. It is suggested that the branch follows a naming convention:
- Feature/xxx when the contributor has added a new functionality
- Hardening/xxx when the contributor improves the code/ makes more efficient an existing functionality (but does not add new features)
- Bugfix/xxx when the contribution is aimed at fixing a bug.
The Telefonica Netphony is split in some libraries in other to facilitate the integration and extension with other frameworks:
- Netphony-network-protocols. This library contains the java implementation of the main networking protocol stacks that enable the network control plane functions: PCEP protocol, RVP-TE protocol, OSPF-TE and BGP-LS. This protocol library can be integrated by any software requiring to use of these protocols. For example, the PCE emulator in the previous section has been updated to use the library.
- Netphony-topology. This library has two main features, a Traffic Engineering Database (TEDB) and a BGP-LS Peer. The TEDB stores in memory a graph with nodes, links and their traffic engineering attributes. The netphony-topology library also includes a BGP-LS speaker (BGP-LS peer). The network-protocol library only included the protocol encoding, but not actually an executable. BGPPeer is the reference implementation of the BGP-LS speaker, Acting as a BGP4 peer, it initiates BGP connections with its designated peers and, simultaneously, waits for incoming connections.
- Netphony-pce. This repository contains two implementations of a Java based Path Computation Element, a domain PCE and a Parent PCE. The repository also contains two Path Computation Clients, QuickClient, which by means of command line options can generate and receive PCEP messages.
- Netphony-abno. This repository contains a reference implementation of the ABNO controller.
- Netphony-gmpls-emulator. This repository contains a reference java implementation of a Transport Network Emulator. It includes the emulator of a transport Node with GMPLS control capabilities. The Transport Node Emulator has a RSVP-TE process and an OSPF-TE daemon, as well as PCEP interface for remote instantiation of LSPs. The PCEP interface is stateful, so it reports its LSPs through that interface.
Build an emulated environment
If you want to test the code and see the packet information. Please follow the steps in the Set-up scenario page.
There are VMs available here, if you don't want to compile the code.