Iip: an integratable TCP/IP stack

Title: iip: an integratable TCP/IP stack

Authors: Kenichi Yasukata (IIJ Research Laboratory)

Scribe: Yao Wang (Xiamen University)

Introduction

The study addresses the challenge of integrating high-performance TCP/IP stacks with existing systems, which is crucial for optimizing network communication. Traditional TCP/IP stacks, typically part of OS kernels, struggle to leverage high-speed NICs efficiently. While performance-optimized TCP/IP stacks offer excellent speed, they are complex to integrate. Conversely, portability-aware TCP/IP stacks are easier to integrate but lack high performance. This discrepancy necessitates a solution that combines both ease of integration and high performance.

Key Idea and Contribution

The authors developed IIP, an integratable TCP/IP stack designed to offer both easy integration and high performance. IIP minimizes integration complexity by implementing only TCP/IP processing functionality and avoiding dependencies on specific CPU architectures, NICs, OS libraries, and compilers. It is implemented in C with compliance to C89 and C++98 standards to ensure compatibility with old and future compilers. For performance, IIP leverages common NIC hardware offloading features, supports zero-copy I/O, and enhances multi-core scalability. This balanced approach addresses the shortcomings of existing TCP/IP stack implementations.

Evaluation

The evaluation demonstrated that IIP achieves significant improvements in multi-core scalability and throughput for various workloads. By utilizing NIC hardware offloading features and optimizing CPU core assignment models, IIP consistently outperforms existing solutions. This result is significant because it shows that developers no longer have to choose between ease of integration and high performance. IIP provides a practical and effective solution that meets both needs simultaneously.

Q&A

Q1: How to solve the existing network applications that rely on system component?
A1: This work mainly provides user level interface for developing high performance applications, and will not change the existing applications. Therefore, features such as kernel interrupts are not supported for the time being.

Q2: What does it mean that iip supports multiple threads?
A2: For portability-aware, the threads supported by iip are green threads, or user-level threads.

Personal Thoughts

I appreciate the authors’ balanced approach in addressing both integration complexity and performance optimization. The detailed analysis of existing TCP/IP stack issues and the innovative design of IIP highlight a thorough understanding of the problem. However, I did not see any comparative experiments with high-performance TCP/IP stacks in the report, which leads me to believe that the work is more oriented towards an extension of the integratable stack.