Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Nigel Bree

Pages: [1]
1
Technology & Hardware / Steam Download Tools
« on: August 05, 2013, 06:57:27 pm »
For anyone interested, during the last few days the old TelstraClear steam server had its DNS name vanish, but I was pleased to discover it is now named steam.cdn.vodafone.co.nz and unlike the Telstra server which had HTTP access firewalled, this now allows HTTP downloads.

I have just released a new version of Steam-limiter (v0.7) which supports this server and over the weekend during my testing I was able to download several games over HTTP and verified that they did not count against my metered data usage.

I haven't yet changed the recognition of this to specifically call out Vodafone as a group since absent an official announcement there's no way of knowing whether this is unmetered for the other Vodafone broadband customers, but for ex-TelstraClear customers like me it definitely is. I'll add in any other Vodafone customer ASNs as and when there's some official announcement of support for unmetered download for those customers, but in the meantime it does all appear to be working fine. Be nice if it'd been up during the Steam sale, but given that basically every other ISP in New Zealand has discontinued their Steam servers, this is a welcome development.

2
Technology & Hardware / Steam Download Tools
« on: September 06, 2012, 01:50:43 pm »
By the way, I'll just toss in the side observation that since this is standard HTTP content delivered over regular HTTP, if anyone with any networking knowledge had spent 30 seconds looking at the question then it would be obvious that all that's necessary to efficiently offer Steam downloads over HTTP unmetered to customers is a bog standard HTTP cache like Squid. Of course, to make that work you still need something like steam-limiter to force the DNS issue so that the Steam client supplies the appropriate host: header, but then your customers absolutely have to be running something like that anyway.

