The Xads protocol and its phpXads implementation

Author: Cedric Veilleux

This is an initial draft. I am putting these together to generate feedback about my ideas. I want to know if there would be a need for such things, what are the weak and strong points, etc. So do not hesitate to send me your comments.

What is Xads?

Xads is an XML-RPC based protocol aiming at Administration of Distributed System. The goal is to provide a framework allowing one part of a network to make a remote procedure call to another part of the network in order to get a specific task done.

Intended audience of this document

This document is intended for developers responsible of system administration.

What are Xads main goals?

How does it works?

Currently, I believe there should be 3 main components in a Xads system:

Xads Client
The client is the part that requests a task to be performed. It is never in direct communication with the server itself, all requests go through the agents manager. There can exist many different clients administering the same set of servers through the manager. These clients can take many forms. A client could be a script on a website requesting the creation of an email account when a user registers, a complex end-user control panel in a web hosting environment, a GUI allowing point and click administration of a server farm, etc. The interesting part is that many different clients can co-exist and administer the same things, allowing an administrator to use a GUI client to manually fix a problem caused by a bug in an automated script for example.

Xads Central Agents Manager
The agents manager is in communication with both the clients and the server agents. It holds the information about the various services offered by the server agents. It informs the client of the available services. Depending on the services it handles, it can hold large amount of information in its database. For example, it can maintain the list of all the mail accounts for a specific mail service offered by a server agent. The client can request information about these services and request to have modifications made to them. In the second case, the request will be made available to the server which will accept or deny to perform it. If it accepts to perform it, it will inform its manager when it is done. The manager will mark the request as completed.

Xads server agent
The server agent runs on each administered server. Its job is to perform the task the Agents Manager asks it. It handles all the services offered on the machine it is running, for example the administration of web, mail, ftp servers as well as system accounts, etc. Complex agents can also monitor the resources used by each services and report this to its agent manager. A client will then be able to retrieve this information from the agents manager and display it to somebody, or charge a web-hosting client for overage use, notifiy an administrator that a free-mail user is using too much resources or simply mail usage report stats the the user. There are a lot of possibilities.


Xads Services
A service is offered by a server agent, for example a user account on a unix server. There can exist many implementation of the same service to suit specific needs. For example one might need to create its own user account creation and administration service implementation because it needs to create the user accounts in a very specific way or to collect and report specific information on the resource usages of each user accounts. The various implementations of Xads should allow easy extensibility to new services. For example, the planned PHP implementation, phpXads, will allow modules to be created for the client library, the agents manager and the server agent for each services, which will allow easy customizations and creation of new modules.

Status of Xads and phpXads

We are currently in the initial planning stage. If you are interested in helping with the development or if you have ideas to share, feel free to contact me:

SourceForge Logo