SIP, the session initiation protocol, is the IETF protocol for VOIP and other text and multimedia sessions, like instant messaging, video, online games and other services.
Abstract from the RFC 3261 (formatted_and_explained version) - SIP: Session Initiation Protocol
This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.
SIP invitations used to create sessions carry session descriptions that allow participants to agree on a set of compatible media types. SIP makes use of elements called proxy servers to help route requests to the user's current location, authenticate and authorize users for services, implement provider call-routing policies, and provide features to users. SIP also provides a registration function that allows users to upload their current locations for use by proxy servers. SIP runs on top of several different transport protocols.
SIP is very much like HTTP, the Web protocol, or SMTP. Messages consist of headers and a message body. SIP message bodies for phone calls are defined in SDP -the session description protocol.
SIP offers all potentialities of the common Internet Telephony features like:
Since SIP is a flexible protocol, it is possible to add more features and keep downward interoperability.
SIP also does suffer from NAT or firewall restrictions. (Refer to NAT and VOIP)
SIP can be regarded as the enabler protocol for telephony and voice over IP (VoIP) services. The following features of SIP play a major role in the enablement of IP telephony and VoIP:
The SIP protocol defines several methods.
home page
Abstract from the RFC 3261 (formatted_and_explained version) - SIP: Session Initiation Protocol
This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.
SIP invitations used to create sessions carry session descriptions that allow participants to agree on a set of compatible media types. SIP makes use of elements called proxy servers to help route requests to the user's current location, authenticate and authorize users for services, implement provider call-routing policies, and provide features to users. SIP also provides a registration function that allows users to upload their current locations for use by proxy servers. SIP runs on top of several different transport protocols.
SIP is very much like HTTP, the Web protocol, or SMTP. Messages consist of headers and a message body. SIP message bodies for phone calls are defined in SDP -the session description protocol.
- SIP is a text-based protocol that uses UTF-8 encoding
- SIP uses port 5060 both for UDP and TCP. SIP may use other transports
SIP offers all potentialities of the common Internet Telephony features like:
- call or media transfer
- call conference
- call hold
Since SIP is a flexible protocol, it is possible to add more features and keep downward interoperability.
SIP also does suffer from NAT or firewall restrictions. (Refer to NAT and VOIP)
SIP can be regarded as the enabler protocol for telephony and voice over IP (VoIP) services. The following features of SIP play a major role in the enablement of IP telephony and VoIP:
- Name Translation and User Location: Ensuring that the call reaches the called party wherever they are located. Carrying out any mapping of descriptive information to location information. Ensuring that details of the nature of the call (Session) are supported.
- Feature Negotiation: This allows the group involved in a call (this may be a multi-party call) to agree on the features supported � recognizing that not all the parties can support the same level of features. For example video may or may not be supported; as any form of MIME type is supported by SIP, there is plenty of scope for negotiation.
- Call Participant Management: During a call a participant can bring other users onto the call or cancel connections to other users. In addition, users could be transferred or placed on hold.
- Call feature changes: A user should be able to change the call characteristics during the course of the call. For example, a call may have been set up as 'voice-only', but in the course of the call, the users may need to enable a video function. A third party joining a call may require different features to be enabled in order to participate in the call
- Media negotiation: The inherent SIP mechanisms that enable negotiation of the media used in a call, enable selection of the appropriate codec for establishing a call between the various devices. This way, less advanced devices can participate in the call, provided the appropriate codec is selected.
The SIP protocol
The SIP protocol defines several methods.
SIP methods defined in the SIP RFC
- SIP method ack: Used to facilitate reliable message exchange for INVITEs
- SIP method bye: Hangup a session
- SIP method cancel: Cancel an invite
- SIP method invite: Invite another UA to a session
- SIP method invite re-invite: Change a running session
- SIP method options
- SIP method register: Register a location with a SIP Registrar server
SIP method extensions from other RFCs
- SIP Message Waiting Indication: Extension in RFC 3842
- SIP method info: Extension in RFC 2976
- SIP method message: Extension in RFC 3428
- SIP method notify: Extension in RFC 2848 PINT
- SIP method prack: Extension in RFC 3262
- SIP method PUBLISH: Extension is RFC 3903
- SIP method refer: Extension in RFC 3515
- SIP method subscribe: Extension in RFC 2848 PINT
- SIP method unsubscribe: Extension in RFC 2848 PINT
- SIP method update: Extension in RFC 3311
- SIP Specific Event Notification: Extension in RFC 3265
SIP responses
SIP terms and definitions
- SIP Authentication
- SIP Compression
- SIP DTMF signalling
- SIP outbound proxy
- SIP proxy
- SIP redirect server
- SIP registrar server
- SIP URI - how to specify a SIP connection in an URL
SIP RFCs
- RFC 2848 - The PINT Service Protocol: xtensions to SIP and SDP for IP Access to Telephone Call Service
- RFC 2976 - The SIP INFO Method
- RFC 3050 - Common Gateway Interface for SIP
- RFC 3087 - Control of Service Context using SIP Request-URI
- RFC 3261 Official Main SIP RFC
- RFC 3261 - SIP: Session Initiation Protocol (Main SIP RFC)
- RFC 3262 - Reliability of Provisional Responses in the Session Initiation Protocol (SIP)
- RFC 3263 - Session Initiation Protocol (SIP): Locating SIP Servers
- RFC 3264 - An Offer/Answer Model with the Session Description Protocol (SDP)
- RFC 3265 - Session Initiation Protocol (SIP)-Specific Event Notification
- RFC 3311 - The Session Initiation Protocol (SIP) UPDATE Method
- RFC 3312 - Integration of Resource Management and Session Initiation Protocol (SIP)
- RFC 3313 - Private Session Initiation Protocol (SIP) Extensions for Media Authorization
- RFC 3319 - Dynamic Host Configuration Protocol (DHCPv6) Options for Session Initiation Protocol (SIP) Servers
- RFC 3323 - A Privacy Mechanism for the Session Initiation Protocol (SIP)
- RFC 3324 - Short Term Requirements for Network Asserted Identity
- RFC 3325 - Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks
- RFC 3326 - The Reason Header Field for the Session Initiation Protocol (SIP)
- RFC 3327 - Session Initiation Protocol (SIP) Extension Header Field for Registering Non-Adjacent Contacts
- RFC 3329 - Security Mechanism Agreement for the Session Initiation Protocol (SIP)
- RFC 3361 - Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers
- RFC 3388 - Grouping of Media Lines in the Session Description Protocol (SDP)
- RFC 3420 - Internet Media Type message/sipfrag
- RFC 3428 - Session Initiation Protocol (SIP) Extension for Instant Messaging
- RFC 3485 - The Session Initiation Protocol (SIP) and Session Description Protocol (SDP) Static Dictionary for Signaling Compression (SigComp)
- RFC 3486 - Compressing the Session Initiation Protocol (SIP)
- RFC 3487 - Requirements for Resource Priority Mechanisms for the Session Initiation Protocol (SIP)
- RFC 3515 - The Session Initiation Protocol (SIP) Refer Method
- RFC 3524 - Mapping of Media Streams to Resource Reservation Flows
- RFC 3966 - The tel URI for Telephone Numbers
- RFC 4694 - Number Portability Parameters for the ""tel"" URI
References
- Additional SIP Related IETF Documents, Drafts, and RFCs
- Formatted/explained version of RFC 3261 (over 250 pages!)
- RFC 3329: Security Mechanism Agreement for the Session Initiation Protocol (SIP)
- The IETF SIP Working Group - on this page, you'll find all current Internet Drafts, RFCs and standards
See also
- IAX versus SIP
- RTP: Real-Time Transport Protocol- the protocol most often used for voice communication
- SDP: The Session Description Protocol
- SIP call flows: Examples of SIP call flows
- SIP Number Portability Parameters
- SIP security
- SIP Security
- SIP simple: Instant messaging with SIP
- SIP SS7 gateways
- SIP tools
- SIP Trunking: Including trunk-group information in SIP INVITE RFC4904
- SIP-T: Session Initiation Protocol for Telephones RFC3372
External SIP links
- Back-to-back User Agent (B2BUA) SIP Servers Powering Next Generation Networks
- Basic SIP call flow and SIP error codes
- Columbia University SIP website — lots of diverse info here
- Deploying SIP to SIP-I interworking
- Doug Moeller's full day VOIP tutorial Powerpoint presentation (large 13MB zip file)
- free MWI routines
- Great SIP tutorial
- How a SIP server can handle the NAT traversal issue in SIP ?
- Important thing to look at if you get one way audio problem with Asterisk 1.4.10 and FreePBX 2.3.0
- IMS SIP Technology Overview
- Industry leading SIP training and SSCA\'ae Certification supported by the TIA, DIDX, Mitel, Panasonic, AudiCodes, Ingate, Brekeke, Bisci and many many more
- Open Source SIP and Media Links
- Overview of H.323-SIP Interworking
- Packetizer's SIP Information Site
- setup SIP server step by step
- SIP and H.323 Call Flow Diagrams
- SIP Dojo where you can learn about SIP, SIP server, IP-PBX from a Dojo master.
- SIP FAQ: Columbia University SIP FAQ - visit it!
- SIP FAQ - sipknowledge SIP FAQ
- SIP Introduction: ftp://ftp.berlios.de/pub/ser/latest/doc/html/sip_introduction.html
- Sip providers List of SIP providers.
- SIP providers List
- Sip providers reviews - Compare SIP providers and services
- SIP Server Technical Overview
- SIP settings for all Betamax providers'
- SIP Tutorial - SIP Tutorial/eLearning - wow!
- SIP Wiki http://www.toyz.org/cgi-bin/sipwiki.cgi
- SIP, networks and NAT : http://www.voipuser.org/forum_topic_7295.html
- Tech-invite SIP Information Site
- The entire list of SIP related IETF specs
- The SIP Center Comprehensive information and resources on all things SIP.
- The SIP Forum: http://www.sipforum.com/
- VOIP Cookbook SIP and H.323
- What is SIP?
home page

