▶ Video e streaming

CDN per il video: come si distribuiscono i segmenti in streaming

Perché il video richiede una CDN, come funzionano cache dei segmenti, origin shield e scadenze di manifest e segmenti, e come ridurre costi e buffering.

Il video è di gran lunga il tipo di contenuto più pesante che passa su Internet. Servirlo da un unico server funziona per poche persone alla volta; con un pubblico più ampio, la banda in uscita del server si satura, la distanza dagli spettatori aumenta i tempi di risposta e il costo cresce rapidamente. Le CDN (Content Delivery Network) risolvono il problema replicando i contenuti su server distribuiti geograficamente, vicini agli utenti. Con lo streaming adattivo, che si basa su file HTTP normali, una CDN generica è perfettamente adatta al video, purché sia configurata con criterio.

Come funziona la distribuzione

La catena tipica è composta da tre livelli:

  1. origine (origin): il server o lo spazio di archiviazione dove risiedono manifest e segmenti;
  2. livelli intermedi: nodi della CDN che raccolgono le richieste di più nodi periferici;
  3. nodi periferici (edge): i server vicini agli spettatori, che rispondono direttamente.

Quando uno spettatore chiede un segmento, il nodo periferico controlla se ce l'ha in cache. Se sì, lo consegna subito (cache hit). Se no (cache miss), lo chiede al livello superiore o all'origine, lo consegna e lo conserva per le richieste successive.

Perché lo streaming adattivo si presta alla cache

Con HLS e DASH tutti gli spettatori che guardano lo stesso contenuto alla stessa qualità chiedono gli stessi file. Il primo spettatore di una zona «riscalda» la cache, e i successivi sono serviti dal nodo vicino. Più il pubblico è concentrato sugli stessi contenuti, più alto è il rapporto di cache hit, e più bassi sono carico e costi sull'origine.

Manifest e segmenti: regole di cache diverse

È l'aspetto più importante della configurazione.

Tipo di file Video su richiesta Diretta
segmenti cache lunga, non cambiano mai cache lunga, non cambiano una volta creati
manifest cache lunga o media cache brevissima, cambiano di continuo

In una diretta, la playlist viene aggiornata ogni volta che si aggiunge un segmento. Se la CDN la conserva troppo a lungo, gli spettatori ricevono una versione vecchia, il lettore non trova segmenti nuovi e la diretta si blocca o accumula ritardo. In genere la durata in cache del manifest di una diretta dovrebbe essere inferiore alla durata di un segmento.

Le regole si comunicano con l'intestazione HTTP Cache-Control. Per esempio, per i segmenti:

Cache-Control: public, max-age=31536000, immutable

e per il manifest di una diretta un valore di pochi secondi o meno.

Origin shield

Se centinaia di nodi periferici chiedono contemporaneamente lo stesso segmento non ancora in cache, l'origine riceve centinaia di richieste identiche. Un origin shield è un livello intermedio designato attraverso cui passano tutte le richieste verso l'origine: solo lui contatta l'origine, gli altri nodi chiedono a lui. Riduce drasticamente il carico, soprattutto all'inizio di una diretta seguita da molte persone.

Errori di configurazione frequenti

  • Parametri nell'indirizzo che spezzano la cache. Se ogni richiesta contiene un identificativo dell'utente nella query string e la CDN lo considera parte della chiave di cache, ogni spettatore genera un cache miss. La chiave di cache va configurata per ignorare i parametri non rilevanti.
  • Compressione applicata ai segmenti. I segmenti video sono già compressi; applicare gzip o simili spreca risorse. La compressione ha senso solo per i manifest testuali.
  • CORS non configurato. I lettori nel browser scaricano manifest e segmenti con richieste JavaScript; senza intestazioni CORS corrette, il video non parte se è ospitato su un dominio diverso dalla pagina.
  • Richieste di intervalli di byte non supportate. Per il download progressivo e per alcuni formati, il server e la CDN devono gestire le richieste Range.

Proteggere i contenuti sulla CDN

Per contenuti riservati si usano URL firmati o token con scadenza: l'indirizzo contiene una firma che la CDN verifica prima di rispondere. Il link condiviso smette di funzionare dopo poco tempo. La verifica deve avvenire sul nodo periferico, in modo che la cache continui a funzionare.

Misurare

Gli indicatori utili da tenere sotto controllo sono:

  • rapporto di cache hit, idealmente alto per i contenuti popolari;
  • tempo al primo byte dei segmenti, che incide sull'avvio e sui cambi di qualità;
  • errori 4xx e 5xx, segno di configurazioni o origine in difficoltà;
  • banda dall'origine, che dovrebbe essere una piccola frazione di quella servita agli utenti.

Più CDN

I servizi di grandi dimensioni usano spesso più CDN contemporaneamente, scegliendo per ogni spettatore quella più performante nella sua zona o passando a un'altra in caso di problemi. Per farlo i contenuti devono essere accessibili allo stesso modo da tutte, e il lettore o un servizio di instradamento deve decidere quale usare.

In sintesi

  • Una CDN avvicina i contenuti agli spettatori e scarica l'origine.
  • Lo streaming adattivo si presta bene alla cache perché tutti chiedono gli stessi file.
  • I segmenti possono restare in cache a lungo; i manifest delle dirette pochissimo.
  • Un origin shield evita valanghe di richieste verso l'origine.
  • Configurate chiave di cache, CORS e URL firmati con attenzione.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche