Robust Header Compression

36
Robust Header Compression Un projet à l’ Jack Ballesteros Rémi Blanc En collaboration avec Microelectronics Compression d’en-tête robuste Compression d’en-tête robuste Responsable de projet: Vincent Roca Consultante: Karine Excoffier (Sun Microsystems)

description

Robust Header Compression. Un projet à l’. Microelectronics. Responsable de projet: Vincent Roca. Jack Ballesteros. Rémi Blanc. Consultante: Karine Excoffier (Sun Microsystems). RoHC. Compression d’en-tête robuste. En collaboration avec. Plan. Quels sont les acteurs du projet? - PowerPoint PPT Presentation

Transcript of Robust Header Compression

Page 1: Robust Header Compression

Robust Header Compression

Un projet à l’

Jack Ballesteros

Rémi Blanc

En collaboration avec Microelectronics

Compression d’en-tête robusteCompression d’en-tête robuste

Responsable de projet: Vincent Roca

Consultante:Karine Excoffier

(Sun Microsystems)

Page 2: Robust Header Compression

22

Plan

• Introduction• Gestion de projet• Aspects techniques• Bilan

• Quels sont les acteurs du projet?• Pourquoi en a-t-on besoin?• Quel est le but du projet?• Introduction à la norme RoHC• Cahier des charges

Page 3: Robust Header Compression

33

L’équipe RoHC:• Nicolas Albarel• Mikael Desertot

Quels sont les acteurs du projet?

Vincent Roca(responsable de projet)

L’équipe RoHC2:• Jack Ballesteros• Rémi Blanc

AdvancedSystem Technologies

Pascal Moniot

• Mathias Dietrich• David Furodet

Karine ExcoffierSun Microsystems

(consultante)

Page 4: Robust Header Compression

44

Pourquoi en a-t-on besoin?

• Les connexions sans fils sont lentes.• Les paquets IP sont trop gros.

• Il y a un besoin de compresser les paquets.

IP

Page 5: Robust Header Compression

55

Quel est le but du projet?

Compresser les paquets IP

Structure d’un paquet IP:

En-tête Données

Compresser l’en-tête

En-têtes trop compressés -> Pertes de paquets

Une compression robuste: compresser les en-têtes sans augmenter les pertes

Robust Header Compression

Page 6: Robust Header Compression

66

Quelques techniques de compression d’en-tête

Van Jacobson - RFC 1144 (PPP): IPv4/TCP

IPHC – RFC 2507: développé au départ pour IPv6, et adapté par la suite à d’autres protocoles.

CRTP – RFC 2508: IP/UDP(/RTP)

RoHC – RFC 3095:IP/UDP(/RTP)

Page 7: Robust Header Compression

77

Principes de fonctionnement de RoHC

PhysicalPhysical

Data LinkData Link

RoHCRoHC

NetworkNetwork

TransportTransport

SessionSession

PresentationPresentation

ApplicationApplication

PhysicalPhysical

Data LinkData Link

RoHCRoHC

NetworkNetwork

TransportTransport

SessionSession

PresentationPresentation

ApplicationApplication

IP HeaderIP Header

DataData

EmetteurEmetteur RecepteurRecepteur

Page 8: Robust Header Compression

88

Architecture de RoHC

CompressorCompressor

RoHC RoHC frameworkframework

CompressionCompressionfront endfront end

LinkLink

Packet Packet streamstream

Decompressed Decompressed flowsflows

DecompressionDecompressionfront endfront end

RoHC RoHC frameworkframework

decompressordecompressor

Compressed Compressed headersheaders

PhysicalPhysical

Data LinkData Link

RoHCRoHC

NetworkNetwork

TransportTransport

SessionSession

PresentationPresentation

ApplicationApplication

OSI layersOSI layers

ContextContext

Page 9: Robust Header Compression

99

Classification des champs des en-têtes: IPv4

Page 10: Robust Header Compression

1010