Comments
333A beginner in SIP......
i will like to ask that will anyone of you help me understand the Call flows in SIP and also that how do we implement this SIP??
Actually this is my Final year project and i am left with 4 months only....i have studied the related details....
My main work is that when a call is established then i change the IP of the called party i.e. i have two interfaces at the called party end and during the call i make one interface down so my call shifts to another interface or link without the disconnection or call drop you may say???
in need of early reply...
REGARDS
Khattak
333Ack did not sent to Contact Field
thanx
333Ack did not sent to Contact Field
thanx
333VPN for VoIP Blocking
Currently I am using the VGCP, a new solution to solve the VoIP Blocking issue. Following is theirs website:
http://www.speed-voip.com/index-36.html
If any of you have interested, you may try to use it to solve your VoIP Blocking problems. Thanks.
Andy
andywong-01@hotmail.com
333Why SIP do not have customized call waiting Option
Thanks
333Voice & Video Softphone
We provide Voice & Video Softphone
Features
a.. Customized Skin Interfaces
b.. Call Timer * Display Balance
c.. Last Number Redial
d.. Local Signalization (Dial tone, busy, ring back, etc.) for user
comfort
e.. Mute
f.. Touch-Tones
g.. Address Book
h.. Microphone Volume Control
i.. Speaker Volume Control
Benefits
a.. Use Microsoft g723.1 codec
b.. Small Application
c.. Works with any Full-Duplex sound card
d.. USB headset support.
e.. Works well on most of the versions of Microsoft Windows ( NT4, 2000,
XP, 2003)
f.. NAT/Firewall support, stable SIP, RTP ports
g.. Specify NAT IP to be written in SIP messages
h.. Auto-Configuration of settings for easy deployment
i.. STUN support for NAT detection and classification
j.. Configuration Wizard
k.. Uses New RFC 3261 compliant stack
If you have any queries, please let me know. I would be happy to assist you. voip200607@yahoo.com
333SIP Wiki Posted
333VOIP Configuration Test
Well guess what, what goes around comes around and small pockets of new technology out there is biting them in the butt.
Take VOIP for instance, China is shipping some amazing technology over here allowing us to make unlimited long distance calls all over the world at virtually no cost at all. Sorry about that AT&T, and all of the other in and out of state long distance carriers thats been taking us to the cleaners every month. Yes I'm gloating but I've been out of work for most of the last two years with time to ferret out some of those technology pockets and take advantage of their cost savings. IBM cashed in their chips when they sold their PC division to China. I'm just following their lead. I suspect HP is somewhere in that line also.
There's a lot of companies out there selling VOIP hardware. One of many I'm sure, thats selling solid VOIP products at a reasonable price is GrandStream Networks. I've been testing their 'BudgeTone 101' SIP phone, 'HandyTone 286' ATA and their new 'HandyTone 488' on Asterisk (A free PBX software package running an old PC I had laying around).
A 'HandyTone 286', 'BugeTone 101' phone and the PBX is at my house in North Carolina connected to a cable broadband connection. A 'HandyTone 488' and another 'BudgeTone 101' is in Florida at my brothers house connected to a DSL Light broadband connection. Both behind NAT Firewalls. And they work great.
The sound quality is so good you have to try VOIP to believe it. Reliability is also good. Theres no longer waiting to use the phone either. With VOIP you have as many phone lines as you have VOIP phones. And of course theres talking for hours and not worrying about long distance charges even to friends out of state because we can share our local phone lines through the Internet.
It sounds to good to be true right! Three months of testing has convinced me theres very little downside unless you work for a baby Bell or long distance carrier. Those guys are going to be as obsolete as a horse an buggy in a few years.
Here's what we found. Both the good and the Bad.
CONFIGURATION
North Carolina Installation:
Linux Fedora Core 3 (free software)
Asterisk - the latest CVS version available (free software)
Gastman - (A GUI monitor for Asterisk, Also free)
Wildcard X100P - $40 card in my PBX server to access POTS (Plain Old Telephone System)
Handytone 286 - SIP box to connect my regular phones, Also called ATA, (Firmware 1.0.5.16)
Budgetone 101 - SIP phone (Firmware 1.0.5.16)
Florida Installation:
Handytone 488 - access the POTS line and regular phones. (Firmware 1.0.1.0)
Budgetone 101 - SIP phone so we can talk without tying up the regular phones (Firmware 1.0.5.16)
Configuring Asterisk to run on Fedora Core 3 was fairly easy. It took some time to get “music on hold” until I discovered it was as simple as typing “make mpg123”. www.voip.org was a big help there and many other places also. Make them your first stop when configuring Asterisk. Never got Festival (a text to speech function in Asterisk) to work. I ended up writing a shell script instead. Man this stuff is flexible.
You can't beat Grandstream products for the price. At least this week anyway. Their VOIP boxes are easy to configure and work as advertised. Their web interface is not only intuitive but nearly the same on all devices. Once you learn how to configure one , you know how on all their other devices. Phones and ATA's (Analog Telephone Adapter)
Nothing is perfect though so I've listed a couple things you may or may not be interested in.
1.The 'BugeTone 101' SIP phone.
- Two buttons don't don't work. The Message and the conference button. We upgraded the firmware to (1.0.5.22 beta) and got the Message button to work but then a hole can of worms opened up. Most notably NAT (Network Address Translation) transversal went into the proverbial hand basket. It would intermittently go into la-la land also. So back to Firmware 1.0.5.16 we went. Who needs a message button anyway.
The speaker phone is almost unusable due to the absence of echo cancellation circuitry. If two phones are on speaker, the feedback sounds like an old Lost In Space episode.
No indicator for the mute button. I know, picky picky picky, but when talking with someone the sound quality is so good you can't tell if the mute button is on or off. It's not a issue if you leave the mute button alone. Play with it though and you may find yourself mimicking the Verison commercial “Can U Here Me Now?”.
2.The HandyTone 488
- To be fair this is a brand new product. It's amazing it works as well as it does. And the only thing we could find flaky was the call waiting feature. If your talking to someone on the FXS side and another call rings in, you instantly have a one sided conversation. I can hear you but you can't here me. Configure it without call waiting and it's rock solid.
3.Configuration Reliability
VOIP/SIP by it's nature has some built in delay. It digitizes small blocks of your conversation, compresses it, sends it to a PBX in packet form which intern converts it from one format to another if needed, then sends the packets on to their destination which decompress and converts it back into voice. There's more to it than that I know, but thats basically what happens. In extreme cases the packets may have to transverse a number of routers out on the network. In our test environment the shortest route crossed twenty three routers and theres no guarantee packets will take the shortest route. So, in short sometimes we experience delayed conversation causing us to talk on top of each other. We experienced clipped words, which means some of the packets couldn't find their destination. And their were times when it wouldn't work at all due to network outages.
Conclusion:
VOIP over the Internet as it stands now, is plenty reliable enough for personal use. It can virtually eliminate long distance charges on you home and cell phones while also providing a hole array of free features (voice mail, call waiting, callerID, etc..) which your local phone company charges extra for. It's also great for family members that are spread all over the country like mine. No more in state charges when you call a friend out of your calling area when he's only four or five miles down the road. And biggest of all, you don't have to deal with a local phone company that has a monopoly on your area and has laid off their experienced workers, in the name of profits, to the point where residential service is almost non existent. Do I Hear A Hallelujah?
For businesses, VOIP is a great way to manage operating costs in the office giving you economical, reliable, scalable, non pro priority phone system options. The PBX and phones need to stay in the building though. To put it another way, unless you like living on the edge, don't try to run a business that depends on reliable phone service over the Internet. Some VOIP providers out there are selling that very concept to small businesses with disastrous results. The Internet is just not stable enough. Case in point, my Packet8(commercial Internet Phone Provider) phone which I'm also testing has been working fine for the past couple weeks except for a momentary outage now and then. While writing this document, it decided to develop a new feature. I can dial out, but no one can dial in. Packet8 has good phone service and I'm sure they'll fix it as soon as the problem is brought to their attention. The real problem though, is it will be a thirty minute to an hour distraction tomorrow that I don't need. You may say, it sounds like Packet8's problem not the Internet. You may be right. My point is, take Packet8's infrequent glitches compounded with the Internet provider's infrequent glitches (EarthLink) compounded with the broadband access provider's (Time Warner) infrequent glitches compounded with the Internet backbone's (AT&T, Quest, MCI, etc...) infrequent glitches and vol la, you have a business customers can't communicate with from time to time. So do a comprehensive risk assessment before making the leap.
VOIP hardware is not as mature as it could be, the Internet is by no means as stable or reliable as your old PSTN (Public Switched Telephone Network). But to be fair, a stable Internet for VOIP business phone service is coming in the not to distance future. Overwhelming cost savings and flexibility is the motivation.
Its pretty incredible though how much technology they've managed to pack into those little boxes. And theres no doubt that VOIP is going to be the communication medium of choice. Dare I say the next technology revolution.
Here's some excerpts from my asterisk config files:
SIP.CONF
gshtfxs1234 ;HandyTone 488 FXS side
type=friend
callerid=”Florida House FXS”
host=dynamic
nat=yes
qualify=yes
canreinvite=no
dtmfmode=rfc2833 ;set rfc2833 in the GrandStream boxes also
mailbox=1234@default
username=gshtfxs1234
secret=password
disallow=all
allow=ilbc
gshtfxo1234 ;HandyTone 488 POTS side
type=friend
context=gshtfxs1234
callerid=”Florida House FXO”
host=dynamic
nat=yes
qualify=yes
canreinvite=no
dtmfmode=rfc2833 ;set rfc2833 in the GrandStream boxes also
mailbox=1234@default
username=gshtfxo1234
secret=password
disallow=all
allow=ilbc
extensions.conf;
gshtfxs1234
exten => s,1,Playback(transfer,skip) ; Let them know what's going on
exten => s,2,Macro(stdexten,1234,SIP/gshtfxs1234)
exten => s,3,Hangup
;
default
;GSHT-488 to Florida's Pots line
exten => _99,1,Dial(SIP/gshtfxo1234)
exten => _99,2,Congestion
333SIP Wiki