Difference between revisions of "About Repro"

From reSIProcate
Jump to: navigation, search
(Key Features)
 
(25 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
{{TOCright}}
 
== Overview ==
 
== Overview ==
 
=== What is repro? ===
 
=== What is repro? ===
Line 4: Line 5:
 
repro is an open-source, free SIP server.  
 
repro is an open-source, free SIP server.  
 
SIP is changing the way people communicate using the Internet. It is not only about making phone calls over the Net.  
 
SIP is changing the way people communicate using the Internet. It is not only about making phone calls over the Net.  
The sIP protocol and its extensions defines the way of establishing, modifying and ending interactive sessions, no matter if they are voice, video, IM or a combination of them.
+
The SIP protocol and its extensions defines the way of establishing, modifying and ending interactive sessions, no matter if they are voice, video, IM or a combination of them.
At the heart of SIP architecture, there are certain services which needs to be provided at some place of the network.
+
At the heart of SIP architecture, there are certain services which need to be provided at some place in the network.
 
repro provides SIP proxy, registrar, redirect, and identity services. These services are the foundation
 
repro provides SIP proxy, registrar, redirect, and identity services. These services are the foundation
 
needed to run a SIP service.
 
needed to run a SIP service.
Line 11: Line 12:
 
=== Where can repro be used? ===
 
=== Where can repro be used? ===
  
 +
* As a basic SIP proxy participating in [[Using reSIProcate and repro for Federated VoIP|SIP federation]] on the public Internet
 
* As the central rendezvous service for peer-to-peer voice, IM, and presence services
 
* As the central rendezvous service for peer-to-peer voice, IM, and presence services
 
 
* As the core of large scale internet telephony services
 
* As the core of large scale internet telephony services
 
 
* As a tool to enforce policy at the boundary between networks or domains
 
* As a tool to enforce policy at the boundary between networks or domains
 +
* As an edge server, providing Outbound (RFC5626) and/or SIP protocol conversion services
  
 
=== What makes repro unique and valuable? ===
 
=== What makes repro unique and valuable? ===
  
* closely tracks the evolving standardization efforts
+
* Easiest SIP proxy to install and configure
* focuses on large-scale operation, including high availability
+
* Quickest way to start using SIP in [http://www.opentelecoms.org/federated-voip-quick-start-howto Federated VoIP] (analogous to running a public mail server)
* pays careful attention to both provider and subscriber security issues
+
* Closely tracks the evolving standardization efforts
 +
* Focuses on large-scale operation, including high availability
 +
* Pays careful attention to both provider and subscriber security issues
 +
 
 +
=== Getting started - Quick Start ===
 +
 
 +
* Read the [[media:Repro_1.8_Overview.pdf|repro 1.8 Overview]] document
 +
* See the [http://rtcquickstart.org RTC Quick Start Guide] based on repro
 +
* See this guide to [[ReproMutualTLSAuthenticationJitsi|Mutual TLS authentication with the Jitsi SIP client]]
  
 
=== History ===
 
=== History ===
 
+
repro officially born with this [http://list.resiprocate.org/archive/resiprocate-devel/msg00639.html message from Cullen]. It is based on the reSIProcate SIP stack.  
repro officially born with this [http://list.sipfoundry.org/archive/resiprocate-devel/msg01599.html message from Cullen]  
 
It is the most recent project under [http://www.sipfoundry.org Sipfoundry], but its foundation is based in the very stable and widely used [http://www.resiprocate.org resiprocate stack] and Dialog Usage Manager (DUM) application interface.
 
  
 
=== Project Team ===
 
=== Project Team ===
Line 34: Line 41:
  
 
* Adam Roach
 
* Adam Roach
 +
* Byron Campen
 
* Rohan Mahy
 
* Rohan Mahy
 
* Jason Fischl
 
* Jason Fischl
Line 39: Line 47:
 
* Cullen Jennings
 
* Cullen Jennings
 
* Robert Sparks
 
* Robert Sparks
 +
* [http://www.sipspectrum.com Scott Godin]
 +
* [http://www.pocock.com.au Daniel Pocock]
 +
* [http://sipez.com Daniel Petrie]
  
 
=== Licensing ===
 
=== Licensing ===
Line 47: Line 58:
  
 
* Correct and comprehensive implementation of the relevant standards from the SIP working groups
 
* Correct and comprehensive implementation of the relevant standards from the SIP working groups
* Support for multiple transport protocols over both IPv4 and IPv6
+
* Support for multiple transport protocols (UDP/TCP/TLS/DTLS) over both IPv4 and IPv6
 +
** First class [[TLSAuthentication]] support suitable for mutual TLS (with client certificates) or [[Using reSIProcate and repro for Federated VoIP|Federated VoIP]] with external peers
 
* Rigorous security mechanisms, including the newest SIP Security IETF efforts
 
* Rigorous security mechanisms, including the newest SIP Security IETF efforts
 
* Simple user management through an embedded configuration web server
 
* Simple user management through an embedded configuration web server
* Use of readily available databases (currently Berkeley DB and MySQL) to store user data.
+
* Use of readily available databases (currently Berkeley DB, MySQL and PostgreSQL) to store user data.
 +
* Use of [[RADIUS]] for user authentication using the [http://tools.ietf.org/html/draft-sterman-aaa-sip-04 draft-sterman-aaa-sip] scheme
 
* Extendable to support provider enhanced features while processing requests
 
* Extendable to support provider enhanced features while processing requests
 +
* Ability to syncronize active registration database with another node for high availability
 +
* Outbound (RFC5626) Support
 +
* [[Using reSIProcate and repro for Federated VoIP|Federated VoIP]] based on RFC 5922 (from v1.8 onwards)
 +
* Configurable and flexible [[ENUM]] dialing automatically finds SIP addresses associated with phone numbers
  
 
=== Upcoming Features ===
 
=== Upcoming Features ===
Line 62: Line 79:
 
=== Support ===
 
=== Support ===
  
The repro users can discuss with other users about their doubts/questions to the [http://list.sipfoundry.org/mailman/listinfo/repro-users repro users mailing list].  
+
The repro users can discuss with other users about their doubts/questions to the [http://list.resiprocate.org/mailman/listinfo/repro-users repro users mailing list].  
 
Several companies are in the process of putting together commercial support plans for repro, reSIProcate and DUM that are targeted at application developers and service providers. More detail to follow.
 
Several companies are in the process of putting together commercial support plans for repro, reSIProcate and DUM that are targeted at application developers and service providers. More detail to follow.
  
 
=== How to Participate ===
 
=== How to Participate ===
  
You can discuss repro ongoing development at [repro developer mailing list http://list.sipfoundry.org/mailman/listinfo/repro-devel].  
+
You can discuss repro ongoing development at [repro developer mailing list http://list.resiprocate.org/mailman/listinfo/repro-devel].  
Currently repro is held as a subtree of the reSIProcate source base at http://scm.sipfoundry.org/rep/resiprocate/.
+
Currently repro is held as a subtree of the reSIProcate source base at http://svn.resiprocate.org/rep/resiprocate/.
 
You can read how to use subversion with reSIProcate at [[Quick Subversion Checkout and Compilation HOWTO]]
 
You can read how to use subversion with reSIProcate at [[Quick Subversion Checkout and Compilation HOWTO]]
  
 
== Project Details ==
 
== Project Details ==
 +
 +
=== Working with Repro ===
 +
* [[About Repro]]
 +
* [[Using Repro]]
 +
* [[Extending Repro]]
 +
* [[Repro Internal Design]]
 +
* [[Test Plan]]
 +
* [[Repro Releases]] (Currently at Repro Capuchin)
 +
 
=== Current Features ===
 
=== Current Features ===
  
* Transports: UDP, TCP, TLS (v4 and v6)
+
* Transports: UDP, TCP, TLS, DTLS (v4 and v6)
* Platforms: Win32, Linux, Mac OS X
+
* Platforms: Windows, Linux, Mac OS X
 
* RFC 2976 compliant: INFO method
 
* RFC 2976 compliant: INFO method
 
* RFC 3261 compliant proxy and registrar
 
* RFC 3261 compliant proxy and registrar
Line 81: Line 107:
 
* RFC 3581 compliant: Symmetric Response Routing (rport)
 
* RFC 3581 compliant: Symmetric Response Routing (rport)
 
* RFC 3891 compliant: Replaces header
 
* RFC 3891 compliant: Replaces header
 +
* RFC 3320 and RFC 4077: SigComp Compression (see [[SigComp Support]]])
 +
* RFC 5626 compliant: Managing Client-Initiated Connections in SIP
 +
* RFC 4474 compliant: SIP Identity Header
 
* Extendable features
 
* Extendable features
 
* In-memory location server
 
* In-memory location server
* Embedded web server and user database for basic administration
+
* Embedded web server and user database for basic administration (BerkeleyDB and MySQL support)
* Full support for draft-ietf-sip-identity-04
 
 
* IPv6
 
* IPv6
 
=== Roadmap ===
 
[[Road Map|Road_Map]]
 
 
 
== Test Plan ==
 
=== Basic Calling Scenarios ===
 
* REGISTER/401  REGISTER/200  un-REGISTER/200
 
* INVITE/180  200/ACK  BYE/200  both directions
 
* INVITE/180  CANCEL/200/487/ACK  both directions
 
* INVITE/180  4xx/ACK as caller
 
* Make / receive basic call behind a NAT (with UDP)
 
 
=== Devices ===
 
 
* Sipura SPA-2000
 
* Cisco 7960
 
* Xten eyeBeam
 
* snom 190
 
* Cisco 3600 gateway
 
* SER proxy (running at iptel.org)
 
* Grandstream Bugetone
 
* sipXphone
 
* Vegastream phone
 
* Jasomi B2BUA
 
* M5T proxy server
 
 
=== Scenario tests ===
 
* Make a call with TCP
 
* Make a call with TLS
 
* Forking test
 
* Spiral test
 
* Loop test
 
* Basic load test - create 1000 test users, register them at certain rate, make basic calls at certain rate, specify average call duration before sending BYE.
 

Latest revision as of 19:19, 6 October 2015

Overview[edit]

What is repro?[edit]

repro is an open-source, free SIP server. SIP is changing the way people communicate using the Internet. It is not only about making phone calls over the Net. The SIP protocol and its extensions defines the way of establishing, modifying and ending interactive sessions, no matter if they are voice, video, IM or a combination of them. At the heart of SIP architecture, there are certain services which need to be provided at some place in the network. repro provides SIP proxy, registrar, redirect, and identity services. These services are the foundation needed to run a SIP service.

Where can repro be used?[edit]

  • As a basic SIP proxy participating in SIP federation on the public Internet
  • As the central rendezvous service for peer-to-peer voice, IM, and presence services
  • As the core of large scale internet telephony services
  • As a tool to enforce policy at the boundary between networks or domains
  • As an edge server, providing Outbound (RFC5626) and/or SIP protocol conversion services

What makes repro unique and valuable?[edit]

  • Easiest SIP proxy to install and configure
  • Quickest way to start using SIP in Federated VoIP (analogous to running a public mail server)
  • Closely tracks the evolving standardization efforts
  • Focuses on large-scale operation, including high availability
  • Pays careful attention to both provider and subscriber security issues

Getting started - Quick Start[edit]

History[edit]

repro officially born with this message from Cullen. It is based on the reSIProcate SIP stack.

Project Team[edit]

Although repro is an open-source project and thus several people is contributing to its development effort, there is a very talented and well reconignized project team leading this effort. Belonging to this team are:

Licensing[edit]

repro is distributed under the Vovida Software License v1.0 (Vovida)

Key Features[edit]

  • Correct and comprehensive implementation of the relevant standards from the SIP working groups
  • Support for multiple transport protocols (UDP/TCP/TLS/DTLS) over both IPv4 and IPv6
  • Rigorous security mechanisms, including the newest SIP Security IETF efforts
  • Simple user management through an embedded configuration web server
  • Use of readily available databases (currently Berkeley DB, MySQL and PostgreSQL) to store user data.
  • Use of RADIUS for user authentication using the draft-sterman-aaa-sip scheme
  • Extendable to support provider enhanced features while processing requests
  • Ability to syncronize active registration database with another node for high availability
  • Outbound (RFC5626) Support
  • Federated VoIP based on RFC 5922 (from v1.8 onwards)
  • Configurable and flexible ENUM dialing automatically finds SIP addresses associated with phone numbers

Upcoming Features[edit]

  • Support for Postgres
  • Being an Event Server
    • Presence Server
    • SIP Dialog Package Server
  (note several people think this is a bad idea)

Support[edit]

The repro users can discuss with other users about their doubts/questions to the repro users mailing list. Several companies are in the process of putting together commercial support plans for repro, reSIProcate and DUM that are targeted at application developers and service providers. More detail to follow.

How to Participate[edit]

You can discuss repro ongoing development at [repro developer mailing list http://list.resiprocate.org/mailman/listinfo/repro-devel]. Currently repro is held as a subtree of the reSIProcate source base at http://svn.resiprocate.org/rep/resiprocate/. You can read how to use subversion with reSIProcate at Quick Subversion Checkout and Compilation HOWTO

Project Details[edit]

Working with Repro[edit]

Current Features[edit]

  • Transports: UDP, TCP, TLS, DTLS (v4 and v6)
  • Platforms: Windows, Linux, Mac OS X
  • RFC 2976 compliant: INFO method
  • RFC 3261 compliant proxy and registrar
  • RFC 3263 compliant: NAPTR, SRV, A, AAAA
  • RFC 3581 compliant: Symmetric Response Routing (rport)
  • RFC 3891 compliant: Replaces header
  • RFC 3320 and RFC 4077: SigComp Compression (see SigComp Support])
  • RFC 5626 compliant: Managing Client-Initiated Connections in SIP
  • RFC 4474 compliant: SIP Identity Header
  • Extendable features
  • In-memory location server
  • Embedded web server and user database for basic administration (BerkeleyDB and MySQL support)
  • IPv6