Académique Documents
Professionnel Documents
Culture Documents
Année Universitaire
2021-2022
Signatures
Encadrant ENIT
Vu le 09/05/22
Remerciements
Au terme de ce travail, nous adressons tout d’abord nos vifs remerciements
aux membres du jury pour avoir bien voulu examiner et évalué ce travail.
Nous tenons à remercier également notre chère Mme Intidhar Bedhief pour
le temps qu’elle nous a consacré et pour les précieuses informations qu’elle nous
a prodiguées avec intérêt et compréhension.
Mes remerciements vont à tout le personnel que nous avons contacté durant
la période de réalisation de ce travail au sein de l’École Nationale d’Ingénieurs
de Tunis.
Enfin, nos remerciements à tous ceux qui ont contribué de prés ou de loin
au bon déroulement de ce projet.
Plan de contrôle SDN distribué pour l’Internet des
Objets
Résumé : Les réseaux IP actuels deviennent de plus en plus complexes
et difficiles à gérer à cause de leur intégration verticale vu que les plans de
contrôle et de données sont regroupés. Le concept des réseaux SDN (Software-
Defined Networking) consiste à briser l’intégration verticale, à séparer le plan
de contrôle du réseau du plan de données, à promouvoir le contrôle centralisé
du réseau et à introduire sa programmabilité. Dans ce document, nous pré-
sentons d’abord le réseau traditionnel, son architecture puis nous décrivons
la naissance de SDN en étudiant son architecture, ses avantages et ses diffé-
rents cas d’utilisation. Enfin, nous proposons une topologie pour montrer les
meilleures pratiques du SDN dans le domaine de l’IoT (Internet of Things),
puis nous passons à la partie d’automatisation, où nous utilisons les outils de
DevOps tels que Docker et Kubernetes pour répondre à une certaine problé-
matique qui peut apparaître lors de l’envoi de paquets entre les hôtes et aussi
pour contrôler le trafic.
Mots clés : SDN, IoT, Distributed control plan, Mininet, Ryu, OpenFlow,
OVSwitch, Kubernetes, Docker, iPerf, Wireshark
Distributed SDN control plan for Internet of Things
Abstract : Current IP networks are becoming more and more complex and
difficult to manage because of their vertical integration which means control
and data plans are grouped together. The concept of SDN (Software-Defined
Networking) networks is to break down this vertical integration, separates its
network control logic from the underlying hardware, promote centralized net-
work control and introduce network programmability. In this document, we
first present the traditional network, its architecture and then we describe the
emergence of SDN by studying its architecture, advantages and different use
cases.
Finally, we propose a topology to show the best practice of SDN in IoT (In-
ternet of Things), and then we switch to the automatisation part, in which
we use the tools of DevOps such as Docker and Kubernetes to facilitate some
issues that can occur during sending packets between hosts and also to control
the traffic.
Introduction générale 1
Conclusion Générale 82
Bibliographie 83
vi
Table des figures
viii
TABLE DES FIGURES
ix
Liste des acronymes
6LoWPan IPv6 Over Low-PowerWireless Personal Area Networks
API Application Programming Interface
BD Bases de Données
CLI CommandLLineInterface
CNCF CloudNativeComputingFoundation
CoAP Constrained Application Protocol
HPA HorizontalPod Autoscaler
IP Internet Protocol
KVM Kernel-baseVirtualMachine
MEMS MicroElectroMechanical Systems
NFC NearFieldCommunication
NOS NetworkOpertatingSystem
NTT NipponTelegraphTelephon
OS OperatingSystem
OVS OpenVSwitch
QoS QualityOverService
REST Representational State Transfer
RFID RadioFrequencyIDidentification
SDN Software Defined Networking
SD-WAN Software Defined WAN
TCP Transmission Control Protocol
TI TechnologieInformation
UDP User Datagram Protocol
VM Virtual Machine
VoIP VoiceOverIP
WAN Wide Area Network
WSN WirelessSensorNetwork
Introduction générale
La technologie de la communication se développe si rapidement que les
nouvelles tendances peuvent être trouvées dans les archives en une période
très courte. La conception traditionnelle de l’architecture des réseaux dépend
des protocoles de contrôle de la distribution et du réseau de transport exé-
cutés dans les routeurs et les commutateurs qui transmettent les paquets.
Cette intégration entre le plan de contrôle et le plan de données rend difficile
la gestion des réseaux. L’émergence de nouveaux services et applications en
ligne, tant dans les terminaux fixes que dans les appareils mobiles, a fait des
réseaux de communication un point stratégique dans les entreprises, les ins-
titutions et les foyers. L’évolution continue de ces services et la croissance de
l’information circulant sur l’Internet, apportent des défis imprévus aux déve-
loppeurs et aux entreprises. Les progrès des systèmes micro-électromécaniques
(MEMS) favorisent le développement de dispositifs qui enregistrent, traitent
et envoient automatiquement des informations via le réseau. Ce type de dispo-
sitif, composé principalement de capteurs et d’actionneurs (RFID, dispositifs
Bluetooth, réseaux de capteurs sans fil (WSN), systèmes intégrés et com-
munication en champ proche (NFC)), est à l’origine de nouvelles idées, de
nouveaux concepts et de nouveaux paradigmes tels que l’Internet des objets
(IoT, Internet of Things).
L’Internet des Objets est un concept qui a évolué rapidement durant ces
dernières années. Il crée une révolution dans le domaine des technologies de
la communication. L’IoT permet de connecter des dispositifs intelligents hété-
rogènes à travers des technologies de communication hétérogènes. La notion
d’hétérogénéité dans l’IoT est le facteur le plus important et le plus influant
dans le progrès et développement des applications IoT. Néanmoins, il repré-
sente aussi un défi majeur en terme de développement des applications, la
gestion et le contrôle du réseau.
Le principal domaine d’innovation de ces dernières années a été de re-
chercher du contrôle centralisé, de la programmabilité et les aspects de vir-
tualisation. C’est dans ce contexte qu’a émergé l’idée du Software Defined
Networking (SDN), ou réseau défini à base de logiciels, destiné à résoudre les
problèmes que l’entreprise rencontre dans le réseau. SDN est un paradigme
réseau séparant le plan de contrôle du plan de données. Cette séparation four-
nit un niveau d’abstraction aux fonctionnalités des équipements réseau afin de
pouvoir les gérer de manière globale. En effet, elle élimine la rigidité de l’archi-
tecture traditionnelle du réseau et la rend plus flexible. Ainsi, l’IoT requiert un
niveau d’abstraction et d’automatisation que SDN peut lui fournir. SDN peut
concerner une gestion et un contrôle centralisé de l’acheminement des paquets
au sein du réseau et peut présenter une architecture distribuée dans laquelle
la prise de décision quant au routage des paquets dépend de l’ensemble des
éléments du réseau. Plus adaptée à l’IoT, à l’instar du modèle centralisé, la
technologie SDN distribuée admet la nécessité de collecter des informations
sur l’état du réseau, et de les rassembler à un emplacement central depuis
lequel les éléments du réseau peuvent être contrôlés en vue, par exemple, de
gérer les performances. Le défi auquel se heurte la technologie SDN distribuée
est qu’elle doit prouver qu’elle est en mesure de proposer un contrôle du trafic
et de la connectivité à la hauteur de ce que les technologies SDN centralisées
offrent. Notre objectif est de non seulement rendre le plan de contrôle distri-
bué, mais aussi d’automatiser le processus de transfert de paquets ainsi que
la résolution des problèmes d’équilibrage de charge qui se manifeste dans l’ac-
tion que si les capacités (CPU et mémoire) du contrôleur sont saturées, notre
orchestrateur (Kubernetes) crée des replicas (Pods supplémentaires) qui vont
s’occuper du contrôle du flux puis ils vont être automatiquement supprimés.
Le présent rapport est organisé en trois chapitres. Le premier chapitre dé-
taille le contexte général de notre projet en présentant le concept de l’IoT,
du SDN, leurs avantages et leurs défis, et enfin la technologie des dockers. Le
troisième chapitre décrit l’environnement de MiniNet, sa ligne de commande
ainsi que les différentes topologies existantes dans cet émulateur. Ce dernier
parle aussi du commutateur OVS et ses différents composants. Finalement,
on mentionne le contrôleur SDN, Ryu, son architecture et nous expliquerons
la différence entre le contrôle centralisé et le contrôle distribué. Dans le der-
nier chapitre, nous décrivons notre proposition et son implémentation et nous
évaluons ses performances sous l’émulateur MiniNet.
2
Chapitre 1
Software-Defined Networking
(SDN) & Internet of Things (IoT)
1.1 Présentation du concept SDN
Introduction
Le Software-Defined Networking (SDN) est un nouveau paradigme d’archi-
tecture réseau dont le plan de contrôle est totalement découplé du plan de don-
nées. Le terme SDN peut être traduit par "réseau défini par le logiciel".Cette
séparation permet de déployer des plans de contrôle sur des plateformes avec
des capacités plus importantes que les commutateurs réseau traditionnels [13].
Au final, cette abstraction adopte une API réseau standard, une évolution des
services réseau à forte valeur ajoutée sur des fonctionnalités spécifiques aux
constructeurs d’appareils [10].
4
1.2 Principe du SDN
5
1.2 Principe du SDN
a - La couche infrastructure
Composé du divers périphériques réseau à la fois physique et virtuel (voir
Figure 1.2), le principal devoir du plan de données est la transmission. Dans
les réseaux traditionnels précédents, le plan de contrôle et le plan de données
étaient dans le même équipement [7]. Mais avec SDN, les périphériques réseau
n’ont que le plan de données. Ainsi, le rôle principal de ces dispositifs de réseau
c’est la transmission des données. Cela fournit un mécanisme de transmission
très efficace [12].
b - La couche contrôle
Le contrôleur est le centre de l’architecture SDN et le plus important des
composants d’architecture SDN (voir Figure 1.3). En d’autres termes, Le
contrôleur SDN est le cerveau du système. Le contrôle de tous les périphé-
riques de plan de données est effectué via SDN Controller [7]. Il contrôle
également les applications à la couche d’application. Le contrôleur SDN com-
munique et contrôle ces couches supérieure et inférieure avec les API via les
interfaces.
6
1.2 Principe du SDN
c - La couche application
Les applications et services qui utilisent les services du plan de contrôle
et/ou de gestion forment le plan d’application (voir Figure1.4). En outre,
les services résidant dans le plan d’application peuvent fournir des services
à d’autres services et applications qui résident dans le plan d’application via
7
1.2 Principe du SDN
8
1.2 Principe du SDN
9
1.2 Principe du SDN
L’interface SUD Dans SDN, les interfaces en direction sud sont la spécifi-
cation de protocole OpenFlow qui permet la communication entre les contrô-
leurs et les commutateurs et d’autres nœuds réseau, qui est avec les compo-
sants de niveau inférieur. Cela permet au routeur d’identifier la topologie du
réseau, de déterminer les flux réseau et de mettre en œuvre la requête qui lui
est envoyée via des interfaces en direction nord [25].
Les API Southbound et notament le protocole OpenFlow permettent à
l’utilisateur de mieux contrôler le réseau et favorisent le niveau d’efficacité
du contrôleur SDN pour évoluer en fonction des demandes et des besoins
en temps réel. En outre, l’interface est une norme de l’industrie qui justifie
10
1.2 Principe du SDN
11
1.3 Avantages du SDN
12
1.3 Avantages du SDN
13
1.4 Protocole OpenFlow
14
1.4 Protocole OpenFlow
15
1.4 Protocole OpenFlow
avoir une entrée par défaut ou une entrée « TABLE MISS ». Cette entrée a
la priorité la plus basse et les actions peuvent consister soit à supprimer le
paquet, soit à l’envoyer au contrôleur.
16
1.4 Protocole OpenFlow
17
1.5 Orchestration : comparaison entre différents orchestrateurs
18
1.5 Orchestration : comparaison entre différents orchestrateurs
19
1.5 Orchestration : comparaison entre différents orchestrateurs
1 version : “3.9”
2 services :
3 web :
4 build : .
5 ports :
6 – “5000 :5000”
7 networks :
8 – mynetwork
9 redis :
10 image : “redis :alpine”
11 networks :
12 – mynetwork
13 networks :
14 mynetwork :
20
1.5 Orchestration : comparaison entre différents orchestrateurs
permet d’exécuter de nombreux conteneurs sur un seul hôte en tant que ser-
vices distincts et chaque service peut être configuré pour fonctionner sur un
ou plusieurs services sur un réseau Docker Compose particulier. Kubernetes,
quant à lui, est destiné à exécuter des conteneurs en tant que service sur une
ou plusieurs machines, virtuelles ou réelles.
21
1.6 Cas d’utilisation
22
1.7 Internet of Things
23
1.7 Internet of Things
24
1.7 Internet of Things
CoAP Bien que les appareils IoT puissent utiliser l’infrastructure Web,
celle-ci est trop lourde pour la plupart des applications IoT. En juillet 2013,
l’IETF a publié le protocole d’application contrainte (CoAP) pour les nœuds
et les réseaux (LLN) à faible puissance et avec perte (contraints). CoAP,
comme HTTP, est un protocole REST.
Fonctionnalités de CoAP :
-CoAP utilise UDP Comme CoAP utilise UDP, certaines fonctions de TCP
sont répliquées directement dans CoAP. Par exemple, CoAP fait la distinction
entre les messages acquittables (nécessitant un acquittement) et les messages
non acquittables.
Toutes les en-têtes, méthodes et codes d’état sont codés en binaire, ce qui
25
1.7 Internet of Things
26
1.7 Internet of Things
27
1.8 Conclusion
1.8 Conclusion
Dans cette première partie, nous avons présenté une base théorique sur les
réseaux définis par logiciels(SDN) avec son architecture et ses avantages , puis
abordé les composants essentiels de cette solution afin d’appliquer ses concepts
à notre contexte. Au cours des dernières années, l’Internet des objets (IOT)
est devenu une partie intégrante de nos activités quotidiennes. Il y a une de-
mande importante pour fournir au monde davantage d’appareils intelligents.
À mesure que de plus en plus d’appareils seront connectés à Internet, il y aura
une demande croissante en matière de sécurité de l’information puisque des
renseignements sensibles peuvent être interceptés. Nous avons étudié l’intégra-
tion de SDN avec IoT pour améliorer la sécurité du système. Nous examinons
ensuite le SDN en tant que nouvelle technologie de réseau et la structure com-
binée de l’IoT et du SDN. Avec la mise en œuvre et les tests, nous avons
démontré qu’il est possible de protéger les appareils IoT qui ne peuvent utili-
ser HTTP qu’en raison de contraintes de ressources sans modifier le modèle de
modification des appareils. Dans les prochains chapitres, nous nous focalisons
sur la mise en place de l’environnement SDN et la mise en pratique de notre
solution de plan de contrôle distribué.
28
Chapitre 2
Mise en place de l’environnement
SDN
2.1 MiniNet : Émulateur réseau
Introduction
Après que nous nous sommes familiarisés avec les bases du SDN, nous al-
lons maintenant nous concentrer sur sa mise en œuvre dans le cas d’un réseau
IoT. L’objectif est de comprendre ce que signifient ces changements de para-
digme pour la conception et l’administration des réseaux. Nous examinons,
entre autres, les méthodes d’interaction avec les éléments qui interféreraient
avec la solution proposée. .
30
2.1 MiniNet : Émulateur réseau
ip= 172.17.0.4.
- D’autres options disponibles sur Mininet –switch pour choisir un modéle
de switch supporté par l’emulateur.
Après insertion de la commande "mn" suivie d’options désirées et création de
la topologie on accède à la ligne de commande Mininet identifiable par l’ex-
pression mininet > au début de chaque ligne( Hors CLI les commandes sont
précédées du symbole comme toute plateforme sous linux). Les principales
commandes de CLI sont :
- mininet > ping Pour tester la connectivité entre les différents périphériques
, aussi la commande mininet>iperf permet de mesurer la bande passante
entre les hôtes .
- mininet > net pour afficher toutes les liaisons de réseau.
- mininet>dump pour afficher toute les informations liées aux noeuds du
réseau.
- mininet > xterm h1 ouvre un terminal xterm pour chaque hôte (dans
cette exemple cette commande ouvre terminal pour hôte h1) et on peut exé-
cuter divers programme sur les différents hôtes [19].
31
2.1 MiniNet : Émulateur réseau
linear : C’est le lien entre les N hôtes et les N commutateurs . Nous pou-
vons exécuter cette topologie en écrivant la commande suivante dans fenêtre
de terminal, c-à-d. Sudo mn –topo linear,3.
32
2.1 MiniNet : Émulateur réseau
niveaux et deux hôtes par commutateur. Pour exécuter cette topologie, nous
pouvons utiliser ce qui suit dans la fenêtre du terminal, c-à-d. Sudo mn – topo
tree,3
33
2.1 MiniNet : Émulateur réseau
34
2.1 MiniNet : Émulateur réseau
Figure 2.7 – Commandes CLI pour une exécuter une topologie personalisée
35
2.1 MiniNet : Émulateur réseau
Figure 2.11 – Commandes CLI pour afficher toute les informations sur les
noeuds de Mininet.
36
2.1 MiniNet : Émulateur réseau
Figure 2.13 – Commandes CLI pour tester la connéctivité entre tous les
noeuds de Mininet
37
2.2 Open vSwitch
38
2.3 Ryu, contrôleur SDN
39
2.3 Ryu, contrôleur SDN
40
2.3 Ryu, contrôleur SDN
41
2.3 Ryu, contrôleur SDN
contrôleurs distribués assure une tolérance aux pannes qui garantit à son tour
la disponibilité du réseau. De plus, la mise à l’échelle du réseau nécessite un
tel type de contrôleurs distribués pour prendre en charge la grande quantité
de trafics entrants et obtenir également un nombre élevé de transactions.[24]
42
2.3 Ryu, contrôleur SDN
43
2.3 Ryu, contrôleur SDN
44
2.3 Ryu, contrôleur SDN
Ensuite, ajoutez des liens entre les nœuds sur le canevas. Cliquez sur l’outil
NetLink, puis cliquez sur un nœud et faites glisser le lien vers un autre nœud.
Par exemple : connectez un hôte à un commutateur ou un commutateur à
un autre commutateur. Connectez chaque hôte à au moins un commutateur.
Connectez les commutateurs ensemble pour créer un réseau. Ensuite, connec-
tez chaque commutateur à l’un des contrôleurs.
Votre réseau terminé devrait être similaire au réseau affiché dans la cap-
ture d’écran ci-dessous :
45
2.3 Ryu, contrôleur SDN
46
2.4 Conclusion
2.4 Conclusion
Dans ce chapitre, nous avons examiné les outils qui seront utilisés pour
compléter le scénario sur lequel le prochain chapitre se concentrera. Nous
avons recherché et testé chaque élément de l’architecture pour montrer les
différentes fonctionnalités mais plus précisément pour démontrer sa fiabilité
et son efficacité. Dans le prochain chapitre, on va realiser le reste du travail
sur le dashboard de kubernetes à l’aide des YAML file et Kubectl.
47
Chapitre 3
Mise en pratique & Comparaison
3.1 Différence entre la conteneurisation et la virtualisation
Introduction
Dans ce chapitre, nous présentons notre contribution principale qui dans la
programmation et l’administration d’un réseau de type SDN et la proposition
d’une solution de routage sensible aux réseaux d’autre part. L’objectif est
d’expliquer comment administrer un réseau et évaluer les fonctionnalités et
la performance de routage offertes par le SDN . Pour cela nous avons pris un
orchestrateur Kubernetes pour faire equilibrer les charges sur le controlleur
SDN (RYU dans notre cas ).
49
3.1 Différence entre la conteneurisation et la virtualisation
l’entreprise. Cependant, ils peuvent aussi être déroutants pour les nouveaux
utilisateurs des outils de virtualisation.
50
3.1 Différence entre la conteneurisation et la virtualisation
51
3.1 Différence entre la conteneurisation et la virtualisation
52
3.2 Mise en pratique : virtualisation vs dockerisation
Pour installer Mininet sur une machine virtuelle il faut d’abord mettre à
jour la VM via la commande :
Puis installer les logiciels requis comme Git : sudo apt-get install git
installer mininet avec l’option ‘-n’ pour installer les dépendances MiniNet et
les fichiers de base. L’option ‘-a’ installe tous les paquets, cependant, ceux-ci
ont été installés sur Ubuntu indépendamment . [1]
53
3.2 Mise en pratique : virtualisation vs dockerisation
54
3.2 Mise en pratique : virtualisation vs dockerisation
55
3.2 Mise en pratique : virtualisation vs dockerisation
3.2.2 Dockerisation
Pour commencer, on prépare nos deux conteneurs contenant chacune l’image
de Mininet et l’image du contrôleur(RYU dans notre cas). On tire ces images
a partir du Docker hub.[1]
56
3.2 Mise en pratique : virtualisation vs dockerisation
Pour vérifier que nos images est sur notre machine, on utilise la commande :
Docker images
Pour la création des deux conteneurs on utilise les deux commandes suivantes :
Après avoir créer nos deux conteneurs on vérifie leur existence en tapant la
commande suivante :
Docker ps -a
Cette commande permet de lister toutes les conteneurs dans les deux états
possibles : Running or Exited avec toutes les autres informations necessaires.
57
3.2 Mise en pratique : virtualisation vs dockerisation
58
3.3 Mise en pratique : contrôle centralisé vs contrôle distribué
59
3.3 Mise en pratique : contrôle centralisé vs contrôle distribué
60
3.4 Évaluation des performances
Xterm h1 h2
61
3.4 Évaluation des performances
Cat result | grep sec | head -15 | tr - " " | awk ’print 4,8 > new-result
gnuplot
Gnuplot > plot “newresult” title “donner un nom à votre courbe” with linespoints
Evaluation de debit TCP sur les différentes topologies sur une machine
virtuel et un conteneur
Xterm h1 h2
h2 : tcpdump -i h2-eth0 -nn -v -tt "src host 10.0.0.1 and dst host 10.0.0.1">rec
h1 : tcpdump -i h1-eth0 -nn -v -tt "src host 10.0.0.2 and dst host 10.0.0.2">sent
5- Utiliser iperf dans h1 et h2 :
62
3.4 Évaluation des performances
grep -V ARP sent | grep IP | awk ’print 8,1 | tr "," " " >sent1
grep -V ARP received | grep IP | awk ’print 8,1 | tr "," " " > rec1
6-Sort :
6- Dessiner le graphe :
En utilisant Gnuplot :
Gnuplot
Evaluation de debit UDP sur les différentes topologies sur une machine
virtuel et un conteneur [18]
63
3.5 Orchestration : Kubernetes
- Infrastructure conteneurisée
L’un des composants clés de Kubernetes est, il peut exécuter des appli-
cations sur des grappes d’infrastructures de machines physiques et virtuelles.
Il a également la capacité d’exécuter des applications sur le cloud. Il aide à
passer d’une infrastructure centrée sur l’hôte à une infrastructure centrée sur
les conteneurs.
64
3.5 Orchestration : Kubernetes
3.5.3 Architecture :
Kubernetes suit l’architecture maître-esclave. L’architecture Kubernetes a
un nœud maître et des nœuds esclave (worker node).
Le nœud maître comporte divers composants, tels que :
1- ETCD
2- Controller Manager
3- Scheduler
4- API Server
5- Kubectl
Et le nœud esclave (worker node) a trois composants :
1- kubelet
2- kube-proxy
3- Pods
65
3.5 Orchestration : Kubernetes
1. ETCD
Ce composant stocke les détails de configuration et les valeurs essentielles.
Il communique avec tous les autres composants pour recevoir les commandes
pour effectuer une action. Gère les règles du réseau et l’activité post-transmission.[2]
2. Controller Manager
3. Le planificateur
- Le planificateur assigne les tâches aux nœuds esclaves
- Il est chargé de distribuer la charge de travail et de stocker les informations
sur l’utilisation des ressources sur chaque nœud
- Fait le suivi de l’utilisation de la charge de travail sur les grappes et place la
charge de travail sur les ressources disponibles.
4. API Server
- Kubernetes utilise le serveur API pour effectuer toutes les opérations sur le
66
3.5 Orchestration : Kubernetes
cluster
- Il s’agit d’une entité de gestion centrale qui reçoit toutes les demandes de
modification REST, en tant que client du cluster
- Met en œuvre une interface qui permet à différents outils et bibliothèques
de communiquer efficacement
5. Kubectl
- Kubectl contrôle le cluster manager de Kubernetes
Noeud Esclave :
Un nœud esclave est un serveur virtuel ou physique qui exécute les applica-
tions et est contrôlé par un noeud maître. Les pods sont planifiées sur les
nœuds esclave , qui possèdent des outils nécessaires pour les exécuter et faire
connecter. Les pods sont des ensemble de conteneurs Et pour accéder aux
applications depuis le monde extérieur, il est nécessaire de se connecter à des
noeuds esclave et non des noeuds maîtres .
Le nœud esclave (Worker node) possède les composants suivants [2] :
1.Pod
Une gousse est un ou plusieurs conteneurs contrôlés comme une seule appli-
cation. Il encapsule les conteneurs d’application, les ressources de stockage et
est étiqueté par un identifiant de réseau unique et d’autres configurations qui
régulent le fonctionnement des conteneurs.
3. Kubelet
- Service chargé de la transmission des informations à destination et en pro-
venance du service de plan de contrôle
- Il récupère la configuration d’un pod à partir du serveur API et s’assure que
67
3.5 Orchestration : Kubernetes
— L’architecture du Cluster :
Gérés par le plan de contrôle, les nœuds de cluster sont des machines qui
exécutent des conteneurs. Chaque nœud exécute un agent pour com-
muniquer avec le plan de contrôle, le kubelet, le contrôleur principal de
Kubernetes. Chaque nœud exécute également un moteur d’exécution de
68
3.5 Orchestration : Kubernetes
Service Kubelet :
Chaque nœud de calcul comprend un kubelet, un agent qui commu-
nique avec le plan de contrôle pour s’assurer que les conteneurs d’un
pod sont en cours d’exécution. Lorsque le plan de contrôle nécessite
qu’une action spécifique se produise dans un nœud, le kubelet reçoit les
spécifications du pod via le serveur d’API et exécute l’action. Il s’assure
ensuite que les conteneurs associés sont sains et en cours d’exécution.
Service proxy Kube :
Chaque nœud de calcul contient un proxy réseau appelé kube-proxy
69
3.5 Orchestration : Kubernetes
Images de conteneurs :
70
3.5 Orchestration : Kubernetes
— Le stockage :
Les volumes persistants (PV) sont liés à une ressource de stockage exis-
tante et sont généralement provisionnés par un administrateur. Ce sont
des objets à l’échelle du cluster liés au fournisseur de stockage de sau-
vegarde qui rendent ces ressources disponibles pour la consommation.
71
3.5 Orchestration : Kubernetes
72
3.5 Orchestration : Kubernetes
YAML
kubectl apply -f deployment/pod.yaml : Pour créer un pod ou deployment à
partir d’un fichier YAML .
apiVersion : apps/v1
kind : Deployment
metadata :
name : ryu-deployment
labels :
app : ryu
spec :
replicas : 1
selector :
matchLabels :
app : ryu
template :
metadata :
labels :
app : ryu
spec :
containers :
- name : ryu
image : osrg/ryu :latest
command : ["/bin/sh","-c"]
args : ["cd ryu/ryu/app ;ryu run
simples witch1 3.pyguit opology/guit opology.py
observe links verbose”]
resources :
requests :
cpu : 0.5
limits :
cpu : 1
73
3.5 Orchestration : Kubernetes
apiVersion : autoscaling/v1
kind : HorizontalPodAutoscaler
metadata :
name : ryu-deployment
spec :
scaleTargetRef :
apiVersion : apps/v1
kind : Deployment
name : ryu-deployment
minReplicas : 1
maxReplicas : 10
targetCPUUtilizationPercentage : 50
kind : Service
apiVersion : v1
metadata :
name : ryu-controller-service
spec :
selector :
app : ryu
type : NodePort
ports :
- protocol : TCP
port : 6653
targetPort : 6653
74
3.5 Orchestration : Kubernetes
3.5.7 Implémentations
75
3.5 Orchestration : Kubernetes
Les courbes
76
3.5 Orchestration : Kubernetes
77
3.5 Orchestration : Kubernetes
78
3.5 Orchestration : Kubernetes
79
3.6 Conclusion
3.6 Conclusion
Dans ce chapitre, nous avons exploité mininet, RYU, Kubernetes, Docker,
containeret et OpenFlow. Notre contribution est fournit une interface interac-
tive qui nous permet de gérer, créer, modifier et également visualiser le réseau.
Il offre une convivialité flexible pour les administrateurs réseau. En fournissant
une vue topologique distincte pour chaque réseau, les administrateurs réseau
peuvent facilement surveiller plusieurs réseaux VLAN en temps réel.
80
3.6 Conclusion
81
Conclusion Générale
Dans ce rapport, nous avons présenté une architecture basée sur SDN-
Docker pour remettre en question l’hétérogénéité du réseau et des appareils.
Nos expériences prouvent la faisabilité de notre architecture et l’établissement
de communication entre les appareils intelligents grâce à un réseau SDN. Néan-
moins, l’architecture doit être expérimentée avec différents contrôleurs SDN
centralisés et distribués. Dans un proche avenir, nous allons tester l’archi-
tecture avec différents réseaux hétérogènes qui peuvent exister dans un en-
vironnement smart domestique comme Ethernet, WiFi et Bluetooth. Dans
les prochains travaux, nous mettrons en œuvre notre architecture avec divers
contrôleurs SDN tels que Floodlight, POX et ONOS et comparerons leurs per-
formances. Nous avons également l’intention d’utiliser un plus grand nombre
d’appareils de connexion sur lesquels les applications seront mises en œuvre
par l’intermédiaire de Dockers.
Notre objectif est d’automatiser le réseau par le concept du DevOps . En
effet, DevOps peut être utilisé pour configurer un plan de contrôle distribué,
comme IS-IS, sur tous les périphériques réseau, et aussi pour configurer un
contrôleur centralisé qui peut annuler les décisions locales du protocole de
routage de distribution pour l’ingénierie du trafic.
En effet, l’automatisation ouvre tellement de nouvelles perspectives, qui
est le pouvoir d’augmenter l’agilité, la sécurité ou même les capacités en inté-
grant de nouvelles solutions logicielles comme jamais auparavant.
[19] Deepak Kumar and Manu Sood. Software defined networks (sdn) : ex-
perimentation with mininet topologies. Indian Journal of Science and
Technology, 9(32), 2016. (Cité en page 31.)
[20] Mininet. Mininet overview, 2022. (Cité en pages 30 et 32.)
[21] Benoit Petit. Sdn : principes et fonctionnement, 2022. (Cité en page 6.)
[22] procica. Les réseaux sdn - software defined network, 2022. (Cité en
page 5.)
[23] rohnux2 6. Containerizationusingdocker, 2022. (Citenpages 51et 52.)
[24] Yassine Sabri, Najib El Kamoun, and Fatima Lakrami. A survey : Centrali-
zed, decentralized, and distributed control scheme in smart grid systems. In
2019 7th Mediterranean Congress of Telecommunications (CMT), pages 1–11.
IEEE, 2019. (Cité en page 42.)
[25] sanwal55. Sdn northbound interfaces (nbi) and southbound interfaces (sbi),
2022. (Cité en pages 10, 11 et 12.)
[26] stackoverflow. What’s the difference between docker compose and kuber-
netes ?, 2022. (Cité en pages 18 et 19.)
[27] Aaron Strong. Containerization vs. virtualization : What’s the difference ?,
2022. (Cité en pages 49, 50 et 53.)
[28] vmware. Software-defined networking, 2022. (Cité en page 5.)
84
BIBLIOGRAPHIE
85