Floodschutz des D-T-Net
Funktionsweise des Floodschutz ('excess flood') und der Floodbremse
Empfang der Daten in den Puffer
Der IRC-Server hat für jeden seiner IRC-Clients einen seperaten Empfangspuffer, der
standardmäßig 1000 Zeichen groß ist. Alles, was der Client schickt,
gelangt zunächst in diesen Puffer. Die Daten wird in einem späteren
Schritt dann aus diesem Puffer in der Reihenfolge des Eintreffens
wieder ausgelesen und verarbeitet.
Die Floodbremse
Um zu verhindern, dass jemand
den IRC-Server in hoher Geschwindigkeit mit Daten zumüllt, wird aus dem
Puffer immer nur eine Zeile pro Sekunde ausgelesen. Zeilen mit
Überlänge (mehr als 90 Zeichen) werden hingegen erst nach
{[Zeichenzahl der Zeile]/90 + 1} Sekunden
ausgelesen und dann verarbeitet.
Verarbeitungs-Burst
Da es aber z.B. beim
Pasten eines Textes sehr störend wäre, wenn pro Sekunde maximal eine
Zeile verarbeitet würde, setzt die Bremsung erst nach 10 Zeilen (bei
Zeilenlängen >90 Zeichen jedoch weniger) ein. Dieses verzögerte
Einsetzen der Bremse wird so realisiert, indem beim Auslesen aus dem
Puffer geschaut wird, wieviele Sekunden zuvor Client nichts mehr
geschickt hat. Entsprechend viele Zeilen werden dann auf einmal
verarbeitet. Mehr als 10 Zeilen werden jedoch nie auf einmal ungebremst
verarbeitet, selbst wenn vom Client mehr als 10 Sekunden lang nichts
mehr kam.
Excess Flood
Da die Verarbeitung/Bremsung und
der Empfang der Daten in den Empfangspuffer voneinander getrennt
ablaufen, kann es auch passieren, dass sich Daten im Empfangspuffer
stauen, weil durch die Bremsung die Daten langsamer verarbeitet werden,
als sie eintreffen. Sollte der Puffer voll sein und es treffen weitere
Daten ein, wird die Verbindung zum Client mit der Begründung 'Excess
flood' beendet.