Back in the good old days of telephony, you were identified by the wire you were attached to. It didn’t matter what physical telephone you plugged into that wire. You could even split the wire and stick each end into different telephones, but you (i.e. your telephone number) didn’t change. That’s certainly the way it worked when I was growing up in the 1960’s and 1970’s and it’s still the way my land-line at home works.
That changed with the advent of cell phones. Gone were the wires. However, even though there wasn’t a material thing to connect to, your telephone number was attached to the cell phone. Also, unlike that split telephone wire, you can’t split a cell signal and assign the same phone number to multiple devices. The device and the number were practically one and the same.
Enter SIP. With SIP you not only lose the joined-at-the-hip wire, you also separate the telephone number from the device. You can log into any SIP phone and your telephone number automatically becomes associated with the device. Better yet, you can log into multiple SIP phones and that number magically appears on every one of them. Similar to those old analog phones hanging off the same wire, a whole cadre of devices might start ringing when someone calls you.
How does this happen? What’s the magic behind bonding one or more devices to a single number? The SIP REGISTER message, of course.
A REGISTER message creates a bond between a device and a SIP Uniform Resource Identifier (URI). That URI could be as modern day as user@domain, or as old school as a regular old telephone number. The REGISTER message supports both formats and which one you use depends on how you want folks to reach you.
A REGISTER is typically sent after a SIP device has started and its user enters some form of identification and password. For example, on my Avaya 9641 telephone I am prompted for my extension and a password. I enter “3516,” my eight-digit password, and I’m good to go. That password will be encrypted and sent back to Session Manager inside a SIP “WWW-Authenticate” header.
For a deeper dive into authentication, please refer to my blog, Proving it With SIP Authentication.
In addition to my 9641, I also use Avaya’s One-X SIP Communicator on my PC and One-X Mobile for IOS on my iPhone. They all send their own REGISTER messages with my extension and password. When someone calls me, all three phones ring and I choose the device that makes sense to answer.
Unless they are refreshed, registrations expire after a timeout is reached. That timeout is determined by a SIP “Expires” header contained within the REGISTER request. The Expires header tells the SIP registrar how many seconds the registration is valid. For example, an Expires of 3600 would be 60 minutes or one hour. Unless a subsequent REGISTER is sent within that hour, the user will become unreachable. The rule of thumb is that a SIP device sends another REGISTER halfway through the duration of the Expires value. If that value was 3600, the next REGISTER would be sent 30 minutes after the previous. This continues until the user logs out.
Speaking of logging out, REGISTER comes into play here, too. To log out, a SIP device sends a REGISTER with an “Expires” header of 0 (zero). Zero seconds tells the SIP registrar that this registration is no longer valid and calls will not be sent to a user after all his or her registrations expire or are set to zero.
A peculiarity about REGISTER is that it uses “To” and “From” headers, but they are set to the same value. Using me again as an example, the “To” and “From” headers sent by my 9641 both contain my extension of 3516.
REGISTER uses many of the other typical SIP headers (Via, Call-ID, Max-Forwards, etc.), but there is nothing special about them when it comes to registrations. They work just as they do in an INVITE or a BYE message.
I hope this all makes sense. Everything starts and ends with REGISTER and having a decent understanding of the ins and the outs will help you better understand your SIP solution.