[ I'll also observe that the only thing that varies in these kind of download systems is the manifests - the actual file chunks in these systems tend to be immutable because that's what make the underlying push-replication systems work efficiently behind the scenes, as in the likes of Akamai. Using a Squid cache instead of Valve's normal replication can't get the benefits of an Akamai-like private non-Internet replication network (although since Valve apparently aren't using Akamai and TC seem to have an active policy of not peering with anyone, I rather doubt you get that anyway), but given that the file chunks are immutable the retention policy of the Squid cache can be set so that it would seem to be exactly the same from a cost standpoint to TC as having an official server. ]

And this is true for any ISP in NZ, of course. That would be an unutterably cheap and nasty way of doing it, and it's still pretty customer-hostile compared to the good market equilibrium when we have ISPs freely peering locally hosted content like this. But it would work, and any NZ ISP could do it in a trice of they cared. The fact that none of them have bothered speaks volumes as to how important this is to ISPs.

3
Technology & Hardware / Steam Download Tools
« on: September 05, 2012, 12:14:19 pm »
Quote from: simcore;1501386
Can you cite any evidence of this?

That other ISPs are offering this? Both WebAfrica in South Africa - at steam.wa.co.za and steam2.wa.co.za and iiNet/Internode in Australia run their own HTTP CDNs with Steam game content at steam.cdn.on.net, and I've personally done HTTP game downloads from the WebAfrica ones as part of working with WebAfrica customers to get this right since early on their IIS configuration was wrong on their unmetered side.

Quote
Everything Valve have indicated infact servers that HTTP content only comes from their official master servers

Bear in mind that there are several separate things at play here; one is the operational arrangements that the ISPs doing this have with Valve (and precisely how much of the operation of these servers is ISP-managed versus something they've stood up physically but Valve really operate) and of course that's a business detail that I haven't asked for. Secondly is the question of precisely which specific HTTP-capable servers Valve are including in their DNS results for Steam clients to use, which can be a subset of the servers and which Valve can do whatever they like with.

For all I know they may not be actively including any ISP-specific HTTP servers in their official DNS results currently; that's a policy decision which they can look after on their own terms on their own time.

However, that both WebAfrica and iiNet run HTTP-capable servers and having steam-limiter point at them to force the issue has resulted in working game downloads is an empirical fact and has been for quite some time (although there are occasional hiccups with the WebAfrica ones).

For WebAfrica specifically, I've found their operations folks fine to talk to (I did quite a bit of messaging on their forums with WARob and WAJeff when this wasn't working for their customers earlier in the year) and it may be worthwhile for you to touch base with WARob specifically and perhaps compare notes about this from an insider perspective. One of the things I certainly know from my time at Symantec was that our customers would often be given wildly different stories by whomever their POC was, and it wasn't until customers contacted me directly as the actual guy who wrote the product that we could get both them (and the Symantec staff they had been talking to and were misinforming them) all working from accurate information.

4
Technology & Hardware / Steam Download Tools
« on: August 23, 2012, 07:28:16 pm »
Quote from: Mokoshina;1498827
Is this going to be upgraded at any time telstra?


Probably not, because this is a classic kind of coordination problem between the NZ ISPs.

In other markets (South Africa and Australia) where local Steam servers are popular, the majority of market players have steam servers which are unfiltered, and thus can and do serve HTTP content for the new CDN while having unmetering arrangements for their own customers  - and since almost all the ISPs in those markets run unfiltered, there's no reason why any new server anyone stands up in that market needs to be filtered either. That's the good market equilibrium.

Now, we don't know "officially" why Valve have probably decided to require unfiltered servers, but if you look at how things work technically we can observe that in their HTTP CDN, the server selection is done almost completely by DNS lookup - including filtered servers in the result sets from their DNS servers could cause serious problems for Valve's customers if they return a filtered server to someone who isn't going to be able to access it.

[ There is a separate mechanism in their HTTP CDN that could allow filtered servers to be used rotation, but it's going to be tedious for Valve to use it for this and Valve probably have no real interest in spending more of their money and staff time on something as spectacularly unnecessary as allowing ISPs to play these kind of childish games. ]

Here in NZ part of the use of filtered servers is (like the generally anti-customer approach taken by local ISPs to peering arrangements) a way of ensuring that the very limited resources that ISPs want to devote to hosting a server are delivered only to their customers, without yielding any benefit the customers of other ISPs. That's a counterproductive thing to worry about, and of course once unfiltered servers start appearing (i.e. someone takes on the externality of supplying other ISPs customers) then the natural game-theoretic equilibrium is for everyone to run unfiltered servers, at which point the externality becomes pretty much a non-issue. But in the meantime, because of that externality, the first servers to appear were filtered and thus we've ended up with that as a market equilibrium.

The fact we face is that the NZ ISPs have all independently voted for a beggar-thy-neighbour market equilibrium where everyone runs filtered servers so everyone's customers suffer. Unfortunately that's a stable equilibrium, so unless a provider brave enough to break the current dysfunctional market state comes along we're probably all out of luck no matter what ISP we're with.

5
Technology & Hardware / Steam Download Tools
« on: December 23, 2011, 10:54:18 pm »
I can't speak for anyone else but I've definitely blocked HTTP downloads successfully and I regularly re-test all the new versions I make to ensure that it does on the games I have that use the HTTP download system exclusively (Evil Genius, Mass Effect 2)  - the tool definitely does block Steam from HTTP-downloading those games here, and definitely redirects my non-HTTP downloads to TelstraClear exclusively because I depend on it myself.

It's worth pointing out that what steam-limiter does for HTTP is to block DNS lookups; if you've already made the Steam client start an HTTP download, it'll have internally cached those DNS results and won't ask for them again, and so they'll get through. Basically, steam-limiter works best when it's run all the time (which should be tolerable given how tiny its memory load is, especially compared to Steam itself), or at least is running before Steam loads (for the HTTP side of things, anyway).

If the limiter doesn't work *at all* for you, then there'll be a reason why, and I'm happy to work with you to try and diagnose it (but here on these forums probably isn't the place). However, I'd start with making sure you have the latest version (v0.5) installed and then per the "How it works" documentation, using DbgView to see whether you get the "filter loaded", "filter unloaded" messages and the like.

For instance, here's some DbgView output I just captured, running limiter v0.5 blocking a post 27030 download:
Code: [Select]
[9572] wlgwpstmcon01.telstraclear.co.nz=203.167.129.4
[9572] SteamFilter hook attached
[9572] CAPIJobRequestUserStats - Server response failed 2
[9572] Connect redirected
[9572] Connect redirected
[9572] Connect redirected
[9572] Connect redirected
[9572] ExecCommandLine: ""C:\Program Files\Steam\steam.exe" steam://open/downloads "
[9572] ExecSteamURL: "steam://open/downloads"
[9572] CAPIJobRequestUserStats - Server response failed 2


Here's some similar output (edited down a lot, since Steam is quite chatty about all your game licenses and such when starting) from me starting Steam and doing an HTTP download:
Code: [Select]
[12632] appdatacache.cpp (451) : Assertion Failed: gameID == k_uAppIdInvalid || gameID == m_unAppID
[12632] appdatacache.cpp (451) : Assertion Failed: gameID == k_uAppIdInvalid || gameID == m_unAppID
[12632] C:\Program Files\Steam\crashhandler.dll
[12632] C:\Program Files\Steam\steamerrorreporter.exe
[12632] C:\Program Files\Steam\steamerrorreporter.exe
[12632] Starting minidump reporter process
[12632] Failed spawning steam error reporter process.
[12632] appdatacache.cpp (451) : Assertion Failed: gameID == k_uAppIdInvalid || gameID == m_unAppID
[12632] appdatacache.cpp (451) : Assertion Failed: gameID == k_uAppIdInvalid || gameID == m_unAppID
[12632] CHTTPRequestCache took 175 milliseconds to initialize
[12632] wlgwpstmcon01.telstraclear.co.nz=203.167.129.4
[12632] SteamFilter hook attached
[12632] Connect redirected
[...lots of "license added" lines elided here...]
[12632] Error: texture file 'graphics\support_flag_left' does not exist or is invalid
[12632] Error: texture file 'graphics\support_flag_right' does not exist or is invalid
[12632] Error: texture file 'graphics\support_flag_top' does not exist or is invalid
[12632] Error: texture file 'graphics\support_flag_bottom' does not exist or is invalid
[12632] ExecCommandLine: ""C:\Program Files\Steam\Steam.exe" "
[12632] CAPIJobRequestUserStats - Server response failed 2
[12632] System startup time: 11.60 seconds
[12632] Error: texture file 'public\steam_cloudsync' does not exist or is invalid
[12632] CAPIJobRequestUserStats - Server response failed 2
[12632] gethostbyname refused
[12632] gethostbyname refused
[12632] gethostbyname refused
[12632] gethostbyname refused


Basically, the above traces show the hook DLL injecting into Steam and initializing itself, and the "connect redirected" and "gethostbyname refused" messages show it doing its thing to fiddle with Windows Sockets underneath Steam. In the case of the Mass Effect 2 download, because it can't contact any of the HTTP content servers, Steam actually fails the download during the "preparing files for install" phase. If you go through a similar process with DbgView and Steam Limiter (preferably the latest version, v0.5 at the moment) running, start Steam, and don't see text like the above then something's likely up and if you contact me directly via gmail then we can look into this further.

6
Technology & Hardware / Steam Download Tools
« on: November 27, 2011, 08:01:13 pm »
I don't believe the reason for your problem was Steam using HTTP; TcpView was showing that the connection is being made on port 27030, which is the classic steam content server protocol, whereas HTTP connections would show either as plain http (for port 80) in TcpView, or as connections to localhost on some other port depending on any personal firewall software being used (some of which redirects all HTTP traffic to a special proxy process to check it for safety).

However, I'm glad to hear the limiter application does the trick for you; "little" and "just works" were my primary goals in making it.

Note that I currently block HTTP downloads from the main Steam servers, but that's a stopgap while the TC steam server doesn't have port 80 open. I'll have to revise the app when that happens and I can observe the Steam client's actual behaviour in action. Until then I can't tell just what kind of encouragement it will *really* need to avoid using different http servers. It may be that the best approach once the TC server is available is to return a fake DNS result for the main Steam servers that points at the TC server, but until that server is really up it's better to pretend to the Steam client that the main http servers don't exist.

7
Technology & Hardware / Steam Download Tools
« on: November 11, 2011, 06:40:25 pm »
Just to add to this, it seems that Steam is fairly fixed in its notion of whether a product uses HTTP to download or the classic Steam CDN; it appears to be an either-or kinda deal for now.

I've found one game I own on my list which is quite old but appears to be wired to use the newer HTTP CDN, which is Evil Genius. This goes through the newer protocol where it starts the download using a completely different protocol sequence, starting with an HTTP query to Steam that returns a JSON document containing the list of new HTTP servers to use instead of the classic CDN.

I've added some support for these to my filter app; it's a little crude but it works for now. Basically, if the HTTP download is being employed the returned JSON-format list of servers refers to them by name, whereas the classic CDN protocol uses raw binary IP addresses. In addition, the Steam servers in this separate HTTP have DNS names of the form contentserver1.steampowered.com, contentserver2.steampowered.com and the like.

This means that the Steam client has to do an additional DNS query to resolve those new-style content server names to IP addresses before initiating the HTTP download, and so I can filter out the HTTP-mode downloads entirely by blocking DNS resolution of names with that particular pattern; if and when the initial JSON query which starts the product download includes server names from Telstra's CDN then they should come down fine, but since I've been using Evil Genius as a test (and that's a really really old game) it's clear that for now Steam isn't reporting the existence of other servers via its JSON responses and until that happens, it's all or nothing.

8
Technology & Hardware / Steam Download Tools
« on: October 19, 2011, 03:24:32 pm »
Last week when TelstraClear sent out the e-mail announce for this, since I have a gaming machine still running XP I quickly threw together a tool for my own use to limit Steam's content server connections. It's available at http://code.google.com/p/steam-limiter/ - like the other tools mentioned above it won't attempt to filter http downloads, but for anything on port 27030 it will limit Steam's connections to a specific server with no leakage by hooking into Windows Sockets so it can do the port-specific filtering and redirect connections to other servers to the unmetered one.

Given that it's at least in the "Works on My Machine" state (or two machines, on XP and one running Win7 32-bit) it's at least there if anyone wants to give it a try.

Pages: [1]