<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://linux-vserver.at/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://linux-vserver.at/index.php?action=history&amp;feed=atom&amp;title=vcd%3AIntroduction</id>
		<title>vcd:Introduction - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://linux-vserver.at/index.php?action=history&amp;feed=atom&amp;title=vcd%3AIntroduction"/>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/index.php?title=vcd:Introduction&amp;action=history"/>
		<updated>2026-04-09T23:46:47Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=4870&amp;oldid=prev</id>
		<title>Glenn: +cat</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=4870&amp;oldid=prev"/>
				<updated>2011-10-21T19:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;+cat&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:14, 21 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 196:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 196:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;standard data for logging and graphing applications - &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;standard data for logging and graphing applications - &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;for later use in reports or graphing processes.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;for later use in reports or graphing processes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Configuration]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Glenn</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=2413&amp;oldid=prev</id>
		<title>85.181.117.46: made 2256 bits =&gt; 2 the power of 256 bits</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=2413&amp;oldid=prev"/>
				<updated>2007-03-21T06:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;made 2256 bits =&amp;gt; 2 the power of 256 bits&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:49, 21 March 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 122:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 122:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;cipher. WHIRLPOOL is a Miyaguchi-Preneel construction &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;cipher. WHIRLPOOL is a Miyaguchi-Preneel construction &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;based on a substantially modified Advanced Encryption &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;based on a substantially modified Advanced Encryption &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Standard (AES). Given a message less than &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2256 &lt;/del&gt;bits in &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Standard (AES). Given a message less than &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;2&amp;lt;sup&amp;gt;256&amp;lt;/sup&amp;gt; &lt;/ins&gt;bits in &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;length, it returns a 512-bit message digest.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;length, it returns a 512-bit message digest.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>85.181.117.46</name></author>	</entry>

	<entry>
		<id>http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=2024&amp;oldid=prev</id>
		<title>Hollow at 16:47, 30 November 2006</title>
		<link rel="alternate" type="text/html" href="http://linux-vserver.at/index.php?title=vcd:Introduction&amp;diff=2024&amp;oldid=prev"/>
				<updated>2006-11-30T16:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Abstract ==&lt;br /&gt;
