QUESTIONS Cours 4 Flashcards
ATTAQUE CONCERTEE : Les bleus sont divises en deux camps de part et d’autre des verts et communiquent par messager. S’ils attaquent ensemble, la victoire est a eux. Chacun n’attaquera que s’il a l’assurance d’un accord
mutuel confirme. Quel protocole peuvent-ils utiliser pour s’assurer de maniere absolue que l’autre accepte d’attaquer avec eux?
Ce n’est pas possible.
ORDRE DES MISES A JOUR : Donnez un exemple pour lequel l’ordre d’un message de groupe (multicast) de deux clients n’est pas important? Un ou c’est important?
L’ordre n’est pas important pour une requete ou un seul ordinateur peut envoyer la reponse (ou lorsque la valeur demandee ne change pas et peut venir de n’importe quel ordinateur). Par contre, pour des mises a jour de
serveurs repliques, il est important que tous les serveurs voient les mises a jour dans le meme ordre lorsqu’elles s’intersectent.
TEMPETE DE MESSAGES : Un reseau local comporte 250 ordinateurs et un routeur qui offre le service DHCP. Si au demarrage (apres une panne d’electricite) chaque ordinateur demande a chaque autre s’il offre le service
DHCP, combien de messages seront-ils envoyes a cette fin? Comment cela se compare-t-il a l’utilisation de diffusion generale?
Si chaque ordinateur envoie un message `a chaque adresse, il peut envoyer 251 messages s’il sait l’intervalle ou sinon pourrait essayer les 254 adresses possibles. Le nombre total de messages serait de l’ordre de n au carre, soit 250 * 254 = 63500. Autrement, chaque ordinateur pourrait n’envoyer qu’un seul message en diffusion generale pour 250 messages.
Dans tous les cas, il y aura aussi 250 reponses.
MISE A L’ECHELLE DES MESSAGES : Comparez les differentes garanties pour les messages de groupe
(non fiable, fiable, atomique, totalement ordonnance, causalement ordonnance) en termes de mise a l’echelle et de nombre de messages, en supposant n membres et que peu de messages sont perdus?
Non fiable: un message en multi-diffusion par envoi de groupe.
Fiable (localiser un repondant): un message en multi-diffusion et une reponse.
Atomique: deux messages en multi-diffusion et n - 1 accuses de reception.
Ordonnancement total: 2 messages pour le numero de
sequence plus un message en multi-diffusion; risque de surcharge du serveur de sequence pour la mise a l’echelle.
Ordonnancement partiel: un message en multi-diffusion.
SERVICE DE VOTE : Un service de vote permet de voter (candidat et numero d’electeur), et d’obtenir le resultat (nom du candidat et nombre de votes). Donnez le prototype de ces fonctions. Identifiez les parametres d’entree et de sortie.
void Vote(char *nom, int identificateur); void Resultat(char **nom, int *nombre);
La premiere fonction a deux parametres d’entree alors que la seconde a deux parametres de sortie.
SEMANTIQUE DES APPELS A DISTANCE : Les electeurs veulent etre certains que leur vote soit pris en consideration. Quelle semantique peut les satisfaire?
La semantique peut-etre ne suffit pas. Par contre au moins une fois est acceptable dans la mesure ou le numero d’electeur sert deja a filtrer les repetitions.
RESEAU PARTIELLEMENT ASYNCHRONE : Un reseau avec paquets qui peuvent etre perdus est utilise pour
obtenir une semantique au moins une fois. L’implantation peut ou non utiliser une hypoth`ese de d´elai maximal. Quel est l’effet sur l’implantation?
En retransmettant passe un delai maximal, ceci elimine en theorie la possibilite de recevoir deux reponses, une tardive et une pour la retransmission.
CREATION DU CODE POUR LES PROXY : Comment peut-on generer un proxy pour une methode comme
Vote dans un langage comme C++ qui ne supporte pas la reflexion?
Le code pour le proxy est genere a partir du IDL. Le proxy contient une reference reseau vers l’objet reel et une methode Vote qui envoie au processus de la reference reseau: le numero d’interface, le numero de
methode, l’identificateur de l’objet, le nom, et le numero d’electeur. La procedure d’envoi identifie le type de l’ordinateur (gros/petit boutien) et retransmet le tout jusqu‘a obtention d’un accuse de reception.
PERFORMANCE D’UN APPEL A DISTANCE : Un client prend 5ms pour calculer les arguments d’une requete
RPC, le serveur prend 10ms pour traiter la requete. Chaque envoi ou reception de paquet demande 0.5ms au systeme d’exploitation et le temps d’envoi d’un message sur le reseau est de 3ms.
L’encodage et le d´ecodage des arguments prend 0.5ms par message. Quel est le temps pour effectuer deux requetes si le client est sequentiel? Si le client est multi-fils mais le serveur demeure sequentiel?
calculer args + encoder + envoi + transmission + reception + decodage + traitement + encoder + envoi + trasmission + reception + decodage = 5 + .5 + .5 + 3 + .5 + .5 + 10 + .5 + .5 + 3 + .5 + .5 = 25ms, soit 50ms pour deux requetes sequentielles.
En multi-fils, le client commence sa seconde requete apres l’envoi a 6ms. Sa seconde requete est envoyee apres un autre 6ms, soit a 12ms. Le serveur recoit la premiere requete a 9ms, la traite et la renvoie a 21ms.
La seconde requete est deja la et peut etre traitee a ce moment. La seconde reponse est envoyee a 33ms, et parvient au client a 36ms, pour un total de 37ms.
CORBA SANS CONSTRUCTEUR : Pourquoi CORBA et les systemes similaires n’offrent-ils pas de constructeurs?
CORBA offre une interface et la notion d’instance n’est donc pas automatique. Le cas par defaut est une instance unique qui se confond avec l’interface. Au besoin il peut y avoir une methode d’une interface
qui exporte des objets reseau associes a une meme interface.
TAILLE DES MESSAGES : Vous devez programmer un systeme d’appel de proc´edure a distance pour verifier la disponibilite et le prix de certains items:
void inventaire(in string id, out unsigned long quantity, out unsigned long price);
ou id est un identifiant typiquement de 10 caracteres, la quantite environ 12 et le prix est un entier (en centiemes de dollars) aux environs de $100 (10000 cents).
Vous avez le choix entre CORBA et gRPC. Quels sont les avantages de chacun. Si on ne tient pas compte des entetes (e.g. HTTP2) mais seulement de l’encodage des arguments, CDR versus protobuf, lequel sera plus compact?
CORBA et gRPC sont relativement semblables. Les deux permettent d’interfacer facilement des programmes ecrits en differents langages et ont ete developpes avec une attention particuliere pour l’optimisation. CORBA est
mieux etabli et bien normalise. gRPC est plus moderne et permet une plus grande flexibilite au niveau de la compatibilite (vers l’avant et vers l’arriere) car
les champs sont auto-identifies. CORBA prendra pour son encodage, outre le code identifiant la fonction, la longueur de la chaıne id arrondie au multiple de
4 octets superieur plus 4 octets pour stocker la longueur, soit 16 octets pour un identifiant de 10 caracteres, 4 octets pour la quantite et 4 octets pour le
prix, pour un total de 24 octets.
De son cote, protobuf demandera 1 octet pour identifier le champ et le type combines pour id, 1 octet pour la longueur, 10 octets pour l’identifiant, 1 octet pour le champ et le type combin´es et 1 octet varint pour la quantite, 1 octet pour le type et champ combines et 2 octets pour le prix (10000 cents), pour un total de 17 octets. gRPC offre donc un compromis tres interessant de flexibilite (champs et types auto-identifies), de simplicite d’encodage et de compacite.