Aller au contenu principal

7. Router State Diagram (Diagramme d'état du routeur)

7. Router State Diagram (Diagramme d'état du routeur)

Le comportement du routeur est spécifié plus formellement par les diagrammes de transition d'état ci-dessous.

Un routeur peut se trouver dans l'un des deux états possibles par rapport à un seul réseau attaché :

  • "Querier" (Interrogateur), lorsque ce routeur est désigné pour transmettre des IGMP Membership Queries sur ce réseau.

  • "Non-Querier" (Non-Interrogateur), lorsqu'il existe un autre routeur désigné pour transmettre des IGMP membership Queries sur ce réseau.

Les trois événements suivants peuvent amener le routeur à changer d'état :

  • "query timer expired" (minuterie de requête expirée) se produit lorsque la minuterie définie pour la transmission de requête expire.

  • "query received from a router with a lower IP address" (requête reçue d'un routeur avec une adresse IP inférieure) se produit lorsqu'une IGMP Membership Query est reçue d'un routeur sur le même réseau avec une adresse IP inférieure.

  • "other querier present timer expired" (minuterie de présence d'un autre interrogateur expirée) se produit lorsque la minuterie définie pour noter la présence d'un autre interrogateur avec une adresse IP inférieure sur le réseau expire.

Il existe trois actions qui peuvent être entreprises en réponse aux événements ci-dessus :

  • "start general query timer" (démarrer la minuterie de requête générale) pour le réseau attaché.

  • "start other querier present timer" (démarrer la minuterie de présence d'un autre interrogateur) pour le réseau attaché [Other Querier Present Interval].

  • "send general query" (envoyer une requête générale) sur le réseau attaché. La General Query est envoyée au groupe de tous les systèmes (224.0.0.1), et a un Max Response Time de [Query Response Interval].

                                      --------------------------------
_______|________ gen. query timer |
--------- | | expired |
| Initial |---------------->| | (send general query, |
--------- (send gen. q., | | set gen. q. timer) |
set initial gen. q. | |<----------------------
timer) | Querier |
| |
-----| |<---
| | | |
| |________________| |
query received from a | | other querier
router with a lower | | present timer
IP address | | expired
(set other querier | ________________ | (send general
present timer) | | | | query,set gen.
| | | | q. timer)
| | | |
---->| Non |----
| Querier |
| |
| |
---->| |----
| |________________| |
| query received from a |
| router with a lower IP |
| address |
| (set other querier |
| present timer) |
---------------------------

Un routeur devrait démarrer dans l'état Initial sur tous les réseaux attachés, et passer immédiatement à l'état Querier.

De plus, pour garder une trace des groupes qui ont des membres, un routeur peut se trouver dans l'un des quatre états possibles par rapport à un seul groupe de multidiffusion IP sur un seul réseau attaché :

  • État "No Members Present" (Aucun membre présent), lorsqu'il n'y a aucun hôte sur le réseau qui a envoyé des rapports pour ce groupe de multidiffusion. C'est l'état initial pour tous les groupes sur le routeur ; il ne nécessite aucun stockage dans le routeur.

  • État "Members Present" (Membres présents), lorsqu'il y a un hôte sur le réseau qui a envoyé un Membership Report pour ce groupe de multidiffusion.

  • État "Version 1 Members Present" (Membres version 1 présents), lorsqu'il y a un hôte IGMPv1 sur le réseau qui a envoyé un Version 1 Membership Report pour ce groupe de multidiffusion.

  • État "Checking Membership" (Vérification de l'appartenance), lorsque le routeur a reçu un message Leave Group mais n'a pas encore entendu de Membership Report pour le groupe de multidiffusion.

Il existe six événements significatifs qui peuvent provoquer des transitions d'état du routeur :

  • "v2 report received" (rapport v2 reçu) se produit lorsque le routeur reçoit un Version 2 Membership Report pour le groupe sur l'interface. Pour être valide, le message Report doit avoir une longueur d'au moins 8 octets et doit avoir une somme de contrôle IGMP correcte.

  • "v1 report received" (rapport v1 reçu) se produit lorsque le routeur reçoit un Version 1 Membership report pour le groupe sur l'interface. Les mêmes exigences de validité s'appliquent.

  • "leave received" (quitter reçu) se produit lorsque le routeur reçoit un message IGMP Group Leave pour le groupe sur l'interface. Pour être valide, le message Leave doit avoir une longueur d'au moins 8 octets et doit avoir une somme de contrôle IGMP correcte.

  • "timer expired" (minuterie expirée) se produit lorsque la minuterie réglée pour une appartenance à un groupe expire.

  • "retransmit timer expired" (minuterie de retransmission expirée) se produit lorsque la minuterie réglée pour retransmettre une Membership Query spécifique au groupe expire.

  • "v1 host timer expired" (minuterie d'hôte v1 expirée) se produit lorsque la minuterie réglée pour noter la présence d'hôtes version 1 en tant que membres du groupe expire.

Il existe six actions possibles qui peuvent être entreprises en réponse aux événements ci-dessus :

  • "start timer" (démarrer la minuterie) pour l'appartenance au groupe sur l'interface - réinitialise également la minuterie à sa valeur initiale [Group Membership Interval] si la minuterie est actuellement en cours d'exécution.

  • "start timer*" (démarrer la minuterie*) pour l'appartenance au groupe sur l'interface - cette action alternative règle la minuterie sur [Last Member Query Interval] * [Last Member Query Count] si ce routeur est un Querier, ou sur le [Max Response Time] dans le paquet * [Last Member Query Count] si ce routeur est un non-Querier.

  • "start retransmit timer" (démarrer la minuterie de retransmission) pour l'appartenance au groupe sur l'interface [Last Member Query Interval].

  • "start v1 host timer" (démarrer la minuterie d'hôte v1) pour l'appartenance au groupe sur l'interface, réinitialise également la minuterie à sa valeur initiale [Group Membership Interval] si la minuterie est actuellement en cours d'exécution.

  • "send group-specific query" (envoyer une requête spécifique au groupe) pour le groupe sur le réseau attaché. La Group-Specific Query est envoyée au groupe interrogé, et a un Max Response Time de [Last Member Query Interval].

  • "notify routing +" (notifier le routage +) notifier le protocole de routage qu'il y a des membres de ce groupe sur ce réseau connecté.

  • "notify routing -" (notifier le routage -) notifier le protocole de routage qu'il n'y a plus de membres de ce groupe sur ce réseau connecté.

Le diagramme d'état pour un routeur à l'état Querier suit :

                              ________________
----------------------------| |<-----------------------
| | |timer expired |
| timer expired| |(notify routing -, |
| (notify routing -)| No Members |clear rxmt tmr) |
| ------->| Present |<------- |
| | | | | |
|v1 report rec'd | | | | ------------ |
|(notify routing +, | |________________| | | rexmt timer| |
| start timer, | | | | expired | |
| start v1 host | v2 report received| | | (send g-s | |
| timer) | (notify routing +,| | | query, | |
| | start timer)| | | st rxmt | |
| __________|______ | _____|_|______ tmr)| |
| | |<------------ | | | |
| | | | |<----- |
| | | v2 report received | | |
| | | (start timer) | | |
| | Members Present |<-------------------| Checking | |
| ----->| | leave received | Membership | |
| | | | (start timer*, | | |
| | | | start rexmt timer,| | |
| | | | send g-s query) | | |
| | --->| |------------------->| | |
| | | |_________________| |______________| |
| | |v2 report rec'd | | | |
| | |(start timer) | |v1 report rec'd |v1 report rec'd |
| | ---------------- |(start timer, |(start timer, |
| |v1 host | start v1 host timer) | start v1 host |
| |tmr ______________V__ | timer) |
| |exp'd | |<---------------------- |
| ------| | |
| | Version 1 |timer expired |
| | Members Present |(notify routing -) |
| | |-------------------------------------------
| | |<--------------------
------->|_________________| v1 report rec'd |
| v2 report rec'd | | (start timer, |
| (start timer) | | start v1 host timer) |
----------------- --------------------------

Le diagramme d'état pour un routeur à l'état Non-Querier est similaire, mais les non-Queriers n'envoient aucun message et ne sont pilotés que par la réception de messages. Notez que les non-Queriers ne se soucient pas de savoir si un message Membership Report est de Version 1 ou Version 2.

                              ________________
| |
| |
timer expired| |timer expired
(notify routing -)| No Members |(notify routing -)
--------->| Present |<---------
| | | |
| | | |
| | | |
| |________________| |
| | |
| |report received |
| |(notify routing +,|
| | start timer) |
________|________ | ________|________
| |<--------- | |
| | report received | |
| | (start timer) | |
| Members Present |<-------------------| Checking |
| | g-s query rec'd | Membership |
| | (start timer*) | |
---->| |------------------->| |
| |_________________| |_________________|
| report received |
| (start timer) |
-----------------