CUCS SIP Testing

http://www1.cs.columbia.edu/sip/sipit/classification.html (external link)

Classification for SIP interoperability test event

Implementations of SIP UAs and proxies are classified into basic, intermediate and advanced. An implementation satisfies a level if it satisfies 80% of the criteria listed below.


User Agent

basic

send INVITE over UDP
receive INVITE over UDP
generate ACK properly
can accept or reject calls
SDP with single m and c line, one codec
To, From, Call-ID, CSeq, Via, Content-Length, Content-Type headers handled properly
generate tags in To field
send basic call termination with BYE via UDP
receive BYE over UDP
compact form for headers
reject unknown request methods with 501 response
send/receive RTP media, possibly without RTCP

intermediate

support TCP for all messages
Require, Proxy-Require
handle packet loss for INVITE and BYE (with exponential backoff)
pays attention to Contact header in INVITE and in 2xx response to INVITE (i.e., goes directly to peer for following requests)
process CANCEL for INVITE
Authentication for registrations: basic
Authentication for registrations: digest
allow redirection to web pages or email
receive text or HTML in 3xx or 4xx responses
Accept headers without SDP
DNS SRV records
non-gateways: register with periodic refresh to unicast address, paying attention to Expires header in REGISTER response
understands redirection
multiple codecs listed in SDP m line, finds common one with peer
multiple SDP m= lines handled correctly
unknown SDP m= media types handled correctly (i.e., rejected with port 0)
Domain name as well as IP address accepted in SDP c= line
generate RTCP packets
respond to OPTIONS request
allows non-SIP URLs in REGISTER
copy Record-Route from response into Route of request and route appropriately
checks equality of action parameters on REGISTER
can retrieve current registrations
can clear registrations with Contact: * and Expires: 0

advanced

automatically tries redirections (recursing UA)
generate multicast REGISTER
re-INVITE: suspending a stream
re-INVITE: resuming a stream
re-INVITE: closing single stream
re-INVITE: changing codecs
re-INVITE: add a stream
re-INVITE: change media address to different address or port (mobility)
send text or HTML in 3xx and 4xx responses
Expires for INVITE
third party registration
generate tel: URL request and proxy them to designated server
process MIME multipart responses

beyond RFC2543bis

INFO method
TRANSFER method
183 response
caller preferences
tones (DTMF) in RTP

Proxy

basic

receive unicast REGISTER over UDP
receive unicast REGISTER over TCP
process INVITE and BYE over UDP
process INVITE and BYE over TCP
can act as local outbound proxy (i.e., forward to URL in request URI when domain is not its own)
generate ACK properly
compact form for headers
new request methods (proxied or redirected)

intermediate

UDP to TCP conversion
TCP to UDP conversion
DNS SRV records
Authentication for registrations: basic
Authentication for registrations: digest
forking proxies: parallel
can receive and propagate CANCEL
obeys Route header
generates CANCEL on 200 OK when forking
forwards all provisional responses upstream
understands Proxy-Require
receive multicast REGISTER
supports non-SIP URLs in REGISTER

advanced

forking proxies: sequential
forking proxies with multiple 200 OK responses
recursion on forking (fork response of 3xx triggers new branch)
legal fork looping (with different request URIs)
forking for non-INVITE
basic authentication for INVITE
digest authentication for INVITE
can detect loops
can insert Record-Route
drops request when Max-Forwards is zero
obeys Expires in INVITE
third party registration
registration proxying
process multicast REGISTER
multicast INVITE
received parameter in Via field
can always redirect (configurable)
IPsec support
TLS support
handling request merging due to an upstream forking proxy

beyond RFC2543bis

can receive CPL in REGISTER
tel: URL handling (can send a request somewhere when one arrives with a tel URL in request URI)
INFO method
TRANSFER method
caller preferences

UA tests

Features to test and use in picking test partners:

* UDP
* TCP
* basic authorization
* digest authorization
* basic proxy authorization
* digest proxy authorization
* receive CANCEL
* send CANCEL if outgoing call hung up before response comes
* DNS SRV records
* re-INVITE to change codecs
* re-INVITE to add media streams
* re-INVITE to change media address (mobility)
* recursion
* unicast REGISTER
* multicast REGISTER
* Record-Route/Route
* Require/Proxy-Require
* multiple codecs (send/receive)
* multiple media streams (send/receive)
* dynamic RTP port numbers (send/receive)
* can receive and process Expires in INVITE
* can send Expires in INVITE
* can send bodies in INVITE for display
* can receive bodies in INVITE for display
* send multipart
* receive multipart
* multi-proxy authorization
* can receive and do something useful with non-SIP URL in 3xx (like pass to browser)
* can receive and do someting useful with bodies in 3xx responses (like pass to browser)
* PGP authorization
* does something intelligent when multiple 200 OK received
* can send 183 with SDP + Session header
* can receive 183 with SDP + Session header and play early media
* can send INFO method with body for display
* can send INFO method with ISUP body
* can receive INFO method with body for display
* session timer
* reliable provisional responses (send and receive)
* call transfer (BYE/Also)
* call transfer (TRANFER)
* set caller preferences
* can send CPL in register

Proxy tests


* UDP to TCP conversion
* TCP to UDP conversion
* basic proxy authorization
* digest proxy authorization
* record routing
* forking - parallel
* forking - sequential
* receive unicast registers
* receive multicast registers
* supports non SIP URLs in Contact in REGISTER
* obeys action tag in REGISTER
* can always redirect
* can receive CPL in REGISTER
* obeys Expires in INVITE
* forking of non-INVITE methods
* SRV records
* tel URL handling (can send a request somewhere when one arrives with a tel URL in request URI)
* drops requests when Max-Forwards is zero
* can detect loops
* can act as local outbound proxy (i.e., forward to URL in request URI when domain is not its own)
* understands Proxy-Require
* can process Hide: Hop
* can process Hide: All
* recursion
* generates CANCEL on 200 OK when forking
* can receive and propagate CANCEL
* IPSec
* forwards all provisional responses upstream
* can forward multiple 200 OK upstream
* can process caller preferences

Last updated 01/09/2008 17:33:44 by Henning Schulzrinne



Menu [toggle]