Theo Zourzouvillys, CTO - VoIP.co.uk.

I am the CTO and development lead at VoIP.co.uk. We work on our in-house C++ SIP platform based slightly around the IMS concepts, and develop standards related to SIP within the IETF.


Development CA cert


[ SIP Status Codes ] [ SIP Timers ] [ boost ] [ DTMF Standards ]


SIP UA Capabilities File

Our maintained sipuacap.xml file is here.


SIP Validator

A SIP validator


(Sometimes) SIP related blog

We sometimes blog just here


Specifications (Local)

Core

Core Updates

  • RFC 5393 - Addressing an Amplification Vunerability in SIP Forking Proxies
  • RFC 5057 - Multiple Dialog Usages in SIP
  • RFC 4320 - Actions Addressing Identified Issues with SIP NIST's
  • RFC 3853 - S/MIME AES Requirement for SIP

SDP

  • RFC 4566 - SDP: Session Description Protocol
  • RFC 3264 - SDP Offer/Answer Model
  • RFC 4567 - Key Management Extensiosn for SDP
  • RFC 4568 - SDP Security Descriptions for Media Streams
  • RFC 4570 - SDP Source Filters
  • RFC 4574 - SDP Label Attribute
  • RFC 3388 - SDP Grouping
  • RFC 4091 - SDP Alternative Network Address Types
  • RFC 3556 - SDP bandwidth modifiers for RTCP
  • RFC 3890 - Transport Independent Bandwidth Modifier for SDP
  • RFC 3605 - RTCP attribute in SDP
  • RFC 4145 - Connection-Oriented Media Transport in SDP (COMEDIA)
  • RFC 4572 - Connection-Oriented Media Transport over TLS in SDP
  • RFC 3407 - SDP Simple Capability Declaration

Misc SIP

  • RFC 5407 - Example Call Flows of Race Conditions in SIP
  • RFC 5373 - Requesting Answering Modes for SIP
  • RFC 5363 - Framework for Security Considerations for SIP URI-List Services
  • RFC 4483 - A Mechanism for Content Indirection in SIP Msssages
  • RFC 5589 - CC Transfer

Resource Management

  • RFC 3312 - Integration of Resource Management and SIP
  • RFC 4032 - Update to the SIP preconditions framework

RTP/RTCP/SRTP/RTSP

  • RFC 3550 - RTP: A Transport for Real-Time Applications
  • RFC 2833 - RTP Payload for DTMF Digits, Tones, and Signals
  • RFC 5285 - RTP Header Extensions
  • RFC 3605 - Real Time Control Protocol (RTCP)
  • RFC 3611 - RTCP Extended Reports (RTCP XR)
  • RFC 3711 - Secure RTP
  • RFC 4585 - Extended RTP Profile for RTCP based Feedback (RTP/AVPF)
  • RFC 4571 - RTP and RTCP over Connection-Oriented Transport
  • RFC 5124 - Extended Secure RTP Profile for RTCP based Feedback (RTP/SAVPF)
  • RFC 5506 - Reduced-Size RTCP: Opertunities and Consequences
  • RFC 4612 - Real-Time Facsimile (T.38) - audio/t38 MIME sub-type registration
  • RFC 2507 - IP header compression
  • RFC 2508 - Compressed RTP
  • RFC 3545 - Extended Compressed RTP

Media Control

  • RFC 5022 - Media Server Control Markup Language (MSCML) and Protocol
  • RFC 3525 - MEGACO v1.0 (H.248.1)

DIAMETER

Network

Extension Methods

Event Packages / Event Notification

  • RFC 3842 - Message Waiting Inidication (message-summary)
  • RFC 3856 - Presence (presence)
  • RFC 3680 - Registration (reg)
  • RFC 4235 - INVITE Initiated Dialog (dialog)
  • RFC 4575 - Conference State (conference)
  • RFC 4730 - Key Press Stimulus (kpml)
  • RFC 4662 - SIP Event Notification Extension for Resource Lists (eventlist)
  • RFC 4660 - Functional Description of Event Notification Filtering
  • RFC 4661 - XML Based Format for Event Notification Filtering
  • RFC 5367 - Subscriptions to Request-Contained Resource Lists in SIP

