SIP es un protocolo del nivel de aplicación y por tanto debe usar un protocolo de transporte en su capa de nivel inferior. Los más conocidos en el mundo Internet son TCP y UDP.
TCP es un protocolo de transporte orientado a conexión y UDP es un protocolo de transporte no orientado a conexión.
Según el último draft de SIP (RFC 3261 en su punto 18 http://www.ietf.org/rfc/rfc3261.txt) se dice:
All SIP elements MUST implement UDP and TCP.SIP elements MAY
implement other protocols.
Making TCP mandatory for the UA is a substantial change from RFC
2543. It has arisen out of the need to handle larger messages,
which MUST use TCP, as discussed below.Thus, even if an element
never sends large messages, it may receive one and needs to be
able to handle them.
Es decir cualquier dispositivo SIP debiera obligatoriamente poder trabajar con los dos protocolos.
En la actualidad esto no es posible y si bien el 100 % de ellos trabajan actualmente con UDP sólo el 82 % son capaces de hacerlo sobre TCP (datos de Abril de 2007- Conferencia SIPit 20 http://www1.ietf.org/mail-archive/web/sip/current/msg18959.html)
¿Pero que ventajas y desventajas hay entre utilizar SIP sobre TCP o sobre UDP cuando sea posible?
SIP sobre UDP:
UDP es un protocolo más simple y sencillo y no está orientado a conexión. Es más tolerante a problemas de línea y utiliza por lo general menos ancho de banda. Produce menos retrasos y delays y los bufferes a utilizar en los dispositivos son menores. Es díficil implentar medidas de seguridad sobre UDP y por tanto es más vulnerable a ataques. Además presenta más problemas para atravesar routers que usen NAT. En un principio todos los fabricantes de software y hardware SIP implementaron SIP sobre UDP.
SIP sobre TCP:
TCP es un protocolo más robusto y complicado ya que está orientado a conexión. Es menos tolerante a problemas de línea pero permite una rápida retransmisión cuando se detecta un fallo. Además permite gestionar mejor el control de la congestión y la fragmentación de paquetes. Permite gestionar paquetes de tamaño más elevado y por ello actualmente en algunos casos es imperioso su uso. Permite implentar medidas de seguridad para evitar ataques a las transmisiones. (seguridad frente a spoofing). No todos los dispositivos SIP lo implementan aunque cada día el % de los equipos que lo implementan es mayor.
Mi recomendación es usar SIP sobre TCP siempre que sea posible y no tengamos problemas muy especificos (Ej: ancho de banda limitado) o la necesidad de retrasos extremadamente pequeños en los establecimientos (que no suele ser el caso). El problema es que aún no todos los dispositivos hardware y software lo implementan aunque en un futuro muy cercano seguro que lo harán.
un articulo muy interesanto me parece genial que alguien como uds nos pueda llenar de conocimiento, un aplauso , gracias