Overview
OverSIP is a SIP proxy & server built on top of Ruby EventMachine-LE async library which follows the Reactor Design Pattern.
The SIP stack of OverSIP has been tested in several environments and interoperability with other (nice) SIP devices is guaranteed.
Features
- Fully asynchronous event-based design.
- SIP over UDP, TCP, TLS and WebSocket transports.
- Full support for IPv4, IPv6 and DNS resolution (NAPTR, SRV, A, AAAA).
- Fully programmable using Ruby language.
- The perfect Outbound Edge Proxy.
Events and Callbacks
OverSIP provides user-programmable callbacks for different kinds of events. Those callbacks are custom Ruby code written by the user. Examples of OverSIP events are:
- SIP request/response received.
- Error sending a SIP request.
- WebSocket connection/disconnection.
- SIP or WebSocket inbound/outbound TLS connection.
- OverSIP starts/terminates.
- OverSIP is reloaded.
SIP Standards
OverSIP implements the following SIP specifications:
- RFC 3261 “SIP: Session Initiation Protocol”
- RFC 3263 “Locating SIP Servers”
- RFC 3326 “The Reason Header Field”
- RFC 3327 “Extension Header Field for Registering Non-Adjacent Contacts” (
Path
header) - RFC 3581 “An Extension for Symmetric Response Routing” (
rport
parameter) - RFC 4320 “Actions Addressing Identified Issues with the Non-INVITE Transaction”
- RFC 5393 “Addressing an Amplification Vulnerability in Forking Proxies”
- RFC 5626 “Managing Client-Initiated Connections” (
Outbound
mechanism) - RFC 5630 “The Use of the SIPS URI Scheme”
- RFC 5922 “Domain Certificates in SIP”
- RFC 5954 “Essential Correction for IPv6 ABNF and URI Comparison in RFC 3261”
- RFC 6026 “Correct Transaction Handling for 2xx Responses to INVITE Requests”
- draft-ietf-sipcore-sip-websocket “The WebSocket Protocol as a Transport for SIP”
Not (Yet) Implemented or Planned
Due to the nature and purpose of OverSIP, the following SIP features are not implemented:
- HTTP/SIP Authentication.
- Registration.
- Parallel forking.