RFC 4759

The ENUM Dip Indicator Parameter for the "tel" URI

πŸ“… published December 2006, from ietf

RFC 4759: The ENUM Dip Indicator Parameter for the "tel" URI πŸ“žβœ¨

Okay bestie, so this is RFC 4759, and it's a Standards Track doc from the Network Working Group πŸŽ€ Its title is The ENUM Dip Indicator Parameter for the "tel" URI, and it's dated November 2006. The authors are Richard Stastny (Oefeg), Richard Shockey (Neustar Inc.), and Lawrence Conroy (Roke Manor Research) πŸ‘‘ Their contact details are at the very end (part 2 🫢). The header has no Obsoletes or Updates lines, so this RFC doesn't replace or change any other RFC 🌸


Status of This Memo πŸ“‹

This doc is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements πŸ’¬ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ” Distribution of this memo is unlimited 🌈

Copyright (C) The IETF Trust (2006).

Abstract πŸ’œ

So this doc defines a brand new parameter called "enumdi" for the "tel" URI, and its whole job is handling ENUM queries in Voice over Internet Protocol (VoIP) network elements πŸ“ž A VoIP network element might get a URI with an E.164 number in it, and if that URI has an "enumdi" parameter, it means a previous VoIP network element already did an ENUM query on that number ✨ And if a VoIP network element sends one of these URIs, it's basically saying "yes, I did the ENUM query on this number" πŸ’…

Table of Contents πŸ—‚οΈ

1. Introduction ....................................................2
2. Terminology .....................................................2
3. Formal Syntax ...................................................3
4. Normative Rules .................................................3
   4.1. Options for ENUM Domain Providers ..........................3
   4.2. Client Behaviour for VoIP Network Elements .................3
        4.2.1. Handling a URI with the "enumdi" Parameter ..........3
        4.2.2. Adding the "enumdi" Parameter to URIs ...............4
        4.2.3. Handling a URI Retrieved from ENUM ..................4
5. Examples ........................................................4
6. Security Considerations .........................................5
7. IANA Considerations .............................................5
8. Acknowledgements ................................................6
9. References ......................................................6
   9.1. Normative References .......................................6
   9.2. Informative References .....................................6

1. Introduction 🌟

Okay so VoIP network elements (that includes User Agent Servers and User Agent Clients) can be set up in different ways to handle E.164 [3] numbers during call setup, and it depends on what capabilities they have 🧠 One super common approach is to query ENUM as defined in RFC 3761 [4], and then use the set of NAPTR resource records that comes back πŸ”

If the ENUM query gives you a result, the call gets set up accordingly βœ… But if the ENUM query doesn't lead to a result in the end, another database might get queried, or the call might eventually get routed to the Public Switched Telephone Network (PSTN) πŸ“± When that happens, the call might go to another VoIP network element. To tell that next VoIP element in signalling that an ENUM query was already made for the "tel" URI (specified in RFC 3966 [5]), the "enumdi" parameter gets used. That way the next VoIP network element doesn't waste time repeating redundant queries πŸ¦‹

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 BCP 14, RFC 2119 [1] πŸ’…

3. Formal Syntax 🧩

The following syntax spec uses the Augmented Backus-Naur Form (ABNF) as described in RFC 4234 [2] to extend the syntax of the "par" production defined in the ABNF of RFC 3966 [5] πŸŽ€

par =/ enum-dip-indicator

enum-dip-indicator = ";enumdi"

The enum-dip-indicator is an optional parameter for the "tel" URI 🌸 Also, enum-dip-indicator can appear at most once in any "tel" URI, so only one of these per URI, babe πŸ™ˆ

4. Normative Rules πŸ“œ

4.1. Options for ENUM Domain Providers 🏒

A domain provider can, at its choosing, populate a NAPTR record with a "tel" URI that contains the enum dip indicator πŸ’– As a result of the rules stated below, this would tell the client that it should not bother performing a query and should pass the request on instead 🫠

4.2. Client Behaviour for VoIP Network Elements πŸ€–

This section is all about how a VoIP network element handles a received "tel" URI that either contains the "enumdi" parameter, or has queried ENUM in e164.arpa. for a given E.164 number πŸ‘€

4.2.1. Handling a URI with the "enumdi" Parameter πŸ”

If a VoIP network element receives a "tel" URI containing the "enumdi" parameter, it SHOULD NOT retrieve the related information for this number from ENUM in e164.arpa., even if it would normally do so 🚫

