I decided to write about that because over the last few weeks couple people asked me this very question. We know how to configure Early Offer support on CUCM, there are thousands of guides on that topic, but sometimes it’s not clear what’s actually the logic and reason behind.
There are two main, well known terms in SIP offer/answer model:
- Early Offer – when SDP is send in INVITE and 200OK
- Delayed Offer – when SDP is send in 200OK and ACK
One of the most important information included in SDP is endpoint’s connection details, or more specifically – IP address and port on which media stream will be established. So basically, in Early Offer model, calling party informs about its own IP/port in INVITE, while called party informs about same in 200OK. On the other hand, in Delayed Offer model called party informs about its IP/port in 200OK, while calling party sends that information in ACK.
Now, time for MTP part. Under CUCM SIP Trunk configuration there is a famous option “Early Offer support for voice and video calls (insert MTP if needed)”. When you check it and then make a call where calling party does not send SDP in INVITE (Delayed Offer), CUCM is going to invoke MTP.
Let’s say you have an agreement with SIP Service Provider by which you’re obliged to send Early Offer to them no matter what. Easy. You just configure your SIP Trunk pointing to SP with “Early Offer support for voice and video calls (insert MTP if needed)” and provide some MTP resources for the Trunk. Now let’s take a look at the bellow call flow example:
Imagine, that for any reason, calling IP phone does not send SDP in INVITE (Delayed Offer), but as we mentioned, you’re obliged to send Early Offer to SP. If you haven’t received any SDP from the phone in the originating INVITE, which means you don’t know phone’s connection details for media stream, what IP address and port number are you going to send to SP?
What’s going to happen is following:
- CUCM receives INVITE without SDP from the phone (so it doesn’t know phone’s IP/port for media stream)
- CUCM knows that it’s obliged to send Early Offer to Service Provider so it will invoke MTP (via SCCP protocol)
- CUCM gets IP address and port from MTP
- CUCM creates INVITE with SDP, which contains IP/port of previously invoked MTP, and sends this INVITE over to Service Provider
That’s why and how we sometimes invoke MTP on Early Offer calls.
Obviously, it’s not only about SIP-to-SIP calls. Logic is same for every call where calling side for any reason doesn’t provide information for media setup. These can be some H323 setups, calls from SCCP endpoints, older SIP phones, or SIP GWs which didn’t send us Early Offer in the first place.