Home Articoli tecnici Ottimizzazione della CDN per lo streaming live
Applications

Ottimizzazione della CDN per lo streaming live

About The Author

Outline

La folla Flash e il tuo Live Stream

Mentre i servizi di streaming si battono per un numero limitato di spettatori e un numero sempre più ridotto di spettatori, gli eventi live, che sono un fattore di comprovata efficacia per il coinvolgimento del pubblico, sono diventati un fattore importante nella strategia dei contenuti di un editore. Tuttavia, per quanto lo streaming live sia in grado di offrire al pubblico in modo affidabile, lo streaming affidabile di eventi live su vasta scala comporta una serie di sfide. Le reti per la distribuzione dei contenuti (CDN) possono contribuire a fornire scalabilità on demand; tuttavia, anche le CDN devono essere ottimizzate per lo streaming live. Forse la sfida più ovvia per lo streaming live è la “folla flash”, fenomeno che si verifica quando molti spettatori entrano in diretta in una volta sola, desiderosi di prendere il via o gli straordinari. Seguendo il tipico comportamento del pubblico che abbiamo osservato trasmettendo in streaming più di 100.000 eventi sportivi, durante la finale NBA di gioco 6, le visualizzazioni sono cresciute rapidamente da quasi nulla al tipoff a un picco di 2,04 milioni di spettatori nel 3° trimestre. Le visualizzazioni sono passate da meno di 10.000 sessioni a oltre 1 milione nella prima ora e altri 1,5 milioni dopo l’intervallo, aggiungendo a volte più di 100.000 nuovi spettatori al minuto. Questo tipo di scala rapida mette sotto pressione qualsiasi CDN. Ma la distribuzione di video live è ancora più impegnativa. Qualsiasi interruzione può causare un’interruzione della riproduzione.

Come dimostra questo esempio di un recente evento live sulla nostra rete, il fenomeno “flash crowd” rende più difficile la distribuzione di video attraverso una CDN rispetto alla fornitura di byte di contenuti normali.

In questo articolo, diamo un’occhiata alle folle di flash e ad altre sfide e poi esploriamo in che modo Verizon Media sfrutta i suoi molti anni di esperienza nel settore CDN per risolvere alcuni dei punti critici comuni per i nostri clienti, rendendolo la scelta giusta per offrire eventi live di alta qualità, non importa se si tratta di sport, concerti, politica… o forse il primo atterraggio su Marte.

Perché la memorizzazione nella cache in live streaming è diversa

La distribuzione di eventi live su Internet implica l’utilizzo di uno o più formati di streaming ABR (Adaptive bitrate), come MPEG-DASH, Apple HLS, Adobe HDS e Microsoft Smooth streaming. In genere si basa su server Web HTTP standard come origini e CDN per distribuire i contenuti su larga scala.

La nostra grande CDN globale di Verizon Media, ora Edgio, ha molti POP e una capacità superiore a 250 Tbps, quindi possiamo facilmente scalare per gestire picchi di traffico e folle di flash. Tuttavia, capacità e scala sono solo una parte dell’equazione. Ciò che è particolarmente importante nel live streaming è la capacità della CDN di interagire con il server di origine e i client, scalando al contempo i segmenti di pubblico più grandi, che vengono tutti insieme.

Il profilo di traffico in tempo reale è unico e distintamente diverso da qualsiasi altra cosa, anche dal VOD, perché durante gli eventi in tempo reale, l’encoder pubblica continuamente nuovi segmenti multimediali (la durata tipica è di 2-10 secondi) sul server di origine e la CDN recupera sempre i contenuti appena rilasciati e li propaga attraverso la rete. Questo processo richiede una quantità di tempo diversa da zero; pertanto, non è possibile evitare una certa latenza. Tuttavia, è fondamentale che la CDN sia estremamente efficiente e intelligente nel riempire la cache e gestire le richieste dei client durante e, cosa ancora più importante, prima di avviare il processo di riempimento della cache. Idealmente, la CDN dovrebbe essere in grado di mantenere il carico sul server di origine al minimo assoluto evitando di aggiungere troppa latenza all’intera pipeline multimediale. Ciò garantisce agli utenti finali lato client una riproduzione fluida e continua.

La nostra CDN dispone di un’ampia gamma di funzioni che ci consentono di massimizzare l’offload dell’origine e migliorare l’esperienza dell’utente finale prima, durante e dopo il completamento di un processo di riempimento della cache.

Ottimizzazioni della cache del flusso live

Come mostrato nella figura seguente, la nostra piattaforma multimediale utilizza una serie di ottimizzazioni ottimizzabili per ottenere una distribuzione rapida e affidabile per lo streaming live. Nelle seguenti sezioni, spiegheremo perché sono importanti e come funzionano.

