Difference between revisions of "KTCPVS"

From LVSKB
Jump to: navigation, search
m
(Implementation)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Introduction ==
 
== 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.
+
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 switch]]ing 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 ==
 
== Architecture ==
Line 9: Line 9:
 
[[Image:Ktcpvs-architecture.jpg|center]]
 
[[Image:Ktcpvs-architecture.jpg|center]]
  
In the system, there are KTCPVS load balancer that can forward requests to different servers according to the content of requests, and backend servers that are running different services. KTCPVS load balancer and backend servers are interconnected through LAN/WAN.
+
In the system, there are KTCPVS [[load balancer]] that can forward requests to different servers according to the content of requests, and backend servers that are running different services. KTCPVS [[load balancer]] and backend servers are interconnected through LAN/WAN.
  
 
== Content-based Schedulers ==
 
== Content-based Schedulers ==
Line 24: Line 24:
 
[[Image:Ktcpvs impl.jpg|center]]
 
[[Image:Ktcpvs impl.jpg|center]]
  
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.
+
In the KTCPVS, the [[kernel thread]]s 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.
 +
 
 +
In the 0.0.xx versions, KTCPVS adopts the multiple-thread [[Server Architecture|server architecture]], because it's easy to implement at early stage.
 +
 
 +
== Software ==
 +
 
 +
See http://www.linuxvirtualserver.org/software/ktcpvs/ktcpvs.html for downloading the KTCPVS software.
 +
 
 +
== Documentation ==
 +
 
 +
* [[Compiling KTCPVS]]
  
 
== Examples ==
 
== Examples ==
Line 32: Line 42:
 
* [[KTCPVS Wish List]]
 
* [[KTCPVS Wish List]]
  
 +
[[Category:LVS Software]]
 
[[Category:Load Balancing]]
 
[[Category:Load Balancing]]
 +
[[Category:Terms and Abbreviations]]

Latest revision as of 15:05, 5 April 2007

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

The system architecture of KTCPVS cluster is illustrated in the following figure:

Ktcpvs-architecture.jpg

In the system, there are KTCPVS load balancer that can forward requests to different servers according to the content of requests, and backend servers that are running different services. KTCPVS load balancer and backend servers are interconnected through LAN/WAN.

Content-based Schedulers

Implementation

The system implementation of KTCPVS is illustrated in the following figure.

Ktcpvs impl.jpg

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.

In the 0.0.xx versions, KTCPVS adopts the multiple-thread server architecture, because it's easy to implement at early stage.

Software

See http://www.linuxvirtualserver.org/software/ktcpvs/ktcpvs.html for downloading the KTCPVS software.

Documentation

Examples

Development