Presencing / PIDF

  • RFC 3856 - Presence Event Package
  • RFC 3857 - Watcher Information Event Template (winfo)
  • RFC 3858 - XML Based Format for Watcher Information
  • RFC 3859 - Common Profile for Presence
  • RFC 3863 - Presence Information Data Format (PIDF)
  • RFC 3903 - PUBLISH method
  • RFC 4479 - A Data Model for Presence
  • RFC 4480 - RPID: Rich Presence Extensions for PIDF
  • RFC 4481 - Timed Presence Extensions to PIDF
  • RFC 4482 - CIPID: Contact Information for PIDF

Important Drafts

IANA Registry

URI schemas

Document/Storage (e.g XCAP)

Privacy Related

  • RFC 3323 - Privacy Mechanism for SIP
  • RFC 3325 - Private Extensions to SIP for Asserted Identity within Trusted Networks

Transports/Routing

Extension Parameters

Authentication

  • RFC 2617 - Basic + Digest Authentication
  • RFC 4474 - Enhancements for Authenticated Identity Management in SIP
  • RFC 4740 - Diameter SIP Application

Extension Headers

Extension Content Types

Extension Content Dispositions

Conferencing

  • RFC 5370 - SIP Conference Bridge Trancoding Model
  • RFC 4579 - SIP Call Control - Conferencing for User Agents
  • RFC 4575 - SIP Event Package for Conference State

Caller Preferences

  • RFC 3840 - Indicating User Agent Capabilities in SIP
  • RFC 3841 - Calller Preferences for SIP
  • RFC 4596 - Guidelines for Usage of SIP Caller Preferences Extension
  • RFC 2533 - Syntax for Media Feature Sets

Misc

  • RFC 1750 - Randomness Recommendations for Security
  • RFC 3725 - Best Current Practices for Third Party Call Control (3pcc) in SIP
  • RFC 3880 - Call Processing Language (CPL): A Language for User Control of Internet Telephony Services
  • RFC 4734 - Modem, Fax, and Text Telephony Events
  • RFC 4733 - Telephony Events and Tones

Extensions

Signalling Compression

  • RFC 3320 - SigComp
  • RFC 3321 - SigComp Extended Operations
  • RFC 3485 - SIP and SDP Static Dictionary for SigComp
  • RFC 4896 - SigComp corrections and clarifications

TLS/SSL/Crypto

MSRP

  • RFC 5547 - SDP offer/answer mechanism, for file transfer

(Possibly) Useful Stuff

None of these items come with no garuntee of working until integrated with a VoIP.co.uk or Synergy Networking product.

Other Stuff

Links mostly for my teams use.

Other

SIP Status Codes

    100 Trying
    180 Ringing
    181 Call Is Being Forwarded
    182 Queued
    183 Session Progress
    200 OK
    202 Accepted                              [RFC3265]
    300 Multiple Choices
    301 Moved Permanently
    302 Moved Temporarily
    305 Use Proxy
    380 Alternative Service
    400 Bad Request
    401 Unauthorized
    402 Payment Required
    403 Forbidden
    404 Not Found
    405 Method Not Allowed
    406 Not Acceptable
    407 Proxy Authentication Required
    408 Request Timeout
    410 Gone
    412 Conditional Request Failed            [RFC3903]
    413 Request Entity Too Large
    414 Request-URI Too Long
    415 Unsupported Media Type
    416 Unsupported URI Scheme
    417 Unknown Resource-Priority             [RFC4412]
    420 Bad Extension
    421 Extension Required
    422 Session Interval Too Small            [RFC4028]
    423 Interval Too Brief
    428 Use Identity Header                   [RFC4474]
    429 Provide Referrer Identity             [RFC3892]
    436 Bad Identity-Info                     [RFC4474]
    437 Unsupported Certificate               [RFC4474]
    438 Invalid Identity Header               [RFC4474]
    480 Temporarily Unavailable
    481 Call/Transaction Does Not Exist
    482 Loop Detected
    483 Too Many Hops
    484 Address Incomplete
    485 Ambiguous
    486 Busy Here
    487 Request Terminated
    488 Not Acceptable Here
    489 Bad Event                             [RFC3265]
    491 Request Pending
    493 Undecipherable
    494 Security Agreement Required           [RFC3329]
    500 Server Internal Error
    501 Not Implemented
    502 Bad Gateway
    503 Service Unavailable
    504 Server Time-out
    505 Version Not Supported
    513 Message Too Large
    580 Precondition Failure                  [RFC3312]
    600 Busy Everywhere
    603 Decline
    604 Does Not Exist Anywhere
    606 Not Acceptable
    

