This blog is available in English too. The English version is a bit less complete than the French one. Go to the English version of this blog.

29 mars 2010

Surveillance de trafic avec accélération matérielle : NetFPGA

NetFPGA

Pendant ma 3ème année à Télécom Bretagne, j’ai travaillé avec deux collègues sur un projet pour développer un outil de surveillance de trafic avec accélération matérielle en utilisant un NetFPGA. Ce projet bas-niveau s’est révélé très intéressant et m’a permis de découvrir les subtilités du développement matériel avec le langage Verilog.

Pour vous faire découvrir ce projet, j’ai collé ci-dessous le résumé de notre rapport final.

Résumé

Internet se popularise de plus en plus et les nouveaux services, tels que le streaming ou le Peer-to-Peer, sont toujours plus gourmands en bande passante. Ceci, renforcé par les évolutions technologiques en terme de débit, mène à un trafic en croissance permanente. Les outils de surveillance réseau doivent suivre cette évolution et être capables d’analyser de plus en plus de données de plus en plus vite. L’utilisation d’implémentations matérielles d’algorithmes de surveillance est une réponse à ce nouveau défi.

Notre projet de troisième année à Télécom Bretagne fut l’occasion de travailler sur une telle implémentation matérielle. Nous avons utilisé pour cela un NetFPGA, une carte PCI contenant un FPGA et quatre ports Ethernet. Nous avons commencé par transformer le NetFPGA en hub Ethernet pour ensuite lui ajouter une fonctionnalité de détection de paquets TCP SYN afin de lui permettre de détecter les attaques de type SYN flooding. Afin de réduire l’empreinte mémoire nécessaire à cette détection, nous avons utilisé un algorithme spécial de stream mining : l’algorithme CMS.

Plus d’informations

Tout ce que nous avons fait sur ce projet est disponible en ligne sur le Trac de notre projet. Le rapport final est aussi disponible.

1 commentaire »

10 février 2010

Fusionner/découper des PDFs directement dans Dolphin (KDE)

Logo KDE

Contexte

Je viens juste de passer à KDE après avoir utilisé Gnome pendant quelques années et je suis en pleine réadaptation.

Mais j’ai récemment dû fusionner deux PDFs. J’ai donc cherché une bonne solution pour KDE. Il y a de nombreux outils en ligne de commande pour manipuler les PDFS sous Linux, mais les quelques interfaces graphiques qui existent sont franchement moches.

Je me suis donc dit que ça serait bien d’intégrer les fonctions de fusion/découpe de PDFs directement dans Dolphin, le gestionnaire de fichiers de KDE. Dans Dolphin un menu apparaît quand on fait un clic droit sur un fichier, aves un sous-menu « Actions » ou il est possible d’ajouter des fonctions. J’explique dans la suite comment il est possible de le faire.

Pré-requis

  • Vous devez utiliser une version récente de KDE (qui intègre Dolphin comme gestionnaire de fichiers). J’ai la version 4.3.5.
  • Pour manipuler les PDFs, vous avez besoin d’un outil en ligne de commande. J’ai choisi pdftk. Vous pouvez installer le paquet pdftk sous kubuntu, par exemple en tapant dans un terminal :
    sudo apt-get install pdftk

Création de scripts pour fusionner/découper les PDFs automatiquement

J’ai créé deux scripts : un pour fusionner les PDFs, l’autre pour les découper. J’ai mis les deux fichiers dans le dossier /opt/pdf-service :

  • /opt/pdf-service/pdf-service-merge.sh (télécharger):
    #!/bin/bash
    # Run a command to merge PDF files
    # Used to add a context menu in Dolphin for PDF files
    
    pdftk "$@" cat output "${1%.pdf}_merged.pdf"
  • /opt/pdf-service/pdf-service-split.sh (télécharger):
    #!/bin/bash
    # Run a command to split PDF files
    # Used to add a context menu in Dolphin for PDF files
    
    for file in "$@"
    do
       out_dir="${file%.pdf}_pages"
       mkdir -p "$out_dir"
       pdftk "$file" burst output "$out_dir/page_%04d.pdf"
    done

