1RTPPROXY(8) [FIXME: manual] RTPPROXY(8)
2
3
4
6 rtpproxy - RTP (Real-time Transport Protocol) Proxy Server
7
9 rtpproxy [-?] [-2] [-f] [-v] [-V] [-R] [-l addr1[/addr2]]
10 [-6 addr1[/addr2]] [-s ctrl_socket] [-t tos] [-p pidfile]
11 [-T max_ttl] [-r rdir [-S sdir]] [-L nofile_limit]
12 [-A advaddr1[/advaddr2]] [-m min_port] [-M max_port]
13 [-u uname[:gname]] [-w sock_mode] [-F] [-i]
14 [-n timeout_socket] [-P] [-a] [-d log_level[:log_facility]]
15 [-W setup_ttl]
16
18 rtpproxy is a symmetric RTP proxy designed to be used in conjunction
19 with the SIP Express Router (SER) or any other SIP proxy or SIP B2BUA
20 capable of rewriting SDP bodies in SIP messages that it processes.
21
22 The main purpose of rtpproxy is to make the communication between SIP
23 user agents behind NAT(s) (Network Address Translator) possible.
24 Several cases exists when direct end-to-end communication is not
25 possible and RTP streams have to be relayed through another host.
26 Rtpproxy can be used to setup such a relaying host.
27
28 When two listen interfaces have been specified using the command line
29 parameters described below then rtpproxy will enter so called bridging
30 mode. In briding mode rtpproxy forwards RTP packets received on one
31 interface to the other interface and vice versa. This mode can be used
32 to forward RTP packets between networks without direct network level
33 connectivy (provided that the host running rtpproxy has one interface
34 in both of them). One particular application of bridging mode is
35 IPv4/IPv6 traversal of RTP packets.
36
37 When instructured by SER rtpproxy can also record the entire RTP
38 session in a file on a local harddisk or play a pre-recorded file to
39 the user agent (so called Music-on-Hold).
40
42 -?
43 Show summary of options.
44
45 -2
46 Send every RTP packet twice in sessions that use low-bitrate
47 codecs. Only packets that are smaller than 128 bytes will be sent
48 twice. This option can improve audio quality on lossy links.
49
50 -f
51 Rtpproxy will stay in foreground mode if this option is set.
52
53 -v
54 Show version of program.
55
56 -V
57 Show command protocol version.
58
59 -l addr1[/addr2]
60 IPv4 listen IP address(es). You can specify either one or two
61 addresses. If two addresses have been specified then rtpproxy will
62 work in bridging mode.
63
64 -6 addr1[/addr2]
65 IPv6 listen IP address(es). You can specify either one or two
66 addresses. If two addresses have been specified then rtpproxy will
67 work in bridging mode.
68
69 -s ctrl_socket
70 This parameter configures rtpproxy control socket. The control
71 socket is used by nathelper module of SER to create/modify/delete
72 RTP sessions to be relayed. Format of ctrl_socket is
73 <type>:<socket>. Following types are supported:
74
75 · udp: Create UDP control socket. In this mode RTPProxy will
76 listen on UDP for control messages from SER/nathelper.
77
78 Example: -s udp:127.0.0.1:9000
79
80 IP address can be '*' in which case rtpproxy will listen on all
81 local interfaces. If omitted port 22222 is used.
82
83 Note
84 RTPProxy control protocol has no built-in security
85 mechanisms. Make sure that you protect the listening IP and
86 port properly when using RTPProxy with UDP control socket.
87
88 · udp6: Create IPv6 UDP control socket. In this mode RTPProxy
89 will listen on UDP/IPv6 for control messages from
90 SER/nathelper.
91
92 Example: -s udp6:::1:9000
93
94 · unix: Create UNIX domain socket for control interface. In this
95 mode SER/nathelper and RTPProxy must be running on the same
96 host. This is the default setting for both SER/nathelper and
97 rtpproxy.
98
99 Example: -s unix:/var/run/rtpproxy.sock
100
101 Default value is /var/run/rtpproxy.sock.
102
103
104 -t tos
105 Set ToS (Type of Service) in the outgoing UDP packets to this
106 value. Default value is 0xB8. Setting this parameter to -1 disables
107 setting ToS resulting in operating system default ToS being used
108 instead.
109
110 -r rec_dir
111 Directory where recorded RTP sessions will be stored.
112
113 -S spool_dir
114 Spool directory for RTP sessions being recorded. The file will be
115 moved to directory configured in -r option after the session
116 finishes.
117
118 -R
119 Do not record RTCP when recording an RTP session. This option is
120 disabled (rtpproxy will record RTCP) by default.
121
122 -p pid_file
123 This parameter configures the name of the file where PID of running
124 rtpproxy will be stored. Default is /var/run/rtpproxy.pid.
125
126 -T max_ttl
127 Limit the maximum TTL (Time To Live) of outgoing IP packets to the
128 value of max_ttl.
129
130 -L nofile_limit
131 Adjust the number of simultaneous open connections. Please note
132 that each RTP media stream requires four open connections. A SIP
133 call can open more than one RTP media stream depending on the
134 client's setup.
135
136 -A advaddr1[/advaddr2]
137 Setup advertised address if necessary.
138
139 -m min_port
140 Set lower limit on UDP ports range that the RTPproxy uses for
141 RTP/RTCP sessions to min_port. Default is 35000.
142
143 -M max_port
144 Set upper limit on UDP ports range that the RTPproxy uses for
145 RTP/RTCP sessions to max_port. Default is 65000.
146
147 -u uname[:gname]
148 Switch RTPproxy to UID identified by the uname and optional GID
149 identified by gname when proxy is up and running.
150
151 -w sock_mode
152 Set access mode for the controlling UNIX-socket (if used). Only
153 applies if RTPproxy runs under a different GID using -u option.
154
155 -F
156 By default the RTPproxy will warn user if running as superuser (UID
157 0) in local control mode and refuse to run in remote control mode
158 at all. This switch removes the check.
159
160 -i
161 Enable independent timeout mode. By default, a timeout (which
162 results in automatic destruction of the session) can only occur if
163 no RTP packets are received on any of the session's ports. This
164 option if set varies that behaviour, such that a timeout will occur
165 if packets are still being received on one port but not the other.
166 The option should be used with caution since in some cases it's
167 perfectly fine to have packets coming from only one side of
168 conversation (i.e. when the second party has muted its audio).
169
170 -n timeout_socket
171 This parameter configures the optional timeout notification socket.
172 The socket should be created by another application, preferably
173 before starting rtpproxy. For those sessions where the timeout
174 mechanism is enabled, notifications are sent on this socket if the
175 session times out.
176
177 Format of timeout_socket is <type>:<socket>. Following types are
178 supported:
179
180 · unix:Connect to UNIX domain socket for sending timeout
181 notifications. In this mode B2BUA and RTPProxy must be running
182 on the same host.
183
184 Example: -n unix:/var/run/rtpproxy_timeout.sock
185
186 · tcp:Connect to a remote host using TCP/IP for sending timeout
187 notifications. Format of the socket parameter in this case is
188 <host>:<port>.
189
190 Example: -n tcp:10.20.30:12345
191
192 There is no default value, notifications are not sent and not
193 permitted unless a value is specified explicitly.
194
195 -P
196 Record sessions using PCAP file format instead of non-standard
197 ad-hoc format. The PCAP format, which is the de-facto standard for
198 packet capturing software, has the advantage of being compatible
199 with numerous third-party tools and utilities, such as Wireshark
200 (Ethereal) for example. The drawback of PCAP is sligtly larger
201 overhead (extra 12 bytes for every saved RTP packet for IPv4).
202 Also, recording IPv6 sessions in PCAP format is not supported at
203 the moment.
204
205 -a
206 Record all sessions going through the RTPproxy unconditionally. By
207 default the RTPproxy requires call control software (i.e. SER,
208 OpenSER or B2BUA) to enable recording explicitly on per-session
209 basis by sending appropriate record command.
210
211 -d log_level[:log_facility]
212 This parameter configures the verbosity level of the log output.
213 Possible log_level values in the order from the most verboe to the
214 least verbose are: DBUG, INFO, WARN, ERR and CRIT.
215
216 The optional log_facility parameter sets syslog(3) facility
217 assigned to log messages.
218
219 Example: -d WARN:LOG_LOCAL5
220
221 The default level in foreground mode is is DBUG, in background -
222 WARN and facility is LOG_DAEMON.
223
225 When SER receives an INVITE request, it extracts Call-ID from it and
226 communicates it to rtpproxy via Unix domain socket or UDP. Rtproxy
227 looks for an existing session with such Call-ID. If the session exists
228 it returns UDP port for that session, if not, then it creates a new
229 session, binds to a first empty UDP port from the range specified at
230 the compile time and returns number of that port to a SER. After
231 receiving reply from the proxy, SER replaces media ip:port in the SDP
232 to point to the proxy and forwards request as usually.
233
234 When SER receives a non-negative SIP reply with SDP it again extracts
235 Call-ID from it and communicates it to the proxy. In this case the
236 proxy does not allocate a new session if it doesn't exist, but simply
237 performs a lookup among existing sessions and returns either a port
238 number if the session is found, or error code indicating that there is
239 no session with such id. After receiving positive reply from the proxy,
240 SER replaces media ip:port in the SIP reply to point to the proxy and
241 forwards reply as usually.
242
243 After the session has been created, the proxy listens on the port it
244 has allocated for that session and waits for receiving at least one UDP
245 packet from each of two parties participating in the call. Once such
246 packet is received, the proxy fills one of two ip:port structures
247 associated with each call with source ip:port of that packet. When both
248 structures are filled in, the proxy starts relaying UDP packets between
249 parties.
250
251 The proxy tracks idle time for each of existing sessions (i.e. the time
252 within which there were no packets relayed), and automatically cleans
253 up a sessions whose idle times exceed the value specified at compile
254 time (60 seconds by default).
255
257 /usr/sbin/rtpproxy
258
260 This program is licensed under the BSD license. See COPYING file in the
261 rtpproxy sources for details.
262
264 The latest version of this program can be found at
265 http://www.rtpproxy.org/.
266
268 ser(8).
269
271 Maxim Sobolev
272 Author.
273
275 Copyright © 2006 janakj
276
277
278
279[FIXME: source] Jun 16, 2008 RTPPROXY(8)