SIP Status Codes

Timer Value Section Meaning
T1 500ms default 7.1.1.1 RTT Estimate
T2 4s 7.1.2.2 The maximum retransmit interval for non-INVITE requests and INVITE responses
T4 5s 7.1.2.2 Maximum duration a message will remain in the network
Timer A initially T1 7.1.1.2 INVITE request retransmit interval, for UDP only
Timer B 64*T1 7.1.1.2 INVITE transaction timeout timer
Timer C > 3min 6.6 (B11) proxy INVITE transaction timeout
Timer D > 32s for UDP 7.1.1.2 Wait time for response for TCP/SCTP retransmits
Timer E initially T1 7.1.2.2 non-INVITE request retransmit interval, UDP only
Timer F 64*T1 7.1.2.2 non-INVITE transaction timeout timer
Timer G initially T1 7.2.1 INVITE response retransmit interval
Timer H 64*T1 7.2.1 Wait time for ACK receipt
Timer I T4 for UDP, 0s for TCP/SCTP 7.2.1 Wait time for ACK retransmits
Timer J 64*T1 for UDP, 0s for TCP/SCTP 7.2.2 Wait time for non-INVITE request retransmits
Timer K T4 for UDP, 0s for TCP/SCTP 7.1.2.2 Wait time for response retransmits
Timer L 64 * T1 draft-sparks-sip-invfix Wait time for accepted INVITE request retransmits
Timer M 64 * T1 draft-sparks-sip-invfix Wait time for retranmission of 2xx to INVITE or additional 2xx from other branches of a forked INVITE

Includes fixes in draft-sparks-sip-invfix

IST SM

                                  |INVITE
                                  |pass INV to TU
               INVITE             V send 100 if TU won't in 200ms
               send response+-----------+
                   +--------|           |--------+101-199 from TU
                   |        | Proceeding|        |send response
                   +------->|           |<-------+
                            |           |          Transport Err.
                            |           |          Inform TU
                            |           |--------------->+
                            +-----------+                |
               300-699 from TU |     |2xx from TU        |
               send response   |     |send response      |
                +--------------+     +-------------+     |
                |                                   |    |
INVITE          V          Timer G fires            |    |
send response+-----------+ send response            |    |
    +--------|           |--------+                 |    |
    |        | Completed |        |                 |    |
    +------->|           |<-------+   INVITE        |    |
             +-----------+            -             |    |
                |     | ACK           +-----+       |    |
                |     | -             |     |       V    |
                |     +--+            |  +------------+  |
                |        |            |  |            |  |
                |        V            +->|  Accepted  |  |
Timer H fires   |    +-----------+       |            |  |
      or        |    |           |       +------------+  |
Transport Error |    | Confirmed |         |   ^     |   |
   Inform TU    |    |           |      +--+   |     |   |
                |    +-----------+      |      +-----+   |
                |     |                 |  2xx from TU   |
                |     | Timer I fires   |  send response |
                |     | -               |                |
                |     |                 | Timer L fires  |
                |     |                 | -              |
                |     |                 V                |
                |     |     +------------+               |
                |     +---->|            |               |
                +---------->| Terminated |<--------------+
                            |            |
                            +------------+

