WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Extensions du simulateur Omnet++ pour la validation de mécanismes de transmission multimédia dans les réseaux IEEE 802.11

( Télécharger le fichier original )
par Ahmed Ayadi
Ecole Nationale des Sciences de l'Informatique - Ingénieur informatique 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3. Diagrammes de séquences

Dans cette partie nous présentons quelques exemples de diagramme de séquences qui expliquent les interactions entre les classes que nous avons créées.

3.1. Calcul de la puissance reçue

La figure 3.29 représente un des scénarios possibles pour le calcul de la puissance reçue. Dans ce diagramme l'objet radio, instance de la classe Ieee 80211 aRadio, fait appel à la méthode calculateReceivedPower() de l'objet receptionModel. Ce dernier est une instance de

la classe ShadowingMode. Ce diagramme reste valable pour les autres modèle Free-Space et Two-Ray.

radio: Ieee80211aRadio

 

receptionModel :ShadowingMode

 

1: calculateReceivedPower( )

2: recvPower

Figure 3.29 Diagramme de séquences du calcul de la puissance reçue

3.2. Calcul de la durée de transmission

Avant de transmettre un paquet, l'objet radio calcule la durée de transmission. Il fait appel à la méthode calculateDuration() de l`objet radioModel comme le montre la figure 3.30.

radio: Ieee80211aRadio

 

radioModel:Ieee8021 1 aRadioModel

 

 

1: calculateDuration( )

 
 
 

Figure 3.30 Diagramme de séquences du calcul de la durée de transmission

3.3. Calcul de PER

A chaque réception d'un nouveau message, l'objet radio fait appel à la méthode isReceivedCorrectly() de l'objet radioModel. Ce dernier fait appel à la méthode packetOK() qui calcule le CSR de chaque morceau du message reçue. En général, l'objet radio fait appel à la méthode getChrunkSuccessRate() pour chaque morceau. Ensuite, il calcule le PSR qui sera le produit des deux valeurs déjà calculées et PER qui sera 1-PSR. Puis, Il génère un nombre aléatoire entre 0 et 1 et le compare avec la valeur PER. Enfin, il retourne true si le nombre aléatoire est inférieur à PER et false sinon.

radio:Ieee8021 1aRadio

 

radioModel:Ieee8021 1 aRadioModel

 

modes[1]:FecBpskMode

 

modes[7]:FecQamMode

 

1: isReceivedCorrectly( )

9: :

generate

7:

ErrorMasks( )

2: packetOK( )

4: getChrunkSuccessRate( )

ErrorMasks( )

5: CSR_HEADER

7: getChrunkSuccessRate( )

4: generate

8: CSR_PAYLOAD

Figure 3.31 Diagramme de séquences du calcul du PER

3.4. La transmission vidéo

À l'instant sessionEnterDelay, l'objet rtpApplication, instance de la classe RTPApplication, envoie un message à l'objet rtpModule, instance de la classe RTPEndSystemModule, pour ouvrir une nouvelle session. rtpModule crée l'objet profile instance de la classe RTPProfile, ouvre une socket, et initialise l'objet rtcpModule. Une fois l'objet rtcpModule est initialisé, il renvoie un message à rtpModule. rtpModule renvoie ensuite un message au module rtpApplication lui informant que tous les modules sont initialisés.

Ensuite, si l'attribut fileName est différent de la chaîne vide, c'est à dire que rtpApplication est l'application source, il envoie un message à rtpModule afin de créer un rtpPayloadSender. À la réception de ce message, rtpModule crée un nouveau objet rtpPayloadSender et renvoie un message à rtpApplication pour lui informer que l'objet rtpPayloadSender est déjà crée et qu'il peut commencer la transmission.

A l'instant transmissionStartDelay, rtpApplication envoie un message "PLAY" à rtpModule qui à son tour l'envoie à rtpPayloadSender. Ce dernier ouvre le fichier dont le nom fileName et commence à construire les paquets RTP et les envoie au module rtpModule. À chaque réception d'un paquet RTP, rtpModule envoie une copie au module rtcpModule et l'envoie à la couche inférieure UDP.

1.4: createServerSocket( )

rtpApplication:RTPApplication

rtpModule:RTPEndsystemModule

rtcpModule:RTCPEndsystemModule

profile: RTPProfile

1.2: initializeProfile( )

1.3: profileInitialized( )

2.4: Sender Module Created

2.1: createSenderModule( )

2.3: senderModuleInitialized( )

rtpPayloadSender:RTPAVProfilePayload32Sender

3: senderModuleControl( )3.1: senderModuleControl( )

3.2: play( )

3.5: dataOut( )

1.5: initializeRTCP( )

1.6: rtcpInitialized( )

1.7: Session Entered

2[fileName <> ""]: createSenderModule( )

2.2: initializeSenderModule( )

3.4: dataOut( )

3.3[!inputFileStream.eof()]: dataOut( )

1: enterSession( )

Figure 3.32 Transmission d'un flux vidéo

Conclusion

Au cours de ce chapitre, nous avons abordé la partie conceptuelle en définissant les différentes couches protocolaires ainsi que les différentes classes associées. En plus, nous avons détaillé les fonctionnalités de chaque classe.

Dans le prochain chapitre, nous décrivons la réalisation et les différentes configurations pour notre solution.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius