Architecture ¶
L'objectif principal du projet DMS-SDWAN est de fournir une plateforme sécurisée et gérable pour tous vos applications de sécurité. Cela signifie un logiciel de haute qualité, facile à entretenir et sans bogue. Nous pensons qu'avoir un cadre avec une séparation claire des préoccupations est essentiel pour atteindre ces objectifs.
DMS-SDWAN est un fork de pfSense ®. La base de code existante pfSense ® n'applique pas toujours une séparation claire des préoccupations. Cela signifie que nous avons besoin d'une transition de l'ancienne base de code (héritée) vers une nouvelle avec une séparation claire. Nous avons choisi une transition progressive pour éviter un big bang et garder la fonctionnalité du produit riche tout en augmentant la qualité du code. Cela vous permet d'ajouter simplement de nouvelles fonctionnalités avec moins de bugs et temps plus court de mise sur le marché.
Cet article décrit comment y parvenir.
Architecture de haut niveau ¶
Comme le montre le modèle ci-dessus, il y a deux domaines clés dans notre pile, le frontend est implémenté avec PHP / Phalcon et backend à l'aide d'un service personnalisé construit en Python.
Le frontend gère l'interaction de l'utilisateur et communique avec le service backend. Mettre en œuvre les changements de configuration, surveiller et contrôler les services offerts par DMS-SDWAN est effectué par le service backend.
En utilisant un service backend entièrement configurable, nous évitons le codage en dur des services et facilitons la mise en œuvre de nouvelles fonctionnalités.
La pile frontale offre une approche basée sur un modèle pour gérer les données de configuration, y compris la validation automatique.
La manipulation du fichier de configuration de base est gérée au niveau du modèle frontal ; le service backend est simplement un consommateur des informations fournies.
Architecture Back-end ¶
Configd est responsable de l'interaction du système central, comme le démarrage et l'arrêt des démons et la création des fichiers de configuration pour les services et applications utilisés.
Le démon écoute un socket de domaine unix et est capable d'effectuer des actions définies dans son propre répertoire de configuration ("/Usr/local/dmssdwan/service/conf/actions_*.conf").
Actuellement, il existe deux types de services implémentés dans le démon :
-
script: exécuter des scripts externes (rc)
-
inline: effectuez des actions en ligne qui font partie de configd, actuellement uniquement la génération de modèles.
Architecture frontale ¶
Routage ¶
Le framework DMS-SDWAN utilise des composants de Phalcon dans la mesure du possible ; la première couche initialise le routage de Phalcon, qui gère les requêtes et les transmet au contrôleur en fonction de son url. Le contenu utilisateur est généré à l'aide de modèles Volt, qui sont sélectionnés par le contrôleur. Étant donné que les modèles par défaut de Phalcon fonctionnent avec des bases de données (relationnelles) et que nous utilisons des données XML, notre implémentation de modèle est personnalisée. Mais dans la mesure du possible, nous utilisons des composants de Phalcon (par exemple, la validation est gérée à l'aide des classes de Phalcon).
Contrôleurs et vues ¶
Toutes les parties du framework ne sont pas déjà implémentées, mais en dérivant tous les contrôleurs de la base du projet DMS-SDWAN, il est facile d'étendre et de s'adapter aux besoins futurs.
Modèles ¶
Tous les modèles sont définis par une combinaison de classe et de XML contenant une définition (imbriquée).
Communication ¶
La communication avec le service backend est gérée via un domaine socket unix.
Système de base ¶
Le noyau DMS-SDWAN est alimenté par un système HardenedBSD ® presque standard étendu avec des packages utilisant le système pkg. GIT est utilisé pour le contrôle de version et les référentiels sont divisés en 4 parties:
-
src: le système de base (HardenedBSD ®)
-
ports: la collection de ports contenant des logiciels tiers
-
noyau: l'interface graphique DMS-SDWAN et les composants de configuration du système
-
tools: des outils simples pour construire DMS-SDWAN