Voici les étapes à suivre pour installer ces fichiers sur votre ordinateur :

  • Créez le dossier /opt/pdf-service : tapez dans un terminal:
    sudo mkdir /opt/pdf-service
  • Téléchargez les deux fichiers dans le dossier : tapez dans un terminal:
    cd /opt/pdf-service && sudo wget http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-service-split.sh http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-service-merge.sh
  • Rendez les fichiers exécutables : tapez dans un terminal:
    sudo chmod a+x /opt/pdf-service/*.sh

Ajouter le service à Dolphin

Un service se déclare dans Dolphin en écrivant simplement un fichier .desktop dans le dossier /usr/share/kde4/services/ServiceMenus/ : voici le fichier que vous devriez créer sous le nom /usr/share/kde4/services/ServiceMenus/pdf-servicemenu.desktop (télécharger):

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf
Actions=split;merge;

[Desktop Action split]
Name=Split PDF pages
Name[fr]=Découper les pages du PDF
Icon=gnome-mime-application-pdf
Exec=/opt/pdf-service/pdf-service-split.sh %F

[Desktop Action merge]
Name=Merge PDF files
Name[fr]=Fusionner les PDFs
Icon=gnome-mime-application-pdf
Exec=/opt/pdf-service/pdf-service-merge.sh %F

To install this file, just type in a terminal:

cd /usr/share/kde4/services/ServiceMenus && sudo wget http://www.viesurip.fr/wp-content/uploads/2010/02/pdf-servicemenu.desktop

Conclusion

Il vous suffit maintenant de fermer toutes les fenêtres précédemment ouvertes de Dolphin, de relancer Dolphin, et de faire un clic droit sur un PDF. Vous devriez voir deux nouvelles entrées dans le sous-menu Actions.

Les entrées sont disponibles uniquement en Anglais et en Français dans mon fichier, mais vous pouvez facilement rajouter d’autres langues dans le fichier pdf-servicemenu.desktop.

Ça serait quand même génial d’avoir une interface sympathique pour installer des modules qui ajoutent des sous-menus utiles comme ceux-ci. Des sortes d’extensions à Dolphin…

Aucun commentaire »

14 décembre 2009

Django mieux qu’un CMS ?

Logo DjangoJ’ai du récemment réécrire un site web que je gère pour une très petite entreprise : Le fil à soi. Cette entreprise comprend 3 animatrices qui proposent des ateliers et stages de massage chinois, qi gong et Gestalt-thérapie à Bordeaux. Les spécifications du site sont assez simples :

  • présentation du lieu, des animatrices et informations de contact ;
  • pages pour chaque atelier et stage classées en catégories ;
  • gestion automatique des dates de stages et génération d’un flux RSS ;
  • une interface d’administration simple pour modifier les infos sur les ateliers et stages (qui devrait être utilisée par les animatrices, même si en réalité elles ne sont pas fans d’informatique et préfèrent m’envoyer un mail…).

La version que je voulais remplacer était un site web fait à la main en PHP à partir de rien. Je l’avais commencée il y a des années avant de savoir grand chose sur la conception de sites web. Elle était donc devenue plutot difficile à gérer. Je voulais une version plus propre pour pouvoir laisser quelqu’un d’autre maintenir ce site.

Utiliser un CMS : Drupal ou WordPress

Un CMS (Content Management System : système de gestion de contenu)est une plateforme qui simplifie la création d’un site web. WordPress a été créé pour faire des blogs, mais il existe plein d’extensions qui permettent de créer n’importe quel type de site web. Drupal a vraiment été prévu pour créer n’importe quel type de site web. Il possède aussi de nombreuses extensions qui pourvoient à tous types de besoins  (calendrier, magasin en ligne…)

La force de ces CMSs est qu’il gèrent les deux parties du site web : la partie utilisateurs et la partie administration. L’administration donne aux responsables du site de nombreux moyens de personnaliser et de surveiller la partie utilisateurs.

J’ai donc commencé deux petits prototypes utilisant chaque CMS et j’en suis venu à la même conclusion :  aucun des deux ne répond parfaitement à mes besoins, pourtant très simples.

Par exemple pour la gestion des dates de stages : des tas d’extensions font des choses très proches de ce que je veux, mais aucun ne le fait tout à fait. Il va donc falloir que je personnalise une extension, dont le code n’est probablement pas vraiment documenté. Ensuite cette extension sera mise à jour (à nouveau sans documentation) par son auteur, et je devrais maintenir mes modifications…

Même chose pour le thème : de nombreux thèmes sont disponibles mais il ne serait pas sérieux d’utiliser un design tout fait sans l’adapter.

Je peux donc faire mon petit site web avec un CMS mais :

  • le résultat sera énorme, avec plein de fonctionnalités dont je ne me servirai pas (pas besoin de blog, de gestion des utilisateurs…) ;
  • il sera difficile à maintenir, et il faudra que je surveille toutes les mises à jour des extensions que j’aurai modifiées ;
  • je devrai faire des mises à jour régulières quand le CMS sera mis à jour, car les failles de sécurité connues des grands CMSs sont très rapidement utilisées par des « pirates ».

Ça fait beaucoup de travail pour un tout petit site.

Utiliser Django

Django n’est pas vraiment un CMS. C’est un framework Python pour créer des sites web (comparable à PHP Zend, Ruby on Rails…). Cela veut donc dire qu’il faut écrire du code pour l’utiliser.

La grosse différence avec d’autres frameworks web est que Django a été développé à l’origine pour un site web d’actualité, la gestion du contenu était donc primordiale. C’est pourquoi un fonction très impressionnante est disponible : la génération automatique de la zone d’administration du site.

J’ai juste eu à définir mes modèles (ce qu’est un stage, une animatrice, une date de stage, une catégorie…). C’était ensuite lié à ma base de données et la partie administration était générée. J’ai enfin défini mes vues, c’est à dire la façon dont ces modèles sont affichés aux utilisateurs (avec des outils simples pour générer des flux RSS, des sitemaps…)

Les avantages de cette approche sont :

  • l’application finale est très petite, sans fonctions inutiles ;
  • on obtient exactement ce qu’on veut : pas besoin de s’adapter aux extensions trouvées sur Internet ;
  • on sait exactement ce que chaque ligne de code fait (même si on omet de documenter…) ;
  • les seules mises à jour à surveiller sont celles de Python et de Django, qui sont rares et plutôt bien gérées.

Les seuls inconvénients que je vois :

  • il y a beaucoup moins de gnes qui connaissent Python Django que de gens qui connaissent WordPress, il sera donc plus difficile de trouver des gens pour gérer le site (mais ils seront meilleurs :p) ;
  • Python doit etre supporté par votre hébergeur. J’utilise OVH, qui ne supporte Django qu’en CGI, mais ça suffit pour un si petit site ;
  • il n’y a pas d’éditeur WYSIWYG par défaut dans l’adminstration générée par Django : ça peut être un problème pour éditer des articles (ou des descriptions de stages dans mon cas). Mais il est plutôt simple d’ajouter TinyMCE qui est purement en javascript.

Conclusion

Si vous voulez créer un blog simple et complet, utilisez WordPress. Si vous voulez faire des choses compliquées comme un magasin en ligne, utilisez Drupal.

Mais si vous voulez construire un site web simple, dynamique et facile à maintenir, et si coder ne vous fait pas trop peur, utilisez Python Django. Vous obtiendrez exactement ce que vous voulez sans trop d’efforts, et le résultat sera vraiment simple à maintenir.

Accueil du site du fil à soi

Accueil du site du fil à soi

Administration des pages du fil à soi

Administration des pages du fil à soi

2 commentaires »

24 septembre 2009

Stage chez Jolicloud : les premiers pas d’une start-up

Stage chez Jolicloud : les premiers pas d’une start-up

Dans le cadre d’une année « Jeune Ingénieur » à TELECOM Bretagne, je viens de finir un stage de presque un an chez Jolicloud.

Il s’agit d’une toute nouvelle start-up lancée par Tariq Krim (fondateur de Netvibes) qui crée un système d’exploitation adapté aux netbooks et construit autour d’Internet (ses technologies et ses services).

Ce stage a été une passionnante occasion de vivre de l’intérieur le lancement d’une start-up : idée, recherche, lancement d’une alpha privée, recherche de financements, arrivée de gros concurrents (comme Google Chome OS), élargissement de l’alpha, embauches, roadmap de la beta et de la version finale… Nous étions trois au départ : Tariq Krim, Romain Huet et moi.

Niveau développement, le défi est intéressant : se baser sur Linux pour créer un système d’exploitation ergonomique et beau, qui soit centré sur les technologies du web plutôt que sur les technologies classiques utilisées sur un système Linux (plutôt HTML que GTK, plutôt Javascript que C…).

Nous avons utilisé Ruby On Rails et JQuery pour développer l’application web qui est le cœur de Jolicloud, et pas mal de python sur le système, pour permettre à notre application web de communiquer avec le système.

Les premiers développements se sont focalisés sur deux choses : partir d’Ubuntu et le modifier pour créer le système d’exploitation Jolicloud, et créer un annuaire d’applications, un peu comme sur l’iPhone d’Apple, qui permet d’installer/supprimer/mettre à jour ses applications en un clic. Cet annuaire est basé sur APT, la technologie utilisée par Debian (et Ubuntu) pour gérer les fichiers installés sur le système. De plus, Prism a été complètement intégré pour mettre les applications web (Google Docs, GMail, Facebook…) sur le bureau.

La version actuellement disponible de Jolicloud est très loin d’être complète : ce n’est qu’un aperçu de ce que nous voulons faire. Les développements s’accélèrent actuellement et nous avons plein d’idées dont je ne peux pas encore parler. Je dois malheureusement retourner en cours maintenant pour ma 3ème année à TELECOM Bretagne, mais j’espère pouvoir continuer à participer à Jolicloud dans l’avenir.

Contrairement à ce que fera probablement Google Chrome OS, Jolicloud permet de lancer des applications locales, pas seulement des applications web, et il ne pousse pas à l’utilisation des services Google. Et contrairement à Moblin, Jolicloud est autant une application web (notifications, synchronisation…) qu’un système d’exploitation. Et personnellement, le concept de Jolicloud me plairait bien sur mon PC portable aussi, si son interface était adaptée. Donc Jolicloud me semble avoir un bel avenir… à suivre :)

1 commentaire »

6 septembre 2009

Internet en 2015 : vie privée en réseau ?

Un verrou

Samedi 26 septembre 2015,

Internet a beaucoup évolué ces 5 dernières années. En 2009, utiliser des services en ligne impliquait de faire confiance à des services tiers pour veiller sur vos données personnelles. Par exemple Facebook savait tout de ce que vous faisiez et de vos amis, Google Docs avait tous les documents sur lesquels vous collaboriez, Gmail avait tous vos emails… Tous ces services avaient des conditions d’utilisation assez peu clairs. Ils assuraient ne pas utiliser vos données d’une mauvaise manière mais ils les utilisaient pour vous afficher de la publicité ciblée. Et vous ne pouviez jamais être sûr qu’ils ne perdraient pas vos données et ne seraient pas piratés. Ce manque de confiance rendait difficile la généralisation de l’utilisation des services en réseau, malgré leurs avantages évidents.

Maintenant ce problème a été au moins en partie réglé grâce aux Fournisseurs d’Accès à Internet. Ma situation est très commune : j’ai une connexion en fibre optique au débit important et symétrique. Ma Freebox v8, ma nouvelle box internet, est constamment connectée à internet et inclut un serveur qui héberge toutes mes données personnelles et celles des autres membres de ma famille. Notre ordinateur personnel, mon portable, mon netbook Jolicloud et mon IPhone sont synchronisés au disque dur de notre Freebox (par le réseau local ou internet).

Le serveur de la Freebox est surtout un serveur HTTP avec une interface web et de nombreuses APIs. Une interface web est disponible pour chaque membre de la famille sur http://surnom.free.fr. Le mien est à http://twisterss.free.fr. Il ressemble à un blog personnel avec de nombreuses fonctions sociales.

Cette URL est aussi la clef de ma vie numérique. Elle est utilisée par de nombreux sites web pour accéder aux APIs de ma Freebox en utilisant OAuth. Facebook stoque les messages, les liens, les photos et les vidéos que je partage sur ma Freebox grâce à ces APIs. Ma Freebox a aussi les autorisations pour accéder aux données de mes amis. Ils ont tous une URL unique comme la mienne qui donne accès aux mêmes APIs. Dans un premier temps Facebook ne voulait pas utiliser cette architecture car elle leur faisait perdre le contrôle des données de leurs utilisateurs, mais en voyant des nouveaux concurrents gagner rapidement des utilisateurs avec cette architecture les a fait changer d’avis. Ils ont même développé une extension propriétaire avec un élargissement de l’API qui est plus rapide et offre plus de fonctions que l’extension par défaut. Je pourrais l’installer sur ma Freebox en un clic, mais je préfère l’extension open-source par défaut car je ne sais pas exactement ce que fait l’extension fermée de Facebook. Maintenant la valeur de Facebook est dans la façon dont ils trient les données pour afficher les plus intéressantes, et dans les nombreuses applications tierces disponibles pour gérer sa vie numérique. Et ils n’ont plus à payer les serveurs énormes qu’ils utilisaient pour les envois de photos et de vidéos, qui sont maintenant directement envoyées depuis le serveur de l’utilisateur.

Google utilise aussi cette architecture : ils cherchent à la fois dans les données de mes amis et sur internet. Ils peuvent même me dire quand un ami a fait des recherches semblables aux miennes (s’il a accepté de le rendre public, bien sûr). Comme Facebook, ils proposent une extension propriétaire qui indexe les données plus efficacement. Jolicloud utilise mon serveur privé pour synchroniser les applications et les fichiers sur tous mes netbooks et pour me proposer des applications que mes amis aiment.

Avec cette architecture, les utilisateurs contrôlent beaucoup mieux leurs données car elles sont stockées sur leurs propres serveurs, et seules des métadonnées sont envoyées aux sites la plupart du temps (des liens et des descriptions pour Google et Facebook…). Toutes les données sont synchronisées sur tous les ordinateurs, permettant de les restaurer si un disque dur lâche. Le partage de données est beaucoup plus efficace et rapide car elles ne sont plus systématiquement envoyées à un serveur central. Mais cette architecture n’est pas parfaite : si les utilisateurs installent des extensions malicieuses sur leur box ou s’ils donnent accès à leurs données à n’importe quel site web par OAuth, leur vie privée est encore menacée.


Cette idée du futur est internet tel que j’aimerais l’utiliser en 2015. Pour qu’il existe, nous devrons trouver des standards pour les APIS que tout le monde accepte, et les services web comme Facebook devront comprendre l’importance de la protection de la vie privée. Les FAIs ont probablement intérêt à ce que cet internet existe car ils y joueraient un rôle plus important. Mais seuls les utilisateurs peuvent rendre cet internet réel si la protection de leur vie privée les intéresse vraiment.

2 commentaires »

11 janvier 2009

Remplaçons Facebook par les blogs !

Beaucoup de gens qui ont des blogs disent qu’il s’agit de leur principal réseau social. Ils y interagissent avec les autres par les commentaires. Ils découvrent les blogs des commentateurs et enrichissent leur réseau de blogs intéressants, où ils deviennent eux-même commentateurs.

Ce qui est bien avec le réseau des blogs, c’est qu’il est décentralisé. Ainsi les informations sur une personne sont contrôlées par cette personne. Contrairement aux réseaux sociaux comme Facebook. Je pense qu’avec quelques fonctions supplémentaires et une meilleure interface, les blogs pourraient remplacer avantageusement Facebook.

Des discussions plus ouvertes et décentralisées

Quand quelqu’un commence une discussion sur un blog, il serait intéressant que les autres bloggeurs puissent continuer les discussions, en contribuant à la fois à leur blog, et au blog original de la discussion. Il existe déjà les trackbacks pour cela, mais ils ne servent qu’à faire un lien, avec une description souvent incompréhensible et me semblent assez inefficaces.

Le mieux serait d’écrire un commentaire sur le blog original, et qu’il soit directement envoyé au blog de l’auteur. La discussion se poursuivrait alors sur les deux blogs en même temps, les deux audiences des blogs seraient alors mélangées, ce qui enrichirait la discussion.

Une gestion « à la Facebook »

Beaucoup de blogs ont déjà une liste des plus gros commentateurs, une liste de blogs intéressants… Mais pour transformer les blogs en réseaux sociaux, il faudrait une liste des commentateurs, comme un liste des amis sur Facebook.

Il serait aussi intéressant de créer un panneau de contrôle qui permettrait de suivre les derniers sujets postés par les commentateurs sur leurs blogs, créant une sorte de « news feed » Facebook.

Des plugins de gestion des photos, des évènements… permettraient de retrouver toutes les fonctions les plus intéressantes de Facebook. Tout cela dans un réseau décentralisé, où les acteurs controleraient mieux les informations qu’ils publient.

On pourrait aussi imaginer un site comme Wordpress.com qui permettrait de créer son blog social en quelques clics, aussi facilement que l’on crée un profil sur Facebook.Cette idée de blogs sociaux ressemble un peu à ce que font les skyblogs ou myspace, mais ces sites ne me semblent pas permettre de faire un vrai blog, ni de créer son propre blog sur son hébergement (et ils ne proposent pas de faire des discussions mutualisées entre plusieurs blogs).

La réalisation ?

J’hésite à me lancer dans la création d’un plugin wordpress, et peut-être d’une plateforme de « blogs sociaux » pour faire ça. Peut-être existe-t-il déjà des idées similaires ?

Il est évident que cette vision des blogs ne serait pas adaptée à tous les blogs : les blogs thématiques par exemple n’ont pas grand chose à voir avec les réseaux sociaux.

Mais je pense que les blogs pourraient permettre de créer un réseau social à la fois plus intéressant, plus extensible, et plus contrôlable que Facebook, car on pourrait utiliser son propre hébergement pour ses données.

3 commentaires »

28 septembre 2008

Blog Wordpress multilingue

[lang_fr]Drapeaux multicolores dans un temple à Darjeeling en Inde[/lang_fr][lang_en]Multicolor flags in a temple in Darjeeling, India[/lang_en]

Ce blog utilise la plateforme de blogs Wordpress. Tous les articles sont disponibles en Français et en Anglais, et l’interface du blog est entièrement traduite.

Pour cela, j’utilise l’extension qtranslate. Elle permet d’écrire très facilement ses articles en plusieurs langues, ainsi que les tags, les catégories, et toutes les fonctions incluses par défaut dans Wordpress.

Utilisation

L’extension modifie l’administration de wordpress en ajoutant un champ pour chaque langue pour les articles, les tags et les catégories. Pour le reste, il faut utiliser un système de balises très simple :

[ lang_en]English text[ /lang_en][ lang_fr]Texte français[ /lang_fr].

J’utilise aussi sur ce blog pas mal d’autres extensions (pour les widgets dans les barres latérales à droite par exemple). J’ai du modifier légèrement presque chaque extension pour qu’elle supporte les balises de langues. Il suffit d’utiliser la fonction __() – qui sert dans wordpress à traduire l’interface à partir de fichiers .mo – pour traduire les chaines avant l’affichage. Grâce à qtranslate, elle permet aussi de supporter les balises de langues.

Pour permettre aux utilisateurs de passer d’une langue à l’autre, l’extension met à disposition un widget qui peut être mis dans la barre latérale. J’ai préféré placer les liens vers les différentes langues en haut à droite de la page en insérant <?php echo qtrans_generateLanguageSelectCode('both'); ?> dans le header de mon template.

Améliorations

Pour l’instant, qtranslate n’inclut aucun système de détection de la langue de l’utilisateur. J’ai ajouté sur mon blog un message qui s’affiche en-dessous de l’en-tête s’il existe une version du blog dans une langue que vous préférez à celle affichée (selon les réglages de votre navigateur).

Pour cela, j’ai inséré dans l’en-tête de mon template le code PHP contenu dans ce fichier.

3 commentaires »

Tiny6 – IPv6 sur les réseaux de capteurs

[lang_fr]Capteur MicaZ[/lang_fr][lang_en]MicaZ sensor node[/lang_en]

Dans le cadre du semestre que j'ai passé en Inde de Janvier à Juin 2008, j’ai participé au projet Tiny6, projet entre TELECOM Bretagne, l’Indian Institute of Technology Guwahati (IITG) et une université en Chine.

But du projet

Les réseaux de capteurs sont des ensembles de petits capteurs (qui permettent de mesurer la température, la luminosité… à un endroit donné) reliés entre eux sans fil. La plupart du temps, ces capteurs communiquent entre eux en utilisant un protocole propriétaire, et il y a dans le réseau une passerelle qui récupère les données et qui les rend disponibles sur le réseau IP.

IPv6 est la prochaine version du protocole IP qui est à la base d’Internet. Cette nouvelle version fournit entre autres améliorations beaucoup plus d’adresses pour désigner des machines que la version actuelle IPv4, pour laquelle les adresses commencent à manquer.

Cette profusion d’adresses permet de donner à chaque capteur d’un réseau de capteurs une adresse IP distincte, et de faire communiquer les capteurs directement avec le protocole IPv6. Ceci permet de simplifier le réseau et d’augmenter sa fiabilité en autorisant plusieurs passerelles entre le réseau de capteurs et internet.

Le problème est qu’IPv6 est fait pour être utilisé avec des ordinateurs classiques, et les capteurs ont des ressources de calcul et de mémoire très limitées. Il est donc nécessaire de créer un protocole allégé, c’est ce qu’a fait le groupe de travail 6lowpan.

A l’IITG, Alexandre, Antoine et moi avions pour but de faire fonctionner ce protocole allégé sur des capteurs précis, et de faire communiquer les capteurs en IPv6 avec TELECOM Bretagne. Nous nous sommes pour cela appuyés sur la thèse de Matus Harvan qui a réalisé une implémentation partielle (IPv6, ICMPv6 et UDP sont partiellement implémentés) de tiny6 en NesC, le langage utilisé pour programmer les capteurs, mais sur un matériel différent du notre.

Difficultés

La première difficulté a été de comprendre le fonctionnement des capteurs et du langage de programmation NesC. NesC est un langage dérivé du C fait pour minimiser l’utilisation de mémoire et de puissance de calcul. Pour programmer les capteurs, nous disposions d’une base branchée en USB à notre ordinateur. Nous avons utilisé une version adaptée de Xubuntu, XubunTOS dans une machine virtuelle comme environnement de travail pour programmer les capteurs et communiquer avec eux pour faire la liaison avec le reste d’Internet.

Nous avons ensuite adapté le code de Matus Harvan pour le faire fonctionner sur nos capteurs, un peu moins puissants que ceux qu’il avait utilisés. Le débuggage a été assez complexe car nous avions peu de moyens de savoir ce qui se passait dans les capteurs (3 leds à faire clignoter).

Enfin, il nous a fallu mettre en place un lien en IPv6 entre TELECOM Bretagne et l’IITG, ce qui s’est révélé compliqué car l’IITG avait une plage d’adresses IPv6 attribuée, mais les routeurs de son fournisseur d’accès ne supportaient pas encore IPv6. Nous avons donc du établir un tunnel IPv6 sur IPv4.

Finalement, ce qui a le plus compliqué le projet est la communication avec nos encadrants indiens. De nombreuses incompréhensions mutuelles nous ont fait perdre beaucoup de temps. Obtenir une adresse IPv4 routable pour communiquer avec TELECOM Bretagne a par exemple été très compliqué, et nous avons été obligés de travailler directement au centre informatique pour utiliser cette adresse IP, qui n’était autorisée à communiquer qu’avec un serveur précis de TELECOM Bretagne.

Résultat

Nous avons finalement réussi à faire communiquer les capteurs en UDP avec TELECOM Bretagne, qui a donc pu recevoir les données mesurées par le capteur. Mais notre volonté de simplifier le réseau a été mise à mal par l’utilisation d’un tunnel IPv6 sur IPv4 entre l’IITG et TELECOM Bretagne, et d’un NAT entre notre machine virtuelle et notre machine physique :

Schéma de la connexion des capteurs au réseau IPv6

2 commentaires »

7 juillet 2008

Un semestre en Inde

[lang_fr]Maisons dans le désert en Inde[/lang_fr][lang_en]Houses in the desert in India[/lang_en]

Je viens de passer un semestre dans le nord-est de l’Inde à Guwahati (Assam). J’étais à l’IITG : l’Indian Institute of Technology of Guwahati (institut indien de technologie de Guwahati). J’y suis resté de janvier à juin 2008.

Études

Ce séjour était dans le cadre d’un échange avec mon école en France, TELECOM Bretagne. Il est considéré comme un semestre d’étude normal pendant lequel j’ai étudié l’informatique (Software engineering) et le traitement du signal (Signal processing in smart antennas). Nous étions 3 étudiants à partir dans ce cadre. Nous avons aussi participé à un projet sur l'implémentation d'IPv6 dans des réseaux de capteurs dont je parlerai plus dans un prochain article.

Voyages, vacances, découvertes

Ce semestre a été l’occasion de découvrir l’Inde et les Indiens. Nous avons pas mal voyagé pendant les week-ends et les quelques semaines libres que nous avons eues. Nous avons voyagé à Darjeeling, dans le Rajasthan et sur les iles Andaman. Pour plus d’informations et des photos de nos aventures, vous pouvez aller voir les blogs d’Alexandre et d’Antoine qui étaient avec moi.

Aucun commentaire »

10 juin 2008

Mes widgets UWA

[lang_fr]Widgets UWA : write once, run everywhere[/lang_fr][lang_en]UWA widgets: write once, run everywhere[/lang_en]

Je suis encore en train de migrer sur ce blog tous les projets que je maintiens actuellement. Dans ce but, je viens de migrer tous les widgets UWA que j’ai créés ici.

Les widgets UWA sont de petites applications Web qui s’insèrent sur des plateformes comme Netvibes, IGoogle, Live.com, Opera, la barre latérale de Vista et le dashboard d’Apple.

Je décris tous ces widgets dans la catégorie "Widgets UWA".

N’hésitez pas à tester ces widgets, et à me dire dans les commentaires sur la page dédiée au widget s’il y a des problèmes.

Aucun commentaire »