A Look at Cisco Skinny Client Control Protocol (SCCP)
I’ve been assembling some information about Cisco’s Skinny Client Control Protocol and figured this was a good opportunity to share what I’ve found about how it works for those who may be curious, but don’t have time to research all the different resources.
Cisco introduced SCCP - Skinny Client Control Protocol (most just call it Skinny). It's a a Cisco proprietary protocol used between Cisco Call Manager and Cisco VOIP phones, but it is also supported by some other vendors. With SCCP, the vast majority of the H.323 processing power resides in the Cisco Call Manager. The phones run the Skinny Client, which consumes less processing overhead. The Client communicates with the Call Manager.
I'll share some of the resources I used along the way because I think one of the greatest values in this sort of communications is our ability to share. I'll share the resources I can remember, and try to cite those where I just can't recall the original source. Most of this is not my original work, but rather some research and information gathering I've done.
Skinny Client Control Protocol
From Wikipedia, the free encyclopediaSCCP is a proprietary terminal control protocol originally developed by Selsius Corporation. It is now owned and defined by Cisco Systems, Inc. as a messaging set between a skinny client and the Cisco CallManager. Examples of skinny clients include the Cisco 7900 series of IP phone such as the Cisco 7960, Cisco 7940 and the 802.11b wireless Cisco 7920. Skinny is a lightweight protocol which allows for efficient communication with Cisco Call Manager which may act as a proxy for signalling of call events with other common protocols such as H.323, SIP, ISDN and/or MGCP.
A skinny client uses TCP/IP to and from one or more Call Managers in a cluster. RTP/UDP/IP is used to and from a similar skinny client or H.323 terminal for the bearer traffic (real-time audio stream). SCCP is a stimulus-based protocol and is designed as a communications protocol for hardware endpoints and other embedded systems, with significant CPU and memory constraints.
Cisco acquired SCCP technology when it acquired Selsius Corporation in the late 1990's. As a remnant of the Selsius origin of the current Cisco IP phones, the default device name format for registered Cisco phones with CallManager is SEP -- as in Selsius Ethernet Phone -- followed by the MAC address.
Other companies like Symbol Technologies and SocketIP have implemented this protocol in VoIP Terminals (phones) and Media Gateway Controllers or Softswitches.
A company named IPBlue has created a software phone (soft phone) which uses SCCP for signaling, too. This phone in fact appears to the Cisco CallManager server as a 7960 hardware phone.
In addition, Cisco has come out with its own version of a skinny softphone called Cisco Unified IP Communicator. Previously, Cisco had a JTAPI/CTI version of a softphone called Cisco IP Softphone.
About the SCCP Protocol
The SCCP protocol is a Cisco protocol standard for real-time calls and conferencing over Internet Protocol (IP). With the SCCP protocol, Cisco IP phones can co-exist in an H.323 environment.
An H.323 proxy can be used to communicate with the Skinny client using the SCCP protocol. In such a case, the telephone is a Skinny client over IP, in the context of H.323. A proxy is used for the H.225 and H.245 signaling.
With the SCCP protocol architecture, the vast majority of the H.323 processing power resides in an H.323 proxy — the Cisco CallManager. The end stations (IP phones) run what is called the Skinny client, which consumes less processing overhead. The client communicates with CallManager using connection-oriented (TCP/IP-based) communication to establish a call with another H.323-compliant end station. Once CallManager has established the call, the two H.323 end stations use connectionless (UDP/IP-based) communication for audio transmissions.
I can't recall where I found this, but it's a good useful overview -
Background
The SCCP protocol is a Cisco protocol standard for real-time calls and conferencing over IP.
An H.323 proxy can be used to communicate with the Skinny client using the SCCP protocol. In such a case, the telephone is a Skinny client over IP, in the context of H.323. A proxy is used for the H.225 and H.245 signaling.
With the SCCP protocol architecture, the majority of the H.323 processing power resides in an H.323 proxy — the Cisco CallManager. The end stations (IP phones) run the Skinny client, which consumes less processing overhead. The client communicates with CallManager using connection-oriented (TCP/IP-based) communication to establish a call with another H.323-compliant end station. Once Cisco CallManager has established the call, the two H.323 end stations use connectionless (UDP/IP-based) communication for audio transmissions.
Call States
This list defines the call states that are sent to SCCP endpoints, such as Cisco IP phones by Cisco CallManager in SCCP protocol. Cisco CallManager functions as an H.323 proxy. These are not the call states used in Cisco CallManager internally. Instead, they are the call states sent from Cisco CallManager and understood by the SCCP endpoints:
1—Off Hook
2—On Hook
3—Ring Out
4—Ring In
5—Connected
6—Busy
7—Line In Use
8—Hold
9—Call Waiting
10—Call Transfer
11—Call Park
12—Call Proceed
13—In Use Remotely
14—Invalid Number
Skinny Client Control Protocol (SCCP). Telephony systems are moving to a common wiring plant. The end station of a LAN or IP- based PBX must be simple to use, familiar and relatively cheap. The H.323 recommendations are quite an expensive system. An H.323 proxy can be used to communicate with the Skinny Client using the SCCP. In such a case the telephone is a skinny client over IP, in the context of H.323. A proxy is used for the H.225 and H.245 signalling.
The skinny client (i.e. an Ethernet Phone) uses TCP/IP to transmit and receive calls and RTP/UDP/IP to/from a Skinny Client or H.323 terminal for audio. Skinny messages are carried above TCP and use port 2000.
The messages consist of Station message ID messages. They can be of the following types:
| Code | Station Message ID Message | |
| 0x0000 | Keep Alive Message | |
| 0x0001 | Station Register Message | |
| 0x0002 | Station IP Port Message | |
| 0x0003 | Station Key Pad Button Message | |
| 0x0004 | Station Enbloc Call Message | |
| 0x0005 | Station Stimulus Message | |
| 0x0006 | Station Off Hook Message | |
| 0x0007 | Station On Hook Message | |
| 0x0008 | Station Hook Flash Message | |
| 0x0009 | Station Forward Status Request Message | |
| 0x11 | Station Media Port List Message | |
| 0x000A | Station Speed Dial Status Request Message | |
| 0x000B | Station Line Status Request Message | |
| 0x000C | Station Configuration Status Request Message | |
| 0x000D | Station Time Date Request Message | |
| 0x000E | Station Button Template Request Message | |
| 0x000F | Station Version Request Message | |
| 0x0010 | Station Capabilities Response Message | |
| 0x0012 | Station Server Request Message | |
| 0x0020 | Station Alarm Message | |
| 0x0021 | Station Multicast Media Reception Ack Message | |
| 0x0024 | Station Off Hook With Calling Party Number Message | |
| 0x22 | Station Open Receive Channel Ack Message | |
| 0x23 | Station Connection Statistics Response Message | |
| 0x25 | Station Soft Key Template Request Message | |
| 0x26 | Station Soft Key Set Request Message | |
| 0x27 | Station Soft Key Event Message | |
| 0x28 | Station Unregister Message | |
| 0x0081 | Station Keep Alive Message | |
| 0x0082 | Station Start Tone Message | |
| 0x0083 | Station Stop Tone Message | |
| 0x0085 | Station Set Ringer Message | |
| 0x0086 | Station Set Lamp Message | |
| 0x0087 | Station Set Hook Flash Detect Message | |
| 0x0088 | Station Set Speaker Mode Message | |
| 0x0089 | Station Set Microphone Mode Message | |
| 0x008A | Station Start Media Transmission | |
| 0x008B | Station Stop Media Transmission | |
| 0x008F | Station Call Information Message | |
| 0x009D | Station Register Reject Message | |
| 0x009F | Station Reset Message | |
| 0x0090 | Station Forward Status Message | |
| 0x0091 | Station Speed Dial Status Message | |
| 0x0092 | Station Line Status Message | |
| 0x0093 | Station Configuration Status Message | |
| 0x0094 | Station Define Time & Date Message | |
| 0x0095 | Station Start Session Transmission Message | |
| 0x0096 | Station Stop Session Transmission Message | |
| 0x0097 | Station Button Template Message | |
| 0x0098 | Station Version Message | |
| 0x0099 | Station Display Text Message | |
| 0x009A | Station Clear Display Message | |
| 0x009B | Station Capabilities Request Message | |
| 0x009C | Station Enunciator Command Message | |
| 0x009E | Station Server Respond Message | |
| 0x0101 | Station Start Multicast Media Reception Message | |
| 0x0102 | Station Start Multicast Media Transmission Message | |
| 0x0103 | Station Stop Multicast Media Reception Message | |
| 0x0104 | Station Stop Multicast Media Transmission Message | |
| 0x105 | Station Open Receive Channel Message | |
| 0x0106 | Station Close Receive Channel Message | |
| 0x107 | Station Connection Statistics Request Message | |
| 0x0108 | Station Soft Key Template Respond Message | |
| 0x109 | Station Soft Key Set Respond Message | |
| 0x0110 | Station Select Soft Keys Message | |
| 0x0111 | Station Call State Message | |
| 0x0112 | Station Display Prompt Message | |
| 0x0113 | Station Clear Prompt Message | |
| 0x0114 | Station Display Notify Message | |
| 0x0115 | Station Clear Notify Message | |
| 0x0116 | Station Activate Call Plane Message | |
| 0x0117 | Station Deactivate Call Plane Message | |
| 0x118 | Station Unregister Ack Message |
There's an excellent paper by Mark Miller of Diginet Corporate entitled Protocols for the Converged Network that was published some time ago by Sniffer Technologies as part of a briefing. You can probably Google for the PDF.
Miller had this to add -
With the SCCP architecture, the vast majority of the H.323 processing power resides in an H.323 proxy known as the Cisco Call Manager. The end stations (telephones) run what is called the Skinny Client, which consumes less processing overhead. The Client communicates with the Call Manager using connection-oriented (TCP/IP-based) communication to establish a call with another H.323-compliant end station. Once the Call Manager has established the call, the two H.323 end stations use connectionless (UDP/IP-based) communication for audio transmissions. Costs and overhead are thus reduced by confining the complexities of H.323 call setup to the Call Manager, and using the Skinny protocol for the actual audio communication into and out of the end stations.He also provided a good diagram of implementation of the ITU-T and IETF protocols which I've recreated.

