Übersicht
nftlb stützt sich auf den Netfilter / Nftables Linux Networking Stack. Mit diesem neuen Stack werden neue Konzepte und Fähigkeiten bereitgestellt, die wir benötigen, um in das aktuelle Load-Balancing-Design zu passen.
Dieser Artikel soll einen Überblick darüber geben, wie der Datenpfad und der Steuerpfad von nftables für den Lastenausgleich ausgelegt sind.
Datenpfad-Hooks
Dies sind die Netfilter-Hooks, die nftlb unter Ausnutzung der konfigurierbaren Ketten verwendet. Es müssen neue Konzepte wie das Verschieben von Verbindungen nachverfolgt werden, um die Weiterleitung von Verbindungen zu den Backends zu beschleunigen.
------------ | DNSBL | ------------ | queue ingress | prerouting forward postrouting ------------ ------------- -------------- ------------ ------- -------------- ------- | filter | filter | filter | | filter | nat | | filter | | nat | | 0 | 50-99 | 100 | | -150 | 0 | | 0 | | 100 | --> | | | Sec Policies |-( Conntrack )-> | Sec Limits | |-( Routing )-> | | --> | | | Clustering | Flow tables | DSR | VS{} | Helpers | dNAT | VS{} | Flow offload | | sNAT | | | | stless dNAT | | Marks | | -------------- ------- ------------ ------------- -------------- ------------ -------
Eintritt
(0) -Filter: Reserviert für die Clusterverwaltung. Noch nicht in nftlb enthalten.
(50-99) -Filter: Reserviert für Flusstabellenbeschleunigung. Noch nicht in nftlb enthalten.
(100) -Filter: In der Reihenfolge reserviert für: Sicherheitsrichtlinien (Blacklists und Whitelists), Direct Server Return und zustandslose dNAT-Topologien.
Prerouting
(-150) Filter: Reserviert für Sicherheitsbeschränkungen pro virtuellem Dienst oder Backend wie: Maximale Anzahl von Verbindungen, Limit von TCP RST pro Sekunde, Limit von TCP SYN pro Sekunde, Drop von nicht strengen TCP-Verbindungen, Warteschlange zum DNSBL-Dienst, virtuelle Dienste und Backend-Markierungen , Nutzung von Helfern, Protokollierung von Eingabeverbindungen pro virtuellem Dienst.
(0) nat: Reserviert für NAT-Mangeln am Bestimmungsort.
(0) -Filter: Reserviert für Flow-Offload. Noch nicht in nftlb enthalten.
postrouting
(100) nat: Reserviert für NAT-Mangeln am Bestimmungsort.
Kontrollpfad
Der nftlb-Steuerpfad ist als Daemon konzipiert, der einen einfachen http-Server mit einer API oder einer eigenständigen Binärdatei bereitstellt, die eine Konfigurationsdatei im JSON-Format akzeptiert.
------------- traduction ------------- -------- JSON API | | objs to nft | | netlink | | ------------> | http server | --------------> | libnftables | --------> | kernel | | | | | | | | ------------- | ------------- -------- | netlink | ---------------------------------------