The Internet has transformed our lives and has grown to the biggest computer platform we have ever seen.
Over the years various technical improvements have been made to support its ever growing user-base, improve its performance and security, and follow the architectural improvements in computers and network devices. Nevertheless, its basic structure, designed half a century ago, is though as outdated: new requirements cannot be satisfied by the original design, which is asking for refresh or re-design from scratch.
Our goal is to deeply look at issues in the current Internet system, and propose solutions by carefully analyzing and verifying the system, then proofing the solution throughout designs, implementations, and experiments. An important part of our mission is then to present this feedback to Internet actors in order to keep it as an innovative platform.
Library Operating System subproject
Operating system (OS) is at the heart of information technology systems and has been improved its ability and performance as the advance of underlying technology with various contributions. The purpose of OS is being brain of computers, in which various resources are consumed by various components. The brain behaves based on various policies with different objectives of services running on computers. Although research and development of OS has a long history and OS and its implementation of kernel, which is a core part of OS, is already a matured technology, there are still issues with the current usage of OS in newly introduced use cases. Our motivation in library operating system project is to offer a matured operating system in the different environment by not using machine virtualization in order to be more agile and flexible software library.
Extending OS functionalities from the user-space
TCP/IP stacks, which are the fundamentals for end-hosts to communicate over the internet, have been one of the built-ins of OS kernels. On the other hand, past studies had demonstrated the performance and extendability benefits of user-space TCP/IP stacks. However, the user-space TCP/IP stacks cannot be well integrated into the OS ecosystems because they either require to modify the application code or reduce the application performance. This project addresses this problem, and, in particular, explores how applications can transparently switch to an OS subsystem implemented in user-space without code modifications nor performance hit.
Accelerated Network Applications
In today's architectures, cloud applications (such as web servers, key-value stores or databases) execute both the application logic and the network stack on the host CPU. As network speed increases to hundreds of Gbps, this becomes inefficient: previous studies have shown that on such high-speed networks more than half of the CPU cycles are dedicated to TCP/IP processing, which can limit application performance. Network vendors have recently started to propose smartNICs, special network cards that embed additional hardware functionalities for custom packet processing, cryptographic operations, checksum computation, and so on. These smartNICs are drawing the attention of researchers thanks to their flexibility and ease-of-programming. In this project we are exploring ways to offload network processing from the host CPU in order to give back CPU cycles to applications and improve their performance.