For most cisco UC guys, the concept of sip we are used to is a little restricted to the functionality that cisco cucm, cube etc use.
In most scenarios, these devices acts as B2BUA and as such we do not see the sip proxy functionality of the sip architecture.
Well all that has changed with the introduction of Expressway servers for MRA. Expressway- E and C fully utilize the sip proxy functionality even in ways the traditional VCS-E and C do not
As such I felt its a good idea to understand the sip messaging that enable proxies like the expressways function.
In this short write up we will be looking at sip traces from jabber and the expressway servers to fully understand how sip messaging flows from one end to the other.
Before we go ahead, there are three important sip headers that I need to explain. I previously wrote a documentation on understanding sip traces.
Please refer to this here (https://supportforums.cisco.com/document/113271/understanding-sip-traces)to get a solid understanding of sip messaging.
Moving on, we need to understand three key headers that are used by sip proxies for sip messages.
The destination of a sip request is normally taken from its request-URI (RURI), but to force traffic to use a certain path, a client/server can insert a route header. UAs may include a Route header field in an initial request to force that request to visit and potentially be serviced by one or more proxies
once a route header is present, the RURI should be disregarded and the request should be sent directly to the URI contained in the route header.
The record route header records the path for later use with the route header. A proxy forwarding a request uses this header to demand to stay in the signaling path of the dialog. It contains the URI where the proxy wishes the requests be addressed.
The UAS must if it receives a dialog creating request (e.g. INVITE) copy any available Record-Route headers into all the responses it creates to ensure that the UAC also becomes informed of the so called “Route set”. The term Route set refers to the entire list of proxies that have added themselves ti the record route header.
Now let’s look at a jabber sample trace for MRA call..
As we can see this is sent directly to the expressway-e server or we can say that the call is proxied through the expressway-e server.
It is important to note that when a proxy generates a request, it must strip its own Route header from the outgoing request. As you can imagine this could lead to call loop and failures if this is not done. So here is the outbound INVITE sent by expressway-e after receiving the INVITE from jabber.
Note that it has stripped of its route header and replaced it with a new route header:
Once expressway-C receives this request it does a zone search to see if there is any rule that matches the request. This request is destined for Route: <sip:uclabcucm-sub;transport=tcp;lr>
2014-09-04T10:46:55+00:00 uclabexpwc02 tvcs: UTCTime="2014-09-04 10:46:55,045" Module="network.search" Level="DEBUG": Detail="Search rule 'LocalZoneMatch' ignored due to system generated search rule filtering"
2014-09-04T10:46:55+00:00 uclabexpwc02 tvcs: UTCTime="2014-09-04 10:46:55,045" Module="network.search" Level="DEBUG": Detail="Search rule 'CEtcp-uclabcucm-pub' did not match destination alias 'uclabcucm-sub;transport=tcp;lr'"
2014-09-04T10:46:55+00:00 uclabexpwc02 tvcs: UTCTime="2014-09-04 10:46:55,045" Module="network.search" Level="DEBUG": Detail="Considering search rule 'CEtcp-uclabcucm-sub' towards target 'CEtcp-uclabcucm-sub' at priority '45' with alias 'uclabcucm-sub;transport=tcp;lr'"
Now that a search rule has been matched and observer that this search rule is the auto generated rule after expressway completes the UC servers discovery.
Now things get a little more interesting. Expressway-C sends several INVITEs out based on its route headers.
Final INVITE sent to CUCM. Observe that the route header has reduced to just one (the current route been processed) and the Record-Route headers were included to indicate inform cucm to send responses back to expwc.