This is a technology demo integrating Sippy RTPProxy and Sippy B2BUA with WebRTC-compatible clients. It includes four main components:
- Sippy B2BUA.
- Sippy RTPProxy.
- SIP.js demo application.
- Web server.
The container starts RTPProxy and B2BUA listening on WSS port 9876/TCP
, and
a web server on HTTPS port 443/TCP
. Both share the same self-signed TLS key
generated during the container build process. This allows users to open the
demo page and connect their browser to the B2BUA over WSS.
The only role of the HTTPS server is to allow user to download HTML/JS, it has no role in the actual real-time session so that particular component can be externalized.
Any registation attempts coming via the WSS socker are proxied to the external
SIP registrar controlled by the OUTBOUND_PROXY
environment variable via
SIP/UDP
.
When the user initiates a call, the B2BUA/RTPProxy sets up two RTP sessions
(one encrypted and one plain) and initiates an outbound SIP call to the SIP
destination controlled by the OUTBOUND_ROUTE
environment variable. See
Call Routing
section of the Sippy B2BUA documentation for this parameter format.
When no OUTBOUND_ROUTE
is provided, OUTBOUND_PROXY
will be used instead
as the only route to attempt.
docker pull sippylabs/webrtc_phone:latest
docker run -it --name webrtc_phone -P --network=host \
-e OUTBOUND_PROXY="sip.mypbx.net" -d sippylabs/webrtc_phone:latest
The container produces various SIP/RTP/WSS logs that can be inspected using
the docker logs
command. The amount of RTP logs can be controlled by the
RTPP_LOG_LEVEL
environment variable. Possible values are DBUG
, INFO
,
WARN
, ERR
, and CRIT
(in decreasing order of verbosity).
With the current configuration a single container should be able to support
up to 500 concurrent users fully utilizing up to 5-6 cores. If you try to
use it in a performance-critical scenario make sure to supply RTPP_NODEBUG=1
when running the container.
Specific range of UDP ports allocated by the RTPProxy can be controlled
by the MIN_RTP_PORT
and MAX_RTP_PORT
parameters. At this moment each
session allocates 4 ports, so that the range should be at least expected
maximum number of simultaneous sessions times 4.
- Connection to the WSS server will fail with error
1015
in Firefox. It works in Chrome and Microsoft Edge as long as the user accepts the security warning when opening the demo page. This is caused by the usage of the self-signed certificate. - Only
Demo 1
andDemo 2
works. - Due to the need for a range of UDP ports for RTP sessions (2,000 by default),
the usage of the
host
network is recommended.