nftlb-Entwicklerhandbuch

GESCHRIEBEN VON Zevenet | 30. Juli 2019

Ü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                |
                                       ---------------------------------------
Teilen:

Dokumentation unter den Bedingungen der GNU Free Documentation License.

War dieser Artikel hilfreich?

Verwandte Artikel