Steve Taylor (st1) wrote,
Steve Taylor

Watching and listening to the BBC from abroad

With the Super Saintees back in the SPL, there's a lot more media coverage. Unfortunately, most of this has been on the BBC, and they block access from outside the UK. This includes BBC Alba (streaming through Zattoo), Radio Scotland commentrary (real audio and/or flash), and BBC Sport website highlights (audio and video, using flash).

I'm working around these blocks using a UK VPN egress point. There are a bunch of commercial and non-commercial offerings: In my case, I'm using, which costs $5/month. The setup instructions are very straightforward from my laptop -- it's just a standard PPTP (GRE) VPN.

I did hit one hiccup: The flash based streams (including Zattoo) use a Content Delivery Network for efficiency. In other words, your streaming client is given a server IP address that is as 'close' to you as possible. Since the streaming all seems to be TCP based, this is significant.

Unfortunately, the CDN redirection is implemented using DNS. This meant that, when I was using my standard ISP's DNS settings, I was being redirected to a streaming server in San Jose, even though my IP address was in the UK. The net result was that the video streams were maxing out at around 250kbps, which isn't sufficient. By default, Windows XP continues to use your default DNS settings even when you're pumping all your Internet traffic through the VPN.

There is a fix: After connecting the VPN, I run this script which puts the VPN's DNS settings at the top of the list that Windows uses. I picked up the script from this site.

' KB311218 - Cannot Change the Binding Order for Remote Access Connections
' ========================================================================
' VBScript that places the \Device\NdisWanIp entry on the top in the 
' registry value Bind (multi-string) that is found under the key 
' HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\.
' If the entry already is at the top, no registry update is done.

Const HKLM = &H80000002

sComputer = "."   ' use "." for local computer

' Connect to WMI's StdRegProv class
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
         & sComputer & "\root\default:StdRegProv")

' Define registry location
sKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Linkage"
sValueName = "Bind"

oReg.GetMultiStringValue HKLM, sKeyPath, sValueName, arValues

arValuesNew = Array()

For i = 0 To UBound(arValues)
   If i = 0 Then
      If LCase(arValues(i)) = "\device\ndiswanip" Then
         ' Entry is already first in the list, no point in continuing
         Exit For
         ' Put NdisWanIp in the first element in the new array
         ReDim Preserve arValuesNew(0)
         arValuesNew(0) = "\Device\NdisWanIp"
      End If
   End If

   ' Continue adding the rest of the elements to the new array
   If LCase(arValues(i)) <> "\device\ndiswanip" Then
      iCountNew = UBound(arValuesNew) + 1
      ReDim Preserve arValuesNew(iCountNew)
      arValuesNew(iCountNew) = arValues(i)
   End If

' If there are elements to be found in the array, update the 
' registry value 
If UBound(arValuesNew) > -1 Then
   oReg.SetMultiStringValue HKLM, sKeyPath, sValueName, arValuesNew 
End If

  • Post a new comment


    default userpic

    Your reply will be screened

    Your IP address will be recorded