Understanding IP Phone Behavior

advertisement
Understanding IP Phone
Behavior
Skinny Client Control Protocol
SCCP
Prof. Yousif
@
Valencia Community College
Skinny Protocol
• Skinny Protocol is a lightweight
master/slave protocol
• CallManager controls every function of the
phone.
• CallManager facilitates call signaling to
other devices using different protocols
– H.323 for routers
– TAPI/JTAPI for Soft Phones/IP Communicator
Master/Slave Example
• When the Phone goes off-hook, it notifies CM
that the user has gone off-hook.
• CM sends a message to the phone notifying it
play dial tone.
• The phone can not determine when to play dial
tone on its own.
• It is important to understand the roles that both
IP phones and CM play when troubleshooting IP
phones
• Example: Where do you troubleshoot the
problem of delayed dial tone???
Call Processing Behavior
•The Call Processing Behavior can be best explained by
examining The CM trace file
•CM Traces are configured from Cisco Service
configuration.
From the Trace Menu, Select Trace
configuration
Collect the Traces for a Certain
Period of Time
A Sample Trace for a Call Between
Two IP Phones
1. IP phones use the Skinny protocol to
communicate with CallManager
2. All messages to and from a Skinny device are
preceded by either the word StationInit or
StationD.
3. StationInit means that an inbound TCP message
form a Skinny station reached CallManger.
4. Example:
StationInit: 000000004 OffHook
TCP Handle
• The TCP handle represents a unique value that identifies
a specific IP pone registered to this CM Server.
• With The TCP handle, you can follow every message
sent and received from a particular IP phone.
• The TCP handle of a device can also be found by
looking up the IP phone’s MAC Address until you find a
keep alive message to that phone.
• Example: StationInit - InboundStim - KeepAliveMessage
- Send KeepAlive to Device Controller.
DeviceName=SEP000F8F59D304,
TCPHandle=000000004, IPAddr=192.168.1.128,
Port=52952, Device
Controller=[1,92,1]|<CLID::StandAloneCluster><NID::19
2.168.1.140>
Skinny Protocol
• The OffHook message means that CallManger
received a Skinny message indicating the phone
went off-hook
• The next message in the trace file is: StationD:
000000004 StationOutputDisplayText=‘ 40000
‘
• StationD signifies that the CM server is sending
a message to the IP phone.
• Notice that the same TCP handle is listed
• The number 40000 represents the directory
number of the phone.
Other Skinny Messages
• StationD: 000000004 StartTone
tone=33(InsideDialTone) Tells the IP
phone to start plying dial tone.
• CallReference=16777225: The Call
reference ID is created by CM for each
participant in a call and can be used to
track a particular call through a CM Trace
Other Skinny Messages
• StationInit: 000000004 KeypadButton kpButton=4
• StationD: 000000004 StopTone.
• CCM|StationD: 000000004 SelectSoftKeys instance=1
reference=16777225 softKeySetIndex=6
• StationInit: 000000004 KeypadButton kpButton=0
• CCM|StationInit: 000000004 KeypadButton kpButton=0.|
• StationInit: 000000004 KeypadButton kpButton=0.
• StationInit: 000000004 KeypadButton kpButton=4
• Note: digit * shows as e and a # shows as f
• StationD: 000000004 SelectSoftKeys instance=1
reference=16777225 softKeySetIndex=8
Other Skinny Messages
• Call Manger is constantly analyzing the
digits the user dials, and once it finds an
exact match, digit analysis returns the
results for the match.
• Now is the time to ring the CIPC phone
which is configured with DN 40004.
• The Call Routing Chapter will provide
additional details on how digit analysis
wok in CM
Other Skinny Messages
• Because CM has collected all the required digits, it is
ready to notify the destination IP phone there is an
incoming call.
• StationD: 000000005 CallState callState=4
lineInstance=1
• StationD: 000000005 CallInfo callingPartyName='Wael
Yousif' callingParty=40000 cgpnVoiceMailbox=
calledPartyName='' calledParty=40004
• callReference=16777226
• StationD: 000000005 SetRinger
ringMode=2(InsideRing)
• StationD: 000000005 DisplayPriNotify
timeOutValue=10 pri=5 notify='€40000' content='From
40000'
Other Skinny Messages
• Notice that the CIPC phone has a different
TCP handle (was assigned during
registration)
• Also, notice that the CIPC phone has a
different CallReference ID
• The CIPC phone now starts to ring
displaying the calling party name and
extension number
Other Skinny Messages
• The following messages perform two functions: First,
the display on the IPP changes to indicate that the call is
in progress. Second, the phone is told to play the
ringback tone which you hear when you place a call
• StationD: 000000004 CallState callState=12
lineInstance=1
• StationD: 000000004 CallInfo callingPartyName='Wael
Yousif' callingParty=40000 cgpnVoiceMailbox=
calledPartyName='' calledParty=40004
• StationD: 000000004 StartTone tone=36(AlertingTone),
The CIPC Answers the Call
• StationInit: 000000005 SoftKeyEvent
softKeyEvent=11(Answer) lineInstance=1
• The above message is equivalent to the
“StationInit OffHook” message in the case
where the called phone is another IPP.
• The preparation is now complete for the
actual media connection
Audio Stream Setup
• Skinny uses Real Time Transport Protocol (RTP)
over User Datagram Protocol (UDP) packets to
send and receive Voice Over IP samples.
• Each RTP stream is called a logical Channel.
• A Logical Channel is a Unidirectional RTP
stream,
• To Have a two-way conversation, you must have
two logical channels opened; one from the
calling device to the called device and one from
the called device to the calling device.
Audio Stream Setup
• In the following section you can see how CM asks the IP
phone to open a connection to receive RTP streams.
• You can also see how that CM asks the IP phone for
specific parameters, including the codec and packet
size.
• StationD: 000000004 OpenReceiveChannel
conferenceID=0 passThruPartyID=1000091
millisecondPacketSize=20
compressionType=4(Media_Payload_G711Ulaw64k)
qualifierIn=?. myIP: 8001a8c0
(192.168.1.128)|<CLID::StandAloneCluster><NID::192.1
68.1.140><CT::1,100
Audio Stream Setup
• Upon receiving an OpenReceiveChannel
message, the I phone selects the UDP
port number it wants to use to receive RTP
packets and reports this information back
to the CM in an
OpenReceiveChannelAck message.
• StationInit: 000000004
OpenReceiveChannelAck Status=0,
IpAddr=0x8001a8c0, Port=17198
Audio Stream Setup
• The same handshake of “OpenReceiveChannel”
and “OpenReceiveChannelAck” is done at the
called phone.
• When CM receives the OpenReceiveChannelAck
from the CIPC phone, containing the UDP port
number, it forwards this information to the calling
phone in a StartMediaTransmission message
• StationInit: 000000005 OpenReceiveChannelAck
Status=0, IpAddr=0xf001a8c0, Port=24600
• StationD: 000000004 StartMediaTransmission
conferenceID=0 passThruPartyID=1000091
remoteIpAddress=f001a8c0(192.168.1.240)
remotePortNumber=24600
milliSecondPacketSize=20
compressType=4(Media_Payload_G711Ulaw64k)
Audio Stream Setup
• At this point the two phones are sending
RTP messages to each other.
• Notice that for the duration of this call, the
two phones never have sent nor received
any Skinny signaling to or from each other.
• This is because all the signaling goes
through CM
• The only time IP phones send packets to
each other is for the actual Voice Stream.
Labs
• CCM Traces
• Challenge Lab: Capture The Call Setup
and Media Transport Processes using
Ethereal
Download