Shield origine

Innanzitutto, Origin Shield è un ulteriore livello di caching tra gli edge server CDN e l’origine. Creiamo un’origine virtuale in uno dei POP che, a sua volta, gestisce tutte le richieste provenienti da tutte le altre posizioni POP. Quando un edge server CDN riceve una richiesta da un utente e non riesce a soddisfare la richiesta dalla cache, l’edge server recupera l’oggetto dallo shield pop anziché estrarlo direttamente dall’origine del cliente. In qualità di CDN globale, offriamo ai clienti la possibilità di assegnare un singolo POP come scudo o uno Shield POP per regione (Stati Uniti, UE, Asia, ecc.).

Origin Shield ci aiuta a proteggere il server di origine in caso di picchi di traffico e sovraffollamenti di flash. Tuttavia, potrebbe non essere sufficiente gestire il profilo di traffico univoco del live streaming.

Condivisione cache parziale

Nel live streaming, un tipico schema prevede che più client richiedano un segmento del flusso che non è ancora nella cache. Ci sono un paio di modi in cui una CDN può gestire queste richieste. In primo luogo, può inviare all’origine più richieste di riempimento della cache simultanee (una per ogni nuova richiesta del client), contribuendo a ridurre al minimo la latenza e a ottimizzare l’esperienza dell’utente finale. Una seconda opzione consiste nell’inviare una singola richiesta di riempimento della cache che serve il primo client senza indugio, ma mantiene gli altri in attesa fino al caricamento del file completo nella cache (questo metodo mira a ridurre al minimo il carico sull’origine).

Purtroppo, nessuna di queste opzioni rappresenta una soluzione particolarmente grande.

Al contrario, il nostro approccio crea un equilibrio tra queste due opzioni consentendo la condivisione di un singolo riempimento di cache già in corso tra più client che richiedono lo stesso contenuto già parzialmente nella cache. La condivisione parziale della cache consente ad altri client di eseguire il piggyback di un riempimento di cache preesistente, in modo che il contenuto video possa essere distribuito a più client contemporaneamente non appena inizia a caricarsi nella cache. Il risultato: Tempi di avvio più rapidi, latenza ridotta e carico di origine ridotto.

Tempo di attesa riempimento cache

C’è un intervallo tra quando il client richiede il file video e quando inizia a caricarlo nel POP CDN. Questo momento è molto piccolo (può accadere in pochi millisecondi), ma la folla di flash live streaming lo rende una sfida molto importante perché potrebbe essere composta da centinaia o addirittura migliaia di richieste. In questo caso, la funzione Partial cache Sharing (condivisione cache parziale) descritta sopra non sarebbe ancora stata avviata. In genere, questo è considerato un caso d’angolo, ma è più probabile che si verifichi con il live streaming a causa delle folle di flash. In questo momento critico, la CDN potrebbe sopraffare l’origine passando troppe richieste contemporaneamente.

Per evitare questo problema vengono raggruppate più richieste per lo stesso file e viene inviata una sola richiesta all’origine. Il tempo di attesa del riempimento della cache è una sala d’attesa virtuale per migliorare l’offload dell’origine e far fronte alle sovraffollazioni di flash. Quando arrivano le intestazioni di risposta HTTP per la singola richiesta e quella richiesta inizia a ricevere il file dall’origine, la cache può essere condivisa con tutti gli utenti in attesa del pool. “Il “tempo di attesa” effettivo (millisecondi) è altamente configurabile e può essere regolato in base alle specifiche capacità di origine e alle esigenze del cliente.”

Richiesta secondaria di generazione per la perdita

Quando più utenti richiedono lo stesso contenuto non memorizzato nella cache, come discusso in precedenza, c’è il rischio che il primo client si trovi su un dispositivo lento, come uno smartphone con una connessione 3G. Ciò danneggia tutti gli altri client perché normalmente una cache si riempie alla velocità con cui il client può assorbire il contenuto. Per evitare questo scenario, possiamo disaccoppiare il riempimento della cache dal primo client potenzialmente lento/non riuscito e riempire più velocemente dall’origine (alla massima velocità). Questa funzionalità è anche più affidabile perché ora il riempimento della cache continua anche se il client iniziale si disconnette o se qualcosa causa l’interruzione della connessione. Descriviamo questo comportamento come Spawn Sub-Request per la signorina. Questa funzione attiva anche un riempimento della cache per l’intero contenuto, soddisfacendo diverse richieste di intervalli di byte con un solo viaggio al server di origine. I tempi di attesa di riempimento cache e mancata richiesta secondaria di generazione si completano a vicenda durante il loro utilizzo, collaborando per accelerare lo streaming live e migliorare le metriche come l’avvio e il rebuffering dei video.

