Project

General

Profile

Routing guide » History » Version 2

Tijmen de Mes, 10/11/2012 11:58 AM

1 1 Tijmen de Mes
h1. Routing guide
2
3
The platform is based on a SIP Proxy/Registrar design, it maintains both transaction and dialog state for each SIP session and is able to terminate each of them based on various criteria. The platform handles and controls the RTP and MSRP media planes and is able to take decisions related to accounting, NAT traversal and session termination based on the media flow.
4
5
The platform has telephony functions equivalent with traditional Class 4 switches (routing inter-carrier calls) and Class 5 switches (routing last-mile calls to end-users).
6
7
The platform can perform SIP services that include but are not limited to Residential VoIP, Prepaid Cards, Video Calling, Presence and IM, Trunking, Least Cost Routing and ENUM Peering.
8 2 Tijmen de Mes
9
h2. Logical Architecture 
10
11
[[Image(msp-interconnect.png)]]
12
13
== SIP Entities ==
14
15
This document describes routing logic between several SIP entities defined as follows:
16
17
 1. SIP Proxy: the platform core that performs the logic described in this document
18
 1. End-Point: a SIP end-user device that is configured with the credentials of a SIP account for which the platform is responsable
19
 1. PBX: a SIP end-point or intermediary that is configured under a foreign SIP domain not handled by the platform 
20
 1. PSTN gateway: a SIP end-point or intermediary that is handling the translation between IP (using SIP protocol) and PSTN networks
21
22
== Supported Signaling ==
23
24
The platform supports only UDP transport at a unique IP:port combination configured in the server. By default the port is 5060.
25
26
== Supported Media ==
27
28
The platform supports sessions containing the following media types:
29
30
 * Audio (RTP and sRTP)
31
 * Video (RTP and sRTP)
32
 * FAX (RTP and T.38)
33
 * Instant messaging (MSRP and its relay extension)
34
 * File transfer (MSRP and its relay extension)
35
 * Page mode messaging (SIP MESSAGE method)
36
37
The platform is codec agnostic, the negotiation of the codecs depends entirely on the end-points. The MediaProxy component that relays the RTP media between the end-points, for NAT traversal and accounting purposes, relays all packets at IP layer 3 (UDP protocol that encapsulates the RTP/RTCP streams). The actual payload with the particular codecs used inside the RTP streams is transparently passed between end-points without interference from MediaProxy. 
38
39
Other payloads are supported as long as they are embedded into a supported stream, for example any payload that is embedded within the RTP streams (zRTP, DTMF tones) or MSRP streams (file transfer, multy-party chat service, desktop sharing).
40
41
== Primitives ==
42
43
The routing of SIP sessions is governed by two main protocols:
44
45
 1. Domain based SIP routing based on RFC3261 and RFC3263
46
 1. ENUM lookups based on RFC3761
