Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/03/2014, à 10:56

MrChaussette

Redirection d'IP sur un port serie(TCP/IP over Serial)

Bonjour a tous,

Une fois de plus, je me tourne vers vous chers participant de la communauté. Car je rencontre aujourd'hui des difficultés à paramétrer une redirection.
N'étant pas un expert en réseau mais un développeur à la base, n'hésitez pas à me corriger si je ne suis pas clair ou n'utilise pas le bon vocabulaire technique.

Pour commencer, ce travail se passe sous un environnement ubuntu 10.04 (version imposée par le matériel).
Je cherche à établir un réseau de type MESH en utilisant le protocole OLSR (pour le moment, je pense passer sur un protocole plus performant par la suite) sur plusieurs mini-pc (EBOX 3350 mx).
Le lien physique me permettant de les relier est une radio de type ISM 868Mhz de chez DIGI. Elle se présente sous la forme d'une carte branchée sur un port série. Elle se contente de prendre les données envoyées sur le port série et de les émettre en onde radio. Les receveur à portée feront ensuite la marche inverse.

Pour mettre en place ce réseau, je commence par créer des interface réseau virtuel de type TUN. Olsrd fonctionnera sur ces interfaces. Ensuite je cherche à rediriger le flux TCP/IP de ces interfaces vers le port série sur lequel est branché mon émetteur ISM. C'est la trame IP que je cherche à transférer, pas uniquement les données qu'elles contiennent.

Pour commencer et mettre en place ce système petit à petit, j'ai commencer par prendre deux machine et à les relier par un câble série croisé. Je passerais sur la radio quand je serais sur de ce que j'envois sur le port série.

Voici où j'en suis aujourd'hui :

J'ai réussi à générer des interfaces virtuelles TUN (utilisation de tunctl du paquet uml-utilities), et à utiliser un protocole OLSR dessus (pour tester).
Pour la redirection avec socat je rencontre plus de difficultés. J'ai réussi à mettre en place une redirection depuis mon interface TUN. Mais mes trames ne se transmettent pas comme je le souhaite.

Je m'explique avec un exemple.

J'ai deux machine A et B.
Chacune possède une interface TUN virtuelle nommée "digi0".
L'IP attribuée à A est 10.0.0.1.
L'IP attribuée à B est 10.0.0.2

Sur la machine A, je paramètre la redirection du flux entre l'interface "digi0" et le port série (ttyS0).

socat -d -d -d -x -b256 /dev/ttyS0,crnl,raw,echo=0 INTERFACE:digi0

Sur la machine B, je paramètre la redirection du flux entre le port série (ttyUSB1 => j'ai utilisé un adaptateur serie-usb) et la sortie standard (stdio).

socat -d -d -d -x -b256 /dev/ttyUSB1,crnl,raw,echo=0 -

Sur la machine A, je démarre olsr pour générer du trafic sur l'interface digi0 et étudier les redirection.
La console socat sur A m'affiche correction la récupération des trames depuis l'interface digi0 et leurs écriture sur le port serie ttyS0. Il m'affiche la trame au format "ff ff ff ff ff ff ac 23..."

Sur la machine B, je regarde simplement la console socat et voici ce qui m'est affiché :
ff
ff
ff
ff
ff
ff
ac
23
Et c'est la le problème, ma trame d'origine a été découpée. Et je ne sais pas si ce découpage se fait à l'envois ou à la réception.

Mon problème viens probablement de ma configuration socat qui n'est pas correcte. Après plusieurs essais je ne parvient pas à obtenir autre chose que cet affichage. Et le soucis est qu'a l'arrivé la trame étant découpée je ne peux pas la rebalancer sur l'interface réseau, auquel cas elle serait considéré comme plein de petit packet ethernet invalides.

Je fait donc appel à vous afin de savoir s'il existe des exemples pour ce genre de traitement.

Merci d'avance pour vôtre temps et vos réponses.

Mr Chaussette.

Hors ligne

#2 Le 06/03/2014, à 14:27

MrChaussette

Re : Redirection d'IP sur un port serie(TCP/IP over Serial)

Une info, si jamais d'autre personne rencontre ce problème dans le future.

J'ai une piste de recherche qui est pas mal du tout : le mode canonique.

Socat utilise termios pour gérer le port série. Et termios propose un mode canonique (lien), cela signifie que les données sont lues ligne par lignes avec un caractère de fin de ligne comme délimiteur et non plus caractère par caractère.

Pour le moment je n'arrive pas régler la taille des lignes. Mais je planche dessus.

Je posterais mes avancées si je m'en sort.

Mr Chaussette

Hors ligne

#3 Le 06/03/2014, à 15:25

moko138

Re : Redirection d'IP sur un port serie(TCP/IP over Serial)

Est-ce ceci usbnet te serait utile ?


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#4 Le 06/03/2014, à 15:58

MrChaussette

Re : Redirection d'IP sur un port serie(TCP/IP over Serial)

Salut moko138,

Je te remercie, mais j'avais déjà exploré cette option auparavant et il s'est avéré que vu le matériel que j'utilise cela n'était pas possible, ou du moins je n'ai pas réussis.
Le driver usbnet ne s'associe pas automatiquement à mon matériel, et je n'ai pas trouvé comment forcer une telle association.

Sinon concernant socat et le mode canonique. Je me suis aperçu que le mode fonctionne très bien (un caractère de fin de ligne est transmis en fin de communication).
C'est dans les données que je transmet qu'il y a malheureusement des octets qui sont interprété comme des EOL.
Je cherche donc à pouvoir "annuler" les caractères spéciaux sur les données que je transmet.

Hors ligne