Hoe steekt de software in elkaar?

Gerrit Hiddink (grit@wit387401.student.utwente.nl)
Wed, 28 Oct 1998 12:51:10 +0100 (MET)

Heu,

ik zag in de logfile van koen wat voorbij komen over de onderdelen van de
WWCN software, en ik wou even het een en ander wat nader toelichten:

WWCN gebruikt een aantal typen servers:
1. Conferencing server: onderhoudt verbindingen met clients, en bewaart
van de clients die hij heeft de benodigde channels, users en andere data.
De conferencing servers zijn onderling gekoppeld via een multicast netwerk,
oftewel een netwerk graaf waarin backup routes aanwezig zijn.
Source: ds-versie/cnd

2. Channel Directory Server: deze server bewaart en onderhoudt een actuele
lijst met alle kanalen die er op WWCN bestaan. Data die hij tijdelijk niet
nodig heeft wordt naar disk geswapt. De CDS probeert te detecteren wanneer
Conferencing Servers langs elkaar heen praten, oftewel: wanneer er een
netsplit is geweest die weer gerepareert is. De CDS onderhoudt verbindingen
met andere CDS'en in z'n eigen multicast netwerk (los van die van de
conferencing server), en point-to-point verbindingen met conferencing
servers.
Source: ds-versie/cdsd

3. User Directory Server: deze server bewaart een *gedeelte* van alle users
die (online of offline) bekend zijn in het WWCN netwerk. Een groep UDS'en
die tezamen een copie hebben van *alle* users worden een "cluster" genoemd.
De UDS onderhoudt verbindingen met andere UDS'en in z'n eigen multicast
netwerk, en point-to-point verbindingen met conferencing servers.
Source: ds-versie/udsd

Status: Van de functionaliteit van de conferencing server is 95%
geimplementeerd, van de CDS is 70% af, en van de UDS zo ongeveer 10%.

Verder is de opbouw van alle drie typen server telkens hetzelfde: een
Network Interface Layer is een software laag die al het geneuzel over
sockets, read(), write(), authenticatie, non-blocking connects, reads
en writes voor z'n rekening neemt. Het apparaat heeft een API die te
vinden is in ds-versie/include/nil.h . De point-to-point verbindingen
tussen alle verschillende servers loopt via NIL verbindingen.
Source: ds-versie/nil

Daarbovenop wordt het multicast netwerk gebouwd, dus alle point-to-point
verbindingen in de multicast graaf lopen via NIL verbindingen. De software
laag die dit doet, heet "MCAST", de API is in ds-versie/include/mcast.h .
Het multicast netwerk maakt het mogelijk om groepen te definieren, waarna
een boodschap naar de groep alleen naar de servers wordt gestuurd die
in die groep zitten. Ook kan gebroadcast worden naar alle servers. De laag
houdt zelf routes bij, ook als er een server uitvalt. Heb je verder geen
omkijken naar.

De servers zelf tenslotte worden bovenop de mcast en nil layer gebouwd.

Een leeg raamwerk van een server die alleen NIL gebruikt is te vinden in
ds-versie/nil_service, en een raamwerk van een server die NIL en MCAST
gebruikt is te vinden in ds-versie/mcast_service. Dit zijn dingetjes die
compilen en runnen.

Elke server heeft een subdir "nil" en "mcast" (bv ds-versie/cnd/nil/)
waar symlinks in staan naar de echte nil source. Dit omdat de tracing,
logging en andere compile opties per server kunnen verschillen.

Nou... save dit en lees het nog es een paar keer door. Ik hoop dat het
dan allemaal iets duidelijker wordt.

Groeten, Grit