GNU/Linux >> Tutoriels Linux >  >> Linux

Faucet :un contrôleur SDN open source pour les réseaux de production à haut débit

Grâce aux logiciels open source, nous pouvons désormais contrôler et modifier le comportement de presque tous les composants d'un système informatique. Nous pouvons tout modifier, de la pile réseau dans le noyau jusqu'au code du serveur Web dans l'espace utilisateur pour apporter des améliorations ou implémenter de nouvelles fonctionnalités.

Le dernier obstacle pour avoir un contrôle total sur notre pile matérielle et logicielle est le matériel réseau physique. Ces appareils sont généralement construits à partir des outils open source que nous aimons, mais ils sont présentés comme des boîtes noires qui ne peuvent pas être facilement modifiées par les opérateurs de réseau.

Les normes ouvertes telles que OpenFlow et P4 promettaient d'améliorer le paysage en ouvrant l'accès à ces appareils via une API programmable, mais elles nécessitent toujours que quelqu'un écrive un contrôleur pour réimplémenter les fonctionnalités normales de commutation, telles que le transfert et le routage, dans un multi- fournisseur, de manière conforme aux normes. Cela a conduit notre groupe à écrire le contrôleur de réseau défini par logiciel (SDN) Faucet, qui permet à quiconque de réaliser pleinement le rêve des réseaux programmables.

Comment fonctionne le robinet

Faucet est un contrôleur OpenFlow compact et open source qui permet aux utilisateurs d'exécuter leurs réseaux de la même manière qu'ils exécutent des clusters de serveurs. Faucet rend la mise en réseau accessible à tous en amenant le flux de travail DevOps à la mise en réseau. Pour ce faire, il rend les fonctions réseau (telles que les protocoles de routage, la découverte de voisins et les algorithmes de commutation) faciles à gérer, à tester et à étendre en les déplaçant vers un logiciel standard qui s'exécute sur un serveur, par rapport à l'approche traditionnelle consistant à intégrer ces fonctions dans le micrologiciel. d'un commutateur ou d'un routeur. Faucet fonctionne en ingérant un fichier de configuration YAML qui représente la topologie du réseau et les fonctionnalités réseau requises, et il fait le travail pour programmer chaque appareil sur le réseau avec OpenFlow.

L'histoire de Faucet a commencé en septembre 2015 lorsque REANNZ a écrit la première version de Faucet basée sur un code prototype par le WAND Network Research Group de l'Université de Waikato. Depuis lors, ces groupes et bien d'autres en Nouvelle-Zélande et ailleurs se sont associés pour écrire et maintenir un contrôleur OpenFlow fonctionnel qui peut être utilisé par les masses. Nous nous sommes engagés à être un projet open source depuis le premier jour, car nous pensons que c'est la meilleure façon de mettre nos contributions à disposition pour aider la communauté, et nous sommes heureux d'avoir reçu des modifications de code de plus de 40 développeurs différents à ce jour.

Tests et compatibilité entre fournisseurs

Lors de l'écriture de contrôleurs de réseau, il est crucial de fournir un code fonctionnel avec chaque version qui n'interrompra pas les déploiements de production lorsqu'ils seront mis à niveau. Par conséquent, la testabilité est l'un des principes directeurs importants de Faucet. Nous disposons d'une suite de tests complète qui non seulement teste la qualité du code avec des analyses de peluches et statiques, mais nous testons également un grand nombre de topologies de réseau avec différentes fonctionnalités Faucet activées. Ce test est automatiquement effectué à chaque changement de code.

Notre suite de tests nous permet également de qualifier les appareils matériels qui prennent en charge toutes les fonctionnalités de Faucet. Cela a fait de la compatibilité SDN entre fournisseurs une réelle possibilité, car un certain nombre de fournisseurs exécutent la suite de tests Faucet dans le cadre de leur processus d'assurance qualité pour valider que leur micrologiciel prend en charge Faucet. Cela nous permet également d'éviter d'écrire des pilotes supplémentaires ou des extensions de fournisseur pour programmer de nouveaux appareils, ce qui a l'avantage supplémentaire de garder notre base de code petite et cohérente.

Robinet dans le monde réel

