29 March 2010

Hardware accelerated network monitoring: NetFPGA

NetFPGA

During my third year at Télécom Bretagne, I worked on a project with two colleagues to develop an hardware accelerated network monitoring tool using a NetFPGA. This low-level project was very interesting and made me discover how to develop directly in hardware using a language called Verilog.

To let you discover this project, I pasted below the abstract of our final report.

Abstract

The growing use of the Internet, with services like YouTube, Dailymotion or Peer-to-Peer, raises the demand for larger bandwidths continuously. This and the technological evolution leads to traffic which is becoming more and more important. With the increasing bandwidth, the observation and control of the traffic also needs to be accomplished at a higher speed. This new challenge is being encountered by using hardware implementations of monitoring algorithms.

During our third-year project at Télécom Bretagne we worked on such a hardware implementation using a NetFPGA, a PCI board containing an FPGA and four Ethernet ports. Starting with a simple Ethernet hub that we added to the existing structure of the NetFPGA, we continued with the implementation of a detection of TCP SYN packets. In order to count these SYN packets, needed for the detection of SYN flooding attacks, we used a special stream mining algorithm to reduce the memory needed : the CMS algorithm.

More information

Everything we did about this project is available online on the Trac of our project. The final report is also available (in French, sorry).

No Comments yet »

28 September 2008

Tiny6 – IPv6 in sensor networks

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

During the semester I spent in India from January to June 2008, I participated to the Tiny6 project between TELECOM Bretagne in France, the Indian Institute of Technology Guwahati (IITG) and an university in China.

Goal of the project

Sensor networks arenetworks of small nodes that communicate through a wireless link. They often use their own protocol to communicate together and with a machine that fetches data and makes them available on the Internet.

IPv6 is the next version of IP, the Internet Protocol. This new version provides much more adresses than the present IPv4.

All these adresses enable us to give a specific IPv6 adress to each mote in a sensor network, and to let them communicate through the IPv6 protocol. This allows us to simplify the network and make it more reliable by using many bridges between the sensor network and the Internet.

But IPv6 is made to be used with normal computers, while sensor nodes have very limited memory and computing ressources. So it is necessary to create a light protocol, this is what the 6lowpan working group has done.

In IITG, Alexandre, Antoine and me wanted to make this light protocol work on precise sensor nodes, and to let the nodes communicate through IPv6 with TELECOM Bretagne. We used the Matus Harvan thesis, a partial implementation of 6lowpan (IPv6, ICMPv6 and UDP are partially implemented) in NesC, a language used to program the motes, but for different motes.

Difficulties

The first difficulty was to understand how the motes and the Nesc language work. Nesc is a language derived from the C used to minimize the memory and CPU use. To program the motes, we used a base plugged in our laptop through USB. We used an adapted version of Xubuntu, XubunTOS in a virtual machine as an environment to program the motes and to connect them to the Internet.

We have then adapted the code of Matus Harvan to let it work on our motes, less powerful than the ones he used. Debugging the motes was a bit complicated because we had only 2 leds to make blink to know what was happening in the motes.

Finally we had to set up an IPv6 link between TELECOM Bretagne and the IITG. It proved to be complicated because the IITG had IPv6 adresses, but the routers of its access provider weren’t compatible. So we had to establish an IPv6 over IPv4 tunnel.

The most complicated in this project was to communicate with our indian supervisers. Many mutual misunderstandings made us waste a lot of time. It has for example been very complicated to get a routable IPv4 adress to communicate with TELECOM Bretagne. We had to work in the computer center, and the adress was only allowed to communicate with one server in TELECOM Bretagne.

Results

We finally managed to make the sensor motes communicate through UDP with TELECOM Bretagne, and send their measured data. But our will to make the network simpler was made difficult by the use of an IPv6 over IPv4 tunnel between the IITG and TELECOM Bretagne, and a NAT between our virtual and real machine:

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

3 Comments »

10 June 2008

My UWA widgets

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

I am yet migrating to this blog all the projects I maintain. As part of this process, I just migrated all the UWA widgets I created.

UWA widgets are tiny web applications that can run on platforms like Netvibes, IGoogle, Live.com, Opera, the Vista sidebar or the Apple dashboard.

I describe all these widgets in the category "UWA widgets".

Don’t hesitate to try these widgets, and please tell me in the comments on the page about the widget if you encounter problems.

No Comments yet »

1 June 2008

Develop a website for students to choose projects

[lang_fr]Logo de l\\\'UBO[/lang_fr][lang_en]UBO logo[/lang_en]