Summary
I wrote A Look at H.323 a while back. It's posted in the Realtime VoIP Community Reading Room if you want to dig into H.323. One of the clear visions many people have of H.323 is that it's big. It's been called a "pig pf a protocol" in the past due to the way it consumes resources. The reason is simple. It's extensive in an effort to incorporate all the traditional ITU-T protocols from the PSTN.
What Cisco has done is close one eye to the past and "skinnied" H.323 basics into a more efficient protocol for communications between their VoIP phones and their Call Manager. SCCP doesn't provide the comprehensive interoperability that H.323 might offer, but it provides a good mechanism for sharing the states of devices and calls to better manage network resources in a VoIP environment. Along the way, some other vendors have also supported SCCP in an effort to provide standardized support for what is becoming a common VoIP protocol in service today.
Technorati Tags: VoIP, protocols, Cisco, SCCP, Skinny Client Control Protocol, Skinny, H.323, ITU-T, IETF

Email This!
Digg it!
Del.icio.us
Reddit!
Newsvine
Comments
SCCP may have been a "skinned" version of H.323, but it differs from H.323 in one main respect. Two H.323 clients can talk to each other without the need for a Gatekeeper, whereas two SCCP clients need a CM. One big advantage of SCCP is it is very easy to recreate PBX features, even after the clients have been deployed; H.323 and SIP require full protocol development. In this respect SCCP resembles DCP from Definity days.
Posted by: Aswath | June 7, 2006 2:13 PM
I'm a bit annoyed to find this graet comment from Aswath and note that Typepad didn't send em email notice that he'd left it. So I'm days behind.
When I was reading, there was a niggling sense of deja vu that this seemed somehow reminiscent of something from my past. And he's right, it's DCP and how the Definity architecture worked.
I agree that the SCCP skinned version of H.323 does inject that requirement for the CM in the flow. Then again, Cisco sells the CM. It's not surprising to me that they'd spin it to their advantage.
I'm finding, in a couple of real world deployments, that the ability to recreate PBX features is one aspect customers really like. Thye have a preconceived notion of what features they want based on the framework of their past. SCCP eases recreating those features and makes the VoIP evolution perhaps "feel" a bit less disruptive to the people using phones.
Posted by: Ken Camp | June 14, 2006 3:26 PM