Overlay & Underlay Topologies In OpenDaylight

This post is dedicated to develop an understanding of how Overlay & Underlay Topologies work in OpenDaylight. I have written a small plugin to create a working example of overlay and underlay topologies. But before we jump into what the plugin does, let’s go though some definitions.


As defined in network-topology.yang, for a given topology an underlay topology is a topology on which the given topology is dependent on. So if “abstraction:1″ contains grouping of nodes that belong to topology flow:1, we can say that “abstraction:1″ topology is dependent on flow:1 and hence flow:1 is an underlay topology for abstraction:1 (or abstraction:1 is an overlay topology of flow:1).

network-topology.yang also defines supporting node which allows to capture for any given node, which node (or nodes) in the corresponding underlay topology it maps onto. A node can map to zero, one, or more nodes below it.

Let’s say an abstract group (with an Abstraction-ID-1) has nodes NE-ID 1 and NE-ID 2.

flow:1 will have information about nodes NE-ID1 and NE-ID 2.

abstraction:1 will have an entry for underlay topology as “flow:1″ & node Abstraction-ID 1 will have two supported nodes NE-ID1 and NE-ID 2.


Plugin To Explore Overlay & Underlay Topologies

Now lets see what the plugin does – it exposes following rest APIs:

 How To Use This Plugin

You need to copy abstract-model-0.1.0-SNAPSHOT.jar and abstract-topology-manager-0.1.0-SNAPSHOT.jar in opendaylight’s plugin directory and start the controller. Please contact me here & I will email you the jars.

Example To Create Hierarchical Topologies

When the controller is started, this is how flow:1 looks like (we already know it (wink))

flow_1_topology_initialNow we can use postman to create an overlay topology “abstraction:1″ as below:

This is how abstraction:1 will look like:


Now we will create two abstractions with id abstration-1 (contains nodes 1 & 2) and abstraction-2 (contains nodes 3 & 4) as below.

Note: Assumption is that flow:1 has 4 nodes with node ids 1, 2, 3 & 4 respectively. Also note that underlay-node-ids have to be same as node-ids of nodes in flow:1.

This is how abstraction:1 looks like now:


Following this pattern let’s create another topology abstraction:2 which is an overlay topology of abstraction:1 and add an abstraction group abstraction-3 which contains abstraction-1 and abstraction-2 (which belongs to topology abstraction:1).

abstration_topology_2Thus we can create hierarchical topologies in OpenDaylight using the concept of overlay and underlay topologies.

Accessing Underlay Nodes

Using RPC get-underlay-nodes, we can get references of supporting nodes for a given topology id and given abstraction id:


We can look up them in inventory or topology (flow:1) by creating the right instance identifier.

I hope this tutorial helped you to grasp the concept of hierarchical topologies – please leave a comment if you have more questions and I will try my best to answer them :)


Leave a Reply

Your email address will not be published. Required fields are marked *