From january to june 2007, for my second semester project at TELECOM Bretagne “Development project”, I was asked, with 3 other students, to develop an online projects management system for the computer science department of the university Université de Bretagne Occidentale (UBO).

Goals

This website had to allow the persons invited by the projects session administrator to enter projects propositions. These propositions were then validated by the administrator, and shown to the students. THe interested students could then sort their choices. Once it was done, the administrator could assign projects to students, trying to satisfy a maximum of students. The assignments were then notified to the students.

The students had to be identified thanks to the LDAP of the UBO. However the persons who entered projects propositions weren’t all in the LDAP.

The website had to work in the most used browsers, and to use PHP and MySQL server-side.

Problems and solutions

The most difficult problem was the assignment of projects to the students. First we wanted to make an automatic system, but it wouldn’t have been flexible enough, and we hadn’t enough time to implement it. So we decided to create an AJAX interface that allowed the administrator to see in live which students and projects were unsastsified, and which changes could improve the situation. The changes could be saved at any moment to prevent data lost.

The interface for the students to sort the projects was a bit complicated too. So we used javascript to allow the student to slide and sort the projects. However the interface worked properly if javascript was disabled.

We had a little technical problem too to test the authentification system: we worked in TELECOM Bretagne and we hadn’t access to the UBO’s LDAP. So we tested the authentification with the TELECOM Bretagne’s LDAP, and we made the last changes during the deployment on the UBO’s server.

Difficulties

La première difficulté que nous avons rencontrée est que parmi le groupe de 4 étudiants pour ce projet, j’étais le seul à avoir déjà développé en PHP. Il a donc fallu du temps pour que les 3 autres apprennent ce langage.

THe first difficulty was that among 4 students, I was the only one to already know PHP. So the 3 others needed time to learn this language.

An other problem was due to a bad requirements gathering at the beginning of the project. As the problem wasn’t precise, the requirements have changedduring the project, making us waste a lot of time.

Conclusion

Despite these difficulties, the final result was functional, not beautiful (none of us was designer). It was fairly easy to maintain and properly documented.

I don’t know if our system is presently used at the UBO.

No Comments yet »

31 May 2008

A short adventure: Netvibes modules directory

[lang_fr]Un mini module Netvibes[/lang_fr][lang_en]A Netvibes mini module[/lang_en]

Do you know Netvibes ? This is (in my opinion) the best customizable start page (competitor of iGoogle).

It allows you to put on the same page all the information you are interested in on the web. For this, it uses a modular structure: each user can add the modules it is interested in.

The idea of a netvibes modules directory

Au début, seuls les développeurs de Netvibes créaient des modules, qui étaient accessibles à partir d’une barre latérale dans Netvibes.

At the beginning, only netvibes developpers could create modules, that users accessed thanks to a sidebar integrated in Netvibes.

But on 3rd March 2006, Netvibes announced on its blog the Mini Module API. So anyone with HTML knowledge could create modules for Netvibes. I then tried to create some modules.

Some days later, modules had been created by Netvibes users, but there was no easy way to list these modules. I then decided to create a modules directory. I released it some weeks later at http://twisterss.free.fr/netvibes. The website is now closed, but you can still see it in this blog’s archives.

This directory, that was available in English, French and later in German, was very successful, and most of netvibes modules were rapidly added by their authors.

Collaborating with Netvibes

A bit later, I was contacted by Tariq Krim, then Netvibes CEO, to integrate the directory to Netvibes. Thanks to this collaboration, the design was improved by a Netvibes designer (Maurice Svay), and I added RSS and Ical feeds support to the directory (an idea of Tariq).

Due to difficulties in the integration, my original code hasn’t been used in the Netvibes directory, but my database has been integrated to the Netvibes directory, that is still working.

To avoid multiplying the modules lists, I then deactivated my directory, and replaced it with a redirection to the Netvibes directory.

Conclusion

Finally my directory has only worked during some months, but it has had a lot of visitors. Thus I was obliged to create an advanced caching system, to avoid overloading my free host.

This short adventure allowed me to discover the Netvibes team. I understood too the necessity to write readable code, and to separate it from the appearance of the website, in order to ease the collaboration with other developpers and the reuse of the code. If I had properly used the PHP Zend framework, my code could probably have been reused in Netvibes directory.

No Comments yet »

  • Welcome!

    I write on this blog about my projects, my practices and my discoveries in the domains of the internet, networks and computer science.

    Tristan, French student in TELECOM Bretagne, a "grande école" specialized in telecommunications

    Contact me Twitter Facebook

    Read more »