Passa al contenuto principale

7. Router State Diagram (Diagramma di stato del router)

7. Router State Diagram (Diagramma di stato del router)

Il comportamento del router è specificato più formalmente dai diagrammi di transizione di stato qui sotto.

Un router può trovarsi in uno dei due stati possibili rispetto a qualsiasi singola rete collegata:

  • "Querier" (Interrogante), quando questo router è designato a trasmettere IGMP Membership Queries su questa rete.

  • "Non-Querier" (Non Interrogante), quando c'è un altro router designato a trasmettere IGMP membership Queries su questa rete.

I seguenti tre eventi possono far cambiare stato al router:

  • "query timer expired" (timer della query scaduto) si verifica quando il timer impostato per la trasmissione della query scade.

  • "query received from a router with a lower IP address" (query ricevuta da un router con un indirizzo IP inferiore) si verifica quando un IGMP Membership Query viene ricevuto da un router sulla stessa rete con un indirizzo IP inferiore.

  • "other querier present timer expired" (timer di presenza di altro interrogante scaduto) si verifica quando il timer impostato per notare la presenza di un altro interrogante con un indirizzo IP inferiore sulla rete scade.

Ci sono tre azioni che possono essere intraprese in risposta agli eventi di cui sopra:

  • "start general query timer" (avvia timer query generale) per la rete collegata.

  • "start other querier present timer" (avvia timer presenza altro interrogante) per la rete collegata [Other Querier Present Interval].

  • "send general query" (invia query generale) sulla rete collegata. La General Query viene inviata al gruppo di tutti i sistemi (224.0.0.1), e ha un Max Response Time di [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 router dovrebbe iniziare nello stato Initial su tutte le reti collegate, e passare immediatamente allo stato Querier.

Inoltre, per tenere traccia di quali gruppi hanno membri, un router può trovarsi in uno dei quattro stati possibili rispetto a qualsiasi singolo gruppo multicast IP su qualsiasi singola rete collegata:

  • Stato "No Members Present" (Nessun membro presente), quando non ci sono host sulla rete che hanno inviato rapporti per questo gruppo multicast. Questo è lo stato iniziale per tutti i gruppi sul router; non richiede memoria nel router.

  • Stato "Members Present" (Membri presenti), quando c'è un host sulla rete che ha inviato un Membership Report per questo gruppo multicast.

  • Stato "Version 1 Members Present" (Membri versione 1 presenti), quando c'è un host IGMPv1 sulla rete che ha inviato un Version 1 Membership Report per questo gruppo multicast.

  • Stato "Checking Membership" (Controllo appartenenza), quando il router ha ricevuto un messaggio Leave Group ma non ha ancora sentito un Membership Report per il gruppo multicast.

Ci sono sei eventi significativi che possono causare transizioni di stato del router:

  • "v2 report received" (rapporto v2 ricevuto) si verifica quando il router riceve un Version 2 Membership Report per il gruppo sull'interfaccia. Per essere valido, il messaggio Report deve essere lungo almeno 8 ottetti e deve avere un checksum IGMP corretto.

  • "v1 report received" (rapporto v1 ricevuto) si verifica quando il router riceve un Version 1 Membership report per il gruppo sull'interfaccia. Si applicano gli stessi requisiti di validità.

  • "leave received" (lascia ricevuto) si verifica quando il router riceve un messaggio IGMP Group Leave per il gruppo sull'interfaccia. Per essere valido, il messaggio Leave deve essere lungo almeno 8 ottetti e deve avere un checksum IGMP corretto.

  • "timer expired" (timer scaduto) si verifica quando il timer impostato per un'appartenenza al gruppo scade.

  • "retransmit timer expired" (timer di ritrasmissione scaduto) si verifica quando il timer impostato per ritrasmettere una Membership Query specifica del gruppo scade.

  • "v1 host timer expired" (timer host v1 scaduto) si verifica quando il timer impostato per notare la presenza di host versione 1 come membri del gruppo scade.

Ci sono sei possibili azioni che possono essere intraprese in risposta agli eventi di cui sopra:

  • "start timer" (avvia timer) per l'appartenenza al gruppo sull'interfaccia - reimposta anche il timer al suo valore iniziale [Group Membership Interval] se il timer è attualmente in esecuzione.

  • "start timer*" (avvia timer*) per l'appartenenza al gruppo sull'interfaccia - questa azione alternativa imposta il timer a [Last Member Query Interval] * [Last Member Query Count] se questo router è un Querier, o al [Max Response Time] nel pacchetto * [Last Member Query Count] se questo router è un non-Querier.

  • "start retransmit timer" (avvia timer di ritrasmissione) per l'appartenenza al gruppo sull'interfaccia [Last Member Query Interval].

  • "start v1 host timer" (avvia timer host v1) per l'appartenenza al gruppo sull'interfaccia, reimposta anche il timer al suo valore iniziale [Group Membership Interval] se il timer è attualmente in esecuzione.

  • "send group-specific query" (invia query specifica del gruppo) per il gruppo sulla rete collegata. La Group-Specific Query viene inviata al gruppo interrogato, e ha un Max Response Time di [Last Member Query Interval].

  • "notify routing +" (notifica routing +) notifica al protocollo di routing che ci sono membri di questo gruppo su questa rete connessa.

  • "notify routing -" (notifica routing -) notifica al protocollo di routing che non ci sono più membri di questo gruppo su questa rete connessa.

Il diagramma di stato per un router nello stato Querier segue:

                              ________________
----------------------------| |<-----------------------
| | |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) |
----------------- --------------------------

Il diagramma di stato per un router nello stato Non-Querier è simile, ma i non-Queriers non inviano alcun messaggio e sono guidati solo dalla ricezione dei messaggi. Si noti che i non-Queriers non si preoccupano se un messaggio Membership Report è Versione 1 o Versione 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) |
-----------------