Retour aux cours 2024-2025


Master 2 REOC - Reseaux et Objets Connectes

PART A : PRESENTATION GENERALE

Presentation du Master REOC

Le Master 2 REOC (Reseaux et Objets Connectes) est une formation dispensee a l’ENSEEIHT (Ecole Nationale Superieure d’Electrotechnique, d’Electronique, d’Informatique, d’Hydraulique et des Telecommunications) de Toulouse, dans le cadre d’un double diplome avec l’INSA Toulouse. Cette formation s’inscrit dans le semestre S9 de l’annee 2024-2025.

Ce programme intensif couvre un large spectre de technologies liees aux reseaux embarques et aux objets connectes. Il offre une vision approfondie des architectures reseau modernes, allant de la virtualisation des reseaux (SDN, NFV) aux reseaux temps reel pour l’aeronautique (AFDX, IMA), en passant par les reseaux bas debit pour l’IoT (LoRaWAN) et les processus stochastiques appliques a l’evaluation de performances.

Le cursus est organise en une dizaine de modules complementaires qui permettent de maitriser les aspects theoriques et pratiques des systemes en reseau embarques. L’approche pedagogique allie cours magistraux, travaux pratiques et projets de mise en situation reelle.

Objectifs de la formation


PART B : EXPERIENCE ET CONTEXTE

Environnement et contexte

Le Master REOC m’a plonge dans un environnement academique exigeant, mele a l’ENSEEIHT de Toulouse, en parallele de mes cours a l’INSA. Cette double formation a necessite une grande capacite d’organisation et d’adaptation. Les travaux pratiques etaient realises sur des plateformes variees : environnements virtualises avec Docker et Containernet, programmation P4 pour le data plane, simulateurs LoRaWAN en Python, et outils de simulation reseau avec NetworkX.

Le contexte etait celui d’une immersion complete dans les problematiques actuelles des reseaux : comment virtualiser les fonctions reseau, comment garantir le determinisme dans les communications embarquees, comment optimiser les performances des reseaux IoT a grande echelle, et comment modeliser mathematiquement le comportement des systemes en file d’attente.

Mon role et mes responsabilites

Collaboration

La majorite des projets a ete realisee en binome avec Yohan Boujon, un partenaire de confiance avec lequel la collaboration etait fluide et efficace. Notre complementarite nous a permis de mener a bien les travaux pratiques dans les delais impartis, malgre la charge de travail consequente liee au double diplome.


PART C : ASPECTS TECHNIQUES

Cette section detaille les differents modules du Master REOC, couvrant les aspects theoriques et pratiques de chaque thematique abordee.


1. Virtualisation des Reseaux Embarques et P4

Ce module abordait la virtualisation des reseaux dans un contexte embarque, avec un focus sur le protocole AFDX (Avionics Full-Duplex Switched Ethernet) utilise dans l’aeronautique. L’objectif etait de comprendre comment programmer le plan de donnees d’un commutateur reseau en utilisant le langage P4 (Programming Protocol-Independent Packet Processors).

Le TP portait sur l’implementation d’un commutateur AFDX en P4, ou les trames sont routees en fonction de leur Virtual Link (VL). Voici la structure de la trame AFDX definie en P4 :

header_type afdx_frame_t {
  fields {
  	const: 32;
  	vl: 16;
  	source: 48;
  	type: 16;
  }
}

header afdx_frame_t afdx_frame;

parser start {
       return parse_afdx_frame;
}

parser parse_afdx_frame {
	extract(afdx_frame);
	return select(afdx_frame.const) {
		0x03000000: ingress;
	}
}

table table_afdx{
	reads{
		afdx_frame.vl : exact;
	}
	actions{
		compute_afdx;
		_drop;
	}
}

action compute_afdx(port){
	modify_field(standard_metadata.egress_spec, port);
}

La topologie etait simulee avec Mininet et le commutateur comportemental de P4, permettant de tester le routage des trames AFDX selon les Virtual Links configures.

Concepts cles : Plan de donnees programmable, AFDX, Virtual Links, P4, Mininet, SDN pour l’embarque, Time-Sensitive Networking (TSN).


2. Information Centric Networking (ICN/NDN)