NIST SM

                        |Request received
                        |pass to TU
                        V
                  +-----------+
                  |           |
                  | Trying    |-------------+
                  |           |             |
                  +-----------+             |200-699 from TU
                        |                   |send response
                        |1xx from TU        |
                        |send response      |
                        |                   |
     Request            V      1xx from TU  |
     send response+-----------+send response|
         +--------|           |--------+    |
         |        | Proceeding|        |    |
         +------->|           |<-------+    |
  +<--------------|           |             |
  |Trnsprt Err    +-----------+             |
  |Inform TU            |                   |
  |                     |                   |
  |                     |200-699 from TU    |
  |                     |send response      |
  |  Request            V                   |
  |  send response+-----------+             |
  |      +--------|           |             |
  |      |        | Completed |<------------+
  |      +------->|           |
  +<--------------|           |
  |Trnsprt Err    +-----------+
  |Inform TU            |
  |                     |Timer J fires
  |                     |-
  |                     |
  |                     V
  |               +-----------+
  |               |           |
  +-------------->| Terminated|
                  |           |
                  +-----------+

ICT SM

                                 |INVITE from TU
               Timer A fires     |INVITE sent      Timer B fired
               Reset A,          V                 or Transport Err
               INVITE sent +-----------+           inform TU
                 +---------|           |--------------------------+
                 |         |  Calling  |                          |
                 +-------->|           |-----------+              |
300-699                    +-----------+ 2xx       |              |
ACK sent                      |  |       2xx to TU |              |
resp. to TU                   |  |1xx              |              |
+-----------------------------+  |1xx to TU        |              |
|                                |                 |              |
|                1xx             V                 |              |
|                1xx to TU +-----------+           |              |
|                +---------|           |           |              |
|                |         |Proceeding |           |              |
|                +-------->|           |           |              |
|                          +-----------+ 2xx       |              |
|         300-699             |    |     2xx to TU |              |
|         ACK sent,  +--------+    +---------------+              |
|         resp. to TU|                             |              |
|                    |                             |              |
|                    V                             V              |
|              +-----------+                   +----------+       |
+------------->|           |Transport Err.     |          |       |
               | Completed |Inform TU          | Accepted |       |
            +--|           |-------+           |          |-+     |
    300-699 |  +-----------+       |           +----------+ |     |
    ACK sent|    ^  |              |               |  ^     |     |
            |    |  |              |               |  |     |     |
            +----+  |              |               |  +-----+     |
                    |Timer D fires |  Timer M fires|    2xx       |
                    |-             |             - |    2xx to TU |
                    +--------+     |   +-----------+              |
   NOTE:                     V     V   V                          |
transitions                 +------------+                        |
labeled with                |            |                        |
the event                   | Terminated |<-----------------------+
over the action             |            |
to take                     +------------+

NICT SM

                     |Request from TU
                     |send request
 Timer E             V
 send request  +-----------+
     +---------|           |-------------------+
     |         |  Trying   |  Timer F          |
     +-------->|           |  or Transport Err.|
               +-----------+  inform TU        |
  200-699         |  |                         |
  resp. to TU     |  |1xx                      |
  +---------------+  |resp. to TU              |
  |                  |                         |
  |   Timer E        V       Timer F           |
  |   send req +-----------+ or Transport Err. |
  |  +---------|           | inform TU         |
  |  |         |Proceeding |------------------>|
  |  +-------->|           |-----+             |
  |            +-----------+     |1xx          |
  |              |      ^        |resp to TU   |
  | 200-699      |      +--------+             |
  | resp. to TU  |                             |
  |              |                             |
  |              V                             |
  |            +-----------+                   |
  |            |           |                   |
  |            | Completed |                   |
  |            |           |                   |
  |            +-----------+                   |
  |              ^   |                         |
  |              |   | Timer K                 |
  +--------------+   | -                       |
                     |                         |
                     V                         |
               +-----------+                   |
               |           |                   |
               | Terminated|<------------------+
               |           |
               +-----------+

