User Tools

Site Tools


brouillons:aethernet

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
brouillons:aethernet [2016/07/24 10:16] – [Le callsign destination] f4hofbrouillons:aethernet [2016/07/24 10:24] (current) – [Remarque sur les M-PDU de broadcast et multicast] f4hof
Line 1: Line 1:
 ====== AEthernet ====== ====== AEthernet ======
  
-**//Attention: ce document est un brouillon, son contenu est encore susceptible d'évoluer.//**+===== Suivi des changements ===== 
 +Version 1.0: 24 Juillet 2016 - Publication initiale 
 + 
 +===== Objectif =====
  
 AEthernet ou "Amateur Ethernet" est une adaptation d'Ethernet dont l'objectif premier est d'établir des liens en packet radio, en dessous de 2GHz, dans un réseau tout IP.  AEthernet ou "Amateur Ethernet" est une adaptation d'Ethernet dont l'objectif premier est d'établir des liens en packet radio, en dessous de 2GHz, dans un réseau tout IP. 
Line 20: Line 23:
  
 En outre, cette couche intermédiaire doit posséder les méthodes suivantes: En outre, cette couche intermédiaire doit posséder les méthodes suivantes:
-  * ''sendDataFrame(size_t,uint8_t[])'' : permet d'encapsuler un M-PDU dans un P-PDU et de l'envoyer. Cette fonction est obligatoirement synchrone. +  * ''sendDataFrame(size_t,uint8_t[])'' : permet d'encapsuler une M-PDU dans une P-PDU et de l'envoyer. Cette fonction est obligatoirement synchrone. 
-  * ''sendDataFrameAsync(size_t,uint8_t[])'' : permet d'encapsuler un M-PDU dans un P-PDU et de l'envoyer. Cette fonction peut rendre la main une fois qu'elle n'a plus besoin de bloquer l'écriture dans l'argument de données.+  * ''sendDataFrameAsync(size_t,uint8_t[])'' : permet d'encapsuler une M-PDU dans une P-PDU et de l'envoyer. Cette fonction peut rendre la main une fois qu'elle n'a plus besoin de bloquer l'écriture dans l'argument de données.
   * ''sendInitFrame(size_t,uint8_t[])'' : permet d'envoyer une chaîne de caractères brute pour basculer la TNC en mode KISS. Cette fonction est ne rend la main qu'une fois la commande totalement envoyée.   * ''sendInitFrame(size_t,uint8_t[])'' : permet d'envoyer une chaîne de caractères brute pour basculer la TNC en mode KISS. Cette fonction est ne rend la main qu'une fois la commande totalement envoyée.
-  * ''setTxDelay(uint8_t)'' : définit le temps de d'activation du transmetteur radio, avant la transmission de données. L'argument définit la valeur de ce temps en incréments de 10ms (ex: 10 => 100ms).+  * ''setTxDelay(uint8_t)'' : définit le temps d'activation du transmetteur radio, avant la transmission de données. L'argument définit la valeur de ce temps en incréments de 10ms (ex: 10 => 100ms).
   * ''setPersistence(uint8_t)'' : Définit le paramètre de persistance p. L'argument P est défini de 0 à 255. Le paramètre de persistence p est défini comme suit: P = p * 256 -1 (ex: 63 => p= 0.25).   * ''setPersistence(uint8_t)'' : Définit le paramètre de persistance p. L'argument P est défini de 0 à 255. Le paramètre de persistence p est défini comme suit: P = p * 256 -1 (ex: 63 => p= 0.25).