Le module sur l’Information Centric Networking (ICN), et plus specifiquement le paradigme Named Data Networking (NDN), proposait une vision radicalement differente des reseaux par rapport au modele IP classique. Au lieu de connecter des machines entre elles, le NDN centre les communications sur les donnees elles-memes : on ne demande plus “connecte-moi a telle machine” mais plutot “donne-moi tel contenu”.

Les principes fondamentaux etudies :

Ce paradigme presente des avantages significatifs pour les reseaux embarques et IoT : reduction de la latence grace au cache distribue, mobilite native des producteurs et consommateurs, et securite integree au niveau des donnees (chaque paquet Data est signe par le producteur).

Concepts cles : NDN, ICN, Content Store, PIT, FIB, routage par nom, cache distribue, securite centree donnees.


3. Software Defined Networking (SDN) - INSA

Le module SDN a l’INSA approfondissait les concepts de separation du plan de controle et du plan de donnees dans les reseaux. Le cours couvrait les architectures SDN, le protocole OpenFlow, et l’utilisation de controleurs SDN tels que Ryu pour programmer le comportement du reseau de maniere centralisee.

Les travaux pratiques portaient sur la mise en place d’une architecture SDN complete avec :

Concepts cles : OpenFlow, controleur SDN, Ryu, plan de controle centralise, regles de flux, QoS, slicing reseau.


4. Wireless Real-Time Networking

Ce module traitait des reseaux sans fil temps reel, une thematique essentielle pour les systemes embarques critiques dans les domaines de l’IoT industriel (IIoT) et de l’aeronautique. Le cours couvrait les protocoles et mecanismes permettant de garantir des communications deterministes sur des supports sans fil intrinsiquement non deterministes.

Les thematiques abordees incluaient :

L’etude de papiers de recherche recents permettait de comprendre les defis actuels : comment concilier les exigences temps reel avec les aleas du canal radio, comment dimensionner un reseau sans fil pour garantir un taux de livraison minimum, et comment integrer ces reseaux dans des architectures industrielles existantes.

Concepts cles : Determinisme, latence bornee, reseaux ad hoc, TDMA, ordonnancement, IIoT, WSAN.


5. Projet NFV/SDCI

Le projet NFV/SDCI (Network Function Virtualization / Software Defined Cloud Infrastructure) constituait le projet majeur du Master REOC. Realise en binome avec Yohan Boujon, ce projet combinait SDN et NFV pour concevoir une infrastructure reseau virtualisee complete avec orchestration.

5.1 Architecture reseau

Nous avons concu une topologie reseau composee de plusieurs commutateurs et hotes pour simuler un environnement reseau complexe. La topologie incluait des composants tels que des commutateurs (S1, S2, S3), des hotes (Z1, Z2, Z3), une passerelle intermediaire (GI) et un serveur. Cette configuration nous a permis de tester le filtrage de donnees et la connectivite entre les composants reseau.

def setup_topology():
    net = DCNetwork(monitor=False, enable_learning=True)

    # Adding switches
    s1 = net.addSwitch('s1')
    s2 = net.addSwitch('s2')
    s3 = net.addSwitch('s3')

    # Adding Docker containers as network hosts
    z1 = net.addDocker('z1', ip='10.0.0.1', dimage="reoc:device")
    z2 = net.addDocker('z2', ip='10.0.0.2', dimage="reoc:device")
    z3 = net.addDocker('z3', ip='10.0.0.3', dimage="reoc:device")

    ordonnanceur = net.addDocker('ordon', ip='10.0.0.100', dimage="reoc:test")
    gateway_inter = net.addDocker('gi', ip='10.0.0.254', dimage="reoc:gateway")
    serveur = net.addDocker('serveur', ip='10.0.0.200', dimage="reoc:server")

    # Creating links between switches and hosts
    net.addLink(s1, z1)
    net.addLink(s1, z2)
    net.addLink(s1, z3)
    net.addLink(s2, s1, intfName1='s2-s1', intfName2='s1-s2')
    net.addLink(s2, ordonnanceur)
    net.addLink(s2, gateway_inter)
    net.addLink(s3, s2, intfName1='s3-s2', intfName2='s2-s3')
    net.addLink(s3, serveur)

    # Adding datacenter and API endpoints
    dc1 = net.addDatacenter("dc1")
    api1 = OpenstackApiEndpoint("0.0.0.0", 6001)
    api1.connect_datacenter(dc1)
    api1.start()
    api1.connect_dc_network(net)

    rapi1 = RestApiEndpoint("0.0.0.0", 5001)
    rapi1.connectDCNetwork(net)
    rapi1.connectDatacenter(dc1)
    rapi1.start()

    # Starting the network
    net.start()
    net.CLI()
    net.stop()

