The Contact header is mandatory to exist in the INVITE and 200 OK message, and can also be included in a REGISTER message or other responses such as 1xx, 2xx, 3xx. It consists of a display name (optional), the URI of the originator User Agent (UA) and may also contain parameters. An example of a Contact header can seen below:
Contact: A <sip:firstname.lastname@example.org>
where A is the display name and sip:email@example.com is the SIP URI of A.
But what is the use of the Contact header? The Contact header basically contains the SIP URI of the caller, that the called party can use to send future requests to. That is, requests that belong to the same dialog, such as re-INVITE, BYE and ACK messages. In other words, it says where a party can be reached. Let’s see how Contact is used within particular messages:
PSTN and VoIP networks have co-existed for some time now. Calls can be made from one platform to the other with the help of translation signaling/media gateways. But how is this translation done and what are the main functions of a gateway?
PSTN and VoIP are two very different technologies. PSTN uses SS7/ISUP protocol for signaling and transfers media over traditional TDM channels on E1/T1 trunks. VoIP on the other hand, uses SIP protocol for signaling and RTP protocol for the media. A gateway’s duty is to convert those protocols and formats from one to the other.
A gateway has three main functions:
- Signaling Gateway (SG)
- Media Gateway Controller (MGC)
- Media Gateway (MG)
As VoIP services are growing, traditional (PSTN) and IP telephony need to co-exist. Users can belong either to one or the other network, and inter-working between the two technologies is necessary. That requires translation between the different protocols used, which is provided by signaling/media gateways. This post makes first a quick introduction to the signaling process of a PSTN call, and then it describes a call scenario where a PSTN subscriber calls a VoIP user.
Traditional telephony (PSTN network) uses a signaling protocol called ISDN User Part (ISUP). When a user initiates a call, an Initial Address Message (IAM) is sent in order to reserve a circuit for the call. Continue reading
The Session Border Controller (SBC) is a SIP B2BUA entity that is commonly used in the borders of network providers. The SBC receives and processes requests as a UAS, which then regenerates and sends as a UAC. In this way it is acting as an intermediary between the origin and destination of VoIP sessions. But what are an SBC’s main functions and advantages?
Analyzing SIP packets is one of the most common ways to troubleshoot VoIP issues in the network or systems. Wireshark is a very helpful tool when it comes to analyzing VoIP SIP calls. Therefore, it is good to be able to monitor the VoIP traffic and capture the SIP packets. Wireshark provides the possibility to detect the VoIP calls in a trace and analyze them accordingly.
In order to detect the VoIP calls in a Wireshark trace, you need to select from the top menu: Telephony –> VoIP Calls. Then a new window appears which lists all the calls that were found in the trace, and information regarding the start/end time, From/To headers, etc. Select a call from the list, and press “Flow“. Continue reading
The To and From are two mandatory headers of a SIP INVITE request. This post describes the format of these headers and how they are used during the signaling process.
The To header field contains the contact information/address-of-record of the recipient of this request. According to RFC 3261 the user specified in the To header may or may not be the end-party of the call. The To header consists of a display name (optional) and the SIP URI of the recipient and it must not contain a tag parameter for out-of-dialog requests (such as an INVITE request for the establishment of a new session). Continue reading
During the establishment, maintenance and termination of a SIP session, signaling messages are exchanged between the two SIP endpoints. There are two different kinds of signaling “conversations” that those messages take part in: transactions and dialogs.
A transaction is a SIP message exchange between two user-agents that starts with a request and ends with its final response (it can also contain zero or more provisional responses in between). For example, during the termination of a SIP session, one user releases the call by sending a BYE request and the other party replies back with a 200 OK response. This message exchange is called a transaction.
But what happens in the case of the INVITE request? Continue reading
The INVITE is the first SIP message that a caller will send to the recipient in order to establish a call. This post focuses in the first line of the INVITE and describes its components and usage.
This first line is actually called “Request-line” and it consists of three components: the method name, Request-URI (R-URI), and the protocol version.
Assuming that A calls B, the Request-line of A’s INVITE will look like this: Continue reading