Chappe 05 · Régions et portée
Régions et portée
Jusqu'où un message est relayé. C'est le réglage le moins documenté de MeshCore, celui que presque tout le monde comprend de travers, et celui qui décide de ce qui traverse le département.
Un canal dit à qui un message s'adresse. Une région dit jusqu'où il est relayé. Les deux mécanismes sont indépendants.
Attention au mot : une région MeshCore est une étiquette de portée géographique, sans rapport avec les régions administratives françaises.
Vous découvrez les régions ? Suivez les encadrés « En clair » : lus à la suite, ils racontent tout le mécanisme, sans une seule commande. Vous configurez un répéteur ? Les sections techniques se lisent seules, et les réglages à poser sont dans « Ce que porte un nœud Chappe 05 ».
Le principe, en une image
Imaginez des villages reliés par des crieurs publics. Le télégraphe de Chappe ne fonctionnait pas autrement : un message passait de tour en tour.
Chaque répéteur est le crieur d'un village. Il entend ce qui se dit autour de lui et le répète plus fort, pour que le village suivant l'entende. Chaque compagnon est un habitant équipé d'une radio.
Une région, c'est un canton : un groupe de villages qui acceptent de se relayer entre eux. Une annonce criée peut porter le tampon d'un canton.
| Sur le réseau | Au village |
|---|---|
| Région | Un canton |
| Étiquette de région | Le tampon du canton, apposé sur l'annonce |
| Inondation | Une annonce criée de village en village |
| Route directe | Une lettre portée par des messagers, les villages de passage écrits sur l'enveloppe |
| Zéro saut | Parler par-dessus la clôture |
| Répéteur | Le crieur public |
| Liste des régions du répéteur | Les cantons que ce crieur accepte de servir |
Le lexique complet, et ce que fait un compagnon dans chaque situation, sont en annexe, en bas de page.
Le crieur applique une règle simple : il ne répète une annonce que si elle porte le tampon d'un canton qu'il sert. Une annonce sans tampon, il la répète aussi, par défaut. Une lettre, il la transmet toujours, sans regarder de tampon.
Le tampon est précis. Celui du canton de Gap n'est pas celui du département : un crieur qui sert le département mais pas le canton de Gap ne répète pas une annonce tamponnée « canton de Gap ». C'est pourquoi un répéteur déclare chacune des échelles où il se trouve.
Les trois idées à retenir
- Le tampon ne décide que de ce qui est répété. Tout le monde entend ce qui est crié à portée de voix, tampon ou pas. Et les lettres passent toujours.
- On ne crie qu'au début. Une fois le chemin connu, tout passe par lettre. Le tampon sert aux présentations, aux canaux, aux premiers messages et à la recherche de chemin.
- Un habitant répond avec le tampon de son propre canton, alors que le crieur reprend celui de la demande. Entre deux habitants de cantons différents, le message peut arriver et l'accusé de réception se perdre en route.
Deux acteurs, deux rôles
| Acteur | Ce qu'il fait |
|---|---|
| Le répéteur | déclare la liste des régions où il se trouve |
| L'émetteur | tague son canal avec la portée jusqu'où le message doit aller |
Un répéteur relaie un message si et seulement si l'étiquette du message figure dans sa liste.
Et ce sont les compagnons qui portent les canaux, pas les répéteurs : un répéteur n'a aucun canal, il transporte des paquets sans les lire.
La région *, et le contre-sens qu'elle crée
Créée par défaut sur tout répéteur, * signifie : relaie tous les messages qui n'ont aucune région associée.
C'est elle qui fait tenir le réseau pendant la transition. Sans elle, quiconque n'a pas encore configuré ses canaux serait coupé sans comprendre pourquoi.
Elle produit une conséquence que personne n'attend :
Le trafic non tagué va plus loin que le trafic tagué. Il n'est arrêté par aucune frontière de région.
Ce qui est filtré, et ce qui ne l'est jamais
Un répéteur ne regarde la région que d'un seul genre de paquet : ceux qu'il reçoit en inondation et qu'il devrait relayer.
| Mode du paquet | Le répéteur vérifie-t-il la région ? |
|---|---|
| Inondation étiquetée | oui : si aucune région de sa liste ne correspond, il ne relaie pas |
| Inondation sans étiquette | traitée comme *, relayée dans la limite de flood.max.unscoped |
| Route directe, étiquetée ou non | jamais |
| Zéro saut | sans objet, rien n'est relayé |
Deux conséquences surprennent souvent.
Restreindre les régions d'un répéteur ne coupe pas les échanges établis. Une conversation dont le chemin est connu passe en route directe, que la région ne contrôle pas. Ce qui est coupé, c'est la découverte.
Une région ne filtre jamais la réception. Un compagnon entend tout ce qui lui parvient. Sur un banc d'essai où tous les appareils s'entendent directement, les régions ne sont donc jamais sollicitées.
Pourquoi porter les quatre niveaux
La convention française suit le principe de la peau d'oignon : un répéteur déclare toutes les échelles géographiques où il se trouve, de la plus large à la plus fine.
| Niveau | Code | Source |
|---|---|---|
| Europe | eu |
usage international établi |
| Pays | fr |
ISO 3166-1 alpha-2 |
| Région | fr-pac |
ISO 3166-2 |
| Département | fr-05 |
ISO 3166-2 |
L'imbrication existe dans le firmware mais elle est purement cosmétique : déclarer fr-05 comme enfant de fr-pac ne produit aucun héritage. Chaque étiquette doit être portée explicitement.
Un répéteur ne filtre pas pour protéger le réseau. Il accepte les différents degrés de précision que les émetteurs emploieront.
Un répéteur qui ne porterait que fr-05 couperait tout message tagué fr, fr-pac ou eu traversant son secteur, y compris ceux d'un voisin ayant tagué correctement. Il deviendrait un trou dans le réseau, sans que personne ne comprenne d'où vient le blocage.
Le filtrage utile se fait côté émetteur, en taguant chaque canal à la portée juste. C'est là que se joue la préservation du temps d'antenne, pas dans la liste du répéteur.
Le cas de eu
Porter eu expose au trafic européen tagué. C'est un coût réel. Mais l'alternative est pire : quelqu'un qui veut porter loin sans disposer de eu ne tague rien du tout, son message part sous *, et il va au-delà de l'Europe.
eu sert donc à séparer deux populations pour les traiter différemment.
| Trafic | Traitement possible |
|---|---|
| Non tagué | limité par flood.max.unscoped |
Tagué eu |
toléré tant qu'il reste raisonnable, blocable d'une commande |
C'est ce qui rend une crise gérable. Si tout le monde tague proprement, bloquer eu dégage la bande sans toucher au trafic local. Sans cette séparation, il n'y a rien à bloquer : tout est mélangé sous *.
Ce que porte un nœud Chappe 05
| Type de nœud | region put | default |
|---|---|---|
| Répéteur de dorsale, niveau 1 | eu · fr · fr-pac · fr-05 | fr |
| Répéteur qui couvre le bassin gapençais, niveau 2 | eu · fr · fr-pac · fr-05 · fr-05-gap | fr |
| Répéteur participant au routage d'un département voisin | les mêmes, plus le code du voisin | fr |
| Companion, terminal ou passerelle | sans effet | fr |
La région par défaut s'applique aux paquets que le nœud émet lui-même : adverts, tentatives de contact par inondation, reprise de chemin. Elle réduit la portée, elle ne l'augmente pas. Sans elle, ces paquets partent sous * et ne s'arrêtent nulle part.
Elle ne suffit pourtant pas, car un advert coûte autant qu'un message et se répète indéfiniment. Le réglage qui compte vraiment est :
set flood.advert.interval 0
default fr plus flood.advert.interval 0 : un répéteur qui n'inonde rien. C'est la combinaison à retenir.
Limiter le trafic non tagué
set flood.max.unscoped 5
Disponible en firmware 1.16, cette commande rejette les messages sans région ayant déjà effectué plus de cinq sauts. Sa valeur par défaut est 64 : sans réglage, le trafic non tagué n'est pratiquement pas limité.
C'est le levier le plus efficace contre le bruit : il coupe le trafic lointain non configuré tout en laissant passer celui des nouveaux arrivants du voisinage, qui n'ont pas encore paramétré leurs régions.
| Valeur | Usage |
|---|---|
| 5 | zone ordinaire |
| 2 | zone frontalière, trafic étranger important |
| 1 | à éviter, coupe les voisins immédiats |
À ne pas confondre avec le blocage de *, qui coupe intégralement le trafic non tagué. Celui-là ne se justifie que sur un répéteur frontalier face à un volume étranger massif.
Deux compagnons, deux régions
Un compagnon étiquette tout ce qu'il émet avec sa propre région par défaut, y compris ses réponses. Sans région par défaut, il émet tout sans étiquette. Un répéteur ou un room server, eux, répondent avec la région de la demande reçue.
Conséquence : si deux compagnons ont des régions par défaut différentes, et qu'un répéteur du trajet ne sert que l'une des deux, l'aller passe mais le retour, chemin et accusé de réception, peut être arrêté. L'émetteur ne reçoit pas d'accusé et renvoie son message pour rien. Le message est arrivé, mais personne ne le sait.
Tant que ce comportement n'évolue pas dans le firmware, la parade est de donner la même région par défaut aux compagnons qui échangent souvent, ou de choisir une échelle que tous les répéteurs du trajet portent.
Un compagnon qui se déplace
L'advert d'un compagnon porte toujours sa région par défaut. La portée qu'on choisit sur le moment dans l'application s'applique aux messages, pas aux adverts. Un compagnon réglé sur sa commune est donc introuvable dès qu'il la quitte, sauf pour ceux qui l'entendent directement.
Ce que Chappe 05 recommande. En déplacement, passez votre compagnon en fr : c'est la seule échelle que portent tous les relais, il sera découvert partout en France.
Ce choix a un coût. Le firmware d'un compagnon n'a pas de minuterie d'advert, mais l'application qui le pilote en envoie d'elle-même : sur notre réseau, un compagnon actif s'annonce environ toutes les 83 minutes. En fr, chacune de ces annonces traverse le pays. La région par défaut étiquette aussi vos messages de canal et vos premiers messages à un contact dont le chemin est inconnu, qui traversent le pays à leur tour.
D'où deux conseils. Revenu chez vous, reprenez une échelle plus fine. Et si votre application permet de choisir une portée au moment d'envoyer, servez-vous-en pour vos messages : ce choix-là ne touche pas aux adverts.
| Région par défaut du compagnon | Découvrable | Coût |
|---|---|---|
| Sa commune | seulement dans sa commune | le plus faible, mais introuvable dès qu'on en sort |
| L'échelle où l'on circule | partout où l'on circule | modéré |
fr |
partout en France | chaque advert inonde tout le pays |
Deux règles de nommage
Les régions se définissent par la géographie, jamais par l'usage. Une région adrasec ou les-relais-des-copains n'a pas lieu d'être. Un canal, oui.
Codes ISO, jamais les codes IATA. Ces derniers ont été employés historiquement et cet usage est abandonné. Ils subsistent dans les analyseurs de paquets, ce qui ne concerne pas la configuration des répéteurs.
Trente caractères maximum, minuscules, chiffres et tirets. La longueur du nom ne pèse pas sur les messages : il ne voyage jamais, seul un code de deux octets est transmis.
Selon la version du firmware
| Version | Ce qu'il faut faire |
|---|---|
| avant 1.15.0 | un region allowf <nom> après chaque region put |
| 1.15.0 | put active l'inondation automatiquement |
| 1.16.0 | region def en une ligne, et flood.max.unscoped |
Vérifiez votre version avec ver avant de recopier une procédure trouvée ailleurs.
Annexe : le village, en détail
Chaque répéteur est le crieur public d'un village. Il entend ce qui se dit autour de lui et le répète plus fort pour que les villages suivants l'entendent. Chaque compagnon est un habitant qui a une radio pour envoyer et recevoir.
Le lexique complet
| MeshCore | Dans le village | Ce que ça veut dire |
|---|---|---|
| Région | Le canton | Un groupe de villages qui décident de se relayer entre eux |
Étiquette de région (transport_codes[0]) |
Le tampon du canton sur l'annonce | Le crieur ne répète que les annonces qui portent le tampon d'un canton qu'il sert |
Région par défaut d'un compagnon (default_scope) |
La commune inscrite sur sa carte d'identité | Elle tamponne ses présentations où qu'il aille, même loin de chez lui |
Région par défaut d'un répéteur (default_scope) |
L'adresse de la mairie | Elle ne change pas : un crieur ne déménage pas |
Inondation (TRANSPORT_FLOOD route 0 si étiquetée, FLOOD route 1 sinon) |
Annonce criée de village en village | Tout le monde l'entend, chaque crieur la répète une fois |
Route directe (DIRECT route 2, TRANSPORT_DIRECT route 3) |
Lettre portée par des messagers, avec la liste des villages de passage écrite sur l'enveloppe | Seuls les crieurs cités la transmettent, pas besoin de tampon |
Zéro saut (DIRECT route 2, chemin vide) |
Parler par-dessus la clôture | Seuls les voisins immédiats entendent, personne ne répète |
| Répéteur | Le crieur public | Il vérifie le tampon avant de répéter une annonce, jamais une lettre |
| Room server | Le panneau d'affichage de la mairie | On s'y inscrit avec un mot de passe, il garde les messages |
Annonce sans étiquette (FLOOD route 1, sans code de transport) |
Annonce « libre » | Répétée par défaut, sauf si le crieur a décidé de ne répéter que les annonces tamponnées |
| Région inconnue du répéteur | Tampon d'un canton que le crieur ne sert pas | Il ne répète pas |
Chemin de retour (PATH, type 8) |
« Pour me répondre, passe par tel et tel village » | Ensuite on envoie des lettres au lieu de crier |
Accusé de réception (ACK, type 3) |
L'accusé de réception | Seulement pour les messages privés |
Canal (GRP_TXT type 5, GRP_DATA type 6) |
Un message en langage codé crié pour une association | Tout le monde l'entend, seuls les membres le comprennent, personne ne répond « reçu » |
Code de transport (transport_codes[0], 2 octets) |
Un tampon fabriqué à partir du texte de l'annonce | On ne peut pas le découper pour le coller sur une autre annonce |
Ce que fait un compagnon
| Action du compagnon | Dans le village | Tampon ? | Retour ? |
|---|---|---|---|
Advert en inondation (ADVERT, type 4) |
Crier « Je m'appelle X, j'habite ici » dans tout le canton | Oui, toujours celui de sa carte d'identité, où qu'il soit * | Non |
Advert à zéro saut (ADVERT, type 4) |
Se présenter par-dessus la clôture | Non | Non |
Message à un autre compagnon, chemin inconnu (TXT_MSG, type 2) |
Crier un message pour une personne précise | Oui | Oui : l'accusé de réception et le chemin, criés avec le tampon du canton du destinataire |
Message à un autre compagnon, chemin connu (TXT_MSG, type 2) |
Envoyer une lettre par messagers | Non | Oui : accusé de réception par lettre |
Commande CLI vers un répéteur (TXT_MSG, type 2) |
Donner un ordre au crieur | Oui si on crie | Oui : il répond, sans accusé de réception |
Message sur un canal (GRP_TXT, type 5) |
Crier un message codé pour l'association | Oui | Non |
Données sur un canal (GRP_DATA, type 6) |
Pareil, ou par lettre si on connaît le chemin | Oui si on crie | Non |
Login sur un répéteur ou un room server (ANON_REQ, type 7) |
Donner le mot de passe à la mairie | Oui si on crie | Oui : « C'est bon » ou « refusé », avec le tampon de la demande |
Requête anonyme, nœud hors contacts (ANON_REQ, type 7) |
Demander par-dessus la clôture | Non | Oui |
Statut, télémétrie (REQ, type 0) |
Demander au crieur « Comment ça va, il te reste de la voix ? » | Oui si on crie | Oui |
Découverte de chemin (REQ, type 0) |
Crier « Par où je passe pour te rejoindre ? » | Oui, on crie toujours | Oui : le chemin, puis on échange les chemins par lettre |
Keep-alive (REQ, type 0) |
Petit mot régulier à la mairie : « Je suis toujours là » | Non, c'est une lettre | Oui : « Bien noté » |
Traceroute (TRACE, type 9) |
Lettre qui fait noter à chaque crieur la qualité de ce qu'il a entendu | Non | Oui : la lettre revient avec les notes |
Découverte des voisins (CONTROL, type 11) |
Demander par-dessus la clôture « Qui est crieur par ici ? » | Non | Oui : les crieurs proches répondent |
Partage de contact (ADVERT, type 4) |
Montrer la carte de visite de quelqu'un à ses voisins | Tampon « à ne pas répéter » | Non |
Données brutes (RAW_CUSTOM, type 15) |
Colis spécial par messagers | Non | Non |
| Paquet brut, forgé par l'application (tout type) | On écrit et tamponne soi-même | C'est l'application qui choisit | Selon le cas |
* En déplacement, votre compagnon doit être en fr : c'est la seule échelle que portent tous les relais, il sera découvert partout en France. Voir « Un compagnon qui se déplace ».
Pour aller plus loin
Le détail des configurations par type de répéteur, les zones frontalières et les annexes prêtes à copier sont dans la politique des relais.
Ce qui se tague côté émetteur, canal par canal, est dans la politique des canaux et des messages.