What is ENUM?

An InteropNet Labs white paper.

ENUM is an IETF standard (RFC 2916) for mapping the public telephone number address space into the Domain Name System (DNS).  In the iLabs, we use ENUM to centralize our call routing information in a standards based format.

Most people think of as telephone numbers as 11-digit sequences that follow this pattern:  +1 702 555-1212.  These telephone numbers are part of a global numbering plan specified by the International Telecommunications Union (ITU) in Recommendation E.164.  ENUM specifies how to use DNS to locate services associated with E.164 addresses.  Not all telephone numbers are complete E.164 addresses, but for simplicity's sake, we'll use both terms interchangeably in this paper. While ENUM specifies methods for locating many different type of services, such as those provided by mail or Web servers, in the iLabs, we are mainly concerned with using ENUM for IP telephony, and specifically the Session Initiation Protocol (SIP).

In SIP, the closest equivalent to a typical phone number is the SIP URI (Uniform Resource Identifier).  Inside of SIP, these are used to make calls.  A few typical SIP URIs are:

 sip:3110@sip.ilabs.interop.net 

 sip:voicemail@sip.ilabs.interop.net

The part to the left of the "@" sign (local part) in the first example is numeric.  SIP URIs often have numeric local parts because most phones only have numeric keypads.  However, SIP URIs do not have to be numeric, as the second example shows.  When used internally to the SIP network, or when dialed with a "soft phone" from a laptop, the alphanumeric format poses no user interface problems. 

The problem ENUM tries to solve is the mapping between a standard telephone number and a SIP URI.  When dialed in the context of a single enterprise SIP network, this mapping can be built into the SIP infrastructure (such as "automatically append @sip.ilabs.interop.net to every 4 digit number dialed").  When dialing between SIP networks, a directory service is needed to map dialed numbers to SIP URIs.  You can put that directory anywhere.  With ENUM, the directory is stored in the DNS. 

Once ENUM is widely deployed, the idea is that you should be able to dial any "phone number," and have your SIP infrastructure look it up using DNS.  If a SIP URI exists for that phone number, the call could be routed directly via IP.  If no URI exists, the call would have to be routed over the normal PSTN.

How are telephone numbers named in DNS?

When ENUM is used, international phone numbers are stored in the DNS to enable SIP-to-SIP calls within and across enterprises using E.164 addresses.  These E.164 addresses are in the global DNS in the domain e164.arpa in a special naming format. To create the name we start with a form of the telephone number, including the country code (for example, the US has country code 1):

+1 702 555-1212

Notice the most specific part of a telephone number is on the right and the least specific part, the country code (1)  and the area code (702) are on the left.   Next, we remove all the characters except for the digits:

17025551212

And we put dots between each digit so that each digit becomes a node in the domain name hierarchy:

1.7.0.2.5.5.5.1.2.1.2

Since we are creating a domain name, and domain names have the most specific part on the left, we then reverse the order of the digits and append the string ".e164.arpa" to the end to get the name that is used to query DNS:

2.1.2.1.5.5.5.2.0.7.1.e164.arpa

How are records stored in DNS?

Records are stored in DNS as Naming Authority Pointer (NAPTR) records as described in RFC 2915.  Following is an example for the above phone number:

$ORIGIN 2.1.2.1.5.5.5.2.0.7.1.e164.arpa. 

;         order pref flgs service  regexp for substitution

NAPTR 100   10  "u"  "sip+E2U" "!^.*$!sip:info@sip.ilabs.interop.net!"

In this record, the 100 specifies the order to be considered when there are more than one NAPTR records (although this example only shows one).  If there were multiple NAPTR records returned, possibly with multiple services offered, the order value would be used to indicate which service is preferred.  The preference value is considered next to control how equal-order records are used.  This is similar to the preference value in an MX (mail exchanger) DNS record, which tells mail servers how to deliver mail.

The flag "u" denotes a terminal lookup that will result in the production of a URI by the regular expression substitution specified.  The "sip+E2U" specifies a service to be contacted by SIP through the use of an E.164 to URI (E2U) translation.  The substitution "!^.*$!sip:info@sip.ilabs.interop.net!" is then applied to the original phone number (such as +17025551212) to yield the result sip:info@sip.ilabs.interop.net , which is used to resolve SIP addresses.  The substitution is of the form

!regular expression!replacement string!    

The regular expression is a standard POSIX Extended Regular Expression.  In this case "^.*$" matches any number of characters (".*" in this example) between the beginning ("^") and the end ("$") of the string, in other words, this matches the entire string.

The replacement string is the resultant string ("sip:info@sip.ilabs.interop.net"), which is to be used to place the SIP call.  The NAPTR format also specifies a method for various matches in the regular expression to be substituted into the replacement string.  This simple example does not require that.

How is ENUM being used in the iLabs?

In the iLabs we have multiple SIP proxies and each proxy serves a number of SIP end stations (such as telephones).  Some of our proxies understand ENUM and perform DNS queries to route calls to other proxies.  This allows us to centralize our SIP call routing database in a DNS server and not have to manually enter the routing rules in each SIP proxy.  For example, all phone numbers of the form +170055531XX are handled by the Asterisk server.  To route to Asterisk, we have a DNS record that simply places the phone number before the domain name "@asterisk.sip.ilabs.interop.net":

$ORIGIN 1.3.5.5.5.0.0.7.1.e164.arpa.

NAPTR 100 10 "u" "sip+E2U" "!^.*$!sip:\\1@asterisk.sip.ilabs.interop.net!"

Note that the ENUM name will match on the first nine digits of the number, ignoring the last two digits. ENUM allows telephone number routing interoperability between vendors.  We created our own "fake" e164.arpa domain to simulate the public ENUM space, but we could have just created our own private ENUM domain, such as e164.sip.ilabs.interop.net, which is more likely what a private enterprise would do.  There are many such private ENUM deployments today.

What is the status of the public ENUM e164.arpa name space?

The political, social, and privacy issues of using ENUM are still being resolved. As of March 2004, there were 23 ENUM national trials active, but none of them are here in North America where the situation is more complex than in most countries.  In many countries, there is a single telephone operator and the delegation of the ENUM name space to that operator is obvious.  North America shares the E.164 country code of "1" between the US, Canada and several countries in the Caribbean Basin, which implies that the usage of the ENUM domain "1.e164.arpa" is not only by multiple operators, but is also by multiple countries.  An industry group, the ENUM Forum (www.enumf.org/) has been formed to help develop ENUM policy in the United States. 

Next: 

Related:

Copyright © 2004 IDG Communications, Inc.

The 10 most powerful companies in enterprise networking 2022