Oktopus simplifies the process of designing a multicast application. It focus on what the network operator needs, and not on how to calculate the results.

What is Oktopus?

Every multicast session has a source transmitting traffic, and destinations receiving this traffic. A multicast graph spans the routers of the source and destinations inside the provider network. With the existence of multiple (conflicting) multicast requirements and objectives, it is becoming complex and error-prone task for the network operator to calculate multicast graphs (the control plane) and configure the network devices (the data plane).

Oktopus isolates what goals the network provider needs to achieve, from how these goals are actually realized. The network operator writes their objectives in a high-level programming language, and Oktopus automatically translates these objectives to data plane configurations such as populating router rules or attaching labels to packets. Oktopus has two main components:

Oktopus APIs

The Oktopus APIs provide a set of high-level interfaces to developers and network operators to define their applications.

app = App(topo_path)
  # Session APIs: session requirements
  s = Session(addr, src, dsts, bw)
  s.traverse(['fw', 'ids']) # service chaining 
  # Routing APIs: routing obj. and link constraints
  r = Routing()
  for link in app.getLinks():
      r.addLinkCapConstraint(link, 'bps', 1e9)
  # App APIs: available resources and services
  app.addSessions(s); app.setRoutes(r) 
  app.setAlgorithm('oktopus') # or other algorithms
  app.solve() # produces a solution

Optimization engine

The optimization engine receives these inputs from the APIs, and runs the Oktopus algorithm to compute the multicast graphs.

Service chaining example.

Oktopus Algorithm

The Oktopus algorithm runs at the control plane of the ISP network to calculate the multicast distribution graph for a given session. Oktopus algorithm aims at minimizing the routing cost for each multicast session. Oktopus consists of two steps. The first one generates a set of network segments for the ISP network, and the second step uses these segments to efficiently calculate the multicast distribution graph. Oktopus algorithm has a fine-grained control over the selection of links in the distribution graphs, which leads to significant improvements in the quality of the calculated graphs. Specifically, Oktopus algorithm increases the number of allocated sessions because it can reach ISP locations that have the required services, and thus includes them in the calculated graph. Moreover, Oktopus algorithm can reduce the routing cost per session as it carefully chooses links belonging to the graph.

The figure shows Oktopus allocates 30% more sessions compare to the state of the art algorithm (MSA) on Dfn network topology.

Oktopus vs MSA.

Our Features


Oktopus API is simple to use. The design of the API specifically tailored to the network application needs. It allows the operator to focus on expressing the application's goals rather than designing complex algorithms.


Oktopus framework is highly configurable. It allows the user to custom defines the network properties to match the application needs.


Oktopus supports many multicast traffic engineering applications objectives, such as minimizing the routing, minimizing the maximum link load, etc.

Service Chaining

Oktopus provides an efficient heuristic algorithm to solve multicast service chaining applications.


Oktopus outperforms the closest algorithm in the literature in terms of the number of allocated multicast sessions by up to 37%. Moreover, Oktopus computes the multicast graphs multiple orders of magnitude faster than commercial linear programming software such as CPLEX.