Hello Inaki,
On 06/14/2009 02:17 AM, Iñaki Baz Castillo wrote:
Hi, as part of my personal battle against SIP ALG
routers, I've created
an utility to detect such routers:
http://dev.sipdoc.net/wiki/sip-stuff/SIP-ALG-Detector
It has two parts: client and server:
Basically, the client node running into the LAN sends an INVITE to the
server node (running in a host with public IP).
The request could be modified by the LAN router if SIP ALG is enabled.
The server encodes the received request in Base64 and appends it to the
SIP response.
The client receives the response, decodes the body and gets the request
as it arrived to the server.
Then it creates a diff between the original request and the the request
the server node received. These differences are displayed in the screen.
Both, UDP and TCP, tests are performed.
The client node is coded in Ruby and should work in any operating system
(if Ruby is installed).
The server node is also coded in Ruby.
For those interested in try it, I have a server node running in my
personal server:
87.98.230.161:5060
You can test the client against my server.
thanks for it, sounds very useful. What I see missing here is the case
when the alg screws the routing so the reply does not get back to phone
(e.g., via replaced on the way out but not changed back for reply), so
it might be good to have like an ack when the reply was received by the UA.
Or maybe would be better to do the other way. The client sends the
request encoded to the server, the server unecodes it, does the diff and
decides whether it is a possible alg in the middle.
I think it is very useful, as the server would also know alg presence
state :-).
Thanks Daniel, I'll think about it in order to improve it.
--
Iñaki Baz Castillo <ibc(a)aliax.net>