Routing on Service Addresses (ROSA): What is it? What for? How done?
In my recent research, I have been looking intensively into improving what is termed service routing, i.e., the problem of discovering a service in a network and issuing requests, e.g., based on HTTP, in the context of a possibly larger transactions. The current Internet has a plethora of solutions to this problem, most notably the use of DNS for resolving a service name onto an IP address, with which to communicate in the following. Key problems here are the latency incurred for the explicit discovery that is occuring when, e.g., calling the DNS to resolve foo.com into an IP address. Furthermore, virtualization (in particular) has driven the replicated deployment of service implementations, not just in a single network location, using platforms like Kubernetes, but also across several network locations, such as for edge computing scenarios. Here, dynamic changes to which of the replicated execution points to choose pose a further problem of dynamicity, which is particularly problematic in DNS systems due to the relatively long delay in updating any DNS entry mapping to the (now new) IP address, in addition to the use of DNS caches in clients. But also efficiency is an issue since explicit discovery cost not just time (thus impacting latency), but also requires additional messages before communication to the chosen endpoint can finally commence.
In previous work, we applied a solution that was based on a path-based forwarding solution developed for information-centric networking (ICN), although still requiring an explicit discovery as well as path computation (which is only possible to distribute in small scale deployments).
In our new approach, we not just applied a routed approach, but positioned the routing as a shim overlay using IPv6 extension headers, thus ROSA is located between transport and routing layer in the well-known layered OSI system model. With this, we are able to perform the needed discovery as an in-band pathfinding solution, where the path finding already carries application payload, thus further reducing the time to first byte for any application interaction.
This work is currently being introduced into the IETF as an individual draft to the Routing (RTG) WG, as joint work with my partners Luis Contreras (Telefonica), Paulo Mendes (Airbus), and Jens Finkhäuser (Interpeer), with plans on organizing a side meeting for the upcoming IETF117 in Sam Fransisco. We have developed a prototype to test, evaluate, and showcase ROSA capabilities and use cases, seeking collaborations with external partners to drive forward this work.
So what is ROSA, actually, and what is good for? In a recent seminar that I presented to the Systems Research Group at the Department of Computer Science and Technology at Cambridge University, I was given the opportunity to present motivation, background, and approach to ROSA with an example of using compute-awareness to further improve the performance of a ROSA-based service routing solution, particularly in comparison to existing, explicit discovery-based, solutions (like DNS but also others).
So instead of going through a lengthy blog to explain ROSA in more detail (I am more than happy to do this for anybody who would want this – drop me a message if you do), I thought to point you to references that may help you understand more about ROSA:
- The IETF draft on ROSA provides an extensive list of use cases, analysis, requirements, and technical details – but I must place a disclaimer here that the draft is quite long (about 50 pages). We are in the process of splitting the draft in easier to digest pieces, outlining the problem & use cases, gap analysis and requirements, and design insights in separate documents – so stay tuned by checking the IETF pages (such as my datatracker page, for instance) for any upcoming updates.
- Alternatively, I suggest watching the aforementioned seminar material. I am linking the video of the presentation below for you to watch. It includes much of what the draft entails and more (like our compute-awareness work) as well as a short demo, both discussed as slides and actual execution in a virtualized environment. Enjoy watching (skip the first minute of setup problems).