Hamnet 70cm
Posté : 10 juin 2017, 19:28
Je poste ici avec l'autorisation de Sébastien-GRX, même si je ne suis pas membre.
L'objectif de ce "fil de discussion" est de partager les idées de chacun sur le sujet, de suivre l'avancement des différentes personnes intéressées.
Principe général:
L'objectif du projet est de fournir des liaisons HamNet à moyen/bas débit (centaines de kbps sur support brut de 200kbps à 1Mbps), en utilisant les fréquences radioamateur plus basses que le 2.4GHz ou 5GHz (qui, elles, sont souvent trop contraignantes).
2 modes de fonctionnement prévus : point à point, et point à multipoint. Le mode "full mesh" est inenvisageable en conditions réelle à mon avis : SNR trop faible pour de tels débits, et gestion des collisions trop complexe.
L'apparition de nombreux chips modem radio low-cost (TI, Silicon Labs) va nous simplifier énormément la vie.
Nous sommes plusieurs à réfléchir à des choses similaires : F4GRX, F4HOF. J'espère qu'on pourra bosser ensemble.
Si possible, créer des modems prêts à l'emploi, avec branchement en Ethernet, et facilement configurables via telnet. Mais ça n'est pas pour tout de suite.
Détails techniques de ma solution en cours de développement.
C'est du TDMA. On sépare le temps en "macro slot" de l'ordre de 30 à 100ms. Ce seront les cycles de base à l'intérieur desquels les participants parleront tour à tour (s'ils ont quelque chose à dire).
Managed TDMA.
Le principe est que un seul "maitre" (chef d'orchestre) donne la cadence. A la fois dans un mode de fonctionnement point à point et aussi point à multipoint. Le modem maitre, c'est le "relais" que l'on va mettre sur un point haut bien dégagé.
Le maitre donne un "top chrono" à chaque macro slot, et les esclaves s'alignent dessus.
Le protocole doit être robuste à la perte d'un top sur 2 (ou 2 sur 3?).
C'est le maitre qui alloue les "temps de parole" à chacun, y compris à lui.
Le maitre est tenu au courant en temps réel de l'état de remplissage des buffers d'uplink (sens esclave vers maitre). Ca ne prend que très peu de place (1 octet par salve TX uplink).
Et le maitre alloue les temps de parole en fonction de ça.
Pourquoi faire du "managed TDMA" plutôt que du CSMA? Parce que même en cas de saturation, un tel réseau reste utilisable. Il peut être utilisé en théorie à quasi 100%. Un utilisateur n'est (en théorie) pas pollué par son voisin. Et sur un réseau "bas débit", la saturation est une situation très fréquente, il faut donc la gérer. C'est en gros comme ça que fonctionne la 2G et la 3G.
Je suis au tout début du codage de cette partie TDMA, je n'ai codé qu'une synchro basique, et fixe (temps de parole fixes).
Trames radio courtes.
Je vise des trames radio de longueur variable, de 50 à 300 octets (non encore décidé à 100%). Pas plus. Pourquoi?
Pour les débits faibles, des trames longues engendreraient un délai et/ou jitter trop important : il faut attendre l'émission totale d'une trame longue. 1500 octets c'est 60ms sur du 200kbps, c'est beaucoup.
En fait, je vise aussi de faire passer de la voix, et il faut donc pouvoir prioriser les paquets de manière efficace. Et pourquoi pas (soyons fous) de la vidéo basse qualité en full duplex. Cette partie serait peut-être transportée dans des "virtual channels", ça n'est pas encore décidé.
Côté "interface Ethernet" du modem, je garde un MTU de 1500, pour ne pas que les utilisateurs aient à s'embêter avec une config spécifique. Donc les paquets IP longs seront découpés/segmentés en plusieurs trames radio, et réassemblées à l'arrivée en une seule trame IP. C'est donc un mécanisme très différent de la "fragmentation IP".
L'état d'avancement des travaux :
Ce WE, pour la première fois, ça pingue chez moi. Mais attention, il reste encore énormément de choses à coder, ce n'est que le début du projet. Pour l'instant, c'est une config très basique et inutilisable en conditions réelles, et il y a des bugs.
Le matériel
* module radio Nice-RF à base de SI4463 : pour l'instant des RF4463PRO (20dBm); puis plus tard j'utiliserais des RF4463-F30 (30dBm) que j'ai déjà achetés.
(bien évidemment, il faudra rajouter un ampli radio et un switch T/R pour utiliser sur de grandes distances... pas simple)
* microcontrôleur ST NUCLEO-L432KC, programmé via "MBED".
* module ethernet W5500.
Le soft est clairement séparé en 2.
Partie "non temps réel" / "best effort":
* interface avec W5500
* un début de serveur DHCP
* Interprétation des trames radio reçues, et création des trames radio à émettre
Partie "temps réel":
* interface avec le module radio SI4463 : réaction aux IT du module, déclenchement très précis des instants d'émission et de réception.
Pour chaque paquet radio reçu, je le date, et je note le RSSI (puissance du signal radio)
Pour l'instant, je ne partage pas le code en public, mais tout sera open source bien évidemment.
73, Guillaume F4HDK
L'objectif de ce "fil de discussion" est de partager les idées de chacun sur le sujet, de suivre l'avancement des différentes personnes intéressées.
Principe général:
L'objectif du projet est de fournir des liaisons HamNet à moyen/bas débit (centaines de kbps sur support brut de 200kbps à 1Mbps), en utilisant les fréquences radioamateur plus basses que le 2.4GHz ou 5GHz (qui, elles, sont souvent trop contraignantes).
2 modes de fonctionnement prévus : point à point, et point à multipoint. Le mode "full mesh" est inenvisageable en conditions réelle à mon avis : SNR trop faible pour de tels débits, et gestion des collisions trop complexe.
L'apparition de nombreux chips modem radio low-cost (TI, Silicon Labs) va nous simplifier énormément la vie.
Nous sommes plusieurs à réfléchir à des choses similaires : F4GRX, F4HOF. J'espère qu'on pourra bosser ensemble.
Si possible, créer des modems prêts à l'emploi, avec branchement en Ethernet, et facilement configurables via telnet. Mais ça n'est pas pour tout de suite.
Détails techniques de ma solution en cours de développement.
C'est du TDMA. On sépare le temps en "macro slot" de l'ordre de 30 à 100ms. Ce seront les cycles de base à l'intérieur desquels les participants parleront tour à tour (s'ils ont quelque chose à dire).
Managed TDMA.
Le principe est que un seul "maitre" (chef d'orchestre) donne la cadence. A la fois dans un mode de fonctionnement point à point et aussi point à multipoint. Le modem maitre, c'est le "relais" que l'on va mettre sur un point haut bien dégagé.
Le maitre donne un "top chrono" à chaque macro slot, et les esclaves s'alignent dessus.
Le protocole doit être robuste à la perte d'un top sur 2 (ou 2 sur 3?).
C'est le maitre qui alloue les "temps de parole" à chacun, y compris à lui.
Le maitre est tenu au courant en temps réel de l'état de remplissage des buffers d'uplink (sens esclave vers maitre). Ca ne prend que très peu de place (1 octet par salve TX uplink).
Et le maitre alloue les temps de parole en fonction de ça.
Pourquoi faire du "managed TDMA" plutôt que du CSMA? Parce que même en cas de saturation, un tel réseau reste utilisable. Il peut être utilisé en théorie à quasi 100%. Un utilisateur n'est (en théorie) pas pollué par son voisin. Et sur un réseau "bas débit", la saturation est une situation très fréquente, il faut donc la gérer. C'est en gros comme ça que fonctionne la 2G et la 3G.
Je suis au tout début du codage de cette partie TDMA, je n'ai codé qu'une synchro basique, et fixe (temps de parole fixes).
Trames radio courtes.
Je vise des trames radio de longueur variable, de 50 à 300 octets (non encore décidé à 100%). Pas plus. Pourquoi?
Pour les débits faibles, des trames longues engendreraient un délai et/ou jitter trop important : il faut attendre l'émission totale d'une trame longue. 1500 octets c'est 60ms sur du 200kbps, c'est beaucoup.
En fait, je vise aussi de faire passer de la voix, et il faut donc pouvoir prioriser les paquets de manière efficace. Et pourquoi pas (soyons fous) de la vidéo basse qualité en full duplex. Cette partie serait peut-être transportée dans des "virtual channels", ça n'est pas encore décidé.
Côté "interface Ethernet" du modem, je garde un MTU de 1500, pour ne pas que les utilisateurs aient à s'embêter avec une config spécifique. Donc les paquets IP longs seront découpés/segmentés en plusieurs trames radio, et réassemblées à l'arrivée en une seule trame IP. C'est donc un mécanisme très différent de la "fragmentation IP".
L'état d'avancement des travaux :
Ce WE, pour la première fois, ça pingue chez moi. Mais attention, il reste encore énormément de choses à coder, ce n'est que le début du projet. Pour l'instant, c'est une config très basique et inutilisable en conditions réelles, et il y a des bugs.
Le matériel
* module radio Nice-RF à base de SI4463 : pour l'instant des RF4463PRO (20dBm); puis plus tard j'utiliserais des RF4463-F30 (30dBm) que j'ai déjà achetés.
(bien évidemment, il faudra rajouter un ampli radio et un switch T/R pour utiliser sur de grandes distances... pas simple)
* microcontrôleur ST NUCLEO-L432KC, programmé via "MBED".
* module ethernet W5500.
Le soft est clairement séparé en 2.
Partie "non temps réel" / "best effort":
* interface avec W5500
* un début de serveur DHCP
* Interprétation des trames radio reçues, et création des trames radio à émettre
Partie "temps réel":
* interface avec le module radio SI4463 : réaction aux IT du module, déclenchement très précis des instants d'émission et de réception.
Pour chaque paquet radio reçu, je le date, et je note le RSSI (puissance du signal radio)
Pour l'instant, je ne partage pas le code en public, mais tout sera open source bien évidemment.
73, Guillaume F4HDK