Classification des champs des en-têtes: RTP/UDP/IPv6

Page 11: Robust Header Compression

1111

RoHC Profiles

Profil 0: pas de compressionProfil 1: RTP/UDP/IPProfil 2: UDP/IPProfil 3: ESP/IPProfil 4: IP

Pas de profil de compression TCP/IP, c’est en cours de définition au niveau de l’IETF (Draft)

Page 12: Robust Header Compression

1212

Cahier des charges

Travaux réalisés lors du précédent projet: Implémentation du framework RoHC Profil 0 (non compressé) Profil 2 (UDP/IP) sans le mode "Reliable"

Travaux à réaliser lors de ce projet: Profil 2: rajouter le mode "Reliable" Profil 1 (RTP/UDP/IP) Mise en oeuvre de RoHC sur des réseaux sans-fil (802.11b) Support d'IPv6 dans RoHC Tests et évaluations des performances

Page 13: Robust Header Compression

1313

Gestion de projet

• Introduction • Gestion de projet• Aspects techniques• Bilan

• Gestion de la qualité• critères qualité• code• outils

• Planning et gestion des risques

Page 14: Robust Header Compression

1414

Critères qualité• Fiabilité:

• Pourquoi: le code est intégré dans le noyau Linux• Comment l’atteindre:

• Tests nombreux et complets• Bonne modularité

• Comment l’évaluer:• 100% des tests doivent passer

• Maintenabilité:

• Pourquoi: le code va être réutilisé par STM• Comment l’atteindre:

• Utilisation des règles de codage de STM• Utilisation de commentaires • Documentation complète et détaillée

• Comment l’évaluer:• Toutes les fonctions et structures ont un commentaire Doxygen

• Évaluation des performances requise

Page 15: Robust Header Compression

1515

Code

• Stocké sur un répertoire partagé

• Sauvegardé automatiquement chaque nuit

• Utilisation de CVS: Concurrent Versions System

• Règles de codage données par STM

• Les commentaires sont compatibles avec

• Les bugs sont gérés avec l’outil Mantis

Page 16: Robust Header Compression

1616

Outils

• Génération de paquets: SendIP, Nemesis

• Capture de paquets: Ethereal, Tcpdump, Analyser

• Gestion des bugs: Mantis

• Débug et mise au point: KGDB, par liaison série

• Documentation: Doxygen

Page 17: Robust Header Compression

1717

Analyser

Données brutes du paquet

Décomposition du paquet

Liste des paquets capturés

Page 18: Robust Header Compression

1818

Gestion de projet

• Introduction • Gestion de projet

• Aspects techniques• Bilan

• Gestion de la qualité• Planning et gestion des risques

• cycle de vie logiciel• jalons et planning• gestion des risques

Page 19: Robust Header Compression

1919

Modèle en V du cycle de vie Logiciel

Composantlogiciel

Cahier descharges

SpécificationSystèmes

Spécificationperformances

Conceptiondétaillée

Programmecodage

Testunitaire

Testd’intégration

Test deperformances

Testd’intégration

système

Conceptionpréliminaire

Evaluation &test

opérationnelCERTIFICATION

VALIDATION

VALIDATION

VERIFICATION

Corrections

Code

Mise au point

Spécification

conception

Validation

Implémentation

BESOIN PRODUIT

Spécification Conception - developpement Test & évaluationFonctionnementmaintenance

Conceptiondétaillée

Conceptiondétaillée

Testunitaire

Testunitaire

ProgrammecodageImplémentation

Analyse des Analyse des

besoinsbesoins

SpécificatioSpécificatio

nn

ConceptioConceptio

nn

CodageCodage

TestTest

ss

Page 20: Robust Header Compression

2020

Jalons & Planning du projet•Etude EPICEtude EPIC•Plan d’Assurance Qualité LogicielPlan d’Assurance Qualité Logiciel•Cahier des chargesCahier des charges•Plan Developpement Logiciel Plan Developpement Logiciel