&lt;br /&gt;
In order to ease management of Virtual Private Servers &lt;br /&gt;
a central instance is needed to provide an open and &lt;br /&gt;
well-known Application Programming Interface (API). The &lt;br /&gt;
VServer Control Daemon (VCD) is a daemon running in the &lt;br /&gt;
host context providing the aforementioned API via &lt;br /&gt;
XMLRPC, a simple protocol for Remote Procedure Calls &lt;br /&gt;
(RPC) using the XML Markup Language.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
&lt;br /&gt;
The current user-space implementation of the &lt;br /&gt;
Linux-VServer kernel API suffers a mechanism to call &lt;br /&gt;
any of the management commands regardless of the &lt;br /&gt;
language or location of the caller. Such callers &lt;br /&gt;
include non-C lanuages like Python, PHP or Ruby, remote &lt;br /&gt;
GUIs for KDE, Gnome or even Windows as well as web &lt;br /&gt;
control panels for service providers.&lt;br /&gt;
&lt;br /&gt;
Therefore the VServer Control Daemon defines an API &lt;br /&gt;
accessible by any caller capable of both the HTTP and &lt;br /&gt;
the XMLRPC protocol -- two open standards implemented &lt;br /&gt;
in most common languages.&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
The VServer Control Daemon consists of five major &lt;br /&gt;
parts: the configuration database (VXDB), the XMLRPC &lt;br /&gt;
Server, the XMLRPC Clients, the Template Management as &lt;br /&gt;
well as a light-weight Statistics Collector.&lt;br /&gt;
&lt;br /&gt;
[[Image:Vcdarch.jpg|frame|center|VServer Control Daemon Architecture Overview]]&lt;br /&gt;
&lt;br /&gt;
=== Configuration Database - VXDB ===&lt;br /&gt;
&lt;br /&gt;
The configuration database (VXDB) stores all virtual &lt;br /&gt;
private server related configuration data like disk &lt;br /&gt;
limits, CPU scheduler, or network adresses. Furthermore &lt;br /&gt;
the daemon stores information about its users and their &lt;br /&gt;
permissions as well as owned virtual servers in the &lt;br /&gt;
database. For convenience and size reasons the database &lt;br /&gt;
is implemented using SQLite.&lt;br /&gt;
&lt;br /&gt;
SQLite is a small C library that implements a &lt;br /&gt;
self-contained, embeddable, zero-configuration SQL &lt;br /&gt;
database engine. The decision for using SQLite as &lt;br /&gt;
database backend is based on the following key-features &lt;br /&gt;
of SQLite:&lt;br /&gt;
&lt;br /&gt;
* Transactions are atomic, consistent, isolated, and durable even after system crashes and power failures&lt;br /&gt;
* Zero-configuration - no setup or administration needed&lt;br /&gt;
* A complete database is stored in a single disk file&lt;br /&gt;
* Database files can be freely shared between machines with different byte orders&lt;br /&gt;
* Small code footprint: less than 250KB&lt;br /&gt;
* Faster than popular client/server database engines for most common operations&lt;br /&gt;
* Simple, easy to use API&lt;br /&gt;
* Self-contained: no external dependencies&lt;br /&gt;
&lt;br /&gt;
=== The XMLRPC Server ===&lt;br /&gt;
&lt;br /&gt;
The XMLRPC Server is the core of the VServer Control &lt;br /&gt;
Daemon and implements the XMLRPC standard for Remote &lt;br /&gt;
Procedure Calls (RPC). XMLRPC is a specification and a &lt;br /&gt;
set of implementations that allow software running on &lt;br /&gt;
disparate operating systems, running in different &lt;br /&gt;
environments to make procedure calls over the Wide Area &lt;br /&gt;
Network (Internet) or Local Area Network (Intranet).&lt;br /&gt;
&lt;br /&gt;
==== The XMLRPC Protocol ====&lt;br /&gt;
&lt;br /&gt;
XMLRPC is a wire protocol that describes an XML &lt;br /&gt;
serialization format that clients and servers use to &lt;br /&gt;
pass remote procedure calls to each other. There are &lt;br /&gt;
two features that make this protocol worth knowing. The &lt;br /&gt;
first is that the details of parsing the XML are hidden &lt;br /&gt;
from the user. The second is that clients and servers &lt;br /&gt;
don't need to be written in the same language.&lt;br /&gt;
&lt;br /&gt;
XMLRPC is designed to be as simple as possible, while &lt;br /&gt;
allowing complex data structures to be transmitted, &lt;br /&gt;
processed and returned.&lt;br /&gt;
&lt;br /&gt;
Here are some examples of remote procedure call (RPC) &lt;br /&gt;
style communications: &lt;br /&gt;
&lt;br /&gt;
* There is a server that can measure atmospheric temperature. A client anywhere in the world can ask the server at any time what the temperature is. The &amp;quot;what temperature is it?&amp;quot; request and the &amp;quot;the temperature is...&amp;quot; response constitute an RPC transaction.&lt;br /&gt;
* There is a server that can turn a light on or off. A client can tell the server to turn the light on. A request to turn the light on and the acknowledgement that the light has been turned on constitute an RPC transaction.&lt;br /&gt;
* There is a server that knows the phone numbers of a million people. A client can supply a name and get back the phone number of the named person.&lt;br /&gt;
&lt;br /&gt;
Here are some kinds of communication that are not RPC: &lt;br /&gt;
&lt;br /&gt;
* A long-lived connection such as an SSH login session.&lt;br /&gt;
* A high volume transfer such as an FTP download.&lt;br /&gt;
* A one-way transmission such as a UDP packet.&lt;br /&gt;
* A dialogue such as an SMTP (mail) transaction.&lt;br /&gt;
&lt;br /&gt;
Based on XML nearly any application can be enabled to &lt;br /&gt;
call methods defined by the XMLRPC Server. The fact &lt;br /&gt;
that XML is written in plain-text and also easily &lt;br /&gt;
readable by humans allows tracing and debugging with no &lt;br /&gt;
additional overhead or learning curve.&lt;br /&gt;
&lt;br /&gt;
The server defines a global registry of methods &lt;br /&gt;
accessible by its clients. These methods are devided in &lt;br /&gt;
several logical parts and seperated by a dot in their &lt;br /&gt;
method name. For a list of available methods see below. &lt;br /&gt;
&lt;br /&gt;
==== Authentication ====&lt;br /&gt;
&lt;br /&gt;
Authentication in the VServer Control Daemon is based &lt;br /&gt;
on the cryptographic hash function WHIRLPOOL. WHIRLPOOL &lt;br /&gt;
is a cryptographic hash function designed by Vincent &lt;br /&gt;
Rijmen and Paulo S. L. M. Barreto. The hash has been &lt;br /&gt;
recommended by the NESSIE project. It has also been &lt;br /&gt;
adopted by the International Organization for &lt;br /&gt;
Standardization (ISO) and the International &lt;br /&gt;
Electrotechnical Commission (IEC) as part of the joint &lt;br /&gt;
ISO/IEC 10118-3 international standard.&lt;br /&gt;
&lt;br /&gt;
WHIRLPOOL is a hash designed after the Square block &lt;br /&gt;
cipher. WHIRLPOOL is a Miyaguchi-Preneel construction &lt;br /&gt;
based on a substantially modified Advanced Encryption &lt;br /&gt;
Standard (AES). Given a message less than 2256 bits in &lt;br /&gt;
length, it returns a 512-bit message digest.&lt;br /&gt;
&lt;br /&gt;
For security reasons the clear-text password is never &lt;br /&gt;
stored in VXDB. The client will send the password as &lt;br /&gt;
plain-text - the server then creates a WHIRLPOOL hash &lt;br /&gt;
using the submitted password and compares its result &lt;br /&gt;
with the hash stored in VXDB.&lt;br /&gt;
&lt;br /&gt;
==== Access Restrictions ====&lt;br /&gt;
&lt;br /&gt;
For a fine-grained access control the server implements &lt;br /&gt;
its own set of capabilities. A capability is a lot like &lt;br /&gt;
the keys on your key ring. As an example, consider your &lt;br /&gt;
car key. It works on a specific car (it designates a &lt;br /&gt;
particular object), and anyone holding the key can &lt;br /&gt;
perform certain actions (locking or unlocking the car, &lt;br /&gt;
starting the car, opening the glove compartment). You &lt;br /&gt;
can hand your car key to me, after which I can open, &lt;br /&gt;
lock, or start the car, but only on your car. Holding &lt;br /&gt;
your car key won't let me test drive my neighbor's Lamborghini.&lt;br /&gt;
&lt;br /&gt;
==== Owner Checks ====&lt;br /&gt;
&lt;br /&gt;
To ensure the distinction between your car and the &lt;br /&gt;
Lamborghini another access control system has to be &lt;br /&gt;
implemented. Therefore the server also implements owner &lt;br /&gt;
checks for most of its methods. This results in an &lt;br /&gt;
extension to the capability model explained above. &lt;br /&gt;
Instead of using one key per car, you can now drive &lt;br /&gt;
multiple cars using just one key.&lt;br /&gt;
&lt;br /&gt;
Still, this model has a noticable flaw: Imagine your &lt;br /&gt;
company has two hundred cars and your top management &lt;br /&gt;
should have access to all cars. Adding all members of &lt;br /&gt;
the management to the owner list of every single car &lt;br /&gt;
can become a pain in the ass very quickly. Therefore &lt;br /&gt;
the user database in VXDB implements the adminstrator &lt;br /&gt;
flag. Using this flag all owner checks are passed &lt;br /&gt;
without even consulting the owner lists in VXDB.&lt;br /&gt;
&lt;br /&gt;
=== XMLRPC Clients ===&lt;br /&gt;
&lt;br /&gt;
The XMLRPC Clients on the other hand connect to the &lt;br /&gt;
XMLRPC Server using the HTTP protocol. They need to &lt;br /&gt;
pass authentication information, the method name they &lt;br /&gt;
wish to call and optionally parameters specific to the &lt;br /&gt;
called method. It is important to know that the &lt;br /&gt;
connection between server and client is not persistent, &lt;br /&gt;
i.e. you send one request, get one answer, and the &lt;br /&gt;
connection will be closed afterwards. This also implies &lt;br /&gt;
the necesity of passing authentication information with &lt;br /&gt;
every method call. After the request has been received &lt;br /&gt;
and processed the method returns a fault notification &lt;br /&gt;
in case of any error or a method specific return value.&lt;br /&gt;
&lt;br /&gt;
=== The Template Management ===&lt;br /&gt;
&lt;br /&gt;
The Template Management consists of various scripts and &lt;br /&gt;
XMLRPC methods used to build and create new virtual &lt;br /&gt;
private servers. The Template Build process assembles a &lt;br /&gt;
complete root filesystem usable in virtual private &lt;br /&gt;
servers, and stores its content in a single tarball, &lt;br /&gt;
the Template Cache.&lt;br /&gt;
&lt;br /&gt;
=== The Statistics Collector ===&lt;br /&gt;
&lt;br /&gt;
The Statistics Collector is a very light-weight daemon &lt;br /&gt;
used to collect time-series data of running virtual &lt;br /&gt;
private servers. This data includes memory usage, &lt;br /&gt;
number of processes or cpu usage. The collected data is &lt;br /&gt;
stored in Round Robin Databases (RRD) - the industry &lt;br /&gt;
standard data for logging and graphing applications - &lt;br /&gt;
for later use in reports or graphing processes.&lt;/div&gt;</summary>
		<author><name>Hollow</name></author>	</entry>

	</feed>