Voice over IP
Overview:
After seeing a Voice over IP phone advertised relatively cheaply I decided to investigate the underlying protocols and problems such as when IP Phones are behind NAT gateways. I found a lot of interesting information on protocols such as the STUN protocol for identifying the type of NAT used, SIP for session initiation and H323. Some useful links can be found below. One of the most interesting is setting up a Linux PBX server called asterisk.
IP Phones:
voiptalk.org - also includes other hardware including analogue line cards and PSTN gateways services
Ebuyer SIP VOIP IP PHONE
SIP IP Phones
Xten Soft IP Phone
PocketPC SIP Phone a
Microsoft Portrait - PocketPC SIP Phone
Protocols:
STUN RFC 3489
SIP RFC 2543
NAT Classification Results using STUN - desriptions of NATs and test results of various routers, read NAT Traversal in SIP first!
Session Initiation Tutorial - very useful, clear diagrams
NAT Traversal in SIP - very useful, clear diagrams and explanations
Hardware:
SIP compatible routers
How SIP router handles SIP - very useful (basically registrar and proxy within router)
Review of
Intertex IX66 AirSIP
Software:
Open Source VOIP Software - tons of stuff!
Asterisk - Linux PBX
OpenH323 Project - includes a MCU (conference server) for multipoint video conferencing!
VoIP bookmarks from Klaus Darilion - Many software tools
STUN server and client - can use stun.xten.net or
larry.gloo.net as STUN servers to test your own connection
Guides:
The VOIP Wiki - a reference guide to all things VOIP lots of info on setting up Asterisk
VOIP Wiki
Services:
Voip.org.uk - Free trial to PSTN!
TelAppliant
myPhoneBooth.com - call 1-800 numbers free uses - xten web client! good to test voice over ip!
News:
SIP pundit fires broadside at Skype - Interesting article about SIP vs Skype
US groups lobby over VoIP regulation
Skype:
According to skype's technical page it says:
"Non-firewalled clients and clients on publicly routable IP addresses are able to help NAT'ed nodes to communicate by routing calls. This allows two clients who otherwise would not be able to communicate to speak with each other. Because the calls are encrypted end-to-end, proxies present no security or privacy risk. "
I assume this means the voice data is passed through a client on a public routed IP, however it also says here that "On average Skype uses 0-0.5 kilobytes/sec while idle. This is used mainly for buddy presence updates." which suggests other peoples voice data is not passed through other clients.
I posted a message relating to this query on their forum.
If clients are behind NAT at both ends I thought about whether it was possible for a machine on a public routed IP to be used only to setup the call rather than relaying all the data. At first I thought it may be possible by getting the client one to make a connection to the public machine then for the public machine to tell client two the port it is connected to client one on. Client two could then try to make a direct connection to client one on the given port by spoofing their source address to be the public machine. This would make the other client one's NAT gateway think data was arriving from the public machine and hence it would be router to the client behind the NAT. Obviously for data to be returned another connection like this would have to be initiated the other way round, otherwise data would be sent back to the public machine when it should really be going to the other client. However I doubt this type of spoofing is possible since the NAT gateway will change the source IP to be that of it's public IP.
Forget the above, I've just read this and it has all become clear! Basically it depends on the type of NAT used whether a connection can be established if both ends are behind NAT, a connection can be established with the help of a machine on the public LAN unless the NAT is symmetric.
|