How To Read SIP Traces
How To Read SIP Traces
Introduction:
Everyone has some overlap in the way they read traces; however, there are tips and tricks that each person can bring to
the table. With that being said, this series displays my way of reading the traces.
Tools I use
RTMT
extract now
This 2.5 minute video discusses how I setup extract now.
notepad ++
translator X (only when the occasional need arises, and this should be used once you are a little more familiar with
traces)
CDR cause codes
Convert to IP address
Call signaling diagrams
SIP
SCCP, MGCP, and Gatekeeper
H.323
Version 10 SRND for media resources
Things to understand
Every call has a few things in common:
1: The call is extended to CUCM
2: CUCM will do digit analysis
3: If a pattern or DN is matched, CUCM will try to select a device (trunk, gateway, route point, phone (via Directory
Number and partition combination), etc...)
4: If CUCM successfully selects a device, the call will be extended to the device
You also want to understand a little about the processes.
The process listed on the right is talking to the process listed on the left. Here we see the SIPStationCdfc process talking
to the SIPCdpc process.
|SIPCdpc(3,100,83,3) |SIPStationCdfc(3,100,75,2)
There are two major types of processes in the SDL device layer:
1: Edge Processes (Talk with the outside world from the perspective of CUCM)
2: Control Processes (Internal processes that control the devices)
These are 5 of the major edge processes.
SipHandler
SIP phones and SIP Trunks will communicate with the CUCM using the SipHandler internal process
SipHandler creates an intermediate process named SipStationInit (there is only one per CUCM),
SipStationInit creates SipStationD instances for each SIP Phones.
For every SIP Trunk SipHandler will create an instance of SipD
StationInit
Communicates with all the Skinny devices: Phones, Voicemail ports, Media Resources (CFBs, XCDRs, Annunciators, MOD,
etc...)
StationInit creates one StationD per Skinny device.
H225Handler
Will Communicate with all the H323 Gateways and Trunks that point to the CUCM
StationHandler creates an instance of H225D per H323 device
MgcpHandler
Will talk to all of the MGCP gateways regardless of protocol (T1 CAS/CCS, PRI, FXS, FXO, etc...)
For each T1 CAS, FXS, or FXO MgcpHandler will create an instance of MgcpTrunkD to manage the port
MgcpBhHandler
Will only talk to the MGCP Pri interfaces because MgcpBhHandler processes the ISDN backhauled messages from the
gateway as these messages are terminated at the CUCM. When the ISDN messages hit the GW, the GW convirts the
Time Division Multiplexing (TDM) messages to IP Packets (i.e. the legacy voice setup message will be put into a TCP
packet which will be put into an IP packet), the gateway will open a TCP socket with CUCM, the IP packet will be sent to
CUCM, CUCM will read the message off the socket when it terminates at the CUCM, CUCM will then reply with an
MGCPPri call proceeding message by putting the message inside a TCP packet which is put into an IP packet, the IP
packet will be sent to the gateway using the TCP socket, the GW will then translate the message into TDM and send it to
the PSTN
The regular MGCP messages like CRCX, MDCX, etc. go to the MgcpHandler
For each Pri interface MgcpBhHandler will create an instance of MgcpPn9D
There are a few things you will want to find to help you better follow the call:
1: The CIs (these are identifiers that are unique to a call, but more specifically they are unique to a call leg within the call)
2: The CDCCs (Call Dependent Call Control process)
3: Call dependent processes (processes created specifically for the call you are analyzing). These are not as important as
knowing the CIs and CDCCs; however, they can be very useful at times.
Here are some of the call dependent processes:
Cdcc
LineCdpc
SIPStationCdfc
SIPCdpc
SIPInterface
Forwarding
PickupMonitoring
MatrixControl
MediaExchange
MediaManager
Transferring
Recording
RouteListCdrc
HuntListCdrc
QueueControlCdrc
CallPark
H225Cdpc
MGCPpn9cuser
MediaResourceCdpc
H245Interface
AgenaInterface
MGCPInterface
When the processes are created it looks similar to this (I modified it for ease of viewing).