Sunday, January 17, 2010

Cheaper Internet TV

A while ago, I did some math to show how streaming TV through a US proxy on Amazon was cheaper than torrenting the show, and how it was even competitive with Sky TV if you watches less than 12 hours of TV a week.

That was if you used Amazon as your US proxy. With Amazon, you are paying for both traffic and time, which skews the price considerably. If you already have a US server (several of my friends do) then you already have your US proxy with a huge bundle of data. However, the rest of us need another, easier way.

Of course, the US being the US, and the Internet being the Internet, there is already several groups offering a range of methods, starting from free and getting more expensive from there.

First off, some math:

From last time, we saw the price for Amazon was:

Amazon Cost:
  Instance: US$0.1*(NZ$1/USD$0.67) = NZ$0.15
  Traffic (based on 1 episode of Eureka)
  (304MB/43min)*(60min/hr)*(1GB/1024MB)*(USD$0.27/1GB)*(NZD$1/USD$0.67) = NZ$0.17
  Total   : NZ$0.32/hr
NZ Bandwidth cost:
  (304MB/43min)*(60min/hr)*(1GB/1024MB)*(NZ$1.50/GB) = NZ$0.62/hr
Total cost per hour: NZ$0.94/hr

If we can reduce the Amazon cost, we can substantially reduce our total cost.

My goal is to get the "Amazon" portion of the charge down to 8c/day. That would make the price for a Hulu stream into:

NZ$0.62/hr + $0.08/day

So, the break even point against the Sky basic plan would become:

($11.74 - 0.08*7)/0.62 = 18 hours/week.

Not quite to the 3hrs/day that I have previously boasted about, but close. Within spitting distance, even. If you can get bandwidth for less than NZ$1.50/GB, the break even point will change dramatically. Given that the Southern Cross prices have just dropped by 50%, I hope to see some end-user price changes soon.

So, I went looking for a VPN provider. First I tried free, Hotspot Shield from AnchroFree. I quickly gave up on them. They don't have enough bandwidth, and they seem to be specifically targetted by Hulu.

I thought about using TOR, but quickly discarded that one. It would be just plain rude.

I looked at using the free proxy add-on for Firefox. However, they just aren't reliable enough for the next stage - a set top box.

So, I went looking at commercial offerings. I tried StrongVPN.com, WiTopia.net and HideMyNet.com.

VPN is still pretty new and arcane. There is a lot of magic, and many things that can go wrong. I found it very frustrating to get properly configured, and ultimately had to rely on the support teams at a couple of the providers to get configured. Thankfully, both StrongVPN.com and WiTopia.net offered good support. HideMyNet (and others) were not so good. I had other issues too. Sometimes it felt odd giving these companies my credit card details. So, I only went with ones that used PayPal.

Notes:

  1. Avoid PPTP. It's generally provided by the OS, and is flakey and hard to get configured properly. It may be cheaper, but it's not really worth it.
  2. Go with an OpenVPN based solution. This is available on Windows, OS X and Linux. The benefit is that it is it's own tool, separate from the network stack and therefore a lot easier to diagnose.
  3. CPU, CPU, CPU. My 2.4Ghz AMD single core Athlon 3800+ wasn't fast enough to stream more than 700kbps reliably. My 2.5Ghz Core2Duo is.

StrongVPN.com offers points of presence all over the world. However, they are moderately expensive at US$85/yr, and charge money to change PoPs (Point of Presence). In other words, while they do have PoPs in the UK (for access to BBC iPlayer or Spotify), if you want to switch between UK/US PoPs, they charge money. It really sounds like they should fix their provisioning and access control systems to me.

WiTopia.net is the company that I've ultimately gone with. They offer instant switching between VPN PoPs, UK and US PoPs and a low annual fee of US$60. Even better, they have US PoPs close to the Southern Cross US interconnect points in LA and San Francisco.

Since I've gone with WiTopia.net, Hulu came along and banned them from accessing their streams. However, a quick support message and I was on another PoP, which wasn't filtered (yet). However, I've also got access to BBC's iPlayer and Pandora, which kicks ass.

I just wish NetFlix was supported on Linux, then I would sign up for a NetFlix streaming account.

The final cost analysis works out as:

WiTopia.net Cost:
  Cost: NZ$80/yr
NZ Bandwidth cost:
  (304MB/43min)*(60min/hr)*(1GB/1024MB)*(NZ$1.50/GB) = NZ$0.62/hr

Break-Even point vs Sky: 
  ($11.74 - $80/365)/0.69 = 17 hours.

In other words, if you watch less than 17 hours of Sky specific TV per day (it isn't available on FreeView), you are better off paying for a proxy account and obtaining the content from the US or the UK.

5 comments:

dylanparker said...

Hey. Thanks for your posts on this topic. Not a lot of people providing such detailed info about their proxy setup.

I live in Canada and deal with many of the same limitations that you do. The latest setup I have works well but is fragile, expensive and tedious to tweak. (Good thing I'm not a salesman, eh?)

I have a server in the US I pay $15/month for and I have a squid proxy setup there to handle transparent proxy traffic. I lock it down to only allow proxying of traffic to/from my home network (and friends if they ask nicely).

I've updated the firmware on my home router (WRT54G) and installed DD-WRT which offers lots of great features. One feature is iptables support so I can do packet-level filtering/manipulation of traffic.

I have it configured to redirect all traffic destined for Pandora, Hulu, ABC, CBS and NetFlix OnDemand to be transparently proxied through my US proxy server and on to its destination. All of these services think I am in the US.

I opted for this router-based solution in the end because I didn't want to have to tweak all computers in the house (plus my set-top box running Boxee/Plex). Any computer on my network accessing, say, pandora.com (including my SONOS) is properly channeled through the US to avoid geo-checks. It's pretty awesome really.

The downside -- especially with HULU -- is they change their stream IPs all the time and so I occassionally need to hunt down the latest IP address set and reconfigure my router. I haven't figured out a way of doing this automatically yet. Most sites (eg Pandora) don't change their IP range that often if ever.

Good luck on your content hunt.

Jason Pollock said...

Nice idea with the router based access. I guess you're doing a transparent redirect to the squid proxy for those address ranges? Very nice idea. I hadn't thought of that... I've been limiting my network changes to just the set-top box (was Boxee, back to XBMC now).

The iptables file sounds like it is something that could easily be put into CVS and published for public use.

Hrm. Something to think about.

dylanparker said...

Agreed that posting the iptables address range would be useful but I'm wary of the maintenance nightmare in keeping it up to date. I actually don't use HULU that much so would likely let it slip out of date more often than not.

Ideally there would be a way to automate the setup rather than manually adding / removing addresses each time.

Hey on Twitter as well.

senseless said...

Jason,

I would like to ask you to come back and give hidemynet.com another try. Since you had been a customer.. we have revamped our billing system and now are offering PPTP, L2TP, and OpenVPN inclusive in our 5$ fee. Our OpenVPN service runs over port 443, so its usable from anywhere and typically moderately fast. If I remember correctly you were having problems from your CA ISP limiting PPTP connections? Well, this is an issue no longer with our service. We also fixed the issue you were having with nameservers.

as always, we provide a 7 day refund on new accounts. It appears you used this (IIRC) previously to get a refund when our PPTP service didn't work out for you. So, it won't hurt to try.

RyanN said...

Turns out you don't actually need a physical router to watch Hulu, you just need to spoof the X-Forwarded-For header using the Modify Headers Firefox add-on. In conjunction with port 1935 blocking. Works for now. Your older posts were the inspiration for a blog post I just wrote on the subject.