•Spécifications ExternesSpécifications Externes•Plan de TestsPlan de Tests•Test Spécification Système Test Spécification Système •Spécifications Tests PerformancesSpécifications Tests Performances•Manuel UtilisateurManuel Utilisateur•Spécification Test système Existant + TestsSpécification Test système Existant + Tests

•Architecture LogicielleArchitecture Logicielle•Specification Tests d’ Integration Specification Tests d’ Integration •Conception DetailléConception Detaillé

•Profile 2 (UDP/IP)Profile 2 (UDP/IP)•Profile 1 (RTP/UDP/IP)Profile 1 (RTP/UDP/IP)•Support IPv6Support IPv6•Mise en oeuvre 802.11bMise en oeuvre 802.11b

•Tests UnitairesTests Unitaires•Tests d’Intégration Tests d’Intégration •Tests de Performance Tests de Performance •Tests Système Tests Système •Tests OpérationnelTests Opérationnel

2 2 PeriodesPeriodes

3 3 AuditsAudits

4 Jalons pour 4 Jalons pour les livrablesles livrables

Page 21: Robust Header Compression

2121

Gestion et évaluation des risques

Programmation du noyau Linux Difficulté de débuguer le noyau Manque de connaissance sur l’architecture du noyau

Implémentation IPv6 Stade expérimental sur le noyau Linux version 2.4.x Rupture avec la précédente implémentation

Faible expérience de l’équipe de projetModification des spécifications de RoHCRetard dans la fourniture de matériel (carte 802.11b)

Page 22: Robust Header Compression

2222

Aspects techniques

• Introduction • Gestion de projet• Aspects techniques• Bilan• Architecture logicielle

• Méchanismes de RoHC• Configuration• Plateforme de test et debug• Tests• Performances

Page 23: Robust Header Compression

2323

Architecture réseau Linux

NetworkApplications

BSDSockets

INETSockets

TCP UDP

IP

PPP, Ethernet, ...

UserSpace

KernelSpace

SocketInterface

ProtocolLayers

NetworkDevices

NetworkApplications

BSDSockets

INETSockets

TCP UDP

IP

PPP, Ethernet, ...

UserSpace

KernelSpace

SocketInterface

ProtocolLayers

NetworkDevices

Hook RoHC Framework

RoHCModule

configuration

Page 24: Robust Header Compression

2424

RoHC Framework

Architecture logicielleEncapsulation of OS dependent

services

Physical layer

Kernel moduleKernel code

Kernel space

Manager interface

Synchronisation

Memory managing

Data link

IP

UDP ESP

RTP

HOOK

FILTER

CONVERTER

FRAMEWORK PROFILE 3

PROFILE 2

CONTEXT

PROFILE 1

PROFILE 0

MANAGER

Page 25: Robust Header Compression

2525

Modes & Etats RoHC

Décompresseur

IR(Initialisation &

Refresh)

FO(First Order)

SO(Second Order)

(O) approach / Ack (O) approach / Ack Ack

Nack / UpdateStatic - NAck

Static - NAck

(O) approach / Ack

No Context Static Context Full Context

No Static No Dynamic Success

Success

K_2 out of n_2 failuresK_1 out of n_1 failures

Success

Compresseur

OptimisticIR-FO-SO

UnidirectionalIR-FO-SO

ReliableIR-FO-SO

Feedback(R)

Feedback(O)

Feedback(R)

Feedback(U)

Feedback(U)

Feedback(O)

Page 26: Robust Header Compression

2626

Exemple: mode optimiste

IRUOR-2UO-0Ack

IR

FO

SO

Unidirectional

No context

Static context

Full context

UnidirectionalOptimistic Optimistic

Page 27: Robust Header Compression

2727

Configuration de RoHC

<?xml version="1.0"?><!DOCTYPE rohc SYSTEM "rohconfig.dtd"><rohc>

