KTCPVS
Introduction
KTCPVS stands for Kernel TCP Virtual Server. It implements application-level load balancing inside the Linux kernel, so called Layer-7 switching. Since the overhead of layer-7 switching in user-space is very high, it is good to implement it inside the kernel in order to avoid the overhead of context switching and memory copying between user-space and kernel-space. Although the scalability of KTCPVS is lower than that of IPVS (IP Virtual Server), it is flexible, because the content of request is known before the request is redirected to one server.
Architecture
Content-based Schedulers
- Content-based scheduler for simple HTTP service
- Content-based scheduler for persistent HTTP service
- Content-based scheduler for cookie-based HTTP service
- Content-based scheduler for hash-based HTTP service
Implementation
The system implementation of KTCPVS is illustrated in the following figure.
In the KTCPVS, the kernel threads are used to parse the content of requests, forward them to backend servers according to scheduling rules, and relay data between client and server. The user-space program tcpvsadm is to administrator KTCPVS, it can write the virtual server rules inside the kernel through setsockopt, and read the KTCPVS rules through getsockopt or /proc file system.