Home
Über die LugBE | Mailing List | Treff & Events | Projekte | lost+found | Support

Load Measuring Agent for Checkpoint Firewall-1(TM)

Der loadd implementiert das Load Agent API von Checkpoint. Dieses Protokoll wird
vom ConnectControl-Modul von Firewall-1 verwendet, um festzustellen, welcher der Server,
zwischen denen ein Load Balancing gemacht wird, am wenigsten Systemlast hat. Dieser Server
bekommt dann die nächste Session von der Firewall zugewiesen.

Dieser loadd läuft entweder standalone oder wird vom inetd gestartet. Seine Konfiguration
(welche Ports, maximale Anzahl parallele Connects, benötigte Prozesse) liest er
aus /etc/loadd.conf oder von der Kommandozeile. Per Default
horcht er auf UDP-Port 1600 auf allen Interfaces auf Anfragen, die dem Checkpoint-Protokoll
entsprechen. Kommt eine solche Anfrage von der Firewall, zählt loadd mit Hilfe von netstat, grep und wc
die offenen Sockets für jeden konfigurierten Port, vergleicht sie mit der maximal zulässigen
Anzahl und berechnet daraus die Systemlast auf einer Skala von 0-230. Dieser Wert wird dann
an den anfragenden Client zurückgeschickt. Läuft einer der benötigten Prozesse
nicht (z.B. httpd, in /etc/loadd.conf konfiguriert), wird die maximale Systemlast (230) zurückgegeben,
und die Firewall darf laut Protokoll keinen neuen Verbindungen an diesen Server schicken.

Installation:

Den Sourcecode herunterladen
$ tar xvf load.tar
$ cd loaddaemon
$ make
$ cp loadd /usr/local/bin
$ cp loadd.conf /etc
/etc/loadd.conf muss noch konfiguriert werden. Hinweise stehen im File selbst und im README.

Optionen:

$ loadd -S [options] startet den daemon standalone.

$ loadd --help

Unsupported option -help

Allowed options are:

   -p [port]: port the server listens on - defaults to 1600
   -h [host]: bind to specific hostname - default is not to bind
   -s [service]: service to be measured - no default
   -l [number]: allowed number of concurrent connections - no default
   -a [application]: checks for application that must be running
   -f [file]: configuration file to use - default is /etc/loadd.conf
   -S: run as standalone server
   -q: quiet, no version output
   -v: print version and exit
   -D: enable light debugging

Alternativ kann der loadd auch vom inetd gestartet werden; folgende Zeile gehört dazu in /etc/inetd.conf:

loadd dgram  udp  wait  nobody  /usr/local/bin/loadd  loadd -q [-options]

Und in /etc/services die Zeile:

loadd   1600/udp

Test:

Zum Testen des loadd gibt's den loadc.
$ loadc <hostname>
gibt (neben ein bisschen Geplauder ;-) die Last und den Server String aus, den der Client geschickt hat
und den der Server unverändert zurückschicken muss.
$ ./loadc power
$ Connected to power (192.168.16.3) on port 1600
$ Received reply from 192.168.16.3... hooray
$ Reply is: Type:1; Load: 230; String: Hello LoadDaemon Server
(in diesem Fall lief der httpd nicht)

That's all.

Achtung ALPHA!

Da der loadd zwar im Einsatz war, aber nicht von einer grösseren Gruppe Anwender getestet
wurde, ist er immer noch als Software im Alpha-Stadium anzusehen. Darüber hinaus
scheint Checkpoint sein eigenes Protokoll nicht einzuhalten, so dass sich mit Version 4.0 SP2 von Firewall-1
Probleme ergaben, die schliesslich dazu führten, dass das Load Balancing nicht mehr auf der
Firewall gemacht wird, sondern auf spezialisierter Hardware.
Falls sich trotzdem jemand für dieses Stück Geschichte interessiert: nur zu.

Ursprünglich war loadd in C++ geplant. Im Lauf der Entwicklung wurde aber immer mehr
normales C daraus. Es kann sein, dass nicht jeder reine C-Compiler mit dem Source klarkommt. In diesem
Fall probiert man es am besten mit einem C++-Compiler.

Copyright:

Das ganze steht natürlich unter der GPL. Copyright 2000 Markus Wernig.


Webmaster at lugbe.ch

Die Artikel dieser Seite stehen unter Copyleft ihrer jeweiligen Autoren. Ihre Nutzung, Wiedergabe etc. untersteht den Bedingungen der GNU Free Documentation License (http://www.gnu.org/copyleft/fdl.html), wo nicht explizit anders vermerkt.