Skip to content
Aaron Clauson edited this page Oct 6, 2021 · 8 revisions

The Wiki Content is from when this project was imported from CodePlex (which for youngsters was Microsoft's free open source code repository before they bought GitHub...). Since the import this project has evolved substantially and the reference documentation is now available at https://sipsorcery-org.github.io/sipsorcery/. This Wiki Content is kept around for posterity.

If you're a developer and just want to get up and running with a C# SIP example as fast as possible go here Developers.

The SIPSorcery project is an experiment into the depths of the Session Initiation Protocol (SIP). The project is a combination of the source code available here on CodePlex and a live service hosted at https://www.sipsorcery.com/sipsorcery.html. The project has its roots in a previous mysipswitch project which has now been deprecated.

At its heart the project consists of a C# SIP protocol stack that implements all the required UDP, TCP and TLS transports. In addition to the SIP stack a number of related protocols: STUN, SDP, RTP & RTCP are implemented to varying degrees, usually only insofar as they are required for operation of the sipsorcery.com service.

The SIP Proxy and SIP Application Server make heavy use of the Microsoft Dynamic Language Runtime with the IronRuby engine being heavily used in dialplan processing and the IronPython engine being used for the SIP Proxy control script.

There are 3 main areas the SIPSorcery project focuses on:

  • The core SIP protocol stack and associated plumbing code, contained in the sipsorcery-core source code directory.
  • The SIP server applications are:
    • SIP Proxy with dispatching mechanism for application server fault tolerance,
    • SIP Registrar,
    • SIP Registration Agent, registers contact information with 3rd party SIP providers,
    • SIP Application Server, multi-user SIP call processing using Ruby dialplans,
    • SIP Notification Server, supports the presence and dialog SIP event package notifications,
    • SIP Monitoring Server, receives and collates log messages from the other servers that can then be viewed from a web page or SSH session,
    • WatchTower Server, monitors SIP Application Servers and updates the SIP Proxy dispatch file,
    • SSH Server, uses the NSsh project to provide a multi-user SSH session for server monitoring.
  • An end-user Silverlight client application for managing the sipsorcery.com service, contained in the sipsorcery-silverlight code directory,
    • The SIP protocol stack is able to run within Silverlight allowing SIP TCP communications directly from a browser.

(The sipsorcery-softphone directory is little more than a placeholder and there are currently no plans to develop a softphone in this project, there are already heaps of softphones around)

Unlike a lot of other "SIP Server" projects SIPSorcery DOES not have media processing capabilites (this makes it similar to the SER family of applications), there is a rudimentary RTP stack in the project but nothing further, no codecs etc. This is a deliberate ommission as the goal of the project in experimenting with SIP has always been to focus on the signalling layer and not the media one.

Service at: http://www.sipsorcery.com/.
Blog at: http://blog.sipsorcery.com/.
Forum at: http://forum.sipsorcery.com/index.php.
Twitter: http://twitter.com/sipsorcery.
NuGet: https://www.nuget.org/packages/SIPSorcery/.