How the iLabs team created a dial plan for their SIP implementation.All telephony networks require a dial plan that describes what happens when you dial which numbers. In the U.S., for example, we participate in the North American Numbering Plan, which is why we put a "011" before international calls and "1" before an area code and phone number. These kinds of things are all specified in a dial plan.When the iLabs engineers sat down to design our dial plan, we didn't realize that we'd almost come to blows over the details. But, like all human interface issues, how many digits you have to dial and what they mean tend to excite strong feelings.One example of the problem came when we debated how people were going to leave the world of our little PBX and connect to the rest of the telephony world. Half of the team wanted to use the traditional "dial 9 to get out" strategy, while the other half wanted to simply let you pick up a phone and start dialing.There are pros and cons to each. For example, if you're in an area where you always have to dial the area code for any phone number anyway, a "9" access code is not needed. On the other hand, if you're transitioning from a legacy PBX (with a "dial 9" policy) to a\u00a0SIP\u00a0network, the transition might be easier if the dialing plan is the same - even if there's no need for the extra digit.There's more to a dialing and numbering plan than that. In our test network, we didn't know how many SIP proxy servers we were going to end up with, so we used the first two digits of each of our four-digit extension numbers to route the call to a particular proxy server, reserving two digits for the phones. By routing calls based on the first few digits dialed, we didn't have to make every server know about every phone, just about every other server.When you have to connect to a legacy PBX, especially during a transition period, the dialing plan also helps to minimize confusion.The dial plan is programmed into the logic of every SIP proxy server in the network, and also is pushed out (to some extent) to each phone. Phones don't need to know about routing of calls, but they do need to know how long phone numbers are. This is because the phone decides when enough digits have been pressed and it's time to actually make the call, not the PBX, as in traditional telephony.Phones without a properly configured dial plan either require a terminator (such as the pound symbol) or a timeout (such as waiting for 4 or 5 seconds) before they actually start calling. Some phones support a "plan-less" mode of operation where they try and make a call for every digit dialed, depending on the SIP proxy server to return different status codes depending on whether the partial number is illegal or just too short. In a large deployment, the phone would download the dial plan as part of its configuration at boot time.Designing the dial plan is an important part of any SIP deployment because changing it requires changing every SIP device in the network. Just as engineering a proper IP address and subnet plan is important in a TCP\/IP network, getting the dial plan right the first time can save a lot of grief and problems later. Back to feaure: "SIP aces basic interop tests"