Faucet a été déployé dans de nombreux réseaux différents partout dans le monde. Plus récemment, nous nous sommes associés à la conférence ACM/IEEE Supercomputing Conference 2018 (SC18) pour déployer un vaste réseau Faucet dans le cadre du réseau SCinet qui fournit des térabits par seconde d'Internet aux stands du salon. Le réseau que nous avons construit comportait du matériel d'Allied Telesis, Cisco et NoviFlow, et nous avons réussi à dépasser 9 térabits par seconde de capacité.

Un appareil NoviFlow exécutant un circuit intégré spécifique à l'application (ASIC) Barefoot Tofino P4 était le routeur principal du réseau. NoviFlow a écrit OpenFlow en tant qu'application P4, ce qui a permis à Faucet d'utiliser OpenFlow comme API d'exécution au-dessus de P4. Nous avons écrit du code d'automatisation Ansible à intégrer à la base de données de connexion client SC18 et à générer la configuration de Faucet à la volée. La base de données a attribué à chaque cabine un VLAN et des informations de sous-réseau.

Le travail de Faucet consistait à effectuer le routage inter-VLAN sur le routeur principal et le pair BGP (Border Gateway Protocol) avec les deux routeurs SCinet principaux pour permettre aux cabines d'être acheminées vers Internet. L'implémentation du protocole de contrôle d'agrégation de liens (LACP) dans Faucet nous a permis de regrouper 2 liaisons 100G vers chaque routeur en amont pour permettre la résilience (en cas de problème de fibre). Chaque cabine était équipée d'une connexion Internet - 1 Go, 10 Go ou 100 Go - par un commutateur d'accès (fourni par l'un des fournisseurs) qui était également contrôlé par Faucet. Les commutateurs d'accès effectuaient le transfert et mettaient en œuvre des politiques de sécurité sur chaque port d'accès pour protéger le réseau. Une sécurité réseau supplémentaire a été fournie par Poseidon de CyberReboot, un outil d'apprentissage automatique qui s'intègre à Faucet et peut identifier les hôtes finaux suspects sur le réseau. Tous les services sur le réseau, tels que le protocole DHCP (Dynamic Host Configuration Protocol) et BGP, étaient fournis par des démons open source (par exemple, dhcpd et BIRD) qui s'exécutaient en tant que services de virtualisation des fonctions réseau (NFV) sur un serveur Linux.

Nous pensons que le déploiement de SC18 démontre la maturité de Faucet et d'OpenFlow pour l'exécution de réseaux de production réels à grande échelle. Nous espérons également voir d'autres relever le défi de prendre le contrôle de leurs réseaux en déployant le SDN. Pour en savoir plus sur faucet et comment le déployer, veuillez visiter notre site Web, qui contient des liens vers des didacticiels, de la documentation et des listes de diffusion pour les discussions des utilisateurs. Pour ceux qui souhaitent participer à notre projet open source, nous avons un guide du développeur pour aider les nouveaux contributeurs. Enfin, pour suivre nos progrès et les annonces de futures conférences, tutoriels ou déploiements similaires au SC18, suivez-nous sur Twitter.


Brad Cowie présentera Utiliser un contrôleur SDN open source pour déployer un réseau de production à haut débit sur linux.conf.au, du 21 au 25 janvier à Christchurch, en Nouvelle-Zélande.


Linux
  1. Comprendre la loi de Linus pour la sécurité open source

  2. Timekpr (Revived) - Une application de contrôle parental Open Source pour Linux

  3. Kdenlive - Un éditeur vidéo non linéaire Open Source pour les pros et les débutants

  4. LyX – Un puissant processeur de documents open source pour Linux

  5. 10 meilleurs logiciels de comptabilité open source pour Linux

Les 12 meilleurs outils de sauvegarde open source pour les systèmes Linux

Top 6 des shells open source pour Linux

FreeTube - Un lecteur YouTube de bureau Open Source pour les personnes soucieuses de la confidentialité

10 éditeurs vidéo open source gratuits pour Linux [en 2021]

qBittorrent – ​​un client Open Source BitTorrent pour Linux

Koodo Reader :un lecteur de livres électroniques open source pour Linux