Altre ottimizzazioni CDN per lo streaming live

Archiviazione a caldo
Man mano che il pubblico di un live streaming si espande rapidamente, i server cache che in precedenza gestivano facilmente il carico di 500 spettatori sono improvvisamente sopraffatti quando il pubblico triplica o quadruplica in pochi minuti. Inoltre, gli spettatori possono essere concentrati intorno a una specifica area geografica, in genere per un evento sportivo o politico popolare. Per molte trasmissioni sportive in diretta o campionati, è probabile che la concentrazione degli spettatori sia significativamente più elevata nei mercati che circondano le squadre partecipanti.

Quando ciò accade, i segmenti del flusso live devono essere replicati rapidamente su altri server all’interno dei pop interessati per contribuire a distribuire il carico.

Hot Filing è il processo di rilevamento e replica automatici di contenuti estremamente diffusi, come segmenti di flusso live, su più server cache in un unico pop per gestire una grande domanda. Si tratta di una pratica comune tra le reti di distribuzione dei contenuti, ma la velocità con cui queste propagazioni possono avvenire in ultima analisi è importante. Questa è un’area di costante interesse per Edgio. Di recente abbiamo ridotto la velocità di replica da 5 secondi a circa 1-2 secondi. Oltre ai live streaming, possiamo anche creare altri contenuti, come ad esempio annunci pubblicitari, all’interno di un live streaming.

Capacità e larghezza di banda
La capacità e la larghezza di banda si riferiscono alla capacità aggiuntiva di tocco per soddisfare le imprevedibili esigenze dei live streaming. Proprio come non c’è sostituto per i pollici cubici per le muscle car, non c’è sostituto per la larghezza di banda con le CDN. Mettere in gioco queste e altre strategie di ottimizzazione della cache richiede che la rete disponga della capacità e della larghezza di banda necessarie per gestire lo streaming live su larga scala, bilanciando al contempo il carico di altri utenti che vi si trovano.

Attualmente, oltre il 80% dei contenuti della nostra rete è costituito da video, con una buona parte del traffico dedicato ai live streaming. Abbiamo realizzato oltre 125.000 eventi live gestiti sulla nostra rete. E con il continuo miglioramento della qualità dei contenuti e la crescente popolarità dei live streaming, siamo sulla buona strada per raggiungere 100 Tbps di capacità di rete entro la fine del 2019. La nostra rete dispone di oltre 140 POP globali e 5.000 interconnessioni o connessioni dell’ultimo miglio.

Tutto funziona insieme

Le pesanti richieste del live streaming spingeranno la tua tecnologia al limite. La distribuzione di un flusso fluido a migliaia o addirittura milioni di persone richiede configurazioni di caching speciali. La combinazione di Origin Shield, Partial cache Sharing, cache Fill Wait Time, Spawn Sub Request for Miss e Hot Filing sono potenti funzioni che possono essere personalizzate in base alla vostra infrastruttura e alle vostre esigenze di live streaming. Consentono alla nostra CDN di offrire le migliori performance possibili per gli eventi di live streaming, indipendentemente dal fatto che l’oggetto sia già nella cache o solo parzialmente nella cache, o che il riempimento della cache non sia ancora iniziato ed è ancora in sospeso, e anche nel caso in cui la richiesta sia veramente la prima richiesta del cliente per un contenuto unico.

La CDN è un componente essenziale nell’infrastruttura video live. Il suo sistema server distribuito distribuisce i contenuti agli utenti in quanto considera le posizioni geografiche e di rete e l’origine stessa per distribuire i contenuti nel modo più veloce e affidabile possibile. Tuttavia, le tecniche per ottimizzare la CDN per la delivery live differiscono notevolmente da altre applicazioni che beneficiano anche di una CDN, tra cui video on demand (VOD). Con le giuste ottimizzazioni della cache e un ampio margine di crescita, la CDN è più che all’altezza delle fluttuazioni e della variabilità inerenti allo streaming live.

La nostra CDN offre funzionalità e ottimizzazioni mature e collaudate per la distribuzione dei contenuti che riducono al minimo il carico sul server di origine e distribuiscono flussi live agli spettatori su larga scala. Le nostre ottimizzazioni per la memorizzazione nella cache dei video live, molte delle quali sono sintonizzabili per i singoli clienti, collaborano per proteggere le richieste degli spettatori dalla sovraccarica dell’infrastruttura video.