The performance of a cluster system depends on both the computation performance of the nodes and the communication performance between the nodes. While the computation performance is continously increasing, the communication performance is usually known to be a major bottleneck that limits the overall performance of a cluster system. Many user-level communication(ULC) mechanisms have been proposed to enhance the communication performance, removing the kernel from the critical communication path. Virtual Interface Architecture(VIA) is specification recently introduced as industrial standard for ULC. Even though VIA provides standard interface to application programmers, VIA operations are too primitive to be used in cluster application development generally.
In this thesis, we design and implement a kernel-level sockets layer over VIA, named KSOVIA. We implement sockets operations using VIA operations so that we can preserve sockets semantics completely. Through experiments, we find that the latency of KSOVIA is 7% ~ 16% higher than that of native VIA. Most of the difference is due to the context switching overhead and can not be eliminated as long as KSOVIA resides in kernel. On the contrary, KSOVIA presents 2.66 times higher bandwidth at small messages and 2.25% higher bandwidth at large messages than native VIA. Although KSOVIA shows slightly higher latency than native VIA, it has advantage of full compatibilty with existing sockets interface.