Architetttura interna
Macchina a Stati
Il diagramma che segue mostra la macchina a stati di un nodo SIPDHT. Per semplicita' non sono mostrate le transazioni causate da redirezioni o da operazioni di get e put.
Dettaglio Transazioni
INIT
Porta a:
- ENTERING
- avviene immediatamente e causa l'invio di una richiesta di join al nodo conosciuto.
ENTERING
Porta a:
- ENTERING
- causato da una redirezione e comporta l'invio di una richiesta di join al nodo referenziato nella risposta.
- STANDALONE
- causato da una risposta di fallimento.
- OVERLAY
- causato da una risposta di successo.
OVERLAY
Porta a:
- OVERLAY
- causato da una join, una stabilizzione o una righiesta di aggiornamento (che qui per semplicita' non falliscono mai).
- STABILIZING
- causato da un timer di stabilizzazione e comporta una richiesta di stabilizzazione.
STABILIZING
Porta a:
- OVERLAY
- causato da una risposta di successo.
- STABILIZING
- causato da una redirezione e comporta l'invio di una richiesta di stabilizzione al nodo referenziato nella risposta.
- FIXING
- causato da un risposta di fallimento quando e' conosciuto almeno un successore. Comporta l'invio della richiesta di stabilizzazione a un altro successore.
- STANDALONE
- causato da una risposta di fallimento quando non sono conosciuti altri successori.
FIXING
Porta a:
- OVERLAY
- causato da una risposta di successo.
- FIXING
- causato da una redirezione e comporta l'invio di una richiesta di stabilizzione al nodo referenziato nella risposta.
- FIXING
- causato da un risposta di fallimento quando e' conosciuto almeno un successore. Comporta l'invio della richiesta di stabilizzazione a un altro successore.
- STANDALONE
- causato da una risposta di fallimento quando non sono conosciuti altri successori.
STANDALONE
Porta a:
- OVERLAY
- causato da una richiesta di join (che qui per semplicita' non fallisce mai).
Formato Messaggi
Il formato dei messaggi e' molto simile a quello definito in draft-bryan-sipping-p2p-02. Questa sezione mostra qualche messaggio di esempio.
Join
REGISTER sip:b3@127.0.0.64:4001;user=node SIP/2.0
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>
Expires: 3600
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>
Expires: 3600
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
SIP/2.0 200 OK
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>;expires=3600
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>;expires=3600
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8
Stabilizzazione
REGISTER sip:b3@127.0.0.64:4001;user=node SIP/2.0
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>
Expires: 3600
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>
Expires: 3600
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
SIP/2.0 200 OK
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>;expires=3600
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=S1
DHT-Link: <sip:b3@127.0.0.64:4001;user=node>;link=S2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:7a@127.0.0.1:4001;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:7a@127.0.0.1:4001;user=node>;expires=3600
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=S1
DHT-Link: <sip:b3@127.0.0.64:4001;user=node>;link=S2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8
Aggiornamento
REGISTER sip:b3@127.0.0.64:4001;user=node SIP/2.0
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:79@127.0.0.1:4000;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: *
Expires: 0
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN
Max-Forwards: 0
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:79@127.0.0.1:4000;user=node>
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: *
Expires: 0
Content-Length: 0
DHT-NodeID: <sip:7a@127.0.0.1:4001;user=node>;algorithm=sum-8
SIP/2.0 200 OK
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:79@127.0.0.1:4000;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:79@127.0.0.1:4000;user=node>;expires=0
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=S1
DHT-Link: <sip:b3@127.0.0.64:4001;user=node>;link=S2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8
Via: SIP/2.0/TCP 127.0.0.1:4001;branch=z9hG4bKayBQ74N72eHFN;rport=45739
From: <sip:7a@127.0.0.1:4001;user=node>;tag=e9NaDmj68t8HD
To: <sip:79@127.0.0.1:4000;user=node>;tag=eBcXBpZc6jH3H
Call-ID: dcf591c8-d30b-1229-c4ac-0050dae0e811
CSeq: 74126366 REGISTER
Contact: <sip:79@127.0.0.1:4000;user=node>;expires=0
Content-Length: 0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=P0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=S0
DHT-Link: <sip:7a@127.0.0.1:4001;user=node>;link=S1
DHT-Link: <sip:b3@127.0.0.64:4001;user=node>;link=S2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F0
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F1
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F2
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F3
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F4
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F5
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F6
DHT-Link: <sip:e4@127.0.0.128:4001;user=node>;link=F7
DHT-NodeID: <sip:b3@127.0.0.64:4001;user=node>;algorithm=sum-8