-  * ''setSlotTime(uint8_t)'' : Définit le temps d'intervalle en tranches de 10ms (ex: 12 => 120ms).+  * ''setSlotTime(uint8_t)'' : Définit la durée d'un intervalle de temps en tranches de 10ms (ex: 12 => 120ms).
   * ''setTxTail(uint8_t)'' : Définit le temps de maintien d'activité du transmetteur après la fin de transmission, en incréments de 10ms (eg. 11 => 110ms).   * ''setTxTail(uint8_t)'' : Définit le temps de maintien d'activité du transmetteur après la fin de transmission, en incréments de 10ms (eg. 11 => 110ms).
   * ''setFullDuplex(uint8_t)'' : Définit la capacité de duplex du canal de transmission. L'argument vaut zéro pour un canal half duplex, et une valeur non nulle pour un canal full-duplex.    * ''setFullDuplex(uint8_t)'' : Définit la capacité de duplex du canal de transmission. L'argument vaut zéro pour un canal half duplex, et une valeur non nulle pour un canal full-duplex. 
   * ''setHardware(size_t,uint8_t[])'' : Permet d'envoyer des commandes de paramétrage spécifiques à chaque TNC. Sur les TNC-1, cette commande définit la vitesse de modem. D'autres modem peuvent utiliser cette fonction pour d'autres fonctions matérielles spécifiques.   * ''setHardware(size_t,uint8_t[])'' : Permet d'envoyer des commandes de paramétrage spécifiques à chaque TNC. Sur les TNC-1, cette commande définit la vitesse de modem. D'autres modem peuvent utiliser cette fonction pour d'autres fonctions matérielles spécifiques.
-  * ''registerReceiveFrame( void (*receiveDataFrame)(size_t,uint8_t[]))'' : Permet de déclencher le traitement à réaliser en cas de réception d'un M-PDU.+  * ''registerReceiveFrame( void (*receiveDataFrame)(size_t,uint8_t[]))'' : Permet de déclencher le traitement à réaliser en cas de réception d'une M-PDU.
 ==== Raw Media AEthernet ==== ==== Raw Media AEthernet ====
 AEthernet peut être utilisé sur d'autres médias que de la radio. La description des couches matérielles associées est réalisée dans un autre document. AEthernet peut être utilisé sur d'autres médias que de la radio. La description des couches matérielles associées est réalisée dans un autre document.
Line 92: Line 95:
 La MTU maximale est de 65505 octets.  La MTU maximale est de 65505 octets. 
  
-Cette taille est donnée pour respecter la condition de taille d'un M-PDU dans le pire des cas (où l'on utilise une en-tête 802.1ad). Dans ce cas, l'overhead de la D-PDU est de 30 octets: 8 pour DCSIGN, 8 pour SCSIGN, 8 octets pour l'en-tête 802.1ad, 2 pour AETYPE, 4 pour le FCS.+Cette taille est donnée pour respecter la condition de taille d'une M-PDU dans le pire des cas (où l'on utilise une en-tête 802.1ad). Dans ce cas, l'overhead de la M-PDU est de 30 octets: 8 pour DCSIGN, 8 pour SCSIGN, 8 octets pour l'en-tête 802.1ad, 2 pour AETYPE, 4 pour le FCS.
 ==== La somme de contrôle ==== ==== La somme de contrôle ====
-Le champ FCS de 4 octets est utilisé pour stocker la valeur du CRC32 appliqué sur l'ensemble des octets précédents de la trame AEthernet (à savoir sur la concaténation des champs DCSIGN, SCSIGN, AETYPE, DATA).+Le champ FCS de 4 octets est utilisé pour stocker la valeur du CRC32 appliqué sur l'ensemble des octets précédents de la M-PDU AEthernet.
  
 Les octets du CRC32 sont stockés dans le champ FCS en respectant l'ordre des octets du réseau (big-endian). Les octets du CRC32 sont stockés dans le champ FCS en respectant l'ordre des octets du réseau (big-endian).
Line 128: Line 131:
 L'utilisation d’acquittement sélectif au niveau de la couche transport est par contre encouragée. L'utilisation d’acquittement sélectif au niveau de la couche transport est par contre encouragée.
  
-===== Remarque sur les D-PDU de broadcast et multicast =====+===== Remarque sur les M-PDU de broadcast et multicast =====
  
-Les D-PDU avec un callsign destination de broadcast et de multicast issus d'un medium ne doivent pas être répétées sur l'interface source.+Les M-PDU avec un callsign destination de broadcast ou de multicast issus d'un medium ne doivent pas être répétées sur le même médium.
 ===== Trames de test ===== ===== Trames de test =====
  
brouillons/aethernet.1469355416.txt.gz · Last modified: 2016/07/24 10:16 by f4hof