Contenu
Aperçu
nftlb repose sur la pile réseau netfilter / nftables linux. Avec cette nouvelle pile, nous fournissons de nouveaux concepts et capacités que nous devons intégrer dans la conception actuelle de l'équilibrage de charge.
Cet article vise à donner un aperçu de la conception du chemin de données et du chemin de contrôle de l'équilibreur de charge nftables.
Crochets de chemin de données
Ce sont les crochets Netfilter utilisés par nftlb, tirant parti des chaînes configurables. De nouveaux concepts, tels que le déchargement du suivi des connexions, doivent être inclus afin d’accélérer les connexions transférées établies vers le serveur.
------------ | 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 | | -------------- ------- ------------ ------------- -------------- ------------ -------
entrée
Filtre (0): Réservé pour la gestion des clusters. Pas encore inclus dans nftlb.
Filtre (50-99): Réservé pour l'accélération des tables de flux. Pas encore inclus dans nftlb.
Filtre (100): Réservé, dans l'ordre, pour: les topologies de stratégies de sécurité (listes noires et listes blanches), de retour direct de serveur et dNAT sans état.
préroutage
Filtre (-150): Réservé pour la sécurité Limites par services virtuels ou par serveur, telles que: nombre maximal de connexions établies, limite de TCP RST par seconde, limite de TCP SYN par seconde, suppression des connexions TCP non strictes, service de file d'attente à DNSBL, service virtuel et marques d'arrière-plan , utilisation d’aides, journalisation des connexions d’entrée par service virtuel.
(0) nat: Réservé à la destination NAT.
vers l'avant
Filtre (0): Réservé au déchargement de flux. Pas encore inclus dans nftlb.
postrouting
(100) nat: Réservé à la destination NAT.
Chemin de contrôle
Le chemin de contrôle nftlb est conçu comme un démon qui fournit un serveur http simple avec une API ou un binaire autonome qui accepte un fichier de configuration au format JSON.
------------- traduction ------------- -------- JSON API | | objs to nft | | netlink | | ------------> | http server | --------------> | libnftables | --------> | kernel | | | | | | | | ------------- | ------------- -------- | netlink | ---------------------------------------