An Implementation and Analysis of a Kernel Network Stack in Go with the CSP Style
Harshal Sheth, Aashish Welling

TL;DR
This paper implements a network stack in Go using CSP style, demonstrating that higher-level languages can offer better readability and comparable or improved performance over traditional C implementations in kernel development.
Contribution
It presents the first detailed implementation and analysis of a kernel network stack in Go with CSP style, highlighting its advantages over C in readability and performance.
Findings
GoNet is more readable than C stacks.
GoNet generally outperforms C stacks in speed.
Go with CSP style is a viable kernel development alternative.
Abstract
Modern operating system kernels are written in lower-level languages such as C. Although the low-level functionalities of C are often useful within kernels, they also give rise to several classes of bugs. Kernels written in higher level languages avoid many of these potential problems, at the possible cost of decreased performance. This research evaluates the advantages and disadvantages of a kernel written in a higher level language. To do this, the network stack subsystem of the kernel was implemented in Go with the Communicating Sequential Processes (CSP) style. Go is a high-level programming language that supports the CSP style, which recommends splitting large tasks into several smaller ones running in independent "threads". Modules for the major networking protocols, including Ethernet, ARP, IPv4, ICMP, UDP, and TCP, were implemented. In this study, the implemented Go network…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware System Performance and Reliability · Real-Time Systems Scheduling · Parallel Computing and Optimization Techniques
