RFC 3578
Mapping of Integrated Services Digital Network (ISDN) User Part (ISUP) Overlap Signalling to the Session Initiation Protocol (SIP)
Mapping of Integrated Services Digital Network (ISDN) User Part (ISUP) Overlap Signalling to the Session Initiation Protocol (SIP) π
okay bestie, this is RFC 3578 π It's a Standards Track doc from the Network Working Group, dated August 2003 β¨ The authors are G. Camarillo (Ericsson), A. B. Roach (dynamicsoft), J. Peterson (NeuStar), and L. Ong (Ciena) π«Ά The header doesn't list anything it obsoletes or updates, so nothing gets replaced or patched here π§
Status of This Memo β¨
This doc specifies an Internet standards track protocol for the whole Internet community π and it's basically asking for discussion and suggestions for improvements. For the standardization state and status of this protocol, check the current edition of "Internet Official Protocol Standards" (STD 1) π Distribution of this memo is unlimited π¦
Copyright Notice π
Copyright (C) The Internet Society (2003). All Rights Reserved. π
Abstract πΈ
This doc describes a way to map Integrated Services Digital Network User Part (ISUP) overlap signalling to Session Initiation Protocol (SIP) π¦ It might get implemented when you're using SIP in an environment where part of the call involves interworking with the Public Switched Telephone Network (PSTN) π
Table of Contents π
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conversion of ISUP Overlap Signalling into SIP en-bloc
Signalling . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Waiting for the Minimum Amount of Digits . . . . . . . . 4
2.2. The Minimum Amount of Digits has been Received . . . . . 4
3. Sending Overlap Signalling to a SIP Network. . . . . . . . . . 5
3.1. One vs. Several Transactions . . . . . . . . . . . . . . 5
3.2. Generating Multiple INVITEs. . . . . . . . . . . . . . . 6
3.3. Receiving Multiple Responses . . . . . . . . . . . . . . 8
3.4. Canceling Pending INVITE Transactions. . . . . . . . . . 9
3.5. SIP to ISUP. . . . . . . . . . . . . . . . . . . . . . . 9
4. Security Considerations. . . . . . . . . . . . . . . . . . . . 10
5. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 10
6. Normative References . . . . . . . . . . . . . . . . . . . . . 10
7. Intellectual Property Statement. . . . . . . . . . . . . . . . 11
8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 12
9. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 13
1. Introduction π
okay so there's already a mapping between SIP [1] and the ISDN User Part (ISUP) [2] of SS7, and it's written up in RFC 3398 [3] π The thing is, RFC 3398 only covers ISUP en-bloc signalling. En-bloc means you send the complete telephone number of the callee in the first signalling message π¨ Modern switches always do this, but some parts of the PSTN still use overlap signalling π
Overlap signalling means you only send some digits of the callee's number in the first signalling message. The rest get sent in later signalling messages π§© Overlap signalling in the PSTN is a huge source of extra complexity, but it's still in use in some countries π
Like modern switches, SIP uses en-bloc signalling β¨ The Request-URI of an INVITE request always contains the whole address of the callee. Native SIP end-points never generate overlap signalling π
So the preferred solution for a gateway that handles PSTN overlap signalling and SIP is to convert the PSTN overlap signalling into SIP en-bloc signalling, using number analysis and timers π The gateway waits until all the signalling messages carrying parts of the callee's number arrive, and only then does it generate a SIP INVITE request π«Ά Section 2 explains how to convert ISUP overlap signalling into en-bloc SIP this way.
BUT, even though it's the preferred solution, converting overlap to en-bloc sometimes leads to unacceptable call setup delays (multiple seconds!) for human users π In these situations, some form of overlap signalling has to be used in the SIP network to cut down on call setup delay. Introducing overlap signalling in SIP does add complexity and brings some issues π Section 3 analyzes those issues and describes ways to deal with them in some particular network scenarios π₯ It also describes which particular network scenarios make overlap signalling in the SIP network unacceptable, because the issues are just too much there.
2. Conversion of ISUP Overlap Signalling into SIP en-bloc Signalling π§
In this scenario, the gateway receives an IAM (Initial Address Message) that contains only a portion of the called number π© The rest of the digits dialed arrive later, in one or more SAMs (Subsequent Address Message) π
2.1. Waiting for the Minimum Amount of Digits β³
If the IAM contains less than the minimum amount of digits needed to route a call, the gateway starts T35 and waits until the minimum amount of digits that can represent a telephone number arrives (or a stop digit does) π°οΈ If T35 expires before the minimum amount of digits (or a stop digit) shows up, a REL with cause value 28 gets sent to the ISUP side π T35 is defined in Q.764 [4] as 15-20 seconds.
If a stop digit arrives, the gateway can already generate an INVITE request with the complete called number π So the call proceeds as usual β¨
2.2. The Minimum Amount of Digits has been Received π―
Once the minimum amount of digits that can represent a telephone number has arrived, the gateway should use number analysis to decide if the number received so far is a complete number π If it is, the gateway can generate an INVITE request with the complete called number, and the call proceeds as usual π
BUT there are cases where the gateway can't tell whether the number it has is complete or not π¬ In that case, the gateway should collect digits until a timer (T10) expires or a stop digit (such as, #) is entered by the user πΉ Just note that T10 gets refreshed every time a new digit comes in π
When T10 expires, an INVITE with the digits collected so far gets sent to the SIP side π After this, any SAM that arrives gets ignored π
PSTN MGC/MG SIP
| | |
|-----------IAM----------->| Starts T10 |
| | |
|-----------SAM----------->| Starts T10 |
| | |
|-----------SAM----------->| Starts T10 |
| | |
| | |
| T10 expires |---------INVITE---------->|
| | |
Figure 1: Use of T10 to convert overlap signalling to en-bloc
Note that T10 is defined for conversion between overlap signalling (e.g., CAS) and en-bloc ISUP π PSTN switches usually implement a locally defined value of timer T10 (which may not be within the 4-6 second range recommended by Q.764 [4]) to convert overlap ISUP to en-bloc ISUP π§ This document uses T10 and recommends the range of values defined in Q.764 [4], which seems suitable for converting overlap to en-bloc SIP operation π The actual choice of timer value is a matter of local policy π
3. Sending Overlap Signalling to a SIP Network π¦
This section analyzes the issues related to using overlap signalling in a SIP network, and describes a possible solution and its applicability scope π« Important: if the solution gets used outside its applicability scope, it could cause a set of problems, and those are identified in this section β οΈ
3.1. One vs. Several Transactions π
An ingress gateway that receives ISUP overlap signalling (i.e., one IAM and one or more SAMs) needs to map it into SIP signalling π One possible approach would be to send an INVITE with the digits received in the IAM, and then, once an early dialog is established, send the digits received in SAMs in a SIP request (e.g., INFO) within that early dialog π€
This approach has several problems π It requires that the remote SIP user agent (which might be a gateway) sends a non-100 provisional response as soon as it receives the initial INVITE, so the early dialog can be established π« Current gateways, following the procedures in RFC 3398 [3], do not generate such a provisional response π ββοΈ And if gateways did generate one (e.g., 183 Session Progress), ingress gateways would generate early ACMs, which would confuse the PSTN state machine even in calls that don't use overlap signalling π΅βπ«
In this approach, once the initial INVITE request is routed, all the subsequent requests sent within the early dialog follow the same path π€οΈ That means they can't be re-routed to take advantage of SIP-based services π€ So we do not recommend using this approach π
An alternative approach is to send a new INVITE that contains all the digits received so far, every time a new SAM arrives π Since every new INVITE sent represents a new transaction, they can be routed in different ways πΊοΈ This way, every new INVITE can take advantage of any SIP service the network may provide β¨
BUT having subsequent INVITEs routed in different ways brings problems too π The first INVITE, for instance, might be routed to one particular gateway, and a subsequent INVITE might be routed to another π₯ The result is that both gateways generate an IAM. Since one of the IAMs (or both) has an incomplete number, it would fail, having already consumed PSTN resources π«£ It could even happen that both IAMs contain complete but different numbers (i.e., one number is the prefix of the other one) π
Routing in SIP can be controlled by the administrator of the network π§ So a gateway can be configured to generate SIP overlap signalling in the way described below only if the SIP routing infrastructure ensures that INVITEs will only reach one gateway π When the routing infrastructure isn't under the control of the gateway's administrator, the procedures of Section 2 have to be used instead π
β οΈ Within some dialing plans in the PSTN, a phone number might be a prefix of another one. This situation isn't common, but it can happen.
Where en-bloc signalling is used, this ambiguity gets resolved before the digits are placed in the en-bloc signalling π§© If overlap signalling were used in this situation, a different user than the one the caller intended to call might get contacted π± That's why, in the parts of the PSTN where overlap is used, a prefix of a telephone number never identifies another valid number πΈ So SIP overlap signalling should not be used when trying to reach parts of the PSTN where a number and some shorter prefix of that same number could both be valid addresses of different terminals π«
3.2. Generating Multiple INVITEs β¨
okay so in this scenario the gateway gets an IAM (Initial Address Message) and maybe one or more SAMs (Subsequent Address Message) that bring in more than the minimum amount of digits needed to represent a phone number π
As soon as that minimum amount of digits shows up, the gateway sends an INVITE and starts T10. This INVITE gets built following the procedures in RFC 3398 [3] π
If a SAM arrives, T10 gets refreshed and a new INVITE goes out with the new digits. The new INVITE has the same Call-ID and the same From header field (tag included) as the first INVITE, but its Request-URI is updated. The new Request-URI holds all the digits received so far. The To header field also has all the digits, but no tag π
Note: it's totally possible to get a response to the first INVITE before the second INVITE is even sent. In that case the response has a To tag and some info (Record-Route and Contact) that could be used to build a Route header field. But the new INVITE (the one with the new digits) should not use any of those. So the new INVITE doesn't have a To tag and doesn't have a Route header field either. That way the network providing services can route this new INVITE dynamically π¦
The new INVITE should, of course, contain a Cseq field. It is recommended that the Cseq of the new INVITE is higher than any previous Cseq the gateway has generated for this Call-ID (no matter which dialog that Cseq came from) π₯
Note: when an INVITE forks, responses from different locations can show up and establish one or more early dialogs. New requests like PRACK or UPDATE can be sent within each early dialog. This means the Cseq number spaces of different early dialogs are different. So sending a new INVITE with a Cseq that none of the remote destinations has used yet avoids confusion at the destination π§
If the gateway is encapsulating ISUP messages as SIP bodies, it should put the IAM and all the SAMs received so far into this INVITE π
PSTN MGC/MG SIP
| | |
|-----------IAM----------->| Starts T10 |
| |---------INVITE---------->|
| | |
|-----------SAM----------->| Starts T10 |
| |---------INVITE---------->|
| | |
|-----------SAM----------->| Starts T10 |
| |---------INVITE---------->|
| | |
Figure 2: Overlap signalling in SIP
If 4xx, 5xx or 6xx final responses come in (for example 484 address incomplete) for the pending INVITE transactions before T10 has expired, the gateway should not send any REL. A REL only gets sent if no more SAMs arrive, T10 expires, and all the INVITEs that were sent have been answered with a final response (anything other than 200 OK) π
PSTN MGC/MG SIP
| | |
|-----------IAM----------->| Starts T10 |
| |---------INVITE---------->|
| |<---------484-------------|
| |----------ACK------------>|
| | |
| | |
| T10 expires | |
|<----------REL------------| |
Figure 3: REL generation when overlap signalling is used
The best status code among all the responses received for all the INVITEs that were generated is used to calculate the cause value of the REL, as described in RFC 3398 [3] π
Note: the best response gets worked out the same way forking proxies pick the best response to return to the client for a particular INVITE. And heads up, the best response isn't always the response to the INVITE with the most digits! Say the user dials a number and then accidentally types an extra digit. The first INVITE could get a 486 (Busy Here) and the second one (the one with more digits) could get a 484 (Address Incomplete). Wild, right? π
3.3. Receiving Multiple Responses πΈ
When overlap signalling in SIP is used, the ingress gateway sends multiple INVITEs, so it's going to receive multiple responses too. The responses to all but one of those INVITEs (usually the last one, but not necessarily) are typically 400 class responses (like 484 Address Incomplete) that terminate the INVITE transaction π
That said, a 183 Session Progress response with a media description can also come back. The media stream will typically play a message like, "The number you have just dialed does not exist" π
Getting different 183 Session Progress responses with media descriptions isn't only a thing with overlap signalling. With vanilla SIP, several responses can also reach a gateway if the INVITE forked. In that case it's up to the gateway to decide which media stream gets played to the user π
Overlap signalling does add an extra requirement to this process though. As a general rule, a media stream from the response to an INVITE with a greater number of digits should get more priority than media streams from responses with fewer digits. Main character energy for the longest number π β¨
3.4. Canceling Pending INVITE Transactions π¦
When a gateway sends a new INVITE with new digits, it should not CANCEL the previous INVITE transaction. Here's why: that CANCEL could reach an egress gateway before the new INVITE does, and trigger a REL before the new INVITE has even arrived π ββοΈ INVITE transactions usually end when 4xx responses come in.
Once a 200 OK response has been received, though, the gateway should CANCEL all the other INVITE transactions that were generated. A particular gateway might run a timer and wait for a while before sending any CANCEL. That gives all the previous INVITE transactions time to wrap up smoothly without generating extra signalling traffic (CANCEL messages) π«Ά
3.5. SIP to ISUP π
In this scenario the call starts in the SIP network. The gateway gets multiple INVITEs that share the same Call-ID but have different Request-URIs. When the first INVITE comes in, the gateway generates an IAM following the procedures in RFC 3398 [3] π
When the gateway receives a subsequent INVITE with the same Call-ID and From tag as the previous one, plus an updated Request-URI, it should generate a SAM instead of a brand new IAM. And once a subsequent INVITE arrives, the INVITE received previously gets answered with 484 Address Incomplete π
If the gateway is attached to the PSTN in an area where en-bloc signalling is used, a REL for the previous IAM and a new IAM should be generated instead π₯
4. Security Considerations π¨
Okay, this part is serious, bestie π€ When overlap signaling is employed, it's possible that an attacker could send multiple INVITEs containing an incomplete address to the same gateway, trying to occupy all the available ports and deny service to legitimate callers. Since none of these partially addressed calls would ever complete, under a traditional billing scheme the sender of the INVITEs might never get charged. So, to handle this threat, the authors recommend that gateway operators authenticate the senders of INVITE requests. First, so there's some accountability for where calls come from (it is very imprudent to give gateway access to unknown users on the Internet). Second, so the gateway can figure out when multiple calls are coming from the same source in a short period of time. Some sort of threshold for hanging overlap calls should be tracked by the gateway, and once that limit is exceeded, further similar calls should be rejected to prevent saturation of gateway trunking resources ππ
5. Acknowledgments π«Ά
Jonathan Rosenberg, Olli Hynonen, and Mike Pierce gave useful feedback on this document π
6. Normative References π
[1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.
[2] "Application of the ISDN user part of CCITT signaling system no. 7 for international ISDN interconnections", ITU-T Q.767, February 1991.
[3] Camarillo, G., Roach, A. B., Peterson, J. and L. Ong, "Integrated Services Digital Network (ISDN) User Part (ISUP) to Session Initiation Protocol (SIP) Mapping", RFC 3398, December 2002.
[4] "Signalling system no. 7 - ISDN user part signalling procedures," ITU-T Q.764, December 1999.
7. Intellectual Property Statement β
The IETF takes no position on the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or on whether any license under such rights might or might not be available. It also doesn't claim it has made any effort to identify any such rights. Info on the IETF's procedures for rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made available for publication, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat π
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please send that info to the IETF Executive Director π
8. Authors' Addresses π§
Gonzalo Camarillo
Ericsson
Advanced Signalling Research Lab.
FIN-02420 Jorvas
Finland
EMail: Gonzalo.Camarillo@ericsson.com
Adam Roach
dynamicsoft
5100 Tennyson Parkway
Suite 1200
Plano, TX 75024
USA
EMail: adam@dynamicsoft.com
Jon Peterson
NeuStar, Inc.
1800 Sutter St
Suite 570
Concord, CA 94520
USA
EMail: jon.peterson@neustar.biz
Lyndon Ong
Ciena
5965 Silver Creek Valley Road
San Jose, CA 95138
USA
EMail: lyong@ciena.com
9. Full Copyright Statement β¨
Okay bestie, this is the legal bit, so I'm keeping the wording exactly as it is π Copyright (C) The Internet Society (2003). All Rights Reserved. π
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. π¦
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assignees. π
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. π
Acknowledgement π«Ά
Funding for the RFC Editor function is currently provided by the Internet Society. πΈ
π¦ where this page comes from
- ietf: rfc3578 2003-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms