Come creare ponti di ripetizione del vostro Streaming. Radio & P2P
gennaio 27, 2007 1:31 pm18 Responses to “Come creare ponti di ripetizione del vostro Streaming. Radio & P2P”
Ciao Fabrizio,
Complimenti per l’articolo, hai descritto i concetti fondamentali dello streaming P2P in maniera semplice ed efficace.
Premetto che, pur avendo realizzato CoopCast, non sono affatto un esperto di streaming.
Nonostante ciò provo a ragionare insieme a te sui problemi del relaying.
La prima cosa che mi viene in mente è che il problema del cambio del relay si presenta anche nel caso di strutture mono-relayed:
Immaginiamo la lista (albero 1-ario) S–>R1–>R2–>C. Il client sta ricevendo lo stream da R2 con un ritardo pari a 3. Che succede se R2 muore (che sò, si rompe il pc, spegne tutto perchè è pronta la cena, la telecom gli taglia l’ADSL) ? E’chiaro che il network (nel caso di CoopCast il tracker) deve redirigere il client verso un altro relay, nell’esempio R1.
In tal caso il ritardo cambia e diventa, supponiamo, pari a 2. E’ evidente che il client potrebbe ricevere frames che aveva già ricevuto. In tal caso è responsibilità del client (CoopCast Peer, nel mio caso) scartare detti frames, potendoli discriminare sulla base di un sequence-number. CoopCast Peer ragiona così: tiene traccia dell’ultimo sn ricevuto, diciamolo X; quando arriva il frame con sn Y, se risulta Y<=X allora lo scarta.
Spero di essere stato chiaro.
E’ evidente che potrebbe verificarsi anche il problema inverso e cioè che, in seguito alla caduta di un relay, un client viene rediretto su un nuovo relay con ritardo maggiore.
In tal caso il client non può fare molto e allo stream ricevuto viene a mancare necessariamente un pezzetto. Fortunatamente l’algoritmo di encoding si fa carico di risolvere tale problema e lo stream continua ad essere correttamente riprodotto (in genere avviene solo una breve pausa durante la riproduzione). Mi pare di aver capito che il meccanismo con cui vengono corretti tali errori sia basato sul concetto di keyframes, di cui però non parlo poichè non l’ho ancora approfondito.
Ora però voglio porre una questione di tipo diverso. Se è vero che il problema dei ritardi (vogliamo battezzarlo latenza ?) si pone in riferimento alle situazioni di cambio di relay,
quali conseguenze pratiche comporta in situazioni più normali? Voglio dire: se riesco ad ascoltare lo stream con una latenza di tot secondi, non posso essere comunque felice e contento e far finta di niente (sempre se me ne accorgo)?
Ora debbo proprio andare, spero di rivederci presto.
Ciao Gilberto, ti ringrazio per l’intervento, la tua opinione e competenza mi è sempre molto utile.
E’ tutto esattamente come dici. Peccato davvero che sia impossibile creare una pluri relayed radio.
se riesco ad ascoltare lo stream con una latenza di tot secondi, non posso essere comunque felice e contento e far finta di niente (sempre se me ne accorgo)?
Infatti tutti gli ascoltatori di web radio sono felici e contenti! Chiunque ascolta una radio realizzata con server shoutcast, ha una latenza di parecchi secondi, anche se direttamente connesso alla sorgente.
Non so se questo sia imputabile al fatto che il protocollo a livello applicazione icy (che è una “riformulazione” di http) si basi su un protocollo a livello di trasporto TCP, che richiede un handshaking ed ha il controllo di congestione.
Sarebbe stato meglio UDP, del resto perdere qualche frame non è un problema per applicazioni multimediali, mentre mantenere la banda costante, onestamente si.
Salutoni…
Ciao fabrizio grazie per tutto quello che fai.
In merito al problema in oggetto ho capito la teoria, ma non ho capito la pratica.
A trasmette su un indirizzo fisso.
B riceve collegandosi all’indirizzo fisso.
Come fa B a rillangiare?
Ciao antonio, grazie a te per la visita.
Non ho capito bene il concetto di “rilanciamento”, ma posso intuirlo.
Tu dici: “Come fa chi si collega ad un relay a raggiungere la radio da un singolo indirizzo?”
Se è questa la domanda te lo dico io: Si utilizza uno dei tanti tipi di metafile, come pls, asx, ram o altri ancora.. che permettono l’inserimento di più indirizzi di flussi audio. Chi scarica ed esegue questo metafile, può ascoltare la radio da un elenco di fonti (la sorgente e i relay) e scegliere sia quelle disponibili, che le migliori.
Salutoni
Ciao fabrizio,
e sui peer natted/firewalled cosa possiamo dire?
Fino a qualche tempo fa pensavo che nell’albero dei relaying DOVESSERO ESISTERE (nel senso di NON POTESSERO NON ESISTERE) i così detti “dead-ends”, “foglie morte”, costituite da quei peers che, pur ricevendo correttamente lo stream, non possono rilanciarlo essendo dietro un NAT/firewall e quindi inaccessibili da internet. Ho invece scoperto con grande piacere (grazie all’amico Hugo Neira) dell’esistenza di una tecnica chiamata “udp hole punching” che permette di superare brillantemente il problema e di effetture il relaying anche da dietro nat, rendendo la scalabilità dell’albero delle connessioni virtualmente illimitata. Ho subito messo mano a ferri e, finalmente, sono riuscito ad ottenere una versione di CoopCast (http://coopcast.netsolutions.it) dotata del NAT-traversal. Quello che sembrava (almeno a me) il più grosso limite del p2p streaming è stato superato!
Per essere corretto debbo però dire che la versione attuale di CoopCast, la 0.34 beta, soffre ancora di problemucci di stabilità, sui quali comunque sto lavorando tenacemente.
HLVS
Gibbo
Ciao Gibbo.
Nella mia alquanto semplicistica spiegazione, ho considerato i peer natted/firewalled alla stregua di dead-ends.
Ho considerato che chi (per volontà o per impossibilità oggettiva) non è in grado di rilanziare debba essere etichettato come foglia rossa e di conseguenza dead-end.
Il tuo lavoro è grandioso, ti ringrazio tanto che tu stia informandomi(ci) del work in progress del tuo progetto.
Se vuoi scrivere qualcosa sull’ udp hole punching ti ringrazierei molto.. anche sotto forma di link ad altro sito.
Ciao a Tutti! ho letto per caso questo thread…beh da un paio di mesi sto lavorando ad un progetto pesante ma appassionante ( farlo solo è ancora più dura ) ma che in qualche modo riguarda i vostri discorsi. Toxic ( il mio progetto ) è una piattaforma di streaming p2p basata su udp. Vero tutto quello che dite, però dimenticate che è possibile implementare buffer abbastanza sofisticati da sopportare ritardi diversi in un sistema pluri ripetitore. Nel caso di toxic ogni peer è ripetitore e rilascia al max della sua banda una frazione dei pacchetti che riceve lasciando poi a peer più potenti la compensazione. Su ogni peer poi un sofisticato buffer riordina i pacchetti giunti da fonti diverse posizionandoli temporalmente e dando un margine di n sec per far si che seppur provenendo con ritardi differenti risultino tutti pronti contemporaneamente allo scadere degli n secondi per essere riprodotti. ovviamente sto riducendo all’osso. il discorso è molto molto più complesso! alla prox
@Alessandro:
Complimenti per il progetto, ma non capisco una cosa, è vero si che si può utilizzare un pluriripetitore, ma il ritardo sarà sempre pari a quello del ripetitore con ritardo maggiore, per forza di cose, il chè implica che non è possibile creare una pluri relayed radio se non tramite abbattimento dei ritardi ad un fattore comune, che è ovviamente il ritardo più alto.
radio marte non riesco a sincronizzarla perche tramette a bitrate basso
@Antonio10:
Che significa la frase che hai scritto? :S
Ciao Fabri forse sono stato poco attento ma non sono riuscito a capire una cosa: se ci accontentiamo del ritardo che abbiamo con il sistema P2P riusciamo comunque a realizzare una web radio oppure è LAVORO PERSO?
Grazie e complimenti
@Giuliano:
Certo, infatti esiste peercast. Quello che è difficile da implementare è il multifonte, detto pluri relayed radio
Dove posso trovare informazioni e consigli utili per semplificarmi la vita? Una radio web può essere realizzata utilizzando qualsisasi gestore che sia Tiscli Alice Fatweb?
Ciao e tenk
@Emix: fai prima a dire cosa significhi “semplificarsi la vita”
Si, una web radio si può fare con qualsiasi gestore.
“Semplificarmi la vita” nel senso se ci sono siti o libri dove uno poco esperto come me possa riuscire ad installare ed impostare il tutto. Ciao e grazie
@emi:
Ci sono diverse guide su internet.. per quanto riguarda libri obiettivamente non saprei.
Se vuoi puoi leggere tutti i miei articoli dedicati alle web radio e commentare in ciascun articolo di interesse.
[...] Si è già parlato teoricamente di P2P e radio, ma adesso vediamo come potere affrontare concretamente il problema. [...]
[...] Tempo fa, parlai anche se in modo minimale di alberi e teoria dei grafi. [...]
Care to comment?






