Chapitre V. Simulation de la robustesse RadioFréquences de KNX-RF sous OMNet++
V.2. Description du Framework MiXiM
MiXiM [119] est un framework créé pour la modélisation des réseaux sans fil fixes et mobiles
(réseaux de capteurs sans fil, réseaux BAN : Body Area Netwoks, réseaux VANet : Vehicular Ad-Hoc
Network, réseaux cellulaires, etc.). Il propose des modèles détaillés de propagation d’ondes radio,
d’estimation d’interférences, de consommation d'énergie et plusieurs protocoles pour la couche MAC
(e.g. Zigbee). MiXiM est le fruit de la fusion de plusieurs frameworks développés pour OMNeT++ :
ChSim développé par l’université de Paderborn.
MAC Simulator développé par l’université technique de Delft.
Mobility framework développé par l’université technique de Berlin.
Positif framework développé par l’université technique Delft.
Outre les avantages de chacun de ces simulateurs, MiXiM introduit des extensions uniques
comme le support complet de la 3D et la possibilité de simuler des réseaux comptant jusqu’à 1000
nœuds tout en ayant une faible utilisation de la mémoire.
Dans une communication entre deux produits, chaque paquet émis passe à travers les différentes
couches OSI de l'émetteur et du récepteur où des événements sont créés à chaque passage. Malgré que
MiXiM soit un framework puissant, il ne bénéficie pas d’un support adéquat de la communauté de
recherche et la documentation disponible est difficile à comprendre. Aussi, il existe peu de tutoriels et
la modélisation est assez complexe et requiert une excellente maîtrise du langage C++. Dans ce qui
suit, nous allons décrire quelques-uns des principaux modules qui composent un réseau modélisé sur
MiXiM.
V.2.1.Le module « Node »
Un exemple de module Node est illustré dans la Figure V-3. Sur MiXiM, toutes les couches OSI
d’un nœud peuvent être modélisées. Dans notre cas, seules les couches permettant de modéliser les
réseaux WSN nous intéressent, à savoir : la couche d'application (appl), la couche réseau (netw), la
couche liaison (MAC) et la couche physique (PHY). La couche physique et la couche MAC sont
regroupées dans un seul module appelé Network Interface Card (NIC). Les couches sont reliées entre
elles par deux paires de ports OMNet, la première véhicule les messages de données et la deuxième
véhicule les messages de contrôles. Le module de mobilité est responsable des mouvements des
nœuds. Le module de batterie est utilisé pour modéliser la consommation d’énergie. Le module « arp »
gère la résolution d'adresses (ARP), à savoir la traduction entre les adresses réseau et les adresses
MAC. Le module « Stats » fournit une interface générale pour la collecte des données statistiques
d'une simulation.
Figure V-3 : La structure générale d’un réseau, d'un nœud et de son NIC sur OMNet++
V.2.2.Le module NIC (Network Interface Card):
V.2.2.1.La couche Physique
La couche PHY est la partie centrale d'un nœud sans fil dans MiXiM. Elle est responsable de la
transmission et la réception des messages, la détection de collision, le calcul d'erreur binaire, et de la
commutation de l’état de la radio (Rx, Tx, Sleep, etc.). Elle est en outre responsable de l'application
des modèles de canal de propagation utilisées dans les simulations. La couche physique MiXiM est
divisée en trois parties :
Base-PhyLayer: fournit les interfaces avec la couche MAC et les couches physiques des
autres nœuds.
AnalogueModels: est responsable de la simulation des atténuations appliquées sur le
signal, comme le Shadowing, le Fading et les atténuations en espace libre (Path Loss). Une
couche physique peut contenir un nombre arbitraire d'AnalogueModels. La classe
AnalogueModel contient la fonction appelée filterSignal() qui prend comme argument le
signal à traiter [123] et s’applique à la réception du signal. Les modèles de "AnalogueModels"
sont spécifiés dans des fichiers de configuration appelés « config.xml ».
Decider: est responsable de l’évaluation et de la classification du signal reçu. En effet, il
détermine si le signal doit être considéré comme un signal utile, un signal d’interférence ou
juste du bruit. Il est également responsable de la démodulation des messages reçus et du calcul
d'erreurs binaires. Le décideur fournit des informations sur l'état actuel du canal (libre ou
occupé) grâce au RSSI. Un ou plusieurs décideurs peuvent être définis dans le même fichier
config.xml.
Les différentes classes qui constituent le module de la couche physique MiXiM et les modules qui
en héritent sont détaillées dans l’Annexe 2.
V.2.2.2.La couche MAC
Concernant la couche MAC, elle s’occupe de fixer la puissance, le débit et le préambule du signal
à transmettre avant de l’envoyer vers la couche physique. Elle récupère également l’état du canal en
utilisant la fonction phy->getChannelState( ) qui détermine si le canal est IDLE ou pas. Cette
fonction retourne la valeur du RSSI calculé par le décideur (Decider) de la couche physique.
Plusieurs protocoles MAC ont déjà été implémenté sur MiXiM, notamment les protocoles
B-MAC, L-B-MAC, T-MAC et les couches MAC des deux protocoles IEEE 802.15.4 et IEEE 802.11.
V.2.2.3.Le processus d’émission et de réception dans le module NIC
Les paquets arrivent de la couche supérieure, la couche réseau, et entrent dans la couche MAC.
C'est au niveau de cette couche que la puissance de transmission (TX-power) et le débit de
transmission sont définis. Ensuite, ces paquets sont encapsulés pour devenir des « Macpkt ». En
descendant vers la couche physique, les Macpkt sont encapsulés dans ce que l’on appelle des trames
aériennes "Airfraimes" en faisant appel à la fonction CreateSignal( ) qui définit la représentation
physique du signal qui sera transmis sur le canal de propagation radio. Ce signal va contenir en plus
des informations sur le début de la trame et la durée de transmission, sa puissance et son débit.
Figure V-4 : La procédure d'émission et de réception au niveau de NIC
Un clone de la trame AirFrame est envoyé à chaque nœud se trouvant à la portée de l’émetteur.
Les couches physiques de ces nœuds reçoivent le signal qui sera traité par AnalogueModels pour
simuler les effets du canal de propagation (e.g. atténuations, fading). Dans un modèle, il peut y avoir
plusieurs AnalogueModels qui s’appliquent à la fois sur un signal. La puissance de réception
(RX-power) est alors calculée en multipliant les modèles de propagation par la puissance de transmission
(TX-power). En fonction de la puissance de réception résultante, le décideur (Decider) de la couche
physique peut distinguer un signal d’un bruit, et peut calculer le SNR et donc le taux d’erreurs binaires
selon la modulation utilisée.
V.2.3.Le module « Mobility »
MiXiM peut modéliser le mouvement de tout objet que ce soit un nœud ou un obstacle. Chaque
fois que la position d’un objet change, tous les objets du réseau en sont informés pour mettre à jour les
paramètres physiques comme la distance entre les nœuds, la puissance du signal reçu, etc. La mobilité
est un processus continu, cependant un ajustement de l'intervalle de mouvement doit être fait pour
avoir un bon compromis entre le temps de calcul et l’exactitude des résultats. Une collision des objets
peut avoir lieu et change la trajectoire de l’objet de plusieurs façons en fonction du modèle de mobilité
choisit (angle réfléchis, angle aléatoire, etc.). Dans ces travaux, le modèle de mobilité utilisé est le
modèle statique, ce qui signifie que les nœuds ne changent pas de position pendant la simulation.
V.2.4.Le module « Battery »
Le module Battery s’occupe de la modélisation de la consommation d'énergie induite par
l’activité du nœud. Le module permet de spécifier les caractéristiques de la batterie (capacité, tension,
nombre de piles, etc.) pour chaque nœud et de déterminer périodiquement son état en utilisant les
fonctions estimateResidual() et getVoltage(). La version courante de MiXiM propose seulement un
modèle linéaire de la consommation de la batterie en utilisant le module SimpleBattery. Ce module
maintient une table en mettant à jour la capacité résiduelle du nœud au fur et à mesure que la
simulation se déroule et ce en utilisant l’équation :
𝐶 = 𝐶 − ∑ 𝐼
𝑑𝑑
. ∆𝑡. 𝑉
𝑛𝑜𝑚𝑖𝑛𝑎𝑙(V-1)
Où 𝐶 est la capacité résiduelle de la batterie, ∆t l’intervalle de temps depuis le dernier update, I
dle courant consommé et V
nominalla tension d’alimentation qui est assumée constante jusqu’à la
décharge de la batterie. Dans ces travaux, la consommation de la batterie des nœuds KNX-RF n’a pas
été simulée avec MiXiM car cela sort du cadre de cette thèse.
V.2.5.Le module « Connection Manager »
Le module responsable de l'établissement des connexions entre les nœuds s'appelle
"ConnectionManager". La perte de la connectivité peut être due à la mobilité (par exemple des nœuds
se déplacent et s’éloignent trop) ou due à un changement de puissance de transmission ou une panne
de nœud. Afin de réduire la complexité de calcul dans MiXiM, les nœuds sont connectés seulement
quand ils sont à l'intérieur d’une distance appelée Distance Maximale d'Interférence (DMI), une fois
ils dépassent cette distance les connexions sont rompues. La DMI correspond à la distance maximale
dans laquelle un nœud peut encore éventuellement perturber un nœud voisin. A noter que la distance
maximale d'interférence ne détermine pas la portée maximale du produit. En effet, le fait que deux
produits soient connectés par le ConnectionManager ne garantit pas que tous les signaux reçus par le
récepteur soient correctes (limite de portée).
𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒 𝑀𝑖𝑛𝑖𝑚𝑢𝑚 𝑑′𝐼𝑛𝑡𝑒𝑟𝑓é𝑟é𝑛𝑐𝑒 = (16 ∗ 𝜋
2𝜆∗ 𝑃
2∗ 𝑃
𝑚𝑎𝑥𝑟𝑒ç𝑢𝑒 𝑀𝑖𝑛𝑖𝑚𝑢𝑚
)
1/𝛼
(V-2)
Où : α : Coefficient de Path Loss minimal, λ : Longueur d’onde et
𝑃
𝑟𝑒ç𝑢𝑒 𝑀𝑖𝑛𝑖𝑚𝑢𝑚: Le niveau minimal pour recevoir le signal
Les informations récupérées sur la connexion des nœuds sont transmises à la couche Physique
(BasePhyLayer) car elles sont nécessaires à la transmission des signaux AirFarme sur le canal radio.
Dans le document
Analyse de la robustesse et des améliorations potentielles du protocole RadioFréquences Sub-GHz KNX utilisé pour l’IoT domotique
(Page 144-149)