DSM for INVITE dialog usage (caller)

    INV +-----------------------------------------------+
    --->|                 Preparative                   |
        +-----------------------------------------------+
          |                    |                      |
          | 3xx-6xx            | 1xx-tag              | 2xx
          |                    |                      |
          |                    |        1xx-tag       |
          |                    V        w/new tag     |
          |         +-----------------+  [new DSM]    |
          | 3xx-6xx |                 |   | (new DSM  |
          +<--------|      Early      |   |  instance |
          |         |                 |<--+  created) |
          |         +-----------------+               |
          |            |             |                |  2xx w/new tag
          |            | BYE         | 2xx            |   [new DSM]
          |            |             +------------>+<-+      | (new DSM
          |            |                           |         |  instance
    +-----C------------C-----+         +-----------C------+  |  created)
    |     | Terminated |     |         | Confirmed |      |  |
    |     |            +<----C---------|           |      |  |
    |     |            |     | BYE(sr) |           |      |  |
    |     |            V     |         |           V      |  |
    | 2xx |  +-----------+   |         |   +-----------+  |  |
    | +---C--|           |---C-+       |   |           |  |  |
    | |   |  |   Mortal  |   | | BYE(r)|   | Moratorium|<-C--+
    | +---C->|           |<--C-+       |   |           |  |
    | ACK |  +-----------+   |         |   +-----------+  |
    |     |    |             |         |         |        |
    |     |    | Timeout     |         |         | ACK    |
    |     |    |             |         |         |        |
    |     V    V             |         |         V        |
    |   +---------------+    |         |   +-----------+  |
    |   |               |    |         |   |           |--C-+
    |   |     Morgue    |    |         |   |Established|  | | 2xx,ACK
    |   |               |    |         |   |           |<-C-+
    |   +---------------+    |         |   +-----------+  |
    |                        |         |                  |
    +------------------------+         +------------------+

    (r): indicates that only reception is allowed.
         Where (r) is not used as an indicator, "response" means
         receive, and "request" means send.
    (sr): indicates that both sending and reception are allowed.

DSM for INVITE dialog usage (callee)

    INV +-----------------------------------------------+
    --->|                 Preparative                   |
        +-----------------------------------------------+
          |                         |                 |
          | 3xx-6xx                 | 1xx-tag         | 2xx
          |                         |                 |
          |                         V                 |
          |         +------------------+              |
          | 3xx-6xx |                  |              |
          +<--------|      Early       |              |
          |         |                  |              |
          |         +------------------+              |
          |            |             |                |
          |            |BYE/487(INV) | 2xx            |
          |            |             +------------>+<-+
          |            |                           |
    +-----C------------C-----+         +-----------C------+
    |     | Terminated |     |         | Confirmed |      |
    |     |            +<----C---------|           |      |
    |     |            |     | BYE(sr) |           |      |
    |     |            V     |         |           V      |
    |     | +------------+   |         |   +-----------+  |
    |     | |            |---C-+       |   |           |--C-+
    |     | |   Mortal   |   | | BYE   |   | Moratorium|  | | 2xx
    |     | |            |<--C-+       |   |           |<-C-+ if ACK not
    |     | +------------+   |         |   +-----------+  |   received
    |     |   |              |         |         |        |
    |     |   | Timeout      |         |         | ACK    |
    |     |   |              |         |         |        |
    |     V   V              |         |         V        |
    |   +---------------+    |         |   +-----------+  |
    |   |               |    |         |   |           |  |
    |   |     Morgue    |    |         |   |Established|  |
    |   |               |    |         |   |           |  |
    |   +---------------+    |         |   +-----------+  |
    |                        |         |                  |
    +------------------------+         +------------------+

     (sr): indicates that both sending and reception are allowed.
          Where (sr) is not used as an indicator, "response" means send,
          and "request" means receive.

We also provide SIP consultancy services; for an example of our skills, please see my CV. If you would like further information about our technical services, please contact theo@voip.co.uk.