Plex 4k streamování přes planetu: Chudý člověk CDN

Mám unikátní případ použití, kdy vzdálenost mezi mým serverem Plex a většinou mých uživatelů překračuje 7000 mil. To znamenalo, že 4K streamování bylo dost špatné kvůli přetížení sítě.

Zde je blogový příspěvek, který jsem napsal o tom, jak jsem to vyřešil https://esc.sh/blog/plex-cross-continent-4k-streaming/

Doufám, že to najde nějaké využití pro někoho a jejich přátele nebo rodinu.

Velmi super a dobrá práce, směrování založené na latenci je skvělé. Ale nejsem si jistý, jestli je to CDN. Tvá data stále tahají z jedné lokality, tvého domácího serveru.

Fascinující. Vzal jsi globální směrování a řekl sakra.

Pro ty z vás, kteří by se mohli ocitnout při streamování přes vysokou latenci, ale nechtějí provádět to, co udělal OP, je tu něco, co se mi osvědčilo pro můj server při streamování přes vysokou latenci, nízkou spolehlivost připojení - povolení TCP BBR - TCP BBR - Exploring TCP congestion control | by Andree Toonk | Medium - nebackoffuje tak agresivně jako starší algoritmy při krátkodobé ztrátě paketů, což může vést k stabilnějšímu streamování.

Velmi cool. Pokud bys chtěl ještě více self-hosted, mohl bys pravděpodobně použít CoreDNS k implementaci vlastních autoritativních nameserverů, které směrují podle geografické polohy (vím, že mají plugin pro maxmind geoip db; nejsem si jistý, jestli je tam nějaký pro latenci klienta, ale možná je!).

Nepopisuji to jako doporučení pro začátečníky. Minimálně bys potřeboval další dva hostitele/VPS.

Neviděl jsem žádné kvantitativní srovnání před a po. Bylo by cool získat výsledky iperf, pokud je to možné. Smokeping nebo manuální skript pingující v průběhu dne na “cdn” vs žádné cdn, před/po načítání Plex, přepínání vpřed/vzad atd. Možná by šlo získat debug info o přehrávači Plex, například zdraví bufferu v sekundách a grafický záznam. I kvalitativní zpětná vazba od uživatelů by byla dostačující.

Předpokládám, že toto by bylo přesné i pro Jellyfin? Mohl bych získat více debug informací o přehrávači.

Díky za výpověď. Nedávno jsem uvažoval o tomto přesném problému s některými mými uživateli v Evropě. Podívám se na přesný postup, který jsi udělal.

Jedná se pouze o průvodce směrováním DNS podle regionu, že? Tvá data se stále dodávají z jediného hostitele?

Výborně napsaný článek, bravo OP.

Streamuji už roky svou rodinu po Evropě, ale 4K obsah je většinou transcoded pro rodinu, která je více než několik časových zón vzdálená. Neměli jsme žádné problémy s mými ISP a různými ISP u mé rodiny, takže buď jsme měli štěstí, nebo je latence možná problémem pro některé. Také předpokládám, že technika ISP na obou koncích hraje roli. Upgradoval jsem z DOCSIS kabelu na FTTH a moje rodina v zahraničí je na FTTH a VDSL nebo 5G mobilu. Tento léto jsem byl ohromený, když jsem pomocí Plexamp streamoval FLAC hudbu přímo do našeho rychle se pohybujícího auta v tunelu tisíce mil od domova bezchybně, nejlepším vysvětlením je buffování celých stop předem, ale i přeskočení skladeb uvnitř alba fungovalo, možná měli buď věže v horouzalním tunelu nebo něco podobného.

Fajn! Pro ještě lepší optimalizaci byste mohl nastavit VM na cachování určitých souborů. Například, byste mohl snížit počet cest zpět pro klienty z Asie cachováním statických aktiv, jako jsou js a svg na vzdálené straně.

Používám Jellyfin a mám podobné nastavení (v rámci mé sítě, ne na VPS), které cachuje statická aktiva a transkóduje.

Skvělý článek, děkuji.

Mimochodem jsem velkým fanouškem vašeho video kurzu devops od nuly, máte nějaký plán na vytvoření více videí o tom?

Dělám něco podobného s regionálními proxy na bezplatných VPS od Oracle a Cloudflare’s ‘geo-steered’ load-balancingem veřejného hostname.

Všiml jsem si, že nemají caching posterů v nginx… Nejsem si jistý, jestli to má velký dopad, ale mám vždy několik gigabajtů cachovaných dat, takže to možná pomáhá.

Brilantně napsaný článek, děkuji!

Díky za sdílení! Mám přesně stejnou situaci, ale opačnou lokalitu. Myslím, že to zkusím!

Rychle jsem prošel článek, tak možná jsem to přehlédl, ale psal jsi, že nechceš vystavovat domácí IP, přesto máš subdoménu směřující na zdroj, který je hostován na tvé domácí IP.
Nemělo by být lepší nastavit VPN jako Tailscale nebo jednoduché Wireguard mezi US VM a zdrojem?

Děkuji, skvělý článek a pěkný víkendový projekt, který si můžu přidat na seznam bez zvláštního důvodu.

Wow! Přesně to se snažím zjistit.
Místo toho se momentálně snažím, aby moje rodina přistupovala k 1080p. Tvá řešení určitě vyzkouším!

Mám to rád! Přemýšlel jsem o něčem podobném, ale myslel jsem, že by to možná nefungovalo nebo by to bylo příliš neohrabané. Jsem rád, že jste mě vyvedl na pravou míru.

To je super, hezká práce!

Podívej se na fly.io, oni zvládají multi-region za tebe a úložiště objektů stojí jen 0,02 USD za GB, přenos dat je zdarma.

Publikuji jeden docker image pro svůj web a jednoduše jim řeknu, ve kterých regionech to chci (například Virginia a Singapur) a oni se o všechno postarají. Stačí jediný DNS CNAME u mého registrátora, Cloudflare.

https://ipcheck.sh je tam hostováno, momentálně za 5 USD měsíčně za dvě regiony.

Fajn přístup. Toto není CDN jako takové, ale spíše POP (point of presence), kde můžeš směrovat na zdroj. Cloudflare, Facebook, Netflix a mnoho dalších to dělá takto, pro rychlejší směrování mezi sítěmi.

Toto lze použít pro sloučení připojení, například Facebook, který pak používá jedno připojení HTTP/2 k routování provozu přes něj do hlavního datového centra, aby snížil dobu připojení k upstream službám.

Cloudflare a Netflix používají tento model POP k doručování obsahu a přepojování na upstreamy v cloudu. Netflix to mimo jiné dělá, aby doručoval obsah spolupracovníky s poskytovateli internetu rozmístěnými ve velkém počtu racků, které ukládají obsah.