Want to run some experiments into possible setups for efficiently delivering streaming video via Tor Hidden Services. For what I've got in mind, it needs to be ABR and I hate smooth streaming so we'll go with HLS.
The aim is to build a tiered system with a single origin.
- node 1 - nginx caching reverse proxy - Hidden service 1
- node 2 - nginx caching reverse proxy - Hidden service 1
- node 3 - Nginx caching reverse proxy - Hidden service 2
-- origin - Hidden service 3
Where both node1 and node2 advertise the same hidden service. Essentially using the descriptor publishing race condition to build the edge of a small tiered CDN.
Hidden service 2 then proxies onto the origin. The idea being that it should be possible to easily introduce an additional cache at that level of the heirachy to further protect the origin, again, by using the race condition.
Once setup, need to test against both VoD and Linear content.
This is, in part, an expansion of MISC-2
in that CDN like behaviour is already being used for some static content on http://6zdgh5a5e6zpchdz.onion/
The ultimate aim isn't actually to deliver video, but to gauge the feasibility of building an efficient, fully Tor based CDN to aid in scalability and fault resistance (without needing to maintain multiple origins). I've specifically chosen streaming video as a starting point because delivery is time sensitive and issues are easily observable.
The aim is to start with full HD video at 60fps and then once delivery of that has been improved, work down to delivering something more realistic (so, either 720p at 24fps or 480p at 24fps and small static files, e.g. images/CSS).