Show last authors
1 // Documentation based on repostory git version commit 2.2.0-alpha-10-ge6a6109b //
2
3 =Module MediaRelay=
4
5 The MediaRelay module masquerades SDP message so that all RTP and RTCP streams go through the proxy. When the client has set ICE candidates in the SDP offer, then the MediaRelay module will automatically add ICE relay candidates. The RTP and RTCP streams are then routed so that each client receives the stream of the other. MediaRelay makes sure that RTP is ALWAYS established, even with uncooperative firewalls.
6 {{{--}}}{{{--}}}
7
8 Configuration options:
9 |=(% style="text-align: center; border: 1px solid #999" %)Name|=(% style="text-align: center; border: 1px solid #999" %)Description|=(% style="text-align: center; border: 1px solid #999" %)Default Value|=(% style="text-align: center; border: 1px solid #999" %)Type
10 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)enabled|(% style="text-align: left; border: 1px solid #999" %)(((Indicate whether the module is activated~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##true##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean
11 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)filter|(% style="text-align: left; border: 1px solid #999" %)(((A request~/response enters module if the boolean filter evaluates to true~. Ex~: from~.uri~.domain contains ~'sip~.linphone~.org~'~, from~.uri~.domain in ~'a~.org b~.org c~.org~'~, ~(to~.uri~.domain in ~'a~.org b~.org c~.org~'~) ~&~& ~(user~-agent ~=~= ~'Linphone v2~'~)~. You can consult the full filter documentation here ~: https~:~/~/wiki~.linphone~.org~/xwiki~/wiki~/public~/view~/Flexisip~/Configuration~/Filter~%20syntax~/)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ####|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)BooleanExpr
12 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)nortpproxy|(% style="text-align: left; border: 1px solid #999" %)(((The name of the SDP attribute to set by the first proxy to forbid subsequent proxies to provide relay~. Use ~'disable~' to disable~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##nortpproxy##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)String
13 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)sdp-port-range-min|(% style="text-align: left; border: 1px solid #999" %)(((The minimal value of SDP port range)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##1024##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Integer
14 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)sdp-port-range-max|(% style="text-align: left; border: 1px solid #999" %)(((The maximal value of SDP port range)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##65535##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Integer
15 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)bye-orphan-dialogs|(% style="text-align: left; border: 1px solid #999" %)(((Sends a ACK and BYE to 200Ok for INVITEs not belonging to any established call~. This is to solve the race condition that happens when two callees answer the same call at the same time~. According to RFC3261~, the caller is expected to send an ACK followed by a BYE to the loser callee~. This is not the case in RFC2543~, where the proxy was supposed to do this~. When set to true~, the MediaRelay module will implement the RFC2543 behavior~. Note that it may sound inappropriate to bundle this property with the media relay feature~. However the MediaRelay module is the only one in Flexisip that has the visibility of SIP dialogs~, which is necessary to implement this feature~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##false##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean
16 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)max-calls|(% style="text-align: left; border: 1px solid #999" %)(((Maximum concurrent calls processed by the media~-relay~. Calls arriving when the limit is exceed will be rejected~. A value of 0 means no limit~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##0##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Integer
17 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)force-relay-for-non-ice-targets|(% style="text-align: left; border: 1px solid #999" %)(((When true~, the ~'c~=~' line and port number are set to the relay ip~/port even if ICE candidates are present in the request~, while the standard behavior is to leave the c~= line and port number as they are in the original offer sent by the client~. This variation allows callees that do not support ICE at all to benefit from the media relay service~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##true##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean
18 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)prevent-loops|(% style="text-align: left; border: 1px solid #999" %)(((Prevent media~-relay ports to loop between them~, which can cause 100~% cpu on the media relay thread~. You need to set this property to false if you are running test calls from clients running on the same IP address as the flexisip server)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##true##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean
19 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)early-media-relay-single|(% style="text-align: left; border: 1px solid #999" %)(((In case multiples ~'183 Early media~' responses are received for a call~, only the first one will have RTP streams forwarded back to caller~. This feature prevents the caller to receive ~'mixed~' streams~, but it breaks scenarios where multiple servers play early media announcement in sequence~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##true##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean
20 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)max-early-media-per-call|(% style="text-align: left; border: 1px solid #999" %)(((Maximum number of relayed early media streams per call~. This is useful to limit the cpu usage due to early media relaying on embedded systems~. A value of 0 stands for unlimited~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##0##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Integer
21 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)inactivity-period|(% style="text-align: left; border: 1px solid #999" %)(((Period of time in seconds~, after which a relayed call without any activity is considered as no longer running~. Activity counts RTP~/RTCP packets exchanged through the relay and SIP messages~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##3600##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Integer
22 |=(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)force-public-ip-for-sdp-masquerading|(% style="text-align: left; border: 1px solid #999" %)(((Force the media relay to use the public address of Flexisip to relay calls~. It not enabled~, Flexisip will deduce a suitable IP address by basing on data from SIP messages~, which could fail in tricky situations e~.g~. when Flexisip is behind a TCP proxy~.)))|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %) ##false##|(% style="text-align: center; vertical-align: middle; border: 1px solid #999" %)Boolean