robust header compression
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 PresentationTRANSCRIPT
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)
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
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)
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
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
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)
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
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
99
Classification des champs des en-têtes: IPv4
1010
Classification des champs des en-têtes: RTP/UDP/IPv6
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)
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
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
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
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
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
1717
Analyser
Données brutes du paquet
Décomposition du paquet
Liste des paquets capturés
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
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
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
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)
2222
Aspects techniques
• Introduction • Gestion de projet• Aspects techniques• Bilan• Architecture logicielle
• Méchanismes de RoHC• Configuration• Plateforme de test et debug• Tests• Performances
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
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
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)
2626
Exemple: mode optimiste
IRUOR-2UO-0Ack
IR
FO
SO
Unidirectional
No context
Static context
Full context
UnidirectionalOptimistic Optimistic
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>
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é
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
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
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%
3232
• Introduction • Gestion de projet• Aspects techniques• Bilan
Bilan
• Qualité• Cahier des charges• Planning• Suite
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é
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
3535
Planning
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