A Naming Scheme for libRIPC

  • Typ:Bachelorarbeit
  • Datum:11.11.2013
  • Betreuung:

    Prof. Dr. Frank Bellosa, Jens Kehne

  • Bearbeitung:Andreas Waidler
  • Links:PDF
  • Abstract:

    Future cloud scenarios are expected to be realized in a fashion similar to current high-performance computers. Instead of using few powerful nodes that are connected by a simple network technology, they are expected to consist of low cost nodes connected by a network that provides features like user-level I/O or remote DMA. Processes are distributed individually among these nodes and can migrate from one node to another, for example due to hardware failure or load balancing.

    Efficient inter-process communication requires using operating system or library functions that take advantage of advanced features of the network and Support persistent addressing of migrated communication partners. To make full use of advanced features, current high-performance network architectures require communication to be asynchronous and message-based. However, current operating systems rely on sockets for remote inter-process communication. Sockets have synchronous and stream-based semantics, and identify processes by their physical location. Thus, communication mechanisms of current operating systems are not
    suited for future cloud applications.

    LibRIPC is an inter-process communication library designed for such cloud scenarios. LibRIPC provides an interface compatible to the underlying Network hardware and improves performance of cloud applications by taking advantage of the network’s advanced features. To identify processes, it uses hardware-agnostic service IDs which it resolves to network addresses by using a simple broadcastbased scheme. This approach has several disadvantages. First, service IDs are mere integers and hard for humans to remember. Secondly, broadcasting resolution requests creates communication overhead for all processes in the network. Thirdly, any response to a resolution requests has to be trusted. Lastly, there is no mechanism that a process could use to notify communication partners about the fact that it just migrated to a different host.

    This thesis presents a naming scheme for libRIPC that allows processes to be identified by user-chosen service names instead of service IDs, and a Resolution mechanism that reads network addresses securely from a central directory in the network. Lookup results in a capability object, which our naming scheme uses to address communication partners. By sending notifications when a Service migrates to a different host, we enable libRIPC instances of client processes to update their capabilities. By keeping capabilities updated, we ensure that processes can address services using the same token, regardless of whether the service has migrated.

    We describe how we implemented a prototype using Apache ZooKeeper. While evaluation of this prototype against the current resolver of libRIPC showed that ZooKeeper-based resolution of service names takes about 35 times the time it takes to resolve a service ID by using InfiniBand broadcasts, addressing processes via capabilities instead of service IDs proved to add no overhead.

    BibTex:

    @mastersthesis{waidler13NamingSchemeLibRIPC,
     author = {Andreas Waidler},
     title = {A Naming Scheme for libRIPC},
     type = {Bachelor Thesis},
     year = 2013,
     month = nov # "11",
     school = {System Architecture Group, Karlsruhe Institute of Technology (KIT), Germany}
    }