Alors dans le cadre de mon job je suis tombé sur un article qui m'intéresse.
Peut-être que ça sera le cas pour toi aussi, ami lecteur. La problématique est
la suivante : sur des gros liens (Gbps typiquement), comment reconnaître
les applications utilisées ? Ça peut être pour un admin, qui cherche à
identifier les flux qui circulent sur son réseau, ou autre.
La technique "de base" consiste à inspecter les payloads à la recherche
d'une signature applicative (à la snort, ou qosmos en propriétaire et plus exhaustif). Le
"hic", c'est que sur des liens chargés, ça rame sa mère. Ou alors faut se payer
la super solution corporate pouic pouic de Qosmos à 50KEUR, avec une bécane de
32 procs, des cartes DAG (Endace) d'acquisition et tout le bousin.
Mais nous, chez Unix4fun, on est pauvres, et on pense à la plèble, alors on
écarte cette solution. Durant ma visite du Web je suis donc tombé sur un
article pas mal, qui explique comment en 4 ou 5 paquets TCP (hors établissement
de la connexion, SYN, SYN/ACK, ACK), on peut taguer un flux comme étant telle
ou telle application, avec un taux d'erreur acceptable (de l'ordre de 5%).
L'idée est évidemment d'utiliser des mécanismes d'apprentissage statistique
(chaînes de Markov, etc) ; mais avec ça on n'est pas avancé, le problème
étant de mesurer et d'apprendre sur les bonnes métriques. Ici, on s'inquiète
uniquement de la taille des payloads, et du "sens" du paquet (client ->
serveur, ou serveur -> client), qui est un facteur discriminant
supplémentaire, et indépendant du contexte (type de réseau, type d'appli,
besoin de performance, etc).
Bref, c'est ma pause déjeuner au bureau, je vais pas m'attarder.
L'article Early Application
Identification
La thèse sur le sujet (même auteur principal) : Classification
temps réel d'applications sur l'Internet. Elle se lit vite, et la dernière
partie est en français, pour madame Michu, mais sans les formules et un peu
allégée.