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.
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:
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) r.addObjective('minRoutingCost') # App APIs: available resources and services app.addSessions(s); app.setRoutes(r) app.setAlgorithm('oktopus') # or other algorithms app.solve() # produces a solution
The optimization engine receives these inputs from the APIs, and runs the Oktopus algorithm to compute the multicast graphs.
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.