Main Page

From SARC

Jump to: navigation, search

Contents

What is SARC?

SARC stands for Self-Aware Relay Chat.

Some time in early 2006, after having spent a few years administering an Internet Relay Chat network, I (Alan) thought that it would be awesome if it were possible to have an almost-zero-maintenance chat network which also had true redundancy.

What's wrong with IRC?

Netsplits!

Anybody who has spent a significant amount of time on an IRC network will know what a netsplit is - when a connection between servers dies for some reason, leaving part of the network isolated. These can be inconvenient on many level - for the users who miss messages, for the users who end up with several hundred "part" messages in their chat windows, for the administrators who have to be on the ball to route around the problem.

IRC is based fundamentally on a minimum spanning tree topology, and this means the network is inherently hierarchical and while the network is distributed, there is no redundancy and bottlenecks can exist higher up in the hierarchy. This means it is possible for the failure of a single node or a single connection to significantly impact the operation of the network. Yes, most IRC daemons are capable of re-connecting themselves to the network, but this almost always requires more tweaking by the administrators to get a sensible network map. Because there is only one route between any two nodes on an IRC network, the network map must be micromanaged to be as efficient as possible.

This means that to maintain a usable network, nodes must be running on very high availability servers, and even then if that node does fail the network can fall apart (root nodes of IRC networks are important DoS targets).

The aim of SARC in this area is a network with multiple redundancy, which is "self-healing", requiring no human intervention in repairing the network. Multiple redundant links prevent the network from being affected by node failures or connection failures - the Internet would literally have to split in half to break the network. Since one link failing doesn't stop a node being reachable, it's possible to give the network a certain amount of intelligence for identifying where faults lie, avoiding particular connections, etc.

Central services

Services are an important part of large chat networks. They allow users to mask their real identity and protect their network identity from misuse. However, all implementations of IRC services at the moment are single-instance affairs - they are generally a pseudo-server with pseudo-users for interaction with real users. If the services are disabled in some way, this can lead to chaos on a large network, with people using the identity of others, stealing channels, etc. The alternative is stopping anything significant happening while the services are away, which is a major inconvenience for all concerned.

SARC aims to provide a completely distributed services system which is not in any way impaired by loss of nodes.

Personal tools