47
48
The routing logic of the platform can be configured by changing its database tables and configuration files. The primitives used for routing are:
49
50
|| Registrar database || Used to translate  a SIP address into a SIP contact address ||
51
|| ENUM|| Used to translate an E.164 telephone number into a SIP address ||
52
|| SIP alias || Used for adding aliases to existing SIP accounts||
53
|| Emergency numbers || Translation between 911 and 112 into closest emergency access points||
54
|| Call diversion|| Translate  a SIP address into another based on signaling conditions or end-user preferences||
55
|| DNS lookups || Translate a SIP domain/hostname into an protocol:IP:port combination ||
56
|| LCR|| Used for selection of PSTN gateway ||
57
58
== Server Location ==
59
60
To locate the SIP Proxy/Registrar for a domain, SIP endpoints must perform DNS lookups based on RFC3263 that return the IP:port combination for which the server is configured.  
61
62
== Configuration Files ==
63
64
Index of SIP Proxy configuration files located  in/etc/opensips/:
65
66
|| config/settings.m4 || Contains the settings that can customize the routing logic ||
67
|| config/opensips.m4 || Contains the proxy routing logic (should not be modified) ||
68
|| config/siteconfig/handle-incoming-pstn.m4 || Used to customize routing logic for incoming PSTN calls ||
69
|| config/siteconfig/handle-local-extensions.m4 || Used to define installation specific custom local extensions ||
70
|| config/siteconfig/handle-outgoing-peers.m4 || Used to customize routing for outgoing calls to non-local domains ||
71
|| config/siteconfig/postprocess-request.m4 || Used to customize outgoing requests before they leave the proxy ||
72
|| config/siteconfig/preprocess-pstn.m4 || Used to customize outgoing PSTN requests before applying LCR routing ||
73
|| config/siteconfig/preprocess-request.m4 || Used to apply custom pre-processing to a request before anything else ||
74
|| config/siteconfig/preprocess-uri.m4 || Used to apply custom pre-processing to the request URI before converting to E164 ||
75
76
The settings.m4 file is used to customize the existing routing logic defined in opensips.m4 using the predefined routing options.
77
[[BR]]
78
The files under the siteconfig/ directory can contain installation specific routing logic, which will be included by opensips.m4 and will allow for the routing logic to be adapted to the specific requirements of a given installation.
79
The opensips.m4 file will always be overwritten on upgrades, so it should never be modified, while the files under the siteconfig/ directory will never be overwritten and can be modified without restrictions.
80
81
== NAT Traversal ==
82
83
NAT traversal methods encountered in the field and their properties: 
84
85
 * SIP server based (Relay) - reliable server side technology that works with all SIP clients, this method is used by the platform 
86
 * SIP client based (ICE) - client and server technology where client may negotiate media paths, is supported by the platform
87
 * Intermediates based:
88
  * NAT routers with SIP Application Level Gateway (SIP ALG) - located in customer premises network and the most '''unreliable''' technique 
89
  * Sessions Border Controllers (SBC) - located in service provider network - reliable with high cost and high complexity 
