GithubHelp home page GithubHelp logo

vipjaven / rtpproxy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sippy/rtpproxy

0.0 1.0 0.0 2.7 MB

The RTPproxy is a high-performance software proxy for RTP streams that can work together with Sippy B2BUA, Kamailo, OpenSIPs and SER.

Home Page: http://rtpproxy.org

License: BSD 2-Clause "Simplified" License

C 38.17% Shell 29.75% C++ 23.85% Python 7.61% Makefile 0.62%

rtpproxy's Introduction

Build Status

About

The RTPproxy is a high-performance software proxy for RTP streams that can work together with SER or OpenSER. Originally created for handling NAT scenarios it can also act as a generic media relay as well as gateway RTP sessions between IPv4 and IPv6 networks. RTPproxy was developed by Maxim Sobolev and now is being actively maintained by the Sippy Software, Inc.

The RTPproxy supports some advanced features, such as remote control mode, allowing building scalable distributed SIP VoIP networks. The nathelper module included into the SER or OpenSER SIP Proxy software allows using multiple RTPproxy instances running on remote machines for fault-tolerance and load-balancing purposes.

The software also supports video relaying and RTP session recording.

How it works

This proxy works as follows:

  • When SER receives INVITE request, it extracts call-id from it and communicates it to the proxy via Unix domain socket. Proxy looks for an existing sessions with such id, if the session exists it returns UDP port for that session, if not, then it creates a new session, binds to a first empty UDP port from the range specified at the compile time and returns number of that port to a SER. After receiving reply from the proxy, SER replaces media ip:port in the SDP to point to the proxy and forwards request as usually;

  • when SER receives non-negative SIP reply with SDP it again extracts call-id from it and communicates it to the proxy. In this case the proxy does not allocate a new session if it doesn't exist, but simply performs a lookup among existing sessions and returns either a port number if the session is found, or error code indicating that there is no session with such id. After receiving positive reply from the proxy, SER replaces media ip:port in the SIP reply to point to the proxy and forwards reply as usually;

  • after the session has been created, the proxy listens on the port it has allocated for that session and waits for receiving at least one UDP packet from each of two parties participating in the call. Once such packet is received, the proxy fills one of two ip:port structures associated with each call with source ip:port of that packet. When both structures are filled in, the proxy starts relaying UDP packets between parties;

  • the proxy tracks idle time for each of existing sessions (i.e. the time within which there were no packets relayed), and automatically cleans up a sessions whose idle times exceed the value specified at compile time (60 seconds by default).

Support

Open a ticket on the github issue tracker, or post a message on the mailing list

Commercial support is available from the Sippy Software, Inc. - visit http://www.sippysoft.com for details.

rtpproxy's People

Contributors

lemenkov avatar sobomax avatar taisph avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.