Note that the recipient network element may reasonably choose to query ENUM if it doesn't have a trust relationship with the immediate sender of the URI 🀝

If the "tel" URI (received from a trusted entity) is going to be passed to the next network element, the VoIP network element MUST pass on the received URI containing the "enumdi" parameter unchanged 🫢

If, however, the URI came from an untrusted entity, then the recipient entity may either strip the parameter before sending the URI onwards, or carry out its own ENUM query and add the parameter accordingly to the URI (see next) πŸ•΅οΈβ€β™€οΈ

4.2.2. Adding the "enumdi" Parameter to URIs βž•

When a VoIP network element queries ENUM in e164.arpa. for a given E.164 number and the result of the query is DNS error code 3 (commonly known as "NXDOMAIN"), then if that network element chooses to pass the call to another network element by using a "tel" URI, the "enumdi" parameter MUST be set πŸ’…

4.2.3. Handling a URI Retrieved from ENUM πŸ“₯

When a VoIP network element queries ENUM in e164.arpa. for a given E.164 number and either:

  • the result of the query includes a NAPTR resource record containing a "tel" URI that has the same E.164 number, or
  • the result of the query includes a NAPTR resource record containing a "tel" URI with the "enumdi" parameter set,

then if that retrieved "tel" URI is chosen to be passed to another network element, the sending VoIP network element MUST pass on the retrieved URI with the "enumdi" parameter set πŸ¦„

When a VoIP network element queries ENUM in e164.arpa. for a given E.164 number and the result is a "tel" URI with a different E.164 number that lacks the enum dip indicator, the client can either perform another query against that number or pass the request on, as a matter of local policy 🌈

5. Examples 🎬

a. Okay so a VoIP network element called server.example.com receives a "tel" URI tel:+441632960038 πŸ’« It queries the DNS for NAPTR resource records in 8.3.0.0.6.9.2.3.6.1.4.4.e164.arpa., and gets an error response with code = 3 (commonly known as "NXDOMAIN") πŸ’€ The VoIP network element decides to route the call to the PSTN via another VoIP network element called gw.example.com πŸ“±

It therefore signals to the next VoIP network element with:

tel:+441632960038;enumdi

or (using the procedures of RFC 3261 [6] section 19.1.6):

sip:+441632960038;enumdi@gw.example.com;user=phone

b. Same vibe here: a VoIP network element called server.example.com receives a "tel" URI tel:+441632960038 πŸŽ€ It queries the DNS for NAPTR resource records in 8.3.0.0.6.9.2.3.6.1.4.4.e164.arpa., and this time it gets the same "tel" URI back in reply (i.e., tel:+441632960038) πŸ”

The VoIP network element decides to route the call to the PSTN via another VoIP network element called gw.example.com πŸ“ž

It therefore signals to this next VoIP network element with:

tel:+441632960038;enumdi

or (using the procedures of RFC 3261 [6] section 19.1.6):

sip:+441632960038;enumdi@gw.example.com;user=phone
Part 2 is coming next, bestie! 🫢 It covers Security Considerations, IANA Considerations, Acknowledgements, the References, and the authors' addresses ✨

okay bestie, the legal bit 🫢 Copyright (C) The IETF Trust (2006). This document is covered by the rights, licenses, and restrictions in BCP 78, and apart from what that says, the authors keep all their rights πŸ’…

This document and the info in it are given "AS IS", no promises. 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 say they're not giving ANY warranties, express or implied. That includes no promise that using the info won't infringe anyone's rights, and no implied warranties of merchantability or fitness for a particular purpose πŸ’€


Intellectual Property πŸ¦‹

The IETF doesn't pick a side on whether any Intellectual Property Rights or other rights that might be claimed for the technology in this document are valid or how far they reach. It also doesn't say whether licenses for those rights are actually available. And it hasn't claimed to have done any independent digging to find such rights πŸ™ˆ If you want the details on how rights work for RFC documents, check BCP 78 and BCP 79.

Copies of IPR disclosures sent to the IETF Secretariat, plus any assurances that licenses will be made available, are in the IETF's online IPR repository at http://www.ietf.org/ipr. You can also find the result of any attempt to get a general license or permission to use those proprietary rights, for implementers or users of this specification πŸ”₯

The IETF also welcomes anyone to flag copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that to the IETF at ietf-ipr@ietf.org ✨

Acknowledgement 🌸

The RFC Editor function is currently funded by the Internet Society. Thank you, Internet Society πŸ«ΆπŸ’œ

πŸ“¦ where this page comes from