90
91
The most reliable way to solve NAT issues with SIP is server based, by relaying packets using servers visible by both end-points. A new methodology under development is ICE, which relies partially on the SIP clients. NAT traversal applied in intermediates only introduce problems and SBCs add costs without adding value to the SIP service. 
92
93
Below is a display of all possible NAT traversal techinques used for SIP and related media.
94
95
[[Image(nat-traversal-techniques.png)]]
96
97
The platform handles the NAT traversal for all its end-points by relaying all traffic, signaling and media through its servers that have public IP address and are visible for both end-points involved in a call flow. 
98
99
Optional, [http://mediaproxy-ng.org/wiki/ICE ICE can be deployed] when supported by the end-points. The media relay acts like a TURN candidate and the operator may choose on a per call basis when and how this relay is to be used. When using ICE, SIP sessions that do not have a BYE cannot be accounted for. 
100
101
NAT traversal is not the same thing as Firewall traversal. A firewall has an administrative policy, which must be set to support SIP and associated media traffic. 
102
103
=== Platform Ports ===
104
105
See the [wiki:MSPInstallation#Firewallsetup Firewall Setup] section for a list of ports used by the platform software.
106
107
> Make sure that NAT traversal functions related to SIP known as [wiki:FAQ_3849 SIP ALG functionality] in the NAT routers are disabled. 
108
109
== AAA ==
110
111
Authentication, Authorization and Accounting are performed depending on particular call flows as follows:
112
113
=== Authentication ===
114
115
The trust relationship between SIP subscribers and SIP Proxy is based on DIGEST algorithm, both have a database with shared credentials. 
116
117
==== Sessions ====
118
 
119
Authentication for INVITE requests based on two methods:
120
121
 1. '''SIP credentials''', when the From header contains a domain served by the platform. The From header presented by the device must match the credentials used for authentication.
122
 1. '''Trusted peer''' identified by IP address, used when the From header contains a remote domain and the request URI is not a local SIP address.
123
124
By default, incoming SIP sessions from remote domains to local SIP accounts served by the platform are not authenticated and always authorized. 
125
126
For Instant Messaging and File transfers, MSRP relay reservations are authenticated using the same credentials for each SIP account.
127
128
==== Register ====
129
130
Authentication for REGISTER methods is based on SIP credentials, this method can be used only by local SIP accounts and will not be relayed outside the platform. The From header presented by the SIP device must match the credentials used for authentication.
131
132
==== Presence ====
133
134
The platform provides a Presence Agent that handles PUBLISH, SUBSCRIBE and NOTIFY methods based on SIP SIMPLE standards. The following event packages are supported:
135
136
 * presence
137
 * presence.winfo
138
139
Authentication for PUBLISH is based on SIP credentials, this methods can be used only by local SIP accounts  and will not be relayed outside the platform. The From header presented by the SIP device must match the credentials used for authentication. Authentication for SUBSCRIBE  requests are based on SIP credentials, when the From header contains a domain served by the SIP Proxy. 
140
141
SUBSCRIBE requests from remote domains are allowed without authentication when the request URI is a local SIP address served by the platform. 
142
143
SUBSCRIBE for the events message-summary and presence.winfo are allowed only for local users.
144
145
XCAP requests are authenticated using the same credentials for each SIP account.
146
147
The following XCAP documents are supported:
148
149
 * pres-rules
150
 * resource-lists
151
 * rls-services
152
 * xcap-caps
153
154
=== Authorization ===
155
156
==== Sessions ====
157
158
Authorization for outgoing SIP sessions can be performed for local SIP accounts based on:
159
160
 1. Access to PSTN
161
 1. Administrative blocking
162
 1. Monthly quota usage
163
 1. Prepaid balance
164
 1. Call barring (user driven)
165
 1. Custom SIP Proxy logic
166
167
Authorization for incoming SIP sessions can be performed for local SIP accounts based on:
168
169
 1. Administrative blocking
170
 1. Accept based on caller
171
 1. Accept based on time of day
172
 1. Reject  based on caller id
173
 1. Custom SIP Proxy logic
174
175
Automatic session cut-off
176
177
SIP sessions can be terminated forcefully by the platform based on the following conditions:
178
179
 1. Prepaid balance exceeded (in real time)
180
 1. Monthly quota exceeded (on the next call)
181
 1. Maximum call duration exceeded
182
 1. RTP media timeout
183
184
==== Presence ====
185
186
Authorization for SUBSCRIBE for the presence event can be performed for local SIP accounts based on:
187
188
 1. XCAP pres-rules document
189
 1. Trusted peers
190
  
191
=== Accounting ===
192
193
All SIP and RTP sessions are accounted by using RADIUS requests. See [wiki:AccountingGuide accounting guide for more information].
194
195
== End-Point to End-Point ==
196
197
[[Image(flow-sip-phone-a-b.png, width=600)]]
198
199
|| Authentication || SIP account A ||
200
|| Authorization || SIP account A ||
201
|| Billing party || SIP account A ||
202
|| Accounting || Postpaid, Prepaid ||
203
|| Media types || RTP (audio and video), Presence, MSRP (Instant messaging and file transfers) ||
204
|| Address resolution || SIP address, SIP alias, Quickdial, ENUM ||
205
|| From header || Must contain a local SIP domain||
206
207
=== Quick Dial ===
208
209
Quick dial is a per SIP account feature that allows to dial short numbers to match other SIP accounts in the same number range. The SIP Proxy will try to autocomplete the number to form a full address. To use this feature:
210
211
 1. The username part of the SIP account must be numeric (example 31208005169@ag-projects.com)
212
 2. The '''quickdial''' attribute of the SIP account must be set to a substring matching the beginning of the username (e.g. 312080051).     
213
 3. When user dials 60 the example above, the SIP Proxy will concatenate the quickdial set to 312080051 with the dialed number 60 and try 31208005160@ag-projects.com as destination. 
214
215
== End-Point to PBX ==
216
217
[[Image(flow-sip-phone-a-pbx-b.png, width=600)]]
218
219
|| Authentication || SIP account A ||
220
|| Authorization || SIP account A ||
221
|| Caller Id || Asserted by the platform ||
222
|| Billing party || SIP account A ||
223
|| Accounting || Postpaid, Prepaid ||
224
|| Media types || RTP (audio) ||
225
|| Address resolution || ENUM ||
226
|| From header || Must contain a local SIP domain||
227
228
== PBX to PBX ==
229
230
[[Image(flow-pbx-a-pbx-b.png, width=600)]]
231
232
The PBX has its own accounts and connected devices. Requests originating from a PBX cannot be therefore authorized based on username/password combinations as they are not provisioned in the platform subscriber database, they are locally managed by the PBX owner. The traffic generated by the PBX can be only identified by its source IP address(es). To allow traffic from a PBX, the platform uses the concept of trusted peers. A trusted peer is an IP address that is allowed to route SIP calls through the platform without digest authorization. Beware that, no checks are done by the proxy related to the incoming caller identity, as long as the SIP sessions originate from the trusted IP address. Once you trust an IP address, you trust all traffic generated by it.
233
234
|| Authentication || None ||
235
|| Authorization || Trusted peer A ||
236
|| Caller Id || Supplied by trusted peer A ||
237
|| Billing party || Trusted peer A ||
238
|| Accounting || Postpaid ||
239
|| Media types || RTP (audio) ||
240
|| Address resolution || ENUM ||
241
|| From header || Must contain a non-local SIP domain||
242
243
 * The domain name used by the PBX in the From field must be different than any domain served by the SIP Proxy otherwise the Proxy will challenge the session for credentials as it does for any other locally registered SIP account.
244
 * To route incoming traffic for a number block assigned to the PBX, create ENUM entries that point to the hostname (or IP address) of the PBX. 
245
246
== End-Point to PSTN ==
247
248
For interconnection with PSTN, a SIP trunking service must be setup between the SIP Proxy and the PSTN gateway provider. The authorization of SIP requests is based on transitive trust. The SIP Proxy has a trust relationship with each SIP subscriber and the PSTN gateway has a trust relation with the SIP Proxy. The trust relation between the SIP Proxy and the PSTN gateway is based on the IP addresses. The PSTN gateway cannot use DIGEST authentication in the relation with the SIP Proxy because it does not have access to the SIP accounts database of the SIP Proxy.
249
250
=== PSTN Gateway Requirements ===
251
252
Must have:
253
254
 * SIP signaling based on RFC 3261
255
 * DNS lookups based on RFC 3263
256
 * Support for SIP extensions for caller id and privacy (P headers)
257
 * RTP active mode (send RTP data as soon as call setup is completed)
258
 * Use public routable IP addresses for both signaling and media
259
260
Recommended:
261
262
 * ENUM lookups based on RFC 3761
263
264
Routing to PSTN destinations is realized by provisioning the PSTN carriers, gateways and routes (also known as Least Cost Routing engine or LCR). The structure of the PSTN provisioning is as follows:
265
266
{{{
267
Route ->  Carriers -> Gateways -> Rules
268
}}}
269
270
For each PSTN prefix (called a PSTN route) a set of carriers can be assigned with an optional priority. Each carrier can have one or more gateways and each gateway can have optional rules for converting the number. For more information see the [wiki:ProvisioningGuide provisioning guide].
271
272
Once the SIP request is authenticated, the SIP Proxy authorizes the request based on the rights associated with the subscriber account and decides whether a SIP session to the PSTN gateway is allowed or not. If the session is allowed, the SIP Proxy asserts an identity associated to the SIP account, which can be the telephone number presented as caller ID to the destination, locates a PSTN gateway for the dialed number (by using least cost routing or other configured logic) and forwards the request to the PSTN gateways inserting itself in the path of subsequent messages.
273
274
[[Image(flow-sip-phone-a-pstn.png, width=600)]]
275
276
|| Authentication || SIP account A ||
277
|| Authorization || SIP account A ||
278
|| Caller Id || Asserted by the platform ||
279
|| Billing party || SIP account A ||
280
|| Accounting || Postpaid, Prepaid ||
281
|| Media types || RTP (audio) ||
282
|| Address resolution || ENUM, LCR ||
283
|| From header || Must contain a local SIP domain||
284
285
=== Caller id indication ===
286
287
The platform generates a Caller ID indication by appending Remote-Party-Id or P-Asserted identity headers, depending on its configuration.  The content of the headers is generated with the SipAccount->rpid attribute associated with the SIP account.
288
289
== PSTN to End-Point ==
290
291
The platform is designed to accept traffic from outside SIP end-points (this includes remote PSTN gateways) to any local user. This means that a PSTN gateway that initiates a session to a correct SIP address user@domain belonging to the platform will be accepted and routed to the SIP devices belonging to the user with no extra configurations. When a SIP session originates from the PSTN, only the dialed telephone (a.k.a. E.164) number is known. For routing sessions from the PSTN to the SIP Proxy of the platform the gateway must translate the telephone number into a valid SIP address. 
292
293
==== ENUM Routing ====
294
295
[[Image(msp-enum-lookup.png)]]
296
297
The ideal way to achieve this number translation with minimum configuration is for the PSTN gateway to perform an ENUM lookup (RFC 3761). All popular open source software gateways like Asterisk and OpenSIPS are able to perform ENUM lookups and commercial gateways have started adding this support into their commercial products.
298
299
The ENUM look-up queries the DNS server provisioned with E.164 numbers by the operator, which is always kept up to date by the operator. The result of a successful ENUM lookup is a SIP address. Once the ENUM lookup is complete, the PSTN gateway can initiate the SIP session to the SIP address returned by the ENUM lookups.
300
301
The only setting required in the PSTN gateway for this setup is the top level domain used to perform ENUM lookups. The ENUM top level domain must be the same used by the SIP Proxy lookup and NGNPro provisioning.
302
303
==== Manual Routing ====
304
305
For PSTN gateways that are not able to perform ENUM lookups and from which we need to accept incoming sessions, the SIP Proxy can be configured to accept any traffic, manipulate the number format based on custom rules and help performing the ENUM lookup in the behalf of the gateway. 
306
307
The PSTN gateway must be configured for the E.164 number ranges to be routed to the MSP platform and the hostname of the SIP Proxy machine (e.g. sip.example.com). Do not use static IP addresses in the PSTN configuration, use the DNS name configured by the operator so that when the IP addresses of the SIP Proxy change or when multiple SIP Proxies are used by default (like in SIP Thor) the gateway does not need to be re-configured.
308
309
You must setup the following SIP Proxy configuration file:
310
311
{{{
312
sipproxy:/etc/opensips/config/siteconfig/handle-incoming-pstn.m4
313
}}}
314
315
Example: 
316
317
{{{
318
if (allow_trusted()) {
319
    DINFO("Incoming PSTN call");
320
    if (uri=~"^sip:0[1-9][0-9]{4,}@.*") {
321
        strip(1);
322
        prefix("+31");
323
        DINFO("Converted to ENUM number $ru");
324
    } else if (uri=~"^sip:0031[1-9][0-9]{4,}@.*") {
325
        strip(2);
326
        prefix("+");
327
        DINFO("Converted to ENUM number $ru");
328
    } else {
329
        ERROR("Invalid destination");
330
        sl_send_reply("403", "Invalid destination");
331
        LOG_MISSED_CALL("403");
332
        exit;
333
    }
334
335
    rewritehostport("example.com");
336
337
    route(__ENUM_LOOKUP);
338
339
    if (retcode==-1) {
340
        DINFO("User not found");
341
        sl_send_reply("404", "User not found");
342
        LOG_MISSED_CALL("404");
343
        exit;
344
    } else if (!is_uri_host_local()) {
345
        DINFO("Call to non local user");
346
        sl_send_reply("403", "Invalid destination");
347
        LOG_MISSED_CALL("403");
348
        exit;
349
    }
350
}
351
}}}
352
353
|| Authentication || None ||
354
|| Authorization || Custom SIP Proxy logic ||
355
|| Billing party || Trusted peer  ||
356
|| Accounting || Postpaid||
357
|| Media types || RTP (audio) ||
358
|| From header || Must contain a non-local SIP domain||
359
|| Address resolution || ENUM, Custom SIP Proxy logic ||
360
361
== PBX to PSTN ==
362
363
[[Image(flow-pbx-a-pstn.png, width=600)]]
364
365
The IP address(es) of the PBX must be added in the trusted table using the SOAP/XML provisioning API. To allow trusted parties to transit your SIP Proxy edit sip:/etc/opensips/config/siteconfig/handle-incoming-pstn.m4 and add to it:
366
367
{{{
368
if (allow_trusted()) {
369
    if (uri=~"^sip:0[1-9]*@.*") {
370
        # National calls must be formated as 00XX
371
        strip(1);
372
        prefix("0031");
373
        route(__PSTN_TRANSIT);
374
        exit;
375
    } else if (uri=~"^sip:00[1-9]*@.*") {
376
        # International calls
377
        route(__PSTN_TRANSIT);
378
        exit;
379
    } else {
380
        ERROR("Invalid destination");
381
        sl_send_reply("403", "Invalid destination");
382
        LOG_MISSED_CALL("403");
383
        exit;
384
    }
385
}
386
}}}
387
388
|| Authentication || None ||
389
|| Authorization || Trusted peer A ||
390
|| Caller Id || Supplied by trusted peer A ||
391
|| Billing party || Trusted peer A ||
392
|| Accounting || Postpaid||
393
|| Media types || RTP (audio) ||
394
|| Address resolution || ENUM, LCR, Custom SIP Proxy logic ||
395
|| From header || Must contain a non-local SIP domain||
396
397
The domain name used by the PBX in the From field must be different than any domain served by the SIP Proxy otherwise the Proxy will challenge the session for credentials as it does for any other locally registered SIP account.
398
399
=== Rating ===
400
401
To rate the traffic generated by trusted peers you must add a rating plan in CDRTool rating engine based on the source IP address (the gateway field in rating customers table). Beware that no quota can be imposed on the traffic of a trusted peer.
402
403
=== Caller Id Indication ===
404
405
Traffic generated by the trusted peers and any header thereof containing caller id indication is also trusted. When allowing traffic to transit from PBXs to PSTN gateways connected to the, make sure that the way caller ID indication is provided by the trusted party is compatible with what the PSTN gateway expects. 
406
407
== PSTN to PBX ==
408
409
[[Image(flow-pbx-a-pstn.png, width=600)]]
410
411
|| Authentication || None ||
412
|| Authorization || Trusted peer PSTN gateway ||
413
|| Caller Id || Supplied by PSTN gateway ||
414
|| Billing party || Trusted peer PSTN gateway ||
415
|| Accounting || Postpaid||
416
|| Media types || RTP (audio) ||
417
|| From header || Must contain a non-local SIP domain||
418
|| Address resolution || ENUM, Custom SIP Proxy logic ||
419
420
== Call Diversion ==
421
422
[[Image(flow-sip-phone-a-b-diverted.png, width=600)]]
423
424
A user may chose to divert his/her calls based on various conditions (like unconditional, busy or not online) to another SIP address including PSTN destinations. Diverted calls are always charged to the user who enabled them. For every call diversion, a new Diversion header is appended to the original SIP request.
425
 
426
|| Authentication || SIP account A ||
427
|| Authorization || SIP account A ||
428
|| Billing party || SIP account B ||
429
|| Accounting || Postpaid, Prepaid ||
430
|| Address resolution || SIP address, SIP alias, Quickdial, ENUM, LCR ||
431
432
== Presence ==
433
434
[[Image(flow-presence.png, width=600)]]
435
436
Multiple watchers are subscribed to a publisher. The Publisher authorizes the watchers to subscriber to presence notifications by updating pres-rules XCAP document. The Publisher must subscribe to event presence.winfo to receive notifications from the Presence Agent about the watcher list.
437
438
|| Authorization || XCAP pres-rules ||
439
|| Address resolution || SIP address, SIP alias, Quickdial, ENUM ||
440
|| Accounting || None ||
441
442
== RLS Services ==
443
444
[[Image(flow-rls-services.png, width=600)]]
445
446
A subscriber uploads to the XCAP server a resource list. Then it subscribes to the list by sending a SUBSCRIBE for event presence with extra header Supported: eventlist, the Presence agent then subscribes to all recipients from the resource lists and returns consolidated NOTIFY with the state of all lists.
447
448
|| Authorization || XCAP pres-rules ||
449
|| Address resolution || SIP address, SIP alias, Quickdial, ENUM ||
450
|| Accounting || None ||
451
452
== IM using MSRP Relay ==
453
454
[[Image(flow-msrp-relay.png, width=600)]]
455
456
Instant Messaging based on MSRP protocol is similar to a regular SIP audio session. Instead of RTP media , MSRP is used for establishing a media channel. Instead of MediaProxy, A MSRP relay is used to traverse the NAT. The called party reserves a session in the MSRP relay and offeres it in the response to the SIP INVITE. The calling party the initiates a TCP/TLS connection to the relay reserved address and the called party does the same. By using the relay both parties can establish a TCP flow from behind their NAT routers.
457
458
== IM using MSRP ACM  ==
459
460
[[Image(flow-msrp-acm.png, width=600)]]
461
462
MSRP ACM is an alternative method for traversing NAT that is standardized by 3GPP that is interoperable with the IETF MSRP relay specification. The SBC mangles the SDP and stays in the SIP signaling and MSRP media path and forces the end-points to be both active (that is starting the outbound MSRP connection) when behind NAT. 
463
464
== IM using MSRP ACM  and Relay ==
465
466
[[Image(flow-msrp-acm-relay.png, width=600)]]
467
468
MSRP ACM and Relay methodologies can interoperate.
469
  
470
== File Transfer ==
471
472
File transfer based on MSRP protocol is similar to a regular SIP audio session. Instead of RTP media , MSRP is used for establishing a media channel. A MSRP relay is used to traverse the NAT.
473
474
== Emergency Calls ==
475
476
Emergency calls refer to dialing short numbers usually associated with emergency services like police or fire-brigade (e.g. 112 or 911). When a session is setup to a short number designated as an emergency number (in the SIP Proxy configuration), a database lookup is performed by the proxy in the emergency_mapping table. Based on the '''region''' attribute provisioned with the SIP account, the final destination corresponding with the emergency number is looked up. Only local users can dial an emergency number.
477
478
See [wiki:ProvisioningGuide#Emergencynumbers Provisioning the emergency numbers] section for more information.
479
480
=== PBX Functions ===
481
482
Functions involving playing media in the middle of a call setup are not possible by the design of a SIP Proxy. Features like:
483
484
    * IVR
485
    * Auto-attendant
486
    * Call queues and ACD
487
    * Listen-in and barge-in
488
    * Call parking
489
    * Music on hold (MoH)
490
491
are not performed by a SIP Proxy. Such functions can be implemented only by dedicated IP-PBX added to the platform. The platform is used to route calls between such PBXs, from the MSP perspective these PBX are seen as SIP trunks connected to the platform.