agents basés sur Java et RMI peuvent lancer une grande variété d’outils et de système de
monitoring de réseau, en extraire les résultats, et les publier dans une base LDAP. Ces agents
peuvent de manière sécurisée démarrer n’importe quel programme. Les agents exécutent par
exemple netperf [3] ou ping pour le monitoring du réseau…, les résultats sont alors publiés
dans une base LDAP à des intervalles réguliers (quelques minutes). Ces agents sont exécutés
sur tous les hôtes du système distribué, incluant les clients et tous les serveurs.
Le DPSS utilise TCP pour le transfert de données. Pour que TCP fonctionne bien sur
des réseaux haut débit, il est important qu’il y ait un buffer assez grand pour que le contrôle
de congestion fonctionne correctement. La taille du buffer dépend du produit délai-bande
passante du réseau, mais le produit délai-bande passante peut avoir un ordre de grandeur de 4
ou 5 sur internet. Il est donc pratiquement impossible de configurer pour un hôte un
paramètre de TCP qui soit optimal pour chaque connexion. Pour résoudre ce problème la
librairie cliente DPSS détermine automatiquement le produit délai-bande passante pour
chaque connexion à un serveur DPSS et met le buffer TCP à la taille optimal. La bande
passante et le délai sont obtenus dans la base LDAP.
Le DPSS peut exécuter un équilibrage de charge si des blocs de données sont répliqués
sur plusieurs serveurs. Le DPSS master utilise les informations d’état dans la base LDAP pour
déterminer comment expédier un requête cliente de bloc vers un serveur qui peut donner la
réponse la plus rapide. Les auteurs abordent le problème du Load balancing comme un
problème combinatoire, il y a un certain nombre de client et un certain nombre de serveur;
chaque client doit être assigné à un ou plusieurs serveurs sans qu'aucun serveur ne soit
surchargé. L'approche le l'algorithme à coût minimum de flots est une bonne méthode pour
résoudre ce problème de type combinatoire. Le problème est que cet algorithme est off-line
donc implique un prédictibilité au niveau de la demande de blocs par les clients, alors que les
départs et les arrivées de clients sont aléatoires, les quantités de données demandées aussi…
La solution proposée par les auteurs est d'exécuter l'algorithme chaque fois qu'une requête
client arrive, l'algorithme lui même est assez rapide (1ms pour un modèle de graphe typique).
Les auteurs ont modélisé l'équilibrage de charge de DPSS comme un problème de transport,
le réseau est présenté comme un graphe bipartite avec des nœuds et chaque nœud est un client
ou un serveur, et chaque arête est un chemin réseau du serveur vers le client. Chaque arête a
un coût par blocs et une capacité maximum. L'algorithme trouve le flots de blocs du serveur
vers le client qui minimise le coût total. Les coûts et les capacités sont assignés par rapport à
la latence réseau qui est selon les auteurs le facteur dominant affectant les performances. Cette
latence est divisée en trois latence, le délai du lien entre le client et le master, délai
d'exécution du serveur et du master DPSS, et délai de transmission entre le serveur et le client.
Ces délais sont obtenus dans la base LDAP. Le problème de cette approche est que les
chiffres obtenus ne sont pas forcément à jour et que plusieurs arêtes peuvent partager le même
lien, ce qui n'apparaît pas dans le graphe.
La capacité des arêtes est la bande passante obtenu de la base LDAP. Cette capacité peut
être réduite en fonction du degré des réplication des données. Quand des données sont
chargées dans le DPSS, les blocs sont distribués à travers n serveurs, et chaque blocs est
répliqué m fois (m<=n). Si nous supposons que les blocs sont uniformément distribués, il est
peu probable qu'un serveur stocke plus de m/n pourcent des blocs demandés. La capacité
assignée de l'arête est le minimum, soit de la bande passante soit de m/n pourcent des données
demandées par le client.
L'implémentaion du load balancing, maintient une structure de graphe de données qui
est modifiée chaque fois qu'un client part ou arrive. Le coût des arêtes est recalculé toutes les
3 minutes d'après les données de la base LDAP.