Trunks are used to route calls in and out of the system. When the system receives a call from an extension, it checks to see if another account is being called. It does this by looking at the To field of the SIP packet. If it’s not another account, then the system consults the dial plan to determine which trunk the call should be routed to (extension-to-extension calls do not require trunks). When the system receives an outside call, it looks at the IP address it came from to see if the IP address is included the trunks table, and then routes it accordingly. In the past, trunks were physical lines, and the number of calls that could be placed was limited by the number of lines. An example of a traditional trunk. In the example shown below, a telephone switch is connected to a corporate private branch exchange (PBX) through one physical T1 line. A separate line (or channel) is needed for each of the 23 calls that are on the PBX.
SIP trunks are virtual lines, so the number of calls that can be made is limited only by bandwidth, rather than actual channels. SIP trunks allow a system to provide access for many individual telephones instead of requiring individual lines for each phone. Trunks can be dedicated to incoming, outgoing, or two-way traffic. Incoming trunks carry calls into the system from an external network (i.e., PSTN, cellular, ITSP). Outgoing trunks carry calls away from the system to external networks. Two-way trunks can be used for both sending and receiving calls. The diagram below sows a SIP gateway trunk connecting to the PSTN and a SIP registrations trunk connecting to the ITSP.