if __name__ == '__main__':
    setup_topology()

5.2 Instances Docker

Nous avons utilise Docker pour creer des instances pour chaque composant reseau. Un script a ete developpe pour construire les images Docker et generer les instances de maniere efficace. Cette configuration a facilite les tests de connectivite et de transmission de donnees entre les differentes zones.

#!/bin/bash
SCRIPT_PATH=$(realpath "$0")
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
cd "$SCRIPT_DIR" || exit 1
for dockerfile in "$SCRIPT_DIR"/*.dockerfile; do
    image_tag="reoc:$(basename "$dockerfile" .dockerfile)"
    echo "Building image: $image_tag from $dockerfile"
    docker build -t "$image_tag" -f "$dockerfile" .
done

5.3 Simulation avec Containernet

J’ai utilise Containernet, un fork de Mininet, pour simuler la topologie reseau. Cela impliquait la creation et la gestion des liens reseau, et la verification de la connectivite entre les instances Docker.

Une fois le script topology_sdn.py lance, j’ai teste la connectivite entre les differents hotes de la topologie :

containernet> z1 ping -c 1 z2
containernet> z1 ping -c 1 serveur
containernet> z2 ping -c 1 z1
containernet> z2 ping -c 1 gi
containernet> ordon ping -c 1 z3
containernet> ordon ping -c 1 serveur

5.4 Application ‘Moniteur’

Monitoring

L’interface de monitoring, developpee avec npyscreen, permettait aux utilisateurs de selectionner et d’executer differents scripts en fonction des tests souhaites. Pour surveiller les donnees envoyees par chaque zone, nous nous concentrions sur le commutateur S1. En appelant l’API Ryu, nous pouvions observer des metriques telles que le trafic entrant et sortant, la taille des paquets et le total d’octets en temps reel.

Adaptation

Les scenarios d’adaptation incluaient le blocage des trames de Z2 et Z3 ou la reduction de leur bande passante tout en priorisant Z1. Cela etait realise via des requetes POST a l’API Ryu pour appliquer des regles telles que :

{
    "dpid": 1,
    "table_id": 0,
    "priority": 1,
    "match": {
        "in_port": 2
    },
    "instructions": [
        {
            "type": "APPLY_ACTIONS",
            "actions": [
                {
                    "type": "DROP"
                }
            ]
        }
    ]
}

Concepts cles : Containernet, Docker, NFV, MANO, orchestration, monitoring, adaptation, API REST, Ryu.


6. Architecture Modulaire

Le module sur l’Architecture Modulaire traitait de la conception de systemes embarques temps reel, avec un accent particulier sur le Worst-Case Traversal Time (WCTT). Ce concept est fondamental dans les reseaux embarques deterministes, notamment dans l’aeronautique et l’automobile.

Le WCTT represente le temps maximal qu’un paquet peut mettre pour traverser le reseau dans le pire des cas. Le calcul du WCTT est essentiel pour :

Les methodes d’analyse etudiees incluaient le Network Calculus et les approches par simulation aggregee, permettant d’approximer les bornes du WCTT pour des topologies complexes.

Concepts cles : WCTT, Network Calculus, determinisme, systemes critiques, certification, bornes temporelles.


7. Simulation Avancee avec NetworkX (N7)

Ce module, dispense a l’ENSEEIHT (N7), portait sur la simulation avancee de reseaux en utilisant la bibliotheque Python NetworkX. Le sujet central etait le probleme de consensus dans les reseaux distribues.

Probleme de consensus

L’objectif est que tous les noeuds d’un reseau convergent vers une meme valeur. Chaque noeud est initialise avec une valeur aleatoire, et a chaque cycle, un noeud diffuse sa valeur a ses voisins, qui mettent alors a jour leur propre valeur par moyenne :

while 1 do
    if (time mod T) = 0 then
        broadcast {VAL}
    else if msgReceived(R_VAL) then
        VAL <- (VAL + R_VAL) / 2
    end if
end while

Modelisation matricielle

L’approche mathematique utilisait des matrices de transition pour modeliser l’evolution du systeme. Pour chaque noeud emetteur, une matrice Ei est construite, et le produit de ces matrices sur un cycle donne la matrice de transition globale Pl :

import numpy as np

def create_matrix_Ei(graph, emitter):
    """Creer la matrice Ei pour un noeud emetteur donne."""
    n = len(graph.nodes)
    Ei = np.zeros((n, n))
    for node in graph.nodes:
        if node == emitter:
            Ei[node][node] = 1
        else:
            neighbors = list(graph.neighbors(emitter))
            if node in neighbors:
                Ei[node][node] = 0.5
                Ei[node][emitter] = 0.5
            else:
                Ei[node][node] = 1
    return Ei

def compute_Pl(graph, sequence):
    """Calculer la matrice Pl pour une sequence d'emissions."""
    n = len(graph.nodes)
    Po = np.eye(n)
    for emitter in sequence:
        Ei = create_matrix_Ei(graph, emitter)
        Po = Ei @ Po
    return Po

Resultats de simulation

Les simulations ont ete realisees sur differentes topologies (mesh et ligne) en variant le nombre de noeuds :

Topologie Noeuds Cycles moyens Ecart-type
Mesh 5 2.4 0.21
Mesh 10 2.1 0.26
Ligne 5 24 11.17
Ligne 10 63 46.8

La correlation entre le plus grand valeur propre de la matrice Pl et le temps de convergence a ete etudiee en generant 1000 sequences aleatoires et en tracant la relation entre ces deux metriques.

Concepts cles : Consensus distribue, NetworkX, matrices de transition, valeurs propres, convergence, topologie reseau.


8. Integrated Modular Avionics (IMA)

Le module Integrated Modular Avionics (IMA) traitait de l’architecture des systemes avioniques modernes. L’IMA est un concept d’architecture informatique dans lequel les ressources de calcul sont partagees entre plusieurs applications avioniques, contrairement a l’approche federee traditionnelle ou chaque fonction dispose de son propre equipement dedie.

Les principes fondamentaux de l’IMA :

L’IMA represente une evolution majeure dans l’avionique, permettant de reduire le poids, la consommation energetique et les couts de maintenance des systemes de bord, tout en maintenant les niveaux de securite les plus eleves (DAL A).

Concepts cles : IMA, ARINC 653, AFDX, partitionnement, DO-178C, certification, systemes critiques.


9. Low Power Networks for IoT

Ce module portait sur les reseaux basse consommation pour l’Internet des Objets, avec un focus particulier sur la technologie LoRaWAN. Le cours couvrait les specificites des communications IoT, ou les contraintes de consommation energetique et de cout sont primordiales.

Caracteristiques de l’IoT

Les systemes IoT se distinguent par :

Pile protocolaire IoT

Couche Standard
Application IETF CoAP
Transport IETF UDP
Adaptation IETF 6LoWPAN, IETF SCHC
Acces reseau IEEE 802.15.4, LoRaWAN

Travaux pratiques : Simulation LoRaWAN

Les TP consistaient en la simulation d’un deploiement LoRaWAN avec calcul de la couverture par triangulation. L’objectif etait d’evaluer les performances d’un reseau de passerelles LoRa en termes de taux de livraison de paquets (PDR) en fonction de la densite de deploiement et des parametres radio (spreading factor, puissance d’emission).

Un rapport detaille sur le deploiement LoRaWAN et l’analyse par triangulation a ete produit, demontrant l’impact du placement des passerelles sur la couverture et la fiabilite du reseau.

Concepts cles : LoRaWAN, LPWAN, IoT, ALOHA, spreading factor, PDR, energy harvesting, 6LoWPAN, CoAP.


10. Processus Stochastiques

Le module sur les processus stochastiques traitait de la modelisation et de l’evaluation de performances des systemes en file d’attente, un outil fondamental pour l’analyse des reseaux de communication.

Reseaux de files d’attente fermes

Le TP portait sur la simulation et le calcul analytique des performances d’un reseau ferme compose de quatre stations (T, H, R, D) avec N clients circulant en boucle :

def exact_performance_measures(lambdaH, muH, muR, muD, C, N, p):
    # Calcul des taux d'arrivee effectifs
    gamma_H = lambdaH
    gamma_R = gamma_H / p
    gamma_D = (1 - p) * gamma_H / p

    # Calcul des intensites de trafic
    rho_H = gamma_H / muH
    rho_R = gamma_R / (C * muR)
    rho_D = gamma_D / muD

    # Calcul de la constante de normalisation G4(N)
    def calculate_G4(N, rho_H, rho_R, rho_D, C):
        G4 = 0
        for n_T in range(N + 1):
            for n_H in range(N + 1 - n_T):
                for n_R in range(N + 1 - n_T - n_H):
                    n_D = N - n_T - n_H - n_R
                    term = (rho_H**n_H) * (rho_R**n_R / phi_R(n_R, C)) * (rho_D**n_D)
                    G4 += term
        return G4

    G4 = calculate_G4(N, rho_H, rho_R, rho_D, C)
    return G4

Scenarios simules

Plusieurs scenarios ont ete simules en faisant varier les parametres N (nombre de clients) et p (probabilite de routage) :

Scenario N p Description
Cas 1 15 0.50 Charge moderee, routage equilibre
Cas 2 15 0.22 Charge moderee, routage vers le disque dominant
Cas 3 30 0.50 Forte charge, routage equilibre
Cas 4 30 0.22 Forte charge, routage vers le disque dominant

Les metriques evaluees comprenaient le taux d’utilisation, le debit, le temps de sejour moyen et la probabilite de rejet, calculees a la fois de maniere analytique (loi de Little, distribution stationnaire) et par simulation Monte Carlo.

Concepts cles : Files d’attente, reseaux fermes, loi de Little, chaines de Markov, distribution stationnaire, simulation Monte Carlo, intensite de trafic.


PART D : ANALYSE ET REFLEXION

Competences et connaissances mobilisees

Le Master REOC m’a permis de mobiliser et d’approfondir un ensemble de competences variees :

Auto-evaluation

Le programme du Master REOC etait intense, d’autant plus que les cours de l’INSA se poursuivaient en parallele. Cependant, cette experience a ete extremement enrichissante car j’ai acquis de nouvelles competences que j’ai pu mettre en oeuvre apres une analyse approfondie des bibliotheques et la comprehension du fonctionnement du SDN. Grace a mon partenaire, Yohan Boujon, notre collaboration etait efficace car nous nous connaissions bien et avons developpe la quasi-totalite de ce qui etait demande dans le temps imparti lors des travaux pratiques.

Mon avis

Si je devais choisir a nouveau, je m’inscrirais sans hesitation au Master REOC. Le programme m’a permis d’elargir ma vision des reseaux dans les systemes embarques et d’acquerir une experience precieuse. Les enseignants ont fourni des bases solides pour comprendre tous les concepts applicables dans le monde professionnel. Les competences acquises seront utiles pour ma carriere. Ce programme a significativement contribue a ma croissance professionnelle et m’a prepare aux defis futurs dans le domaine des systemes en reseau.

La diversite des modules – de l’avionique deterministe a l’IoT basse consommation, en passant par la virtualisation et la modelisation stochastique – offre une vision panoramique des enjeux actuels des reseaux embarques. Cette polyvalence est un atout majeur pour aborder les problematiques industrielles complexes qui melent souvent plusieurs de ces domaines.


Rapports et Projets

Rapport du Projet SDCI

Le rapport complet du projet SDCI est disponible sur GitHub - sdci-reoc.

Ouvrir le rapport complet du projet SDCI

Ouvrir le sujet du TP

Rapport sur les Processus Stochastiques

Ouvrir le rapport sur les processus stochastiques