Cette question est extrèmement importante, et comme pour les religions, il y a des camps, moi je suis dans le camp de ceux qui disent qu'il n'y a pas de différence dans la mesure où les machines virtuelles ne sont pas saturés et que les débits demandés par les manips sont facilements écoulés par le réseaux de sockets.
Il y a une petite différence au niveau de l'accès ethernet, dans les réseaux simulés, ils sont toujours "up", quand il n'y a rien de connecté, sur une vraie machine le niveau physique tombe à down. Ce détail n'a aucune importance au niveau des applis et protocoles de routage.
Il y a une autre différence, plus génante, c'est la réaction du driver sur saturation des liens physiques: un driver normalement constitué appel netif_stop_queue(netdev) sur engorgement des packets (4 buffers à peu près) à son niveau, ce qui prévient le noyau qui stocke alors les trames dans un système de files d'attentes (voir sched et les qdiscs) et on peut alors prioriser ces packets en attente (qos). Avec des sockets, nous n'avons pas ce netif_stop_queue et donc tous les packets partent comme si il n'y avait pas saturation et sont alors stockés dans uml_clownix_switch qui fait ce qu'il peut.
Donc hors saturation, les systèmes sont totalement identiques (d'après moi) et en saturation, ils divergent complètement dans leurs comportements.
[^] # Re: cool
Posté par clownix (site web personnel) . En réponse à la dépêche Cloonix : soyez administrateur réseau sans mot de passe root. Évalué à 4.
Il y a une petite différence au niveau de l'accès ethernet, dans les réseaux simulés, ils sont toujours "up", quand il n'y a rien de connecté, sur une vraie machine le niveau physique tombe à down. Ce détail n'a aucune importance au niveau des applis et protocoles de routage.
Il y a une autre différence, plus génante, c'est la réaction du driver sur saturation des liens physiques: un driver normalement constitué appel netif_stop_queue(netdev) sur engorgement des packets (4 buffers à peu près) à son niveau, ce qui prévient le noyau qui stocke alors les trames dans un système de files d'attentes (voir sched et les qdiscs) et on peut alors prioriser ces packets en attente (qos). Avec des sockets, nous n'avons pas ce netif_stop_queue et donc tous les packets partent comme si il n'y avait pas saturation et sont alors stockés dans uml_clownix_switch qui fait ce qu'il peut.
Donc hors saturation, les systèmes sont totalement identiques (d'après moi) et en saturation, ils divergent complètement dans leurs comportements.