High performance architecture for communication systems
Architecture hautes performances pour systèmes de communication
Résumé
Our work investigates the efficiency of high performance implementation techniques for the communication system. Indeed, if the general principles are now well known, it is not always the case of their application. From the results collected on our experimental platform, we draw conclusions on the host machine, system, and protocol aspects. For the host machine aspect, we show that the parallelization of the communication stack is disappointing and largely limited by system lock contentions. We also show how the ILP technique, meant to limit memory accesses, can be integrated in the access method of a TCP/IP stack. The benefits of this technique largely depend on the conditions of use, the kind of application, and the data manipulations. From the system point of view, the study of two opposed protocol environments, BSD and Streams, made it possible to identify their limitations, and in particular why the current Streams environment is not suited to high performance. We deduce a set of principles that a high performance environment should follow. The architecture of the communication stack is essential. We show that a demultiplexed architecture, with direct data paths between the applications and the network drivers, enables a good support of local flow control and system QoS mechanisms. On the contrary, user-level implementations suffer many limitations. Yet they remain essential for certain techniques. From the protocol point of view, we show that the presence of options in packet headers is not opposed to high performance. To this too rigid notion of fixed size headers, we substitute that of foreseeable size headers. Finally, this work highlights two key notions, simplicity and flexibility, upon which depend the performance and functionalities of the communication system.
Nos travaux abordent le problème de l'efficacité des techniques d'implémentation hautes performances du système de communication. Car si les principes généraux sont désormais bien connus, il n'en va pas toujours de même de leur application. Des résultats obtenus sur notre plate-forme expérimentale, nous tirons des conclusions quant aux aspects machine hôte, système, et protocoles. Pour l'aspect machine hôte nous montrons que la parallélisation des piles de communication est décevante et grandement limitée par les contentions d'origine système. Nous montrons également comment la technique ILP, destinée à limiter les accès mémoire, peut être intégrée à la méthode d'accès d'une pile TCP/IP. Les bénéfices de cette technique restent largement dépendants des conditions d'utilisation, de la nature de l'application, et des manipulations de données. Du point de vue système, l'étude de deux environnements d'exécution de protocoles opposés, BSD et Streams, a permis d'identifier leurs faiblesses, et notamment pourquoi l'environnement Streams actuel n'est pas adapté aux hautes performances. Nous en déduisons un ensemble de principes qu'un environnement performant se doit de respecter. L'architecture de la pile de communication est essentielle. Nous montrons qu'une architecture démultiplexée, avec des chemins de données directs entre applications et drivers réseaux, permet un excellent support du contrôle de flux local et des mécanismes systèmes de QoS. En revanche, les implémentations de niveau utilisateur souffrent de nombreuses limitations. Elles sont cependant indispensables à certaines techniques. Du point de vue protocoles, nous montrons que la présence d'options dans les en-têtes de paquets n'est pas contraire à l'obtention de bonnes performances. A la notion trop rigide d'en-têtes de taille fixe nous substituons celle d'en-tétes de taille prédictible. Enfin, il ressort deux notions clés de ces travaux, la simplicité et la flexibilité, dont dépendent les performances et les fonctionnalités du système de communication.