<interface if="eth0" type="ETH"><cid max="15" type="large"/><packet_size min="46" max="1450"/><feedback delay_max="1"/><profile protocol="UDP"/><packet_filter>

<rule dest_address="00:08:02:33:4d:b1" protocol="UDP"/></packet_filter>

</interface><interface if="wlan0" type="ETH">

<cid max="15" type="large"/><packet_size min="46" max="1450"/><feedback delay_max="1"/><profile protocol="UDP"/><packet_filter>

<rule dest_address="ALL" protocol="UDP"/></packet_filter>

</interface><NbFeedback val="8"/><NbPacket min="2" max="3"/><NbContext min="4" max="5"/><hashtable_size compressor="6" decompressor="7"/><maxChannel val="8"/><decompressor mode="optimistic"/><context timout="10000"/><Print performances="no" statistic="no"/>

</rohc>

Page 28: Robust Header Compression

2828

PlanetcastRouter

louplupus

loutre fouine

Hub100baseT

Seriallink

SeriallinkLaptop

IseranINRIA

802.11b

RoHCnetwork

Plateforme de développement RoHC Wireless

Analyseur de paquetsDebugger sur liaison série

RoHC PCNoyau Linux

2.4.xIPV6,

802.11b, ...debuggeur

noyau (kgdb)Console Serie

PcDeveloppement

Analyseur de paquets

PcServeur de

fichier sauvegardé

Page 29: Robust Header Compression

2929

Debug d’un module du noyau

Récupération des sources du module Compilation du module Chargement du module en mémoire

et récupération de la table des symboles

Génération d’un script pour le débuggeur

Transfert des fichiers vers la machine de debug

Exécution du débuggeur et connexion avec la machine hôte

PlanetcastRouter

louplupus

Hub100baseT

SeriallinkLaptop

Iseran

INRIA

RoHCnetwork

Page 30: Robust Header Compression

3030

Tests• Tests sur le système existant• A chaque étape• Tests Automatisés

LoupRoHC

TcpDump

IseranStockage de fichiers

Routeur

HubLupusRoHC

LoutreEtherealStation

duréseau

Capture Ethereal

Démarage du test

Packets de test

Capture TcpDump

Enregistrement des résultats

Démarage de RoHCDémarage de RoHC

• Paquets non-compressés• Paquets compressés• Paquets décompressés• Etats du décompresseur• Etats du compresseur

Page 31: Robust Header Compression

3131

PerformancesPaquet IPv6/UDP

Paquet IR

Paquet UOR-2

Paquet UO-0

Pourcentage de données utiles dans le paquet

42%

42%

65%

71%

Gain sur la taille totale

0%

35%

42%

(45 octets de données utiles)

Estimation pour le profil 1 (RTP/UDP/IPv6): 67% 44%

Page 32: Robust Header Compression

3232

• Introduction • Gestion de projet• Aspects techniques• Bilan

Bilan

• Qualité• Cahier des charges• Planning• Suite

Page 33: Robust Header Compression

3333

Bilan Qualité

• Fiabilité

• Maintenabilité

• Nombreux bugs décelés et corrigés grâce aux tests automatisés

• Anciens bugs non prioritaires mais clairement identifiés

• Un puissant outil pour la fiabilité l’année prochaine

• Nouveau code entièrement commenté

• Ancien code commenté dans ses parties principales

• Documentation complète

• Traçage du fonctionnement amélioré

Page 34: Robust Header Compression

3434

• Tests de l’existant

• Profil 2 UDP/IP mode fiable

• Profil 1 RTP/UDP/IP

• Support de IPv6

• Mise en œuvre sur 802.11b

• Evaluation des performances

Cahier des charges

Page 35: Robust Header Compression

3535

Planning

Page 36: Robust Header Compression

3636

Suite

Ce qu’il reste à faire:

• finir de corriger les bugs listés

• intégrer le profil 1 (RTP/UDP/IP)

• mode fiable du profil 2 (UDP/IP)

• analyse complète des performances