SDN/NFV sont en effet dans l'air du temps et ces sujets adressent un spectre large de fonctions dans une infra. Voilà comment je présenterais ces concepts...
SDN
Avant de parler de SDN (Software Defined Networking), il faut comprendre ce qu'on entend par "plan" (plane in english). Aussi je vais prendre l'exemple de deux routeurs physiques sur lesquels on a implémenté un protocole de routage dynamique, BGP par exemple.
1) Les deux routeurs échangent des messages lorsque le peering BGP est monté. Ces messages propagent les réseaux IP qui sont disponibles, se notifient mutuellement si un des réseaux n'est plus joignable, etc. Ces fonctions relèvent du Control Plane et permettent aux routeurs de construire leurs tables de routage respectives.
2) Les deux routeurs traitent également du trafic utilisateur. Lorsqu'un paquet IP arrive sur une interface, le routeur scrute sa table de routage et si la destination IP est connue, il sait vers quelle interface physique (donc vers quel next hop IP) il doit envoyer le paquet. Cette fonction relève du Forwarding Plane (on l'appelle également Data Plane).
3) La motivation principale de SDN, c'est de décorréler les Control et Forwarding Planes. Un routeur BGP qui gère une table de routage de 150000 entrées résultant de plusieurs peerings BGP, ça n'est pas une mince affaire... Les cycles CPU utilisés pour la maintenance des tables, c'est autant de puissance en moins pour traiter le trafic utilisateur. D'autre part, étant donnée la complexité croissante des configurations des équipements réseau, c'est toujours délicat de faire des changements... Combien de fois ai-je entendu "ce changement devrait être sans impact" ?
4) Concrètement, une architecture SDN est composée:
- d'équipements destinés à traiter le trafic utilisateur (Data/Forwarding Plane),
- d'un ou plusieurs contrôleurs SDN (Control Plane),
- d'API qui feront office d'interfaces "southbound" et "northbound",
- d'un OS orienté réseau (Network OS),
- d'applications et de services (certains associent cette partie à un "Application Plane").
Les southbound APIs permettent de piloter le Data Plane à partir des contrôleurs (ils envoient des ordres aux switches/routeurs). Les northbound APIs pilotent les applications et services. Par exemple le contrôleur pilote la QoS, l'infra MPLS, les groupes de Sécurité.
5) Prenons l'exemple de la Sécurité... Le contrôleur SDN pilote et configure avec des northbound APIs une appplication qui gère les Policy Groups. Puis le contrôleur injecte les règles résultantes dans les équipements spécifiques du Data Plane à l'aide des southbound APIs. La beauté de la chose, c'est que tout est centralisé sur les contrôleurs, on n'a pas eu besoin de faire un ssh sur les équipements physiques... Et comme tout est centralisé, c'est un premier pas vers l'automatisation et donc un meilleur contrôle des changements.
En résumé, le gros avantage de SDN c'est de pouvoir manager un réseau d'un point de vue centralisé. Il devient alors très facile de provisionner les composants d'un réseau et c'est particulièrement bien adapté aux grosses infrastructures qui s'appuient sur la virtualisation. Ce qui tenait dans 2 baies de datacenter avec des technologies dites "legacy" (classiques) tient maintenant sur 2U avec un meilleur contrôle...
NFV
NFV (Network Functions Virtualization) est souvent confondu avec SDN mais le concept est complètement différent...
Rappelez-vous, le principe de base de SDN, c'était de découpler les fonctions des Control & Data Planes. J'avais aussi brièvement parlé de l'Application Plane qui comprend les fonctions comme le routage, la sécurité, etc. Généralement, ces fonctions vont tourner sur des matériels (ou plutôt des appliances) qui sont fournies par les constructeurs puis "attaquées" au travers d'APIs.
NFV, quant à lui, va découpler les fonctions réseau (celles qui relèvent de l'Application Plane dans une archi SDN) des appliances propriétaires. En d'autres termes, l'objectif de NFV est de consolider et fournir des composants/fonctions réseau qui seront complètement indépendantes du hardware (ça s'appuie majoritairement sur du x86).
Les avantages de NFV, c'est que:
- c'est intéressant pour les déploiements à très grosse échelle (plus besoin d'acheter du matos propriétaire/spécifique au fur et à mesure que l'infra grossit),
- comme c'est full virtualisé, ça réduit voire accélère dans certains cas le "time-to-market" quand on déploie de nouveaux services,
- c'est très agile et flexible "dans les 2 sens" (facile à réduire/développer une infra).
Le NFV est plutôt spécifique au monde des opérateurs...
Les exemples qui me viennent en tête sont les solutions vCPE & cloud CPE de chez Juniper ou vCSR de Cisco. OpenStack permet également aux Service Providers de développer des offres de type NFV en datacenter.
Commentaires & remarques bienvenus bien sûr...
-VX
Partager