RFC 4715
The Integrated Services Digital Network (ISDN) Subaddress Encoding Type for tel URI
π RFC 4715: The ISDN Subaddress Encoding Type for tel URI π
Network Working Group πΈ Request for Comments: 4715 π Authors: M. Munakata, S. Schubert, and T. Ohba (all from NTT) β¨ Category: Informational π§Ύ (this is info for the community, not a formal standard) Date: November 2006 π
This header doesn't list anything it obsoletes or updates, so it's not replacing or changing any other RFC. It's its own little gift to the Internet π
Status of This Memo π§Ύ
This memo gives information to the Internet community. It is not an Internet standard of any kind π ββοΈ Distribution of this memo is unlimited π¦
Copyright Notice Β©οΈ
Copyright (C) The IETF Trust (2006). π
Abstract π
okay so, without a tel URI parameter that carries the encoding type of an ISDN subaddress, talking between an ISUP network and a SIP network is literally impossible in some cases π This doc fixes that by specifying a brand new optional tel URI parameter just for carrying the encoding type of the ISDN subaddress π§
Table of Contents π
1. Introduction ....................................................2
2. Terminology .....................................................3
3. Problem Statement ...............................................3
3.1. SIP-ISDN Interconnection ...................................3
3.2. ISDN-SIP-ISDN Interconnection ..............................4
4. Requirements ....................................................5
5. Parameter Definition ............................................6
6. Usage ...........................................................6
6.1. Gateway Behavior ...........................................7
6.2. SIP Entity Behavior ........................................8
7. Security Considerations .........................................9
8. IANA Considerations .............................................9
9. Acknowledgements ................................................9
10. References ....................................................12
10.1. Normative References .....................................12
10.2. Informative References ...................................12
1. Introduction π¦
okay so bestie, RFC 3966 [2] already defines a tel URI parameter called isub, and it's designed to carry ISDN (Integrated Services Digital Network) subaddresses π
Now, in an ISUP (ISDN User Part) message, a subaddress can be an NSAP address [6] or a "user specified" address. The NSAP address is giving main character energy because it can hold lots of different kinds of address info, plus an identifier for the address type and its encoding type β¨
The isub parameter can carry any type of address, BUT RFC 3966 [2] doesn't give us a way to say whether the subaddress is NSAP or user specific, or which encoding type was used π
The most common encoding type for an ISDN subaddress is International Alphabet 5 (IA5) [5]. RFC 3966 even says, "ISDN subaddresses typically contain IA5 characters but may contain any octet value", which is a fair point π Still, IA5 is just one encoding among several that show up in NSAP addresses. So isub on its own isn't enough to describe an ISDN subaddress, and we need extra info π«Ά
Lack of information describing the encoding type of ISDN subaddress will make it difficult for an ISDN terminal receiving the ISDN subaddress from the SIP network (SIP-ISDN Interconnection) to interpret the "isub" parameter value, as a gateway may translate it using a wrong encoding type and end up with a wrong subaddress value due to inconsistency in the encoding type used. It will also make it difficult to recover the original ISDN subaddress value when an ISUP message is translated to a SIP message and translated back to the ISUP message (ISDN-SIP-ISDN Interconnection). As there is no placeholder to carry the encoding type in the SIP message, the encoding type information that was present in the original ISUP message will be lost, and reconstructing the intended ISDN subaddress value is nearly impossible.
Yikes, right? π To fix all of this, this spec defines an isub-encoding parameter. It carries info saying whether the isub value is an NSAP address, plus its encoding type π This doc also specifies the values that go in the isub parameter for each encoding type π
2. Terminology π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [1]. π
3. Problem Statement π§©
Without a tel URI parameter for the encoding type of an ISDN subaddress, you might run into the problems described in Sections 3.1. and 3.2. π
3.1. SIP-ISDN Interconnection π‘
Figure 1 shows a problem you'll see when a SIP network and an ISDN network interwork with an ISDN subaddress. When SIP equipment sends a request with an isub parameter to reach an ISDN terminal behind a Private Branch Exchange (PBX), there's no way to specify the encoding type of that subaddress right now π© So the gateway between the SIP and ISDN networks can't properly translate isub into an ISUP Initial Address Message (IAM), because the encoding type info is missing π
ISDN Terminal
+-----+
|--->| Bob |
SIP Network <---|---> ISDN | |12345|
| +-----+
SIP Equipment |
+-----+ +-----+ +----+ +-----+ | +-----+
|Alice|------->|Proxy|----->| GW |----->| PBX |----->|Carol|
+-----+ +-----+ +----+ +-----+ | +-----+
|
| +-----+
|--->|David|
+-----+
Alice Proxy GW Switch PBX Bob
| | | | | |
| INVITE | | | | |
|------------>| INVITE | | | |
| |------------>| IAM | | |
| | |----->|SETUP| |
| | | |---->| SETUP |
| | | | |---------->|
| | | | | |
Figure 1: SIP-ISDN Interconnection
INVITE tel:+17005554141;isub=12345 SIP/2.0
Note: SETUP is an ISDN message used between ISDN switch and ISDN end terminal. π
3.2. ISDN-SIP-ISDN Interconnection π
Figure 2 shows what happens when messages with an ISDN subaddress go between two ISDN networks that pass through SIP networks. When an ISDN terminal sends a message containing an ISDN subaddress and its encoding type, Gateway 1 turns the subaddress into an isub parameter in a SIP message. But the encoding type info gets dropped, because there's no placeholder for it in the SIP message π When Gateway 2 receives the isub, it can't translate that value back into the IAM message properly, since the encoding type info is gone π
ISDN Terminal
+-----+
|--->| Bob |
ISDN <---|---> SIP Network <---|---> ISDN | |12345|
| +-----+
ISDN Terminal |
+-----+ +-----+ +-----+ +-----+ +-----+ | +-----+
|Alice|----->| GW1 |---->|Proxy|---->| GW2 |---->| PBX |----->|Carol|
+-----+ +-----+ +-----+ +-----+ +-----+ | +-----+
|
| +-----+
|--->|David|
+-----+
Alice Switch GW1 Proxy GW2 Switch PBX Bob
| | | | | | | |
| SETUP | | | | | | |
|------>| IAM | | | | | |
| |---->| INVITE | | | | |
| | |---------->| INVITE | | | |
| | | |---------->| IAM | | |
| | | | |---->|SETUP| |
| | | | | |---->| SETUP |
| | | | | | |----------->|
| | | | | | | |
Figure 2: ISDN-SIP-ISDN Interconnection
INVITE tel:+17005554141;isub=12345 SIP/2.0
4. Requirements β
Here's what any solution has to do to carry an ISDN subaddress along with its encoding type info. These are the requirements π―
- Req 1: When the
isubparameter is present but noisub-encodingparameter is present in a tel URI, the encoding of the ISDN subaddress in the original message MUST be assumed to be IA5 (AFI=0x50). π - Req 2: When using the
isubparameters in tel URIs, the encoding SHOULD be specified by using the optionalisub-encodingparameter unless the encoding of the ISDN subaddress is IA5 (AFI=0x50). π«Ά
5. Parameter Definition β¨
Okay so this is where the new tel URI parameter shows up π It's called "isub-encoding" and it basically tells you what encoding the ISDN subaddress is wearing π It's optional, and it fills in a gap that the "isub" parameter from RFC 3966 [2] leaves open π§ Here's the grammar in ABNF [3] πΈ
isub-encoding = isub-encoding-tag "=" isub-encoding-value
isub-encoding-tag = "isub-encoding"
isub-encoding-value = "nsap-ia5" / "nsap-bcd" / "nsap" / token
So here's what each value means π
nsap-ia5: the "isub" value has to be encoded in IA5 (AFI=0x50) when it gets translated into an ISUP message β¨nsap-bcd: the "isub" value has to be encoded in Binary Coded Decimal (BCD) (AFI=0x48) when it gets translated into an ISUP message π¦nsap: the "isub" value has to be encoded with the encoding type from ISO 8348 [6], as long as it's not IA5 (AFI=0x50) or BCD (AFI=0x48) π₯
Note: Q.931 [7] defines a "user specified" subaddress type, but this document doesn't say anything about behavior or values for it π So the "user specified" subaddress is out of scope for this doc, periodt π
Here's a little SIP [4] fragment so you can see what it looks like in the wild π
INVITE tel:+17005554141;isub=12345;isub-encoding=nsap-ia5 SIP/2.0
To: <tel:+17005554141;isub=12345;isub-encoding=nsap-ia5>
From: "Bob"<sip:bob@biloxi.example.com>;tag=1928301774
6. Usage π«Ά
So this parameter is expected to ride along with the "isub" parameter from RFC 3966 [2] whenever you're interworking between an ISUP network and a SIP network π It's optional on the tel URI, and it's only useful when it's tagging along with "isub" π
An ISDN subaddress information element in an ISUP message is a 3-octet header followed by either an NSAP address or a user-specified address π The NSAP address has an Initial Domain Part (IDP), which is the Authority and Format Identifier (AFI) plus the Initial Domain Identifier (IDI) when it's there, and that's what tells you the encoding type. Then there's the Domain Specific Part (DSP), which holds the actual subaddress value β¨
If you want the deep dive on the ISDN subaddress element and the NSAP address, including AFI, IDI, IDP, and DSP, check out Appendices A and B π
If "isub-encoding" is absent and a message is being read by an entity on the SIP network, a compliant entity MUST assume that the original ISDN subaddress in the ISUP message was an NSAP address with an encoding type of IA5 (AFI=0x50). Its DSP value got translated and put into the "isub" parameter value. That entity MUST then handle the message accordingly π₯
If "isub-encoding" is absent and a gateway is translating a SIP message into an ISUP message, a compliant gateway MUST encode the "isub" parameter value using IA5 (AFI=0x50). It MUST also put that encoded value into the DSP part of the NSAP address when it builds the ISUP message π
If "isub-encoding" is set to "nsap," then the encoding type (AFI) is taken to be the first two characters of the "isub" parameter. Those characters are hexadecimal, written as US-ASCII characters 0-9 and A-F π¦
If the ISDN subaddress isn't an NSAP address, the entity translating the message SHOULD treat the message as if neither the "isub-encoding" nor the "isub" parameters existed, unless it already knows which encoding method is being used π
When an entity that isn't compliant with this specification handles a message carrying the "isub-encoding" parameter, it just ignores that parameter and its value πΈ
6.1. Gateway Behavior π
A compliant gateway that receives a message or signal from an ISDN network containing an ISDN subaddress MUST check which encoding the subaddress uses, and it MUST follow the procedures below π
If the ISDN subaddress is an NSAP address encoded with IA5 (AFI=0x50), the entity MAY set the "isub-encoding" parameter to "nsap-ia5." It then sets the DSP value of the NSAP address as the "isub" parameter value, using characters that RFC 3966 [2] allows for "isub." Or it can just leave out the "isub-encoding" parameter β¨
If the ISDN subaddress is an NSAP address encoded with BCD (AFI=0x48), the entity MUST set the "isub-encoding" parameter to "nsap-bcd." It also MUST set the decoded DSP value of the NSAP address as the "isub" parameter value, written in US-ASCII characters using numbers π¦
Note: Each semi-octet should be translated into numbers. For example, 01011001 would be translated as 5 and 9. π§
If the ISDN subaddress is an NSAP address but it's encoded with neither IA5 (AFI=0x50) nor BCD (AFI=0x48), the entity translating the message MUST set the "isub-encoding" parameter to "nsap." It MUST also set the entire NSAP address as the "isub" parameter value, in hexadecimal written as US-ASCII characters (0-9 and A-F) π₯
If the ISDN subaddress isn't an NSAP address, the entity translating the message SHOULD NOT generate any "isub-encoding" or "isub" parameters, unless it has a private agreement with the recipient about what to do in that case π ββοΈ
6.2. SIP Entity Behavior π
A compliant entity that sets an "isub" parameter MUST follow the procedures below π
If the ISDN subaddress is an NSAP address encoded with IA5 (AFI=0x50), the entity MAY set "isub-encoding" to "nsap-ia5." The "isub" parameter value MUST NOT exceed 19 characters, and the characters used MUST follow the syntax RFC 3966 [2] defines for "isub" π
If the ISDN subaddress is an NSAP address encoded with BCD (AFI=0x48), the entity MUST set "isub-encoding" to "nsap-bcd." The "isub" parameter value MUST NOT exceed 38 US-ASCII characters (numbers) π
If the ISDN subaddress is an NSAP address encoded with an encoding type other than IA5 (AFI=0x50) or BCD (AFI=0x48), the entity MUST set "isub-encoding" to "nsap." The "isub" parameter value MUST NOT exceed 40 US-ASCII characters, and it MUST be hexadecimal written as US-ASCII characters (0-9 and A-F). In this case, the first two characters of the "isub" parameter MUST be the encoding type (AFI) β¨
7. Security Considerations π
Okay, big security moment π The parameter defined here adds no new security considerations beyond the ones already discussed in RFC 3966 [2] π‘οΈ Nothing new to panic about, bestie π
8. IANA Considerations π
This document requires no action by IANA β¨
Further information on a registry for tel parameters is covered in [8] π
9. Acknowledgements π«Ά
Huge thank-yous to John Elwell, James Rafferty, Steve Norreys, Michael Hammer, Ray Forbes, Martin Dolly, Cullen Jennings, and Henning Schulzrinne for their extensive and constructive reviews and feedback ππ
Appendix A. Structure of an ISDN Subaddress Information Element π¦
The structure of an ISDN subaddress information element in ISUP messages is defined in Q.931 [7] like this π§
Bits
8 7 6 5 4 3 2 1 Octets
+-----+-----------------------------------------+
| 0 | 1 1 1 0 0 0 0 | 1
+-----+-----------------------------------------+
| Length of called party subaddress contents | 2
+-----+-----------------------------------------+
| 1 | Subaddress type | o/e | 0 0 0 | 3
+-----+-----------------------------------------+
| | 4
| Subaddress information |
| |
| |
| |
+-----------------------------------------------+ max. 23
Figure 3: Structure of an ISDN Subaddress Information Element
Even though the length varies, the biggest an ISDN subaddress information element can get is 23 octets, as the figure shows π The first 3 octets are the header. The rest hold the subaddress information, which is either an NSAP address or a "user specified" address β¨
The 1st octet is the called party subaddress information element identifier, so it tells you this element is a called party subaddress. The 2nd octet is the length of the called party subaddress contents π
The 5th to 7th bits of the 3rd octet identify the subaddress type. They're set to 0 0 0 when the subaddress is an NSAP address, and to 0 1 0 when it's "user specified" πΈ
The 4th bit of the 3rd octet is the odd/even indicator. It only matters when the subaddress type is "user specified" with BCD encoding. It lets an entity pad the missing bits (the last 4 bits of the subaddress information) when the number of digits in the subaddress is odd π§
Note: When interworking with SIP, it is recommended not to translate the padding bits to "isub" parameter. π
Appendix B. Structure of NSAP Addresses β¨
okay so in ISUP messages, the ISDN subaddress usually shows up as an NSAP address π The NSAP format is defined in ISO 8348 [6], and it's honestly kind of iconic. Every NSAP address has two main parts: an Initial Domain Part (IDP) and a Domain Specific Part (DSP). The IDP is made of two fields, the Authority and Format Identifier (AFI) and the Initial Domain Identifier (IDI). An NSAP address can be at most 20 octets long π
<------------------ NSAP Address ------------------>
+--------------------------------------------------+
| I D P | |
|-------------| D S P |
| AFI | IDI | |
+--------------------------------------------------+
0 1 k ... Octets ... max. 20
Figure 4: Structure of NSAP Addresses
the AFI is 2 hexadecimal digits (00-FF), and it tells you what format the IDI uses and what syntax the DSP follows π¦
the IDI, when it's there, is written as decimal digits. It identifies a network addressing domain or authority that's responsible for handing out values in the DSP. Its length isn't fixed. It depends on the AFI πΈ
now the main event π The typical encoding for an ISDN subaddress is IA5, and that's marked with AFI=0x50. When AFI is 0x50, the IDI length is zero, so the IDP is just 2 digits (1 octet). In that case the DSP holds the subaddress encoded in IA5, and it can be up to 19 octets. The IDI length is also zero when the encoding is BCD, which is AFI=0x48. Here's what the NSAP address looks like for either 0x50 or 0x48. The DSP starts at the 2nd octet π§
+--------------------------------------------------+
| IDP | |
|-----| D S P |
| AFI | |
+--------------------------------------------------+
0 1 ... Octets ... max. 20
Figure 5 Structure of NSAP Addresses (AFI=0x50 or AFI=0x48)
10. References π
10.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[2] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, December 2004.
[3] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005.
10.2. Informative References
[4] 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.
[5] International Telecommunication Union, "International Reference Alphabet (IRA) (Formerly International Alphabet No. 5 or IA5) - Information technology - 7-bit coded character set for information interchange", Recommendation T.50, 1992.
[6] International Standard, "Information technology - Open Systems Interconnection - Network service definition", ISO/IEC 8348, 2002.
[7] International Telecommunication Union, "ISDN User-Network Interface Layer 3 Specification for Basic Call Control", Recommendation Q.931, 1998.
[8] Jennings, C. and V. Gurbani, "The Internet Assigned Numbers Authority (IANA) tel Uniform Resource Identifier (URI) Parameter Registry", Work in Progress, May 2006.
Authors' Addresses π«Ά
Mayumi Munakata
NTT Corporation
Phone: +81 422 36 7565
EMail: munakata.mayumi@lab.ntt.co.jp
Shida Schubert
NTT Corporation
Phone: +1 604 762 5606
EMail: shida@ntt-at.com
Takumi Ohba
NTT Corporation
9-11, Midori-cho 3-Chome
Musashino-shi, Tokyo 180-8585
Japan
Phone: +81 422 59 7748
EMail: ohba.takumi@lab.ntt.co.jp
URI: http://www.ntt.co.jp
Full Copyright Statement π
Copyright (C) The IETF Trust (2006).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST, AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property π
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement π
Funding for the RFC Editor function is currently provided by the Internet Society.
π¦ where this page comes from
- ietf: rfc4715 2006-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms