i think a simple ethereal sniff of whats going on between the two machines would expose what’s being done, i’m sure its nothing that complex.. i just havent had the time to look at it. Maybe later today I will sniff a bw test and see what we can find.
True. I’ve written a program to test bandwidth before.
I would rather make have their code or a library as reference for the sake of compatibility.
But if necessary we could reverse engineer it.
Here is what I would like to see this used for:
Have a client service which could on demand do a quick send/receive speed check to a MT box on the network. Maybe also do a very brief test every hour or few hours on pseudo random interval and keep a local databse of the results. Or interface with a web service to have a central server keep track.
The service on Windows would be represented on the front end by a task bar icon allowing the user to do a quick check of speed themselves within the network.
We have a partner who makes LocationFree TV that is streaming across the internet to a clients tv monitor - they want to check the bandwidth available for upstream before a customer signs up. I’d love to use MT as and endpoint for tests to be run against.
Anyhow, I think the only way is to reverse engineer the protocol / handshake.
Below is the initial handshake a windows client sending btest authentication to MT. . . looks like its using some two way encryption on the password. the user is #admin# and the password was PASSWORD. It’s not likely to do authenticated sessions, but maybe something without authentication might still work. MT would be appreciated even that much more if they would send the protocol spec for us. Although, being closed source does keep security tighter ( I think ) so i understand if they don’t want to.
Hmm… I guess we could make a go without the encryption and set the end MT to no password or no user authentication. It really would help if they would release a library at the least. That way they can keep their stuff to themselves, but allow us to use the mechanism.
Have you done a trace to figure out the handshake between the client and server during a test, after the authentication is complete?
Its a little hard to determine easily, but I did find pieces of the handshake. It looks like there is always a TCP connection for control., even if using UDP transport for data traffic. There are 12 byte data fields that tell the server what to do - possibly more. The client requests a test and the server seems to just spit it back with garbage data that you can time. Hopefully you don’t accidentally send it a request to packet you for hours : )
First 2 bytes tell the server size the expected packet size.
Second 2 bytes are unknown at this time.
Next 4 bytes tell the server what speed.
Last 4 bytes unknown at this time.
I don’t think it’ll be terribly hard to create something without authentication ability, but yes, it would be nice so it’s not abused. I’ll look into it more this evening.