Multiplier is used to load test stun / turn servers. In this article lets focus on how to test Google turn server. The Google Coturn server is one of best turn server around. It is a highly scalable turn server capable of serving STUN / TURN / ICE service to thousand of WebRTC clients at peak load condition. Multiplier interacts with Coturn server during WebRTC call setup for STUN resolution / TURN allocation and channel setup / ICE connectivity checks. By increasing number of endpoints and more rps (rates per second) in multiplier user can easily put more load on Coturn server and check its maximum traffic handling capacity.
If it is just STUN resolution or TURN allocations / channel setup, probably call setup / signalling is not required. Multiplier can directly load the Coturn just with proper configurations. But when you want to have ICE connectivity check, that time both calling and called party should know each others media attributes like port, ip address, rtp / rtcp candidates etc. Hence you need to have signalling for ICE connectivity testing.
In above diagram, you can see Multiplier interacts with JForwarder for signalling. JForwarder is an in-house product capable of routing JSON format messages among peers. Before signalling starts, originating party interacts with Coturn server for STUN resolution / Turn allocation. Next it sends its offer to JForwarder in a proprietary format JSON message. JForwarder routes the originating party's offer to terminating party, terminating party interacts with Coturn server for STUN resolution / Turn allocation. Next terminating party sends its answer to JForwarder and JForwarder routes it to originating party.
Now both originating and terminating party know each others media attributes, ICE candidates etc. Next each start ICE connectivity with role as controlling / controlled. After ICE connectivity done, media starts flowing between originating and terminating side.
Multiplier supports wide range of features listed below.
- Signalling - HTTP, JSON, XML, Socket IO, Any Text, Any Binary, Any Text + Binary combined
- Transport - UDP, TCP, SCTP, TLS, DTLS, Websocket, Secured Websocket
- Media Codecs - PCMU, PCMA, AMR-NB, AMR-WB, OPUS, VP8
- Media Security - SRTP / DTLS
- NAT - STUN, TURN, ICE, ICE Lite
- Others - Audio / Video recording, text templates, binary templates, variables / functions
There are couple of working examples given below for your reference, to access it you need to login.
- Basic call [transport websocket | media srtp / dtls | rtpc mux enabled | codec opus]
- Basic call [transport websocket | media srtp / dtls | rtpc mux disabled | codec opus]
- Basic call [transport websocket | media srtp / dtls | rtpc mux enabled | codec opus/vp8]
- Basic call [transport websocket | media srtp / dtls | rtpc mux disabled | codec opus/vp8]
There are more examples. For all examples please refer examples page.
Please note that the examples given are valid for a particular multiplier release. For next releases it should work, sometimes certain syntax are deprecated / added / removed. To be sure of current syntax support, you may like to check latest user guide.