The Skinny Client Control Protocol (SCCP) is a Cisco proprietary protocol for call signaling. Skinny is based on a call-agent-based call-control architecture. The control protocol uses binary-coded frames encoded on TCP frames sent to well-known TCP port number destinations to set up and tear down RTP media sessions.
The SCCP protocol just as other call control protocols, negotiates media endpoint parameters—specifically the RTP port number and the IP address of media termination—by embedding information in the control packets. The SCCP ALG implemented on a J-series device (or firewall) parses these control packets and facilitates media and control packets to flow through the J-series device.
The SCCP ALG also implements rate limiting of calls and helps protect critical resources from overloading and denial of service attacks.
The following functions are implemented by the SCCP ALG in JUNOS software:
Before You Begin |
---|
For background information, read |
In the SCCP architecture, a proxy, known as the CallManager, does most of the processing. IP phones, also called End Stations, run the SCCP client and connect to a primary (and, if available, a secondary) CallManager over TCP on port 2000 and register with the primary CallManager. This connection is then used to establish calls coming to or from the client.
The SCCP ALG supports the following:
This topic covers:
The SCCP ALG includes the following security features:
The principal components of the SCCP VoIP architecture include the following:
The SCCP client runs on an IP phone, also called an End Station, which uses SCCP for signaling and for making calls. For an SCCP client to make a call, it must first register with a Primary CallManager (and a secondary, if available). The connection between the client and the CallManager is over TCP on port 2000. This connection is then used to establish calls to or from the client. Transmission of media is over RTP, UDP, and IP.
The CallManager implements SCCP call control server software and has overall control of all devices and communication in the SCCP VoIP network. Its functions include defining, monitoring and controlling SCCP groups, regions of numbers, and route plans; providing initialization, admission, and registration of devices on the network; providing a redundant database that contains addresses, phone numbers, and number formats; and initiating contact with called devices or their agents to establish logical sessions in which voice communication can flow.
A Cluster is a collection of SCCP clients and a CallManager. The CallManager in the cluster knows about all SCCP clients in the cluster. There can be more than one CallManager for backup in a cluster. CallManager behavior varies in each of the following cluster scenarios:
CallManager behavior also varies with calls between an SCCP client and a phone in a public switched telephone network (PSTN), and with calls between an SCCP client and a phone in another administrative domain that is using H.323.
SCCP transactions are the processes that need to take place in order for an SCCP call to proceed. SCCP transactions include the following processes:
To initialize, the SCCP client needs to know the IP address of the CallManager, its own IP address, and other information about the IP gateway and DNS servers. Initialization takes place on the local LAN. The client sends a Dynamic Host Control Protocol (DHCP) request to get an IP address, the DNS server address, and the TFTP server name and address. The client needs the TFTP server name to download the configuration file called sepmacaddr.cnf. If the TFTP name is not given, the client uses the default filename in the IP phone. The client then downloads the .cnf (xml) configuration file from TFTP server. CNF files contain the IP address or addresses of the primary and secondary Cisco CallManager. With this information, the client contacts the CallManager to register.
The SCCP client, after initialization, registers with the CallManager over a TCP connection on well-known default port 2000. The client registers by providing the CallManager with its IP address, the MAC address of the phone, and other information, such as protocol and version. The client cannot initiate or receive calls until it is registered. Keepalive messages keep this TCP connection open between the client and CallManager so that the client can initiate or receive calls at any time, provided that a policy on the J-series device allows this.
Table 77 lists SCCP messages and indicates messages that are of interest to the J-series device.
Table 77: SCCP Registration Messages
IP phone-to-IP phone call setup using SCCP is always handled by the CallManager. Messages for call setup are sent to the CallManager, which returns messages appropriate to the status of the call. If call setup is successful, and a policy on the J-series device allows the call, the CallManager sends the media setup messages to the client.
The CallManager sends the IP address and port number of the called party to the calling party. The CallManager also sends the media IP address and port number of the calling party to the called party. After media setup, media is transmitted directly between clients. When the call ends, the CallManager is informed and terminates the media streams. At no time during this process does the CallManager hand over call-setup function to the client. Media is streamed directly between clients through RTP/UDP/IP.
Figure 82 shows the SCCP control messages used to set up and tear down a simple call between Phone1 and Phone2. Except for the OffHook message initiating the call from Phone1 and the OnHook message signaling the end of the call, all aspects of the call are controlled by the CallManager.
Figure 82: Call Setup and Teardown
Table 78, Table 79, Table 80, and Table 81 list the SCCP call message IDs in the four intervals allowed by the J-series device.
Table 78: Station to CallManager Messages
#define STATION_REGISTER_MESSAGE |
0x00000001 |
#define STATION_IP_PORT_MESSAGE |
0x00000002 |
#define STATION_ALARM_MESSAGE |
0x00000020 |
#define STATION_OPEN_RECEIVE_CHANNEL_ACK |
0x00000022 |
Table 79: CallManager to Station Messages
Table 80: CallManager 4.0 Messages and Post Sccp 6.2
#define STATION_REGISTER_TOKEN_REQ_MESSAGE |
0x00000029 |
#define STATION_MEDIA_TRANSMISSION_FAILURE |
0x0000002A |
#define STATION_OPEN_MULTIMEDIA_RECEIVE_CHANNEL_ACK |
0x00000031 |
Table 81: CallManager to Station